GY28-6638-2 Fortran G PLM Dec72
GY28-6638-2 Fortran G PLM Dec72
GY28-6638-2 Fortran G PLM Dec72
5360-25 (OS)
Order No. GY28-6638-2
Program Logic
Restricted Distribution
This
publication
provides
customer
engineers and other technical personnel
with information describing the internal
organization and operation of the FORTRAN
IV (G) compiler.
It is part of an inte~
grated library of IBM system/360 Operating
System Program Logic Manuals. Other publications required for an understanding of
the FORTRAN IV (G) compiler are:
concepts and
Facilitie~,
Form C28-6535
Program
Macro-
Logic Manual,
consists
of
two
~QgLam
Section
1
is an introduction that
describes the FORTRAN IV (G) compiler as a
whole, including its relationship to the
operating" system. The major components of
the compiler and relationships among them
are also described in this section.
Section 2 consists of a discussion of
compiler operation. Each component of the
compiler is described in sufficient detail
to enable the reader to understand its
operation, and to provide a frame
of
reference for the comments and coding supplied in the program listing. Common data
such as tables, blocks, and work areas is
discussed only to the extent required to
understand the logic of each component.
Flowcharts are included at the end of this
section.
Following Section 2, are appendixes that
contain reference material.
If
more
detailed
information
is
required, the reader should see the comments, remarks, and coding in the FORTRAN
IV (G) program listing.
CONTENTS
Messages
Compiler Arrangement and General
Register Usage
Pointers
Drivers
Operation Drivers ~
Control Drivers
....
9
9
9
9
9
9
10
10
10
12
12
12
12
12
13
13
15
15
11
11
20
20
20
21
21
21
21
21
22
23
24
24
26
26
26
26
21
21
21
28
29
30
30
31
HEADOPT, Chart AC
TIMEDAT, Chart AD
t.
35
35
35
36
31
31
")0
.JO
38
38
39
39
39
39
Polish Notation
Source Listing
Phase 2 of the Compiler: Allocate
(IEYALL)
ARRAY ALLOCATE, Chart CN
PASS 1 GLOBAL SPROG ALLOCATE,
Chart CO
39
42
44
45
45
45
45
46
46
46
46
46
46
41
41
41
41
41
48
48
48
48
48
48
48
48
49
49
49
49
49
50
51
51
51
52
52
52
52
53
53
53
53
54
54
54
54
54
54
55
55
55
55
56
56
56
56
56
51
51
51
51
51
51
51
POLISH Roll
FX CONST Roll
FL CONST Roll
DP CONST Roll
TEMP Roll
.140
.140
.140
.141
.141
.141
.141
142
.142
142
143
143
.143
.143
143
.143
.144
.144
.144
.144
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
Roll
16:
16:
11:
17:
18:
18:
19:
TEMP)
.144
.144
.145
.145
.145
.145
.145
20: EQUIVALENCE HOLD (EQUIV HOLD)
. 145
20: REG Roll
.146
21: BASE TABLE Roll .146
22: ARRAY Roll
.146
23: DMY DIMENSION Roll
.141
23: SPROG ARG Roll
.141
24: ENTRY NA~S Roll
.147
25: GLOBAL DMY Roll.
.148
26: ERROR Roll
.148
26: ERROR LBL Roll
.148
21: LOCAL DMY Roll 148
28: LOCAL SPROG Roll
.149
29: EXPLICIT Roll.
.149
30: CALL LBL Roll.
.149
30: ERROR SYMBOL Roll
.149
31: NAMELIST NAMES Roll.
.149
32: NAMELIST ITEMS Roll.
.150
33: ARRAY DIMENSION Roll
.150
34: BRANCH TABLE Roll 150
35: TEMP DATA NAME Roll 150
36: TEMP POLISH Roll 151
36: FX AC Roll
.151
37: EQUIVALENCE Roll
.151
31: BYTE SCALAR Roll
.151
38: USED LIB FUNCTION Roll
.152
39: COMMON DATA Roll
.152
39: HALF WORD SCALAR Roll.
.152
40: COMMON NAME Roll
.152
40: TEMP PNTR Roll
.153
41: IMPLICIT Roll.
.153
42: EQUIVALENCE OFFSET Roll
153
42: FL AC Roll
153
43: LBL Roll
153
44: SCALAR Roll
.154
44: HEX CONST Roll
.154
45: DATA VAR Roll.
154
46: LITERAL TEMP (TEMP LITERAL)
. . . . . .155
41: COMMON DATA TEMP Roll.
.155
47: FULL WORD SCALAR Roll 155
48: COMMON AREA Roll 155
48~ NAMELIST ALLOCATION Roll
.155
49: COMMON NAME TEMP Roll.
.156
50: EQUIV ALLOCATION Roll.
.156
51: RLD Roll
.156
52: COMMON ALLOCATION Roll
.156
52: LOOP CONTROL Roll 156
53: FORMAT Roll 157
54: SCRIPT Roll 151
55: LOOP DATA Roll 151
56: PROGRAM SCRIPT Roll
.158
56: ARRAY PLEX Roll.
.158
57: ARRAY REF Roll
.159
58: ADR CONST Roll
.159
59: AT Roll.
.159
60: SUBCHK Roll.
.160
60: NAMELIST MPY DATA Roll
.160
62: GENERAL ALLOCATION Roll.
.160
62: CODE Roll 160
WORK Roll
EXIT Roll
.160
.160
.160
.161
.161
.161
.161
175
.175
.175
.175
.176
.176
......
....
~
~IT
Or)t i c,n
opt ion
~;URCHK
AT ~jtatf>lTI('nt
TRACE ON !;t d tf'rnent .
TRACE OFF :;tdtf>mpnt
DISPLAY [;t at ement
APPENDIX E: ML;CF.LLAtJF.OOS REFERENCE
DATA
Parsp Lahel I.i st
Supplementd! y Parsp Lahel List
Allocate Label List
Supplementary Allocate Label List
Unify Label List
Supplementary lJni t y Label List.
Gen Label List
supplempntary (;pn Label List
Exit Label List
Supplementary Exit Label List
APPENDIX F: OBJECT-'lIME LIBRARY
SUBPROGRAM~
Library Functions
Composition of the Library
system Generation options
Module Summaries
Library Interrelationships
Initialization
Input/Output operations
10')
.183
.183
183
.183
.183
.LV,,"
.185
.185
.185
.193
193
.196
.196
.198
.198
.208
.208
.212
.212
.212
.212
.213
.214
215
.216
259
.263
ILLUSTRATIONS
Figure 7.
Roll Containing K
Bytes of Information
Fig\lre 8.
Roll Containing L
Bytps of Reserved Information and
K Bytes of New Information
Figure 9.
Roll With a Group Bize
of Twelve
Figure 10.
Roll with Variable
Group Size
11
14
15
16
11
18
23
24
2~
2~
26
26
27
TABLES
CHARTS
Chart 00.
IEYFORT (Part 1 of 4)
Chart 01.
IEYFORT (Part 2 of 4)
Chart 02.
IEYFORT (Part 3 of 4)
Chart 03.
IEYFORT (Part 4 of 4)
Chart M. OPTSCAN..
Chart AB.
DDNAMES..
Chart AC.
HEADOPT
Chart AD.
TIMEDAT
Chart 04.1.
PHASE 1 - PARSE (Part
1 of 2)
Chart 04.2.
PHASE 1 - PARSE (Part
2 of 2)
Chart BA.
WRITE LISTING AND READ
SOURCE
Chart BB.
INITIALIZE FOR
PROCESSING STATEMENT
Chart BC1.
PROCESS LABEL FIELD
(Part 1 of 2)
Chart BC2.
PROCESS LABEL FIELD
(Part 2 of 2)
Chart BD.
PROCESS STATEMENT
Chart BE.
COMPLETE STATEMENT AND
MOVE POLISH
Chdrt BF.
PROCESS END STATEMENT
Chart BG.
PROCESS POLISH
Chart 05.
PHASE 2 - ALLOCATE
(Part 1 of 2)
Chart 06.
PHASE 2 - ALLOCATE
(Part 2 of 2)
Chart CA.
MOVE BLD NAMES TO DATA
VAR ROLL
Chart CB.
PREPARE EQUIVALENCE DATA
Chart CC.
ALLOCATE BLOCK DATA
Chart CD.
PREPROCESS DUMMY
DIMENSIONS
Chart CEo
CHECK FOR UNCLOSED DO
LOOPS
Chart CF.
CONSTRUCT BRANCH TABLE
ROLL
Chart CG.
ALLOCATE HEADING AND
PUNCH ESD CARDS
Chart CH.
CHECK ASSIGNMENT OF
FUNCTION VALUE
Chart CI.
COMMON ALLOCATION
Chart CK.
EQUIVALENCE DATA
ALLOCATION
Chart CL.
SAVE AREA, BASE AND
BRANCH TABLE ALLOCATION
Chart CM.
ALLOCATE SCALARS
Chart CN.
ALLOCATE ARRAYS
Chart CO.
ADD BASES FOR
SUBPROGRAM ADDRESSES
Chart CP.
ALLOCATE SUBPROGRAM
ARGUMENT LISTS
Chart CQ.
PREPARE NAMELIST TABLES
Chart CR.
ALLOCATE LITERAL
CONSTANTS
Chart CS. ALLOCATE FORMATS
Chart CT. MAP EQUIVALENCE
Chart CU.
ALLOCATE SUBPROGRAM
ADDRESSES
59
60
61
62
63
64
65
66
67
6e
68
69
70
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Chart CV.
BUILD AND PUNCH
NAMELIST TABLES
97
Chart CWo
BUILD BASES
98
Chart CX.
DEBUG ALLOCATE
99
Chart 07.
PHASE 3 - UNIFY.
.100
Chart DA.
BUILD ARRAY REF ROLL 101
Chart DB.
MAKE ADDRESS CONSTANTS .102
Chart DC.
CONSTRUCT INSTRUCTIONS .103
Chart DO.
PROCESS NESTED LOOPS
.104
Chart 08.
PHASE 4 - GEN 105
Chart EA.
GENERATE ENTRY CODE 106
Chart EB.
PROLOGUE CODE GENERATION 107
Chart EC.
EPILOGUE CODE GENERATION 108
Chart ED.
MOVE POLISH NOTATION 109
Chart EF.
PROCESS LABELS
110
Chart EG.
GENERATE STMT CODE
.111
Chart EH.
COMPLETE OBJECT CODE 112
Chart 09.
PHASE 5 - IEYEXT
113
Chart FA.
PUNCH CONSTANTS AND
TEMP STORAGE .114
Chart FB.
PUNCH ADR CONST'ROLL .115
Chart FC.
PUNCH OBJECT COD.E .116
Chart FD.
PUNCH BASE TABLE
.111
Chart FE.
PUNCH BRANCH TABLE 118
Chart FF.
PUNCH SUBPROGRAM
ARGUMENT LISTS
.119
Chart FG.
PUNCH SUBPROGRAM
ADDRESSES
.120
Chart FH.
COMPLETE ADDRESSES FROM
LIBRARY 121
Chart Fl.
PUNCH ADDRESS CONSTANTS .122
Chart FJ.
PUNCH RLD CARDS 123
Chart FK.
PUNCH END CARDS 124
Chart FL.
PUNCH NAMELIST TABLE
POINTERS.
125
Chart GO.
IHCFCOMH/IHCECOMH
(Part 1 of 4)
243
Chart GO.
IHCFCOMH/IHCECOMH
(Part 2 of 4)
. 243.1
Chart GO.
IHCFCOMH/IHCECOMH
(Part 3 of 4)
243.2
Chart GO.
IHCFCOMH/IHCECOMH
(Part 4 of 4)
243.3
Chart Gl.
IHCFIOSH/IHCEFIOS
(Part 1 of 2)
244
Chart Gl.
IHCFIOSH/IHCEFIOS
(Part 2 of 2)
244.1
Chart G2.' IHCDIOSE/IHCEDIOS
(Part 1 of 5)
245
Chart G2.
IHCDIOSE/IHCEDIOS
(Part 2 of 5)
245.1
Chart G2.
IHCDIOSE/IHCEDIOS
(Part 3 of 5)
245.2
Chart G2.
IHCDIOSE/IHCEDIOS
(Part 4 of 5)
245.3
Chart G2.
IHCDIOSE/IHCEDIOS
(Part 5 of 5)
246
Chart G3.
IHCNAMEL 247
Chart G4.
IHCFINTH/IHCEFNTH
(Part 1 of 3)
248
Chart G4.
IHCFINTH/IHCEFNTH
(Part 2 of 3)
248.1
ILLUSTRATIONS
Fiqure 7.
Roll Containing K
Bytes of Information
Figure 9.
Roll With a Group Rize
of Twelve
Figure 10.
Roll with Variable
Group Size
11
14
15
16
17
lR
23
24
2~
2~
26
26
27
Figure 14.
TABLES
CHARTS
Chart 00.
IEYFORT (Part 1 of 4)
Chart 01.
IEYFORT (Part 2 of 4)
Chart 02.
IEYFORT (Part 3 of 4)
Chart 03.
IEYFORT ( Pa rt 4 of 4)
Chart AA.
OPTSCAN
Chart AB.
DDNAMES..
Chart AC.
HEADOPT
Chart AD.
TIMEDAT......
Chart 04.1.
PHASE 1 - PARSE (Part
1 of 2)
Chart 04.2.
PHASE 1 - PARSE (Part
2 of 2)
Chart BC2.
PROCESS LABEL FIELD
(Part 2 of 2)
Chart BD.
PROCESS STATEMENT
Chart BE.
COMPLETE STATEMENT AND
MOVE POLISH
Chdrt BF.
PROCESS END STATEMENT
Chart BG.
PROCESS POLISH
Chart 05.
PHASE 2 - ALLOCATE
(Part 1 of 2)
Chart 06.
PHASE 2 - ALLOCATE
(Part 2 of 2)
Chart CB.
PREPARE EQUIVALENCE DATA
Chart CC.
ALLOCATE BLOCK DATA
Chart CD.
PREPROCESS DUMMY
DIMENSIONS
Chart CEo CHECK FOR UNCLOSED DO
LOOPS
Chart CF. CONSTRUCT BRANCH TABLE
ROLL
Chart CG.
ALLOCATE HEADING AND
PUNCH ESD CARDS
Chart CH. CHECK ASSIGNMENT OF
FUNCTION VALUE
Chart CI. COMMON ALLOCATION
Chart CK.
EQUIVALENCE DATA
ALLOCATION
Chart CL.
SAVE AREA, BASE AND
BRANCH TABLE ALLOCATION
Chart CM. ALLOCATE SCALARS
Chart CN.
ALLOCATE ARRAYS
Chart CO. ADD BASES FOR
SUBPROGRAM ADDRESSES
Chart CP. ALLOCATE SUBPROGRAM
ARGUMENT LISTS
Chart CQ.
PREPARE NAMELIST TABLES
Chart CR.
ALLOCATE LITERAL
CONSTANTS
Chart CS. ALLOCATE FORMATS
59
60
61
62
63
64
65
66
67
68
68
69
70
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Chart CV.
BUILD AND PUNCH
NAMELIST TABLES
97
Chart CWo
BUILD BASES
98
Chart CX.
DEBUG ALLOCATE
99
Chart 07.
PHASE 3 - UNIFY.
.100
Chart DA.
BUILD ARRAY REF ROLL 101
Chart DB.
MAKE ADDRESS CONSTANTS .102
Chart DC.
CONSTRUCT INSTRUCTIONS .103
Chart DO.
PROCESS NESTED LOOPS
.104
Chart 08.
PHASE 4 - GEN 105
Chart EA. GENERATE ENTRY CODE 106
Chart EB.
PROLOGUE CODE GENERATION 107
Chart EC.
EPILOGUE CODE GENERATION 108
Chart ED.
MOVE POLISH NOTATION 109
Chart EF.
PROCESS LABELS
110
Chart EG. GENERATE STMT CODE
.111
Chart EH.
COMPLETE OBJECT CODE 112
Chart 09.
PHASE 5 - IEYEXT
113
Chart FA.
PUNCH CONSTANTS AND
TEMP STORAGE .114
Chart FB. PUNCH ADR CONST"ROLL .115
Chart FC.
PUNCH OBJECT CODE .116
Chart FD.
PUNCH BASE TABLE
.117
Chart FE.
PUNCH BRANCH TABLE
.118
Chart FF.
PUNCH SUBPROGRAM
ARGUMENT LISTS
.119
Chart FG.
PUNCH SUBPROGRAM
ADDRESSES
.120
Chart FH. COMPLETE ADDRESSES FROM
LIBRARY 121
Chart Fl.
PUNCH ADDRESS CONSTANTS .122
Chart FJ.
PUNCH RLD CARDS 123
Chart FK.
PUNCH END CARDS 124
Chart FL.
PUNCH NAMELIST TABLE
POINTERS.
125
Chart GO.
IHCFCOMH/IHCECOMH
(Part 1 of 4)
243
Chart GO.
IHCFCOMH/IHCECOMH
(Part 2 of 4)
243.1
Chart GO.
IHCFCOMH/IHCECOMH
(Part 3 of 4)
243.2
Chart GO.
IHCFCOMH/IHCECOMH
(Part 4 of 4)
243.3
Chart G1.
IHCFIOSH/IHCEFIOS
(Part 1 of 2)
244
Chart G1.
IHCFIOSH/IHCEFIOS
(Part 2 of 2)
244.1
Chart G2.
IHCDIOSE/IHCEDIOS
(Part 1 of 5) 245
Chart G2.
IHCDIOSE/IHCEDIOS
(Part 2 of 5)
245.1
Chart G2.
IHCDIOSE/IHCEDIOS
(Part 3 of 5)
245.2
Chart G2.
IHCDIOSE/IHCEDIOS
(Part 4 of 5)
245.3
Chart G2.
IHCDIOSE/IHCEDIOS
(Part 5 of 5)
246
Chart G3.
IHCNAMEL........ 247
Chart G4.
IHCFINTH/IHCEFNTH
(Part 1 of 3)
248
Chart G4.
IHCFINTH/IHCEFNTH
(Part 2 of 3)
248.1
. . . . ..
248.2
249
2)
2)
2)
2)
3)
3)
~"A
.::;)U
251
252
253
.254
.255
.256
Chart
Chart
Chart
Chart
Chart
Chart
Chart
Chart
Chart
Chart
Chart
G9.
G1O.
Gil.
G12.
G13.
G14.
GiS
G16.
G16.
G16.
G16.
257
258
258.1
258.2
.258.3
.258.4
.258.5
IHCFOPT (Part 3 of
IHCTRCH/IHCERTCH
IHCFOUMi?
IHCt'EXIT
IHCFSLIT
IHCFOVER
IHCFOVCH
IHCOBUG (Part 1 of
IHCOBUG (Part 2 of
IHCOBUG (Part 3 of
IHCOBUG (Part 4 of
3)
4)
4)
4)
4)
258.6
258.7
.258.8
258.9
This section contains general information describing the purpose of the FORTRAN
IV (G) compiler, the minimum machine configuration required, the relationship of the
compiler to the operating system, compiler
design and implementation, and compiler
output.
The various rolls,1 variables,
registers, pointers, and drivers used by
the compiler are also discussed.
MACHINE CONFIGURATION
COMPILER DESIGN
The
minimum
system
configuration
required for the use of the IBM System/360
Operating System with the FORTRAN IV (G)
compiler is as follows:
IBM System/360 Model 40 computer
with a storage capacity of 128K bytes
and a standard
and
floating-point
instruction set.
An
pro-
roll
bytes,
exceeds
its
The primary control and processing routines (hereafter referred to as "POP routines" or "compiler routines") of the compiler are primarily written in machineindependent pseudo instructions called POP
instructions.
Interpretation of the pseudo instructions is accomplished by routines written
in the System/360 Operating System assembler language.
These routines (hereafter
referred to as "POP subroutines") are an
integral part of the" compiler and perform
the operations specified by the POP
instructions, e.g., saving of backup informa-"
tion, maintaining data indicators, and general housekeeping.
Control of the compiler operation is
greatly affected by source language syntax
rules during the first phase of the compiler, Parse. During this phase, identifiers
and explicit declarations encountered in
parsing are placed in tables and a PO!!2h
notation form of the program is produced.
(Por further information on Polish notation, see Appendix C,
"Polish Notation
Formats.")
10
POP LANGUAGE
The FORTRAN IV (G) compiler is written
in a combination of two languages:
the
System/360 Operating System assembler language, which is used where it is most
efficient, and the POP language.
The POP language is a mnemonic macro
programming language whose
instructions
include functions that are frequently performed by a compiler. POP instructions are
written for assembly by the System/360
Operating System assembler, with the POP
instructions defined as macros.
Each POP
instruction is assembled as a pair of
address constants which together indicate
an instruction code and an operand. A
statement or instruction written in the POP
language is called a POP. The POP instructions are described in Appendix A.
COMPILER ORGANIZATION
The System/360 Operating System FORTRAN
IV (G) compiler is composed of a control
phase, Invocation, and five
processing
phases (see Figure 1): Parse, Allocate,
Unify, Gen, and Exit. The operating system
names for these phases are,
respectively,
IEYFORT, IEYPAR, IEYALL, IEYUNF, IEYGEN,
and IEYEXT.
(The first level control and
second level processing compiler routines
used in each phase are shown in Figure 2.)
In addition, Move is a pre-assembled work
area, IEYROL.
IEYFORT
SYSIN----------->r---~~~;~;----l----->f---~~~t;ol---l----->r--i~;~~;ti~~-l-----> ~
I
Module
l~~~
__________ J
(9
.I
Program
L_____________ J
,Phase
r-------------,
I IEYPAR
V
~============_J
r--->ISource Module I
I_____________
listing
1I
L
JI
r-------------,
I
P~r~e
t-----------i
I (Phase 1)
I
I
l------T-----I
r-------------,
I
L--->ISource Module,
SYSPRINT
V IEYALL
Allocate
I
,r-------------,
SYSPRINT
IL_____________
diagnostics JI
(Phase 2)
r-------------,
Maps JI
Ir--->IStorage
L_____________
~-----------~
L------T------J
,
I IEYUNF
V
r-------------,
SYSPRINT
SYSPUNCH/SYSLIN
r-------------,
Unify
I
(Phase 3)
L------T------J
I
IEYGEN
r-------------,I
I Gen
,
(Phdse 4)
l------T-----I
I
J
r-------------,
r--->IObject Module I
I
L
I_____________
listing
JI
V IEYEXT
I
r-------------,
I
IObject Module I
r-------------,
cards
I
I Exit
(Phase 5)
I~-----------+--->ITXT
I
L_____________
J
l------T------
II
V IEYFORT
I
IESD, RLD, andl
L--->IEND
cards
L_____________
JI
j-------------l
SYSPRINT
SYSPUNCH/SYSLIN
SYSPUNCH/SYSLIN
r-- -----------,
I
I
Invocation I
Phase
I
. * *.
*
. ~ul tiple*.
NO
r--------:------,
Compi lations --------------> I Control
I
.
.
I Program
I
*.
L__ ~----------J
YES
Figure
1.
Section 1:
11
control Phase:
Invocation (IEYFORT)
Phase 1:
Phase AI:
Gen (IEYGEN)
Allocate (IEYALL)
Parse (IEYPAR)
Phase 2:
Phase 5:
Exit (IEYEXT)
that
Section 1:
13
r---------------------------------------------------------------------------------------,
r--- PRINT AND READ SOURCE
I
I
I
I
STA INIT
LBL FIELD XLATE
! PARSE---~
I
STA XLATE
1-I
I
STA FINAL
1
I
I REGISTER IBCOM
I
I
I
PROCESS POLl SH
1
L---STATEMENT PROCESS----.
ACTIVE END STA Y~TE
I
L---STA FINAL END
r---START COMPILER
1
1
UNIFY--------ST~T UNIFY----------~
r---START GEN
,
I
I
I
GEN-----,
r---GET POLISH
LBL PROCESS
1
STA GEN
L---STA GEN FINISH
r---PUNCH TEMP AND CONST ROLL
1
PUNCH ADR CONST ROLL
1
PUNCH CODE ROLL
I
PUNCH BASE ROLL
I
PUNCH BRANCH ROLL
I
PUNCH SPROG ARG ROLL
EXIT---------EXIT PASS------------t
PUNCH GLOBAL SPROG ROLL
I
PUNCH USED LIBRARY ROLL
I
PUNCH ADCON ROLL
I
ORDER AND PUNCH RLD ROLL
I
PUNCH END CARD
I
PRINT HEADING
I
PRINT A LINE
- - ____________________________ . _J
IL- ______________________________________________________
L---PRINT COMPILER STA~ISTICS
L---GEN
Figure
2.
PROCESS----------~
r-------T----------T------------------,I
I Load
I
I
IModule I
IContent or
I Name
I Components I Function
I
I
~-------+----------+------------------i
Low IEYFORTjIEYFORT
jlnvocation and
Core
control
IIEYFORT1
'Option bits
I .
IIEYFORT2
I~oads
IIEYROL
and deletes
other modules
Roll statistics
(bases, tops,
bottoms)
Group statistics
(displacement
group sizes)
WORK roll
EXIT roll
COMPILER OUTPUT
The source module(s)
to be compiled
appear as input to the compiler on the
SYSIN data set. The SYSLIN, SYSPRINT, and
SYSPUNCH data sets are used (depending on
the options specified by the user) to
contain the output of the compilation.
IEYINT
I
IPOP machine
I language subI routines
Roll Storage is Allocated from this
The output of the compiler is represented in EBCDIC form and consists of any
or all of the following:
Object Module (linkage editor input)
Source Module listing
Object Module listing
IEYPAR
IEYPAR
IParse phase
I EYALL
IEYALL
IEYUNF
IEYUNF
IEYGEN
IEYGEN
IQuotes and
messages
Storage maps
1Allocate phase
I
I
JUnify phase
IGenerate phase
High
I
CorelIEYEXT
IEYEXT
IExit
phase
L_______ __________
_________________
_
~
Figure
3.
Section 1:
15
r---------------------------------------------------------------------------------------,
r----------------,
I
Error and
I
r----For all-------------->I
I
compilations
I
Warning
I SYSPRINT
Messages
I
Il ________________
(if any)
JI
,,
r----------------,
Object
I
I
I
I
Option---------->I
~----LIST
SYSIN
r--------,
,source ,
'Module
l----T---J
,
I
I SYSPRINT
JI
Il ________________
listing
I
I
r----------------,
'Object Module
I
~----DECK
,
I
,
I
Module
I
I
I
r---------, ,
I FORTRAN ,
'IV (G)
r----------------,
IObject Module
I
~->~
'Compiler'
l ________ J
,,
~----LOAD
,,
,
~----MAP
I,
r----------------,
Storage
,
Option----------->I
Il ________________
Map
J,
SYSPRINT
,I
I
r----------------,
I
Source
,
L----SOURCE Option-------->I
Module
, SYSPRINT
lI ________________
J,
Listing
l _____________________________________________________________________________________ __
Figure
16
4.
Compiler Output
OBJECT MODULE
The configuration of the object module
produced by the FORTRAN IV (G) compiler is
shown in Figure 5.
Entry point--->
r---------------------,I
IHe~ding
.---------------------~
'Save area
!.
~---------------------i
I
IBase table
.---------------------~
IBranch table
I
~---------------------i
13ubprogram
argument ,
I
~---------------------i
ISubprogram addresses I
t---------------------~
IEQUIVALENCE variables I
Ilists
t---------------------iI
.---------------------i
I Arrays
t
SAVE AREA:
The save area. at maximum 12
bytes long, is reserved for information
saved by called subprograms.
Figure 6
shows an example of the use of this area in
program Y, which is called by program X,
and which calls program Z.
The first byte of the fifth word in the
save area (Save Area of Y + 16) is set to
all ones by program Z before it returns to
program Y. Before the return is made,
all
general registers are restored to their
program Y values.
IScalar variables
~---------------------i
I
.---------------------~I
ILiteral .constants
INAMELIST tables
I
I
.---------------------~I
IFORMAT statements
.---------------------i
ITemporary storage
I
land constants
.---------------------i
IProgram text
I
L _____________________ J
Figure
5.
Section 1:
11
.--------------------------------------------------------------------------------------,
<--- bytes---->
r----------------,
I Subprogram
I <---Stored by initial entry code.
~
pro~rdm
y.
t----------------~
t~~~~~~~~-~~-----~ ,
+16 IRegister 1~
I
.----------------~
+20 IRgister 0
I
.----------------~
!
I
I
z.
I
I
I
.----------------~
+12 lIRegister
12
I
___ ._____________ J
l ______________________________________________________ - ________________
Figure
b.
Examplp of Use of
Sav~
Area
BRAN~TABLE:
18
~---------------J
ARRAYS:
All arrays which are not
in
COMMON,
and are not members of EQUIVALENCE
sets appear in this area of the object
module.
NAMELIST TABLES:
For each NAMELIST name
and DISPLAtstatement in the source module,
a NAMELIST table is constructed hy the
compiler and placed in this area of the
object module.
Each table consists of one
entry for each scalar variable or array
listed following the NAMELIST name or in
the DISPLAY statement, and begins with four
words of the following form:
---------T-------------------------------,I
I
By tel
I Word
I
~--------
-------------------------------iI
I
1
I
name field
I
I
2
I
I
~-------------------------------~
I
I
3
I
I
I
I
not used
I
IL_________
4
I _______________________________ JI
~
~--------
1
2
3
4
I
-------------------------------~
I
1
I
I
I
I
name field
I
I
2
I
I
I
~-------------------------------~
I
3
I
address field
I
I
~-----~-------T----------------~
IL _________
4
I _____
type I _______
mode I ________________
not usei
JI
~~
t------------------------------------~~-i
1
I
'
I
I
,
I
I
I
I
I
I
I
I
~-------------------------------~
I
ltype
I
I
address field
~-------T-------T-------T-------~
I
I
name 'field
I
I
I
1mode
I no.
Idimensllength I
~-------+-------~-------~-------i
have
---------T-------------------------------,
By tel
I
I
I W~rd
---------T-------------------------------,I
I
Byte I
I word
I
I tor
'I field
I
~-------~-----------------------~
Inot
jsecond dimension factorj
lused
Ifield
I
~-------+-----------------------i
Inot
Ithird dimension factor I
Il _______
used
I _______________________
field
I
~
I
I
I
etc.
etc~
l _________________________________________
JI
where:
name field
contains the name of
justified.
th~
arr3Y,
right
address field
contains the relative address of the
beginning of the array within the
object module.
where:
name field
contains the name of the scalar variable, right justified.
address field
contains the relative address of the
variable within the object module.
type ~ield
contains zero
variable.
to
mode field
contains the mode
coded as fOlloWS:
2
3
4
5
6
7
8
9
A
indicate
mode field
cont~ins
the mode of the array elements, coded as for scalar variables,
above.
no.
dimens.
contains the number of dimensions in
the array; this value may be 1-7~
a scalar
length field
contains the length of the array
ment in bytes.
of
the
ele-
variable,
Logical, 1 byte
Logical, fullword
Integer, halfword
Integer, fullword
Real, double precision
Real, single precision
complex, double precision
Complex, single precision
Literal (not currently
compiler-generated)
indicator field
is set to zero if the array has been
defined to have variable dimensions;
otherwise, it is set to nonzero.
first dimension factor field
contains the total size of the array
in bytes.
second dimension factor field
contains the address of the second
multiplier for the array (nl*L, where
n1 is the size of the first dimension
in elements, and L is the number of
bytes per element).
Section 1:
19
The
object
module produced by the
FORTRAN IV (G) compiler uses the System/360
general registers in the following way:
Register 0:
Register 2:
Used as an accumulator.
Register 3:
Used as an accumulator.
Used as an accumulator.
OBJECT MODULE LISTING
STORAGE MAPS
The optional storage map consists of six
independent listings of storage information. Each listing specifies the names and
locations of a particular class of variable. The listings are:
COMMON variables
EQUIVALENCE variables
Scalar variables
Array variables
NAMELIST tables
FORMAT statements
A list of the subprograms called is also
produced.
ERROR MESSAGES
21
4 bytes
BASE
TOP
(n)
I
I
~---------------~~
t---------------1 .
BASE,
~---------------~
~---------------~
I
' K bytes
1 1
1 2
1 2
9 0
3
1
r-------------T------------T--------------,
IEntry number'
I
I
linto the
I Displacement I
I
,ROLL ADR
' ( 12 bi ts)
,
l, _____________ i I ____________
i I ______________ JI
Table
The entry number points to an entry in the
ROLL ADR table and, hence, to the beginning
address of a block of roll storage.
The
displacement is a byte count from the
beginning of the indicated storaqe block to
the location to which the variable (BASE,
BOTTOM, or TOP) refers.
It is significant to note that the
displacement field in these variables occupies twelve bits.
If the displacement
field is increased beyond its maximum value
(4095), the overflow increases the entry
number into the ROLL ADR table; this is the
desired result, since it simply causes the
variable to point to the next entry in the
table and effectively indicate the next
location in the roll storage area,
the
beginning of the next block.
The first status variable for each roll,
BASE,
indicates the beginning address of
that roll, minus four.
The second variable,
BOTTOM, indicates the address of the
most recently entered word on the roll.
If the roll is completely empty,
its
BOTTOM is equal to its BASE; otherwise,
BOTTOM always exceeds BASE by a multiple of
four.
Figure 7 illustrates a roll which
contains information.
~---------------~
BOTTOM(n)---->l _______________ J~
Figure
7.
Roll. Containing
Information
Bytes
of
23
BASE + K
TOP + K
= TOP
+ K
= BASE
+ L + K + 4
BASE
r---------------,I <---unused
(n)----->I
r~~~~~~~~~~~~~~~~l
~---------------~
t-------~-------1)
L bytes
~---------------~
I
I
I
, K bytes
~---------------~
TOP (n)------>I
I <---previous
~--------------TOP-BASE
~---------------~
~---------------~
~---------------~
~---------------~
~---------------~
BOTTOM (n)--->Il ______________ _ I
Figure
8.
Special Rolls
The WORK roll and the EXIT roll are
special rolls in that they are not maintained in the roll storage area, but rather
appear in IEYROL with a fixed amount of
storage allocated to each. They are rolls
24
GROUP STATS:
Since the size of the group
varies from roll to roll, this characteristic of each roll must be tabulated in
order to provide proper manipulatio~ of the
roll. In addition, the groups on a roll
are frequently searched against the values
held in the central items (SYMBOL 1, 2,
3,
etc.,).
Additional characteristics of the
roll must be tabulated in order to provide
for this function.
Four variables tabulated in the group stats
tables
are
required
to maintain this information.
(See Section 2 "IEYROL Module.")
4 bytes
[---------------1
~---------------i
( I
1st group
.TOP
(n)
t---------------1
~---------------i
)~---------------~
2nd group
\ ~---------------~
t~---------------1
,~---------------i
3rd group
~---------------1
~---------------i
L _______________ J
Roll
With
Twelve
Group
Size
of
r-------------,I <---no.
BASE
(n)t
TOP
l->~-------------i
(n)'
~-------------i
I
3
,
words
in group
~-------------i
t-------------11
group
~-------------iL information
I
,,
~-------------i
~-------------i
~-------------i
plex
~-------------~
~-------------i
~-------------i
'
~I ------:------ill t plex
BOTTOM
Figure
(n)
10.
t-------------1~
L _____________ J
25
r-----------T------------,
~-----------+------------~
OTHER VARIABLES
In addition to the
central
items,
several other variables used in the compiler perform functions which are significant
to the understanding of the POP instructions.
These are described in the following paragraphs.
The variable ANSWER BOX, which is recorded in the first byte of the first word
of each EXIT roll group, is used to hold
the
true or false responses from POP
instructions. The value "true" is represented by a nonzero value in this variable,
ana "false" by zero. The value is checked
by POP jump instructions.
~-----------~------------~
1
1
1
1
1
I
~-----------T------------~
OP CONST rOII--->1
81
01
~-----------~------------~
I
I
I
I
~-----------T------------i
ARRAY rOII--->1
01
01
~-----------~------------~
1
1
I
I
Scan Control
~-----------T------------~
l ___________ ~ ____________ J
Figure 11.
r-----------T------------,
~-----------+------------i
~-----------~------------i
1
1
1
I
~-----------T------------~
OP CONST roll--->1
81
81
~-----------~------------~
I
1
1
J
~-----------T------------~
ARRAY roll--->I
61
201
~-----------~------------~
l~-----------T------------~
___________ ____________ J
~
Figure 12.
26
Several
variables
are used in the
character scanning performed by the first
processing phase of the compiler, Parse
. Their names, and terms associated with
their
values,
are frequently used in
describing the POP instructions.
The variable CRRNT CHAR holds the source
statement character which is
currently
being inspected; the variable is four bytes
long.
The position (scan arrow) of the
current character within the input statement (its column number, where a continuous
column count is maintained over each statement) is held in the low-order bit positions of the fullword variable CRRNT CHAR
CNT.
Non-blank characters are called "active
characters," except when literal or IBM
card code information is being scanned.
The variable LAST CHAR CNT, which occupies
one word of storage, holds the column
number of the active character previous to
the one in CRRNT CHAR.
Column number:
1
1234567890
DO 50 1
1, 4
A(1) == B(1)2
DO 50 J==l, 5
50 C(J+l) == A(n
4 bytes
QUOTE BASE
ir------------------------------
00
02
N
D i
~------------------------------~
I 00.
08
I
M I
.------------------------------~
lEN
S
1 I
t~121~!!~tiQ!2:
.------------------------------i
rON
b
b I
r-----------------------------------------,
(EBCDIC)
I
.------------------------------i
I 00
07
L
0 I
t~------------------------------~
00
07
M
P I
.~-----------------------------i
I LIe
I I
~------------------------------~
I T
b
b
b I
J J
l _________________________________________
~-------------~----------------~
G
I .
C
A I
CRRNT CHAR
.------------------------------i
I L
b
b
b I
r-----------------------------------------,
~------------------------------~
9 J1
1L_________________________________________
I
I
I
I
I
I
.------------------------------i
I 00
06
F
0 I
r-----------------------------------------,
IL_________________________________________
1
8 I
~------------------------------~
R
MAT I
t------------------------------i
t
I
L
t ______________________________ JI
Figure 14.
Quotes
Quotes are sequences of characters preceded by a halfword character count; they
are compared with the input data to determine a statement type during the Parse
phase.
These
constants
are
grouped
together at the end of phase 1.
The
location labeled QUOTE BASE is the beginning location of the first quote; instruc-
Messages
The messages used in the compiler, which
are also grouped together at the end of
Phase 1, are the error messages required by
Parse for the source module listing.
The
first byte of each message holds the condition code for the error described by the
message. The second byte of the message is
the number of bytes in the remainder of the
message. The message follows this halfword
of information.
The location labeled MESSAGE BASE is the
beginning location of the first message;
instructions which refer to messages are
assembled with address fields relative to
this location.
Section 1:
27
General register 2,
PGB2,
holds the
beginning address of the g!Qba~me_~~bl~,
a table containing the addresses of compiler routines which are the targets of jump
instructions.
(See Appendix A for further
discussion of this table and the way in
which it is used.) The global jump table
appears in each phase of the compiler and
is labeled PROGRAM BASE 2; thus, the value
held in general register 2 is changed at
the beginning of each
phase
of
the
compiler.
r------------T------------------T--------------------------------------------,
Register 1 Label
I Contents
_______________________ I
~------------L------------------L---------------------
Invocation Phase
~------------T------------------T--------------------------------------------~
POPPGB--->I
POP TABLE
low
storage
I
I Roll Storage.
I
~------------f------------------+--------------------------------------------~
I CONSTR--->1 CBASE
I Parse Data Items
I
~--------------------------------------------~
I
I
I
I
I Parse Routines
I
~--------------------------------------------~
I
I
\ PGB2----->\
PROGRAM BASE 2 I Parse Glob~l Jump Table
\
\
I
I
)
I
I
I
)
I
\
I
I
I
QUOTE BASE
~--------------------------------------------~
Parse Routines containing assembler
I
I
language branch targets
\
~--------------------------------------------~
I Quotes
I
MESSAGE BASE
~--------------------------------.------------~
Messages
~------------L------------------L---------------------
_______________________ )
~
I
PHASE 2: Allocate
1
~----------------------------------------------------------------------------~
)
PHASE 3:
Unify
~----------------------------------------------------------------------------~
)
PHASE 4:
Gen
t----------------------------------------------------------------------------~
PHASE 5:
Exi t
~----------------------------------------------------------------------------~
I.Roll storage is allocated in 4K-byte blocks, beginning from the higher end)
I of storage contiguous with Parse.
Additional blocks are obtained,
as)
lI ____________________________________________________________________________
needed, from' preceding (lower) 4K-byte blocks of storage.
JI
Figure 15.
28
high
storage
Compiler routines which contain assembler language instructions and are either
branched to by other assembler language
instructions or which themselves perform
internal branches,
follow the global jump
table. General register 2 is used as a
base register for references to both the
global jump table and these
routines.
Figure 15 shows this register in Parse.
General register 3, called POPADR in the
compiler code, is used in the sequencing of
the POP operations.
It holds the address
of the current POP, and is incremented by 2
as each POP is interpreted.
General register 4, called WRKADR, holds
the address of the current bottom of the
WORK roll.
General register 5, called EXTADR, holds
the address of the current bottom of the
EXIT roll.
General register 6, called POPXIT, holds
the return location for POP subroutines.
When POPs are being interpreted by POP
SETUP, the return is to POP SETUP: when
machine language instructions branch to the
POPs, it is to the next instruction.
POINTERS
Information defining a source module
variable (its name, dimensions,
el:..c.)
is
recorded by the compiler when the name of
the variable appears in an Explicit specification
or
DIMENSION statement.
For
variables which are not explicitly defined,
this information is recorded when the first
use of the variable is encountered.
All
constants are recorded when they are first
used in the source module.
All references to a given variable or
constant are i"ndicated by a pointer'to the
location at which the information defining
that variable or constant is stored.
The
use of the pOinter eliminates redundancy
and saves compiler space.
The pointer is
following format:
I byte
byte
2 bytes
r---------T----------y--------------------,
~
JI
IL_________
TAG
I __________
OPERATOR ~I ____________________
ADDRESS
where:
General register 7, 'called ADDR, holds
the address portion of the current POP
instruction (eight bits); it is also used
in the de~oding of the operation code
portion of POP instructions.
General register 8, called POPPGB, holds
the beginning address of the machine language code for the POP instructions and the
POP jump table.
Figure 15 shows this
register,
which is used as a base for
references to these areas.
General register 9, called CONSTR, holds
the beginning address of the data referred
to by the compiler routines.
This area
precedes the routines themselves,
and is
labeled CBASE,
as indicated in Figure 15.
This register is, therefore, used as a base
register for references to data as well as
for references to the routines in the
compiler;
its value is changed at the
beginning of each phase.
General register 10, ROLLBR, holds the
beginning address of the roll area;
that
is, the beginning address of the base table
(see Figure 15).
The
value
in this
register remains constant throughout the
operation of the compiler.
General
register
11, RETURN,
holds
return addresses for the POP subroutines.
The remaining general registers are used
temporarily for various purposes in the
compiler.
TAG
is a i-byte item whose value is represented in two parts: MODE,
occupying
the upper four bits, indicates whether
the variable or constant is integer,
real, complex or logical; SIZE,
indicated in the lower four bits, specifies the length of the variable or
constant (in bytes) minus one.
(See
Figure 15.1).
r-------T-------------T-------T-----------,
!Value I MODE
I Value I SIZE
I
r-------f-------------t-------t--------~--~
I
0
I Integer
I
0
I 1 byte
I
J
1
I Real
I
1
I
2 bytes
I
2
I Complex
I
3
I
4 bytes
I'
I
I
3
I Logical
I
7
I 8 bytes I
J
4
I Literal/
I
F
I 16 bytes I
Hexadecimal
lI _______ I ______
._______ I _______ I ___________ JI
~
Figure 15.1
OPERATOR
is a 1-byte item which contains the
roll number of the roll on which the
group defining the constant or variable is stored.
ADDRESS
is a 2-byte item which holds the
relative address
(in bytes)
of the
group which contains the information
for the constant or variable;
the
address is relative to the rop of the
roll.
section 1:
29
2.
~ple:
TOP
r----T----T-----'
o I
~---f----+-----~
I
2 I
I
I 2
I
I 20
I
I
~---~----~-----~
I
I
I
I
I
,
I
I
r---------------,
o I
I
2 I
I
1000 I
~---------------~
~---------------~
I
I
I
I
I
I
I
I
30
For the purposes of object code generation, the mode and size of the constant or
variable is available to influence the type
of operations which can be employed, e.g.,
integer
or
floating,
fullword, or
doubleword.
DRIVERS
In the generation of Polish notation
from the
source language
statements,
"drivers" are also used.
These "drivers"
are values that are one word long and have
the same format as the pointer.
The t'wo
types of drivers used by the compiler are
discussed in the following paragraphs.
Operation Drivers
One type of driver is the operation
driver, which indicates arithmetic or logicar--operations to be performed.
The
fields of the driver are:
TAG
is a 1-byte item whose value is represented in two parts: MODE, occupying
the upper four bits, indicates the
mode ,of the operation, e.g., integer,
floating-point, complex or logical;
SIZE, indicated in the lower four
bits, specifies the length of the
result of the operation (in bytes)
minus one.
OPERATOR
is a 1-byte item containing a value
which indicates the operation to be
performed, e.g., addition, subtraction, etc.
The values for OPERATOR
are larger than the number of any
roll, and hence, also serve to distinguish a driver from a pointer.
ADDRESS
is a 2-byte item
which indicates the
of the operation
driver; its values
ten.
containing a value
"forcing strength"
specified by the
range from zero to
Table
1.
r--------------T----T--------T------------,
,
iDri~r
il~~~iQ~fRATORiStrength)
I (Forcing
I
i
~--------------+----+--------+------------~
ISprog2
, 00 I
40
I 00 00
~--------------+----+--------+------------~
I Power
I 00 I
42
I 00 01
~--------------+----+--------+------------~
lUnary Minus
I 00 I
43
I 00 02
Control Drivers
The
other
~--------------+----+--------t------------~
I Multiply
I 00 I
44
I 00 03
~--------------+----+--------+------------~
'Divide
I 00 I
45
I 00 03
t--------------f----+--------t------------1
I Ad d
I OO!
4b
I 00 04
1
~--------------+----+--------t------------~
I subtract
I 00 I
47
I 00 04
I
~--------------+----+--------+------------~
IGT
I 00 I
48
,00 05
l
t--------------+----+--------+------------~
I GE
I 00 I
49
I 00 05
I
~--------------+----+--------+------------~
I LT
I 00 I
4A
I 00 05
I
t--------------+----+--------+------------~
I LE
I 00 I
4B
I 00 05
J
~--------------+----+--------+------------~
. I 00 I
4C
I 00 05
]
~--------------+----+--------+------------~
I NE
I 00 I
4D
I 00 05
I
I EQ
~--------------+----+--------+------------~
I NOT
I 00 I
4E
I 00 06
~--------------+----+--------+------------~
I AND
I 00 I
4F
I 00 07
~--------------+----+--------+------------~
lOR
I 00 I
50
I 00 08
t--------------+----+--------+------------~
3F
I 00 09
~--------------+----+--------+------------~
IEOE~
I 00 I
3F
I 00 OA
t--------------~----~--------~------------1
Section 1:
31
Table
2~
Inter~al
Configuration of Control Drivers (Part 1 of 2)
r----------------------------T------------,
I
I
I
I
I
QE!y~E
I
I
~~Q~~
I
I
~----------------------------+------------~
AFDS
I
8
I
~----------------------------+------------~
I ARKAY
I
23C
I
~----------------------------+------------~
I ASSIGN
I
20
I
~----------------------------+------------~
I ASSIGNZD GO TO
I
1C
I
~----------------------------+------------i
I ASSIGNMENT
I
4
1
~----------------------------+------------~
I AT
I
68
I
.----------------------------+------------1
I BSREF
I
34
I
~----------------------------+------------~
CALL
2C
.----------------------------+------------~
CGOTO
18
~----------------------------+------------~
CONTINUE
28
~----------------------------+------------~
I DATA
I
3C
J
~----------------------------+------------~
I DEFINE FILE
I
44
I
.----------------------------+------------~
DIRECT 10
200
~----------------------------+~-----------~
I DISPLAY ID
I
74
I
.----------------------------+------------~
DO
I
10
I
~----------------------------+------------~
I DUr-t\1Y
I
68
J
J
.----------------------------+------------~
END
END=
20C
.----------------------------+------------~
~----------------------------+------------~
I
ERROR LINK 1
54
.----------------------------+------------~
EKrtOR LINK 2
58
.----------------------------+------------~
I ____________________________
ERROR LINK 3
I ____________
5C
L
JI
~
Table
2.
Intprnal Con~iquration of
trol Drivers (Part 2 of 2)
r----------------------------T------------,
I
I
I
I
I
QE!yer
I
I
~Q~~~~
I
I
.----------------------------+------------~
I ERK=
I
210
I
~----------------------------+------------~
32
Con-
SECTION 2:
IEYFORT, CHART 00
IEYFORT is the basic control routine of
the Invocation phase.
Its operation i~
invoked by the operating system or by
another program through either the CALL,
LINK, or ATTACH macro instructions.
Tne
execution of IEYFORT includes scanning the
specified compiler options, setting the
ddnames for designated data sets, initializing heading information, and acquiring
time and date information from the system.
IEYFORT sets pointers and indicators to
the options" data sets, and heading information specified for use by the compiler .
The options are given 1n 40 or fewer
characters, and are preceded in storage by
a binary count of the option information.
This character count immediately precedes
the
first location which contains the
option data. The options themselves are
represented in EBCDIC.
On entry to IEYFORT, general register 1
contains the address of a group of three or
fewer pointers. Pointer 1 of the group
holds the beginning address of an area in
storage that contains the execute options
specified by the programmer (set in the
OPTS CAN routine).
COMPILER OPERATION
IEYPRNT,
Cha~~_00A4
Compiler Operation
33
When a punch
output
operation
is
requested by the compiler, control is transferred to the IEYPCH routine. The LOAD
and DECK options are checked to determine
what output to perform.
IEYNOCR
IEYNOCR
is
called by PRESS MEMORY
(IEYPAR) whenever it is unable to obtain at
least 32 bytes of unused storage.
I EYNOCR
prints
the message NO CORE AVAILABLE,
branches to a subroutine that checks to see
if there are any source language cards to
be disregarded, and then exits to IEYRETN.
34
The
compiler
termination
routine
(IEYRETN) is invoked by Exit (IEYEXT) or by
one of the input/o~tput routines after the
detection of an error.
The routine first obtains the error
condition code returned by the compiler and
tests this value aqainst any previous value
received during the compilation.
The compiler communications area for the error
code is set to the highest code received
and a program name of "Main" is set in the
event of multiple compilations.
The routine then checks general register 1 for the
address of the ROLL ADR table.
Each entry
of the ROLl. ADR tab~_e indicates thE- beginning of a 4K-byte block of roll storage
that must be relea~ed.
A FREE~AIN macro
instruction is issued for each block of
storagE indicated in the table until a zero
entry is encountered (this denotes the end
of th~ HOLL ADR table).
COMPILATION
Compiler Operation
35
Multiple Compilations
.STATISTICS*
STEP
NO
DIAGNOSTICS
T~IS
or
.S?ATISTICS*
,..,.-~'tr"
.,.,
nnn
DIAGNOSTICS THIS
..J J.LL-
TERMINATED]
xxx xxx
This message is produced when an
input/output error is detected during compilation.
If the
error
occurred on SYSPUhCH, compilation
is continued and the COMPILATION
TERMINATED portion of the message
is not printed. The condition code
is 8.
If the error occurred on
SYSIN,
SYSPRINT, or SYSLIN, compilation is terminated.
The condition code is 16. xxx xxx is the
character string formatted by the
SYNADAF macro instruction.
For an
interpretation of this information,
see the publication IBM s~~env360
~rating
System:
Supervisor and
Data Management Macro-Instructions,
Form C28-66Q7.
IEY035I UNABLE TO OPEN ddname
This message is produced when the
required
ddname data definition
card is missing or the ddname is
misspelled.
36
nnn
PARSE (IEYPAR)
discussed~
The
rolls rr~nipulated by Parse are
listed in Table 3 and are mentioned in the
following description of the phase.
At the
first mention of a roll,
its nature is
briefly described&
See Appendix B for a
complete description of a format of a roll.
Form Y2P-6638-1
Page Revised 7/23/69 by TNL Y28-6829
Table
3.
r-------------------T---------------------,
IRoll
!Roll
INO,
Roll Name
No. Roll Name
Lib -----28
1 Source
29 Explicit
2 Ind Var
30 Call Lbl
31 Namelist Names
4 Polish
5 Literal Const
32 Namelist Items
6
Hex Const
33 Array Dimension
7
Global
35 Temp Data Name
36
Fx Const
Temp Polish
37 Equivalence
9
Fl Const
10 Dp Const
38
Used Lib
11 Complex Const
Function
39 Common Data
12 Dp Complex
40 Common Name
Const
41 Implicit
13 Temp Name
42 Equivalence
14 Temp
14 Error Temp
Offset
43 Lbl
15 DO Loops Open
4~
16 Error Message
Scalar
17 Error Char
45 Data Var
46 Li t.eral Temp
18
Init
53 Format
19 Xtend Lbl
54 Script
20
Xtend Target
Lbl
55 Loop Data
22 Array
56 Program Script
24 Entry Names
59 AT
60 Subchk
25 Global Dmy
63 After Polish
26 Error
27
Local Dmy
___________________
__ - - - ________________ J
LOcal-sprog
Section 2:
compiler Operation
36.1
SOURCE
(GOS37) serves
1.
2.
3.
compiler Operation
37
STA
INIIL Chart
BB
-and
ST~~~ATE,
Chart BD
STA XLATE
EXIT
(G0723)
determines
whether errors in the statement are of a
. Section 2:
Compiler Operation
38.1
Polish Notation
The primary output from Phase 1 of the
compiler is the Polish notation for the
source module active statements.
This
representation of the statements is produced one statement at a time on the POLISH
roll.
At the end of the processing of each
statement, the Polish notation is tran~
ferred to the AFTER POLISH roll, where it
is held until it is required by lat~r
phases of the compjler.
Hle
format of the Polish notation d l t fers from one type of statement to another.
The following paragraphs describe the general rules for the construction of Poli~h
notation for expressions.
The specific
formats of the Polish notation produced for
the various FORTRAN statements are given in
Appendix C.
Compiler Operation
39
1.
2.
3.
b.
where:
A
represents a pointer to the defining
group for the variable A
+
represents the Add driver. This notation is produced from the top down: when it
is read from the bottom up, the sequence
described above for Polish notation is
satisfied.
Explanation:
The
following
occur rn--the production of
notation:
operations
this Polish
1.
2.
3.
An Add driver is constructed and compared with the Plus and Below Phony
driver on the bottom.of the WORK roll:
the Add driver has a higher forcing
strength and is therefore added to the
WORK roll (according. to rule
3a"
above)
4.
5.
6.
7.
The expression
ExamQle 2:
produces the Polish notation
driver
is
A
B
EX~Ele-1:
The expression A
the Polish notation
produces
C
/
+
A
B
+
40
E;xplanation:
occur in the
notation:
The
following operations
production of this Polish
1.
2.
3.
An Ad~ driver is constructed and compared with the Plus and Below Phony
driver; the Add driver has the higher
forcing strength and is placed on the
WORK roll.
4.
5.
6.
7.
An EOE driver is constructed and compared with the Divide driver; since
the EOE driver has the lower forcing
strength,
the Divide driver is moved
to the POLISH roll.
8.
9.
The expression
ExamEle 3:
produces the Polish notation
3.
4.
5.
6.
7.
8.
An EOE driver is constructed and compared with the Subtract driver; since
the EOE driver has a lower forcing
strength, the Subtract driver is moved
to the POLISH roll.
9.
~UDtract
driver is constructed and
compared with the Divide driver;
the
Subtract driver has a lower forcing
strength, therefore the Divide driver
is moved to the POLISH roll.
Polish Notation
-*+OCBA
/*DC-BA
+**XC/-CX/ZX
/
C
Expl~tion:
occur in the
notation:
1.
1. A-B*(C+O)
2. (A-B) / (C*O)
3. X/Z/(X-C)+C**X
A
B
which,
A.
2.
C /
The
following operations
production of this Polish
re-
Compiler Operation
41
Source Listing
Thp
secondary outpUl from Parse is the
source module lis~ing. if a sOlttce listing
lS requested by the user (by means
of the
option SOURCE),
source module cards are
listed exactly as they appear on the input
data set with error messages added on
separate lines of the listing.
If no
source module listing is requested, Parse
writes only erroneous statements and their
error messages.
$
1)
IEY0041 COMMA
IF eAA + BB)
1~,
20, 250000
$
1)
IEY010I SIZE
ARyeJ) = BRY
1) IEY002I LABEL
GTO 30
$
1) IEY0131 SYNTAX
$
2) IEY0121 SUBSCRIPT
IEY004I COMMA:
A comma is supposed to
appear in a statement and it does not.
The
condition code is o.
IEY0051 ILLEGAL LABEL:
The usage of a
label is invalid for example, if an attempt
is made to branch to the label of a FORMAT
statement,
ITLEGAL LABEL is produced.
The
condition code is 8.
I[Y006I DUPLICATE LABEL: A label appeari~g
in the label field of a statement 1S
already defined (has appeared in the label
field of a previous 8~atement). The condition code is 8.
!~!QQZ!_!Q_Q~f~!I:
The name of a variable or subprogram is used improperly, in
the sense that a previous statement or a
previous portion of the present statemE:'nt
has established a type for the nante,
and
the present usage is in conflict with that
type.
Examples of such situations are:
(1) The name listed in a CALL statement is
the name of a variable, not a SUbprogram:
(2) A single name appears more than once in
the dummy list of a statement function; (3.
A name listed in an EXTERNAL statement has
already been defined in another context.
The condition code is 8.
lEY008I ALLOCATION:
Storage assignments
;pecllIed--Ey--a--source module statement
cannot be performed due to an inconsistency
between the present usage' of a variable
name and some prior usage of that name,
or
due to an improper usage of a name when it
first occurs
in
the
sourcE:'
module.
Examples of the situations causing the
error are:
(1) A name listed in a COMMON
block has been listed in another COM~ON
block: 2) A variable listed in an EQUIVALENCE statement is followed by more than
seven subscripts. The condition code is 8.
lEYOO~I ORDER:
The statements of a source
module are used in an improper sequence.
This message is produced,
for example.
when:
(1) An IMPLICIT statement appears as
anything other than the first or second
statemnt of the source module;
(2)
An
ENTRY statement appears within a DO loop.
The condition code is 8.
sIze
IEY011I
UNDIMENSIONED:
A variable name
subscripts follow
the name),
and the variable has not been
dimensioned.
The condition code is 8.
IEY012I
SUBSCRIPT:
Indrcates-an-arraY-(I~e.,
scripts--used--in-
e.
Section 2:
Co~piler
Operation
43
WRNn:
The
array--fIagged--has-~een-prevIously dimen-
ALLOCATE (IEYALL)
'Iable
4.
,-------------------T--------------------,
IRol1
IRoll
I
21
22
23
24
25
Roll Name
Source
Literal Const
Global Sprog
Temp
Do Loops Open
Init
Equiv Temp
EqlJiv Hold
Base Table
Array
Dmy Dimension
Entry Names
Global Dmy
26
Error Lb!
INo.
1
5
J
I 7
I 14
15
18
19
20
I~
39
40
41
42
43
44
45
47
1 48
,I
I
48
Roll Name
Halfword
Scalar
C~mmon Name
Implicit
Fquivalence
Offset
Lbl
Scalar
Data Var
Common Data
'Iemp
Namelist
Allocation
Common Area
Common Name
Temp
Equiv
Allocation
Common
Allocation
Format
Subchk
General
Allocation
I
I
I
I.
I
I
Local Dmy
I 49
Local Sprog
I
Explicit
I 50
Error Symbol
I
Namelist Names I 52
Namelist Items I
34 Branch Table
I 53
:3'1
Equivalence
I 60
37
Byte Scalar
I f.l8
38
Used Lib
I
Function
I
lI ____________________
39 Common Data
I ____________________
27
28
29
30
31
32
Section 2:
Compiler Operation
44.1
prior to pass 1.
The BASI:. ~ABU; roll
groups are counted to determine the total
S1ze of the roll after qroups have been
added by pass 1; again, five ext.ra groups
(or ten words)
are added to the count to
provide for data values which will appear
in the object module, but which are not yet
defined_
The PASS 1 FLAG is theo turned
oif,
and START ALLOCATION calls
DEfUG
ALLOCATE,
ALPHA SCALAR ARRAY AND SPROG,
BASE AND BRANCH TABLE AILOC,
GLOBAL SPROG
ALLOC}~TE,
SCALAR ALLOCATE,
ARRAY ALLOCATE,
bUILD
NAMELIST TABLE,
LITERAL CONST ALLOCATION,
and FORMAT ALLOCATION.
At RELEASE ROILS, START ALLOCA~ION concludes its operation by releasing rolls,
increasing the PROGRAM BREAK to ensure that
the next base begins on a doubleword boundary,
and calling CALCULATE BASE AND DISP
and BUILD ADDITIONAL BASES in order to
guarantee that at least three bases are
allotted for the TEMP AND CONST roll.
After this calculatIon;-Allocate-prepares
for and relinquishes control to Unify.
When
these operations are complete,
START ALLOCATION calls EASE AND BRANCH
~ABLE
ALLOC,
and upon return from this
routine again
increases
the
variable
PROGRAM BREAK by the amount of storage
allocated to EQUIVALENCE.
S~ART ALLOCATION
continues its operation by calling BUILD
ADDITIONAL EASES,
PREP NAMELIST.
SCALAR
ALLOCATE, ARRAY ALLOCATE,
PASS 1 GLOBAL
SPROG ALLOCATE,
SPROG
ARG ALLOCATION,
LITERAL
CONST
ALLOCATION
and
FORMA~
ALLOCATICN.
After
the
operation of
FORMAT
ALLOCATICN, the last palt of Allocate is
begun.
The variable PROGRAM BREAK is reinitialized to the value it was assiqned
Compiler Operation
45
(G0362) to calculate
the relative addresses of array elements referred to in
statements.
(Pointers to the EQUIVALENCE
CFFSET roll are found on the 2Q!Y~~~~~~
roll for all subscripted references in
EQUIVALENCE statements.)
the
addresses
computed are relative to the beginning of
the array. When an array reference in a
source module EQUIVALENCE statement is outside the array, designates an excessive
number of dimensions, or specifies too few
dimensions, an error message is printed by
this routine.
This routine (G0361) controls the allocation of data specified in DATA, COMMON,
DIMENSION, EQUIVALENCE, and type statements
in a BLOCK DATA subprogram. Since all data
specified in EQUIVALENCE must be allocated
under COMMON,
this routine registers an
error upon encountering on the EQUIVALENCE
roll.
the routine terminates with a jump
to RELEASE RCLLS (G0360), which,
in turn,
terminates the Allocate phase.
This
routine (G0314) constructs and
punches t.he ESO cards for the object ~lIodule
itself (the program name) and for each
ENTRY
to the object module.
It also
assigns main storage locations to
the
object module heading by increasing the
PROGRAM BREAK by the amount of storage
required.
46
This routine (G0401), like SCALAR ALLOCATE, is called twice by START ALLOCATE.
The first time it is called, it determines
the number of base table entries required
for references to the object module arrays.
The second time the routine is operated, it
actually assigns storage for the arrays,
and records the appropriate base pointer
and displacement on the ARRAY roll.
As each array name is found on the ARRAY
roll, it is compared with those on the
COMMON, EQUIV, and GLOBAL DMY rolls.
For
COMMON and EQUIVALENCEd arrays, the allocation information is copied from the appropriate roll.
Since all du~my arrays are
call by name" dummies, dummy array groups
are always replaced with pointers to the
GLOBAL DMY roll.
For each array to be
assigned storage, new base table entries
are constructed as required.
In no case is
more than one base used for a single array.
Section 2:
Compiler Operation
47
BUILD NAMELIST
This routine (G0444) is called twice by
START ALLOCATION. Its first operation determines the number of BASE TABLE roll.
groups which should be added to cover the
48
TABL~har~
CV
~ent
ENTRY is defined.
If no such scalars are
listed on the SCALAR roll, the wessage
UNDEFINED
FU t~C'fI Ot~
DEBUG
Errors of
two types can
exist in the definitions of EVUIVALENCE
sets which refer to the COMMON area.
The
first type of error exists because of a
contradiction in the allocation specified,
e.g., the EQUIVALENCE sets
(A,B(6),C(2)
and
(B(8),C(1).
The second error type is
due to an attempt to extend thp beginning
of the COMMON arEa, as in COMMON A,B,C and
EQCIVALENCE (A,F(lO.
ALLOCAT~~!:L.'~
storage
has
/ ERRORS
Unclosed DO LOOps
If DO loops are initiated in the SOULce
module, but their terminal statements do
not exist,
Allocate finds pointers to the
labels of the nonexistent terminal statements on the DO LOOPS OPEN roll.
If
pointers are found on the roll, the message
IEY021I UNCLOSED DC LOOPS
is printed,
followed by a list of the
labels which appeared 1n DO statements and
were not defined in the source module.
The
conditidn code is 8.
Section 2:
compiler Operation
49
UNDEFINED LAEELS:
If any latels are used
in the source module but are not defined,
they constitute label errors.
Allocate
checks for this situation. At the conclusion of this check, the messaqe
The second is due to incompatibl~ boundarl alignment. in the EQUIVALENCE set. The
first variable in each EQUIVALENCE set is
assigned to its appropriate toundary, and a
record is kept of the size of the variable.
Then,
as each variable in the set is
~rocessed, if any
variable of a greater
size requires alignment, the .entire set is
moved accordingly.
If any variable is
encountered of the size which caused the
last alignment, or of lower size, and that
variable is not on the a~~ropriate boundary, this error has occurred.
If EQUIVALENCE errors of either of these
types occur, the message
IEY0231 EQUIVALENCE
ALLOCA~ION
ERRORS
The
condi-
listing
of the
cod~
is
4.
Allocate produces the storage map5 described below during its operations; these
maps are printed only if the MAP option is
specified by the prograwmer.
COMMON MAP: The map of each COMMON blocK
is produced by Allocate. The map is headed
by two title lines: the first of these is
COMMON / name / MAP SIZE n
and the second is the pair of words
SYMBOL LOCATION
printed five times across the line. The
title lines are followed by a list of the
variables assigned to the COMMCN block and
their relative addresses, five variables
per line,
in order of ascending relative
addresses. The name contained within the
slashes is the name of the COMMON block.
The amount of core occupied by the block
(nt is given in hexadecimal and represents
the number of bytes occupied.
Allocate prints a list of the subprograms called by the source module being
compiled. This list is printed only if the
MAP option is specified by the programmer.
The subprogram list is headed by th~ line
SUBPROGRAMS CALLED
and contains the names of the subroutines
and functions referred to in the source
module.
DUMMY DIMENSION ERRORS: If variables specified as dummy array di~e~sions are not in
CO~MON and are not global dummy
variables,
they constitute errOTS. These are summarized under the heading
IEY025I
SCALAR MAP
The
condi-
title is followed by a list of the nonCOMMON scalar variables, five variables per
line,
and their relative addresses,
in
crder of ascending relative addresses.
ARRAY MAP:
The
array map reads
first
titl~
line of the
ARRAY. MAP
In all other respects,
the array
identical to the scalar ma~.
map
is
~VALENC; __ MAP:
NAMELIST MAP
about
FOR~T
The third phase of the compiler optimizes the subscripting operations perfor~ed
by the object module by deciding, on the
basis of frequency of use, which subscript
expressions within DO loops are to appear
in general registers, and which are to be
maintained in storage.
'l'he following paragraphs, "Flow of Phase
3, describe the operation of Unify by
means of narrative and flowcharts.
The rolls manipulated by Unify
are
listed in Table 5 and are mentioned in the
following discussion of the phase; these
rolls are briefly described in context.
See Appendix B for a complete description
of any roll used in the phase.
section 2:
compiler Operation
51
Table
5.
r--------------------T--------------------,
I Roll Number
Roll Name
I
I
2
I)
I
4
I
1)
I
14
I
20
21
I
22
I
I
52
)
I
)
I
J~
Nonstd Script
Nest Script
loop Script
Std Script
~emp
J
J
Reg
I
Ease Table
I
Array
I
Loop Control
,
5ij
Script,
55
loop Data
I
56
Program Script I
57
Array Ref
I
_______________________________________
JJ
58
Adr Const
. 52
Table
6.
r--------------------T--------------------,
I Roll
I R911
I
INa.
1
4
8
9
10
11
12
14
15
15
16
17
18
22
23
Roll Name
Source--Polish
Fx Canst
FI Canst
Dp Canst
Complex Const
Dp Complex
Canst
Temp
Do Loops Open
Loops Open
Temp and Canst
Adcon
Data Save
Array
Dmy Dimension
1~2~
I 24
I 25
Roll Name
Entry~es
Global Dmy
34 'Branch Table
36 Fx Ac
40 Terrp Pntr
42 FI Ac
43 Lbl
44 Scalar
45 Data Var
52 Loop Control
55 Loop Data
56 Array Plex
57 Array Ref
59 At
62 Code
I 63 After polish
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
i
L..J
Sprog Arg
____________________
~ ____________________ J
IEYROL MODULE
The IEYROL module is loaded into main
storage by program fetch, along with the
Invocation phase and the five processing
phases.
It contains two static rolls (the
WORK roll and the EXIT roll), roll statistics, group stats, and the ROLL ADR table.
Throughout the operation of the compiler,
it maintains a record of the storage space
allocated by the control program to the
dynamic rolls.
Compiler Operation
53
for example, assignment statements are processed by ASSIGNMENT STA GEN, while GO !O
statements are processed by GO TO STA GEN.
1hese routines construct the code for the
statement on the CODE roll and,
when the
code is com~lete, return to GEN PROCESS.
Table
1.
r------------------T----------------------,
I Roll Numver
I
Roll Narn~
I
I
I
1
16
17
I
I
20
23
38
45
46
Sl
S2
58
62
__________________
~
Global Sprng
I
Temp and const
I
ADCoN
!
CSECT
I
Sprog Arg
Used Lib FUllction
BCD
Base ~able
RLD
Branch Tatle
Adr Const
Code
______________________
J
When all DO closings have been processed, STA GEN FINISH resets pointers to
temporary locations,
clears accumulators,
and returns to GEN PROCESS.
order.
On return from the last of these l
EXIT PASS releases rolls and exits to the
Invocation phase of the compiler.
ROLl.. ,
EXIT (IEYEXT)
th~n
called in
Section 2:
Compiler Operation
55
~H
fY~tl_fROG
Fb
Co.piler Operation
51
Location,
which is the hexadecimal
address relative to the beginning of
the object module contrel s~ction, of
the displayed instruction.
where:
nnnnnnnn1 is the number of source s~ate
ments expressed as a
decin'al
integer.
nnnnnnnn2 is the size,
in bytes, of the
object modul~ expressed as
a
decimal integer.
nnn
is
the number of diagnostics
generated expressed as a decirral
integer.
58
Chart 00.
IEYFORT (Part 1 of 4)
..........
: Al :
!
.Al
:!~~~!.-.-~~~:
IEyrOl
IEYFOIIT
" A2
:
...............
IEYFOIIT
: ~~t~~I~~ :
INITIALIZE SAVE.
:
REGISTERS
:
..T
o
SCAli
.............
.0
IEYF22
os
.PRNTHEAD
01A2.
ns
.-.-.-.-.-.-.-.-.
NEW -------->.
PRIIiT
PAGE
: PAGE HEADING
El
.->
SYSTEM
OPEN FOR
SYSPUNCH
.;ES
:.. ;:~;;::;;:...:
.LIIIS/PAGE FOR
:'m~~~!m .. :
:::~:~:.:~::::
)..
j
.H3 .
.o. ...
.IIEADING DATA
. ' .. '
'u
::::::
: !~~~t!~ :
) ...
: Al :
.
IEYPAR
F..
I.~..:
1..
.. .0 ---->. 05
o
....
...
...
MAX
..
YES.
...l
NO
: G! :
.CAaIIIAGE 0 YES
ADVANCE
NO
..
.:~______________________J
..
o. ..
LINES
H~
..
MAX
to
oo
USED
.. *
:~~r!._._~~!:
.. 32
INITIALI IE
HEADING
NO
---1
..
IEYF10
:~~~::::;;~~:
ADVAIICI:
LINES USI:D
.............
:.~!.: :.:!.:->
..'
:L
: E........... :
Yl ...
DDIIAMES '. NO
'.
SPECIFIED
SCAN
..
j'" ::::::
---1
'.
....
.... 1~O
NO
DECII OPTIONS
ot
:.::.:
IEY:~i:
..
.. .. ...- ---1 .................
0.
IErr05
...1
EJ
C~f5~=
'o. .'
0"
o. BIGIN
SYSTEM
OPEN FOR
SYSLIN
.................:
" 'o.
SAVE
LIIiE COUNT
ORIGIN
...... . T.
......_>1
....
12
:~~~~~.-.-~!:
......
: .::.:
1
0)
.................
....
.
.'
---1
NO
YES
INITIALIZE BASE.
:
REGISTERS
:
'..
'o.
'0 '0
: 02 :
F2
: c :
"._
LOAD OPTIOII
.................
..
..T
.
., C3
.'
IIIAIIl.E
INTIIIRUPTS BY
:
SPII MACRO
:
:...............:
8]
: C2 :
I EYPIINT
. . . T. . .
A_
:
INITIALIZE
: ..... i2 .......... :
INITIALI U:
AND SET SAVE
:
IIEGISTEIIS
lEYPRNT
...
YES.
*
---->.
05
NO
::::::---->1
: J . . . . . . . . . . . :
STORE 1.1 NE
COUNT INTO
: SYSPRT FORMAT :
. r
K.
:..:::.::::::..:
SET.
K!
PARAIIETERS AND
RETURN
.................
Section 2:
Compiler Operation
59
IEYFORT (Part 2 of 4)
Chart 01.
ERLXITPR
PRNTHEAO
................
EREXITPR
'II
L>:~i:
. ..
IEY/",Ok
.................
... Cl'
I Enl0R
01 .....
ISSUE GET~~IN
FOR 11K BYTES OFO<-
STORAGE
........ .........
j
. ..
.'
'.
E1
YE5 . '
'.
- - - . ' . SUCCESSFUL
'. .'
.
..................
..... Fl*
DELETE
INACTIVE-MODULE
j
.
..
ADVANCE
PRINT PAGE
PRINT HEADING
.................
j
.C2 ......
...................
:_>j
:.::.
.....
03.
CONVERT
PAGE COUNT TO
DECIMAL
:
AuVA'IICE
.................
j
D2
.
......... .........
PRlIIJ05
INTO HEADING
FOR.-'AT
SET LINE
COUNT AND
ORIGIN
E3
.................
SLT
CARkIAGE
CON'l'ltOL TO
SKIPP1NG LINE
SlT PROGRAM
NAi<lE 1 NTO
:HEAOING FOR.-.AT :
.
..................
.
.F3
...............
.SET PARAMETERS
ArID ~OORl::SSI:.S
INTO SYSPRT
NO
OPTIONAL
HEADING
YES
DELETED 0.0 __ _
'. .'NO
..................
-----------!
Jl.
..................
IlETURN
wITH
:-ION-POSITIVE
CONDITION CODE
RETURN
H2
'.
' .. '
'.
j'"'
J2.
..................
....1..
ObTAIN
OFFSl"T AND
CONTROL BLOCK
INFORMATION
El3
03 .
....
:.....:--1
.~:.
.'.
(,
: C5 :
.SET PARAM~TJ::RS
AND ADDRESSES
FOR SYSIN
FORMAT
NO
FIRST CARD
READ
-------->.
RE~~'
.................
' . .'
.
..................
:.....::..:->1
.
..................
011..........
OtiTAIN CARD
OItIGIN AND
RE.SET FLAG
D5
SYSTEM GET
FII
................
...........--1
GII..
RETURN
TO COMPILl.R
Gil
...................
....1..
Ell
.............
5
1..
NO
-- CONCATENATLO
..DATA S'1S."
RESTORE
SAVE REGISTERS
o~~2R~I:.EOF
.. ..
EII
---->.
.'
...j
SAVE CARD
ORIGIN OR l:.OF
NOTATION
SET
LINE COUNT TO
TWO
.'
CII
i<ETURN WITH
POSITIVE
CONDITION CODE
'.
SET BASE:
AND SAVE.
ItEGISTERS
F 2
: Hl :
o.
iii ER I:.
.................
..... E2 .....
B".
.................
: C 3 :
.. ..
. A~'{
...............
G2..
............... ...
.1
..
G1
60
&3
1
B3
................ .
1"
COU~T
.................
IEYRUO
.....
82 ...... .
Bl
. .
A
...............
.....
PR"ITrlLAD
...............
SET
ERaOR CODE:
.KESULTING FROM
:
PRINT ERROR
IEYREAD
"2 ..... .
Al*
'.
......
: .::. :
YES
.F5
SET SWITCh 6
f'OR
CONCATENATl:.lJ
DATA SETS=O
.................
.....!.....
"
C5
IEYFORT (Part 3 of 4)
Chart 02.
.- I
......
EREXITIN
81.
.................
V
C2
*...
* *
.*
SETUP BAD
CARD IMAGE
MESSAGE
.................
I
EI
.................
V
:~~~!~~~.-.-~~:~:
PRINT
ERROR
MESSAGE
.
..................
.....I
V
F 1
SET
C3
...
MESSAGES
I
v
E2
.PRNTMSG
0 3A I .
*_*_e_e_*_e_*_*_*
.................
PRINT
MESSAGES
I
.....
_A:.
03
c~.
-C..
v
...............
RETURN
TO COMPILER
YES
..
a.
._
.- .-1
-CS.
V
SET
ERROR CODE
VALUE
.................
SET FLAG TO
I
I
ES.
v
SET ERROR
.................
I
......
....
...Fl
SYSTEM
PUT ROUT I NE
INSERTS
PARAMETER
B4
:~~~~::H._
_cccc.
I,
-->
G3
IEYF60
.. ..
.... .....-1
i :*::-:
G3
:"::':
.................-
.................
-
SET PARAMET[RS
- AND ADDRESSES
FOR STSPCH
SET FLAG
TO TURN OFF
STSPCH
.E3.
.-................__
: as :
NO
.05.
'.
03
-.
LOAD
--
~ILE
-. YES
TERMINATED
..
EREXITPC
G3 :
.
.
i
*. * .*
.....02 .........
.
..
NO
~OAO OPTtO~ - - - ,
01
.*
CODE
j"0
..0 l..........
EREX IN05
*.
RESTORE
-SAVE REGISTERS.
YES
SET
a.
.
-.
.......................
*.
...............
IETF70
INITIALIZE
.....................
- . 5..
:-::-:->1i
OBTAIN
SYSIN ERROR
COUNT
(1
.............
II
..B3-
II
EREXITPC
SYSTEM
- PUT ROUT I NE
INSERT FILE
PARAMETERS
IETPCH
EREXITIN
-.A3...
...............
.1.
...............
4t----;
.....................
IETPCH
NO
DECK OPT I ON
YES
.-. *
V
HJ
.... .. ...-1
.
I
I
J3
OECk
FILE
-. TERMINATED
YES
NO
84 :
INSERT
PROGRAM
SEQUENCE
NUMBERS
.-................
I
..K3.
V
...................
. .
SET PA"ANETE"S
FOR SYSPCH
- - - > . A4
Section 2:
compiler Operation
61
Chart 03.
IEYFORT (Part" of 4)
..
I
A3
PRNTNESG
Al.
IEYRTN
8l.
.................
IEYF IHAL
.. 2 . . . . . . . . . ..
...............
INITIALIZE
PRINT BUFFER
WITH BLANKS
el
V
SET UP
PR I NT BUFFER
ORIGIN AND
DISPLACENENT
.................
1
V
: 82 :
.................
OBTAIN
CONPILER
COMMUNICATIONS
ORIGIN
I
..03
*_._._._._*_e_._*
FREEPOOL
YES
G3
.e
E3
e.
.ISSUE FREE"AIN
FOR DA T A S[ T
5 TCHAGl
....
G3:
e.
F_
YE~
:_>/
I
.HI...
.
..................
V
SET
CARRIAGE
CONTROL
.11....
V
SYSTEM PUT
ROUTINE WRITE
NESS AGE
: G. . . . . . . . . . . :
YES
.ISSUE FREE"AIN
.FOR RELEASE OF
:
STOHAC.E
E. :
IEYR60
: H3 :
.* ANOTHER .
.... .. ..
NO
COMPILATION ,
.1
. .
*
YES
: J2 :
1.3
ISSUE
CLOSE FOR
SYSPUNCH
..................
e.
.....
J3.... . . .....
.-.-.-.-.-.-.-.-*
.................
031.5.
FREE STORAGE
USEO BY
SYSPUNCI1
.-->.1._.
I
V
: K2 :
..................
................
..------->.
IIIESTOIIIE.
.SAVE REGISTERS
*. NO
/
V
1(3
IEYPAA
.
.................
. I
V
HS
END OF
YES
STORAGE TO
- - ,
~ELEAS~...
/
-FREEPOOL
RE-INITIALIZE
.LINE. CARD AND.
PAGE COUNT
o.
H4
"'S
0.
V
C_ :
H2
......
H2 : - ,
.K'.........
.OBT A I N A:lDRESS
OF BLOCK TO
:
RELEA"E
:
DECK
NO
-.
OPTION
,
.SPECIFIED.
.~
.................
"eTURN
INSERT 'NAIN'
FOR PROGRAM . ,
NAME OF NEXT
PGN
G3
...............
112
..................
PLACE 2ND
SEGMENT IN
PRINT BUFFER
*.
.->
G3
IEYFNL05
V
: G2 :
RETURN
.............
..
I
I
.. ..
.................
... .. .. . . .................
....
.
.
NO
I
I
ES . .
'.--1
.
.................
:
I
I
I
HS :
.................
: GI :
OS
........
-
PRINT DATA
SET STATUS
MESSAGE
....F3.
....
I
I
I
..
.F2
.................
COMPUTE
SET
FINAL ERROR
..: !
....
Ft
GET
LENGTH AND
ORIGIN OF 2ND.
MSG SEGMENT
:
e5.
03A!5.
FREE STORAGE
.---,
USED BY SYSIN
I
RELEASE
STORAGE
.e
LOAD DATA
SET BUFFER
ADDHfcSS
.................
:.:~~.:!~~~!~!
ISSUE CLOSE
: Eo' : ,
y
IEYA50..
E.
YES
I
I
I
e-._._._*_*_._._.
a.
I
ss.
.FREE .. OOL
a..*
....
..................'
I
0...
NO
.SYSLIN OUTPUT ,
e.
.................
C_
IEYFNL10
V
: c :
CODE VS
PREVIOUS
SETTING
PRINT DATA
SET STATUS
NESSAGE
~ ~.::.~_>
: ~!~~!~ :
y
031.5.
FREE STORAGE
USED BY
PLACE
ST MSG SEGMENT.
IN PRINT
. 62
.AS .... ..
...............
FREfPDlIL
*.
: E2 :
FREEPOOL
NO
- - ,
s.
GET CONDITION.
CODE RETURNED
BY COMPILER
: El :
~~::;:
..
1
V
ISSUE
CLOSE FOR
SYSLIN
.... .....:
DECK
OUTPUl
.................
YES
.................
...
'*,
.................
..
A4
STOPPED
V
: Cl :
.................
: 02 :
HO
SPEC
OPTIOH
IF lED
e2
LOAD
: 0 :
GET NESSAGE
LENGTH AND
ORIGIN
...
.. ..
.. ..
B3
INITIALIZE
* ... *---,
.................
RE-INITIALIZE
BASE AND
.SAVE REGISTERS.
FOR CONPILER
TERNIHATION
IEYRETN
PRHTNSG
A3
F ...
H2 :
SET EHROR
.CODE FOR RETURN.
TO CALLER
-
I
I
JS .
V
RETU~N
OPTS CAN
Chart AA.
......
II
82.
PRS22
NO.*
I
... *.
I
I
v
... p..y
* *
II
f3
...
.. ...-
.*CONNA
a.
* *
..
SS.
-...
*
YES
- - - - - - - >
.->
03
-.
.-
..................
SET
FL AG
I
I
II
I
II
PRSOUT
I
J
<
RESET
SCAN CONTROL
FLAGS
.................
I
E3
:->1
..E3
E2.
OPTS10
OBTAIN
SYSTEJoI
.CENERATED NAME
OR PGM NAME
SET TO SCAN
- ONLY 8 CHAR.
IGNORE ANY OVER.
.................
.................
.....Fl
LINECNT=
QUOTE
NO
SET PROGRAM
NAME IN
.COMPILER COMM.
AREA
-.
PRESENT.
*
NO
------->..
.....C3.
.................
..... I
....
.03.
.*
a4
NO
:.~~-:->I
PRS25
..
PRS23.*.
*.
YES
YES
*.
QUOTE
.*
02
YES
*.
OPTIONS
SPEC I FlED
*.
83
NAJoIE~
GET
PARANETER LIST.
LENGTH
SET INDICATOR.
-IN POINTER FOR.
COMPILER
OPTSCAN
(2
.....A3.
.................
PRS20
A2
.
...............
..
A3
: F 2 :
ADVANCE
SAvE
NANE FOR
MULTIPLE
COMPILATIONS
.................
>
I
I
... *.
V
PROSSQT
*.
.*
\;2
PROGRAM
YES
NANE
,
SPEC IF lED. *
*.
*
*
NO
'V
...
~
o.
til
H2
*.
.. .. ...I
.................
I
YES
I
I
II
PAS30
V
: J :
PREPARE
YES
+ CONVERT
..
...
V
.J2
PARAM
TABLE
..
.................
I
. ....I
....
..
.
,
L INECNT
IN
it.
. . * - - - ) . G4 .
YES
....
*
'lETURN
.*
NO
I
I
C3 :
...H3.
.................
V
COMPARE
..
LINECNT
NO
PARAMETERS
*
SPECIFIED
------>.SPECIFIED WITH.
PARAM TABLE
WAS
*.
OPTS20
NAME OPTION
GIVEN
.--_________________--ll
G3
.-
.
*.
03
A3
.it
it
NO
INSERT" SYSTEM
NAME
I
I
II
I
I
JJ
...............
rtE TURN
03
**
Sect:ion 2:
Compiler Operat:ion
63
Chart AB.
DDNAMES
.....
:.::.:l
.A......
..................
"
V
.2.
"
INSCRT
OO ... AMES
"
I
................
.
.................
"
V
"
"
NOVE
POINTER TO
SIXTH ENTRY
C2"
""
.................
...I
*.
".
*.
*. a * .-
.*
j'"
02
C4
ODES
". NO
"
". ENTRY EXIST - - ) . H4
08TAIN
"
"LENGTH 0 .. DATA "
SET NAMES
:
.*
..I
V
04
......"
"
V
e.
DOES
NO
LIST ElIlST
- - - - - - - . ,
r::
"
INSERT
"
"ENTRY INTO OCB "
"
FOR SYSPRT
"
.................
"
I
: E2 :
ADYANCE LIST
.................
V
El
RETURN:
: E :
.NOVE POINTER TO"
: SEVENTH ENTRY :
."................
I.
." *
F4
a
*
"
ODES
". NO
"
.. .-
*. a . . * .*
j'"
: G2 :
INSERT
.................
INSERT
"
"ENTRY INTO OCB "
FOR SYSPCH
"
"
.................
..... I
"
"
:.::.:->1
OONMOUT
MOVE
POINTER TO
FIFTH E ... TRY
.................
I
...
V
.-
J2
..
* DOES
*. NO
ENTRY ElIlST - - ) . H4
*.
.*
*. a _ .
YES
......
V
64
""
: HZ :
.G........"
V
A4
H... "
V
"
RETURN
Chart AC.
HEADOPT
.A2
.
...............
I
I
B2
.
HEADOPT
OBTAIN LENGTH.
OF HEADING
OPTION
.................
o.
C2
11
.0
0 . . 0
.0 0
.00.-------->.
NO.
o. o.
* *
.oHEADING LIST
EXIST
C3.
RETURN
YES
I
V
02
SET UP
CENTERING OF
PAGE HEADING
.................
I
I
I
I
E2***.
V
HEADING
.................
I
I
I
F2
SET
HFAOING ORIGIN
ANO LENGTH INTO
PRINT MSG TABLE.
..................
\
II
I
I
G2
.
...............
V
RE T'JRN
Section 2:
Compiler Operation
65
Chart AD.
TIMEDAT
AZ
TIMEOAT
8Z
SET uP
UNIT
SPECIFICATION
FOR TIME OF OAY.
C2
GET
SUPERVISOR
OZ
...
INSERT
TIME INTO
HEADING LINE
EZ...
INSERT
'v
~2
RETUAN
66
Chart 04.1.
A2
IEYPAR
......
START
COMPI LJ,.I<
t'
.............
.STA FINAL-
*- *- *-.- *- *- *- *-.
cu
.. '.
YES
E2.
PRT/RD SHC-6M2
-+-+-+-*-+-+-
PR I NT ()LD STMT
.............
.~~ID H1ROf{S
Rl:MJ NHI
'. "
LAST
STMT FLAG =
(END C~RO),
".T COMPLETION OF
PRINT AND READ
SOURCF, STMT TO
AF PROCES.':ED IS
ON SOURCr. RULL,
STA INIT-b6A2
.................
INITIALIZE
FOf;. NEW
STATE~.ENT
1
.... *G2
Go,,,
LP.L XLATE
BCA2.
*-*-*-t-*-.-.-'t-'t
.. ..............
..j
--.,
! . .. .. ..
PROCESS LABI:.L
FIELD AND
celL 6
.,.
Yf S . '
'
'.
.:.::..:
H2
LI'.BFL
OR
'.
COL 6
"
t:RRORS
,
YES
6GA~.
................
.
I
COPY POLISH
ROLL TO AFTER
POLISH ROLL
r----------
. --..
.................. r .
;:.:_>(
..... 1
:'.FII
......... ..
....
. ..... F5
*063003
.... .4... .
YES
.'
E5
'.
LAST
.,
STATEMENT A "
., BRANCH
,
I<ECORD
NO END C~RD'
ERROR MESS~GE
H5
.'
'. .'NO
G06112
.~CT
SET INDICATOR'
FOR ReAD
COMPLETE
........ .........
*-G4
..... .
*- *- *- *- *- *- *- ..
'PRT/I<D SHC-BAA2
.................
....! ..
.PRINT OLD STMT
AND ERRORS.
B5
END ST
BFA~.
- *- *- *- *- *- *- *-.
................ .
BUILD
.RETURN OR STOP
POLISH
Gs .... .
GOO"
.STA FN END
IlED~'
.-*-i-*-*-*-'-'-'
.COMPLETE POLISH.
................ .
:..::.....:->1
HS.
*0630011
PLACE
END DRIVER ON
POLISH
NO
1
Js
GOO"
G0616
J2.
STA XLATE- BDA1.
.ST~
.................
.....1
.................
...1...
PROCESS
ENTIRE
STATEMENT
FN END BED.,.
*- *- *- *- *- *- *- *-.
*-+-*-*-*-*-+-+-+
...-.-.-.-*-*-*-*-*
05 ..j.. ....
l'
. .. .,
.. .... .
ee;
.PROC POL
+-+-+-+-+-+-+-+-+
NO
''''''..... F2*
1
'.
Em:.'
GOB,"
NO
E2
'.
t;0611
jJHC,Ct.:;:;
,.
YES
,.
LAST
. , NO
" STMT ~N ARITH, ._--,
,
IF'
,
.,
WAS
... ' ~
t'j(UL.t.~bJ:.,U.
B5
~~ER~A~~
H5
..1.,
B5
, . LAST
.,
STMT OF
r -- SOl,lRCE. I'10QlJ LE ,
NO
D4
.................
.... :->1
~)1 ATi',t1i:.N.
.'
......
...
.'
--.'
.. I. .. ..
r
:.;:.:
......
1 .
02
r- _.
YL':;..
MOVE POL!SM.
................
: .::.:
6E~2.
COMPLT POLISH.
CLOSE. DO LOOPS
gg~~~Tn~~ E 0~nn1~N.
TURN ON FLA':;~
INDICATING
CO~PLETe
G0633
PROGRAM
INITIALIZATION
READ ONE
CARD INTO
I NFUT i .. RLA
.....
t
!
Sll
82.
.................
1
..C2...
BII
.COMPLETE POLISH.
WITH STMT C~
~ND MOVE
011.2.
611
Section 2:
62
Compiler Operation
67
Chart 04.2.
......
.....
...
04.:;>
B2
..
'
B2
.?
B3
XTEND
'.
LBL ROLL
' .. RESERVE.D
. t .
..........,.........
*63181
B3
'..
..'
YES
CLEAR RESERVE
-------->.MARI< FROM XTEND'
.. '
*
LBL ROLL
*
I~O
: C2 :->
~
C2
.
.................
'0611;;
REMOVE
GROUP FROM
<----------------
~
..
~06)188
02
..
04
SI:.T LOOP
XTEND
YES
DATI:.
POINTER
LBL
ROLL
__________________________________ >OON
SCRIPT
ROLL,o
EMPTY
.0
0
RELEASE
'.
.'
IND VAR ROLL
................ .
'.. ..'
1'0
E2
.0
o.
. '.
'..
'..
'.. ..'
.0
........ .........
F2
..' ..'
....1
....
too
'iE.S
",,"0
: G2 :
o.
PUT
GROUP ON TEMP
ROLL
:
................ .
I
-....
C2 .
..
:O:~.:
....
~Jtj
I
...
.. ..
.... ....
v
t 4
TAG GROUP AS
t
POSSIBLE
F) .........
.................
BLOCK
DATA
f'ROGRAM
YES
------->
NO
I
G3
..... G4
.................
................ .
TAG ThOSE
LABELS ON LBL
.ROLL WHICH MAY.
BE RE- ENTRY
POINTS
.....
..1:.4
'
. 0 _______
YES
.PGM A
>
o ' . SUBPROGRAM
. ---1
o. YES
to NO
......
'.. ..'
'.. ..'
C2 :
'..
NO
(;ROUP
RI::MOVI::
NO t TAGGED AS O.
(,IWUP FROM
t ( ________ o.
POSSIBLE
WORK 1t0LL'
RE- ENTRY
POINT..
E3
'.
..
t.NO
o. YES
.0
TEMP
OF DO LOOP
.0 ________ >.. ROLL EMPTY
t
..... Fl..........
H3..,
..................
....1..
.CLEAR TEMP ROLL.
B3
H4 .. . .
MOVE IBCOM
POINTER TO
AFTER POLISH
ROLL
.................
""'01
<----------------
.
..................
J4
INITIALIZE
FOR OPERATION
OF ALLOCATE
j
.1<4...
................
IEYALL
Section 2:
Compiler Operation
67.1
Chart BA.
A2
P~INT
:AND ~EAD SOU~CE:
...............
......
*
B4 .......
V
INIT IALIZE
FOR NEW STMT
READ ONE CARD
AND PRES CAN
TU~N
OFF NO P~INT
FLAG
.................
*
.----J
-.I
'083703
-.
*.
-+.::~;~:?;:
-.
..
02
.-. *.
SOURCE
LISTING
..
.*
* *
C4
*.
..
*.
NO
.-
'lYES
* *
j'"
'83703
0.
YESV
.............
.~EQUESTED.
*.
"'lIT
READ A CARD
:!:!
C2
: 82 :
B4
.-
NO
: E2 :
TURN
ON NO PRINT
FL-'G
.................
I'
'83707
V
: FZ :
INITIALIZE
STATEMENT CO
COUNT
..................
--:I.
."""
'-1'-8-3-7-0-1
PRINT A CARD
*.
G2
PRINT
-.
OF STMT
COMPLETE
*.
*..*
* *
-
*.
G3
YES
MOVE 1 CD TO
.----->-SOURCE ROLL AND.*
- SET CONTROL -
NO
.H2
P~INT
ONE
CARD AND ITS
ERROR MSGS
.-.
v
H3
.*
*.
ENO
*
*
NO
'-1<
-.
PROCESS
- . - . a.
STATEMENT
._
YES
I
....
y
- -
84
'083704
TURN OFF
FLAGS
INDICATING NO
MORE READ AND
NO MORE PRINT
.................
K..
V
68
RETURN
--
READ A CARD
Chart BB.
****A2*********
srA
INIT
***************
II
I
*****82**********
* INITIALIZE
**
CHARACTER
*
COUNTS
*
*
*
*****************
I
V
*****C2**********
*
*SET
CRRNT CHAR **
*TO FIRST SOURCE*
*
CHARACTER
*
******************
*****02**********
*
SET
*
*COUNT OF SOURCE*
*STMT CHARACTERS*
*TO NO. CARDS X *
*
80
*
*****************
*****E2**********
**
CLEAR FLAGS
**
*
*
*****************
**
RETURN
*************** **
section 2:
compiler Operation
69
chart BC1.
A2 .
...............
S2
STATUS CONTROL
SAVE ADDRt:SS
OF CURRF.NT
.BOTTO!". Of WORY
ROLL AND k:X IT
ROLL
.................
C2 0
.SET STMT LABEL 0
POI NTER TO 0
AND S~IP TO
FIRST NON-BLANK.
o
CHARACTER
.................
ll2
.' .
~Ob3503
'
. ..
.
CHAR
' . NO
' . COUNT L~:SS
THAN b
o.
DIGIT
COIW]"RSION
-------->..
1''
. ..
03
.' . ' .
LABEL
.'
V
.'
o.
..
r'"
.'
.BC2.
,'l'
EL
E3
INITIALIZE
fOR DIGIT
CONV ERS ION
LABEL MISSING.
MESSAGE TO
ERROR ROLL
.................
.................
o
..... 1
.....
.. ..
F2
0&3501
1
.....
.->
F2
...
BC2
C2
NO
,.,~~,~{;~;:' .,-----------------I
CONVERT ONE DIGIT
.....
..
(SYNTAX FA> LI
G2..........
.....G3 ..........
..... ............
.................
CONVERT
ONE DIGIT TO
.BINARY. SKIP TO.
NEXT NON-BLANK
CHARACTER.
SYNTAX
MESSAGE TO
ERROR ROLL
RESTORE WORK
.AND EXIT ROLLS
I
.. .. ---1
................
.. ..
H2
CHAR
YES
COUNT LESS
THAN b
* ..
NO
l
J2
REGISTER LABEL
MOVE LABEL
H3
RETURN
(EXIT FALSE)
......
:.;:.:
TO STA LBL
POINTER
.................
...1
K2
K)
MULTIPLE
LABEL
NO
DEFINITION
UNDEFINED
-------->. ERROR MSG TO
ERROR ROLL
*.
"1";5
.....
...
BC2.
A2.
70
.....
...
.BC2
.0.2.
Chart BC2.
.....
..
BCL
A2
_01:>3502
A2
MARl<
LABEL A;'
DEFI'lE:D
..... Be2
A7
......('.;.
....~ ".
' A2
Ol1e I
IN A
DO LOOP
o.
I
t
: 1;11 :
YI::.S
.'
00
' . Nil
. ' ________ >t. CI.Ofil:.U FIJI'; .
ON
0
'..
PUT LAB~L
UN
.'
'.
NO
.0
Yl:.S
.'.
C2
.o.
.t
NO t
LAST
'.
---'.STMT AN ARITH.'
'.
IF'
.'
.. ..
C3
.'. ' .
IS
LABEL
'.
I'REVIOU:;
_
' . TAl< ;t.T
.'
. '
NO . '
<--'.
i........
--------------->1<------ ------,,---------- I
-01:>1';011
~{,f,1"Rl..
ell
'
.
I,j
.
!.ABEL (;N
'.
XTJ:.ND T',RG
.'
LIlL
RCJLL
NO . '
.<-------- .
... ...
... ...
j
"
'
r
..... Dj..........
;,4
roc
..... 02............
to
THIS LABEL.
'.RE-ENTRY . '
' . P()INT. 0
..... E2..........
.....
---::::::::j.........
.................
Ob 3'>0'>
rnti-AC'IIVf. [NO
FLJ\'; 1 tiDI('ATE:~
f'1<!:.V IOU:, :;1M'1
;,UIA v:; AHIINCIIU;
"IILN IT I:; 01'.
U::LlJ IN TEXT FOR
,;':NI:.I<Al'IOt< Of'
':"1.,,: r"]P FNO :~n'1'.
0-------.,.
.'
'.
..
'.
o.
/'fNNF:; ".
'SET NON-ACTIVE'
'END F!.AG Tv NX~'
STA LBL fL!\(;'
'AND CLE:AR NEXT'
:.
.'
.' . '
CHAR
COUNT
..
.. .
.'
G2
NO
')
I:.ta
F) ........ .
RETURN
(EXI1 TRUE)
.............. .
YES
1
'.
'
'. .'
.<----------------
' . YES
' . CHAR A ZERO
'. .
.................
o.
................ .
.;'-------->:
DI) ........
RE.MOVE GROUP
-------------------------------.
FROM
'XTI::NU TARG LEsL
ROLL
..................
F"
'T:"
YES
0-------->.
G).
................
-------->.
.' .'
RETURN,
(EXIT TRUE.)
NO
1'SYNT". 'm,
H2
SYNTAX MSG TO
ERROR ROLL.
RESTORE WORI<
AND EX IT ROLLS
..................
j
J2 .
SCAN
TO NEXT
NON- BLANK
CHARACTER
.................
1
1<2
................
RETURN
(EXIT FALSE)
section 2:
Compiler Operation
70.1
Chart BD.
PROCESS STATEMENT
.....
. A2...........
G0636
Al
STA XLATE
.............
.---->.
~
.---->..
SAVE.
LOCATIONS OF
.O;:(K A"D EX iT ..
=
.
.
.*
A3 ... . .
*...
.. *
....82..........
S l . . . . . . . .
..
<-----.
...............
RETURN
..
..
.<-------.
.*
vr--.
G0637
I
83 ... . .
,
1
..B...
V
...
YES..
IN
BLOCK DATA
;.. ;:COUTifoitE .-
.*
. C l .
C2
*.
I
V
C
.. UPDATE ROLLS ..
*..*
DEF STA
POLISH FOR
XLATE
: ~g~;;:~~~ :
: ~:g!;:.:~~~ :
POLISH FOR
VARIABLE
EXPRESSION
................
.
I
I
I
I
I
F'JNCTI:_O_N____________
L...-..-_ _ >
1<
...
V
G0732
AND CONSTRUCT.
POLISH FOR
..
I
I
.................
j......
STATEMENT
C~~~~~~CT
ARITH FUNC
...1.:
TEST
*.
LITERAL
SCAN SHoIT
TO DETERMINE
TYPE
_-----'i"
.ASSIG~~~~~ STA :~
__
. --->.::TMT FUNCTIO~:._Y_E_S____________,
. . . . ... * ..
~ESSAGE
YES
RECORD"
ILLEGAL
STATEMENT
...
ASSIGN NO
"ENT TYPE
-.STATEMENT.-
E3
...
*.
......
.. .. ..
E. ......
................
NO
RE TURN
EX IT
YES
...
V
.0 *.
F3
-.
ACTiVe:
STATEMENT
it.
-...
*.
F ........... .
NO.
.*----->.
.it
RETURN
EXIT
YES
..Gl.................V
;;
I
I
..H3.
V
RETURN
EXIT
Section 2:
Compiler Operation
71
Chart BE
*/\ 1
'T/~
,. I NAL
.
... ........ ..... ..
I~
1 "
~.:,!'I!'
:.;'1';":
'(llJNT:
!(J!.....I:.H
NO
()6J)02
fill.
MOVE GROUP
BACK TO DO
~~~~~~~~~~>j
*O(310)
.C4
tC:>
* ________ >t
~ I j~~
"
: .:
!lIlt)
~: ->
Illll
'. .'
-------------------->
lJJ\'J'/\
()~
.
.
.................
IF
"
,.,
.. ..
1,1
(;2
..
,.,
G3
"
..
N(I
FS
STMT TO API'ER
POLISH ROLL
.
.
...................
~063377
G4
.. " ..
P.4
"
if"
1,~~ -~~~--~~
H2 H3.
Yj,;S
"n"
REMOVE
'GROUP DEFI NI!'l<;
DO VARIABLj,;
.................
NOTE:
THE TEST COMPARES
STA LBL Pm'R
WITH THE GROUP
FROM THE ROLL
.................
I . ,,'" l .
................. ................
I
K2
J2:
J)
RESERVE PROGRAM'
Sg~~Ts~~t~
ROLL, RELEASE.
SCRIPT ROLL
FROM SCRIPT
ROLL TO LOOP
.................
l ........
:D~i~ E~RCO~~:
->.
72
CLEAR
XTEND TARGET
LBL ROLL
E1
SET INNER DO
-----.CLOSED FLAG ON-
RETURN
,.
1111:;
., YES
,.
INNER
. , N()
,
ANY
"
NO
CLEAR
Of) CLOSED
, :;T~i'j TAR(;rT , 0 ________ >*,
, L _______ >., TRANSFERS OUT, .--------).XTENU LBL ROLL
. , OF LOOP "
, F~~G
, Uf LOOP.,.
.. I..
......
...............
..................
PO~lSH
E')
.-------->.
F4..-------->.
MI'Vt UNF
ROLL
ARITH~ETIC,
i"
I
..... Fl.
PUT STMT
NUMBER ON
.................
:
.... .. ..
,AN
.,
: D5 :
.,
'-10
GOb 34
.-------->.
E4
'.
PUT POIm'ER
TO LABEL ON
POLISH.
11
'
"Jf)
: u"' :
' . VI' ~j
(IN ' - - -- - - - -- - - - -- -- - - -- -- ----- - - - - - - - - -
P F Li.. ( l
ElE
.~'J
.
..
i'"
.'.
.....
.
,.
THIS
. , NO
,STMT LABELED , . -----------------'
Y I.~
1)1
R4
cl
' . JdJY
. .
1
.
.................
.<----------------
...............
RETURN
Chart BF.
1.2
.................
ACTiVE Er-.v
STA XLATE
II
I
I
.-
B2
...v
w_w_63wwiHi .......
.;..
LAST
Y E S .
STATEMENT A -------->.
BRANCH
*.
...
... .*
...............
RETURN
NO
I
I
...v
...
...
... * * ...
i
(2
C3.
SUBPROGRAM NO
BEING
-------->.
.COMPILEO
BuILD
STOP POLISH
YES
I
I
V
1
.....
02..........
03
.................
PLACE
>.
RETURN DRIVER
ON P O L I S H . .
RETURN
Section 2:
compiler Operation
73
Chart BG.
PROCESS POLISH
"2
.
...............
PROCESS
POLISH
I
BZ.
V
GET NUMBER
OF WOROS ON
POLISH ROLL
.................
I
I
CZ
PLACE
COUNT ON AFTER
POLISH ROLL
.................
OZ
COpy POLISH
ROLL TO AFTER
POLISH ROLL
.................
II
EZ.
V
RELEASE POLISH.
ROLL
.................
I
V
...FZ
RETURN
................
chart 05.
...11.3.
GO)81
GOlS.
11.1.
:~~_ :~.!l'!~:i~~::
................
STUT
ALLOCATIOlf
-->.
111..
.................
.os...Cl..
1 ..
I .-.-.-.-.- .-.-.-.
................. ....... ..........
1 .""..02
1 *_.
01.
.... _1110_._._._.
................. .................
I
INITIALIZE
r-------~
IG03t~ C2 ......... .
.11. LBLlLSPG-CAAla
._._a_a_._a_a_
.-a
'DMr/P""TIRR-COA2'
.ASSOCIATE DUMMY.
:O~:~N~InR~rs-s' :
'
Gom
PR IOI'PTE.-CBAl.
.PIC DO LPS-CU2'
:C~ Jt~VfrB:
~_._
'OUTSIOE AIUlAY
... .0
II
e.
!SLOCIt DATA
110
SnCIP'IBO
- - - -
*.
.. ..
'0
*
YBS
1
01
1
.-.-.-.-.-.-.- .-.
00372
B2
'L8L1L SPGS-CPA2'
.................
COIfSTRVC'T
BRANCI TARLE
ROLL
"'".-.-.-.-.-1.-.- .-.
F2..
Al:
CHAR't CC
e_ ._e_e_e -e-.-
GO 361
.................
ALLOC BEADING.
.IUI AND PCB ZSO.
fOR PRO AN !In'
aLOe.
DA'!'A
PIOG
ALLOCATION
G2
BIn' NMALL- CBA2
.................
IF SOURCB II.
ruMC, CBECII: P'OR'
'UGM OF V1.LUI -
.................
1
....B)
.................
ALLOCATE ADOR
:'"0"
~~b:/!I!~:
TURN ON P'LAG
:RF.~~.;~~Ji~T
"OOUI.!: LOC
1.:0 Uiifi R
SAn OBJBCT
11000I.I: LOCATIOR.
COUNTBR
.....,...........
ALLOC
ex
S'l'G,
:ms~ftSBtfti
t _ - __ _
I ..................
MOOOLE
1
c':J
. .....
..-.-.-.-.-.-.1
.:REMnib
................
.....
ALLOC Ll fERAL
CONSTIlHr<; 1l0D
BAS! Tll.BLI!:
DTRUS
OBJECT MOOULE
DATA. AS
WELL AS PERfORMI"G SOME
INITIAL
ALLOCII.TION
__I
G".~........
'OEBUG ALL-CXA2
.,.,.e-.-.
ASCLR/SPRG-CII.II]
"'- "'-.-.- e- e- e- e-"
INIT II.NO .-------->.ENTER MIIMES ON
S08C!lIt.
BCD R::lLL
VARIABLES
._._._._._ .-I!o-I!I-.
BOlLO BASE
TABLa ENTRIES
IRDICATIlO
$ ......... .
QRJ(
.....
B'..........
e-.-e-. -e-e- .-e-.
.................
....,
.pUP .a.8'l'-CQA2'
...u"'1 ."....
................-
:ffl~~.~!~F..:
1
...".J,..........
.................
m
:~:_~~_~~_~!~~:
.................
L __________ _
1
rS.
.................
r--.--------------.....
. ... nS
................. ................
.om
~iU~:~O
I NCIlBASE
'LOCATIO" COONT
.BY ZQIJIV SIZ!
ALL ALLOC
.E..,1. ...... .
GOIllle,
T8! ROUTINES
Co\LLlD IN PASS
1 DETZRNINE
THI NII!IUI!R OF
1
..F3
.
..................
...G)1.
..
.....
.-.-.-.-.-.- .-.-.
:.~~~~.l'~,.~~l'.:
SCALAaS UD
RBG'O M8BS
D~
.LIT
CNS IlL-CR""
:~ ~I~ ~~~:
.~'l'""
~~~E<;
J)
A.LLOCATf'
j
13..
.-.-.-.-.-.-. -. -.
.................
.s PG
G.'"
I . , ..........
.-.GRL
1-' SPG
_e_._IlL-COA2'
l1li_'_ '.-'
GO""
1
0)
.................
INDICAr!!
PQSIIfT
ALLOCATION IS
IN OBJECT
GO"2~
SUBPROGRAM
BAS~S
O!TM PR&811fT
'SIZ! BASE TII.BLI:
A.DD 5 GROUPS TO'
: SIZllorfSBRn :
II"..........
._e_e_ ._e_._ ._._.
GOIl2!
1
...C)
.................
1 .
B)..
1 . ..."...-.-.-.-.-.-.-....................
R2
r-- --- -- -- -
.....
.................
G'''' J"'
:~~~~.~.:~~t:
ALLOCATE
.-------- >. COaRFCT II.LL~C
.UGlIMB1n' LISTS
'EQUIV OAf" II.NO
PRINT .. IlP
I
....ItS
................
:
Sect.ion 2:
CHART
O~2
Compiler Operation
75
Chart 06.
....
'06
: 82"-1
GO];;"
..2
-.-.-.-.-.-.-.-.
-----------1
8'
.................
.RU.EASE ROLLS,
OBTAIN
OOUBI.EWOIIO
BOUNDARY,.OR
BASES
CORRECT SCALAR
:
~AIDN,
:
.................
1
.-.-.-.-.-.-.-.-.
1
c,
.................
C2
.URAY ALL CMA2
'CALCULATE BASE
'AIm OISPLACElUlTt
FOR TEMP Aim
CONST ROLLS
COJUtECT AARA Y
ALLOCATION,
PRINT MAP
.................
1
02
GO..,
.................
G....1!!2
1
.-.-.-.-.-.-.-.-.
'LIT CRS AL-CRA2'
ALLOC LITI!!JtAL
'CORS AND PUNCH
TXT CAROS
.................
G.......,.2..
1
.-.-.-.-.-.-.-.-.
.P'OItIUlT ALL CSA2'
.................
.l___________________________________ _
ALLOCATB .oRMT.
: SmSl:Jg:c. :
76
1
011
GO'"
'BLD NllLST-CVJ.2
'BLD AD BS-CWA2
e_e_e_e_e_e_e_e,.
.................
BUlLD 3 BASES
FOR TEMP 11..,0
CONST AREA
...E'1...
. . r. .
PREPARE ,.011.
OIeI,.y PIIASE
....,.,..........
...............
.
JBYU'..
RELEASE
ROLLS
Chart ell.
MOVF RLD
~AMES
TO
DAT~
VAR ROLL
('0';43
.. Al
ALPHA
LBL AND L
SP~()(~S
4.
A)
...
...
ALPHA
SCALAR ARRA Y
~~~.~~~~~
1 .
.... *81
.. B )........
.................
.................
1
.... C)
.
.......... .......
RELEASE DATA
~~Rp~~~~tRf,~
NeW (;ROUP ON
j
******
~*Cl t't' . . .
,;AVE POI NTER
TO L.ABELS.
SET UP
POI NTER
10 LIlL ROLL.
.................
.... .. 1
.... .
fJl
'
..
. .. .' ..
ENTIRE
LIlL ROLL
02 ......
..... ............
ALPHA L SPRaG
STATEME~
FUNCTIONS
N()
.
.................
1
.... ..
F:l
h(:VE
flEX'!'
T(l
Il{\'j!\
'11
LABEL.
Id-l.
H( )LL
lJl
SET UP
SCALAR R(JLL
._)
D1
SAVE
POINTF:R TO
SCALARS
POINTER Tv
1
E2
.
SET UP
POI NTER ROLL
..........
r,4
..........
1
03
.A/O VAR RL-CAF4.
-. -. -. - +-. -.-.-
.................
MOVE
NAMES TO.
SCALAR
OATA VAR ROLLS
1
E3
.
.................
SAVE DATA VAR
"ROLL POINTER TO.
ARRAYS
.-.-.-.-t-.-.-.-.
........1"......
.A/O VAR RL-CAF4.
b~
.MOVE SUBPROGRAM.
!'!l'wl1ES TO
s DATA VAR ROLL
C4 .. ... .
SAVE DATA VAR
.ROLL POINTER AS.
.................
P(J1NTEl< TO
USED LI BRARY
NAMES
: 0 . . . . . . . . . . . :
.SET UP POINTER
TO USED LIB
FUNCTION ROLL
.................
....t
.....
.
.................
*F3*
SET UP
PO:NTER TO
ARRAY ROLL
j
.GJ ..........
.-.-.-.-.-.-.-.-.
AlD VP-.R RL-Cl'.F"*
.................
MOVE
ARRAY NAMES TO
DATA VAF ROLL
H3.
SAVE O.a.TA VAR
ROLL POINTER AS.
POINTER TO
GLOBAL
SUBPROGRAM
...... ...........
J3.
...... ............
....1.
....
.
SET UP POINTER
TO GLOBAL
SPROG ROLL
B4
B4
G4
F4
...............
ALPHA TO
:'::';,1
...
..
G4
.. .. ....
eNTIRE
Y E S .
ROLL
,.--------).
PROCESSED.
GS .....
...............
RETURN
N"
H~
(8 BYTES)
.................
i
....
......
TO
G4
Section 2:
Compiler operation
77
chart CB.
.... Al.........
G0362
A2
.*
..
*.
PREP f O U I V .
.*
AND PRINT
*----->*.EOUlvALENCE
~~~~~;****. *
* DATA
NO.
---->.
*.
A3 ..
RETURN
YES
I
vI
.->
B2
CALCULATE
OFFSET FOR
EQUI VALENCE
VARIABLE AND
RECORD
e2.
..............
.e. *.
V
C2
IIAD
*.
e3
YES
e. DEFINITION
.*---->*IUCOItC' NAME AS
e
ERItOIt
*
**.
.**.
NO
I<-------~
V
02
..
.e. *
ALL
DATA
PROCESSED
*.
.-
*. NO
. .
YES
B2
E2.
V
SET UP
HEADIIoIG FOR
ERROR LIST
......F2
V
PRINT LIST OF
EQUIVALENCE
ERItORS.
DEF
I
I
G2.
V
RETURN
78
PRINT
ERROR SYMBOL
Chart CC.
..Al.
...............
G0361
PR~O~tLg~!~ION.
.2
.CIII ALL'OUT-C I A2
*_*_*_*_*_a_*_*_*
.................
=~>=
Ai-LQ~
ALL CQ", ..
.STRG.PRNT ERRS
IIIAPS PNCH ESOS
82
V
PUNCH
DFM.a.1N'Ur.
ESDS iii-ANY.
V
C 2 .
.SCALAR ALL CIIIA2
-*-*-*-.-*-.-..
-
ALLOC SCALARS
.................
RE~UJREO
AOO
BASES
02
V
:~:~!~.~~~.-;~!~:
.ALLOCA TE ARRAYS.
AND
!2.
y
"LIP
!OUI VAL!NCE
ROLL
.................
:*;::->1
'36102
F2
t NFO
*.
Fl
GROUP ON
YES
EQVIVALENCF.
ROLL..
------->.
**.
.**
.-
BECAVSE
ALL EOUIV
DATA IIIUST
BE IN COIIIIIION
.L.
NO
v
<02'.'''_
'36101
RECORD
NAIIIE + ERROR
TYPE
: F2 :
*.
IIIORE
YES.
OATA ON ROLL
F2
*. a * .
.*
-->.
NO
I
I
J2
V
PRINT
BLOCK DATA
ERRORS
.............
.....I
v
06
B4
RELEASE
ROLLS
Section 2:
Compiler Operation
79
Chart CD.
.. ,.2*
.... ......
"
"
"
~~:~:~
I
II
B2.
V
INITIALIZE
POINTER TO
APPRO ROLL
CHECK
OMY DIMENSION
.................
:
(2
..
:->1
,036601
...
(2
.w.
GOJ67
ALL
._.
.. -------> .....
...
YES
...
w.._
.. _
NO
:.::.:->I
'36702
... NEXT
...
ARRAY HAVE NO
~UMMY
- - ,
0!~E ... SI0~~..
.... *
i
I
YES
~
.0.
...
".INCOMMON
... ...
I
I
RECORD
ARRAY NAME
ERROR
(,2
AS
.->
II
V
PREPARE
TO PROCESS NEXTo
o
ARRAY
80
I
0_> I
~
NO
.. ..
(2
C5
..
RETURN
CLASSIFY NXT
..
OMY IF A N Y "
.1TH OMY OJM
..
.................
.....I .
PNTR TO ARRAY.
ON ERROR ROLL"
03
..
'36704
.*
E4
w.
ANY
.-MORE
'36705
...
ARRAYS
.. ..
0
YES
F
o CHECK oMY DIM
.N"T ARRAY-MUST 0
.aE oMY I N SAME
oLIST OR I ... COM-.
: .:~~.:~~.~:: ;~.:
.......
V
G2
..................
36602
II
------->:
..
RECQRO MARKER
ON NAMEL 1ST -
ITEMS ROLL
:
....FZ
ERRORS
NO
(,2 :
..
..
----->.
i
I
I
V
"
....
'36703
.. *0
...
* *
..
YES
..
.*---->*
..
...
YES
E3..........
*.
ARRAY
A DUMMY OR
03
NO
------->
......
E ... O
YES
OF A DUMMY
LlST
w..*
o
o
*a.. .
*
02
,...
...
ANY
g~~:~~S
C4
C.
G041S
w.
Cl
P~~~:~~eo
*.
I ..
.*
NO
.*
---->*.
*.
E5
..
;)3
"
I
YES
*.
w.
MORE
DUMMY
... .
I
......
LISTS
w..*
NO
C4
.*
chart CE.
A2
PROCESS
00
LOUP~
..................
I
I
62
FLIP THE
DO LOOPS OPEN
ROLL
.................
C2
:->1v
1037101
1037102
C2
C3
DATA
ON THE
NO
.SET UP HEADING
00 LOOPS OPEN -------->. FOR DO LOOPS
ROLL..
ERROR LIST
.................
YES
I
I
OZ
03
MOVE BAD
.LABEL TO ERROR
LBL ROLL
00 ERROR LIST
.................
I
.............
II
...
I
I
I
E2
.E3.
UNOE-
FINEO MARK YES
ON LBL ROLL ,
*.
...
...
... .*
...
NO
II
I
F2
RETURN
......
cz
.
..................
I
..
SET UNCLOSED
00 MARK IN LBL
ROLL (,ROUP
C2
Section 2:
Compiler Operation
81
chart CF.
G0372
A2
....
....
.-
...............
o
..
FLI P
THE LBL ROLL
1037206
o
-
COpy
TEMP ROLL TO
LBL ROLL
:"::.
....:->1
*
.*
C2
*.
DATA
...
: C4 :
w. NO
ON THE LBL
w. a. ROLL ._ .*
a _
"SET UP HfAOrl'tG
~OR UNOfF I NEO
:
L .... ELS
:
..............
i'" : : :
0.
.02
.
",eVE
LABEL TO WORK
ROLL
.................
PRINT
UNoEF INEO
LABEL LIST
.............
I
o.
...
... * ...
...
E2
E3.
E.
1037202
o.
LABEL
DEFINED
YES
--->.
.0
NO
"
FL IP
..................
"
:-::.:->1
.....F2
V
CLEAR
FIRST BYTE OF
o
LABEL
o GROUP-"'OVE TO
..
I
1037207
F.
...*
.. ..
...
G3
.-
.-
JUMP
e.
*.
TARGET LABEL
*. a.
*.
._ .-
NO
*
* YES
..
......
:.::.:->\
H3
1037203
~5
I
v
MOVE NEXT
GROuP TO
CENTRAL AREA
I
....................
V
ENTRY ANO
RETURN PTR
: !~.!! :
J3
V
: J :
REPLACE
LABEL GROuP
................. .................
I
I
....
....
......
.
K3
.
.................. .:..
K3
1037205
PUT POINTER
TEMP ROLL
.->
F_ -
"
MOVE
GROUP TO TEMP . ,
ROLL
....
C2
..
..................
I
K3
.................
82
IOJ720e
TAIILE ROLL
ENTRY AND
RETURN PTR
TO IT
THE TAG
FIELD OF THE
POINTER STILL
lNOICATES THE
TYPE OF LABEL
YEr.
I
.....G...........
KJ
." DATA
".
"
COpy THE
."
ON THE
o. NO
COMMON OATA
0
LOCAL SPRaG . 0_______ >. TEMP ROLL TO
"
ROLL."
.notE LOCAL SPROG.
ROLL
:;::~:.~~~.:~;~.:
..
o
.0.
\'
1037201
..
8..-................
e2.
.................
v
B4
"
.GS
RETURN
"
Chart CG.
.A2
................
BUILD
PROGRAM ESO
. .
..
"
S4
B4.
82.
..................
INITIALIZE
SET
FOR LD
UP
..
ESD
~C4~
. . .
PUNCH
PROGRAM NAME
AS LO F:SD
,.
I
I
v,
02
...
... 0 A T A
"
.,
ON
...
03.. ......
..
ENTRY
NAMES
..
ROLL.*
..
..
.... *
SE T UP
. , NO
PROGRAMMER
, . - - - - > . S P E C I F I E O NAME
e..*
1 N CENTRAL
.~ ..
.
.................
.03!:~l.E2.~........
(,2 :
..
A.DO
..
..
LENGTH OF
INITIAL PROG
'CODE TO PROGRAM'
~~~:~
I
:
E4
037405
.*
"
'.
YES
..04
:.....
.....:
V
"
:->1v
E4
..
G2
.... **G4
.. GZ.
..
BREAK
I
...... F5
.....
'V
PUN( H ANY
REMAINING E5D
(ARDS
I
I
I
I
I
I
. . . . . . . . . . . . . . . . . . . . . ,i
I
...
H2
H4 .......
AOO
GLAi"K S IG
-NAME. ADO fNTRY
CCDE TO PROG
rUT J $YMSOL
'IN FIRST BLANK'
OF NAME
"
II
MOVE GROUP TO
CE",TRAL ANa
COMMON NAME
TEMP ROLL
"I
:->1
..
I
I
(aMMO'" NAME
TEMP ROLL TO
"
"ENTRY NA"E ROLL"
..
fE 5
COpy
,,--->.
*F4 .....
....................
SAVE
"
'GROUP ON COMMON"
'NAME TEMP ROLL.'
ADO BLANKS TO "
NO
ES
..
".
I
I
..F2
'037402
,037406
...
.. ... .. ...
I
:
,',
DAT A LEFT
ON [NTRY
'.
NAMr 5
PUT PROGRAM
NAME I N PUNCH
BUFFER
PUNCH 50
.............
"
J2 .... ..... ..
PUNCH PROGR AM
NAME
....
.
PUT
ESC> IN
BUFFER-PUNCH
" IF COMPLfTE
CARO
PUN(l-1
E4
"
.
..
I<[MA INING
E SD
..
84
"
Section 2:
Compiler Operation
83
Chart CH.
.2 .
ENTRY N..... E
:~';~~~!!~~
I
...
""
B2
.0:..*
SOURCE
w.
.. ..
---->:
NO.
SUBPROGR ... ~
83
RETURN
YES
.0v
..
.*
YES
C3
.*---->.
RETURN
j""
.-
..
E.
.............
V
NO
*. a * .-
: F 2 :
.................
. .
"
*.
.-
-.
*.
..
: G3 :
YES
SET "'OOE
"
OF SC ... L ... R IN
"
"POINTER"
.----->"
*. * .*
NO
: HZ :
: HJ :
"
:
"
PUT POUlTER
TEMP ROLL
REGISTER N... ME
OF ENTRY FOR
ERROR I.. I ST
"
"
I
I
J2
.................
....I
.
V
... 00
"
:~
J3 :
"
84
G3
RETURN
G3 :
'037602
SC ... L ... R
-.
WITH S ... ME
N"''''E.-
.F....."
....
0" 0
PAINT
FUNCTION
ERAOR LIST
G2
.................
0.,
O ... T ... ON
.................
V
... ..............
::::->1
:
ERROR LI ST
FLIP
"
"
"
I
0.
"
"
02.
V
...:
'037601
:::~~.:~~~
SIJt:tRQUTINE
w.
: c :
*
-.A
"
"
COPY THE
"
COMMON
"
-N ... ME TEMP ROLL "
TO THE ENTRY
-
(2
""
a.
'037603
B4
....I
V
*
"
"
[2
"
"
PRINT
EAROR SYMBOL
ROLL
Chart CI.
COMMON ALLOCATION
G0377
o
. 2
C 0"'''' ON
ALLOCATION
....
.
I
I
I
v
II
,037706
INITIALIZE
FOR CO"''''ON
ALl OCA T I nN
a4 ...........
.... *B2
o
B4
.................
...... ..... :
I
I
v
_RACK
FROM
.*
C2
ANY
NO
SLeCK I"A~[S : - - - - - : ; - , . .
' . ON ROLL . '
*.
.. ..
.C3 .
'037709
*. *.
CLEAR
CONTROL <; AND
"-GLi.....:; tuJ.,(
ALLOCATION
Of COMMON
.'
=-.
I
I
I
I
.e.v
TFMP
~~~~~
..
..
YES
C4 .. ....
ALLOCATE ALL
Eoul VAL[NCE
"DATA ;:(EFEM:;;(i'..,G
................. .
................
..
(O~MON
TO
BLOCK
I
I
II
"
N~ XT
COMMON.
ROLL
MU"[
*NAME TO
AHEA
.
:
(2
[2
'.
E ~o
OF
OATA
....
r:)
..
.'.
..
* '
- - - - >
FOR
BLOCK
YF S
.--,
..
,037705
".
f]
V
.'.
ON
'
HOLL
.*-,
......
....
I
I
.. ....
Al J..ll AOV
ON
( O"'MON
Alltl('"UN
tH l
r N(~ t l It T [ S
THI <
~f
I
*L
'03770<'
*
0
A C , COMMON
tRkOA
V At:( I A~l
r.
RF. -
.................
*e
..
*
NO
*--,
I
I
YE 5
I
I
I
I
PRINT
I
H[ADING FLR
I
-MAP OF t:iLOt.K
I
I
I
I
I1< _ _ _ _ _ JI
.
.
"
3* *
copy
.
.................
I
....
. .
*. _.
..
OPT ION
I
I
'1 J 7 70 3
II
NO
I
I
I
I
BLOCK
E2
"
GA
COPY
(,rhl'l
ALLOCA T ION
.ROLL Tf) COMMON
ALLOI..~AT ION
........... ..... .
~OLL
I
v
ALLnCATE
<'TORAG[ FOR
I
I
I
I
I _____
f H2
I,
"f CURD
*NAME:
.'
MAP
F3
Nt X T
Iv
64
<.
HEX T
NO
vAR I ABLE tN ----,
' . ANOTHfR . '
I
o .ALOCK.'
I
'
I
I
v
YE 5
"
NO
*. .
<.
..
..
E_
~API4fS
HLOCf(
...
MORE
NU
F2
P')NCH
CARD fLR
BLOCK
f SU
..
*011701
..
nfTuRN
I
:->1
. . 04 . .
10-n7l1
... *OJ
*02 ..
E]
..... H.
P;<INT
MAP
COi-lO ON GEN'L
*ALLCCATIO"'4 ROLL-
I
I
II
[.' *
I
v
*J4
PRI NT
FOR
ERROR(')
~l.OCK
)(4
LOl'I'ON
'ALLOCATION
OUTPVT
........... ...
AND
<
Section 2:
'-TU"N
PRf ''':ESS
COM.~ON
TO
N(.a:T
BL OU:
compiler Operation
8~
Chart CJt.
A3
(L!AA
:.................
Lg~~~~~=
"2.........
-
EOUI V.
ALLOCATION
----->-
-.. ~:!~!.;::~:...
....
82 : - - ,
<_ _ _ _ _ _ _ _ _ _- J
GOlll2
EOUIV
ALLOCATION
OeJECT
MODULE
.-.
84 ....
GOlll4
82
- DATA
e.
ON
NO
'. EOUI VALENCE ----,
-.
ROLL.I
*.
.*
-:.::. :
"LIP
EOUI VALENCE
ROLL AND
INITIALIZE
..
V
-.
INTEGRATE
02
*.
-- .-
.-. -.
E2
.-
*.
ENTRY
YES
-. _. A~~~~:~ED
CONFLICT
.................
I
: G2 :
INCREMENT
.................
I..
..
86
02 -
YES
F 3
.-................RECORD
-NAME FOR ERROR LIST
-
..................INCREMENT
.PROJECT MODULE PROCORAM 8REAK
1<
.G3.
Illl902
PRUNE
.~
NO
ALLOCATE
A8SOLUTE ADOR
RECORD ON COEN
ALLOC ROLL
E.
*..* *
PRI NT
EQUIV
ERRORS
e.
~:~SEN!-
NO
.....F2
,Ol850l
... -.
El
----> . :!TH
.. a * ..
84
05
I
I
PRESENCE ON
GENL ALLOC
ROLL INOICATES
THIS
I
I
I
..
.DATA
-. NO
TO PROCESS ON ----,
*. ROLL *
*
*
YES
SAVE LOCATION.
CNTR AS FIRST.
ADDRESS AFTER
EOUIV DATA
:
.................
02
'031150 I
es
.................
- :->\I
:
C~
I
I
I
C2
.. ..
.................
- ALLOCATE ALL
SETS WITH
YES
- I
I..
.~
G.
MAKE FINAL
.................
I
......
V
02 :
lSI :
.E5 .... .
RE TURN
chart CL.
A2
BASE AND
BRANCH TABLE
!;~~~: !!~~
I
V
S2
PTR AND
DISPLACEMENT
FOR START OF
.................
SAVE
Agr,t.
r7
INCREASE
PROGRAM BREAK
tn SAVE AREA
ZE
S'
.................
02 ....... .
V
CEMENT FOR
START OF BA!>E
TABl.E
................ ..
E2
INrREASE
PRiX;RA'" BwE AK
BY BASE TABlf'
SIZE
......... ....... .
I
I
V
: F2 :
CONSTRuCT
REQUIRED BASE.
TABLE ENTRIES.
..................
II
BUILD
ADO I T 10NAL
BASES
G2
.................
I
.. H2 ....
V
*INfREASf PROG
BRf:AK BY
SIZE 8RANCH
*
..................
: J2 :
CONSTRUCT
REQUIREO BASE
TABLE ENTRIES:
BUILD
ADDITIONAL
BASES
.................
Ii
. K2 .
*
RETURN
Section 2:
compiler Operation
87
chart CM.
ALLOCATE SCALARS
..
...... .
A3
J2 .<-,
!
G0397
2 . . . . . . . . . .
A...
INITIALIZE
ALL
NO
AS-
*.
NAM~
NO
BY
*..*
e *
*..*
_ *
*..*
YES
e *
YES
....
.
.....
'039706
VSEE NOTE 2
: C3 :
02
: C :
NO
......
02
SEE NOTE 2
: CS . :
.------->.
.------->.
..................
...................
...................
ALLOCATE FULL.
WORD SCALARS RECORD AND MAP
....
.
....
:
I YES
.*
: - - - - - - - > P:~~~;:~D - - - - - - - > ~~MY SCALA~ - - - - - - - > ~~LL
. :
:SCALAR ALLOCATE:------->:
'039701 A3..
02 :
ALLOCATE HALF
WORD SCALARS.RECORD AND MAP
ALLOCATE
BYTE SCALARS-
.RECORD AND MAP
,039707
: 02 :
05
................
..................
SET
MODE OF NEXT
SCALAR
.*
E2
SEE NOTE
*.
e.
RETURN
J. . .
1
'039704
SEE NOTE 2
E3
YES
*..*
~O
ALLOCATE
STORAGE AND
1 \ . RECORD. PRINT.
I.
MAP
SEE NOTE
*.
F2
j........
.~..
K2
e.
DOUBLE
YES
PRECISIOH
a. a. ,.ooE ._ .a *
NO
..
V
.*
G2
'039703
: G3 :
e.
.SHORT
YES
MOVE GROUP TO
INTEGER - - - - - - - > .
HALF WORD
.,
SCALAR ROLL
*..*
* *
I
.*.
H2
......
V
.*
NO
*,
'039702
H3
K~
YES
MOVE GROUP
ROLL
*
e..*
.....
:
....:->
*1 NO
J2
103970B
V
: J2 :
MOVE GROUP TO
FULL WORD
SCALAR ROLL
.................
:.::.
.....:->1
...2.
'039705
PREPARE
TO PROCESS NEXT.
:
SCALAR
:
.................
.....
J
A3
:.-;:. :.
Chart CN.
ALLOCATE ARRAYS
G040J
. 2
ARRAY
ALLOCATE
I
I
82.
V
.................
INITIALIZE
:*:::->1
,040101
*.
e3
,.,
.*
C2
'40104
w.
ALL
...
YES
----~
ARRAYS
.,PROCESSEO,
e.
.ANV
P.&QTl.A:'
LINE
-'-
----;,-
c. -
..
...
it
NO
,-I
v
02
-,
HEX T
...
,- ARRAY IN
-, YES
-,COMMON EQUIV, ,*---,
I
_.
-'~~ DUMM~_ ,w it
.. NO
H2 :
E2
.
.................
V
ALLOCATE
STORAGE AND
-RECORD LOCATION.
I
...F2
V
ENTER
INFO IN ARRAY
MAP. PRINT
COMPLFTF LINE
.................
I
GZ
V
(:ALCULAiE
ANO
RECORD BASE
-AND 01 spun
CENTRAL
..
PTRIN -
.................
(::-:->1
..
'040102
it
,-,
H2
*.
*.
..
YES
W.
*, PASS 1
...
..
..
.* ' - ,
v
--
NO
1(2
-JZ..-................
v
.... :->
. I
I
-... kZ:
K2
'040103
PREPARE
-TO PROCESS NEXT-,
ARRAY
-
.-.....v
C2 -
Section 2:
Compiler Operation
89
Chart
co.
A2
.
PASS 1 GLOBAL
SPROG ALLOCATE
I
I
B2
.................
ALIGN TO
FULL WORD
BOUNDARY
C2
.DETERMINE BASE
PTR AND
DISPLACF-MENT
FOR PRESENT LOC.
.................
I
I
02
COMPUTE
LENGTH OF
OBJECT MODULE
SUBPROGRAM ADR
..................
I
E2
.COMPUTE LENGTH
OF OBJECT
MODULE
SUBPROGRAM
ADOR
.................
I
I
....F2
RETURN
...............
90
BUILD
ADDITIONAL
BASES
Chart CP.
11.2
SPROG ARG.
ALLOCATION
...............
I
...I
B2
.*
..
:*
*.
ZERO
ARGUMENTS
*.
* *
..
.. B3
RETURN
-------->.
............. .
NO
I
C2
V
ALIGN TO A
FULL WORD
BOUNDARY
02
...
DETERMINE
AND
SAVE BASE PTR
AND OISPLACE MENT FOR START
OF ARGUMENTS
I
v
.E2
INCREASE
PROGRAM BREAK
BY SIZE OF
ARGUMENT LISTS.
..F2
CONSTRUCT
REQUIRED BASE.
TABLE ENTRIES.
.................
G2.
RETURN
Section 2:
Compiler Operation
91
Chart CQ.
142-...............
PREP
HAIIIELIST
-.... -
I
S2.
.-
'04.303
-- FLIP HAIIIELIST **
HAilES AND
*
-NAIIIEL I ST ITEMS -
a4
:~~~~
(::*:->,
C2
.-.
C3
* *
YES
'1
.....02..........
.................
ALL IGN TO
F\Jl..L WORD
BOUNDARY
I
03V
.
RETURN
MOvE
.NAMEL I ST NAIIIES
ROLL GROuP TO
COMMON DATA
TEMP ROLL
I
....FI
II
G2
V
*
*
.................
I
:->1
'0"4306
HJ
MOVE MARkEA
e
DATA
e. NO
*.
SYMBOL TO
NAMELIST
ALLOCATION
ROLL
* YES
..
...
V
J2
-.
..
i ;": .:
* *
- . 2.
REGISTER
VARIABLE AS A . - - - ,
SCALAR
-
....
V
-*
*
92
INCREASE
PROGRA" BREAK
BY ENTRY SIZE
~~.:~:~
V
*:
.J3 ..:....
....:
....I
V
ALREADY
YES
*. _. DEFINED ._ ,
*.
'04430"
es
OETERM I NE
YES
NUMBER OF
*
AN ARRAY
------->.OIMENSIONS FOR.
SIZE OF TA8LE -
*..*
.. _,':0
ENTRY
::::::...,........
:-> ,
....
.....05..........
OS
......0............ .
.
................. .................
I
........
I
V
,044305
.RECORO VARIABLE.
NAME A S .
:NAMELIST ERROR:
ADO 12 TO
*
SIZE OF ENTRY ON WORK *
....
MZ
ES
V
- MOVE NAMELIST
I TEMS ROLL
GROUP TO
*
*
NAMELIST
*AI.I.OCA TI ON ROI.I.
.................
I
....
- .
: ~~~~!!~:
HZ
: -::-:
*OETERMINE BASE.
POINTER AND
0 I SPl..ACEMENT
FOR PRESENT
*
INCREASE
* PROGRAM BREAK
BY 16 PUT ZERO
ON WORK
C4
.................
H2
NO
YES
.. '.1
I
f2
e.
'0"4307
-.
-.
copy TME
*. NO
COIIIMON DATA
*
DATA
*.ON TME NAMES - - - - > - TEMP ROLL TO
*.
ROLL
ROLL
'04"302
V
.-.
.*
e.
-.
A SCALAR
*.
.*
*. * * .*
..... .....:
,04"301
84 :
B4
(2
-:
MZ
Chart CR.
.... A2
.LITERAL CONST
ALLOCATION
62 .........
a..
..
MOVE LITERAL
TO OUTPUT AREA
PUNCH I F CARD
CORRE.CT
INITIALIZE
*PTRS TO LITERAL.
COII/ST ROLL
.............
.................
I
:
C2
:->1
~~~ N~~~S~~T
COMPARED TO
A POINTER TO
A NEW GROUP
-.
...
C.I........
1044401
C2
-.
ALL
- . YES
CONSTANTS
.---,
. ::CCESS:;o'
.
V
it it
.. NO
02:..... ......:
E4
COMPUTE AND
SAVE PTR FOR
NEXT GROUP ON
:~~;
.-.
V
*.
... *
AND
.OISPLACEi'4ENT ON.
- LITERAL CONST
ROLL
.................
I
....
- .
....
- -.... I
E.V
C2 :
E4
1044404
E2
. - PAUSE - .
.OR DATA
- . YES
STi'4T LITERAL . - - - ) - C2 -
*.
..
*
134
..
.*
....
THROW
AWAY OLD
POINTERS
NO
... *
v
: F2 :
... *
INCREASE
PROGRAi'4 BRE AK
-BY NO. BYTES IN.
PLEX
.................
F4
PASS
... *.
FS
... *. Y E S "
..
RETURN
- - - ) .
.*
..
...
.. it
II
NO
.G2 .......
..G...........
.................
DETERMIII/E BASE.
*
PTR AND
DISPLACEMENT
FOR PRESENT
LOCATION
PuNCn
.0 *.
V
.*
*.
.*
"'2
PASS
......
...
...
*.
..
RETURN
..
V
YES
I
J2
1044402
...
NO
PUII/CH
REMAIII/III/G
TXT CARD
84
PTR 01 SPLMT
AII/O PTRS TO
THIS LITERAL
.................
I
....
......
V
(2
section 2:
Compiler Operation
93
chart CS.
ALLOCATE FORMATS
42.
FORMAT
ALLOCAT I ON
...............
V
: 82 :
SET
I'-OINTER TO
SUlLO FORMATS
'44502
: 8 :
,...->.
I
.*
C2
.-.
*.
.it
it.
a..*
* it
Cl
*.
it.
PASS
Y E S .
OPE~ATION
._
,044501
COMPUTE AND
SAVE POINTER
TO NEXT
FORMAT
GROUP
:_>
NO
03 -. *.
'044503
.04
....
PUNCH A N Y .
-------> DATA
LEFT ON
------>
TXT CARD
;ES
..... E3 ......... .
INCREASE.
PROGRAM
OBTAIN
BREAK B Y .
.. UMBER OF WORDS.
:NUM~~R Fg~M:~TES:
:
FOR FORMAT
.................
.................
..... Fl
e.
e.
PASS
*.
*.
* *
.-
.-
NO
I
G2
.44602
.CALCULATE BASE.
ANO
01 SPLACEMENT
FOR FORMAT
YES
,
. . .................
V
(2 :
'II
MOVE FORMAT
TO OUTPUT
AREA PUNCH
IF CARD
COMPLETE
.............
I
......
: Gl :
REBUILD
FORMAT ROLL
.................
C2 :
..H3
'II
PRINT FORMAT
MAP. IF
OPTION
SPEC IF lEO
.............
......
V
94
PRINT MAP
LINE
REMAINING
*..*
E2
.05
FORMAT
NO
TO PROCESS
........ j........
..
RETURN
*.._
: .::.
02. ....
F2
it _
1 YES
I
I
DATA
NO
TO PROCESS
- - - - ) 1
:BASES REOUIRED :
:.~:. :->!
' 601
NOTE
ADDITIONAL
.................
....... ..........
FORMAT ROLL
03 :
I
I
.ES ..... .
V
RETURN
Chart CT.
MAP EQUIVALENCE
A2 ......
EOUIV
MAP
...............
..I
V
BZ
.*
*.
ANY
*.
*.
OAT....*
NO"
.*----)*
..
*- ....
* YES
.B3
RETURN
I
V
e2
PRINT
HE ... DING FOR
EOUIV MAP
02
: ~!~~ :
E2
FLIP THE
EOul v
.................
.:->1I
:
F2
104410\
F2
-.
DATA ON
EoulV
NO
ALLOCATION
*.
*.
*.
.. ..
ROLL
.*
1044\02
.*
COpy
COMMON NAME
TEMP ROLL TO
EOUIV ALLO-
: ..S~!~~~.:~~~
Gz
*
MOVE NEXT
COROUP TO
CENTRAL;
INCREASE
....
YES
.V
DATA 1 HOLDS
THE ADDRESS
OF THE
VARIABLE
.. F3
: G3 :
!UPOA T~R~~~GRAIoC :
....:
.................
HZ . . *
*
...... H3.
:~~:~~~
ENTER INFO IN
MAP. PRINT IF
LI NE COMPLETE :
.................
J2
.DETERMINE B"'SE
POINTER AND
PRINT
PARTIAL LINE
Of MAP
.. J3
.................
RETURN
1(2
V
PUT GROUP
FOR VARIABLE
ON COMMON
.----,
I
.... !~:~.:~~~.... ....
v
NAfIi1ES
.......
F2
section 2:
Compiler operation
95
Chart
cu.
-A2
... :~~~~:!~ ..
-
GLOB"'L
SPROG
82
V
FLIP THE
GLOB ... L SPROG
ROLL
.................
. . I
-->1
*
- I
-
C2
104030 I
0*0
C2 . .
...
.....e3..........
'040303
..
DATA ON
THE GLOB ... L
..
-00 * - - - > NO
- 0 * 0~~~~G 0 _ 0 *
....
----->.
-
.................
: GLOB~~L~PROG
... ...
i
. C....
COPY COMMON
YES
..
................
.
I
:->1
'040304
o.
02.. ..........
MOVf NEXT
'('ROUP OFF ROLL
TO CENTR ... L
o. ...
0
* *
-
II
0- 0-
<2
... ...
... *
-
I
I
I
YES"
..
*.
... [3 .........
...
DUMMY
..
...
..
VALUE
~~~~~.~~~
I
L~.
I
....
....!
v
(2
ES . . . . . . . . . . ..
-0
M... RK GROUP
fOR INLINE
FUNCTION
J3
H3
~~~~~.~~~
I
J3
.->
I
I
v
*J3
PUT C,ROUr'
-ON C014140N D ... T ...
TEI4P HOLL
.
.
04
v
. . . . . . ..
:
-
H3 :
.............
1
I
I
...... FS
V
PUNCH
P ... RTI ... L ESO
C ... RD
I
.GS
V
RETURN
NO
.----,
96
...
I
. 3
:...
...:
...
.*.*.
II
V
I
....
.-....--
.-................
________--JI
PUT GROUP
-ON COMMON 0 ... T...
TEI4P ROLL
(,2..
1040302
.. YES
I
I
I
SPROG ... LLOC ... TE I
",NO OUTPUT
I
OS
COPY C014140N
D ... T ... TEI4P
ROLL TO
USED LIS
FUNCT I ON RoLL -
0.---->-
.... *
II
NO
YES
*. *.
...
E4
o.
INLINE
FUNCTION
II
NO
,040308
V
. . . . . *F 2 . . . . . . . . . . . .
"'LLOC ... TE
..
.*
-00-
I
.a.v
'040307
.0 .0
D... T ... ON
-. THE USED LIB
- 0
ROLL
0-
0-0
04
FLIP
TtiE USED LIB
ROLL
Chart
cv.
...A2
BUILO
NAMEL I ST
..
....
!:~ .. ~
84
..
*.
..
,*,
*.
ti2
DA T A ON
NAMELIST
NAMES
... ROL L
..
...
NO"
*---) *
..f:j3 ......
RETURN
64.. ..... .
..
..
,40500
.. . . . . . . . . . . . . . . . . .
;;;.;.;.:;;.;;;;;..;.-.--
I
II
YES
I
V
..
FL! P
(4
..
ALLOCATION
THE LATTER
HaLOS THE
I T[MS FROM
THE NA"'ELIST
LIST
ROLLS
,.
*.
'.
PRINT HEAOING
FOR NAMf.LIST
MAP IF
"
1040505
~3
w.
UAT A
'.
LEFT ON
.,
NAMEL 1ST
.,
N .. Mrs
,*
-.RnLL
.. ..
.*
NO
,.--->.
COpy COMMON
OATA TEMP
ROLL
TO NAM[LIST
NA""ES ROLL
.............
I
II
I
I
I
I
.... *G2. ..
...................
v
..GJ ....... ..
V
0 I <;PL ACEME NT
O~ NAHlt. !sr
T ABLE ON (01'4-
1'40"1 OATA TEMP'
..
.. HZ ..
I
I
.->
Iv
I .
..................
.
.................
I
....
..
,',
OATA. ONe.
, . NAMELIST
. , NO
ALLOCATtON
.'--,
.,
ROLL
,.
I
THE .... 0
ANSWFR INDcATEs EITOotER
NO DATA OR
A MARKfR
*.
*.
.UPDAT[ PRLGWAM
BRE AK
.................
J2
H4
MOVE NAMfLI<;T
NAME AND 2
WORDS OF 0 TO
CODE ROLL AND
OUTPUT
1040502
..
F 3
PUNCH AND PRINT
REMAINING
INFO IF
REQUlSTE.)
.............
J2
ENTER NAME'
LaC IN MAP
LINE PRINT
IF LINE
COMPL E T l
.)2
.. -F2 ....
~~~~
II
..... ......:
I
....
.
............ .....
Yf <;
I
I
I
J2
(2
MOVE ALL
DIMfNSION
'FACTOil!:; TO COOE*
"
.......
\I
YES
I
:->1
.'
.. 04.
~~~~~;!~~
,04050 I
*---,
02 ........ .
., ,,0
AN
.'
.'
'.
VAw I ABLf
'.
ARRAY
'.
II
,. ..
v,
C2
...................
...
I
v
E2
.
..I... .
. .
' '
YES
84
H4
Section 2:
compiler Operation
97
Chart
cw.
BUILD BASES
G0438
A2
BUILD
ADDITIONAL
BASES
...............
....B2 . II
.->1
B2
OBTAIN
PRESENT PROGRAM.
LOCATION
.................
...
v
C2
....
LAST BASE
....
* NO
-
i
02
..
..................
INCREMENT
BASE ALLOCATION.
E2.
REGISTER
NEW BASE
ALLOCATION
.................
B2 .
....
98
-------->.
.*
C3
HETURN
.............
chart
Cx.
DEBUG ALLOCATE
..... A2
DEBUG
ALLOCATE
82
...
".ON
*.
I
:->1
... *.
v
82
DATA
INIT
-.
.. .*.
ROLL
.- .*
*
: 83 :
NO
..
INVERT
.................
I
I
C2
C3
E2.~
*.
I .................
CENTRAL
...
*.
* *
"
...
I
v
G3
..
MATCHING
YES
II
I
SE T
..
"
82
-.
NO
YE..::i
:"
(]
.:
NO
"*
"
...... ......
...... ....
"
.
I
~~~~~
"
*..
82
..
Jz
....... ..
....
*.
H]
.GROuP ON GLOBAL.----,
OMY ROLL
I
... ...
... *.
I
I
.. *.
."
. - ;..jlit.TC";iNG
I <_____.J
1<
ARRAY ROLL
GROUP
II
YES
~~iTT~~ +~~i
"
H2
I
I
I
I
I
I
"
:Gz ...
.................
I
...
.*
SET
"
"THE SUBCHK !:lIT"
IN THE GLOBAL
.OMY ROll GROUP "
*. NO
*--,
.*
I
I
."
V
F 3
...
MATCHING
...
GROUP ON
...
ARRAY
...
...
YES
II
I
I
I
ROLL
MATCHING
NO
"GROUP ON GLOBAL.--,
OMY ROLL ."
I
INIT
...
...
V
E3
F2
I
I
I <---------'
.*
AREA
I
I
I
: ~~~~~ : I
.*
YES
...
RETURN
MOVE
VARIABLE NAME
"OFF OF ROLL TO "
~~~L!~ !~~L
c.
03
NO
YES
SET THE:
...
------->.
*. *. ROLL.*
...
.. *
MATCHING
... ...
..
G~g~~ A~N
ROLL
... N O .
* DATA
*. ON SUBCHK
.................
.*
:->/
...
(,3
MOVE
VARIABLE NAME.
.OFF OF ROLL TO
: CENTRAL AREA
02
..
.*
ROLL
..
YES
... *.
------->.THE SUBCHK
. .
..
C3
..
section 2:
Compiler Operation
99
Chart 07.
PHASE 3 - UNIFY
.. ...... ....
. 2 ...... ..
I
...................
I
.. 8Z .......
e.............
GOIII
START
UNIFY
~ELEASE
.PROGRI'M SCR I PT
:
ROLL
GO 145
:~~~.~~~ .~;:~~!~:
SE T UP
POINTER TO
:ARRAY REF ROLL
.................
ALLOCATE
....... ..........
.. .
e 3
DATA ON
YES
RESERVE START *
*.
PROGRAM
. * - - - - > . T O SCRIPT ROLL.
SCR I PT
RESERVED AREA *
ROLL ...
..
..
*.
... *
,I
C2
RE SERVE
PROGRAM SCRIPT.
..
ROLL
..
..................
GO 113
..
j"
.* ...
....
....
...... .
. .
c.
POINTER
*. YES
NO
02 .....
I I 106
..
...
:->1
: c"
(2
:*:::->1
.................
0..
V
POINTER
.................
I
::::::-,1
.E.
-.-*-.-*-.-.-.-.
V
: E2 :
GOl12
MOVE NEXT
GROUP FROM
SCRI PT ROLL
.................
,I
.F...........
...
OF
.* .
...
END
YES
ROLL DATA . * - - ,
* *
.. NO
INCREI'SE REG
RUNG BY "
...... ..
I
G.
.-.-.-*-.-.-*-.-.
................
, .
I
....
.
G2.
..................
V
G,0112
.CNVT "FORMT-OCA2.
REPLACE
GROUP ON SCRIPT.
ROLL
*CONSTRUCT INST
FORMAT FOR
REGISTER 2
.H2
GOll5
:~~-~:~.~~:~::~:
.................
PROCESS
NEST OP
LOOPS
...
v
...
J2
w.
: J3 :
LOOP TEMP NO
SET REO LOOP
TEMP CNT
*.
... ... . ..
YES
........
V
100
F2
CONSTRUCT
INSTRUCTION
FORM.FOR REG2
E2
I
........
V
....
E2
C"
C5
...............
CONVERT TO
AD DR CONST
08A2
Chart DA.
....ARRAY
A2
REF
ROLL
ALLOTMENT
................
B2.
.
GET
BEG i NN PlG
ADDRESS OF
-ARRAY ~EF ROLL
r.
C2
GET ADDRESS
OF PARSE SAVE
AREA
.
oz.!........
03
..NO. OF
04
GET NUMBER.
ENTRIES YES
ROLL ENTRI ES
*..*
. *
NO
.....
E 2
. x ............................................... ..
LOAD GROUP
I~oI(ATEo WITH
INITIAL ZEROS
....
~2..........
TO
E.lkY
I~LE'
~JfXT
PO:."H ON ROLL
. X..
0
.................
o
o.
F3 ALL
*.
F4
ENTRIES . YES
PRG('ESSED X.
R;::lURN
...
.."
* *
NO
.0
E2
Section 2:
Compiler operation
101
Chart DB.
GO I 13
1011103
"'DR
TO
CaNST
A2
~ONVERT
'FOR
dAS[
CODE
([VlN'
01 SPLAClMENT)
IN 0'" T ... 3
............................
-
I
B2
.........
-
... .' .
-SET UP POINTER
FOR LOOP
- CONTROL ROLL
34
*GRP
..................
:"::':->1
1011301
.-
C2
*.
*.Ofrlt
... *
.. .
C(NST
ROLL
".
YES
~ATCM[S
AOR
'.
...
- - - ,
.'
...
..
.'
..
NO
..
: C3 :
...
..
..
. "'
02
INCRE ... SE
POINTER
I
-03 v
IEYGEN
.................
04. ."
PL "'CE e ... SE AS
'NEW GRP ON ADR "
CONST HaLL
I
II
I
EZ
-
.... *f.
.................
:e . .
..................
-
MOVE
I NFO TO WO:
Sf
"
: F4 :->1
... *.
.-
...
}~o
..
-.. -
.*
.*
______ )
.-
YES
*. * .... .-
EaUAL TO
OR LARGER
..
A4
..
- 102
I
v
,011302
JJ
..
..
... YES
...
---->"..
PRUNE WO
NO
....I
THAN
(2
NO
.".
...
.....
J2
...
... WORD
...
...
...
"
1
1,1
*.
...
I
.. v
.-................
= 0.-------->1
-.TAG FIELD
REPLACE !lASE
.1 TH TE"P PTR
ON LOOP
ceNTRaL ROLL
NO
. J.....
-.
I,
G2
*.
. R~~~~~:~
... -:_~S
*.
F4 .........
111304
_:-...
II
F2
CON:,jT
"
"
C2 -
THE W()RD
DOES NOT
CONT"'IN ... N
AR[A CODE
AND 0 I SPLAC[ME NT
I NO I ~ A T I NG ~
NEED FOR A
TEMPOR ... RY
LOC ... TION
I
I
..
POINTER
- . YES
...
..
FDA GfN
..
*.
...
F4
"..
"
chart DC.
INSTRUCTIONS
CO~STRUCT
GOlle.
AZ
CONVERT TO
!NST FORMAT
II
1
I
6Z
GET
.................
1
...
CZ
;;
....
GENERAL
N O .
REG. NOTED
...
...
...
*..*
-------->...
.*
C3
RETURN
YES
I
**02**
MASK
**.
I
!1
1
V
EZ
PLACE
VALUE IN R2
POSITION FOR
INSERTION ON
ROLL
.................
I
I
1
...
V
...
..
..
FZ
Rl
...
~~
*. ...
RZ
.. . ---,,1
.. HZ .
v
Rl
"
.... "
G2.
......
..........
I
HZ .
:->1
:....
HZ.
..................
V
SHIFT
VALUE TO Rl
POSITION
"
I
I
JZ.
V
RETURN
...............
section 2:
Compiler Operation
103
Chart DD.
A3
GO I I
..
I
I
..... A3*
... *.2
00
Nf'Sl
\J~IFY
II
I
I
I
I
I
A?
....
-> I
I
I
I
I
..... AJ..
II
H~
INI 1 IAL I Zf
**
Rf.SERVE
NEST sc<nPT
ROLL
LOOF'
CGPY
'ROLL
~.C.RIPT
ONTO NEST'
fJ,(PIPT
ROLL
I
I
II
I
v
.... wC;>
PLACE IND.
*VAR. COl FF.
HE. ~) T
o~
, N.O
.*
*.
.'
'.
I
II
(3
.'. ..
Nrl"".. T
Llllt L
*.
=I
..
'.
'. . *
*.
.'
NO
.... eOJ
IND. VAw..
'COFFF. ON NEST
SCRIPT
II
04
PL ACf I NIT I AL
'REG. COUNT AND.
... ..............
*
II
II
*
*
4E TUHN
.................
....
....
I
I
II
*f 2
(OMPARf
N[ST LEVEL OF
o
LOOP WITH
*
PR[VIOUS N[ST
LfVEL
02
"
.... ............ .
I
I
*->1
F2
.*
F2
.*.
JS
LESS
..
'.
[,2
NOT
-.
.. .'
TO
'.
.*.
.'
Nl2
EQUAL
.'
- 63 -
*.YES
*PLACINOVAR"
- - - - > * O F INNER NESTEO'
LOOP IN.O
-
.'
'. * .'NO
I
I
SE T
NEST LEVEL
I NO I CATOR
I
I
J2 .....
V
PLACE NEST
"
LEIIEL ON
*PROGRAM SCRIPT.
..... ......:
.. ..
*
AJ
I
I
PUT
POINTER
TO
ARRAY.
OF f S[ TIN
WO
II
I
\I
: *G4 :
OETEilMINE
SCRIPT
ALLOCATION
................
I
~~~~
.................
*
'011~04
'.
NLI
**-,
I
I
......... ........
104
YE S
:.::*:->1
H2
tOI I~O)
II
-H2"
NO..
.*--->*
TtiAN
Fit
NL I
'. '.
....
NL 2.
*.
**
*
,011':>02
I
I
I
*
*
*
.... *02.
v
I
I
I
I
I
CONVUH
ARRAY OFFSETS
SCRIPT
ALLOCAT!ON
H). ......
.................
\I
PLACE NEST
*
LEIIEL ON
*
'PROGRAM SCRIPT'
ROLL
I
..... ,.............
.
\I
*
SET
*
AIIAILABLE
*REGISTER COUNT
FOR SCHIPT
I
I
. .... JJ ..........
II
\I
*
vAR
PUT IND
COEFF IC IENT*
TN W1
.'
J4
'.
'
F"
'.
J5
..* ' .*
.~
NO
..
.* .
.*
MORE
' . YES
.SET NEST LEIIEL *
*.NESTED LOOPS . * - - - - > * T O PROCESS NEXT*
'.
.'
LOOP
....
*
*
*
*
F2
....I
II
F2
chart 08.
PHASE 4 - GEN
a
....
.
.. " ..
..A4
.A2 . .
IEYGEN
Ii
G0493
G0491
:~~~.~:~~-; - ~~:~:
a
REMOVE AND
PROCESS
...... .....:
;:~~~
I
I
V
S.. ..--->.
. . 85 ....
................. .................
82
.
............ .... ....
V
S T IA.HT
Gf N
ROLL TO WORK
ROLL
INITIALIZE
I
i
G0515
:~=~.:~-~~~:~~:~:
~-,
I~
PRODUCE ALL
REQUI REO
CODE I'
PRODUCED
ON THE CODE
ROLL
GOll96
:~!~.~~~~~-~~:~:
:~~~;~~-~~~:~~~~:
IJ
0.
02
G0504
.................
................ .......
STA GEN-EGA2
PRODuCE CODE
F OR HE AD I NG
IND:CATE
~TA1EMENT
____________
C.
*-. -.-.-. -*-.-. -.
C2
G0499
CII
-NUMBER ON CODE
RULL
:.. ~~~~~~~~.~~~~.:
...... *l2"""
-tPILUG ('[N-EC"2-
.- .. - *- .. - .. - *-* -*- ..
P..,ODUCE
..,rauIREO
a fPILOGUE CODE
F2
G0508
.................
F2
a
a
I
I
I
a_>1
GO 712
II
F 2
POL ISH
NOTAl 10 ..
IS ON AFT[R
POL I SH ROLL
MOllr POL I SH
FOR STMT TO
G2 .....
V
..
MOVE
..
a
STMT NU"BER
a
aFRDM POLI"H TO a
.................
..
STORAGE
H2
a
a
-MOVE NEl< T GRDupa
FROM POLISH
a
a ..,OLL TO WORK
..... .......
:~~;
I
II
.a. *
V
.*
J2
.-.
... *.
.-
NO
a.LABEL POINTER.a,
*. ...
...
..
.*
YES
a
..
....
A4
.: '4 .:
V
....
..
section 2:
Compiler Operation
105
Chart EA.
...... .
..A2
............ .
ENTRY
COOE GEN
....
..
*
."
82
.. .
...
133 . . . . . . . . . . .
...
SOURCE
".
..
NO
PUT
.. " I N
................
... ...
INITI.LIZf A
"POINTER TO THL
.................
...
02
*.
*.
YE S
*--.
II
BUILD A LABEL
RECORD INIT.
*
"
~g~EL~~ ~~:~O:
FOR
LABEL
"
!
I'
,
,
II
*
INSERT
PROGRAII4 NAME
CODE
..................
IN.
I
-Gz
1
I(
PUT CODE
F"OR INITIAL
SUBPROGRAII4
ENTRY ON
CODE ROLL
"
............... ..
GENERATE
Rt: DULl
"COUNT OF GRUUP""
10 PROCf5S
..
1
0
I
0->1
04
.,
.....
1049'103
...
."
04
GE",ERATE
ADDRESS
CONST ANT
FOR PROLOGUE
: :;~l~~~~;
I
J2
.
II
BUILD SAVE
AREA AD CON
COOE FOR EXIT.
... ..............
....I .
106
B4
'.
AL L
vJ".lOUP<)
'.
.. .. ..
... PROCE.
... YE 5 .
---->.
..
~J5[O..
'.
NO
II
E........... .
j
V
"
REOUCE
COUNT
OF
~~~Oupc:.'
TO PRo(r'>s
"
I,
F. .....
V
INSEHT
ENTRY NAME
CODE
..................
IN
I
I
I
II
..... G4 ....
v
PuT CODE
FOR ENTRY ON
CODE ROLL
"
1lJ~N
I
t-i2 ........
Rt
.. -- * *
...F2
' ..
'
NO
1<------>'049902
Y[ 5
*---->*
e" . ".
EZ -...... .
:
*
RETURN
-.
I1
NO
"
*
* ..... *.*
I
-.PROCESSED.-
1
1
*NO. GROUPS *.
...
ON ENTRY
*.NAMES = 1.*
I
I
II
Sf T UP
S"l(f AREA
LOCATION AT
CURRE NT LOC
-.
. . C]-.........
...................
I
.03 . .
............ ....
SE T uP
." .
..
ALL
GROUPS
II
I(
*.
B4
YES
I
C2
...
04990 I
-.
."
B_
I
I1
H..........
...................
I
V
"
"
BUILD INITIAL"
PROGR"M ENTf<Y
AD CON COOE
J4. ...
V
GENERAT(
PROLOGUE
.EPILOGUE
AOCO"',S
.................
....
.. ...
"
04
..
. OS . . .
................... .
~ETU~N
..
Chart EB.
...... 1.2 . . . . . . . . . ..
:
.........................
PROLOGUE GEM
..
I
....
82
..a.
V
INITIALIZE
POINTER TO
ENTRY NAflilES
ROLL
I
.....c...........
. ..C5....
................. .................
.. ..
C2
:
.. :
:..... ......:
05402
-iNiTiALiZE CNi ..
P~2~~~S~~ ~~
:~~
EN'!RY N .. ~ES
v
,.,
. . ALL . .
..
..
,.
GROUPS
., Y E S '
.,
PROCESSED
,.---->.
*.
... *
...
'! A2!...E.
..03.
..
R~L
(::.:->1
02
UPDATE'
CLEAR
POINTER TO
. - - - - - - - > . BASE REGISTER
PUT LOCATION
OF CLOSE OF
PROLOGUE [N
ENTRY NAMES
ROLL GROUP
.................
.................
'050401
B4
.. C2
RETURN
NO
I
.... E2..........
V
...E3........
BUILO A
LABEL
REDUCE COUNT
.OF GROUPS TO RE.--->.INSTRUCTION FOR'
PROCE S S E D '
PROL OGUE
.. F 2
I,
o
.----.
I
v
II
....F2
..................
I
,"
FJ
'CONSTRUCT CODE
FOR LOADING
ARGUMENTS. IF
ANY
G2
V
COHTRUCT CODE
.FOR COMPUT AT ION.
OF CUfIIIfIIIY
.DIMENS[ONS. IF
.................
..
ANY
..
*.
*.
. ..... *... .*
CONSTRuCT
COOE FOR
CLOSE OF
PROLOG'JE
... ,............
I
........
..... GJ.~........ I
it
BUILD DEOUG
LINKAGE. UNIT.
COOE AND UNIT'
NO, [N CODE
ROLL
I1<
I
I
II
I.
I
V
'50414
,.,
.*
H3
*.
*. *.
... SUbTRACE
.,
SPEC[FIEO
*.
,.
*.
... -
.*
...
NO
..
..
, ' - - > . F2 0
..
..
YES
II
.. S4 ..
YES
I
...H2
.,
.*
,.
OEBUG
. , NO
'UNIT SPEC[FIED,.--,
J3
..................
V
o
o
BUILO
0
DEBUG LINKAGE'
ANO SUO TRACE
START COOE ON
COOE". ROLL
I
....
.. ..
;..
..
F2
Section 2:
Compiler Operation
107
Chart EC.
..... ~2"""""
fPIL::JGI)!,
GE'I
.
'050803
......
*.
B2
OBTAIN NO.
' . ENTFRING TO X' OF GROUPS TO
' . P,<OCfSS . '
PROC.ESS
~(J
.
C3 '
',X,
....
.......... (2 .................. ..
SE T
LAA"L
'INSTRUCTION FOP.
MAl N PROGRAM
ENTRY
C3
"
'.
................................ ..
x
*n50~Ol
...
* ....
...
..
NO
03 ....
(LOSE.j,
"PlL(lG'_'~ 0,
MA I ~j Pk(;l
. .U4
................
oP I t OGUE
RETURN
. . . . . . . . . . . . . . . . . . 411 . . . . . . . . . ..
BUilD
MA I N PROLOGUE
CODE
RE TI!R:,
x
..... E3
.
'!lUllO INSTRUCT.
FOR DUMMY
.ARGUMENT VALUE
TRANSFER
.'.
........ F 2 ................ ..
.050802
F3
..
.. ....... F 4* . . . . . . . . . .
. ' ENTRY..
DEFINED
' . NO
PRUNE
AS SC.ALAR
X-LAST ENTRY FROM X. Gl
'.
.'
.. .. .. ..
GI
YES
.
.................
...
..
x
'iOe04
'
..
... G3-
vi
SUflTRALE
' . NO
.* ..
SPECIFIH)
x.
(,4
..
YE S
......... H
1* .............. ..
tlUiLD Of tlllG
L I N~A('E A'jO.
SUflTRA(r
., X' G. . .
ENe C(JCfS
IRETURN)
................................ ..
108
. . . . . . (4
"
ALL
' . YES
PRUNE
GROUPS
. . . . . . . . . . X'lAST ENTRY FROM'
',PROCESSED.'
WORK ROLL
~~~f~uE9tgN
....... _........ .
. .
Gl
G4
1050S:;'
G4.
CLOSE OF
EPILOGUE OF
:.... ~~~:~~~
.....
..... H4.
.................
X
....
'DECREASE NUMBER.
OF GROUPS TO
X. C3
PROCE S S
Chart ED.
"2
GET POLISH
...............
I
I
I
I
92
.SET UP POINTER
TO AFTER POLISH.
ROLL
..................
I
I
C2..
COPY.POLISH
FOR snH TO
POL I SH ROLL
.................
I
I
02.
..................
V
UPOATE CONTROLS.
FOR AFTER
POL I SH ROLL
I
II
I
E2
RETURN
...............
Section 2:
compiler Operation
109
Chart EF.
PROCESS LABELS
G0493
A2 ...... .
LBL
PROCESS
.
.
......
B3
83 ...
......... ....... .
.. ....... .........
82 ....
ROLL
STORE POINTER'
'TO LABEL IN ST'"
LBL BOX
I
I
I
I
I
I
C3
"PUT POINTER TO "
MADE LABEL ON
AT ROLL-WORO
2 OF GROUP
I
II
...
.....................
II
...
.*
'.
02
JUMP
*.
*.
...
.. DJ
*.
T "RGf T
-----,
.*
.. ..
I
I
E2.~........
.................
I,,
YES
.....
MAKE LABEL
"
"FOR NEXT INST- "
RUCTION - PUT.
" L ABEL CODE ON
CODE ROLL
"
NO
,
3 .....
CLEAR THE
BASE REGISTER.
.
TABLE
'PUT POINTER TO
MADE LABEL ON
AT ROLL-WORO
3 OF GROUP
'I
.................
I
.
..................
F2 . .
CLEAR WORD I
OF AT ROLL
GROUP
I
....
......
v
..
...
.
:
H2
..
.. .
...
....... i
J2
*49302
...
...
.. .
*. NO
,
.'
...
..
...
\I
.
....
YE S
........ ..
:-> I
(4
J2
.'.
AT
...
...
FIRST WPRO
OF AT RCLL
CROUP IS
COMPARCD WIT>1
STA LtiL BOX
NO
LABEL
...
...
...
,
I
...
YE 5
.. ..
....
V
..
110
J?
DATA
g~L~T
B3
..
I
v
..
(4
C4
(4
.".
..
...
...
...
.. .... ..
...
*.
T RAC[
.. .... ( 5 ............ .. ..
...
SPECIFIED
NO
YES
-_ .. *D4 .
PI)T
Of.tUG
Ll'~KAGE
FOR
TRACE ON COOf
ROLL
................. .
I
I
I
I
EIt ......... .
V
PUT BINARY
LABEL ON
CODE ROLL
F. ... ....
V
RE
TU~N
..
--->.
.*
*.
*F 3*
PUT LABEL
CODE ON CODE
ROLL
*
*. *.
'49305
1<
*049301
"..
~ETU~N
Chart EG.
14.2
STA GE~
...............
I
...
...............
I
II
I
I
I
B2
B4 .. . .....=
....................
=* STMT
FUNCTION YES
MADE LABEL
---,
PTR
0
*.
.. ..
=
PREPARE
.*
NO
...
C2
II
.....
..
09
A2
I
1
STMT
FUNCTION YESV
DRIVER ON
WORK
*.
. .*
TO PHASE 5EXIT
.*
NO
I
V
....
02
BUILD
CODE FOR
STATEMENT
FUNCTION MADE.
LABEL
,051502
r
I
E2
GENERATE
FOR
CODE
STATEMENT
.................
THE JUMP TO
APPROPRIATE
CODE GENERATION
THE CONTROL
DRIVER IN WO
AND THE STA
RUN TABLE.
II
I
"**f'2===
RETURN
...............
Section 2:
Compiler Operation
111
chart EH.
A2
STA GEN
FINISH
...............
1
I
->1
b2
049603
1
V
Ei2
DATA
ON DO
NO
LOOPS OPEN
---,
ROLL.
...
...
. ..
....
...
YES
. E3 .
C2
..................
MOVE
I
1
..
02
.0 .0
...
POINTER"' NO
.LABEL OF THIS
STMT..
...
..
1049601
03
REPLACE OROUP
ON ROLL
-------->.
* YES
1
.................
1049602
CONSTRUCT
00 CLOSING CODE.
ON CODE ROLL
.................
I
.
E3 .-> I
1
V
E2*.
11
E3..
..................
V
RESET TEMP
POINTERS AND
ACCUMULATORS
112
B2
.F3
RETUR ....
...............
Chart 09.
PHASE 5 - IE'iEXT
GO)!!I
. .i\2
f:X II'
I't,~~;
-----------b
I .
..... 82*.
:RELEI.SE ROLL:,
... C4
...............
: H" . :
.................
I NI TI AI.I7.f
1 . .
;;;;C2
:!~~.~~~~Lr:-:!:
.................
'PCR ~MLIST TRL
WORD!': HLDNG,
o
POINTER!;
"'"'021...... .
:!;~ .!~!~~ ~= !~?:
.................
PCH TEMP STGt:
AND CONSTANT
MEA
I.
.'
"."....0)
I'" .
I '
CHART OJ
A2
TO INVOCATIOtol
PHASE
'P:H SP AAG-FF"A.2'
- 1- t - I - I - t - t - I - I
I.IST~
RECORD
l<LD !NFO
'II"
1<----------
'"''
t-f-t-O-t--t-t-I-t
:. ~~~r.z:~~ ... :
j
o.
F2
-.
-OBJECT ' .
LISTING
ooREQUE:'TED
0
I.
..
NO
.'---
i''
I '
"Gl'"
!
El
G040J
.-.- .-e-e-e-e-. -.
.................
o
PCH SUBPRGR
ADOR IUfO RCO
RLD INFO
""..Fl
1
'PCH LIB RL-F&A2
.-t-e-e-.-e-e_*_
.................
COMPL SUBPRGR
ADDRESSES AND
RECORD RLD
Gl
G040C,
'PCB I'.OCOH-FIA2
PRINT HE'DINr.
FOR LISTING
,. .
l<~~~~~~~~~-
H2
I'('B CO RL-....
I - . - t - t - I - '-1_1_'
-.- .-e_e_e_e_e_.
.................
- PCB ADR CONST
'''NO RECORD RLD
INFO
"".B)
I
.PCB R1.O RL-FJA2'
.-e-e-e_e_e_e_e_.
.................
1
",,. 1
.-.- ..-.-.-.-.-.-.
:
.................
L________ _
:p~D~r~g ~S :
POIICB OBJCT
:MOD R1.O CMOS
J)
J 2 ..
'RCORD STORAGE
'PCB EMD
'PRIIIT COMPIL!~
:~~LI ~~IRo:
:O:J~R:g~~
STATISTICS
f l
co-Fltr.2'
1______ -------
Section 2:
Compiler Operation
113
Chart FA.
G0382
A2
PUNCH TEMP
82.
INITIALIZE
LOCATION
CARO
.................
C2
INITIALIZE
PDINTER TO TEMP
AND CONST AOLL
~
TOP
.................
:.::.:->1
.
'038201 02 ... ..
.-
-.
-. -. .- ..
-.. -
03
ROLL
YES
PROCESSEO
---->
PUNCH
ANY PARTIAL
CARD
E2
INCREMENT
POINTER
.................
v
.....
F2 v
OVE NEXT GROUP.
~RO. ROLL TO
BUFFER. PU~CH
IF CARO
COMPLETE
I
v
....02 .
114
E3
RETURN
Chart FB.
. .2..
PUNCH ... DR
CONST ROLL
B2
DETERMINE BE-
GINNING ... DR OF
TEMPOR ... RY STG
... ND CONST
... RE...
.................
;"::';-,1
..
,038301
..
C2
....
D... T...
N O .
ON ... DR CONST -------->.
.4
*.
* *
.*
C3
RETURN
...............
YES
I
V
02
INITIALIZE
COUNTER FROM
POINTER ... NO
BEGINNING ... OR
.................
II
E2
CODE FROM
... DR CONST
ROLL ON
RLD ROLL
.................
I
V
..... F2
.................
I
I
G2
PUT LOC ... TION
FROM ... DR
CONST ROLL
IN OUTPUT
... RE'"
WO TO TXT C ... RD
.................
v
.H2
PUNCH P ... RTI ... L
C ... RD
.............
PUNCH PARTIAL
TXT C... RD
v
....
......
C2
Section 2:
Compiler Operation
115
Chart FC.
*
*
*11.2 ...
...............
PIJNCH
COOE
ROLL
..
.. e4
I
II
I
.... t32
*
INITIALIH
LOCAT ION
COUNTER.
a4
.*ADDRESS*.
CONSTANT
DEFINITION
o.
*0
.................
COOE ROLl
POT NTER
... *.
1/
1/
85
..
YES
*----> *
*.
.**
STORE
LOCATION
COUNTER
..
* <-2
*->1
..
LNO
vI
C2
... *.
..
C3
"OAT A 5 TILL NO
PUNCH ANY
TO BE
*---->
RE~AINING
.PROCE ssEO.*
*PART I AL CARD
*.
.. .-
Gf T
..
NF;. T
...............
RETU"",
.0 *.
es
.~..
04
o
~Ol/E
I"'STR TO
OUTPUT AREA
.PUNCH IF FULLo
.............
....I
v
...
*.
E2
... ..
NUMBER
*.
...
..
...
... Y E S .
.*--->.STORE
...
..
IN STA.
IT
NUM
..
..
..
NO
..
..
F2
*.
PROGRA~
..
..
~REAK
*.
0
0
..
o C2
: (3 :
A
STATEMENT
y s
....Fl
------->
PUNCH ANY
REMAINING
-PART I AL CARD -
C2
F
REINITIALIZE
0
.LOCATION COUNTRo
TO 1 ST FULL
.WORO AFTER TEMPO
+ CONST AREA
-
*1
---->.
....
C2
..
('2
." ...
.. G3
* 0 YE S
-~OVE TO OUTPUT *
*. A CONSTANT
.----->
AR[A PUNCH IF
-,
* . . *
*CARO CO~PLETE-
.. ..
-.....
....
" NO
C2
.'
HZ
0*.
-...
HJ ..
~OVE
AN
' . YE S
IN'>TRU('ION - - - >
o.
.. ..
DATA TO
OUTPUT AREA
PUNCH IF
COMPLETE
" If
1/
NO
I
-- cz .--
..
I
v
." .
J2
..
.. .. .. ..
..... "
....
...... E5
".LIST FLA(, ON
*.
NO
I
I
1/
116
84
*
*
J3
0----->
LIST
CODE
............. I ....
84
..
"
j.......
1/
INsTW!CT ION
C4
.0
I
03
o.
A
* DEFINE LABEL *
LABEL
YES
ON BRANCH
NECESSARY PUT
IN LIS T AREA
.0* '~O
YES
... -D?" . .
...
1/
C2
Chart FD.
****A2******
PUNCH
BASE ROLL
...............
I
II
1
~~~:=a2===----w-
INITIALIZE
BASE TABLE
LOCATION
COUNTER
.................
I
I
*C2***
*
INITIALIZE
POINTER TO BASE*
TABLE ROLL
**
***02****
SWEEP BASE
iJRANCH I~OLL
*
INITIALIZE
................
I
** **
*->1
* I
E2
G0400
..
E2
.*.
..
E3
PUNCH
ALL
YES
*.
ROLL
PROCESSED.*
*.
* *
.*
NO
I
I
F2
*
INCREMENT
POINTER TO ROLL.
.................
* .F3
*
RETURN
...............
I
I
II
I
**G2*******
RECORD ESD
*
* + LOC COUNTER *
*
ON RLD ROLL
*
.................
1
I
1
.
..................
V
H2
* MOVE GROUP TO *
*BuFFER PUNCH IF*
* CARD COMPLETE
I
I
I
....
V
E2
section 2:
Compiler Operation
111
Chart FE.
. A2
PUNCH
BRANCH ROLL
...............
I
II
I
I
B2
INITIALIZE
BRANCH TABLE
LOC COUNTER
.................
I
I
C2..
V
INITIALIZE
POINTER TO
aRANCH TABLE
ROLL
.................
I
I
02
S.EEP BASE
BRANCH ROLL
..................
INITIALIZE
.TXT CARD BUFFER.
.... ,
E2
:->1
... .. ...
... ... .. ...
V
11040001
E3
E2
ALL
YES
ROLL
-------->
.PROCESSEO.
PUNCH
ANY PARTIAL
CARD
............ .
I
NO
I
I
F2
.
INCREMENT
POINTER TO ROLL.
.................
I
II
I
G2
V
RECORD ESD
ON RLD ROLL
.................
I
I
H2.
MOVE
GROUP TO
BUFFER, PUNCH
IF CARD
COMPLETE
.................
I
I
I
........
V
118
E2
II
F3
RETURN
...............
Chart FF.
.. A2
...............
PUNCH
s~::;aG
~;:;:G
ROLL
I
I
82
v
"INITIALIZE LOC."
COUNTER. TXT
"
CARD OUTPUT
"
AREA AND
:~!~!~~ :
" " I
:
:-> I
C2
140201
.:~
...
*.
(2
R~tt
...
Cl..
.............
*.
... ... ..
NO
PUNCH
PART IAL
TXT CARD
FUNC,., ANT
REMAINING
.PARTIAL CARD.
=:.-'''-''--->
PROCE SSED
..oz.
V
. 03 .
v
INCREMENT
:POINTER TO ROLL:
..................
RETURN
... *.
v
E2
El
GROUP=O
YES
------->:
:~
:.~::~.~~::~~!~.:
*. * *.*
MOVE GROUP
TO TXT
0~0~~~ ~~E'"
NO
.. !
..
..
.. C2 ..
40203
F2
...
.. F 3* . . . . . . . . . .
...
..
TEMP
*.
AND CONST
- . POINTER ."
YE 5
.----->"
*.
* *
..
..
COMPUTE
APPROPRIATE
LOCATION
NO
1040204
V
: G2 :
COMPUTE
APPROPRIATE
LOCATION
II
j< _ _- - - . J
-.. ..HZ.-..
v
"RECORD RLD
I NFO*
..J2
v
INSURE
'MINUS' TAG
MARK
I
..K2.
v
MOVE
"DATA TO OUTPUT
ARE A
"
.-,
... .......
I
v
..
C2 ..
Section 2:
compiler Operation
119
Chart FG.
.... A2
PUNC"
...............
GLOBAL
SPPO('
ROLl
[;0\
.... art.
1040302
"
t P THf
CL OBAL SP~O(,
UOLL
fL
5 TORf
0
OLOCATION ON RLOO
QOLL
.................
I
I
I
I
(2
.0.
'.
OA T A
I.
ON
~OLL
f'-if
'.
.0
.'
NO'
.*--->*
TURN
UFF
.................
af-l AL.
Mf)Vt
Of f
.ORn-
"';Vf
I SO
TO RL[)
1-40t L
NUMtlf
V
IF '2
Of Tf " " I N[
L D( A T I ON OF
"
.................
ADORE <;S
0.
G2
'.
O
'
l.c-,UtiPHOG.
o.
'.
FL AC,.
ON
Yf S
1--,
I
I
."
o.
.0
' '
I
I
.... IH2
.................
V
<,TORf
LOCAT I ON IN
LaC. COUNTER
..... J2
o
INITIALIZE
AR( A.
TURN ON
SUI:lPROG. FLAG
OUTPUT
.................
a4
"
120
"
....
B4
NO
I
...
V
iJ4
..
05 ..... .
.. ..
J
.*
.0
PUNCH
ANY PART I AL
CARD .
YES
.0
.................
RE TURN
I
I
I
I
I
SlJL3PGM
"
[5 .....
"
I1<- If ;?
MOVE
0 TO OUTPUT
"AREA. PUNCH IF
CARD CDMPLE: TE
o.
1
1
040 III I
RETURN
OAT A
NO
'-,\JHPf.Jn('''''A~
... c.I....... .
10403011
..
.... aD?.
o
C3 ...... .
Chart FH.
A.2
...............
PUNCH USED
LIBRARY
ROLL
......
I
82
.
~~~~
s,,.
..................
V
STORE
.LOCATION ON RLO.
ROLL
LI B
THE
ROLL
(2
0
it
o.v
*.
.*
DATA ON THE
ROLL
NO.
0.--->.
*..*
it
.CJ.
r
-MOVE
0 TO ouTPUT
.AREA. PUNCH IF
: CARD COMPLETE :
R(TURN
YES
I
t
"0.0''
.*
TURN OFF
SUBPROGRAM
OFF ROLL
..
*.
*. *.
NO
....
....I
.
.*
*.
(<;0
..
E3
YES
.0
o 00---->.
(IGNORE)
.. ..
MOVE NEXT
WORD OFF +
DESTROY
E.l.
.--,
NO
I
I
I
I
I
.ES.
I
I
I
PLINCH
ANY PARTI AL
CARD
RETURN
................. ....
"
..
YES
,0
05
ROLL
04
[2
-->t
f2
O ->
02
................
.
....
I
..
04
'''0''07
V
eF 2
o
MOV[
o E SO NUMBER TO
o
RLD ROU
.
0
I
I
II
I
G2
'I
DETERMINE
LOCATION OF
FUNCT ION
AOOkrss
......... ........
..
.0. *.
V
H2
..
YES
o.SUBPROGR FLAG.o--,
o.
0"1
I
o.
I
v
NO
II
B4
I
I
... JZ
V
o
STO~E
LOCATION IN LaC.
COUNTeR
0
I
I
.. 9<.2
v
o
INITIALIZf
o OUTPUT ARE A 0
TUnPII
ON
*--,
: SUBPROGRA" F LAC.:
....
8_
section 2:
Compiler Operation
121
Chart Fl.
A2**
.
...............
PUNCH
ADCON ROLL
.... ,
I
.:->1...
:
62
..
* ..
82
.*
..
*.
NO
...*
*
...
YES
C2.
.................
SET AREA
I
I
'I
02
SET ADDRtSS
WHERE CaNST
.15 TO BE LOADED
FROM NEXT WORD
ON ROLL
.................
I
I
E2
MOVE INFO
TO OUTPUT
AREA AND PUNCH
.............
I
I
I
F2
SET
UP RLD ROLL
ENTRY
.................
I
I
..
V
122
B2
1:13
.............. .
~FTURN
Chart FJ.
GO~6~
"
: 2 :
OROER A N D "
PUNCH RL.D
,,-
" """" ..
ORT
--->"" SRL.D
CARDS
.................
"ROL.L.
"
"
'" 1603
.-e
"
"
"
t:S5
.*
...
C2
ON
'
..
.*
".MORE
v
.".
".
*.
*. a. ROLL
._ .-
NO
a *
." .".
"
".
ESO
NO
'"
NO
.....
YES
L>:
PUNCH
RE"'AINING
DATA
E3.. .."
V
''',
*.TOa. PREVIOUS
.* .
....
85
E4 :
""
"PL.ACE PHEvlOvs
VAL.UE IN CARC
"'A"'KEO FOR NO
CONTINUATION
* AN6 UPDATl
e.
D!.
.................
'41 t>04
YES
E2
II
I
!< ____J
OJ
."------->
*.
DATA ON
C~
................
02
NO
"
..
"
"
'-->"
YES
:~:: .. .. C::~
. ' '---',
'
SET
L.AST L.OAO
ADDRESS FRO'"
" R L D GROUP
*.
"
C:l
"
..
:..... !::~~
..... .
I
'4160 I
"
"
"
"
"
5S "
I
I
B2
....
....
""
82
-->"
,41615
PuNCH "LO
ROLL
"
L.IKE
ESD NUMBERS TOGETI1ER.
AOR. CONST ANO
TE"'P AND CONST ROL.LS
ARE USED AS TEMP
STORAGE
"
"
ON
.*
..
E"
," ,
r-)* .ROOM ON
RETURN
*...
f
I
E4
CA~O
....
YE..S
*--,
NO
I
I
1*
1*
1*
ti2
"
I "......
I
II
I
1< _ _ _
I
I
I
I
I
I
I
**
G,,
"PL.ACE PR[VIOUS
* YAL.UE IN CAkD ..
"
"'A~KEC. FOR
"
"CONTINUATION
"
"
AND UPDATE
"
.................
....
SAVE
N[W
II
I
I
.. GS
V
"
..
C2
"..
*
section 2:
[SO
NO.
..
NO
.....
FS
..
Ii
.*
' '
PUNC,", AN RLO
CARD
41602
l5
.* ROOM ' .
.-FOR HE. 1:.5D'.
r-*. NO. ON CARD
YES
I I
.F..
..
..
....
..
" "
"..
"
..
...."
.
""
C2
"
Compiler Operation
123
chart FR.
"'2
PUNCH
END CARD
...............
I
1/
.-
82
-.................I
II
I
I
1/
r2
02
...............
RfTURN
124
Chart FL.
ft. A~t~:~:
......
NAMELisT MPY
OAT"
.ft . . . . . . . . . . . . . .
..
...
..
B2
.. .
0'" TAo
ON
..
...
NO"
....ft
.... ...
.. . B3
TXT
CA~O
I
V
C4.
...................
INCREASE
TEMPORARY
.STORAGE POINTER*
.CALCULATE NEXT.
ADDRESS IN
TEMPORARY
STORAGE AREA
.->
02
02
,056401
1/
MOVE
OF
..
FRO'"
~AMELJ';T
D2
...
DATA
..
:~~';. ft . . . . . .
E2
...
.. . ..
0.
ANYTHING
...
MOVED
ft.
"
LOCATION.
PO INTER
[tI4PY
ft.
THE
.............
I
C2.
.................
...... I
.. ..
...
YES
PUNCH
..
B4
RETURN
..
84
... ...
..
...
NO
ft _ _ _
...
..
>*
E 3..
RETURN
..
YE. S
.
....................
ftf- I
ft . . . . . .
*,,,,,TTAl!lf TXT
CARD TO LOAD
..
LI1CltrlON
INOI' ATfO
..
ww_ .. t-:',c
Sf T
uP RLD ENTRY
FOR WORD IN
"
"
*NAMf:L I ST
"
.....
~,
TABLE
.... ft . . . . . . . . .
"
"
.
..
ft.
H2
...."
"
"MOVE MUL1IPl.ILR"
TO TEMP AND
CONST ROLl
I
I
..... ...;2,."
v
..
~nvf
~OIN:l~
..
( &.H '..
TO
Tx.T
I M.AG[
..
..
.. " . . . . . . . . . . . . . . . . . . ft
..
"
A:4
"
Section 2:
Compiler Operation
125
APPENDIX A:
This appendix deals with the POP language, the language in which the FORTRAN IV
(G) compiler is written. The parts of the
appendix describe this language in the
following way!
The mnemonic codes for the POP instructions are of the form IEYxxx.
In the
following discussion, the characters lEY
are omitted from the mnemonics in t.he
interest of ease of reading, and only the
xxx portion of the code appears
The
ficst
part describes the POP
instructions, which are grouped according to their functions.
TRANSMISSIVE INSTRUCTIONS
The second part describes the labels
used in the routines of the compiler.
The third part discusses the assembly
and operation of the compiler, as it is
affected by th~ use of the POP language.
This part ends with a crossreference list giving the mnemonic for
each instruction, the hexadecimal code
which represents it, and the instruction group in which it is described.
POP INSTRUCTIONS
ARK G:
For the purpose of describing their
operation, the POP instructions have been
divided into groups according to the primary function which they perform. Where a
particular POP instruction pertains to more
than one group,
it is described in the
group which discusses its most important
functions.
2.
3.
ASK G:
ASP G:
Wn
(n=1,2,3, )
refers
to
the
BOTTOM, BOTTOM-1, etc., words on
the WORK roll.
BOP G:
Build on Polish
The control driver G is built on
the POLISH roll, where the G field
of the instruction is the lower
eight bits of the ADDRESS portion
Appendix A:
127
BOTTOM
of
the
increased by four.
CAR G:
ECW G:
EOP G:
ETA G:
copy Plex On
plex pointed to by the pointer
G
is the number of the target roll,
except for the first word of the
plex (which holds the number of
words in the plpx, exclusive of
itself).
The BOTTOM of the WORK
roll is reduced by four, thus pruning the pointer.
The BOTTOM of
roll G is increased by four for
each word moved; the BOTTOM of the
original roll is unchanged.
FET G:
FLP G:
FRK G:
Fetch
Flip
FRP G:
Extract Address
The ADDRESS portion of (G) --> WO,
where G is a storage address; the
128
Extract Tag
FTH G:
EAD G:
Extract Operator
The
CRP G:
count
is
roll
CLA G:
EAW G:
WORK
error.
The count of errors of the
severity associated with the message 1S increased by one, and the
MAX STA ERROR NUMBER is updated as
required.
If (ANSWER BOX) = false,
the instruction does nothing.
Insert Address
The ADDRESS portion of (G) --> the
ADDRESS portion of the pointer in
WO, where G is a storage address;
the BOTTOM of the WORK roll is
unchanged.
lOP G:
LGP G:
Insert Operator
of
the
G --> OPERATOR
portion
pointer in WO, where the G field of
the
instruction is the desired
OPERATOR value: the BOTTOM of the
WORK roll is unchanged.
ITA G:
Insert Tag
TAG portion of (G) --> TAG portion
of the pointer in WO, where G is a
storage address; the BOTTOM of the
WORK roll is unchanged.
ITM G:
LSS G:
MOC G:
MON G:
Move on
(WO) --> roll G, where G is the
roll number; the BOTTOM of roll G
is increased by four; the BOTTOM of
the WORK roll is decreased by four.
Move on Code
G halfwords, where G is an even
number, are to be moved from the
WORK roll to the CODE roll.
A word
containing a special value in the
first two bytes and the number of
words transferred in the last two
bytes are first placed on the CODE
roll. G/2 words of information are
then moved from the WORK roll to
the CODE roll; the BOTTOM of the
CODE roll is increased by four for
each word placed on the LU~~;
the
BOTTOM of the WORK roll is reduced
by four for each word moved from
the roll.
A location counter is
increased by the number of bytes of
object code placed on the roll.
LeE G:
NOZ G:
Nonzero
A nonzero value --> G, where G is a
storage address.
Appendix A:
129
PGO G:
ZER G: Zero
Place Group On
A group from SYMBOL 1, 2, and 3 and
DATA 0, 1, 2, 3, 4, and 5 --> roll
G, where G is the roll number, by
group status; the BOTTOM of roll G
is increased by group size.
PGP G:
PLD G:
o --> G,
address.
ADD G:
2,
Add
DIM G:
DIV G:
Divide
(WO) / (G) --> G, where G is a
storage address; the remainder, if
any, from the division is lost; a
true answer is returned if there is
no remainder; the BOTTOM of the
WORK roll is unchanged; hence,
the
initial
contents
of
Wo
are
destroyed.
lOR G:
Inclusive Or
The inclusive OR of (WO) and (G),
where G is a storage location, 1S
formed, and the result is placed in
WOe
The BOTTOM of the WORK roll is
unchanged; hence, the initial contents of Wo are destroyed.
Interchanges
(WO) and (G), where G
is a storage address; the BOTTOM of
the WORK roll is unchanged.
Diminish
(G) - 1 --> G, where G is a storage
address.
Precision Store
Switch
And
(G) AND (WO) --> WO;
that is, a
logical product is formed between
(G) and (WO), and the result is
placed in WOe
The BOTTOM of the
WORK roll is unchanged; hence, the
initial
contents
of
Wo
are
destroyed.
Place on Code
The data located at storage address
G+4 and following is to be moved to
the CODE roll. The number of halfwords to be moved is stored in
location G and is an even number.
A word contairiing a special value
in the first two bytes and the
number of words of data in the last
two bytes--rs- first placed on the
ceDE roll. The indicated data is
then moved to the CODE roll, and
the BOTTOM of the CODE roll is
increased by four for each word
placed on the roll.
A location
counter is increased by the number
of bytes of object code placed on
the roll.
130
storage
AND G:
SWT G:
PST G:
is
AFS G:
POC G:
Precision Load
(G and G+4) --> MPAC 1 and MPAC
where G is a storage address.
PNG G:
where
LLS G:
LRS G:
MOA G:
QSA G:
G:
Subtract
(WO) - (G) --> WO, where G is a
storage address; the BOTTOM of the
WORK roll is unchanged; hence, the
initial
contents
of
WO
are
destroyed.
TLY G:
SAD G:
SBP G:
These instructions inspect certain conditions and return either a true or false
answer in the ANSWER BOX.
Some of the
instructions also transmit stored information from place to place.
Character Scan with Answer
If G = (CRRNT CHAR), the scan arrow
is advanced and a true answer is
returned; otherwise, the scan arrow
is not advanced and a false answer
is returned.
LGA G:
CSA G:
Set on Address
If G
ADDRESS portion of the
pOinter in WO, return a true answer; otherwise, return
a
false
answer.
Tally
(G) + 1 --> G, where G is a storage
address.
PrQ~e
Multiply
(G) * (WO) --> WO,
where G is a
storage address; the BOTTOM of the
WORK roll is unchanged; hence, the
initial
contents
of
WO
are
destroyed.
PSP G:
SBS G:
Search by Stats
If the roll, whose number multiplied by four is in storage at
location G, is empty, return a
Appendix A:
131
false answer.
Otherwise, search
that roll against the central items
SYMBOL 1, 2, and 3 and DATA 0, 1,
2,
3, 4, and 5, as defined by the
group stats values stored at locations G+4 and G+8 (these values are
in the same order as those in the
group stats tables); if a match is
found,
place a pointer to the
matching group in WO, increase the
BOTTOM of the WORK roll, and return
a true answer; if no match is
found, return a false answer. This
instruction is used to search a
roll
according
to group stats
values other than those normally
used for that roll.
SCE G:
SNZ G:
SOP G:
SPM G:
SRD G:
132
SLE G:
Set on Operator
If G = OPERATOR portion of the
pointer in WO, return a true answer:
otherwise,
return a false
answer.
SRA G:
SFP G:
Set if Nonzero
If (G)
0, where G is a storage
address, return a true
answer;
otherwise, return a false answer.
SCK G:
SNE G:
Set on Tag
If the TAG portion of (G) = the TAG
portion of the pointer in WO, where
G is a storage address, return a
true answer; otherwise, return a
false answer.
STM G:
JRD G:
This instruction
manipulates
a
pointer in WOe
If the ADDRESS
field of that pointer is equal to 0
(pointing to the word preceding the
beginning of a reserved area),
the
ADDRESS field is increased to four.
If the ADDRESS field of the pointer
is equal to any legitimate value
within the roll, it is increased by
group size. If the ADDRESS field
of the pointer indicates a location
beyond the BOTTOM of the roll, the
pointer is pruned (tne H(JIWl'OM of
the WORK roll is reduced by four),
and a jump is made to the location
G, which must be a global address.
JUMP INSTRUCTIONS
The following instructions cause the
normal sequential operation of the POP
instructions to be altered, either unconditionally or conditionally.
See the sec-
Operation~
of
JAF G:
JON G:
Jump Unconditional
Jump to G, which is either a global
or a local address.
One of two
operation codes is produced for
this
instruction,
depending on
whether G is a global or a local
label.
QSF G:
JOW G:
Jump to Subroutine
Return information is placed on the
EXIT roll; jump to G, which is a
global address.
If (ANSWER BOX)
false, jump to G,
where G is either a global or a
local address; otherwise, continue
in sequence. One of two operation
codes is produced for this instruction depending on whether G is a
global or local label.
JAT G:
XIT
Exit
Exit from the interpreter: the code
which
follows
is
written
in
assembler language.
133
POW G:
BIM G:
REL G:
Release
Restore roll G, where G is the roll
number, to the condition preceding
the last reserve; this sets BOTTOM
to (TOP) reduced by four if the
roll is reserved, or to (BASE) if
the roll is not reserved; TOP is
set to the value it had before the
reserve.
RSV G:
Reserve
Reserve roll G, where G is the roll
number, by storing (TOP)
(BASE)
on the roll, increasing BOTTOM by
four, and setting TOP to (BOTTOM);
this protects the area between BASE
and
TOP,
and allows ascending
addresses from TOP to be used as a
new, empty roll.
134
BIN G:
Build Instruction
The instruction indicated by G,
where G is an instruction number
which indicates the exact instruction to be built, is ~onstructed on
the CODE roll. The WORK roll holds
from zero to three words of information required for producing the
instruction.
For
instructions
requiring no
operands,
nothing
appears on the WORK roll.
For
instructions requiring one operand,
a pointer to that operand appears
in WOe
For two operand instructions, a pointer to the
first
operand appears ln WO and a pointer
to the second operand is in Wi.
For input/output instructions, Wi
holds a constant whic~ becomes part
of the instruction. For storageto-storage move instructions, W2
holds the length.
The BOTTOM of
the CODE roll is increased by eight
to reflect the addition of the
group. The BOTTOM of the WORK roll
is reduced by four for each word of
information found on that roll;
thus, all
the
information
is
pruned.
A location counter is
increased by one for each byte of
the instruction.
WOP G:
WO pop
LABELS
G,
where
G is
a POP instruction
storage
W1 POP
compute the address of the current
Wl and jump to the POP indicated by
G, where G is a POP instruction
which normally accepts a storage
address in its G field.
GLOBAL LABELS
W2P G:
W2 POP
compute the address of the current
W2 and jump to the POP indicated by
G,
where G is a POP instruction
which normally accepts a storage
address in its G field.
W3P G:
W3 POP
compute the address of the current
W3 and jump to the POP indicated by
G, where G is a POP instruction
which normally accepts a storage
address in its G field.
W4P G:
W4 POP
compute the address of the current
W4 and jump to the POP indicated by
G, where G is a POP instruction
which normally accepts a storage
Example:
G0336
STA GEN FINISH
G0336 IEYMOA G0494 MOA DO LOOPS OPEN ROLL
INDIRECT ADDRESSING INSTRUCTION
Indirect addressing is provided for POP
instructions whose address fields normally
require storage addresses by means of the
following instruction.
IND G:
Indirect
The address
contained
in
the
storage address INDIRECT BOX is
transmitted to the POP indicated by
G, where G is a POP instruction
which requires a storage address in
its G field, and a jump is made to
that POP. The POP WG W operates in
its normal fashion, using the transmitted address.
135
Example:
ACT EST
AC TEST
ACTEST
TESTAC
LOCAL LABELS
G0268
G0268
PROCESS SCALAR ROLL
IEYSRO G0432 SRO SCALAR ROLL
POP INTERPRETER
The assembled POP code is interpreted by
a short machine language routine,
POP
SETUP, which appears with the POP subroutines at the beginning of the compiler.
POP SETUP inspects each pair of address
constants in sequence, and, using the 8-bit
operation code as an index into the POP
jump table, a table which correlates operation codes for the POPs with the addresses
of the POP subroutines, transfers control
to the appropriate POP subroutine.
Thus, on encountering the hexadecimal
value 081A, POP SETUP indexes into the POP
jump table (labeled POPTABLE) at the eighth
byte, counting from zero.
The value found
at this location is 0158 (hexadecimal);
this is the address, relative to the bdse
of the POP jump table, of the POP subroutine for the POP numbered 08
(IEYSUB).
When this value is added to the beginning
address of the POP jump table, the absolute
address of IEYSUB is produced, and POP
SETUP performs a branch to that location.
IEYSUB then operates, using the relative
address lA (which it finds in general
register 7, AOOR), and returns via POPXIT,
register 6; in this case the return is to
POP SETUP, which then continues with the
next POP in sequence. The register POPADR
is used to keep track of the location of
the POP being executed.
This sequential operation can be interrupted by means of POP jump
(branch)
instructions, which cause an instruction
other than the next in sequence to be
operated next.
The XIT POP im:;t-,...,,.,t-ioJ"
G0075J i
SAO i
.--------~
G0111J I
752 I
.--------~
G0192J I
B02 I
r--------,
.--------~
I
I
I
accomplish the
instruction
function
of
the
POP
I
I
I
IEYFET ONE
but bypass the operation of POP SETUP. The
IEYFET routine,
(referred to by its label
FETQ) returns, via POPXIT, to the next
instruction.
Note that the first instruction of the pair sets ADDR to the correct
value for the operand of the IEYFET operation; this would be done by POP SETUP if it
interpreted IEYFET ONE.
POPADR, POPPGB
A,B
in some routines.
References in POP global jump instructions
to
the
global jump table are
assembled as relative word addresses in
that table.
Each entry in the table contains the address, relative in bytes to
CBASE, of the label whose spelling is
identical to that of the global jump table
entry except that it does not include the
terminal J.
A,O
or
BALR
POPADR, 0
Appendix A:
137
I LOCAL
JUMP INSTRUCTIONS
POP
local
jump
instructions,
jump
instructions which transfer control out of
the normal sequence to local labels~ must
occur in the same global area as the one in
which the local label referred to
is
defined.
The address portions of POP local jump
instructions are assembled to contain the
distance in halfwords from the beginning of
the global area plus two to the indicated
local label.
This value is a relative
halfword address for the target, where the
base used is the location of the first POP
instruction in the global area.
Decimal
Location Label
100
G0245
102
120
140
138
Explanation:
The local jump instruction
illustrated at location 140 is assembled so
that its address field contains the location of the label #024503 (120), relative
in half words to the beginning location of
the global area plus two (102). Thus, the
address field of the IEYJUN instruction
contains the value 09.
Symbolic
Instruction
BALR
A,B
IEYCLA G0566
IEYJUN *024503
Hexadecimal
Instruction
062A
9A12
5809
in
Table
8.
r-------------------------------------------T-------------------------------------------,
~e~Qni
Hex
Instruction Group
I Mnemgnic
Hex
Instruction Greup
I
ADD
AFS
AND
APR
ARK
ARP
ASK
ASP
BID
BIM
BIN
BOP
CAR
CLA
CNT
CPO
CRP
CSA
CSF
DIM
DIV
EAD
EAW
ECW
EOP
ETA
FET
FLP
FRK
FRP
FTH
lAD
lNO
lOP
lOR
ITA
ITM
JAF
04
BC
B4
A4
86
OE
12
14
7E
7C
7A
60
1A
06
Arithmetic/Logical
Arithmetic/Logical
Arithmetic/Logical
Transmissive
Transmissive
Transmissive
Transmissive
Transmissive
Code Producing
Code Producing
Code Producing
Transmissive
Transmissive
Transmissive
1C
Transmissive
B2
Transmissive
62
Transmissive
24
Decision Making
26
Jump
8E
Arithmetic/Logical
B8
Arithmetic/Logical
2E
Transmissive
18
Transmissive
18
Transmissive
30
Transmissive
32
Transmissive
34
Transmissive
46
Transmissive
84
Transmissive
10
Transmissive
AE
Transmissive
36
Transmissive
02
Indirect Addressing
38
Transmissive
8A
Arithmetic/Logical
3A
Transmissive
AO
Transmissive
4A
Jump (global)
56
Jump (local)
JAT
48
Jump (global)
54
Jump (local)
JOW
4E
Jump (global)
SA
Jump (local)
JPE
52
Jump
JRD
82
Jump
JSB
50
Jump
JUN
4C
Jump (global)
58
Jump (local)
LCE
00
Transmissive
LCF
AA
Transmissive
Il ___________________________________________
LCT
A8
Transmissive
LGA
LGP
LLS
LRS
LSS
MOA
MOC
MON
MPY
NOG
NOZ
PGO
PGP
PLD
PNG
POC
POW
PSP
PST
QSA
QSF
REL
RSV
SAD
SBP
SBS
SCE
SCK
SFP
SLE
SNE
SNZ
SOP
SPM
SPT
SRA
SRD
STA
STM
SUB
SWT
TLY
WOP
W1P
W2P
W3P
W4P
XIT
ZER
~
9A
80
98
B6
BO
SC
9E
SE
OA
1E
3E
22
9C
90
20
94
16
92
8C
2A
2C
64
66
6A
BA
96
28
6E
A6
70
74
72
6C
A2
AC
76
78
68
3C
08
OC
42
C8
CA
CC
CE
DO
44
40
I
!
I
I
Decision Making
Transmissive
Arithmetic/Logical
Arithmetic/Logical
Transmissive
Decision Making
Transmissive
Transmissive
Arithmetic/Logical
Transmissive
Transmissive
Transmissive
Transmissive
Transmissive
Transmissive
Transmissive
Roll Control
Arithmetic/Logical
Transmissive
Decision Making
Jump
Roll Control
Roll Control
Decision Making
Decision Making
Decision Making
Decision Making
Decision Making
Decision Making
Decision Making
Decision Making
Decision Making
Decision Making
Decision Making
Decision Making
Decision Making
Decision Making
Decision Making
Decision Making
Arithmetic/Logical
Transmissive
Arithmetic/Logical
Address Computation
Address computation
Address computation
Address computation
Address computation
Jump
Transmissive
_________________________________________ _
Appendix A:
139
APPENDIX B:
ROLL
The rolls are ordered in this .appendix
as they are in storage, by roll number. In
some cases, a single, number is assigned to
several rolls.
In these cases, the rolls
with identical
numbers
are
presented
chronologically, and the overlay of one
roll on another indicates that the previous
roll is no longer required when the new
roll is used. The group stats values for
rolls with the same number are always
identical.
The roll number is the entry number in
the roll statistics tables for the appropriate set of statistics; that is, the roll
number multiplied by four is the relative
address of the correct entry in the group
stats, BASE, BOTTOM, and TOP tables.
1:
SOURCE ROLL
therefore
4 bytes
ROLL
0:
r---------T-~--------T----------T--------,
LIB ROLL
is
4 bytes
r-----------------------------------------,
I<--------------subprogram--------------- I
r-------------------T---------T---------~
I-------name-------->I
TAG
I
0
I
l----------T----------t----------i---------~
TAG
lI _________
I __________
flag
I ____________________
no. arguments
JI
I
bib
I
bib
I
~---------i----------i----------t---------~
I
bib
I
A
I
(
I
~---------i----------i----------t--------~
I
I)
~---------i----------i----------f---------~
~---------f----------f----------t---------~
I,
I
J
I
)
I
*
I
~---------i----------i----------f---------~
~---------f----------t----------t---------~
I)
~---------t----------f----------f---------~
~---------f----------i----------f---------~
I
bib
I
bib
I
~---------i----------i---------.-i---------~
I
I
I
I
I
I
~---------T----------T----------T---------~
i _b
_________ iI_ _________
________ JI
IL_________
bi
b ii _
b
ROLL
2:
This roll holds a pointer to the induction variable (the DO variable) used in
each DO loop.
The pointer specifies the
appropriate group on the SCALAR roll. Each
pointer is placed on the roll by Parse as
the DO loop is encountered in the source
module.
When the loop is closed, the
pointer is deleted.
The roll is not used in subsequent
phases of the compiler. The group size for
the IND VAR roll is four bytes.
ROLL
2:
of
the
4 bytes
r--------T--------------------------------,
Itraits I
frequency
I
~-------~--------------------------------~
~-----------------------------------------~
~-----------------------------------------~
I offset
ROLL
3:
r--------T--------------------------------l
I traits I
frequency
I
~--------~-----------------~-------------~
lpointer to ARRAY REF roll
I
~---------------------------------------i
lpointer to the ARRAY roll
I
~-----------------------------------------~
loffset
I
~------------.-----------------------------~
I
I
I
I
I
I
~-----------------------------------------~
linduction
variable coefficient
L- ________ _______________________________
JI
~
~-----------------------------------------~
linduction variable coefficient
I
I
I
I
t-----------------------------------------iI
I
~-----------------------------------------~
L
J
I _________________________________________
induction variable coefficient
ROLL
4:
POLISH ROLL
141
ROLL
4:
LOOP
SC~IPT
ROLL
4 bytes
r-----------------------------------------,
,
n
,
~-----------------------------------------~
,c
,c
'c
~----------7---------T---------T----------~
1
C3
~----------~--------~--------i----------~
I
I
,
,
I
I
~----------T---------T---------T----------~
'c'
L__________
________
________
__________ J
4 bytes
r--------7--------------------------------,
Itraits ,
frequency
,
~--------~--------------------------------~
~-----------------------------------------~
~----------------------------------------~
,offset
~-----------------------------------------~
~----------------------~------------------~
,,I
ROLL
7:
,,,
~-----------------------------------------~
variable coefficient
llinduction
_________________________________________
J,
All items are the same as described for the
NEST SCRIPT roll (roll 3).
The LOOP SCRIPT roll exists only in
Unify. It is used by this phase to further
separate subscripts into two ca~egories:
standard, those which must appear 1n general registers at the time of reference, and
nonstandard.
,<--------------subprogram----------------,
~--------------------T----------T---------~
L
I-------name-------->I
____________________
ROLL
5:
_________
TAG
i I _________
0
J,
4 bytes
r--------------------T--------------------,
I
ESO number
I
displacement
I
~--------------------~--------------------~
Il _________________________________________
base table pointer
Ji
ROLL 10:
This
OP CONST ROLL
roll
\tl-by~el
In Exit, the roll is used in the production of RLD cards, but is not altered.
ROLL
8:
FX CONST ROLL
ROLL
9:
FL CONST ROLL
holds
the
constan~~
double-precision
ROLL 11:
In Gen, the GLOBAL SPROG roll is used in
the construction of object code, but it is
not altered.
real
ROLL 12:
gOLL 13:
143
4 bytes
r-----------------------------------------,
I<-----------------name-------------------I
~-------------------T----------T---------~
L ____________________ __________
JI
1------------------->1
TAG
I_________
0
~
ROLL 15:
The TAG appearing in the seventh byte of
the group indicates, in the format of the
. TAG field of a pointer, the mode and size
of the variable.
The TEMP NAME roll is used only during
Parse and Allocate: it does not appear in
any later phase of the compiler.
ROLL 13:
ROLL 14:
r-----------------------------------------,I
I pointer to n3 (increment) "
~-----------------------------------------~
I pointer to
n~ (terminal value)
I
~-----------------------------------------~
I LOOP DATA pointer
I
~----------------------------------------~
L
I _________________________________________
pointer to return point made label
JI
TEMP ROLL
ROLL 16:
ROLL 15:
ROLL 17:
ROLL 18:
ROLL 19:
3 bytes
r--------T--------------------------------,
ITAG
ILABEL roll pointer
I
This roll is used only in Exit,
and is
not used in previous phases of the compiler.
It holds address constants, the locations at which they are to be stored, and
relocation information.
The group size is
16 bytes.
The first word of the group
holds an area code, indicating the control
section in which the constant exists. The
second word of the group holds the address
into which the constant is to be placed;
the'
constant.
The
last
l ________
________________________________ J
~OLL
19:
ROLL
This roll is used to hold EQUIVALENCE
roll data temporarily in Allocate, and is
not used in any other
phase
of
the
compiler.
The group
size
for
the
EQUIVALENCE TEMP or EQUIV TEMP roll is
t\olelve bytes.
The format of the group on
the roll is:
4 bytes
r-----------------------------------------,
I<------------variable name---------------J
~--------------------T--------------------~
l ____________________ L ____________________
1------------------->1
0
J
J
r-----------------------------------------,
J<---------------variable-----------------I
~--------------------T------------------~-~
,-------name--------> I
0
I
.--------------------~--------------------1
1
offset
l _________________________________________
JI
The offset is the relative address of the
beginning
of
the variable within the
EQUIVALENCE group (set)
of which it is a
member. This roll holds this information
during
the
allocation of
storage for
EQUIVALENCE variables.
Appendix B:
145
3 bytes
r--------T--------------------------------,
I TAG
ILABEL roll pointer
I
L ________ ~ ________________________________ J
XOO'.
" bytes
,-----------T-----------------------------,
I traits
I
frequency
I
~-----------~-----------------------------~
ARRAY REF pointer
I
L ________________________________________
JI
t.-----------------------------------------~
LOOP CONTROL pointer
ROLL 21:
I<---------------variable-----------------I
.------------------T--------------------1
I-------name-------->I
0
I
.--------------------~--------------------1
JI
1L _________________________________________
offset
ROLL 22:
ROLL 20:
REG ROLL
roll
is
con-
ARRAY ROLL
This roll is used throughout the compiler to hold the required information describing
arrays defined in the source
module.
In Parse, the name and dimension information is added to the roll for each array
definition encountered. The group size for
the ARRAY roll is 20 bytes. The format of
the group is:
4 bytes
r-----------------------------------------,
name----------------l
I<------------~-array
t-------------------T----------T----------~
1------------------>1 TAG
1
0
I
t------------------~----------~----------i
I
ARRAY DIMENSION pointer
I
~-----------------------------------------~
1
numbE~ of elements
I
.. ------------- ----------------------------~
..
!l _________________________________________
array offset
J!
r---------T----------T--------------------,
I
ID~G/CEAD
TAG
displacement
~---------L----------L--------------------~
Il _________________________________________
base table pointer
JI
~ppendix
B:
146.1
roll is constructed by Gen and holds pointers to the arguments to subprograms in the
order in which they are presented in the
subprogram reference. These pointers may,
therefore, point to the SCALAR, ARRAY,
GLOBAL SPROG, or TEMP AND CONST rolls (the
last roll
holds arguments
which are
expressions or constants).
The value zero
is placed on this roll for arguments whose
addresses are computed and stored in the
object module argument list area.
The TAG fields of the pointers on this
roll contain the value zero except for the
TAG field of the last p01nter for a single
subproqram reference: this field contain~
the-vaiue 80.
The contents of the SPROG ARG roll are
punched by Exit. The group size for the
SPROG ARG roll is four bytes.
The third,
fourth,
and fifth words of
the ARRAY roll group are not modified by
Allocate.
ROLL 24:
The
ARRAY
roll remains in storage
throughout the compiler, and it is consuIted,
but not modified,
by the phases
following Allocate.
ROLL 23:
4 bytes
r-----------------------------------------,
I<--------------ENTRY name----------------I
~--------------------T--------------------~
0
1
1------------------->1
~--------------------i--------------------~
dWTY pointer
i
~----------------------------------------~
I
0
L--_______________________________________
J1
4 bytes
r------------------------------------------,
I
ARRAY pointer
I
~----------------------------------------~
lI _________________________________________
J1
ENTRY NAMES pointer
In Gen,
the DMY DIMENSION roll is used
in the generation of temporary locations
for the dummy dimensions. This operation
is performed when code is being produced
for the prologue with which the dummy
dimension is associated.
The DMY DIMENSION roll is not
later phases of the compiler.
ROLL 23:
used
by
This roll becomes the subprogram argument list area of the object module.
The
147
which indicates
ENTRY.
the
entry
Gen
ROLL 26:
ROLL 25:
unmodi-
ERROR ROLL
In Parse, each group on the roll contains the name of a dummy listed in a dummy
argument list for the principle entry or
for an ENTRY statement in a source subprogram. A flag also appears in each group
which indicates whether the dummy is a
wcall by name w or a call by value w dummy.
The group size is eight bytes. The format
of the group in Parse is:
4 bytes
r-----------------------------------------,
I<--------------dummy name----------------I
~--------------------T--------------------~
l ____________________ ____________________
J1
1------------------->1
flag
~
ROLL 27:
in
each
LOCAL DMY ROLL
4 bytes
r---------T----------T--------------------,
1 TAG
1 DBG/flag 1
displacement
1
~--------~----------~--------------------~
1
base table pointer
l _________________________________________
J1
r-----------------------------------------,
I<--------------dummy name----------------I
~--------------------T--------------------~
1------------------->1
L--__________________
0
___________________
J
ROLL 28:
a group.
Pointers are added to the roll
when the labels are found as arguments in
CALL statements.
The group size for the
CALL LBL is eight bytes.
ROLL 30:
4 bytes
r-----------------------------------------,
1<------------stmt. function--------------I
~------------------T----------T----------~
I-------name------->1
TAG
0
l ___________________ __________
L1__________
J1
~
The
ROLL 31:
In Parse,
this roll holds the NAMELIST
names defined in the NAMELIST statement by
the source module.
The group size for the
NAMELIST NAMES roll is twelve bytes. These
groups are placed on the roll in the
following format:
ROLL 29:
EXPLICIT ROLL
4 bytes
r-----------------------------------------,
I<------------variable name---------------I
~-------------------T----------T----------~
1------------------>1
l ___________________ __________
TAG
LI __________
0
JI
~
ROLL 30:
4 bytes
r-----------------------------------------,
I<---------------NAMELIST-----------------I
~--------------------T--------------------~
I-------name-------->I
~--------------------~-------------------~
Il _________
pointer
to NAMELIST items
'________________________________
J1
where the pointer indicates the first variable in the list associated with the NAMELIST name.
In Allocate, the content of the
group on the NAMELIST NAMES roll is changed
to reflect the placement of the corresponding NAMELIST table in the object module.
The format of the first two words of the
modified group is:
4 bytes
r--------------------T--------------------,
I
0
1
displacement
I
~--------------------~-------------------~
IL-________________________________________
base table pointer
, JI
where the base table pointer indicates the
group on the BASE TABLE roll to be used for
references to the NAMELIST table, and the
displacement (bytes 3 and 4) indicates the
distance in bytes from the address in that
BASE TABLE roll group to the location of
the beginning of the NAMELIST table.
This roll is used, but not modified, in
Gen and Exi t.
Appendix B:
149
ROLL 32:
4 bytes
r-----------------------------------------,
I<---------------variable-----------------I
~--------------------T--------------------~
I-------name-------->
0
L____________________ I ____________________
JI
ROLL 34:
ROLL 33:
the
format by
does not
r-----------------------------------------,
I
area code
I
~-----------------------------------------~
IL_________________________________________
relative address
JI
4 bytes
r-----------------------------------------,
n
I
~-----------------------------------------~
dimension
~---------------------~-------------------~
multiplier
I
~-----------------------------------------~
I
dimension
I
~-----------------------------------------~
multiplier
I
~-----------------------------------------~
I
I
I
I
I
I
~-----------------------------------------~
I
dimension
I
~----------------------------------------~
IL_________________________________________
multiplier
JI
ROLL 35:
bytes
r-----------------------------------------,
I
element size (bytes)
I
~-----------------------------------------~
I
pointer to variable
i
~-----------------------------------------~
ROLL 36:
ROLL 37:
EQUIVALENCE ROLL
,
In Parse, this roll holds the names of
all
variables listed in source module
EQUIVALENCE statements . One group is used
for each variable name listed in the source
statement,
and
EQUIVALENCE
sets
are
separated from each other by a marker
symbol.
The group size for the EQUIVALENCE
roll is twelve bytes. The format of the
group is:
4 bytes
ROLL 36:
r-----------------------------------------,
I <---------------variable-----------------I
~--------------------T--------------------~
I---name------------>I
0
I
~-------------------~-------------------~
IL______________________________________
EQUIVALENCE OFFSET pointer
I
~~=J
FX AC ROLL
ROLL 37:
151
ROLL 39:
4 bytes
r-----------------------------------------,
I<-------------scalar name----------------I
~-------------------T----------T---------~
1------------------->1
TAG
,_________
0
l ____________________ __________
J,
~
ROLL 38:
and
4 bytes
r-----------------------------------------,
I<---------------FUNCTION-----------------I
~-------------------T----------T----------~
I-------name------->,
TAG
r-----------------------------------------,
I<------------variable name---------------I
~-------------------T---------------------~
l ___________________ _____________________
JI
1------------------>1
0
~
ROLL 39:
~---------T---------+----------L----------~
l'TAG
_________
1_________
flag
1_____________________
no. arguments
J1
r-----------------------------------------,
I<-------------scalar name----------------I
~-------------------T----------T----------~
TAG
I __________
0
_________
J1
1------------------>1
l ___________________
4 bytes
r---------T----------T--------------------,
1 TAG
1
0
1
displacement
1
~---------~----------~--------------------~
,l _________________________________________
base table pointer
JI
by
152
ROLL 40:
r-----------------------------------------,
I<--------------block name----------------I
~--------------------T--------------------~
1------------------->1
~--------------~-----~-------------------~
L_________________________________________
J1
1
COMMON DATA pointer
ROLL 40:
ROLL 41:
IMPLICIT
4 bytes
r-----------------------------------~-----1
I
I
I
1 byte
1 byte
1 byte
r----------T---------T---------T----------,
I letter
I
0
I TAG
I
0
I
~
_________
_________ L_ _________ J
by
FL AC ROLL
Allocate,
ROLL 43:
ROLL 42;
~----------------------------~----------i
L
JI
I _________________________________________
subscript n
RO~
L __________
I
II
ROLL 42:
1 byte
i~-----------------------------------------~
subscript 1
i
~-----------------------------------------~
I
subscript 2
I
~----------------------------------------~
LBL ROLL
153
ROLL 44:
modi-
occupy fewer than 16 characters are rightadjusted in the grou~ with leading zeros.
This roll
stants
used
statements.
Appendix B:
154.1
1 byte
3 bytes
r---------T-------------------------------,
I TAG
I
binary label
I
l ________
_______________________________ J
Label is defined
Label is undefined
TAG
byte
r-----------------------------------------,
I<-------------scalar name----------------I
~--------------------T----------T---------~
1------------------->1
TAG
I _________
0
l ____________________ __________
JI
~
This is the
statement.
r---------T----------T--------------------,
I
TAG
IDBG/CEAD I
displacement
1
4 bytes
= None
label of a FORMAT
~---------~----------~--------------------~
Jl _________________________________________
base table pointer
J
4 bytes
r-----------------------------------------,
ROLL 41:
I<---------~~~variahl~ name---~-----------I
~-------------~=:~::T-:~=~---------------~
1------------------->1
0
l ____________________ ____________________
J1
~
r-----------------------------------------,
1<-------------scalar' name----------------I
~--------------------T----------T---------~
1------------------->1
TAG
1
0
l ____________________ l-_________
l--_______
jI
where the TAG indicates the mode and size
of the variable. This information is held
on this roll only temporarily during the
assignment of storage for scalar variables.
ROLL 48:
ROLL 46:
r-----------------------------------------,
I<--------------block name----------------I
~--------------------T--------------------~
1------------------->1
0
1
~--------------------~-------------------~
1L ________________________________________
block size (bytes)
JI
ROLL 47:
r-----------------------------------------,
I<--------------variable------------------I
~-------------------T--------------------i
0
lI-------name-------->1
____________________ ____________________
J1
~
r-----------------------------------------,
I<------------variable name---------------I
~-------------------T--------------------i
1------------------->1
0
1
~--------------------~-------------------~
1l _________________________________________
pointer
J1
where the pointer indicates the
group
defining the variable on either the SCALAR
or ARRAY roll.
Appendix B:
155
ROLL 49:
4 bytes
r------------------------------T----------,
I
This roll is used only in Allocate,
where it holds the information from the
COMMON NAME roll temporarily.
The group
size for the COMMON NAME TEMP roll is
twelve bytes. The format of the group is
therefore identical to that of the COMMON
NAME roll:
4 bytes
r-----------------------------------------,
I<--------------block name----------------I
~--------------------T--------------------~
1------------------->1
0
I
~-------------------~--------------------~
COMMON DATA pointer
lI _________________________________________
J1
area code
ESD
~------------------------------~---------~
1l _________________________________________
address
JI
where the area code indicates the control
section in which the variable or constant
is contained. The ESD number gQverns the
modification of the location by the linkage
editor, and the address is the location
requiring modification.
Information is placed on this roll by
both Allocate and Exit, and the RLD cards
are written from the information by Exit.
The entries made on the RLD roll by Allocate concern the NAMELIST
tables;
all
remaining entries are made by Exit.
r-----------------------------------------,
I<---------------variable-----------------I
~-------------------T--------------------~
I-------name-------->I
displacement
I
~--------------------~--------------------~
1l _________________________________________
base table pointer
J1
r-----------------------------------------,
I<---------------variable-----------------I
~--------------------T--------------------~
I-------name-------->1
RLD ROLL
displacement
~-----------------.---~-------------------~
1L-________________________________________
base table pointer
J1
ROLL 52:
ROLL 51:
4 bytes
r-----------T- ---------------------------,
I traits
I
coefficient
1
t-----------~-----------------------------~
I register (t.ds loop)
i
t----------------------------------------~
Il _________________________________________
base or register (outer loop)
JI
where the first byte of the first word
(txaits) indic,1tes whether the coefficient
is initiated by a direct load.
The remaining three by~es is the coefficient, which
is the multipl~er for the induction variable.
The se~nd four bytes is the register where the ~oefficient is required.
The
basp i~ thp Ro~rce of initialization of the
register; it can be either a constant,
register, or all address.
which, taken together, indicate the beginning location of the FORMAT statement.
These groups are packed to the BASE of the
roll;
that is,
this information for the
first FORMAT dppears ln the first two words
on the roll, the information for the second
FORMAT appears in words 3 and 4, etc.
The LBL roll group which defines the
label of the FORMAT statement holds a
pointer to the displacement recorned for
the statement on this roll.
The FORMAT roll is retained in this form
for the remainder of the corepilation.
bytes
r-----------------------------------------l
I
size of the group
1
t-----------------------------------------~
I
pointer to the LBL roll
1
t-----------------------------------------~
I
number of bytes in the FORMAT
i
t-----------------------------------------~
I
I
I
I
lI _________________________________________ J1
Word 0 contains a value which indicates the
number of words in the group on tne roll.
The pointer to the LBL roll paints to the
label of the corresponding FORMAT statement.
'l'tJe next word gives the number of
bytes of storage occupied by this particular FOR~~T statement.
The ellipses denote
that the encoded FORMAT follows this control information.
DATA ROLL
r---------T-------------------------------,
TAG
nest level
.---------~-------------------------------~
r--------------------T--------------------,
0
,displacement
I
t-------------~------~--------------------~
Il __________________________________________
~
base table pointer
JI
157
4 bytes
r----------~------------------------------l
traits
frequency
.----------~--------~---------------------~
,
ARRAY REF pointer
I
.-----------------------------------------~
I
ARRAY pointer
I
.-----------------------------------------~
.-----------------------------------------~
I
I
1
I
I
I
.-----------------------------------------~
1
induction variable coefficient
I
Il _________________________________________
(nest level = n)
JI
See the NONSTD
description.
SCRIPT
roll
for further
4 bytes
r-----------------------------------------,
I
nest level
I
~-----------------------------------------~
SCALAR pointer
(in~uction
variable)
~-----------------------------------------~
~-----------------------------------------i
~-----------------------------------------~
1l _________________________________________
LOOP CONTROL pointer (end init.)
JI
4 bytes
r-----------~-----------------------------l
pointer to array
I
.-----------------------------------------~
J
painter to index
I
t-----------------------------------------~
IL_________________________________________
displacement
JI
'The pointer in the first word of the group
points to the ARRAY REF roll when the
,ubscript used contains DO dependent linear
subscripts (which are handled by Unify) and
non-linear
variables.
otherwise,
the
pointer refers to the ARRAY roll.
The second word of the group holds a
pointer to the index value to be used in
the subscripted array reference.
Thi~
pointer points to general register 9 on the
FX AC roll if the index value has been
loaded into that register; if the index
value has been stored in a temporary location, the pointer indicates the proper
location on the TEMP AND CaNST roll; if the
index value
is a fixed
constant, the
pointer indicates the proper group on the
FX CaNST roll.
When the information in
this word has been used to construct the
proper instruction for the array reference,
the word is cleared to zero.
1 1
1 2
1 1
5 6
1 2
9 0
3
1
r---------------T----T----T---------------l
lop code
IR1
IR~
offset
~---------------~---~---~--------------~
I
I
~-----------------------------------------~
I
I
~------------------------------~----------i
,ARRAY
pointer
l _________________________________________
JI
ROLL 51:
ROLL 58:
1 1
5 6
1 2
9 0
inforroa-
3
1
r---------------T----T----T---------------,
r--------------------T--------------------,
I
area code
I
displacement
I
r---------------~----~----~---------------~
Il _________________________________________
TEMP AND CONST pointer
JI
IR1
IR~
offset
TE~~ ~~~
r-----------------------------------------~
I
I
pointer to register
TEMP AND CONST roll
(R~)
or to the
~-------------------~-------------------i
I
,
t-----------------------------------------~
Il _________________________________________
pointer to the ARRAY roll
JI
ROLL 59:
AT ROLL
r-----------------------------------------,
Appendix B:
159
statement.
The second points to the made
label supplied by the compiler for the code
it has written to perform the debugging
operations.
The third label pointer indicates the made label supplied for the point
in the code to which the debug
code
returns; that is,
the code which follows
the branch to the debugging code.
ROLL 62:
ROLL 60:
r-----------------------------------------,
SUBCBK ROLL
I<---------------variable-----------------I
~-------------------T---------------------1
r-----------------------------------------,
I<------------variable name---------------I
~--------------------T--------------------~
l ____________________ ____________________
J1
1------------------->1
0
~
ROLL 60:
This roll is set up during the construction of the NAMELIST tables in Allocate.
In Exit, the roll is used to complete the
information in the NAMELIST tables. The
roll is not used in the other phases of the
compiler. The group size for the NAMELIST
MPY DATA roll is eight bytes. The format
of the group on this roll is:
I-------name------->1
displacement
~-------------------~--------------------1
1l _________________________________________
base table pointer
JI
where the base table pointer indicates the
group on the BASE TABLE ro~l which will be
used for references to the variable.
The displacement is the distance in
bytes from the location indicated in the
BASE TABLE roll group to the location of
the variable.
During the allocation of COMMON,
the
third word of each group holds a relative
address until all of a COMMON block has
been allocated, when the relative address
is replaced by the pointer as indicated
above.
During the allocation of EQUIVALENCE variables, relative addresses within
the EQUIVALENCE variables are used and then
replaced by pointers as for COMMON.
ROLL 62:
CODE
ROL~
This
roll
holds
the
object code
generated by the compiler, in binary. This
roll is first used in Gen, where the object
code for the entire source module is built
up on the roll.
4 bytes
r-----------------------------------------,
multiplier constant
1
~-----------------------------------------i
1
l _________________________________________
address
J1
The multiplier constant refers to an
array dimension for an array mentioned in a
NAMELIST list. The address is the location
in a NAMELIST table at which a pointer to
the multiplier constant must appear.
In
Exit, the constant is placed in the temporary storage and constant area of the
object module, and a TXT card is punched to
load its address into the location specified in the second word of the group.
160
WORK ROLL
The WORK roll is often used to hold
intermediate values.
The group size for
this roll is four bytes. The name Wo is
applied to the bottom of the WORK roll (the
last meaningful word), W1 refers to the
next-to-bottom group on the WORK roll, etc.
In the POP instructions these names are
used liberally. and must be interpreted
wi th care. Lo;'ding a value i.nto WO is
storage
into the next available word,
(WRKADR) + 4, lIDless specj fica lly otherwise
indicated, while storage from WO t:o anot.her
location involves access to the contents of
the last word on the roll,
(WRKADR).
WRKADR is normally incremented followinq a
load operation and decr~mented following a
store.
EXIT ROLL
ROLL 63:
This
roll is constructed in Parse,
remains untouched until Gen, and is destroyed in that phase.
The AFTER POLISH roll holds the Polish
notation produced by Parse. The Polish for
one statement is moved off of the POLISH
roll and added to this roll when it is
completed; thus, at the end of Parse, the
Polish
notation for the entire source
module is on this roll.
In Gen, the Polish notation is returned
the POLISH roll from the AFTER POLISH
ru~~ Iur the production of object code.
At
the conclusion of the Gen phase, the roll
is empty and is no longer required by the
compiler. The group size for this roll is
four bytes.
to
TMP,G0052J
BAL
G0052J
Rolls Used in the Compiler
161
162
APPENDIX C:
GENERAL FORM
The format of the
Polish
notation
depends on the statement type, but always
terminates with the control driver which
indicates the type of statement:
ARRAY REFERENCES
The Polish notation
for
an
array
reference whose subscripts are all linear
functions of DO variables~ con~ists simply
of a pointer to the appropriate group on
the ARRAY REF roll.
The Polish notation
generated for all other references to an
array element is:
4 bytes
r-----------------------------,
larray driver
I
~-----------------------------~
lpointer to array
I
4 bytes
r------------------------------~
r--------------:---------------lt:~!!:~e~~r
I
IL
~------------------------------~,
~----------------------------~,
r--------------~--------------1IpOliSh
,
~------------------------------~
number
lIstatement
______________________________
JI
~--------------~--------------~\
~-----------------------------~,
t--------------~--------------1Ipolish for
,
I subscript 2
l--------------:--------------~\
~----------------------------~
Imultiplier
,
~-----------------------------~
largument driver
,
LABELED STATEMENTS
,t-----------------------------1,
I
I
~==============================1'{
I
I
I Polish
~-----------------------------~.
for
~-------------~---------------~\statement
r------------------------------~
Icontrol driver
I
~------------------------------~
~------------------------------~
I
I
t--------------~--------------1Ipolish for
I
I subscript 7
4 bytes
Ilabel
for
I ) subscript 1
~-----------------------------~
Imultiplier
,
~-----------------------------~
,argument driver
I
~------------------------------~
Icontrol driver
~------------------------------~
number
lIstatement
______________________________
J
1\
~-----------------------------~
~-----------------------------~
I multiplier
I
~-----------------------------~
largument driver
I
~-----------------------------~
,dummy
array pointer
L
_____________________________
JI
163
LOGICAL IF STATEMENT
The Polish
statement is:
4 bytes
r------------------------------,
I logical
~--------------~---------------~\expression
~------------------------------~
t--------------~---------------1ipOliSh for
ENTRY STATEMENT
4 bytes
r-----------------------------------------,I
I ,statement
~--------------~---------------~\
S
~------------------------------~'
Ilogical IF driver
I
~------------------------------~
Istatement
number
l ______________________________
JI
~-----------------------------------------~
I ENTRY driver
t-----------------------------------------~
number
lIstatement
_________________________________________
JI
The pointer points to
roll.
the
ENTRY
RETURN STATEMENT
NAMES
The following Polish notation
duced for the RETURN statement:
is
pro-
4 bytes
r-----------------------------------------,
lpointer to I
I
ASSIGN STATEMENT
The Polish notation
ASSIGN statement is:
4 bytes
r-----------------------------------------,
I pointer to label
t-----------------------------------------~
Ipointer to variable
~-----------------------------------------~
I RETURN dri ver
I
~-----------------------------------------1
number
lIstatement
_________________________________________
JI
~-----------------------------------------~
I ASSIGN driver
t-----------------------------------------~
Istatement
number
l _________________________________________
JI
The Polish notation
sta tement is:
ASSIGNED GO TO STATEMENT
The Polish notation generated
statement is:
for
this
4 bytes
r------------------------------,
lpointer to variable to be set I
for
this
4 bytes
r-----------------------------------------,I
Ipointer to variable
t-----------------------------------------~
lassigned GO TO driver
I
t-----------------------------------------~
lIstatement
_________________________________________
number
JI
164
produced
~--------------------------~---~
I right side
~--------------~---------------~\
~-----------------------------~/
lassignment driver
~------------------------------~
Istatement
L______________________________
number
JI
ARITHMETIC IF STATEMENT
The follo~ing Polish
duced for this statement:
4
notation is pro-
bytes
r------------------------------,
t--------------~---------------1/pOliSh for
j' expression
t--------------~---------------~,
~------------------------------~,
UNCONDITIONAL GO TO STATEMENT
The Polish
statement is:
notation
4 bytes
r-----------------------------------------,I
Ipointer to label
~----------------------------------------~
IGO TO driver
t~~~~~;-~~-;~-----------------l{~f~~:
t~i~~~;-~~-;3-----------------1\
r------------------------------~
Ipointer to label next stmt.
I
~------------------------------~
IIF driver
I
~------------------------------~
number
lIstatement
______________________
- _______ JI
~-----------------------------------------~
number
lIstatement
_________________________________________
JI
COMPUTED GO TO STATEMENT
DO STATEMENT
The following Polish notation
duced for this statement:
is
4 bytes
r------------------------------,
Ipointer to xl
I
~-----------------------------i
Ipointer to x2
I
~-----------------------------i
I
I branch
I
I points
4 bytes
r-----------------------------------------,
lpointer to
(test value)
I
M~
r-----------------------------------------~
lpointer to M3 (increment)
~-----------------------------------------~
~------------------------------~
~-----------------------------~
100 driver
lpointer to xn
~-----------------------------------------~
~-----------------------------------------~
Istatement number
l--_______________________________________
JI
Appendix C:
if
the
165
CONTINUE STATEMENT
The Polish
statement is:
notation
" bytes
r-----------------------------------------,I
ICONTINUE driver
.-----------------------------------------~
number
lIstatement
_________________________________________
JI
for
these
r-----------------------------------------,I
lpointer to variable
~-----------------------------------------~
Il _________________________________________
offset
JI
" bytes
r-----------------------------------------,
Ipointer to constant
I
~----------------------------------------~
IPAUSE or STOP driver
I
~-----------------------------------------~
Istatement
number
l _________________________________________
JI
" bytes
r-----------------------------------------,I
Irepetition count
END STATEMENT
~----------------------------------------~
the
to constant
llpointer
_________________________________________
J
r-----------------------------------------,I
I END driver
generated
for
" bytes
~-----------------------------------------~
number
lIstatement
_________________________________________
JI
" bytes
r-----------------------------------------,
Irepetition count
I
~-----------------------------------------~
lpointer to constant
I
~-----------------------------------------~
Inumber of elements
L-________________________________________
JI
" bytes
r-----------------------------------------,I
IBLOCK DATA driver
~----------------------------------------~
number
lIstatement
_________________________________________
JI
166
I/O LIST
" bytes
The Polish
notation
for
an
I/O
List
r------------------------------,
lpointer to a (data set)
,
t------------------------------,
IFORMAT driver
I
,
~------------------------------~
I point er
r----IEND~
driver
.-----------------------------~~
IERRr- driver
I
C(I),I=l,lO),A,B)
example,
t;nRMAT
~------------------------------~
Ipointer to END label
i
for
t"
------------------------~
results
in
the
following
t------------------------------~
Polish notation:
.------------------------------~
" bytes
r----------------------------------------,I
Ipointer to Ma (test value)
~----------------------------------------~
.IIOL driver
---------------.---------------~
t--------------~---------------1ipOliSh
for
1'1/0 list
~-----------------------------------------~
1(
Ipointer to M3 (increment)
r------------------------------i'
.--------.----------------------~'
~----------------------------------------~
.------------------------------~
Ipointer to C
I
.-----------------------------------------~
(number of subscrifts)
I
,1
~----------------------------------------~
'pointer to I (subscript)
I
~-----------------------------------------~
largument driver
I
~-----------------------------------------~
larray driver
I
~----------------------.-------------------~
Icode word
t------------------------------~
Ipointer to rBCOM
.------------------------------~
IREAD/WRITE flag,
I nonzero~ READ
zero= WRITE,
I
I
r------------------------------iI
r------------------------------i
IL.statement
number
_____________________________
JI
r-----------------------------------------.
,pointer to A
I
~----------------------------------------.
L________________________________________
J
'pointer
to B
INPUT STATEMENTS
The following paragraphs discuss the
Polish notation produced for all forms of
the READ statement except direct access.
FORMATTED READ
For the form READ (a,b) list, the formatted READ, the Polish notation generated
is:
167
4 (lytes
NAMELIST READ
r------------------------------,
Ipointe~ to a (data set)
I
For
RE~D,
1.
is
replaced
by
IEND= driver
2.
3.
t------------------------------~
t------------------------------~
5.
6.
appea~.
~atted
2.
The
3.
1.
2.
OUTPUT STATEMENTS
The fcllowing paragraphs discuss the
Polish notation produced f~r all forms of
the ~RITE statement except direct access,
and for the PRINT and PUNCH statements.
PORMATTED WRITE
For the form WRITE
formatted
WRITE,
the
generated is:
168
~------------------------------+
t--------------~---------------1~POliSh
I
for
1,1/0 list
I(
~-------------------------------I,
t------------------------------~;
Icode word
I
t------------------------------~
\IBCOM entry, formatted WRITE' I
UNFORMATTED READ
1.
~------------------------------~
IIOL driver
t
(a,b)
list,
the
Polish notation
t------------------------------i
Ipointer to IBCOM
I
t------------------------------i
IREAD/WRITE flag, zero= WRITE, I
I
nonzero= READ
t------------------~-----------i
t------------------------------i
Istatement number
I
L _____________________________ J
IBCOM points
SPROG roll.
NAMELIST WRITE
1.
2.
is
replaced
by
2.
3.
5.
6.
bytes
r------------------------------,I
2.
The
3.
.------------------------------~
Idirect 10 driver
I
.------
..
.------------------------------~
.------------------------------~
lexpression drLver
1
.------------------------------~
i?01nCer LO b
PRINT
The Polish notation generated for the
form PRINT b,
list is identical to that
given for the formatted WRITE statement,
with the following changes:
1.
2.
PUNCH
The Polish notat~on for the state~~nt
PUNCH b, list is as given for the formatted
WRITE with the following changes:
1\I r
.------------------------------~
IERR= driver
I
.------------------------------~
Ipointer to ERR label
I
.------------------------------i
IIOL driver
I
.------------------------------1
r--------------~---------------1tpoliSh for
I
1;1/0 list
1\
.------------------------------~J
.------------------------------i'
Icode word
1
r------------------------------i
IIBCOM entry, READ
I
~------------------------------i
I po;_r,ter to IBCOM
1
~------------------------------i
.------------------------------i
Istatement number
I
l- _____________________________ J
Appendix C:
169
The END= and ERR= drivers and the pcinters following them appear only if the END
and ERR options are used in the source
statement; either one or both may appear,
and in any order with respect to each
other.
If b does not appear in the source
statement (the second form),
the corresponding pointer does not appear in the
Polish notation.
If the I/O list does not
appear in the source statement, the Polish
notatiou for the I/O list is omitted from
the Polish, but the 10L driver appears
nonetheless.
The code word contains zero in its
high-order three bytes, and, in its loworder byte, a unique code specifying the
operation and unit for the input/output
statement. This code word distinguishes
the direct access statements from other
input/output statements and is inserted in
the cod~ produced for them.
4 bytes
r---------------------------,
Ipointer to a1
1
~---------------------------~
lpointer to m1
I
.---------------------------~
Ipointer to 11
1
.. --------------------~
IE, L, or U
I
.------
file 1 data
.---------------------------~
lpointer to v1
.---------------------------~
lpointer to a2
I
.---------------------------~
I
I
I
l
I
,
.---------------------------~I
1pointer to v2
file 2 data
.---------------------------~
I
,
I
I
I
I
~------------------------ .. -- i
lpointer to an
,
.---------------------------~
"I
J
I
The Polish notation produced for the
forms WRITE (a'r,b) list and WRITE (air)
list is identical to that produced for the
corresponding forms of the READ, direct
access
statement
with
the
following
exceptions:
1.
2.
file n data
.-----------------------~~--~
Ipointer to vn
.---------------------------~
IDEFINE FILE driver
1
~---------------------------~
l ___________________________ J
Istatement number
FIND
The Polish notation produced for this
statement is identical to that for an
unformatted direct access READ statement
given above, with the exception that the
code word is changed to indicate the FIND
statement.
The Polish
FILE is:
notation
produced
for
END
.. bytes
...----_._-----------------------------------,
Ipointer to a (data set)
i
.-----------------------------------------~
IIBCOM entry for END FILE
I
DEFINE FILE
r-----------------------------------------i
Ipointer to IBCOM
1
~----------------------------------------~
IBSREF driver
1
.-----------------------------------------~
L________________________________________
J1
Istatement
number
110
is:
4 bytes
!!EWIND STATEMENT
__
.&.._ ...
S! _ _
T:'t't..TT"\
'r."lTT~
... .u'--V!!
CO!!
'-Ly
.LVL
.l.:.tL'UJ
I:
L.uL
.! _ _ _ _ ,
L._=
.&-t...., .....
U'j
LIlt:::
..L~
_ _ _.,-l
t:::'p..LC1~t:::U.
r------------------------------,,
Isubprogram driver
t------------------------------1,
Ipointer to function name
~------------------------------~
Inumber of arguments
I
~------------------------------~
,expression driver
,
~------------------------------~I
~----------------------------~-~
I
, Polish for
,
, argument 1
~------------------------------~
lexpression driver
I
~------------------------------~
~------------------------------~
I
, Polish for
,
, argument. 2
generated
for
~------------------------------~
lexpression driver
\
~------------------------------~
4 bytes
r------------------------------,
I
,
I Polish for
I right side
I
I
I
I Polish for
, argument n
~------------------------------~
~------------------------------~
\
I
~------------------------------~
,
I
~------------------------------~
~------------------------------~
lexpression driver
,
~------------------------------~
,pointer
to function name
L ______________________________
JI
~------------------------------~
produced
for
the
4 bytes
r-----------------------------------------,I
\pointer to ENTRY name
SUBROUTINE STATEMENT
~-----------------------------------------~
IFUNCTION driver
I
~-----------------------------------------~
Istatement
number
L_________________________________________
J1
4 bytes
for
r-----------------------------------------,
Ipointer to ENTRY name
,
~-----------------------------------------~
lSUBROUTINE driver
,
.-----------------------------------------~
number
lIstatement
_________________________________________
J,
171
CALL STATEMENT
The Polish notation for the CALL
ment is:
state-
4 bytes
r------------------------------,I
Isubprogram driver
.r------------------------------~
lpointer to subprogram name
I
r------------------------------~
Inumber of arguments
I
~------------------------------i
lexpression driver
I
r------------------------------~
I
I
I
I argument
~------------------------------i
Polish for
1
r------------------------------~
lexpression driver
I
~------------------------------i
I
I
I
I Polish for
I argument 2
I
~------------------------------~
r------------------------------i
lexpression driver
I
~------------- ----------------i
I
I
I
I
I
I
I
I
,
I Polish for
I argument n
I
r------------------------------i
~------------------------------~
~------------------------------i
lexpression driver
I
r------------------------------~
Ipointer to subprogram name
I
~------------------------------i
Ipointer to xl
I
~-----------------------.-------~
Ipointer to x2
~------------------------------~
I
I
I
I label
, arguments
,
~------------------------------~
Ipointer to xn
,
r------------------------------~
'number of label arguments
,
~------------------------------~
Icomputed GO TO driver
I
r------------------------------~
'CALL driver
,
~------------------------------i
Istatement
number
l ______________________________
JI
Label arguments are not counted in the
"number of arguments" which appears as the
third word of the Polish notation, and no
172
AT
The Polish notation generated for the AT
statement is:
4 bytes
r-----------------------------------------,
,
pointer to AT group
~-----------------------------------------i
AT driver
~-----------------------------------------i
,l _________________________________________
statement number
JI
The pointer points to the AT roll group
which contains the information relating to
the AT statement represented by the Polish
notation.
TRACE ON
The Polish notation
TRACE ON statement is:
generated
for
the
4 bytes
r-----------------------------------------,
I
TRACE ON driver
I
~-----------------------------------------i
,l _________________________________________
statement number
JI
TRACE OFF
The Polish notation
TRACE OFF statement is:
4 bytes
r-----------------------------------------,
I
TRACE OFF driver
I
~-----------------------------------------i
statement number
l _________________________________________
J
DISPLAY
The Polish notation
DISPLAY statement is:
generated
for
the
4 bytes
r-----------------------------------------,
I
pointer to NAMELIST WRITE
I
~-----------------------------------------~
0
I
~-----------------------------------------~
NAMELIST pointer
I
~----------------------------------------~
I
DISPLAY driver
I
~-----------------------------------------~
!L _________________________________________
statement number
JI
Appendix C:
173
nf
The use
program can
example:
a no loon in a FOkTRAN
be de;~rib~dLby-the foll~ing
ERANCHES
DO 5 I
ml,m2_m3
5 CONTINUE
When the DO statement is processed during phase 4, the following takes place:
1.
The code
L
ST
RO,ml
RO,l
is generated, where
constructed by Gen.
the
label A is
2.
BH
15,variable
15,2
1q,0
15,15
IIn+22(0,lQ)
1.lIn(0,0)
15,1
"n+22(0,111)
1,18(15,1")
BR
SlL
BALR
LTR
BNH
LA
CR
3.
n address constants
BXLE
RO,I
Rl, branch table
R2,m3
R3,m2
RO,R2,0(Rl)
115
STATEMENT FUNCTION
X(O,
DC
ALIClength of Ident)
CLn(ldent)
14,12,12(1))
2.3,32(1':
15,2fHO,lS)
20(0, l~)
(ADDRESS MAIN ENTRY)
(ADDRESS PROLOGUE)
(ADDRESS EP ILOGUE)
DC
2,3,18(15)
6,12.26(15)
1,14
9,1
6,15
54(0,15)
B
DC
DC
DC
nine-word buffer
LM
LM
BR
STM
LM
L
1~)
14,1
2,3,18(6)
6,12,26(6)
14
for
the
15,15
14,0(0,13)
14
SLL
SUBROUTINE AND FUnCTION
SUBPROGR~S
BR
The following code is generated to save
required infonnation at the main entry to
each SUBROUTINE and FUNCTICN subprogram:
B
DC
DC
STM
LM
LR
L
ST
5TM
BR
DC
DC
DC
X(0,15)
AL1(length of Ident)
CLn(Ident)
14,12,12(13)
2,3,40(15)
4,13
13,36(0,15)
13,8(0,4)
3,4,0(13)
which also
EPILOGUE.
15,1
15,2
14, OCO, 13)
14
branches
to
the
appropriatE
2,n(0,1)
2,global dmy
where n is the argument number (the arguments for each entry point are nUlllbered
from one) multiplied by four.
L
MVC
2,n(O,l)
global dmy(x),0(2)
176
at
BALR
2.0
3,6(0,2)
BR
DC
the
176.1
Form Y28-6638-1
Page Revised 11/15/68 by TNL Y28-6826
The
are:
code
1~4(O;13)
L
L
1,24(0,1)
CNOP
L
to
BAL
DC
DC
DC
DC
where:
L,U\V,
MVC
O(x,2),global dmy
""")
'"
~,
PI
For FUNCTION subprograms, the
instruction is generated:
Lx
following
O,entry name
LM
MVI
fiR
is
are
UI
FI
X'OO'
if FORMAT' is a statement
label
X'Ol' if FORMAT is an array name
13,4(0,13)
14,12(0,13)
2,12,2 P {13)
12(13),255
14
L
L
0,4
15, =VCIBCOM#)
14,N(15)
XLO.4'PI',XLO.4'UI',AL3(UNIT)
AL1(FI),AL3(FORMAT)
"optional"
AL4(EOFADD'
AL4(ERRADDl
"optional"
0 for READ
4 for WRITE
SECOND LI ST I TEM,
FORr1.~TTED
15,=V(IBCOM#)
14,8(15)
XL1'L',LXO.4'T'.XLO.4'X'
XLO. 4 B' , xLl. 4' D'
where:
L
177
X, a, and D are,
respectively, the
index,
base,
and displacement .which
specify the item address.
BAL
DC
6AL
DC
DC
15,=V(IBCOM#)
14,28 (15)
XL1'L',XLO.4'0',XLO.4'X',
XLO.4'B',XL1.4'D'
where:
15,=V(IBCOM#)
14,12(15)
LX1'SPAN',AL3(ADDRESS)
XL1'L',XLO.4'T',XL2.4'ELEMENTS'
where:
SPAN (not used)
ADDRESS = the beginning location
array
L
size
the
element
in
bytes
of
of
the
the
array
the
15,=V(IBCOM#)
14, 32 (L)
XL1'SPAN',AL3(ADDRESS)
XL1'L',AL3(ELEMENTS)
BAL
15,=V(IBCOM#)
14,16(15)
.
15,=V(IBCOM#)
14,36(15)
code
1,s:
0, 4
15,=V(IBCOM#)
14,N(15)
XLO.4'PI',XLO.4'UI,AL3(UNIT)
AL4(EOFADD)
"optional"
AL~(ERRADD)
"optional"
SAL
DC
DC
DC
CNOP
L
BAL
DC
0,4
15,=V(IBCOMtt)
14,N(15)
XL1'FLAG', AL3(UNIT)
where:
where:
PI, UI, UNIT, EOFADD and ERRADD have the
same values as those given in the formatted READ/WRITE definition.
N = 20 for READ
= 24 for WRITE
178
The following
generated:
The
code
15,=V(IBCOM#)
l4,N(15)
ALl (LENGTH)
C'TEXT'
BAL
DC
DC
of
bytes
in
is
also
iJ'..L3(ml.)
X'an',AL3(mn)
_.L .
\.. - l.n -
"'T~I_
,I'UJJ
"
\Ln'
X'SO',AL3(v n )
the
TEXT
DC
i~
changed to
X'01',AL3(vi)
52 for STOP
56 for PAUSE
list
DC
DC
DC
where:
LENGTH is the number
'TEXT' message
X'ai.'
DC
DC
DC
is:
parameter
FIND STATEMENT
0,4
l5,=V(FWRNLi>
14,0 (15)
XLO.4'PI',XLO.4'OI',AL3CUNIT)
AL4 (NAMELIST)
AL4CEOFADD)
AL4 ( ERRADD)
CNOP
L
BAL
DC
DC
DC
DC
0,4
15, =VCIBCOM#)
14,20(15)
BAL
XLO.4'PI',XLO.4'OI',AL3(UNIT)
XL1' VI' , AL3 (r)
DC
DC
where:
PI, 01, and UNIT are as described for
formatted READ and WRITE
The "L
l5,~V(FWRNL*)n
shown is
the code produced for read
write;
l5,+V{FRDNLt).n
"L
for
is
PI
U1
BALR
where:
R1.,LIST
L,=V(DIOCS#)
R2 ,L
= 15
R2 = 14
uni~
is a
cons~an~
record
number
00 if
the
constant
01 if the record number is a
able name
is
vari-
these
statements
is:
CNOP
0.4
15, =V (IBCOM i)
14, N(lS)
XLO.4'PI',XLO.4'UI'AL3(ONIT)
AL1(FI),AL3(FORMAT)
ALl (VI) ,AL3 (r)
AL4(ERRADD) "may only appear for
READ"
BAL
DC
DC
L
o if thp
VI
DC
DC
179
Internal Parentheses
where:
PI = 8 if ERR is not specified
A if ERR is specified, which is
only possible for READ
UI
integer
o if the unit is
an
constant
1 if the unit is a variable name
FI
is
a
Repetition of Individual FORMAT
specifications
FORMAT STATEMENTS
FORMAT statements are stored after
eral constants in the object module.
Whenever the source module FORMAT statement contains a field specification of the
form aIw, aFw.d, aEw.d, aOw.d, or aAw,
where the repetition count Wa W is present,
the hexadecimal code 06. is produced to
indicate the field repetition.
This code
is followed by the l-byte value of wa w
lit-
A FORMAT Code
FORMAT Beginning and
End:.t~arentheses
Literal Data
Slashes
The slashes appearing in the FORMAT
statement are represented by the hexadecimal code lE.
180
DEBUG FACILITY
The followinq paraqraphs describe the
code produced for the FORTRAN Debug Facility statements. The generated instructions
set up parameters and branch into the
DEBUG# transfer table.
The object-time
routines which support the Debug Facility
are described in Appendix E.
DEBUG STATEMENT
When the source module includes a DEBUG
statement, debug calls are generated before
and after each sequence of calls to IBCOM
for source module input/output statements.
Additional debug calls are generated to
satisfy the options listed in the DEBUG
statement.
Beginning of Input/Output
F'OHMA1'
BAL
15,=V(DEBUG#)
0,4
14,44(0,15)
End of
Input/Outp~~
CNOP
code
CNOP
BAL
15,=V(DEBUG#)
0,4
14,48(0,15)
FORMAT Code
UNIT Option
Z FORMAT Code
When
the
DEBUG statement does not
include the UNIT option, the object-time
debug routine automatically writes debug
output on SYSOUT.
When UNIT is specified,
the following code is generated at the
beginning of the object module:
L
CNOP
BAL
DC
15,=V(DEBUG#)
0,4
14,12(0,15)
F'DSRN'
181
subprogram call.
Three calls may occur,
depending on the type of variable (scalar
or array) and the method of assignment.
TRACE Option
CNOP
CNOP
BAL
DC
15,=V(DEBUG#)
0,4
14,0(0,15)
F'LABEL'
L
BAL
DC
DC
15,=V(DEBUG#)
0,4
14,16(0,15)
CL6' NAME' , CL2 '
XL1'L',XLO.4'T',XLO.4'X',XLO.4'B',
XLi. 4' 0'
where:
the
following
L is the
bytes.
SUBTRACE Option
BAL
15,=V(DEBUG#)
0,4
14,4(0,15)
CNOP
BAL
15,=V(DEBUG#)
0,4
14,8(0,15)
~he
variable in
variable:
X, B, and D are,
respectively,
the
index, base, and displacement which loca te the item.
INIT ARRAY ITEM:
The following code is
produced after each assignment of value to
an array element:
DC
OC
15, =V (OEBUG#)
0,4
14,20(0,15)
CL6' NAME' , CL2'
XL1'L',XLO.4'T',XLO.4'X',XLO.4'B',
DC
XL1'TAG',AL3(ADDRESS)
SUBTgAC~~~QRN:
the
which
of
length
variable
CNOP
BAL
XLi. 4'0'
where:
ADORESS IS THE LOCATION OF THE FIRST
array element if TAG = 0, or ADDRESS is a
pointer to the location of the first
array element if TAG ~ 0.
When the INIT option is given in the
source module DEBUG statement, a debug call
is produced for every assignment to a
variable, or to a listed variable if a list
is provided. The call immediately follows
each
assignment,
including those which
occur as a result of a READ statement or a
182
NAME,
L, T, X, B, and D are as described
for a scalar variable.
!NIT FULL ARRAY:
The following code is
produced when a full array is set by means
of an input statement specifying the arr~y
CNOP
BAL
DC
DC
DC
DC
15,=VCDEBUG#)
0,4
14,24CO,15)
CL6'NAME',CL2'
A(ADDRESS)
XL1'L',XLO.4'T',XL2.4'OOOOO'
ACELEMENTS)
where:
ADDRESS is the
array element.
location
of
the
first
ELEME~~S
NAME,
L, and T are as described for a
scalar variable.
TRACE ON STATEMENT
The debug call produced for the TRACE ON
statement appears at the location of the
TRACE ON statement itself; the call is:
A debug call is produced for
each
reference to an array element when the
SUBCHK option appears without a list of
array names; when the list is given, only
references to the listed arrays produce
~phug calls.
The debug call appears before
the reference to the array, and is:
L
CNOP
BAL
DC
DC
DC
15,=VCDEBUG#)
0,4
14,28(0,15)
CL6' NAME', eL2'
XL1'TAG',AL3CADDRESS)
AL4(ELEMENTS)
15,~VCDEBUG#)
CNOP
BAL
0,4
14,32CO,15)
where:
15,=VCDEBUG#)
0,4
14,36 (0, 15)
DISPLAY STATEMENT
The code for the DISPLAY statement is:
L
CNOP
BAL
DC
DC
15,=VCDEBUG#)
0,4
14,40 (0, 15)
ACNAMELIST)
A (FWRNL#)
AT STATEMENT
The AT statement specifies the label, L,
of a statement whose operation should be
where NAMELIST is the address of the NAMELIST table generated from the DISPLAY list
by the compiler.
This code appears at the
location of the DISPLAY statement itself.
183
APPENDIX E:
The information provided in this appendix '~as its primary use in connection with
a listing of the compiler. The label lists
indicate the chart on which a specific
label can be found, or, for routines which
are not flowcharted,
they
provide
a
description of the routine.
Routine
Label !!am~ __
G0639 ASSIGNMENT
VAR CHECK
cIIl!!!~!!t.
G0643 DO STA
XLATE
Constructs
the
Polish
notation for the
DO
statement.
Locates the
innermost DO statement
in a nest of DO's,
and
spts up extended ran~e
checking.
G0644 DO STA
CONTROL
XLATE
Interprets
the
loop
control
specification
in the DO statement and
constructs the Polish
notation
for
these
controls.
G0645 DIMENSION
STA XLATE
Constructs
the
Poli~h
notation for a Computed
GO TO statement.
Chart
ID
Routine Name
04
BA
BB
BC
BD
BE
BF
BG
STATEMENT PROCESS
PRINT AND READ SOURCE
STA INIT
LBL FIELD XLATE
STA XLATE
STA FINAL
ACTIVE END STA XLATE
PROCESS POLISH
START-COMPILE~
comments
Obtains additional core
storage,
if possible,
for a specific roll by
pushing up the rolls
that precede the requesting roll in the
block of storage.
If
this is not possible,
it requests more core
storage and, if none is
available, enters PRESS
MEMORY.
G063? ASSIGNMENT
STA XLATE
Polish
Constructs
the
notation for an assignment statement.
G0648 ASSIGNED
GOTO STA
XLATE
Constructs
the
Polish
notation for an
Assigned GO TO statement.
Polish
Constructs
the
notation for an arithmetic function definition statement.
Controls
the constructions
of the Polish
notation for an ASSIGN
statement.
185
Routine
!i9.!!!~ __ _
GOb~O IF STA
XLATF.
Label
GOb51
LOGIC~L IF
STA XLATE
. G0652 IiV!PLICIT
STA XLATE
G06 5 3 REGIS'I'ER
:{P._NGF
Routine
Q~!!!~!:!!:.2
Constructs
the
notation
for
s ta temC'!1t.
Polish
an IF
Constructs
the
notation for a
IF statement.
Polish
logical
Checks
the
IMPLICIT
statement ani controls
the constrnction of the
roll entries for the
statement.
character entries for an IMPLICIT
statement.
Control~
Label
G0664
Comments
H CODE Interprets the specification for the H format
code.
~ame___
P~CK
Constructs
the
notation for a
statement.
G0667 BACKSPACE
STA XLATE
Constructs
the
Polish
notation
for
a
BACKSPACF statement.
Constructs
the
Polish
notation
for an Ei'-lD
FILE statement.
Completes
the
notation
for
output control
ments.
Polish
REWIND
GOb54 REGISTER.
It-'JPLICIT
CHAR
G06S6
Constructs
the
Polish
notation for a continue
statement.
Controls the
tion
of
statement.
Checks
the form of the
specified statement and
controls the construction
of
the Polish
notation
for
the
statement.
G06?6 INIT
LITERAL
FOR STOP
PAUSE
G067? NAMELIST
STA XLATE
Constructs
entries
CmJTIl'JU~
STA XLATE
G0657 CALL STA
XLATE
Constructs
the
Polish
notation for a
CALL
statement.
G0658 EXTERNAL
S'rp.. XLATE
G0661 FORMAT
LIST SCAN
Checks
the form of the
literal content of the
FOH~AT statement.
<::0662 FORMAT
BASIC SCAN
Interprets
the
FORMAT
list and constructs the
Polish notation for the
list.
186
END
N~ELIST
Polish
input/
state-
interpretathe
PAUSE
the
roll
for
the
statement.
constructs
the
roll
entries for the CDr1MON
specification.
Routine
Label Name
G0679 TEST 10
ARRAY OR
SCALAR
Comments
Validates the identification of the array or
scalar used in COMMON.
G0683 TYPE
Checks the identification
SEARCH TEST
of the variables in the
AND REG
type
specification
in statement for previous definition
and
defines if correct.
Routine
Label Name
G0692 TEST ORDER
Comments
Checks the order in which
the SUBROUTIN~ or FUNCTION statement appears
in the source module.
G0695 DEFINE
FILE STA
XLATE
Constructs
the
Polish
notation for the DEFINE
FILE statement.
Polish
Constructs
t.he
roll
notation
and
entries for the DATA
statement.
Interprets the
specified in
statement.
constants
the DATA
sets up
elements
the DATA
Constructs
the
Polish
notation
and
roll
entries for an ENTRY
statement.
Determines and
the number of
specified in
statement.
G0685 FUNCTION
STA XLATE
G0686 TYPED
FUNCTION
STA XLATE
G0687 FUNCTION
ENTRY STA
XLATE
XLATE
These routines
control
the construction of the
Polish notation for a
FUNCTION subprogram by
invoking the routines
which
interpret
the
contents of the statement.
G0688 SUBROUTINE
STA XLATE
G0689 SUBROUTINE
ENTRY STA
XLATE
These
routines control
the construction of the
Polish notation for a
SUBROUTINE
subprogram
by invoking the routine
which
interprets the
contents of the statement.
G0690 SUBPROGRAM
END
Common
closing routine
for
ENTRY,
FUNCTION,
and SUBROUTINE statements.
of
G070l MOVE TO
Moves
information
for
TEMP
DATA statement to TEMP
POLISH ROLL
POLISH roll from WORK
roll.
G0702 READ STA
XLATE
G0705 END QT
XLATE
Constructs
notation
quote.
the
Polish
for the END=
187
Routine
Label Name
G0706 ERR QT
XLATE
comments
Constructs
G0707 REGISTER
IBCOM
G0708 REGISTER
ERROR LINK
(;0712 1-'2 10
XLATE
Crln'Srut:i".s
the
~~ljsh
nGt~tion for
the ~R~=
quote
in
the
REAu
statempnt.
Routine
Label Name
G0723 STA XLATE
EXIT
for
the
Polish
foI. the indicated
input/output
s':atemf>nt and
int.erp:.. ~t ') FOF,~AT d~signa
tions ass~ciated with
the input/out.put statement.
n(.. t~tiOI\
Constructs
the
Polish
notation for the FIND
statement.
constructs
the
Polish
notation tor the RETURN
statemeHt.
Increments
temporar.y
uSii
fol.
sions.
G0719 SPECIFICATION
STA EXIT
G0120 JUMP END
G0721 ACTIVE END
G0722 BEAD STA
EXIT
pointer for
locations
dwruny dimen-
G0724 ILLEGAL
These
routines set up
STA FAIL
diagnostic messages for
G0725 ORDER FAIL
the type of e'rror indiG0726 ALLOCATION
cated by the routine
name.
FAIL
G0727 ILLEGAL
NUMBER
FAIL
G0728 SUBSCRIPT
FAIL
G0129 10 CONFLICT
FAIL
G0730 TYPE
CONFLICT
FAIL
G0731 VAR SCAN
CheCKS
'definition
of
variables, in the source
module;
defines
as
scalar if 'undefined.
Constructs
the
Polish
notation
and
roll
entries for array references.
G0733 SUBSCRIPT
ANALYSIS
G013? MOVE ON
EXIT FALSE
G0738 SCRIPT
Determines
whether
a
scalar used in a subscript is a DO variable
and sets ANSWER BOX.
SCAlAR
ANALYSIS
188
Comments
Replaces the Polish notation for a statement
with error linkage if
indicated.
Routine
Label Name
G0739 SCRIPT
CONST
ANALYSIS
Comments
Separates constant used
in a subscript expression as either induction variable coefficient
or
additive
constant.
G0740 DEFINE
SCRIPT
GROUP
G0741 REGISTER
SCRIPT
GROUP
G0745 ELEMENT OP
SEQ SCAN
Constructs
the
Polish
notation for a term in
an
arithmetic
expression.
Routine
Comments
Label Name
The current and previous
G0752 OP CHECK
operations are set up
AND DEPOSIT
according to a precedence,
and a
Polish
notation
is
constructed.
G0753 GEN AND REG Determines the nature of
an exponentiation, and
EXPON SPROG
records
the required
subprogram
on
the
GLOBAL SPROG roll.
G0754 REG COMPLEX Determines the nature of
SPROG
an operation involving
complex variables and
registers the appropriate routine
on
the
GLOBAL SPROG roll.
G0755 A MODE PICK Checks and sets mode of
AND CHECK
operator by inspecting
the first of a pair of
operands.
G0756 MODE PICK
Actually
places
field in driver.
mode
G0146 UNAPPENDED
SPROG ARG
Exits
from
expression
scanning on finding an
array
or
subprogram
name not followed by a
left parenthesis; ensures
reference
is
correct.
G0141 FUNCTION
ELEMENT
Determines
whether
a
function call
in an
expression
is to
a
statement function,
a
I ibrary function, or a
global
subprogram;
calls
SPROG ARG SEQ
SCAN to scan arguments.
G0748 CONST
ELEMENI'
Scanning expression,
if
compiler
finds
nonletter, non-left parenthesis,
it goes here;
determines if really a
constant.
G0749 SCALAR
ELEMENT
Ensures that
registered.
is
Constructs
the
Polish
notation for the argument
list designated
for a subprogram.
GO 750 ELEMENT
MOVE
G0751 OP SCAN
CHECK
DEPOSIT
Determines
whether
a
scalar has been passed
as
a
subprogram
argument.
scalar
189
Routine
Label Name
G0164 IOSCAN
NO USE
Conunents
s;tS---a- flag tested in
MOOE SET so that loworder bits of roll are
not altered when variable is defined; statement
does
not
use
variable.
Records
new
SCAlAR roll.
name
G0169 REGISTER
GLOBAL
SPRaG
REGISTER
RUNTIME GS
Determines
i.f name is
already a defined subprogram;
if not records
it
on GLOBAL
SPRaG roll.
G0110 REGISTER
GLOBAL
SPRaG ROLL
Records name
SPROG roll.
on
on
Comments
Records new integer constant if not previosuly
defined.
G0771 CONST
ANALYSIS
Converts
constant.
complex
hexadecimal
G0783 REGISTER
HEX CONST
Checks
validity of a
label argument to
a
subprogram and records
label as jump target.
G0785 SCAN
HOLLERITH
ARGUMENT
G0786 LITERAL
CONST SCAN
Distinguishes
literal
constants from logical;
converts and records.
G0787 LITERAL
CONST SCAN
PAUSE
G0788 REGISTER
LITERAL
CONST
Initializes
sion
of
constant.
G0790 PACK
LITERAL
COMPLETE
Moves
literal constant
onto TEMP LITERAL roll
if packed.
G0791 PACK
LITERAL
CONST
GLOBAL
G0113 REGISTER
COMPLEX
CaNST
Records
complex
and
double-precision
complex constants not previously
defined
on
appropriate roll.
G0114 REGISTER
FL CaNST
Records
singleand
double-precision
real
constants on appropriate roll when not previously defined.
G0715 REGISTER
WORK CONST
Records constant in WO as
new integer constant if
not defined.
190
Routine
Label N~
G0776 REGISTER
FX CONST
for
a
converliteral
Routine
Label Name
G0793 PACK TWO
FROM WORK
G0794 I;ACK
r-.l.1'~
Vl'lJ:.
FROM WORK
Comments
Packs low-order byte from
last one or two groups
on
WORK
roll
onto
LITERAL TEMP roll.
Routine
Label Nam~_
G0806 NEXT
CLOSING
SLASH
Comments
Scans source input until
second of the next pair
of slashes not enclosed
in parentheses.
G0798 LOGICAL
CaNST SCAN
Scans label,
defines it
as
jump target
and
pointer on POLISH roll.
Locates transfers from
innermost DO loops that
are possible extended
range candidates. Also
checks
for
possible
re-entry
points into
innermost DO loops, and
tags such points.
G0810 INTEGER
TERM
SCAN AND
MOVE
G0811 INTEGER
CONST SCAN
AND MOVE
Tr::ST
WO
G0813 INTEGER
TEST
Determines
whether
a
pointed to variable or
constant is an integer.
G0814 SIGNED
INTEGER
SCAN
G0803 REGISTER
LBL
G081S INTEGER
SCAN
Scans
and converts an
unsigned integer constant and register on
FX
CONST
roll
if
required.
G0816 DP CONST
t<1AKER
Builds a double-precision
constant
from source
input.
G0817 DP ADJUST
CONST
191
Routine
Label Name
G0818 CONVERT TO
FLO~T
Comments
Converts integer constant
to floating point.
G0829 EXIT
Returns.
EXIT ML
EXIT ON ROLL
G0840 PRINT
MESSAGES
Prints
line
messages.
of
Clears output
printer.
area
G084) READ A
CARD
Puts
card onto SOURCE
roll and re-enters IN1T
READ A CAkD at proppr
point.
G0845 SKIP TO
NEXT CHAR
MASK
Scans
error
for
input
to
next
character not of
a class 6f characters
specified as input to
routine.
sourc~
G0846 REENTRY
Entry point used to conSKIP TO NEXT tinue masking operation
CHAR MASK
on a new card.
G0834 STATUS
CONTROL
Saves
and
Converts
integer
from
decimal to binary, and
leaves in DATA area.
G0838 PRINT A
CARD
Controls
printing
source
listing
error messages.
G0849 BCD TO
EBCDIC
G0851
~.APTl
TO
addresses of WORK
EXIT roll bottoms.
of
and
arrow to
character.
r-~L
TMPl
192
Co!!!!!!~
to true
G0833 FAIL
Routine
Label Name
G0839 TESTFOR
ERROR
MESSAGE
from
Constructs group
DATA roll.
on LOOP
G103? CONST
REGISTER
EXIT
Routine
Label Name
G1038 T AND F
COt~ST
SCAN
Conunents
Scans for logical
stants T and F in
statements.
conDATA
return.
G1040 DEBUG STA
XLATE
Translates
mente
G1041 AT STA
X LATE
DEBUG
G1044 IEYSKP
SKIP TO
NEXT
PROGRAM
G1070 PRESS
MEMORY
-os-CA
CA
G0362
CB
G0361
G0365
CC
CD
G0371
G0372
CE
CF
G0374
CG
Chart
-!~CH
CI
G0381
CK
G0437
CL
CM
Routine Name
ENTRY NAME ALLOCATION
,".LLOCATION
11.ND
COMMON
OUTPUT
ALLOCATION
PRINT
EQUIV
ERRORS
BASE
AND
BRANCH TABLE
ALLOC
SCALAR ALLOCATE
\;JV"tV.L
\,,1'1
nn~.1.
G0402
CO
G0442
G0443
G0444
G0445
G0441
G0403
G0405
G0438
G0545
CP
CQ
CR
CS
CT
CU
CV
CW
CX
GLOBAL
SPROG
PASS
1
ALLOCATE
SPROG AFG ALLOCATION
G0397
,...",.1'\1
..
" ,
state-
Label
G0359
G0451
Label
G0376
GO)??
Routine Name
START ALLOCATION
ALPHA LBL AND L SPROGS
ALPHA
SCALAR ARRAY AND
SPROG
PREP
EQUIV
AND
PRINT
ERRORS
BLOCK DATA PROG ALLOCATION
PREP DMY DIM AND PRINT
ERRORS
PROCESS DO LOOPS
PROCESS LBL
AND
LOCAL
SPROGS
BUILD PROGRAM ESD
~nn'"
"
J\ T T rv-" 1\
""v
l""'\..LI.LIV'-n.J..L:J
PREP NAMELIST
Comments
Checks the data contained
on the EQUIVALENCE roll
and
computes
the
required addresses.
G0364 REGISTER
ERRORS
SYMBOL
Sets
pointer to the
array
on
the
ENTRY roll; a pointer
to the ARRAY roll 1S
also set for each dummy
array.
a
dummy
193
Routine
Label Name
G0369 DMY DIM
TEST
G0370 DMY
CLASSIFY
Comments
data is
The dimension
checked for having been
previously defined on
the NAMELIST ITEMS and
COMMON DATA rolls.
Classifies a dummy, defining it as scalar if
undefined;
if it is an
array sets call by name
tag.
G0373 REGISTER
BRANCH
TABLE
Places
work containing
zero
on
the BRANCH
TABLE roll.
G0375 PUNCH
REMAINING
ESD BUFFER
PUNCH
REMAINING
CARD
Punches a card.
G0378 SEARCH
ROLL BY
MAGNITUDE
The'
GENERAL ALLOCATION
roll
is searched to
check if the largest
equivalenced area has
been allocated.
G0379 PRINT
COMMON
ERRORS
G0380 PRINT
COMMON
HEADING
G0382 EQUIV
ALLOCATION
Builds
the
EQUIV
ALLOCATION roll
from
the
boundary
calculated;
records
the
absolute
address assignerl to the
variables.
G0384 PROCESS
EQUIV
Constructs
complete
EQUIVALENCE sets on the
the GENERAL ALLOCATION
roll using information
on
the
EQUIVALENCE
roll.
G0385 INTEGRATE
194
Routine
Label Name
G0386 TEST FOR
BOUNDARY
Comments
Sets
and
checks
the
smallest
equivalen~ed
area and highest b0undary required for allocation of the variables
indicated; resets program break according to
requirement.
G0392 BUILD A
NEW CSECT
G0393 PRINT A
ARRAY
CSECT MAP
Determines
whether
indicated variable
called
by
name
called by value.
the
was
or
Routine
Labe!
Na~
G0398 ALLOCATE
SCALAR
BOUNDARY
G0399 ALLOCATE
SCALAR
G0404 ALLOCATE
SPROG
CO!!!IDents
Sets
up allocation of
scalars
according to
the
size
of
the
variable.
Formats the allocation of
scalars not defined as
global dununies in COMMON or in EQUIVALENCE
sets.
Initializes for
the
printing of the
scalar map and calculates
tne
base and
displacement.
Determines if the variable is defined as a
global dummy, in COMMON
or in an EQUIVALENCE
set.
If it is, it sets
the ANSWER BOX = true.
Sets the type of the ESD
cards that are to be
punched and initializes
for the allocation of
subprogram addresses.
G0410 PUNCH
LITERAL
Obtains the
number of
bytes and the address
of the roll indicated
for punching of literal
constants.
G0411 MOVE TO
PUNCH BUFF
Punches
the
indicated
TXT card after setting
up
the
address and
buffer information.
Routine
Label Name
GOiiI3 PUNCH
REMAINING
TXT CARD
Conunents
the
Punches
remaining
card indicated, after
the area from
which
data was being taken
has been punched.
Punches the indicated ESD
cards for the program
area indicated.
G0424 PRINT
FORMAT MAP
Prints
map
statements.
G0425 PRINT
HEADING
MESSAGE
Prints the
dicated
messages.
Prints the variables associated with the storage map heading from
the rolls indicated.
ML
of
FORMAT
heading infor
error
G0431 PRINT
Print the remal.nl.ng inREMAINING
formation in the print
BUFFER
buffer after the data
G0432 PRINT ERROR
has been obtained from
REMAINING
the indicated storage
BUFFER
area.
G0433 ALLOCATE
FULL WORD
MEMORY
Initializes
for
allocation of a
word of storage.
G0434 ALLOCATE
MEMORY
G0435 ALLOCATE
BY TYPE
the
full
195
Routine
Label ~~me __
G0436 CALCULATE
SIZE AND
BOUNDARY
G0419 CALCULATE
BASE AND
DISP
CO~~!!ts
G0440 REGISTER
BASE
Constructs
a new
TABLE roll group.
G0446 BUILD
FORMATS
G0447 INCREMENT
PNTR
Routine
Label Na~
G0460 CLEAR TWO
AND EXIT
FALSE
Comments
Prunes two groups from
WORK
and
the
roll,
a false
exits
with
answer in ANSWER BOX.
Prunes four
WORK
the
exits.
groups from
and
roll,
groups from
and
roll,
BASE
Increases
the
address
field of the pointer to
the indicated roll so
that the pointer points
to the next group on
the roll.
G0468 EXIT
Obtains return
address
from the EXIT roll, and
transfers
to
that
address.
Sets
the mode of the
variable to fixed or
floating,
explicit or
implicit, or not used.
Set ANSWER
and exit.
l~04
Chart
Label
GOll1
07
Routine Name
START UNIFY
G0145
DA
GOl13
DB
GOl12
DC
GOl15
DD
DO NEST UNIFY
196
BOX
to true
Routine
!.abe! Name
Routine
Comments
Transfers
~Name
to
phase of the
the
Gen
~compiler.
Processes
SCRIPT
roll
block to reflect storage allocation.
GOtt8 DO LOOP
UNIFY
GOl19 SWEEP
SCRIPT
EXP NOTE
Establishe~;
the script
standard
G0126 STANDARD
the nature of
entries as
or
non-
Comments
Processes STD SCRIPT roll
._; ...... _-..
... "~,,
""l',,"'lc-mr.
__ ,
nVl'''JJ..L.I
LV.L.L
'1
SCRIPT TO
STD
G0129 DELTA GE
4087 UNIFY
G0130 DELTA LE
4087 UNIFY
G013l ESTABLISH
REG
STRUCTURE
controls
formation
of
LOOP CONTROL and REG
roll groups for SCRIPT
pointer in WOe
G0133 ESTABLISH
LOOP
CONTROL
standard~
G0122 ESTABLISH
STD SCRIPT
EXP
G0123 NOTE HI
FREQ STD
197
Routine
Label Name
G0137 UPDATE
FREQS
Comments
Sums the frequencies of
the STD or NONSTD pair
to indicate increased
usage.
the STD
or
Registers
NONSTD in Wo on the STD
or NONSTD roll.
G0139 PRUNE
SCRIPT REL
TO PNTR
G0141 REALIZE
REGISTERS
SWEEP
G0142 NOTE HI
FREQ REG
G0143 ASSIGN
TEMPS FOR
REGS
198
Chart
ID
Routine Name
START GEN
Label
(;0491
--os
G0499
EA
GOS04
EB
PROLOGUE GEN
GOS08
EC
EPILOGUE GEN
G0712
ED
GET POLISH
G0493
EF
LBL PROCESS
GOS1S
EG
STA GEN
G0496
EH
Comments
Clears the base
table.
register
Fills
the
indicated
number of groups on the
TEMP
AND CONST roll
with zeros.
Routine
Label Name
G0507 CALCULATE
DMY DIM
Comments
Determines
the
dummy
array dimensions snecified- in the arg~ents
for the subprogram.
Calculates
the
dummy
array dimensions specified as arguments to a
subprogram. and builds
the
appropriate
instructions.
Determines whether
the
arguments to a subprogram were designated as
call by name values.
G0511 BUILD A
MOVE DMY
GROUP
G0512 BUILD A
STORE DMY
ADD
G0513 INCREMENT
DMY PNTR
G0514 BUILD A
LOAD TWO
These
routines
build
the instructions that
transmit the indicated
values transferred by
the dummy arguments to
subprogram.
G0516 ASSIGNMENT
STA GEN
Constructs
the
code for
an
statement.
Constructs
the
object
code
for
an
IF
statement.
G0521 LOGICAL IF
STA GEN
object
ASSIGN
Constructs
the
object
code for a Logical IF
statement.
Routine
Label Name
G0522 BUILD JUMP
INST
G0523 GO TO STA
GEN
G0524 ASSIGN GO
TO STA
GEt~
G0525 GO TO JUMP
GEN
Comments
Constructs a branch instruction i
with input
indicating
type
and
branch point.
These
routines control
and
construct
the
object code required to
execute the indicated
type of GO TO statement.
Returns.
the
statement
Stores
number
and
leaves
statement drives in Wo.
Adjusts
the
data
instruction format.
G0535 MOVE TO
CARD IMAGE
and
data
concode
this
for
199
Routine
Routine
Comments
Controls the insertion of
G0536 MOVE TO
the data into the card
CARD REPEAT
format and the punching
of the appropriate TXT
card.
Labe! Name
Label
t!~
__
Comments
Determines the type of
input/output statem~nt
that is indicated and
transfers to the routines that process that
particular
typP.
of
statement.
G055? INIT 10
LINK GEN
G0542 CALCULATE
VAR SIZE
G0558 UNIT 10
Determines the
logical
unit number
of
the
input/output devicp.
Determines
size of
a
variable from TAG field
of pointer in WO.
Constructs
the
object
code
for a STOP or
PAUSE statement.
ARG
G0559 DIRECT 10
ARG
G0560 FORMAT 10
ARG
G0561 10 INITIAL
ENTRY GEN
G0563 BUILD A
LINK ARG
Object
Constructs
the
code for the arguments
designated
in
the
input/output
statements.
G0564 BUILD
FORMAT ARG
Constructs
the
object
code for the designated
format control of an
input/output statement.
G0565 GRNTEE 10
LINK ADD
Constructs
code for
linkage.
G0566 IOL DO
CLOSE GEN
G0567 10 LIST
GEN RUN
G0554 ILLEGAL
AFDS STA
GEN
200
the
object
input/output
Routine
Label Name
G0568 IOL DO
OPEN GEN
Routine
Comments
Sets up the data for the
generation of instructions fo~ input/output
00 loop.
Generates
linkage
for
secondary array entry
to IBCOM.
G05iO 10 LIST
PNTR GEN
IOL PNTR
GEN
G0571 10 LIST
ARRAY PNTR
GEN
Sets
up the data and
determines the type of
array list.
G0572 BUILD
ELEMENTS
ARG
Determines
whether the
variable in
question
has
been defined in
usage
as
a
global
dummy.
G0576 BUILD 10
LINK
Controls construction of
the object code to terminate an input/output
operation.
G0577 LOAD
ADDRESS
I BCOM
G0579 CALCULATE
LENGTH AND
TYPE
Label Name
Comments
Obtains the 00 control
data and controls the
construction
of
the
appropriate
instructions.
Constructs
the
object
code for the initialization of the indicated
induction
variabl~
coefficient.
G0584 DO CLOSE
SBR
Constructs
the
object
code for the close of a
DO loop after setting
up
controls for the
increment and terminal
values
of
the loop
iteration.
G0586 NOTE
REO
Determines
whether
a
register
has
been
assigned for the script
expression in question
or whether a temporary
storage is required.
TEMP
the
load of
G0587 INITIALIZE Generates
registers to be used
BY LOAD GEN
throughout a DO loop.
GOS88 GRNTEE TEMP Builds a store instrucSTORED GEN
tion for the temporary
storage used by
the
script expression.
G0589 GRNTEE
SOURCE REG
LOADED
201
Routine
Label Name
(;0607 CALL STA
GEN
Corrunents
Calls the routines which
build the object code
for the CALL statement.
Flips POLISH
roll and
moves first variable to
WORK roll.
Obtains
the expression
for GEN processing.
Routine
Label Name
G0623 DRIVER GEN
Comments
If an array driver, goes
to SCRIPT PREP; if not,
exits false indicating
end of an expression.
G0626 OR GEN
G0627 OR FINISH
GEN
Actually builds
an OR
operation on CODE roll.
G0630 NE GEN
G0631 LT GEN
G0632 GT GEN
Controls production
of
object code for divide
operation.
G0633 GE GEN
G0634 LE GEN
(;Ob1 b INTEGER
DIV GEN
G0635 RELATIONAL
GEN
GeneJ.:ates code
operation.
Controls production
of
object code for multiply operation.
for
intesubado
202
Builds
linkage
roll.
exponentiation
on the CODE
Routine
Label Name
G0639 INTEGER
POWER GEN
Comments
Builds the
appropriate
load
and
multiply
instructions for exponentiation depending on
the
mode
of
the
operation.
Determines
the nature of
the operand of
statement
or
subprogram.
G0641 SPROG GEN
SUB
Generates the
a
of
CALL
a
G0656 TEST FOR
BEST PAIR
code for a
Constructs
the
object
code for the return or
close of a subprogram.
Controls
the
register
assignment
to
subprogram arguments
as
they are encountered in
sequence.
calcu-
Comments
These routines determine
and clear a pair
of
fixed or floating accumulators depending on
the type of the register in WOe
These
routines are used in
integer,
multiply,
divide:
and
complex
operations,.
indicat-ed.,
ARG
Routine
Label Name
G0653 CLEAR A
PAIR
G0654 PICK A
PAIR
G0655 PICK A
PAIR END
Guarantees
that
the
subprogram
arguments
are assigned and builds
the indicated load and
store instructions.
Determines mode of a constant
subprogram
argument.
Tests to determine if any
register
used as an
accumulator
contains
data;
if so, generates
code to store the contents in a temporary
location.
G0648 GRNTEE AC
GEN
These routines
determine the accumulator to
be used in an indicated
operation
depending
upon the mode of the
variable in question.
G0657 GRNTEE
POSITIVE
GEN
G0658 COMP FX
CONST
G0659 COMP FL
CONST
G0660 COMP DP
CONST
G0661 COMP
COMPLEX
CONST
Sets the
mode of the
indicated constant.
in
G0663 INCLINE
FUNCTION
GEN
G0664 CONVERSION
FUNCTION
GEN
G0665 ABS
These routines generate
FUNCTION
the
object
code inGEN
structions for the inG0666 MOD
line function indicated
FUNCTION
by the name of the rouGEN
tine.
G0667 INT FUNCTION GEN
G0668 AIMAG FUNCTION GEN
G0669 CMPLEX
FUNCTION
GEN
G0670 TWO ARG
INLINE
COMMON
G0671 CONJG FUNCTION GEN
203
Routine
Label Name
G0672 SIGN FUNCT
GEN
G0673 DIM FUNCT
GEN
G0674 GRNTEE
BOTH MODES
G0675 GRNTEE
MODE Wl
Co!!!ments
(see Label GOEfiS)
G0676 LOGICALCONVERSION
G0677 FX
CONVERSION
G0678 FL
CONVERSr0N
G0679 CONVERT TO
COMPLEX
END
G0680 TEST A FL
CONST
G0681 DP
CONVERSION
204
Routine
Label Name
G0682 TEST DP
CONST
Comments
Exits false if pointer in
Wo is not to a doubJeprecision
constant;
otherwise,
loads con~tant into central area
and exits true.
G0683 COMPLEX
CONVERSION
Determinp~
G0684 DP COM1LEX
CONVERSION
[)et.f> r mi
GOb85 COMPLEX
AC TEST
tH':'
t hf'
modC' and
rcgl!'itC[S th(~ indicated
double-precision
complex
variable
or
constant.
G0688 REGISTER
WORK CONST
Records constant. in wo as
an integer constant.
G0696 FIX A FL
Converts
a fixed mode
constant or generates
code to convert a fixed
variable
to floating
mode.
G0708 TEST AC
AC TEST
whether the
Determines
mode of the indicated
accumulator is fixed or
floating.
Routine
Label Name
G0709 AC END
Comments
Determines whether one or
two accumulators
are
being used.
G0710 GRNTEE AC
ZERO
G0711
REG
the
the
ex-
G0734 CALCULATE
SCRIPT
G0736 CALCULATE
OFFSET AND
SIZE
DTlTTn
UV,L.J..jlJ
SHIFT 9
ML
Comments
roll and
Bui Ids ADCON
returns a pointer to
Ul~ start of a group on
the roll.
to true
ML
Routine
Label Name
G0730 ADCON MADE
LBL MAKER
Returns.
BID
BIDPOP
This is the
assembler
language routine which
constructs the instruction designated by the
BIDPOP instruction.
205
Routine
Label Name
G0150 BIN
BINPOP
G0151 NOTE A
CSECT
Comments
This is the
assembler
language routine which
constructs the instruction designated by the
BINPOP instruction.
This routine obtains the
Control
section
in
which
the
current
instruction being generated is to be placed.
G0152 BIM
BIMPOP
This is the
assembler
language routine which
constructs the instruction designated by the
BIMPOP instruction.
G0153 RX FORMAT
G0154 RR FORMAT
G0755 ADDRESS
MAKER
G0756 BUILD A
BASE REG
G0757 SCALAR
OPERAND
ARRAY
OPERAND
GLOBAL
SPROG
OPERAND
USED FUNCTION LIB
OPERAND
NAMES LIST
OPERAND
FORl-"AT LBL
OPERAND
GLOBAL DMY
OPERAND
Generates address
FOMAT references.
Routine
Label ~~!!! __
G0760 SPROG ARG
OPERAND
G0761 BRr..NCH
TABLE
OPERAND
G0162 BRANCH
TABLE
COMMON
G0763 BRANCH
SPROG
COMMON
G0164 T AND C
OPERAND
Constructs
address for
references to temporary
storage or constants.
G0765 T AND C
COMMON
G0166 T AND C B
COMMON
Common
exit
for
all
branch and
temporary
and
constant operand
routines.
G0168 FX CONST
OPERAND
CONST
SEARCH AND
REG FL
CONST
206
oments
Builds address for reference
to
subprogram
argument Ii st.
Routine
Label Name
G0772 REGSP
Comments
Registers
,-;,-,'lo.'Trm
\"'Vl~u.L
~"VJ.l
single-preci-
COiistar1t
.-~r.
,-,u
TE..M~
Routine
Label Name
G078ii STORE IN
TE~.P
<;0776 DP CGt-1PLEX
CONST
OPERAND
Constructs address
for
reference to a doubleprecision complex constant.
G0777
~;EARCH
AND
REG DP
COMPLEX
CON!::iT
G0778 REG DP
COMPLEX
CONST
code to
store
porary location if Wo
is
a
pointer to a
register.
address
for
G0773 DP FL CaNST Construct
OPERAND
references to doubleand
precision
real
COMPLEX
comsingle-precision
CONST
plex constants.
OPERAND
Comments
Generates
G0786 SEARCH
TEMP ROLL
Determines if pointed to
variable
is
COMMON,
EQUIVALENCE, alterable,
or dummy; if so, spoils
any register containing
a subscript which uses
any CEAD variable; and
prunes one group from
WORK.
207
Routine
Label N=am=e__
Comments
G093? SIMPLE
BuildS---ARRAY PLEX roll
SCRIPT PREP
for subscripts handled
in registers 8 and 9.
Routine
Label Names
G0953 BIN
VARIABLE
G0938 CLEAR 3
EXIT BIN
G0939 CLEAR 1
EXIT BIN
G0954 RETURN
SCALAR OR
ARRAY PNTR
Returns
pointer
to a
SCALAR or ARRAY roll
group from less direct
reference.
G0942 SIMPLE
SCRIPT
OPERAND
Comments
Puts name of
CODE roll.
variable on
NAME
linkage
DISPLAY
Generates
DEBUG
calls
after a CALL statement.
G0944 LOAD
SIMPLE X
REG
G0948 TRACE ON
STA GEN
Label
G0381
G0382
G0383
G0384
G0399
G0400
G0402
G0403
G0404
G0405
G0416
G0424
G0564
Chart
G0950 DEBUG
Generates initial linkage
INITIAL
to DEBUG.
LINKAGE GEN
G0951 DEBUG VAR
ADR GEN
Generates
address
for
IN IT
or
SUBCHK
variable.
G0952 DEBUG
ELEMENTS
GEN
208
-1!L.
09
FA
FB
FC
FD
FE
FF
FG
FH
FI
FJ
FK
FL
Routine Name
EXIT PASS
PUNCH TEMP AND CONST ROLL
PUNCH ADR CONST ROLL
PUNCH CODE ROLL
PUNCH BASE ROLL
PUNCH BRANCH ROLL
PUNCH SPROG ARG ROLL
PUNCH GLOBAL SPROG ROLL
PUNCH USED LIBRARY ROLL
PUNCH ADCON ROLL
PUNCH RLD ROLL
PUNCH END CARD
PUNCH NAMELIST MPY DATA
Routine
Label Na~___
G0385 SWEEP CODE
.Routine
Label
Comments
Determines
the nature of
ROLL
::. word on
SWEEP CODE
ROLL ML
and processes it
cording to type.
HALFWORDS
~!~
__ _
the
indicated
~ ..- ....
~ ""' .......
;;.;;, .. ~ __ ~ .L.
___ _
~vu..:;
'-v
'-110::;-
VU'-l'UL.
Cl.&.II:Cl
to be punched.
ac-
Comments
Transfers
for~at
G0410 INITIALIZE Initializes the
for the punching of the
TXT CARD
TX'I' cards.
G0411 INITIALIZE
TXT CARD ML
of a 1XT
GC412 PUNCH
PAP.TIAL
TEX,\ CARD
Punches any
card.
~art
G0413 PUNCH A
Punches
card.
complete
Sets
G0390 PUNCH
THREE
HALFWORDS
Punches
the
indicated
instruction
in
the
indicated format.
up
a one halfword
format.
instru~tion
(;0393 RELOC
CaNST
PUNCH
G0397 ADCON
PUNCH
Initializes
for
the
punching of the groups
contained on the BASE
and BRANCH TABLE rolls.
G0407 WO TO TXT
CARD
WO TO TXT
CARD ML
TXT
G0414 PUNCH AN
ESD CARD
G0411 DEPOSIT
LAST FSD
NO. ON
RLD CARD
G0418 DB SECOND
RLD WORD
WITH CONT
GOLI19 DB SECOND
RLD WORD
WITH NO
CaNT
DB S~COND
RLD WORD
GOll20
for the
an ESD
G0421 DEPOSIT
WORD ON
RLD CARD
G0422 PUNCH AN
RLD CARD
G0423 TERMINATE
RLD
PUNCHING
Determines
whether the
RLD card is full and
sets controls accordingly.
G0426 RS OR SI
FORMAT
Determines
whether the
indicated
instruction
is RS or SI format.
halfword
instruction
format is set up for
the contents of WOe
209
RoutinE'
Label Name
Goii'27 RSFORMAT
G0428 SI FORMAT
. G0429 RX FORMAT
G0430 RR FORMAT
Comments
SetS-up-the RS format for
the indicatE'd instruction.
Sets up the SI format for
the indicated instruction.
Sets up the RX format for
the indicat~d instruction.
Sets up the RR format for
the indicated instruction.
Routine
Label Name
GOiiii3 PHINT-HEADING
PRINT
HEADING
ML
G0444 PRINT
COMPILER
STATISTICS
Q!!!!!!~!!~~
Prints
the
indicated
heading that is to
appear on the Object
module listing.
G0447 PRINT
CSECT
MESSAGE
Sets up th indicated
message in the print
output area.
Converts the
in~icated
general register designation for the RX,
RS,
and RR formats.
G0433 DC LIST
Lists DC constants.
G0434 PRINT
ADCON
tSl
Converts the
indicated
address
and
general
register
designation
for the SI
and
SS
formats.
G0435 PRINT A
MADE LBL
Sets controls
for the
printing of the indicated label that has
been
created by the
compiler.
G0431 SS FORMAT
Inserts the
indicated
label into the print
output area.
G0437 PRINT A
LBL
PRINT 12 ML
G0438 PRINT BCD
OPERAND
G0439 PRINT A
LINE
PRINT A
LINE PLUS
ONE ML
G0440 PRINT A
LINE NL
210
Converts the
indicated
address
and
general
register
designations
to instruction format.
Routine
Larel NaJI\e
G0458 CONV AND
Comments
Converts a number to dec-
PRltiT PLUS
imal
ONE ML
print buffer.
and
places
in
G0459 PRINT A
COMMA ML
G0460 PRINT A
LEFT PAREN
ML
parenPlaces
right
G04b! PRINT A
thesis into the print
RIGHT PAREN
output area.
ML
G0462 PRINT A
CHAR ML
Places
the
indicated
character
lnto
the
print output area.
Routine
Label Name
G0465 EXIT
EXIT ML
EXIT
ANSWER ML
Comments
Obtains the last entry on
tne
EXIT
roll
and
transfers to the indicated
location.
Sorts RLD entries so that
all RLDs in one CSECT
appear together.
Wo.
211
The library performs a variety of function:." which are of five general types:
load module initialization and termina~l(m activities
input/output operations
error handling
~ata conversion
mathematical and service functions
It is an important library responsibility
to form an interface between the load
moclulp dnd the operating system:
library
s~bproqrams interface with the data managempnt access methods, provide exit routines
for
the
system interrupt handler and
at-.normal termination processor, and call
the :-,llpervisor for varlOUS services.
Table
9.
Routines Affected by
Error Handling Option
Extended
r--------------------T--------------------,
Without
I
With
I
I
I
I
Extended
Error Handling
I
I
Extended
Error Handling
.--------------------+--------------------~
212
I
I
I
I
I
IHCFCOMH
IHCUOPT*
IHCDIOSE
IHCFIOSH
IHCFINTH
IHCTRCH*
I
I
I
I
I
I
I
I
I HCECOMH
IHCUOPT*
IHCEDIOS
IHCEFIOS
I HCEFNTH
I HCETRCH
I HCERRM. *
IHCFOPT
I
I
I
I
I
I
I
I
.--------------------~--------------------~
I
I
IHCTRCH
MODULE SUMMARIES
I HCFCOMH/IHCECOMH
This module (with its CSECT extension
IHCCOMH2)
handles the load module
initialization and termination activi-
consave
from
used
IHCNAMEL
This module directs NAMELIST read/
write operations (entry point FRDNLW
for reads,
entry point FWRNLW for
wri t,es).
IHCFIOSH/IHCEFIOS
This module interfaces with the basic
sequential access methods to do all
sequential input/output for the load
module.
It is called (at entry point
FIOCS.) by IHCFCOMH/IHCECOMH and
I HCNAMEL
to perform user-requested
read/wr i te and devic'e
manipulation
operations, and by other library routines
(such as IHCERRM, IHCFDUMP,
and IHCDBUG)
to write error
mesages, traceback maps, user-requested
dumps, debug information, etc.
IHCDIOSE/IHCEDIOS
This module interfaces with the basic
direct access methods to do all direct
access input/output for
the
load
module.
It is called by the compilergenerated code (at entry point DIOCS#)
for DEFINE FILE statements,
and by
IHCFCOMH/IHCECOMH (at
entry
point
IBCENTRY) for READ, WRITE, and FIND.
I HCFCV'I'H
This
module
does data conversion
required by other library routines.
It is called (at entry point ADCON#)
for formatted and namelist
input/
output,
and for other library opera~
tions (such as traceback) that require
EBCDIC output.
IHCIBERH
This module is called by the compilergenerated code (at entry point IBERH#)
to terminate load module execution due
to source statement error.
rHCERRM)
lS
Appendix F:
213
I HCSTAE
This module, which resides in the link
library, is the STAE abnormal termination
processor.
When
IHCFCOMHI
IHCECOMH receives control (at entry
point
EXITRTN1)
from
the system
because the load module has been scheduled for abnormal termination, it
loads IHCSTAE to attempt completion of
outstanding
input/output
requests
before execution ends.
IHCUATBL
This module is the unit assignment
table.
It contains information about
the user's data set references, and is
used by the library input/output routines in their operations.
IHCFDVCH
This module is called by the compilergenerated code (entry point DVCHK) at
user request to determine if a divide
checK interrupt occurred.
I HCFOVER
This module is called by the compilergenerated code (entry point OVERFL) at
user request to determine whether or
not overflow or underflow interrupts
occurred.
IHCFSLIT
This module is called by the compilergenerated code (entry points, SLITE,
SLITET) at user request to set or test
private
switches
("pseudo-sense
lights")
IHCFEXIT
This module is called by the compilergenerated code (entry point EXIT) at
user request to terminate load module
execution.
214
IHCFDUMP
This module is called by the compilergenerated code (entry {Joints DUt-'P,
PDUMP) at user request ta produce a
of
specified areas of main
dump
storage.
IHCDBUG
This module is called by the compilergenerated code (entry point DEBUG#) to
direct
the
production
of
userrequested debugging information.
MATHEMATICAL
ROUTINES:
Information on
theS;-rr6iary-modur;S-can be found in the
publication IBM Systeml360 operating System: FORTRAN IV Library--Mathematical and
Service SUbprograms, Order No. GC28-6818.
LIBRARY INTERRELATIONSHIPS
It is helpful to recognize that there is
not
always
a
one-to-one relationship
between library functions
and
library
modules. Some functions require the execution of several modules, and, conversely,
some modules are involved with more than
one function.
Certain library modules are called primarily by the compiler-generated code, but
a large number are called only, by other
library modules or by the system.
This
relationship is illustrated in Figure 16.
In interfacing with each other, with the
system
and with the compiler-generated
code, library modules use ~2~~~ndard calling and register-saving procedures.
n
C
M
P
LibiaiY fOutines
entered initi;o'ly
Library routines
entered only
from compiler-
from other
-=e:ra~ code _
library routines
or the system
IHCDBUG
! HCFDU~~P
!HCADJST
IHCFDVCH
IHCFCVTH
I
L
IHCFExlT
IHCFINTHI
IHCFOPT
IHCEFNTH
R
IHCFOVER
E
N
E
R
IHCFSLIT
IHCIBERI-i
IHCNAME L
IHCFIOSHI
IHCEFIOS
IHCSTAE
IHCTRCH
P
R
T
I
N
IHCUATBL
IHCUOPT
E
D
s
y
S
T
o
B
J
E
C
T
o
E
u
Figure 16.
IHCFCOMH/IHCECOMH
I HCDIOSEIIHCE DIOS
IHCETRCH
IHCERRM
Mathematical routines
Issues
fying
The library is responsible for the
loari
module's
initialization activities.
Every
compiler-generated main program begins with
a branch to the IBFINT section of IHCFCOMH/
IHCECOMH.
This
libra~y
routine performs
the following initialization procedure:
Saves the load module entry point
In
its
location MAINEP, and the main program's save area pointer in its
location REG13.
libr~ry
Appendix F:
to
open
the
215
pro-
INPUT/OUTPUT OPERATIONS
Processing FORTRAN input/output requests
is
mainly
the
responsibility of the
library. For each request, the compiler
sets up a call(s) to the appropriate entry
point in the appropriate library routine.
For NAMELIST READ/WRITE,
the call is to
IHCNAMEL, which
then
calls
IHCFIOSHI
IHCEFIOS and IHCFCVTH.
For DEFINE FILE,
the call is to IHCDIOSE/IHCEDIOS. For all
other operations, the call is to IHCFCOMHI
IHCECOMH. If the operation is sequential
READ/WRITE,
the IHCFCOMH/IHCECOMH routine
216
DEFINE
FILE
all other
NAME LIST
READ/WRITE
'10 ieQuasts
iHCFCvTH
IHCFCOMHI
IHCECOMH
interprets
request
sequential
READ, WRITE,
BACKSPACE,
REWIND,
ENDF I LE
access
READ,
WRITE,
FIND
IHCDIOSEI
I HCE DIOS saves
DEFINE FILE data;
submits i/O request
to data management
"'---
load module
write to
operator
(STOP and
PAUSE)
- - -
____ -
--,
- - "I
-I I
I I
operating
system
I 1
Basic Direct
Access Methods
Figure 17.
IHCNAME L
Interprets
request
converts
and moves
user's I/O
data
Supervisor
Basic Sequential
Access Methods
217
DEFINE FILE
The
compiler-generated code branches
directly to IHCDIOSE/IHCEDIOS at
entry
point
DIOCS#.
This section takes the
address of the parameter list containing
the data set characteristics supplied by
the user and places it in the appropriate
unit assignment table (IHCUATBL) entry.
There may be more than one data set defined
per DEFINE FILE statement, in which case
DIOCS# loops through the definitions, placing the parameter list addresses into the
table.
If a data set has been
previously
defined, the new definition is ignored. If
the data set requested is sequential rather
than direct,
IHCERRM is called with error
condition 235 indicated.
If the data set
is the object error unit, IHCERRM is called
with error 234 indicated.
DIOCS# also places the address of the
section IHCDIOSE/IHCEDIOS
that
handles
actual reads and writes--IBCENTRY--into a
fixed location in IHCFCOMH/IHCECOMH,
in
order to establish addressability for later
branching.
If the user fails to place his
DEFINE FILE statement ahead of his associated
READ
or WRITE statement, this
address will not be available, and an error
condition will occur.
DIOCS# returns to the compiler-generated
code.
was
write
end
of
PREVIOUS
OPERATION:
IHCFIOSH/IHCEFIOS
will contain the DCB, DECBs,
and other library
information to be used in
contrOlling
operations.
Space for the unit block is
acquired with a GETMAIN, and a pointer to
it is stored in the IHCUATBL entry.
(The
contents of the unit block are outlined in
Figure 20.)
IHCFIOSH/IHCEFIOS inserts certain standard values into the DCB in the unit block.
It do~s this by moving in a copy of a
nonfupctioning skeleton DCB, which specifies DSORG as PS, MACRF as (R,W), DDNAME as
FTnnF001, and gives addresses in IHCFIOSHI
IHCEFIOS for SYNAD and EODAD, and for
EXLST, which specifies the OPEN exit routine.
IHCEFIOSH/IHCEFIOS puts the data set
reference number into the nn field of the
DDNAME. This establishes for' the system
the connection between this DCB and the
user's DO card, which must have the same
name on it.
IHCFIOSH/IHCEFIOS now issues an OPEN
macro instruction, which merges the user's
DO information, and label information if
the data set already exists. When its open
exit routine (IHCOCBXE) gains
control,
IHCFIOSH/IHCEFIOS examines the DCB.
If
fields are zero, indicating the user has
omitted
corresponding
DD
parameters,
IHCFIOSH/IHCEFIOS inserts library default
val ues.
(These defa ul t values are stored
in the IHCUATBL entry.)
After completion of the OPEN macro,
IHCFIOSH/IHCEFIOS
places
the
buffer
address(es) in the housekeeping section of
the unit block, and also in the DECB(s).
It also puts the DCB address into the
DECB(s).
If this is a read operation, it
sets the first byte of the type of inputl
output request field in the DECB(s) to
X'80', indicating the reads should be of
blocksize; if this is a write operation, it
sets this byte to x'OO', indicating the
writes should be of logical record length.
If the initialization is for a read
operation, IHCFIOSH/IHCEFIOS now issues a
READ macro, with a CHECK,
filling the
buffer. If double buffering is in effect,
it also issues a second READ macro, to
begin filling the second Duffer.
(This
READ is not checked untilIHCFIOSH/IHCEFIOS
is entered the next time for this data
set.) Control is returned to IHCFCOMHI
IHCECOMH, along with address and length of
the data that was read
If the initialization
operation,
is
for
write
to IHCFCOMH/IHCECOMH.
passing the address
and length of the buffer.
(The actual
write operation will not take place until
IHCFCOMH/IHCECOMH fills the buffer.)
PREVIOUS OPERATION--REAO OR WRITE:
case~
I .. ~ped"C~
For an
array,
IHCFCOMH/
In this
the-data-set-Is-already-open and
~ne
Second Call
The
compiler-generated
code
calls
IHCFCOMH/IHCECOMH,
passing
information
about the first item in the I/O list (its
address,
type, whether it is a variable Or
array, etc.).
If this is a read request
for a variable, IHCFCOMH/IHCECOMH takes the
proper number of bytes from the buffer and
moves them to the indicated address.
For
an array,
IHCFCOMH/IHCECOMH repeats the
process, fillin9 the array element by element.
If this is a write request for a
variable, IHCFCOMH/IHCECOMH takes the item
from the indicated address and moves it
The
Final Call
Fbr a ~ead operation, the main pro9ram
passes control to IHCFCOMR/IHCECOMH which
passps control on to IHCFIOSH/IHCEFIOS.
If
IHCFIOSH/IHCEFIOS finds that, for this data
set,
physical records are larger than logical records,
it
simply
returns
to
IHCFCOMH/IHCFCOMH, which returns to the
compiler-generated Object code.
If physical records are shorter than logical recordS, IHCFIOSH/IHCEFIOS issu~s READ macros
until it reaches the end of the logical
record. This positions the devi~e at the
beginning of the rtext logical 'record, in
preparation for subsequent FO~TRAN RFAD
requests for this'unit.
For a wri te op~ration, IHCFCOMH/IHCECOlflH
gives dontrol to IHCFIOSH/IHCEFIOS.
If the
data set is unblocked, or if it is blocked
and the buffer is full,
IHCFIOSH/IHCEFlbS
issues a final WRITE maer'o.
Appendix F:
219
DCBBLKSI--IHCFIOSH/IHCEFIOS changes
this
field before writing out a short
block when RECFM=FB.
IHCFIOSH/
IHCEFIOS restores it after issuing the
corresponding
CHECK
macro.
DCBOFLGS--before issuing a CLOSE (TYPE=T)
macro to implement an ENDFILE
request, IHCFIOSH/IHCEFIOS turns
on the high order bit to make
this look like an output data
set.
IHrFIOSH/IHCEFIOS
also modifies some
fields of the DECBes), in addition to its
initialization:
DE~TYPE
If
an end-ot-file is detected when
IHCFIOSH/IHCEFIOS issues a CHECK macro, its
EODAD routine gains control.
It branches
to the user's END= address if one exists.
If not, it branches to IHCERRM.
Without
extended error handling, this is a terminal
error.
with extended error handling, control returns to IHCEFIOS after error message and traceback printing, and possible
user corrective action.
IHCEFIOS T-closes
the data set, and returns to its original
caller at the error displacement.
If an input/output error is detected
when
IHCFI0SH/IHCEFIOS
issues a CHECK
macro, its SYNAD routine gains control.
It
issues a GETMAIN for extra space, and then
issues a SYNADAF macro, which puts relevant
information into the area.
(If extended
error handling exists,
IHCEFIOS has the
associated data set reference number converted and places it into
the
error
message--218.)
IHCFIOSH/IHCEFIOS next asks
data management to accept the data in
error, and restart the lOB chain.
IHCERRM
is then called.
Without extended error
handling, the error message and traceback
are printed,
and then IHCERR~ branches to
the user's ERR= address if there is one,
and to the IBEXIT section of IHCFCOMH if
there was not.
With extended error handling,
IHCERRM goes to the user's option
table exit routine if there is one and,
in
any case, prints out the error message and
traceback. Then it branches to the user's
ERR= address, if there is one.
If not, it
returns to IHCEFIOS, which continues processing if the user supplied his own corrective action:
if not, IHCEFIOS returns to
the error displacement vf the routine that
originally called it.
OPENING SECTION:
Upon return from the
initialization
section
of
IHCFIOSH/
IHCEFIOS, IHCFCOMH/IHCECOMH begins examining the format specification, the address
of which is passed as an argument in the
initial branch from the compiler-generated
code. The format sppcification may be one
of two types:
one declared in a FORMAT
statement in the FORTRAN source program; or
an array that the user has filled in with
format information during execution (often
referred to as object-time format specification).
In the former case, the compiler
has already translated the statement into
an internal code.
In the latter,
the
format information exists in its EBCDIC
form,
just
as it would in a FORMAT
statement.
In the case of an object-time format
specification,
IHCFCOMH/IHCECOMH must pick
up the array contents and process them so
they are in the same form as a format
specification processed by the compiler.
IHCFCOMH/IHCECOMH does this using the TRT
instruction and its table TRTSTB.
and thpir
The translated format codes,
meanings to IHCFCOMH/IHCECOMH, are listprj
in Table 10.
In both cases,
IHCFCOMH/IHCECOMH now
begins scanning the format information.
It
reads it -- saving the control information
-- until it finds the first conversion code
(or the end of the FORMAT statement). Then
it exits to the compiler-generated code.
LIST ITEM CALLS FOR READ REQ!:!ES:!::
When
IHC~COMH/
is entered for the first list
item, it determines from th~ conversion
code which section of the conversion routine IHCFCVTH to call.
It passes infor~a
tion from the format specification, (such
as scale and width), information about the
list item (such as its address)~ and buffer
address and length.
IHCFCVTH,
and its
associated subroutines, do both the conversion and the moving of the data from buffer
to list item location or vice versa.
In general, after a conversion routine
has
processed
a list item,
IHCFCOMHI
IHCECOMH determines whether or not that
routine can be applied to the next list
variable or array element (if an array is
being
processed).
IHCFCOMHlIHCECOMH
examines a field count in the format specification that indicates the number of times
a particular conversion code is to be
applied to successive list variables or
elements of an array.
If the conversion code is to be repeated
and if the previous list item was a variable,
IHCFCOMH/IHCECOMH returns control to
the main program. The main program again
branches to IHCFCOMH/IHCECOMH and passes,
as an argument, the main storage address
assigned to thp next list itpm.
Appendix F:
221
Table 10.
r------T-----------T--------------T----------T------------------------------------------,
\
\Code After I
I
I
I
\
\Compiler orl
I
I
I
\
\ I HCFCOMHI \
I
\
I
I Source \ I HCECOMH
I
\
t
I
I FORMAT1Translation\
1
I
I
Icode I(in hex)
IDescription
I Type
ICorresponding Action by IHCFCOMH/IHCECOMH I
~------t-----------t--------------+----------+------------------------------------------~
I
beginning of statement
.1 control
I Save location for possible repetition of
1
I
I
Ithe format codes: clear counters.
In(
04n
I
I
I
I
I
la
06a
I
I
I
InP
I
Tn
I
I
108.
I
112n
I
nX
118n
I
,
I
'text'11Aw
or nH I
I
Igroup count
tcont~ol
(n=l-byte
I
value of
I
repeat count~ I
set to 1 if no I
repeat count) I
field count
(a=l-byte
value of
repeat count)
control
control
I
I
I
I
ISave! for repetition of format code that
I follo"s.
I
I
,
ISave ~ for use by F, E, and.O conversions.
I
IReset current position within record
IDth column qr byte.
~------~-----------~--------------~----------~------------------------------------------~
I~~:
is a l-byte value of n, if n was positive: if negative, it is the value plusl
I
128(decimal).
I
w = i-byte value of field width.
Il ________________________________________________________________________
d = 1-byte value of number of digits after the decimal point.
222
I
I
I
~--------------J
Table 10.
r------T-~---------T-----~--------T-----~----T----------------------------------~-------l
Icode After
i i i
I
I
1Compiler or 1
1
IIHCFCOMH/
I
ISourcelIHCECOMH
I
I FORMAT I Translation I
1Code
I (in hex)
I DfC'script ion
I
I
I
I
I
.
I
I Type
~------+-----------+--------------+----------+------------------------------------------i
IF-w.n
IEw.d
IDw.d
IIw
!Aw
IGw.d
iOA
10C
10E
110
w.diI--convers~on
IE-convers~on
w.d
w.d
w
114 w
lA-conversion
tZ w
120 w.d
j16 w
124 w
IG-conversion
IL-conversion
IZ-conversion
I
Il
11C
Igroup end
Icontrol
I
I
I
,LW
'I
I
I
I
lIE
I
1
1
I
1
I
"
' I
I
I
I
I
r------L--- --------. _1.-_ - - - - - - I~_~~~:
I
I
I
1
1
I
I
' I
1
1
'I1
ID-converslon
II-conVersion
----~_
- _______ -
__________________________________________
is it l-byt' vidllP of !!, it !! W<1,; positive; if nf'gdtivp, it i" t_hf' value plusl
128(decimaU.
I
w ~ I-byte value of field width.
I
d = I-byt~ Vo lup of numhf'r of digi t~; after thp decimal point.
I
l _____________________________________________________ - - - - - - - - - - - - - - - - - - - - - _____________ J
Appendix F:
223
Initialization Branch
When IHCDIOSE/IHCEDIOS is given control,
it checks the entry in IHCUATBL corresponding to the indicated data set reference
number to see if the data set has been
opened.
If not,
IHCDIOSE/IHCEDIOS constructs a unit block for that data set in
an area acquired by a GETMAIN, and places a
flointer to it in the IHClJATBL entry.
(This
Ilnit block,
which is slightly different
from ones created by IHCFIOSH/IHCEFIOS, is
diagrammed in Figur p 21.)
IHCDIOSE/IHCEDIO~
next reads the Job
File Control Block (JFCB)
via a RDJFCB
macro instruction. The appropriate fields
in the JFCB are examined to determine if
the user included a request for track
overflow and a BUFNO subparameter in his DD
statement for this data set.
If he did,
they are inserted into the DCB skeleton in
the unit block.
If BUFNO was not included
or was other than 1 or 2, a value of 2 is
inserted in the DCB skeleton.
IHCDIOSEI
IHCEDIOS next examines the data set disposition field of the JCFB.
If the data set
is new and the requested operation is a
write,
IHCDIOSElIHCEDIOS must first format
the data set before it can do the actual
writing.
FORMATTING
A NEW DATA SET:
IHCDIOSEI
IHCEDIOS modifies---the-~Fca--so that the
disposition is old, and fills in the following fields in the DCB in the unit block:
CB2:i~!9
BUFNO
NCP
DSORG
MACR
OPTCD
DDNAME
se~~ing_Qf_!i~!~Q~for~-2~~~
X' 02'
X'02'
Two buffers
Two DECBs
X:40=
Set for DSORG=PS
X'0020'
Normal BSAM WRITE
Set to X'OO' or X'20'
depending upon whether
chained scheduling was not
or was specified on the DD
card as obtained from the
JFCB.
Set to FTnnF001, where Inn'
is the DSRN.
NCP
DSORG
MACR
MACR ..
OPTCD
as
opening
~~!~~:
Read:
Upon
initiAl branch, IHCr~\I()~;E/
IHCEDIOS gpts t hp re la ti V' record number requested by the
use{,
which has
been passed along by IHCFCOMH/IHCECOMH.
IHCDIOSE/IHCEDIO~
examinps thp buffer
to see if the record is already present.
(This will be th( ca~iP if thf>
user oreviouslv TPf1IlPC;tPr1 rl
FIND
fr,y
this record: )
'I f
nul
plese nt ,
IHCDIOSE/IHCEDIOS issues a
READ macr'
and,
in ei ther case issues a CHECY_
After updating the associated varla~]~
in the parameter Ijst to POlllt tu f)-V
record following thp nne
just
r~ad,
IHCDIOSE/IHCEDIOS rf'turns to IHCFCOMfU
IHCECOMH, passinq the buffer addrpss
and length.
WRITE OPERATION:
When IHCFCOMH/IHCECOMH
has-iTlled-the-Fiuffer with list items,
il
hranches to IHCDIOSE/IHCEDIOS indicating a
write request.
IHCDI00E/IHCE[lIOS obtains
the relative record number from the parameter
list passed along
by
IHCFCOMH/
IHCECOMH,
and writes the record out via a
WRITE macro instruction.
It updates the
associated variahlp in thp p~rameter ligt
to point to ttlf' rpcord
followinq the one
just written.
If ~;inqle bufferinq is beinq
used,
it che(~ks the write and ret.urns to
IHCFCOMH/IHCECOMB.
If double buffering is
bei ng used,
Lt
post pones thp check until
its next call, anrl returns the address of
the other buffer to IHCFCOMH/IHCECOMH.
READ OPERATION:
IHCDIOSE/IHCEDIOS handles
any further read
requests from IHCFCOMH/
IHCECOMH exactly as for the first (without
checking for the data set being open).
WRITE OPERATION:
IHCDIOSE/IHCEDIOS
buffer.
READ OPERATION:
IHCFCOMH/IHCECOMH
to
the compiler-generated code
calling IHCDIOSE/IHCEDIOS.
Final Branch
Appendix F:
IHCFCOMH/IHCECOMH calls
to write out the final
returns
without
225
FIND
Implementation of the FIND statement is
very similar to implementation of the opening branch for a direct
access
read
(explained above).
Control is passed from
the compiler-generated code to IHCFCOMH/
I HCECOMH
and
on to IHCDIOSE/IHCEDIOS.
IHCOIOSE/IHCEOIOS opens the data set if
need be, and then checks to see if the
record is already in the buffer. If it is,
IHCDIOSE/IHCEDIOS updates the associated
variable.
If not, it issues a ~EAD macro.
Then it returns through IHCFOOMH/IHCECOMH
to the compiler-generated code. This READ
begins filling the buffer.
It is not
checked until the next entry to IHCOIOSEI
IHCEDIOS for this data set.
226
The
appropriate
conversion routine is
selected accordino ~n the type of the
variable or array element.
Control is then
passed to the conversion routine to convert
the constant and to enter it into: its
associated variable or array element.
Note:
One
Error Conditions
IHCNAMEL calls IHCERRM if it cannot find
a name in the dictionary (error 222), if a
name exceeds permissible length (221), if
it cannot locate the required equal sign in
the input data (223), or' if a subscript is
included f()r i'i variahle or is out of riinnp
for a n a r ray (2 2 4)
- - - -- -.
OJ -
th~'
is
then
BACKSPACE
control is passed from the compilergenerated code to the FBKSP section of
IHCFCOMH/IHCECOMH,
which passes control to
IHCFIOSH/IHCEFIOS.
For unblOCked records, IHCFIOSH/IHCEFIOS
issues a physical backspace (BSP) to position to the de5irt~ record.
If 2 buffers
are used,
it must: backspace twice
to
account for having read a record ahead.
Before backspacing an output data set all
WRITE requests ar~ checked and an endfile
mark is written by issuing a T-CLOSE.
If
the record form is v, it reads the record
and examines the segment Descriptor Word to
determine if it has found the first seg-
Appendix F:
227
ment.
If it has, it issues another backspace.
If it has not found the first
segment,
2 backspaces are issued until the
first segment is obtained, in which case it
need only issue d final backspace.
For FB and VB records it must keep track
of the location within the block of the
record it wants.
For the case of blocked
records a BACKSPACE statement does not
necessarily imply issuing a physical backspace request.
A physical
backspace is
only required when the preceding logical
record desired is in the block preceding
the
block
presently
in
the buffer.
IHCFIOSH/IHCEFIOS determines the lenqth of
the ~luck read by subtracting the residual
count in t.he CCW from the DCB blocksize.
This information is used in calculating the
proper
logical record in the buffer to
satisfy the FORTRAN BACKSPACE.
Spanned
record:.., rndY n?qui n" s(~archinq hack. through
more trlan one physical record.
I
Cuntrol
HCECOMII,
is
whi ch
returned
n't. urns
to
to
ERROR HANDLING
The library is designed to
following error conditions:
handle
the
load
module
abnormal
IHCFCOMH/
the
rna in
program.
con-
IHCADJST
IHCERRM
REWIND
IHCFINTH/IHCEFNTH
The
compiler-generated
oh;ect
code
passes control to the FRWND section of
IHCFCOMH/IHCECOMH, which passes control to
IHCFIOSH/IHCEFIOS.
IHCFOPT
IHCIBERH
IHCSTAE
IHCTRCH/IHCETRCH
IHCUOPT
In addition, IHCFCOMH/IHCECOMH is used for
initialization, loading,
and termination;
IHCFCVTH is used for converting error message data; and IHCFIOSH/IHCEFIOS is used
for printing error messages out.
END- FILE
~ontrol
is passed by the compilergenerate-d object code to the FEOFM section
of IHCFCO~~/IHCECOMH, which passes control
to IHCFIOSH/IHCEFIOS.
COMPII~ER-
DETECTED ERRORS:
IHCIBERH
When the compiler examines and translates the user's source statements, it may
recognize one to be faulty, and nonexecutable. At the corresponding location in the
object code, the compiler inserts a branch
to the library program IHCIBERH. The load
module then executes in its usual fashion
up to this point, when IHCIBERH gains
control.
If the faulty statement has an Internal
Statement Number (ISN), IHCIBERH translates
it into hexadecimal and inserts it into its
error message--230.
It also picks up the
name of the user routine containing the
faulty statement,
and adds it to the message.
After IHCERRM is utilized to have
the message printed out, IHCIBERH goes to
the IBEXIT section of IHCFCOMH/IHCECOMH to
have load module execution terminated.
exponent
overflow
or
underflow
t-,as
occurred.
(These switches are referenced
by the routines
IHCFnVER and IHCFDVC!!.)
When extended error handling is not in
effect, IHCFINTH takes the following corrective actions:
9--nothing
l1--nothing
15--if the operation is 0.0/0.0,
the
answer register(s) is set to 0.0;
if the operation is X.Y/O.O
(X.Y*O.O),
the answer register(s)
is set to the larqest possitle
floating-point number12--the result register{~~)
i~ ~)2t to
the largest possible floating-point
number
13--the result register(s)
is set to
0.0; if the underflow resulted from
an add or subtract operation, the
condition code in the old PSW l '
set to O.
PROGRAM INTERRUPTS
Part of the library's initialization
procedure is to issue a SPIE macro instruction. informing thp system that the library
wishes to gain control when certain program
interrupts occur.
The SPIE,
issued by
IHCFCOMH/IHCECOMH,
specifies library control for the following interrupts:
6--specification*
9--fixed-point divide
Il--decimal divide
12--exponent overflow
11--exponent underflow
1S--tloating-point divide
The exit routine addres[, sp'cified for
all
of the dbove IS ARITH~, the beginning of
IHCFINTH/IHCEFNTH.
(If interrupts 2, 1, 4,
S, or 7 orrur for the 10a,1 module,
th('
system hegins abnormal termination processinq.
Codes 8, 10 and 14 are disabled when
the task gains control, so these interrupts
n(>vpr occur.)
IHCFINTH/IHCEFNTH receives control
from
the system, which passes the address of the
Proqram Interrupt Element (PIE) in register
1.
IHCFINTH/IHCEFNTH
first saves the
Note that
for corrertiv~ ~rtions with 12,
13, and 15, it is npce,j,;ary for IHCFINTH tc
first determirH~ if the faulty
in,~truction
contains
single
or
double
precision
operands.
IHCFCVTH i~; calleci
(twice)
to conVf"rt
the error rne~~';dqP rontpntc;, and IHCFI(X;!l i;
callpd tu print it ouL
Then IHCFINTH
returns to the sy~;tpm interrupt hdndler,
and
10dd
module
execution f"_'vpntIJrllly
resumes at trw in::truction followinq
thf'
onp that Cdll~~prl the intprrupt.
When ~xt endHJ f.:,rror handl inq hi1:; hf'P:1
sel ecter}, HICE RkM i _; Cd lIed to dete rmi BP if
the user desires hi,; own corrective dction
for
system
saves
only 14-2 in the
PIE).
IHCFINTH/IHCEFNTH next examines the old
Proqram Status Word (PSW) in the PIE to sef>
if the interrupt was prAcisp or imprecic;f-',
and,
if the latter,
whether single or
multiple.
(Imprecise
interrupts
are
explained more fully in the publication IBM
System/360Qperating System:
sup~E~i~~~
and Data Manage~~~! __ ~rv!~~~,
Order No.
GC28-6646.)
This information is inserted
in the error message--210.
The specifir
interrupt type(s) is then determined.
tt1i~;
0YY(',Y-
('rhi,:
procc'ollrf
When
d
,;peei f icat_ion interrupt has
occurred, IHCFINTH/IHCEFNTH loads IHCADJST,
if not already loadf'd.
After preparing the
error mps~age,
it hranches to INCADJST
passing the PIE and other information.
There is a great variety of error conditions that can cause a specification interrupt.
(They are explained in the pUblication IBM System/300:
PrinciE!~~~L-2~E~:'
tion,
order No. A22-6821.)
IHCADJST is
designed to correct only one--the misalignment of operand data in core.
For any
other condition, IHCADJST causes an abnormal termination by cance~ling the SPIE,
Appendix F:
229
For example', most of the mathematical routines c,heck to see if the arguments are
within specified ranges; IHCFCVTH, in some
cases, sees whether the data it is asked to
convert is actually in the form specified.
When a library routine finds an error,
it sets up a branch to IHCERRM.
If
extended error handling has been selected
for the library, this is a separate module.
If not, it is simply the entry point name
for module IHCTRCH (and module IHCERRM does
not exist).
Without extended error handling, library-detected errors are almost
always treated as terminal conditions.
LIBRARY-DETECTED ERRORS
A
number
of
the library routines
examine their operational data for flaws.
.In the case of instruction misalignment,
when it is determined the next instruction
is also misaligned and will cause abnormal
termination just as well, the PSW pointer
is not changed.
230
reached
routine
the
compiler-generated
it
main
2.
3.
Codes 0 and 8
With Extended Error Handling
When a library routine detects an error
and extended error handling is available,
it branches to the error monitor routine
IHCERRM.
The operation of this routine is
explained below in the section "Extended
Error Handling Facility."
Meaning
Active
input/output
was
quiesced and is restorable
Active
input/output
was
halted and is not restorable
12
No
active input/output
abnormal termination time
No space available
area
for
at
work
IHCSTAE looks at this code and determines which action it will take.
Appendix F:
231
to the supervisor
termination.
~o
complete
abnormal
2.
3.
In addition,
IHCETRCH is used to produce
traceback maps.
(When extended error handling has ~ot been selected, IHCFOPT does
not exist at all, IHCERRM does not exist as
a module but only as an entry point in
IHCTRCH, and IHCUOPT is only 8 bytes long.)
three
functions:
ERRSET.
and
Certain
values are inserted in the
option table at system generation time.
These original values are listed in Figure
25. The user has the power to alter some
of these values temporarily--that is, alter
the copy in main storage for the duration
of the load module--by using FORTRAN source
statements. All the library error entries
except 230 and 240 can be altered.
ERRSTR,
The format of the option table is illustrated in Figures 22 through 2~. The table
is
referenced by displacement.
It is
sequential, but begins (after a preface)
with error 207--the lowest library error.
There is an entry for every numher from 207
to 301, although the library recognizes no
error condition for some of them -- e.g.,
239 (they are reserved for future use).
Thus, the entry for error 258 is
(258-207+1)x8 bytes into the table (allowing for the preface). A few library error
numbers (900-904) are not in the table.
ERRSAV,
a reference only.
~ __ ~~_!i~it_2~~-I2E_en!Ey_fi~!g-2~:
two:
contents are movpd in as is,
unless they are negative or zero.
If
they are negative, the field is set to
0; if they are 0, no action is taken.
Traceback_!~g~~~teg_2!_~~EE!~~Q:
if
1, bit 6 of entry field four is turned
off; if 0, it is turned on: if any
other number, no action is taken.
A user exit routine a~Q!~~~L_or ab~n~
thereotL __ f2! __ ~~~!Y __ f!~!~_ fiv~: the
value is moved in as is.
(Optional parameter) - Either an error
number higher than one--rn the first
parameter, or, if the first~!~me!~i
is error 212, a request for print
control:
in the first
case,
all
entries from the lower number to the
higher are altered as indicated: in the
second case, if a 1, bit
of field
four is set to 1, if not a 1, it is
set to 0.
message 902,
using IHCFCVTH and IHCEFIOS.
ERRSET also checks to make sure ~h~~ the
entry or entries permit modification.
If
they do not, it issues message 903 using
IHCFCVTH and IHCEFIOS.
is
called
in
th~
1.
2.
1.
pd fIling.
II
IHCEFIOS
identified
an error condition
object error unit, the summary is
~~t~n~~~.
ha::;
for the
skipped.
dS
1.
2.
3.
233
Table 11.
r----------T--------------------------------------------------------------------________
,I
I Subroutine I
Function
~----------+----------------------------------------------------------------------------~
FCVAI
Reads alphameric data.
FCVAO
FCVCI
FCVCO
FCVDI
FCVDO
FCVEI
FCVEO
FCVFI
FCVFO
FCVGI
FCVGO
FCVII
FCVIO
FCVLI
FCVLO
FCVZI
FCVZO
----------~---------------------------------------------------------------------------CONVERSION
MATHEMATICAL ROUTINES
SERVICE SUBROUTINES
!tlCFOVCH (Entry Name DVCHK)
The function of IHCFDVCH is to test the
status of the divide check indicator switch
(DVCIND--Iocated in IHCFCOMH/IHCECOMH) and
return an answer in the location specified
in the call. This switch is turned on (set
to X'FF' by the library's interrupt handler)
when
it finds a divide exception has
occurred. IHCFDVCH inserts a 1 in the
calling program's answer location if the
switch is on, or a 2 if it is off The
answer location is the argument variable in
.Before checking the switch, both IHCFDVCH
and
IHCFOVER
issue
the special nooperation BCR 15,0, which drains pipe-line
models (e.g., Models 91 and 195)
to
ensure sequential execution.
by
N!m!-QY~BE1!
IHCFOVER testa for overflow and underflow, and performs in a manner similar to
IHCFDVCH. The Iwitch it tests is OVFINO -which is also found in IHCFCOMH/IHCECOMH,
and set by the library interrupt handler.
OVFIND set to X'FF' indicates overflow has
occurred, X'01' indicates underflow, X'OO'
indicates neither. IHCFOVER sets the caller's answer location to 1 for overflow, 3
for underflow, and 2 fer neither.
If on, OVFIND is turned off; if off,
left off.
IHCFOVER returns to the calling
program.
no action at all
answer returned to caller is 2;
no switches are changed
printed
storage
in the
storage
printed
AL4(Al)
AL4(Bl)
AL4(Fl)
DC
DC
DC
AL4(An)
AL4(Bn)
XL1'FF',AL3(Fn)
o
1
2
3
4
5
6
7
8
9
hexadecimal
LOGICAL*l
LOGICAL*4
INTEGER*2
INTEGER*4
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
literal
235
as
DUMP and
clf tpr
normal processing, DUMP gOE'S to
t h.' I BEXIT section of IHCFCO~m/IHCECOMH
to terminate loan module execution;
PDUMP,
however,
returns to the caller
tor continued execution.
I HCFDUMP uses IHCFCVTH and IHCFIOSH/
IHCFFIO:;
to assist in its operations.
After
yptting the andress of
IHCFIOSHI
I llCEFI 0:;
from IHCFCOMH/IHCECOMH, IHCFDUMP
bra n c tw :; t 0 i nit i ali z f~
for p r i n tin g
It
n.'xt
mov('~; d sect_ion to be dumped into the
IIlCFIO!,i\/IHCEFIUS buffer,
and determines
thf' foundt type requested It passes this
information to the FCVZO part of IHCFCVTH
('Z' output), for conversion.
Lastly,
it
branches to IHCFIOSH/IHCEFIOS to print out
the 1inf..
IHCFDUMP loops in this manner
until it exhausts the calling list.
If,
during
the printing,
IHCFIOSH/
IHCEFIOS indicates it has encounteren an
input/outp~t error,
Illef'DUMP skips the remainder of its work.
IHCDBUG
has a single entry point-DEBUG#--which is the head of a branch
table.
This table is outlined in Table 12.
Table 12.
I DisI Branches I
Iplace- I
to
I
Iment
ISection I
is called by the
compi lergenerated cbiect code to implement most
uspr DEBue; requests.
Gpnerally,
IHCDBUG
assembles
dehug
information
and uses
IHCFIOSH/IHCEFIOS to write it out.
IHCDBUG
may also have occasion to use IHCFCVTH (for
data conversion), IHCNAMEL (to produce D15PLAY requests),
IHCUATBL
(to obtain the
default object error unit number),
and
IhCFCOMH/IHCECOMH (in which to store user
reqisters).
.IHCFDUMP expects tl.e format type requested
to corrpspond to the format of the data in
main storage.
Therefore,
asking it to
print out an INTEGER variable in REAL
format,
for example,
will result in a
garbled dump.
236
I
Function of Routine
~------+--------+-------------------------~
I TRACE
I
SUBTREX
name
on
12
UNI'!'
16
20
1
I
I
I
24
I
I
I
I
I
I
I
I
I
I
I
28
Initialize
reference
output
32
data
number
set
for
Pass dat~ on
a rra y element
ISUBCHK
I
I
ITRACEON
referenced
I
36
40
U4
I
I
I
4R
Il ______
IHCDB(j(~
r------~--------~-------------------------,
of
the
various IHCDBtJ(;
TRACE
If TRACFLAG is
off,
control
is
returned immediately to the caller.
Otherwise, the charact~rs iTRACE t
dIE'
moved to DBUFFER, the section OUTINT
converts the statement numher to EBCDIC and places it
in DBUFFER,
dwi
control is passed to OUTEUFFR.
SUBTREN
The characters 'SUBTRACE' and thf' namp
of the program or subprogram are moved
to DBUFFER and a
branch is ma~e to
OUTBUFFR.
SUBTREX
The characters 'SUBTRACE .RETURN.' alP
moved to DBUFFER and a branch is made
to OUTBUFFR.
and places
a left ['arenthesis, the
element n1..lIr.ber <converted to EECDle by
subroutine OU1INT), anJ A right r~ren
thesi s ill :JBU FFEP t ollowi n'J thp (j r ray
name.
A
branch i~; tt:F'n nad., tc
INITARAY
I flO F LA Gis 0 r ; t h p
c h a r d etc r
is placed in DBUFfER, f ollowfd by t hr
address of the arqumpnt
li~t,
(:~ r ir1
A
branch is mrldF' to (lIn E~{Jf FP.
(. t.'t{'rwise,
a call
to INIT,L,FdT j;~ ,', nstructed,
and
thf'
rC"ltjr,.
1 ,-, F':
t h : 0 ugh t hat: cell 11m t i J
~. lJ
of thE' art a y r c1 V ( , i) E C n ~ . r:- (
j
SUBC'HK
The location of the drr"i E'lF'mcnt i.~
computed.
If
it
falls within tht
array boundaries, control js rE'turnpd
to the caller.
If it is
cutsidp tht
array boundarips,
SUPCHK places the
characters 'SUBCHK' into [lI:\UFFEP,
dnd
computes the elewpnt number.
OUTINT
converts this number into ERC[IIC ann
moves it intC' D8UF'FER.
OUTNAJv:E move:
the array name into on\JFFEk.
finally,
o lJ T rm F F R i~; call P rl
TRACEON
TRACFLl\(, j:; t 11 r ned on
(~;d
to nonzero), an'1 control returned to caller.
TRACEUF'r'
TRACFLAG is t u rnpd ot t (Sf't to zero),
and control rf'turnpd to callpr.
DISPLAY
If 10FL A(; is on,
UNIT
t hp chd ractFr~;
INITSCLR
The data type is saved, the location
of the scalar is computed,
subroutine
OUTNAME places the name of the scalar
in DBUFFER, and a branch is made to
OUT ITEM.
INITARIT
This routine saves the data type,
computes the location of the ~rray
element,
and (via the subroutine OUTNAME) places the name of the array in
DBUFFER.
It then computes the element
number as follows:
XXX=YYY-ZZZ)/AAA)+l
where:
XXX
YYY
ZZZ
AAA
is
is
is
is
element number
element location
first array location
element size
STARTIO
BYTECNT is set to 251 to indicate that
thp current area is full, the IOFLAG
is set to X'RO'
to indicate that
input/output is in progress, the
CURBYTLC is set to thp adrlress of the
SAVESTRl (where the
location of the
first main block will be), and the
rout.ine exits.
(Spp the discussion of
ALLOCHAR. )
ENDIO
The IOFLAG is saved in TEMPFLAG and
IOFLAG is reset to zero so that thL;
section may make debug calls that
Appendix F:
237
If
the
If the
X'),',
~------------------1--- -1
I' b."t.<!
t------------------- - --.--------------+
ILIST01 field 8
~-------------------.
I
I
!
.--~- -. ~
14
bytP~,!
------------_ . _+--- - . - ~
I
I
I
,
I
!
I /j hyt: f',; I
r--------------------------- -------+--.- .. -. - ~
18 byte:: I
.-----_._------ -------------_. ------+_._- -- --~
IDSRNn defrlult values 7
ILISTn fieldS
b.
14 hytf'si
~-------------------------~-------..L-------~
11n is the maximum number of uni ts that I
I can be referred to by the FOHTRAtJ LOA:) I
1 MODULE.
I pqual to
Figure 18.
Appendix F:
(~
IHCUATB~~
ment Tatle
239
Table 13.
r------------T-----------------------------------------T--------------------------------,
I
I
sequential Data Sets
I
Direct Access Data Sets
I
~--------T--------T---------T-----T-------t-------T----------------T-------~
ddname
I
I
I RECFM1 ,
LRECL~
, BLKSIZE
"
I
I
I DEN I BUFNO , FECFM I
LRECL or
BLKSIZE
I BUFNO I
~------------t--------t--------t---------t-----+-------t-------t----------------+-------~
I FT03Fxxx
I
1 FT05Fxxx
I
I FT06Fxxx
I
I
1
I
1 IT 07 Fx x x
I
U
F
UA
1
1
, all others I
,800
1
I
I
I
)
I
1
I
"
80,
1
'I
133
1
1
"
80
132
1
1
I
80
80
1
1
1
2
2
I
1
1
1
1
I
1
I
1
1
1
IThe value
I
,specified as thel
lmaximum size of ~
1a record in the 1
IDEFINE FILE
1
I statelT'ent.
I
FA
F
F
I
1
I
I
I
I
,
I
I
I
I
U
,800
'}
2
F
,
2
t------------~--------~--------~---------~-----~-------~-------~----------------~-------~
1 1 For records not under FORMAT control, the default is VS.
I
I~For records not under FORMAT control, the default is 4 less than shown.
1
l _____________________________________________________ - - - - - - - - - - - - - - - - - - - - - _____________ J
<-----
<-----
2 bytes ----->
<-----
r--------------------T---------------------T----------T-----------T----------------------,
,
not used
,
BLKSI ZE
1
RECFM
I
BlJFNO,
LRECL
I
l ____________________
Fiqure 19.
_____________________
______
----~----------~---------------
_______ J
r------------T---------T---------------T------------T------------,
I
ABYTE
1
BBYTE 1
eBYTE
1
DBYTE
I
q bytes 1
r------------~---------~---------------~------------t------------~
I
Address of Buffer 1
I
4 bytes 1
r---------------------------------------------------t------------~
I
Address of Butfer 2
1
q bytes I
r---------------------------------------------------t------------~
I
Current buffer pointer
(Note)
1
4 bytes I
r---------------------------------------------------t------------~
I
Record displacement (RErPTR)
(Note)
1
q bytes I
r---------------------------------------------------t------------~
I
Address of last OECB
I
q bytes 1
Housekeeping
Section
r---------------------------------------------------f------------~
Mask for alternating buffers
1
q bytes I
t---------------------------------------------------f------------~
I
DECBl ske leton section
1
20 bytes 1
I
r-------------------------T------------T-----------t------------~
1
Logical record length 1 Not used
1 LIVECNTl 1
q bytes 1
~------------------------~------------~------------f------------~
~------------------------~------------i------------f------------~
I ____________
88 bytes J1
I ____________________________________________________
DCB skeleton section
L
Figure 20.
240
Note:
Used only for
varIable-length
and/or ~locked
records
~BYTE.
trhis field, containing the data
set type passed to subprogram IHCFIOSH/
is set
IHCEFIOS by IHCFCOMH/IHCECOMH,
to one of the following:
Q~!!~.
not used
4-5
00 -- Input
BBYTE.
This field contains bits that
are set and examined by
IHCFIOSH/
IHCEFIOS during its processing. The
bits and their meanings, when on, are
as follows:
o -- exit
to
subroutine
IHCFCOMH/
IHCECOMH on input/output error
input/output error
not used
not used
occurr~d
retain
not used
not used
AND
DECB2):
The--DECB-(data-even~controI-block)-skele-
CBYTE.
This field also contains bits
that are set and examined by subroutine
IHCFIOSH/IHCEFIOS. The bits and their
meanings, when on, are as follows:
data control
opened
"
da~' ~
not used
concatenation
READ
occurring;
reissue
~qical_Re~Qrg_~!!qth:
This is the LRECL
of the current data set.
It is inserted by
IHCFIOSH/IHCEFIOS
during its open exit
routine.
These fields
input/output
241
Bit
1
Meaning
error occurred
4-5
10
01
DCB:
The fields of this skeleton for DCB
are filled in partly by IHCFIOSH/IHCEFIOS,
and partly by the system as a result of an
OPEN macro instruction by IHCFIOSH/IHCEFIOS.
r-------T-------T------T------T-----------,
I
I
I not
I not
I
I
IIOTYPE ISTATUSUI used I used I
11
6-7
I
RECNUM
I
4 bytes I
~-------T---------------------+-----------~
ISTATUSAI
CURBUF
I
4 bytes I
~-------~--------------------+-----------~
I
BLKREFA
I
4 bytes I
~-------T---------------------+-----------~
ISTATUSBI
NXTBUF
I
4 bytes I
~-------~---------------------+-----------~
I
BLKREFB
I
4 bytes I
~-----------------------------+-----------~
I
DECBA
I 28 bytes I
~-----------------------------+-----------~
I
DECBB
I 28 bytes I
~-----------------------------+-----------~
I _____ - - - - ____________________
DCB
I ___________
104 bytes JI
L
Note:
Subprogram
bits 1, 2, and 3.
STATUSA:
This field specifies the status
of the buffer c\lrrently being used.
The
hit~
and their mpanings when on ~re:
Bit
--0-
unit
block
IOTYPE:
This field,
containing the data
set type passed to subprogram IHCDIOSE by
the IHCFCOMH subprogram, can be set to one
of the following:
format
FO
FF
00
OF -- output data
format
not
set not
requiring
requiring
242
Meaning
data control block for data
set is open for BSAM
Meaning
READ macro instruction has
been issued
WRITE macro
been issued
3-7
instr\lct~on
has
a
a
RECNUM:
This field contains the number of
records in the data set as specified in the
parameter list for the dat~ set in a DEFINE
FILE statement.
It is fjll~d in hy the
file initialization section after the data
control block for the data set is opened.
21.
not used
4 bytes I
~-------~-------~------~------+-----------~
Figure
U format specified in
DEFINE FILE statement
E format specified in
DEFINE FILE statement
L format specidied in
DEFINE FlLE statement
STATUSB:
This field snecifies the status
o~~ next buffer to be used if two
buffers are obtained for this data set
during data control block opening.
The
bits and their meanings are the same as
described for the STATUSA field.
However,
if only one buffer is obtained duri~g data
control block opening, this field is not
used.
NXTBUF: This field contains the address of
the -oECB skeleton to be used next if two
buffers are obtained during data control
block opening.
It is initialized to contain the address of the DECBB skeleton by
the file initialization section of subprogram IHCDIOSE dfter the data control block
for the data set is opened. However, if
only one buffer is ohtained during data
control block openinq,
this field is not
u~>pd
The contents of this f i~' ld are
n S ,lescr ibed for thf' BLKREFA
+ i,-'l,i.
I t i~ fillerl in eithr-r by the
rh.td
nr th.' write ~)f>ction of ~,\lhprogrnm If-lCnI()~JE
t,rior t.o any r-padinCl or writ inq.
In Cldcli~. ion, tht: addre~;s of thi~-; fi('ld is inspr-t('d
l.ntD the DECHIl !,kf'lpton hy t tiP filp initidlization sf'ction of IHCDIO:;r: dftpr thp rirlta
~'-mt rel block for t toP tin t.'l Sf't
i~;
o{lpnf'd.
lIow p ver,
if only one hufff-'r j:; ott-Ii nt'd
durinq delta (~ontrol t,lork (lH'ninq,
thi~;
b I..:XREFB:
[If>
;iu~
Rdl!1(-'
11!)t
ll:;f'd.
9ECBA ~IKELE'fO~:
This fif'Jd contnin~; th('
DECB (ddla pvent contlol hlock) !;k('letnn to
be u~ed whrn reading into or writ inq from
the current buftpr.
It i:-, the Scirnt' form dS
the DECB constructp:~ hy th(' control program
tor an L form of an S-typf' READ or WRITE
rnr-'cT,,:n:,trIlCric. n llnr1f>r BfJAM (~)pp ttlE'
putJli('at 10n Ir-M~stem/3bO Op!..'rdtir~~ y~Jtpm:
;>':~l2!.~ r v 1 ~o! _~~i ___ _Da t ~_!ia n ~g emen t
Ma c r 0
l!L::::'!J~~!::~~!!.~, (jrder No. (jC2A-b647).
1
<----------------8
bytes------------------>
r-----------------------------------------,
I
PREFACE
I
.-----------------------------------------~
~-----------------------------------------~
.--------------------------~--------------~
I
I
I
I
~-----------------------------------------~
IEntry for librilry f'rror- condition 300
I
~-----------------------------------------~
IEntry for library error condition 301
I
t-----------------------------------------~
IOrtion~l
I
I
102
~-----------------------------------------~
,Optional entry for user error condition I
)03
rI -- --------------------;;
--------------------,I
,
I
I
,
.-----------------------------------------i
IOptional entry for user error condition ,
Figure 22.
rire
n-1
t-----------------------------------------~
IOptional entry for user error condition I
'n
(Note)
I
.-----------------------------------------i
INote:
The
,----
Appendix F:
General Form of
Table (IHCUOPT)
the
Option
242.1
<---------------- 4 bytes ----------------> <- byte -> <- byte -> <- byte -> <-- byte __ >
r------------------------------------------T----------T----------T----------T-----------,
Field One
Field
Field
Field
Field
I
IL __________________________________________ I __________
TwO
I
~
Three
Four
_________ J
~----------~----------~--
Five
-----------------------------------------------------------------------------------------
Field
One:
contents
The number of entries in the option table.
user-supplied error conditions.
Two:
Three:
Four:
Contains a decimal 10. This is the number of times the boundary alignment error
message will be printed when extended error handling has not been specified.
Five:
Figure 23.
of
(Bits
X'FF'=noi X'OO'=yes.
1 1 1
<- byte -> <- byte -> <- byte -> <- byte ->
<-------------~--
4 bytes
r---------T----------T----------T----------T--------------------------------------------,
Field
Field
Field
Field
Field Five
lOne
Two
I __________
Three I __________
Four
I __________ ------------- _____________________ JI
L_________ I __________
~
Field
One:
contents
The number of times the library should allow this error to occur before
terminating load module execution. A value of zero means unlimited occurrence.
(Trying to set the field to greater than 255 results in its being set to zero.)
Two:
Three:
The number of times this error has already occurred in execution of the present
load module.
Four:
0--
Bit
2
3
4
5
6
Five:
~~ninq
be
----------------------------------------------------------------------------------------Figure 24.
242.2
1
1
1
(- byte -) (- byte -> <- byte ->
1
<-
hy~e
<~~~~~=~~~-------
->
r---------T----------T----------T---------T---------------------------------------_____
,I
I Field I
Field
I
Field
I
Field
I
Field Five
lone
L _________
I __________
Two
I __________
Three
I __________
Four
I
~---
_________________________________________ jI
;i~ld---;~~~~~~;------------------------------------------------------------------------.L_~_ 10, ~
~y,_~p_"0t"
__
fl""!
___
Y t:>
__
r_Yn
__
Y_c: _?OR,_?1,O, _::I.T"I."
__?1,_~,
~
and for errors 217 and 230, which are set to 1.
One.
_f"'_~_.L_
~_r
Two:
Set to 5, except for error 210, which is set to 10, and for errors 217 and
which are set to 1.
Three:
Set to
Four:
Bit
-01
2
3
4
5
6
7
TlJ
....
,rl-..,,..l-.
"' ..........
___ . . . .
"
,;;;;)~''-v
~ ....
'-
"
"
0'
v I\un.J..~In~Lea),
'.L
230,
setting
o
o
o
Set to 1.
Note:
These system
entries.
Table 14.
o.
Fi ve:
Figure 25.
generation
r---------------T---------------T-------------------------------------------------------,
Displacement I Branches to
I
I
I
I
from IBCOM#
Section
Function of Routine
t---------------t---------------t-------------------------------------------------------~
.FRDWF
4
8
12
FWRWF
FIOLF
FIOAF
FENDF
fRDNF
lb
20
24
28
32
36
40
44
48
52
56
64
68
FWRNF
FIOLN
FIOAN
FENDN
FBKSP
FRWND
FEOFM
FSTOP
FPAUS
IBFINT
IBEXIT
l _______________ 4 _______________
I
I
I
_____________________ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Appendix F:
242.3
Chart
GO.
IHCFCOMH/IHCECOMH (Part 1 of 4)
FRDWF
f'RONF
Al.~
........r::::::::---------::::::::i....,...
f,.
1
"
"
"
"
'0
DIRECT
ACCESS DATA,
"
SET
"
,
'.
.................
;
:~~~~i"
"
....... :
.'
.-.-.-.-.-.-.-.-.
OPEN I1F
NEEDEDI AND
READ
'0
es
.-------->.
-. -. -. -. -. -. -. -
OPEN !IF
Nl:.O~D) AN::)
Rl:.A()/W~Ill:.
.................
.................
~;~
OPEN I I F '
NEEDEDI AND
R!::AD/WRITE
- -- ----------------
E. :-------->:
"[1'
SAVE BUffER
INfORMATION
Yl.!;
t-I-I-I-I-I-I-I-I
..... . ...... :
1
t
NO
'flOCS'
'DIOCS.
1
0"
'01'
1-1-1-1-.-1-1-1-1
OPEN IIf
NEEDED I AND
<-
"
'FIOCS'
RECT
ACCESS DATA
"
SET
"
HO
o. 01
Cit
,-------->.
YES
,
. .
INPUT
.:
I
.11...
,
~~-~'1=ITf~~
II"
C1
FWiWF
.................
:;AVE BUFfll<
INFORMATION
1::'),
'kETUI<N TO Mid Ii
PI<OGRM:
...............
fWRWf
Fl" ,
.................
()UTPUT
1
Gl , ' .
.:
G2
SCAN FORMAT
..................,:< __
'0
"'SPECIFICATIONS
YES
: H1 :
TRANSLATE
FOR""'T
INf"nRMATIOH
.----
,.
"
I
.
H2 ,
"
'.
rIRST
"
rIO
CONVERSION
,.--"
CODE
'.
'. .'
. o.
r~
J2 .
...............
"RETURN TO MAIN'
:
PROG
:
Appendix F:
Chart
GO.
IHCFCOMH/IHCECOMH (Part 2 of 4)
A.l . . A2 .
FENOF
FENON
.
.
..
.-
........c:::::------ -:: : : T
...
.
B1
.v'.
'
'. '.
82
'.
'. ..
'. '
.'................
..
.'
83" I
..
WRITE
'r~~
.....C2.t........
.
FlOCS'
'-'-1-1-'-1-'-'-'
L1
J.~"'>
f'.
'. G1REC1
: ~ ; ~.'. ~.: _ _ _. _ :
P!'TBg~;!~INAL
t I'
AUFH.R
F:)'
...............
..... Fl.,
LN
: ,n
--- . _------------
'OloeS'
~-e-.-t-*_$-;,_.-t
..... ".1.'::.... .
CLEAN-UP
.... 02
o. READ
J/, :.I,II1("H :
..... r'.
nOAH
~ET
ARRAY
SIoIITCH
I!.
v
~1
".
.'.
G]' ' .
~:: __ - - - >.:
,
,
'.
'~"lF"'E:~ FllLL .
'.
NO
..... H]..........
J1
Nu
'MuvE
LI~;1'
ITEM
I tlTU BUfFER
0
0
.'.
J'2
J 1"
o
o.
00lOCS.
_0
o. 'lES
0-0-0-0-'-'-'-'-'
-->o.DIRECT ACCESS.o-------->o
WRITE OUT
o
0
0
BurFER
0
..................
l .....
.....
o
j
1.
...... .
...............
j :
::::>
,
.- >
Jl
................... ..................
yf.',
,. , I
'.
0FIOCS'
MOVE CORRECT
0-"-0-'-'-'-0-0-0
'.\MOUNT Of' DATA
o--_----->.rROM BurFER TO
0
LIST ADDRESS
FRESH ~EAD
Yf;
....
.. .
NO
....t .
H14
G .. t
" .
DIOCS'
- >,
I
..
...............
..
-1 .......... .
-RETURN TO MAIN'
J1
J(
...............
:RE.TURH TO MAIH :
.................
l ....
000.
->.o
Jl
0
0
Appendix F:
243,1
Chart
IHCFCOMH/IHCECOMH (Part 3 of 4)
GO.
FSTOP
11.1
. ". ".
FPAUS
I.
. '. ...'
"LOAD MODULE NO
0
.'
All
.'
'.
'.
' . IN FOREGROliND
'. I.
' .. '
.
.'
: 81' :
ISSUE WTOR
MACRu
: 8 . . . . . . . . . . . :
MESSAGE TO
TERMINAL
MESSAGE TO
TERMINAL
.................
c. ....
.................
. ct'
'I8EXIT
1-1-1-1-1-1-1-1-1
TERMINATE
EXECUTION
................ .
"
'01
RETURN TO
SUPERVISOR
11..)&1 1
...............
.............. .
:~lTUMN Tv 1'111.1,4 :
HOLF
HOAF
3r'f U P '
'PARIIMt:TEkS FOR
:
CONVERSION:
.<--------.
.................
................ .
:
1
. G2
I HCfCVTH
1 - ' - 1 - 1 . 1 - 1 - 1 ... ,
CONVERT AND
MOVE DATA
.................
H2 t...
.t..
:'R~~~ioN .:.~------>:
M)..........
tt"
t.
.
:-------->.: "cUN~~~~lON
..
..... .... ........
'.
.F:---------------------------------------------- j '"
J2.
...............
'. '.
.RETURN TO MAIN
PROGRAH
243.2
Mt5UI'IE SCII"
':.
.'
..................
-------->.
i''
rES
lAS
'LOAD MODULE'. NO
Chart
GO.
IHCFCOMH/IHCECOMH (Part 4 of 4)
rWWND
BKSP
HOPM
tA.,
IBlXIT
tA~"""""
.
.
.................
: ~ l ~~~: -. _. _. -. _:
...
:~~~;~~~.-.-.-.-:
.IMPLt:MENT AKSP,.
f<l,.jIND,
UK
;~;:~~;~:~~
.~f:i,2~
:~lTlIW/
...
. .
~
Tu MAIN:
EkRC)k
SUM~,"RY
: b4 :
.................
1
..................
C4
floeS'
t-t_t_t_t_t_t_.t
OPEN OBJEC1
ERf<OR UN! T
'L~"""'"
...............
:e '). ...... :
..................
.PELETt: i'iCo.llJ:,1
:
I f LOAD, 0
: L,") . . :
.CANCt.L
t
~Plt.
1 Ar
ANU
J
1-.,
I-ot!IJ .... i
liP!
Appendix F:
243.3
Chart
Gl.
IHCFIOSH/IHCEFIOS (Part 1 of 2)
'A 1
...............
fl'!{~:'
INITI1U.ItATION
REI\D
WI<ITI:.
DEV ICE MAIIIPULATION
FINAL CALL
:-------------->
- -----
....
Cl
'el
FREAD
..................
OOfTI'RMINE
O~;RN
.'
'.
/\NY
o _
'. .'NC)
I
-. -. -. -. -. -. -. -.
E\
IHCEK~M
.................
fMIIOIl I'!lS~AG[ 0
IHC no I
L----- ~::::::::
I F EXTENDED
o EMOII HANDLING
: I S NOT PRLS ENT
: IHCEMM ENDS
EXECUTION
o .. ______________
L
_
....
c.l
.'
FOM
--> . DIFIECT
'.
ACCE.S~,.
'.
IN..
M(D~,
YES
IIlAO N~ Xl
IIEcuRD IN1u
THI~ l\'lrrE.".
"wITCH r.UH~~
: . ~~!~r;:~ .... :
(If
.CHC~
.~[AD
: ~~f~~~ :
j
1
,0.
'.
"
.....~
-02 -
H~.
244
..1...
0]' ..
.l,..lJ
.................
1IfIf(
\;1
11
tt~
i'<'"
~
..
~!
1M
INTu
r-->:
G j
.'
->..
...
---1
'. .'Nt)
lUi
..0:'
tc ~
'. .'NU
.... 1
..... . o.
Hit
\oil< ITf
i
"'
"
jeR] ..... )l..........
.
o.
D!:.'TEIU'IINt:..
~~~O~EO~~~~T .---- REIID A BWn
O.
.................
.................
'.'
'. .'NU
HI)
---1 .-......... -.-.-.-.-.
I/U [RRvll
IN IuS
i"
YES
1:!: >-
::~;:
>
f'IO:~l J . . . . . . . . . . . .
0
P~_S" CU""t.N1
.~lCOMf) P0INTt.r<
,,~~~ .. 5~i~~~H
TU CAl.Lt.1<
.................
I<~
:
Gil
.................
EAII~r.c'1f~fAG[
:-.-
L--------------
IF UTEMDf!D
:naoa
IIAIIDLIJIG
II MOor
: IHca. . . IHDB
..........---I
It!!
:DAT~u~nH~gUBLE:
...............
II!TUJlN
IHeERRM
1 I
: I~~"6[~~~ff~S :
..................
....! .
....
.
'.
YES
-------->.END P .... MlTER -- SPlCIFIlO.
o. 0
:
0
.' .
. IS THEilE IINO.
YE
0
'-.>
GS
.0
H"
'.
.<--
Gil :
. HA!.. AN EuF
IIEfN RlAO
YE~,
~~~:. ~~~~H~~.
GC4
I;)
('UltI.E.NT
_ uPt.AATION
D!:.VI! t.
.
. MANIP.
TU ADDRESS
"PECIFIED I~
. .
t
. '.
t< 1
SlT~~rr~J1 , . . . . . . .
YlS
f'> ,
RETURN
OF.
BlJfn.~
oTHr~
.................
l ... O. .
F~.
jo(
LAST OSkN
....
.
...............
ULT I.Jt
H !111Ft f
'.
: t , :
'C'HE( I-'
.................
j
...
.. ..
_.
.. .
NU
--
eJ(
Cl :
0WRITl ~'()NTENT:;
oOF THI~, ~UfllM
r,WITln BUFrE . . .
POIN1ER!..
INVEllr
CHEC~ ANY
uUTSTANDINC;
=::::=->l
... c'J..
__ ) 0
I'IE:>IJ~'
C_ ---------- ----
OPEN DATA
CONTIIOL BLOCt-
FO .. DArA SE1 1 F
0NOT PIIEVIOUSLY
. ---1
rCLu::;
or.
..... r.2
: IHCEIUIM ENDS
o
EXECUTION
1
Jl
o
oCHECJ( STIITUS
UNIT
j :'" :
:
I F EXTENDED
oEIIIIOII HANDLING
:IS NOT PJU;SENT.
BUILD UNIT
'. .'yt::.
-----
..... E2 .
-).
NECESS .... Y I
t(
to
NO
NU
.
0'
'.
IHCERRM
YE.:1
.-,-.-.-.-.-.-.-.
0- .. _----->. [RieUR "'f:;:';A(,E
I He: ill I
: Hl :
BLOC~
FCTIIL
o.
OUTPtrr
NO
BlJff!:.1< FULL
~}
to
DS~N
----1
...
YES
o
o
- >'
BLuC~ TO III
to ~FH.)f.'ES:lE~
YES
01
... .
C)
..
..
'.
O.
FlIITE
WA!..i
PREVluUS
. OPERIITION A
loll< IT,
.0
.0.
NO DSRN ZERu
OR NE(,ATIV!:. . 0
---0.
o.
C2
01
F'INlT
NOTE:
"ltilT
j' fl<EAO
fRITE
FCTR L
FCL(OS[
.................
It~
~ITU." fO
Chart
Gl.
IHCFIOSH/IHCEFIOS (Part 2 of 2)
" 1*'
ISSUE ERROR
RETURN ABORT
'MESSAGE IHC21!1I' -------->:CODE TU IBC-OM' :
TO CONSOLE:
............... ..
L::- '-1
o'
B1
'0
, 'CURR!NT'
UNIT TH!
"
0
~~J!5~IfRRO~.
"
'. .'
B2
l' EXTENDED
.------
'!RJlOIt HANDLING
-->: PR,g!~Zh~~~s SW:
ERROR SIJMMAAY
................ .
NO
0'
. '. .' .
....
l . .
WRIT! LAST
RECORD
NO
.------------
YES
*<--------'.
--~
0
10
uP~ATION
'0. 01YPl
'.
..................
f..rw
--------~.
,.'.
.'
85 :
ISSUE CLUSE
WITH REl<i..A~
OPTION
I I
e"
ISSUE
ISSUl cWSf
"PP~()P~I"Tl
(TYPC=TI WITH
NUMBER Of BS!' t
LEAVE OPTION :
:
B~~~~~i~~r
:
.................
.................
'C~"""'"
RETURN
..... D)..-----1
.................
.................
*04
I/O
fRU
'~lC!'TR TO POIN1'
TO P~~CE DI N(,
:LuGIl'AL Hflukl; :
flUffERS
THIS
[JAT .... rOR
Sf:! :
-- -
:~~~;~~~.-.-.-.-:
:
10
DETERMINE "
j""
..... E]
RWND
"
. ,84
'01
- >' ..14
o'
EOF
I.
CTLRTN
.................
,'0
EOFM
: 8] :
........ ...........
"
02
e)
'D"TA """AGEM!NT'
RETRY
APPIIOPIlIATE
'NUMBER or TIMES'
"
:.:: ..
Y!S
I
.... Cl'
D1
....
"I
:~;.
;~f~J;~;7).
...............
IHC21~I'
ot'rsu
l_______________ _
- -->
E4
II
Rl TURN
:
IF !XTENDED
: EIUlOR HANDLIIIG
: IS NOT P~SENT,
I
IHCEIUUI ENDs
:
EXECUTION
&.._---------------
....
......--!
02
Hl
H1
"
'.
,'CU~RENT',
UNIT THE
"
.: ~~E~~I~RRO~.,
.... ....
....J2.........
HII
t
I f EXTENlJtLJ
YES
'ERROR HANDLIN(,
-- -- - - -- >:PRf~l~,.p~tL.;w:
..... J]..........
.-._._._.-t-'-'_'
:.~~~~~.~~~~~~!.:
.....
J&I
t
..... ...... ....... ,..................
INC!"'"
. ,
RETURN T O '
ISSUE ERROR
'CMoL!R AT RROR.<--------. ERROII MESSAGE'
'MESSAGE IHC2191'
t
OFFSET'
t
I HC 219 I '
TO CONSOLE
...............
l--------------lZoo.
I
: IlleS.... DDS
L ______________ _
,
IF &lIT_DED
H.UlDLUIG
118 IIO'J' . . . .Dr!'.
KIE'UT I 011
Appendix F:
:~;n=~:;~:;.
'CODE TO 1 fiCO""
244.1
Chart
G2.
IHCDIOSE/IHCEDICS (Part 1 of 5)
B)*.
......
-.-.-.-.-.-.- .....
\i
GETUAT
.................
!OSRNI
e 3
INSERT UNIT
NUMbER':;
...:~;...
n ~ - ...
1i
,.,
0]
LAST
'.
.,
,.
'0'" .
GET
N~XT
UN!"
,UNIT NUMBER., NO
NUMUlH IU:,j,NI
" IN P""-""'ETER "
- ------>.r~ol'l PARA,'lL1EI<
LiST
'. .'
,.
Ll:;T
................ .
YE:",
~ !
f :,TABLI~H
AU['kF!;:;ABI LITY
1 N I tH"t'CUl'lri/
lHCf("I",HFOR
..
~~~.;~.~-:~~~
.. :
f \
lOMI'1 U.t<-
(,t Nt kA;t..)
~l~~;~.~~~~
CONTINUE: NORI>IAI.
PH,,< f!;:,l Nt..
Appendix F:
Chart
G2.
IHCDIOSE/IHCEDIOS (Part 2 of 5)
1.1
..................--------------> l
r--O!T!RHiN!-cpi~ATioN"7i~i-'
WRITE
CLOSE
-iNiiIAi:IZAriON--IOiSiHi-READ
DASREAD
DIOCS.
DASWRITE
DASTERM
....
02
C2 .---
Cl,.t'e . ..
:Gn
DASINT
.................
..
AE~H88 or :
1
..01
..................
GETflAT
*-*-*-*-*-.-*-*-*
GET [lSRN
tJ
. " ..
....
.Cl.........
...................
DASUAD __ ,.,
fS RICORD NO
.O,TAIN ADDRUS
'. '.
' .. ' .
,.02
.'
..1,:::---------------- -----1
,
: . . . . 0) :
,. IS TIIS A ., Y E S .
., ~~ND REOUES:-.,
READ A RlCORO
=
' .. '
.................
....
:....
!\ --1
.. E)..........
'. .'NO
.'
.........
1
N2
.:
.'
Jl
"
., .. ,.
~Illc~S~c~s;: .!!~ __
'.
'
.'
'
i. ,
UAru~'
1
. ..J2..
INTO DCB
.................
EAaOll ME8SAGE
I BC 2 1 1 1
: :
.....
IF DTBIIOEO
IWIDLIIIG
\SUOR
18 .,.,. . . . . arr.
IBCDJIII DItIII
l'
DEctJ'!'IOII
----------------
Git
-,
.,
'.
. .---1
1 ...
,.
. .
'. '.
YES
. .'
'. .'NO
.......
0)
B1
S].
.................
CIIOISP
EXAMINE
-- >'JYCBIN02 YU;LD
IN JP'CB
,.j
CRNOT
,
Hit
'.
.'
.,
'.
SET TO BE , -- ., CREATED,
....
NO
'. .'
, t
.'
i""
J J
,- - - - - - - IF E.X"rI:IIDe
:200.
IIAIIDLIJIG
'J ............ - - - - - - - - -
:- ~ii:O:- :~S:G~ -:
.1 HCERJUiI
IHC2)"I'
:...............:
l->::~:'.
..
0]
-). El
1----------------
"
-- -- >t. WRITE REQULST,
ltl. .---------.
:!~~~~._.-.-.-:
.'
,
.~~'
:ls~~..A~
,.~
0]
:F:
.................
'COIfS1'lUCT UIIIT
BI,OC It , INSERT'
ADDR or UNIT
~ '
UPDATE'
Y!)
ASSOCIATED.
RE:TURN ro
VARIABLE SO .-------->,
CALLER
YES
GE:TUB
.....
..... ..........
.................
'---1
..
E. ..
.,
. 'fREVIOUS '. .,
OPERATION
.GET ASSOCIATED ,
,.
t,
UPDATE ASSOC
VAJUABLE'S.
,. IS THIS A ' . YES
VARIABLE SO
TO RCo JUST
NUMBER
READ
PLACE BurrER
'. "
.................
DAS~~
1
r2
.................
__ H .
IN'l'O.
:
02
..... El.
.................
G2
:~~i~.::U;:~;:
.RICORD NO.
:<--------: Brlfl"A'?~LD
-----1 :
\ISI~.!~'
----
l___~~~-- __
J!>
1("
I<~
RETURN TO
CALLER
.............., ...
. ................
__ >.
.-------->.
...
Oli
JS
Appendix F:
245.1
Chart
....
001
G2.
IHCDIOSE/IHCEDIOS (Part 3 of 5)
: . : : - 0_-
..
.
.................
BS,,"OPEN
v
: 81 :
OPEN DCB FOR
: NEW DATA SET
O... SWIUTf.
Bl
..... ............
C'~<T'
'Cl
CR EATt AND
...............
...
I
:Sl~I~I~C~6A"':
: 01 :
o
CLU~;E
nt'P rOR
.................
DATA ,,1:1
l:!:>-,j
l~'
cl:
C2
'IMSERT ADOII ar
bUREn INTO
-->'DEC88 SIIELETON
IN UMIT 81AX11
I F TWO .UFFERS
.................
02'" '.
.. .. .. ..
....
l->: C2.'
0)
'IMSEIIT ICELATJVE'
.ItECOItD NO. INTO'
8L11I1E'... OM
: BUIIEr8 FlEW :
YES
.................
*.
NO
'02
t 1
Jrt.N on ruk
[J
PLAn:; I!UFFEII
PUIN'I't:M AND
'BU.'FUt SUl IN
:
MEGlS1U.S
o OikECT IIlTt:;S
PROCF~i:;lItl.
ert
.................
t:MTt.MEO.
NO . ' FROM FILE ' .
---IMITllU.U... TN . '
' . SLl'TI01f
.. .. ....
::~;:
ns
tGI
.INSE14T MOM Of
'OECB ... SI<ELETOIt
INTO CUMBUF
FlEW OF UNIT'
8L.OCI<
.................
Hl
'INSERT ADOI' OF
'OEC88 SULETON
INTO NXTBUF
FlEW OF UNIT
'8LI< IF "} 8UFFER'
.................
J1
.................
1
111
..................
'INSERT ADOI' OF
1/0 8urFEIIS
INTO DIC8
'SIIELETONISI 1M
UM IT 8LOCII
INSIIIT ADDII or
8UJU:F... INfO
'01C'8,. SIIELETON .---- I N UNIT 81AX1I
245.2
.................
1
.. . '. ' .
INSE~T ~ECOMO
NUMBER i NTu
DEPENDING ON
'O ... TA St:T FORMAT'
e.
'.
~~rn:6
.................
~~~::-->l
....
.'
__ >:OWtl~
Gl
...............
IIETUIIN TO
JlK:FCOfIIV
1 He -.cONI
Chart
G2.
IHCDIOSE/iHCEDIOS (Part 4 of S)
DI'.STERM
,.,
to}
.
,."NY
t.
'.
-- -0 .0PER;'f~ONS,.'
'.
.
'. .'YES
r
NO
PENDING.,
"c)'"
L__::::::::
.t ...
0 J t
fREE MAIN
STORAGE
OCCUPIFD BY
UNIT BLOCJ(S
t t
E l t
DlllfCT ACCESS.
uATA SITS
j
. t F ) . t
~ETURN TO
C"LLER
"G l.t t
GETUAT
fica
..
t.
..
'.
..t.
.0CIU.LED FHOM., NO
> o. O[ fl NE f"l U; , 0 - - -
'. .'YES
SAVE 06RN IN
[ SRNP'TR
t.
j
.,
. ., .0
.0o.
,
.J)
.,
DSRN
YES
NEGATIVE OR ,"--_.
., roo
LARG~o.
'. ~.NO
.1(2
...............
RETURN
" I ( ] "
o GET PARMETER 0
fOil ERROR
.MESSAGE IHC220Io
t t t
.t
1
.-.-.-.-.-.-.-.-.
J" t
.COMI tn'fC
SET UP FOR
ERROR "'ESSAGE :
....
001
->0
o .
GET UNIT
0< ________ 0
ASSIGNMEtrr
TABLE POINTER
t. 'Ha. t'
..t ...
.
0
0
0
.................
: Hl :
'G~"
GET PARMETER
- )
FOR ERROR
:MESSAGE IHel201:
[)!
'H~"
.-.-.-.-.-.-.-.-.
II "
"
"
PRC'MHTFC
................
oLINt( SAVE AREI'.S.
AND SET UP FOR
ERROR I'ISG
0
l:!: >->j
.
.................
IJ.""
I NDICATE NO
RECORD PASSED :
j
If(
5"
...............
RJ::TURH TO
.cALLER AT ERROtl.
OFFSET
Appendix F:
245.3
Chart
G 2.
IHCDIOSE/IHCEDIOS (Part 5 of 5)
... ....... .
...............
'~]"
PRCMMTPC
j
: 8) :
......... ..........
LIN)( UP SAvt
AlWtS
OOM' ...."
: e) :
SET UP
.PUAMf,TERS FOR
: ERROR MESSAGE :
.................
1_._._._: :r---------------0)---------1
:
IF IXTDOEO
!!l1lO" 1WID1.IIIG
!~~~~~.
PROCESS EJlRQII
I'ISSAGE
: :
j
........ ...... ..
f: l-
246
IIETU"N
.uaarr.
: I I NOT
IHCEJtM
"0.
L: _____________
EUCU'!'ION __
chart
IHCNAMEL
G3.
. l....
...............
.. Al
.......... ....
P'RDML'
1'1
PVRNL.
IIOTII
"
R1
"
"
.' -
I/O
EMOII, . '
P'IXUP
'.
I '
.'
'---1
NO
YES
: Cl :
....................
:
~;
-------------~
1
0
t.
HI
. ..
'ji:'"fJ'JNrI
: El :
0INITIALIZE FIl.E"
:
VIA flOCS.
: F2 :
F' 1"
o
0
'WItITE NAI'II.LIST 0
NAME
GIVE ERROR
..................
.....1.
....
GI VE fRROR
:"'ESSAGE
'. .'YES
REMl Rl,'ORD
l'
IHcnu:
: r1 :
.<--
YF:!;
: . H2 :
..
'
NAME IN
"
NO.
GIVE ERIIOR
"
'. .'YES
.................
I
1
: Gl :
o IMPLEMENT WRITE.
:U5ING NAKHIST :
.................
*----
1-,
1
.01
................
------'!
:"'ESSAGE lHe;']ll:
: fl :
N"'~
'.
'.
..... 2.
.................
to
02' . ' . ,
1 .. . ..
'INITIALIZE rlLt o
,>0
vi A flO,S'
0
NO "
NAM! MOllE "
---"r~AN e CHAR~.,'
Glyftct~?R
I I
1
.... H]
...............
o
IIETURN
j
: Jl :
IMPLEI'IENT IIEAD
:USING NAMl:l.IST :
.................
o
o
1'
...............
RETURN
Appendix F:
247
Chart
G4.
IHCFINTH/IHCEFNTH (Part 1 of 3)
Al .......
................
o
MIT"'
1
83
.,
,
.................
OBTAIN
'IIf!'ERRIIPT CODE
Cl
--------------------." ''..
NO. '
..
.' . '
IS
' ..
fJ:i;~~~~~.
'.. ..'
..'
"---1
.....
YES
'03
,f'~'
. . . DETEMiNE-itiriuuPT-TYPE' . -.-
SPEC
o.
'
..
'.. o ..'N"
LOAD IIfC"OJST
I'--------
Hl
V
SET UP ERROR
'MSS"G IHC2i0I.
FOR BOUNO,t,RY
:
"LIGN ERROR :
............ .....
SET UP
'PMAMETERS rOR
..................
1
1t1
...............
..
ao TO IHCADJ.,.
248
.',
F"
'.
..
..
,0,:.; EXTENUEUo.
'
l(i]" II.......
..... .............
.,
SET UP EIIROH
.'
>'.
: G\
FIX
'..
FLO.t.TIN<> 0.
Yt.S
~lIf[H~t~U.t. ------ .
.... ."1
.
.
->:
...................
'01
OVCHII'
G"
'..
..
....
'.. , ..'NO
~...
l-):.~:'
.
G!>
DETERMINE
INTf.RRIJPT lYPE :
'02'
H~
ERROll FHOM
,
.Fl.O"TlNG PulNT
:
REGS
:
.................
1
: Jl :
1 HCAOJST
Yf!;
1
GI
,
...................
t')WV(
f!
..
..
. ' I S I HCo\DJ"T'. YES
0.
LO.a.DED
---
'..
,t,l.kT
f'XOve
,t,L.EfcT
,t,loFR'
DVCIUI
FPOVF
FPUNF
I)vCHI':
J!)
. '.
0.
. ' ME '
'lNTl;RRUPTS ' .
'. '.
.'
.'
't .'NO
....
---1
rES
... ... .
'02
'02 3.
-). <.: 1
Chart
G4.
IHCFINTH/IHCEFNTH (Part 2 of 3)
....
.02 .
...c2..........
:.~:.---~
"LERT
C)
o.
0'0
t.
SET UP ERROR'
YES
EXTENDED
.,
'MESS"GE IHC2101.(-------- ERR HANDLING,'
PRESENT "
' '.
..
.'
NO
....
02'
:~~:~~~._.-._t_:
WRITE ERROR
MESS ... GE
.. I
... ..
02
1-.'
:,~
>
IPIT
,.,
EI
o.
-.------- ------>.,
"
,
IINlltHFLOW "
N(,
<,vtHrLUW U~ . " - - -
'. .'YES
: fl :
iic~
11\'
J ... T...
.F . .'
,'.
law'
,'.
- - - - ' . EHI<
"
to
'. "
HANLJLI N(,
PHr.~,r:NT.,
.'
.'
.
.................
t(;
(;JVE !.TMD-'RD
fIXUP
0
0
j
H It
............. .. .
RETUHN TO
SUPU<VISOR
0<--
Appendix F:
248.1
Chart
G4.
IHCFINTH/IHCEFNTH (Part 3 of 3)
Bl'.'.,
P'POY'
.'
EXTENDED
---..
r
NO
..
P'PUler
.,
ERIl HANDLING,
::i;:
i'"
PRt;SENT , .
, ..., .............
SET UP EIU!QR
l->:....
0 I
(.,'l.'
....
:.:> .--~
-01
:.;;;rl);.~~~~;
.. :
INT.
IMPR
,
f"1
'
YES, EXTENDED
EIU! HArtDL-IN"
., PRt:Slrt'T'
.'
.
. .
....... 'j" :: .... ----------.... -'., ~
.<-------- .
..... (, 1-
.DETlRl'lINl WHICH
.ANu THl NUMilll<
fjIT:. TO TUIIN
.or
.................
ON
.t ...
H 1
DETERI'IINE
............... "
t-)::~~'.
...C\.
:
248.2
INTERRUPT
TYPECS)
---
1
,IU IIANOLIIIG e
e. PUSI..,.
::i;:
: CJ :
all
'
' .
110 ,. .Ift'''OEO
: c :
...................
:..m.8t f~~~Il:
t-."::~~ ..
G~.'
Chart
IHCADJST
G5.
:....
,::,.'--1
'Al'
................
I
ISSUE SPIE TO ,
, T"/tE CAAE OF
,
'INTERRUPTS THAT'
'OCCUR IN MOVING'
D"T"
,
ALI
..... ........... .
I
II'
,
:
'81'
BLI
CHECI< '-DDR OF
IHSTR FOLLOWING'
THE ONE WHICH'
C"USEO BOUlWARY'
MIS"LIGNMENT
S"VE PREVIOUS
PIC" '-DORESS
:
.................,
................ .
I
t;
!
,.... CI',
MOVE D"T" TO
DOUBLE WORD
BOUNOUY
,
CLI
...
D J
uBTAIN'
I!ISTkUCTION
WHICH CAUSED
:SPEC INHHkUPT :
~
MOVE 111,',TR TO
:
WOk~ ARrA
..... El. ..
"
.................,
1:.3
'I~',
'. '.
F2
.'
1m
.............. .
'.
.'
or;ET INC,T~\JCTI()N
UNG1H
YES
"
f.X~lNI)ll'
(~"
'. ~ Nt LIJ[ltL.,
"
1'- --------: H2 :
---'.
. 1
1 .
.... .........
,Ye',
HANIlLINL . _-
',lk~
................. .
......
----------,i 'U
'MOVE NEW
'CONr)ITION CODE'
:
TO PIE
:
,
,
,
'.
'...
'..
'---j . .
Gl
OS
Rt;tURN TO
'SUPERVISOR fOR'
. . . . . . !~~~~
Fl
,
. ...... ,,, ......... .,
1 . ...... 1 .
.....GI..........
HI' I t '
RET TO UITH'
'TO PROCESS NEW
I In'ERRUPT
Nu
.................
..
H.:;, 'INSTHUCTluNO.
LEN{;TH COuf"2.'
'.
.'
'----j_-- ..
i '"
. '. ' .
'. .'YES
VII)LATIuN
"
HArWLEO . '
'
'.
.'
W"S
'.
'
N E W ' . NO
. ' COUDITION ' .
'.
INTERRUPT
,--------)'. CODE "'FF'lC1'ED.
' . OCCURRED . '
'.
It
cs
. ...
1:.4
'.
BuIJNOAf<Y'.
'.
RESTOIIE'
: ORIGIN"L PIC" :
.:<---- "f~.....
..................
............ .....
'.
'..
'.. ..'
.' .
. ' NEXT
'.
ISSUE" SPIE
INTERRUPT
'.
H"NOLING
............... ..
rt
I HC'ADJST
o'Nu
1.
HI',
.'
'.
.. *IS MEfl~~A(;E '0
TO AE WI<ITTEN.
'..
.
'0
0'
'.. .'YES
NO
.
j . 1
J2 ......
..........
......
................ .
II
MU!JIF'Y Ul:;Tk
A1JD~ES;, 10
0f'uINT Tu Iw;Tk
WHIlH CAII:,lD
lUl EHI<Uf'1
............. ....
..... H"'
................ .
RESET P:.W
AOOklSS IN PH.
'TO IN:;TR WHICH
CAUSED
IrrY"ERRUPl
.----
"1
RETURN
J l
DECllEMENT
MESS"GE COU,.,.
"NO PLACE NEW
COUNT IN
IHCdOPT
l'- --- - -
.
................
..
....
.
l->: .
t(
'C"LL IHCFINTHI
IHCEFNTH TO
WRITE MESS"GE
....
U
Appendix F:
249
Chart
Gb.
IHCIBERH
: Al :
:GEN~~~l>E~OO[
--.................--
: 83 :
-OBTAIN J NTERNAL-SEQUENCl NUMBER-
.................
:
(I!.iN)
1
el
-
..................
-CONVERT ISH TO -OECIMAL FORMAT -
"'Dl"
BRANCH TO
IHCEItRI'I TO
HANDLE THE
WRITING or
ERRuR I'ISG
250
E)
IBEXlT ATN OF
JRCFCOMiII
...............
I HL lC()MH
(' t ;,1 f
(~7
1 II r ' [; T 1\ 1="
(P (1
of 2)
.... ..........
...............
.
,,)
I HCSTAf:
83
.................
--OETEMiNi-iiO-COOi------. -]
~~~~~~~
:M)~i:I~,A~~vr:--- ----------->
[
12
WTP
-------j---------I
SAVE IIICOMI
'PAJUUUTEII LIST'
.
::::.. 1.
......
P"','RJRl
'('1'
INSERT T 10
IO!SG
'STJ\"IJ~;
IN foRROR'
01 -')
: '1 :
0<;1'1
P,)ttn'FR Tn
~\'[
-;"'''''',
I\~F/I
'~8!ND
""1
POIN'I'ER Ttl
Tfd' ('c_'NTf.4tQ
RL' I('~
CODE
~I<IO
PROGRAf4 PSW
INSERT 110
'S,."rus IN ERItOIt.
MaG
SYSTIIVUSER'
ND CODE AND
ItOGIIAf4 PSW
01 :
:(~~~~~~~l_
02
t_._._:
lONV1'RT ABENn
rODE AND P~W
: ~~~.~~~~!~~
1
.................
E)t
: Fl :
";~T
SYSTEI'IIUSEH'
'''PEHD COD" AND
WTP
NOlO
'GET SYSTI!:M/UStR'
""1 t
..
.....
.... 'D2*
FXITRTM2
AREA
.'~'::P"M
P'iW
l' 2
.'. ' .
'.
. ! S A8ENll 1 N'.
"
t.
~,I,~~~~l0' . '
to
YES
'---j
f '
N"
'Gil
RESTORE :;1tAi.
l.It
1< -
II
<.;
: .. Hl :
'.~,T
;1\.
TIJY
'\~):!R
IJ(l'Ij
Of
Itlf
: H2 :
RE"jORE
RF';1 SH'flS
..................
. .. n.......... ......
.-----1
:crT R[TI)I(N'
..................
"'I~-"
(RFTRYI
J2
Sf.'!' RETURN
.................
(,ODE:O
(NO
RETRY I
-------,1
X2 .
................
RETUlIN TO
SUPERVISOR
Appendix F:
251
Chart
IHCSTAE (Part 2 of 2)
G7.
Al..
...............
.. AI ---T-------------! :::!v~:O~ROII
Rr:TRY
:
.L _____________ _
CALLCIfVT
..... Bl..
.................
~
: 81 :
SETUP'
'PARMrrERS FOR
CONVERSION
ROUTINE
SAVE CONTROL
: BLOCI': POINTER :
..... ............
ei
..... ............
e)
-. -.-.-.-.-.- .-.
... 01..
.................
1
.0)
...............
rcvzo
ISSUE STAE
MACRO TO
SPECIFY A NEW'
EX 1 T RTN ADDR
.................
'CONVERT SYSTU
PSWTOUX
GET ADDR OF
'PARMS IN 18rOM.'
RETURN
j
: .1 :
GET ADDR OF
.................
STAE CONTRuL
RLOCI< POItn'ER
..
Ft
o. . 110
~'.
'0
'.
TO BE
RESTORED
'. '.
'
.. ' .
.'
NO
.- --
YES
I .
.... 'Gt
........ ........
RESTORE I/O
,.
1'--------
.....HI'
................ .
ISSUE SPIE FuR
PROTECTION
'ADDRESSING AND
SPECIFICATION
INTERRUPTS
'H2'
..................
'ADD INDICATION
TO MESSAGE
- - -- >.
.... Jl
J 2 - - - - - - - _. ,.----------------
'SEMCH THROUGH
MEAS,
'IHCERRM
-->:
.................:
0'0
)(1
CAN
TItACI:BACI(
MAP BE
'. COMPI.TE
o'
'0
'.
252
o'
[RR~:C~~AGE :
. . 1....
:8~8t~~~0~lIH
-.-. -.-.-.-.-.-.
NO
0._--
' ..
'YES
L ___________ _
IF InaDaD
I aOOR IlAllDLIIfC
: II JfO'1' 'USIlf'l',
. : IRCZ.... DDS
.... )(2
................
'CALL IBEXIT TO
TERIUMATE JOB.
L_~~ ___ _
Ga.
Chart
....
o A3
I HCERRI
. : CALI..BD BY IBCPCONII/
:IN~~AIfnkN?;~Y
"
:L. J)DULB
TERMINATION _
___________________
:S~ ~~Sll~:
8Y
:: CALI..BD
U8MD ItOO'l'IIG
AItEM
~IIIC;
______________ _
:L. EJUOR
ADDRESS Of
ENTRY IN T
TAPI.E
L.A~;T
85. ........
o GET NUMBER OY
................
"
"IHCETRCR
.... CS .....
GET NIJMBEH OF "
................
ENTRY
S~Y
.'
.'
..
YIS.
, 0 ____
>.
A~
"
' ....
'
o NO
0 ........... .
D~
..
,oF'R1':1': 80P'Yf:R., n s .
0
A.RU
,.-------->.ISSUE P'U!MAIN
'.. 'e
. ..'
...............
"
.:: t;"
..
'2..........
............... ..
,.).'.
'INDICATE BUFI"ER.
,"
,"ERROR 1218)', n s
MEA P ' O R .
,"
".
",OR ~ROR 206 ,.-------->.IU:SSAGE MUST 8E.-------->.,
ERR' 211
". OR 226
P'REED
"
"
jMO
'. .'
. '.
,
YES
,.-------->.
.'
i NO
. ..
ns
0
0
,'---.-)' A3
ENTRY
,0
' ..
o 'NO
PRINT LlN!
"
1
R1
SET r;ItTIlY
SWITCH AltD
H5..
..................
DICRI':MEIrf TO
NEXT EIn'RY
.................
STOlt!: f:ItTRY
MOMBI!:R
.0
"
." .
Jl
.,
.:
.'
.'
:.;:":
...
G2
Gn TULE IMTRY.
POR THIS PROR
.................
1
......
..
I'lINBER
'. .'
l'
..o
NO
1(5.
...............
: U :
'. '.
- >.
. ", ".
J'>
' .,
ns ,.
---.,MORE EJlrI'RIES . 0
l;;;::
......
.'j'. ~~S
J2
TABLE
,.
.IS !lOT 1M TULE.
'0
'"
G'l.....
................
r.1
. DUPLICATE
'.
"
YES
PUT ERROR
"
NUMBER liND
e n BUT
ADDIU:SS If
SPECIP'IED
'.
...................:<------- .
l________ _ ,j
:.... ,.......... :
. rs ..
.................
......... ......
I
n..
, "
I/O '0
,0
. ",
O;'~Y ERROH;'.. NO
", Of THIS TYPE . --o
.E)
i<~--------------~~~~~:;T::::::
.
.
eF.I
GET EIUIOR
NUMBEP.
I.
"
03
:~~:->l
.................
.,j
ENTRIES
:GIVE TRAC!.BACJ{ :
",
0
"'.
, IItTRY FOR'.,
1
..-.-.-.-.-... C]
..... -.
'.. I.
1 .
.................
0'" 0
liS :
A.~
""GET
PilItn' MESSAGI
P'OR THIS ERROR
o MAltI INITIAl.
"CAl.L TO FloeS'
I GET 8l11'P'ER
0
o
ADDRESS I
!
"
.
.................
A3.
TPI'4IMATIOM DUE.
TO DUPLICATE
EIrfRY MESSAGE
B].
el!.........
01
:~i:--J
!
..... 81
----..,.----------------
IHCERRM
..... .
........
IHCERRM (Part 1 of 2)
RETURN
02
~.
Appendix F:
253
Chart
....
A' .
....
02
IHCERRM (Part 2 of 2)
GS.
0- -
0'0
.
.
..................
l->:......
." .
At
'.
'A2-
',~~lTG~e~:S~ooo_------->:
. 8'
"
0,
NO
Cl :
I. I.
COftTINUE
00
COUIn"S I
I '
:.;;. :_>j
0If
(8A~"EO
:;;;;,t2i;~~i~:
'0o.-NO_______ >oTO
oTERMlllATl1IG Dut.
ERROR Cooln"
00
"
.
0
MESSAGE
L>~~l::-
YES
cl '.
.....e2..........
.... el. ..
.--------')0
.
. .................
..................
,0,
"
NO "
___ ' ,
....
PR I In" "
PM 1 NT MES:;AGF.
Mt:SSAGE
"
YES
oGET 1>.00RlSs ""n)'
.... NO SET foI:;~"'Gl'
18A:;fO ON
,0-------->.
LENGTH or
PRlIlTlO
l"OUI'tT'SI "
'. '.
.. ...
"
: 01
I.
. '. ..,.'
I'r< I NT
"
.".~~fr~L
................... ------->:
.'
NO
1< - - - - - - - --
til.
" "
'. .'
.0'
."1
.. .
RlI.IUE~Tt;{1
.'
0 -.
II It
Y E!;
I .
.....ta..........
.:;t:l IIt'rtlllN CODt: o
e
1T) \
,...
'01
:.~:.
f..i1 ,
'. '.
.
l ......
.... .
t.
.
..
ljJ
..
Hi
..
"
I. t.
.'
'.
.. >' (fa.
"
1m
It'J 2
or ..
.TUIIN
~NTHY
:;WITCtI
0
" J JI
[X11" HJ
.SPEI.lF'lU) rOl"T'
It
It
.I(J
II
RE't'URN
It
254
It
.
' .. '
'.
NU
--
Yt.!...
UI '
:iWI1CH
.'
PHINTto
'.
.... !.
o
N:!iflA\;t.
'.
(;J
r ..
..... ...........
"'
to 1
"
)'
t._
..l.iij
.'
,
"
Rt.!.ToHt. U!;f"H!.
"
T"'II[
"
yt::
Rt:l.l:.Tt.R: .... Nfl
',SPlCIAL. ."XIT ,.---,---->.TUH" un' lNTIH
It
.................
..... l
..... '
- - .- -. - -. : .: :. j........
to
I I ' t
(t"
'.
l:~
,
it 1 I t
0
"
.,
liME.&.
,e-------->eHiSUl Un:lMAIN
I t . I t I t
roll
.
'--t
:~'!~:":-. IIUNITIALlZt.
:
noc,.
NO
'SlT RETURN COOEe
,e ________ >.
TO 0
: I t t. ...........
Rl!,TOIII:. ONt.
). S"'Vt ... IILII 10
tHAIN
.....................
. -.-: ..... .
. .
...... F2.."---1
'.
lX1T .,
. I)"lll
'.
.lJ
............ It .. .
: :
Nt)
'. '.
PHINT Hllnll<
-------- ______ 1
:~::~:->l
"
,..,
'lH<"lTHlH
ncAl'r""'CI< 0
YEs
Rll"OVt" ()N~ :..IIV~'
-. -. -. -. -. - Mt.\illl.,Tt:(l
,o--------).AHEA fROM CH ... tU"--------~.
C ... LL 1 II... , l
--)',
li ..... ...
.. 11 .. I.........
: OJ :
n:s
'GLT ... nOllf~,;' ... Nn'
"-------->:( UH~~~~T~lI~~t:R :
,',
"
o.
PRJI'tT' Mk.SSAI'l 0
o
INDICATING
0
.liTANOARD flXUP
.................
L>:::o:
. .
H~"""""
o
"H!NT "'ES:.A(;I 0
->'lNOIC"'l'ING USEII'
:
F'lXUP
:
.................
L>:'::':
chart
G9.
..........
1
IHCFOPT (Part 1 of 3)
....
...... ,.
.
1.4
001 0
1.2 .--~
...
ERRSET
Al.
................
SAVE REGISTERS
,
.~6. OF- '.
:~ii~~Gfg
,
'. .'
AIt
:; i\j :
OO.:.~~ ______
>:
SE~Ri~tR~oTO
MESSAGES
YES
STORE NO. Of
MESSAGES TO
.PRINT IN TABLE
:
ENTRY
.................
:
1
0" ' "
,'0
u~
GET ERROR
IT
.................
:.;:. :-J
'.
L_ - - ----- - --- -- -- - --
....
IGNORITM
o2
,,..
DJ'
YES
'.
Yf:
..
1.
ON)
:'
.... ..
1-'-1_'
..................
H()
'.
---..
..
! '. . I .....
t..
->:
...
NO.
0..
INDICATE NO
TRACF:IlAO
't l " t
,;tTEtl1HY
_. - t -. _. _
* -. _. _t
(iET U!;t.H
AI,OI<~."~'
H4
'0.
H::;
_.
I.
* I
... ...--1
..... H')
.................
'01
H'>
..
ZI-.tll)
- .....
flr<~Jl TI,..,t
()N'
..
j
t.
GETEHTRY
t-t_._.-I_.-._'-'
'J'"
Jl
.1'J" - ' .
ll<ROR
NUMflER (.1 .,
.MAXIMIIM TG liE.
STORF. ADDRESS
'11'1 TABLt: fN11<Y
GET NUI'\BER or
I'IF.SSA(;ES TO
I I
.
.................
..
----------) <------------------------
t . ~HANGElJ '
'. .''i~~
---1
1'1:]
l . . ....
....
02
- >. 1:..2'
1/
K1
NO.
'.
'MESSAGES TO'. YES.
PRINT LT OR , . - - - - ) . 11.2
EO TO 0
.'
.. .. .' .
. fI
K4
'0
'.
~;;~l )i)i,~ ~
1.
~~
__
(1
1
..
n.s
.....
NO
1.
A4
iNDICAT,_
~~~i~}.:~f~r)
---l---
. : t ________
t. t t
Nu
'1' .~o
E~"""""
F"* I * I .
HI
:~:;.~~~~~.;~~~;:
.NO. A!.LOWED'. YES
TO ALLOW TO
>:
'02
81.'
'ERRORS ALUJWED
IN TABLt: lNTRY
'0
NO
. ' L1
'.
.
.................
o'
. ....
1.
. ' YF.~
{, I . . . . . . . . . . .
STO~E
*.
' .. '
,d X
I'AI(Al'IJ::TEI(S
.'
' . :,IIPPLIE[J o'
PAR.\MTER ' .
~ T ()I( H,) TO ~
. '.
1
02
E}
.0
j....... .
EI
NO
D4
n.s
r--..
'
l;lT NU .. 'IF
I':RII< 1'<:, ALLtJWED
NO
NO
Fl
GET TRACEbACI<
INDICATIUN
:
'02
f.t
r,ETENT~ Y
..
.................
'. E2:<-
'TABLE ~NTPY NO
MOD i f'iAHU
----
:~E~~~L._._._:
YEO:;
"j'~O
... ell-........ .
.................
t-t-t-t-t
.'
Dl
B~"'"
1
-----~------------------------ 1
.-t-t-t-t-t_'_t_t
ERROR Nu.
....
NUMBER G'I'"
YES
INDICATE PI( 1!'IT
.OR E" TO 2Sb --------). ALL ~lSSAlo~S
'F1HDENTR
: 81 :
NEXT
.02
.A!'
Appendix F:
255
Chart
....
'04:
A;
0
-
IHCFOPT (Part 2 of 3)
G9.
-!
Al
n:,
0,
".,2
_ _. _. .:
:l_~;!;~!~!
I.ET
"t
ERRSAV
A.
o
"'NTHOL
1e
:<;AVl: HC;ISTERS
nIARA('~ f'~
....
,I
!
..... 81
._,_,_t_,_,_t_,_t
:;'100 _
0C;ETENTRY
: ~'~!r:.;~~
.... 82
o
INDICATE NO
0
o
CONTROL
0
oCHIUlALiER 'J'() ElFo
o
:;IJI'rLIfG
0
: 83 :
GET f.RJlOR
NUMBER
f ( ' 1
0TURN llN SWIT, H 0
o
INfJlCATINC
FI R:,: 1'1 M!
o
0
('2
NO
("l"lf'f-:!.t---
0,
'.~~"")UA.U;
THR(ltH~H
0'
to
..... ['1
;,Tl>lll lIrill<
RAN!a A"
o MAX 1M"" Te' I'!
o
,'HANt,!'O
o
....
'(,1
~.
ttL,
..... Pl-
o
IN[)L.'A1E
l\;NT~<.\L
Vl-:S
't
t< T()
::\!i'I'Li F~\
HAHAl'T~
0000
01
.......:2
F 1 NI ',flED
o
TII~N
(lFF
~,Wl 'J'('HfS
:< ________
.................
I
.... '1*
R[TU~N
1-'-1-1-1-1-'-'-'
.................
j
oGET ADDRESS OF 0
:
TABLE ENTRY
c ..
:~ !~~~~~ -._
.................
.0,
o D~
0
0
MOVE TAEILE
ENTRY
'.
'. .'
o.
NO
1'"
E~'"
.t;ET ADDRt.S!; OF
o
WHERE TO
.................
RESTORE TABLE
ENTRY
FROM
r ..
o RESTORE TABLl 0
.................
J.o
....
ENTRY
0,0---->: E2 :
.'
: n :
256
o.
ENTRY
o o .MODlflfUlLE
, 0
..... F)
0_'_:
: 03 :
o r: 0 ')
1
.................
: ' 8 . . . . . . . . . . . :
Hr t
.................
....
.................
IJM8ER
1 ...
... C)
.F'INDENTR
"c..
00
o
:"'AVl: REGISTrRS :
GET ERROR
[RRSTR
Chart
rINDENTR
"
G9.
,',
IHCFOPT (Part 3 of 3)
"
ERROR "
NO, LT OR "
t,
-->.
~~~!,.
...
:0~2:
1.2 ........
..................
NO
SET UP FOR
. .
'.
..
B1' .'.,
J
,
,'ERR NO, GT "
YES
' . NO. OF TABLE ----"
ENTRIES "
'. .'NO
.2
.-.-.-. -. -. -. -.-.
................
.
....
l. .
....
'WRITE
WRITE9~SS"G! :
I
'02
- >. E2
.... Cl.
..................
'GET TABLE ENTRY'
ADDR
:
'. "
'.
..
YES
..
MODIFIABl.E
'. '.
'. .'
'0
.'.
Al
'.
I,
LAST
'. It
.................
RETURN
'---1
'. YES
'0 PAJtAMITI:R
GO'M'EN o.
.'
.'
...
NO
:0~2:
.3....
..................
~
'UPDATE TO NEXT
PARAMETER
Cl..
.................
P~TER
.I;':BLE !HT:YI.,.-------->. 02
01
.'
.'
GET NEXT
GETEMTRY
0]
RETURN
NO
El
."
...
. '.
.'
' . YES
'.15 IT ERRSAV ,.-----
NO
: '1 :
'SET UP !'OR ERR
:
NO. '101
IIR ITE
(;t
"
: G2 :
'. '.
.. IOCS'
' . NO
MAIlE
INITIALIZED ,.-------->.INITlALIZATION
'.
.'
'CALL TO rIOCS'
.'
'.
10
.'
YES
.
..................
HI"
Ptrr ERROII NO.
I NTO MESSAGE
: Jl :
IIRI TE MESSAGE
:
VIA FlOCS'
II
RETURN
Appendix F:
257
Chart G10.
IHCTRCH/IHCETRCH
NOTE:
1 HCETIKH IS CALLED BY
IHCERRM.
IHCTRCH (EIn'R'!: POINT IHCERRM.
IS CALLED BY LIBRAJlY ROUTINES
DETECT 1 NG ERRORS.
...... ..........
1 HCTRCIV
1 HrETRCH
B2
B.l
I..
t.
o SET SWITCH TO
'.
INDICATE !'NTRY
YES EXTENDED
'.
FNOM ERhOR
.<-------- . ERR HANDLING.'
MONITOR
PR~SEIn'
...................
...
00
'.
CJ
PRE'.
YES CEDING USE ' .
--- Of IHCTRCH
'.
DONE
. ..
:....
'::. :->1
,
.. .
'.. ..'
C~
I HCERRM
......
1
c,,.
................
NO
PRINT NAME OF
:CALLING ROUTINE:
'
03
,
ERROR
NO
, CONDITION 217 -- OR 218
'. .'
1'.. "
EJ
"
EXIT
NO
ADDRESS
,- - >
'.SPECIFIED
'.
.
'. .'YES
.... f) .....
................
.RETURN TO EIIT
ADDRESS
'Gj*
........ .......
IIETURN TO
IbEXlT WITH
ABONT CODE
0"
.
.................
.PRINT CONTENTS'
: OF REGS h - l
E~
...
'(-
.
.
.-------->:
." .
:...............:
E~
'..
TRACED BACK
.'
, ' . TO MAIN
'..
YES
'PilItn' MAIN
ENTRY POINT
j..
. '..
F~
'.
TABLE
51 ZE
NO
' . EXCEEDED OR ,--.,
LOOP
,
' . FOUND. '
'.
.'
yt:s
F~
.
................
,
'PHlIn' TERMINA'E'
:
MESSAGl
:
l->:.' ...
---1
j ..
.
................
too
j
.... 'G,,
'.
EXTENDED
NO
EMR ItANDLlNG
PIIESENt . '
.. '
YtS
'G~'
TURN ERHOR
.MONlTOR SillTCH
OFF
OJ :
: HJ :
-->:
"HS'
,
:
PI< I NT ERROR
Mt;::iSAGE
.................
PRJ NT HEADER
FOI< TRACEBACK
J ........... .
POI""' TO HEXT
HIGHEST LEVEL
'CALLING ROUT IN!'
.<--
.,
. . . .r:':::'------:: : :J.......
.
..................
......1 ..
....
1< 1"
CONVERT REG
'CONTENTS TO HEX.
o CII
258
RETURN ro
CALLER
...............
OJ
Chart Gil.
IHCFDUMP
OUMP
'Al'
SET SWITCH ON
FOR MONITOR
'EXIT IEXITSW =
X, FF' )
................
.
I
1
'.
"fl1
Ali
A2
SET CARRIAGE
CONTROL FOR
'EJECT ICHAR IS
c' l ' I
, "
"
.'---1
"
.'.
l''
M~;',
..... 1.
;~:T
~;WITlH
Tli
IN'
,
j
.....
Fl
.
.................
tOHTAIN ADURlS~
",. jl,R(;UlU:NT
L1:;T
If,
t t
MA)(E
'INITIALIZATION
'CALL TO FIOCS'
o
t.t
[
... 'Jl
.......T......
C!>
.
. ' IS
MO
---'.
l ......
.....
II..
.... 0) .......
...1
..
-->:
,',
"
'I
THIS A ' .
DUMP ENTRY . '
'I 'I
- >. 02
I.
['
.'
. .'
yr.s
D!!
IflEXIT
1-------------.
. -.
Tt:.,MINATI:. J03
11."
II
II
YES
J2 :
"
. 0 ____ _
'. .'NO
. . ;..,.
",
'.
. .ONLY
ONE
o.
AR(.UMNT
'.
I/O ENDED'
-------->0 RESf;TSWITCH
'MESET ARGUMtNT
POIItI'ER'
E2. o. '
'.
B!.
I,
E~' I
-->:
...............
kt:1URN 10
CALLt:H
."
F1
I.
Fl
. ' BYTES o.
,
NO . '
TO BE
' . YES
(.jET AYTES
,
-- - o.
DUMPED
,'--- - - - -- )'BETWEEN LIMI TS
'. lin-WEEN.'
.LIMIT.'
,
'.
.'
II II II
r
.
: Gl :
RESn- rOR
"ECOMD LIMIT
:<----------------
I I II I I
.'
.
.
H2 o. ' .
H)
'.
'. ' . ' .'
---------::1<;::------ ------:::::]........
o
'SI<I P A LINE VI A'
FIOCS'
ASSUME t'IRST
: LIMIT IS LOW
: HI :
"
1
.....c............
II
: 02 :
"
l,ETARG
IHCqn~I:
--"INOIl'ATt II"
P"Ol;Rt S~,
'.
..
.
.,..
j
.... ,
.'.
ARt
'. YES
'.
ARGUMENTS
' . EXHAUSTED.
: 02 :- >
...............
,~
INITIALIZE
'01
o i<RANl'H TO I EH:OM'
:f
Bli
'C2' ,
NU . '
A roUl''IP
'.
<--'.DlIRING AN 110.'
'.
FIXllP
.'
'. .'
'
: :
Cl
'.
'IS THIS'.
..
I I
:;~;'g~~~'~;;':
NO
'.
DUMP DESIRED
LOCATIONISI
PDUMP
II
FOR MONITOR
OUMP CALL '<--------:iXiT~~!i.oO.i
r---.
..........'--1
A"..........
....A2 ..'--1
t . t . t
..
.. . . . :;,., .
1
..... K2...... ....
J 2 '. ' .
. : . ' COMPLEX':
.
.
.:......T......:.
J )
)(1
SAVE START OF
RECORD AND
'COMPI1fE END or
RECOIUl
..................
.....
l->......
1<2
GET BUFFER'
POSITION AltO
ADDRESS or
CUaaDIT DUMP
LOCATION"
.....'0
'PCVZO
................
.......
.-------->..-.-.-.-.-.-.-.-.
BEXADfJCIMA.L
CONVERSION
.................
l->.......
A
Appendix F:
258.1
Chart G12.
IHCFEXIT
.....
~ ~
........ .
EX Ii
.. .............. ..
j
J
IlRANCH TO
IIlEXlT
258.2
chart G13.
IHCFSLIT
Al...
..................
SLIT!!:
. 831.........
....
.................
..
..
I
..
....
....
. .:->1
:
....C) ...,..
1 :
..................<--------.. ....
GET I
C2
C)
:;~;g2
-.-.-.-.-.-.-.-.
CONVERT BAD
DATA FOR ERROR."
"SG
1
,.-------------------------. ...02..........
I
Ir U'rDIDBD
I HCEJUUII
:-~R;O;-~r..;s~G~-:
: IERJIOR IlAlmLIJIG
I
IS IIOT PRUaIT.
IHCZAIII DDI
IHC21bI
: :
El....
2-
NO USER
.<--------..
UP
*. *.
__
OJ ..
!:~.:. I LT 0
.:.
I""
El-..
*.
.. .. . ....
....... ..... ......
L_______________________ ~l~ES
......
GIVE " STANDAJtD.
FIx-UP
I GT ..
L_~~~____
YES
. .
.. .. ... .... ..
FIXED
DATA
:C):
YES
leO
NO
F)
TURN ON SENSE
LIGHT
CORRESPONDING
TO neE VALUE 0 ...
: P. . . . . . . . . . . :
OFF
G2.
...............
SLITr:T
ADDit OF "
..I
,
"2
e.
YES. e
C2 .<----..
I GT ,
...
,,*. *...
.
e.
r..
YES .e
---..
..
&2
*. *.
e.
LE 0
NO
.
.c
...............
1
N2
.
...................
-----
..................:
1
.................
:
E..........
GET NUMBER OF
N) ... ..
IS
RETURN
H'.
..................
SENSE LIGHT N O
SET J a 2
i''
.....J)..........
. ,.....",...........
"-1
.................. ,..................
SET
.-------->.
1
11'
................
Appendix F:
IlETUIIII
258.3
Chart G14.
I HCFOVER
Al .
......
... ..... .
.IU..
..
110..
.<--------..
SET J z 2
.'
I.
12
OVER,.L
I,
'.
UNDZ.,.LOIf
. <--------..
110..
.'
r' ..
: C2 :
SP!T J .. )
8) 1..
e.
'.
e,
OVERFLOW
''.
...
'
I.
r'
.'
: C] :
.................
........1.........
.. .......... .... ..
TURN OVERFLOw/
UNDERFLOW
INDICATOR OF,.
El
.... ....... ... ...
258.4
RETlTRN
Chart Gl':>.
IHCFDVCH
A.)
DVCHK
..T...
: . . . . ;;2 . . . . . . . . . :
SET
.J~l
ns . -
-El~;~i'-.
CHECK
:<--------.-l~~~~~~f~~:-
.................
.. ..
NO
IC' 1*
................
..
,
St:T .J" 2
"D \
Or F (" I (j!)J
f ,
IUTtJI'IN
Appendix F:
258.5
chart G16.
IHCDBUG (Part 1 of
U)
..Al
.
............
:
DEBUG I
,.
B3
..1
. ' .'
SELJ!!CT
'. '.
' .' .
. .'
.... ..
OPTION
j
----------oPiIc..----------ioiiTitiE--l.OCATlOit
TRACE
.'.
'.
..
TRACE
Gr01F1
SUBTRACE ON
SUBTREN
GF01F2
SUBTRACE OFF
SUBTREX
--Groif1
UNIT
UNIT
INIT VARIABLE
INlTSC!.R
INITARIT
GF02Al
IN IT ARRAY FULL
INITARAY
--Cifo2A2
SUBCItJ(
SUBCHI<
TRACEON
Gr02,.1I
TR"CE orr
-DISPLAY
-- ------ - - -- - ---- - ------
TRACEorF
GF02DII
DISPLA"t
GF02A5
BEGIN 1/0
STAJITIO
GF01Al
ENOIO
GF01"2
:~~irl;~n~:~~~:
AMD MMI: OF
PII~ INTO.
DBurrn
.................
.... .
l->.......
Oli
811
... 'Gl'.
RETURN
Hl .....:<-.................
MOVE 'TRACE'
: INTO D8UFFER
1
J1
.
..................
--- -OUTIHT- - ---.
CONVERT LAJlEL
TO EBCDIC
l->:..:~~....
A....
258.6
GrOiFII
--Gioifs
TRACE ON
SUITREN
'
NO
' . TRACEf"LAG orf". .--
TRACE
rl.. ..
SUBTREX
.MOVE 'SUBTRACI:"
RETURN.' INTO
:
DBUFFER
:
.................
l->:....
'011
8ij.'
GF02A}
.....,..............
UNIT
PUoCE IHfIT
.
................
NUMa&Jt I N OSliN
1 .
G..
...............
R:l!TUIIN
F5 .. .
..................
1
Gs
.
INITSCLR
COMPUTE
LOCATION
VARIABLE
0'
................ .
:
j
: 65 :
----OUTNAME----
.................
.... .
.PLACE VAlUABLE
NAJIIE I N BUFFER
l->:
02
1'.1
Chart G16.
IHCDBUG (Part 2 of 4)
....
.....'--1
M.
..
..................
'02
INITMIT
INITAJIAY
eo
1 ..
81.
.'
'.
'.
~.
COMPUTE
ilB
'---1
NO
LOCATION
INITAIlIT
or
MRAY ELEMENT
Cl.
- - --OUTNo\ME- - - -.
PLACE NAME OF
,
ARRAY IN
DBUF'FER
:
.................
01.
.. ...... ... ......
L>:o~:'
.......
'COMPUTE ELEMENT'
'NUMBER AND MOV!'
:
TO DBUF'F'!R
:
.Rocaa MUY
!LlMlNT
NO . '
END OF MRAY
't .'
..
cOllPUTl:
~~TifLi""
......T......
.'.
. ~~:r~ .
83
..
---. 0
A3.
SUICRK
.'.
A2
.....2.!........ I
-->..-.- ...-.....-.-.
.................. . . . T .......
.... --1
'O:l
A...
A1
'.
'.
MAX ARRAY
' . LOCATION.'
NO
_--
A. ......
TRACEON
ON
RI!'1'URII
...............
i'"
0'
...............
RETURN
RETURN
AND INSERT
o ADORES:; or
0(_: ARGUIU;NT L15T :
0011 ,
BII,'
.'
I,
.'
.'
NO
1 ...
&5.
CONSTRUCT
""MELIST
CALLING
SEQUENCE
.................
................
.0.
TMACfOFF
:<-
................
o
2 ..... .
................
.
..
.
l. >:
I,
fOR OUTPUT
:
: [1] :
o MOVt "UlJlHY'
: INTO OIlIJFH.H
'.
l'~
.... [)2 .
: 'C50 0 . ' 0 :
".c J
: f) :
-. --UII1NIV'.t:- - 0
o
PLAct. AkkAY
: D~""""':
0--
-NAMt.LI 51"- - - -.
OUTPUT
,
o E ...
H[TURN
IE~'
HETURN
1 ..
..... ", ..........
.................
.
o("OMPUT f.
ru IU;NTO
NlIMbt.1<
..
...............
... .
;r~i.i
MOVE MESSAGE
0'
DISI'LAY DUMllll.'
TO'
DblJfF'ER
'
l->:....
0
'O~
1)
1 .
BII 0
('U1INT- - - -_0
o CONllll<T LABrL 0
:
TO UICDIC
:
0- - - -
.................
I->::~:'.
B~.'
Appendix F:
258.7
Chart G16.
IHCOBUG (Part 3 of
START I 0
: ......1 :
ENDIO
: A2 :
..................
SAVE 10FlJIG
INFORMATION
: 81 :
SET IOFLAG TO
INDICATE I/O IN.
PROGRES:.
.................
I!l,oCJ(
IIETURN
.
........... ......
SET 10F . .AG TO
lNABLE FUTURE
DE8U<i C\LLS
e2
...
*.
el
----OUTPUT----
ENOIIGH MAIN NO
WRITE MESSA<iE
STORAGE TO
"-------->.
'SOME DEBU<i
SAVF INFO.
.OUTPUT MISSING'.
.... 01 .
8.2*
.... el
.SET CURBYlLC TO.
AD 011 ES:, dF
LUeAT ION OF
FIII!.T MAIN
q)
...................
. '. ..
.'
,T"
'.
0 J
INFuIiMATION N O .
!N OLD 10Fl.A~."--------):
RETUIIN
. . . . ~ES
::::: :-,1
: [2 :
- - - FREECHAR- - - -.
EXTRACT
C""RACTER
.................
- - >.
:
F'1
o
.01
'.
F]
:I'IOVE FULL ARRAY:
FII
------ -->0
TO DBUFFER
.--------)0
RETURN
..
OUTPUT
'. .'NO
1
0
.'
GJ.
'.
'.
....
.
.
.
.
...................
l ..... .
G)
NO
.I'IOVE CHAAACTER
END OF LINE --------).
TO DI!UFFER
'.
'.
YES
..... H2.
..................
----OUTPUT----
WRITE OUT LINE
J2.
...................
---.UPDATE POINTER
258.8
. ................
..
->:
E2 :
G~.6.
Chart
IHCOBUG (Part 4 of 4)
....
....
:'0"81.
~
81.
.....'--1
a. ..
.................
j
'0"
'--1
811
OUTITEM
OUTeur".
..
:M~~fo E8~~fr~~GM:
SAVE RITURN
REGISTER
II
1
eeCl.
.
Arx~T
u.o~n~
'INTEGER/LOGiCAL'
..................
"
..
..
"
01'" "
' .. '
. .'
---.'
"
!
I
LOG IC.\L
I OUT LOG
IGrOHI
INTEGER
IOUTFlXlD
IGFO~r2
----OUTIH'l'----
COMVEHT V.\LUE
TO E8COIC
- - - - - - --- -- ----- - - -
fl I I
MOVE' F' TO
POINTER TO
INDICATE ZERe
VALUE
YES . '
Gl
,',
'.
... ,.
"
j'"
:..Hl .. :
MOVE 'T' TO
PourrER
E).
..................
....1.
OUTf'IXEO
eRI.HCH '1'0 I
DATA TYPE
r2 I I I I
Sli :
-- -OUTFLoAT- -. -.
CONVERT
'FLOATING-POlln'
: AND 1 ""'GI NAMY :
..
..... ............
'G2t t.
:MOVE TO BurrER :
.J. .
:
BII :
OUTPUT
. .'
05
"
YES , . ' .
.'.,
-----., IOrLAG rULL "
"
" ,,
" .'YES
.....
...............
.....,.............
-->:
............. ....
AND MOVE TO
OSUP'P'ER
II
J....
S~
:~5r~RfNstix=i
................
REGISTER
: F~""" :
- --ALLOCH~----'
PUT CHARAI.. TER
: IN SAVE AHEA
:
- --OUTrLOAT- - - -.
.'
J. . . ..
.................
I
:rLOAti~~~INT
I I Gl
..
" .'MO
E. . ..
1
G,, .....:< __
OUTREAL
.'.
"
110 "XXUP
""
:< __
........
'1".......
.!::----_>;I=~ci~LSl8~
'RETURN TO I B C Q M ' .
................
.
J
G5 .'.,
':ENO OF
"
'.
.' .
LINE:.~~-J
'. .'YES
: HSf :
.,.0................
SET CHARACTER
I MOICATE. ENDO
or LINE.
0
..JS
.................
..
: Jl :
-ALLOCHAR- - - -.
PUT NEXT IN
< ________________ CHARACTEH
0_ -
-->:UPOATE POIIn'ER :
It
.................
1
.'.
,.i~o DURIN~'"
IfO
~ ~~~
es
e.
.. '1:0.' o
D~
'. '.
DATA TYPE
'. '.
CII'o.,
. ; . IO"LAG ON ' :
to
SAVE AAEI\
.J...
:
Rif
o
:
Appendix F:
1<',
...............
RETURN
258.9
GLOSSARY
the
ADDRESS (field):
A 2-byte item that is
part of the pointer (indicating an address
on a roll) and a driver (indicating the
forcing strength of an operation).
containing
the
target label and
in the
source
the
cur-
compiler phase:
A program consisting of
several routines written 1n machine language and/or POP language; each phase performs a well-defined function in the transformation of the source module to the
object module.
compiler routines: The routines that comprise each phase of the compiler and which
may be written in machine language and/or
POP language.
CONSTR: Contains the beginning address of
the
data referred to by the compiler
routines.
group:
The logical collection of information maintained on rolls; an entry on a
roll.
group size: The number of bytes of information constituting the group on a roll.
Group Stats:
Information maintained for
each roll used by the compiler; pertains to
comparative search operations.
heading:
Initializing instructions required prior to the execution of the. body
of the object module.
IEYALL:
The system name for the compiler
phase Allocate.
Glossary
259
the
compiler
IEYFORT:
The system name for the compiler
Invocation phase.
IEYGE~:
The system name for
phase Gen.
IEYPAR:
The
phase Parse.
the
compiler
jump:
optimization:
The
reduction
and reorganization of object
code
for
the
increased efficiency of the object module.
PGB2: Contains the beginning
the global jump table.
address
of
plex:
A variable length group on a roll;
the first word holds the number of words
exclusive of itself.
pointer:
This item is one element of
Polish notation used to indicate references
to variables or constants; indicates location of additional information on a roll.
Polish notation: An intermediate language
into which the source module is translated
during processing and generation of the
object module.
Holds the address of the
POPADR:
instruction presently beinq executed.
POP
porPOP instruction:
A component part of the
POP language defined as a macro.
POP interpreter:
A program written
in
machine language for the purpose of executing the POP subroutines; labeled POP SETUP.
keep:
Indicates the moving of information
contained on a roll to another storage
location and retaining the original information on the roll.
local d~~Y~riable:
a statement function.
POP~OP language:
A macro language
which most of the compiler is written.
A dummy argument
to
in
local label:
A label defined within a
program block which may be referred to only
within that block.
POP subroutines:
The subroutines used by
the POP interpreter to perform the operations of each POP instruction.
prune,
pruni~:
A method of removing
information from a roll, thereby making it
inaccessible in subsequent operations.
quote:
A sequence of characters preceded
by a character count; used for comparisons
with the input data.
QUOTE BASE:
The initial
first quote (Parse).
address of the
~~sion:
scan arrow:
An item which refe4_ to the
position of the source statement character
currently being scanned.
source module listinq: The display of the
statements constituting the source module.
releasing rolls:
The method of making
information reserved on a roll available
for use by the compiler.
The 1-word value placed on a
roll as a result of a reserve operation.
reserve_~ark:
for
assigned to each
for the purpose of
roll status items: Those variables maintainpd-- for each roll which contain the
statistics needed in roll manipulation.
~oll_stora1~_area:
word
of
of
stora~map:
The logical organization of a
program or module and its components as
they are maintained in main storage.
(This
map may also be displayed on an output
device.)
An
of
translation:
The conversion from one type
of language to another.
a multiword group on a
Save Area:
An
area of the object module
used in linking to and from subprograms.
WRKADR:
The address maintained for the
WORK roll that indicates the last word into
which information has been stored; the
"bottom" of the roll.
scalar
ables.
WO,W1,W2, :
Acronyms used to refer to
the last groups of the WORK roll.
variables:
Nonsubscripted
vari-
Glossary
261
(Where more than one page reference is given, the major reference appears first.)
active characters
definition 259
description 26
~CTJVE END STA XLATE routine
14~39
active statements 36,39
ADCON roll 57,145
ADDR register
definition 259
descI~ption
29
address computation instructions 134,135
cross-reference list 139
address constants 11,20,52,56,51
,l\DDRESS field
definit:ion 258
description
29-30
address inq
indirect
136,259
relative 29,138
ADR CONST roll
de~crip~ion
1~9
in Exit 56
in Unify 52
AF'fER POLISH roll
Jt'c-.;cription 23,161
in Ct'll
r)J,54
in Parse 31-40,42
Allocate label lists 193-196
Allocate phas(> (IEYALL)
('d rd"
produced ') 1
ctctiiiit.icr~
detiii led
2SR
de~;cription
44-51
yeneral description 12
loC,ltion in !:;toraqe 17
roll:; used hy
44
~;\lbprogram list
')1
allocation of main storaqe
28
ALTER OPTION TABLE routine 232
AI.LOCA'l'l()N FAIL routine 42
ALPHA LBL AND L SPROG routine 14,45
ALPHA SCALAR ARRAY AND SPR(x; routinp'
ANSWER BOX variable
definition 2')8
description
26
in Parse 38
AREA CODE variable 45,55,51,146
arithmetic and logical instructions
130,131,139
array
description 18
dummy 47,48
in Allocate 48,49
listing of
21
position in Object module 11
roll
26,47,146
.",FRAY ALLOCATE routine 14,45,41
ARRAY DIMENSION roll 150
14,52
52
A..~RAY
roll
aSSigning storage for
47
description 146
group stats for
25
~rtificial drivers
40
ASSIGNMENT STA GEN routine 54
AT roll
54,159
base addresses 28
BASE AND BRANCH TABLE ALLOC routine
14,45,47
B/\SE, BOTTOfo"., aWl TOP tables
23 w 28
base table
~csiqninq sturaqe [or
47
definition 259
(le~~cription
17
I;i): it ion HI ob;ect module 11
use in Allocate 48
use in Exit 57
BASE TABU' roll
ripscription 14b
1n Allocate 4~-4B
]Tl
14,45
158
52,159
Fxit_
1)6
BA:;E v~riablf'
~.~
definition
259
peD roll 4')
HLUCK nATA PROt; I\LLOCATION routine 14,46
BLOCK DATA subprugram
allocation for
46
Parse processing of 19
ROTTOM varidble 21
dpfinition 259
branch table
assigning sto~age for
47
de~,criptinn
18
position in object module 11
use in Allocate 47
use in Exit ')6
BRANCH TABLE roll
description 150
in Allocate 47
in Exit 56
branch target label 12,18
BUILD ADDITIONAL BASES routine 14,45,49
BUILD NAMELIST TABLE routine 14,45,48
BUILD PROGRAM ESD routine 14,45,46
BYTE SCALAR roll 41,151
Index
263
data items
24,192,259
DATA SAVE roll 145
data sets
SYSIN 15,33
SYSLIN 15,33
SYSPRINT 15,33
SYSPUNCH 15,33
DATA statements
allocation for 45
DATA VAR roll 56,154
DDNAMES routine 35
DEBUG ALLOCATE routine 14,45,49
decision making instructions 131,132
DECK option 51
DIMENSION statement
allocation for 46
variables specified on 29
DISPLAY statement
NAMELIST table for 18,19
DMY DIMENSION roll 14,46,147
DO loops
in Allocate 46
in Parse 39
in Gen 55
in Unify 12,51,52,53
DO LOOPS OPEN roll
description 144
in Allocation 46
in Parse 39
DO LOOP UNIFY routine 53
DO NEST UNIFY 14,53
DO STA XLATE routine 38
DP COMPLEX CONST roll 143
DP CONST roll
description 143
general 25
drivers
ADDRESS field 30
artificial 40
control 31,185-211,259
definition of 30
EOE 40,41
formats of 185-211
operation 30,260
OPERATOR field 30
plus and below phony 40,41
TAG field 30
dummy array 46,47
dummy dimension 46
END card 13
omission of 39
produced by Exit 57
END STA GEN routine 54,55
ENTRY CODE GEN routine 14,53,54
ENTRY NAME ALLOCATION routine 14,45,46
ENTRY NAMES roll 54,147
ENTRY roll 46
EOE driver 40,41
EPILOGUE GEN routine 14,53,54
epilogues 12,53,54
EQUIV ALLOCATION PRINT ERRORS routine
14,45,41
EQUIV MAP routine 14,45,48
EQUIVALENCE (EQUIV) ALLOCATION roll
41,48,156
EQUIVALENCE (EQUIV) HOLD roll 145
EQUIVALENCE (EQUIV) roll 46 4 41:151
EQUIVALENCE (EQUIV) TEMP roll 145
EQUIVALENCE OFFSET roll 45,152
EQUIVALENCE statements 12,45
EQUIVALENCE variables
allocation of storage for 45
description 18
listing of 21
map of 48
position in object module 11
EREXITPR routine 34
ERROR CHAR roll 144
ERROR LBL roll 148
ERROR MESSAGE roll 144
error messages 21
error recording 42
ERROR roll 42,148
errors
detection of 42
recording of 21,42
ERROR SYMBOL roll 149
ERROR TEMP roll 144
ESD cards
general 12
produced by allocate 44,41,51
Exit label list 208-211
EXIT PASS routine 14,55
Exit phase (IEYEXT)
definition 259
detailed description 55-58
general description 13
location in storage 15
rolls used by 55
exit roll
definitlon 259
description 24,161
general 10
in IEYROL 53
in Parse 38
location in storage 15
EXPLICIT roll
149
EXTADR register
definition 259
description 29
extended error handling facility 232,212
FL AC roll
153
FL CONST roll 143
flags
21
forcing strength
definition 259
description 30,31
in Parse 40
table 31
FORMAT ALLOCATION routine 14,45,48
FORMAT roll 48,151
FO~~T statements
description 20
in Allocate 12,44,48
listing of 21
position in object module 11
FORTRAN error routine (IHCIBERH)
42,228
2')
26
265
2 1 r) - 2 3 6, 2 ') 8. 1
IH<'FDVCH
I HCFEXIT
IHCFINTH
IHCFIOSB
234,258.S
23S, 2')8. 2
229-210,24A
218-224,244
I i1 C' FO ;:'1'
2 3 2 - 2 ~ ], 2 ') 5
235,258.4
IHCF~;LIT
23~, 2:>8. 3
IHCIBFRH 228-229,250
IIICNAMEL 226-221,241
I HC ~~ T A E
2 31 , 2 51
IHCTRCH 210-231,258
IHClJATBL 239
IHCUOPT 242.1-242.3
IMPLICIT roll 153
indirect addressing 135,260
indirect addressing instruction
IND VAR roll
dp~;cr ipt ion
141
i n par~je 31
INIT roll 49,145
Invocation phase (IEYFORT)
definition 260
detailed description 33-36
general description 12
location in storage 15
IHrf'UVER
jump instructions
132,133
keep
definition 260
general 23
label lists
Allocate
266
193-196
Exit 20R-211
Gen 198-208
Parse 185-193
Unify 196-198
labeled statement references 12
labels
branch target 12,18
detailed description 135,136
global 135,136
local 135,136
mode 17,54
LAST CHAR CNT variable
definition 259
description 26
in Parse 38
LAST SOURCE CHAR variable 38
LBL FIELD XLATE routine 14,37,38
LBL process routine 14,53,54
LBL roll 45,46,54,153
LEVEL ONE UNIFY routine 53
LIB roll 140
LITERAL CONST ALLOCATION routine 14,45,41
literal constants
description 20
in Allocate 12,44,45
position in object module 17
LITERAL CONST roll 143
LITERAL TEMP (TEMP LITERAL) roll 155
LOAD and DECK options 33
148
38
135
made labels 11,54
map
of scalars 47
storage 21,44,50,260
MAP option 51
messages
description 21
location in storage 15
printing of (IEYPRNT)
33
produced by Allocate 48,49
produced by Invocation 35,36
produced by Parse 43,44
minimum system configuration 9
MOVE ZEROS TO T AND C routine 14
MPAC1 and MPAC2 variables
definition 259
description 26
multiple precision arithmetic 26
oblf'ct module
cont iq 11ration of 17
dp,;Cl iption of
11
qpneral register usage 20
1 i 5 t i ng 0 f
20, 21, 54, 51
writing of 49
oiJject--time library subprograms
operation driver
definition 259
description 30
t nrmd ts of
185-211
UFERATI)R fipld
'i p f 1 nit ion
2 59
d~~cription
Polish notation
arithmetic and logical assignment
statement 164
arithmetic expressions 39
arithmetic IF statement 165
array references 163
ASSIGN statement 164
assigned GO TO statement 164
BACKSPACE statement 171
BLOCK DATA statement 166
CALL statement 172
computed GO TO statement 165
CONTINUE statement 165
DATA statement 166
debug statements 172-173
DEFINE FILE statement 110
1efinitlon of 259
direct-access statements 110
DO statement 16~
END FILE statement 171
END statement 166
ENTRY statement 164
Explicit specification statements
FIND stdtpm~nt 170
212-258.10
IdUf>lpc1
~;tdtpments
loqicdl
l~'
14,55,51
111
1 6 7 -1 6 8
162
l'ALJ:,t: dlld
:;tdtJ:'mpnt 164
:~T()P "tatements
P R I NT :, t
f' fTH'
t
l' {J Nt" II ~; l ri t
30-32
optImization 52,53,259
option table 242.1
ORDER AND PUNCH RLD ROLL routine
form-':lt~;
163-173
FUNCTION "tritpment
generdl 1 ()
i n (; ,-' n
1 2, :) J, ') 4
in I'dr:if' 13, 3b, 1C}
1 n put / () U t P \l t
1 i : it:;
nt
f' fTlf' n t
165
1b9
1 h <}
HEAr) :;t_dtf'fTlI'nt
Ih7,lb8,169
RETllRN ~itdt{'mf-'nt
164
HEWIND :;tatf'mf"nt
171
statf'mf'nt f\lnction
171
SUllRUilTINE ,;tatpment 171
uncoIlc11tinnrll (jO TO statement
WRITE
(I EY PAR)
definition 260
rtetdiled description 36-42
general description 12
l()cdtion in storage 15
rolls used by
31
PAS;' 1 (;LOBAL ~PROG ALLOCATE routine
14,4C.,,48
pha ~>t~;
.:'.llocdte 12,15,44-51
components of 14
Exit 13,15,55-51
Gen 12,15,53-55
Invocation 12,15,33-]5
Parse 12,15,36-44
Unify 12,15,51-53
plex
definition 260
description 25
plus and below phony driver
pOintEr
ADDRESS field 29
definition 260
description 29
OPERATOR field 29
TAG field 29
:~tiltr'rnf'nt
165
lhR,lh<},170
1 10
1 3lJ
AND
APH
127
ARK
12"1
M<P
127
A~~K
127
ASP
BID
BIM
BIN
127
BOP
127
CAR
CLA
128
128
CNT
128
1 J{~
1 34
1 ~t~
CPO 128
cross reference list
CRP 128
40,41
166
CSA
CSF
131
133
definition 259
detailed description
DIM 130
DIV 130
EAD
139
121-135
128
Index
261
EAW 128
ECW 128
EOP 128
ETA 128
FET 128
FLP 128
FRK 128
FRP 128
FTH 128
generdl description
lAD 129
IND 115
lor 129
lOR 130
ITA 129
ITM 129
JAF 133
JAT 133
JOW 133
JPE 133
JRD 133
JSR 133
,) UN 133
LCE 129
LCF 129
LCT 129
LGA 131
LGP 129
LLS 130
LRS 131
LSS 129
MOA 131
MOC 129
MON 129
MPY 131
NOG 129
NOZ 129
PGO 130
PGP 130
PLD 1 JO
PNG 130
POC 130
pow 134
PSP 131
PST 130
QSA 131
QSF 133
REL 134
RSV 13q
SAD 131
SBP 131
SBS 131
SCE 132
SCK 112
SFP 132
SLE 132
SNE 132
SNZ 132
SOP 132
SPM 132
SPT 132
SRA 132
SRD 132
STA 132
STM 133
SUB 131
SWT 130
TLY 131
268
10
wop 135
W1P 135
W2P 135
W)P 135
W4P 135
XIT 133
ZER 130
POP interpreter
definition 260
description 136
general 10
POP jump table (POPTABLE)
definition 260
description 28,137
location in storage 15
POP language
cross-reference list 139
definition 260
detailed description 127-138
general description 10
notation used 127
POP SETUP routine 137
POP subroutines
assembler references to 137
definition 260
general 10
location in storage 15
POPADR register
definition 260
description 29
POPPGB register
definition 260
description 29
POPXIT register
description 29
PREP DMY DIMAND PRINT ERRORS routine 14,45
PREP EQUIV AND PRINT ERRORS routine 14,45
PREP NAMELIST routine 14,45,48
PRESS MEMORY 21,22,19J
PRINT A LINE routine 14
PRINT AND READ SOURCE routine 14,37
PRINT HEADING routine 14
PRINT TOTAL PROG REQMTS MESS routine 14
printmsg table 35-36
PRNTHEAD routine )4
PRNTMSG routine 3l\
PROCESS DO LOOPS routine 14,45,46
PROCESS LBL AND LOCAL SPROGS routine
14,45,46
PROCESS POLISH routine 14,39
production of object code
branches 175
computed GO TO statement 175
DEFINE FILE statement 179
direct-access READ and WRITE statements
179
DO loops 175
DO statement 175
FIND statements 179
FORMAT statements 180,181
formatted arrays 177
formatted list items 177
functions 176
input/output 177
PAUSE statement 179
READ and WRITE statements 177
statement functions 176
STOP statement 179
subroutines 176
unformatted arrays 178
unformatted READ and WRITE statements
178
PROGRAM BREAK variable 45,46,47,48,49
PROGRAM SCRIPT roll
description 158
in Parse 39
in Unify 52
program text
definition 260
description 20
position in object module 17
prologue 12,53,54
PROLOGUE GEN routine 14,53,54
pruning
definition 260
description 23
pseudo instructions 10,127
PUNCH ADCON ROLL routine 14,55,57
PUNCH ADR CONST ROLL routine 14,55,56
PUNCH BASE ROLL routine 14,55,56
PUNCH BRANCH ROLL routine 14,55,56
PUNCH CODE ROLL routine 14,55,56
PUNCH END CARD routine 14,55,57
PUNCH GLOBAL SPROG ROLL routine 14,55,57
PUNCH NAMELIST MPY DATA routine 55,57
PUNCH PARTIAL TXT CARD routine 55,56
PUNCH SPROG ARG ROLL routine 14,55,56
PUNCH TEMP AND CONST ROLL routine 14,55,56
PUNCH USED LIBRARY ROLL routine 14,55,51
oescription
15
260
27
22,5],S4,~b,160
269
270
save area
assigning storage for 41
definition 261
position in object module 17
SCALAR ALLOCATE routine 14,45,41
SCALAR roll 41,48,154
SCALAR routine 14
scalar variable
definition 261
listing of 21
position in object module 17
scan arrow
definition 261
description 26
scan control variables 26,27
SCRIPT roll
description 151
in Parse 36,37
in Unify 52,53
source module listing
definition 261
description 20,U2
format of 42
SOURCE option 36
SOURCE roll
description 140
in Parse 37,38
special rolls 24
specification statements 35
SPROG ARG ALLOCATION routine 14,45,48
SPROG ARG roll 56,147
STA FINAL routine 14,31,39
STA GEN FINISH routine 14,54,55
STA GEN routine 14,54,55
STA INIT routine 14,38
STA LBL BOX 54
STA RUN TABLE 54
STA XLATE EXIT routine 38
STA XLATE routine 14,31,38,39
START ALLOCATION routine 14
START COMPILER routine 14,37
START GEN routine 14,53
START UNIFY routine 14,52
STATE~NT PROCESS routine
14,31,39
status variable 23
STD SCRIPT roll 144
STOP statement
Polish notation for 37
storage map
compiler 14
definition 261
description 21
object module 11
produced by Allocate 44,50
SUBCHK roll 49,160
subprogram addresses
position in object module 17
subprogram argument lists
position in object module 17,51
SUBSCRIPTS FAIL routine 42
SYMBOL item 24,261
syntax error 42
SYNTAX FAIL routine 38,42
system names 11
tables
base 17,47,56,259
BASE, BOTTOM, and TOP 23,28
branch 18,46,56
global jump 28,137
group stats 25,26
NAMELIST 12,18,19,20,44,48,49,57,260
POP jump 15,28,136,260
printmsq 35
ROLL ADR 15,22,28,34,53
STA RUN 54
unit assignment 239
TAG field
definition 261
description 29-31
TEMP AND CONST roll
description 144
in Allocate 45
in Exit 55,57
TEMP DATA NAME roll 150
TEMP NAME roll
description 143
in Parse 38
TEMP POLISH roll 151
TEMP PNTR roll 153
TH1P roll
144
tpmpordry storage and constants
description 20
position in object module 17
TERMINATE PHASE routine 54,55
tf-'rr'1indtion of compiler 33,35
TIMUJAT rOlltine
35
TOl-' var idole
23
lefinition 261
TRACE nption ~4
transmi~~ive instructions
127-130
TXT card~>
general 12
produced by Allocate 44,49,51
produced by Exit 55,56,57,58
tVDP
A'
strltpmpnts
allocation for
46
239
variables
ANSWER BOX 26,38,259
AREA CODE 45,56,51,146
BASE 23,259
BOTTOM 23,259
COMMON 21,46
CRRNT CHAR 26,38,259
CRRNT CHAR CNT 26,38,259
EQUIVALENCE 18,21,44,45,48
LAST CHAR CNT 26,38,260
LAST SOURCE CHAR 38
MPAC1 and MPAC2 26,260
PROGRAM BREAK 45,46,47,48
scalar 18,21,261
scan control 26,27
status 23
TOP 23,261
WORK roll
definition 261
description 24,161
general 10
in Exit 57
in Gen 54
in IEYROL
in Parse 39,40,41
location in storage
WRKADR register
definition 261
description 29
15
Index
211
GY28-6638-2
... ) '>
...
'~
~ ~
GJ
t-<
co
I
0"1
0"1
W
co
I