home *** CD-ROM | disk | FTP | other *** search
- 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.