







                           I.  ALGOL-M LANGUAGE DESCRIPTION




             A.  FEATURES OF THE ALGOL-M LANGUAGE


                 Although ALGOL-M was modeled after ALGOL-60, no  attempt

             was  made  to make it a formal subset of ALGOL-60.  This was

             done intentionally in order  to  provide  a  language  which

             would   be   best   suited  to  the  needs  of  applications

             programmers using microcomputer systems.  However, the basic

             structure  of ALGOL-M is similar enough to ALGOL-60 to allow

             simple conversion of  programs  from  one  language  to  the

             other.   This  was considered particularly important in view

             of the  fact  that  the  standard  publication  language  is

             ALGOL-60.    Therefore,  there  exists  a  large  source  of

             applications programs and library procedures  which  can  be

             simply converted to execute under ALGOL-M.


                 1.  Type Declarations

                     ALGOL-M supports three types of variables: integers,

             decimals,   and  strings.  Integers may be any value between

             -16,383 and +16,383.  Decimals may be declared with up to 18

             digits  of  precision and strings may be declared as long as

             255 characters.  The default precision for decimals  is  ten

             digits and the default length for strings is ten characters.

             Decimal and string variable lengths may be integer variables

             which can be assigned actual values at run-time.

                     Another form of declaration in ALGOL-M is the  array


                                          1





             declaration.  Arrays may  have up  to  255  dimensions  with

             each dimension ranging from       0 to +16,383.  The maximum

             8080  microprocesor  address  space  of  63k  bytes   limits

             practical   array   sizes  to  something  smaller  than  the

             maximum.  Dimension bounds may be integer variables with the

             actual  values  assigned at run-time.  Arrays may be of type

             integer, decimal or string.


                 2.  Arithmetic Processing

                     Integer and  binary  coded  decimal  arithmetic  are

             supported  under  ALGOL-M.   Integers may be used in decimal

             expressions and will be converted to decimals  at  run-time.

             The  integer  and  decimal  comparisons  of  less-than  (<),

             greater-than (>), equal-to  (=),  not-equal-to  (<>),  less-

             than-or-equal-to (<=), and greater-than-or-equal-to (>=) are

             provided.  Additionally, the logical operators AND,  OR  and

             NOT are available.


                 3.  Control Structures

                     ALGOL-M control structures consist  of  BEGIN,  END,

             FOR, IF THEN, IF THEN ELSE, WHILE, CASE and GOTO constructs.

             Function and  procedure  calls  are  also  used  as  control

             structures.   ALGOL-M  is  a block stuctured language with a

             block normally bracketed by a BEGIN and an END.  Blocks  may

             be  nested  within  other  blocks to nine levels.  Variables

             which are declared within a block  can  only  be  referenced

             within that block or a block nested within that block.  Once

             program control proceeds outside  of  a  block  in  which  a

             variable   has  been  declared,  the  variable  may  not  be


                                          2





             referenced and, in fact, run-time  storage  space  for  that

             variable no longer exists.

                     Functions, when called, return an  integer,  decimal

             or  string  value  depending  on  the  type of the function.

             Procedures  do  not  return  a  value  when  called.    Both

             functions  and  procedures  may have zero or more parameters

             which are call by value and both may be called recursively.


                 3.  Input/Output

                     The ALGOL-M WRITE statement  causes  output  to  the

             console on a new line.  The desired output is specified in a

             write  list  which  is  enclosed  in  parentheses.    String

             constants  may be used in a write list and are characterized

             by being enclosed in quotation marks.   Any  combination  of

             integer,  decimal  and  string  variables or expressions may

             also be used in a write list.  A WRITEON statement  is  also

             available  which  is  essentially  the  same  as  the  WRITE

             statement except that output continues on the same  line  as

             the output from a previous WRITE or WRITEON statement.  When

             a total of 80 characters have been written to the console, a

             new line is started automatically.  A TAB option may also be

             used in the write list which causes the  following  item  in

             the  write  list  to  be  spaced  to the right by a specifed

             amount.

                     Console input is accomplished by the READ  statement

             followed  by  a  read  list  of  any combination of integer,

             decimal and string variables enclosed  in  parentheses.   If

             embedded  blanks  are  desired  in  the  input  for a string



                                          3





             variable, the console input must be  enclosed  in  quotation

             marks.   A  READ  statement will result in a halt in program

             execution at run-time until the input values  are  typed  at

             the  console  and  a carriage return is sent.  If the values

             typed at the console match the read list in number and type,

             program  execution  continues.   If an error as to number or

             type of variables from the console occurs, program execution

             is again halted until values are re-entered on the console.


                 5.  Disk Access

                     ALGOL-M programs may read data from,  or write  data

             to,   one  or more disk files which may be located on one or

             more disk drives.  When file input  or  output  is  desired,

             the  appropriate  READ  or  WRITE  statement  is modified by

             placing a filename  identifier  immediately  after  READ  or

             WRITE.   The  actual name of the file may be assigned to the

             file name identifier when the program is written or  it  may

             be assigned at run-time.  Various disk drives are referenced

             by the letters  A  through  Z.   A  specific  drive  may  be

             specified by prefixing the actual file name with the desired

             drive letter followed by a colon.  Additionally,  if  random

             file  access  is  desired,  the  file name identifier may be

             followed by a comma and an integer constant or variable.

             This integer value specifies the record within the file which 

             is to be used for input/output.


                     Prior to the use of a file name identifier in a READ

             or  WRITE statement, the file name identifier must appear in

             a file declaration statement.  The file name identifier  can



                                          4





             only be referenced within the same block (or a lower  block)

             as  the  file  declaration.   Files  are normally treated as

             unblocked sequential files.  However, if blocked  files  are

             desired,  the  record  length may optionally be specified in

             brackets after the  file  name  identifier  in  the  file

             declaration statement.


