Text preview for : R23-9673-FortranAnalysisGuide_1961.pdf part of IBM R23-9673-FortranAnalysisGuide 1961 IBM 7090 R23-9673-FortranAnalysisGuide_1961.pdf



Back to : R23-9673-FortranAnalysisG | Home

P ROC RAMMI NG SYSTEMS

ANALYSIS GUIDE




70917090 32K FORTRAN




Preliminary Copy




9196 1 by International Business Machine. Corporation
Printed in U. S. A, Form R23- 9673
TABLE OF CONTENTS

FORTRAN MONITOR 1

Introduction 2
Start Card and 1-CS 7
Listing of Fortran Start Card 8
Listing of 1 CS ?
Card to Tape Simulator 10
Dump 13
Sign On 14
F ~ P 16
Scan 17
BSS Control 21
Machine Error 23
Source Error 24
Tape Mover 25

FORTRAN COMPILER 29

lnt roduc tion
Section I
Section I'
Section I"
Section 11
Section I11
rntrpductim Pi?&., I V :and V
Section IV
Section V
Section V '
Section VI

Fortran Library 97
1nput /Output Library 100

General Diagnostics 1.06

Tables Generated By Fortran 111
ASSIGNED CONSTANT 111
CALLFN (CALLNM) 111
CLOSUB 112
C.I. T (Compiled InetrtiEWe@lX
COMMON 113
DIM 114
DOFILE (C) 115
DOTAG (B) 115
EIFNO 115
END us
EQUIT 116
FIXCON 117
FLOCON
FMTEFN
FOR MAT
FORSUB
FOR TAG
FORVAL and FORVAR
FRET
XOLARG
NOMEXC
PREDESSOR
SI z
SUBDEF
SUCCESSOR
TAU
TDO
TIEFNO
TIFGO
TIFGO FILE
TRAD
TSTOPS

APPENDICES

)I( A Fortran Tape Status By Section
B Edit Record Chart
FORTRAN MONITOR ~.00.00
INTRODUCTION 1. Of, 08
\. The FORTRAN 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 major 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 tape a r e 1-CS,
Card to Tape Simulator, Dump, Sign On, F A P I and 11, Scan, BSS Control,
Machine E r r o r record, and the Source E r r o r record. (See Figure 2.).
The second file i s the FORTRAN Compiler plus t he Tape M o v e r record
and an additional BSS Control. This second BSS Control is used to save
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
that FORTRAN and FAP require a r e contained in the third file. The FOR-
T R A N diagnostic routines and e r r o r messages 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 monitor mode 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 made
the only record used i n the monitor file will b e the Card to. Tape Simulator,
from this control paaeee directly to FORTRAN in the rrcond file.

Since the standard method og operation i s in the monitor mode, the deecrip-
tfon of the ay stem will 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 o jobs may be .tacked otr
f
the input tape. The limiting factor to the number o jabs that may be stacked
f
f
i 6 the capacity o t h e tape reel.
f

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 pragrame,
The job can be in one of two states, either Execute o r Non-Execute. As 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 after any assembly o r compilation that is re-
quired. As a Non-Execute job, the program8 need not be related, since
only assemble o r compilation can be done. F o r a m o r e camprehenaive exo
planation of job processing, reference 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 will rewind
the System tape, load the f i r s t record, which i s 1-CS. 1-CS is a general pur-
pose tape loading routine which remains in lower core storage at all times
during 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 after loading will t r a n s f e r control to their respective
entry points,

<:
.
Once 1-CS i s loaded, i t will in turn load the Card to Tape Simulator, The
Card to Tape Simulator t e s t the c a r d reader. foz p r e s e n c e o c a d s , If the
f
*
3
hopper i s empty, the input i s assumed to be from tape. This tape will be
A2 if in the monitor mode, if not in monitor mode, i. e . , single compile,
the input tape ie 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 File i s met,

At this point'the next record (DUMP) s skipped, control is again given to
i
1-CS to read in the Sign On record. The Sign On record will read and print
the f i r s t record onthe input tape, this should be the I. D. card. It i s in the
Sign On record that the customer may i n s e r t his 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 read a t this
time,

At the completion of Sign On processing, the next two r e c o r d s (FAP) r e a
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 set up the 'proper
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 has 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 to FORTRAN in the
second file,

After the completion of a F A P , FORTRAN o r BSS relocation, control
passes back to the Monitor Scan record. This will continue until a l l pro-
programs 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 record, instead of BSS Control, to begin the next
job,

This whole process 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 reader will be selected and the program 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 system with the Start Card, o r depressing
the c a r d reader s t a r t key for a final stop,
1-CS AND 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 the FORTRAN monitor system, for batch compiling and/or execution.

To set the FORTRAN monitor in motion, the Start Card is placed in the c a r d
reader, the load c a r d s button i s depreeaed, a bootstrap loader will then read
in the remainder of the START 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 record on the tape i s read in. The firat record i a the FOR-
TRAN loader called 1-CS, the tape read operation i s checked for 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 three unsuccessful attempts are m a d e the program will HALT.

If the Start button i e depressed three more attempts will be made and s o on.
When the read operation i s succeseful a flag bit i s set in the sign position of
location 4z8 to indicate that the jobs that follow w i l l be processed in the moni-
tor mode. Control now passes to location 508 in 1-CS.

1-CS will be used to lpad all monitr);. records and FORTRAN Executive recorde,
If redundancy checks occur while reading any record the program 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 record 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 read 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 record number timee ten that i e being loaded, this
will be"used i f a cail i a made to the Diagnostictrecord to ascertain t b type of
diagnostic m e s aage that should print.

