@DATABASE Topics.guide
@INDEX INDEXNODE
@WORDWRAP
@NODE MAIN "TurboCalc by Michael Friedrich"
TurboCalc - copyright Michael Friedrich.

Full @{"Table of Contents" link TableofContents} of this file
@{"Main Table of Contents" link TurboCalc.guide/MAIN} of all files
@{"Full Index" link Index.guide/MAIN} of all files

@{"Input" link Input}
@{"Printing" link Printing}
@{"Charts" link Charts}
@{"Objects" link Objects}
@{"Database" link Database}
@{"Names" link Names}
@{"Projects" link Projects}
@{"Macro/ARexx Instructions" link MacroARexxInstructions}
@ENDNODE
@NODE Input "Input"
@{b}Input@{ub}

In this chapter you will find a summary of all possibilities (with mouse or keyboard) of the controlling and input of TurboCalc sheets.
The TurboCalc GUI (Graphical User Interface) offers three modes: The select-, the input- and the editing mode.
    @{"Select Mode" link SelectMode}
    @{"Input Mode" link InputMode}
    @{"Editing Mode" link EditingMode}
    @{"Input Formats" link InputFormats}
    @{"Drag and Drop" link DragandDrop}
    @{"Status Line" link StatusLine}
@ENDNODE
@NODE SelectMode "Select Mode"
@{b}Select Mode@{ub}

After @{"<Project-New>" link Menu.guide/New} @{b} @{ub}or @{"<Project-Open>" link Menu.guide/Open}  TurboCalc is set to this mode automatically. It allows the shifting of the cell cursor or the definition of a block. It is used to select a cell/block or to simply look at you work.
@{b}With Keyboard@{ub}
The keyboard offers the following possibilities to move the cell cursor:

@{b}<Cursor>	@{ub}Moves the cursor, as far as possible, to the respective direction.
@{b}<Alt> +<Cursor>	@{ub}Moves the cursor, as far as possible, page by page to the respective direction.
@{b}<Ctrl>+<Cursor>	@{ub}Moves the cursor to the beginning or to the end (horizontal or vertical) - depending on the direction. @{b}"End"@{ub} in this case means the last input cell, so to speak the end of the entered range.
@{b}<Alt> + <Ctrl> +@{ub}
@{b}<Cursor>	@{ub}Moves the cursor to the top or the bottom of the whole sheet (horizontal or vertical) depending on the direction. Here bottom is the maximum position, therefore it is the last row or column (which need not contain any data).
@{b}<Tab>	@{ub}Moves the cursor one field to the right. If a block is marked it stays preserved and the cursor moves within the block (that means if the cursor stays on the right it will be set one row below at the left margin).
@{b}<Shift>-<Tab>@{ub}	Moves the cursor one field to the left. If a block is marked it stays preserved and the cursor moves within the block (that means if the cursor stays at the left margin it will be set one row up at the right margin).
@{b}<Return>	No block marked:@{ub} According to the entry made in @{"<Options-Sheet>" link Menu.guide/Sheet}  the cursor is moved or not.
	@{b}Block marked:@{ub} Moves the cursor one field down, but always stays within the block (the block remains preserved). If the cursor is at the bottom of the block it will be set on top of the first row (one column to the right).
@{b}<Shift>-<Return>	@{ub}Same as @{b}<Return>,@{ub} but to the other direction.

If a @{b}<Shift>@{ub}-key is pressed while executing the movements explained above not only the cell cursor will be shifted but at the same time a block will be marked. The marking starts at the cell where the shift key was pressed the first time and is extended up to the current cell.
@{b}During active block:@{ub} If a block is selected and any cursor key is stroke (without @{b}<Shift>@{ub}), the block is deleted and the cell cursor shifted. While pressing down the @{b}<Shift>@{ub}-key the block will be extended accordingly. The keys @{b}<Tab> @{ub}and @{b}<Return>@{ub} preserve the block and shift the cursor within this marked range.
@{b}Hint: @{ub}This can be used as follows: If you desire to make entries in a rectangular range, this range should be selected as a block. Now the entries can be entered (see below) and the cursor can be shifted in the appropriate direction by striking @{b}<Tab>@{ub} or @{b}<Return>@{ub}. If the cursor is positioned at the right or bottom edge the next field of the block is automatically selected.
@{b}By Mouse@{ub}
A cell is selected with a click on the left mouse button. If you want to mark a block, press down the left mouse button in one corner of the block (do not release) and then move the mouse pointer towards the opposite corner (if this cell is not visible, the sheet will automatically be scrolled as soon as the margin is reached). Here just release the mouse button.
If the @{b}<Shift>-@{ub}key is pressed when you click on a cell, a block from the former cell (resp. the corner of the block) to the current cell is marked. Hold the mouse button to move the block.
@{b}Hint:@{ub} This is useful for an easier marking of large blocks: Click on one corner and then move to the other corner. Click there while pressing down the @{b}<Shift>@{ub}-key.
@{b}By Menu@{ub}
Furthermore there is a menu item that enables you to select definite cells (or ranges) very quickly. Above all it is most practical if cells are far away. Select the menu item @{b}<Command-Goto>@{ub} or simply press <@{B}F5>@{UB}. Now a list with all defined names (see "@{b}Names@{ub}"), as well as a text line, appears. Now with a double click on the name, the belonging cell range or the single cell can be displayed and (having a block) be marked. This is very suitable for databases, e.g. to determine the database range "@{b}Database@{ub}" or the search criteria "@{b}Criteria@{ub}". Apart from that, any normal cell (@{B}A1@{UB} or @{B}AC100@{UB}) or range (@{B}A1:C20@{UB}) can be entered in the text line.
After a click on @{b}>Ok<@{ub} or  striking @{b}<Return>,@{ub} this cell or range is selected.
@ENDNODE
@NODE InputMode "Input Mode"
@{b}Input Mode@{ub}

The input mode allows a simple input of cell contents. To switch to this mode simply start with the input (press any key).
@{b}Attention:@{ub} While executing this step any former cell contents will be deleted. You can still avoid the new input by using <@{B}ESC>@{UB}. If you want to edit the former cell contents, press @{b}<F2>@{ub} to switch to the editing mode (see next paragraph).
In the text line below the window title, as well as in the current cell, the input can be watched. The following control features are available.
@{b}<BackSpace>	@{ub}deletes the last entered letter
@{b}<ESC>	@{ub}stops the input, the former contents remains preserved. Switches back to the selection mode.
@{b}<Return>, <Tab>, <Cursor>@{ub}
@{b}(or with <Shift>, <Alt>, <Ctrl>)@{ub}
	The input will be accepted and saved; the cell cursor is moved as described in the selection mode.
@{b}<Paste-Formula> or@{ub}	
@{b}<Paste-Macro>	@{ub}Inserts a formula or a macro instruction at the current position, see below. This will activate the editing mode automatically.
@{b}<Paste-Name>@{ub}	Inserts a name at the current position, see below. This will activate the editing mode automatically.
@{b}Cell/Range selection with mouse@{ub}	
	(Input text must start with "=".) Inserts a cell-or range-reference (e.g. "=C19" or "C19:F24") at the current cursor-position, see below. This will activate the editing mode automatically.
@ENDNODE
@NODE EditingMode "Editing Mode"
@{b}Editing Mode@{ub}

In this mode you can enter your data enjoying all editing possibilities of TurboCalc as well as modify previously entered text.
For this input/alteration the text line between window title and toolbar (or the beginning of the sheet if the toolbar is hidden) is used. Here the text is displayed and can be edited just like in all other text fields.
To activate this mode proceed as follows:
@{b}<F2> @{ub}	If this key is pressed in the selection mode the text of the current cell can be edited (or if the cell is empty you can enter new text). If the key is pressed while working in the input mode, the (already) entered text will be taken over and is ready to be edited.
@{b}Click with the mouse on the text line below the window title@{ub}
	The cursor is automatically located at the position where the mouse button was pressed. This is possible in the selection mode as well as in the input mode (see @{b}<F2>@{ub}).
@{b}<Paste-Formula>, <Paste-Macro>, <Paste-Name>@{ub}
@{b}	@{ub}Description see below
@{b}Insert cell/range with mouse out of the input mode@{ub}	
	Description see below

The following editing possibilities are available:
@{b}<Left>/<Right>@{ub}	Moves the text cursor to the appropriate direction. If the text is not visible completely, the sheet will be scrolled automatically when reaching the left or right margin.
@{b}<Shift>-<Left>/<Right>@{ub}	Jumps to the beginning or the end of the cell.
@{b}<Del>	@{ub}Deletes the letter at the cursor's position
@{b}<BS>@{ub}	Deletes the letter to the left of the cursor and moves the cursor in this direction.
@{b}<Shift>-<Del>@{ub}	Deletes the complete text line.
@{b}<Tab>, <Return>	@{ub}Finishes the input (it will be taken over) and moves the cell-cursor as described in the selection mode
@{b}<ESC>@{ub}	rejects the entry (the former content remains preserved) and finishes the editing mode (Change back to the selection mode).
@{b}<Paste-Formula>@{ub}	Inserts a formula at the current position (see below).
@{b}<Paste-Macro>@{ub}	Inserts a macro-instruction at the current position (see below).
@{b}<Paste-Name>@{ub}	Inserts a name at the current position (see below).
@{b}Select cell or range with mouse	@{ub}
	(Entered text must start with "=".) Inserts a cell- or range-reference at the current position, see below.
@{b}Insert Formula/Macro@{ub}
The menu item @{"<Command-Paste-Formula>" link Menu.guide/PasteFormula}  or @{b}<Command-Paste-Macro>@{ub} or the respective symbol "@{b}f()@{ub}" or "@{b}m()@{ub}" activates a requester in which all available TurboCalc functions or macro-instructions are listed. Here an entry can be selected with a click on the appropriate text and @{b}>Ok<@{ub} or a double click on the entry.
The selected entry will be pasted at the current cursor-position. Afterwards, TurboCalc is set back to the editing mode.
If the selected function requires parameters the cursor will be placed within the brackets automatically. Otherwise it can be found directly behind the closing bracket ")". If this menu item is called from the selection mode, an equals sign will be added in front of the function name, as it (obviously) should become a  formula.
@{b}Hint:@{ub} Apart from using the mouse, the formula (macro) can also be selected with the keyboard: Select the desired entry with @{b}<Cursor up> @{ub}or @{b}<Cursor down>@{ub} and then confirm with @{b}<Return>@{ub}. To reach the top or bottom of the list use @{b}<Shift>+<Up/Down>@{ub}.
@{b}Insert Name@{ub}
Having selected the menu item @{b}<Command-Paste-Name>@{ub} a list of all existing (defined) names will appear. Here it is possible to select an entry by means of a click on the appropriate text and @{b}>Ok<@{ub} or a double click on the entry itself. This entry will then be inserted at the current position (or at the end of your input line if you are in input mode) and the program will switch to the editing mode automatically. If this menu item is called from the selection mode, an equals sign "=" will be inserted in front of the name.
@{b}Hint:@{ub} Apart from using the mouse the formula (macro) can also be selected with the keyboard: Select the desired entry with @{b}<Cursor up> @{ub}or @{b}<Cursor down>@{ub} and then confirm with @{b}<Return>@{ub}. To reach the top or bottom of the list use @{b}<Shift>+<Up/Down>@{ub}.
@{b}Insert Cell/Range@{ub}
If you are in the input- or editing mode and the current text starts with an equals sign "@{b}=@{ub}" (that means you are just entering a formula), a cell reference can easily be entered:
A simple click with the mouse on the desired cell or cell range, as described in the selection mode, is enough. To do this, the currently visible range can be scrolled with the help of the scroll bars. The input line stays preserved and you can see that the current cell is immediately inserted.
If you had been in the input mode before, the program changes to the editing mode automatically.
@ENDNODE
@NODE InputFormats "Input Formats"
@{b}Input Formats@{ub}

Now all important input possibilities have been touched at least once. It follows a concluding description of the individual input formats and what TurboCalc is going to make out of it.
@{b}Numbers@{ub}
Numbers consist of numerals from@{b} 0-9@{ub} and one decimal point. Furthermore they might begin with a "@{b}+@{ub}" or "@{b}-@{ub}" and end with an "@{b}e@{ub}" or "@{B}E@{UB}" followed by a whole number, if necessary with a minus sign:

@{b}123	1.23	.23	1.23E3	1.23e-3@{ub}

@{b}"E@{ub}number" here means that the leading number is multiplied with 10^number (scientific notation).
It is also possible to add a percentage sign "%" to any number. This divides the number by 100 and selects the numeric format "@{b}Percentage@{ub}" automatically:
"5%" thus becomes 0.05 and is displayed as "@{b}5.00%@{ub}" as desired.
@{b}Time@{ub}
Time data consist of two or three integer numbers which are separated from each other by a colon @{b}":"@{ub}. The first has to be among 0 and 23 and the two others among 0 and 59. The numbers indicate the hours, minutes and, by option, the seconds. Leading noughts are allowed.

@{b}5:23	05:23	17:23:20@{ub}

The time is stored as a consecutive number and the selected numeric format for the time (with or without seconds) is set automatically.
@{b}Date@{ub}
The date is entered similar to the time. TurboCalc allows to enter a correct date in many ways. The following examples of valid formats use the symbols below:
@{B}D	@{UB}is a day among 1 and 28-31, depending on month and leap year
@{B}M	@{UB}is a month (among 1 and 12)
@{B}MMM	@{UB}is a month as a text. The first three letters of the English name are necessary for the identification of the month, others can be added, e.g.: Jan, February, March,...
@{B}Y	@{UB}is a year among 1900 and 2500. Numbers from 21 to 99 represent 1921 up to 1999, 0-20 results in 2000 to 2020.
@{b}"-"@{ub}	is a separator. It can be surrounded by blanks. The following separators are valid: @{b}"-"@{ub}, @{b}"/"@{ub} and @{b}"." @{ub}(separator, slash and point). If you find a month text to the left or right of the separator, it can be omitted or substituted by blanks. For input you can use any of these separators; the separator that is used for output can be set with @{"<Options-Locale>" link Menu.guide/Locale} .
@{b}Hint:@{ub} The date-order can be changed with @{"<Options-Locale>" link Menu.guide/Locale}  to one of @{b}"Day-Month-Year"@{ub}, @{b}"Month-Day-Year"@{ub} or @{b}"Year-Month-Day"@{ub}. This setting is valid both for input and output. (Currently the third format is only used for output, if this is selected the dates have to be entered as "Day-Month-Year").

If @{b}"Day-Month-Year"@{ub} (or @{b}"Year-Month-Day"@{ub}) is selected, the following inputs are possible:
@{B}D-M-Y	@{UB}30-9-93	30.09.1993
@{B}D-MMM-Y	@{UB}30-Sep-93	30 Sep 93
@{B}D-MMM	@{UB}30/Sep	30 Sep
@{B}MMM-Y	@{UB}Sep 93	Sep 1993
@{B}D-M	@{UB}30-9	30-09
@{B}M-Y@{UB}	9-93

If @{b}"Month-Day-Year"@{ub} has been chosen, one of the following format can be used:
@{B}M/D/Y	@{UB}9/30/93	9/30/1993
@{B}MMM-D	@{UB}Sep 30
@{B}MMM-Y (Y>31)	@{UB}Sep 93	Sep 1993
@{B}M-D	@{UB}9/93
@{B}M/Y (Y>31)@{UB}	9/93
@{B}D/M (D>12)	@{UB}30-9	30-09
@{B}M/Y (Y>31)@{UB}	9-93
@{B}D/MMM	@{UB}30/Sep	30 Sep
@{B}D/MMM/Y	@{UB}30/Sep/93	30 Sep 93

Date inputs without a year are automatically provided with the current year (in addition to that see @{B}TODAY()@{UB}).
The numeric format is automatically adjusted to the appropriate date format; so the output looks similar to the input.
@{b}Booleans@{ub}
Booleans can be entered directly as follows:

@{B}TRUE	FALSE@{UB}

