<para>Even though an error return has been provided in the definition
of a function, in the use of the function the last argument may be
omitted. If it is omitted, execution of the ERROR RETURN statement
-will cause control <!-- beginpage --> to be transferred to the
-operating system in which the translated program is imbedded, with an
-error indication.</para>
+will cause control
+<!-- beginpage II.21 -->
+to be transferred to the operating system in which the translated
+program is imbedded, with an error indication.</para>
<note><para>The Retrocomputing Museum implementation generates code
that prints ERROR RETURN and terminates the program.</para></note>
location to be used for temporary storage. Consecutive elements will
be used as required by the following statements.</para>
</listitem>
-<!-- beginpage -->
+<!-- beginpage II.22 -->
<listitem>
<para>SAVE DATA &scriptL;</para>
</listitem>
</orderedlist>
</sect2>
-<!-- beginpage -->
+<!-- beginpage II.23 -->
<sect2><title>Input-Output Statements</title>
<note><para> The Retrocomputing Museum implementation does not
</varlistentry>
<varlistentry>
<term>WRITE BINARY TAPE &scriptN;, &scriptL;</term>
-<!-- beginpage -->
+<!-- beginpage II.24 -->
<listitem>
<para>Transmits &scriptL; to tape &scriptN; in binary form as one
record.</para>
subroutine which returns control to the system in which the translated
program is imbedded) is automatically entered. This action can be
changed by executing the statement EXECUTE SETEOF. (&scriptS;). The
-subroutine SETEOF. <!-- beginpage --> sets the read routines to transfer to the
-executable statement labelled &scriptS; when an end-of-file is
-encountered. If the statement EXECUTED SETEOF. (0) is executed the
-read routines will be reset to enter SYSTEM. when an end-of-file is
-encountered.</para>
+subroutine SETEOF.
+<!-- beginpage II.25 -->
+sets the read routines to transfer to the executable statement
+labelled &scriptS; when an end-of-file is encountered. If the
+statement EXECUTED SETEOF. (0) is executed the read routines will be
+reset to enter SYSTEM. when an end-of-file is encountered.</para>
<para>Normally, if an end-of-tape is encountered while executing a
WRITE BCD TAPE or WRITE BINARY TAPE statement, the tape is rewound, a
whose values are to be printed or punched or whose values are to be
read. (Occasionally, the information is contined entirely in the
format specification, so the list may be empty.) A format
-specification is a string of alphabetic characters (as <!-- beginpage
---> described below) terminated by an "*". This string is stored six
+specification is a string of alphabetic characters (as
+<!-- beginpage II.26 -->
+described below) terminated by an "*". This string is stored six
characters per computer word in a vector with integer mode. This
vector may be preset (see <xref linkend='VECTOR_VALUES'/>), computed,
or read in as data.</para>
following table. In each case the carriage control character is
effective before the rest of the specification is carried out.</para>
-<!-- beginpage -->
+<!-- beginpage II.27 -->
<informaltable frame='none' colsep='0' rowsep='0' role='centered'>
<tgroup cols='2'>
<para>(For the purposes of input-output the Boolean values 0B, 1B are
considered as integers and will be punched in cards and appear in
print as 0, 1.)
-<!-- beginpage -->
+<!-- beginpage II.28 -->
The integer indicates the size of the field; i.e.,
the number of available columns to be used. For example, K3 indicates
a 3-column octal field, C23 indicates a 23-column character field,
<para role='centered'>
+0.x<subscript>1</subscript>x<subscript>2</subscript>x<subscript>3</subscript>x<subscript>4</subscript>x<subscript>5</subscript>E±n<subscript>1</subscript> n<subscript>2</subscript>
</para>
-<!-- beginpage -->
+<!-- beginpage II.29 -->
<para>where n<subscript>1</subscript>n<subscript>2</subscript> is the
exponent. On <emphasis>input cards</emphasis> numbers in E fields
the computer and outside.</para>
</sect3>
-<!-- beginpage -->
+<!-- beginpage II.30 -->
<sect3 id='field_repetition'><title>Repetition of Basic Field Specifications</title>
<para>If several consecutive fields can be described by the same basic
number itself to be modified, but the exponent is correspondingly
modified so the true value of the number remains <emphasis> unchanged
</emphasis>. Thus the number 0.9321E-3 would print as 0.9321E-03
-<!-- beginpage -->
+<!-- beginpage II.31 -->
according to the specification E18.4*, but it would print as
93.2100E-05 according to the specification 2PE18.4*. Unlike an F
number, the <emphasis> value </emphasis> is the same in either
characters in a Hollerith string. Note also, that while every field
specification of types S, I, E, F, K, and C must be followed by
commas, the comma may be omitted after a
-<!-- beginpage -->
+<!-- beginpage II.32 -->
Hollerith string of the type
described here. The comma may be used, however, if desired.</para>
</sect3>
subroutine scans both the list and the specification simultaneously,
correlating corresponding entries, and associating a field size, a
type of conversion, etc. to each variable.
-<!-- beginpage -->
+<!-- beginpage II.33 -->
If a Hollerith string is
encountered in the specification, it is immediately transmitted, and
it is not associated with any item on the "list."</para>
<para role='centered'>
3F10.3 /4(F10.3, 6HBETA = I2)*
</para>
-<!-- beginpage -->
+<!-- beginpage II.34 -->
<para>the first line printed (or read) would have three fixed point numbers,
subsequent lines would all be printed (or read) according to the
</sect3>
</sect2>
</sect1>
-<!-- beginpage -->
+<!-- beginpage II.35 -->
<sect1><title>Declarations (Non-executable statements)</title>
<para>All constants are automatically assigned modes by the translator
(see <xref linkend='constants'/>). Other automatic assignments of
modes are:</para>
-<!-- beginpage -->
+<!-- beginpage II.36 -->
<orderedlist numeration='loweralpha'>
<listitem><para>A name appearing in the statement label field is
program, as many variables as desired may be "declared" in any
dimension declaration. The declaration consists of the word
DIMENSION, followed by
-<!-- beginpage -->
+<!-- beginpage II.37 -->
the variables to be declared. Each variable is
immediately followed by one or two arguments (separated by a comma)
enclosed in parentheses, as follows:</para>
region depending on the value of V(1) at the time a reference is made
ot a matrix element during execution of the program. Observe that
this ability to vary the location of the initial array element (i.e.,
-<!-- beginpage -->
+<!-- beginpage II.38 -->
the array element with unit indices) within the linear array allows
the effective use of negative subscripts - in spite of the fact that
the defined ranges of the subscripts are positive.</para>
storage location throughout the program, that MATRIX and XARRAY are to
represent the same storage location through the program, etc. (Two
variables which
-<!-- beginpage -->
+<!-- beginpage II.39 -->
represent the same location always have the same value at any given
time.) Thus, any number of equivalences may be established by one
EQUIVALENCE declaration, and any number of such declarations may occur
disjoint (i.e., non-overlapping in storage), but are assigned to a
special section of storage which is separate from the usual storage of
variables and
-<!-- beginpage -->
+<!-- beginpage II.40 -->
arrays. Each ERASABLE declaration eliminates the effect of previous
assignments to this special section of storage, thus allowing several
arrays to occupy the same storage at different times. It should be
<!-- The script L in this section is lowercase in the original -->
<para>Any vector or portion of a vector (or array when considered as a
vector, i.e., using linear subscripts) may be preset by a declaration
+<!-- beginpage II.41 -->
of the following form:</para>
<para>(a) VECTOR VALUES &scriptV; = c<subscript>0</subscript>,
<para>There are two main types of functions: The <emphasis> internal
</emphasis> function and the <emphasis> external </emphasis> function.
Since these are quite similar in many ways, that part of the
-description which is specific to external functions <!-- beginpage -->
-will be given in <xref linkend='external_functions'/>, that which is
-specific to internal functions in <xref
-linkend='internal_functions'/>, and that which is common to both types
-will follow in subsection <xref linkend='internal_and_external'/>.
-Throughout this section a single-valued function will be called a
-"function", and a function with multiple outputs and/or multiple exits
-will be called a "procedure". For the purposes of this manual a
-recursive function is one whose definition contains calls for the
-function being defined -- or calls for functions which ultimately call
-the one being defined. Recursive functions have the same structure as
-other functions although, in general, they will include statements of
-the type described in <xref linkend='list_statements'/>, and certain
+description which is specific to external functions will be
+<!-- beginpage II.42 -->
+given in <xref linkend='external_functions'/>, that which is specific
+to internal functions in <xref linkend='internal_functions'/>, and
+that which is common to both types will follow in subsection <xref
+linkend='internal_and_external'/>. Throughout this section a
+single-valued function will be called a "function", and a function
+with multiple outputs and/or multiple exits will be called a
+"procedure". For the purposes of this manual a recursive function is
+one whose definition contains calls for the function being defined --
+or calls for functions which ultimately call the one being defined.
+Recursive functions have the same structure as other functions
+although, in general, they will include statements of the type
+described in <xref linkend='list_statements'/>, and certain
considerations should be borne in mind when constructing such
functions. These considerations arise from the fact that <emphasis>
names </emphasis>, instead of values, are used as function arguments.
translated as part of the main program. The word "INTERNAL" also
implies that any variables or functions not listed as arguments in the
definition of the
-<!-- beginpage -->
+<!-- beginpage II.43 -->
function (but used in its evaluation), are understood to be the same
as elsewhere in the main program, and the current values of these
variables and functions will be used. Names of variables and
</para>
<para>As indicated above, X, Y, and Z, as they occur here, are dummy
-<!-- beginpage -->
+<!-- beginpage II.44 -->
variables, and (X, Y, Z) is the dummy variable list. The current value
of T, however, will be obtained and used each time the value of the
function is needed. An example of theuse of the function so defined
</sect3>
<sect3 id='internal_and_external'><title>Internal and External Functions</title>
-
<para>Each function definition (except single statement definitions
described in <xref linkend='internal_functions'/>) may define any
number of functions and/or any number of procedures. Within one
CPADD.(X,Y,A,B)and CPMPY.(X,Y,A,B) may be defined, if desired, by one
definition, but the functions SIN.(X) and ARCTAN.(X.Y) would require
separate definitions.
-<!-- beginpage -->
+<!-- beginpage II.45 -->
Similarly, the procedures RXSUB. and ADAMS. could be defined by the
same definition if they have the same outputs, say Z and W, and the
same input parameters, say X, Y, T, and N. However, if they did not
the words INTERNAL (or EXTERNAL) FUNCTION is the dummy variable list
((X) in this example). The END OF FUNCTION declaration is the last
statement in the function definition program. (In an external
-<!-- beginpage -->
+<!-- beginpage II.46 -->
function definition this is also the last statement in the program.)
An entry must provided for each function being defined, but several
functions may share any number of FUNCTION RETURN statements. An