P ROC RAMM I NG SYSTEMS ANALYSIS GUIDE
70917090 32K FORTRAN
Preliminary Copy
91 96 1 by International Business Machine. Corporation Printed in
U.
S. A, FormR23- 9673
TABLE OF
CONTENTSFORTRAN
MONITOR 1Introduction 2
Start Card and 1-CS 7
Listing of Fortran Start
Card
8Listing of
1
CS ?Card to Tape Simulator 10
D u m p 13
Sign On 14
F ~ P 16
Scan
17
BSS
Control 2 1Machine Error 23
Source Error 24
Tape Mover 25
FORTRAN
COMPILER29
lnt roduc tion Section I Section I' Section I"
Section 11 Section I11
rntrpductim
Pi?&.,
I V :and V Section IVSection V Section V ' Section
VI
Fortran Library 97
1nput /Output Library 100 General Diagnostics 1.0 6 Tables Generated By Fortran 1 1 1
ASSIGNED CONSTANT 1 1 1 CALLFN (CALLNM)
1 1 1CLOSUB 112
C.
I. T (Compiled InetrtiEWe@lXCOMMON 113
DIM 1 1 4
DOFILE
(C)
115DOTAG
(B)
115EIFNO
115END us
EQUIT
116FIXCON 117
FLOCON F M T E F N
FOR M A T FORSUB
FOR TAGFORVAL and FORVAR FRET
XOLARG NOMEXC
PREDESSOR
SI
z
SUBDEF
SUCCESSOR TAU
TDO
TIEFNO TIFGOTIFGO
FILE
TRADTSTOPS
APPENDICES
(I)
A Fortran Tape StatusBy
SectionB
Edit Record ChartFORTRAN
MONITOR ~ . 0 0 . 0 0INTRODUCTION 1.
Of,
08\.
TheFORTRAN
System tape i s written as four files. (See F i g u r e 1.)The
f i r s t file constitutes the m a j o r portion of the monitor. Contained a e indi- vidual r e c o r d s in this f i r s t file in o r d e r a s they appear on t a p e a r e 1-CS, C a r d to Tape Simulator, Dump, Sign On, F A P I and 11, Scan,BSS Control,
Machine E r r o r r e c o r d , and the Source E r r o r record. (See Figure 2.).The second file i s the
FORTRAN
Compiler plus t h e Tape M o v e r record and an additionalBSS
Control. This secondBSS
Control is used to s a v e t i m e i f execution i e deaired, otherwise the System tape would have to be backspaced t o the f i r s t file to read BSS Control. All the library eubroutiner thatFORTRAN
andF A P
r e q u i r e a r e contained i n the third file.The
FOR-T R A N
diagnostic routines and e r r o r m e s s a g e s are contained in the fourth and l a a t file on the System tape.The
FORTRAN
Monitor System may be ueed in both the monitorm o d e
and single compile mode. In the single compile mode. only FORTRAN compila- tion can be done. It also might be pointed out that in the single compile m a d e the only r e c o r d used i n the monitor file w i l l b e the Card to. Tape Simulator, from this controlpaaeee directly
to FORTRAN in the rrcond file.Since
the standard method og operation i s in t h e monitor mode, the deecrip- tfon of the ay s t e m w i l l be from this standpoint, and cnly under specfa1 con- ditions will the difference6 be pointed out.C
Operating i n the monitor mode, a l a r g e number of jobs may be .tacked otr
the input tape. The limiting factor to the number off jabs that may be stacked i 6 the capacity of t h e tape reel.
A
job m a y be defined as a basic unit that will be p r o c e s s e d by the b o n i t o r at any one time. It will consist of a t l e a s t one, but can contain many p r a g r a m e ,The
job can be in one of two s t a t e s , e i t h e r Execute o r Non-Execute. A s an Execute job, a l l p r o g r a m s in the job must be related to one another, these will be executed immediately a f t e r any a s s e m b l y o r compilation that is re-quired. As a Non-Execute job, the p r o g r a m 8 need not be related, since only a s s e m b l e o r compilation can be done. F o r a m o r e camprehenaive exo planation of job processing, r e f e r e n c e should be made to the 709/209'0 FOR-
TRAN
Monitor Reference Manual, F o r m C28- 6065.The
FORTRAN
Start Card i s used to initialize the System, TMa w i l l rewind the System tape, load the f i r s t r e c o r d , which i s 1-CS. 1-CS is a g e n e r a l pur- pose tape loading routine which r e m a i n s in lower c o r e s t o r a g e at all timesduring an assembly o r compilation. It i s used to load a l l monitor and FOR-
TRAN
r e c o r d s , and a f t e r loading w i l l t r a n s f e r control to t h e i r respectiveentry points,
<:
. Once 1-CS i s loaded, i t will in turn load the Card to Tape S i m u l a t o r , The Card t o Tape Simulator t e s t the c a r d reader. foz p r e s e n c e of c a d s , If the*
3
hopper i s empty, the input i s assumed to be f r o m tape. This tape will be A2 if in the monitor mode, if not in monitor mode, i. e . , single compile, the input tape i e
B2.
If c a r d s a r e found in the r e a d e r , a c a r d t o tape sim- plation will follow until all c a r d s have been read and the End of F i l e i s m e t , At this point'the next r e c o r d(DUMP)
i s skipped, control is again given to1-CS to read in the Sign On record. The Sign On r e c o r d will r e a d and p r i n t the f i r s t r e c o r d onthe input tape, this should be the I. D. card. It i s in the Sign On r e c o r d that the customer may i n s e r t h i s own coding to p r o c e s s accounting information that might be contained in the I. D. card. If a n a c - counting clock i s available in the machine, this a l s o could be r e a d a t this time,
At the completion of Sign On processing, the next two r e c o r d s
(FAP)
a r e skipped, control again p a s s e s to 1- CS to read the Monitor Scan record.Monitor Scan will read all remaining control c a r d s , and s e t up the ' p r o p e r indicators for processing by the appropriate routine. Control now p a s s e s v f a 1- CS to F A P if a F A P control c a r d h a s been encountered, o r to
BSS
Control i f the remaining c a r d s on the input tape a r e binary and the job is to be executed, i f neither of these conditions exist the monitor a s s u m e s a FORTRAN compilatiop, therefore, control p a s s e s t o FORTRAN in the second file,After the completion of a F A P ,
FORTRAN
o r BSS relocation, control p a s s e s back to the Monitor Scan record. This will continue until a l l p r o - p r o g r a m s in the job have been processed. At this time i f execution is d e s i r -ed, control once again p a s s e s to BSS control to load the relocated p r o g r a m and begin i t s processing. If this job w e r e not to be executed, control will p a s s back to the Sign On r e c o r d , instead of BSS Control, to begin the next job,
This whole p r o c e s s continues until no m o r e jobs a r e left to p r o c e s s , at this point the c a r d r e a d e r will be selected and the p r o g r a m hangs up. The operator now h a s the option of removing the output tape, loading a new in- put tape, and re-initializing the s y s t e m with the S t a r t Card, o r depressing the c a r d r e a d e r s t a r t key for a final stop,
1-CS
A N D START CARD
1. 02. 00 The Start Card i s a one c a r d self loading binary card. It i s used to initia- lize theFORTRAN
monitor system, for batch compiling and/or execution.To s e t the
FORTRAN
monitor in motion, the Start Card is placed in the c a r d r e a d e r , the load c a r d s button i s depreeaed, a bootstrap loader will then r e a d in the remainder of theSTART CARD.
Control i s passed to the location the f i r s t instruction beyond the bootstrap. The System tape is f i r s t rewound and then the f i r e t r e c o r d on the tape i s read in. The firat record i a theFOR- T R A N
loader called 1-CS, the tape read operation i s checked f o r a redundancy e r r o r , if one occurred the tape i s backspaced and another attempt is made . to read 1-CS. If t h r e e unsuccessful attempts are m a d e the p r o g r a m will HALT.If the Start button i e depressed three m o r e attempts will be made and s o on.
When the read operation i s succeseful a flag bit i s s e t in the sign position of location 4z8 to indicate that the jobs that follow w i l l be processed in the moni- t o r mode. Control now passes to location 508 in 1-CS.
1-CS will be used to lpad all monitr);. records and
F O R T R A N
Executive r e c o r d e , Ifredundancy
checks occur while reading any r e c o r d the p r o g r a m will HALT, only one attempt'will be m a d e per redundancy check.The f i r s t two words of any System r e c o r d contain the information n e c e s s a r y t o indicate where loading begins, how many words a r e t o be r e a d and where to t r a n s f e r control when loading i s complete. Also contained in'word two is the FORTRAN o r monitor r e c o r d number timee ten that i e being loaded, t h i s will be"used i f a cail i a made t o the Diagnostictrecord to a s c e r t a i n t b type of
diagnostic m e s aage that should print.
The make up of the firet two words- of any
F O R T R A N
o r Monitor r e c o r d a r e :I
WORD 1 3111
WORD
COUNT LOAD ADDRESSI
WORD 2 100 1
1 RECORD
NUMBERxioV//A
TRANSFERADDRESS[
Also contained with 1-CS i s the diagnostic r e c o r d caller. This routine will be used by
FORTRAN
SectionI1 through Section VI to call the Diagnostic file(file 4) f o r any e r r o r , source o r na chine. P r i o r to reading in the Main diagnor- t i c r e c o r d the area that i t w i l l occupy ia saved a s a single r e c o r d on tape A3.
.r
LISTING
OF
KIRTRAN START :3 tiF,:3The following is a listing of the Start Card and showa the instruction 6 0 - quence in the card and also the location in storage:
SEQUENCE . STORAGE ADDRESS, TAG,
ON
CARD LOCATIONS 0PERA.TION DECREMENTIOR T TCOA TTR LTM AXT
REWA RTBAR
CHATCOA TRCA
CAL STP
TRATIX HTR XOCP TCH
3, f 1- 1 160 151 156 153
42 (Monitor Flag) 1
146, 1, 1 a45
0 , , 3 0
LISTING
OF
1-CSThe following i s a lirting of 1-CS and ehowr the inetruction sequence on tape and also the locations in storage:
SEQUENCE STORAGE ADDRESS,
TAG,ON
TAPE LOCATIONS
OPERATION .DECREMENT
IOR
T 23,, 77777TCOA 1
TRA
50RTBA 1
RCHA 37
RTBA 1
R C H A
37W T B A
3RCHA 41
RTBA 1
RCHA
41TCOA
3 3TXI
157BSRA
3HTR 36
IOR
P N
0, 2, 77777TCH 37
IORT 156, 0 4704
PZE
(Monitor Flag Cell) PZE (Chain Flag Cell)PZE
(Chain Flag Cell)PZE
(Job Linee Output Counter)BSRA
1HPR
7 7 7 7 7 , 7RTBA 1
R
CHA 54TCOA 52
TRCA 46
IOSP 55, 0, 2
IOR
T
TXI **, , * * - ,
1 First two words of any monitor or
FORTRAN
record.CARD TO
TAPE
SIMULATOR 1.03.00 After the c a r d to tape simulator has been read into storage, by 1-CS, con- t r o l i s paaeed to it. This will be the only time that this program ia used.The monitor flag in 1-CS i s tested to determine, i f this is a monitor o r single compile operatien. The c a r d r e a d e r is then selected, i f an End-of- File is sensed on the f i r s t read cycle the program a s s u m e s the input i s f r o m tape. If the input i s from tape, control passes to record 3, Sign On, to begin processing the f i r s t job. I f we a r e not in the Monitor mode, c a r d to tape simulator will p a s s control directly to FORTRAN r e c o r d 10.
If
the c a r d r e a d e r End-of-File was not sensed, a simulated c a r d to tape opera- tion will follow. C a r d s with a 7-9 punch i n column 1, indicate that they are column binary and therefore must be converted to Row binary format before they may be written on tape. Carde with an 7 - 8 punch in
column
1 w i l l not be written on tape but cause an EOF to be generated on tape. All other c a r d s a r e considered to be Hollerith and a r e checked for illegal punching p r i o r t o being transcribed onto tape. Illegal Hollerith punching will cause the machine to stop with a HPR 7777, in the storage register. The r u l e s f o r correcting and reloading the c a r d r e a d e r a r e analogous t o a READCHECK
mtop on the off line c a r d reader.
The c a r d e a r e read i n double buffered, to allow the c a r d r e a d e r t o operate a t full epeed.
When the final EOF is sensed on the c a r d r e a d e r , a n E O F will be written
an
tape. The input tape is then rewound, . r e c o r d 2 is skipped and control is p a r s e d to, Sign On, r e c o r d 3.i f the monitor flag i s off, a t the termination of the c a r d t o tape simulation, the remainder of F i l e one w i l l be skipped and control pasred directly to,
FORTRAN
( r e c o r d 10).CARD T O A -5tMULATOR
M O n / / r O U RfiCORO '/
J t O A R f H , a6
r
f N f r f A 4 J Z C C UCCK H I 4 C
I ~ O A A ~ P CWCARO C O ~
( I U C C M S / U b A L P U K U ,
CO C O N V t A C
I
c o ~ u A / u ro ROW 8/4'4U/
U C G / N w u / r / w G our
UClJ 8 U C F r A
I
)
DUMP RECORD WITH
DUMP C A R D
1,04.00 The Dump i s used when trouble i s experienced during compilation o r ex- ecution of a job. This will give the P r o g r a m m e r o r Customer Engineer a printed r e c o r d of the contents of c o r e storage and the O P panel indica- t o r e , which can be used to a s c e r t a i n the possible c a u s e of trouble.' Actually the Dump r e c o r d can be called by t h r e e different methodq. TWO of theee a r e through the u s e of
FORTRAN
statements, these a r e CALL DUMP ( 7 ) and CALL PDUMP ( 7 ) . F o r the description and u s e of these see the 709/7090 FORTRAN MONITOR, Reference Manual ( F o r m Number . C28-6065). The third method of calling the Dump r e c o r d is by using the Dump c a r d , which ehould be available a t a l l installations using t h eFORTRAN System.
The Dump Card will ohly destroy the f i r e t t h r e e locations in storage. T h i r i s accomplished by initiating a Write tape to dump the f i r s t 3500g locations of storage, then delaying the information on the c a r d f r o m coming in until the locations n e c e s s a r y f o r storing thie information have been dumped on t o tape. This delay i s accomplished by reading the f i r s t fifteen worde of the card into locations 0, 1 and 2 and causing the p r o g r a m t o t r a n s f e r to itself a t location 1. After thie delay the System tape is rewound, the f i r s t and second r e c o r d s skipped and then the Dump r e c o r d is r e a d in, a t which t i m e control i e p a s s e d to it.
The
Dump p r o g r a m will cause the entire contents of m e m o r y t o be written onto tape A3, following any FORTRAN output f r o m this job o r f r o m previous jobs. The s t o r a g e entry switches a r e interrogated t o determine whether o r not mnemonics a r e to be included and t o s e e what c o u r s e of action t o take a f t e r completing the dump. These options are fully explained in t h e 709/7090 FORTRAN MONITOR, Reference Manual ( F o r m Number ~ 2 8 - 6 0 6 5 ) .
SIGN
ON
(RECORD 3)I-
Lk T h e Sign On r e c o r d i s called only a t the beginning o r end of job. The n u m b e r of l i n e s of output from the l a s t job i s picked up f r o m the linecount storage cell in 1-CS. This number if g r e a t e r than z e r o , i s convert- ed to decimal and written on and off line. If Sense Switch 6 is up, an E n d of F i l e will be written on tape B4, the .tacked column binary punch tape. At this t i m e a t e s t i s made to determine i f the input tape i s po-
sitioned to read a new job (at the beginning of file). If not, the tape is spaced forward until an End of F i l e i s encountered. The f i r s t r e c o r d o f the file i s then r e a d and i t i s then determined i f the first c h a r a c t e r i s an a s t e r i s k . If no a s t e r i s k i s found, a comment i s printed on line indicating t h i s , then the System tape ( A l ) i s spaced t o the Machine E r r o r r e c o r d and control p a s s e s to 1-CS. If the a s t e r i s k is found the r e c o r d i s f u r t h e r
scanned t o determine i f it i e a n
E n d
Tape card. If i t i e , the End Tape card i e written on and off line, and a load card button eequence is simulated to end monitor operation. If the f i r s t c a r d i s not an End Tape c a r d , i t is a s - . eumed to be a t r u e I.D.
card. At this point, space i s provided f o r the indi- vidual inetallation to i n s e r t coding for accounting purposes; t h e r e f o r e , atthis
point, difference8m a y
exirt fromone
inrtallation to another. As the standard program exietr, the I. D. card w i l l m e r e l y be written on and off line. After t r e a t i n g the I. D. r e c o r d , the System tape i s spaced to the Scan r e c o r d (r&:o;*d 6 ) , control is then pa'ssed to 1-CS.F A P (Records 4 and 5) 0.06.00
FAP
(FORTRAN ASSEMBLY PROGRAM) w a s written, by the Western Data Proceasing Center a t Los Angeles, to satisfy the need to produce machine language sub-programs for use with FORTRAN, F A P is a l s o a fast, v e r s a t i l e general purpose a s s e m b l e r f o r non- FORTRAN m a i n p r o g r a m s which h a s the additional advantage of operating within a moni- t o r system. Operating i n the monitor mode,. i t is possible t o a s s e m b l e and run a F A P assembled main p r o g r a m with the s a m e load.When assembling
FORTRAN
sub-programs,FAP
provides a l l n e c e s s a r y information for d i r e c t communication with FORTRAN p r o g r a m s , including the p r o g r a m c a r d and appropriate t r a n s f e r vector. Also, F A P output occupies the binary c a r d f o r m a t required by theBSS
loader.The output may a l s o be punched in the standard abeolute binary format, to be run independently of any operating system.
Operating under FORTRAN Monitor control i t is p o s i i b l e to input the symbolic deck on-line o r off-line, however, the listing will only b e written off -line.
F A P main p r o g r a m s may call upon
FORTRAN
subprograms, FORTRAN.l i b r a r y functions o r other FAP aubprograme.
The
Monitor s y s t e m and theBSS
loader provide the n e c e s s a r y communication, b a r e d upon infor- mation given by the p r o g r a m m e r in the calling sequencer. Because the Monitor will accept p r o g r a m s in either binary o r symbolic f o r m , all p r o g r a m s need not be assembled o r compiled a t the s a m e time.They may be assembled in stages, thus providing a very useful method of debugging the main program. One. section a t a time.
Detection of assembly e r r o r s does not stop the a s s e m b l y , but doee sup- p r e s s c a r d punching and execution. Diagnostic information is given i n
the assembly listing. Control will p a s s t o the Machine E r r o r r e c o r d o r Source E r r o r r e c o r d , depending upon the e r r o r detected.
Mr)
[ITOR SCAN (RECORD 6) 1. 07, 00 R e c o r d 6 i s the p r i m a r y monitor r e c o r d in that i t i n t e r p r e t s t h e control c a r d s which specify different s y s t e m p r o g r a m s L t o be called. It a l s o s c a n 8 FORTRAN p r o g r a m s and p r e p a r e s a single- compile input t a p e for thec o m p i l e r . Control i s p a s s e d t o Monitor Scan i n the following c i r c u m s t a n c e s : a ) F r o m r e c o r d 3 (Sign On) a f t e r p r o c e s s i n g a n I. D. c a r d a t the beginning
of a job
b) F r o m r e c o r d 5 ( F A P ) a f t e r completing a n a s s e m b l y not f o r execution.
c) F r o m r e c o r d 7 o r 4 3 (BSS) a f t e r relocating a s e r i e s o l b i n a r y p r o g r a m s when t h e r e a r e m o r e symbolic p r o g r a m s remaining i n t h e job.
d) F r o m r e c o r d 8 (machine e r r o r ) o r r e c o r d 9 ( s o u r c e e r r o r ) o r record 2 ' (dump) when i t h a s been d e t e r m i n e d that the job should be continued after a n e r r o r
e ) F r o m the r e s t a r t c a r d ''CONTINUE"
Operation i s a s follows: All input i s f r o m A2. R e c o r d s a r e r e a d double buffered and scanned f i r s t for an a s t e r i s k i n column 1. If t h i s i s found, the m n e m o n i c s on the c a r d a r e scanned and c o m p a r e d with a d i c t i o n a r y of c o n t r o l c a r d m n e m o n i c s . If no a s t e r i s k i s found, t h e c a r d i s a s u u m e d to b e p a r t of a
FORTRAN
p r o g r a m and a routine called SP is used. If the c a r d i s column b i n a r y , and an X E Q control c a r d h a s been e n c o u n t e r e d e a r l i e r in the job, control i s p a s s e d t o ~ S S control ( r e c o r d 7): If theXEQ
flag i s off, column binary c a r d s a r e ignored. A s t e r i s k c a r d s not i n t h e
dictionary a r e printed on and off line a s r e m a r k s and then ignored. FORTRAN s o u r c e p r o g r a m c a r d s a r e scanned and then t r a n s c r i b e d onto t a p e B2
(FORTRAN input). A FORTRAN s o u r c e c a r d with a
CALL
CHAIN ( N , Bn) will be changed t o CALL CHAIN (N, n). Upon encountering a n E N D c a r d ,a f a b r i c a t e d END c a r d i s simulated onto tape B2 containing output options as indicated by control c a r d s , previously encountered, P r o g r a m m e r ' s E N D c a r d options will be p r e s e r v e d i l not in conflict with c o n t r o l c a r d s , which
have precedence. A s t e r i s k (control c a r d s ) found i n the dictionary, a r e t r e a t e d as follows:
a)
X E Q
.- A flag in 1-CS i s s e t indicating execution i s d e s i r e d . A word of z e r o s i s w r i t t e n on the beginning of tape B 1 t o indi- c a t e that t h e r e i s no snapshot ( s e e r e c o r d 7).b) CHAIN ( )
-
If the execution flag i s off, t h i s i s t r e a t e d a s a r e m a r k c a r d . If on, t h e p a r a m e t e r s a r e examined a n d a unique control w o r d i s w r i t t e n on B 1 (in f r o n t of the z e r o w o r d ) and s t o r e d i n a c e l l (curchn) i n 1-CS. If t h i s i s t h e 1 s t l i n k , i t i s s t o r e d i n a different c e l l ( 1 s t chn). A chain flag i s s e t in 1-CS(FLGBX).
c) F A P
d) DATA
-
An E N D card i s simulated onto B2 containing control c a r d output options and control i s passed to FAP P a s s 1 ( r e c o r d 4).-
This should be encountered only i f t h e r e was no execu-.tion flag (or i f execution h a s been deleted). Control is pas oed to Sign On unless the execution flag is on, i n which c a s e an e r r o r meesage (incorrect deck set up) i e printed and control i s passed to the source e r r o r r e c o r d ( r e c o r d 9).
e) CARDS
-
A flag is s e t for theEND
c a r d routine to set the appropriate ROW, E N D c a r d optionsLIBE, ETC.
In summary, control i s then paseed a s followe:
Upon Recognizing:
a)
FORTRAN
END c a r d b) Column binary card c ) F A P control c a r d d) Deck e r r o re)
Machine
e r r o rG o
To:
-
Record 10
(FORTRAN)
Record 7
:335
Control) Record 4 ( F A P )Record 9
(Source
E r r o r ) Record 8 (Machine E r r o r ) Note: Monitor Scan h a s i t s own diagnostic m e s s a g e and print8 them on andoff line,
MO/Y/ TOR J C AN
RlCOALl 6
**S IAJr )rs/.eij
,
-#-* r/rnru Ad06BSS
CONTROL RECORD(RECORD
7 OR 43) 1. 08.00 R e c o r d s 7 and 43 a r e identical except f o r tape positioning, which of cou! s e , m a k e s the d e c r e m e n t of the second word on the Sy..ltem t a p e , the r e c o r d n u m b e r , different. T h i s r e c o r d i s duplicated in o r d e r to m a k e i t quickly a c c e s s i b l e either f r o m FORTRAN (second file) o r f r o m Monitor Scan when column binary c a r d s a r e encount.ered o r f r o m a just comple,tadT A P
a s s e m b l y . BSS a c c e p t s c a r d image input f r o m A2 (column binary c a r d s ) , B3(FAP
o rF O R T R A N
binary tape), o r A1 ( l i b r a r y subroutines) using a g e n e r a l i z e ddouble buffered r e a d routine.
he
BSS p r o g r a m is l o c a t e d d n the top of m e m - o r y , occupying the standard C O I - ~ m o n region.BSS w i l l locate binary c a r d i m a g e s into locations 144f3 to 730008 ?30008 to 744568 i s used for a table of BCD p r o g r a m n a m e s . a m i s s i n g subroutine table, and a T r a n s f e r Vector table. T h e s e t a b l e s together with s e v e r a l loading counts a r e r e f e r r e d to a s the Snapshot.
Upon e n t r y t o
BSS
the Snapshot, f r o m previous locations 1.n the s a m e job i~r e a d f r o m tape
B1:
If this i,s the f i r s t t i m eBSS
h a s been e n t e r e d far thisjob, a zero word w i l l be read indicating that this i e the f i r e t entry This z e r o w o r d w a s written by Monitor s c a n if execution w a s called f o r
The a p p r o p r i a t e input tape i s selected by exaxnillation of t h e indicator r e g i s t e r which contains a control word left by the calling record.. If a n a s s e m b l y ( F A P ) o r compilation (FORTRAN) h a s just been completed. t h i s will be tape B3, o t h e r w i s e the input tape will bc A 2 in the c a s e of column b i n a r y c a r d s . The input: tape i s r e a d in b i n a r y , t r a n s f e r v e c t o r s a r e p e e l r d off and s t o r e d a t 1448. When a new s e t of t r a n s f e r v e c t o r s a r e m e t , the r e l o c a t e d block i s saved a s a single r e c o r d on tape B1. The f i r s t word of t h i s r e c o r d i s a control word specifying the size of the p r o g r a m and whether o r not i t h a s a t r a n s f e r vector. If t r a n s f e r v e c t o r s do exist a second control word i s written giving the count. Jf B 3 w a s the f i r s t input tape, when an End of F i l e i s m e t , the input i s switched to tape A 2 . If this input i s b i n a r y , the p r o c e s s of read- ing i n , saving the t r a n s f e r v e c t o r and relocating the'binary deck s t a r t s anew.
However, if
B C D
information i s met, i t i s scanned and c o m p a r e d with a dictionary of control w o r d s An X E Q c a r d j s ignored. a s i t i s obviously i n the wrong p l a c e . Any control c a r d o t h e r than CHAIN o r QATA c a u s e control t o be p a s s e d back t o monitor Scan.If a D A T A o r CHAIN c a r d i s recognized, the table of T r a n s f e r V e c t o r s i s
s e a r c h e d against t h e table of BCD n a m e s to f o r m a table of m i s s i n g subroutines (MISUB). The System tape j s then spaced to file 3 ( l i b r a r y ) . the l i b r a r y is scanned f o r the m i s s i n g subroutines, when found they a r e r e a d in and relocated i n m e m o r y . This s e a r c h continues until the table of m i s s i n g subroutines i s
z e r o o r two p a s s e s have been made o v e r the l i b r a r y . If subroutines are s t i l l m i s s i n g they a r e l i s t e d on and off line with an a p p r o p r i a t e e r r o r message, the execution bit i s deleted and control p a s s e s back to Monitor Scan t o .finish any compilation that may b e left in t h i s j ob.
Encountering the DATA control card indicates that a l l p r o g r a m s f o r this job have been processed, relocated and written on tape B1w Tape
B1
i s now read, the T r a n s f e r Vector table i s changed to T T R ' s with their pro- per relocated a d d r e s s e s , and written on tape A4 in absolute binary form.A t e s t i s now made to see if t h i s i s a CHAIN job, If not, a s m a l l execu- tion loader i s moved over 1-CS. The w o r d "Execution1' i s printed, and
control passes to the execution loader. The loader r e a d s the absolute program f rom Tape A 4 into memory. The last r e c o r d on tape A4 i s the t r a n s f e r word to the program.
If i t i s a
CHAIN
job, and the DATA card h a s not been encountered, tape B1 is backspaced to the c u r r e n tCHAIN
I. D. word. The c u r r e n t link i e then stacked on tape B 1. BSS i s refreshed, and the p r o c e s s begins again reading tape A2.When the DATA c a r d i s encountered for a
CHAIN
job, the chain links are edited from tape B 1 and a r e moved to the specified chain link tape. The execution loader i s placed over 1-CS and the f i r s t link i s read in as a single job, except that i t i e read fromB1, BZ or
B3 insteadof from
A4.After initial loading of the f i r s t chain link, loading of subsequent links will be done by the CHN subroutine.
BSS
control c a r r i e s a l a r g e eet ofdiagnostic m e s s a g e s t h a t print on and off line. After a diagnostic m e s s a g e i e printed, control will be given to the Machine E r r o r r e c o r d o r
Source
E r r o r r e c o r d which e v e r i s appropriate.MACHINE
E R R O R RECORD (RECORD 8) 1. 09. 00 If during p r o c e s s i n g of m o n i t o r o r non-monitor jobs a supposed m a c h i n e e r r o r o c c u r s , a n attempt will be m a d e to identify the f a i l u r e . A f t e r t h i s f a i l u r e i s identified, an e r r o r m e s s a c e will b e w r i t t e n on a n d off line. At t h i s point t h e System tape ( A l ) i s positioned a t t h e Machine E r r o r r e c o r d . The routine will f i r s t find out in what routine t h e e r r o r was d e t e c t e d , (i. e,,
F A P , MONITORSCAN, GENERAL
DIAGNOSTIC,BSS
Control, o rFORTRAN
Section I") then print options t o continue t h i s job, r e s t o r e m e m o r y o r t o r e t r y . Since the exit f r o m t h i s routine i s Spendent upon the routine that c a l l e d i t , a b r i e f d e s c r i p t i o n of each e n t r y will follow:
If Monitor Scan called the Machine E r r o r r e c o r d s e n s e light 3 will be on.
In t h i s c a s e the e r r o r m e s s a g e "JOB
DELETED BECAUSE
O FMACHINE E R R O R ,
PUSHSTART
T O BEGINNEXT
JOB" will b e printed. The S y s t e m t a p e will be backspaced to Sign On then the machine will halt. When t h e S t a r t switch i s d e p r e s s e d , control will t r a n s f e r t o 1-CS t o b e r e a d i n Sign On.If F A P called the Machine E r r o r r e c o r d , s e n s e light 1 will b e on. T h e e r r o r s that F A P believes a r e machine e r r o r a r e pc-rsistent tape e r r o r s , overflow of v a r i o u s t a b l e s and table s e a r c h e r r o r s . In s o m e c a s e s t a b l e overflow e r r o r s m a y b e c a u s e d by i n c o r r e c t deck s e t u p o r faulty coding.
In any event i n s t r u c t i o n s will be print ed on l i n e ? indicating in m o s t c a s e s the type of e r r o r and the c o u r s e of action t o b e taken. Depending on t h e i n s t r u c t i o n s and the action taken by the o p e r a t o r , t h e p r o g r a m c a n b e
deleted o r continued, in e i t h e r event control will b e r e t u r n e d t o Monitor Scan.
When s e n s e light 4 i s found on, control w a s r e c e i v e d f r o m the G e n e r a l Dia- gnostic. Since FORTRAN m a y b e r u n intither the single compile o r m o n i t o r m o d e s , the options t o delete o r r e t r y will v a r y with the mode. In e i t h e r ' m o d e , t o r e t r y , control i s p a s s e d back t o FORTRAN r e c o r d 10. L i k e w i s e to r e s t o r e m e m o r y and h a l t i s the s a m e i n both modes. In t h e m o n i t o r m o d e i f deletion is c a l l e d f o r , the s o u r c e p r o g r a m is t r a n s c r i b e d f r o m
BZ
t o A3 then control p a s s e s back t o the Monitor S,can r e c o r d .When BSS control c a l l s the Machine E r r o r r e c o r d s e n s e 1igh.t 2 will b e on.
T h e s e e r r o r s a r e p e r s i s t e n t t a p e checks that BSS control cannot g e t around.
The indication of t h e e r r o r i s printed on l i n e , the execution bit i s d e l e t e d and control is p a s s e d t o the Monitor Scan r e c o r d .
The l a s t c a s e will be with a l l s e n s e lights off, when the diagnostic within
Section I of FORTRAN c a l l s the Machine E r r o r r e c o r d . T h e p r i n t e d m e s s a g e s and the options a r e the s a m e f o r t h i s a s they w h e r e w h e n c o n t r o l was re-
c e i v e d f r o m the Main Diagnostic r e c o r d .
SOURCE E R R O R
RECORD
1.10.00 The Source E r r o r record i s called when a source e r r o r is detected. All routines that can call the Machine E r r o r record (see 1.09.00) can also call this record,The only processing that i s done will be to delete the execution bit i n 1-CS if i t exists and write off line, the reason for no execution.
In the Monitor mode if any record other than Monitor Scan called thia record control i s passed to Monitor Scan. If
Monitor
Scan calla this record control i s passed to the Sign On record.However, in the case of a source e r r o r in the single compile m o d e the c a r d reader i s selected and the program w i l l hang up.
TAPE MOVER (RECORD 42) 1, 11,OO
The Tape Mover r e c o r d i s entered a t the termination of FORTRAN. If the system i s in monitor mode, the information f r o m the single compile p r i n t tape ( B 2 ) will be t r a n s f e r r e d to the stacked print tape (A3). Since the third file (symbolic listing) i s optional, FORTRAN in Section VI will t u r n on Sense Light 2 to indicate to tape mover that the t h i r d file i s need- ed, The information on the binary output tape ( 8 3 ) w i l l be t r a n s f e r r e d t o the stacked binary tape if: (1) Sense Switch 6 is up and, (2) Sense Light 1 is ON (left on if column binary c a r d s w e r e not called for in Section 6).
When one o r both tapes have been processed the execution bit is checked, i f ON control passee to BSS Control (Record 43), i f OFF control p a s s e s to Monitor Scan (Record 6).
Upon initial entry to Tape Mover if the s y s t e m w e r e not i n monitor mode, the card r e a d e r would be selected and the p r o g r a m would hang up.
dn X I S
9sl3owor ,N ArU/MP 2rm
FORTRAN COMPILER 2.00.00
INTRODUCTION
The FORTRAN Executive routine c o m p r i s e s most of the second file of the System Tape. The exceptions a r e the two monitor r e c o r d s , Tape Mover and
BSS
Control.FORTRAN i s made up of 32 r e c o r d s ( # l o through #41) which a r e called in one o r m o r e a t a time. FORTRAN i s broken down into six sections each one given a por- tion of t h e task of analyais of the source program. T h e r e a r e in addition to the s i x main sections, four subsections, these a r e I t , I",
V'
and pre-VI. T h e s e subsections a r e in reality only extensions of the main sections to which they a r e attached.These sections a r e operated on sequentially, that i s t h e r e i s never a r e t u r n to a .
previous section once control p a s s e s to a succeeding section.
FORTRAN can be considered a s falling into two divisions, the f i r s t c o m p r i s e d by sectione I, I1 and 111, the second by sections IV,
V
andVI.
This i s due to the fact that by the end of section 111, the entire object p r o g r a m i s essentially compiled.It i s , in f a c t , compiled except that i t exists in the C. I. T. (Compiled Instruction Table) format, and that it h a s a s many symbolic index r e g i x t e r s as aFe required.
-
It i s the job of the remaining t h r e e eections to c o r r e c t these two situations. Sec- tions IV and V handle the task of inserting the absolute index r e g i s t e r s i n place of the symbolic index r e g i s t e r s . Since we a r e reducing alarge
number of eymbolic index r e g i s t e r s to the t h r e e absolute r e g i s t e r s , c e r t a i n index loading and saving instructions a r e necessary. This problem i s a l s o handled by Sections IV and V.Section VI, replaces the instructions that a r e in the CIT format into the p r o p e r relocatable binary format.
As f o r the f i r s t t h r e e sections, i t may be considered that the f i r s t two of theae do the e n t i r e t a s k of source p r o g r a m analysis. This t a s k includes performing m o s t of the instruction (C. I. T. ) compilation. With r e f e r e n c e to s o m e of the in-
structions, however, sections I and I1 simply r e c o r d information, in tabular f o r m , to p a e s on to section 111, which will use these a s a key to i n s e r t the proper in- structions. Because the analysis of sections I and I1 a r e independent, the C, I,
T.
' a compiled a r e kept in separate files, which m u s t subsequently be merged. Section 111, therefore, h a s the task of performing this m e r g e a s well a s a second m e r g e of the C. I. T. 's that i t , itself h a s created. Both section 111 and the l a s t p a r t of section V, because of their position a t the end of n e c e s s a r y p r i m a r y analysis, p e r f o r m certain optimizing t a s k s consisting mostly of removing o r i n s e r t i n g c e r - tain instructions.It i s well to note that the FORTRAN compiler makes extensive u s e of tables. These may be considered a s of two types: those which a r e made up directly f r o m the
source p r o g r a m statements, and those which r e s u l t f r o m f u r t h e r analysis. I t i s the f o r m e r c l a s s of tables which a r e included in this reference manual, A l i s t of some of these tables and their s i z e limitations will be discussed a s they a r e en- countered. The l a t t e r c l a s s do, in some c a s e s , impose f u r t h e r s i z e limitations.
M o s t tables are passed on f r o m one section t o another; some however, a r e c r e a t e d
0
purely f o r u s e within a section.The
bourse p r o g r a m aiaternsnt, once scanned, a r e not r e f e r r e d to again. F o r a m o r e detailed description of some of t h e s e tables, see Section 2.04.00.SECTION I 2.01.01 Section I has the p r i m a r y output of a file of instructions called the Compail file.
The f i r s t CIT'e that a r e written in COMPAIL a r e the Arithmetic Statement Func- tions. These a r e labeled in such a manner that the Merge in Section 111 will r e - cognize and s e p a r a t e these f r o m a l l other CIT1s, and w r i t e them as s e p a r a t e filee.
The a r i t h m e t i c inetructions, of c o u r s e , r e f e r to symbolic t a g s in the word four address. Also included in this file a r e a p a r t i a l translation of the I F and GO TO Statements, the subprogram definition statements, and input/output statements.
With r e s p e c t to the I F and GO TO Statements, Section I compiles the n e c e s s a r y teat instructions, but i t cannot compile the t r a n e f e r instructions. This is because Sec- tion I does not know whether any given I F and GO T O Statement is in the r a n g e of a
DO
and involves a t r a n s f e r out of the DO. It is not until this is known that it can go d i r e c t l y t o the statement indicated i n the source p r o g r a m , o r go to a s e t of in-structions providing n e c e s s a r y indexing, then the t r a n s f e r t o the specified source p r o g r a m statement. The analysis pertaining to these indexing instructions is left to Section I1 with the physical instructions being compiled by the second p a r t of Section 111. In soma c a r e e , a
CIT is
created containing the tronrfer instruction, but without the address, The a d d r e e s is filled i n Section 111.With r e spect to subprogram definition statements, information i s gathered which i s used by aection p r e - 6 in actually filling in the prologue and index-saving in-
0
structions.With r e s p e c t to I / O statements, a l l instructions a r e compiled except those involv- ing DO'S implied by 1 / 0 statement lists. After Section I h a s scanned and identified ' t h e s o u r c e p r o g r a m statement, i t handles i t by t r a n s f e r r i n g to a routine c o r r e a -
ponding to it. Then, of course, a l l information i s tabulated and, when possible, compilation performed.
A new i n t e r n a l formula number, initially zero, incremented by one, is assigned to each s o u r c e statement, whether that statement i s executable o r non- executable.
Where external statement numbers
--
i. e.,
statement n u m b e r s assigned by the source p r o g r a m m e r--
exist, the TEIFNO table s e r v e s t o c o r r e l a t e the external and internal statement numbers,The g r e a t e s t division in the handling of statements in Section I i s between the a r i t h m e t i c statements and a l l others. The arithmetic compiler p r o p e r constitutes the m a j o r portion of Section I in number of instructions. The a r i t h m e t i c com- p i l e r i n making its scan of the arithmetic formula makes an enormous number
of table e n t r i e s in addition to doing i t s statement analysis n e c e s s a r y for compilation.
Among these tables a r e the T A U tables, recording subscript combination information, the
F O R V A L
and F O R V A R tables recording fixed point v a r i a b l e s occurring on the left and right hand sides of a r i t h m e t i c statements, FIXCON andFLOCON,
recording the0
converted fixed and floating point numbers. It should be noted that IF andCALL
statements fall onto both s i d e s of this division. They a r e t r e a t e d as a r i t h m e t i c statements, with compilation occurring, that is not due d i r e c t l y t o the a r i t h m e t i c c o m p i l e r , a s well.The arithmetic compiler i s divided into the Scan, Level Analysis, v a r i o u s Optimizing routines, and the Compiler. The Level Analysis sifts out into one group a l l those algebraic operations which f o r m a unit. A unit i s a group that must be performed together and have the s a m e o r d e r of binding strength for i t s operators. "Plus" and "minust1 a r e one o r d e r of operators, "multiply"
and "dividel1 a r e another order. The l a t t e r h a s g r e a t e r binding strength than the f o r m e r ; consequently, when they occur in the s a m e context the l a t t e r a r e assigned a higher level number. Needless to say, the u s e of parenthesis in an arithmetic statement i s a prime factor in determinging units and, hence, level numbers. Optimization o c c u r s to minimize storag e a c c e s s e s . This means that every attempt i s made to link one operation to i t e s u c c e s s o r via the machine r e g i s t e r s r a t h e r than the s t o r a g e cells. The compilation then proceeds f r o m highest level number to lowest.
Flow Within P a s s I of Section I
The input to P a s s I i s the source p r o g r a m in
BCD
f o r m as a single file, on tape B2.One r e c o r d a t a time i s read into a buffer termkd FT. All comment c a r d s and blank c a r d s a r e ignored. A special mode c h a r a c t e r in c a r d column on'e i s saved. 1 If a statement number
(EFN)
e x i s t s i t i s converted to a binary number and saved.The F T buffer i s now moved to the F region, and a new r e c o r d is r e a d into the F T buffer. In this manner the program looks ahead one r e c o r d a t ae:time, to de- t e r m i n e if t h e r e a r e any continuation c a r d s , any non-blank, non-zero, c h a r a c t e r in c a r d column 6). All continuation c a r d s a r e read for a given statement and a s s e m b l e d in the F region. A word of a l l ones i s written a f t e r the l a s t non-blank word i n the
F
region to s e r v e a s an end-of-statement m a r k e r .At t h i s point a decision m u s t be made a s to whether the statement i a a r i t h m e t i c , i f not a r i t h m e t i c , i t i s non-arithmetic, some of which a r e non-executable. The beginning of the non-arithmetic statements a r e compared to e n t r i e s i n a dic- tionary of non-arithmetic statement beginnings. If the statement i s not iqentified i n the dictionary a diagnostic m e s s a g e i s printed. i All executable statements including arithmetic a r e written on tape B3 with a c o r -
responding label. These r e c o r d s on B3 a r e essentially the s a m e a s the r e c o r d s on
B2,
except they a r e in a m o r e compact form and a r e written in binary. The r e c o r d s on B 3 contain a l l continuation c a r d s of a s o u r c e statement, I'esk t e r m i n a l blanks, and c e r t a i n p r e - dige sted information.The non- executable statements a r e p r o c e s s e d in P a s s I and e n t r i e s m a d e i n the appropriate tables in core. If an external statement number
(EFN)
a p p e a r s i n the source statement, an entry i s made in the TEIFNO table with a corresponding in- ternal formula number(IFN).
F o r u s e and operation of these mode c h a r a c t e r e r e f e r t o operating bulletins f o r the 32K
F O R T R A N
System.Flow In P a s s I1 of Section I
The input to P a s s I1 i s the condensed source program in binary form a s a single file on B3.
One record i s read in at a time, the f i r s t word of each record i s a label for the type of statement. This address portion of the label i s the transfer a d d r e s s to
the appropriate processor.
As the statement i s scanned, the various p a r t s a r e classified and appropriate table entries are made.
When all the statements have been processed, control passes to the next record on the System tape (Al). This record i s the Diagnoetic for Section I.
The
diagnos- tic record can be called e a r l i e r i f an e r r o r i s found in the source program o r amach-
ine e r r o r i s encountered. The program consists of:P r o g r a m to prepare meesage P r i n t program
Table
of commentsWhen an e r r o r i s found or occurs during Section I control goes to the Diagnoetic P r o g r a m by means of a TSX using IR4. There are several possible casee:
I IR4
C
0 signifies an e r r o r call . ,1) F i r s t e r r o r : Print "Fortran Diagnostic Program Results" heading and proceed a s in 2).
2) Not f i r s t e r r o r : Construct parameters for printing statement being processed and comment.
a. If e r r o r was source program, return control to Section I for pro- ceeaing next statement.
b. If e r r o r w a s machine, print "END O F DUGNOSTIC" message and go to Machine E r r o r Supervisor program (record 8).
I1 IR4 t 0 signifies control was received a t the completion of Section I.
1) No e r r o r s had occurred. Go to Section 1'.
TABLES
2) S o m e source program e r r o r s had occurred. Write all diagnostic information which has been printed on tape
B2
following rource program. Go to Source Program E r r o r eupervisor program.(record 9).
GENERATED
B Y
SECTION1. Generated by Section I and required for reference. There tables, retained in c o r e s are:.
NAME
DIM P DIM2 DIM3
TAU1 TAU2 TAU3FIXCON FLOCON FORSUB
DESCRIPTION
one-dimensional a r r a y e two-dimensional a r r a y s three-dimensional a r r a y s one-dimensional subscripts two-dimensional subscript^
three-dimensional subscripts fixed-point constants
floating-point constants
arithmetic etatement functione
END
options specified inEND
statement2. Generated by Section I and not required for reference. These tables, written on tapes in buffer sized records, with labels where needed are:
a. Written on tape
B2,
100 words p e r record:NAME DESC~IPTION
CXT COMPILED INSTRUCTION
TABLEb. Written on tape A4, in buffer sized r e c o r d s with appropriate labele.
DESCRIPTION
TEIFNO TDO TIFGQ TRAD FORTAG FORVAR FORVAL FRET
EQUIT
GLOSUB
FORMAT SUBDEF
COMMON
HOLARGNONEXC
TSTOPS CALEFN
FMTEFNcorresponding IFNs and EFNe DO etatemente
IFs, GO T o e ,
ASSIGN
statements GOTO
statementsIFNe
-
I-
TAU tagsfixed- point variable usage fixed- point variable definition FREQUENCY statements EQUIVALENCE statements
names of closed subroutines references FORMAT statements
SUBROUTINE or FUNCTION statement8
COMMON
statementeHollerith arguments in
CALL
statements IFNs on non- executable statement$IFNe of STOP? and RETURN statements f i r s t and l a s t IFNs of CALL ratatemenee
1
-
0 statement reference8 toFORMAT
numberaSECTION I' 2. 01. 02 This section i s a t e r m i n a l p r o c e s s o r for Section I, and i s the longest of a l l secondary sections.
The tables that Section I generated w e r e written on tape A4 a s buffer s i z e r e c o r d s , a s they became full. They can be many r e c o r d s on tape A4 a l l of the one table type. These r e c o r d s a r e not n e c e s s a r i l y on the tape consecutively but r a t h e r at random intervals, a l s o the buffers in Section I f o r these tables m a y have been only partially filled a t the end of Section I. These partially filled buffers a r e left in c o r e f o r proceasing by Section 1'.
The p r i m a r y t a s k of Section I' i s to collect a l l like tables f r o m tape A4, combine them, i n s e r t the partially filled buffer, determine the word count and w r i t e these
tables on tape
BZ,
with a label number corresponding to the type of table.Section I' a l s o makes c e r t a i n modifications, p r i m a r i l y the replacement of EFN's with corresponding I F N 1 s , ueing the
TIEFNO
table. This can only be accomplished when the entire source p r o g r a m h a s been reduced to tabular form. An example of where the external statement numbers have had to be retained up to this point i s in the TDO table. Here, the number r e f e r r i n g to the statement number of the DO itself may be an internal formula number because i t i s readily known due to the constant updating of the c u r r e n t internal formula number. On the other hand, the DO range had to be recorded a e an external statement number at the t i m e the TDO table e n t r y w a s made. This i s because it could not then be known how m a y state- ments f u r t h e r on i n the p r o g r a m the end of the DO range would occur.The input to Section I' consists of:
1. Various p a r a m e t e r s describing tables (in cores).
2. Buffers containing t e r m i n a l e n t r i e s in tables (in cores).
3. Tables which Section P r e q u i r e for r e f e r e n c e (FORSUB),
END,
DIM1, DIM2, DIM3, TAU1, TAU2, TAU3, FIXCON,FLOCON
in cores. )4. Tables which Section I did not require f o r reference. (COMPAIL, on tape
BZ,
TEIFNO, TDO, TIFGO, TRAD, FORTAG, FORVAR, FORVAL FRET, EQUIT, CLOSUB, FORMAT j SUBDEF, COMMON, HOLARG, NONEXC, TSTOPSj
CALLFN,
FMTEFN, on tape A4. )The output of Section I' consists of:
1. Tables in c o r e s : 'TAUl, TAU2, TAU3, FIXCON, FLOCON,
FORVAL, TRAD, TIFGO, TEIFNO,
NONEXC, TSTOPS.2. Tables on tape:
Tape B2: File 1 i s Source P r o g r a m F i l e 2 i s COMPAIL table
F i l e 3 R e c o r d 1 i s FORSUB table except the f i r e t word which i s the COMPAIL r e c o r d count.
3 7
File 4 Record 1 is FLOCON table, Record 2 i s
FORMAT
table, Record 3 i s SIZ table,File 5 Record 1 i s
END
table, Record 2 i s SUBDEF table, Record 3 i sC O M M O N
table.Record 4 i s HOEARG table,
~ e c o r d 5 i s
TEPFNO
table, Record 6 i sTPFGO
table, Record 7 i s TRAlD table, Record 8 i s TI38 table, Record 9 i s F O R V f U table, Record P O i sCALENM
table, Record 11 i s FBRTAG table, Record 12 i s FRET table, Record 13 i sEQUIT
table.Record 14 i s CLOSUB table.
The tablee a r e processed in the following order and manner:
32K Version
-
The content8 of the Section I CIT buffer a r e written as. the l a s t record of file 2 on tape 432.FORSUB
-
The table of names and d e g r e e s of arithmetic statement functions,b
i f any, is written after the COMPAIL record count'which i s the f i r s t word in record 1 of file 3 on tape B2.
FLOCON- The table of floating-point constants and i t s word count are written as r e c o r d 1 of file 4 on tape B2.
FORMAT
-
The table of format statements is assembled from tape A4 and the Section I buffer. It i s written a s record 2 of file 4 on tape B2; preceded by i t s identification (10) and word count,FMTEFN -
The table of references to fixed format statements i s assembled from tape A4 and the Section I buffer. Each reference to a format is checked againstthe FORMAT table. If any referenced statements a r e missing an e r r o r l i s t is developed f o r Section I".
DIM1
-
The table of one dimensional a r r a y s is renamed SIZ.-
DIM2
-
Each entry in the table of two dimensional a r r a y s h a s i t s two dimensions multiplied to f o r m the size of the a r r a y . This table i s added toSIZ.
DIM3
-
Each entry in the table of t h r e e dimensional a r r a y s h a s i t s t h r e e dimen- sions multiplied to f o r m the s i z e of the a r r a y . This table i s added to SIZ.SIZ
-
The table is written a s r e c o r d 3 of file 4 on tapeB2.
It is preceded by the-
EIFNO table and i t s word count.END -
TheEND
table i s written a s r e c o r d 1 of file 5 on tape B2.-
SUBDEF -
The table of subprogram definition is assembled f r o m tape A4 and the Section I buffer. It is written a s r e c o r d 2 of file 5 on tape BZ; preceded by i t s identification (1 1) and word count.C O M M O N -
The table of common v a r i a b l e s i s a s s e m b l e dfrom
tape A4 and the Sec- tion I buffer. It i s written as r e c o r d 3 of file 5 on tapeB2;
preceded by i t s iden- tification (12) and word count.HOLARG -
The table of hollerith arguments i s a s s e m b l e d f r o m tape A4 and the Section I buffer. It i s written a s r e c o r d 4 of file 5 on tape B2; preceded by i t s identification (1 3) and wo rd count.TEIFNO -
The table of corresponding external and internal f o r m u l a n u m b e r s is a s s e m b l e d f r o m tape A4 and the Section buffer. It i s s e a r c h e d for duplicate external formula numbers. If duplicates a r e found they a r e flagged a s e r r o r s f o r Section I". Thos,e c a s e s where Section I assigned m o r e than one i n t e r n a l for- mula number, a r e not. considesred a s duplizatcs an,! the flag is deleted.The table is written a s r e c o r d 5 of fiIe 5 on tape
BZ;
preceded by its identifi- cation (0) and word count.It i s a l s o retained in m e m o r y for use in processing tables discussed.below:
TIFGO -
The tables o f I F s , GO T O s and ASSIGNS is a s s e m b l e d f r o m tape A4 and the Section I buffer. ' Each external formula number is s e a r c h e d f o r in TEIFNO and i t s corresponding internal number r e p l a c e s i t in TIFGO.external formula n u m b e r s not found a r e s e t equal to 0 a s an e r r o r signal to Section I". When all e n t r i e s have been modified the table i s written as r e c o r d 6 of file 5 on tape B2; preceded by i t s identification (2) and word count.
T R A D
-
The table of C O M P U T E D and ASSIGNED GO TO a d d r e s s e s i s a s s e m b l e d f r o m tape A4 and the Section I buffer. E a c h entry, which i s a n external formula number, i s searched for inTEIFNO.
When found it i s replaced by the c o r r e s - ponding i n t e r n a l formula number. If not found, it is set equal t o 0 as an e r r o rsignal to Section I". When a l l e n t r i e s have been t r e a t e d the table is w r i t t e n as