This paper supersedes Technical Paper No 12 and describes the generation system in use for Version II. The main changes concern the method of inserting COMMON, the number of source files and the use of exofiles.
The macro SPROGS in :SPROGS will refer to the developing system. When issued, Version II will be available from the macro SPROGS under :MACROS.
The two library files will be held in:
SPROGSEMIE1 SPROGSEMIE2 with previous copies in: SPROGSEMI1X SPROGSEM12X all under :SPROGS . When issued, Version II will be held in SPROGSEMI1 SPROGSEMI2 under :SUBLIB A version, suitable for use with overlays, is available in SPROGSEMIO1 SPROGSEMIO2 under :SPROGS, but is not directly accessible by the macros.
Source files are all kept in :BSOURCE. They are:
FORTSRC1 Block data COMMON initialisation FORTSRC2 Low level routines, such as STSPR, DVOUT etc FORTSRC3 Low level library routines, mainly array access functions FORTSRC4 Library routines using lower level ones FORTSRC5 Execution routines for Display Routines FORTSRC6 FIDF, INTERP etc FORTSRC7 Display Routines FORTSRC8 High level routines PLANSRC2 Low level PLAN device routines PLANSRC3 PLAN library PLANSRC4 PLAN routines needing to be ordered
The source of the system is changed infrequently. Instead, additions are made to edits files, which are stored under :BSEDITS. File names are the same as source names, with the letters ED added to the front of the name, for example:
EDFORTSRC1
The system common blocks are stored in files under :BSCOMMON. The files are:
SPRG1 I/0 FORTRAN block SPRG2 File stack block SPRG3 General FORTRAN block SPRG4 Error handling block SPRG5 Real constants SPRG1X PLAN version of SPRG1 SPRG3X PLAN version of SPRG3
The semi-compiled generated from individual file compilations is stored in files whose names are the same as source names, with the letters SRC replaced by SEMI. FORTSEMII is a filestore file under :SPRGSEMI. A11 the others are on EDS30 pack 2 as exofiles.
Overlay semicompiled is stored in files with OV as the last two letters of the name. FORTSEMI1OV is in :SPRGSEMI, with the others on pack 2.
The system is generated from these files by using XPES to concatenate them and XFYZ to compact the resulting files.
The macro:
SPROGSGEN parameter list
under :SPROGS initiates a generation run. The following parameters are possible.
2.1.1 If the first parameter is null, or if ALL is present, every routine is recompiled.
2.1.2 If NONE is present, the system is generated from the semi-compiled only.
2.1.3 If the names of source routines (without the letters SRC) are added, for example:
FORT1, PLAN2, FORT4
only these files are recompiled.
2.1.4 XFEH is used to compile the system. If NOPT is present, XFIH is is used instead.
2.1.5 OVER will cause the overlay version to be recompiled.
2.1.6 NOLIB will prevent any library generation. The routines·will be compiled only.
2.1.7 JT allows a job time to be specified.
2.1.8 MZ will set maxsize to 120K. This will only be necessary for very long label-less FORTRAN programs.
The generation programs reside in :BSLIB.
SPROGSGEN1 Steering macro SPROGSEDIT Edits source file and compiles SPROGSLIB Steering macro for XPES and XFYZ SPROGSLIB1 XPES macro.
Source file editing involves applying any edit file for the given source file, and then listing the COMMON blocks. In FORTRAN, the COMMON blocks are referenced by:
*INCLUDE (*CR, : BSCOMMON.blockname)
At the moment, inclusion is done by the file :BSEDITS.EDFORTCOMMON generating an edits file to be applied to the original source. However, a new version of the FORTRAN compiler should allow the compiler itself to do the insertion.
In PLAN, the COMMON blocks are referenced by:
==COMMON blockname and :BSEDITS.EDPLANCOMMON generates the required edits file.
If an edit, compilation or XFYZ run fails, no semi-compiled library update is performed. XPES errors are noted and ignored.
Regeneration runs can always be restarted in the event of failure. Error messages are preceded by========