TM/1 HELP FACILITY

<100>  BASICS 
<200>  COMMANDS 
<300>  MACROS
<400>  FUNCTIONS

The TM/1 help facility is like a book consisting of pages of information. A
page may contain explanatory text or an index into the explanatory text. This
first page contains both. The top three entries point to more detailed index
pages. To go to those pages, position to the appropriate line using the CuUp
and CuDn arrows, and then press Enter. Once you see the detailed index page,
you may position to the appropriate line and press Enter to go to the "next
level down" until you get to the explanatory text you require.

From anywhere in the help book, you may return to this page by pressing the
Home key. To go back to TM/1 press the Esc key.

When looking at a page of the help book, you may look at the next page by
pressing PgDn or to the previous page by pressing PgUp.
100    BASICS
  <110>   THE DATA DISPLAY SCREEN
  <130>   WORKING WITH FILES
  <140>   EXECUTING COMMANDS
  <150>   CREATING DIMENSIONS AND TABLES
  <160>   WRITING FORMULAS
110    THE DATA DISPLAY SCREEN
  <111>  MOVING THE CELL CURSOR
  <112>  USING THE <END> KEY
  <113>  USING THE SCROLL LOCK KEY
  <114>  TYPES OF CELLS
  <115>  STRING CELLS
  <116>  NUMERIC CELLS
  <117>  CHANGING/EDITING CELLS
  <118>  ENTERING NUMERIC DATA WITH THE NUMERIC KEYPAD
130    WORKING WITH FILES
  <131>  NAMING CONVENTIONS
  <132>  ASSIGNING DIRECTORIES AND DRIVES
  <133>  TYPES OF FILES
140    EXECUTING COMMANDS
  <141>  CHOOSING COMMANDS
  <142>  EDITING COMMAND PARAMETERS
  <143>  TYPES OF COMMAND PARAMETERS
  <144>  BLOCKS
  <145>  USING LABELS IN A COMMAND
150    CREATING DIMENSIONS AND TABLES
  <151>  DIMENSIONS
  <152>  ELEMENT NAMES
  <153>  TABLES
  <154>  CREATING DIMENSIONS
  <155>  CALCULATED ELEMENTS
  <156>  CALCULATED ELEMENTS: ADDITIONAL CONSIDERATIONS
  <157>  CREATING A TABLE
  <158>  ADDING AND DELETING ELEMENTS IN A DIMENSION
  <159>  STRING ELEMENTS
  <15A>  VIRTUAL STORAGE OF TABLES
160    WRITING FORMULAS
  <161>  NUMERIC FORMULAS
  <162>  REFERENCES TO THE WORKSHEET
  <163>  RELATIVE AND ABSOLUTE REFERENCES
  <164>  ALTERNATIVE REPRESENTATION OF CELL REFERENCES
  <165>  EFFECT OF MOVING CELLS
  <166>  ORDER OF CALCULATIONS
  <167>  STRING EXPRESSIONS
  <168>  FUNCTIONS
  <169>  COMPARISON AND LOGICAL OPERATORS
  <16A>  THE IF FUNCTION 
  <16B>  UNDEFINED NUMBER VALUES
  <16C>  STRING FORMULAS
  <16D>  TABLE  REFERENCES
  <16E>  CHANGING TABLE ELEMENTS FROM THE WORKSHEET
  <16F>  STORING CALCULATED VALUES IN THE DATA BASE
111   MOVING THE CELL CURSOR
  You can move the cell cursor by pressing the cursor or "arrow keys" in the
numeric keypad.
  The <PgUp> and <PgDn> keys will scroll the screen up or down by about half a
screen.  If you use the <Ctrl> key with the page keys, the screen will be
scrolled by a full screen.  To move the cell cursor one full page up or down
press the <Ctrl> key (left of the "A") and while keeping it pressed, press the
page up or page down keys: <Ctrl><PgDn> or <Ctrl><PgUp>.
  Pressing the <Ctrl> key along with the <> or <> keys will scroll one full
screen to the right or the left.
  The <Enter> key operates as a carriage return.  After pressing <Enter>, the
cell cursor is moved to the next line, at the first column of the current
display.
  The <Home> key will move the cell cursor from its current position to the top
left hand corner of the array, cell [1,1].

112   USING THE <END> KEY
The <End> key is used to move the cell cursor in "leaps" around blocks of non
blank cells.  In this discussion, a block of non blank cells is a set of
consecutive cells along a line or column that do not contain blanks.  If you
press the <End> key, immediately followed by an arrow key, the cursor will be
moved in the direction of the arrow according to the following rules.
  - If the active cell is blank, the cell cursor will be moved to the first non
blank cell found, or to the end of the array.
  - If the active cell is not blank, then the cell cursor will move to the end
of the current block of non blank cells.  If the cell cursor is on the last non
blank cell in the block, it will move the the next non blank cell, or the end of
the array.
If you press the <End> key immediately followed by the <PgUp> key, the cell
cursor will be moved to the top of the array irrespective of blank or non blank
cells..  Similarly, the <End> <PgDn> combination will move the cell cursor to
the bottom of the array.
  Pressing <End> followed by <Ctrl> <> or <Ctrl> <> will move the cell cursor
to the extreme right or left of the array, respectively.
  Note: while displaying slices of tables,  TM/1 will treat all cells as non
blank.  Thus the <End> key will simply move the cell cursor to the end of the
slice.

113   USING THE SCROLL LOCK KEY
Whenever the <Scroll Lock> key is on, the cursor movement keys will cause the
screen to scroll "around" the cursor, regardless of where on the screen the cell
cursor is.  The cursor remains stationary.  This is useful for adjusting the
position of the screen without having to move the cell cursor all the way to the
edge of the screen.  The <Scroll Lock>  key is a toggle key.  It has only two
settings: on and off.  When the <Scroll Lock>  key is on, an "S" will be shown
on the upper left hand corner of the screen as an indicator.

114   TYPES OF CELLS
The data display screen is also used to enter data into cells. A cell may
contain strings of characters or numbers.
  Cells may be simple, or calculated.  A simple cell contains a string or
numeric data item.  A calculated cell is the result of evaluating a formula.
  Line 23 displays the location of the active cell followed by the type (N for
number cells, S for string cells and C for calculated cells), followed by the
contents of the cell, in the case of simple cells, or the formula, in the case
of calculated cells.

115   STRING CELLS
To put a string into a cell you simply move the cell cursor to that cell and
type in the characters you want to enter.
  Simple string cells will appear in the worksheet exactly as they are stored in
the cell.  If the string is longer than the width of the cell, the extra
characters will "spill" and be shown in subsequent blank cells.  Note that for
reasons of speed, TM/1 will not show the "spill" part of long strings while
scrolling.  However, the complete string will be shown when the screen is
"re-painted", which occurs as a result of pressing <PgUp>, <PgDn>, <Ctrl> <> or
<Ctrl> <> .
  Blank cells are assumed to be of type string.  The maximum length of a string
cell is 72 characters.

116   NUMERIC CELLS
Numeric values in TM/1 are stored as double precision floating point numbers
that give you over 15 digits of precision.  They can be as large as 10 to the
306th power.
  To enter a number in a cell, position the cell cursor in an empty cell, enter
the number , e.g., "345.6", and move the cursor to another cell.  TM/1 will
display it according to the numeric format assigned to the cell.  Initially, the
format of all cells is set to show whole numbers rounded to the nearest digit.
As a result, the number typed in will be shown as "346" when displayed.  Numbers
are always right-justified when displayed.
  TM/1 determines that a cell is to be made numeric if you put into it a valid
"numeric value".  A numeric value consists of digits, an optional leading sign,
and an optional decimal point.  Examples of valid numeric values are: "5.0",
"6", "-2", "3.14159".  Examples of invalid numeric values are: "0-", "0a",
"3..4".  Numeric values have a maximum length of 20 characters.  TM/1 also
supports the use of "scientific notation", which expresses numbers in terms of
powers of 10.  The number "5.4e3" is the same as "5400".  The notation "e3"
means that 5.4 is to be multiplied by 10 to the 3rd power or 1170.

117   CHANGING/EDITING CELLS
You can change the contents of the cell in one of two ways.  You can simply type
into the cell directly, or you may press <F9>-edit to go into cell edit mode.
If you are typing characters into a cell and you go beyond the width of the
cell, TM/1 will automatically put you in edit mode.
  While in edit mode, TM/1 uses the cursor movement keys to move within the
characters in the cell.  The current position will be shown as a blinking
underline called the "character cursor".  The cell editing keys work as
follows:
  o <Esc>: Cancels edit and leaves cell unchanged.
  o <Enter>: Saves the cell value and gets out of edit mode.  If the cell was
    initially empty, and the value entered is a valid numeric value, the type
    of the cell will be number.  Otherwise, the cell will retain its prior
    type. If the cell was a number and you attempt to store an invalid number
    into it, TM/1 will "beep".
  o <> or <Bksp>: Moves the character cursor to the left.
  o <> or <Tab>: Moves the character cursor to the right.
  o <> or <>: Not supported, cause a "beep".

             press <PgDn> for more
    CHANGING/EDITING CELLS (CONTINUED)
  o <PgUp>: Moves the character cursor to the left 5 spaces at a time.
  o <PgDn>: Moves the character cursor to the right 5 spaces at a time.
  o <Home>: Moves the character cursor all the way to the beginning of the
    cell.
  o <End>: Moves the character cursor all the way to the end of the cell.
  o <Ins>: Turns Insert mode on and off.  When in Insert mode, any character
    that is entered will be inserted.  Otherwise, characters that are entered
    will replace existing characters.  The character cursor will become thicker
    to indicate insert mode.  To leave insert mode, hit the <Ins> key again.
      Note: The <Bksp> key will delete the previous character while in insert
    mode.
  o <Del>: Deletes the current character.
  o <Ctrl>-<End>: Deletes all characters from the current cursor position, to
    the end of the cell.
  o <F1>-savstr: Saves the cell as a string, even if a valid numeric value.

             press <PgDn> for more
    CHANGING/EDITING CELLS (CONTINUED)
  o <F2>-savnum: Saves the cell as a number, provided that it is a valid
    numeric value.  If not, TM/1 will "beep".
  o <F3>-tabnam: Lets you select the name of a table file and store it in the
    cell.  When the key is pressed, TM/1 displays a list of table names.  By
    pointing and pressing <Enter> you can store the selected name in the cell.
  o <F4>-dimel: Lets you select the name of an element in a dimension and store
    it in the cell.  When the key is pressed, TM/1 displays a list of
    dimensions. After selecting a dimension by pointing and pressing <Enter>,
    TM/1 displays a list of the elements of the dimension.  You can then select
    an element and store it in the cell by pointing and pressing <Enter>.

If you chose not to go into edit mode but rather to change the contents of the
cell directly, you may move the character cursor using the <Tab> and <Bksp>
keys.  If you move the character cursor beyond the end of the cell using the
<Tab> key, the cell cursor will be moved to the cell to the right, and TM/1
will not go into cell edit mode.

118   ENTERING NUMERIC DATA WITH THE NUMERIC KEYPAD
The numeric keypad of the PC is intended for entering large volumes of numbers.
Unfortunately, when the numeric keypad is shifted into number mode, by pressing
<Num Lock>, the cursor keys are no longer operative.  TM/1 gets around this
limitation of the PC by turning the four bottom function keys into cursor keys
whenever the numeric keypad is in number mode.  At that time the bottom four
function keys act as follows: <F7> is cursor up; <F8> is cursor down; <F9> is
cursor left; <F10> is cursor right.
  TM/1 indicates that the numeric keypad is in number mode by displaying an "N"
in the top left hand corner of the screen.

131   NAMING CONVENTIONS
TM/1 uses the file naming conventions of DOS: eight character file name and
three character extension.


132   ASSIGNING DIRECTORIES AND DRIVES
TM/1 always retrieves and stores files to the current directory of the default
drive.  You may change the default drive/directory directory from within TM/1 by
means of a command.
  If you want to retrieve data from another drive, TM/1 provides a "secondary
drive/directory search list" capability.  The drive search list is string of
drive/directory designations, separated by semicolons.
  Example:
    If STRING is "A:\XXX\YYY;C:\UUU\VVV;A:\ZZZ", and the default drive/directory
    is B:\ABC, TM/1 will first look in: B:\ABC, if it does not find the file
    there it will look in A:\XXX\YYY, if not there it will look in C:\UUU\VVV,
    and if not there it will finally look in A:\ZZZ.  If it does not find the
    file in any of these, it will issue an error message.
To refer to the root directory of a drive simply write "d:" where "d" is the
letter of the drive.
  If you retrieve a file from a secondary drive/directory and then save it, the
saving will be done to the default drive.  I.e., you will have two versions of
the file, the old one on the secondary drive/directory, and the new one in the
default drive/directory.
  This rule applies to all files except table files.  TM/1 does not permit
saving tables retrieved from secondary drive/directories.

133   TYPES OF FILES
FILE
EXTENSION   USED FOR
__________________________________

WRK        WORKSHEETS
PRC        REPORT SETUP
GRC        GRAPH SETUP
TAB        TABLE FILES
DIW        DIMENSION WORKSHEETS
DIX        DIMENSION "COMPILED FORM"
TXT        TEXT FILES, POSITION DELIMITED
CMA        TEXT FILES, COMMA DELIMITED
DBF        dBASE II & dBASE III FILES
DIF        DIF FILES
WRK        LOTUS 1-2-3 FILES

141   CHOOSING COMMANDS
All commands are chosen by means of function keys.  The last line on the screen
always contains the current menu of command choices.  Command choices are shown
in reverse video preceded by the number of the corresponding function key. When
you press a command choice, TM/1 will either:
  o EXECUTE THE COMMAND - This happens with commands that are essentially
    harmless in their effect.  An example of this type of command is the command
    which causes the cell cursor to jump between windows when the screen is
    split.
  o DISPLAY A SUBMENU - Some of the function keys do not activate a command but
    rather display another menu on the bottom of the screen from which you can
    make further choices.  Such a submenu may, in turn, have sub-submenus, and
    so on.  This menu branching structure can be depicted as a "command tree".
    Part 4 of this manual, which describes all the TM/1 commands in detail, is
    organized in a similar branching structure.
  o DISPLAY A COMMAND STATEMENT - A command statement will be shown on the
    bottom line of the screen.  At this point you may execute the command by
    pressing <Enter>, cancel by pressing <Esc>, or adjust the parameters of the
    command before executing it.
142   EDITING COMMAND PARAMETERS
Command parameters specify how the command will operate (e.g., how many
columns to insert, or which cells to erase) and are highlighted within the
command statement.
  When the command statement is initially displayed, the first parameter will