The make up of the firet two words- of any FORTRAN o r Monitor record a r e :

I
I



WORD 1 3111 WORD COUNT LOAD ADDRESS

WORD 2 100 1 1 RECORD NUMBER xo/A
iV/ TRANSFER ADDRESS[

Also contained with 1-CS i s the diagnostic record caller. This routine will
be used by FORTRAN SectionI1 through Section VI to call the Diagnostic file
(file 4) for any e r r o r , source or na chine. P r i o r to reading in the Main diagnor-
t i c record the area that i t will occupy ia saved a s a single r e c o r d on tape A3.
.r
LISTING OF KIRTRAN START :3 tiF,:3

The following is a listing of the Start Card and showa the instruction 60-
quence in the card and also the location in storage:


SEQUENCE . STORAGE ADDRESS, TAG,
ON CARD LOCATIONS 0PERA.TION DECREMENT

IOR T
TCOA
TTR
LTM
AXT 3, f
REWA 1-
RTBA 1
R CHA 160
TCOA 151
TRCA 156
CAL 153
STP 42 (Monitor Flag)
TRA 1
TIX 146, 1, 1
HTR a45
XOCP 0,,3
TCH 0
LISTING OF 1-CS

The 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,, 77777
TCOA 1
TRA 50
RTBA 1
RCHA 37
RTBA 1
RCHA 37
WTBA 3
RCHA 41
RTBA 1
RCHA 41
TCOA 33
TXI 157
BSRA 3
HTR 36
IOR PN 0, 2, 77777
TCH 37
IORT 156, 0 4704
PZE (Monitor Flag Cell)
PZE (Chain Flag Cell)
PZE (Chain Flag Cell)
PZE (Job Linee Output Counter)
BSRA 1
HPR 77777,7
RTBA 1
R CHA 54
TCOA 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 card to tape simulator has been read into storage, by 1-CS, con-
trol 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 card reader is then selected, i f an End-of-
File is sensed on the f i r s t read cycle the program assumes the input i s
from 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 pass control directly to FORTRAN record 10. If
the card reader End-of-File was not sensed, a simulated c a r d to tape opera-
tion will follow. Cards with a 7-9 punch in 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
to being transcribed onto tape. Illegal Hollerith punching will cause the
machine to stop with a HPR 7777, in the storage register. The rules for
correcting and reloading the card reader are analogous to a READ CHECK
mtop on the off line c a r d reader.

The carde a r e read i n double buffered, to allow the c a r d reader to operate
a t full epeed.

When the final EOF is sensed on the c a r d reader, a n E O F will be written
an tape. The input tape is then rewound, . record 2 is skipped and control
is parsed to, Sign On, record 3.

i f the monitor flag i s off, a t the termination of the c a r d to tape simulation,
the remainder of File one w i l l be skipped and control pasred directly to,
FORTRAN (record 10).
CARD TO A -5tMULATOR
MOn//rOU RfiCORO /
'




a6
JtOARfH , r
fNf r f A 4 J Z C C UCCK H I 4 C
I ~ O A A ~ P CWCAROC O ~
(IUCCMS / U b A L PUKU ,
CO




CONVtAC
I
co~uA/u
ro
ROW 8/4'4U/




UCG/N
wu/r/wG our
UClJ 8 U C F r A




I
)
DUMP RECORD WITH DUMP CARD 1,04.00

The Dump is 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 record of the contents of core storage and the O P panel indica-
t o r e , which can be used to ascertain the possible cause of trouble.
'
Actually the Dump record can be called by three different methodq. TWO
of theee a r e through the use 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 record is by using the
Dump c a r d , which ehould be available a t a l l installations using the
FORTRAN 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 for 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 program to 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 read in, at which
t i m e control i e passed to it.

The Dump program will cause the entire contents of memory 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 storage entry switches a r e interrogated t o determine whether o r
not mnemonics a r e to be included and to s e e what c o u r s e of action t o take
after completing the dump. These options are fully explained in the 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 record i s called only at the beginning o r end of job. The
number of lines of output from the l a s t job i s picked up from the line
count storage cell in 1-CS. This number if g r e a t e r than zero, i s convert-
ed to decimal and written on and off line. If Sense Switch 6 is up, an
End of F i l e will be written on tape B4, the .tacked column binary punch
tape. At this time 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 File i s encountered. The f i r s t r e c o r d of
the file i s then read and i t is then determined i f the first c h a r a c t e r is an
asterisk. If no a s t e r i s k i s found, a comment i s printed on line indicating
this, 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 ie, 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 as-.
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; therefore, at
this point, difference8 m a y exirt from one 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 treating the I. D. record, 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) was 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, versatile general purpose a s s e m b l e r for non- FORTRAN main
programs which h a s the additional advantage of operating within a moni-
t o r system. Operating in 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 program with the same 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 programs, including
the program c a r d and appropriate transfer vector. Also, F A P output
occupies the binary c a r d format required by the BSS 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 posiible to input the
symbolic deck on-line o r off-line, however, the listing will only be
written off -line.

