file ::= filename|filename (integer) subfile ::= subfilename|subfilename (integer) subdescrip ::= file. subfile|file|. subfile
The integer is, in each case, the generation number of the file or subfile.
sendto ::= SENDTO (file. subfile)|SEND TO (file. subfile) addto ::= ADDTO (file. subfile)|ADD TO (file. subfile) dumpon ::= DUMPON (file)|DUMP ON (file) libfile ::= LIBRARY (file. subfile) semifile ::= SEMICOMPILED (file. subfile) nameline ::= NAME (name)
where name is the four character name of the program
trusted ::= TRUSTED (integer) priority ::= PRIORITY (integer) progmode ::= PROGRAM MODE (pmodedescrip) pmodedescrip ::= mdα, mdβ, mdδ|mdα, mdβ|mdα
where α β δ = a b c in any combination
mda ::= 15AM|22AM mdb ::= DBM|EBM mdc ::= 15CH|22CH|MIXAM updown ::= UPPER, LOWER|LOWER, UPPER|UPPER|LOWER progeven ::= PROGEVEN (UPDOWN) ignore ::= IGNORE (updown) segments ::= SEGMENTS namelist ::= name, namelist|name overlay ::= OVERLAY (integer, integer) namelist overcommon ::= OVERCOMMON (integer) namelist segmode ::= SEGMENT MODE (smodedescrip) smodedescrip ::= mdα, mdβ|mdα
where α β = d e in either order
mdd ::= 15AM|22AM|MIXAM mde ::= DBM|EBM|MIXBM segeven ::= SEGEVEN (updown)|SEGEVEN smomacro ::= SMOMACRO compilesmo ::= COMPILESMO localseg ::= LOCAL SEGMENTS globalseg ::= GLOBAL SEGMENTS local ::= LOCAL localtail localtail ::= ALL|: namelist|ALL BUT:namelist macrofile ::= MACROFILE (file) publicfile ::= PUBLICFILE (file) readfrom ::= READ FROM (subdescrip) listlevel ::= LIST|SHORTLIST|NOLIST tabset ::= TAB integer switch ::= SWITCH(numberlist) numberlist ::= integer, nunberlist|integer
Program description directives occur before the first segment of the program and may not be repeated unless this is specifically permitted in the description of the individual directive. Their effect lasts until the end of compilation. The directives described in the present chapter will be adequate for the majority of programs. Descriptions of less commonly used directives will be given in an appendix.
This directive is used to specify the output file and subfile to which the semicompiled generated by the PLASYD compiler, is to be sent, and there must be one such directive. The filename given is irrelevant when the compiler is run under GEORGE.
The SEMICOMPILED and LIBRARY directives specify files containing previously compiled segments, which are to be consolidated with the segments currently being compiled. If a SEMICOMPILED directive is used, all the segments in the named file will be consolidated. If LIBRARY, only those segments which have been referred to by earlier segments will be consolidated. There may be any number of LIBRARY and SEMICOMPILED directives, subject to the consolidator limitation of twelve input files. This number includes the file currently being processed. The filename specified in the SEMICOMPILED and LIBRARY directives is irrelevant.
This directive specifies the four character program name of the binary to be produced from the source currently being compiled. The characters must be alphanumeric and the first must be a letter. More than four characters may be given up to a maximum of twelve, but only the first four are significant. If this directive is omitted, a default name of XXXX is assumed. The program name serves no useful function, but it is printed on the compiler and consolidator listing and may therefore be of some use as a form of comment.
The address and branch modes in which a program is to be run are specified by means of a PROGRAM MODE directive. The address mode may be specified as 15AM or as 22AM. If it is not specified 15AM is assumed. The branch mode may be specified as DBM or EBM. If it is not specified, DBM is assumed. The consolidator address checking mode may be specified as 15CH, 22CH, or MIXAM, the latter meaning no checks. If it is not specified the specified or assumed address mode parameter is used. If the directive is omitted completely, the assumed settings are:
PROGRAM MODE (15AM, DBM, 15CH)
15AM corresponds to the FORTRAN directive COMPACT DATA and 22AM to EXTENDED DATA. DBM corresponds to the FORTRAN directive COMPACT PROGRAM and EBM to EXTENDED PROGRAM.
SEGMENT DESCRIPTION directives are placed before any segment of a multisegment program or before the lone segment if there is only one. They may be repeated before subsequent segments, and unless stated to the contrary their effect lasts until they are reset by another directive of the same type, or until the end of the compilation.
These directives are used to specify the file containing library source texts, to be used by INCLUDE statements. If both MACROFILE and PUBLICFILE directives are given, the compiler will search for the required subfile in the macrofile before searching the publicfile. The filenames specified are irrelevant under GEORGE, as the operating system will provide the files required.
The LOCAL SEGMENTS directive informs the compiler that global labels and procedure names in subsequent segments will only be referenced from the overlay in which they appear. The GLOBAL SEGMENTS directive specifies that subsequent global labels and procedure names may be referenced from other overlays. The default setting is GLOBAL SEGMENTS and if this is not altered a substantial amount of overlay changing code will be incorporated, which will not be required in a non-overlaid program. The LOCAL directive specifies which of the global labels in a segment following are to be referenced only from the same overlay and which external labels referenced from that segment are in the same overlay. There are three forms of this directive:
LOCAL ALL; all labels in the same overlay LOCAL: namelist; specified labels in the same overlay LOCAL ALL BUT: namelist; labels other than those specified are in the same overlay.
If a LOCAL SEGMENTS directive is in force, all global labels must be declared local to their overlay. This may conveniently be done by preceding each segment with a LOCAL ALL directive. Note that a LOCAL directive only refers to the segment immediately following.
The following directives are all optional and their effects last until they are reset by a directive of similar type, unless specified differently.
There are three directives which may be used to specify the amount of output required from the compiler. The directive NOLIST will suppress all compiler output. SHORTLIST will cause those lines to which the compiler has added error messages or comments to be listed. LIST will produce full listing of the source code, with any error messages and comments, plus a detailed list of the core store required by each segment. The default setting is LIST.
If it is desired to use the conditional compilation facility as described in Section 20.3, the appropriate bits in the switch word may be set by means of the SWITCH directive. If several bits are to be set at the same time, this may be done by giving a list of numbers within one SWITCH directive or by giving several directives. For example the following sequences will both set 2, 4 and 6 of the switch word.
(a) SWITCH (2) (b) SWITCH (2,4,6) SWITCH (4) SWITCH (6)
Note that bits 0 to 10 may be used for controlling conditional compilation, but the bit 0 is also used to indicate that a listing of the semicompiled code produced by the compiler is required. Note also that the effect of switch directives only lasts until the end of the segment they precede.