be shown in reverse video.  This indicates that the "parameter cursor" is
positioned on it.  Any characters you type while editing a command will go into
the parameter where the parameter cursor is currently positioned.  To change
the position of the parameter cursor, press the <Tab> key.  After the last
parameter in the command statement is reached, the parameter cursor will "wrap
around" to the first parameter if you press the <Tab> key again.
  You may change a command parameter by typing it over or by "pointing" using
the cursor keys.

143   TYPES OF COMMAND PARAMETERS
  Parameters in a command fall into one of the following categories:
  o Line or Column References: As the cell cursor is moved, the parameter will
    be changed to correspond to the line or column position of the cell cursor.
  o Cell References: These have the form "[L,C]"; for example [5,3] for the cell
    in line 5, column 3.  As the cell cursor is moved, its position will
    correspond to the value of the parameter.
  o Number Parameters: Number parameters are not related to lines or columns;
    for example, the number of lines or columns to insert.  Moving the cell
    cursor has no effect on such parameters.
  o File Name Parameters: When the parameter cursor is positioned at a file name
    parameter, TM/1 will display a list of the files of the appropriate type
    that exist on the default disk.  This list will be shown on lines 23 and 24.
    An element of this list can be selected by moving the "file cursor" from one
    file name to the other using the cursor keys.  As the file cursor is moved,
    the file name in the command parameter will be made to correspond.  A file
    name may also be typed directly into the parameter.

144   BLOCKS
Some commands operate on rectangular sets of cells called blocks.  A block is
defined by two cells at opposite corners of the block.  For example, the
command to erase a block of cells has the form:
   erase block [L1,C1]:[L2,C2]
Where [L1,C1] and [L2,C2] are two cell parameters that define the corners.  A
block can be as small as one cell or as large as the entire worksheet.  To
define a block:
- If not already there, put the parameter cursor on the first cell parameter.
- Move the cell cursor to the desired corner cell.
- Press <Tab> to go to the second parameter.  This will also "anchor" the first
  corner.
- Move the cell cursor as desired to position the second corner.
As you move the second corner cell, the area of the block will be highlighted
in reverse video.  If you press <Esc> at this point, TM/1 will go back to the
first corner of the block and "clear" the block.
  Once a block is defined, you may adjust it by putting the parameter cursor on
one of the corners, and moving it with the cell cursor.

145   USING LABELS IN A COMMAND
A label is a simple string cell that has no leading blanks and is unique, i.e.,
there are no other cells in the worksheet that contain the same string.  TM/1
allows using labels instead of line, column, or cell references in any command.
This makes it possible to refer to lines, columns or cells by name rather than
by a numeric address.
Examples:
    If cell [6,9] contains the label "ABC" and cell [8,20] contains the label
    "XYZ", then the command statement "insert 2 blank lines after line XYZ" is
    equivalent to "insert 2 blank lines after line 8".  And the statement:
    "erase block ABC:XYX" is equivalent to: "erase block [6,9]:[8,20]"
151   DIMENSIONS
Up to 9,999 elements may exist within any dimension. A dimension worksheet has
only three columns and may have as many lines as necessary.  Each element of the
dimension is stored on a separate line.  The first column is used to specify the
type of element being entered.  The second column contains the name of the
element.  The third column is used when specifying calculated or string
elements.
  Dimension elements may be one of three types: numeric, calculated, or string.
To specify the element type, the following codes are entered in column 1:
  N - for simple numeric elements;
  S - for string elements; and
  C - for calculated elements.
Example:
   1             2              3
   ── ────────────────────── ────────
   N  NORTH
   N  SOUTH
   N  WEST

152   ELEMENT NAMES
No two elements may have the same name within the same dimension.  Element names
will typically correspond to entities used to identify business data, for
example, types of expenses, products, organizations, months and years.
  To allow maximum flexibility in accessing the data base, TM/1 will ignore
blanks in element names and will not distinguish between upper and lower case
letters.  Thus the element name "North Carolina" is equivalent to the name
"northcarolina".

153   TABLES
Dimensions by themselves do not hold data.  Data can only be stored in tables. A
table is built using two or more dimensions.  Data values in a table are
identified by the names of elements in the tables' dimensions, not by "address"
or line/ column number.  In fact, a table contains one data value for each
combination of elements of its dimensions.
  If one or more of the elements that identify a value is a calculated element,
then the value will not be physically stored but will be calculated when
retrieved from the table.

154   CREATING DIMENSIONS
To create a dimension, you simply enter the elements of the dimension in a
dimension worksheet and store it under the desired dimension name.  To change an
existing dimension, retrieve it into a dimension worksheet,  change it as
needed, and store it back under the same name.
  When a dimension is saved, TM/1 will check the dimension definition and if
everything is in order, it will store the definition both as a dimension
worksheet file (.DIW) and as a "compiled" dimension file (.DIX).  The compiled
dimension is actually used to serve as an index into the data base.
  You may add extra columns to a dimension worksheet for purposes of sorting,
documentation etc.  However, only the first three columns in the dimension
worksheet will be recognized by TM/1 when creating the compiled version (.DIX)
of the dimension.  All other columns will be ignored but will be saved in the
dimension worksheet (.DIW).

155   CALCULATED ELEMENTS
  The calculation capability in dimensions is limited to defining calculated
elements as a "weighted sum" of other elements in the same dimension.  This
means that if an element Y is calculated in terms of elements X1, X2, and X3,
the formula for Y must be of the form: 
     Y = A1*X1 + A2*X2 + A3*X3
where A1, A2 and A3 are positive or negative constants.  Negative constants are
necessary for subtraction.
  To define a calculated element in a dimension worksheet you:
1) enter the element with type "C" in column 1 of the worksheet.
2) enter a name for the element.
3) list all the elements that enter into the weighted sum of the calculated
   element, one per row, starting in the row below it, leaving the element type
   (column 1) blank for each, and indicating the weight of each in column 3.  If
   you leave column 3 blank, TM/1 will assume the weight is one.

156   CALCULATED ELEMENTS: ADDITIONAL CONSIDERATIONS
Calculated elements (with some exceptions - see string elements) do not take up
space in the data base but are calculated "on the fly" when the data is
requested. As a result, calculated elements are always up to date.
  A calculated element may be defined before or after its component elements.
Calculated elements may be part of the definition of other calculated elements.
  There is no limit to the levels of nesting that may take place.  However,
"circular references" are not allowed.  I.e., an element may not, directly or
indirectly, form part of its own definition.

157   CREATING A TABLE
Once the desired dimensions have been defined, tables can be created using the
<F2>-tables <F2>-create command on the main menu.  When tables are initially
created, all numeric values will be set to zero and all string values to blank.
Re-creating a table has the same effect as clearing it to zeroes and blanks.
  The create command will request a name to be assigned to the table, and a list
of the dimensions that make it up.
  One dimension may be used in the definition of any number of tables.  A
dimension may occur more than once in the definition of a table.

158   ADDING AND DELETING ELEMENTS IN A DIMENSION
After a table  is created, elements may be added to any dimension of the table
and TM/1 will automatically add the necessary space for the new elements without
affecting other data in the table.  This option is available both before and
after data has been entered into the table.  Any table which uses the modified
dimension will reflect the changes.
  Deleting an element from a dimension will delete the corresponding data from
all tables using that dimension.  Use caution.
  To add or delete elements from a dimension:
     1. Enter the dimension worksheet screen
     2. Load the dimension to be modified
     3. Insert the name, type, and optional weight of the new element by either
        adding it to the end of the existing list or using the insert line
        command. Elements can be deleted using the delete line command.
     4. Store the dimension to the disk.
Thereafter, when tables which include the modified dimension are viewed or
edited, the new structure will be displayed.  Calculated elements may be added
or deleted as well.

159   STRING ELEMENTS
In addition to numbers, a table may also contain strings of characters.  For a
table to contain string values, it must be defined using a dimension that
contains string elements.
  To designate a string element in a dimension, enter an "S" in column 1 to the
left of the element's name.  Column 3 must be a number that specifies the length
of the string.  A string element can have a maximum of 72 characters.
  Only one dimension per table can have string elements, and it must be the last
dimension specified in the Create command for that table.
Example:
    To store a regional office address and a manager's name for each region,
    create a dimension REGTEXT of the form:

   1             2              3
   ── ────────────────────── ────────
   S  ADDRESS                  32.0
   S  MANAGER                  16.0


        (PRESS PgDn for more)

     STRING ELEMENTS (continued)
    Then create a table using REGIONS and REGTEXT as dimensions.
Since calculations cannot be performed on string elements, calculated elements
in a table that contains strings will be treated as simple elements.  This has
the added advantage of allowing you to associate strings with all the elements
of a dimension, whether calculated or not.  Thus in the example above, if we had
a TOTAL region defined, we could store the address and manager of the home
office.
  To avoid confusion with calculated elements, avoid putting numbers and strings
in the same dimension.
  Since TM/1 physically stores string information in blocks of 8 characters, a
string of 12 characters will, for example, take the same space as a string of 16
characters.

15A   VIRTUAL STORAGE OF TABLES
While worksheets and dimensions are stored in main memory by TM/1, tables are
stored in "virtual memory".  Virtual memory is a software scheme whereby the
computer uses the disk to simulate main memory.  If your tables exceed the
available main memory (less a "safety margin"), TM/1 will begin using the
default disk as a virtual storage or "paging" device.  When this occurs, TM/1
will issue a message warning you that you should not change the disk on that
device until you get out of TM/1.
  We recommend using a hard disk if your tables do not fit in main memory. Using
a floppy disk for this purpose can result in poor performance.
  You can estimate the number of bytes required to store a table (assuming it
contains no strings) by multiplying the number of type "N" elements in each
dimension, and multiplying the product by 9.
161   NUMERIC FORMULAS
A numeric formula results in a number, and is composed of numeric constants,
cell references, or numeric functions.  The constants, cells and functions are
connected with arithmetic operators and punctuated with parentheses.
  The simplest components of numeric formulas are numeric constants.  A numeric
constant consists of digits, an optional leading sign, and an optional decimal
point.  Examples of valid numeric constants are: "5.0", "6", "-2", "3.14159".
Examples of invalid numeric constants are: "0-", "0a", "3..4".  Numeric
constants have a maximum length of 20 characters.  Numeric constants may be
entered using scientific notation.  (e.g., .12E5 is the same as 12000).
  You can combine numeric constants (and other numeric-valued expressions) using
the standard arithmetic operators.  These are:
     "+" for addition
     "-" for subtraction
     "*" for multiplication
     "/" for division, and
     "^" for exponentiation
If you mix these operators in an expression, exponentiation will be performed
first, followed by multiplication and division.  Addition and subtraction will
be performed last.  If you want to force a different order of computation you
can use parentheses as in traditional algebraic notation.  For example "2*3+4"
is the same as "(2*3)+4", which results in 10, but different from "2*(3+4)",
which results in 14.

162   REFERENCES TO THE WORKSHEET
Most formulas will refer to values of other cells in the worksheet.  To indicate
that you want to include the contents of a certain cell within your formula you
must enter the coordinates of that cell as one of the parameters within the
formula, rather than the actual contents of that cell.  This is called a cell
reference.  A cell reference is written:
         [L,C]
where "L" and "C" designate the line and column number of the cell in question
(e.g., [5,6] for the cell in line 5, column 6).  Cell references can be entered
into a formula by pointing with the cell cursor.
  A cell reference in a numeric expression will result in a number.  Such
references are called numeric references.  Similarly, a cell reference used in a
string expression, a string reference, will result in a string.  A numeric
reference to a cell that contains a string will result in a value of zero.

163   RELATIVE AND ABSOLUTE REFERENCES
References to cells may be written in absolute or relative form.  Examples:
 o [3,4] refers to line 3 and column 4 and is an absolute reference.
 o [-1,+1] refers to the cell one line above and one column to the right of the
   current cell (i.e., the calculated cell where the reference is used).  This
   is called a relative reference.
 o [+0,-1] refers to the cell immediately to the left of the current cell.
When cells are copied, the cell reference is copied verbatim.  Thus if an
absolute reference is copied from cell A to cell B, the formula in cell B will
point to the same identical cell.  However, if a relative reference is copied,
the cells will be different, only their relative position to A and B will be the
same.  Cell references may combine relative and absolute references.  Examples:
 o [10,+0]  refers to the cell in line 10 and the current column.
 o [-1,5]   refers to the cell in column 5, one line above the current line.
A cell reference where the reference to the line is absolute and the reference
to the column is relative is called "column relative".  Similarly, if the
reference to the line is relative and the reference to the column is absolute,
the cell reference is called "line relative".

164   ALTERNATIVE REPRESENTATION OF CELL REFERENCES
A cell reference [-1,+2] in cell [5,6], is actually  referring to cell [4,8].
Rather than do the mental arithmetic necessary to identify the cell in question,
it is sometimes preferable to show the reference in absolute form.  TM/1
provides such a dual way of showing and entering relative references:
 o The default "relative" form: [-1,+2]
 o and the "absolute" form: [r4,r8].
The "r" in the absolute form of the reference indicates that the reference is
relative.  Thus when [r4,r8] is copied, for example, from cell [5,6] to cell
[6,8], it will be displayed as [r5,r10].

165   EFFECT OF MOVING CELLS
Whenever a cell is moved (as a result of the move command, or inserting lines or
columns, or deleting lines or columns), any references to it, and any references
it makes to other cells will be adjusted accordingly.  If a cell that is
referred to in other cells is deleted as a result of deleting lines or columns,
the reference in the affected cells will be changed to [ERR], to indicate an
erroneous reference.

166   ORDER OF CALCULATIONS
Calculations are performed when <F7>-recalc is pressed  or when the worksheet is
loaded from disk.  The recalculate function re-evaluates the formulas of all
calculated cells.
  TM/1 performs calculations in the so-called natural order.  This means that if
cell X is calculated in terms of cell Y, cell Y will be calculated before cell
X. TM/1 does not allow circular references and will produce an error message if
it finds one.
  Automatic recalculation has been left out intentionally as a feature of TM/1.
Any time a cell is changed, the recalculate indicator will appear on line 24 of
the screen to indicate that the worksheet needs to be recalculated.  Upon
recalculation, the indicator will be turned off.
  It is possible to recalculate a single cell by positioning the cell cursor on
it, and pressing <F1>-formul immediately followed by <Enter>.

167   STRING EXPRESSIONS
String expressions are composed of string constants, references to worksheet
cells, string-valued functions, and the concatenation operator "|".
  The simplest kind of string expression is a string constant.  A string
constant is simply the characters in the string enclosed in apostrophes (e.g.,
'abc def', '187').  The maximum length of a string constant is 72 characters.
  To combine two string expressions, use the concatenation operator "|" between
them.  The result is the characters in the first string followed by the
characters in the second string.  If the resulting string is longer than 72
characters, the string 'ERR' will result.
  In general, you may not use a number where TM/1 expects a string, and you may