F A P main programs may call upon FORTRAN subprograms, FORTRAN.
l i b r a r y functions o r other FAP aubprograme. The Monitor system and
the BSS loader provide the necessary communication, bared upon infor-
mation given by the programmer 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 assembly, but doee sup-
p r e s s c a r d punching and execution. Diagnostic information is given in
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

Record 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 the control
c a r d s which specify different system p r o g r a m s L t o be called. It a l s o scan8
FORTRAN p r o g r a m s and p r e p a r e s a single- compile input tape for the
c o m p i l e r . Control i s passed to Monitor Scan in 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) after processing an 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 binary 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 the 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 determined that the job should be continued after
an 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 in column 1. If t h i s i s found,
the mnemonics on the c a r d a r e scanned and compared with a dictionary
of control c a r d mnemonics. If no a s t e r i s k i s found, the c a r d i s asuumed
to be 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 binary, and an X E Q control c a r d h a s been encountered
e a r l i e r in the job, control i s p a s s e d to ~ S control ( r e c o r d 7): If the XEQ
S
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 in the
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 tape 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 fabricated 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 control c a r d s , which
have precedence. A s t e r i s k (control c a r d s ) found in the dictionary, a r e t r e a t e d
as follows:

a) XEQ .- 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 written on the beginning of tape B 1 t o indi-
cate 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, the p a r a m e t e r s a r e examined a n d a unique
control word i s written on B 1 (in front of the z e r o word)
and s t o r e d i n a cell (curchn) i n 1-CS. If t h i s i s the 1 s t link,
i t i s s t o r e d i n a different c e l l (1st chn). A chain flag i s s e t
in 1-CS (FLGBX).
c) F A P - An E N D card i s simulated onto B2 containing control
card output options and control i s passed to FAP P a s s 1
(record 4).

d) DATA - This should be encountered only i f there was no execu-.
tion flag (or if execution has 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 set for the END c a r d routine to set the appropriate
ROW, END card options
LIBE, ETC.
In summary, control is then paseed a s followe:

Upon Recognizing: -
G o To:

a) FORTRAN END card Record 10 (FORTRAN)
b) Column binary card Record 7 :335Control)
c) F A P control c a r d Record 4 (FAP)
d) Deck e r r o r Record 9 (Source E r r o r )
e) Machine e r r o r Record 8 (Machine E r r o r )

Note: Monitor Scan h a s i t s own diagnostic message and print8 them on and
off line,
MO/Y/ TOR J CAN
RlCOALl 6