@{b}Hint:@{ub} If you want to enter true or false as a text without interpreting it as a boolean value, please enter "true or "false (with leading quotation mark) as a text!
@{b}Texts@{ub}
All remaining inputs that cannot be counted to one of the four categories above mentioned will be treated as text and not worked on any further.
@{b}Exception:@{ub}
If the text begins with an equals sign "@{b}=@{ub}" it will be interpreted as a formula, see below.
If the first letter is a quotation mark the entry will be treated as a text without displaying this first quotation mark.
@{b}Hint:@{ub} In this way you are able to keep those texts as texts, which would normally be interpreted as numbers, dates or times, e.g. "001 or "013:3.
@{b}Formulas@{ub}
Formulas are necessary to calculate values, dates, times or texts. They start with an equals sign "@{b}=@{ub}" which is followed by a normal "@{b}Formula@{ub}", e.g. numbers, texts, booleans, cell references and formulas which are connected with each other by (@{b}+,-,...@{ub}).
If you have entered a correct formula followed by @{b}<Return>@{ub}, all valid functions, booleans and cell references are automatically capitalized, the formula is calculated and the result is displayed. Otherwise the entered formula remains unchanged and an error message  (e.g. #(-BRACKET or #VALUE, is displayed instead of the cell result.
@ENDNODE
@NODE DragandDrop "Drag and Drop"
@{b}Drag and Drop@{ub}

With Drag&Drop you can move, copy and enlarge or scale down cells or blocks with the use of the mouse. This is done intuitively (by clicking on the block and moving it to the place you want to). Operation is so quite easy.
@{b}Moving@{ub}
- Move the mouse to the margin of the current cell or block (but not to the lower corner on the right - this one is needed for size modifications). The mouse pointer should change its shape.
- Press the left mouse button and hold it. Now a frame must appear around the cell or the block selected.
- Move the mouse (by still holding the left mouse button), the frame will move correspondingly. If you reach the screen margin, the sheet will be scrolled in the corresponding direction.
- If you have reached the position you want, release the mouse button. The original block will immediately be deleted and be inserted at the target position.
@{b}Note:@{ub} If you want to cancel the Drag&Drop when pressing down the left mouse button, so simply press down the right mouse button or @{b}<ESC>@{ub}. The frame will then disappear and you can release the left mouse button without changing the sheet.
@{b}Copying@{ub}
If the original block is to be kept and you only want to insert a copy at the aiming point, this will be done in a similar way to @{b}"Moving"@{ub}. But before you release the left mouse button, press the @{b}<Ctrl> key@{ub} and hold it (a "+" will be added to the mouse pointer to indicate the copying process). Now release the mouse button first and then the @{b}<Ctrl> key@{ub}.
@{b}Enlarging or Scaling Down a Block@{ub}
This is also be done in a similar way to @{b}"Moving"@{ub}. Click with the mouse in the lower corner on the right of the block (a different mouse pointer will appear). The moving of the mouse (with the left mouse button pressed) changes the size of the frame (the top left corner stays where it is).
If (when releasing the left mouse button) the frame is smaller than the selected block, the remaining cells, i.e. the cells of the block outside the small frame, will be emptied. the original block is scaled down to the new size.
If the frame is larger, the original block will be enlarged to the new size, the new cells will be filled with the content of the original block.
@{b}Filling a Range@{ub}
If you only select a cell when using the feature @{b}"Enlarging a Block"@{ub}, the selected frame will be filled with the content of this cell - this corresponds to @{b}<Edit-Fill>@{ub}.
@{b}Summary@{ub}
@{b}Drag&Drop@{ub} can really be described as "pressing, moving and releasing the mouse". Depending on the position (lower corner on the right?) and perhaps pressed <Ctrl> key, several operations can be executed.
@{b}Note:@{ub} With @{b}"Drag&Drop"@{ub} in @{b}<Options-Global Settings>@{ub}, this function can be turned on or off. It can also be configured that a requester appears with every Drag&Drop. If the Drag&Drop is turned off, the mouse pointer will not change its shape at the block margin and a Drag&Drop will not be possible.
@ENDNODE
@NODE StatusLine "Status Line"
@{b}Status Line@{ub}

TurboCalc provided a status line that can be displayed at the base of its own screen. To do this, select @{b}"Show Status Row"@{ub} in @{b}<Options-Global Settings>@{ub} and scale down the existing window correspondingly.
@{b}Note:@{ub} The scaling down of the windows is only necessary when changing the setting of the status line: If this setting is saved in @{b}<Options-Config-Save>@{ub}, a status line will immediately appear when starting TurboCalc the next time and the windows will be opened so that the status line will be visible at the bottom of the screen.
You will find current information in the status line, such as the mouse being positioned over the toolbar, an object or the current block. A brief text indicates the instruction that is executed when clicking on the mouse.
Furthermore, if a formula is selected by @{b}<Command-Paste-Formula/Macro>@{ub}, the corresponding formula will be displayed with a parameter list in the status line, facilitating formula entry.
@ENDNODE
@NODE Printing "Printing"
@{b}Printing@{ub}


Having created and designed a sheet, you probably want to print it. TurboCalc is provided with some useful methods by which the user - according to requirements and printer - can achieve the best results. This requires some understanding and setup. The following describes the configuration possibilities, page preview and printing. Finally; helpful hints concerning printing are provided.

    @{"Settings" link Settings}
    @{"Pagination" link Pagination}
    @{"Preview" link Preview}
    @{"Printing Sheets" link PrintingSheets}
    @{"Tricks to Improve your Printouts" link TrickstoImproveyourPrintouts}
@ENDNODE
@NODE Settings "Settings"
@{b}Settings@{ub}

Before printing, some parameters have to be set to allow TurboCalc and the printer being used to work together to ensure that TurboCalc can achieve the desired result:
*	@{b}Paper-Format:@{ub} determines the actual paper-format and some further basic settings.
*	@{b}Printing-Layout:@{ub} allows to select the page margins and the headers and footers.
@{b}Note:@{ub} These settings have been separated for two reasons: First, a window showing all settings would be too badly arranged and secondly, the settings concerning paper-format would rarely be changed. Only the printing-layout will (normally) change from sheet to sheet.
@{b}Note:@{ub} Set both as you want and then save them as standard for all new work sheets with <@{b}Options-Config-Save>@{ub}.
@{b}Paper-Format@{ub}
Here you can determine the paper-format as well as the printer settings. The following window will open:

@{b}Paper Size:@{ub} This field serves to set the paper size:
The first 3 items contain the most important standard formats, the fourth allows a free setting: You can determine the appropriate sheet size in the @{b}>Width<@{ub} and @{b}>Height<@{ub} fields.
@{b}Note:@{ub} The maximum size of the sheet is shown here.. With @{b}<Format-Print-Layout>@{ub} (see description further below), you can determine the margins of the sheet.
@{b}Note:@{ub} In case you use a dot matrix printer with a semiautomatic paper feeder, you should note that most of these printers need one (or a half) inch for sheet feeding. You have the option to correct this manually after feeding or you change the paper length and the top margin accordingly: Reduce both values by one inch (or 1/2 inch). Most of these printers are not able to print to the bottom of the page (at least while having single-sheet feeding): Raise the bottom margin appropriately.
@{b}Wait for new Page?:@{ub} This option is provided for printers with single-sheet feeder (not fully automatic): If it is selected, there will be a break after every page until you click on @{b}>OK<@{ub} in the popup window. This allows you enough time to insert the next page.
@{b}Formfeed:@{ub} Here you can determine whether TurboCalc is to finish the sheet page with a formfeed (code 12). You will find details in the paragraph "Tricks to Improve your Printouts" at the end of this chapter. Normally, this option should be activated.
@{b}Font:@{ub} Here you can set the printer fonts for the text output, this is independent of graphic output.
*	Pica (10 characters per inch)
*	Elite (12 characters per inch) and
*	Condensed (15 characters per inch).
@{b}Line spacing:@{ub} With this option you can set the line spacing for the text output. You can choose between 6 and 8 lines per inch (lpi). 6 is the standard, 8 is suitable for some sheets to get more lines on one page. This setting will also be ignored for the graphic output.
@{b}Density:@{ub} Determines the print density, that means the resolution the printer uses for the printing. 1 is the lowest and 7 the highest resolution (e.g. 1: 90*90 dpi, 7: 360*360 dpi). Not every printer possesses 7 settings; in this case it is possible that some are identical. Basically, the higher the density the more time is needed, but the printing quality has increased. This density has no influence on the text output.
@{b}Scale:@{ub} Here you can define the output size for the graphic output (as a ratio). "1.0" is normal. If you enter "2.0", the corresponding direction will appear twice as big. "0.5" halves the size. This setting will be ignored for the text output.
@{b}Vertical:@{ub} This activates vertical printing for graphic output. Instead of formatting the table horizontally on the page, it will be turned by 90 degrees and printed vertically. That way, more columns (and also wider columns) can be arranged on one page (but naturally also fewer rows).
@{b}Gfx-Prefs:@{ub} This gadget lets TurboCalc search for the file "SYS:Prefs/PrinterGfx" and starts it, if available. This process (normally) opens the graphic settings of Preferences and allows their setting.
@{b}Printing-Layout@{ub}
Here you can determine the remaining printing settings:

@{b}Margins:@{ub} In the four number fields you can enter the respective margins (in centimeters or inches, depending on the setting at @{"<Options-Locale>" link Menu.guide/Locale} ). This allows precise positioning within the printout-page (The paper-format can be set with @{b}"paper-format"@{ub}).
@{b}Note:@{ub} If you are used to a margin setting per "number of characters or lines", the following information concerning pica and 6lpi will help you: 4 characters correspond to about 1 centimeter and 5 lines are equal to 2.12 centimeters.
@{b}Output:@{ub} Determines the the output type (text or graphic). If "text" is selected, the sheet will be printed with the (built-in) font of the printer. This leads to a quick and clean picture and is available on all printers. Text and colors will be printed correctly. If you have selected more than one font or different frames, this cannot be taken into account. For this enhanced formattings please use the >Graphic< mode, the sheet will then be printed as graphic. This process will need more time (at least in case of dot matrix printers), but allows an output of different fonts, objects and all formatting. You will find further information about text or graphic in the paragraph about "Tricks to Improve your Printouts".
@{b}Paper-format:@{ub} See window to set the paper-format.
@{b}Headers/Footers:@{ub} Here you can set whether a top or bottom line is to be printed and determine the text of this line. You can use the following "control characters" in the texts:
@{b}%P@{ub}	prints out the appropriate page number instead of these two letters
@{b}%D@{ub}	will be replaced by the current date
@{b}%N@{ub}	results in the name of the file, which will be printed
@{b}%%@{ub}	results in a percentage character (if you should need one for your text)
Example:
*	File %N, printed on %D
*	page %P of the document %N
*	%P
@{b}Titles:@{ub} Here, you can determine if the corresponding column titles (A, B, ...) appear in the first line of every page on the printout. and whether line numbers (1, 2, 3, ...) should be printed on the left.
With the @{b}>Grid-Gadget<@{ub} you can create the following three lines (with repeated clicks):
*	@{b}no Grid:@{ub} Prints the sheet without grid.
*	@{b}Grid (Line):@{ub} The sheet is printed with grid lines. As vertical separator a special character is inserted ("|"). The whole line is horizontally underlined. Underlined text will thus not be distinguishable as such.
*	@{b}Grid (Underlined.):@{ub} This also adds a grid, but the horizontal line will be produced as a line of minus characters "-". The advantage is that underlines are also visible in this case (but it needs twice as many lines as well as pages for the print). Most of the time the print image gets more unreadable.
@{b}Note:@{ub} The line mode often produces a better grid, but it does not work with all printers. Some of them only print the underline when text is printed at the same time (They do not print underlined blanks). In this case, you may change the printer setting directly at the printer.
@{b}Remark:@{ub} The last two grid settings only apply to the output of text. For the output of graphics, they have the same function: They will print the graphic with a grid.
@ENDNODE
@NODE Pagination "Pagination"
@{b}Pagination@{ub}

To allow an overview of a subsequent printout when creating the sheet, the formfeed is indicated directly in the sheet. The formfeed is indicated by a blue line in the columns and row titles.
The paper-format as well as the printing-layout must be set as required for the printout so that the blue line is really valid. Therefore, it is very useful to determine these settings before creating the sheet.
@ENDNODE
@NODE Preview "Preview"
@{b}Preview@{ub}

Another possibility to control and perhaps even correct the result before the printout is the preview option. Unfortunately, the preview is only possibly with at least OS2.0. If you still use Kickstart 1.2 or 1.3, a corresponding message will appear.
The preview is also limited to the graphic mode (see below under 4.4 Printing), but the graphic mode will also be the main application mode. This will automatically be selected when choosing the preview option.
The preview can be started in the following three ways:
*	Call printing (either per menu or per toolbar), then click on @{b}>Preview<@{ub} in the popup window.
*	Call the menu point <@{b}Project-Preview>@{ub}.
*	Press the shift key and select the printing symbol of the toolbar.
A new window will be opened (if necessary on a separate screen, see below) which has some buttons in the upper area and a "sheet of paper" in the lower area.
The "sheet of paper" will now be filled bit by bit analogously to the page which is to print - you will see a overview of the printout, even if you cannot see all details because the subsequent printout has a much higher resolution so that not all details can be shown on the screen. In the upper area the following gadgets can be selected:
@{b}Print@{ub} finishes the preview and the print-requester will appear.
@{b}Abort@{ub} cancels the preview (this can also be done by clicking on the closing symbol of the window).
@{b}Previous@{ub} shows the previous page.
@{b}Next@{ub} changes to the next page.
Please be patient when a page is refreshed (this will need a little more time because the whole printing process is simulated in order to generate a close approximation) and note that the screen resolution never allows you to see all details of the printout.
@{b}Preview on a Seaparate Screen@{ub}
TurboCalc has the option to open its own screen for the preview. By that you can choose a screen with a higher resolution for the preview. So here, you can use an interlace-screen (with line interlacing procedure) which would disturb very much during normal work, but which offers a better resolution for the short preview.
Choose @{b}"Use Special Preview-Screen"@{ub} in the menu point @{b}<Options-Global Settings>@{ub} and then after clicking on @{b}>Screen<@{ub} select the desired screen in the popup Asl-screen-requester .
@{b}Note:@{ub} This field only appears when you use at least OS2.0.
@ENDNODE
@NODE PrintingSheets "Printing Sheets"
@{b}Printing Sheets@{ub}

After having selected @{"<Project-Print>" link Menu.guide/Print}  or the appropriate toolbar symbol, the following window will appear:

In the upper part of the window you can determine the final settings concerning your printout.
@{b}Print range:@{ub} Here, you can determine if everything or only a few pages should be printed. Enter the first and the last page (1 will be the first page).
@{b}Quality:@{ub} Here you can set the print quality for text as far as your printer allows it. If you have selected the graphic mode (at Print-Layout), this setting has no influence on the printout and cannot be selected.
If a block was marked when opening the print-requester, @{b}>currently marked block<@{ub} will be selected as print range. This means that only the marked block is to be printed. You can deactivate this with @{b}>Defined-Print Range<@{ub}. Then the whole sheet or the defined range - determined with @{"<Options-Print Range>" link Menu.guide/PrintRange}  will be printed. If there was no block marked, >@{b}Defined-Print Range<@{ub} will be activated and a modification will not be possible.
@{b}Color Printing:@{ub} TurboCalc allows for color printing on color printers. This gadget turns the color option on/off. This option has no influence on normal printers.
@{b}Note:@{ub} Apart from these settings there is the "color" option in the workbench-graphic-print-setting ("SYS:Prefs/PrinterGfx", also see @{b}<Gfx-Prefs>@{ub}). These are independent of each other. If you have not selected >Color Print< you should choose black and white in "GfxPrefs" as well.
@{b}Note:@{ub} If you have chosen @{b}>Color Print<@{ub} you can select color, gray scale or black and white in "GfxPrefs": With gray scale you can receive an appropriate picture of color graphics on a black and white printer.
@{b}Print-Layout:@{ub} A click on it corresponds to @{b}<Format-Print-Layout>@{ub} and opens a window for the setting of further print parameters.
@{b}Paper-format:@{ub} This shows the window with the paper-format.

In the lower part, one of the following gadgets has to be set:
@{b}Print@{ub} starts the printout of the range defined with @{"<Options-Print Range>" link Menu.guide/PrintRange} @{b} @{ub}(or the current block respectively). If the printer is turned off or not online, you will at once receive a corresponding message. If the printout is started correctly, a corresponding message window with the gadget >Abort< will appear. A click on it is sufficient to stop printing. (Please note that the buffer contents of the printer is still going to be printed after >Abort< which can take its time on some printers.)
@{b}Preview@{ub} changes to the print preview described before.
@{b}File@{ub} opens a new window and allows to save the sheet (either as text or as IFF-graphic) to a file. You will find further details in the following paragraph.
@{b}Abort@{ub} closes the window without any other action.
@{b}Print to File@{ub}
If you have selected @{b}>File<@{ub} in the print-requester, the following window will open:

@{b}IFF-Picture-Format:@{ub} Here you can set the format of the IFF-picture that is to be created (only useful for the graphic printout, this setting will be ignored in the text printout and can even not be edited).
@{b}File:@{ub} Here you can determine the file name to which the picture or the text is to be saved. By clicking on >File< a file-requester will appear, or you can enter the file name directly in the text field.
If @{b}>to Clipboard<@{ub} is selected, the IFF-picture will be buffered instead of being directly saved to a file so that a direct exchange with other applications is possible. Saving to the clipboard is only possible for the graphic printout, text will always be saved to a file. If you want to write text to the clipboard, please use the command <@{b}Edit-Clipboard-Copy>@{ub}.
@{b}Note:@{ub} The following file names are also possible (for the text mode): "*" (that means the current shell-window if TurboCalc was started per shelll) or "CON:0/0/640/256/print/WAIT/CLOSE", which opens a new window and redirects the output there. This will be very useful for a overview of the print result.
@ENDNODE
@NODE TrickstoImproveyourPrintouts "Tricks to Improve your Printouts"
@{b}Tricks to Improve your Printouts@{ub}

TurboCalc offers a lot of options and facilities which influence the appearance of your printouts. The following section is to describe some special characteristics and to facilitate trouble-shooting.
@{b}Printing in Graphics-Mode@{ub}
TurboCalc possesses two different modes to bring your results to paper.
The first possibility is called text mode and prints your sheet using the built-in printer fonts. This option does not support any graphics or enhanced formatting.
The second mode is called graphics mode. Using this option, you cause TurboCalc to treat and print the entire sheet as a graphic. This mode allows the usage of different fonts in one sheet, frames and further formatting.
These features require scaleable fonts and automatic page scaling, which is part of OS2.0 and higher. If you are (still) using Kickstart 1.3 or less, the graphic printout cannot be guaranteed. Tests on such computers did not give full functionalty of this print option. Please, try this option with unimportant or already saved data first (Warning: Guru Meditation and data loss is possible).
If it does not run properly, you are unfortunately limited to text-printout only until you have upgraded your system with OS2.0.
@{b}Scaleable Fonts@{ub}
Using the graphics mode causes TurboCalc to draw the picture internally with (nearly) the same pixel resolution as it is used by your printer. Transferring this graphic to the printer ensures the best possible printout (without the bothersome "jaggies" in inclined lines of single letters). Fonts, which are displayed with a height of 10 pixels on the screen, may be printed (due to the internal resolution adjustment) in a height of 40 pixels.
@{b}Note:@{ub} If you use the new free scaleable fonts (which are part of OS2.0 or higher, e.g. "CGTimes", CGTriumvirate"), you can be sure that the letters are printed with no loss of quality in the exact resolution. They should be your first choice if you intend to print your sheet as a graphic (in contrast to the so-called bitmap-fonts like "Diamond" or "Times").
@{b}Paper-Format@{ub}
A spreadsheet program like TurboCalc should support unlimited setting of the paper-format of the printer and the fed pages. This allows correct printing even on special paper-formats like e.g. envelopes or labels.
You can enter your desired paper-format in the selection window of the menu item @{b}<Format-Paper-Format>@{ub} - once you have entered your preferred setting, it is automatically applied to all loaded sheets so that you do not have to define it again.
@{b}Note:@{ub} If you want to keep a paper format as default setting for all new sheets, select the menu item @{b}<Options-Config-Save>@{ub} from within a sheet with your personal settings.
Paper-format definitions are required in TurboCalc for two reasons:
@{b}1.@{ub} To calculate the number of printable lines and the print-height (together with the left/right border information of the menu item <Format-Print-Layout>).
@{b}2.@{ub} To move the next page within the printer to its correct start position. (Please also refer to "page printers" below).
Therefore, it is vital to define the correct paper-format (especially if you want to print more than one page).
The following brief overview lists the common characteristics of the different printers:
@{b}Dot-Matrix-Printers with Single Page Feeding@{ub}
Just measure the page dimensions and adjust TurboCalc accordingly.
If you do not own a full automatic paper feeder, you should use the option >Wait for new Page?<. TurboCalc pauses for a while to give you the time to insert the next page.
In case you have a fully automatic paper feeder, you should refer to the point "page printers" below.
@{b}Note:@{ub} Semi-automatic paper feeders usually leave a distance of approx. 1 (or half) an inch at the top of the page.
You can either correct this manually before you start printing or change the @{b}>Page Height<@{ub} and @{b}>Top Border<@{ub} accordingly (both minus 1 inch or 2.54 cm).
@{b}Dot-Matrix Printers using Fanfold Paper@{ub}
If you use fanfold paper for your printer, you should deactivate the @{b}>Wait for new Page?<@{ub} option.
For a normal @{b}"DIN A4 fanfold paper"@{ub} you should choose the paper size of "30.5*21" (or simply select @{b}"DIN A4 fanfold paper"@{ub}. This will then correspond (in the case of 6lpi) to 72 lines which can be printed). This option will automatically be selected for new sheets, when "Fanfold Paper" is selected in the preferences of your Workbench.
@{b}Note:@{ub} If you have set your printer to skip over the perforations, you can only print 66 lines instead of the above-mentioned 72. Therefore you should change the paper-format (in @{b}>user-defined<@{ub}) to "28*21".
@{b}Page Printers@{ub}
(You should deactivate the @{b}>Wait for new Page?<@{ub} option).
Nearly all printers, which use the laser- or inkjet technology fall into this category. The main characteristic is that a page is printed as a whole and then the next page is fed automatically.
In this case the option @{b}>FormFeed<@{ub} should be activated (default, normally a modification will not be necessary). This forces TurboCalc to finish the page with a FormFeed (ASCII-code 12) and to send the control code for a FormFeed to the printer. In this case, you have to "inform" the printer about the current paper-format.
@{b}Important:@{ub} Because TurboCalc needs the paper-format not only for the above mentioned purposes but also for determining the print range and its borders, you still need to define the Paper Format correctly. 

@ENDNODE
@NODE Charts "Charts"
@{b}Charts@{ub}


Charts often allow a quick and simple overview of a range of numerical values and are thus very useful for presentations. TurboCalc enables you to create such charts quickly and intuitively. All parameters can be changed subsequently using the pulldown menus of the chart display window. Further adjustments such as chart title, legend and patterns can also be made.

    @{"Creating Charts" link CreatingCharts}
    @{"Changing Parameters" link ChangingParameters}
    @{"Printing Charts" link PrintingCharts}
    @{"Saving as IFF" link SavingasIFF}
    @{"Preference Form" link PreferenceForm}
    @{"Chart Types" link ChartTypes}
@ENDNODE
@NODE CreatingCharts "Creating Charts"
@{b}Creating Charts@{ub}

First, select the data range that is to be presented as a chart.
This can be a range of several lines or columns (normally only numbers).
Then select the menu item @{b}<Data-Create Chart>@{ub}. A window appears where the following settings can be made:
@{b}Chart Type@{ub}
@{b}Name:@{ub} Here you can give a name to the chart. This name will be shown in the title bar and facilitates identifying the chart - but for appearance it is not very useful and can therefore be omitted.
@{b}Rows/columns:@{ub} Here it can be determined whether the numbers of the block should be interpreted line by line or column by column.
@{b}Chart range:@{ub} Here the selected range will be shown. This range can be modified now or later. (Because you have just selected the range, a modification will only be necessary a bit later.)
@{b}Chart type:@{ub} This selection determines the type of the chart. Select here, if you want to have a bar chart, a histogram or a line chart to name but a few. You will find a description of all chart types in the paragraph "Chart Types" below.
@{b}Chart Parameter@{ub}
After clicking on @{b}>OK<@{ub}, a second window is opened, where you can set the parameters of the current chart. These parameters change depending on the selected chart type. Most of the parameters appear several times. A brief overview about the possible parameters follows, some special parameters will be described in the paragraph about chart types.
@{b}Remark:@{ub} If you selected the chart type "Default", the above mentioned window will not appear - the default settings will be used and in this case the chart will be created immediately.
@{b}Stacking:@{ub} Here you can determine, whether several value rows should be shown up next to each other (or in the dot or line mode above each other), or whether the different values should be summed up and their distribution be displayed (absolute or in percentages).
@{b}Note:@{ub} The distribution is very useful if you have different values, which together result in one sum (e.g. turnover of material A,B,C...). In this case you can show the sum (total sales) as well as the single values. If you have the values of the previous year in a second row, they can be easily compared.
@{b}Connected:@{ub} Adjacent items of a data row will be connected. This is very useful for the column and bar types, when "rows-stacked (sum)" is active or when dots should be connected with lines.
@{b}Symbols:@{ub} (In the line- or step mode) small symbols are overlaid besides the lines symbolizing the values.
@{b}Vertical Line:@{ub} (lines and dots) A line is drawn from the corresponding data items to the x-axis.
@{b}Values:@{ub} The appropriate values are displayed.
@{b}Offset:@{ub} (Only bar and histogram type) Determines the distance between the bars of the different data rows. 

If you click on @{b}>OK<@{ub} here, a window will be opened and the chart is drawn. The window can be moved in any direction and its size can be altered at will.
@ENDNODE
@NODE ChangingParameters "Changing Parameters"
@{b}Changing Parameters@{ub}

Once a chart has been generated, these options can be changed at any time. Further details concerning the menu items can be found in the description of the chart menu.
With @{b}<Type>@{ub} and @{b}<Parameter>@{ub} the two windows mentioned above will be opened and prior settings can be changed.
With @{b}<Title>@{ub} the title, subtitle and footer can be defined.
@{b}<Legend>@{ub} allows the displaying of a legend at the left or right margin of the chart to define the value rows more precisely, if this information is not obvious from the title. If you dislike the colors and patterns, you may change them with @{b}<Patterns>@{ub}.
Furthermore, the appearance can be changed with @{b}<Axis Labeling>@{ub} and @{b}<Y-Axis>@{ub} and can be adjusted to your own requiremnts.
@{b}Note:@{ub} Experiment a little with different settings to optimise your chart's appearance.
@ENDNODE
@NODE PrintingCharts "Printing Charts"
@{b}Printing Charts@{ub}

With <@{b}Chart-Print>@{ub} the chart can be transferred to any graphic printer. Simply adjust the desired picture size and then start the printout.
@{b}Note:@{ub} Make sure that the preferences settings of "PrintGfx" are correct.
@ENDNODE
@NODE SavingasIFF "Saving as IFF"
@{b}Saving as IFF@{ub}

Besides the normal printout, the picture can also be saved as an IFF-graphic and then postprocessed with a painting program, e.g. DPaint, or integrated into a word processing program.
The format of the picture as well as the number of colors can be set here with @{b}<Options-Global Settings>@{ub} (in the chart menu).
@{b}Note:@{ub} If you want to transfer the picture to another application and this application supports the clipboard, the picture can be written directly to the clipboard (with >Chart-Save to Clipboard), making it immediately available for pasting in any application. You don't have to detour via a file.
@ENDNODE
@NODE PreferenceForm "Preference Form"
@{b}Preference Form@{ub}

If you prefer a particular chart type, a particular pattern or if you want to determine a particular save-format for all charts, you can use the menu item <@{b}Options-Define as Default>@{ub}. By that the current chart will be defined as a template for further and new charts in this sheet.
If a new chart is generated, all settings of this chart will be set from the template, you will only have to adjust it in detail. If you select (when generating the chart) the chart type "Default", the second parameter window will not appear and the new chart also takes over the template settings.
@{b}Note:@{ub} With <@{b}Options-Config-Save>@{ub} you can of course use this template for all new sheets.
@ENDNODE
@NODE ChartTypes "Chart Types"
@{b}Chart Types@{ub}

@{b}Default@{ub}
This does not constitute a separate chart type, but it is the template chosen with @{b}<Options-Config-Save>@{ub} and thus one of the following types. It has been included into the type overview in order to save you time.
@{b}Column@{ub}
Columns belong to the basic chart forms: Adjacent columns indicate the value of every data element and thus allow the comparison of different data in a rather vivid way (e.g. comparison of the sales of the last three years).
Single data rows (which may contain several values) can be separated from each other by an @{b}"offset"@{ub}, to clearly identify the data rows (e.g. a data row may consist of the annual profits of the production sectors hardware, software and service, and may exist for the last three years).
In such cases it is often useful to "sum up" these "data rows", first to be able to compare the sums and secondly to show the single values in a graphic (in our example this will be a direct comparison of the total profits and their distribution). If you are more interested in the situation of the single sectors (Was the the service sector able to maintain its percentage of the annual profit?), the "distribution in percentages" may be appropriate.
@{b}Bar@{ub}
Simply said, this constitutes a column chart turned by 90 degrees. Depending on your screen resolution, on the room available in the sheet or on the paper as well as on the number and values of the data rows, you can choose between column or bar chart. 
@{b}Pie Chart@{ub}
Pie charts are very suited for presenting the proprotions of a total, e.g. to graphically break down the population into age groups or the total turnover into sectors. The whole pie comprises the sum (total population or turnover) and the single pie pieces represent the various groups or sectors.
If you want to especially emphasize one or more pieces of the pie, this can be achieved by extracting this piece and thus emphasizing it. Extracting a piece is very simple and can be done by:
@{b}Drag&Drop:@{ub} Simply click on the respective piece and move the mouse by holding the left mouse button pressed. The piece can now be moved as you want. Then simply release the mouse button. (If you want to abort the extracting procedure, you will only have to click on the right mouse button or on <ESC> by still holding the left mouse button pressed).
@{b}Note:@{ub} Only the first 16 parts (beginning clockwise at the top) can be extracted. But because pie charts seldom consist of more than 16 parts and then the first ones are very often the important (and largest) ones, this will not be a real restriction.
@{b}Area Chart@{ub}
Area charts are a mixture of line and bar charts. As in line charts, values are connected with lines, but in this case the area between line and X-axis is filled in the same way as in bar charts.
Please note that several data rows can cause a problem if the "back" data rows contain lower values than the front rows: In this case the back rows will be overlaid by the front areas.
If this effect is undesirable, a line chart is a preferable option or you can set the option "Stacking" to "stacked (sum)" or "stacked (percentage)" in @{b}<Options-Parameter>@{ub}. Then the back rows will be added to the front rows and either be presented absolutely or relatively (in percent). This is very useful to show a (monthly) total result as well as the individual divisions (e.g. articles) over a longer period of time. The "summing up" will show the overall trend very well (total result increased/decreased). In the "percentage" presentation, the actual distribution is highlighted (which article has which rank in the total result).
@{b}Line Charts@{ub}
Line charts can be used for a wide variety of data. Here, adjacent data points are distributed along the X-axis and connected, the value determines the value on the Y-axis. Thus the lines illustrate the trend (the changes) to the values measured at the X-axis (e.g. the turnover over a period of 12 months).
If you want to emphacise a value, symbols (also see point charts) and/or values can be shown and the Y-axis value can be emphasized by a vertical line at the data point (<Options-Parameter>).
@{b}Point Charts@{ub}
If you add symbols to a line chart and then remove the combining lines, you have a point chart. Thus the usage of these two chart types is similar, but the line chart stresses the trend whereas the point chart emphasizes the individual values.
@{b}Step Charts@{ub}
Step charts are also similar to line charts, but the values are not joined with lines but with steps. Thus, they accentuate the values and trends in movement (e.g. at the stock exchange), while line charts should rather be used for continuous trends (e.g. turnover increase in the last 12 months).
@{b}X/Y-Charts@{ub}
The X/Y-Chart is used to for data where both the x- and the y-value are given, e.g. to illustrate a function whose values (both x and y) are given by an experiment.
The first column of data is the x-value and all the other columns are the respective y-coordinates for that x-coordinate.
@{b}Note:@{ub} For X/Y-Charts the "X-Axis"-Requester is changed, it is then similar to the "Y-Axis" - you can set the minimum and maximum value for the x-axis. 
@{b}High/Low Charts@{ub}
High/low charts are used to illustrate market values for stocks and other fields, in which high and low values or perhaps final (or average) values are important:
The first two rows of a data column are entered one under each other and joined by a vertical line. So they represent the area between the extreme values (e.g. fluctuations in the market rate). If a third value exists, it will be shown as a short horizontal crossbar on the vertical line and thus a certain point inside (or outside) the range is marked distinctively (e.g. the closing price).
If more than three values exist, a new sequence of high, low and endpoints will be started.
@{b}Drawing@{ub}
This constitutes a special chart mode which does not generate a given chart, but which is aimed at creating user-defined symbols. The two-column chart sector determines the symbol of lines and polygons.
The first of the two columns represents the X-axis, the second the Y-axis (if more columns exist, they will be ignored).
X	Y	description
0..1023	0..1023	coordinates of the next point (0 = bottom left)
-1	...	end of line/polygon
-2	n	set color n
-3	n	choose filling mode:
			n=0 line mode
			n=1 area mode
			n=2 area mode, area bordered in black
Line mode is automatically selected at the start:
@{b}Line mode:@{ub}	A line will be drawn from one point to another. This one becomes the new "first" point. So a composed line will be created. X=-1 ends one line and begins a new one.
@{b}Area mode:@{ub}	A polygon is defined by the vertex points. This will be drawn, filled and, if applicable, bordered at X=-1or X=-3. (If -1 or -3 are missing at the end of the chart area, the polygon will automatically be drawn and filled.)
@{b}Example:@{ub} The following chart area creates a simple (filled) triangle (the third column is here only an explanation and is necessary for the chart):
-3	2	activate filling mode
-2	3	select color 3 (red)
0	0	left corner at the bottom
0	1000	left top corner
1000	1000	right top corner
-1	0	draw polygon
@{b}3D Bar Chart, 3D Histogram, 3D Area Chart, 3D Line Chart@{ub}
These chart types are similar to their two-dimensional versions, but the individual columns, bars, areas or lines are shown in a three-dimensional way and the data rows are shown one behind the other. This is especially useful, if several (independent) data rows are to be compared in a chart.
@{b}Note:@{ub} The 3D versions differ from the 2D versions based on the active "3D-Look"-option. The latter are presented in a 3D look, the data rows are aligned in one row. In the real 3D charts the data rows are drawn with a particular depth.
@{b}Note:@{ub} In the parameter window you can further set "data rows" (as with the 2D versions) and you can turn off the "3D-Look". But this cannot be recommended: the results will lose impact (You can try on your own). Some settings do not look good with the 3D perspective, but because they are very useful for some special charts, they were retained.
@{b}3D pie@{ub}
This chart type is similar to the two-dimensional pie chart and will mainly be used for the presentation of a distribution. The impact of the chart can be strengthened by using the 3D effect, but in some cases the 3D effect can also generate an unclear result.
Here, you can also separate individual pie pieces (see pie chart).
@ENDNODE
@NODE Objects "Objects"
@{b}Objects@{ub}


A feature which is new with TurboCalc 3.0 is "objects". Generally, an object is a rectangular field which can be inserted at any place on the sheet. The appearance of this field depends on the selected object type, as well as the current settings. Charts, imported pictures and text are such object types.
All objects share the same method of creation (with the exception of charts, see below): and manipulation as well as some common parameters, which facilitates manipulation of the objects as well as initially learning about their use.
@{b}Note:@{ub} Here, chart-objects play a special role - they have to be generated and handled differently. These differences will be described in the respective paragraphs.

    @{"Creating Objects" link CreatingObjects}
    @{"Object-Editing" link ObjectEditing}
    @{"Object Types" link ObjectTypes}
@ENDNODE
@NODE CreatingObjects "Creating Objects"
@{b}Creating Objects@{ub}

Creating an object is a simple procedure and is done via the following three steps:
*	Move the cell cursor at the (approximate) place at which the object is to be inserted. (Naturally, the object can later be moved, you will find more details in this chapter under "Editing".)
*	Select the menu option @{b}<Data-Create Object>@{ub} or execute a shift-mouse click on the @{b}"Generate-Chart"@{ub} symbol of the toolbar. Select the desired object type in the popup window (either per mouse double click or clicking on >OK< or with the cursor keys and <Return>).
*	For most of the object types a second window will appear to select or set appropriate parameters (e.g. picture name of the IFF-picture which is to be inserted). Make the settings you want and then click on >OK< or press <Return>. The "Object Types" paragraph describes the various settings.
Now the object will appear at the selected place and is activated automatically. If you do not want to work with the object any more, you should deselect it by clicking on and selecting any other cell.
@{b}Charts@{ub}
Chart objects are an exception and will be generated in the following way:
*	Create your chart (in a separate window) in the usual way.
*	Call the menu item <Chart-Object> with the chart window active. A new chart object will be inserted in the respective sheet.
*	If the position is not correct, move the object by clicking on it and moving the mouse with the mouse button pressed (you will find details below).
*	The chart window can be hidden (<Chart-Hide>). It is not possible to remove the chart window as the chart object would also be removed.
@{b}Remark:@{ub} The chart object represents a view of the chart window. All modifications carried out in the window will soon be reflected in the object view (at the latest when the next redraw takes place).
@{b}Faster Display@{ub}
Generally, objects will be shown directly in the sheet. If you insert many objects in one sheet or if you have a slow computer (or even both), you have the option to partially or even completely omit the display of objects using "@{b}Object: frame only"@{ub} or @{b}"Object: Hide"@{ub} in the @{b}<Options-Display>@{ub} menu. This will - especially in case of inserted pictures - result in an enormous speed increase for screen redraws.
@ENDNODE
@NODE ObjectEditing "Object-Editing"
@{b}Object-Editing@{ub}

Generated objects can be modified in several ways. First of all, you will have to activate the corresponding object:
@{b}Select Object@{ub}
Click on the object with the mouse. A kind of frame will be visible around the object, and in the cell status field (top left), "object" will be shown instead of cell reference.
Now most of the menu commands will apply to the object. The following commands are useful: cut, copy and delete. When choosing some of the other menu commands, you will probably get the message that this command cannot be executed with the object active (e.g. with sort).
@{b}Note:@{ub} If the object is bound to a macro or if the object had been placed behind a cell, you cannot click on it in the normal way. In the first case the macro would be called and in the second case a cell would be selected. In these cases first press and hold the Ctrl-key or one of the two Alt-keys and then select the object.
@{b}Object Editing@{ub}
Once you have selected the object as described, all the cell editing menu options will be at your disposal. These commands can be selected - as usual - by menu item selection, by key combination or from the toolbar. The following commands are useful:
@{b}Cut@{ub}	Copies the object to the clipboard from where it can be pasted later and deletes it from the sheet.
@{b}Copy@{ub}	Copies the object to the clipboard - the original is not modified.
@{b}Delete@{ub}	Deletes the object (does not copy it to the clipboard). This can be executed as usual by pressing on the @{b}<Del>@{ub} key. But contrary to the cell mode, no requester will appear - the object will be deleted immediately.
C@{b}reate Object@{ub}	If this menu item is selected with an active object, a new object will not be generated, but the settings of the selected object can be modified, see below under @{b}"Object Settings"@{ub}.
With most of the other cell instructions (e.g. formatting or database instructions) which are not sensible when applied to an object, you will receive an error message indicating that the chosen instruction cannot be executed with an active object.
If you have copied an object to the clipboard and you now want to paste it, you will have to select the place (cell) at which the object is to be inserted and then select Paste:
@{b}Paste@{ub}	Inserts a buffered object (copied to the clipboard either with cut or copy) into the current cell. No object may be selected for this instruction.
@{b}Move Object/Change Size@{ub}
If you want to move an object or change its size, this is done in the same way as selecting the object described above:
Click on the object with the mouse. Keep the left mouse button pressed and move the mouse. If you have chosen the right bottom corner, the size of the object will be changed, otherwise the object can be moved. A frame indicates the appearance of the new object. In either cases, when reaching one of the margins, the sheet will be scrolled in the corresponding direction, so that previously invisible parts of the sheet can be reached.
When the desired position or size is reached, simply release the left mouse button and the object will be modified correspondingly. If you want to abort the changing (e.g. if it has been started by mistake), press (with the left mouse button still held) either on <ESC> or the right mouse button - the frame will disappear and you can also release the left mouse button without the object being changed.
@{b}Note:@{ub} Depending on the mouse position the mouse pointer normally changes its shape. If it is placed above an object, you can note by the shape of the mouse pointer whether the object can be moved or its size can be changed or if a macro will be executed after being selected.
@{b}Note:@{ub} If necessary - as described under "Select Object" - the Ctrl or Alt key must be pressed for clicking on an object.
@{b}Object Settings@{ub}
If you select the object and then call @{b}<Data-Create Object>@{ub} or after a double click on the object, the following window will appear:

@{b}Name@{ub} determines the name of the object. This will only be relevant for macro programming to select an object controlled by the program.
@{b}Frame:@{ub} Determines the frame which will be drawn around the object: "@{b}off"@{ub} means no frame, @{b}"on"@{ub} means a normal frame. With @{b}"3D"@{ub} and @{b}"3D-2"@{ub} a three-dimensional frame will be drawn, with 3D the object seems to stand out (like gadgets), with 3D-2 it seems to jut into the monitor like the status line. 
@{b}Background:@{ub} Here, you can determine whether the object is to have a certain background (with a tick) or is to be drawn transparently onto the sheet (no tick). (For text e.g. a blue background is the standard setting, but graphic objects are drawn directly in the sheet without background). By clicking on the gadget >Background< a window will be opened which allows you to select the color and pattern.
@{b}Object@{ub} opens a new window to set the parameters which are specific for each object type (see below).
@{b}Macro:@{ub} If selected, the instructions in the text field behind (normal TurboCalc macro without leading "equals" sign) will be executed. It is useful here to choose MACROPLAY (Cell) to start a certain macro when selecting the object.
@{b}Placing objects behind cells@{ub} determines that the objects cannot be selected in the normal way. A normal click on the object will not select the object, but the cell. This protects the objects from being cut or deleted by mistake. But this option does not change the appearance (the object will not be drawn behind the cells). If "Macro" is selected, this setting has no effect.
@{b}Note:@{ub} If one of the last two settings is active, the object cannot be selected by a simple mouse click, the Ctrl or Alt key must also be pressed.
@{b}Object protected:@{ub} This protects the objects in a similar way to the way cells are protected using @{b}<Format-Protection>@{ub}. If this flag is selected and if @{b}"Enable Protection"@{ub} is active in @{"<Options-Protection Flags>" link Menu.guide/ProtectionFlags} , this object cannot be selected, modified or deleted any more. Only a macro bound to the object may be executed by a mouse click. Please note that this will only be effective if the protection is active in protection flags, otherwise the object can till e edited as usual. You will find further general hints in @{b}<Format-Protection>@{ub}.
@{b}Setting of the object types@{ub}
As mentioned above, there are - besides these general settings which are equal for all objects - other settings which are object-type specific.
This second setting window appears when you select >Object< in the above described object settings, or you can choose it directly by holding the shift key when you double click on an object.
The corresponding windows differ from object type to another and mostly correspond to the second parameter window when generating an object. A detailed description can be found in the next section about object types.
@{b}Editing summary@{ub}
Here is a summary of all editing commands for objects:
@{b}Click@{ub}	Select the respective object which can then be edited using menu instructions.
@{b}Click and move@{ub}	Moving the object.
@{b}Right bottom corner@{ub}	Clicking on an object and changing its size.
@{b}Double click@{ub}	Object settings.
S@{b}hift-double click@{ub}	Object type settings.
@{b}Note:@{ub} It might be necessary that you will also have to hold the Ctrl or Alt key with every click. See @{b}"Select Object"@{ub} at the beginning of this chapter.
@ENDNODE
@NODE ObjectTypes "Object Types"
@{b}Object Types@{ub}

As mentioned several times before, every object has a certain type and thus belongs to a certain object class. This class determines the appearance and the required parameters. The following is a description of the standard types.
@{b}Graphical Elements@{ub}
Graphical Elements (generally abbreviated as Gel) are standard drawing elements such as lines, circles or rectangles. These elements can be inserted as this object type into the sheet. By the superposition of several of these objects drawings can be made, even if this is not the main purpose of these elements (and this will also not be very user-friendly). Specifically, these Gels can be used to emphacise particluar value (e.g. circled and indicated by an arrow).
The existing elements will always be drawn on the basis of a rectangle (the object); thus the size of a square or a triangle will always be determined by the object size.
The following window will appear to allow the creation and setting of a Gel object:

In the upper part of the window the required graphical element can be selected by clicking with the mouse on the corresponding text.
@{b}Corner u.l.@{ub} (or l.l. or u.r. or l.r.) determines the orientation for some elements (e.g. for triangles, lines or arrows the direction in which they point).
With @{b}"Lines"@{ub}, @{b}"Areas"@{ub} or @{b}"Areas, framed"@{ub} you can determine whether the graphical element is to be represented as a line or as filled.
@{b}Color:@{ub} Another window will appear to allow to select the text color as well as the pattern (only relevant in case of having selected "Areas"). The background color will be determined in the general object settings.
@{b}Text@{ub}
This object type represents text (of several lines) in the sheet. It is suitable for gadgets (with the default gray background and the 3D frame), for status displays (e.g. use here the 3D-2 frame) or as normal text arranged independently of the cell (if necessary with a white background).
Both object creation and object type settings result in the appearance of the following window:

@{b}Text Line:@{ub} The text is entered into the upper text line and will then be shown in the object. In case of longer text only a part can be seen in the text line and this text part will be scrolled correspondingly. In the object comprises of several lines, the whole text - if possible - will be shown.
@{b}Horizontal/Vertical:@{ub} Determines the location of the text inside the object.
@{b}Color:@{ub} Another window will appear to allow the selection of the text color. The background color can be determined with the general object settings.
With @{b}"Font"@{ub} you can choose the font type for the text. You can either open the normal character set requester by clicking on "Font" and select the desired font or enter the font as "Name/Size" (e.g. "topaz/8") directly in the text field positioned behind. If the text field is empty, the standard font of the sheet will be used.
@{b}IFF-Picture@{ub}
This object type allows the insertion of any IFF-image and thus makes an individual sheet layout possible (e.g. to insert logos into the sheet).
@{b}Remark:@{ub} This object type can only be used effectively with at least OS2.0, because this is the first version in which the pictures can be shown. (With Kickstart 1.2/1.3 an error text will appear in the object instead of the picture, thus sheets with picture objects can also be loaded with these operating system versions).
The window for creating and setting object types has the following appearance:

@{b}Refresh the picture:@{ub} If this option is active, clicking on >OK< will start the loading of the indicated picture. Only in this case can the two following fields be changed.
If no current picture exists, this setting will automatically be activated, otherwise it will be deselected so that the other settings can be changed without forcing a reload of the picture. This option should only be selected if you want to change the existing picture.
@{b}File@{ub} determines the picture name (enter it either in the text field or select it - after clicking on >File< from the popup file requester).
@{b}from clipboard@{ub} indicates that the picture is to be read-in from the clipboard.
@{b}Note:@{ub} Reading in from the clipboard will only be possible if the library "iffparse.library" (in LIBS:) exists.
@{b}Only save reference@{ub} to the picture determines that - when saving the sheet - not the complete picture but only the file name will be saved (this is not possible for pictures that have been read in from the clipboard). This procedure will reduce the space the sheet will need on the hard disk/diskette, but it also implies that the picture must still exist (under the same name) when opening the sheet the next time. If you want to pass on the sheet, you will also have to pass on the corresponding picture and ensure that it will be store in the same directory. In this case it would be advantageous to save the picture in the sheet. This setting is not possible for pictures that have been read in from the clipboard, because then a file name does not exist and the picture will always have to be saved with the sheet.
@{b}Picture Margins:@{ub} Allows to limit the visible part of the picture in order to remove existing frames of the picture or to show only a part of the picture. The number of the pixels which are to be omitted at the respective edge (always positive) is entered in the respective number fields @{b}Left@{ub}, @{b}Right@{ub}, @{b}Top @{ub}and @{b}Bottom@{ub}.
@{b}Note:@{ub} Should an error occur while loading an image, no requestor will appear but instead, a text message will be displayed in the object.
@{b}Note @{ub}for the use of @{b}"picture-refresh"@{ub}: The procedure concerning this option will descibed again, briefly. During object creation, this option is automatically selected. Select the desired picture from a file or the clipboard and then click on >OK< (also change, if necessary, any other settings). If the loading was successful, the selected picture will now appear. If you select the object type settings the next time on the same object, the option "picture-refresh" will be automatically deselected (if a picture exists). Change the desired settings and click on >OK< - the picture will not change. If the picture is also to be changed, click on "picture-refresh" and then select the picture accordingly.
@{b}Chart@{ub}
The chart object is based on a normal chart window, a fact that was evident in the different method of object creation (see second step of object creation).
Thus all modifications of this chart window will also cause an adjustment to the chart object, hence the chart window represents a sort of editing window for the chart object. For this reason the appropriate chart window will be opened as "object type setting" (in case of having been hidden before), be pushed forward and activated. Here, you can now make all settings you want.
If you find the chart window annoying, it can be hidden (@{b}<Chart-Hide>@{ub} or click on the close gadget). But removing the window (with @{b}<Chart-Remove>@{ub}) will not be possible: Otherwise the appropriate object(s) will also be removed (after a corresponding requester).
Exporting chart objects to other sheets: This export is certainly possible, but for the correct display of the objects the original sheet must be loaded (otherwise a message to that effect will appear instead of the object). The exported charts will be managed with the aid of the chart and sheet names, therefore the names should be clearly selected and if possible remain unmodified. (Certainly charts without a name can also be exported, but a name will increase the certainty that the correct chart will be displayed when loading the next time.)
Sheet name: The name will be compared with the complete path, you should therefore always open the sheet in the same way (i.e. either with drive specification 'DH0:TurboCalc/Sheets/abc.TCD´ or relative 'Sheets/abc.TCD´).
@{b}External Object Types@{ub}
With TurboCalc you now also have the ability to bind external routines via @{b}TurboCalc-Libraries@{ub} (TCLibs). This also means the ability to addexternal object types. These will then appear further "normal" objects in the list of all object types during object creation. They can - like all others - be created and edited. You can take the presentation and object type settings from the external description, which will normally accompany such objects. You will find further details concerning TurboCalc-Libraries in the paragraph of the same name in the chapter "Projects".
New object types should be placed in one of the TCLib standard directories under the name "object_Name.tclib" so that they can be bound automatically at the start of TurboCalc (where "Name" constitutes a more detailed description of the object type). If you are a user, you should normally not have to worry abou this; if you are a programmer you will find further information on the TurboCalc diskette - see under TCLib description.
@{b}Note:@{ub} A sample object as example (for users as well as for programmers) will be attached to TurboCalc (under "Object_Logo.tclib" in the "TCLib" directory). This will appear in the selection list for objects as "IFF-logo (example)" and constitutes a fixed and importable logo.
@ENDNODE
@NODE Database "Database"
@{b}Database@{ub}


TurboCalc possesses many operations for data definition and manipulation. With these operations data ordered line by line can be administrated, sorted, searched, deleted and copied. In addition to that, further functions are available to query these data within formulas.

    @{"Definition of a Database Range" link DefinitionofaDatabaseRange}
    @{"The Search Criteria" link TheSearchCriteria}
    @{"Finding Data Records" link FindingDataRecords}
    @{"Extracting Data Records" link ExtractingDataRecords}
    @{"Deleting Data Records" link DeletingDataRecords}
    @{"Sorting Data Records" link SortingDataRecords}
    @{"Database Mask" link DatabaseMask}
@ENDNODE
@NODE DefinitionofaDatabaseRange "Definition of a Database Range"
@{b}Definition of a Database Range@{ub}

The basis for every database is the database range. This can be any cell range that is structured as follows:
Every row of the selected range represents a data record (so to speak a "@{b}file card@{ub}"), in which the columns represent the data fields (entries on the file card) of the appropriate data-set.
The first row of a data range must consist of text determining the names (e.g. name, christian name, address, age...) of the respective data field (in the columns). The names should be defined clearly (i.e.: different) to allow a correct access (see search criteria).
@{b}The Creation@{ub}
Please select your desired database range (that means: first row: title, rest: data) and then the menu item <@{b}Data-Define Database@{ub}>. So the database range is created and assigned to the name "@{b}database@{ub}" (see "@{b}Name@{ub}").
@{b}Hint:@{ub} Naturally, it is possible to put more than one database in one sheet. If you give a name to every database (see "@{b}Name@{ub}": Mark block, select <@{b}Command-Define Names...@{ub}> and enter name), you will be able to change between the databases: Select <@{b}Command-Goto@{ub}> or press <F5> and click on the desired name (the range will be marked). Finally call <@{b}Data-Define Database@{ub}>.
You can find an example for this in the example-sheet "@{b}DataBase.TCD@{ub}" on the TurboCalc-diskette.
@ENDNODE
@NODE TheSearchCriteria "The Search Criteria"
@{b}The Search Criteria@{ub}

For the instructions @{b}<Find>, <Extract>@{ub} and @{b}<Delete>@{ub} special criteria are needed that determine which data record should be searched, copied or deleted.
The criteria are again determined by a range which must be structured as follows (similar to the database):
In the first row the database titles, for which the criteria should be determined, are listed. You do not have to list all titles and it is possible that some titles appear sveral times (for this see "@{b}Example: Selection@{ub}" below).
It follows one ore more "@{b}criteria@{ub}" lines, which contain conditions for the respective titles.
*	An empty field is always coincident, independent of what is written in the database.
*	A number, date, time or boolean (no matter, if it is entered directly or calculated by a formula) will only come to a coincidence, if it is identical with the data field of the respective data row.
*	A text that does not start with @{b}">"@{ub} or @{b}"<"@{ub} will be coincident if the text is completely identical (capitalization and use of initial letters are not differentiated!). That corresponds to the above mentioned item "@{b}number@{ub}" but only here @{b}"patterns" ("*" and "?")@{ub} can be used. An explanation will follow further below.
*	If the text begins with@{b} ">", "<", ">=", "<>"@{ub}, it is interpreted as a comparison. In this case the rest of the line is read (or calculated as it can be a formula as well) and compared, depending on the selected relational operator.
@{b}Attention:@{ub} An equals-sign @{b}"="@{ub} as a first text sign results in a normal formula and is treated like a pure number, text...; the equality test will be executed with this formula, then.
A data line is regarded as "found" when the following condition is valid: All "@{b}criteria@{ub}" (=cells) of a "@{b}criteria@{ub}"@{b}-row@{ub} coincide with the data record. A coincidence of one criteria-row is sufficient. Expressed in logic terms: It is an @{b}"or-linkage"@{ub} of the rows in the course of which all fields of one row are "@{b}and-linked"@{ub}.
@{b}The Creation@{ub}
Select your desired search-criteria range and then the menu item @{b}<Data Define-Criteria>@{ub}.
This defines the search-criteria range and assigns it to the name "@{b}criteria@{ub}" (see @{b}"Names"@{ub}).
@{b}Hint:@{ub} Naturally, it is possible to create more than one search-criteria range for one or more databases in one sheet. It is advisable to assign a name to each criterion and database to switch between them without problems.
@{b}Patterns@{ub}
For comparison of texts patterns can be used to search for text groups or text combinations.
@{b}?@{ub}	stands for any (exactly one!) letter
*	stands for leaving out as many (none, one..) letters as one likes

@{b}Ma?or@{ub} finds "Major" or "Mayor", but also "Manor"
@{b}Ma*@{ub} finds  "Manager", "Master", "Malfunction"...
@{B}A*@{UB} searches for every text starting with an "A"
@{b}*A@{ub} or ending with an "A".
If none of these patterns are used, the searched text must coincide completely (no case-sensitivity).

Example: Criteria
To clarify the use of criteria, here a few examples for search conditions:
@{b}100@{ub}	delivers conformity if 100 is found in the data cell
@{b}Hello	@{ub}the text "Hello" must have been entered previously in the data range
@{b}>100	@{ub}the value must be higher than 100.
@{b}<VALUE("1.8.93")	@{ub}the date in the column must be before 1.8.93.
@{b}<>100@{ub}	returns TRUE, if the cell is filled with any value except 100.
@{B}A*@{UB}	all texts starting with an "A"

Example: Selection
The "@{b}or-linkage over and-linkage@{ub}" can be used as follows:
@{b}1.@{ub} If you are looking for all persons who are born between 1.1.1970 and 1.1.1980 you can do this: The field containing the date should simply be called "@{b}date@{ub}" (in this example). Now create a two lined and two columned table. In the first row insert the text "@{b}date@{ub}" twice. Below that you write at first "@{b}>1.1.1979@{ub}" and then "@{b}<1.1.1980@{ub}":
@{b}Date@{ub}	@{b}Date@{ub}
@{b}>1.1.1970	<1.1.1980@{ub}
The program now searches for all entries which have a higher date than 1.1.1970 @{b}and@{ub} which are at the same time lower than 1.1.1980.
@{b}2.@{ub} Now all children and all seniors shall be searched (in other words: All persons who are born before the 1.1.1930 or after the 1.1.1975). Proceed as follows:
Create a one-columned and three-lined table (title of the first row: "date").
Below that write ">1.1.1975" and "<1.1.1930" - with this procedure all data records, which are higher than 1.1.1975 @{b}or@{ub} lower than 1.1.1930, will be accepted.
@{b}Date@{ub}
@{b}>1.1.1975@{ub}
@{b}<1.1.1930@{ub}
You will find more examples in the file "@{b}Database.TCD@{ub}" on your TurboCalc-diskette.
@ENDNODE
@NODE FindingDataRecords "Finding Data Records"
@{b}Finding Data Records@{ub}

To search data records (after having determined the database and criteria) simply select @{b}<Data-Find>@{ub}. Now the program is looking for data records, which are congruous to the criteria. If the cursor is located within the database range the search starts from this position on (exactly one row below):
@{b}Hint:@{ub} If you want to search through the whole database (or simply from the beginning) it is advisable to locate the cursor outside the database range, e.g. with @{b}<Ctrl-up>@{ub} in the first row.
If the search has been successful the matching data record will be marked and the search is stopped.
To keep on searching, select the same menu item @{b}<Data-Find >@{ub} again; the search will be continued in the next row then.
If no (other) matching record could be found, a message will be displayed. If the search has been started in the middle of the database, there is the opportunity to start searching from the beginning of the range (with @{b}>Ok<@{ub}). Otherwise click on @{b}>Abort<@{ub} (or while having a simple message: >@{b}Continue<@{ub})@{b}.@{ub}
@ENDNODE
@NODE ExtractingDataRecords "Extracting Data Records"
@{b}Extracting Data Records@{ub}

Furthermore it is possible to search and copy data records, i.e. to copy all matching data records together in one range. This is useful for further processing or if you want to check them together. For this step the data-base range as well as the search-criteria range must be defined. After that, move the cursor to an empty cell (with free space on the right and below) where the data record should be copied to.
@{b}Attention:@{ub} Be careful that you do not overwrite any data while copying. Also pay attention that the data-sets point to the right (because all data columns will be copied) and that (depending on the criteria) many data records may be copied. For this transaction it is also useful to care for enough free space below the desired location. Then, select @{b}<Data-Extract>@{ub} to start copying. Naturally, all data records stay originally preserved - the database will not be changed.
@ENDNODE
@NODE DeletingDataRecords "Deleting Data Records"
@{b}Deleting Data Records@{ub}

This menu item deletes all records that match the criteria and thus reduces the database range. Again you have to define the data-base- and criteria range at first before you can select @{"<Data-Delete>" link Menu.guide/Delete} .
@{b}Attention: @{ub}The deletion is executed without warning. Therefore be careful that the criteria are correct and that only the desired data records will be deleted.
@{b}Hint:@{ub} To have a quick check whether you have chosen the right data sets (i.e. the criteria are correct), simply call @{b}<Data-Find >@{ub} before deleting. For a better survey you can also use @{b}<Data-Extract>@{ub}.
@ENDNODE
@NODE SortingDataRecords "Sorting Data Records"
@{b}Sorting Data Records@{ub}

A sorting of the complete database according to columns is possible as well:
Locate the cursor in the desired column (either in the title or in any data line) which shall have the leading position later. Then choose the menu item @{b}<Data-Sort Database>@{ub}. The data base will immediately be sorted in ascending (or descending) order with regard to the current column.
@{b}Hint:@{ub} If the database should be sorted according to more than one criterion (e.g. first the surname and - if it is identical - to the christian name) you simply have to sort after all criteria successively. Start with the most unimportant and end with the main sorting condition (sort at first the christian names, then the surnames).
@ENDNODE
@NODE DatabaseMask "Database Mask"
@{b}Database Mask@{ub}

The menu item @{b}<Data-Mask>@{ub} makes it possible to enter, modify and read a database in an easy way. The database-mask window will open after having selected this menu item.:
In the left part of the window, there is from top to bottom, a complete data record from the database (that means one row of the database range), on the left the respective (column) names and on the right the contents.
The content can now - as usual - be checked, entered or edited.
With the help of the gadgets at the right margin the current data record can be exchanged or new ones be inserted at the end. The meanings of the gadgets are as follows:
@{b}New@{ub} adds a new empty input at the end of the database (the database will correspondingly be extended by this input) and switches to this input. (If at the end an empty input already exists, this one will be selected and a new empty input will not be created.)
@{b}Delete@{ub}	removes the current input. The database will correspondingly reduced by one input.
@{b}Undo	@{ub}cancels all editing (since the last data record switch).
@{b}|<@{ub}	positions to the first data record of the database
@{b}<@{ub}	switches to the proceeding data record
@{b}>@{ub}	skips to the next data record
@{b}>|@{ub}	shows the last data record of the database
@{b}Close@{ub}	adopts the current data record (if it is a new one or has been changed) and closes the database view.
@{b}Note:@{ub} By @{b}<Return>@{ub}, @{b}<Tab>@{ub} and @{b}<Shift-Tab>@{ub} you can switch between the several texts of the data record.
@{b}Remark:@{ub} @{b}"New"@{ub} adds the first input only after you have switched to another data record or have closed the current data record - but only if this data record is not empty. This prevents you from appending an empty and unnecessary data record using "New" and an immediate "Close" (if you changed your mind).
@ENDNODE
@NODE Names "Names"
@{b}Names@{ub}


TurboCalc offers the possibility to give names to any cell, range, value or formula and to use them with any formula of the sheet. This will be very useful, if you have a cell that is needed in different formulas of your sheet. In this case it is easier to apply an expressive mnemonic like @{b}"interest"@{ub} in the formula than the simple cell reference @{B}C7.@{UB} Furthermore, if you want to change @{B}C7@{UB} to @{B}F3@{UB} it will be easier to change the cell named @{b}"interest"@{ub} than replacing every @{B}C7@{UB} by @{B}F3@{UB}.
Do you need the value added tax in your formula? You could enter *15% every time! But what happens, if the tax changes? In this case you would have to replace every *15% by for example *20%.
There are two ways to change (and improve) this:
At first as mentioned above: Create a cell with the name "@{B}VAT"@{UB} and enter 15% into this cell. Now you can simply write @{b}*VAT.@{ub} instead of *15% wherever it is needed. 
Now imagine a cell containing "*15%", which you want to suppress in the print-out. This fact motivates the second possibility: You can directly assign a number to the name @{B}VAT.@{UB} (in our case 15%) - the rest works as mentioned before. If the VAT rate changes, you only have to substitute the 15% by the new value and the sheet will be up-to-date immediately.
If you want to switch between different locations in your sheet you only have to define a name for each important position. Then you can easily move in the sheet by selecting @{b}<Command-Goto >@{ub} and the appropriate cell- or range name. 

    @{"Setting Names" link SettingNames}
    @{"Changing Names" link ChangingNames}
    @{"Deleting Names" link DeletingNames}
@ENDNODE
@NODE SettingNames "Setting Names"
@{b}Setting Names@{ub}

It follows a description of how to create a name:
Select @{b}<Command-Define Name>@{ub}. If you wish to give a name to a cell or range it is advisable to mark this cell or range before selecting this menu item. The cell or range will then be shown in the field >@{b}Contents@{ub}<, see below.
The following window appears:

In the left block you can see all previously created names. With the scrollbar you can change the visible range if the list is too long to be displayed completely.
To determine a new name you will need the text fields @{b}>Name< @{ub}and @{b}>Contents<@{ub} (and perhaps @{b}>Type<)@{ub}.
@{b}Name:@{ub} Here you enter your desired cell name (in the above mentioned example it would be VAT). You can enter any name, also in combination with blanks or numbers, but keep the following points in mind:
*	Capitalization or the use of small letters is not of importance.
*	Names should start with a letter (umlauts and special characters of other countries are allowed) and then be followed by further letters or numbers (or one of the signs "-" or ".").
*	Avoid blanks if possible and use for example "_" instead.
*	Avoid names which could be mixed up with cell references (A1 or C3:F5) or formulas (SIN, LOG, IF...) or which start like that (e.g. iftrue, sinus...). All these names are allowed but will lead to an unintended confusion, if you want to use the appropriate formula later on or enter these names into formulas.
@{b}Contents:@{ub}	This field specifies the value of your name and is entered as follows (examples for the different types you will find below):
@{b}Numbers, Texts, Date, Time@{ub}
	Enter them just as usual during the normal cell input (also see @{b}"Input"@{ub}).
@{b}Cells, Ranges@{ub}	If you want to give a name to a cell or range, please enter the appropriate cell reference with an equals sign "=" in front of it, e.g. =A1:C5. All cell references are absolute. (I.e. it is not necessary to enter "$", but possible).
@{b}Formula@{ub}	Any formula can be named. Please enter them as usual, with an equals sign at the beginning =". Please note that A1 and $A$1 are both absolute addresses. If you want the cell reference to be treated as @{b}"relative"@{ub}, use the function CELL, see next point.
@{b}Relative cells@{ub}
@{b}Rel. ranges@{ub}	If you want to mark the cells as "relative", you have to use cell-formulas, e.g. CELL. (E.g., =CELL(-1;0) reads the value one row above the position it is called from).

@{b}Type: @{ub}In this field you determine which type of name you want to define. Normally it should be set to @{b}"normal"@{ub}. If you enter the name of a macro you have to select @{b}>Macro<@{ub}. In this case the name of the macro will be listed up in the schedule of @{b}"Start macro"@{ub}. The remaining other two types are without importance at the moment and can be used for documentation, if necessary.
@{b}Hint:@{ub} When the window appears the current cell/range will be written in the textfield @{b}>Contents<@{ub} as a formula (e.g. "=A1:C3"). In the field @{b}>Name<@{ub}, you can find the contents of the current cell (or the text above or on the left of it - if all these cells are emtpy , <Contents> will be cleared, too). This facilitates the creation of cell- or range names. So, before selecting the menu item, please mark the desired range and it will be inserted automatically in the field @{b}>Contents<.@{ub} (If you want to enter something else, you can easily delete this contents with @{b}<right Amiga>+<X> @{ub}or @{b}<Shift>+<Del>@{ub}. During this operation the cursor must be located in the respective text field.)
After entering name and contents, simply click on @{b}>Ok<@{ub} and the name will be added to the list and the window will be closed.If you wish to determine more names, click on @{b}>Add<.@{ub} In this case, the name will be added, but the window remains open.
@{b}>Abort<@{ub} stops the input of names and closes the window. The current (last) name will be dismissed, if it has not been entered with the help of @{b}>Add<@{ub}.
@{b}Hint@{ub}: The gadget @{b}>Abort<@{ub} does not undo changes done earlier with the help of <@{b}Add<@{ub}. The only effect is that the window will be closed without adding  the current name (no @{b}>Add<@{ub} is executed before closing the window).
@{b}Examples of possible Contents@{ub}
@{b}15% (or 0.15)@{ub}
This results in the number 0.15 (see example above). If the cell is labeled VAT,you can now simply write @{b}*VAT@{ub} in your formula.
@{b}30.9.93@{ub}
Here you can fix a date. The respective name can now be used instead of this date.
@{b}=A1@{ub}
This names the cell A1 - instead of referring to A1 this name can be used now
@{b}=A1:F7@{ub}
According to =A1 but this time for the block A1:F7
@{b}=Cell(-1;0)@{ub}
This creates a relative cell reference (one row above)! If you use this name in D4 for example, it will refer to cell C4.
@{b}=CELL(-1;-1):CELL(-1;1)@{ub}
This creates a relative block (the cells on the left above and on the right above the position it is called from). If you use this name (e.g. block1) in D4 (with formula "=SUM(block1)"), the sum of C3+C4+C5 will be calculated.
@{b}=SUM(CELLABS(1;COLUMNNUMBER() ):CELL(-1;0)@{ub}
Name this Formula COLUMNSUM and then enter the formula =COLUMNSUM in F7. Now this formula calculates the sum of the values from F1 to F7 (that means, the sum of the values of the current column, from the top up to the cell above the formula).
This example is a little bit more complicated but can be used universally. The functions and their combinations of TurboCalc are well worth to be looked at more intensive.
@ENDNODE
@NODE ChangingNames "Changing Names"
@{b}Changing Names@{ub}

If you already have determined a name and you want to change it, the execution of this step is similar to the creation and the same menu item is used: Select:@{b} <Command-Define Name...>@{ub}. The already well known window for the input of names will be opened. Now have a look at the rectangle in the upper left corner. Here the name you like to change should be displayed (if necessary, shift the visible range with the scrollbar or the cursor keys). Once you have found the name simply click on it with the mouse. The name will be copied to the fields @{b}>Name<@{ub} and @{b}>Contents<@{ub} and its @{b}>Type<@{ub} will be changed accordingly.
Now you can change the contents of the name and type. Click on @{b}>Ok<@{ub} or, if the window should stay open, simply click on @{b}>Add<@{ub} and the former contents will be deleted and the new one saved.
@{b}Hint:@{ub} In this way the type and the contents can be changed. If you like to change the name (perhaps you have made a typing mistake), proceed as follows: At first, click on the name, then change the name and click on @{b}>Add<@{ub}. The name will be added and the old @{b}and@{ub} new one should be listed. Now you can delete the old name (select it and then click on @{b}>Delete<@{ub}, see below).
@{b}Hint:@{ub} The gadget @{b}>Abort<@{ub} does not cancel changes executed with the help of @{b}>Add<@{ub}. The only result is, that the window will be closed without taking over the current name entry ( @{b}>Add<@{ub} is not executed before closing).
@{b}Hint:@{ub} After the change of names the sheet will not be recalculated automatically. If this is required you will have to do this by yourself (Menu item @{b}<Command-Recalculate>@{ub} or simply enter any value in a cell of your choice).
@ENDNODE
@NODE DeletingNames "Deleting Names"
@{b}Deleting Names@{ub}

The deletion of a name works analogous to the change:
Select menu item @{b}<Command-Define Names>@{ub}, then click on the name that should be deleted and afterwards click on the gadget @{b}>Delete<@{ub}. The current name is deleted immediately.
@{b}Attention:@{ub} Once a name is deleted it cannot be countermanded - the @{b}>Abort<@{ub} gadget only closes the window but cannot undo the executed cancellations. So, please be careful!
@{b}Hint:@{ub} If you delete a name that is a component of a formula you may have problems after the next new calculation. Probably you will get an error message in these formulas.

@ENDNODE
@NODE Projects "Projects"
@{b}Projects@{ub}


This chapter has information about the loading and saving of sheets as well as some other "Project" topics. However, the "normal" loading and saving will not be treated, these matters are described under @{"<Project-Open>" link Menu.guide/Open}  and @{"<Project-Save>" link Menu.guide/Save}  and should be known to every user from other applications. The following paragraphs contain some specific characteristics of TurboCalc.

    @{"SmartOpen" link SmartOpen}
    @{"Automatic Opening when Starting TurboCalc" link AutomaticOpeningwhenStartingTurboCalc}
    @{"Automatic Saving" link AutomaticSaving}
    @{"Foreign Formats" link ForeignFormats}
    @{"Export of Sheets" link ExportofSheets}
    @{"External File-Requester" link ExternalFileRequester}
    @{"Sheet Encrypting" link SheetEncrypting}
    @{"Configuration" link Configuration}
    @{"TurboCalc Libraries" link TurboCalcLibraries}
@ENDNODE
@NODE SmartOpen "SmartOpen"
@{b}SmartOpen@{ub}

Do you work regularly with TurboCalc? Then you will notice that you often need the same sheets. For example, you interrupt your work in a sheet and want to continue the next day or you need a certain sheet (almost) every day to enter your expenses.
The function @{b}"SmartOpen"@{ub} takes these circumstances into account. When calling @{b}<Project-SmartOpen>@{ub}, the sheets used (that means loaded and saved) last will be shown. A double click will be sufficient to open the desired sheet.
@{b}Note:@{ub} The function "SmartOpen" can be called by menu, by toolbar (open gadget and <Shift> key pressed!) or by Short-Cut <r.Amiga>+<> (that is the key above <Tab>).
To make the function useful even when restarting TurboCalc the next day (here the function will be the most useful), the input "@{b}save list of the last recently used sheets"@{ub} in <@{b}Options-Global Settings>@{ub} has to be selected (this will be the default).
Then, when quitting TurboCalc, the current fast load list will be saved. When starting TurboCalc again this list - if existing - will be automatically read in and will be at your disposal for SmartOpen.
@{b}Note:@{ub} If you (almost) always use the same five to ten work sheets, you can proceed as follows: Open the required sheets, the SmartOpen list should show them. Quit TurboCalc with an active "save list"-option. Start TurboCalc again and deactivate the "save list" (set by <Options-Config save as>). Now for every start of TurboCalc the once saved list will be read and you can fast load the listed sheets. (It is important that the "save list"-setting is deselected in this case, otherwise the created list will be overwritten.)
@{b}Note for advanced users:@{ub} The list will be saved under S:TurboCalc.LRU. If this project exists when TurboCalc is started, it will be read automatically. (If - when loading or quitting TurboCalc - the "S:"-directory, mostly the directory "S" of the boot disk or boot hard disk, does not exist, it will not be requested, but it will be assumed that the file does not exist and cannot be written.)
@{b}Note:@{ub} For the users of hard disks, this option can be recommended, if you only have of diskette drives, you will have to consider whether the SmartOpen function is worth the writing on the diskette when quitting TurboCalc.
@ENDNODE
@NODE AutomaticOpeningwhenStartingTurboCalc "Automatic Opening when Starting TurboCalc"
@{b}Automatic Opening when Starting TurboCalc@{ub}

A directory can be defined in @{b}<Options-Global Settings>@{ub} out of which a project will be opened automatically when starting TurboCalc. This option can be used to automatically load projects which are always needed.
Activate this option and select the desired directory (e.g. "AutoOpen"). Then move all projects which are to be loaded at the start, to this directory.
@{b}Note:@{ub} This can also be used to insert macro sheets which define new menu items or key instructions. Examples are @{b}"AutoFormat"@{ub} or @{b}"WhatIf"@{ub}. These two projects are part of the AutoOpen-directory and - if the option is active - will automatically be loaded and insert the corresponding menu items.
@{b}Note:@{ub} As described above there are some special macro sheets in the directory "AutoOpen" that expand the functionality of TurboCalc. Because these functions will be continually expanded and added, you will find the description in a help file within this directory.
@ENDNODE
@NODE AutomaticSaving "Automatic Saving"
@{b}Automatic Saving@{ub}

If you have a hard disk system and if you often edit larger sheets, the activation of an automatic buffering can be useful. Here, the edited sheets will be buffered in regular (and adjustable) intervals under different names. When quitting TurboCalc these temporary files will be removed automatically.
If TurboCalc will not be terminated correctly (either by a reset or by a crash of any program or by a power failure), these projects will not be deleted and are still at your disposal when you start TurboCalc the next time (then it will be the best thing to load them immediately and save them under the original name). Thus you will lose at the most a few minutes of your work.
Moreover this can be helpful in case of having made modifications which you want to undo (but which go beyond the scope of Undo). Here you can go back to an existing buffered version.
In order to activate the automatic buffering, you have to select "OK, interval (min)" in @{b}<Options-AutoSave>@{ub} and set the desired buffering interval. In addition to that, you can select the place at which the temporary sheets should be saved (see also <@{b}Options-AutoSave>@{ub}).
@ENDNODE
@NODE ForeignFormats "Foreign Formats"
@{b}Foreign Formats@{ub}

TurboCalc possesses several import and export functions to allow a data exchange with a variety of other applications.
Unfortunately, these conversions are limited in some ways:
@{b}Note:@{ub} If you export a certain TurboCalc sheet, you cannot be sure that the original formatting is preserved during this process. Most conversion methods lose this information. To avoid any trouble, keep a security backup of the sheet in the original TurboCalc format.
@{b}CSV (Comma Separated Values)@{ub}
The CSV format corresponds basically to a pure text format, where the single cell contents are saved line by line as text separated by a certain character (separator).
This separator may be a comma, semicolon, tab or blank character (you will find the different options for the separator in the TurboCalc import/export menus).
This format is suitable for a "simple" data transfer with other spreadsheet applications, text processing programs, or databases (e.g. to export addresses for a circular).
But note that no formatting information or formulas can be exported with this format, for it is limited to simple values and texts.
@{b}SYLK (Symbolic Link Format)@{ub}
This is a very common format for data transfer on IBM compatible computers - with the help of SYLK you can exchange data with the leading spreadsheet programs: MS-EXCEL or Lotus 123.
This format saves formulas as well as some formatting instructions.
With a few restrictions, you can import and export entire sheets.
@{b}Note:@{ub} This format should remove any obstacles to the data exchange with MS-DOS programs (especially MS-EXCEL).
@{b}Attention:@{ub} The SYLK format is not the standard saving format of EXCEL.
However, TurboCalc uses the SYLK format, which is, according to Microsoft and others, the exchange format on PC machines.
The following steps describe the saving and loading using the SYLK format of EXCEL and TurboCalc:
@{b}Loading of a SYLK-Sheet in EXCEL:@{ub}
Select the menu item <File-Open>. Here you will find the option >Fileformat< (bottom left), which offers, among others, the desired SYLK format.
Select SYLK and proceed with loading as usual.
@{b}Saving of a SYLK-Sheet in EXCEL:@{ub}
Select the menu item <File-Save as>. Here you will find the option >Fileformat< (bottom left), which offers, among others, the desired SYLK format.
Select SYLK and specify the correct file name (with the extension ".SLK", if possible).
@{b}Loading of a SYLK-Sheet in TurboCalc:@{ub}
Select the menu item <Project-Import from-SYLK>. Specify the correct file name in the displayed file-requester.
@{b}Saving of a SYLK-Sheet in TurboCalc:@{ub}
Select the menu item <Project-Export to-SYLK>. Specify the correct file name in the displayed file-requester (with the extension ".SLK", if possible).
@{b}ProCalc@{ub}
This format can be used for import purposes only.
The Amiga spreadsheet program ProCalc uses this format which allows to save all formatting information together with this data and formulas.
Unfortunately, most of the saved data is stored in a different, non-TurboCalc-compatible format, so that only a part of the data and formulas can be transferred to TurboCalc.
@ENDNODE
@NODE ExportofSheets "Export of Sheets"
@{b}Export of Sheets@{ub}

If you have created a sheet with the help of TurboCalc and want to integrate it (or part of it) in another application (mainly text processing programs), there are several ways to do that:
*	<@{b}Project-Export to-CSV>@{ub}. Here the desired data will be saved under the specified file name in the CSV format. The CSV format (Comma Separated Values) saves - as expressed by its name - the texts and values line by line and separated by commas (or by other separators like tabs or semicolons).
*	<@{b}Edit-Clipboard-Copy>@{ub}. Here, texts and values will also be saved by separating them by a certain character (mostly by a tab), but they will not be saved in a file but in the clipboard - from where the other programs can be paste. Thus the clipboard saves you from taking the roundabout way via a file, simplifying operations.
*	@{"<Project-Print>" link Menu.guide/Print}  and from there @{b}>File<@{ub}. By this option the selected area will not be saved as text but the printout will be saved as IFF-graphic (either in a file or in the clipboard).
@{b}Note:@{ub} In order to be able to save a graphic with @{"<Project-Print>" link Menu.guide/Print}  and then @{b}<File>@{ub}, the printing mode @{b}"graphic"@{ub} has to be selected in @{b}<Format-Print-Layout>@{ub}.
The first two methods only save texts and figures, but no format. Thus they are mainly suitable for the exchange of pure data, the sheet will then have to be reedited in the target application. The third method saves the sheet as IFF-graphic in a project. All colors, formattings and objects will appear. But it is not possible to edit the data or formatting (only the graphic can be reedited with a paint program). The target application must be able to import IFF-graphics.
@{b}Clipboard@{ub}
The last two instructions (optionally) use the clipboard. This constitutes a "place", in which the data of application programs can be placed and also read. The format (text or graphic) is standardized and an exchange of data should be possible without any problems if the target application has "clipboard support". In this case the clipboard is the preferred methof to the roundabout means of a temporary file, because it will be easier, quicker and less complex.
@ENDNODE
@NODE ExternalFileRequester "External File-Requester"
@{b}External File-Requester@{ub}

Instead of binding the Asl-File-Requester which is normally used, other requesters can also be bound with the help of TurboCalc-Libraries (see further below). At present, a module is at your disposal which allows the usage of the "reqtools"-File-Requester. For this the file "filerq.tclib" will be needed (for details see below).
Generally, TurboCalc determines the file-requester that is to be used by testing the possibilities listed below, one after another. The first available requester will then be used. By that the desired file-requester can be determined individually.
*	filerqx.tclib (external TCLib)
*	Asl-file-requester (internal)
*	filereq.tclib (external TCLib)
*	filerq1.tclib (external TCLib)
*	String-Gadget (only in case of emergency) (internal)
The following TCLibs are provided:
filerq.tclib	The interface to the "reqtools"-file-requester.
filereq1.tclib	very simple file-requester, only in case of emergency (if no other file requester is available).
@{b}Note:@{ub} The TCLib concept (see further below) allows for the creation or binding of other external file-requesters. They will - if necessary - be added to TurboCalc and are available as PD.
In this configuration, an attempt will be made to open the Asl-file requester. If this is not possible (e.g. with Kickstart 1.3), the "reqtools"-file-requester will be called. If this is also not possible, then the simple file-requester will be used.
If you rename the filereq.tclib in filereqx.tclib, the "reqtools"-file-requester will be preferred.
@{b}"reqtools"-file-requester@{ub}
The "reqtools"-file-requester is part of the reqtools.library of Nico François and is available as Shareware on many PD sources (e.g. Fish). In order to use this requester from TurboCalc, "filereq.tclib" will be needed as the interface. This file must exist either in the LIBS:-directory or in the TurboCalc directory (or in the subdirectory "tclib" of one of the two directories).
@{b}Note:@{ub} These TCLibs exist in the subdirectory "tclibs" of the "TurboCalc" directory of the original diskette. If you, as recommended,  have copied the complete directory (or moved it from the workbench), this subdirectory will have been copied and the "reqtools"-file-requester will be called automatically if the Asl-requester cannot be opened.
@ENDNODE
@NODE SheetEncrypting "Sheet Encrypting"
@{b}Sheet Encrypting@{ub}

If you have created a sheet with personal data and you want to protect these data from access by strangers, TurboCalc offers you two different methods (in @{"<Options-Protection Flags>" link Menu.guide/ProtectionFlags} ):
1. Opening only possible with a password.
2. Encrypting when saving.
The first method is the easier one and thus also the quicker one and allows the specification of two passwords (one only with the right to read it and another with all rights). But because the sheet will be saved normally and only the two (encrypted) passwords are saved in the sheet, a reading without the password will be possible (given sufficient knowledge of TurboCalc and its file format).
The encrypting (the second method) does not offer the double password option, but offers a much higher protection, for the complete file (except the TurboCalc file label) will be encrypted and the password itself will not be saved with it. A deciphering without knowledge of the password will be almost impossible even for experts, for further details see below.
For "normal" data the security given by the first method should be sufficient. It will avoid prying eyes (when trying to open the sheet normally), if strangers have access to your computer for a short time.
But if other persons have a quite easy access to the sheet (if it lies in the network or if it can easily be copied), you should use the encryption method.
In the following you will find some hints and remarks concerning encryption:
*	The TurboCalc-library (TCLib) "crypt.tclib" will be needed for encrypting (for further details see under "TurboCalc-Libs" in this chapter).
*	The encrypting procedure uses an algorithm requiring intense computing (also see below) - loading/saving can take a bit longer. (With a 20 KByte-TurboCalc-Project on a "slow" A500: 25 sec, on a "normal" A1200 only 7 sec).
*	Once you have activated @{b}"Encrypting"@{ub}, this option will still be active after loading the next sheet (with the same password).
*	In case you enter the wrong password, this will probably be pointed out to you and you will probably be asked to enter the password correctly. But because the password is not saved within the sheet, this cannot be determined accurately. If necessary, it will be tried to load the sheet with a wrong password. A load error will be the result. In extreme cases problems can arise with TurboCalc.
@{b}The Password:@{ub}
*	Use a rather long password (e.g. a complete sentence), this will improve security.
*	The best thing to do is to use a separate password for every sheet, although this will cause many problems when you have many sheets. Here, it would be more useful to use the same password several times instead of writing them down somewhere).
In case of having forgotten the password, the projects will be irretrievably lost.
@{b}Operation:@{ub}
Here is a short description of the encryption method for interested readers. This paragraph can be skipped without otherwise.
1. The password entered will be converted to a 128-Bit-Password using MD5 (see remark).
	@{b}Remark:@{ub} The "RSA Data Security, Inc. MD5 Message-Digest Algorithm" Copyright (C) 1990, RSA Data Security, Inc. is used.
	RSA Data Security, Inc. makes no representations concerning either the merchantability of this software or the suitability of this software for any particular purpose. It is provided "as is" without express or implied warranty of any kind.
2. With this password every 64 Bits will be en- or decrypted with a 32 round block cipher.
3. A "primitive" checksum will be calculated for the password, which is saved in the sheet (out of this checksum neither the password nor the MD5 password can be determined). It is only used to check whether the password entered (before loading) is correct.
	As the checksum only stores a small part of the password information (to protect the security of the encryption), it is not possible to determine the correctness of a password with complete certainty. An incorrect password can possibly yield the same checksum - as there are a large number of possibilities, But simple typing errors will be identified.)
@{b}Note:@{ub} At present, the encryption algorithm constitutes a quite secure cryptographic method for encryption. But this implies no guarantee for the security of the encrypted data.
@ENDNODE
@NODE Configuration "Configuration"
@{b}Configuration@{ub}

In many aspects TurboCalc can be adjusted to your own wishes and requirements. These settings can then be maintained with @{b}<Options-Config Save>@{ub} for the next start of TurboCalc. The interested reader will find some additional remarks in the following: 
TurboCalc saves the configuration as "S:TurboCalc.CFG". When loading TurboCalc, this file will always be searched for and the corresponding settings will be adopted. Furthermore, this sheet will be read in as preference for every @{"<Project-New>" link Menu.guide/New} . Because the configuration file will be saved in the normal TurboCalc sheet format, you can save your preference sheet (with cell contents, names, formattings ...) under this name. Then the desired preference will always be opened when starting TurboCalc or executing @{"<Project-New>" link Menu.guide/New} .
@ENDNODE
@NODE TurboCalcLibraries "TurboCalc Libraries"
@{b}TurboCalc Libraries@{ub}

With TurboCalc V3.0 the TurboCalc Libraries concept was introduced (often shortened as TCLibs). These libraries are external files that expand the TurboCalc functions.
At present TCLibs exist for the following areas:
*	file-requester
*	object types
*	encryption algorithms
*	external functions (see TCFKT)
*	external macro instructions (see TCMACRO)
The TCLibs offer the following advantages as compared to fixed integrated modules:
*	You will only have to load the libraries you really need. This method saves memory space.
*	The libraries can be expanded independently of TurboCalc. In addition to this, simple new libraries can be created.
*	As the interface to TurboCalc is documented, new libraries can also be created by users who want to call a certain file-requester or require an object type.
*	Newly created or expanded libraries can be declared as Public Domain and so be distributed conveniently and quickly without violating the Copyright of TurboCalc.
@{b}Remark:@{ub} The libraries which are part of the original TurboCalc are, if not noted otherwise, not Public Domain and therefore cannot be copied freely. If one or more files are to be modified or new TCLibs are created, the new versions will probably be available via the various networks and support.
@{b}Integration of TurboCalc Libs@{ub}
For TurboCalc to be able to find and integrate the TCLibs, they must be in one of the following directories:
*	LIBS:
*	LIBS:tclibs
*	PROGDIR: (directory in which TurboCalc exists)
*	PROGDIR:tclibs (in the subdirectory "tclibs")
Normally, the files can be found in the last drawer (at least on the original diskette if the complete "TurboCalc" directory was copied).
Depending on their task, the TCLibs must have special names (e.g. filerq.tclib for the file-requester, crypt.tclib for the encryption or object_xxx.txlib for external object types). You will find further details in the respective paragraphs as well as in the description of external libraries.
@{b}Programming TurboCalc Libs@{ub}
If you want to program new TurboCalc libraries, you should have good programming experience (best C or Assembler). Apart from that nothing will stand in your way. You will find the information about the architecture of TCLibs as well as the needed routines in the directory "Programmer" on the TurboCalc diskette.
If you program a TCLib, it would be nice to make it available to all other TurboCalc users (e.g. as PD or Shareware). If you want, you can send us the corresponding files (preferably with instructions) so that we can integrate them - under observance of your copyright and mentioning your name - into the next TurboCalc version and/or make them available to the registered users. But apart from that (if you do not want to publish your TCLib free of charge), it would be nice if you sent us a test copy on approval.

@ENDNODE
@NODE MacroARexxInstructions "Macro/ARexx Instructions"
@{b}Macro/ARexx Instructions@{ub}


Macros and ARexx are very mighty tools allowing to automatize processes, to remotecontrol TurboCalc, or to enlarge it by external routines. Macros are a built in feature of TurboCalc and can be used and programmed very easily. Programmers as well as "Non-Programmers" are able to create macros due to the possibility to record inputs and instructions automatically. In any case you should read the next pages up to @{b}"Macro Recording"@{ub}. More experienced programmers should extend their interest to chapter @{b}"Macro Programming"@{ub}.
ARexx is, starting with the operating system OS2.0, the enclosed @{b}"general programming language"@{ub} by which TurboCalc and a lot of other application programs are controlled and linked. For Kickstart 1.2/1.3 an ARexx version is available, too. For details see @{b}"ARexx-Instructions"@{ub}.

    @{"Macro Instructions" link MacroInstructions}
    @{"ARexx Instructions" link ARexxInstructions}
    @{"Programming" link Programming}
@ENDNODE
@NODE MacroInstructions "Macro Instructions"
@{b}Macro Instructions@{ub}

Macro instructions are built up similar to the normal (calculating) functions but provide an @{b}"active control"@{ub} of TurboCalc. They allow an automatic execution of any action (e.g. marking of a range, sorting, then copying...) and a context sensitive program controlling (e.g. by an inquiry of parameters...).
They are especially suitable for:
*	Repeating routine tasks or working steps, which can be recorded once and then be repeated as often as necessary.
*	Routines that execute complicated data formattings and data changings. In this case, the routines have to be developed only once and can then be called up later at any time.
@{b}The Instructions@{ub}
The macro format is built up similar to the format of the normal formula:
They start with an equals sign that is followed by the macro name (with following brackets) and, if necessary, the parameters separated by semicolons (within the brackets).
Example:
=ALIGNMENT(3;2)
But there are a few differences:
Most macros do not return a value (except REQUEST, INPUT for example - and only, if the instruction is finally executed).
@{b}Displaying@{ub}: In the normal mode the macros are directly displayed instead of the values of the normal formula. (This makes sense as most of the macros do not return a value). To look at the values select @{b}>display values instead of formulas<@{ub} in @{b}<Options-Display>@{ub} (further details can be found there). Macros use this option just in the inversed sense in contrast to standard formulas.
The instructions can be found in the instruction survey, chapter 12; some special macro instructions (mainly for macro control) can be found there, too (under @{b}"Macro Control"@{ub}). This subdivision was necessary as ARexx and TurboCalc's macro language use a mutual instruction set, except the special macro control structures.
@{b}The Macro-Program@{ub}
In principle the macro program consists of several macro instructions, one beneath the other. These instructions are interpreted sequently. More details (only important for programmers) can be found in the chapter @{b}"Macro Programming"@{ub}.
Here, only a short example of how a macro can look like:
=MACRO("testmacro")
=ABOUT()
=RETURN() 
@{b}Description:@{ub}
The first instruction (that should always exist) specifies that the following lines are a macro named "testmacro". The function @{b}"ABOUT"@{ub} displays the about-window (corresponding to <@{b}Project-About>@{ub}). The third and last line says that the end of the macro is reached and the execution should be finished.
@{b}Replaying a Macro@{ub}
Playing (=starting) a macro is very easy. Simply select the menu item <@{b}Macro-Play>@{ub}. A list of all existing macros, which have been defined with @{b}<Command-Define Names>@{ub} or automatically recorded, will appear. A click on the desired name and @{b}>Ok<@{ub} (or simply a double click) starts the respective macro for the current sheet.
@{b}Hint:@{ub} The macros of all existing sheets are shown automatically. If the desired macro is not in list, it might be necessary to load the appropriate (macro-)sheet in advance. On the other hand it is possible that macros are shown which have been originally created for other sheets. If you have chosen the name of the macro meaningfully, you will have no problems to find the right macro.
@{b}Macro-Recording@{ub}
A very simple way to create macros is the macro-recording. Here all inputs and instructions that are executed with the help of the keyboard or mouse, will be recorded and saved as a macro. (Select @{b}<Macro-Record>@{ub} and enter the macro name, see below).
@{b}<Macro-Stop Recording>@{ub} finishes the recording. The macro is now completely created and can be used instantly. Once started, all inputs/instructions will be executed one after the other as recorded.
@{b}The Macro-Recording Window:@{ub}

Here, the following data can be entered:
@{b}Macroname:@{ub} Enter the name under which the macro shall be found later on. Select a meaningful name, so that it is possible to recognize the macro.
If the macro name is missing, the recording will be aborted.
@{b}Write Macro to:@{ub} Here you can select, whether you want to record the macro to the current sheet, or in a new macro work-sheet. TurboCalc offers both recording types (in contrast to other spread-sheet analysis programs).
The recording in the current sheet is suitable if only a few macros shall be saved. In this case, you do not need a separate sheet that has to be saved and loaded together with your current work. If you intend to create a lot of macros or use global macros for more than one sheet, you might prefer to save your macros in an external sheet. Please note that you have to save and load this sheet separately.
@{b}Position:@{ub} Here, you can enter a definite position (the cursor position is preset), where the macro shall be written to. TurboCalc always uses the next new and unoccupied column by default (in the current sheet from column BA on, if this column is not occupied yet).
@{b}Save cursormovements relatively@{ub} determines, whether the cursor positions shall be saved absolutely (e.g. C5) or relatively (e.g. 3 down, 2 left...).
When you have set all parameters, click on @{b}>Ok<@{ub} and the recording will be started (if necessary a new macro sheet is opened). On the screen bar appears a corresponding text indicating that recording is in process (if the bar is not overlaid by a window).
After you have recorded all necessary steps, you can stop the recording with the menu item @{b}<Macro-Stop Recording>@{ub}. The message on the screen bar disappears.
@{b}Macro Programming@{ub}
This chapter directs mainly to the experienced programmer. If you are not so advanced you can skip this chapter. Try to settle in to the work with TurboCalc and afterwards read this chapter again.
@{b}General conventions:@{ub} Every macro should start with the =MACRO(name)-instruction and end with a =RETURN().
RETURN() stops the macro execution (or the current subroutine, see CALL). In between you find the real macro instructions, which can be separated by blank lines or comment lines (text or numbers). Please note that there are not more than 8 lines allowed between two single instructions. After the eighth non-macro line an automatic RETURN() will be executed. This avoids a wrong program execution in case of an accidentally forgotten RETURN().
You will find the macro instructions and the appropriate syntax in the surveys and descriptions later in this book. It is advisable to have a closer look at the enclosed demonstration macros. 
@{b}Additionally a few hints:@{ub}
@{b}Cell references:@{ub} Cell references (e.g. C5 or A1:F20) normally refer to the sheet from which the macro was started or which is active at the moment. Only seldom they refer to the macro sheet itself (except the macro is located in the current sheet). Please pay attention to this while using cell references. The only exception is the specification of a jump address using GOTO, IFGOTO and CALL (for a jump to another place within the same macro should be executed). If you want to address another sheet, use the AT-instruction (or @). If you want to address the macro sheet directly you may use the abbreviation: #reference. (Simply put a double cross in front of the cell reference to refer to a macro cell, e.g. if you want to read out the result of a REQUEST or INPUT).
@{b}Speeding up Macros@{ub}
TurboCalc possesses a macro instruction that can switch off the recalculation and the reconstruction of the screen: REFRESH(0).
This allows an execution of the macro @{b}"in the background"@{ub}. The time for the construction of the screen can thus be saved. This is a very useful to avoid an extensive loss of time when working with more complex macros.
Please note that during this time, the user will (nearly) percieve no change on the screen. Let him know (by a message) or reconstruct the screen from time to time, so that he can recognize that the macro is still working. After finishing your work, turn on the screen construction again (REFRESH(1)) and recalculate (RECALC(1)) the sheet. Finally, call REFRESH(2) to bring the changed sheet to the screen. You will find an example in the description of the instruction REFRESH.
@{b}Adding Macros@{ub}
If you have created a new macro you surely want to add it to the macro list, so that it can be started with a double click in @{b}<Macro-Play>@{ub}. Therefore click on the first cell of the macro and call the menu item @{b}<Command-Define Names>@{ub}.
@{b}>Contents<@{ub} contains the current cell and if the macro starts with "=MACRO(macroname)", the macroname can already be found in the field @{b}>Name<@{ub}. Otherwise, please enter the correct name. Then change the type to >Macro< (or <right Amiga>+<M>) (this is important, because otherwise this entry will not appear in the requester of @{b}<Macro-Play>@{ub}!) and simply click on @{b}>Ok<@{ub} (for more details about defining names, see chapter @{b}"Names"@{ub}.)
@{b}Debugging Macros@{ub}
If you have problems with your macro, please use the TurboCalc function STEP that activates the step-by-step interpretation mode. This mode displays every step before it is done and thus allows a singe step execution of the macro ("tracing"). With this method the structure of the respective routine can be visualized and a possible mistake can be easily localized.
The macro instruction STEP() or STEP(1) activates this mode. STEP(0) quits this mode and resumes the macro in the normal way.
@{b}Hint:@{ub} Please note that you leave blank lines between the single "routines" while creating the macro (these lines will be ignored during execution, if there are less than 8 beneath the other). This establishes a sort of "division" and simplifies the survey of larger macros. Furthermore you can insert the functions "=STEP" and "STEP(0)" above (and below) the macro that should be checked to activate/stop the single step mode. Like that, you can limit the tracing mode to only a section of the macro. When the macro works as intended, you can remove the lines.
@{b}Hint:@{ub} These functions can also be used to create a little break for a program check between two routines. (E.g. to check whether the first part is working correctly.)
For that insert the instructions "STEP()" and "STEP(0)" one beneath the other. (These instructions switch on and off the step-by-step mode after the next instruction and interpreter message.) In the meantime you can check, whether this part of the macro worked as desired.
@{b}Automatic Macros@{ub}
TurboCalc allows an automatic start of macros directly after loading a file. With this option, initializations can be carried out and further files can be loaded. If it is a pure macro sheet (and not a macro within a work-sheet), the correct data sheet can be loaded from this. The only thing you have to do is to open the macro. All the rest will be done by TurboCalc.
The creation of such a macro is very simple: Name one of your macros @{b}"AUTOMATIC"@{ub} and it will be executed immediately after starting TurboCalc.
@{b}Hint:@{ub} If you want to edit the file that contains the "automatic"-macro, it might be a handicap that the macro is executed right at the beginning. Here, the following trick takes remedial action: Move to an empty sheet with @{"<Project-New>" link Menu.guide/New}  - the cursor will be located in cell A1 automatically. Now select menu item @{b}<Edit-Insert Data-TurboCalc>@{ub} and then insert the sheet you want to load into the empty sheet. Everything will be loaded now, but the macro stays inactive.
@{b}Hint:@{ub} During the first @{"<Project-Save>" link Menu.guide/Save}  the file name has to be reentered, because it remains preserved during opening only, but not during inserting!
@{b}Deleting Macros@{ub}
The deletion of a macro requires two steps:
At first the "name" of the macro must be deleted. To do this, select the menu item @{b}<Command-Define Names>@{ub}, then choose the macro name and click on @{b}>Delete<@{ub}. (For more details see chapter @{b}"Names"@{ub}). (This is not absolutely necessary but otherwise the macro still appears in the list of @{b}<Macro-Play>@{ub}, even if it is no longer existing).
Then the range where the macro instructions were located can be deleted or overwritten.
@{b}Executing Macros when loading TurboCalc@{ub}
TurboCalc provides the possibility to run a special macro-start file right after the start. This file is named TurboCalc.STD and is searched in succession in the current directory, in the directory "S:", as well as in the directory in which TurboCalc is located. If the file is found, it will be executed immediately.
This file consists of macro instructions ordered line by line (either in the macro or in ARexx syntax - both can be used alternately). Such files can also be started with the macro instruction START. This file is very suitable to define the current screen mode, the menus, the colors and for example to load a standard file.
This is exactly the purpose of the internal script file that is executed if TurboCalc cannot find @{b}"TurboCalc.STD"@{ub}. This script file is copied to your original disk as well (named "TurboCalc.STD2") and you can use it as a pattern for your own scripts. Just modify it at will and rename it to TurboCalc.STD to declare it as new standard-script
@{b}Hint:@{ub} If you create an own script file you also have to define the menus by yourself. To add or change menus, refer to the menu instructions survey, especially NEWMENU (with a short example).
@{b}Hint:@{ub} If you like to execute the standard-script file by your normal script file, simply add the line "START $$" or "START("$$")".
Example:
You want to leave the settings unchanged but wish to open the file "dh0:TurboCalc/standard.TCD" after initialization. In this case, enter the following script:
START $$
LOAD "dh0:TurboCalc/Standard.tcd"
@ENDNODE
@NODE ARexxInstructions "ARexx Instructions"
@{b}ARexx Instructions@{ub}

TurboCalc possesses, like all modern programs, an ARexx port and allows the remote control via ARexx.
For details please refer to your ARexx-manual (which should be part of your computer's documentation from OS2.0 on). A few tips are also given in the enclosed ARexx demonstration programs.
The ARexx port-name of TurboCalc is TCALC; it can be addressed with the following small demo program.
/*ARexx file must start with a comment */
ADDRESS TCALC
"ABOUT"
TurboCalc has to be started and ARexx has to be initialized (with Rexxmast) before this operation. Afterwards call @{b}"rx filename"@{ub}. (This program simply shows the about-requester.) You will find the description of the used instructions in chapter "Instruction Survey".
Apart from a few exceptions both instruction sets of the macro language and ARexx are the same. Thus, the following instruction survey is valid for both alternatives. The divergences of Arexx can be found in chapter @{b}"Special ARexx-Instructions"@{ub}.
@{b}Hint:@{ub} When using ARexx instructions, the parameters have to be entered one after the other separated by spaces in contrast to the macro instructions (where they are separated by semicolons!)
PUT "=A1+A2" A3
The parameters (and the instructions) can be put in quotation marks (some must be to avoid conflicts with ARexx, see ARexx-manual).
@{b}Error messages@{ub}: All instructions return an error message, which can be requested by RC. (If necessary instruct ARexx to stop only for error messages of 100 or higher with "OPTIONS FAILAT 100". If the instruction was successful, 0 is returned. Further error messages and their values can be found in the table "@{b}Error Messages@{ub}" in the appendix.
@ENDNODE
@NODE Programming "Programming"
@{b}Programming@{ub}

In the following you will find some interesting topics concerning macro programming showing and explaining some very important instructions. You will find a more detailed explanation of all macro instructions in the corresponding chapter of this manual.
@{b}Variables@{ub}
It is often necessary to buffer and calculate values for the creation of complex macros. There are two possibilities:
First, cells (on the macro sheet) can be used. Give the cells a name with @{b}<Command-Define Names>@{ub} and then they can easily be called.
@{b}Note:@{ub} Place a "#" in front of the name (when you use it and not when you define it). This will guarantee that the cell will be read from the macro work-sheet. Otherwise it is possible that the cell content of another (active) work-sheet will be used.
@{b}Note:@{ub} If you use this method you should deactivate (in @{"<Options-Sheet>" link Menu.guide/Sheet} ) the automatic calculation in the macro work-sheet, because otherwise the sheet would be calculated at every new definition. If a recalculation is necessary for a certain definition, use RECALCULATE().

A further, quite easy method to buffer values are the variables. These will be defined with VARIABLE and can then be accessed as you want to.

Example 1: Cells
Counter was defined as cell F10 of the macro sheet.
A5	=PUT(10;#counter)	writes 10 into cell F10
	...
A10	=PUT(#counter+1;#counter)
A11	=IFGOTO(#counter<20;A5)

Example 2: Variable
A5	=VARIABLE("counter";10)
	...
A10	=VARIABLE("counter";counter+1)
A11	=IFGOTO(counter<20;A5)
As you can see, the two methods are similar to each other, even if the syntax of PUT and VARIABLE are different from each other (sequence, also important: Put - in the variable method - the name of the variable in quotation marks).
@{b}Loops@{ub}
If you want to create - as in the two examples before - a loop, a special construct exists for this purpose. With this construct you can save much time and work concerning these often used program parts and the program can be made much clearer.
Example:
A5	=FOR("counter",10;20;1)
	...
A10	=NEXT()
The first line of the loop holds the instruction FOR with the parameters variable name, initial value, end value and step size. The last instruction NEXT finishes the loop, increments the variable name by the step size and returns to the instruction after FOR, as long as the variable name is smaller than the end value (at a step size > 0, you will find further details concerning this instruction in the corresponding macro description).
In our case, the counter will first be set at 10 and then step by step be raised to 21, the value with which the loop will be quit (the loop will be run the last time with the value 20, then the value will be raised and the instruction after NEXT will be executed).
Another advantage of this method as compared to the two methods described above is the free relocatability: Because it is not necessary here to indicate a direct GOTO address (as A5 before), the exact position of the program fragment inside the macro is not important.
@{b}Block Loops@{ub}
Apart from this normal loop, TurboCalc provides another kind of loop: FORRANGE. With this method a loop can be easily and clearly executed for all cells in a block:

Example
A5	=FORRANGE("position",D1:F10)
A6	=WRITE(position+1;position)
A7	=NEXT()

This example increases in a rather simple and vivid way, all cell contents of the range D1:F10 and thus illustrates the possibilities of this instruction (for details see FORRANGE in the instruction description).
@{b}Conditional Programming@{ub}
Besides the previously-used IFGOTO for conditional branching, TurboCalc also makes a structured MIF instruction available. With this instruction you can react to certain conditions easily without executing an explicit GOTO instruction. This will increase clarity and security, and allows for simple relocation of the routine.

=MIF(condition)
	...condition met
=MELSE()
	...condition not met
=MENDIF()

The MELSE branch can certainly be omitted, in addition to that it is possible to nest these constructs without any problems.
@{b}Error Handling@{ub}
If larger macro programs are developed - especially for other people -, it will be very important to make sure that things run smoothly. Any TurboCalc error message appearing will most probably confront the user as an insoluble problem. Here a message like "Wrong number, please enter again" would be much more informative and user-friendly.
Therefore, check - if possible - all user inputs before these are used.
A1	=INPUT("test";"please enter number";F1)
A2	=IFGOTO(NOT(ISNUMBER(F1));A1)

Moreover, some TurboCalc instructions (e.g. boot/memory instructions) provide a return value (mostly TRUE/FALSE - which can be read out of the cell holding the macro instruction). Check this value before you continue execution.
A1	=LOAD("dh0:TurboCalc/example1.TCD")
A2	=IFGOTO(NOT(#A1);error routine)

Finally you can define a special error routine (with ONERROR, further information in the macro instruction description), which will be executed in the case of an error and in which the error cause can be checked with LASTERROR and appropriate action taken.

@ENDNODE
@NODE TableofContents "Table of Contents"
@{b}Table of Contents@{ub}

@{"Input" link Input}
    @{"Select Mode" link SelectMode}
    @{"Input Mode" link InputMode}
    @{"Editing Mode" link EditingMode}
    @{"Input Formats" link InputFormats}
    @{"Drag and Drop" link DragandDrop}
    @{"Status Line" link StatusLine}
@{"Printing" link Printing}
    @{"Settings" link Settings}
    @{"Pagination" link Pagination}
    @{"Preview" link Preview}
    @{"Printing Sheets" link PrintingSheets}
    @{"Tricks to Improve your Printouts" link TrickstoImproveyourPrintouts}
@{"Charts" link Charts}
    @{"Creating Charts" link CreatingCharts}
    @{"Changing Parameters" link ChangingParameters}
    @{"Printing Charts" link PrintingCharts}
    @{"Saving as IFF" link SavingasIFF}
    @{"Preference Form" link PreferenceForm}
    @{"Chart Types" link ChartTypes}
@{"Objects" link Objects}
    @{"Creating Objects" link CreatingObjects}
    @{"Object-Editing" link ObjectEditing}
    @{"Object Types" link ObjectTypes}
@{"Database" link Database}
    @{"Definition of a Database Range" link DefinitionofaDatabaseRange}
    @{"The Search Criteria" link TheSearchCriteria}
    @{"Finding Data Records" link FindingDataRecords}
    @{"Extracting Data Records" link ExtractingDataRecords}
    @{"Deleting Data Records" link DeletingDataRecords}
    @{"Sorting Data Records" link SortingDataRecords}
    @{"Database Mask" link DatabaseMask}
@{"Names" link Names}
    @{"Setting Names" link SettingNames}
    @{"Changing Names" link ChangingNames}
    @{"Deleting Names" link DeletingNames}
@{"Projects" link Projects}
    @{"SmartOpen" link SmartOpen}
    @{"Automatic Opening when Starting TurboCalc" link AutomaticOpeningwhenStartingTurboCalc}
    @{"Automatic Saving" link AutomaticSaving}
    @{"Foreign Formats" link ForeignFormats}
    @{"Export of Sheets" link ExportofSheets}
    @{"External File-Requester" link ExternalFileRequester}
    @{"Sheet Encrypting" link SheetEncrypting}
    @{"Configuration" link Configuration}
    @{"TurboCalc Libraries" link TurboCalcLibraries}
@{"Macro/ARexx Instructions" link MacroARexxInstructions}
    @{"Macro Instructions" link MacroInstructions}
    @{"ARexx Instructions" link ARexxInstructions}
    @{"Programming" link Programming}
@ENDNODE
@NODE INDEXNODE "Index"
@{"ARexx Instructions" link "ARexxInstructions"}
@{"Automatic Opening when Starting TurboCalc" link "AutomaticOpeningwhenStartingTurboCalc"}
@{"Automatic Saving" link "AutomaticSaving"}
@{"Changing Names" link "ChangingNames"}
@{"Changing Parameters" link "ChangingParameters"}
@{"Chart Types" link "ChartTypes"}
@{"Charts" link "Charts"}
@{"Configuration" link "Configuration"}
@{"Creating Charts" link "CreatingCharts"}
@{"Creating Objects" link "CreatingObjects"}
@{"Database Mask" link "DatabaseMask"}
@{"Database" link "Database"}
@{"Definition of a Database Range" link "DefinitionofaDatabaseRange"}
@{"Deleting Data Records" link "DeletingDataRecords"}
@{"Deleting Names" link "DeletingNames"}
@{"Drag and Drop" link "DragandDrop"}
@{"Editing Mode" link "EditingMode"}
@{"Export of Sheets" link "ExportofSheets"}
@{"External File-Requester" link "ExternalFileRequester"}
@{"Extracting Data Records" link "ExtractingDataRecords"}
@{"Finding Data Records" link "FindingDataRecords"}
@{"Foreign Formats" link "ForeignFormats"}
@{"Input Formats" link "InputFormats"}
@{"Input Mode" link "InputMode"}
@{"Input" link "Input"}
@{"Macro Instructions" link "MacroInstructions"}
@{"Macro/ARexx Instructions" link "MacroARexxInstructions"}
@{"Names" link "Names"}
@{"Object Types" link "ObjectTypes"}
@{"Object-Editing" link "ObjectEditing"}
@{"Objects" link "Objects"}
@{"Pagination" link "Pagination"}
@{"Preference Form" link "PreferenceForm"}
@{"Preview" link "Preview"}
@{"Printing Charts" link "PrintingCharts"}
@{"Printing Sheets" link "PrintingSheets"}
@{"Printing" link "Printing"}
@{"Programming" link "Programming"}
@{"Projects" link "Projects"}
@{"Saving as IFF" link "SavingasIFF"}
@{"Select Mode" link "SelectMode"}
@{"Setting Names" link "SettingNames"}
@{"Settings" link "Settings"}
@{"Sheet Encrypting" link "SheetEncrypting"}
@{"SmartOpen" link "SmartOpen"}
@{"Sorting Data Records" link "SortingDataRecords"}
@{"Status Line" link "StatusLine"}
@{"Table of Contents" link "TableofContents"}
@{"The Search Criteria" link "TheSearchCriteria"}
@{"Tricks to Improve your Printouts" link "TrickstoImproveyourPrintouts"}
@{"TurboCalc by Michael Friedrich" link "MAIN"}
@{"TurboCalc Libraries" link "TurboCalcLibraries"}
@endnode