not use a string where TM/1 expects a number.  Thus the expressions " 1.3 +
'abc' " and " 456 | 789 " are invalid.
  A reference to a worksheet cell in a string expression will result in a
string. If the cell is a string cell, the value will be the contents of the
cell.  If the cell is numeric, the value is a string identical to the numeric
cell's contents as currently displayed.  All trailing blanks in the cell will be
ignored.

168   FUNCTIONS
TM/1 provides additional computational capabilities through the use of
functions. The composition of a function expression has the general form:
     functioname(parameter1,parameter2, ..., parameterN)
where N is the final parameter required by the function.  Functions have a wide
variety of uses from simple sums to trigonometric and financial functions.

169   COMPARISON AND LOGICAL OPERATORS
TM/1 provides you with comparison and logical operators to perform logic
computations.  The comparison operators are:
     >   greater than
     <   less than
     >=  greater than or equal
     <=  less than or equal
     =   equal
     <>  not equal
These operators can be used to compare two numeric values.  To compare two
string values, the comparison operator must be preceded by the "@" sign (e.g.,
[1,2]@<>'abc').  The result of a comparison is either true or false.
  Logical values can then be combined using one of the logical operators: &, %
and ~:
 o  a & b  is true if and only if both a and b are true.
 o  a % b  is true if and only if a or b (or both) are true.
 o  ~a     is true if and only if a is false.
Example: [1,2]<=5 & ~([1,2]<0) is true if the number in [1,2] is less than or
equal to 5 but not less than zero.
  Comparison and logical operators are always used in connection with the IF
function.

16A   THE IF FUNCTION 
The IF function takes the form : IF(condition, value1, value2).
It is used to pick one of two values depending on the result of a logical
expression.  IF has three parameters.  The first is a logical argument.  If the
result of the logical argument is true, then the function yields the value of
the second parameter, otherwise it yields the value of the third parameter.  For
example: "IF( 5 > 6, 4, 8)" will display 8 since 5 is not greater than 6.
  The data type of the result of the IF expression is determined by the type of
the second and third parameter, which must be both numeric or both string. When
IF is used in a numeric expression, then the second and third arguments must be
numeric. When used in a string expression, the second and third arguments must
be string. The following examples illustrate use of the IF function:
 o IF([2,3] > 6, 'T', 'F')  is a string expression that yields 'T' if the value
   of cell [2,3] is greater than 6, and 'F' otherwise.
 o IF('A' @< [2,3], 0, 1) is a number expression that yields 0 if the string in
   [2,3] is "alphabetically" larger than 'A', and 1 otherwise.
 o IF('A' = 'B', 'C', 2) is incorrect on two counts, the comparison between
   strings must be done with the @= operator, and the second and third argument
   must be both numeric or both string.
 o IF('A' @= 'A' & 2 = 2, 5, 6) is a numeric expression that yields 5.  Note
   that in this case it is ok to mix strings and numbers in the same
   expression.

16B   UNDEFINED NUMBER VALUES
If you attempt to enter an operation which is mathematically incorrect, such as
division by zero, the result of the expression will be undefined.  When
undefined number values are displayed in the worksheet, they will show up on the
screen as a series of periods (i.e., "........").  An undefined condition in a
cell may also serve as the condition of a logical operation in an IF statement.
This is accomplished through the use of the "isund" function.  