, -#- *
**S IAJr
r/rnruAd06
)rs/.eij
BSS CONTROL RECORD (RECORD 7 OR 43) 1. 08.00

Records 7 and 43 a r e identical except for tape positioning, which of cou! s e ,
m a k e s the decrement of the second word on the Sy..ltem tape, the r e c o r d
n u m b e r , different. This record is duplicated in o r d e r to make it 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,tad T A P assembly.
BSS accepts c a r d image input f r o m A2 (column binary c a r d s ) , B3 (FAPo r
FORTRAN binary tape), o r A1 ( l i b r a r y subroutines) using a generalized
double buffered read routine. he BSS p r o g r a m is locateddn the top of m e m -
o r y , occupying the standard C O I - ~ m oregion.
n

BSS will locate binary c a r d i m a g e s into locations 144f3to 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. These tables 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 entry t o BSS the Snapshot, from 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 time BSS h a s been entered far this
job, a zero word w i l l be read indicating that this i e the firet entry This
z e r o word w a s written by Monitor s c a n if execution w a s called f o r

The appropriate input tape i s selected by exaxnillation of the 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. this will be tape
B3, otherwise the input tape will bc A 2 in the c a s e of column binary c a r d s .
The input: tape i s r e a d in binary, 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 set of t r a n s f e r v e c t o r s a r e m e t , the relocated 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 this 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 vectors do exist a second control word i s written
giving the count. Jf B 3 was 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 binary, the p r o c e s s of read-
ing i n , saving the t r a n s f e r vector and relocating the'binary deck s t a r t s anew.
However, if B C D information i s met, it i s scanned and compared with a
dictionary of control words An XEQ c a r d j s ignored. a s i t i s obviously
i n the wrong place. Any control c a r d other than CHAIN o r QATA cause
control t o be passed back to monitor Scan.

If a DATA o r CHAIN c a r d i s recognized, the table of T r a n s f e r Vectors i s
s e a r c h e d against the table of BCD names 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 missing 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 still
missing 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 to .finish any
compilation that may be left in this j ob.
Encountering the DATA control card indicates that a l l programs f o r this
job have been processed, relocated and written on tape B w Tape B1 is
1
now read, the Transfer 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 this i s a CHAIN job, If not, a small 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 reads the absolute
program f rom Tape A 4 into memory. The last record on tape A4 i s the
transfer word to the program.

If i t i s a CHAIN job, and the DATA card has not been encountered, tape
B1 is backspaced to the current CHAIN 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 process begins again
reading tape A2.

When the DATA card 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 is read in as a
single job, except that i t i e read from B1, BZ or B3 instead of 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 of
diagnostic messages t h a t print on and off line. After a diagnostic message
i e printed, control w l be given to the Machine E r r o r record o r Source
il
E r r o r record which ever i s appropriate.
MACHINE E R R O R RECORD (RECORD 8) 1. 09. 00

