Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ Contents1. Introduction2. Basic symbols and comments3. Identifiers, accumulators and cells4. Types and values5. Addresses and storage allocation6. Simple cell designation7. Assignment statements8. Integer accumulator assignments9. Real accumulator assignments10. Long accumulator assignments11. Cell assignments12. Block structure13. Procedures and labels14. Conditional and control statements15. Functions16. Cell declarations17. Synonym declarations18. Storage allocation19. Subcompilation and global storage20. Define statements, conditional compilation and include statements21. Compiler directives22. FORTRAN/PLASYD mixed programming23. ALGOL/PLASYD mixed programming24. Useful library routines25. Use of TASK macro to compile PLASYD programs26. SMO cell designation27. Compiler output28. PLAN instructions not provided for in PLASYD □ Appendices □ 1: Errors and comments2: 1900 character set3: Syntax definitions in alphabetical order4: Use of program XMED5: 1900 order code6: Code genereated for typical PLASYD statements7: A sample PLASYD program8: Less commonly used directivesReferences
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACLLiteratureICL 1906A manualsPLASYD
ACLLiteratureICL 1906A manualsPLASYD
ACL ACD C&A INF CCD CISD Archives
Further reading

Contents1. Introduction2. Basic symbols and comments3. Identifiers, accumulators and cells4. Types and values5. Addresses and storage allocation6. Simple cell designation7. Assignment statements8. Integer accumulator assignments9. Real accumulator assignments10. Long accumulator assignments11. Cell assignments12. Block structure13. Procedures and labels14. Conditional and control statements15. Functions16. Cell declarations17. Synonym declarations18. Storage allocation19. Subcompilation and global storage20. Define statements, conditional compilation and include statements21. Compiler directives22. FORTRAN/PLASYD mixed programming23. ALGOL/PLASYD mixed programming24. Useful library routines25. Use of TASK macro to compile PLASYD programs26. SMO cell designation27. Compiler output28. PLAN instructions not provided for in PLASYD
Appendices
1: Errors and comments2: 1900 character set3: Syntax definitions in alphabetical order4: Use of program XMED5: 1900 order code6: Code genereated for typical PLASYD statements7: A sample PLASYD program8: Less commonly used directivesReferences

21. COMPILER DIRECTIVES

21.1 Syntax

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

21.2 Program Description

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.

21.2.1 SENDTO

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.

21.2.2 SEMICOMPILED and LIBRARY

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.

21.2.3 NAME

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.

21.2.4 PROGRAM MODE

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.

21.3 Segment Description

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.

21.3.1 MACROFILE and PUBLICFILE

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.

21.3.2 LOCAL SEGMENTS and GLOBAL SEGMENTS, LOCAL Directive

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.

21.4 Program Source and Listing Control

The following directives are all optional and their effects last until they are reset by a directive of similar type, unless specified differently.

21.4.1 Compiler Listing Levels

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.

21.4.2 Switch Bit Settings

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.

⇑ Top of page
© Chilton Computing and UKRI Science and Technology Facilities Council webmaster@chilton-computing.org.uk
Our thanks to UKRI Science and Technology Facilities Council for hosting this site