16C   STRING FORMULAS
We have seen how to write string expressions and use them inside the IF
function.  TM/1 allows defining a calculated cell whose value is a string.  This
is done by means of a string formula.  A string formula, i.e., one that results
in a string, consists of the character "@" followed by a string expression.
Examples:
 o @'abcd'
 o @'abc' | [2,3]
 o @IF([1,2] = 6, 'T', 'F')
 o @TODAY   (The function TODAY returns a string with today's date).
The "@" character tells TM/1 to look for a string expression.  Thus if you write
the formula "[1,1]", TM/1 will retrieve the numeric value in cell [1,1].
Whereas, if you write "@[1,1]", TM/1 will retrieve the string value in cell
[1,1].
  Since it is a common error to forget to put the @ in front of a string
formula, TM/1 will insert one automatically if you type in a valid string
formula into a cell.  However, if you type in an expression that could be either
numeric or string (e.g., a cell reference) TM/1 will assume it is numeric unless
you precede it by @.

16D   TABLE  REFERENCES
A table reference is a call to the function DB.  Data base references have the
form:
      DB (FILENAME, KEY 1, KEY 2, ..., KEY N)
where FILENAME is a string expression whose value is the name of the table file
from which information is to be retrieved or stored, and KEY 1, ..., KEY N, are
string expressions whose values identify elements in dimensions with
corresponding positions.  That is, the value of KEY 1 must be an element in the
first dimension of the table, the value of KEY 2 must be an element in the
second dimension, and so on.

16E   CHANGING TABLE ELEMENTS FROM THE WORKSHEET
The function DB is used to retrieve table data for display in the worksheet.
This relationship can work in the opposite direction as well: changes made to
values in the worksheet which correspond to table values can be made to update a
table in the data base itself.
  To indicate that a worksheet cell which references a table value should be
"update", that is, when changes are made to that cell in the worksheet, the
corresponding value in the table should record the change, the following formula
is used:
     >>DB(FILENAME, KEY1, KEY2, ..., KEY N)
The structure of this formula is very similar to the structure of the general
formula for table references, except that it is preceded by ">>".  Cells which
contain such formulas are called table update cells.  Table update cells
represent the only case in TM/1 where data can be directly input to a cell
containing a formula.
  Table update cells will retrieve the current value in the corresponding table
when the worksheet is loaded or recalculated.  When a new value for the cell is
entered, it will be immediately reflected in the table.  The change will not be
recorded permanently, however, until the changed tables are saved using the
input/output - dbsave command.

16F   STORING CALCULATED VALUES IN THE DATA BASE
There are applications for which it is desirable to store the result of a
calculation back in a table.  This is a special case of table update.  The
correct syntax for a cell formula which allows a calculated value to be stored
in a table is:
         expression >> DB(FILENAME, KEY 1, KEY 2,
                          ...,  KEY N)
where the expression and the table reference are either both numeric or both
string.  The contents of a cell that uses a formula of this type will display
the value of "expression", and update the table.  Whenever the worksheet is
recalculated, the new result will be displayed, and the table will be updated.
Note that you must press <F7>-recalc and then save table changes, for the
calculated values to be permanently stored in the data base.
200   COMMANDS
main
menu─────┬─1-wrksht─┬─1-formul - <210>
         │          ├─2-in/out - <220>
         │          ├─3-modify - <230>
         │          ├─4-disply - <240>
         │          ├─5-graph  - <250>
         │          ├─6-jump w - <261>
         │          ├─7-recalc - <262>
         │          ├─8-goto   - <263>
         │          ├─9-edit   - <264>
         │          └─10-help  - <265>
         ├─2-tables - <270>
         ├─3-dimens - <280>
         │
         ├─7-files  - <22F>
         ├─9-global - <290>
         └─10-help  - <265>
210  EDIT FORMULAS

FORMULA EDITING KEYS  <211>
CELL POINT MODE      <212>

The formula modes are entered by pressing <F1>-formul.  If the cell already
contains a formula, TM/1 goes into formula EDIT mode.  If the cell does not
contain a formula, TM/1 goes into formula INPUT mode. When you enter Formula
EDIT mode, the current cell's formula will be shown in line 23 and the
character cursor will be moved to the end of it. If no formula exists for the
cell, a blank line will be shown in line 23 and the character cursor will be at
the beginning of the line.

211  FORMULA EDITING KEYS
While in formula mode you can type in characters in the formula line and in
addition, you can use the following keys:
  o <Esc>: Cancels edit formula and goes back to worksheet menu.
  o <Enter>: Checks the formula for errors, evaluates it, displays the result,
    and exits formula edit mode.
  o <Bksp>: Moves the character cursor to the left.
  o <Tab>: Moves the character cursor to the right.
  o <PgUp>: Moves the character cursor to the left 5 spaces at a time.
  o <PgDn>: Moves the character cursor to the right 5 spaces at a time.
  o <Home>: Moves the character cursor all the way to the beginning of the
    formula.
  o <End>: Moves the character cursor all the way to the end of the formula.
  o <>: If in INPUT mode, it moves the cell cursor to the left, and goes into
    CELL POINT mode (see below).  If in EDIT mode, it moves the character
    cursor to the left.
  o <>: If in INPUT mode, it moves the cell cursor to the right, and goes into
    CELL POINT mode (see below).  If in EDIT mode, it moves the character
    cursor to the right.

        (PRESS PgDn for more)

     FORMULA EDITING KEYS (continued)
  o <>: If in INPUT mode or EDIT mode, it moves the cell cursor up, and goes
    into CELL POINT mode (see below).
  o <>: If in INPUT mode or EDIT mode, it moves the cell cursor down, and goes
    into CELL POINT mode (see below).
  o <Ins>: Turns Insert mode on and off.  When in Insert mode, any character
    that is entered will be inserted in the formula.  Otherwise, characters
    that are entered will replace existing characters.  The character cursor
    will become thicker to indicate insert mode.  To leave insert mode, hit the
    <Ins> key again.
      Note: The <Bksp> key will delete the previous character while in insert
      mode.
  o <Del>: Deletes the current character.
  o <Ctrl>-<End>: Deletes all characters to the end of the formula.
  o <F1>-functs: Calls up the menu of built-in functions.  Refer to Appendix A
    for further discussion of the functions menu.


        (PRESS PgDn for more)

     FORMULA EDITING KEYS (continued)

  o <F2>-tables: Generates table references.  Initially, a menu of existing
    tables is shown.  After you pick one, TM/1 prompts you, in the correct
    sequence, for an element of each of the dimensions of the table. You may
    enter an element either as a string or as a cell reference.  If you choose
    to enter a string, TM/1 will show you a menu of all elements of the
    dimension.  If you choose a cell reference, TM/1 will prompt you to point
    to the cell and pick a reference mode (See CELL POINT mode below).
  o <F3>-mode: Switches between EDIT and INPUT modes.

212  CELL POINT MODE
In CELL POINT mode, the cell cursor may be moved using any of the cursor
movement keys.  As the cursor is moved, the cell reference in the formula is
changed to reflect its current position.  To leave CELL POINT mode, you must
press one of the following keys:
  o <F1>-reltv: sets the cell reference to relative form and exits CELL POINT
    mode.
  o <F2>-absol: sets the cell reference to absolute form and exits CELL POINT
    mode.
  o <F3>-linrel: sets the cell reference to line relative form (relative line,
    absolute column) and exits CELL POINT mode.
  o <F4>-colrel: sets the cell reference to column relative form (absolute
    line, relative column) and exits CELL POINT mode.
  o <Esc>: erases cell reference and exits CELL POINT mode.
  o <Enter>: has the same effect as <F1>-reltv.
  o Any character: sets the cell reference mode to relative, exits CELL POINT
    mode and inserts the character in the formula after the cell reference.

220  INPUT/OUTPUT
2-in/out─┬─1-load───┬─1-wrksht  <221>
         │          ├─2-text    <222>
         │          ├─3-dif     <223>
         │          └─4-wrk     <22a>
         ├─2-save───┬─1-wrksht  <224>
         │          ├─2-ascii   <225>
         │          └─3-dif     <226>
         ├─3-print──┬─1-print   <227>
         │          ├─2-block   <227>
         │          ├─3-skip    <227>
         │          ├─4-layout  <228>
         │          ├─5-contrl  <229>
         │          ├─7-save    <22A>
         │          ├─8-use     <22A>
         │          └─9-docmnt  <22B>
         ├─4-dbsave             <22C>
         ├─5-drives             <22D>
         ├─6-proc               <22E>
         └─7-files              <22F>

221  <F2>-in/out <F1>-load <F1>-wrksht
FORM: "load .WRK file: NAME"
  Where NAME is the name of a file with extension .WRK where a worksheet was
previously saved.
  The worksheet you are working on will be erased and replaced with the
worksheet read from the file.  If you have changed the previous worksheet and
have not saved it, TM/1 will warn you before it erases it.  Any data base files
you had loaded will remain in memory.  Working memory from the previous
worksheet will not be released.  To reclaim working memory you must escape to
the TM/1 main menu.

222  <F2>-in/out <F1>-load <F2>-text
FORM: "load .XXX file: NAME into block [L1,C1]:[L2,C2]"
  Where NAME is name of a the file to be loaded, and XXX is the file extension.
Before the command statement is shown, TM/1 will request you to choose among
various file format options as follows:
  <F1>-ascii
      <F1>-positn - the file is assumed to have extension .TXT, and to consist
      of records delimited by "line feed", "carriage-return" characters. Fields
      within the record are assumed to always occur in the same position
      relative to the beginning of the record, i.e., column widths are uniform.
      <F2>-commas - the file is assumed to have extension .CMA, and to consist
      of records delimited by "line feed", "carriage-return" characters. Fields
      within the record are separated by commas.  Fields that contain commas
      must be enclosed in quotes.
  <F2>-dbase - the file is assumed to have extension .DBF, and to have dBASE II
  or III format.
Will cause file NAME to be read into the specified block.  Data will be input
into the cells of the block so that the first record goes into the first line,
the second into the second, and so on until either the file or the block is
exhausted.

        (PRESS PgDn for more)
  LOAD TEXT (CONTINUED)
  The maximum size of a text file record accepted by TM/1 is 2048 bytes.
  In position delimited and in dBASE files, the current width of each column
will determine what characters of the incoming record will be mapped into each
cell. For example, if the first column of the block is 3 characters wide and the
second column is five characters wide, then characters 1 through 3 in the input
lines will go into the first cell, while characters 4 through 8 will go into the
second cell, and so on.
  In a comma delimited file, the "fields" of the incoming file are separated by
commas.  Fields that contain commas must be enclosed in quotes (").  The first
field will go into column 1, the second into column 2, and so on.  Fields that
are shorter than the column will be padded with blanks.  Fields that are longer
than the column will be truncated.

        (PRESS PgDn for more)
  LOAD TEXT (CONTINUED)
  TM/1 will load the data from the text file as if you had typed it in yourself
with the exception that if a valid numeric string falls into a cell that is
blank or contains a string, it will be stored as a string.  The following rules
apply to the way data from a text file will be stored on the block:
  1. calculated cells (except those that are used to input into the data base)
     will not be overwritten.  Any data from the input file that falls on such
     cells will be ignored.
  2. if a valid numeric string falls into a cell, the value stored into the
     cell will be numeric only if the cell contains a numeric value.
     Otherwise, the value stored will be string.
  3. cells whose formulas designate them as input cells for numeric data base
     elements will only accept numeric values.  All other values will be
     ignored.
  4. blank input line will have the same effect as if you typed blanks in every
     cell of the line.

223  <F2>-in/out <F1>-load <F3>-dif
FORM: "load .DIF file: NAME into block [L1,C1]:[L2,C2]"
  Where NAME is name of a file in Data Interchange Format (DIF).  The specified
block will be erased and the DIF file contents will be read into the block.  The
first "tuple" will be read into the first line of the block, with the first
element going into the top left hand corner of the block.  Subsequent tuples
will be read into subsequent lines of the block.  Elements in the DIF file that
fall outside the block will be ignored.

22a  <F2>-in/out  <F1>-load <F4>-wks
Loads Lotus 1-2-3 spreadsheet values.  There are two choices:
 o <F1>-block
   Reads spreadsheet values into a block of cells.
     FORM: "load .WKS file: NAME into block [L1,C1]:[L2,C2]"
   Where NAME is the name of a Lotus 1-2-3 spreadsheet (WKS) file.  The
   specified block will be erased and the WKS file contents (all values
   including calculated values but not formulas) will be read into the block.
   The first line of the spreadsheet will go into the first line of the block,
   with the first element going into the top left hand corner of the block.
   Subsequent lines will be read into subsequent lines of the block.  Elements
   in the WKS file that fall outside the block will be ignored.
 o <F2>-reform
   Creates "carbon copy" of spreadsheet.
     FORM: "reformat worksheet and load .WKS file:NAME"
   Where NAME is the name of a Lotus 1-2-3 file.  Erases the current TM/1
   worksheet, and creates a new worksheet based on the size (largest block
   containing all non blank cells) of the spreadsheet.  TM/1 will use the
   column widths and numeric cell formats in the spreadsheet.  All values
   (including calculated values but not formulas) will be read into the
   appropriate cells.

224  <F2>-in/out  <F2>-save <F1>-wrksht
FORM: "save .WRK file: NAME"
  Where NAME is a valid file name.  The current worksheet will be stored in a
file with name NAME and extension .WRK.  The worksheet will not be changed in
any way.

225  <F2>-in/out  <F2>-save <F2>-text
FORM: "save .XXX file: NAME from block [L1,C1]:[L2,C2]"
  The contents of the block in question will be saved as a standard DOS text
file with name NAME and extension XXX.
  Before the command statement is shown, TM/1 will request you to choose among
the following file format options:
  <F1>-positn - the file is assumed to have extension .TXT, and to consist of
  records delimited by "line feed", "carriage-return" characters.  Fields within
  the record are assumed to always occur in the same position relative to the
  beginning of the record.
  <F2>-commas  - the file is assumed to have extension .CMA, and to consist of
  records dilimited by "line feed", "carriage-return" characters.  Fields within
  the record are separated by commas.  String cells will be enclosed in quotes
  when output.

        (PRESS PgDn for more)
  SAVE TEXT (CONTINUED)
Position delimited files will look identical to the way the block looks on the
screen when displayed.
  In comma delimited files, each column will be trimmed of trailing blanks and
written as a field, separated by commas.  String cells will be enclosed in
quotes (").  In both cases, numeric cells will be stored in the file as
displayed on the screen.  As a result, some precision in the numbers may be
lost.
  Calculated cells will also be stored as shown on the screen.  Thus if you are
currently displaying formulas rather than values, the formulas (as far as they
fit within the cell's width) will be saved.  Note, however, that formulas, if
saved, will be saved as text and will not be stored as formulas when the file is
re-loaded.

226  <F2>-in/out  <F2>-save <F3>-dif
FORM: "save .DIF file: NAME from block [L1,C1]:[L2,C2]"
Where NAME is name of a file in Data Interchange Format (DIF).  The specified
block will be written out as a DIF file with lines as "tuples" and columns as
"vectors".

227 <F2>-in/out <F3>-print <F1>-print
Prints block of cells that has been designated by define block subcommand.  You
may interrupt printing by pressing any key on your keyboard.  TM/1 will then ask
you if you want to continue or cancel the printing.

<F2>-in/out <F3>-print <F2>-block
FORM: "define print block [L1,C1]:[L2,C2]"
  Designates block of cells to be printed.

<F2>-in/out <F3>-print <F3>-skip
  Causes a blank line or page to be fed to the printer.
    <F1>-line
    <F2>-page

228  <F2>-in/out <F3>-print <F4>-layout
Changes the layout of the printed page.  It has the following subcommands:
<F1>-size
  FORM: "set page size: L lins, C cols"
    Tells TM/1 to assume that the pages your printer will produce are L
  characters long (not counting the title line) and C characters wide.
    Depending on what printer options such as "compressed characters" you use,
  your printer may have different page widths and lengths.  Generally, you
  should let these parameters correspond to the actual page size your printer
  will produce.  You may make them less than the actual page dimensions, but
  making them larger will cause lines to "wrap around" and pages to run over
  the end.
<F2>-frame
  The purpose of setting title frames in a printed report is to print line and
  column headings on every page that is printed.  It has three subcommands as
  follows:
    <F1>-lines - to define the lines in the frame.  It displays a command
    statement of the form:
         "frame lines L1:L2"
    <F2>-cols - to define the columns in the frame.  It displays a command
    statement of the form:
         "frame cols C1:C2"
    <F3>-clear - to clear previously set frame.

        (PRESS PgDn for more)
  PAGE LAYOUT (CONTINUED)
  After a print frame is set, lines L1 through L2 will be shown at the top, and
  columns C1 through C2 will be shown at the left of every page that is
  printed. The frame will remain in effect until it is cleared.
  <F3>-title
  FORM: "report title: "
  The title subcommand lets you enter a title which will be printed at the top
  of every page until it is cleared or changed.  The title may contain up to 72
  characters.  If you include the character "@" in the title, it will be
  replaced with the current date before the title is printed.  Similarly, if
  you include the character "#", it will be replaced with the current page
  number.  Page numbering will start with 1 and incremented every time the
  title is printed.

229  <F2>-in/out <F3>-print <F5>-cntrl
You may change the way your printer prints by means of control characters. Such
control characters will not be printed but will make your printer, for example,
print smaller characters or print characters twice and thus make them come out
darker.  You should consult your printer manual for the specific printing
options available and the corresponding control characters.
  Control characters, just like normal characters such as "a" and "B" are
represented inside the computer by a numeric code between 0 and 255.  To
specify the control characters, you must specify the number corresponding to
the character.  For example, character number 15 is used in IBM and Epson
printers to turn on compressed character mode.  If you need more than one
control character, you should separate them with commas.
  FORM: "printer control chars: NNN,MMM, ..."
where NNN and MMM are the numeric codes for the control characters.
  The control characters will be sent to the printer before every line (This is
to accommodate settings that are automatically cleared by the printer at the
end of every line)
  Example:
    For example, to turn an IBM printer to compressed character mode and show
    8 lines per inch you would enter:
      "printer control chars: 15,270"
22A  <F2>-in/out <F3>-print <F7>-save
The save setup subcommand lets you save in a file all the settings necessary to
print a report from your worksheet.  The following information will be saved on
the file:
  1. The range of cells to be printed.
  2. The page and line size to assume for the printer.
  3. The control characters to be sent to the printer.
  4. The lines and columns to be used as page frames.
FORM: "save report setup: NAME"
  When executed TM/1 will create a file with name NAME and extension .PRC.

<F2>-in/out <F3>-print <F8>-use
The use setup command lets you retrieve report setups previously saved using
the save setup command.
FORM: "use report setup: NAME"
  When executed, TM/1 will read in the file NAME.PRC if one exists and set the
report parameters listed in the save print setup command.  All you have to do
then to produce the report is to execute the print block command (when you call
the print block command, it will reflect the block read in from the file).

22B  <F2>-in/out <F3>-print <F9>-documt
FORM: "document cells in block [L1,C1]:[L2,C2]"
  TM/1 will produce a report of all the cells in the block, column by column,
showing the type and contents of the cell.  TM/1 will print the formulas of
calculated cells in their entirety.


22C  <F2>-in/out <F4>-dbsave    SAVE DATA BASE
The save data base command will cause any data files that have been changed
since they were loaded to be stored back to disk.  The files will remain loaded
and may undergo further changes.
  Note that TM/1 will not permit saving tables that have been retrieved from a
secondary drive/directory.  If you retrieve such a table, change it, and then
attempt to save it, TM/1 will not save it and produce the message:
    WARNING: foreign table not saved.


22D  <F2>-in/out <F5>-drive     CHGE DRIVE/DIRECTORY
<F1>-deflt
    TM/1 always stores files to the current DOS default drive/directory.  This
    command allows you to change the DOS default drive/directory.
    FORM: "set default drive: X" followed by: "directory: STRING"
    Where X is a drive letter  and STRING is a directory path specification
    (e.g., "\AAA\BBB").  Once the command is executed, any file you store will
    go to the drive and directory in question.
<F2>-search
    When looking for a file to read, TM/1 will start looking in the default
    directory.  If it does not find it there, TM/1 will then look in a list of
    secondary drive/directories defined by this command.
    FORM: "set secondary drive/directory search: STRING"
    Where STRING is a string of drive/directories, separated by semicolons.
  Example:
    If STRING is "A:\XXX\YYY;C:\UUU\VVV;A:\ZZZ", and the default drive/directory
    is B:\ABC, TM/1 will first look in: B:\ABC, if it does not find the file
    there it will look in A:\XXX\YYY, if not there it will look in C:\UUU\VVV,
    and if not there it will finally look in A:\ZZZ.  If it does not find the
    file in any of these, it will issue an error message.
<F3>-paging
    FORM: "set paging drive: X"
    Sets the drive to be used for the paging file to X.

22E  <F2>-in/out <F6>-proc     PROCESS TEXT FILE
The process text file command will let you load relational or "flat" files from
other systems/programs into your TM/1 data base.
  FORM: "process .XXX file: NAME at line 1"
Before the command statement is shown, TM/1 will request you to choose among
various file format options as follows:
  <F1>-ascii
      <F1>-positn - the file is assumed to have extension .TXT, and to consist
      of records delimited by "line feed", "carriage-return" characters. Fields
      within the record are assumed to always occur in the same position
      relative to the beginning of the record, i.e., column widths are uniform.
      <F2>-commas - the file is assumed to have extension .CMA, and to consist
      of records delimited by "line feed", "carriage-return" characters. Fields
      within the record are separated by commas.  Fields that contain commas
      must be enclosed in quotes.
  <F2>-dbase - the file is assumed to have extension .DBF, and to have dBASE II
  or III format.
  Executing the command will cause TM/1 to read each of the records in
NAME.TXT into line 1 of the worksheet, and for each record, to recalculate all
the cells in the worksheet.  The record being processed will be shown on line 23
of the screen.  Execution may be interrupted at any moment by pressing the
<Esc> key. TM/1 will then ask you if you want to continue processing or stop.

22F  <F2>-in/out <F7>-files      FILE MAINTENANCE
The TM/1 file maintenance facility lets you perform some elementary file
management functions normally provided by DOS, but without having to leave
TM/1.
<F1>-erase
    FORM: "erase file: NAME.EXT"
    Deletes the file with name NAME.EXT from the default drive/directory.
    Before showing the command statement, TM/1 will display a list of the file
    name extensions used in TM/1.  Once you pick one, it will display the
    command statement along with a list of the files in the default drive that
    have that extension.
    TM/1 will ask you to confirm that you want to delete the file after you
    execute the command but before it deletes it.
<F2>-copy
    FORM: "copy file: NAME.EXT to NAME1.EXT"
    Copies file NAME.EXT to NAME1.EXT in the default drive/directory.  If
    NAME1.EXT already exists, TM/1 will ask for confirmation.
<F3>-rename
    FORM: "rename file: NAME.EXT as NAME1.EXT"
    Renames  file NAME.EXT as NAME1.EXT.  NAME.EXT must be in the default
    drive/directory.

230  MODIFY WORKSHEET
3-modify─┬─1-insert─┬─1-lines  <231>
         │          └─2-cols   <232>
         ├─2-delete─┬─1-lines  <233>
         │          └─2-cols   <234>
         ├─3-copy───┬─1-lines  <235>
         │          ├─2-block  <236>
         │          └─3-values <237>
         ├─4-move───┬─1-lines  <238>
         │          └─2-block  <239>
         ├─5-widths─┬─1-range  <23A>
         │          ├─2-align  <23B>
         │          ├─3-widen  <23a>
         │          └─4-narrow <23b>
         ├─6-erase             <23C>
         ├─7-sort              <23D>
         └─8-string            <23E>

231  <F3>-modify <F1>-insert <F1>-lines
FORM: "insert N lines after line L"  
  Upon execution, N blank lines will be inserted under line L.  All references
in formulas to the cells after line L will be adjusted accordingly.
  N is initially set to one and L is set to the line where the cursor is when
the ommand is issued, also called the "current line".  Thus if you do not change
the command parameters, the effect will be to insert a line after the current
line.
  If you want to insert a line at the top of the worksheet, you must set L to
zero.
232  <F3>-modify <F1>-insert <F2>-cols
FORM: "insert N cols after col C"  
  Upon execution, N blank columns will be inserted to the right of column C. All
references in formulas to the cells after column C will be adjusted accordingly.
The width of the new columns will be the standard length: 9 characters.
  N is initially set to one and C is set to the column where the cursor is when
the command is issued, also called the "current column".  Thus if you do not
change the command parameters, the effect will be to insert a column after the
current column.
  If you want to insert a column before column one, you must set C to zero.

233  <F3>-modify <F2>-delete <F1>-lines
FORM: "delete lines L1:L2"
  Upon execution, lines L1 and L2 and all lines in between will be deleted from
the worksheet.  If you attempt to delete all the lines, the first line will
remain.
  Any reference to a deleted cell in a formula will be marked in error.  When
formulas containing such erroneous references are recalculated, their value will
be the error value.
  L1 and L2 are set initially to the current line.  Thus if you do not change
the command's parameters, it will delete the current line.

234  <F3>-modify <F2>-delete <F2>-cols
FORM: "delete cols C1:C2"
  Upon execution, columns C1, C2, and all columns in between will be deleted
from the worksheet.  If you attempt to delete all the columns, the first column
will remain.
  Any reference to a deleted cell in a formula will be marked in error.  When
formulas containing such erroneous references are recalculated, their value will
be the error value.
  C1 and C2 are set initially to the current column.  Thus if you do not change
the command's parameters, it will delete the current column.


235  <F3>-modify <F3>-copy <F1>-lines
FORM: "copy lines L1:L2 to L3:L4"
  The effect of the copy line command is equivalent to copying blocks that are
as wide as the worksheet (See the copy block command below).  Thus, if the
worksheet has 20 columns, the above command would be equivalent to:
   "copy block [L1,1]:[L2,20] to [L3,1]:[L4,20]
If the last line designation, L4, is left blank, TM/1 will assume that the
target range of lines is as long as the source range of lines and that it
starts at L3.

236  <F3>-modify <F3>-copy <F2>-block
FORM: "copy block [L1,C1]:[L2,C2] to [L3,C3]:[L4,C4]"
  The effect of the command is to copy as many "whole" copies of the first
block (the source block) as will fit into the second block (the target block).
No partial copies of the source block will be made.  Thus if the source block
does not "fit" in the target block, no copying will take place.
  If the last cell designation, [L4,C4],  is left blank, TM/1 will assume that
the target block is the same size as the source block and has its top left hand
corner at [L3,C3].
  Formulas will be copied verbatim.  I.e., the definition of absolute and
relative cell references will remain as in the source formula.
  If a numeric cell has been assigned a format using the format block command,
the format will be copied as well.
  Examples:
  o "copy block [5,6]:[5,6] to [5,6]:[5,9]"  makes three copies of cell [5,6]
    into cells [5,7] through [5,9].
  o "copy block [5,6]:[5,6] to [5,6]:[9,9]" copies cell [5,6] into every cell of
    the block [5,6]:[9,9].
  o "copy block [5,6]:[6,7] to [9,8]:[19,14]" makes enough copies of the four
    cells in [5,6]:[6,7] to fill the block [9,8]:[18,13].  Line 19 and column 14
    are not used because parts of blocks are not copied.
  o "copy block [5,6]:[6,7] to [8,2]:" makes one copy of the block starting at
    cell [8,2].
  We suggest you experiment with this command on a blank worksheet.

237  <F3>-modify <F3>-copy <F3>-values
FORM: "copy values [L1,C1]:[L2,C2] to [L3,C3]:[L4,C4]"
  The copy values command works the same as the copy block command except that
only the value, not the formula, of calculated cells will be copied.  Thus the
copy values command provides a way of converting calculated cells into simple
cells.


238  <F3>-modify <F4>-move <F1>-lines
FORM: "move lines L1:L2 after line L3"
  The effect of this command is to insert lines L1 through L2 after line 3 and
deleting them from their initial position.  All cell references in formulas will
be adjusted to reflect the new line positions.  Note however that cell
references using the NCELL and SCELL functions will not be adjusted.

239  <F3>-modify <F4>-move <F2>-block
FORM: "move block [L1,C1]:[L2,C2] to location [L3,C3]
  The command moves the block [L1,C1]:[L2:C2] (the source block) into an area of
the same size (the target block) whose top left hand corner falls on cell
[L3,C3]. The area of the worksheet where the source block was originally will be
cleared (i.e., set to blank strings).
  Formulas that refer to the moved cells will be changed so that they refer to
the same cells in their new positions.  Formulas that referred to cells in the
target block before the move will be in error.
  Numeric formats will be moved along with the number.


23A  <F3>-modify <F5>-widths <F1>-range
FORM: "set width of cols C1:C2 to N"
  The effect will be to set the width of columns C1 through C2, inclusive to N.
When the command is called, C1 and C2 are set to the current column and N is set
to the width of the current column.  Executing the command without changing it
will therefore have no effect.
  N must be between 1 and 72, the minimum and maximum column widths.

23B  <F3>-modify <F5>-widths <F2>-align
The align columns command allows changing column widths in the worksheet to
correspond with a "ruler" set up in line 1.  The ruler consists of commas that
determine the ending character of each column.  This command is particularly
useful when aligning columns to correspond to the fields of a text file.  This
can be accomplished by:
 - reading one of the records into line 1,
 - placing a comma at the end of each field,
 - and executing the align columns command.
FORM: "align columns per commas in line 1"
  The command will examine line 1 of the worksheet and determine the number of
columns and their widths based on the position of commas.  Each comma
encountered will indicate the end of a column.  A maximum of 255 commas may
appear in line 1 when using this command.
NOTE: All the cells in the worksheet will be erased by this command.

23a  <F3>-modify <F5>-widths <F3>-widen
Increases by one the width of the column where the cell cursor is.

23b  <F3>-modify <F5>-widths <F4>-narrow
Decreases by one the width of the column where the cell cursor is.

23C  <F3>-modify <F6>-erase      ERASE BLOCK
FORM: "erase block [L1,C1]:[L2,C2]"
  The effect of the command is to set all the cells in the block to blank string
cells.  Since calculated cells are protected, this is the only way to erase
calculated cells.

23D  <F3>-modify <F7>-sort             SORT BLOCK
The sort command displays a submenu as follows:
  <F1>-block - This subcommand, when executed, defines the block of cells to be
      sorted.  It displays a command statement of the form:
         "sort block [L1,C1]:[L2,C2]"
  <F2>-keys - This subcommand, when executed, defines the columns to be used as
      keys in the sort, and the sort sequence.  It displays a command of the
      form: "key columns/order K1/O1; K2/O2; K3/O3; K4/O4"
  <F3>-doit - This subcommand actually executes the sort.  It will ask for
      confirmation before proceeding.
TM/1 sorts the given block of cells according to up to four key columns.  K1
through K4 are columns in the worksheet that will be used as keys to sort the
block of cells.  If you need less than four keys to sort the block, set the
unused ones to zero.
  O1 through O4 should be set to either "A" for ascending order or "D" for
descending order.
  If there are numbers and strings in a key column, numbers will be considered
"greater than" string values.
  The key columns need not occur within the block to be sorted.  If outside the
block, the elements of the key columns will be used to determine the order of
the elements in the block but the position of the key elements will not change
as a result of the sort.
  Formulas associated with cells to be sorted will not be changed.  Thus
relative references in such formulas may be incorrect as a result of the sort.

23E  <F3>-modify <F8>-string      MODIFY STRINGS
<F1>-left
  FORM: "left justify cells in block: [L1,C1]:[L2,C2]"
  All string cells in the block are left-justified.
<F2>-center
  FORM: "center cells in block: [L1,C1]:[L2,C2]"
  All string cells in the block are centered within the cell.
<F3> right
  FORM: "right justify cells in block: [L1,C1]:[L2,C2]"
  All string cells in the block are right justified.
  NOTE: The modify string commands operate only on simple string cells. To
  justify calculated string cells you must use functions "centr" and "right".
<F4>-number
  FORM:  "convert to number  cells in block: [L1,C1]:[L2,C2]"
  All string cells in the block that contain valid numeric strings are converted
  to numeric cells with the corresponding value.
<F5>-dimens
  FORM:  "bring strings into block: [L1,C1]:[L2,C2] from dimension NAME"
  The elements of dimension NAME will be stored as simple strings in the cells
  of the block.  If there are more elements than cells, the remaining elements
  will not be brought in.  If there are more cells than elements, the remaining
  cells will be set to blank.  We recommend you use this command on blocks that
  are only one column or one line wide.

240   MODIFY DISPLAY
4-disply─┬─1-split              <241>
         ├─2-synch              <242>
         ├─3-frames             <243>
         ├─4-val/fm             <244>
         ├─5-format             <245>
         │         └┬─1-cols    <246>
         │          ├─2-block   <247>
         │          └─3-global  <248>
         └─6-relref             <249>


241  <F4>-disply <F1>-window    SPLIT WINDOW
Split windows let you look simultaneously at any two portions of the worksheet.
This way you will be able to see cells that may be far apart in the worksheet at
the same time on the screen.  The split window commands logically split your
screen and make it operate as if it consisted of two smaller screens.  Only the
data area of the screen (the top 22 lines) is affected by the split screen
commands.
  After you have split the screen, you can scroll each window independently of
the other.  Thus for example, you could position one window to look at some
basic data at the top of your worksheet and position the other window at the
bottom of the screen where you may show the final results.
<F1>-horiz
  The screen will be split into two windows, an upper one that extends to the
  line of the cell cursor, and a lower one immediately below.  If the screen is
  already split or there is no room (e.g., if the cursor is at the bottom of the
  screen) for the second window, TM/1 will buzz.
<F2>-vert
  The screen will be split into two windows, a left one that extends to the
  column of the cell cursor, and a right one covering the balance of the screen.
  If the screen is already split or there is no room for the right window, TM/1
  will buzz.
<F3>-clear
  Returns screen back to a normal screen after it has been split.

242  <F4>-disply <F2>-synch     SYNCHRONIZE
If you are using split windows to look, for example, at the first and last
columns of a report, you may want to keep the two windows synchronized in such a
way that when one scrolls up or down, the other one will also move in the same
direction.  This option is called vertical synchronization.  Horizontal
synchronization will cause a right or left scrolling on one window to be matched
by a similar scrolling in the other.
  You may turn on both horizontal and vertical synchronization.  The
synchronization keys will produce a buzz if the screen is not split.
  The synchronize windows menu gives you three choices:
    <F1>-horiz - Turns on horizontal synchronization.
    <F2>-vert - Turns on vertical synchronization.
    <F3>-clear - Turns off synchronization.


243  <F4>-disply <F3>-frame        TITLE FRAMES
  To set up the title frame for a table, you should position the cursor at the
top left element of the body of the table in such a way that the line titles are
at the left of the screen and the column titles are at the top. 
Title frames are useful when looking at large tables.  A title frame will let
you look at the appropriate column and line titles while looking at any part of
the body of the table.
  If you then execute the set frame command, the titles will be set until you
clear them with the clear command.  While the frame is set, it will show in
reverse video.
  The title frames menu gives you two choices:
    <F1>-set - Sets the title frame at the current cursor location.
    <F2>-clear - Clears the title frame.

244  <F4>-disply <F4>-val/fm     VALUES OR FORMULAS
While building a large and complex worksheet, it may be useful to look at the
formulas associated with calculated cells rather than at their value.  TM/1
gives you such a facility by allowing you to switch back and forth between
showing values and formulas associated with calculated elements.  This feature
is also useful for developing hard copy documentation of all the formulas in a
worksheet.
  Since the complete formula for a cell is likely not to fit within the width
intended to hold its value, you may want to temporarily increase the width of
all the columns to the maximum while using this feature, especially if you
intend to print the formulas for documentation purposes.
  The command has two submenu choices:
    <F1>-values - Will cause the value of calculated cells to be shown.
    <F2>-formul - Will cause the formula associated with calculated cells to be
    shown.


245  <F4>-disply <F5>-format      CHANGE FORMATS
The examples below show the display form of the numbers "1234.56" and "-1234.56"
under various formats available in TM/1.  When you specify a format type to TM/1
you must also specify the number of decimal places to be displayed, except in
the case of scientific notation.  For scientific notation, TM/1 will use the
width of the column to determine how many significant digits to show.  In all
cases, TM/1 will round to the nearest digit shown.
  FIXED POINT
               1235          -1235
            1234.56       -1234.56
         1234.56000    -1234.56000
  SCIENTIFIC
         1.23456E+003  -1.23456E+003  1.2345600000E+003
  DOLLAR
              $1,235        ($1,235)
           $1,234.56     ($1,234.56)
        $1,234.56000  ($1,234.56000)
  COMMAS
               1,235         (1,235)
           1,234.560     (1,234.560)
         1,234.56000   (1,234.56000)
  PERCENT
         123456%        -123456%


246  <F4>-disply <F5>-format <F1>-cols
FORM: "change format for cols C1:C2"
  Changes the column format for the columns in the specified range.  After
pressing <Enter>, TM/1 will give you the following choices:
    <F1>-deflt Will clear any previous format assignment and set it back to the
    global default format.
    <F2>-fixed Sets format to fixed point.  TM/1 will also ask you to specify
    the number of decimal places.
    <F3>-scient Sets format to scientific notation.
    <F4>-dollar Sets format to currency format.  TM/1 will also ask for the
    number of decimal places.
    <F5>-commas Sets format to "commas" format which is similar to currency
    format but without the dollar signs.
    <F6>-percnt Sets format to "percent" format which is similar to "fixed"
    format but with the number multiplied by 100 and a percent "%" sign in the
    last character of the cell.

247  <F4>-disply <F5>-format <F2>-block
FORM: "change format for block [L1,C1]:[L2,C2]"
  Will change the format of all the cells in the specified block.  After
pressing <Enter>, TM/1 will ask you to make the same format choices as for
columns.  If you pick the default format, any previous settings of the cell's
formats will be cleared.  Thus the cell will use the column's format, if any.
Otherwise it will use the global format.
  Note that individual cell formats are assigned only to numeric cells.  Thus if
you have blank cells in the block, which are considered string, the format will
not be assigned to them.  If later on you put in a number in such a cell, the
format used will be the column's or the global format.
  You can, of course, change the format of one cell by specifying a block
consisting of one cell.


248  <F4>-disply <F5>-format <F3>-global
Changes the global default format.  TM/1 will display the same format submenu as
for changing column formats (except for the DEFAULT option which would not make
sense).


249  <F4>-disply <F6>-relref  CHANGE RELATIVE REF.  DISPLAY FORMAT
Cell references in a formula may be absolute or relative.  The cell reference
[5,3] is  absolute because it will refer to the same cell no matter where it
appears.  Relative cell references, on the other hand, depend on the cell where
they are used.  The reference [-1,+2] is relative.  It refers to the cell one
line up and two columns to the right of the cell where it is used.  For example,
if used in cell [3,4], it will refer to cell [2,6].
  It is often useful to show relative references as an actual line or column
rather than an offset from the active cell.  TM/1 allows showing relative
references in such "absolute" form.  Referring to the example above, rather than
showing cell [2,6] as [-1,+2], it will show it as [r2,r6].

<F1>-reltv
Changes the display format of relative references to relative form (i.e.,
[+n,-m]). This is the default when you go into TM/1.

<F2>-absol
Changes the display format of relative references to absolute form (i.e.,
[rN,rM]).
250  GRAPHICS
5-graph──┬─1-show               <251>
         ├─2-curves             <252>
         ├─3-type               <253>
         ├─4-labels             <254>
         ├─5-print              <255>
         ├─7-save               <256>
         └─8-use                <257>

TM/1 allows you to display numeric data in graphic form on your screen, provided
you have a "color / graphics" or a Hercules  card to drive your video screen. If
you use a Hercules card, you must indicate this to TM/1 via the <F9>-global
command in the main menu.  The graphics command tree is shown below.

251  <F1>-show
The SHOW GRAPH subcommand will cause the currently defined graph to be shown.
Prior to using this command, you should have set up the curves to be graphed
using the DEFINE CURVES or USE SETUP subcommands.  If the curves to be graphed
have not been specified you will see the error message "scaling error".
  After the graph is shown, you may press any key to go back to the worksheet
display.  To print the graph you press Shift-PrtSc.  However, you must have
issued the DOS command GRAPHICS, prior to entering TM/1, to enable DOS' graphics
print capability.

252  <F2>-curves
TM/1 will graph data anywhere on your worksheet.  The data it graphs must be
arranged in the form of a block within the worksheet.  TM/1 can graph up to six
curves, each of which may have up to 100 data points.  You tell TM/1 what data
to graph by defining a block within the worksheet.  Within this block, the
curves may occur as columns of data points or as rows of data points.
  FORM: "get curves from block [L1,C1]:[L2,C2]"
The command tells TM/1 where on the worksheet to find the curves to be graphed.
After pressing <Enter> TM/1 will ask you whether the curves occur as lines or as
columns within the block.
  If the curves occur as columns, then the first column will be used as the
X-axis, and subsequent columns will be graphed as curves.  The top cell in each
column will be used as the label for the curve.  If the top cell of a column is
blank, the column will be ignored.  Thus, if you do not want one of the curves
within the block to be graphed, set the top cell of the column to blanks.
Similarly, any row whose X value is blank will be ignored.
  If the curves occur as lines, then the first row will be used as the X-axis
and subsequent rows will be graphed as curves.  The cells in the first column
will be used as curve labels.  Blank X values or curve labels will cause the
corresponding column or line to be ignored.
  A maximum of 6 curves may be defined.  Additional curves will be ignored.
NOTE: When graphing undefined values, TM/1 will assume that they are zero.

253  <F3>-type
This subcommand will show you a choice of the graph types available.  Press the
appropriate function key to select.  If you do not select a graph type, the
default is a bar graph.

254  <F4>-labels
Is used to define the graph title and axis labels.  The following choices are
displayed:
  <F1>-graph to define the title for the graph.
  <F2>-x-axis to define the x-axis label.
  <F3>-y-axis to define the y-axis label.
When the choice is made, TM/1 will display the command statement: "get title
from cell [L,C]".
Thereafter, TM/1 will obtain the appropriate title from the designated cell
every time it displays the graph.

255  <F5>-print
Upon pressing <F5> the graph will be displayed on the screen and printed.  Note
that TM/1 assumes the printer is an Epson, or Epson compatible dot matrix
printer.
  You may alternatively print the graph using the DOS screen dump facility. This
involves executing the DOS "GRAPHICS" command before entering TM/1 and pressing
<Shft> <PrtSc>.

256  <F7>-save
FORM: "save .GRC file: NAME"
The Save Setup subcommand lets you save in a file all the settings necessary to
produce a graph.  The following information will be saved on the file:
  1. The block of cells to be graphed.
  2. Whether the curves occur as lines or columns.
  3. The type of graph to be produced.
  4. The cell location of the graph, x-axis and y-axis labels.
When executed TM/1 will create a file with name NAME and extension .GRC.

257  <F8>-use
FORM: "use .GRC file: NAME"
The Use Setup command lets you retrieve graph setups previously saved using the
Save Setup command.  When executed, TM/1 will read in the file NAME.GRC if one
exists and set the graph parameters listed above.  Then, all you have to do to
produce the graph is to execute the SHOW GRAPH command.
 

261  <F6>-jump w
The cell cursor will be moved between windows provided the screen is currently
split.  Otherwise TM/1 will buzz.

262  <F7>-recalc
All calculated cells in the worksheet will be recalculated.  Calculations are
performed in natural order.

263  <F8>-goto
FORM: "go to cell in line: L, column: C"
The cell cursor will go to the cell in line L column C.  The cursor will appear
on the top left hand corner of the screen.

264  <F9>-edit
The contents of the current cell are placed in line 23 and TM/1 goes into cell
edit mode.  While in edit mode, TM/1 uses the cursor movement keys to move
within the characters in the cell.  The current position will be shown as a
blinking underline called the "character cursor".  The cell editing keys work
as follows:
  o <Esc>: Cancels edit and leaves cell unchanged.
  o <Enter>: Saves the cell value and gets out of edit mode.  If the cell was
    initially empty, and the value entered is a valid numeric value, the type
    of the cell will be number.  Otherwise, the cell will retain its prior
    type. If the cell was a number and you attempt to store an invalid number
    into it, TM/1 will "beep".
  o <> or <Bksp>: Moves the character cursor to the left.
  o <> or <Tab>: Moves the character cursor to the right.
  o <> or <>: Not supported, cause a "beep".

             press <PgDn> for more
    <F9>-edit (CONTINUED)
  o <PgUp>: Moves the character cursor to the left 5 spaces at a time.
  o <PgDn>: Moves the character cursor to the right 5 spaces at a time.
  o <Home>: Moves the character cursor all the way to the beginning of the
    cell.
  o <End>: Moves the character cursor all the way to the end of the cell.
  o <Ins>: Turns Insert mode on and off.  When in Insert mode, any character
    that is entered will be inserted.  Otherwise, characters that are entered
    will replace existing characters.  The character cursor will become thicker
    to indicate insert mode.  To leave insert mode, hit the <Ins> key again.
      Note: The <Bksp> key will delete the previous character while in insert
    mode.
  o <Del>: Deletes the current character.
  o <Ctrl>-<End>: Deletes all characters from the current cursor position, to
    the end of the cell.
  o <F1>-savstr: Saves the cell as a string, even if a valid numeric value.

             press <PgDn> for more
    <F9>-edit (CONTINUED)

  o <F2>-savnum: Saves the cell as a number, provided that it is a valid
    numeric value.  If not, TM/1 will "beep".
  o <F3>-tabnam: Lets you select the name of a table file and store it in the
    cell.  When the key is pressed, TM/1 displays a list of table names.  By
    pointing and pressing <Enter> you can store the selected name in the cell.
  o <F4>-dimel: Lets you select the name of an element in a dimension and store
    it in the cell.  When the key is pressed, TM/1 displays a list of
    dimensions. After selecting a dimension by pointing and pressing <Enter>,
    TM/1 displays a list of the elements of the dimension.  You can then select
    an element and store it in the cell by pointing and pressing <Enter>.

265  <F10>-help
Displays the help menu and gives further instructions.

270  TABLES COMMANDS

main
menu───────2-tables─┬─1-view     <271>
                    └─2-create   <272>

271  <F1>-view
FORM: "view .TAB file NAME"
The view facility of TM/1 lets you look at a table file.  When executed, the
command will show a screen that displays a column for each dimension of the
table file.  The elements of the dimension are listed down the column.  This is
called the table directory screen.
  While viewing a table file, TM/1 will always be "positioned" on a two
dimensional cross section of the file.  If we had a three dimensional file, one
of he dimensions would be used as lines, another as columns, and the third would
be positioned at a specific element.  A slice is determined by using one
dimension as lines, another as columns and fixing the other dimensions, if more
than two, at specific elements.
  Given a file slice, the dimensions used as lines or columns are called free
dimensions, all others are called fixed dimensions.
  At the top of each column in the dimension screen you will see the name of the
dimension in reverse video.  Right below it, also in reverse video, you will see
the current position of the file.
  The position will show the characters "*LIN*" and "*COL*" below the free
dimensions.  All remaining dimensions will be positioned at a specific element.

...press PgDn for more ...
     <F1>-view (continued)
  The function keys available from this screen are described in the next pages.
In addition to the function keys you may use any cursor movement keys.
  o <F1>-vudata - Displays a slice of the table file.  The position is as
    displayed on the dimension screen.  However, if in the dimension screen, the
    cell cursor is under a fixed dimension, the dimension's position will be
    changed to the element where the cell cursor is.
      While looking at a cross-section of the file, you will be able to perform
    a restricted subset of worksheet functions.  For example, you may change
    column widths but may not add or delete lines or columns.
      While on this screen, you may update any cell, but changes to calculated
    elements will be ignored.  By pressing <Esc>, you will return to the
    dimension screen.
  o <F2>-positn - If the cell cursor is under a fixed dimension, that
    dimension's position will be changed to the element where the cursor is.  If
    the cell cursor is under a free dimension, the command will have no effect.
  o <F3>-lines - The dimension where the cell cursor is will be designated as
    *LIN*.  There are three cases, depending on the dimension's prior position.
     1. if the dimension was already designated as *LIN*, no change will be
        made.
     2. if the dimension was designated *COL*, then the *LIN* and *COL*
        dimensions will be switched.
     3. if the dimension was fixed, then the dimension that was labeled *LIN*
        will be made fixed.

...press PgDn for more ...
     <F1>-view (continued)
  o <F4>-cols - The dimension where the cell cursor is will be designated as
    *COL*.  There are three cases, depending on the dimension's prior position.
     1. if the dimension was already designated as *COL*, no change will be
        made.
     2. if the dimension was designated *COL*, then the *COL* and *LIN*
        dimensions will be switched.
     3. if the dimension was fixed, then the dimension that was labeled *COL*
        will be made fixed.
  o <F5>-dbsave - All changes to the table file will be stored.
  o <F6>-vutabl - Displays a menu of tables to view.  This function is provided
    as a quick way of going from viewing one table to viewing another.
  o <F7>-print - Brings up the print command menu to permit printing portions of
    the table directory.

272  <F2>-create 
FORM: "create .TAB file NAME"
followed by:
"enter dimensions: DIM1, DIM2, DIM3, DIM4, DIM5, DIM6, DIM7, DIM8"
  A table file with name NAME and extension .TAB will be created with dimensions
DIM1 through DIM8.  If less than eight dimensions are used, leave all extra
dimension names blank.  If NAME.TAB already exists it will be overwritten and
all its data lost.  TM/1 will warn you in this event.  Numeric values in the new
table file will be set to zero and string values to blank.

280 DIMENSION COMMANDS

All dimension commands are identical to the corresponding worksheet commands
except for those outlined in the next pages.

<F2>-in/out <F1>-load <F1>-dimens
FORM: "load .DIW file: NAME"
Where NAME is the name of a file with extension .DIW where a dimension was
previously saved.
  The dimension you are working on will be erased and replaced with the
dimension read from the file.  If you had changed the previous dimension and had
not saved it, TM/1 will warn you before it erases it.  Any data base files you
had loaded will remain in memory.  Working memory from the previous dimension
will not be released.

<F2>-in/out <F2>-save <F1>-dimens
FORM: "save .DIW file: NAME"
  Where NAME is a valid file name.  The current dimension will be checked for
errors and stored in two files with name NAME and extensions .DIW and .DIX. The
change will be reflected in all data files that use the dimension the next time
they are accessed.
search string.  See <F1>-<F2>-<F5>.

290  <F9>-global 
The commands in this submenu are used to change and store global default
settings for TM/1.
  o <F1>-save - All current default settings are saved in file TM1.PRF.
  o <F2>-video - Sets the type of video display:
       <F1>-b&w - Use for monochrome card or color/graphics card using a
       black & white monitor.
       <F2>-color - Use for color/graphics card with color monitor.
       <F3>-herc - Use for Hercules card.
    Initial setting is b&w, which works for all cases.
  o <F3>-drives - Allows changing the default drive, secondary drive/directory
    search string, and paging file drive.  This option is the same as
    <F1>-<F2>-<F5>.
  o <F4>-relref - Allows changing the format of relative cell references between
    "absolute" and "relative" form.  This option is the same as <F1>-<F4>-<F6>.
  o <F5>-printf - FORM: "change print device name to: STRING"
    The name of the device where printed output is directed is changed to
    STRING.  Initially, TM/1 sends printed output to LPT1.
300       MACROS
ADD    nvar    nvalue
    Add nvalue to nvar.
BORD    ON/OFF
    Turn screen borders on/off.
CALC    var
    Calculate var.
CALC    var1    var2
    Calculate block defined by var1 and var2
CLOS    fileid
    Close fileid.
EMSG    message;
    Send error message to user and buzz.
END
    End program or subroutine.
ERR    ON/OFF
    Turn error messages on/off.
EXEC    label
    Execute subroutine that starts at label.
GET    var    val    cval
    Get value from cell at line lval, column cval, and store in var.
GOTO    label
    Resume execution at instruction labeled label.

.. press PgDn for more ..
          MACROS (continued)
IFEQ    var    value    label
   If var equals value go to label.
IFGE    var    value    label
   If var is greater than or equal to value go to label.
IFGT    var    value    label
   If var is greater than value go to label.
IFLE    var    value    label
   If var is less than or equal to value go to label.
IFLT    var    value    label
   If var is less than value go to label.
IFNE    var    value    label
   If var is not equal to value go to label.
INCA    ON/OFF
   Turn recalculation upon loading a worksheet ON/OFF.
INCR    nvar
   Increment nvar by one.
INPN    nvar    message;
   Display message to user and store numeric user input in nvar.
INPS    svar    message;
   Display message to user and store string user input in svar.

.. press PgDn for more ..
          MACROS (continued)
INTR    ON/OFF
   Turn macro interruptibility ON/OFF.
JUMP    label    string;
   Pass keystrokes in string to TM/1 and then go to label.
KEYS    string;
   Pass keystrokes in string to TM/1.
    KEYSTROKE CODES
    U    Cursor Up
    D    Cursor Down
    u    Page Up
    d    Page Down
    L    Cursor Left
    R    Cursor Right
    l    Page Left (Ctrl-CuLf)
    r    Page Right (Ctrl-CuRt)
    H    Home
    N    End
    E    Escape
    T    Tab forward
    B    Backspace
    I    Insert
    -    Delete

.. press PgDn for more ..
          MACROS (continued)
    /    Enter
    P    Pause
    1-9  F1-F9
    0    F10
KEYS    svar
   Pass characters in svar to TM/1.
MEND
   Signal end of menu options.
MENU    message;
   Display menu options with message.
NOOP
   Null operation.
OEXT    fileid    filename    ext
   Assign filename.ext to fileid and open for extension.
OREA    fileid    filename    ext    notfound
   Assign filename.ext to fileid and open for input.  If file does not exist
   then go to notfound.
OWRT    fileid    filename    ext
   Assign filename.ext to fileid and open for ouput.
PAGE    fileid
   Write end of page mark on fileid.
PICK    svar    svalue
   As user to select an element from dimension svalue and store in svar.

.. press PgDn for more ..
          MACROS (continued)
PUT    var    lval    cval
   Store value in var into the cell at line lval, column cval.
REA    fileid    reclabel    eoflabel
   Read next record from fileid beginning at cell labeled reclabel. If no next
   record then go to eoflabel.
REAX    fileid    lval    cval    eoflabel
   Read next record from fileid beginning at cell in line lval, column cval.
   If no next record then go to eoflabel.
RESC
   Repaint the screen.
SET    var    value
   Set variable var to value.
STEP    ON/OFF
   Turn step by step trace ON/OFF.
WRT    fileid    reclabel
   Write record that begins at cell labeled reclabel into file fileid.
WRTX   fileid    lval    cval
   Write record that begins at cell in line lval, column cval, into file
   fileid.
400    FUNCTIONS
<F1>-math  MATHEMATICAL FUNCTIONS           <410>
<F2>-trig  TRIGONOMETRIC FUNCTIONS          <420>
<F3>-data  DATA BASE FUNCTIONS              <430>
<F4>-stats  STATISTICS                      <440>
<F5>-string  STRING FUNCTIONS               <450>
<F6>lookup  LOOKUP FUNCTIONS                <460>
<F7>-financ  FINANCIAL FUNCTIONS            <470>
<F8>-time  TIME AND DATE FUNCTIONS          <480>
<F9>-misc  MISCELLANEOUS FUNCTIONS          <490>
410  <F1>-math  MATHEMATICAL FUNCTIONS
      <F1>-abs ABSOLUTE VALUE               <411>
      <F2>-exp EXPONENTIAL                  <412>
      <F3>-int TRUNCATE TO INTEGER          <413>
      <F4>-ln NATURAL LOGARITHM             <414>
      <F5>-log LOGARITHM BASE 10            <415>
      <F6>-mod REMAINDER                    <416>
      <F7>-round ROUND TO NEAREST INTEGER   <417>
      <F8>-sign SIGN INDICATOR              <418>
      <F9>-sqrt SQUARE ROOT                 <419>

420  <F2>-trig  TRIGONOMETRIC FUNCTIONS
      <F1>-acos ARC COSINE                  <421>
      <F2>-asin ARC SINE                    <422>
      <F3>-atan ARC TANGENT                 <423>
      <F4>-cos COSINE                       <424>
      <F5>-sin SINE                         <425>
      <F6>-tan TANGENT                      <426>

430  <F3>-data  DATA BASE FUNCTIONS
      <F1>-db RETRIEVE DATA BASE VALUE               <431>
      <F2>-dfrst RETRIEVE FIRST ELEMENT OF DIMENSION <432>
      <F3>-dnext RETRIEVE NEXT ELEMENT OF DIMENSION  <433>
      <F4>-dimix INDEX OF ELEMENT WITHIN DIMENSION   <434>
      <F5>-dimnm NAME OF DIM.  ELEMENT GIVEN INDEX   <435>

440  <F4>-stats  STATISTICS
      <F1>-avg AVERAGE                       <441>
      <F2>-cnt COUNT OF NUMERIC ELEMENTS     <442>
      <F3>-max MAXIMUM VALUE                 <443>
      <F4>-min MINIMUM VALUE                 <444>
      <F5>-sum SUM                           <445>
      <F6>-stddv STANDARD DEVIATION          <446>
      <F7>-var VARIANCE                      <447>

450  <F5>-string  STRING FUNCTIONS
      <F1>-subst SUBSTRING                          <451>
      <F2>-numbr NUMERIC VALUE OF STRING            <452>
      <F3>-str STRING VALUE OF NUMBER               <453>
      <F4>-char ASCII CHARACTER OF NUMBER           <454>
      <F5>-code ASCII NUMBER OF CHARACTER           <455>
      <F6>-long LENGTH OF STRING                    <456>
      <F7>-delet DROP CHARACTERS FROM STRING        <457>
      <F8>-insrt INSERT STRING INTO STRING          <458>
      <F9>-trim TRIM BLANKS                         <459>
      <F10> More functions listed below:
      <F1>-centr CENTER STRING WITHIN CELL          <45A>
      <F2>-right RIGHT JUSTIFY STRING WITHIN CELL   <45B>
      <F3>-scan LOOK FOR SUBSTRING                  <45C>

460  <F6>lookup  LOOKUP FUNCTIONS
      <F1>-col COLUMN LOCATION OF STRING            <461>
      <F2>-lin LINE LOCATION OF STRING              <462>
      <F3>-ncell VALUE OF NUMERIC CELL              <463>
      <F4>-scell VALUE OF STRING CELL               <464>
      <F5>-look NUMERIC TABLE LOOKUP                <465>

470  <F7>-financ  FINANCIAL FUNCTIONS
      <F1>-irr INTERNAL RATE OF RETURN              <471>
      <F2>-npv NET PRESENT VALUE                    <472>
      <F3>-fv FUTURE VALUE OF ANNUITY               <473>
      <F4>-paymt PAYMENT ON ANNUITY                 <474>
      <F5>-pv PRESENT VALUE OF ANNUITY              <475>

480  <F8>-time  TIME AND DATE FUNCTIONS
      <F1>-bdayn DAY NUMBER OF BOND DATE            <481>
      <F2>-bdate BOND DATE OF A DAY NUMBER          <482>
      <F3>-dayno DAY NUMBER OF A DATE               <483>
      <F4>-date DATE OF A DAY NUMBER                <484>
      <F5>-time CURRENT TIME                        <485>
      <F6>-today CURRENT DATE                       <486>
      <F7>-day DAY OF A DATE                        <487>
      <F8>-month MONTH OF A DATE                    <488>
      <F9>-year YEAR OF A DATE                      <489>
      <F10> More functions listed below:
      <F1>-dates DEVELOP DATE STRING                <48A>
      <F2>-dys DAY STRING OF DATE                   <48B>
      <F3>-mos MONTH STRING OF DATE                 <48C>
      <F3>-yrs YEAR STRING OF DATE                  <48D>

490  <F9>-misc  MISCELLANEOUS FUNCTIONS
      <F1>-isund TEST FOR UNDEFINED VALUE           <491>
      <F2>-undef FORCE UNDEFINED VALUE              <492>
      <F3>-if LOGICAL CHOICE                        <493>
      <F4>-rand UNIFORM PSEUDORANDOM NUMBER         <494>
      <F5>-mem CURRENTLY AVAILABLE MEMORY           <495>

411  ABS(X)
Returns the absolute value of X.
  Examples:
      ABS(-1.2) = 1.2
      ABS(3.6) = 3.6

421  ACOS(X)
Returns the angle in radians whose cosine is X.  X must be between -1 and 1,
otherwise the result is undefined.
  Examples:
      ACOS(0) = 1.5708  radians (pi/2 or 90 degrees).
      ACOS(1) = 0

422  ASIN(X)
Returns the angle in radians whose sine is X.  X must be between -1 and 1,
otherwise the result is undefined.
  Examples:
      ASIN(1) = 1.5708  radians (pi/2 or 90 degrees).
      ASIN(0) = 0

423  ATAN(X)
Angle in radians whose tangent is X.  The result is between -pi/2 and +pi/2.
  Examples:
      ATAN(1) = .7854  radians (pi/4 or 45 degrees).
      ATAN(0) = 0 radians.

441  AVG([L1,C1]:[L2,C2])
Returns the average value of all numeric cells in the block with corners at
[L1,C1] and [L2,C2].  String valued cells are not counted.  AVG(r) is equivalent
to SUM(r)/CNT(r), where "r" is any block of cells.  If there are no numeric
cells in the block, the result is undefined.
  Example:  in the worksheet:

                 9      10       11  
            ┌────────────────────────── 
        2   │
        3   │   RENT   SALAR   PHONE
        4   │   12.3    22.4     5.6
        5   │   12.5    23.7     4.8

         AVG([4,9]:[5,11]) = 13.6

482  BDATE(X)
Returns a bond date string of the form : 'yy-mm-dd' that corresponds to day
number X.  Bond dates assume all months have thirty days and years have 360
days.  Day number 0 corresponds to '60-01-01'.  Years in the 21st Century, up
to 2059, are represented by years 00 through 59.
  Example:
      BDATE(360) = '61-01-01'

481  BDAYN(D)
Returns the day number corresponding to bond date D.  D is a string of the form
: 'yy-mm-dd'.  Bond dates assume all months have thirty days and years have 360
days.  Day number 0 corresponds to '60-01-01'.  Years in the 21st Century, up
to 2059, are represented by years 00 through 59.
  Examples:
      BDAYN('61-01-01') = 360.

45A  CENTR(STR)
Returns a string obtained by inserting blanks to the left of STR so that if
displayed, it will appear centered within the column.  If STR is wider than the
column, the result is STR.
  Example:
    If the current column is 8 characters then
      CENTR('AA') = '   AA'

454  CHAR(N)
Returns a string of one character, whose ASCII code is N.
  Examples:
      CHAR(50) = '2'
      CHAR(100) = 'd'

455  CODE(STR,LOC)
Returns the ASCII numeric code corresponding to the character in the LOCth
position within string.
  Examples:
      CODE('321',2) = CODE('2',1) = 50
      CODE('abcde',4) = CODE('d',1) = 100

461  COL(S)
Returns the column number of the cell where string S occurs.  If S is null
(written as two consecutive apostrophes) then the result is the current cell's
column number.
  S must occur as a simple string cell and it must occur only once.  If S does
not occur in the worksheet as a simple string cell, or occurs more than once,
the result is undefined and an error message will be issued.
  Examples:  in the worksheet:

                 8      9     10      11  
            ┌──────────────────────────────── 
        2   │
        3   │          RENT  SALAR   PHONE
        4   │  MANUF   12.3   22.4    5.6
        5   │  R & D   12.5   23.7    4.8

         COL('RENT') = 9
         NCELL(LIN('MANUF'),COL('PHONE')) = 5.6
      for a formula written in cell [6,10],
             COL('') = 10  null string results in current column number.
             SCELL(3,COL('')) = 'SALAR'

424  COS(X)
Returns the cosine of X where X is in radians.
  Examples:
      COS(0) = 1
      COS(1.5708) = 0;

442  CNT([L1,C1]:[L2,C2])
Returns the count of numeric cells in the block with corners at [L1,C1] and
[L2,C2].  String valued cells are not counted.
  Example:  in the worksheet:

                 9      10       11  
            ┌────────────────────────── 
        2   │
        3   │   RENT   SALAR   PHONE
        4   │   12.3    22.4     5.6
        5   │   12.5    23.7     4.8

         CNT([4,9]:[5,11]) = 6

484  DATE(X)
Returns the date string, in the form yy-mm-dd corresponding to day number X.
Date strings have the form: 'yy-mm-dd'.  Day number 0 corresponds to '60-01-01'.
Years in the 21st Century, up to 2059, are represented by years 00 through 59.

  Examples:
      DATE(366) = '61-01-01'
      DATE(30000) = '42-02-19'

48A  DATES(YEAR,MONTH,DAY)
Returns a date string, in the form yy-mm-dd, corresponding to the YEAR,
MONTH and DAY.
  Example:
      DATES(80,2,10) = '80-02-10'

487  DAY(D)
Returns the numeric value of the day in date string D.  D is in the form
yy-mm-dd.
  Example:
      DAY('84-06-21') = 21

483  DAYNO(D)
Returns the day number corresponding to date D.  D is a string of the form:
'yy-mm-dd'.  Day number 0 corresponds to '60-01-01'.  Years in the 21st Century,
up to 2059, are represented by years 00 through 59.
  Examples:
      DAYNO('61-01-01') = 366
      DAYNO('42-02-19') = 30000

431  DB(F, K1, K2, ...)
Returns a value from a table in the data base.  F is a string expression which
is the name of the table from which information is to be retrieved.  and K1,
K2, ..., are string expressions that identify elements in dimensions with
corresponding positions.  That is, the value of K1 must be an element in the
first dimension of the table, the value of K2 must be an element in the second
dimension, and so on.
  DB will return a numeric value if used in a numeric expression and a string
value if used in a string expression.
  If the table does not exist or one of the keys does not occur in the
corresponding dimension, an error message will be issued.
  Example:
      DB('BUDGET','TOTAL','PAYROLL','1Q84')

457  DELET(STR,BEG,N)
Returns a string obtained by deleting N character out of string STR beginning
with the character at position BEG.
  Examples:
      DELET('ABCDE',3,2) = 'ABE'
      DELET('ABCDE',1,4) = 'E'

432  DFRST(DIMENSION)
Returns a string which is the first element of DIMENSION.  DIMENSION is a string
expression which is the name of a dimension file currently on disk.  If
DIMENSION is not found, an error message will be issued.
  Example:
      DFRST('PRODUCTS')

434  DIMIX(DIMENSION,NAME)
Returns the relative position of element NAME within DIMENSION.  If NAME is not
an element of DIMENSION, the function returns zero.  If DIMENSION is not found,
an error message will be issued.
  This function is useful for determining whether an element is or is not within
a dimension.
  Example:
      IF(DIMIX('PRODUCTS','SOFAS')<>0,'YES','NO')

435  DIMNM(DIMENSION,INDEX)
Returns the name of the element in DIMENSION that occurs at the relative
position given by INDEX.  INDEX must be a number and is rounded automatically
to the nearest integer.  If INDEX is less than one or greater than the number of
elements in the dimension, the result of the function is a blank.  If DIMENSION
is not found, an error message will be issued.
  This function is the "inverse" of DIMIX.
  Example:
      DIMNM('PRODUCTS',3) returns the third element of the PRODUCTS dimension,
      or a blank if there are less than three elements.

433  DNEXT(DIMENSION,NAME)
Returns a string which is the element of DIMENSION that follows element NAME.
DIMENSION is a string expression which is the name of a dimension file currently
on disk.  If DIMENSION is not found, an error message will be issued.  If NAME
does not occur in DIMENSION or is the last element, the result is a blank
string.
  Example:
      DNEXT('PRODUCTS', 'SOFAS')
48B  DYS(DATE)
Returns a string corresponding to the day in date string DATE.  DATE is in the
form yy-mm-dd.
  Example:
      DYS('86-02-20') = '20'

412  EXP(X)
Returns the natural antilog of X or e to the power X.  If X is larger than 709,
the result is undefined.
  Examples:
      EXP(0) = 1
      EXP(1) = 2.71828

473  FV(PAYMENT,INTEREST,PERIODS)
Returns the value of an annuity at the time of the last payment.
  An annuity is a series of payments made at equal intervals of time.  PAYMENT
is the amount of the payment made, INTEREST is the interest rate paid per
period.  And PERIODS is the number of periods in the annuity.  Payments are
assumed to be made at the end of each period.
  Examples:
    The value of an annuity at the end of 5 years with payment of 1000 per year
    at 14% interest is given by:
       FV(1000, .14, 5)
    The value of an annuity at the end of 5 years with payment of 100 per month
    at 14% per year is given by:
       FV(100, .14/12, 5*12)

493  IF(L,XT,XF)
Returns the value XT if logical expression L is true.  Otherwise it returns XF.
  XT and XF must be of the same type and determine the type of the IF
expression.  I.e., if the function is used in a numeric expression, XT and XF
must be numeric.  If used in a string expression, XT and XF must be string.
  Examples:
      IF(1>2, 'ABC', 'DEF') = 'DEF'
      IF(1<2, 5.2, 6.4) = 5.2
      IF('A'@='A', 'ABC', 'DEF') = 'ABC'
      IF('A'@='B', 5.2, 6.4) = 6.4

458  INSRT(A,B,LOC)
Returns a string obtained by inserting string A into string B right before the
character at position LOC.
  Examples:
      INSRT('ABC','DEF',2) = 'DABCEF'
      INSRT('AAA','BBBB',1) = 'AAABBBB'

413  INT(X)
Returns the integer resulting from truncating the value of X.  If X is positive,
value is the largest integer less than or equal to X.  If X is negative, value
is the smallest integer greater than or equal to X.  
  If the absolute value of X is larger than 16,000,000 the result is undefined.
  Examples:
      INT(5.6) = 5
      INT(-5.6) = -5

471  IRR(INT,[L1,C1]:[L2,C2])
Returns the internal rate of return of the cash flows given by the cells in the
block with corners at [L1,C1] and [L2,C2].
  The function searches for an interest rate between zero and INT such that the
net present value of the cash flows given is zero.  Cash flows are assumed to
occur at the end of the period.
  The function uses a binary search technique, therefore the net present value
must be >0 at 0 and <0 at INT, or vice-versa.  Otherwise the result of the
function is undefined.
  NOTE: If the block is rectangular, the order of the cash flows is assumed to
be by rows.  I.e., the first cash flow is the top left cell and the second is
the cell to its right.
  Example:  in the worksheet:

                9
            ┌────── 
        2   │
        3   │ -30.0
        4   │  12.3
        5   │  12.5
        6   │  12.9

     IRR(.50, [3,9]:[6,9]) = .1225
491  ISUND(X)
Returns the value 1 if and only if the value of X is undefined.  Otherwise, it
returns 0.
  Examples:
      ISUND(5.2) = 0
      ISUND(UNDEF) = 1
      ISUND(1/0) = 1

462  LIN(S)
Returns the line number of the cell where string S occurs.  If S is null
(written as two consecutive apostrophes) then the result is the current cell's
line number.
  S must occur as a simple string cell and it must occur only once.  If S does
not occur in the worksheet as a simple string cell, or occurs more than once,
the result is undefined and an error message will be issued.
  Examples:  in the worksheet:

                8      9      10       11  
            ┌──────────────────────────────── 
        2   │
        3   │          RENT  SALAR   PHONE
        4   │  MANUF   12.3   22.4    5.6
        5   │  R & D   12.5   23.7    4.8

      LIN('RENT') = 3
      LIN('MANUF') = 4
      NCELL(LIN('MANUF'),COL('PHONE')) = 5.6
    for a formula written in cell [5,12],
      LIN('') = 5   null string results in current line number.
      SCELL(LIN(''),8) = 'R & D'

414  LN(X)
Returns the natural logarithm (base e) of X.  The result is undefined if X is
negative or zero.
  Examples:
      LN(1) = 0
      LN(2.71828) = 1

415  LOG(X)
Returns the logarithm base 10 of X.  The result is undefined if X is negative or
zero.
  Examples:
      LOG(1) = 0
      LOG(10) = 1

456  LONG(S)
Returns the length of string S.
  Examples:
      LONG('abc') = 3
      LONG('') = 0

465  LOOK(X, [L1,C1]:[L2,C2])
This function is used to look up values in a list of numbers within the
worksheet.  The value to be looked up is X.  The block of cells [L1,C1]:[L2,C2]
is assumed to be either a row or a column of numbers (i.e., L1=L2 or C1=C2).  If
the block is a row of numbers, the function searches the row from left to right
and returns the column number of the first number that is larger than X.  If the
block is a column of numbers, the function searches from top to bottom and
returns the line number of the first number that is larger than X
  Examples:  in the worksheet:

                 9      10       11  
            ┌────────────────────────── 
        2   │    vol   price
        3   │      5    100
        4   │     10     80
        5   │     20     70
        6   │     50     60
        7   │   1000     50

      LOOK(12,[3,9]:[7,9]) = 5
      NCELL(LOOK(22,[3,9]:[7,9]), 10) = 60

443  MAX([L1,C1]:[L2,C2])
Returns the largest value in the block with corners at [L1,C1] and [L2,C2].
String valued cells are ignored.  If no numeric cells are found the result is
undefined.

  Example:  in the worksheet:

                 9      10      11  
            ┌────────────────────────── 
        2   │
        3   │   RENT   SALAR   PHONE
        4   │   12.3    22.4     5.6
        5   │   12.5    23.7     4.8


         MAX([4,9]:[5,11]) = 23.7

495  MEM
Returns the current free memory as a number in K bytes (as normally displayed in
line 24).
  This function is provided mainly for use within macros, to allow taking
different actions depending on the availability of main memory.

444  MIN([L1,C1]:[L2,C2])
Returns the smallest value in the block with corners at [L1,C1] and [L2,C2].
String valued cells are ignored.  If no numeric cells are found the result is
undefined.
  Example:  in the worksheet:

                 9      10       11  
            ┌────────────────────────── 
        2   │
        3   │   RENT   SALAR   PHONE
        4   │   12.3    22.4     5.6
        5   │   12.5    23.7     4.8

         MIN([4,9]:[5,11]) = 4.8

416  MOD(X,Y)
Returns the remainder of dividing X by Y (both X and Y are first rounded to the
nearest integer).
  If the absolute value of X or Y is larger than 16,000,000 the result may be
incorrect.
  Examples:
      MOD(10, 3) = 1
      MOD(12, 3) = 0


488  MONTH(D)
Returns the numeric value of the month in date string D.  D is in the form
yy-mm-dd.
  Example:
      MONTH('84-06-21') = 6


48C  MOS(DATE)
Returns a three-character string corresponding to the month in date string
DATE.  DATE is in the form yy-mm-dd.
  Example:
      MOS('86-02-20') = 'FEB'

463  NCELL(L,C)
Returns the numeric contents of the cell at line L, column C; where L and C are
numeric expressions.  If L or C are outside the limits of the worksheet, the
result is undefined.
  WARNING: The arguments of this function will not necessarily change if lines
or columns are inserted or deleted, or if the formula where used is moved or
copied.  It is suggested that this function should only use parameters that are
the result of a name lookup using LIN or COL.  Also, the order of evaluation is
not guaranteed and therefore references to calculated elements should be
avoided.
  Examples:  in the worksheet:
                 8      9     10      11  
            ┌──────────────────────────────── 
        2   │
        3   │          RENT  SALAR   PHONE
        4   │  MANUF   12.3   22.4    5.6
        5   │  R & D   12.5   23.7    4.8

      NCELL(4,11) = 5.6
      NCELL(LIN('MANUF'),COL('PHONE')) = 5.6
    for a formula written in cell [5,12],
      NCELL(LIN(''),COL('RENT')) = 12.5

472  NPV(INT,[L1,C1]:[L2,C2])
Returns the net present value of the cash flows given by the cells in the block
with corners at [L1,C1] and [L2,C2], at interest rate INT.  String valued cells
are assumed zero.  Cash flows are assumed to occur at the end of the period.
  NOTE: If the block is rectangular, the order of the cash flows is assumed to
be by rows.  I.e., the first cash flow is the top left cell and the second is
the cell to its right.

  Examples:  in the worksheet:

               9
            ┌────── 
        2   │
        3   │ -30.0
        4   │  12.3
        5   │  12.5
        6   │  12.9

      NPV(.50, [3,9]:[6,9]) = -8.2
    Note that .50 denotes a 50% interest rate.
      NPV( 0 , [3,9]:[6,9]) =  7.7

452  NUMBR(S)
Returns a number which is the result of converting string S to its numeric
value.  If S cannot be converted to a number, the result is undefined.
  Examples:
      NUMBR('-5.6') = -5.6
      NUMBR('ABC') = undefined

474  PAYMT(PRINCIPAL,INTEREST,PERIODS)
Returns the payment amount of an annuity given an initial value or principal, an
interest rate, and a number of periods.
  An annuity is a series of payments made at equal intervals of time.  PAYMT is
the payment made, INTEREST is the interest rate paid per period.  And PERIODS
is the number of periods in the annuity.  Payments are assumed made at the end
of each period.  PRINCIPAL is the present value of all payments at the
beginning of the first period.
  Examples:
    The payment on a 5 year annuity that is paid yearly, with principal of
    100000 at 14% interest is given by:
      PAYMT(100000, .14, 5)
    Fixed payment homeowner's mortgages are annuities.  The monthly payments on
    a $100,000 mortgage paid monthly over 20 years at 14% annual interest is
    given by:
      PAYMT(100000, .14/12, 20*12)

475  PV(PAYMENT,INTEREST,PERIODS)
Returns the initial or principal value of an annuity.  An annuity is a series of
payments made at equal intervals of time.  PAYMENT is the amount of the
payment made, INTEREST is the interest rate paid per period.  And PERIODS is
the number of periods in the annuity.  Payments are assumed made at the end of
each period.
  Examples:
    The principal value of an annuity with 5 yearly payments of 1000 at 14%
    interest is given by:
      PV(1000, .14, 5)
    Fixed payment homeowner's mortgages are annuities.  The principal on a
    mortgage with payments of $1,000 paid monthly over 20 years at 14% annual
    interest is given by:
      PV(1000, .14/12, 20*12)

494  RAND
Returns a pseudorandom number that is uniformly distributed between 0 and 1.
The random number generator is "seeded" when TM/1 is loaded.

45B  RIGHT(STR)
Returns a string obtained by inserting blanks to the left of string STR until it
is as wide as the column where the formula appears.  If STR is wider then the
column, the result is STR.
  Example:
    If the current column is 8 characters then
      RIGHT('AA') = '      AA'

417  ROUND(X)
Returns the value of X rounded to the nearest integer.  If the absolute value of
X is larger than 16,000,000 the result is undefined.  If the fraction of the
number to be rounded is .5, then the rounding is done such that the result is an
even number.
  Examples:
      ROUND(4.6) = 5
      ROUND(4.5) = 4
      ROUND(7.5) = 8
    To round X to the nearest 100 write: 
      100 * ROUND( X/100 )
    To round X to the nearest .1 write: 
      .1 * ROUND( X/.1 )
    In general, to round X to the nearest Y write:
      Y * ROUND( X/Y )

45C  SCAN(SUB,STR)
Returns a number giving the starting location of the first occurrence of string
SUB within string STR.  If SUB does not occur as a substring of STR, the result
is zero.
  Examples:
      SCAN('DE','ABCDEFABCDEF') = 4
      SCAN('CD','ABCDEFGHIJKL') = 0

464  SCELL(L,C)
Returns the string contents of the cell at line L, column C; where L and C are
numeric expressions.  If L or C are outside the limits of the worksheet, the
result is undefined.
  WARNING: The arguments of this function will not necessarily change if lines
or columns are inserted or deleted, or if the formula where used is moved or
copied.  It is suggested that this function should only use parameters that are
the result of a name lookup using LIN or COL.  Also, the order of evaluation is
not guaranteed and therefore references to calculated elements should be
avoided.
  Examples:  in the worksheet:

                 8      9     10       11  
            ┌──────────────────────────────── 
        2   │
        3   │          RENT  SALAR   PHONE
        4   │  MANUF   12.3   22.4    5.6
        5   │  R & D   12.5   23.7    4.8

      SCELL(3,9) = 'RENT'
      SCELL(5,10) = '23.7'
      SCELL(LIN('MANUF'),COL('PHONE')) = '5.6'
    for a formula written in cell [5,12],
      SCELL(LIN(''),COL('RENT')) = '12.5'
418  SIGN(X)
Returns 1 if X is positive, -1 if X is negative, and 0 if X is zero.
  Example:
      SIGN(-2.5) = -1

425  SIN(X)
Returns the sine of X where X is in radians.
  Examples:
      SIN(0) = 0
      SIN(1.5708) = 1;

419  SQRT(X)
Returns the square root of X.  The result is undefined if X is negative.
  Example:
      SQRT(16) = 4

446  STDDV([L1,C1]:[L2,C2])
Returns the standard deviation of the numeric cells in the block with corners at
[L1,C1] and [L2,C2].  String valued cells are ignored.  If no numeric cells are
found the result is undefined.  The standard deviation is calculated as the
square root of the variance.  I.e., STDDV(b) = SQRT(VAR(b)).
  Example:  in the worksheet:

                 9      10      11  
            ┌────────────────────────── 
        2   │
        3   │   RENT   SALAR   PHONE
        4   │   12.3    22.4     5.6
        5   │   12.5    23.7     4.8

         STDDV([4,9]:[5,11]) = 7.3

453  STR(X,L,D)
Converts the number X into its string representation.  L determines the length
of the resulting string and D the number of decimal places.  (L and D are
rounded to the nearest integer).
  Examples: 
      STR(3.14159, 6, 2) = '  3.14'
      STR(-3.14159, 6, 0) = '    -3'

451  SUBST(S,B,L)
Returns the substring of string S, L characters long, beginning at the Bth
character of S.  Both L and B are rounded automatically to the nearest integer.
  Example:
      SUBSTR('ABCDE',2,2) = 'BC'

445  SUM([L1,C1]:[L2,C2])
Returns the sum of all numeric cells in the block with corners at [L1,C1] and
[L2,C2].  String valued cells are ignored.  If no numeric cells are found the
result is zero.
  Example:  in the worksheet:

                 9      10       11  
            ┌────────────────────────── 
        2   │
        3   │   RENT   SALAR   PHONE
        4   │   12.3    22.4     5.6
        5   │   12.5    23.7     4.8

         SUM([4,9]:[5,11]) = 81.3

426  TAN(X)
Returns the tangent of X where X is in radians.
  Examples:
         TAN(0) = 0
         TAN(.7854) = 1;

485  TIME
Returns a string with the current time in the form : 'hh:mm', where hh is
between 00 and 23.

486  TODAY
Returns the current date in the form : 'yy-mm-dd'.

459  TRIM(STR)
Returns a string obtained by trimming leading and trailing blanks in string
STR.
  Example:
      TRIM('  ABC  DEF  ') = 'ABC  DEF'


492  UNDEF
Returns the undefined value.  This function can be used to prevent data from
being stored in a table based on a logical test.
  Example:
      IF(x<100,x,UNDEF) >> DB(...)
    Since TM/1 does not allow undefined values to go into tables, the value "x"
    will be stored in the table only if it is less than 100.

447  VAR([L1,C1]:[L2,C2])
Returns the variance of the numeric cells in the block with corners at [L1,C1]
and [L2,C2].  String valued cells are ignored.  If no numeric cells are found
the result is undefined.
  Example:  in the worksheet:

                 9      10       11  
            ┌────────────────────────── 
        2   │
        3   │   RENT   SALAR   PHONE
        4   │   12.3    22.4     5.6
        5   │   12.5    23.7     4.8

      VAR([4,9]:[5,11]) = 54.0

489  YEAR(D)
Returns the numeric value of the year in date string D.  D is in the form
yy-mm-dd.
  Example:
      YEAR('84-06-21') = 84

48D  YRS(DATE)
Returns a four-character string corresponding to the year in date string DATE.
DATE is in the form yy-mm-dd.
  Examples:
      YRS('86-02-20') = '1986'
      YRS('05-02-20') = '2005'
999