If during processing of monitor o r non-monitor jobs a supposed machine
e r r o r o c c u r s , an attempt will be made to identify the failure. After t h i s
failure i s identified, an e r r o r m e s s a c e will be written on and off line. At
this point the System tape ( A l ) i s positioned a t t h e Machine E r r o r record.
The routine will f i r s t find out in what routine the e r r o r was detected, (i. e, ,
F A P , MONITOR SCAN, GENERAL DIAGNOSTIC, BSS Control, o r FORTRAN
Section I") then print options to continue this 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 this routine i s Spendent upon the routine that called i t , a
brief description of each entry 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 F MACHINE
E R R O R , PUSH START T O BEGIN NEXT JOB" will be printed. The S y s t e m
tape 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 tables and table s e a r c h e r r o r s . In s o m e c a s e s table
overflow e r r o r s m a y be caused by i n c o r r e c t deck setup o r faulty coding.
In any event instructions 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 be taken. Depending on the
instructions and the action taken by the o p e r a t o r , the p r o g r a m can be
deleted o r continued, in either 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 received f r o m the G e n e r a l Dia-
gnostic. Since FORTRAN m a y be run intither the single compile o r m o n i t o r
'
m o d e s , the options to delete o r r e t r y will v a r y with the mode. In e i t h e r
mode, to r e t r y , control i s p a s s e d back to FORTRAN r e c o r d 10. Likewise
to r e s t o r e m e m o r y and halt i s the s a m e in both modes. In t h e m o n i t o r mode
i f deletion is called 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 to the Monitor S,can record.

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 be 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 tape checks that BSS control cannot g e t around.
The indication of t h e e r r o r i s printed on line, the execution bit i s deleted
and control is p a s s e d to the Monitor Scan record.

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 record. The 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 this a s they w h e r e when control was re-
ceived f r o m the Main Diagnostic record.
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 it 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
is 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 card
reader i s selected and the program will hang up.
TAPE MOVER (RECORD42) 1, 11,OO

The Tape Mover record i s entered at the termination of FORTRAN. If
the system i s in monitor mode, the information f r o m the single compile
print tape (B2) 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
turn on Sense Light 2 to indicate to tape mover that the third file is need-
ed, The information on the binary output tape ( 8 3 ) will 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 were 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 system w e r e not in monitor mode,
the card r e a d e r would be selected and the program would hang up.
dn XIS
9sl3owor ,
N ArU/MP 2rm
FORTRAN COMPILER 2.00.00
INTRODUCTION

The FORTRAN Executive routine comprises most of the second file of the System
Tape. The exceptions a r e the two monitor records, Tape Mover and BSS Control.
FORTRAN i s made up of 32 records ( # 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 the task of analyais of the source program. There 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. These 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 comprised by
sectione I, I1 and 111, the second by sections IV, V and V . This i s due to the fact
I
that by the end of section 111, the entire object program i s essentially compiled.
It i s , in fact, compiled except that it exists in the C. I. T. (Compiled Instruction
-
Table) format, and that it h a s a s many symbolic index regixters as aFe required.
It i s the job of the remaining three 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 registers. Since we a r e reducing a large number of eymbolic
index r e g i s t e r s to the three absolute r e g i s t e r s , certain 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 three sections, i t may be considered that the f i r s t two of theae
do the entire task of source program analysis. This task includes performing
m o s t of the instruction (C. I. T. ) compilation. With reference to some of the in-
structions, however, sections I and I1 simply record information, in tabular form,
to paes 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 must subsequently be merged. Section
111, therefore, has 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 it, itself has 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,
perform certain optimizing tasks consisting mostly of removing o r inserting c e r -
tain instructions.

It i s well to note that the FORTRAN compiler makes extensive use 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 program statements, and those which result f r o m further analysis. It 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 size 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 cases, impose further size limitations.
M ost tables are passed on from one section t o another; some however, a r e created
0 purely f o r use within a section. The bourse program 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 these 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 separate 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 arithmetic inetructions, of course, r e f e r to symbolic tags in the word four
address. Also included in this file a r e a partial 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 tranefer instructions. This is because Sec-
tion I does not know whether any given I F and GO T O Statement is in the range 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 directly to the statement indicated i n the source program, 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 to 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 1 1 In soma c a r e e , a CIT is created containing the tronrfer instruction,
1.
but without the address, The addrees is filled i n Section 111.

With r e spect to subprogram definition statements, information is gathered which
i s used by aection pre-6 in actually filling in the prologue and index-saving in-
0 structions.

With respect 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 source program statement, i t handles i t by transferring 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 internal formula number, initially zero, incremented by one, is assigned
to each source statement, whether that statement i s executable o r non- executable.
Where external statement numbers --
i. e. , statement numbers assigned by the
--
source p r o g r a m m e r exist, the TEIFNO table s e r v e s to 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
arithmetic statements and all others. The arithmetic compiler proper constitutes
the major portion of Section I in number of instructions. The arithmetic com-
piler i n making its scan of the arithmetic formula makes an enormous number
of table entries 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 TAU tables, recording subscript combination information,
the FORVAL and FORVAR tables recording fixed point variables occurring on the left
and right hand sides of arithmetic statements, FIXCON and FLOCON, recording the
0 converted fixed and floating point numbers. It should be noted that IF and CALL
statements fall onto both sides of this division. They a r e t r e a t e d as arithmetic
statements, with compilation occurring, that is not due directly t o the arithmetic
compiler, a s well.
The arithmetic compiler i s divided into the Scan, Level Analysis, various
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 same 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 same 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 occurs to minimize storag e accesses. 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 rather than the storage 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 program in BCD form 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 character in c a r d column on'e i s saved. 1
If a statement number (EFN) exists 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 record 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-
termine 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
assembled in the F region. A word of all ones i s written after the l a s t non-blank
word i n the F region to serve a s an end-of-statement marker.

At this point a decision must be made a s to whether the statement i a arithmetic,
i f not arithmetic, 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 is not iqentified
i n the dictionary a diagnostic message 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 same 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 B3 contain a l l continuation c a r d s of a source statement, I'esk terminal
blanks, and certain p r e - dige sted information.

The non- executable statements a r e processed in P a s s I and e n t r i e s made in the
appropriate tables in core. If an external statement number (EFN) p p e a r s i n the
a
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
for the 32K FORTRAN 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 address to
the appropriate processor.

As the statement i s scanned, the various parts 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 earlier i f an e r r o r i s found in the source program o r a mach-
ine e r r o r i s encountered. The program consists of:

Program to prepare meesage
Print program
Table of comments

When an e r r o r i s found or occurs during Section I control goes to the Diagnoetic
Program 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 first 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 at the completion of Section I.

1) No e r r o r s had occurred. Go to Section 1'.

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).

