home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPMHELP
/
ALGOLM.HLP
< prev
next >
Wrap
Text File
|
2000-06-30
|
13KB
|
239 lines
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.