Invoking the ALGOL/M Compiler and Run-Time System
ALGOL/M Reserved Words
ALGOL-M LANGUAGE DESCRIPTION
ALGOL-M LANGUAGE DESCRIPTION -- Type Declarations
ALGOL-M LANGUAGE DESCRIPTION -- Arithmetic Processing
ALGOL-M LANGUAGE DESCRIPTION -- Control Structures
ALGOL-M LANGUAGE DESCRIPTION -- Input/Output
ALGOL-M LANGUAGE DESCRIPTION -- Disk Access
ALGOL-M Compiler Error Messages
ALGOL-M Run-Time Error and Warning Messages
:Invoking the ALGOL/M Compiler and Run-Time System

     ALGOL/M is invoked by typing --

          ALGOLM filename $option

where 'filename' is the name of the file 'filename.ALG' which contains 
the  source  of  the ALGOL/M program.   Upon executing  this  command, 
ALGOL/M  will  compile this source program into the pseudo  code  file 
'filename.AIN' which can then be executed by typing --

          RUNALG filename

where 'filename' is the name of the file 'filename.INT' which contains 
the ALGOL/M pseudo code.

     The options recognized by the ALGOL/M Compiler are --

          $A        Generate a listing at the terminal
          $E        Set Trace Mode for execution under RUNALG
          $AE       Do Both of the above
:ALGOL/M Reserved Words

	AND		ARRAY		BEGIN		CASE
	CLOSE		DECIMAL		DO		ELSE
	END		FILE		FUNCTION	GO
	GOTO		IF		INTEGER		NOT
	OF		ONENDFILE	OR		PROCEDURE
	READ		STEP		STRING		TAB
	THEN		TO		UNTIL		WHILE
	WRITE		WRITEON
:ALGOL-M LANGUAGE DESCRIPTION

                 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.
:ALGOL-M LANGUAGE DESCRIPTION -- 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
             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.
:ALGOL-M LANGUAGE DESCRIPTION -- 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.
:ALGOL-M LANGUAGE DESCRIPTION -- 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
             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.
:ALGOL-M LANGUAGE DESCRIPTION -- 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
             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.
:ALGOL-M LANGUAGE DESCRIPTION -- 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
             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.
:ALGOL-M Compiler Error Messages

AS      Function/Procedure on left hand side of assignment
        statement.
BP      Incorrect bound pair subtype (must be integer).
DE      Disk error; no corrective action can be taken  
        in the program.
DD      Doubly declared identifier, label, variable etc.
FP      Incorrect file open statement.
IC      Invalid special character.
ID      Subtypes incompatible (decimal values can not be
        assigned to integer variables).
IO      Integer overflow.
IT      Identifier is not declared as a simple variable or
        function.
NG      No ALG file found.
NI      Subtype is not integer.
NP      No applicable production exists.
NS      Subtype is not string.
NT      For clause,Step expression,Until clause expressions are not
        of the same subtype.(must all be integer or decimal).

PC      Number of parameters in procedure call does not match the 
        number in the procedure declaration.
PD      Undeclared parameter.
PM      Parameter type does not match the declared type.
SO      Stack overflow.
SI      Array subscript is not of subtype integer.
TD      Subtype has to be integer or decimal.
TM      Subtypes do not match or are incompatible.
TO      Symbol table overflow.
TS      Undeclared subscripted variable.
UD      Undeclared identifier.
UF      Undeclared file/function.
UL      Undeclared label.
UP      Undeclared procedure.
US      Undeclared simple variable.
VO      Varc table overflow.  Possibly caused by too many 
        long identifiers.
:ALGOL-M Run-Time Error and Warning Messages

          ERROR Messages

AB      Array subscript out of bounds.
CE      Disk file close error.
DB      Input field length is larger then the buffer size.
DW      Disk file write error.
ER      Variable block size write error.
IO      Integer overflow(integer value greater than 16383).
IR      Record number incorrect or random file is not initialized.
ME      Disk file creation error.
NA      No AIN file found on directory.
OV      Decimal register overflow during arithmetic operation/
        load.
RE      Attempt to read past end of record on blocked file.
RU      Attempt to random access a non-blocked file.
SK      Stack overflow(no more memory available).

           WARNING Messages
 
AZ      Attempt to allocate null decimal or string,
        system defaults to 10 digits/characters.
DO      Decimal overflow during store operation. The value of
        the variable is set to 1.0 and execution continues.
        The variable's allocation size should be increased in
        it's declaration statement.
DI      Disk file variable format error.
DZ      Decimal division by zero, result is set to 1.0.
EF      End of file on read.
IA      Integer addition/subtraction over/under flow 
        result is set to 1.
II      Invalid Console Input. Try input again.
IR      Record number incorrect or random file is not initialized.
IZ      Integer division by zero. Divisor set to 1 and 
        division is completed.
NX      Negative exponential. Exponentiation not done.
SO      Characters lost during string store.

.