TABLES GENERATED BY SECTION

1. Generated by Section I and required for reference. There tables, retained in
cores are:.
NAME DESCRIPTION


DIM P one-dimensional a r r a y e

DIM2 two-dimensional a r r a y s

DIM3 three-dimensional a r r a y s

TAU1 one-dimensional subscripts

TAU2 two-dimensional subscript^

TAU3 three-dimensional subscripts

FIXCON fixed-point constants

FLOCON floating-point constants

FORSUB arithmetic etatement functione

END options specified in END statement


2. 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 per record:

NAME DESC~IPTION

CXT COMPILED INSTRUCTION TABLE
b. Written on tape A4, in buffer sized records with appropriate labele.
DESCRIPTION


TEIFNO corresponding IFNs and EFNe

TDO DO etatemente

TIFGQ IFs, GO T o e , ASSIGN statements

TRAD GO TO statements

FORTAG IFNe - I - TAU tags
FORVAR fixed- point variable usage

FORVAL fixed- point variable definition

FRET FREQUENCY statements

EQUIT EQUIVALENCE statements

GLOSUB names of closed subroutines references

FORMAT FORMAT statements

SUBDEF SUBROUTINE or FUNCTION statement8

COMMON COMMON statemente

HOLARG Hollerith arguments in CALL statements

NONEXC IFNs on non-executable statement$

TSTOPS IFNe of STOP? and RETURN statements

CALEFN first and last IFNs of CALL ratatemenee

FMTEFN 1 - 0 statement reference8 to FORMAT numbera
SECTION I' 2. 01. 02

This section i s a terminal processor 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 size records,
as they became full. They can be many records on tape A4 a l l of the one table
type. These r e c o r d s a r e not necessarily 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 may 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 task 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 certain modifications, primarily 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 program has 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 referring 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 current 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 entry was made. This i s because it could not then be known how may state-
ments further on i n the program 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 terminal entries in tables (in cores).

3. Tables which Section P r e q u i r e for reference (FORSUB), END, DIM1, DIM2,
DIM3, TAU1, TAU2, TAU3, FIXCON, FLOCON in cores. )

4. Tables which Section I did not require for reference. (COMPAIL, on tape BZ,
TEIFNO, TDO, TIFGO, TRAD, FORTAG, FORVAR, FORVAL FRET, EQUIT,
CLOSUB, FORMAT SUBDEF, COMMON, HOLARG, NONEXC, TSTOPSj
j


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 Record 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.
37
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 s COMMON table.

Record 4 i s HOEARG table,

~ e c o r d i s TEPFNO table,
5

Record 6 i s TPFGO 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 s CALENM table,

Record 11 i s FBRTAG table,

Record 12 i s FRET table,

Record 13 i s EQUIT 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 degrees of arithmetic statement functions,
b


if 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 is assembled from
tape A4 and the Section I buffer. Each reference to a format is checked against
the 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".

-- The table of one dimensional a r r a y s is renamed SIZ.
DIM1

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 array. This table is added to SIZ.

-
DIM3 Each entry in the table of three 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 size of the array. This table is added to SIZ.

-- The table isi twritten count.c o r d 3 of file 4 on tape B2.
SIZ
EIFNO table and s word
a s re It is preceded by the


-- The END table i s written a s record 1 of file 5 on tape B2.
END

SUBDEF - The table of subprogram definition is assembled f r o m tape A4 and the
Section I buffer. It is written a s record 2 of file 5 on tape BZ; preceded by i t s
identification (11) and word count.

-
C O M M O N The table of common variables i s assembled from tape A4 and the Sec-
tion I buffer. It i s written as r e c o r d 3 of file 5 on tape B2; preceded by i t s iden-
tification (12) and word count.

HOLARG - The table of hollerith arguments i s assembled f r o m tape A4 and the
Section I buffer. It i s written as record 4 of file 5 on tape B2; preceded by i t s
identification (13) and wo rd count.

-
TEIFNO The table of corresponding external and internal formula n u m b e r s is
assembled from tape A4 and the Section buffer. It i s searched 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 internal for-
mula number, a r e not. considesred a s duplizatcs a , the flag is deleted.
n!
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 memory for use in processing tables discussed.below:

-
TIFGO The tables o f I F s , GO TOs and ASSIGNS is assembled f r o m tape A4
and the Section I buffer. Each external formula number is searched f o r in
'




TEIFNO and i t s corresponding internal number replaces i t in TIFGO.
external formula numbers 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 entries 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.

TRAD - The table of COMPUTED and ASSIGNED GO TO a d d r e s s e s i s assembled
f r o m tape A4 and the Section I buffer. Each entry, which i s a n external formula
number, i s searched for in TEIFNO. 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 to 0 as an e r r o r
signal to Section I". When a l l entries have been t r e a t e d the table is written as
record 7 of file 5 on tape B2; preceded by i t s identification (3) and word count.

--entry itable of D o t stoi sdetermine i f from tape A4 and the DO o r from an
TDO The
Each s examined
assembled
i t originated from a
Section I buffer.

Input-Output List. If i t originated from a DO the E F N for the end of the DO
i e searched for in TEIFNO. When i t i s found the corresponding IFN replaces
i t in TDO. If not found, i t i s aet equal to 0 a s an e r r o r eignal to Section I".
In those c a s e s 'where Section I assigned more than one IFN to' an external num-
b e r , the laet such IFN i s used so that the DO includes a l l instxuctions of the
terminal statement, When a l l entries have been treated the table i s written
a s record 8 of file 5 on tape B2; preceded by i t s identification (1) and word count.
*

-
FORVAL The table of definitions of fixed-point variables is assembled f r o m
tape A4 and the Section I buffer.

CALLNM - The table of f i r s t and l a s t internal formula numbers of statements
containing references to subprograms i s assembled from tape A4 and the Section
1 buffer. Each IFN in FORVAL i s searched for as a f i r s t IFN i n CALLNM. If
found, i t i s replaced by the corresponding l a s t IFN. When all entries have been
processed the FORVAL table i s written a s record 9 of file 5 on tape B2; pre-
ceded by it8 identification (6) and word count. The CALLNM table is dead.

-
FORVAR The table of usages of fixed-point variables is assembled f r o m tape
A4 and the Section I buffer. It i s written as record 10 of file 5 ontape B2 pre-
ceded by i t s identification (5) and word count.

-
FORTAG The table of tag usages i s assembled from tape A4 and the Section I
buffer. It i s written a s record 11 of file 5 on tape B2; preceded by i t s identifi-
cation (4) and word count,

-- IThe table Each E F N in FRET i s searched for in TEIFNO. A4 andfound
FRET
Section buffer.
of frequency statements i s assembled f r o m tape
When
the

i t i s replaced with the corresponding IFN. If not found, i t i s s e t equal to 0 a s an
e r r o r signal for Section 1". The FRET table i s now sorted by IFN to f o r m an
ordered list.

TIFGO - The TIFGO table i s now re-examined for any entries for COMPUTED GO .
TO statements. The IFN of each such statement i s searched for in FRET. If
founa, the l i s t of branch frequencies i s reversed to correspond to the object pro-
gram transfer vector.

When all TIFGO entries have been examined, the FRET table i s written a s record
12 of file 5 on tape B2; preceded by i t s identification (7) and word count.

-
EQUIT The table of equivalence statements i s assembled f r o m Tape A 4 and the
Section I buffer. The table i s reformatized to make those variables which are
equated into strings of relativelized symbols. Any found to be inconsistent are
flagged as e r r o r s for Section I". Any redundancies a r e deleted. The table i s
then written as record 13 of file 5 on tape BZ; preceded by its identification (8)
and word count.
record 7 of file 5 on tape BZ; preceded by i t s identification (3) and word count.

--entry itable of DO'Stoi sdetermine if from tape A4 fromthe DO o r f rIobuffer.
TDO The
Each s examined
assembled
it originated
and
a