LY28 6486 2_OS_VS_COBOL_Compiler_Rel_2_PLM_Nov76 2 OS VS COBOL Compiler Rel PLM Nov76

LY28-6486-2_OS_VS_COBOL_Compiler_Rel_2_PLM_Nov76 LY28-6486-2_OS_VS_COBOL_Compiler_Rel_2_PLM_Nov76

User Manual: LY28-6486-2_OS_VS_COBOL_Compiler_Rel_2_PLM_Nov76

Open the PDF directly: View PDF PDF.
Page Count: 624

DownloadLY28-6486-2_OS_VS_COBOL_Compiler_Rel_2_PLM_Nov76 LY28-6486-2 OS VS COBOL Compiler Rel 2 PLM Nov76
Open PDF In BrowserView PDF
Licensed Material - Property of IBM
L Y28·6486· 2

Program Product

IBM OS/VS COBOL Compiler
Program Logic
Program Number 5740-CB1

~nd

Edi!im! (November 1976)

This edition replaces the previous edition (numbered LY28-6486-0) and its
technical newsletter (numbered LN20-9106) and makes them obsolete.
This edition cor·respo·nds to the second release of the IBII OS/VS COBOL
Compiler and to any subsequent releases unless otherwise indicated in
new editions or technical newsletters.
Technical changes are summarized under "Summary of Amendments" following
the list of figures. Each technical change is marked bya vertical line
to the left of the change. In addit ion, miscellaneous editorial and
technical changes have been made throughout the pUblication.
Information in this publication is subject to significant change. A~y
such changes will be published in new editions or technical newsletters.
Before using the publication, consult the latest IBII_~!~~L170
Bibliog~hYL GC20-0001, and the technical newsletters that amend the
bibliography, to learn which editions and technical newsletters are
applicable and .current.
Bequests for copies of IBII publications should be made to the IBM branch
office that serves you.
Forms for readers' comments are provided at the back of the publication.
If the forms have been removed, comments may be addressed to IBII
Corporation, P. o. Box 50020, Programming Publishing, san Jose,
California 95150. All comments and suggestions become the property of
IBII.

© Copyright International Business lIachines corporation 1974,19.76

(

Licensed Material - Property of IBM

Summary of Amendments

Number 1

Date ofPublication: November 1, 1976
Form of Publication: Revision, LY28-6486- 2
OS!VS COBOL RELEASE 2

New: Programming Feature
The text has been updated to reflect Release 2 of the OS!VS COBOL Compiler_ Major
updates include:
• Phase 04, a new phase that processes the COPY statement and performs BASIS processing.
• Phase 35, a new phase that processes USE FOR DEBUGGING statements and their operands.
• A new compiler option, LANGLVL, applies to those language elements where the
interpretation differs from the 1968 American National Standard, X3.23-1968, COBOL,
to the 1974 American National Standard. X3.23-1974, COBOL.

•• Phases 05, 06, 08, and 80 flowcharts have been added.
• Extensive updates have been made to; Communications Area, Compiler Table
Formats, and Internal Text Formats in the Data Areas Section.
• Several updates, including a list of user ABEND codes, have been made to the
Diagnostic Section.
Miscellaneous Changes

Maintenance: Documentation Only
Some maintenance changes have also been made.

(

\

This publication describes the internal
design of the IBM OS/VS COBOL Release 2
compiler. The manual is intended for use
by persons involved in program support and
by systems programmers involved in alterinq
the program design for installations
requiring such alteration. It supplements
the compiler listing and its comments but
is nnt a.substitute for them.
The publication is divided into the
following sections:
• An introduction that describes the
compiler functions and specifies the
relationship of the compiler to the
operating system.
• A Method of Operations section that
includes a section on each of the
compiler phases. Within these
chapters, the material is organized by
phase functions and is not necessarily
presented in the order in which the
phase operations are performed.
• A Program Organization section that
includes one chart of the overall logic
flow for each phase and other charts
showing detailed descriptions of some
of the major phase routines.

• A Glossary of special terms.
• Foldout Diagrams.
• An index.
Effective use of this manual requires an
extensive knowledge of the IBM Assembler
Language, OS/VS System Control, and the IBM
OS/VS COBOL language. Prerequisite and
related publications include:
IBM OS/VS

superviso~~~~xice2-~nd ~~£~Q

Instr~tion§.,

Order No. GC28-0683

!.ruLQ2Lll.JlilLMa !!.a!lru!!~!!.L Ma££Q
Instruction§., Order No. GC26-3793
I~_Q~LVS-1inka!l~_Edit~£_a!!.~-1oad~,

order No. GC26-3813

Services Aids, Order
No. GC28-0633

~~VS

• A Directory section that shows register
usage, flowchart labels, and the tables
used by each phase.
• A Data Areas section showing the
formats of the compiler Communication
Region, the dictionary, the internal
texts, the tables that occupy the
table-handling area, and the tables
that are created for object-time
debugging purposes.
• A Diagnostic Aids section.

IM~~iL~a!l~!!.LfoL~:I2i~!J!
proqram~,

Order No. GC26-3837

I~_Q2LU-Yitl&al ~iQ£a!lL!£.~2S Metho~
lllAMt_PrQ!l£a!l!U.£!.2_Gui~~,

No. GC26-3838

Order

Prerequsite Program Product documents
include:

• An appendix that describes the routines
that handle compiler tables and the
dictiona ry.

IBM VS £gBO~ for
No. GC26-3857

• An appendix that describes the object
module produced by the compiler.

IBM OS(VS COBOL compil~~_and Libra£~
Programmer's Guide, Order No. SC28-6483

O~![,

Order

• An appendix that describes the Report
Writer subprogram.
• An appendix that describes the
interface with the Conversational
Monitor System (CMS).

5

Licensed Material -Property of IBM

The following extract from Government-;
Printing Office Form Number 1965-0795689 is
presented for the information and guidance
of the user:
"Any organization interested in reproducing
the COBOL report and specifications in
whole or in part, using ideas taken from
this report as the basis for an instruction
manual or for any other purpose is free to
do so. However, all such organizations are
requested to reproduce this section as part
of the introduction to the document •. Those
Ilsing a short passage, as in a book review,
are requested to mention 'COBOL' in
acknowledgment of the source, but need not
quote this entire section.
"COBOL is an industry language and is! not
the property of any company or group of
companies, or of any organization or group
of organizations.
:y, :,'i;
"No warranty, expressed or implied, is made
by any contributor or by the COBOL
Committee as to the accuracy and
functioning of the programming system and
language. Moreover, no responsibility is
assumed by any contributor, or by the
committee, in connection therewith.

"Procedures have been established for the
maintenance of COBOL. Inquiries concerning
the procedures for proposing changes should
be directed to the Executive Committee of
the Conference on Data Systems Languages.
"The authors and copyright holders of the
copyrighted material used herein
PLOW-MATIC (Trademark of Sperry Rand
corporation), Programming for the
DNIVAC (R) I and II, Data Automation
systems copyrighted 1958, 1959, by
Sperry Rand Corporation; IBM
Commercial Translator, Porm No.
P28-8013., copyrighted 1959 by IBM:
PACT, DSI 27A5260-2760, copyrighted
1960 by Minneapolis-Honeywell

have specifically authorized the use of
this material in whole or in part, in the
COBOL specifications. Such authorization
extends to -the reproduction and use of
COBOL specifications in programming manuals
or similar publications."

(
6

Licensed Material - property of IBM

SECTION 1. INTRODUCTION • • • • • • • •
Relationship of the Compiler to the IBM
OS/VS System • • • • • • • • • •
Characteristics of the Compiler
• •
Physical Characteristics • • •
•
Operational Characteristics
• •
Input • • • • • • •
• •
Output • • • • • • •
Design of the compiler • •
Compiler Data Sets • •
Compiler Phases • • • •
Phase 00 (IKFCBLOO)
•
Phase 01 (IKFCBL01)
Phase 02 (IKFCBL02)
• • • •
Phase 03 (IKFCBL03)
Phase 04 (IKFCBL04)
• •
Phase 05 (IKFCBL05)
• •
Phase 06 (IKFCBL06)
• • • •
Phase 08 (IKFCBL08)
•
Phase 10 (IKFCBL 10)
• •
Phase 12 (IKFCBL12)
Phase 1B (IKFCBL1B)
Phase 20 (IKFCBL20)
•
Phase 22 (IKFCBL22)
••••
Phase 21 (IKFCBL21)
• •
Phase 25 (IKFCBL25)
• •
Phase 3 (IKFCBL30) • • •
• •
Phase 35 (IKFCBL35)
•
Phase 4 (IKFCBL40) •
Phase 45 (IKFCBL45)
• •
Phase 50 (IKFCBL50)
•
Ph ase 51 (IKFCBL51)
Phase 6 (IKFCBL60) • • •
•
Phases 62, 63, and 64 (IKFCBL62,
IKFCBL63, and IKFCBL64)
• •
Phase 65 (IKFCBL65)
•••••• • •
Phase 6A (IKFCBL6A)
•••••• • •
Phases 70, 71, and 72 (IKFCBL70,
IKFCBL11, and IKFCBL72)
Phase 80 (IKFCBL80)
• •
Compiler options • • • • • • •
• •
storage Requirements • • • • •
SECTION 2. METHOD OF OPERATION
Phase 00 • • • • • • • •
Receiving Control from the Operating

19

Processing for the HATCH Option
Entering Statistical Information In

19

COMMON

19
19

20
20
20
20
21
21
21
22
22
22
22
22
22
22
22
22
22
23
23
23
23
23
23
23
23
24
24
24
24
24
24
25

25
25
29
31
31

System • • • • • • • • • • • • • • • •

31

Returning Control to the Operating System 31
Processing Between Phases • • • • • • • 31
Phase Input/output Requests • • • • • 34
Compiler Linkage to Data Management 44
Directing Error Messages and
Progress Messages to the SYSTERM
Data Set • • • • • • • •
• • 44
Segmentation Operations
44
Table and Dictionary Handling
• • 44
Communications Area (COMMON) •
• 44
syntax-Checking compilations •
• 45
Terminal Error Conditions
• • 45
PHASE 01 •
Compilation Parameters •
Return From Phase 02 •
PHASE 02 • • • • • • • • •
Compilation Paramet'?rs
Buffer Size Determination

46
• 46
46
111

41
• 47

48

• • .. • • • • • • .. .. • .. • • • 48
Preparing For Federal Information
processing Standard (FIPS) Flagginq • 48
Information Returned to Phase 00 • • • 49
Error Condit ions • •
•••••
ug

PHASE 03 • • • • • •
.SO
Obtaining and Printing Error Messages 50
Returning Control to Phase 00
• 50
PHASE 04 •
Input
Output
Error Conditions
Tables Used
• • • •
Main Flow of Control in PHASE 04 •
processing Routines Used •
PHASE 05 •
Input.
Output
Syntax Language Summary
Error Conditions
PHASE 06 •
Input.
Output

51

51
• S1
51
• 51
51
• 51
• 52

52
52

• • • 52
52
• ..

• 54
54
54

PHASE 08 •
Input.
Output. . • . .
Processing . • .
Error Conditions . •
PHASE 10 • • . • • •
Major Working Routines
• •
GETDL~ Routine • • •
GETIID Routine
GETCRD Routine • • •
Id2ntification Division
Environment Division • •
Configuration section • • • •
•
Input-output section •
FILE-CONTROL Paragraph
I-a-CONTROL Paragraph
Data Division
File Section • • •
File Description Entries
Sort Description EntriAs •
Record Description Rntries
Working-Storage and Linkaqe Sections
communication Section
••••

55

PHASE 12 • • • • • • • •
operations in Other Phases
REPORT Clause • • • •
Report Section Header
USE Sentences. • • • •
Procedure Division Verhs • •
• •
Control~Field Save-Area Names
REDEFINES Clause • • • . • • .
producing the Report writer Subprogram
(RWS)
•••••
Routine RDSCAN •
Routine PROCO 1 • • •

55.
55
55

• 55
56
• 56
• S6

56
<;1

57
51
•

S)
flagger is to be activated. c
indicates the level of the standard to
be checked (A = low; B = low
intermediate; C= high intermediate; D
= full standard). Where LVL = c is
designated as the default at
installation time, NOLVL cannot be
specified at compile-time.
ENDJOB
NOENDJOB
-----rndicates whether or not, at the end
of each job, COBOL library subroutines
are to be called to delete modules,
free storage acquired through GETKAINs
issued by the COBOL program or COBOL
library subroutines, close DCBs opened
by subroutines and free their
associated buffers. Specifying ENDJOB
prevents fragmentation of storage fo~
programs executed on the system after
the COBOL program. This option takes
effect ata STOP RUN statement in any

program and at a GOBACK statement in a
main program only.

COUNT

liQCO!B!1

COUNT indicates that an execution
summary is to be produced at the end
of execution of the compiled program.

LSTONLY
LSTCOMP

!l.Q1.§.!

LSTONLY indicates that a listing of
the reformatted source program is to
be produced, but that the program is
not to be compiled; if the FDECK
option is in effect, the updated
source deck will also be produced.
LSTCOMP indicates that, in addition to
the listing and optional deck produced
by the LSTONLY option, the source
program is to be compiled.
NOLST
indicates that the Lister is not to be
used.
When NOLST is in effect, the
FDECK, CDECK, LCOL1, and LCOL2 options
are ignored. The L120 and L132
options are ignored if NOLST and
NOBATCH are specified.

CDECK

!l.Q£!lEq
CDECK indicates that the updated and
reformatted copy libraries are to be
punched.
If the FDECK option is in
effect, the libraries will be punched
as part of the source deck.
If the
NOFDECK option is in effect, the
libraries will be punched as a
separate deck.
If NOLST is in effect,
this option is ignored.
FDECK
NOFDECK
-----pDECK indicates that an updated source
deck is to be produced. If the CDECK
option is in effect, the updated
source deck will include the updated
and reformatted copy libraries.
If
NOLST is in effect, this option is
ignored.
LCOL1
LCOL2
-----LCOL1 indicates that the Procedure
Division is to be listed in
single-column format.
LCOL2 indicates
that the Procedure Division is to be
listed in double-column format.
If
NOLST is in effect, this option is
ignored.
L120

11J£

L120 indicates that the print line is
120 characters long. L132 indicates
that it is 132 characters long.
If
NOLST is in effect, this option is
ignored unless BATCH is specified. If
L120 or L132 is specified on an EXEC
PARM card, the option is in effect for
any compilation with LSTCOMP or
LSTONLY in the batch compilation. The
L120 or L132 option on a CBL card is.
ignored.

VB REF

liQY!H!£;!:

VBREF indicates that a verb
cross-reference listing is to be
produced for the compiled program.
The VBREF option also implies the
VBSUM and VERB options.

VBSUM
NOVBSUM

--VBSU~! indicates that a verb summary

listing is to be produced for the
compiled program. The VBSUK option
also implies the VERB option.
DU.liE.
NODUMP
DUMP indicates that the compiler will
issue an ABEND for a D-level message
condition caused by a possible
compiler error.
NODUMP indicates that
the ABEND will not be issued and that
the D-level message will be produced.

A!lY.

NOADV
indicates uhether or not records for
files with WRITE .•. ADVANCING need
reserve the first byte for the control
character.
ADV specifies that the
first byte need not be reserved.
LANGLVL (11 £)
indicates which level of the American
National Standard (ANS) COBOL
definition should be used by the
compiler when it encounters those few
language elements whose meaning
changed from 1968 to 1974. The ANS
X3.23-1968 interpretation is indicated
by LANGLVL(1); the ANS X3.23-1974
interpretation is indicated by
LANGLVL(2), uhich is also the default.
New language elements (those not in
the 1968 ANS standard at all) are
unaffected by this option. They will
be accepted by the compiler even if
LANGLVL(l} is specified.
All IBM
extensions to the language are also
unaffected.

STORAGE REQUIREMENTS
Phase 00, which is resident in storage
throughout compilation, occupies 18K bytes
of storage (where K=1024 decimal).
The
additional storage required by each of the
other phases is as follows:
Introduction

29

Licensed Saterial - Property of IBM

Phase

-01"
02
03
04
05

06
08
10
12
21
22
25

3
35
4
45
50
51
6

62
63

30

Section 1.

storage

..t!.!L12n~L
236
14K
2K

20K
20K
4K
20K

64
65

26K

6A

12K

70
71
72

28K

8K

20K
16K
36K
34K*

80
1B
20

26K

38K
36~

26K*
34K*

10K*
16K**

(

Each. phase except phases 01 and 02 uses
TAMER tabl.es. and requires table space. The
amount of space needed for tables varies
greatly with each compilation.

8K
52K

8K

42K
50K
34K

20K
10K

Introduction

------~-------------

*These pbases build' th~dicti~nary and
include from 2K to 3K bytes for ACCESS
dictionary-handling routines.
**An additional lKbytes is in9luded for
ACCESS routines; the dictionary is also
present.. dlJring th.isphase. .

system in the same manner. When LVL is in
effect, phase 80 is the final phase and it
returns control to the system.
Phase 00 (IKFCBLOO), the interface between
the COBOL compiler and the operating
system, is resident in storage throughout
compilation. Its major functions are:
1.

Receiving control from the operating
system and, at the end of compilation,
returning control to it.

2.

performing reallocation and linkage
functions after each of the other
phases has completed its operations.

3.

Handling input/output requests from
the other phases and providing
routines to handle permanent
input/output errors.

4.

Manipulating tables for the other
phases.

5.

Providing a communications area
(COMMON) for the other phases.

Phase 00 keeps track of which processing
phase is currently active by means of a
2-byte cell named LINKCNT. Routine LINKA
increments LINKCNT by 2 before it links to
the next phase so that, for example, the
value of LINKCNT is 2 at entry to phase 01.
LINKCNT is not incremented for phases 02,
71, and 72 since the linking of these
phases is transparent to phase 00. Also,
there is no unique value assigned to
LINKCNT for phase 03, the error handling
phase.
Figure 1 traces the routines used by
phase 00 for both normal and abnormal end
of com pila tion •

Other phases call phase 00 for
between-phase processing or for
input/output request with the following
sequence:
L

RECEIVING CONTROL FROM THE OPERATING SYSTEM
Compilation is invoked by an. EXEC control
card or by a CALL, LINK, ATTACH, or XCTL
macro instruction containing the
compilation parameters. Phase 00 receives
the call at entry point START, and in
routine LINKA links to phase 01 and passes
the parameters to it for processing.

When phase 4, 6, 08, 64, 65, 6A, or 70 is
the last phase, it calls phase 00 to
terminate compilation of the current
program. If there are no more programs ~o
compile (BATCH), phase 00 puts a codeirito
register 15 indicating the highest source
program error severity level that was
encountered and branches on register 14 to
return to the operating system. If an
error occurs that stops compilation (see
"syntax-checking Compilations" and
"Terminal Error Conditions" in this
chapter), phase 00 returns to the operating

BALR
DC
DC

register,=A(COS)
0, register
X'XY'
X'ZZ'

See note 1.
See note 2.
See note 3.

Notes:

~-.--A(COS)

is the relocated address of the
entry point to phase 00. Routine
LINKPHl passes this address.in
register 1 to each phase that it calls
into storage.

2.

'XY' is a hexadecimal linkage code.
'X' bits indicate the function to be
performed. 'Y' bits indicate the
affected file. 'Y' bits are ignored
when the functio.n does not involve a
file. See Figure 2 for 'XY' values.

3.

'ZZ' indicates functions to be
performed by phase 00. See Figure 2
for 'ZZ' values.

Other phases call the table handling
routines of phase 00 at the entry point of
each routine. These routines are discussed
in "Appendix A. Table and Dictionary
Handling."

Phase 00

31

Licensed !aterial - property of IBM

Permanent I/O Error
ro-

I SYNAD routine
IStore pointer to I
lexit code and reg-I
listers 0 and 1 in I
ICOMMON
I
L-------~I---------~

L--______________

COPY/BASIS Library Error
or TAMER Cannot Continue
r-----------------,
IStore address of I
lerror message codel
lin COMMON
I
I
I
I
I

Call from a Phase with
Request for End of Job

L-------~i------~

,

r

- ....,-------~

---->!

I

I
V

V
i

I

I

!Set EOJCALL switch!
land issue RETURN I
Imacro instruction I
I
I
I
I

IIssue RETURN macrol
linstruction, if
I
Inecessary, & link I
Ito phase 03 to
I
Ihandle
error
I
L---____________
~

r

IGo to appropriate
linterlude routine
Ito purge files
I
I

I

,

-,

---I

I
I
V

r

--,

IRelease storage
land close files
I
I
I

L - - - - -__~I--------

I
I
,
I
I

~

I
I
I
V

r-----,
ILink to phase 80 I
Ifor FIPS listing I

1
1

1<
1
I

1
I

I

-.I

r

115

1

I

I

I

,-----'

IIf NOLVL

1

V

V

I
-,

IRestore system's I
I registers
I
I
I
1
I
,
I
I
I
~
I
I
I

I

IRestore system's
I registers
I
'
I
I

I~-------""I--------'

I
I
I
V

V
---,

IBranch on register,
114 to the invoker I
lof the compiler
1
Icontrol program
I
1
1
L---

Figure

32

1.

!

Flow of Control at End of Compilation

Section 2.

Method of operation

I

I

I
I
I
I

I

---,

IReset SPIE, place I
If LVLIRETCDE in register I

,

I

IBranch on register I
114 to control
I program
I
I
I

Licensed Material - Property of IBM

r-.,,-I X Code I Routine Called I

,+

i--

I
0
I READ
I
I
' I
II
I
1
I to/RITE
I
I
!
I
I
2
I WRITEI
I
I
I
I

II
I
I

II
I
I
I

3

6

I

I OPENLIB
I
I
I
I CLOSET
I
I
I

1

I

I
I

I
I
I
I READ
I
I WOUT
I
I
I SEGPNT
I
I
I
I

j

I
I
I
I

I-

I
I
I
I
I
I
I
I

7

8
9

A

I-I

B

I--

1 LINKB
I
I
I EOJ

I

+-

1----1-I
C
I SEGNOTE

I Returns to opera ting system.
I
I Records the relative disk addresses of
,
Procedure A-text on SYSUT1 for phase
,
51. See" Segmenta tion
I
operations" in this section.

I-t I 9

~

I
I
I '
I
I
I
I
I
I
I
I,+I
,
D
I EJECT or SKIP I Positions printer. The exact function I
"
I
is determined by a second parameter ,
I
I
,
byte as follows:
I
"
I
X'OO' eject
I
I '
I
X'01' skip 1 line
I
I '
I
X' 02' skip 2 lines
I
I '
, X ' 0 3 a skip 3 lines
i
i
I
+f
I E , WG01
,PUT: Hoves logical record into a
I
buffer. If a second parameter byte ,
I '
I
containing X'CC' follolls the 'XY'
,
I '
,
code, the call lias not from phase 00 I
I
I
,
internally but from another phase.
I
II
I
I
,
F
,CLOSER
, When a file is to be closed, moves 'FF"
I
I
,
into buffer to indicate end-of-file, I
checks previous input/output
I
I
I
,
I
I
,
operation, writes and closes the
,
I '
,
file.
I

'I

"

Figure

r----,------,

I IY Code I Data Set I
~ I-I
~
I Reads a utility data set. Passes back I I
I
I
I
to caller the storage address of the I I
I
I
I
logical record.
I I 1
I SYSUT1
I
,
-1 I-I
~
I PUTN: Writes a record, where caller
I I
I
I
,
gives address and length of data.
I I 2
I SYSUT2
I
I
~
+I I-I PUT: Writes Data IC-text, where callerl I
I
I
I
gives address of data and the first
I I
I
I
I
tuo bytes of data give length.
I I 3
I SYSUT3
I
+-I I-I
~
, Issues OPEN to library data set, and
, I
I
I
I
passes baclt the return code to the
I I
I
I
I
calling phase
I I
I
I
tI I----+------~
I Issues SVC 23 (temporary close). If a i I
I
I
I
second parameter byte containing
I I
I
I
I
XIOO' follows the 'XY' code, the datal I
I
I
I
set uill not be purged before TCLOSE.I I
I
I
,
If a second parameter byte contains I I
I
I
I
X'01 1 • the data set viII be purged
I I
I
I
I
before TCLOSE.
I I 4
f SYSUT'l
I
+--I I-I
---l
I Reads SYSIN.
I I 5
I SYSIN
I
;
-I
+~ I
I Pads to the right with blanks to fill I I
1
I
I
up a record for the prin t da ta set.
, I 6
,SYSPRINT I
I
---l
I
I I-I Positions access mechanism to a disk
I I
I
I
i
address supplied by caller (on
, I
1
,
I
SY SUT1) and reads the record. See
I I
I
I
I
"segmentation Operations" in this
I I
I
I
I
section.
, 1 7
,SYSPUNCH I
Ii I-I
I
I Issues RETURN to terminate the previous, I
I
I
,SYSLIN
I
I
processing phase.
I I 8
Function of Routine

,

I

2 (Part 1 of 2).

---I

I--

I
I SYSLIB
I

,,

I

,

1

,A

I SYSTERM
I
1 SYSUT5
I
I
I
I

I

I-I
I
,
I
I

1
I
I
I
I
I
I
I
I
I
I
,
I
I

~

B

I
I
I
I
,
,
I
I
I
I
I
I
I
I - -______
_____ L

~

,
I

I

,I
I
~

I
I
I
I
I

I
I
I
I
I
I
I
I
I
I
I
I
,
I

~

Linkage Codes to Phase 00
Phase 00

33

Licensed Material - property of IBM

•

I

I

I ZZ Code I Meaning

1--------1
I

~

I
I

01

I NOTE macro instruction to retrieve the absolute address.

-~------

i
-------1
I
~

I POINT macro instruction to cause processing to start at the specified block I
in the data set.
I
I
~
-l------,
I·
03
I POINT macro instruction to rewind the data set.
I
~------------------------~
I
I
I
04
I BRITE UPDATE (disk only).
I
~
I
---------------~---I
05
,Hhen preceded by an 'XY' code of Xe 22', WRITE on SYSUT2 from SYSUT5 buffer I
I
I
I
with a buffer size of 512 bytes; when preceded by an 'XY' code of X'02',
I
I
I ______
READ__
from SYSUT2 into SYSUT5 buffer ~ith a __buffer
_________________________________
size of 512 bytes.
JI
L---______
02

~.

Figure 2 (Part 2 of 2).

Linkage Codes to Phase 00

Figure 3 shows the flol" of control for
processing bet~leen phases.

PHASE INPUT/OUTPUT REQUESTS

When the calling code received by phase
00 indicates that the next phase is to be
linked (I'AO'), phase 00 issues a RETURN
macro instruction and then uses LINKCUT to
determine ~lh ich phase interlude routine to
branch to.

Phase 00 translates all phase input/output
requests for all phases except phase 80
into branches to data management routines
or SVCs. It switches the buffer pointers
in the point table if the data set is
double buffered, blocks and unblocks the
record s. and checlcs to determine whether
the operation is completed successfully.
If necessary, it also calls TAMER to handle
dictionary spill during phase processing
(see the section "Table and Dictionary
Handling"). Figure 5 sholls the
input/output requests for ea.ch phase.
Figure 2 shows the linkage codes used in
these requests.

Each interlude routine sets the PURGER
string and branches to purge data sets and
issue progress messages, as required. The
interlude routine then performs TCLOSE.
OPEN, and CLOSE operations, as necessary.
maltes any required changes to the buffer
pointer table through which buffers are
assigned to data sets; and determines which
phase is to be linked next and sets LIRKCNT
accordingly.
Each interlude routine exits to a common
routine in tlhich the value of the COBOL
space constant for the next phase is set.
If the next phase is larger than the
previous phase. the TIHER interlude routine
is called to move tables and free main
storage as necessary.
Finally, LINKCNT is incremented by 2,
and control is passed to the next phase
through the execution of a LINK macro
instruction.
Figure 4 shoMs the conditions under
Which optional phases are called.
If the LVL option has been specified
phase 00 links to phase 80 for Federal
Information Processing Standard flagging.

34

Section 2.

Method of Operation

When a permanent input/output error
occurs in any phase except phase 80, a
SYNAD routine (S1AA, SYlB, or SYAD) is
called to handle the error. and ghase 03,
the error handling phase, is linked.
Phase
03 issues a SYNADAF macro instruction to
obtain the input/output error message and
then issues a iTO (write-to-operator) macro
instruction to print the message obtained.
Finally, phase 03 sets LINKCNT to 2 more
than the value assigned to phase 70 and
returns to phase 00 with an end-of-job
calling code (X'BO').
compilation is
abandoned via the routines described
earlier in this section under "Returning
Control to the Operating System."

Licensed Material - property of IBM

CD
-,--

Phase xx

.....

A\
I
t

r-

IWhen processing
t is completed.
t BAtR to COS

•I
cos

,

INTxx

I
I

V

I

1

,

IMove in purge
Istring
I

I
I
I

ISet COBOL space
Ifor next phase

L--

J

I

I
I
I

V

V

,

.--

I

r

ICalling code
I (XIAO') indicates
Ithat LINKB is to
Ibe called
I

I
I
I
I
I

IPurge, issue
Iprogress messages
las necessary
I

I
I
I
I

I

I

,

LINKB

J

I
I
I
V

tIssue RETURN JIlacrol
linstructions
I
I
, _ _ _ _ _ JI

L--

J

I
I
I

r-----------------~

IIncrement LINKCNT
Iby 2
I

L--------'i--------~

I
I
I
V

I

V

L._ _ _ _ _ _ _ _~,-------~

,

,

I
I
I

r ,- - - - - - - - ' - - - - - - - - - - ,

ITCLOSE, OPEN,
I CLOSE, as
I necessary

V

ITAMER interlude
I
Iprocessing if nextl
Iphase is larger
I
Ithan last phase
I
I
I

I
I
I
V

I
I
I

CD

,

I

Interlude
Routine
I

V

I

L--_____~,--------~

I
I
I

I
I

L---

V

,

I
I
I

,

IReassign buffers, I
las necessary
I
L ________~,~------~

V
I

i

ILink to next phasel
I
I
J

I

I
I
V
r

,

I Determine next
I
Iphase to be calledl
land set LINKCNT
I

,
I

V

®
Figure

3.

Flow of Control for Processing Beteeen Phases

Phase 00

35

Licensed Material - Property of IBM

r--

I
I

optional
Phase

rI

I
I
I
I-I

Preceding
Phase

02

LSTONLY or I
LSTCOMP
I

06

05

I
I
I
I

06

I
I
I

21

35

30

6A

60
64
65

I
I
I
I

I-I
I
I
I
I
I

,

51

65

60
64

70

Varies

80

60
6A
64
65
70

I
I

I--

LSTONLY or I
LSTCOMP
I

I
I

SYMDMP or
TEST

I

USE FOR
I
DEBUGGING* I

t-t-I
I
I

XREF
SXREF
VBREF
VBSUM

t-I
I
I
I
I
I
I

,
I

I
I
I
I
I
I
I,

OPT

I
I

,
I
I
I
I
I

,
I

I
I

SYMDMP or
TEST
If errors
in source
program
LVL

I*The WITH DEBUGGING MODE clause is
I specified under the SOURCE-COMPUTER
I paragraph, and the USE FOR DEBUGGING
I statements follow the DECLARATIVES
I header.
L--

.,
I
.,I

I
I
I

1
I
I
I

I

..I

I
I
I
I
I
I

Figure

36

,
,

I

t--

I

62
63
64

I

LSTONLY or I
LSTCOMP
I

I

I
I
I

,
,

05

25

I--

.,

LIB

I
I
I
I
I
I
I
I

I
I

I
I

I
I

r-

Compiler
option

02

08

r-

I
I
I

04

I

l-

,--------,

4.

Optional Phase processing

Section 2.

Method of operation

....
t>j

IQ
~

I

H
'
(}

Phase

SYSUTP

SYSUT2'

I

SYSUT3

SYSUT4 5

SYSUT5 3

SYSIN

SYSPRINT 6

SYSPUNCH

SYSLIN

SYSLIB

00

I

....
....c:cT
cT

02

WRITE
OPEN spill

OPEN

OPEN

OPEN

OPEN

OPEN

0
HI

WRITE!
TCLOSE!
READ

04 (if LIB)

....

WRITE
if LIB

PURGE

I
I

WRITE- Purge!

READ

TCLOSE

if LIB

if LIB

I

-OPEN
READ

LSTCOMP

or LSTONLY

0

s

"Cl

OPEN
WRITE

OPEN
CLOSE

Purge/
TCLOSE if

00
INT04

n

OPEN
CLOSE

Purge/TClOSE
if LIB &
LSTONLYor
LSTCOMP
Buffers 4, 5

00
INT01 1

cT
=r"
"
[/)

....III

CLOSE

Purge if

....I:'"'

FDECK!
CDECK
CLOSE

Purge if
FDECK!
CDECK, CLOSE

(}

CD
I:l

CLOSE

CLOSE

III
"

EI
'C!

....0

SYSUT2
WRITE
PO-text
E-text

12
(Report Writer)

::s

IV

SYSUT1 2

(1)

H

c+
o..c:

Incomplete

Data A-text
ATF-text
E-text
TCLOSE

00
INT20

H

WRITE
Data IC·text

Buffers 2,3

Buffers 4.5

o

HI

H
til

Purge
TCLOSE

til:

Buffers 1,6

t::I

PI

WRITE
XDAP

rt-

PI

Q-Routines

222

til

WRITE
PO-text for

(1)

rt-

IJI

PI
1:1

00
INT22

~

Buffers 2,3

WRITE
XDAP

(1)

H

READ
Data IC-text

Purge

TCLOSE

WRITE
PO-text

212

Buffers 4,5

READ
Data IC-text
Data A-text

DEF-text
E-text

i>"

IJI
IJI

....

1.0

::s

00
INT21

EI
(1)

1:1

rt-

If
SYMDMP
252

IJI

'iii
I»
H

Incomplete

Data A-text
ATF-text
E-text

TCLOSE

til

C
HI
HI

WRITE
Data IC-text
Data A-text
DEF-text
E-text

Purge
TCLOSE

Buffers 1,6

WRITE
Data A-text
E-text
DEF-text

TCLOSE

Purge

READ
DEF-text

WRITE
E-text

Buffers 1,6

Buffers 2.3

Buffer 4

WRITE
DATATAB
OBODOTAB

I Numbers specified in INTxx rout;nes indicate the buffers used by the next phase. SYSIN. SYSPRINT, SYSPUNCH. SYSLIN, SYSLIB. and SYSTERM all use buffer 6.
2Use of SYSUT1: Phases 1 B, 22, 21, 25, and 3 use the dictionary. If dictj~nary spill occurs, SYSUT1 is used to write the o~erflow. This will never occur after phase 3 since the dictionary is released at the end of phase 3. XOAP is a macro
instruction that reads what has previously been written (spilled); XDAP writes directly from the dictionary to storage and, therefore, uses no buffer. After phase 3, SYSUTl is available for use asa utility data I8t.
3Use of SYSUT5: If the SYMOMP or TEST option is not in effect, SYSUT5 is not used.
4 Reading by phase 70: Phase 70 only reads E-text from SYSUT4 if the syntax option is in effect or if phase 6 or phases 62. 63, and 64 have been bypassed, that is, no reading has been done since the TCLOSe in INT51. Otherwise, phase 6
or 64 passes the E-text to phase 70 through a table in storage. If the table exceeds 256 bytes, phase 6 or 64 writes the E-text~on SYSUT~.
SUse ofSYSUT4: Phase 04 writes on SYSUT4and phases 10and 1B read from SYSUT4 only if the LIB option is in effect. If the LIB option was not specified. that
is, BASIS or copy statements are not present in the source program, phases 10 and 1B read from SYSIN.
6UIS of SYSUT6: The SYSUT6 ODname replaces SYSPRINT when LVL is specified. After phase 80 procsuing, FIPS flaggeroutput is directed to SYSPRINT or SYSTERM.

rt-

IV

0

HI

;;
--

...."II

Phase

IQ

s::
CD

INT25

.

U1

32

0
....""r+

00

....

INT3

r+
'<
0

r+

00

n

INT4

0

iii

........CD

No SYNTAX
NoCSYNTAX
No UNSTRING

'0

11

t;I

00

I»

INT4

I

CD

r+

III

Po

I

1:11
1:1
HI
HI
(I)

11
ID'

III
III

....

SVSUT53

SVSPRINT 6

SVSIN

SVSPUNCH

SVSLlN

SVSLlB

SVSTERM

PO-text
E-text
TClOSE

CLOSE spill
OPEN utility

Buffers 4,5

WRITE
PI-text

CLOSE

WRITE
Purge

Buffer 1

WRITE
DEF-text

WRITE

E-text

Purge

Purge

Purge

CLOSE

TClOSE
Buffers 2,3

Buffers 4,5

Buffers 1,6 or 1

Buffer 6

II ICISYNTAX

Purge
TClOSE
Buffers 1.6

WRITE

READ

ATM-text

Pl-taxt E·text
WRITE

READ Pl-text
E-tsxt (If

ATMotext lif

V2BUGDCLI

V2BUGDCL)

TClOSE
lif
V2BUGDCLI

TCLOSE
(if
V2BUGDCLI

Buffers: 2.3

Buffers 4.5

Purge

TCLOSE

WRITE
E-text
illCISYNTAX

Purge

TClOSE
Bufter 1

Buffers 2,3

Buffers 4,5

Buffer 6

CSYNTAX
No SYNTAX
No UNSTRING

tn

::s

READ

WRITE
P2-text
E-text

4

:>'
CD

I»

SVSUT4 s

" ICISYNTAX

HI.

r+

Buffers 2,3

WRITE
XDAP

Purge

CI

SVSUT3
--

TClOSE

00

11

I»

SVSUT2

SVSUT1 2

I

00
INT4

Purge

Purge
TCLOSE

Buffers 1.6

Buffers 2.3

UNSTRING
No SYNTAX
NoCSYNTAX

00
INT4

!

Purge (if
V2BUGDCLI
TCLOSE
Buffers 4,5

Purge

Purge
TClOSE

S"uffer7

Buffers 2,3

CSYNTAX
UNSTRING
No SYNTAX

Purge (if
V2BUGDCLI
TClOSE

Purge

....t-'n

Buffer 6

CD

Buffers 4,5

::s

III
CD
PI

IQ

::s
iii
(I)

::s

35

r+

WRITE
PIA-text
E·te.t

READ
Pl·text
E-text

Purge
TClOSE

TCLOSE

:3

~

CD
H
1-"
I»
I-'

til

I'CJ
I»

11

r+

I'CJ

::r
I»
III

(I)

0
0

W
\0

00
INT35

w

I'CJ

11

o

- .

0
HI

--

~

I Numbers specified in iNTxJ( rDutines indicate the buffers used by the ne'xt phase. SYSIN, SYSPRINT. SYSPUNCH. SYSLIN. SVSLlB. and SYSTERM ell use buffer 6.
2UseafSYSUT1: Phases lB, 22. 21. 25. and 3 use the dictionary. If dictionary spill occurs, SYSUT1 is used to write the overflow. This will newr occur after phaso 3 since the dictionary is released at the end of phase 3. XDAP is a macro
instruction that reads what ha~ previously been writtel"! (spilled); XDAP writes directly from the dictionary to storage and. therefore, uses

110

buffer. After phase 3.SYSUT1 Is available for use as a utility data set.

3Use of SYSUT5: If the SYMDMP or TEST option is not in effect. SYSUT5 is not used.
4ReadingbY phase 70: Phase 70 only rcads E·text from SYSUT4 if the syntax OPtion is in effect or if phase 6 or phases 62, 63. and G4 hl!.ve been bypas~ed. that is, roo reading has been done since the TClOSE in INT51. OtherHise, phase 6
or 64 passes the E·text to phase 70 through ti table in storage. If the table exceeds 256 byte... phase 6 or G.f- wdtE=s the E·text on SYSUT3.
5Use of SYSUT4: Phase 02 writes on SYSUT4 :md phases 10 and 1B read from SYSUT4 only it the LIB option is in effect. If the LIB option ~·"as not specified. that
is. BASIS or COpy statements are not prewnt in the source program. phases 10 and 1 B read from SY5IN.
6 U,s i>fSYSUT6: The SYSUT6 DOnalnG replaces SYSPRINT WilC11 I..VL is specified. Atter phase 80 processing, FIPS flagger output is. directed to SVS?RINT or SYSTERM.
----

---------

------- - - - - - - - - - - - - - - - - - - -

'd

I!l

r+
'<

o

HI

H
1:11

::;:

oj::

0
til

til

0

....0t+-

....
~

IQ

Phase

11

00

a

CD

Ull

t:I

.

I>J

:.
til

t+-

tl"

0

~

0
HI
0
...g
CD
11

I»

....t+0

l:I

"-1
I!
CI

....
t+-

INT4

45
(UNSTRING)

SYNTAX
(Phase 70 is
next)

gl....
~I

I»

t+-

00
INT45
CSYNTAX

00
INT45
No SYNTAX
NoCSYNTAX

I»

WRITE
P2·text
E·text

CD

t+-

Purge
TClOSE
Buffer 1

Purge
TClOSE
Buffers 1,6

50

~

bI

a

READ
ATM-text

READ
ATM-text

Ufnot

(if

V2BUGDLLI

V2BUGDLLI

not

TCLOSE
(if-not
V2BUGDLU
Buffers 2,3

TClOSE if
V2BUGDCl
Buffers 4,5

TCLOSE
Ufnot
V2BUGDLLI

TClOSE lif
V2BUGDCl)

Suffers 2,3

Buffers 4,5

WRITE
Intermediate
Procedure
A·text
Intermediate
Optimization
A·text
Intermediate
E·text
P2·text

WRITE
Final
Optimization
A·text

rn

IQ
t:I

II
CD

00
INT50

rn

No SYNTAX

t tl

I»

11

t+oj::

g.1
...,

-

SYSLIB

SYSTERM

I:l

rn

CD

~

~

WRITE
E·text
if (C) SYNTAX

CD
11

....
....

I»

Purge

.

BufferS

Purge

WRITE
E·text
if (C)SYNTAX

Buffers 3,4

SYNTAX
(Phase 70.is
next)

l:I

t+-

SYSLIN

Purge
TClOSE

00
INT50

:DO

....rn

SYSPUNCH

Buffer 6

l:I

11

SYSPRINT 6 ,

Purge
TClOSE

rn

HI
HI
CD

SYSIN

or:

READ
P2·text
E·text

til

I»

....n
I:"'

SYSUT53

Buffer 6

00

0
HI

..g

SYSUT4 s
' Purge
TClOSE

SYNTAX
(Phase 70 next)

INT45

t+-

SYSUT3

SYSUT2

(1)

loCI

I=!"
CD

SYSUT1 2

TClOSE
Buffers 4.6

Purge
TClOSE
Buffers 2,3

BufferS

Buffer 1

1Numben specified in INTxx routines indicate the buffers used by the next phase. SYSIN. SYSPRINT. SYSPUNCH. SYSLIN. SYSLIB. and SVSTERM all use buffer 6.
2Use of
Phases 1 B; 22. 21, 25. and 3 use the dictionary. If dictionary spill occurs, SYSUT~ is used to write the overflow. This will never occur after phase 3 since the dictionary is released at the end of phase 3. XDAP is a macro

Sysun:

instruction that reads what has previously been written (spilled); XDAP writes directly from the dictionary to storage and, therefore, uses no buffer. After phase 3, SYSUTl is available for use asa utility data set.
3UIS of SYSU'T5: If the SYMDMP or TEST OPtion is not in effect. SYSUTS is not used.
4 Readingby phase 70: Phase 70 only reads E-text from SYSUT4 if the SV.ntax option is in effect or if p~ase 6 or phases 62, 63, a~d 64 have been bypassed, that is, no reading has been done since the TCLOSE in INT51. Otherwise, phase 6
or 64 passes the E·text to phase 70 through a table In stoRlO". If the table exceeds 256 bytes, phase 6 or 64 writes the E-text on SYSUT3.
sUlllof SYSUT4: Phase 04 writes on SYSUT4 and phases 10 and 18 read from SYSUT4 only if the LIB option is in effect. If the LIB option was not specified. that
is, 8ASIS or COpy statements are not present in the source program, phases 10 and 18 read from SYSIN.
6 Use of SYSUT6: TheSYSUT6 DDname replacesSVSPRINT when LVL is specified. After phase 80 proceSSing, FIPS flagger output is directed to SYSPRINT or SVSTERM •

ttl
11
o
..g
CD
11

t+'<

o

HI

H

til

or:

~

1-'"

IQ

Phase

I:
H
C1>

.

SYSUT12
WRITE
Procedure
A-text

(J1

51

Ii
....

1-'"

CI

1-'"

....
'"

....
1:1"
C1>

g
13

'tl

1-'"

'"'"

/1)

H

'='

PI

....
PI

00
INT51
(Phase 60 is
next)

Purge
TCLOSE

00
INT51
OPT
(Phase 62 is
next)

Purge
TCLOSE
Buffers 1.2

TCLOSE
Buffer 2

Purge
TCLOSE

til

PI

6

tl:I

I:

!II
!II
1-'IQ

1::1
13
CD
1::1

WRITE
Debug-text

....

!II

-;;,
PI
H

....
(J1

ttl
1:1"
III
!II
/1)

0
H>

:;;;

Purge
TCLOSE

Buffer 5

SYSIN

SYSPRINT 6

SYSPUNCH

SYSLIN

WRITE

WRITE

WRITE
Object
Module

SYSLIB

SVSTERM

Buffer 1

Purge

READ
Optimization
A-text

TCLOSE

TCLOSE

WRITE
DEF-text

WRITE
E-text if
ERRTBL
overflows,
REF-text
Purge
TCLOSE

00
INT60
No Phase 65
No Phase 6A
00
INT60
Phase 65
No Phase 6A

Purge
TCLOSE

SYSUT5 3

Buffers 3,4

H>
H>
CD
H

>'

SYSUT4 5
WRITE
E-text

Purge
TCLOSE

READ
Procedure
A-text

/1)

SYSUT3
WRITE
Final
Optimization
A-text

Buffers 3,4

00
INT51
SYNTAX
(Phase 70 is
next)

....
!II
1::1
Po

Buffers 4,3

SYSUT2
READ
Intermediate
Procedure
A-text
Intermediate
Optimization
A-text
Intermediate
E-text
P2-text

Buffers 1,2

Purge
TCLOSE
Buffers 4,3

Buffers 2,5

Purge
TCLOSE

READ
Data
A-text
E-text
DEF-text

WRITE

t"'
1-'-

Purge

WRITE
Purge

Purge

Purge

TCLOSE

o/1)

I

1::1
!II
C1>

Buffers 3.4

I

Po

WRITE
Purge

Purge

TCLOSE
Buffer 1

I

13:
III

....

I /1)

H
1-'PI

.....

I Numbers specified in INTxx routines indicate the buffers used by the next phase. SYSIN, SYSPRINT, SYSPUNCH, SYSLIN. SYSLlB, and SYSTERM all use buffer 6.
2use of SYSUT1: Phases 1 B. 22, 21. 25, and 3 use the dictionary. If dictionary spill occurs, SYSUTl is used to write the overflow. This will nev~r occur after phase 3 since the dictionary is released at the end of phase 3. XDAP is a macro
instruction that reads what has previously been written (spitted); XDAP writes directly from the dictionary to storage and, therefore, uses no buffer. After phase 3, SYSUT1 is available for use as a utility data set .
3 Use of SYSUT5: If the SYMDMP or TEST option is not in effect, SYSUTS is not used.
4 Reading by phase 70: Phase 70 only reads E-text from SYSUT4 if the syntax option is in effect or if phase 6 or phases 62, 63, and 64 have been bypassed, that is, no reading has been done since the TCLQSE in INT51. Otherl.'lIise, phase 6

or 64 passes the E-text to phase 70 through a table in storage. If the table exceeds 256 bytes, phase 6 or 64 writes the E-text on SYSUT3.
5 Use of SYSUT4: Phase U4 writes on SYSUT4 and phases 10 and 1 B read from SYSUT4 only if the LIB option is in effect. If the LIB option was not specified, that
is BASIS or COpy statements are not present in the source program, phases 10 and 1B read from SYSIN.
6 U;o of SYSUT6: The SYSUT6 DDname replaces SYSPAINT when LVL is specified. After phase 80 processing, FIPS flagger output is directed to SYSPRINT or SYSTERM.
----- - - - - - - -

--

----

ttl

H

o

'"d

CD
H

....

'<
-

--

-

-

------

o

0
0

H>

"'"

H
tl:I
13:

"'"

':j

IV

1-"
I.Cl

Ul

H

~

en

(I)

C'l

r+
1-"

(J1

0

:::l
IV

I>"

::;:

r+
1-"
..;

()

en
r+
::r

'<

P,

0

0
0

I-h

1-"

r+

I-h

r+

ro

t1

0

~

r+

1-"
0
:::l

00
INTGO
Phase 65
Phase 6A

()

ro

H

00
INT62

00
INT63

Ul

ro

r+
:::l

P,

to

.::

I-h
I-h

ro

t1
I>"
(/)

....

III
I.Cl
:::l
I!!

ro

:::l

r+
(/)

.....
'tI
f»
t1

r+

a0
I-h
~
~

SYSUT4 5

TCLOSE

SYSUT5 3

SYSIN

SYSPRINT 6

SYSPUNCH

SYSLIN

Purge

Purge

Buffers 2,5

SYSUB

SYSTERM
WRITE
Purge

TCLOSE
Buffer 1

Purge
TCLOSE

....t-<
()

ro

:::l
(/)
(I)

p,
Purge

Purge

Purge

TCLOSE

WRITE
Purge

~
(I)

t1

Buffers 3,4

IlJ

TCLOSE

READ
Procedure
A·text

TCLOSE
WRITE
DEF·text.
independent
segments
if SYMDMP

READ

WRITE

WRITE

Purge

Purge

!-'

Optimization

A·text

I'd

11

o

'0

TCLOSE

(I)

Buffers 5

Buffers 3,4

WRITE

WRITE
Debug·text

Procedure

t1
r+

'<
WRITE

o

A l-text
Purge
TCLOSE
Buffers 2,3

READ

I-h

TCLOSE
Buffer 4

WRITE

Procedure

Al-text

E·text if
ERRTBL

overflows,

til

IlJ

SYSUT3

1-"

Buffer 1

64

Purge
TCLOSE

Buffers 1,2

Buffers 1,2

63

SYSUT2

::;:

READ
Procedure
A-text

~

r+

Buffers 4.3

If OPT
62

t;I

IlJ

Purge

Purge
TCLOSE

e

'0
!-I'
!-'

SYSUT1 2

00
INT60
Phase 6A
No Phase 65

::r

0
'0

ro

Phase

H
to
t3:

Purge
TCLOSE
Buffer 5

READ
Data
A·text
DEF·text
E·text

WRITE

WRITE

Purge

Purge

Purge

WRITE
Purge

Purge

Purge

Purge

WRITE
Purge

Purge

Purge

Purge

WRITE
Purge

REF·text
00
INT64
(Phase 65 is
next)

Purge
TCLOSE

00
INT64
(Phase 6A is
next)

Purge
TCLOSE

00
INT64
(Phase 70 is
next!

Purge
TCLOSE

Purge

TCLOSE

TCLOSE

Buffer 1

Buffers 2,3

TCLOSE

Buffers 1,2

Purge
TCLOSE
Buffers 3,4

TCLOSE

Purge
TCLOSE
Buffers 1.2

Buffers 3,4

1Numbers specified in INTxx routines indicate the buffers used by the next phase. SYSIN, SYSPAINT, SYSPUNCH, SYSlIN, SYSLIB, and SYSTERM all use buffer 6,
2 Use ofSYSUT1: Phases 1 B, 22, 21. 25. and 3 use the dictionary. If dictionary spill occurs. SYSUn is used to write the overflow. This will never occur after phase 3 since the dictionary is released at the end of phase 3. XDAP is a macro

instruction that reads what has previously been written (spilled); XDAP writes directly from the dictionary to storage and. therefore, uses no buffer. After phase 3. SYSUTl is available"for use asa utilitv data set .
3Use of SYSUT5: If the SYMDMP or TEST option is not in effect. SYSUT5 is not used.
4 Reading by phase 70: Phase 70 only reads E-text from SYSUT4 if the syntax option is in effect or if phase 6 or phases 62. 63, and 64 have been bypassed, that is, no reading has been done since the TCLOSE in INT51. Otherwise, phase 6
or 64 passes the E-text to phase 70 through a table in storage. If the table exceeds 256 bytes, phase 6 or 64 writes the E-text on SYSUT3.·
5 Use of SYSUT4: Phase 04 writes on SYSUT4 and phases 10 and 1 B read from SYSUT4 only if the LIB option is in effect_ If the LIB option was not specified, that
is, BASIS or Copy statements are not present in the source program, phases 10 and 1 B read from SYSI N.
6 Use of SYSUT6: The SYSUT6 DDnames replaces SYSPRINT when LVL is specified. After phase 80 processing, FIPS flagger output is directed to SYS-PRINT or SYSTERM.

"!I
.....
IQ

r::

11
(1)

U'I

>-

C'l

~
.....
--=
.....
~

..q

0
H>
~

::r
(1)

n
0

s

"0

.....

Phase

SVSUT1'

If
FLOW
STATE or
SYMDMP
65

READ
Independent
segments if
SYMDMP

SVSUT2

SVSUT3

WRITE-READ
ifSYSUT5

SVSUT4 s
READ
Debug-text

is assigned
to tape
device

If no
, SXREF.
XREF.
00
INT65

SVSUTS'

SVSIN

SVSPRINT 6

SVSPUNCH

SVSLIN

WRITE

WRITE

Purge

Purge

Purge

Purge

WRITE
DEBUG
tables for
SYMDMP
only

TCLOSE
if OPT

SVSLlB

SYSTERM

SVSUT6

Buffers 1.2

If SXREF
or XREF
00
INT65

TCLOSE

IfSXREF
or XREF
6A

READ
DEF-text

TCLOSE

Buffers 1.2

Buffers 3,4

READ
REF-text

00
INT6A

WRITE

WRITE

TCLOSE
if OPT
Buffers 1,2

I-'

Buffers 3,4

(1)

11

70

t:I
III

~

I»

00
INT70

en
(1)

~

In

III
I:'
po

m

r::

H>
H>

(1)

11

>In
In

.....

80

CLOSE

OPEN
WRITE
READ
CLOSE

CLOSE

READ
E-text

READ'
E-text

WRITE

CLOSE

CLOSE

CLOSE

WRITE

CLOSE

OPEN
WRITE
CLOSE

CLOSE

CLOSE

OPEN
WRITE
CLOSE
if TERM

OPEN
READ
CLOSE

1Numbers specified in INTx)( rOlltines indicate the buffers used by the next phase. SYSIN. SYSPRINT, SYSPUNCH, SYSLIN. SYSLIB. and SYSTERM all use buffer 6,

2Use of SYSUTt: Phases 1 B, 22, 21. 25. and 3 use the dictionary. If dictionary spill OIXUrs, SYSUTl is used to write the overflow. This will never occur after phase 3 since the dictionary is released at the end of phase 3. XDAP is a macro
instruction that reads what has previously been written (spilled); XOAP writes directly from the dictionary to storage and, therefore. uses no buffer. After phase 3, SYSUTl is available for usa as a utility data set.
3Use ofSYSUT5: If the SYMOMP or TEST option is notin effect, SYSUT5 is not used.
4Reading by phase 70: Phase 70 only reads E-lexl from SYSUT4 if the syntax option is in effect or if phase 6 or phases 62. 63, and 64 have been bypassed. lhat is. no reading has been done since lhe TCLOSE in INT51. Otherwise, phase 6
or 64 passes the E-text to phase 70 through a table in storage. If the 'table exceeds 256 bytes. phase 6 or 64 writes the E-text on SYSUT3.
SU.of SYSUT4.: Phase 04 writes on SYSUT4 and phases 10 and 1B read from SVSUT4 onlv if the LIB option is in effect. If lhe LIB option was not specified.lhat
is, BASIS or COpy stalemants are not presenl in the souree program, phases 10and 1B read from SYSIN.
6(Ju of SYSUT6:
SYSUT6 DDname replaces SYSPRINT when LVL is specified. After phase SO processing, FIPS flagger output is directed to SYSPA1NT or SYSTERM.

The

--------- -

-

t:"'

.....
C'l

(1)

I:'
In
(1)

po

IQ

I:'
S

t:lI

I"

(1)

(1)

~

In

-;;

~
11

.....

III

I-'

III
11

~

.....
"0

::r

0
H>

(1)

.....

III
In
0
0

~

w

"0
11

o

"0
(\)

11
~

..q

o

H>

H

I:lI
t!C

Licensed Material - Property of IBM

Phase 00 does not use data management macro
instructions for OPEN, CLOSE, TCLOSE, READ,
and WRITE. To open files, phase 00 issues
SVC 19; to close files, SVC 20; to close
temporarily, svc 23. To read and write,
phase 00 updates the appropriate fiel~s of
the DCB and DECB, and then branches and
links to the data management READ/WRITE
routine. The address of this data
management routine is picked up from the
DCB.
The interlude (INTxx) routines, which
handle opening and closing of files, issue
one SVC for all files to be opened or
closed at a given time. Register 1 points
to a list which gives the address of DCBs
for all files to be included in this SVC.
The last entry in the list has the
high-order bit turned on to indicate
end-of-list.

If the TERM option is in effect, error
messages are directed to SYSTERM as well as
SYSPRINT (SYSOT6 for LVL option). However,
if SISPRINT cannot be opened or is a dummy
data set, error messages are directed to
SISTERM only.
In addition, if the TERM option is in
effect, a progress message is written to
SYSTERM (never SYSPRINT) by phase 00. The
progress message sta tes: "Release 2.0
OS/VS COBOL IN PROGRESS." If errors have
occurred, a message stating the number of
errors and the highest severity code
encountered during the compilation is also
written.

When a segmented program is being compiled,
phase 00 issues NOTE and POINT macro
instructions for phases 51, 6, 62, and 63.
Phase 51 keeps track of the sections of
Procedure A-text that belong to each
segment; phase 6 or phases 62 and 63 use
the information passed to them by phase 51
to construct the object module, segment by
segment.
In the P2-text processed by phase 51, a
segmentation control break signals a
section of text whose priority is different
from that of the section just processed.
SEGSAVE contains the relative track and
44

Section 2.

Method of Operation

cylinder numbers on SISUT1 of the first
record in the section. Phase 51 then calls
the cos routine with a C1 in the XI
parameters (see "Receiving Control from
Another Phase" in this section for the
meaning of X and I). In response to these
parameters, the COS routine branches to the
NOTE routine, which issues a NOTE macro
instruction to retrieve the relative
address on SISUT1 of the record phase 00 is
about to write (that is. for the next
section). The NOTE routine places the
address in SEGSAVE, and phase 00 returns to
phase 51.
using the priority numbers in the SEGTBL
table entries, phase 6 or phases 62 and 63
first process all the sections for one
segment, then all the sections for the
next, and so on. Each time it picks up the
SEGTBL entry for a new section of Procedure
A-text, phase 6 or phases 62 and 63 call
the COS routine with a value of 91 in the
XI parameters. It also passes the relative
track and cylinder for the new section in
its SEGTBL table entry. In response to
these parameters, the COS routine branches
to the SEGPNT routine, which issues a POINT
macro instruction to the SISUT1 address of
the section. It then reads the first
record of the new section for phase 6 or
phases 62 and 63. Subsequent calls to read
records of the same section are made by
phase 6 or phases 62 and 63 with a value of
01 in the XY parameters.
When the OPT option is in effect g phase
62 reads, in order of ascending priority.
the sections of Procedure A-text that
belong to each segment to determine the
main storage requirem~nts for the program.

TABLE AND DICTIONARY HANDLING
A portion of storage is reserved throughout
compilation for tables. built and used by
the phases. All processing involving these
tables (inserting new entries, releasing a
table when no longer needed, etc.) is
handled by the group of routines known
collectively as TAMER. These routines are
resident in phase 00. They are described
in "Appendix A: Table and Dictionary
Handling."
COMMUNICATIONS AREA (COMMON)
The communications area (COMMON) is
resident in phase 00. It contains
informa Hon to which all phases can refer
directly. The format of COMMON is given in
"Communications Area" in "Section 5. Data
Areas. "

Licensed Material - property of IBM

SYNTAX-CHECKING COMPILATIONS
An unconditional syntax-checking (SYNTAX)
compilation or the production of an error
(E) or disaster (D) level message during a
conditional syntax-checking (CSYNTAX)
compilation causes the compiler to produce
no object code and to print out the
appropriate messages on SYSPRINT (SYSUT6
for LiL option) and/or SYSTERM. The
CSYNTAX compilation, upon generating an E
or D level message, becomes in effect a
SYNTAX compilation and the SYNTAX switch in
the PHZSH3 cell in COMMON is set on.
After
phase 22, any phase detecting a syntax
error sets the ERRSEV cell in COMMON to the
highest error severity level encountered.
After phase 4, E-text is on SYSUT4.
During INT4, phase 00 checks the SYNTAX
suitch.
If it is on, phase 00 sets the
value of LINKCNT to indicate that phase 70
is to be executed next. The RDERRFIL bit
in the SHITCH cell in COMMON is set on to
indicate to phase 70 that E-text is to be
read from SYSUT4. After phase 70
processing, phase 00 either gives control
to phase 80 if the LVL option is in effect
or returns to the operating system via the
routines described earlier in this section
under "Returning Control to the Operating
system. "
If the SYNTAX switch is off, processing
continues with phase 50.
Phase 50 writes
E-text on SYSUT4 if the CSYNTAX option is
in effect; the generation of an E level
message causes the SYNTAX switch to be set
on. During INT50, phase 00 performs the
same processing if the SYNTAX switch is on
as it does during INT4. If the SYNTAX
suitch is off, processing continues with
phase 51.
*1£ the TERM option is in effect and the
permanent input/output error did not occur
on a write to SYSTERM. the message is
written to SYSTERM as well as the console.
If the permanent input/output error
occurred on a Ifri te to SYSTERM and not
SYSPRINT, the message is written to
SYSPRINT (SYSUT6 for LVL option) as well
as the console.

Phase 51 processing for the CSYMTAX
option is the same as phase 50 processing.
If phase 51 detects no syntax. error which
would cause an E level message, a full
compilation is produced.

TERMINAL ERROR CONDITIONS
The following conditions will cause
compilation to be abandoned. In each case,
if NODUMP is specified, phase 03 is called
to print an error message on the console or
SYSPRINT (SYSUT6 for LVL option); phase 03
then returns to phase 00. uhich returns to
the operating system via the routines
described earlier in this section under
"Returning Control to the operating
System."
1.

A permanent input/output error is
encountered on a device.*

2.

An invalid COpy or BASIS library name
is encountered.

3.

TAMER cannot continue:
o

Larger region needed.

e

Compiler error.**

o

A table has exceeded the maximum
permissible size.**

o

Fragmented storage.**

**If the DUMP option is in effect, this
error causes an ABEND with a dump.

Phase 00

45

Licensed Material - Property of IBM

Phase 01 (IKFCBL01) is logically a part of
phase 00, but is a separate load module
because it is not required in storage
throughout compilation. The functions of
phase 01 are:
1.

To contain the installation default
values of compilation parameters in a
module separate from the actual
initialization coding (phase 02
contains the actual initialization
coding) •

2.

To pass these default values of the
compilation parameters, together with
any values of the compilation
parameters chosen by the user at
compilation time, to phase 02.

control card or that can be passed by the
COBOL Prompter to the compiler if specified
as operands of the COBOL command under TSO.
These options can also be used in an
ATTACH, LINK, CALL, or XCTL macro
instruction. In addition, the macro
instruction parameters can specify a change
in the user data set names or an addition
to the standard page heading for the output
listing.
(The standard page heading
consists of a page number only.) Phase 01
passes these parameters, together with
their installation default values, to
phase 02.

RETURN FROM PHASE 02
COMPILATION PARAMETERS
When phase 00 links to phase 01, it passes
the address of a parameter list that points
to the compilation options, altered DD
names, and augmented headings. The section
"Introduction" in this publication explains
the options that can be used on an EXEC

46

section 2.

Method of Operation

Phase 01 is a macro instruction. When
phase 02 has finished processing, it
returns to phase 01, thereby restoring
phase 01 registers and releasing phase 02
storage. Phase 01 branches to phase 00.
Phase 00 then issues a RETURN macro
instruction for phase 01, which restores
phase 00 registers and releases phase 01
storage.

Licensed Material -

Phase 02 (IKFCBL02) is the initialization
phase.
It is logically part of phase 01,
which contains the installation default
values of compilation parameters. but phase
02 is a separate load module.
'rhe major
functions of phase 02 are:
~

Processing the compilation parameters
specified on the EXEC card or passed
with the CALL, LINK, XCTL, or ATTACH
macro instruction.
(If the COBOL
command is used to invoke the compiler,
a LINK macro instruction is executed to
pass control to the compiler.)

o

Determining buffer sizes for the
compiler data sets for all phases.

o

Obtaining storage for tables, the
dictionary, and buffers.

o Entering information in COMMON to be

o

property of IBM

From the BOF and SIZE parameters, phase
02 determines the amount of space that is
aVdilable (see "Buffer Size Determination"
belo~.
From the SPlCE parameter, phase 02
sets the print control character both in
the carriage control field for SYSPRINT and
also in the COMMON location SPACING.
From
the LINECNT parameter, phase 02 records in
COr-WON location CN'l'LPF the 'Talue for the
number of lines per page to ~e printed ill
the source card li~~ing.
If augmented page headings .ere given in

a macro instruction, phase 02 records them
for phase 00 so that it can set up the
pL:oper heading print format.
If the data set names were changed bV a
LINK, ATTACH, or xeTL macro instruction.
phase 02 changes the names in the DCB's.

used for statistics in the program
listing.

phase 02 uses the control program to
determine the date of compilation, which it
records in CONMON.

opening all required data sets to check
that they can be opened and to
determine the block sizes specified by
the user.

BUFFER SIZE DETERMINATION

o

Processing for the BATCH option.

o

Building the table of COBOL space
constants in phase 00, using the BLDL
macro instruction which allous dynamic
calculation of phase sizes.

COMPILATION PARAMETERS
Phase 02 sets sHitches in COMMON locations
SWITV2. LISTERSH, PHZSW, PHZSW1. PHZSW2,
PHZSW3, and PHZSW4 for phase 00 to indicate
which of the following options were chosen:
ADV
BATCH
CLIST
COUNT
CSYNTli.X
DECK
DIiAP

DUMP
DYNAM
ENDJOB

FLAG
FLOW
LANGLVL (112)
LCOL1
LCOL2
LCPY
FDECK

LIB
LOAD
LSTCOl'lP
LSTOULY
LVL
L120

SOURCE
STATE
SUP!UP
SXREF
SYMDMP
SYNTAX

L132
NAME
NU tl
OPT

SYSx
TERM
TEST
VBREF

P~lAP

VBSUl'!
VERB
XREF

QUOTE
RESIDENT
SEQ

ZI~B

The compiler uses six buffer areas.
Figore
5 shows, for each phase, the buffers used
by the data sets active in that phase.
Because buffers 1 through 5 are always used
for utility data sets, they are of uniform
size so that they can be used for diff~rent
data sets from phase to phase.
Buffe~ 6 is
also used for a utility data set in phases
20,22,21.25,50, and 51; therefore. i t
must be at least as large as the other
buffers.
Buffer 6 may need to be larger
than the other buffers since in phases 10,
12, 1B, 3, and 6 i t is used for up to three
double-buffered data sets.
Note that in
Figure 4 if the two buffer numbers are the
same, the data set is single-buffered.
Note: If the BATCH option has been
specified, a seventh bu.ffer is used.
This
buffer is used only b} the SYSIN data set
and is present throughout the compilation.
It is necessary to save the input cards of
subsequent compilations wi_hin a batch.
Phase 02 determines the total buff~r
size available from the BUF option on the
EXEC control card or in the COBOL command
string.
If BUF was not specified but SIZE
Has, phase 02 calculates BUF from the
formula:
Phase 02

47

Licensed Material - Property of IBM

BUF

=

1/4 (SIZE - 96K) + 4K

If neither BUF nor SIZE Has specified on
the EXEC control card or in the COBOL
command string, phase 02 sets BUF equal to
the default value specified at installation
time.
BUF is the total amount of storage
available for buffers. To determine the
buffer sizes from this value, phase 02:
1.

Determines the block sizes of the user
data sets by opening the data sets;
or, if the block sizes have not been
given on the DD cards or have been
specified. incorrectly, assigns the
following default sizes:

card which is not a CBL card (COBOL options
card).
Phase 02 then processes the options
contained on all the CBL cards and alters
switch settings in SRITV2, LISTERSW. PHZSW.
PHZSil, PHZSH2. and PHZSW3 in COMMON.
Phase 02 also saves the address of the
first non-CBL card in COMMON location
ADDRCARD and sets the BATCHSW switch in
COMMON to hexadecimal • 08' (CARDHELD).
For
subsequent compilations in the batch, the
COMMON location ADDRCARD contains the
address of the next CBL card.
After the
first compilation, phase 02 tests the
BATCHSW switch for a hexadecimal '08' and
obtains the address of the CBL card from
ADDRCARD and processes the options as
described above. In addition, areas in
phase 00 are initialized to their original
values for subsequent compilations •

• 80 bytes for SYSIN. SYSLIN,
SYSPU NCH, and SYS 1I B.
ENTERING STATISTICAL INFORMATION IN COMMON
• 121 bytes (133 if L132 is in effect)
for SYSPRINT (SYSUT6 for LVL option)
and SYSTERM.
2.

using these block sizes, determines
the reguired size of buffer 6 in
phases 10, 12, lB, 3, and 6, and
chooses the larger of these sizes as
the size of buffer 6.
(If, for
example, the default block sizes were
assigned, the size of buffer 6 would
be 804 bytes.)

3.

subtracts the size of buffer 6 from
BUF and divides the remainder equally
among the other five buffers.

4.

Compares the size of buffer 6 to
buffers 1 through 5. If buffer 6 is
smaller , it maltes all the buffers the
same size, that is, one-sixth of BUF.

5.

Finally, to ensure that the determined
buffer size is not greater than that
which the input/output devices can
handle, the maximum block size
permitted on the device is determined
via a DEVTYPE macro instruction and
compared with the calculated buffer
sizes. The smaller of these two is
chosen as the buffer size.

Phase 02 records the buffer sizes in
phase 00 buffer control blocks. Phase 00
uses the buffer control blocks to keep
track of how much of the buffer has been
used in blocking and unblocking records.

In addition to the information stored in
COMMON as a result of compiler option
parameters, phase 02 stores other
information in COMMON that it has
determined during storage and buffer
allocation. The total area to be used for
buffers is stored in BUFSIZE. The total
area available for compilation is stored in
CORESIZE. Phase 00 uses the information in
these cells, as well as the information in
PHZSW, PHZSH1, PHZSW2, PHZSW3, CNTLINE, and
SPACING (see "Compilation Parameters") to
produce statistical data for the listing.

PREPARING FOR FEDERAL INFORMATION
PROCESSING STANDARD (FIPS) FLAGGING
When the LVL option is specified, phase 02
enters the level character in the FIPLVL
cell in COMMON to indicate to phase 80 what
level of the FIPS standard is to be flagged
(A = low; B = lou intermediate; C = high
intermediate; D = full standard). Phase 02
also:
Q

o

Replaces the SYSPRINT DDname with the
SYSOT6 DDname.
(This data set receives
the source listing that is used for
input to phase 80 for FIPS flagging.)

o

Opens the DCB for SYSUT6, or, if the
OPEN is unsuccessful, cancels the LVL
option.

G

Moves the SYSUT6 DDname (or its
alternate DDname) and the DDname for
the FIPS output file into the DDNTBL
table.

PROCESSING FOR THE BATCH OPTION
If the BATCH option has been specified and
if the compilation is the first uithin the
batch, phase 02 reads until it encounters a
48

section 2.

Method of operation

Sets the LIST bit in COMMON to indicate
that the source option is in effect.

Licensed Material - Property of IBM

INFORMATION RETURNED TO PHASE 00

data set is SISLIN. when the LOAD
option is requested, a warning message
is written, the LOAD option is
canceled, and compilation continues.
If the data set is SYSPUNCH, when the
DECK option is requested, a warning
message is written, the DECK option is
canceled, and compilation continues.
If the data set is SYSUT6 when the LVL
option is specified, a warning message
is written and the LVL option is
canceled. If the data set is
SYSPRINT, when the NOTERM option is
requested, a disaster message is
written to the console and compilation
is terminated. However, if SYSTERM
can be opened when SYSPRINT (SYSUT6
for LVL option) cannot be opened, a
warning message is written to the
console and compilation continues.
If
the data set is SYSTERM when the TERM
option is requested, phase 02 checks
to see if SYSPRINT is usable.
If
SYSPRINT can be opened and it is not a
dummy data set, a warning message is
written to both SYSPRINT and the
console, the TERM option is canceled,
and compilation continues. However,
if the TERM option is requested but
SYSTERM cannot be opened and SYSPRINT
cannot be opened or is a dummy data
set, a disaster message is written to
the console and compilation is
termi na ted.

ahen phase 02 has finished processing, i t
returns to phase 01, restoring phase 01
registers and releasing phase 02 storage.
Phase 01 then branches to phase 00.
Phase 02 passes the following
information back to phase 00:
1.

DCBs modified by the compilation
parameters.

2.

The switches indicating the
compilation options.

3.

The LINECNT indication.

q.

An indication of the difference
between the maximum amount of storage
requested for tables, the dictionary,
and buffers, and the amount actually
received.

5.

The address of the buffer area and the
buffer lengths.

6.

The date of the compilation.

ERROR CONDITIONS
Phase 02 detects and handles the following
error conditions:
1.

A data set cannot be opened. If the
data set is SYSLIB, when required for
any compiler data set, compilation is
terminated.
If the data set is SYSIN,
SYSUT1, SYSUT2, SYSUT3, or SYSUTq. a
disaster message is written and
compilation is terminated.
If the
data set is SYSUT5. a warning message
is written and the symbolic debug
(SYHDMP) option is canceled. If the

2.

Specified storage device block size is
larger than the buffer space
allocated, or is not an even multiple
of the record length.
The block size
is set to equal the length of one
logical record, and a message
indicating this is printed.

3.

Invalid or insufficient SIZE or BUF
parameter. Warning only: an
alternate value is chosen.

Phase 02

qg

Licensed Material - Property of IBM

Phase 03 (IKFCBL03) is logically part of
phase 00, but is a separate load module
because it is reguired to be in storage
only if a terminal error condition occurs
(see "Terminal Error Conditions" in the
section "Phase 00"). Phase 03 is linked to
by phase 00 whenever a SYNAD routine exit
is to be taken, when TAMER cannot continue.
or vhen phase 00 encounters an invalid COpy
or BASIS library name.
The functions of phase 03 are to issue
error messages and to indica te to phase 00
that compilation is to be terminated.

OBTAINING AND PRINTI NG ERROR MESSAGES
Before linking to phase 03, phase 00 places
the address of a one-byte error code in the
KTRMNATE cell in COMMON. It also saves the
contents of registers 0 and 1 in the
SYNADR01 location in COMMON, these are
needed for the SYNADAF macro instruction.
The following codes are used:
Code
lh~;[ad~£j,.!!!all

00
01

*

~

02

06

07
08
09

OA
DB

lieSilling:
SYNAD exit for SYSLIB
SYNAD exit for all data
sets except SYSLIB and
SYSTERM
SYNAD exit for SYSTERM
Larger region needed
compiler error
A table has exceeded the
maximum permissible
size
Fragmented storage
Invalid BASIS reguest
Invalid library name

*If the DUMP option is specified, phase 00
issues an abend with dump instead of
linking to phase 03.

50

Section 2.

Method of Operation

Phase 03 examines the code. If a SYNAD
exit is indicated, registers 0 and 1 are
loaded from COMMON and a SYNADAF macro
instruction is issued to obtain the
input/output error message. This message
with a COBOL prefix is then written out on
the console through the execution of a WTO
(write-to-.operator) macro instruction.
Phase 03 next calls phase 00 to print
out the message on SYSPRINT and/or SYSTERM
according to the following conditions. If
the error occurred on the SYSTERM data set,
the message is written out on SYSPRINT if
the SOURCE option is in effect. If the
error occurred on the SY5LIB data set, the
message is written out on SYSPRINT if the
SOURCE option is in effect and on SYSTERM
if the TERM option is in effect. If the
error occurred on a data set other than
SYSLIB or SYSTER~~ the message is not
written out on SYSPRINT, but is written out
on SYSTERM if the TERM option is in effect.
If a SYNAD exit is not to be taken,
phase 03 obtains the text and length of the
appropriate message and then calls phase 00
to print out the message on SYSPRINT and/or
SYSTERM depending upon whether the SOURCE
and/or TERM option is in effect.

RETURNING COliTROL TO PHASE 00
After printing the error message, phase 00
returns to phase 03. Phase 03 sets LINKCNT
to 2 more than the value assigned to phase
70 and sets the BATCHSW switch in COMMON to
indicate that compilation of other programs
in the batch is to be bypassed. Finally.
phase 03 returns to phase 00 with an
end-of-job (X'BO') calling code.

Licensed Material - property of IBM

Phase 04 (IKFCBL04) implements the COpy
language of American National Standard
COBOL. X3.23-1974. by allowing insertion of
prearitten COBOL entries. which reside in a
library. into a COBOL source program at
compile time. COpy also allows the option
to alter these prewr:itten entries at
compile time.
Phase 04 reads the user-created COBOL
libraries and passes the entire source
program to phases 10 and lB. or to phase 05
if LSTCOl:!P or LSTONLY is in effect. The
LIB option must be in effect if the BASIS
or COpy facility is used.

The input to phase 04 can be source input
text and library text.

I

MAIN FLOW OF CONTROL IN PHASE 04
Phase 04 invokes the PH04INIT subroutine to
initialize variables, allocate work area
storage and build the DCBTBL, then reads
the initial SYSIN record.
If BASIS is desired, phase 04 invokes
the BASISRTN subroutine to read and update
the BASIS library from SYSLIB. The
resulting source is written to .SYSUT2.
Phase 04 next invokes the COPYRTN
subroutine to scan SYSIN or SYSUT2 (if
BASIS) source for COpy statements.
COPYRTN
invokes COPYROC to syntax check a COpy
statement and to read and update the source
from the identified COpy library member.
Hhen source end-of-file is reached,
phase 04 closes any COpy libraries that
have been opened.

I PROCESSI NG

ROUTINES USED

]~SISR1!:

During BASIS processing SYSUT2 is used as
output during BASIS processing. This is
then read as source to process any COpy
statements. SYSUT4 is used as final output
from phase 04. If Lister is not to be
invoked. a source listing is produced on
SYSPRINT.

I ERROR CONDITIONS
Phase 011 contains text for error messages
and produces the error messages.
It
produces E-text on SYSUT3 as it scans the
source program listings and analyzes
syntax.

I TABLES USED
Phase OLI creates the DCBTBL uhich contains
one entry for each unique library name.
Upon completion of PFocessing. phase 04
deletes DCBTBL.

The BASISRTN routine merges
source from the BASIS library specified
with the users source from SYSIN. matching
serial numbers appearing on the BASIS
INSERT and DELETE cards with those in
columns 1 through 6 on the BASIS library
source. When the merge is complete, SYSUT2
is TCLOSEd and made ready for COPYRTN
processing, and SYSLIB is closed.

COPYRTlI: The COPYRTN routine reads all
soii'rCe-input looking for a COpy verb that
is not part of a NOTE. comment line. or
comment entry.
Whenever COPY is found,
COPYRTN invokes COPYROC to process the
statements. When source end-of-file is
reached. COPYRTN returns to the phase 04
controller routine for phase termination.
£QPYPRQ£:
COPYROC validates the copy
statement.
The library is identified and opened.
The REPLACING arguments are passed and
saved in a work area.
Any syntax or OPEN
errors uill result in the COPY statement
being nullified. If the COPY statement has
no errors, the COpy library is read and the
source updated according to the REPLACING
rules.
At library end-of-file, COPYROC
returns control to COPYRTN.

Phase 04

51

Licensed Material - Property of IBM

control is given to phase 05 (IKFCBL05)
only when the Lister option (LSTONLY or
LSTCOMP) has been specified. Phase 05 is
the Lister scan phase, which analyzes the
syntax of the COBOL source program. This
phase inserts syntactic markers between the
various elements of the ·source program.
The syntactic markers are used by
subsequent phases to produce the
cross-references and to reformat the
program for the Lister option listing.
Phase 05 is divided into major functions
that:
• tokenize the output (COBOL source) into
syntactic units or words (the SCAN and
READ routines)

output listing. Also, anyE-text read from
SYSUT3 is written on SYSUT2.

I SYNTAX

LANGUAGE SUMURY

The syntax analysis done by Phase 05 is a
table-driven process whereby the table
entries (called Y-instructions in the Phase
05 assembler listing) control the
recognition of COBOL source and resulting
generation of phase 05 output.

• decode Y instructions from the YBGN
t;able
[0]

{W}
{ Resmed word}
P [A[B]]. Punctuation
T
Operand term

• place COBOL source and inserted
syntactic markers into a large body of
contiguous storage known as the
BOLDAREA (in order that delayed
recognition of COBOL statements can
occur)

(see Note 3)

• output COBOL source and syntactic
markers in the correct sequence from
the HOLDAREA to SYSUT2

[0] [N] [I] / [

G[n]
M[n]
Cn

* Text-type byte
* Modifying byte
*

(see Note 5)
• Clause name

X * Exit routine name

{ number of items in clause
}
name of first statement beyond

(see Note 4)

If NOLIB is in effect, the input to phase
OS is the COBOL source program. Input can
be read from the card reader or the system
input device. If COPY/BASIS is in effect,
the input is passed from phase 0" on SYSUT4
(source with COPY/BASIS resolved) and on
SYSUT3 (E-text).

The output from phase 05 is written on
SYSUT2. The output consists of the COBOL
source program with syntactic markers
inserted to identify the various elements
of the program. syntactic markers indicate
such items as new statement, reference
type, level number, indentation, and
qualifiers. If phase 05 detects .syntax
errors, the output also includes error and
recovery markers, to indicate that the
errors are to be identified in the Lister
52

Section 2.

Method of Operation

Notes:
1.

Syntax language is written as a
sequence of statements, optionally
named, each of which contains a
sequence of items separated by commas.

2.

Syntax language
define clauses,
These functions
infixed period,
respectively.

3.

Tests may be:

o
W
P
T

items perform tests,
or control generation.
are denoted by an
slash, or asterisk.

optional (brackets)
testing reserved words
punctua tion
generic terms

For example, DATANAME, ALPHALIT. or
"clauses" (nul), such as "identif ier"
(IDFR), and test may specify A margin
(A), B margin (B), or both (AB).

Licensed Material - Property of IBM

4.

Clause definition corresponds to the
COBOL use of brackets, braces, and
elipses:

a
N
1

is optional (brackets)
may be repeated (elipses)
select only one (braces)

Information after the slash specifies
end-of-clausei if omitted, the end of
the current statement is assumed.
5.

6.

ERROR COUDITIONS
Phase 05 terminates upon detecting a syntax
error that it detects in the COBOL source
program. When such an error is detected,
phase 05 issues an error flag to signal
phase 08 that the following source cards
are to be passed on without processing.
Phase 05 then treats the balance of the
program as comment cards.

Generation (of IPTEXT) is implied by
successful tests, and is explicitly
ordered by G, the type-byte implies
the length. M modifies one byte of
already generated text. C changes an
index to the current point of
generation for possible subsequent use
by M or C commands. X causes
execution of an exit routine.

In addition to the condition mentioned
above, unusual termination of phase 05 can
occur if the source program contains:

Items in general return results in
quaternary logic.
"True" means a
positive identification, "falsellmeans
a clear failure, "maybe" results from
generation or from a failed optional
test, and "disa~terll results from a
IItrue!! test followed by a IIfalse ll
within a clause where all items must
be found.

If one of the above two conditions (of
phase 05) occurs, the file written on
SYSUT2 is incomplete.

• Too many (approximately 80 or more)
consecutive *-comments cards.
• Too many (approximately 100 or more)
consecutive blank cards.

Phase 05

53

Licensed Material - Property of IBM

Phase 06 (IKFCBL06), the Lister sort phase,
inserts cross-reference information into
the source program. Phase 06 makes two or
more passes of the file created by phase
05. Based on the syntactic markers
contained in the file, this phase inserts
pointers into the source program as
follows:
• At the place of definition of a name,
pointers to the places where references
to that name occur •

The input for the first pass of phase 06 is
the file written on SYSUT2 by phase 05.
Input for subsequent passes of phase 06 is
the output of the previous pass. That is,
input is read alternately from SYSUT2 and
SYSUT3 (beginning with SYSUT2) •

• At the places of reference, pointers to
the place of definition.
During each pass of the file, phase 06
resolves references and merges them into
the source program; the number of passes
depends on the amount of storage available
and the number of cross-references to be
processed. A partial dictionary of all
definitions is used by all passes. The
dictionary is continually updated by adding
new definitions as space becomes available
and deleting definitions that have been
completely processed and are no longer
needed.

Sq

Section 2.

Method of operation

The output of phase 06 is written
alternately on SYSUT3 and SYSUT2~ Output
of the first pass of phase 06 is always
written onSYSUT3 and output of the last
pass is always written on SYSUT2. The
output file consists of the source program
with cross-reference information embedded
in it; the contents of the file are printed
by phase 08.

Licensed Material - Property of IBM

The functions of phase 08 (IKFCBL08)
follous:
e

are as

Print the first page (preface) of the
Lister listing

• print the body of the Lister listing
• Depending on the options specified
Punch the reformatted source program
deck on SYSPUNCH
Pass the reformatted source program,
via SYSUT4 to phase 10 for
compilation

• An internal card-image COBOL source
program
• A reformatted source deck.
The Lister option preface and listing
are printed on SYSPRINT. The internal
card-image source program, which may serve
as input for subsequent compilation, is
produced on SYSUT4 if the LSTCOMP option is
in effect.
The reformatted source deck is
produced on SYSPUNCH if the Lister FDECK
option is in effect.

Hrite COPY/BASIS-related E-text on
SYSUT3

For the preface, phase 08 uses no input.
For the remainder of the listing, phase
08 reads input from SYSUT2. Input consists
of the source program uith embedded
cross-reference information from phase 06.

From the source program with embedded
cross-reference information, phase 08
builds an entire page in storage. The
phase reformats the source program and
creates footnotes as required.
When the
optimum place for a new page is reached,
phase 08 prints the created page on
SYSPRINT and then deletes the page from
storage. The process is repeated until all
data from SYSUT2 has been processed.
To
produce the summary listing, phase 08
positions SYSUT2 at the beginning and reads
it again.

ERROR CONDITIONS
The output of phase 08 consists of:
o

The preface uhich describes
The format of the listing
The use of statement numbers
The classification of references
The use of footnotes in the listing

It is possible that some footnotes on some
COBOL programs may be lost. If a
particular COBOL program requires a very
large number of footnotes, there may not be
enough storage space to contain the
complete footnote table.
In those cases,
some of the footnotes that could be printed
in the Procedure Division of the Lister
vill be handled as ordinary data
references, rather than as footnotes.

The method of indentation
The reformatted declt that can be
obtained
The summary listing
o

The Lister option listing

Upon encountering the error flag q phase
08 issues a message informing the user that
Lister processing has terminated because of
a source syntax error. The balance of the
program is then printed (and passed on
SYSUT4 r if LSTCOMP) without reformatting or
cross-referencing) •

Phase Otl

55

Licensed Material - Property of IBM

Phase 10 (I~FCBL10) reads the source
statements in the Identification,
Environment. and Data Divisions. As it
reads the card images of the source
program, it performs the following major
functions:
1.

storing information from the
Environment and Data Divisions in the
form of Data IC-text and as entries of
tables supplementing the text (see
"Section 5. Data Areas" for formats) •

There are three routines in phase 10 that
are used extensively by more than one of
the division processing routines. These
are the GETDLM, GETWD, and GETCRD routines.

GETDLM ROUTINE
The major functions of the GETDLM routine
are:

2.

3.

Sorting all other significant
information in other tables and in
cells of the COMMON communications
area (see "section 5. Data Areas" for
forma t) •
Analyzing the syntax of source
statements.

4.

Writing each statement on SYSPRINT as
part of the source program listing, if
the user specified the SOURCE option.

5.

Checking for the CBL card, if the user
specified the BATCH option. When the
CBL card is found, phase 10 sets on
the hexadecimal '08' (CARDHELD) and
hexadecimal '40' (END FOUND) values in
the BATCHSW switch in COMMON and
stores the address of the CBL card in
COMMON location ADDRCARD.

These functions are performed under the
control of three major working routines and
three division-processing routines. Among
the working routines, GETDLM supervises the
division processors and GETWD and GETCRD
supply them with input. Among the division
processors, IDDSCN processes the
Identification Division, ENVSCN the
Environment Division, and DDSCN the Data
Division.
syntax analysis, although not
specifically described here, is performed
as part of division processing. It
includes such functions as checking for
division headers and the proper position of
words and clauses. If user errors are
detected, the division processors call
routines of the generic name MSGxxx (where
xxx is the message number) to generate
E-text.
56

Section 2.

Method of operation

• Searching for delimiters (division
headers, level numbers, etc.) and
passing control to the proper division
routines.
• Recognizing literals that are level
numbers and encoding them as such.
• causing termination of phase 10 when it
recognizes the Report Section, the
Procedure Division header, or
end-of-file on the input device.

GETWD ROUTINE
The major functions of the GETWD routine
are:
• Getting a logical unit from the input
card provided by the GETCRD routine.
identifying and encoding it, and
sending it to the calling routines for
processing. A logical unit is defined
as all the characters between one blank
and the next.
• If the NUM compiler option is not in
effect, generating a card number for
each input card, starting with 1 and
(except for Report writer statements)
incrementing by 1. If the NUM compiler
option is in effect, the user-specified
card number is converted to binary. In
either case, the current card number is
kept in a three-byte cell labeled
CURGCN and in the COMMON cell CURCRD.
If the STATE, TEST, or SYMDMP option
and the NUM option are in effect, a
warning (if) level messa'ge is issued if
card numbers are found to be out of
sequence. Beginning with the first
out-oi-sequence card number, phase 10
resequences the card numbers,

Licensed Material - property of IBM

incrementing by one, until, and unless,
the source card numbers fall within the
ascending sequence again.
o

Ensuring that the next logical unit is
valid for the division being processed.

Each logical unit is analyzed and encoded
into internal phase 10 code which tells the
processing routine what type of item it is
(COBOL word, qualified EBCDIC name, etc.).

GETCRD ROUTINE
The GETCRD routine gets the next card image
according to the user's options and writes
a line on SYSPRINT if the SOURCE option was
requested. If the LIB or LSTCOMP option is
in effect, the source program is read from
SYSUT4.
The GETWD and GETCRD routines are also
used by phases 1B and 12.

then branches to the routines that process
them. These routines produce the file
definition portion of Data IC-text (see in
"Section 5. Data Areas"), which will be
combined with the data definition portion
later in phase 10.

CONFIGURATION SECTION
The OBJECT-COMPUTER paragraph, including
the SEGMENT-LIMIT clause, and the
SPECIAL-NAMES paragraph are processed.
.§QURCE~OMm!Y!L~!!'!:a9.raI?!!.:

If the WITH
DEBUGGING MODE clause is specified, the
V2BUGON switch in COMMON will be set on.

~JECT-COMm!!!!L~llg!:!!.I?!!.:
If the
computer-name specified is IBM-370
(-model-number], the S370IN switch in the
PH1BYTE cell in COMMON is set to 1.

If PROGRAM COLLATING SEQUENCE, save the
name to be checked for during SPECIAL-NAMES
processing.
The Identification Division scan routine
(IDDSCN) is entered immediately after the
phase 10 initialization routines. The
input is scanned for an Identification
Division header. When it is encountered,
the cell for the next logical unit is
filled by .the GETWD routine and checked to
determine whether it is PROGRAM-ID. If it
is, the program-name is saved in the PROGID
ce.ll of COMMON (see "section 5. Data
Areas") to be used later either as the
CSECT name of the object module or to form
the names of segments in a segmented
program.
After the PROGRAM-ID (if any) has been
saved and if the SOURCE option was
specified, the Identification Division is
written on SYSPRINT. If DATE-COMPILED is
included, the information that follows it
is deleted, and the current date is
inserted from COMMON.
ihen another division header is
encountered by routine GETDLM, control
passes to the proper division scan routine.

When the Environment Division header is
encountered, the Environment Division scan
routine (ENVSCN) searches for the
Configuration and Input-Output sections and

SEGMEN!=Lln!!-.£lause: When the priority
number specified is less than 50, this
number is stored in the SEGLMT cell of
COMMON. If no SEGMENT-LIMIT clause is
specified, or if the value exceeds 49,
SEGLMT is set to 49.
The SPNSCN
routine processes the SPECIAL-NAMES
paragraph.

SPECIAk!i!MEL~!!.!:!!.~!!.I?!!.:

£yiRE!£X~~!_£lau2~:

The literal
specified is checked for validity (based on
the setting of LANGLVL) and then stored in
the CURSGN cell of COMMON. Thereafter,
whenever phase 20 scans the PICTURE clause,
it recognizes the literal as the currency
sign.
A code is entered in
the COMMAD cell of COMMON. Thereafter,
when phases 10, 12, and 1B scan numeric and
floating-point literals, commas instead of
periods are rec'ognized as decimal points.

DEg.H!L-POIN!_£la.!!2~:

.2I~::!lSl!!!~I2-11~!!!Q.!!ic::!l!!.!!!~:

An entry is
made in the SPNTBL table for each
mnemonic-name, and in the ALPHTRL for each
alphabet-na!De. These table entries are
used by phase 1B in processing the
Procedure Division. When phase 1B scans
ACCEPT, DISPLAY, or WRITE statements, it
replaces any mnemonic-names with the proper
system-name by checking the SPNTBL table.
When it processes any SORT or MERGE verb
with COLLATING SEQUENCE specified, it
checks the ALPHTBL for a valid name.
Phase 10

57

Licensed Material - Property of IBM

INPUT-OUTPUT SECTION
The routines that process the Input-Output
section build and use the ENVTBL and QNMTBL
tables. The QNMTBL is a table of
variable-length names, with pointers to
each of its entries in the appropriate
fields of the ENVTBL entries. These tables
are released later in phase 10. Formats of
these tables are given in "Section 5. Data
Areas. "

chain bit is turned on in the INDTBL entry.
contro': is returned to SAENT after FRSTAI.T
is reset.

When the ENVSCN routine encounters the
I-O-CONTROL paragraph header. it calls the
pertinent routines for processing the SAME,
RERUN, and APPLY clauses.
gliE Claus~: F'or each clause encountered,
the files named are entered into one of the
following tables:

The SELSCN routine processes the SELECT
clauses and produces partial Data Ie-text
(see "Section 5. Data Areas") from the
information obtained. At the end of
Environment Division processing. the text
is in the form of ENVTBL entries, one for
each SELECT clause in the source program,
and contains only file information.
subsequent Data Division processing uses
the ENVTBL entries for the completion of
Data IC-text (see "File section" in this
chapter). The text itself is translated
into Data A-text in phase 21 and is further
processed in phase 6 or 64.
For each SELECT clause, the file-name
and other pertinent information are entered
in the ENVTBL table. Variable-length names
are entered in QNMTBL; pointers to the
IH1HBTL entries are placed in the
appropriate ENVTBL fields.
For FILE STATUS clause processing,
passes control to the file status
routine to enter the FILE STATUS dataname
into the QNMTBL and to set a pointer to
QNMTBL in the corresponding ENVTBL table
field. A corresponding bit is also turned
on in the ENVT13L to indicate that a FILE
5'1' ATUS claus e has been specified.
.'):~;tSCil'

For PASSWORD clause processing~ SELSCN
passes control to the password routine to
enter the password into the QNMTBL and to
set a pointer to QNMTBL in the
corresponding ENVTBL table field. A
corres~onding frit is also turned on in the
ENVTBL to indicate that a PASSWORD clause
has been specified.
The ALTSCN routine gains control from
SAENT whenever ALTERNATE is found in a
SELECT statement. ALTSCN first tests the
FRSTALT bit switch, checking for ALTERNATE
RECORD KEY under current SELECT. For all
ALTRR~ATE RECORD KEY clauses r CHKSAR enters
the data-name in QNMTBL. If the DUPLICATES
option is present, a bit is turned on in
INDTBL for that key. When another
ALTERNATE clause is found in NXTCOD, a
58

Section 2.

Method of Operation

Clause
SAME AREA
SAliE RECORD/AREA

Tal2.!.~

SATBL
SRATBL

At the end of Environment Division
processing ~ a unique number is assigned, to
each clause of each type (by means of
incrementing counters). For example, the
first SAME AREA clause is assigned the
number 1, the second SAME AREA clause is
assigned 2, and so forth. Similarly. the
first SAME RECORD AREA clause is assigned
1, the next clause 2. and so forth.
The ENVTBL table is then searched for
all the files named in SAME clauses q and
appropriate numbers are inserted into these
ENVTBL entries to identify the SAnE clauses
in shieh the files are named. For example,
if three SAME HECORD AREA clauses were
specified~ each file named in the first
clause would ha'i1e '81" in the SIUiE RECORD
AREA field of its ENVTBL entry: each file
named in the second SAHE RECORD AREA clause
lIould have "2" in that field. and so forth.
The appropriate sldtches are also set in
the ENVTBL entries. At this time, the
SATBL and SRATBL tables are released and
may be overlaid by new tables.

l~mg~l:
An entry for the file named
is made in the CKPTBL table and a bit is
set in the entry to indicate whether the
"END OF REEL/UNIT" or the "integer-l
RECORDS" option was specified in the RERUN
clause. Both options can be .applied to one
file, and, in this case, two entries are
made in the CKPTBL table. In the ENVTBL
entry for the file, the CKPTBL bit is set
to 1 and a pointer to the.first of tllO
possible entries in the CKPTBL table is
inserted. A pointer to the second entry,
if specified, is entered in the first entry
in the CKPTBL table. Later when the FD
statement for this file is scanned, the
CKPTBL bit is tested. If it is land if
the "integer-1~ECORDS" option was
specified in the RERUN clause, the RERUN

Licensed Material - Property of IBM

bit in the PIOTBL table entry for the file
is set to 1. Phase lB uses this bit in
processing READ and WRITE statements.
EQtmat 2 (SO!IT::REIDB!l: An entry is made
in the CKPTBL table, vith the INTEGER field
set to O. The RERUNN switch in COMMON is
set.

!fRbY

clay~:
For each option, a switch is
set in the ENVTBL entry for the file-name
specified in the clause.

option
1

2
3
4

§ilich 2ll

URITE-ONLY
CORE-INDEX
RECORD-OVE RFLOW
REORG-CRITERIA

Note that the data-name is entered in
the QNHTBL table, and a pointer to the
QNMTBL entry is placed in the ENVTBL entry
for this file.
MULTIPLE FILE TAPE Clause:
treated as comments.-----

clause is

When the Data Division header is
encountered, the GETDLH routine calls the
DDSCN routine, uhich in turn calls the
routines that process the File,
aorking-storage, Linkage, and Communication
sections. If a Report section is
encountered, phase 00 is called to load
phase 12, which processes the Report
Section.
As the Data Division source statements
are encountered, the following step.s are
taken to form Data IC-text:
1.

File and record information is entered
into a work area called ICTEXT.

2.

Entries are made in the OD2TBL,
TOTTBL, QNMTBL. FNTBL, and RCDTBL
tables.

3.

Information in the work area is merged
with the corresponding ENVTBL entry
(for file descriptions).

4.

Data IC-text forFDs, LDs, SDs, and
CDs is generated and written on
SYSUT3. At this time, space is
reserved in the PIOTBL table.

completed Data IC-text is used in phases
22 and 21 to make dictionary entries for
data-names and file-names and to generate
Da ta A-text.

Data Division processing llses the ENVTBL
table and builds the FNTBL, OD2TBL, PIOTBL,
QNMTBL, RCDTBL, and TOTTBL tables. All of
these tables (see "Section 5. Data Areas"
for formats) except the ENVTBL table are
passed to phase lB. The PIOTBL table is
also used by phase 21, the OD2TBL table by
phases 22 and 25, and the TOTTBL table by
phase 22. The PIOTBL table indicates which
OPEN options and input/output verbs are
used for each file; and the OD2TBL table is
used to generate Q-routines (object module
subroutines used to calculate variable
lengths and locations for
OCCURS ••• DEPENDING ON fields).

FILE SECTION
When the File Section header is
encountered, the DDSCN routine calls the
appropriate routines to process FDs, SDs.
and LDs in the source program.

Each File Description (FD) entry is
analyzed, and information from the clauses
is entered in the work area ICTEXT.
(The
REPORT clause requires special processing;
it is described in the chapter "Phase 12. 11 )
A blank PIOTBL entry is created, and
pointers to this entry are placed in the
FNTBL and ENVTBL tables. The file-name
from the FD is entered in the FNTBL table
entry and the LABEL RECORDS switches are
set. The ACCESS RANDOM and mass-storage
switches are picked up from the ENVTBL
entry. Variable-length names such as LABEL
RECORD names are entered in the QNMTBL, and
pointers to these entries are placed in the
work area.
When this processing has been completed,
the ENVTBL entry and the file description
information from the work area are merged
into Data IC-text elements. Names from the
QNMTBL table are located (from their ENVTBL
pointers) and inserted where needed. Each
completed Data IC-text element is written
out. When File section processing has been
completed, the QNMTBL table is released.

Each Sort Description (SD) entry is placed
in a work area and is used to generate an
SD entry in Data IC-text.
Phase 10

59

Licensed Material - Property of IBM

Then the LD-text is written out.
When a level number is encountered
signaling a record description entry, the
entry is analyzed and information from the
clauses is put into a work area. If the
OCCU RS ••• DEP ENDING ON clause is included,
the object of the clause and its qualifiers
are entered in the OD2TBL (no duplicate
entries are made). A pointer to the entry
is inserted later into the Data IC-text for
the record description. (Each level number
results in a Data Ie-text element in
LD-text format; see "Internal Text
Formats. ")
For level-01 items, an RCDTBL entry is
made, consisting of a pointer to the most
recent file-name entry in the FNTBL,
followed by the record-name. This results
in the arrangement of pointers shown in
Figure 6. The relationships are used by
phase 1B when processing WRITE and REWRITE
statements to relate records to their
associated files.

-------------------------,,<----,
,
I

,
,

, ,

I

, ,
,

,

I

,

~----------------------~

I

FNTBL

r----->r-----------------------------,

I
I
I

I Pointer to PIOTBL
r---~
I
I
lI File-name
~------------------------~

RCDTBL
r
L -_ _ _.....

Pointer to FNTBL

lI
I
L
- - -________________________
I -Record-name

Figure

60

6.

~

Table Usage During Record
Description Processing

Section 2.

Method of operation

The record descriptions in the
working-Storage and Linkage sections are
processed in much the same way as those in
the File section. However, since they are
not associated with files, no RCDTBL
entries are made.

COMMUNICATION SECTION

'PIOTBL
r

WORKING-STORAGE AND LINKAGE SECTIONS

When the Communication Section header is
encountered, the DDSCR routine calls the
CDSCRA routine to process the CDs in the
source program. Each Communication
Description (CD) entry is analyzed and Data
IC-text elements are created. Record
descriptions in the communication section
are processed in much the same way as those
in the File section. However, since they
are not associated with files, no RCDTBL
entries are made.

Licensed Material - Property of IBM

Phase 12 (IKFCBL12) is loaded after phase
10 processing only if the source program
contains a Report section. Phase 12 reads
the source statements of the Report section
of the Data Division, producing one
complete Report writer Subprogram (RWS) for
each RD that it encounters. As it does so,
it also:
o

Scans its input for errors and
generates any necessary E-text.

o

Generates a listing of the Report
Section on SYSPRINT if the SOURCE and
NOLIB options are in effect .or on
SYSUT6 if LVL is in effect.

o

Records information for later phases in
TAMER tables and in COMMON cells.

Phase 12 reads its input from SYSIN or
from SYSUT4 if LIB or LSTCOHP is in effect.
It writes its output, the RWS, in the form
of Data IC-text on SYSUT3 and in PO-text on
SYSUT2. Any E-text produced is a~so
written on SYSUT2, intermingled with the
PO-text. The input and output are
summarized in Figure 7. The RiS is
described, in "Appendix C. Report writer
subprogram."
If the VERB option is in effect, Listing
A-text is generated and passed to phase 60
or 64 so that the object program listing
can include verb-names and procedure names.
Each text element is simply a word in
EBCDIC format preceded by a code and a
count. For every Listing A-text element
written, a card number element is written
in PO-text. This card number (passed on
through the changing text forms) indicates
to phase 60 or 64 when to read a Listing
A-text element.

QgjB~IONS

IN OTHER PHASES

In addition to normal processing of the
Data IC- and PO-texts, other phases perform
related operations in response to elements
of the source program or of the RiS. These
elements include the REPORT clause, the
Report section header, USE sentences, the
Procedure Division verbs INITIATE,
GENERATE, and TERMINATE, control-field
save-area names, and REDEFINES clauses.

REPORT CLAUSE
When a REPORT clause in an FD statement is
encountered, routine TBLRPT of phase 10
primes the RflRTBL table (first REPORT
clause only), sets a flag bit in the P1BTBL
table (first REPORT clause only). and
enters the report name into the RWRTBL
table (each REPORT clause encountered) •
Phase 12 later checks the flag bit and, if
it is not set, returns control to phase 00
without producing an RWS.

REPORT SECTION HEADER
upon encountering the Report section
Header. phase 10 sets the RPTWTR bit in the
SWITCH cell in COMMON. Roiltine"INT10 of
phase 00 later checks the bit and calls
phase 12 when it is set.

USE SENTENCES
Upon encountering a USE sentence in the
Declaratives Section of the Procedure
Division, phase 1B:
• Generates REPORT-ORIGIN, a special
Report flriter verb, to cause the
address counter to be set to the first
instruction in the RWS group routine
resulting from the report group
specified in the USE sentence.
Q

Inserts, at that point in the RHS
routine, a link to the USE routine.

• Generates another Report writer special
verb, REPORT-REORIGIN, to reset the
address counter.
Note: "Report writer verbs are discussed
Under "Elements of a Report Writer
subprogram" in "Appendix C. Report writer
subprogram. II

PROCEDURE DIVISION VERBS
upon encountering an INITIATE, GENERATE, or
TERMINATE verb, phase 1B generates PO-text,
and phase 51 later generates linkage
between the main program and appropriate
Phase 12

61

Licensed Material - property of IBM

routines in the RWS. The INITIATE verb
results in a link to the INT-ROUT rOlltine,
TERMINATE to the LST-ROUT routine, GENERATE
report-name to the 1ST-ROUT routine, and
GENERATE detail-name to the DET-ROUT
routine.

CONTROL-FIELD SAVE-AREA NAMES
Upon encountering control-field save-area
names (which are generated by phase 12).
phase 22 generates a dictionary entry
consisting of the "-nnnn" name and the
attributes of the control field which had
been previously defined in the Data
Division. Further discussion of
control-field save-areas is provided under
"Nonstandard Data-names" in "Appendix C:
Report Writer Subprogram."

REDEFINES CLAUSE
Upon encountering Data IC-text for a Report
Writer REDEFINES clause, phase 22 so
processes it that the E-point name data
item generated from the COLUMN clause
points to the relative location in the
print-line work area, RPT.LIN, equal to the
integer specified in the COLUMN clause.
When an item is later to be moved to
RPT.LIN, the location can be determined
from the E-point name. The length is taken
from the PICTURE clause information in the
dictionary attributes for the item.
E-Point and RPT.LIN are discussed under
"Nonstandard Data-names" in "Appendix C.
Report Writer Subprogram."

Generating a complete subprogram is the
task of five routines in phase 12: RDSCAN.
PROC01, PROC02, FLUSH, and GNSPRT. Routine
GETDLM controls the flow of processing for
phase 12. That flow is tailored to the
particular source program, but the
following discussion explains the general
concept.

62

Section 2.

Method of operation

The RDSCAN routine processes the RD
statement and is follol5ed by routine
PROC01, uhich processes the level-Ol
sentence. If that sentence is an
elementary item. routine PROC02 is called
upon to process each elementary-level
clause until the entire sentence has been
processed. At that pointu the FLUSH
routine is called to finish generating the
group routine. If the sentence is the
level-01 statement of a group item. routine
PROCOl processes the sentence. and routine
PROC02 is called to process the elementary
and lower-level group items following.
When that is done. routine FLUSH is called,
does its processing, and the compiler goes
on to the next level-01 level statement.
The PROcOl-FLUSH·or PROC01-PROCD2-FLUSH
loops continue until phase 12 has generated
RWS group routines for all of the level-01
statements defined in the source program.
Routine GMSPRT is then called on to
complete the RiS by filling in the fixed
and parametric routines and any necessary
dummy grOup routines. Phase 12 then checks
to see if the next logical record is an RD
statement, in which case another RiS is
needed and the process begins again with
routine RDSCAM. or if it is the Procedure
Division header. in which case phase 12.
being finished, returns control to phase
00.

ROUTINE RDSCAN
The RDSCAN routine is responsible for
processing the RD entry of the source
program. After first ensuring that an RHS
should be generated (by determining whether
the RHRTBL table is primed). it reads each
logical unit of the RD and processes it.
The routine operates in a loop-type scan.
checking each item to see if it is a
period, CODE clause, CONTROL clause, or
PAGE clause. If it is none of these, it is
treated as an error.
Routine RDSCAN then sets appropriate
switches and enters data into storage areas
and tables. It then gets a new record and
repeats the loop until it encounters a
period. When this happens. control returns
to routine GETDLM. which calls routine
PROCD1.

Licensed Material - Property of IBM

SYSIN (SYSUT4 if LIB or LSTCOMP)
r------------------"
ISource Program
1

I

1 (Report section)

SYSPRINTl (if NO LIB)
r------------------,To
,Source Program
,printer
r--->I
~------->
1
I (Report section)
,

1---.
1

,

'------------------~

,

L

,
,
,

,. ,---------, ---.1 To

~

1
I

I

SYSUT3

,Data IC-text

t-> ,

I
I
I

,

storage (TA MER}
r--ITables passed to
Iphase 12
1
FNTBL
1
PIOTBL
1
P1BTBL
I
QLTABL
1
REPTAB
I
RWRTBL
I
SPNTBL
1
RCDTBL
1

I
I
1
I

,
!
I
I

V

1
I

,

1

I

I
I

I
J

I

I

1

l.-

,

1
1
1

1
1

,
,, ,
,,,
,
,
,,
,

V

,

,,

Storage (TAMER)
r,Tables built by
'phase 12

COMMON

'---

I
I
J

I

1
I

I

,

---->

~'--------.--------~I

SYSUT2
r-----------------.ITo
IPO-text and E-textlphase 1B
~------>

,

,

'---

I
,
,
1

storage (phase 00)
rr-----------------,
,
,
~>I
COMMON
,

,

,

1

I

'---

I

,,,
,

I

1---'

I

I

, ,

1

,

~>I

.....
->,I
,

-----------------~

,

1

I

PHASE
12

I
I

!

storage (phase 00)
r---

,

1---->1
/\
I
I

I
I

I

,
,

'phase 20

1-1

,
storage (TAMER)
'r----,
I
,Tables passed to
,
1later phases
,
1

CTLTBL
DETTBL
GCNTBL
NPTTBL
QALTBL
RNMTBL
ROLTBL
ROUTBL
SMSTBL
SNMTBL
SRCTBL
SUMTBL

I

,

,

1

1

,

,
,
,

~

,
,
,
L___> ,
,
,
,
,

I

1
DETTBL
FNTBL
PIOTBL
P1BTBL
REPTAB
RNMTBL
ROUTBL
RWRTBL
SPNTBL
RCDTBL

,
,
,

I
,
,
I
,
I
,

,

Tables not I
,shown here are re-I
Ileased
by
phase
12,
L -_ _ _ _ _ _
___
______
_J
'~Qi~:

lSYSUT6 is used if the LVL option is in effect.

Figure

7.

Phase 12 Input/Output Flow

Phase 12

63

Licensed Material - Property of IBM

ROUTINE PRoeOl

1.

Generates the WRT-ROUT routine.

Routine PROC01 processes the level-01
record descriptions. Valid input for this
routine includes the period and the NEXT
GROUP, LINE, TYPE, and USAGE clauses. It
operates in a loop-type scan and processes
each clause in much the same way as the
RDSCAN routine does. since an level-01
elementary entry is permissible, other
clauses can also be valid. Before assuming
an error, routine PROC01, therefore,
branches to the PROC02 routine to check for
and process elementary-level clauses. Once
a valid clause is processed in one or
another of these routines, control returns
to the beginning of the loop in routine
PROC01.

2.

Generates a dummy group routine for
any of the following groups not
defined in the source program:
Control Heading Final, Control Footing
Final, Page Footing, Page Heading,
Report Heading, and Report Footing.

3.

Generates the INT-ROUT routine.

4.

Generates, if a PAGE LIlUT clause lias
specified in the source program, an
ALS-ROUT routine and an RLS-ROUT
routine. If no PAGE LIMIT clause Has
specified, the RWS contains neither of
these two routines.

Processing of the TYPE clause marks the
generation of the initial coding for the
group routines. Since the compiler has, at
that point, enough input to begin the group
routine, the first part of that routine is
generated here.

5.

Generates one USM-ROUT routine for
each TYPE IS DETAIL group specified
under the RD statement being
processed.

6.

Generates in order, one each of the
£ollo«ing routines: CTB-ROUT,
RST-ROUT. 1ST-ROUT, LST-ROUT, and
ROL-ROUT.

7.

Generates any needed CTH-ROUT
routines. A CTH-ROUT routine is
needed for any control specified in
the source program after the highest
level (of FINAL) co~trol. If the
source program contains no TYPE IS
CONTROL HEADING report description for
su~h a control, routine GNSPRT
generates a dummy group routine here
to fill the need.

8.

Generates any needed CTF-ROUT
routines. A CTF-ROUT routine is
needed under circumstances like those
for a CTH-ROUT routine.

9.

Generates one SAV-ROUT routine and one
RET-ROUT routine.

ROUTINE PROC02
Routine PROC02 is entered when routine
GETDLM encounters a level-02 through
level-49 entry or, at entry point PR02A,
during PROC01's scan of an level-01
elementary item. Its operation is similar
to that of routines RDSCAN and PROC01,
except that checks are made so that control
returns to routine PROCOl when appropriate.

ROUTINE FLUSH
When routine FLUSH is called. all the
information needed to complete one group
routine is avail~ble in the form of table
entries, contents of data areas in storage,
and switch settings. Routine FLUSH
generates the exit coding for the group
routine, and then returns control to
routine GETDLM.

ROUTINE GNSPRT
Routine GNSPRT is called when the GETDLM
routine encounters a new RD or the
Proc.edure Division header. At this point,
all group routines defined in the source
program have been written on SYSUT2 (in
PO-text), and all data needed to complete
the RiS is in storage. Routine GNSPRT
first writes out the necessary Data IC-text
on SY5UT3 and then, in order:
64

Section 2.

Method of operation

Coincident with producing the RWS, phase 12
scans its input for syntax errors. Checks
are made to ensure that each routine is
both correct in itself and compatible with
the rest of the RiS. If errors are
detected, messages are written in E-text
and recovery is attempted. When necessary,
attempts to produce the particular RiS are
abandoned. The E-text is written
intermingled with PO-text, on SYSUT2.

Licensed Material - Property of IBM

As each record is read from SYSIN. a check
is made to determine if the SOURCE option
is in effect. If so, the source statement
is copied out on SYSPRINT (or SYSUT6 for
LVL option).

phases to use. For example, phase 12
builds the ROUTBL table. uhich contains the
specific GN numbers assigned to certain RWS
routines. Phase 1 B needs this informa tion
to process IUITIATE u TER!HNATE, GENERATE,
and USE BEFORE REPORTING statements.
Such
items are stored in TAMER tables and in
cells in COMMON. For more details on this
subject, see Figure 7 and "section 5. Data
Areas."

During its processing, phase 12 stores
various types of information for later

Phase 12

65

Licensed Material - Property of IBM

Phase 1B (IKFCBL1B) reads the Procedure
Division of the source program. It is
entered, via phase 00, when the GETDLM
routine in phase 10,or 12 encounters the
Procedure Division header. As it reads
each card, image in the Procedure Division,
it performs the following major functions:
• Encoding the Procedure Division into
Procedure IC-text (PO-text format).
• Creating dictionary entries for
procedure-names.
• writing the Procedure Division on.
SYSPRINT (SYSUT6 for LVL option) if the
SOURCE option was specified by the
user.
• Testing the BATCHSWswitch in COMMON
for a he xadecima I '40' (ENDFOUND)
value, if the BATCH option was
specified by the user.' If this value
is on, the last card in the current
compilation has been read in phase 10
and, the switch is set off.' Phase 1B
then returns to phase 00. otherwise,
phase 1B checks for the CBL card, which
is a source delimiter. When a CBL card
is found, phase 1B sets on the
hexadecimal '08' (CARDHELD) value in
the BATCHSW switch in COMMON, stores
the address of the eBL card.in COMMON
location ADDRCARI>~ and returns to phase
00.
Phase 1B routines first process the
out-of-line procedures contained in the
Declaratives Section. (This processing is
described under "Declaratives" below.)
Then the in-line program is processed.
Tables passed from phase 10 and used by
phase1B include the P1BTBL~ PIOTBL, FNTBL,
RCDTBL, SPNTBL, and TOTTBL tables. Tables
passed from phase, 12 for Report writer
operations ~re the RWRTBL, DETTBL, ROUTBL,
and RNMTBL tables. The PNTABL and PNQTBL
tables are built during: phase1B. If the
VBREF or VBSUM.option is in effect, phase
1B will create theVERBDEF Tamer table.
(See "section !:i. Da ta Areas" for formats
of all these tables). Dictionary entries
are made for all source procedure-names.
Procedure IC-text (in PO-text format) is
generated from the procedure statements.
Formats for these texts and the dictionary
are given in "section-,S. Data Ar.eas."
66

Section 2.

Method of Operation

The PDSCN routine controls Procedure
Division processing. The GETCRD and GETWD
routines supply the input in a manner
similar to the description under "Major
Working Routines" in the "Phase 10"
chapter. These and all other routines used
by both phases are indicated by an asterisk
in the subroutine directories for both
phases. Such routines do not remain in
storage from phase 10, but are reloaded
with phase 1B.
A major activity of phase 1B is writing
PO-text. This text is, roughly. the source
program Procedure Division recoded into a
form acceptable to later phases. Logical
units (source program words) are processed,
encoded, and written out one at a time.
Some information, such as card numbers, is
generated for PO-text'. All user-assigned
names are passed unchanged (preceded by
code and count fields) from the source
text. Verbs and other COBOL words are
replaced by unique 2-byte codes. For the
complete text formats. see "section 5.
Da ta Areas."
,If the VERB option is in effect, Listing
A-text is generated and passed to phase 60
or 64 so that the object program listing
can include verb-names and procedure names.
Each text element is simply a word in
EBCDIC format preceded by a code and a
count. For every Listing A-text element
written, a card number element is written
in PO-text. This card number (passed on
through the changing text forms) indicates
to phase 60 or 64 when to read a Listing
A,..text element.

At i'ts point of definition, each
procedure~name (paragraph-name or
section-name) is given a PI number. The
point of definition is that point at which
. the name appears in Area A of the source
program. PI numbers are assigned
sequentially starting witli 1 from cell
PNCTR in COMMON. The procedure-name is
entered in the dictionary, and written in
PO-text.

Licensed Material - Property of IBM

ENTERING PROCEDURE-NAaES IN THE DICTIONARY
The dictionary is a repository for all
information that can be gathered about each
user-assigned name in the source program
and dummy procedure-names for the beginning
and end ofothe Procedure Division and of
the Declaratives section. Such information
about a name comprises its attributes.
After the dictionary has been completed by
ph~se 21, the attributes are sUbstituted
for the name itself in the Procedure
IC-text produced by phase 3. In later
Proced ure IC-toext processing by phases 4,
45, 50, and 51, all information about the
name appears °conveniently in the text
stream, and the space required by the
dictionary can be released.
Dictionary entries for procedure-names
are made, using the DICOT and HASH tables,
by phase lB. A procedure-name may occur in
the source program at its point of
definition, where it is called a left-hand
name. The name may also occur as an
operand in a statement such as "GO TO
procedure-name." A procedure-name used as
anooperand is called a right-hand name.
A dictionary entry is made for each
left-hand name as it occurs in the source
text, and some of its attribute bits are
set at this time. Other attribute
information is not knoun until all
occurrences of the name as a right-hand
name have been read.
(Verbs associated
vith right-hand naomes are discussed under
"Declaratives" and "Procedure-Branching
Verbs" later in this chapter.)
The phase lB routines do not make
entries directly in the dictionary by
themselves. Rather, they calloa special
group of routines called ACCESS routines,
uhich are resident during phase1B in the
area of storage below the phase 1B code.
These routines are designed especially to
build and use the dictionary. They are
also resident during phases 22, 21, 25, and
3, the other phases uhich use the
dictionary. They are described in
"Appendix A: Table and Dictionary
Handling."

USING THE PNTABL AND PNQTBL TABLES
The PNTABL and PNQTBL tables are used to
store certain attributes of procedure":names
before these attributes are entered in the
dictionary. The PNQTBL table contains
entries for certain procedure-names that
are qualified by section";names, while the
PNTABL table contains entries for certain
nonqualified procedure-names.

Entries are made in the PNTABL or the
PNQTBL tables when certain verbs are
encoun teredo (see IIProcedure-Branching
Verbs" and "DEBUG" belou), or when a
declarative section is processed O(see
"Decia ra ti ve sIt be10u). En tries ar e also
made for dummy names. Information may be
added to a table entry if the
procedure-name occurs again before the
dictionary entry is found. A new entry
uill be made for a previously entered
procedure-name only if the old entry has
already been deleted.
The formats of these entries correspond
to the format of dictionary
attributes for procedure-names. Note that
a source statement may refer to a
procedure-name uhich has not yet been
defined and. therefore, is not yet in the
dictionary.
e~act1y

The dictionary is searched at the end of
every source program section. When the
procedure-name in the table matches the
procedure-name in the dictionary,
information from the switches in the table
is recorded in the dictionary attributes
fie1d g and the table entry is deleted. The
dictionary search techniques are different
for the PNTABL and PNQTBL tables.
At the end of the first source program
section. the dictionary is searched for
every procedure-name in the PNTABL. If a
dictionary entry is found, the information
is transferred and the PNTABL entry is
deleted. If no entry yet exists, the
search bit is turned on in the PNTABL
entry. This b!t indicates that the
procedure-name does not appear in the
portion of the dictionary previously
searched. At the end of the next source
program section. another search is
performed for each procedure-name then in
the PNTABL table. Whenever the search bit
is on for a given entry, the search is
restricted to the dictionary entries of the
most recent source program section (see
"LATACP" in "Appendix A. Table and
Dictionary Handling") •
The PNQTBL table contains the source
program section-name qualifiers of the
procedure-names entered. Thus. if the
source program section named in the table
has already been processed, a °corresponding
entry can be foundoin the dictionary by a,
limited search (see "LDELNM" and "LATACP"
in "Appendix A. Table and Dictionary
Phase 1B

67\

, Licensed Material - Property of IBM

Handling"). The table entrY is deleted
after the information has been transferred
to the dictionary entry. If the
section-name has not yet been encountered,
no search is made. Therefore, this table
does not require search bits.

Figure 8 snows in diagram form an
example of the dictionary search. It
explains how the search would proceed for
several hypothetical procedure-names. Note
that the figure does QQ1 represent table
formats.

USE OF DICTIONARY
Dictionary Entry Hade
While Processing Section

i

Pr,ocedure-name
PN2
PN3
PNS

3

PN7

I '
I
I
I
I
I
I
I
I
,I

•

I
--, I
Attribute Information Added
I I
After processing Section
i I
I
2
I I
I I
1
I I
-V i
3
I I

...

---t I
i I .
J
I

3

,

USE OF PNTABL
r-~----------------T'----------------T'-----------------------------------------------'
I
I
I Table Entry Madel
I
I
I While Processing I
I
Section
I Procedure-na,lIIe I '
Action Taken
I
II
I
U
1
I
PN3
Dictionary entry is found on first search.
I
I
Table entry is deleted.
I
Ir--------------r---------------------------------------~,
I
PN7
On the first search, dictionary entry has notl
yet been made, so the search bit is set.
I
I
I
On the second search. only entries for
I
I
section 2 are searched. Since the name is I
I
still not entered in the dictionary, the
I
I
search bit remains on. On the third
!
I
search. only section 3 entries are
I
I
searched. The dictionary entry is found. I
I
and the table entry is deleted.
I

,
I
PNS
I
I
I
L-__________________ I ________________

~

3

~,

~

On the third search. the whole dictionary is i
searched for this name, which is in the
I
table for the first time. The dictionary I
entry is found. and the table entry is
I
_____________________________________________
deleted.
I
~

,USE OF PNQTBL
----------~------------------------------~--------------,

i

I Table Entry Hade
t While Processing

I
I

Qualified
Procedure-name

Section

L-__________________

~

______________

Action'Taken

I

-I
On the second search, the entries for section I

PN2
in
Section 1

2

I
I

~

1 are immediately searched.
The dictionary I
entry is found. and the table entry is
I
deleted.
________________
.__________________ ' I
------------~,

Note: "section" as used in this figure refers only to source program sections.
DICtionary sections are of fixed length and do not correspond to source program
sections.
Figure

68

8.

I

I
I
I
I
i
,I
I
I
I
I
I
I
I
I
I

I
I
I
I
I
I
f
I
I
I
I

,
I
I
I

--------------------------------,~

Entering PNTABL and PNQTBL Information in the Dictionary

Section 2.

I
I
I
I
I
I
I
I

Method of operation

Licensed Material - property of IBM

PRIORITY CHECKING FOR SEGUENTATIOr-r
For each section-name. the segmentation
priority is entered in the dictionary.
If
no priority number Has specified, zero is
entered as the priority.
(In a
nonsegmented programs all sections are
gi~en a zero priority.)
If a priority
nUlilber uas specified, its value is compared
to the value of the SEGLHT cell in COMMON
(set by phase 10; see "SEG£!ENT-LIHIT
Clause" in the "Phase 10" chapter). If the
priority number of the section-name is less
than SEGLHT. it indicates that the section
is part of the root segment. In this case,
the priority number of the section-name is
entered in the dictionary as zero. If the
priority number exceeds SEGL~, it is
entered as specified.
Each time a section-name is found whose
priority exceeds the value of SEGLHT, a
stlitch called SEGSti. whose location is
internal to phase 1B. is turned on. If, at
the end of Procedure Division processing,
this suitch still contains zero, it means
that the program is not segmented, and
SEGLHT is set to helcadecimal IFF'.
If the
suitch is on. SEGLMT is left as it is. The
value of SEGLHT is used by later phases to
determine whether the program is segmented.

ll.ll verbs are encoded and aritten int·o
PO-text.
In addition. the verbs discussed
belou require special handling.
PROCEDURE-BRANCHING VERBS
Procedure-branching verbs use the PNTABL
and PNQTBL tables.
Entries in these tables
are used to set some of the attribute bits
in the dictionary entries for the
procedure-names. The process by which
dictionary entries are made from these
tables is described in this chapter under
"Using the PNTABL and PNQTBL Tables."
GO-!Q:
The left-hand name (the procedurename appearing in Area A, gQ! the object of
the GO TO statement) is entered into the
table.
(ll GO TO statement preceded by a
procedure-name definition may be the object
of an ALTER statement elsewhere in the
program.)
If the DEPENDING ON option is
used, no entry is made.

ill!:!:

The left-hand name is entered.

ALTER:
The procedure-name following the
~ord ALTER and the procedure-name following
the phrase TO PROCEED TO are entered.

PERFORM ••• THRU: The procedure-name
following the THRU is entered.
If the THRU
option is not used, the procedure-name
following PERFORM is entered.
(This entry
directs phase 4 to provide a return of
control at the end of the PERFORM
procedure. )
INPUT/OUTPUT VERBS
suitches are set in the PIOTBL entry for
the file named in the input/output
statement.
These switches indicate to
phase 21 how the file is used. In
additign, the following processing takes
place:
DELETE: The FILSVB subroutine checks that
the-file name specified in the DELETE verb
vas previously specified in a SELECT
statement.
The subroutine turns on the
appropriate bit in the PIOTBL table if the
filename is valid.
QREN: If label- or error-processing
declaratives were written for this file,
GNs (generated procedure-name references)
for the declaratives are encoded in the
PO-text following the file-names in the
OPEN statements. The handling of these
declaratives is described below under
"Declaratives. "
READ: The PIOTBL entry for the file is
checked to de.termine whether the RERUN bit
is on.
If it is, a special verb code is
used. The REDSVB routine also checks for
the word NEXT in the READ verb.
If
present, the routine turns on the
appropriate bit in the PIOTBL table.
WRITE, REWRITE: The record-name is sought
in the RCDTBL table and from its FNTBL
pointer the file-name is found.
~he
file-name is then included in the PO-text
entry (in the form WRITE f~l~~~~
~cord=n~m~).
For a WRITE statement, the
PIOTBL entry for the file is checked to
determine whether the RERUN bit is on.
If
it is, a special verb code is used in the
PO-text. If the ADVANCING mnemonic-name
option of the WRITE statement-rs-llsed,-the
mnemonic-name is sought in the SPNTBL table
and replaced with the proper special-name.
If an INVALID KEY option is used, phase 1B
sets the appropriate PIOTBL bit to 1.
START:
The STTSVB subroutine checks that
the file name specified in the START verb
was previously specified in a SELECT
statement. The subroutine turns on the
appropriate bit in the PIOTBL table if the
filename is valid.
The subroutine also
checks for a KEY of REFERENCE and/or an
INVALID KEY clause. If either or both are
found, the subroutine turns on the
appropriate bites) in the PIOTBL table.
Phase 1B

69

Licensed !aterial - property of IBM

OTHER VERBS

!££l-pt, DISP&!I:

The mnemonic-name used is
sought in the SPNTBL table and replaced by
the proper special-name.
The attribute bits in the
dictionary entry for the specified
paragraph are set, using the PNTABL and
PNQTBL tables as described above.

~Y§:

If GNs were entered in the FNTBL table
during declarative processing, they are
inserted in the PO-text. Otherwise, thework areas for the particular OPEN option
are used for GNs. If an ON INPUT GN for an
error declarative is found in the work
area, the GN. number is inserted in all OPEN
INPUT PO-text entries. The GNs for label
declaratives are determined for files whose
FD statements include a LABEL RECORD IS
data-name clause. OUTPUT and I-O GNs are
handled the same way.

EXHIBIT: A special EXHIBIT data-name is
generated.
READI: The SWTRCE switch in the SWITCH
cell in COBBON is set.
SORTI8ERGE: If the USING or GIVING options
are specified, the appropriate PIOTBL bits
are set in the entries for the files named.
If these files are also specified in labelor error-processing declaratives, a special
code is used for the USING or GIVING
elements in the PO-text.
If the COLLATING SEQUENCE phase is
specified, the ALPHTBL is scanned to ensure
that the phase is valid.
Report Writer Verb~: See the chapter
"Report Writer subprogram."

DECLARATIVES
When a declarative section is encountered,
the section-name (and paragraph-names, if
any) are entered into the dictionary. ('A
PNTABL entry is made for the section name,
with the declarative bit and the
appropriate bit to identify the type of
declarative set. Every paragrap~-na.e in
the section is also entered in this table,
with only the declarative bit set. These
bits are used later to set dictionary
attribute bits.
Each label or error declarative is given
a GN (generated procedure-name) number.
These numbers are assigned sequentially
starting with 1 from the GNCTR cell of
COBBON. If the USE sentence specified
file-name, the GNs are entered in the
appropriate fields of the FNTBL entry for
the file. If the USE sentence specified
INPUT, OUTPUT, EXTEND, or I-O, the GN
number is entered in a work area. If a USE
FOR ERROR declarative statement is
encountered, the appropriate PIOTBL table
bit is set to 1.
These work areas and tables are checked
when OPEN verbs are encountered. For each
file-name specified in an OPEN statement,
the corresponding FNTBL entry is inspected.
70

Section 2.

Bethod of operation

The USESVB routine builds the GVNHTBL
table containing the fully qualified
data-names used in the GIVING option of the
STANDARD ERROR/EXCEPTION PROCEDURE
declarative for VSAM files. The routine
also builds the GVFNTBL table when a VSAB
file has been specified in the ON option o.f.
the declarative.
For a USE FOR DEBUGGING declarative, the
USEGEN label is used for the DEBUG .
processing code, and will be entered only
from DCLSCN at the start of the
declaratives. Following OSEBSG, a branch
will be inserted to label USEGN1. At label
USEGN1 a check is made for FOR followed by
.DEBUGGING; if found, the OSEDBG code is
executed; otherwise- the OSE verb code
(USECON) is restored to CUR COD and a branch
is taken to continue processing at OSEGN1.
The USEDBG verb is generated if a USE
FOR DEBUGGING declarative has at least one
valid operand. USEDBG Checks the V2BUGON
switch. If V2BUGON is not on, USEDBG
ignores all code for this USE sections and
scans to the next section-name, USE verb,
or END DECLARATIVES. If V2BUGON is on,
USEDBG checks for ALL PROCEDURES; if found,
BGALLPRC is tested to see if it has been
specified before. If so, a message is .
produced indicating that the second
occurrence of ALL PROCEDURES is ignored.
If valid, a procedure-name number for the
section-name, prior to USE, is entered in
BGALLPN and its priority number is entered
in BGALLPRI, and a USEDBG verb is
generated. V2BUGDCL is set onto indicate
a valid USE FOR DEBUGGING declarative has
been found. Control is transferred to
USEDCB which checks the BCD-name operand.
USEBCD generates an alphanumeric literal
representing the BCD-name operand. If it
is a qualified-name, it goes to QLTABL to
generate an alphanumeric literal for up to
30 bytes containing the name and its
qualifiers, separated by OF. If it is a·
BCD-name, the contents of CORBCD can be
used. Then the name is generated and
end~of-sentence is checked for; if so, exit
is to VRBENT, if not, return to search, for
more operands. If no operands are found
for the OSE verb, a message is produced and
the USE sentence is discarded.

Licensed Material - property of IBM

Phas.e 20 (IKFCBL20) is the third of f i ve
phases that process the Data Division. It
follows phase 1B, overlaying it in storage.
Phase 20 is called by routine LINKPH1 of
phase 00 and returns control to phase 00
uhen it encounters an end-of-file condition
onSYSOT3. The primary concerns of phase
20 are the VALOE and PICTORE clauses of the
data descripti"ons, which it translates from
Data IC-text into ATF-text.

After completing the partial entry, phase
20 writes it on SYSUTQ (the format of the
entry is called ATF-text) and reads the
next Data IC-text element, continuing until
SYSUT3 has been exhausted.
All Data
IC-text for FDs. SDs, CDs, and keys for
table handling and any E-text encountered
is copied unchanged onto SYSUT4.
Phase 20 also scans its input for syntax
compatability and error conditions,
producing any necessary E-text; it produces
and passes tvo tables, the VALTRO and the
VALGRP, to later phases. The input and
output for this phase are summarized in
Figure 9.

Phase 20 processing is initiated and
controlled by the BEGIN routine. It reads
each Data IC-text element ·and, from each LD
entry, it comp~tes and writes a partial
dictionary entry to be passed to phase 22.

SYSUT3

SYSUTQ

,

Data IC-text
E-text

•I Incomplete

I
I

,
I
I
J

storage (phase 00)

CO~HION

,

,

I

I
I

I
i
I
I
I

>1

.J

I

-.J

I
I

Storage (TAMER)
ITables built by
fphase 20
I
LABTBL table
I
VALGRP table
I
VALTRU table
I

Figure

9.

,

PHASE 20

I
I
./\

I

!
I

I
I

1<
I
I
I

•

,

Data ITo
I A-text
Iphase 22
r--->IData IC-text
'1---->
IATF-text
I
I
IE-text
I
I
.J
I
•
I
I
I
Storage (phase 00)
I
I
r
I
I
I
I
I
I
COMMON
>1
I
I
I
I
I
I
I
I
•
I
I
I
I
Storage (TAMER)
I
I
I
I
I
L - - ) I VALTRU table
IVALGRP table
I
I

I
I
I
.J

L

.J

Phase 20 Input/Output Flow

Phase 20

71

Licensed Material - property of IBM

TRANSLATING LD ENTRIES INTO ATF-TEXT

of the entry and to fill in the variable
information field with a description of the
item. If there was a PICTURE, the USAGE
information, together with the PICTURE,
provides enough information to set the
minor code and variable information fields.

Routine BEGIN first determines whether the
element read is an LD element; that is, one
resulting from a source program record
description entry of level numbers 01
through .49, 66, 77, or 88. If so, BEGIN
stores the current input card number in
COMMON and calls on routine LDTEXT. LDTEXT
copies the element f·rom the input buffer
into a work area, called ATFTXT, reads the
next record (Data IC-text element) into the
buffer, compares the current level number
to the next element's level number to
determine whether it is a group or an
elementary item, and calls the appropriate
roufines to create the ATF-text.

If a RENAMES clause is associated with a
data item, no partial dictionary entry
exists in the ATF-text element, and all
processing is done by phase 22. The BCD
names are passed on unchanged from the Data
IC-text element.

PROCESSING ELEMENTARY ITEMS

For a group item, the LDTEXT routines
produce a portion of an ATF-text element
that is identical to a dictionary entry
except for the addressing parameters and
the length of the group. These are later
filled in by phase 22.

For an elementary item, the LDTEXT routines
described below produce a portion of an
ATF-text element that contains fields
identical to a dictionary entry except for
the addressing parameters. Routine DICTBD
of phase 22 fills these in later.
If there was a PICTURE flag in the Data
IC-text for the elementary item, the LDTEXT
routine calls routine GSPICT to distribute
the PICTURE into work areas. The kind of
character is stored in work area IPT and
the number of occurrences of that character
in IPLT. Subroutines, depending on the
type of the PICTURE, determine the length
of the item and its attributes.. The
attributes are entered in the variable
information field of the ATF-text element.
An indication of how many subscripts are
needed to refer to the item is set in the
text element by subroutine BMBSRN. The
REDEFINES bit is set from the REDEFINES
flag in the Data IC-text, and the object of
the REDEFINES clause is saved for
processing by phase 22. (If the REDEFINES
clause is internal, that is, generated for
the Report Section, and the subject of the
clause isa name plus a displacement, phase
22 adjusts the addressing parameters of the
object of the clause to reflect the
displacement.) The major code, which is
changed only when a new section header is
encountered, is moved from a work area to
an ATF-text field. In addition, the level
numbers are normalized as an aid to phase
3.

Routine BUSAGE utilizes the USAGE
information in the Data IC-text to
determine the size of the elementary item
if there was no PICTURE. It provides
enough information to set the minor code
field in the ATF-text element to the type
72

Section 2.

Method of operation

PROCESSING GROUP ITEMS

The processing is the same as that for
elementary items with two exceptions.
Routine BUSAGE saves the USAGE, in area
GUI, to verify the USAGE of the elementary
items. Routine SRCHTB passes the keys for
table handling, if any, unchanged to phase
22.

PRODUCING

INCO~~TE

DAI!-!=IEXT

Phase 20 generates incomplete Data A-text .
elements for constants defined by VALUE
clauses. Information for constructing this
text comes from the Data IC-text read from
SYSUT3. For LD entries with VALUE clauses,
the value is given in the Data IC-text
element and is entered directly by routine
VALGEN into the incomplete Data A-text
element. Constants defined by VALUE IS
SERIES clauses are discussed under
"Building Tables f or Later Phases" in this
chapter. .For the formats of Data A-text
and Da ta IC-text, see "Section 5. Data
Areas."

PROCESSING FILE SECTION ENTRIES
When it encounters the File Section header-,
the BEGIN routine transfers control to
routine FILEST, which controls the
processing of the section. Routine FILEST
uses the BSUBRN routine to read the Data
Ie-text elements. If the next item read is
a cr~tical program break or if EOF is
enco~tered, routine FILEST returns control
to roUtine BEGIN.

Licensed Material - Property of IBM

they are allowed to be used together. The
following is an example of the checking
that is performed.
When it encounters the Communication
Section header, the BEGIN routine transfers
control to routine COKSCT, which controls
the processing of the section. CD entries
are passed unchanged by routine CDTEXTi LD
entries are processed by routine LDTEXT as
described earlier.

PROCESSING ERRORS

---~-----

As phase 20 processes Data IC-text, the
clauses are checl~ed to determine whether

When routine LDTEXT processes Data
IC-text elements for LD entries, some of
the clauses are processed before a
determination is made of whether the item
is a group or elementary item. Then, when
the LDTEXT routine determines whether the
item is a group or elementary item, it
eliminates any invalid clauses. For
example, if a PICTURE clause is given for a
group item, routine LDTEXT processes it.
Then when it determines the item is a group
item, routine ERRTN issues E-text for the
invalid PICTURE clause.

Phase 20

13

Licensed Material - property of IBM

Phase 22 (IKFCBL22) is the fourth of five
phases that process the Data Division.
Phase 22 follows phase 20, overlaying it in
storage. Its major functions are producing
dictionary entries, completing Data-A teAt,
and generating Q-routines.
Phase 22 processing is initiated and
controlled by the DIRECTOR routine.
A Data
IC-text or ATF-text element is read from
SYSUT4 and distributed to work areas.
Routine DICTBD then completes fields in the
entry and places it in the dictionary.
While building the dictionary entry, phase
22 also checks for syntax compatibility and
error conditions. After phase 22 has
completed the dictionary entry for a given
text element, it picks up the next element
for processing, continuing until SYSUT4 has
been exhausted.
All Data IC-text for FDs
and SDs and any E-text encountered is
copied unchanged onto SYSUT3.
Incomplete index-name entries (prefix
04) are entered into the dictionary by
routine READF4 when they are encountered.
Later, information is filled in by routine
XTEN~ a subroutine of DICTBD.
The input and output for this phase are
summarized in Figure 10.

]Q!#~~ICTIONARY

generated during phase 10 for each input
card in COMMON. It then calls the
appropriate routine for preprocessing of
the data item, and after the preprocessing
is finished, i t calls routine DICTBD to
complete the entries. The routine makes
either complete or dummy dictionary
entries.

DICTIONARY PREPROCESSING
RENAMES Entries: If a RENAMES clause is
ass~ated~h a data item, routine RERAMS
goes to the dictionary and locates the data
item or items being renamed. The routine
picks up the attributes and addressing
parameters for the dictionary entry or
entries and assigns them to the RENAMES
item. The routine then places the
completed entry for the RENAMES item into
the dictionary. The entire dictionary
entry for a RENAMES item is formulated by
the RENABS routine.
~Eniri~:

Before the dictionary build
routine is called to complete the
dictionary entry for an elementary item,
routine LDTXT obtains a dictionary pointer
for the item by calling an ACCESS routine,
GETPTR.
(ACCESS routines are
dictionary-handling routines.)

ENTRIES
A delimiter pointer is needed for group
items •

.The dictionary is used to store information
about procedure-names and data operands and
is the product of phases 1B, 21, and 22.
Phase 22 stores the current card number.

74

Section 2.

Method of Operation

Level-88 entries are put into the
dictionary directly by the input routine
READF4.

Licensed Material -

INPUT
SYSUT4-

OUTPUT
SY5UT3-

,

i

IATF-text
IData A-text
(incomplete)
I
IData IC-text
IE-text
'---

Property of IBM

,

r
IData A-text
IData IC-text
r-->IDEF-TEXT
IE-text
I
t
I
i
I
I

I
I
I
I

t,

ITo
Iphase 21
>
I
I

•
.J

t
I
SYSUT2

I
I

r

I

I

l-->I
I

,To
Iphase 3
~

Q-routines

I

storage
(in phase 00)
r-I
I
COl1HON
I
I
I
i

I
t
l--

t

A

1

I
I
I
I

.J

,

,
I
I
1

I
I

I
I
>1
I
I

I

I

1
I
PHASE

22

I-

I
L

I

I
I

I
I
I

,

Storage

I

(TAMER)

I
I

I

I
I
1
I
I
I
I
1
1

1----'
1
1
1
I
I

,
,,,
,

I
I

t
1
1
1
.J

I
1

I
r

Storage

(TAMER)

r

,

I Tables:
DICOT
I
FDTAB
1
HASH
1
1
INDKEY
I
t
MASTODO
'--->1
oceTBL
I
QFILE
1
QVAR
1
RENAMTB
I
VALTRU
I
VARLTBL
I

by

1
1

,

L

Dictionary

l-->
1
I
1
1
I

V
storage (TAMER)
I Tables b uil t
I phase 22
I
GPLSTK
QITBL
I
QRTN
1
RDFSTK
1
RNMTBL
I
SRCHKY
t
1
1
I

,

,,

I
I

I

.J

Figure 10.

COMMON

1\

I
Storage (TAMER)
r-ITables passed to
,phase 22
1
DICOT
1
HASH
1
OD2TBL
I
VALTRU
1
VALGRP
1
UPSTBL

i

I

I

I
>1
1

.J

Storage
(in phase 00)

.---

I

>

I

-'

L

Phase 22 Input/Output Flow

Phase 22

75

Licensed Material - Property of IBM

£:!LD.icti.Q!lY.L~ntrie§:

,A skeleton
dictionary entry is created by routine
FSTXT. This entry contains only the file
name; the attributes are filled in by phase
21. The length of the VSAM FD dictionary
attributes is determined by phase 22 when
making the skeleton entry. This is true
for all other access methods. Routine
FSTXT writes the Data IC-text for the FD on
SYSUT3. Phase 22 determines if there is an
ISAM file which has'no RESERVE NO clause
and is opened INPUT or I-O.
Since Phase 21 processes the Data
IC-text for FDs, routine FSTXT passes this
text to SYSUT3 (the same file on which
phase 22 writes Data A-text) except for
user label record information.

and SD entry. Then the displacement of
each item in these areas from the beginning
of the area is calculated. If the items in
the area occupy more than 4,096 bytes, a
second base locator number is assiqned to
the second 4,096 bytes, etc.
(In this
case, CD and RD entries are considered to
be an extension of the Working-Storage
section and the same base locators are
used.)
There ar~ three types of base locators
(BL, BLL, and SBL) depending on the type of
data area. Base locator numbers are
assigned sequentially from counters in the
COMMON area.
BL

£2.!!D.ter
BLCTR

Use
BL numbers are assigned to
the Working-storage
section, the Communication
Section, the Report
Section, and to each FD,
CD, and RD entry.

BLL

BLLCTR

BLL numbers are assigned to
the Linkage Section, the
DEBUG-ITEM special
register, if specified,
label records, and to each
SD entry.

~BL

SBLCTR

See "Q-routine Generation"
in this chapter.

n~

A dictionary pointer is obtained and
processing of the entry is completed by
routine DICTBD and its subroutine FSTOOO.
A skeleton dictionary entry is also
created for any LINAGE-COUNTERs specified
for an FD.
£~

Dictionary-Entrie§: Routine CDTEXT does
the processing for the CD dictionary entry;
it creates a dummy level-01 entry and dummy
level-02 entries for each CD-name from
predefined attributes. Routine DICTBD
enters these in the dictionary.

~~i~B~ DictionarI-En~i~§:

Routine
RDTXT does most of the processing for the
RD dictionary entry. At the end of this
processing, the entry is complete and
entered in the dictionary by routine
DICTBD.
~D.~iction~Y-j~i~§:

SD entries are
handled like FD entries. Routine SDTXT
performs this processing.

£2mEleiing Workinq-Storaqe_section Enirige:
The Working-storage Section contains only
LD entries. Routine DICTBD completes the
LD dictionary entries by filling in the
addressing parameter field for group and
elementary items and by determining the
length and the delimiter pointer for group
items.

The dictionary build routine, DICTBD,
completes these dictionary entries which
were begun in phase 20 by filling in
addressing information. Each data item is
addressed by a base locator number and a
displacement.

Routine DICTBD assigns a base locator
number to the beginning of the
Working-Storage section. The type of the
base locator number is BL, and the base
locator number is the ,next available number
from field BLCTR in COMMON. The d part of
the addressing parameter is obtained from
the LOCCTR counter in COMMON. Each time a
data item is processed; ,the counter is
incremented by the number of bytes the
element will occupy at object time.

The addressing parameter field has three
parts, called i, d, and k, where i
specifies the type of base locator (BL,
BLL, or SBL), d specifies the displacement
of the item from the beginning of the area
controlled by the base locator, and k
specifies the base locator number.

Routine DICTBD uses the GPLSTK table to
keep track of the length of group items.
It enters the length arid the delimiter
pointer (the dictionary'p6J:nte'r of the .
group delim:i ter) in the .dictionary entry
for the group. It also deletes the GPLSTK
table entry for the ,group.

Abase locator number is assigned to the
beginning of each major data area, such as
the Working-storage Section, and to each FD

!2~:

COMPLETING DICTIONARY ENTRIES

76

Section 2.

Method of operation

The lengths of leve1-77 items are
not added to the GPLSTK table since they
are independent items.,
'

Licensed Material - property of IBM

If an item contains a REDEFINES clause,
routine DICTBD calls routines REDEF and
RDSYN to process the item using tables
RDF'STK and RNMTBL.
The REDEF routine makes
an entry in the RDFSTK table, giving the
length of the REDEFINES object and the
level number and current addressing
parameters of the REDEFINES subject. Then
the REDEF routine assigns the addressing
parameters of the REDEFINES object to the
REDEFINES subject.
An entry is also made
in the RNHTBL table, giving the level
number o dictionary pointer, and length of
the object of the REDEFINES.
Hhen an item is encountered with a level
number less than or equal to the last level
number in the RDFSTK table, it is assigned
the addressing parameters from the entry.
The length of the REDEFINES object is
saved in the RDFSTK table to see whether
the length of the REDEFINES subject is less
than or equal to it. If the REDEFINES
subject is a group item, its length is
determined by the GPLSTK table.
If it is
an elementary item, ,routine RDSYN
determines its length.
(Routine RDSYN also
checks the name of the REDEFINES object
against the entries in the RNMTBL table to
see uhether or not it is valid.)
Table RNMTBL is also used if there are a
series of items with REDEFINES clauses. It
saves the names so that an item can
redefine an item that does not immediately
precede it in the series.
£Q.!!l.E.letiug1ile~io!LEnllie2:

Routine
DICTBD uses its subroutine FSTOOO to
complete dictionary entries for FDs.
Subroutine FSTOOO performs two major
functions:
o

It resolves the previous FD, if any.

o

It completes the processing of the
current FD, if any.

Routine DICTBD processes SD entries in
the same way it processes FD entries,
except that the type of base locator number
assigned is BLL. These are obtained from
field 13LLCTR in CmIMOlf. and the first BLL
number used is 3. .
£Q!!l.Eleting Linkage section Entries:
Linkage Section entries are processed the
same as Working-storage section entries,
except that the type of base locator number
assigned is BLL. Fora label record item,
the first BLL is assigned. For other items
in the Linkage section, BLL numbers are
assigned starting with the first BLL number
not used for an SD entry. All level-77
items and all group items starting with
level-01 in the Linkage Section are
assigned unique BLL numbers.

£Q~Ele!ing_£Q~~~i££1iO!L~g£iiQ.!L~ntri~§:

Routine CDTEXT calls routine DICTBD to
process the dummy CD entries that CDTEXT
has created. Location counter values are
saved so that every level-01 entry under a
CD starts at the same location. Base
locator numbers for level-01 entries are
assigned to these items as though they were
in the Uorking-storage section.
The
location counter value for the CD FOR
INITIAL INPUT, if specified, is saved in
CDLCCTR in COMMON.
Completing~Q.~Seciion ~ntries:

Routine
DICTBD adds no information to Report
Section entries before it puts them in the
dictionary.

Phase 22 completes the incomplete Data
A-text elements passed to it by phase 20 by
adding the location counter values.
The
two prefix bytes (the X'10 Q indicator and
the length count affixed by phase 20) are
left to serve as an indicator to phase 21
that the text element needs no further
processing. Phase 21 deletes the first 2
bytes and then passes it unchanged to phase
6 or 64 and selects the Data IC-text
elements (for FDs and SDs) for translation
into Data A-text.
Phase 22 generates five types of Data
A-text elements itself.
Hhile doing so, it
prefixes them with the same tuo bytes of
information discussed above.
The four
types are:
o

Horking-Storage Section address
elements.

o

Constants from VALUE clauses.

o

Data-name DEF elements.

• Verb DEF elements.
(>

Q-routine identification elements.

To create these elements. phase 22 uses
information stored in COHf:lON, tables
GPLSTK, VERBDEF, and VALGRP, Data IC-text
created in phase 10 or 12 and passed by
phase 20, and ATF-text created by phase 20.

Phase 22 uses the following tables to
generate Q-routines: OD2TBL. QFILE, QVAR,
OBJSUB, QITBL, and QRTN. The OD2TBL table
is created by phase 10 and the other tables
Phase 22

77

Licensed Material - Property of IBN

by phase 22.
The QFILE table is passed to
phases 21 and 3 and the QVAR table is
passed to phase 3; the OD2TBL. OBJSUB,
QITBL, and QRTN tables are released by
phase 22.
(When the SYMDMP option is in
effect, however, the QITBL and QRTH tables
are passed to phase 25.)
the OD2TBL
contains the qualified names of objects of
OCCURS ••• DEPENDING ON clauses.
Routine QVARBD combines the information
contained in the OD2TBL, the QRTN. the
OBJSUB, and the QITBL and QFILE tables into
the QVAR and QFILE tables for phase 3; the
QFILE table may be updated by phase 21.
The routine then releases the OD2TBL, QRTN.
and QITBL tables.
(!then SYHDHP is in
effect, it releases only the OD2TBL table.)
If phase 10 created an OD2TBL table,
phase 22 checks each elementary item that
it processes to see whether or not it is in
the OD2TBL table.
If it is, phase 22 sets
the dictionary entries of the item and all
its groups to reflect that they are objects
of OCCURS ••• DEPENDING ON clauses. If it is
a group item, routine XTEN performs the
processing; if it is an elementary item,
routine ELIPR handles the processing.
Routine ELIODO then places the dictionary
pointer for the item and a pointer to the
related OD2TBL entry in the QITBL table.
If an object of an aCCURS ••. DEPENDING ON
clause is encountered ehile processing the
File Section, its OD2TBL table displacement
is placed in the OBJSUB table.
When phase 22 encounters an ATF-text
element for an LD en try Hi th a pointer to
the OD2TBL table (that is, the item Has
described with an OCCURS •.• DEPENDING ON
clause), routine INTVLC marks all the group
items currently in the GPLSTK table as
variable in length by assigning a VLC
(variable-length cell) number from field
VLLCTR in COMMON to each item.
If a
subject of an OCCURS ••• DEPENDING ON clause
is encountered ehile processing the File
section, its GN number is placed in the
OBJSUB table.
In addition, if an item follotfs a
variable-length field and is not a net! file
or record, it is variably located. To each
of these items, phase 22 assigns an SBL
(secondary base locator) number from field
SBLCTR in COMMON. At execution time, there
are secondary base locator cells (one for
each S BL num bel') in the Tas)e G10 bal Tabl e
that contain the current location of the
variably located field.
Phase 22 generates
Q-routines to calculate initial values and
changes in these secondary base locator
cells.
.
Whenever phase 22 generates Q-Routine
text, a determination is made to see
whether or not it is the first time that
78

Section 2.

Nethod of operation

Q-Routine text has been generated for this
record. If it is the first time, a GN
number is generated and routine QBUILD
places it in front of the Q-Routine text
for identification. This routine then
makes an entry in the QRTN table containing
the GN and the pointer to the OD2TBL table.
If it is not the first time, the QRTN table
is checked to see whether the pointer to
the OD2TBL table is there.
If the pointer
is missing q it is put in.
Data A-text Q-routine identification
elements are generated for each Q-routine
and placed on the Data A-text data set.
These indicate that the Q-routines are to
be executed during initialization
processing at execution time.

As phase 22 processes Data IC-text and
ATF-text, a check is made of the clauses to
be sure that they are.alloved to be used
together.
EBCDIC names for keys for table handling
(prefix 01 or 02) are entered into the
SRCHKY table by routine READF4 while the
dictionary is being built.
This table is
used for syntax checking whenever the names
are encountered.

Phase 22 builds eight tables for later
phases. In addition, it uses the VALTRU
table for syntax checking of the VALUE IS
SERIES clause, but then leaves that table
in storage for phase 3. The VALTRU table
is built by phase 20 and described under
that heading.
The QVAR and QFILE tables are built
during Q-routine generation and stored for
use by phase 3; the QFILE table may be
updated by phase 21. They are discussed
above under "Q-routine Generation."
During dictionary preprocessing
(described above), routine SRH200 creates
the INDKEY table.
The FDTAB table is built for phase 21.
If the SYMDMP or TEST option is in
effect, phase 22 primes and builds as many
as four tables, depending on the clauses in
the source program, for phase 25: the
OCCTBL. HASTODO, VARLTBL. and RENAMTB
tables.

Licensed Material - property of IBM

Phase 21 (IKFCBL21) is the last of the five
phases that process the Data Division.
t1hen phase 21 is loaded into storage, the
dictionary is complete except that the FD
and SD entries and the LIIUGE-COUNTER
special register are dummy entries without
data attributes uritten by phase 22.
The input to phase 21 includes Data
IC-text, Data A-text (with two-byte
prefix), E-text, and four tables. The
PIOTBL table, built by phase 1B, and the
FDTAB table, built by phase 22, are used to
supply information about files for Data
A-text~
The QFILE table, built by phase
22, is updated if DeBs are created for
checkpoint files. The CKPTBL table, built
by phase 10, supplies information about
each REgUN statement in the source program.
Phase 21 uses the CKPTBL table to build the
RUNTBL table, which is used in phase 51 to
process verbs for RERUN files.
After phase initialization, each record
is read from SYSUT3 and the action to be
taken is determined. For a Data A-text
element, the 2-byte prefix attached in
phase 22 is removed, and the element is
copied onto SYSUT4; FD and SD elements are
selected for processing by phase 21; all
other records are copied unchanged onto
SYSUT4.
From the FD and SD Data IC-te·xt elements
and from information stored in the
dictionary and the PIOTBL and FDTAB tables,
phase 21:
Q

Q

o

Completes FD dictionary entries from
source program file description entries
in the File Section.
completes SD dictionary entries from
source program sort description entries
in the File section.
Completes LINAGE-COUNTER entries.

o writes the Data A-text for DCBs, DECBs,
and buffers onto SYSUT4.
Phase 21 also produces E-text. If an error
(E) level message is generated and the
CSYNTAX option is in effect, the SYNTAX
option is forced into effect and the
options suppressed when SYNTAX is in effect
are turned off (see "Compiler options" in
the section"Introduction").

The FD dictionary attributes work area (CI)
is filled in from Data IC-text in FD form
and from FDTAB table information in FD
form. Routine FSTXT and its subroutine
ACCMET do most of the processing. The
remaining information needed, that is, base
locator number, Q-Routine indication,
maximum record size, and recording mode
fields, is filled in by the FSTOOO routine.
The count and major code fields in the
dictionary entry are predetermined by the
Data IC-text. The access method field is
filled in from the information in the
access and organization fields of the Data
IC-text.
As phase 21 sets up DCB, DECB, and FIB
identifying elements for the file
(described in "Data A-text Elements" in
this chapter), subroutine ACCMET assigns
DCB and DECB identifying numbers from the
fields DCBCTR orDECBCT in COMMON and
subroutine AMTXT assigns FIB identifying
numbers from the AMICTR field in COMMON.
These numbers are placed in the dictionary
attributes work area •.
If the checkpoint bit in the Data
IC-text is set to 1, phase 21 searches the
CKPTBL table for the entry for the
file-name. The TYPE field in the CKPTBL
table is tested and if the "END OF
REEL/UNIT" option was specified, phase 21
builds a BSAM DCB for the checkpoint file
and makes one entry in the exit list. See
"Creation of Exit Lists" in this chapter.
If the "integer-1RECORDS" option was
specified, phase 21 builds a BSAM DCB for
the checkpoint file for eachunigue
external name and creates a RUNTBL table
entry from the CKPTBL 'table. In both
cases, the Chain Pointer field in the
CKPTBL table is tested and if it is not
zero, the other entry for the file-name is
processed as described above. After the
RUNTBL table is completed, the CKPTBL table
is released and the RUNTBL is made static.
Finally, the CKPCTR cell in COMMON is set
to the number of RERUN files with the
"integer-1 RECORDS" option.
If DCBs are generated for checkpoint
files and the QFILE, table is .present, phase
21 increments the DCB numbers in the QFILE
table by the number of DCBs created for
checkpoint files.
Phase 21

79

Licensed Material - property of IBM

While forming partial FD entries, the
ACCMET subroutine begins building the
SAMETB and SMRCDTBL tables. Routine FSTOOO
completes the fields in the tables.
Phase 21 builds the FD dictionary
entries, the File Information Block (FIB),
and the IND2TBL table entry if Record key
is specified for V~AM files.
In building the dictionary entries, FIB,
and IND2TBL table entry, phase 21 uses
FS-text as its input.

The SD dictionary attributes work area (CI)
is filled in from Data IC-text in SD form
and from FDTAB table information in SD
form. Routine SDTEXT fills in count and
major code information, which is
predetermined by the Data IC-text. Record
lengths, BLL information, Q-Routine
indication, and recording mode are filled
in by the FSTOOO routine which does most of
the processing for the. entry.

FIB ADDRESS ELEMENT
Phase 21 creates a FIB address element for
each FD entry that describes a VSAM file.

BLOCK AND WORKING-STORAGE SECTION ADDRESS
ELEMENTS
Phase 21 creates a block address element
for each FD entry that describes a basic
access method (BSAM, BISAM, and BDAM) or a
queued access method (QSAM and QISAM) with
the SAME AREA clause.
The element contains the location of the
specified area in the object module data
area (that is·, the current value of field
LOCCTR in COMMON) and the first base
locator number assigned to the area.

CONSTANT AND ADDRESS CONSTANT
ELEMENTS

DEFINITIO~

LINAGE-COUNTER ENTRIES

Constant, address constant, and virtual
reference definition elements are created
to build exit lists and to specify the
contents of DCBs and DECBs created for
files described in FD entries.

LINAGE-COUNTER entries are completed from
the Data IC-text and the dictionary.

Creation of Exit Lists
,
Exit lists are built of constant and
address constant definition elements.

Phase 21 generates the following types of
Data A-text elements from which phase 6 or
64 creates object text for the data area of
the object module.
• Block address elements
• COnstant definition elements

The area for the exit list is reserved
and the pointer to the list is indicated in
the DCBEXLST field. Some of the actual
entries to the exit list will be made at
object time by code generated by phase 51.
The format and contents of the exit list
are described in "Appendix B. Object
Module."

• Address constant definition elements
• DCB,. DECB, and FIB address elements
To create these elements, phase 21 uses
the COMMON area, the FDTAB table, Data
IC-text, and the PIOTBL table from phase
1B. If there is an entry for a file in the
PIOTBL table, the Data IC-text for the file
has a pointer to the table. The PIOTBL
table indicates the usage of the file. In
addition, phase 21 creates the SAMETB, and
SMRCDTBL tables to aid in producing Data
A-text.
80

section 2.

Method of operation

DCB'S AND DECB'S -- ADDRESS AND CONSTANT
DEFINITION ELEMENTS
File Information Block (FIBl
Phase 21 creates the fixed portion of the
File Information Block (FIB) for VSAM
files. The FIB work area is generated by
means of the GENFIB data macro. The AMTXT,
IDTXT, and FSTOOO routines fill in fields

Licensed Material - Property of IBM

of the FIB. and the BEGIN routine arites
the FIB as Data A-text (constant
definition) •
Phase 21 produces Data A-text address
elements and constant definition elements
uhich are used to create DCBs and DECBs.
The DCB and DECB address element specifies
the location of the DCB or DECB; the
constant definition, and address constant
definition elements specify the contents of
fields uithin the DCB or DECB. These Data
A-text elements are used by Phase 6 or 64
to produce the actual DCBs and DECBs.
In addition to the location of the DCB
or DECB, Mhich is the current value
(adjusted to fallon a double~IOrd boundary)
of the LOCCTR cell in COMMON, the DCB and
DECB address element contains the DCB or
DECB number assigned to the file from cell
DCBCTR or DECBCT in COMMON.
The contents of the DCBs and DECBs are
produced in several stages as information
becomes available.
The following
discussion shows how phase 21 provides the
contents of some of the DCB fields. DCB
and DECB formats are given in ~~sys~m
Da!:!il,.~g§ and oS/vsL§yst2~a A£g!!§.
Hhen phase 21 encounters the Data
IC-text for an FD entry, the FSTXT routines

specify the size of the DCB for each file
and DECB for files uith basic access
methods (BISAH, BSAM, and BDAM). The size
is determined from the access method.
Using the Data IC-text information, phase
21 issues constant definition elements
which contain the information to be placed
into the fields of the DCB and DECB; for
example, file-name and organization.
If the file contains a SAME AREA or SAME
RECORD AREA clause, additional processing
described in "Block and l'lorking-storage
Section Address Elements" must be
performed.

Constant definition elements for the DCB
and DECB entries relating to the size of
the buffer area to be allocated for a file
are created after appropriate calculation.
In most cases, the compiler allocates all
the buffer area statically at compile time.
But in the case of QSAM or QISAM files, and
only for those unaffected by a SAME AREA
clause, the system allocates the buffers
automatically at OPEN time.

Phase 21

81

Licensed Material - Property of IBM

BUFFER AREA FOR I SINGLE FILE:
The size of the buffer area to be allocated for any given
is dete'riiilned-'rii-generaI as follows:

'file

If
Cz

maximum number of char.acters in a block {tC'.ken from E10CK CONTAINS rei TO:!
C2 CHARACTBRS)

r2

maximum number of records ill a block (taken frow BLOCK CONTAINS [rl TO] r2
RECORDS~ or default = I}
__ {size of AC~'aAL KEY -4, if direct BSA11 tlith lcey or direct EDlUl

KEY

o

r1

in any other case

size of record length field
{

4 if RECORDING HODE V

o
b1

in any other case

size of block length field
{

4 if RECORDING MODE V

,0 in any other case

RCD

maximum data record size for the file (calculated by the compiler fLom the
maximum size of the relevant level-01 entries)

ELK

block size

Then

{C2

if CHARACTERS option specified in BLOCK CONTAINS clause

tbl + (KEY + r1 + RCD)*r2 in any other case
And also if
BCE = buffer control block size

~

16

for BISAM or QISAR

'12 for QSAR if RECORDING MODE S

N

8 for QSAM if RECORDING HODE F. V, or U
0
if neither BISAM, QISA5, nor QSAM

total number of areas for file
number of alternate areas + 1 (taken from RESERVE .•. ALTERNATE ARBAS for
QSA11 or QISA~l)
(RCD ... 32 for QSM! if RECORDING [WDE 5

SR

=~min

to

[RCD. track capacity] + 8 for BSIM or BDIM if RECORDING MODE S

in any other case

Then
S

total buffer area for file
BCB +

82

Section 2.

(B1K*~

+ SR

Method of operation

Licensed Material - Property of IBM

BUFFER AREA INVOLVING MORE THAN OUE FILE: The total amount of buffer space to be
allocated depends, in addition;-on-t~resence of SAME AREA and SAME RECORD AREA
clauses. Three cases are shoun beloH. There are.!! files.! • ,where f (-i=k+1, ••• ,n) use
VSlI.B. BSlI.[1. or BDlUl, and Ithere f (i=1, ••• ,k) use some other access method. All S , RCD,
rl , bl • and KEY are determined according to the formulas and definitions shown in the
preceding paragraph.
Note: For automatically buffered files, as described above, the buffer area is allocated
only if the file is currently open.
Case 1.
If SAHE AREA was specified for all files
total size = max [S ]
1SiSn
Case 2.
If SAME

specified for all files

RECOR~AREA,uas

k

total size

L

[S ]

-I-

max [RCD ] ... max [bl
lSiSn

i=l

-I-

rl

... KEY ]

k'
til
Pl

t:7'
I-'
CD

2

5

ODOBLD
Builds
the
ODOTBL
table

t-3

Phase 22 builds the OCCTBl table
initializing it with the dictionary
pointer of each subject of an
OCCURS or an OCCURS ...
DEPENDING ON clause. A bit
is set to indicate the latter.

Using that number to
find the QRTN table
entry for that OCCU RS ...
DEPENDING ON clause.

0-012 - 1 - - - - 1
0- 020-+-----1

ODOTBL Table
Dictionary
pointer to
attributes of

Displ'mnt in For
OCCTBL to OBODOTAB
OBODOTAB pointer

obiect of
ODO clause

pointer of
corresponding entry

Displ
100 B

Infonnation ODO
for
SW To be
filled in by
Phase 25

108~C~-+-+-+-+-+~~

118 I D

Dictionary
pointer to

6

D

OCCTEST
tt::I

:or
Pl

Te3ts for
presence

N

of OCCURS .•.
DEPENDING ON

U'\

clause

co
-l

1

ing entry

Pointer

116

for X
Pointer

for Y

126

t-'

Displacement

The dictionary pointer
for the object of 000
is inserted into the
ODOTBl table.

~.

o

0020

Pointer

CD

I:f

for Y

1·1

ODOTBL Table
Displ'mnt in For
OCCTBL to OBODOTAB
attributes of OBODOTAB pointer
pointer of
obiect oi
ODO clause correspond-

0012

for X

of OD2TBL entry
The QRTN table entry attributes
of obiect of associated with
is used to find in the
ODO clause ODO clause
QITBl table the
;1
0 10 11 10
dictionary pointer for
the object of the 000
clause.

Dictionary
pointer to

ENDPl

Pointer

QITBL Table

Dictionary Length

Pointer
for

i

the ODOTBl
table

OCCTBl Table

III
CD

OBODOTAB Table

completes

t::I

III
CD
P.

Finally, using the ODOTBl table,
routine ENDP1 fills in the OBODOT AB
pointer for each OCCTBl table entry
which is the subject of an 000 clause.

Displ
100
108
118

Dictionary
Pointer

Length

for

for

Information

C

D

Pointer to

ODO
SW
OFF
ON
ON

OBODOTAB
table entry
for
Displ = 116
0-012
0-020
Displ = 126

::;;:

~
CD

Ii
~.

II>
I-'

to
t1

o

"tl

CD

t1

c+

'
r----....,>,
,
I

I

1<
I

V
I

no

I

------------------------------->1,

PN3
I

,
I

I '
I

'v

,
,

,,
I

,

I
I
I

yes

f

r

I
'
I,

V

,

,

,
,

I

,

~

L---.,,
I

,

PN2

L

ALTER

I
I
1----'

,

,
,

,

I--

~

I

J

'Hotg: This illustrates the same example used in Figure 23. Assuming that no other
,ALTER or GO TO statements occur in this program, the flow of control will follow the
,single-line path the first time through and the double-line path every time after the
,first.

Figure 22.

108

Flow of control for ALTER/GO TO statements

Section 2.

Method of Operation

,
1
,
1

Licensed Material - property of IBM

r--

I

~

I Procedure Statement
I

VNTBL Table

SN2 SECTION.
PN3. •••

SN2 VN1

2

SN4 VN1

3

SN4 SECTION.
8
PNS. PERFORH SN1 THRU SN2.

Figure 23.

SN1.

1

SN2.
PN3.

I
I
I
I
I
I
I
I
I
I
J

SN4.
PNS.

I
IL--PN6. ADD...

---L-____________

~

I

output

~

l~

I SN1 SECTION.

I
I
I
I
I
I
I
I

,

PFMTBL Table

____________. __

GN 1.
PN6.

GO VN 1 S
EQUATE VN1 SN4 6
7
MOVE VN1 PFMSAV1 9
MOVE GN1 VN1
GO SN 1
MOVE PFMSAV1 VN1
ADD...

~_____

Effect of a PERFORM Statement

PERFORM STATEMENT
Processing of a PERFORM statement resembles
that of an ALTER statement. The return
from a performed procedure is a GO string
with a VN as its object. This GO string is
placed at the end of the performed
procedure, just before the procedure
delimiter.
Phase 4 uses the VNTBL and PFMTBL tables
to keep track of the VNs. Figure 23 gives
an example of the use of these tables.
The dictionary attribu tes of
section-name SN2 indicate that it is
the object of the THRU option of a
PERFORM statement.
2

Routine IDLHN obtains a VN number from
the VNCTR cell of COMMON and enters VN1
and SN2 in the VNTBL table.

3

In the PFMTBL table, it enters VN1 and
the delimiter of SN2, which is SN4.

4

When section-name SN4 is encountered,
routine IDLHN knows it is the delimiter
of the performed procedure because it
is in the PFMTBL table. Therefore,
before the procedure-name. definition
element for SN4 is issued, routine
IDLHN sets up the return from the
performed procedure.

S

It obtains the VN number from the
PFMTBL entry.

6

It issues a GO string to go to VN1.

7

It issues an EQUATE string to equate
VN 1 to SN4.

8

When the PERFORM statement (PNS) is
encountered, the verb analyzer PRFORM
issues instructions to set up the
return from the performed procedure.

9

It obtains a PFMSAV number from the
PFMCTR cell of COMMON.
This number
represents a 4-byte cell in the Task
Global Table of the object program.
The value of VN1, which is the address
of the next sequential instruction
after the performed procedure, is saved
by moving it into this PFMSAV cell.
A
GN number is obtained, and this GN is
moved into the VN1 cell. This GN is
defined at the point of return from the
PERFORM. The instructions issued at
this point cause restoration of the
original value of VN1.

At execution time, secti~ns SNl and SN2
are first executed in-line. VN1 contains
the address of section SN4, and thus the
"return" from the procedure (the statement
"GO VN1") actually causes control to pass
to SN4, the next sequential instruction.
Later in the program, the execution of
statement PNS causes SN1 and SN2 to be
executed again. This time, the return is
to GN1. The original value of VN1 is
restored, and PN6 is executed.
Figure 24 gives an example of how a
PERFORM statement operates at execution
time. Figure 25 illustrates the flow of
control for the program shown in Figure 24.

Phase 4

109

Licensed Material"" Property of IBM

r------------------1

'I

PERFORM SEC2 THRU SEC3.

1
SEC1 SECTION.
SEC2 SECTION.
SEC 3 SECTIO N.
SEC4 SECTION.
GO TO SEC1.
~---,

!ssQ£i~ig~!22gmQlg~_£oding

Coding for
PERFORM

L
ST
L
ST
L
BR
L
ST

GN

O,VN
O,PFMSAV
O,GN
O,VN
REG,PN+4
REG
O,PFMSAV
O,VN

~

BgleYalli_~GT ~~g_~GT

cel12
PN (cells of PGT)

Save initial value.

.--

la (SEC1)

I

Branch to performed
procedure.
Reinitialize.

1---------1
1a (SEC3)
1
I--------f
I

la(SEC4)
(SEC1)

GN (cells of PGT)

,

(SEC2)

--,

,-4 a (GN1)

(SEC3)

I

Coding for
Return
(SEC4)

REG, VN
REG

L

BR

Load A (SEC4) •
Branch.

1

----'

¢
'-> ,

VN (cells of TGT)

---,

la (SEC4)

,--1----'----.1, <-----.."

~P~MSAV (Cell~
'-> I
,

!22Q£!~te~Assgmble~

coding for
PERFORM

GN

MVC
LA
ST
L
BC
MVC

(SEC2)
(SEC3)
Coding for
Return
(SEC4 )
igure 24.

;110

L

BR

REG,VN
REG

Execution of a PERFORM Statement

Section 2.

of TGT)

Method of operation

Load A (SEC4) •
Branch.

~

1 - -____-.1
I

coding if OPT ~s in Effect
PFMSAV(4) ,VN
Save initial value.
O,GN
O,VN
11,Procedure block of PN
If necessary.
15,Displacement of PN(11)
Branch to performed
procedure.
VN(4) ,PF~lSAV
Reinitialize ..

(SEC1)

1
1
1

1

I'

la (SEC2)

1

Licensed Material - property of IBM

PERFORM

,
I
I
I
I
V

SEC2
SEC3

,
1<--------------------------,
,

,,
,,

i

I

SEC1

I<----------------------------------------~

i i

' - -_ _ _ _ _ _.J

II

.

VV
Yes

r

I

I

,

,,
,

II.

II. 1\

--------------~>'Reinitialize ~------------~

I

I

It No
II
II

vv

..-------.,
SEC4

,~-----------------------------------------------------

,I

I
1
I Not~:· This illustrates the same PERFORM statement shown in Figure 26. Assuming that,
Ino other procedure branching statements occur in this program, the flow of control willJ
Ifo11ov the single-line path the first time through and the double-line path every time
fafter the first.
.

Figure 25.

Flow of Control for a PERFORM statement

COMPUTE STATEMENT
Verb analyzer routine COMPUT, with its
major subroutine FORMLA, breaks. down the
arithmetic expression of a COMPUTE
statement into a series of simple
arithmetic strings. It uses two tables,
PNOUNT and PSIGNT, in the processing of the
arithmetic expression. PNOUNT conta.ins
operands and PSIGNT contains signs
(operators and parentheses) of the
expression.
These two tables are needed because the
hierarchy of arithmetic operators may
necessitate a rearrangement of the

expression.
order is:

The hierarchy in descending

unary -

*** and

+

X

I
and -

For example, the statement COMPUTE
requires strings in the order

= A-B*C

MULT C B IR1
SUB IRl A IR2
STORE IR2 X
where IR1 and IR2 are intermediate results.

Phase 4

111

Licensed Material - Property of IBM

r--

i

i

i

I
I PNOUNT IPSIGNT
I
IInput I Table
I Table
IStrings stored I
IElementlContentslContentslin STRING Table I
I
I
I
I
I
I
A
I
A
I
I
I
I
I
I
I
I
I
+
I
A
I
+
I
I
~
I
I
I
f
I
(
I
A
I
+
I
I
I
I
I
I
I
~
I
I
I
of
I
C
I
A
I
+
I
I
C
I
I
I
I
I
~
I
I
I
of
I
I
A
I
+
I
I
I
I
C
I
I
I
I
I
I
I
I
II
I
I
of
I
D
I
A
I
+
I
I
I
I
C
I
I
I
I
I
D
I '
I
1--,
,
+I
,
/
I
A
I
+
I
,
,
I
C
I
I
I
,
I
D
I
I
I
I
I
I
/
I
I
~--+
I
I
I
I
E
I
A
I
+
I
I

I

I

I
I
I

I
D
I
I
lEI/I
I
I
+I
A
I
+
I DIV E D IR1

1
,
,
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I

I

G)
*

C

I

1

c,

,IR1 "
I
I
I
A
I
,IR2 I
I
I
I
AI
I
IR2'
I
I
I
A
I
I
IR2 I
I
F
I
I
I
I
A
I
I
IR3 I

• If there are no more input elements,
all remaining strings are built.
(see
in Figure 26)

0

• If a right. parenthesis is encountered,
all strings up to the left parenthesis
proceeding backwards into the tables
are b~t.
(see ~ in Figure 26)
• If an operator ~s encountered that, in
the hierarchy of arithmetic operators,
is lower than or equal to the last sign
in PSIGNT, a string is built.
(see
in Figure 26)

,
I
I
I
,

1

I

®

Figure 26 shows the evaluation of the
following COMPUTE statement:

,
+
+
*

I
I SUB IR1 C
I
I

,

-t

I~2

I
I
I
,

I
I
I
I
F
+
I
I
*
I
I
I
I
I
of
+
I MULT F IR2 IR31
I
I
I
-+I
I
IRq I
I ADD IR3 A IRq I
I
I
-+I
G
I
IRq I
I
I
I
G
I
I
I
I
I
I
I
I
I
I SUB G IRq IRS I
•
I
I
I STORE IRS X I
~
I
I
IRQ1~:
The circled numbers in the figure I
Irefer to explanations in the text.
I

COMPUTE X = A+(C-D/E)*F-G.
Each row in the figure shows table contents
after processing the input element in the
first column.
Figure 27 gives the final output from
the COMPUTE statement example used in
Figure 26:

0.
0

COl!PUTE X =A+ (C-D/E) *F-G.
r-

I
I
I

I
I
I

I

L--

Figure 26 •.. Evaluation of a COMPUTE
Statement

112

Phase 4 builds a simple arithmetic
string to be placed in the STRING table
when the signs in the PSIGNT table indicate
that the arithmetic hierarchy of operators
requires a string. To build a string, the
last operator in the PSIGNT table is made
into a verb, the last two nouns in the
PNOUNT table are used as operands, and an
intermediate result is appended.
(The
intermediate result is placed in the PNOUNT
table as an operand.)
The following rules
apply when a string is to be built:

Section 2.

Bethod of Operation

EVAL DMAX DCURRENT X
DIV E D IR1 (-C)
SUB IR1 C IR2 (*F)
MULT F IR2 IR3 ~A)
ADD IR3 A IRq (-G)
SUB G IRq IRS (ST X)
STORE IRS X

Figure 27.

Strings Resulting from a
COl!PUTE Statement

Licensed Material - Property of IBM

As an aid to phase 50. an EVAL string is
issued preceding the arithmetic strings.
The EVAL str ing contains information such
as the maximum number of decimal places in
any operand, the number of decimal places
in the result, and the presence of ROUNDED
or ON SIZE ERROR clauses. Appended to any
string containing an intermediate result is
an indication of the use of that
intermediate result. For example, IRl is
used in a subtraction with C.
I MULTIPLE RESULTS IN ARITHMETIC STATEMENTS
For COMPUTE with multiple operands before
the equal (=), and for ADD, SUBTRACT,
MULTIPLY, and DIVIDE with multiple GIVING
operands, SETTBL is used to save the result
operands. After determining whether SIZE
ERROR is present. and analyzing the
arithmetic expression for COMPUTE, SETTBL
is used as the input stream to produce the
store into each result. The routine STORAN
is called once for each result.

IF STATEMENT
The IF verb analyzer, assisted by its major
subroutine PFINDL, evaluates IF statements
and issues strings consisting of a
relational verb, two operands to be
compared. and a third operand, which is a
GN reference for branching. The following
example shows the verb string issued from a
simple IF statement:

gll2!U!i2

IF A=B DISPLAY C.

strings
IF-NOTEQ A B GNl
DISPLAY C

ADD •••

GN1. ADD •••

Note that the condition is reversed in the
string to minimize the number of branches
required. The branch to the GN is taken if
the condition (A=B) is false, that is, if
the DISPLAY is not to be executed.
The PNOUNT and PSIGNT tables are used in
evaluating arithmetic expressions in IF
statements. The strings produced are the
same as for COMPUTE statements except that
the last string is a relational string (for
example. IF-EQ or IF-NOTGT) instead of a
STORE string.
The PSHTBL and PTRFLS tables are used in
evaluating IF statements. The PSHTBL table
collects branches to ELSE statements in
nested IF statements, and the PTRFLS table
collects branches within compound IF
statements.

Figure 28 shows how the PSHTBL table is
used in evaluating the following statement:
IF A=B THEN IF C=D THEN IF E=F STOP '0'
ELSE STOP '3' ELSE STOP '2' ELSE STOP '1'
ADD •••

,
r
i
I
IStatus ofl
I
I
I Procedurel PSHTBL I
I
I Statement I Table
I output String I
Ir-I
I
--f
GN 1
IIF-NOTEQ A B GN11
r-->IIF A=B
I
I
I--I
I
~
GN1
IIF-NOTEQ C D GN21
h->IIF C=D
I
GN2
I
I
I
I
I
--f
I
GN1
IIF-NOTEQ E F GN31
h->I IF E=F
I
GN2
I
I
I
I
GN3
I
I
I
I
l--I
I
--f
GN1
ISTOP , 0' I
ISTOP '0'
I
GN2
IGO GN4
II I
I
I
GN3
I
I
I
II t--I
I
I
GN1
I L->I ELSE STOPI
IGN3. STOP '3 '
I
I
I
I
I
I '3 •
IGO GN4.
GN2
I
I
I
I
Ir----+_
I
I
----1
L->I ELSE STOP I
GN1
I GN2. STOP • 2'
I
I
I
I
I
•2 '
IGO GN4
I
I
I
}
1
&-I
1.-->1 ELSE STOPI
I GN1. STOP , 1 '
I
I '1'
I
I
I
I
I
IGN4. ADD •••
I ADD •••
I
I

,

""
"

"""
"

,

..

Figure 28.

..

Evaluation of a Nested IF
Statement

(IFs and ELSEs are paired from the inside
outward.) The PSHTBL table saves the
procedure-names (GNs) generated for
branching to the ELSE statements. When an
ELSE is encountered, the last GN in the
table is issued as its procedure-name
definition.

SEARCH FORMAT-2 (SEARCH ALL) STATEMENT
The SEARCH ALL statement is executed by a
COBOL library subroutine.
(For a
description of the SUbroutine, see the
publication !~~~~LY~_£OBQ1~Q~£QYting
Libra~y-progra~gi£.
Therefore, phase 4
does not generate statements to perform the
search. Instead, it produces a parameter
list for the subroutine (the actual call to
the subroutine is generated by phase 50),
Phase 4

113

Licensed Material - Property of IBM

example, this is accomplished via the
GO GN4 state,ment.

and it creates verb strings for the
imperati ve statements following AT END and
WHEN clauses.
Figure 29 gives an example of phase 4
output for a SEARCH ALL statement. The
example shows the P2-text that would be
produced for the following statement:
SEARCH ALL TABLE-K AT END GO TO NOT-FOUND
WHEN IEY-l (INDEX-K) = 5
AND IEY-2 (INDEX-I) = 10
IRD IEY-3 (INDEX-K) = DATANAME-K3
~OYE TABLE-I (INDEX-I)
TO ENTRY-FOU}1D.
The verb analyzer first receives, as
P1-text inpnt, and saves TABLE-K and
the maximum number of occurrences.
Then it receives a count of the number
of keys, followed hy the keys
themselves. The dictionary pointer for
each key is entered into the KEITBL
table, with a flag byte of 00.
If any of the keys is found to be
sterling or floating point, a C-level
E-text element is generated, and the
statement is processed as though it were a
SEARCH format-1, with WHEN conditions being
processed by the IF analyzer and no special
WHEN statements generated.
After the table has been built, the
analyzer transfers control to the SEARCH
analyzer to scan the WHEN and AT END
clauses.
To generate verb strings for the
imperative statements following AT END and
WHEN, the SEARCH verb analyzer calls other
verb analyzers. However, the IF analyzer
is not called to generate conditional
statements. Instead, SEARCH returns
control to the SEARCH format-2 analyzer to
do special WHEN processing.
If the imperative statements following
the AT END or WHEN clauses do not
provide exits from the search, phase 4
generates GO TO NEXT SENTENCE. In the

114

Section 2.

Method of operation

r-

I
GO GN1.
I GH2. GO PN50. (where Pl~50 is the PN
I
number of NOT-FOntOD)
IG~ WHEN (3) 1
I \2) TABLE-K
I
num-occur 2
I
GN2
I ~ EVAL DMAX DCURRENT KEY-1.
I
EQUATE 5 KEY-l.
I
EVAL DMAX DCURRENT KEY-2.
I
EQUATE 10 KEY-2.
I
EVAL DMAX DCURRENT KEY-3.
I
EQUATE DATANAME-K3 KEY-3.
I
ENDWHEN (1) INDEX-K.3
I
SUBSCRIPT (3) TABLE-K INDEX-K SSID1.1
, f:\ MOVE (2) SSID1 ENTRY-l"OUND.
I
I W GO GN4.
I
I I GN 1. GO GN3.
I
IGN4. next sentence
I

...---

,-------·1

lIf KEY-l required two levels of
I
subscripts or indexes, the first
subscript vould be put out as the fourth~
operand of the WHEN verb. If three
levels were required. the first two
subscripts would be operands 4 and 5 of
WHEN. All keys must be subscripted or
indexed when used in WHEN conditions.
but phase 4 does not produce SUBSCRIPT
strings or SSIDs for them.

2If TABLE-K has a fixed number of
entries, num-occur is a literal
specifying the number (the value
I
following OCCURS in the data description I
for TABLE-K). If the table has a
,
variable number of entries, num-occur is!
the name of the data-item Hhich follows I
OCCURS ••• DEPENDING ON.
I
I
13 The lowest level of indexing or
I
, subscripting for KEY-"I is passed as the I
I operand of ENDWHEN, since it is needed I
I for the search.
_____________________________- JI

,

Figure 29.

Example of Phase 4 Output for a
SEARCH ALL Statement

Licensed Material - Property of IBM

GU3,
I
I CALL
I
I subroutine I
I

I

SEARCH ALL
object-time
subroutine
r
r

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
I
I
L--

I
I
I
I
I
I

>1
I
V

I No
I
I
I
V

I No
I
I
I

I

--,

I
I
I
\
GN2 r
Exit from SEARCH
I
lIm pera ti ve
via GO statement
I
or next sentence
I statement
I
> I follow ing
I
>
P1HEN
\
\
I
I
I
I Return at a
\specific number r-Exit from SEARCH
-,
lof bytes after
I Impera ti ve
I via GO statement
IGN3 (first
I statement
I or next sentence
l------------> I following
rl--------------------->
I exec u tab le
IAT END
I
I instruction
I (if specified) \
I immediately
I
L--_________
- - - - JI
I follows
I parameter
I list)
I
I

L

(The largest box indicates control flow within the SEARCH ALL object-time subroutine;
smaller bloclcs are executed in-line.)
Figure 30.

Flow of Execution for a SEARCH ALL Statement

Figure 30 is a generalized chart showing
the floH of execution into and out of the
SEARCH ALL object-time subroutine.
Phase 4 checks ImEN conditions for
conformity to language rules by using the
KEYTBL table.
When the first part of the WHEN
condition is processed, the dictionary
pointer for the key named in the condition
is compared to that of the first key in the
KEYTBL table. If it matches, the flag byte
is set to 01 and the condition is valid.
Each part of the condition should name a
key matching an entry in the KEYTBL table,
arid its flag byte will be set.
After the entire WHEN condition has been
processed, the KEYTBL table is examined to
determine whether any key is tested in the
condition without all preceding keys being
tested. If this occurs, E-text is issued
and no P2-text is genera ted.

The user is not required to name the
keys in the WHEN condition in any
particular order. However, phase 4 must
produce a P2-text string giving the keys in
the order specified in the KEY IS clause.
To produce text in the proper order, the
STRING table is compared to the KEYTBL
table. The STRING table entry that matches
the first KEYTBL entry is used to produce
the first text string, and the entries are
then deleted from both tables. This
process continues until all strings for the
WHEN condition have been put out.
If, in any part of the WHEN condition,
none of the operands named is a key, or if
any other error condition is detected,
E-text is issued and no P2-text is
produced.

Phase 4

115

Licensed Material - Property of IBM

Phase 4, in subroutine ERROR, issues E-text
when an error is detected.

Before branching to the verb analyzer
routines, this routine calls TIMCNT.

Primarily, phase 4 checks to see that
required COBOL words are present and in the
correct order, and that operands are
compatible with each other and in
permissible format for the statement in
which they are used.
This routine turns on NNODSW and NNODEOS.
In addition, phase 4 performs a limited
check of the relationship between
statements. For example, it can detect a
conditional statement that has no
conclusion.
IDBRK Routin§
It also checks miscellaneous special
requirements, such as: subscripts must be
integers; parentheses in logical and
arithmetic expressions must be paired, and
a maximum of twelve sort keys must not be
exceeded.
If the CSYNTAX or SYNTAX option is in
effect, E-text generated by phase 4 as well
as the E-text passed from phase 3 is
written on SYSUT4.
Otherwise, E-text is
written on SYSUT1.
Phase 4 also sets the
ERRSEV cell in COMMON to the highest error
severity level encountered. If an error
(E) or disaster (D) level message is
generated and the CSYNTAX option is in
effect, the SYNTAX option is forced into
effect.
If the snlTAX option is in effect,
phase 4 issues an end-of-job call if no
messages were generated.
If messages were
generated, control is returned to phase 00
which sets the value of LINKCNT to indicate
that phase 70 is to be executed next; error
messages are listed and the compilation is
termina ted.
(See "s yn ta x-checking
compilations" in the chapter "Phase 00.")

The major routines used in defining verb
blocks and the functions they perform are
explained below.

This routine turns off the ENTRYSW,
FNDP1RNM, NIODEOS, NNODSW. NTIMSW.
TIMFLOStl. UPPROC, and VBSKIP switches.
116

Section 2.

Method of operation

If not a report writer declarative, this
routine turns on NNODSW, ENTRYSW, UPPROC,
NTIMSW, and turns off NNODEOS and VBSKIP.
If i t is a report writer start, IDBRK turns
on VBSKIP; if it is a report writer end, it
turns off VBSKIP.

Just before FLOW is tested, this r06tine
turns on NNODSW, UPPROC, ENTRYSW, FNDPARNM,
and turns off NNODEOS. Then. if FLOW is
on, it turns on TIMFLOSW.
Then GENTIM is
called. In addition, if there is a DEBUG
packet, at the end of IDLH10, GENTIM is
called again. Note:
the test and code
generation for USE FOR DEBUGGING
paragraph-name precede the tests for FLOW.

Upon final exit from these routines, NNODSW
is turned on if INPUT or OUTPUT procedures
were specified. If INPUT or OUTPUT
procedures are specified, NTIMSW is also
turned on upon exit from processing the
INPUT or OUTPUT procedure phrase.

If COUNT is on, this routine indicates the
end of the COUNT Table in Data A-Text and
rounds the size of the COUNT Table to the
next even number.

Licensed Material - Property of IBM

This routine saves Listing A-Text in order
to maintain the last procedure-name for
GENPAR.

Prior to generating this verb, this routine
calls GENTIM, passing zero as the parameter
to be generated. Afterwards, NTIMSW is
turned on.

If COUNT is off. or if VBSKIP is on, GENNOD
returns.
Otherwise, if NNODSW is on,
NODECTR is updated. In any case, Data
A-Text is generated. In addition, if
NNODSW is on, a COUNT verb with a counter
is generated, and NNODSW is turned off.

Data A-Text for the paragraph,
section-name, or missing paragraph-name is
generated (using FNDPARNM), and FNDPARNM is
turned off.

First GENTIM turns off NTIMSW.
If UPPROC
is on, it calls GENPAR.
In any case, if
ENTRYSW is off, GENTIM generates a TIMERA
verb (with a zero or PROCCTR as the count,
depending on input parameters) and then
returns. GENTIM turns off ENTRYSW, and if
TIMFLOSW off, generates a TIMERB verb (with
PROCCTR as the count) and returns.
Otherwise it turns off TIMFLOSW and
generates a TIMERC verb with PROCCTR as the
first constant and with ISN or Card-number
as the second constant.

This routine puts the Data A-Text on
SYS004.
First GENPAR turns off UPPROC. Then, if
In any case,
COUNT is off GENPAR returns.

Phase 4

117

Licensed Material - Property of IBM

The function of phase 45 (IKFCBL45) is to
produce P2-text on SYSUT1 for the UNSTRING
verb. The phase is given control only if
phase 4 encounters a valid UNSTRING verb
string, in which case, phase 4 sets the
PH45BIT switch in SWITCH1 in COMMON.
Phase
45 is called by phase 00 following phase 4
processing if phase 00 finds the PH45BIT
switch on.
Phase 45 operations consist of reading
and analyzing the ATM-text for the UNSTRING
verb, which phase 4 has written on SYSUT2,
and transforming it into P2-text. The
ATM-text consists of a series of sUbscript
strings followed by an UNSTRING verb
string; one or more of these series may be
present.

Phase 45 first primes the four tables,
SSCIN, SSDELIM, SSCOUT, and TXTOUT, which
are used during ATM-text analysis.
These
tables are used by phase 45 only.
After priming the tables, phase 45
begins to process the ATM-text from SYSUT2.
The PH45CTL control routine examines the
input verb string and gets the count of the
operands in the string. It moves the
operands into work areas labeled DOP1
through DOP5 (hereafter, a reference to a
DOP is a reference to one of these work
areas).
The PH45CTL routine then checks
whether the string is a subscript string.
If it is, the string is saved in the SSCIN
table and another input verb string is
read.
If it is an UNSTRING verb string,
PH45CTL branches to the UNSTRING routine to
process it.
The UNSTRING routine scans the operands
and sets the appropriate flags to indicate
operand type.
It also checks whether the

118

section 2.

Method of operation

sending field is subscripted. If it is,
UNSTRING calls the FINDSSC routine to find
the corresponding subscript string and
enter it in the SSCOUT table. The FINDSSC
routine also enters the data item text
element in the TXTOUT table. If the
sending field is not subscripted, the
UNSTRING routine enters the data item text
element in the TXTOUT table only. The
UNSTRING routine branches to the proper
field analyzer to process delimiter fields,
receiving fields, delimiter-in fields,
count-in fields, pointer fields, and
tallying fields.
The individual field
analyzers set flags and make entries in the
appropriate tables.
When all of the DOPs
have been processed, control is returned to
the PH45CTL routine to refill the DOPs.

As ATM-text is analyzed and rearranged,
P2-text is created for phases 50 and 51.
The P2-text is generated so that the
subscript for a subscripted field is
calculated immediately before the field is
referred to.
Also, any Q-routines which
must be called following the change of the
object of an OCCURS ••• DEPENDING ON clause,
are called immediately instead of after the
entire verb string has been analyzed.
P2-text elements, called Data-name
information for UNSTRING (2A),are also
created to pass information about UNSTRING
data items, such as address and size, which
is used by phase 51 when it generates
Procedure A-text.
The P2-text is formatted in the SSCOUT
and TXTOUT tables.
The SORTXT routine
sorts the corresponding sections of these
tables, putting the text in the correct
order. Finally, P2-text is written on
SYSUT1.

Licensed Material - property of IBM

Phase 50 (IKFCBL50) reads elements of
P2-text tlritten by phases 4 and 45 and,
depending up.on the type of each element,
either processes it or·passes it to phase
51 for processing. Output from phase 50
includes P2-text passed unchanged,
Intermediate A-text, and Intermediate
E-text, all uritten on SYSOT2 for phase 51,
and Optimization A-text ~ritten on SYSOT2
for phase 6 or 62. Intermediate E-text
consists of E-text passed from phase 4 or
generated by phase 50, to uhich is added a
prefix to make it readily recognizable.
Intermediate A-text consists of Procedure
A-text or optimization A-text, which is
generated by phase 50 and to which has been
added a prefix. If the SYNTAX or CSYNTAX
option is in effect, no prefix is added to
Intermediate A-text.
.
Procedure A-text is generated by
analyzing P2-text verb strings and
generating elements that correspond to
assembler-language instructions. That is,
the elements combine to form name,
operation, and operand fields.
Optimization A-text is generated for use by
phase 6 or 62 in eliminating duplicate
references.
Input to phase 50 (a combination of
P2-text and E-text) is read from SYSOT1.
output is uritten on SYSOT2, except for
literals uritten as optimization A-text on
SYSOT3 (see the section "Literals and
Virtuals f' later in this chapter). In
addition, if the SYNTAX or CSYNTAX option
is in effect, E-text is written on a
separate data set, SYSUT4i and the ERRSEV
cell in COHMON is set to the highest error
severity level encountered.
(E-text
processing is discussed under liE-text" in
the chapter "Phase 51. II)
Routine PH5CTL calls GETNXT. which
obtains P2-text .elements, determines what
type they are, and calls the routines
required to process them. The elements may
be of the follouing types:
o

Program breaks

• Verb strings
• E-text
o Segmentation control breaks
o

PB, GNp and VB definitions

Of these, only program breaks and
certain verb strings are processed by phase

50. The others are passed to phase 51 for
processing. Elements of E-text are
prefixed with headers for identification by
phase 51, and copied as output.
Segmentation control breaks and PN, GN, and
VN definitions are written with an
optimization A-text prefix. Before a PN,
GN, or VN definition is copied, all entries
in the XSCRPT table, used in calculating
subscript values, are deleted. The section
"Using and optimizing subscript References"
explains uhy this is necessary.

Routine GETNXT uses program breaks to
determine where to issue a START macro-type
instruction. This indicates where in the
object-time coding the first executable
instruction is generated. The Procedure
Division. beginning-of-declaratives, and
end-of-declaratives breaks are used for
this.
(All other types of program breaks
are ignored.)
If no beginning-of-declaratives break is
encountered, routine GETNXT issues the
Procedure A-text for START immediately
after finding the Procedure Division break.
If a beginning-of-declaratives break is
encountered, the START Procedure A-text is
isslied after the end-of-declaratives break
has been found.
Since the coding for a START macro is
always the same, this A-text is generated
from Constant A-text, which is described
later in this chapter.

The P2-text for a verb string consists of a
verb followed by from one to five operands.
Any operands beyond the fifth have been
placed into one or more continuation
strings by phase 4; the first operand of
the first string is the COBOL word FIRST,
and the last element of the last string is
the COBOL word END.
(An example of this
appears in the discussion of the DISPLAY
string under "Verbs Requiring Calls to
Object-Time Subrolltines" in the chapter
"Phase 51. II)
Once routine PH5CTL has established that
an element of P2-text is a verb
, string, it
Phase 50

119

Licensed Material - Property of IBM

moves the operands into work areas labeled
DOP1 through DOP5 (hereafter, a reference
to a DOP is a reference to one of these
work areas). The verb code for the verb
currently being processed is moved into a
cell called GANLNO, where it is kept until
overlaid by the next verb code.

PH5CTL with an indication that such is the
case.

VERB PROCESSING

The PH5CTL routine then calls routine
XI S31, which determi,nes whether any of the
operands are subscripted or indexed
data-names. If one is, the pointer to the
desired occurrence has already·been
computed in phase 50 (subscripts and
indexes are ~esolved by processing
SUBSCRIPT verb strings, which always
precede the verb string in which they are
referenced; see the section "Resolving
Subscripted and Indexed References" later
in this chapter). The routine changes the
idk (addressing parameters) field in the
DOP from a subscripted or indexed reference
to a data-name reference. (A full
description of the idk field appears in
"Dictionary Entry Formats" of "Section 5.
Data Areas" under the addressing parameters
field of the LD dictionary entry.)

From the verb code, routine PH5CTL
determines Which verb analyzer to call. If
the STATE, TEST, or SYKDMP option is in
effect, phase 50 generates a call to the
object-time COBOL library debugging
subroutine entry point ILBODBG4 before the
code to call any other object-time
sUbroutine except ILBOFLW1. The call to
ILBODBG4 is generated only once per verb,
even if the verb causes calls to more than
one subroutine. For details on the
object-time subroutines, see the
publication I~~L!S COBOL Subroutine
1~I-~ogFam Logic.
In general, there
is a specific routine to analyze each COBOL
verb, but there are a few cases of overlap.
For example, all arithmetic verbs use parts
of a processor known as the arithmetic
translator.

Upon return, routine PH5CTL checks to
see whether the verb string is one that is
to be processed by phase 50. Verb strings
processed by phase 50 include:

The illustrations in this chapter show
P2-text strings as a verb followed by
data-names, and Procedure A-text elements
as assembler-language instructions. These
are simplifications for the reader: the
texts actually contain codes rather than
verbs, and the P2-text for data-names
contains the.dictionary attributes of the
item, rather than its. name. The actual
text formats, including the codes, are
shown in "Section 5. Data Areas."

ADD
SUBTRACT
MULTIPLY
DIVIDE
EXPONENTIATION
Numeric IF
Numeric MOVE
SEARCH
DEBUG
INSPECT
DEBUG SUBSCRIPT
EVAL
STORE
SUBSCRIPT
EQUATE, when in SEARCH ALL
END OF, when in SEARCH ALL
The last five are verb strings 9reated
by phase 4. If the verb is one of those
listed, an appropriate verb processor is
called. Otherwise, routine PH5BVB is
called, which performs some checking of
phase 51 verb strings before passing them
as P2-text to phase 51 (see "Handling Phase
51 Verb Strings" in this chapter).
.The PH5CTL routine distinguishes
between numeric and nonnumeric IF and MOVE
verb strings as follows: the numeric IF
verb has a different verb code from the
nonnumeric IF. For all MOVE strings,
control is given to the numeric MOVE
analyzer; if this routine finds nonnumeric
operands, it returns control to routine

!!Q!g:

120

Section 2.

Method of Operation

!Qte: When phases 50 and 51 use registers
14 and 15 in their generated instructions,
Procedure A-text DESTROY and RESERVE
elements are passed to phase 6 or to phases
62, 63, and 64. The purpose of the DESTROY
element is to indicate that the contents of
the registers are not to be relied upon any
longer. The purpose of the RESERVE element
, is to indicate that the register may not be
used by phase 6 or by phases 62, 63, and 64
in the gener~ted code until a FREE element
for that register, issued by phase 50 or
51, is read.

RESOLVING SUBSCRIPTED AND INDEXED
REFERENCES
This section describes the processing of
the SUBSCRIPT verb string. It shows how
subscripted addresses are calculated and
how the XS5NT and X5CRPT tables are used to
eliminate duplicate calculation. Then the
handling of indexes (which are very similar
to subscripts and use the same tables) is
discussed.

Licensed Material - Property of IBM

To refer to a subscripted item. the object
program must know the displacement in bytes
of the desired occurrence from the
beginning of the subscripted field.
To
calculate this displacement, the following
must be known:
• The number of bytes in the entire
subscripted field.
• The relative position in the field of
the desired occurrence.
The size of the field is knoun from the
Data Division description of the field,
including the PICTURE clause of the
elementary item. The relative position is
known from the value of the subscripts.

22.") The value of ~ is the displacement
away from the BL of the beginning of the
subscripted field.
After the formula has
been calculated, the results are added to
~.
If this value is less than 4096 bytes,
it becomes the new value of d. If it is
4096 or greater, it is decremented by 4096;
this decremented value is then placed in
the g field of the XSCRPT table entry, and
the BL number is incremented by one.
The
table entry now points to the desired
occurrence at execution time.
(Note that
if the value of ~ exceeds a multiple of
4096, it is decremented by 4096 as many
times as required to make it less than
4096, and 1 is added to the BL for each
decrement.
For example, if d=13,000, it is
decremented by 12,288 and the BL number is
incremented by 3.)
Da~~subscripts:

The examples which follow shoy three
levels of subscripting. The same concepts
(and the same formula) apply to one or two
levels of subscripting.

When the subscripts
are data-names, their values vary at
execution time.
Therefore, code must be
generated to perform the calculations in
the object program. This is done in
routine XSCOMP, using the A-text generator.

The formula used to calculate a
subscripted address is:
(subscript1*length1) + (subscript2*length~
+ (subscript3*length3)
- (length1+length2+length3)
This formula is used whether the
calculation is done. in phase 50 or in the
ob ject program.
The following discussions use examples
based on this entry in the Data Division:
02

FIELD OCCURS 10 THIES.
03 SUBFIELD OCtURS 10 TIMES.
04 ITEM OCCURS 10 TIMES PICTURE XX.

19.~ill-ID!.bs££i~t2:

When all the
subscripts in a reference are literals, the
subscripted address can be calculated at
compile time (the calculation is done by
routine XSCOHP). If a reference is made to
ITEM (9, 8, 7), the calculation is:
(9*200) + (8*20) + (7*2) - (200+20+2) •
The value of the result is the displacement
in bytes of ITEM (9, 8. 7) from the
beginning of the subscripted field.
When the SUBSCRIPT string was first
encountered, an entry was made for it in
the XSCRPT table (the building of this
table is more fully described in the
section "Using and optimizing subscript
References").
One field of the entry,
called the idk field, contains a code, i, a
displacement, ~, and a base locator (BL)
Dumber. Ji.
(BLs are assigned by phase 22;
for a description, see the chapter "Phase

Suppose that reference is made to ITEM
(X, Y, Z).
XSCOMP must first determine
whether each subscript is binary.
If not,
code must be generated to get the value of
the subscript from the data area of the
object program, move it into a work area,
and convert the value in the work area to
binary. It is then handled as a binary
subscript, using the value in the \fOrk area
rather than the data area.
The generated code performs the
following actions at execution time:
o

The value of ~ in the XSCRPT table (the
address of the subscd pted field) is
loaded into a register.

• The first subscript (X in the example),
in binary, is loaded into another
register.
This subscript denotes the
desired occurrence number for FIELD,
the highest level in the hierarchy. If
FIELD is of constant length (that is,
if it does not contain the DEPENDING ON
option). the value of X in the register
is multiplied by a literal representing
the length of FIELD (200 bytes). If
FIELD does contain the DEPENDING ON
option, a value, instead of the
literal, is picked up from a VLC
(variable-length cell) where it was
placed by a Q-Routine.
This value
represents the current length of FIELD.
• The result of this multiplication is
added to the value of d in the first
register. and this process is repeated
for each subscript.
Phase 50

121

Licensed Haterial - Property of IBM

• Phase 50 has generated a literal
(referred to in this discussion as
LITX) whose value is:

TheP2-text for these statements would
be:
PN1.

(length of FIELD + length of
SUBFIELD + length of ITEK).
o

When the multiplications have been
finished and the final increment has
been added to the address in the
register, this literal is subtracted
from the register, and the result is
the address of the desired occurrence.

This computation is an exact duplicate
at execution time of the formula applied to
literal subscripts at compile time.
After routine XSCOMP has put out the
Procedure A-text for these instructions, it
changes the idk field of the XSCRPT table
entry for ITEM. It replaces the former
contents with the number of the register
which at execution time vill contain the
calculated address of ITEM (X, Y. Z), and a
code indicating that this is a register
number rather than a displa'cement.
.!!iXgd LiteraLand Data=.!!.ID!!g_ID!bscri:ets :
When the subscripts are mixed literals and
data-names, for example, ITE~ (X, 4, Z),
part of the calculation can be done in
phase 50 to save time in the object
program. XSCOMP multiplies the literal
l>llbscript by the length of the field it
l:efers to. In the example, this is 4*20
(SUBFIELD is 20 bytes long). This result
is subtracted from LITX before A-text for
LITX is generated. Then ir at object tillie,
the Inultiplications and additions lI'illbe, '
p8rformed for X and Z and this new va,lua of
LITX will be subtracted.
Note that. to arrive at a meaningful
value, the entire formula must be
evaluated. The intermediate results of a
subscript calculation are meaningless in
themselves.

Part of the function of the XSCRPT table is
to avoid duplicate calculations for a
subscripted reference. For example, given
the source statements:
PARAGRAPH1.

MOVE ITEM (X, y, Z) TO D.
ADD ITEK(X, y. Z) TO E.

It is unnecessary to calculate the address
of ITEM (X, Y, Z) twice. When the ADD
statement is executed at object time, the
correct address will already be in a
register.
122

section 2.

Kethod of Operation

SUBSCRIPT (5) ITEM X Y Z SSID1
MOVE (2) SSID1 D
SUBSCRIPT (5) ITEM X Y Z SSID2
ADD (2) SSID2 E

When the first SUBSCRIPT string is
encountered, the XSCRPT table is searched
for a matching entry. llone ,is found, so an
entry is made after the instructions for
the subscript calculations have been
generated. This entry includes the idk
field described earlier and the dictionary
pointers for ITEM and all the subscripts.
(Note that the dictionary pointer is used
only because it provides a unique
identifier. The value of the pointer
itself is meaningless.) There is also a
field for the total length of the entry
(the exact format can be found in "section
5. Data Areas.")
An entry is also made in the XSSNT
table. This entry includes the subscript
number (SSID1) and a pointer to the XSCRPT
entry.
After the SUBSCRIPT string has been
processed, the MOVE string is encountered.
Routine XIS31 (also called XSUDB3) searches
the XSSNT table for SSID1. It uses the
pointer in the XSSNT table to piclt up the
idk field in the XSCRPT table. This field
replaces SSID1 in the DOP. and the verb is
now processed as if the operand were a
data-name.
The XSSNT entry for SSID1 is now
deleted, since it vill never again be
referenced. This is because phase 4 gave a
unique number to each subscript
calculation.
When the second SUBSCRIPT string is
encountered, the XSCRPT table is searched
for a match. The search is made on total
entry length (if this does not match, the
entries cannot be identical). When the
ma tch is found, an XSSNT entry is made for
SSID2, with a pointer to the same XSCRPT
entry as for SSID1.
If there are not enough registers for
the subscripted address to remain in a
register for the second time it is
referenced, code is generated before the
register is used to store the address in a
subscript save cell.
(These cells are
located in the SUBADR field of the Task
Global Table.) An indication of this,
along with the cell number, is placed in
the. XSNIDK field of the XSCRPT entry, so
that the second time the address is needed.
the contents of the cell can be loaded into
'another register. The section "Register
and Storage Allocation" later in this

Licensed Material - property of IBM

chap tar describes hou values in registers
are saved.
Thus. the XSNIDK field may ultimately
contain three types of information:
1.

If all subscripts used in th.e
subscripted reference were literals.
the fi~ld contains a BL type. BL
number, and displacement, in the idk
format.

2.

expressing a displacement in bytes from the
beginning of the indexed field. The value
in the cell corresponds to the following
formllla:
'
(occurrence number - 1)
elementary item

*

length of

It is the responsibility of the source
programmer to set the value in the indexname via a SET statement before an indexed
reference is made. The SET verb performs
the same calculations for an index-name
that routine SSCRPT does for a subscript.

If one or more subscripts were
data-names, the field has been up~ated
to contain a register number and the
code indicating that this is a
Indexing may be direct, indirect, or
register.
Imixed (indexes and literals). Direct
indexing uses only index-names. Indirect
3. If the register is needed for some
indexing uses literals as increments or
other purpose before the subscripted
decrements. Mixed indexing consists of at
reference is used, the field contains
least one index with one or more literal
the number of the subscript save cell
subscripts. Given the Data Division
in which the register contents have
statements:
been stored, with the appropriate
code.
02 FIELD OCCURS 10 TIMES INDEXED BY A.
03 SUBFIELD OCCURS 10 TIMES INDEXED BY B.
Oq ITEM OCCURS 10 TIMES INDEXED BY C
Every time a PN, GN, or VN definition is
encountered in the P2-text, the entire
PICTURE XX.
XSCRPT table must be deleted. The reason
is shown by the following source program
a reference to ITEM (A, B, C) would be
direct indexing, and a reference to ITEM
statements:
(A+q, B-5, C+6) would be indirect indexing.
ON 2 AND EVERY 2 GO TO
Direct Indexing: The P2-text contains a
P ARAGRAPH2.
SUBSCRIPT verb string with a special code
MOVE ITEM (X, Y, Z) TO D.
in the operands to indicate that they are
PARAGRAPH2. ADD ITEM (X, Y, Z) TO E.
index-names rather than subscripts.
In this example, if PARAGRAPH2 is
Entries in the XSCRPT and XSSNT tables are
entered through the branch in the ON
made and used in the same way as for
subscripted references. Object code is
statement, the subscript calculations
generated to place the value of g from the
generated for the MOVE will not have been
idk field into a register and add the
executed, and the register will contain
values of all the index-names to it.
whatever value was left from the last time
it vas used. Therefore, the calculation
must be performed in PARAGRAPB2. Deleting
!ndi~~1_Indexinq:
Routine SSCRPT
determines that there are literals in the
all the entries in the XSCRPT table
SUBSCRIPT string. These literals are
whenever a paragraph-name is encountered
placed in an information gathering work
assures that the code will be generated.
area. When the XSCRPT entry is made for
the indexed.field referenced, the
The XSCRPT table must also be deleted
dictionary pointers are not entered, to
when any verb is enco~ntered which can pass
prevent a match from being found. This is
control to any pOint other than the next
necessary for possibilities such as the
sequential instruction. An example of such
following:
a verb is a SORT verb or any.VSAM verb.
!lOVE ITE!I (A+q, B-5, C+6) TO D.
MOVE ITEM (A, B, C) TO E.

Indexed references are resolved by the same
routines, applying the same logic, as
subscripted references. The difference in
their handling occurs because index-name
values are never known at compile time, and
because, at object time, the index-name
cells (each index-name is a 1-word cell in
the INDEX field of the TGT) contain values

If a normal XSCRPT entry was made for the
first statement, the dictionary pointers
would be identical and the second statement
would use the register set up by the first.
since the indexing does not point to the
same place, the operation would be
incorrect.
After routine XSCOMP has generated the
code to add the index-names (as described
Phase 50

123

Licensed Katerial - Property of IBM

. earlier under "Direct Indexing"), it tests
the information-gathering work area. When
literals are present, the routine generates
additional instructions. These
instructions load the literal into a free
register, multiply the register by the
length in the VLC for that level (in the
example, the literal q would be multiplied
by 200), and add this value to the register
pointing to the indexed field (this
register has already been incremented by
the index-name values). This process is
repeated for every literal. The
multiplication must be done because the
literals, unlike the index-names, represent
occurrence numbers, not displacements in
bytes.
l1;i.}f~d Lite~Lg~LDi£g£L1.~~exing:

Mixed
indexing is processed as a combination of
direct and indirect. All index-names are
processed first, then each literal is
treated as an indirect increment.

4.

Allocate registers and temporary
storage for the operation.

5.

Call the A-text Generator (described
later in this chapter) to produce the
Procedure A-text.

The formats of switches used by the
Arithmetic Translator routines are given in
Figure 31.

For each operand in a string, a work area
called an operand information buffer is set
up. There are three types of operands:
1.

Data-name operands. In the example,
all the operands named in the source
program COMPUTE statement are
data-name operands.

2.

Intermediate results. In the example,
these include all the operands named
with IR. Intermediate results are
required because arithmetic machine
instructions can handle only two
operands at a time. The result of one
arithmetic operation becomes an IR,
which is then used as an operand of
the next operation.

3.

Temporary results. These are used by
series addition and subtraction with
multiple receiving fields. For the
source statement:

ARITHMETIC VERB STRI NGS
The Arithmet ic
verb analyzers
verb strings.
statement·s and
phase 50.

Translator is a group of
used to process arithmetic
It is also used for all MOVE
IF statements processed by

Given the source program statement:
COMPUTE X=A+ (C-D/E) *F-G.

ADD M, N, 0 TO P ROUNDED, Q
the following P2-text would be generated:
EVAL DMAX DCURRENT x.•.
DIV E D IR1 (-C)
SUB IR1 C IR2 (*F)
MULT F IR2 IR3 (+A)
ADD IR3 A IR4 (-G)
SUB G IR4 IR5 (ST X)
STORE IR5 X
For a description of how phase q generates
this string, see "COMPUTE statement" in the
chapter "Phase q" where this same example
is used.
For each verb string, the Arithmetic
Translator routines do the following:
1.

Place information about each operand
in a ·work area.

2.

Determine the .sizes of intermediate
and temporary fields, and check for
possible overflow by performing
compile-time arithmetic.

3.

Determine the mode for the operation.

12q

Section 2.

Method of Operation

a temporary result is required to hold
the sum of It, N, and o.
Each operand information buffer holds
information similar to an entry in the
table XINTR. This includes such attributes
as the mode of the operand, the number of
digits to the left and right of the decimal
point, and the largest possible value of
the operand. (The format of table XINTR is
given in "section 5. Data Areas. ") For a
data-name operand, these attributes are
found in the P2-text element. For
intermediate results or temporary results,
the information is found in table XINTR,
when the operand is used in the operation.
It was placed in the table after processing
of the string in which the intermediate or
temporary result was ££~!~£. The
attributes for the intermediate result that
is the result of the operation are filled
in after processing the operands which form
it (how the attributes are found is
.
discussed in this section under
"compile-Time Ari thmetic"). When the MULT
string is processed, in the COMPUTE

Licensed Material - property of IBM

r------------.
i
/ XGSliT
11 XZSWT
r'----r-----------------·------------;/I
/ Bit

I / Bit

Heaning

,6

,7
I

Binary mode
II 0
Arithmetic o p e r a t i o n / ,
Internal decimal mode
'I
Size error in floating-point
II
conversion
I' 2
Receiving field is floating-point I' 3
End of ADD CORRESPONDING
,,4
Size error option
,,5
Rounded option
1I 6
---------------~II

I

, XG NSi

I•

Meaning

r&---;-------~--------------~II

,0
,1
,2
,3
I 4
I 5
1 6
I 7
I

,/ XOPROD

Decimal place added for rounding
Divide rounded remainder option
IKF5011I-li' already printed
Minus exponent
Bypass store operation
ADD CORRESPONDING
Size error
Subroutine entered at entry point
XOTSEM

,t

I
I
I
I
I
I
I

7

I

I
I

----'-.---------------------i

I

Y1IRX+l in operand Buffers
Equate
name

,.
"XLITZR
'I XGNCON
I' XFTPT

t,

I' XLITER
'I XINREG
I I XGDPFP

-------------------il'I I

Meaning

I

~

XR3 contains address of second
operand
set XREG2 operand; XREG1 operand
already set
Both operands processed
Length preset
Use length after scaling
Floating-point operation
Logical operation
Binary

XGOVFL

~,----r-----------------------~, I XG2IRX

I Bit

/
~

1-'

~l--_r--------------------~I'

,Bit

i

Meaning

r--~r---------------------_;14

/ 0
I 1
,2
,3
I
,4
I 5

i

,,

Bit

I

I

I

Heaning

~

0
1
2
3
4
5
6
7

Zero literal
f
Generated constant
I
Computational-lor
I
computational-2,
Literal
,
Operand is in a register
I
Double precision
I
floating-point,
OverfloH may occur
,
Double precision mode
I
~

I~---r-----'------'---------------~"

,0
,1
I 2
I 3
,4
,5
,6
,7
I
I

All subscripts are numeric
Subtract operation
Division operation
Di visor
Multiply operation
Add or subtract operation
Floating-point mode
Unused

1

tt
'1 Bit
II
'I 0
II

Figure 31.

Heaning

II 1
,,2
,,
II 3

I,

I
I I 4
I
II
f
I I 5
,
I' 6
, _ _ _- 4_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , ,_
7_
~i

I
I
I
I
I
I
I
I
I
I
,

Flag Byte in Phase 50 Internal Table for
'I Registers 0 through 5

L.~i

~

Permanent flag for floating-point
registers
subscripts being computed
Register being used for subscript
computa tion
Register being used for an
intermediate result
I
Register being used in double
I
precision mode
I
Register not available
,
Register contains operand 2
I
Register
contains
operand
1 _ _ _ _ _ JI
_
_____
_____
_._ _ _ _

Arithmetic Processing switches

statement example above, IR2 is found in
the XINTR table. The attributes of IR3 are
determined during processing of the HULT
string, and IR3 is then used as an operand
of the ADD string which follows.
If any of the operands are
floating-point, the floating-point verb
analyzer is called immediately to generate
the Procedure A-text. Otherwise,
compile-time arithmetic is performed.
No~:
The operand information buffers are
defined on the same storage as the data
'. area for the SUBSCRIPT analyzer.•

Compile-time arithmetic is performed
with the maximum possible values of the
operands (.9 in every digit position). If
one of the operands is a literal, its
actual value is used. The purpose of
compile-time arithmetic is to determine if
overflow is possible, and to determine how
many places are required to hold the
intermediate or temporary result.
For example, assume that for the string
ADD IR3 A IR4 (-G), the attributes of A
Phase 50

125

Licensed .!aterial - Property of IBM

show that i t has a PICTURE of 99V9 and the
attributes of IR3 (from tableXINTR) show
that it has a PICTURE of 9(3)V9(2). The
compile-time arithmetic 'for the maximum
value o.f the scaled operands is:
9990+99999=109989
The result
(including
IRq, which
end of the

determines the attributes
the maximum possible value) of
are placed in table XINTR at the
ADD processing.

If the intermediate result (IRq in this
case) exceeds or is equal to 10**30,
overflow is possible. To avoid overflow,
instructions are generated to truncate the
intermediate result down to 30 digits.
That is, let DMAX be the maximum number
of decimal places in any operand in the
source statement, let DIR be the number of
decimal places in the intermediate result,
and let IIR be the number of integer places
in the intermediate result. Then the rules
for truncation are:
1.

If DIR exceeds DMAX and IIR+DMAX is
less than or equal to 30, then
low-order decimal places are truncated
from DIR until IIR+DIR=30.

2.

If DIR exceeds DMAX and IIR+DMAX is
greater than 30, then low-order
decimal places are truncated from DIR
until it equals DHAX, and high-order
integer places are truncated from IIR
until DMAX+IIR=30.

3.

If DIR is less than DMAX, then
high-order integer places are
truncated from IIR until DIR+IIR=30.

The mode of the operands determines the
mode of operation. In general,. the mode of
operation is predetermined (for example, if
one of the operands is floating-point, all
of the operands are converted to
floating-point and the operation is in
floating-point). However, for operations
involving binary and internal decimal
operands, routine XHSMD is used to perform
some tests to determine whether the
operation is to be in bipary or in internal
decimal.
If any of the operands is external
decimal, it is converted to internal
decimal unless it 'is in a MOVE statement.
If an operand is sterling nonreport, it is
converted to internal decimal unless it is
the target field of a MOVE or STORE verb.
·126

If any conversions are required, they
are handled by inline conversion or calls
to COBOL library subroutines, depending on
the complexity of the conversion. See the
publica tion ;u!ILQ.§/VS-.£Q1!Ql!._.§ubt.Q.!!ti~
1ibr~y-~Qgram Logic.
for the generated
Galling sequences.

Section 2.

Method of Operation

To assign registers for an instruction,
special register handling routines are
used. These are:
• XRASG or XRSUAS to assign a single
register
• XRDBIR to assign a register pair
o

XRSASF to assign a floating-point
register

Phase 50 maintains an internal table for
registers 0 through 5, which are the
arithmetic work registers of the object
program. Each table entry contains a flag
indicating whether the register is being
used, how it is being used (for example, as
one of a pair), and what it contains (such
as a subscript or index calculation, or an
intermediate result). The format of this
flag byte is given in Figure 31.
If a register must be freed, routine
XFREER is called. The calling routine
passes the number of the register to be
freed to XFREER in the XREGNO cell of the
phase 50 data area.
(X FREER is also used
by phase 50 when it is analyzing phase 51
verbs; see "Handling Phase 51 Verb
strings.") If registers 0 through 5 must be
freed, routine DFREER
is called.
\
XFREER checks the register table entry
for the specified register and, if it is in
use, generates instructions to store it.
It must then indicate that the value
formerly in the register is no longer
there. If the register was being used for
an arithmetic operation, it updates the
operand information buffer by filling in
the number of the TEMP STORAGE (object-time
arithmetic temporary storage) cell in the
TGT where the register contents are stored.,
and the displacement of the cell in bytes
from. the beginning of the TEMP STORAGE
area. If the value in the register was a
subscript, XFREER changes the code of the
idk (addressing parameters) field in the
XSCRPT table entry (see "Using and
optimizing subscript References" earlier in
this chapter) to indicate that the value is
in a subscript save cell, and provides the
cell number. Subscript save cells are
assigned in the SUBADR field of the Task

Licensed Material - Property of IBM

Global Table (TGT) during program
execution.
operations in binary are performed in
registers. and the intermediate results are
left there whenever possible. Decimal
operations are performed in storage, with
the intermediate results placed in cells of
the TEMP STORAGE area.
Space in the TEMP STORAGE area is always
allotted in 8-byte (double !>fOrd) cells,
regardless of how many bytes are actually
requi~ed to hold the operand.
(If more
than eight bytes are needed. two cells are
allotted.) To minimize total temporary
storage area used by the program, each TEMP
STORAGE cell is made available as soon as
the value in it is no longer needed.
TEMP STORAGE cells for arithmetic
operations are assigned by using the
counter TSMAI in C.OtUI0N (for the format of
COliMON, see "section 5. Data Areas").
TSMAX contains the number of the highest
numbered double word cell that has been
assigned. .1hen a nee TEHP STORAGE cell is
assigned, this counter is incremented by
one. As soon as the value in the TEMP
STORAGE cell is no longer needed, the cell
number is placed in table lAVAL. The next
time a TEMP STORAGE cell is required, XAVAL
is searched first. If it has any entries,
the cell found there is used, and the XAVAL
entry is deleted. Only if table XAVAL is
empty is a neH TEMP STORAGE cell assigned
from TSMAX.
Intermediate results are handled in such
a way that, as soon as possible after an
intermediate result has been computed, it
is used in the next computation and is then
no longer needed. In the COMPUTE statement
shown above, for example, IR3'is the result
of the MULT operation, and then is
immediately used as an operand of the ADD.
Note that an intermediate result is also
required after the last arithmetic
operation (IRS in the example) and that the
value is then moved into the data-name
result (X) via the STORE verb.. This is
necessary because the value may have to be
converted, truncated, or aligned to conform
to the format for X.
A temporary result, on the other hand,
must be saved until all operations
requiring it are finished. In the
statement:
ADD H, N, 0 TO P ROUNDED, Q.

added to Q. When the temporary result is
added to P, its value is moved into another
cell of the TEMP STORAGE, and the operation
is performed from that cell, lenving the
original temporary result unchanged.

GENERATING A-TEXT
A-text is generated from three sources:
Constant A-text, Direct A-text, and the
A-text Generator. The nature of the text
required determines which source is used to
generate a particular block of text.
This type of Procedure
A-text resides in the phase 50 constant
area. It is stored in the form of DCs,
ready to be written out when needed. It is
used for standard, frequently occurring
object-time operations.• such as START.

£Q~nt A~1:

Direct A-text: This is generally written
as one block of instructions at a time by
routine GATXTV. The routine is called by
the verb analyzers using two parameters:
o

Displacement of the desired block of
text from the beginning of the text
area

o

Length of text to be written

The verb analyzer fills in the variable
fields. before calling GATXTV.
A-text Generator:

The A-text Generator is

called~y-a-verb analyzer to write one

instruction of Procedure A-text at a time.
It also generates Optimization A-text for
virtual and literal definitions. It is
used frequently by the Arithmetic
Translator and by other analyzers requiring
the generation of A-text too variable to be
stored as constant or Direct A-text.
To call the A-text Generator, the verb
analyzer fills in the appropriate cells in
the parameter area (see Figure 32) and
calls a particular generating routine. The
genera ti ng routine usually has the sam e
name as the instruction it produces (for
example, HVC, LOAD). The A-text Generator
has no common entry point.
Before returning to the caller, the
generating routine sets the entire
parameter area to O.
·From the parameter information, the
routine determines exactly what
type of instruction to write. For example,
if the LOAD routine finds that the only
operands specified are two registers, it
writes an LR instruction. If a nonregister
operand is two bytes long, the generating
~enerating

the temporary result (the sum of H. N, and
0) is first added to P and then added to Q.
All steps involving P (rounding,
truncation, or conversion, if needed) are
completed before the temporary result is

Phase 50

127

Licensed flaterial - Property of IBM

routine generates an LH. This occurs for a
cell such as a VLC, which is always a
halfword or a 2-byte literal. The A-text
Generator does not test the length of a
data-name.

r'---------------------------------------------------------------------------------------,
I
Parameter Cells for the A-text Generator
I
I
I

OPERAND-1 PARAflETERS

'"
I

I

I

I

1r-----,,----------------------~IDefini-1

IName

I

fleaning

,tion

,Element

OPERAND-2 P ARAKETERS

I
I

t~-----T----------------------f

, Name

Heaning

,

rl----~Ir_--------------------_+I----~Ir_----------~--;_-------------------~I

IOPl
I Pointer to the DOP I
I 1F
,
, (storage cell in t h e ,
,
,phase) for a data-name
I
"operand.
I

,

I

XL 1

XiCl

Address
Reference

,

I Length of operand (used I 1 H
Ifor SS instructions such I
I.s EX, MVC, AP). The
I
Iroutine, which generates I
Ithe text, decrements this
I valu e by 1 before using
lit, as required by these
I instructions.
I
IFor arithmetic
XL3
loperands, specifies the
loperand's position in
Ithe TEMP STORAGE field
lof the TGT. TEMP
I STORAGE is used for
I"arithmetic operands
lonly.

IOP2
I
I
I
I
I XL2
I
I
I
,
I
I
I
I
XWC2

Same as for the first
operand.

Length of second
operand (for SS
instructions with two
lengths, such as APr
SP r ZAP). The
generating routine
decrements the value
by 1.
Same as for the first
operand.

I

l1!ltes 1 ~nd ~:
Displacement of the
8-byte slot containing
this operand from the
beginning of the TEMP
STORAGE field.
~~~-l:

Number of bytes
actually required by the
operation. TEMP STORAGE
space is always assigned
in slots of 8 bytes, but
frequently an arithmetic
operand is shorter,
using only a few of the
low-order bytes.
TALLY11First operand is TALLY.

XL1

I
I
IBDISP11Base (specifies
I
I register number)
I"
I displacement of
Figure 32.

a
and
operand.
________

Address
Reference

Base and
I Di splacement
______-L,I __
XL2

TALLY21Second operand is TALLY.

I
I
BDISP21same as for the first
loperand.
I

",
Parameter Cells for the A-Text Generator (Part 1 of 4)
~

(
128

Section 2.

Method of operation

Licensed Material - Property of IBM

r--'---

Parameter Cells for the A-text Generator
'~i----'i-'-------'----'-------------------I
OPERAND-1 PARAMETERS
I
I
I OPERAND-2 PARAMETERS
1------,----------------------;IDefini-1
1
•
IName
Meaning
Ition
I Element
Meaning
I Name I

I
~

I--

I

I

RELAD110perand is referenced by I 1F
tits relative location
I
Iwithin a field.
I

I
I ~y.te-1:

I

Code indicating I
Ithe type of cell being
I
Ireferenced (the codes
I
lare listed under
I"Relative Address
I Element" in the
IProcedure A-text
Iformats, given in
I"Section 5.
Data
I Areas ll ) •
I
1~y.~-1:
Number of bytes
Ineededto express the
laddress constant.

I

-+---t

I
I

I
I
I
I

I Relative
I Address
I

.1

I
I
I
I

1
I

1
I
I
I
I
I
!

~~2-1_@L~:

1

Identifying number which
pinpoints this cell
within its field.
VIR rrc 1 Identifying number
assigned from VIRCTR
when the operand is a
virtual.
The number
begins in byte 3.
GVIRT11Name of virtual (used
I with VIRTC1) •
I
I
IXCON1 IUsed for tHO distinct
Itypes of information:
I
I
I
I (1) Operand is a. literal
I
I
I
I ~te-1::1§':
Value of
I
Iliteral, right-adjusted.
I

I
I
I
I
I
I
I
I
I
I
I
I
IL---__

IRELAD2 Unused.

1F

2F
XL17

I
I
I
I
I Virtual
I Reference
I
I
I
I
I
I
I
I Li teral
Reference

I
I
I
I

VIRTC2 Unused.

GVIRT2 Unused.
XCON2

Same as for the first
operand.

I

1~y.~-12:
Length of
I literal.
I
I (2) Operand is a DC-type
Iconstant other than an
laddress constant

I
I !!yte-1:

Length of
Iconstant.
I
i!!Y~S 2-17:
Value of
Iconstant,
__________left-adjusted.

~

Figure 32.

Parameter Cells for the A-Tex

.J

Generator (Part 2 of 4)

Phase 50

129

Licensed Material - property of IBM

,
I

I
I

,
-r-----.-----------..,

Parameter Cells for the A-text Generator
I

I

'I

I
I OPERAND-2 PARAMETERS
I
....---r,-'----..,---~-----_f Defini-I
----t
I Name I
Meaning
,tion
I Element
, Name ,Meaning
I
1----111-' I
..
XGNl IGN number when operand is 1H
lGenerated
IXGN2, Same as for the first
,
la GN reference.
Procedure-name I
operand.
I
I
Reference
,
I
I
I
I
XPNl
IOperand is a PN
1F
Procedure-namelXPN2
Same as for the first
I
I reference.
Reference
I
operand.
I
I
'
I
1~:t!L.1:
Code 00
I
I
I
I
I
'~!te~:
Priority number
I
i
10fPN
,
OPERAND-1 PARAMETERS

I

I

......f--'

,

,

I !ttte~J._!!!HL!l: PN
I
I
'Damber
' I
I
I
I
XCNTR110perandis an item in one XL3
IGlobal Table IXCNTR21Same as for the first
,
lof the variably-located
I Variablyt
loperand.
I fields of a Global Table.,
,10 cated Ar e a ,
I
I
"Reference
,
,
,~yte-1:
Type code (the ,
I
I
Icodes are listed under
I
I
I
I"Global Table
I
"
I Variably-located Area
,
"
I
I
I Reference" in t h e ,
IProcedure A-text
I
' I
I
,formats, given in
I
' I
I
I"Section 5. D a t a l
' I
I
IAreas").
I
"
,
I
I
I
I
IPLUS1 ,Displacement from
I XL3
PLUS2 ,Same as for the first
i
Ibeginning of allocated
I
operand.
I
Istorage of a
t
I
I
Iright-adjusted operand.
I
I
I
,XiNl loperand is a VN reference 1F
Variable
Pr oced ure- name
I
I
Reference
I
I !!I.~-1: Cod e 00
,
I
I
IByte-1: Priority number
I
,
,
I ~teu~!l: VN
I
Inumber
I
,
IGDEBG110perand is an item in a
Global Table IGDEBG2 Same as for the first
IL2
I
I fixed-location field of
Standard Area I
operand.
,
I a Global Table.
Reference
I
,
I
I
I Byte-1: Type code (the
I
,
Icodes are listed under
I
I
I "Global Table Standard
I
,
I Area Reference" in the
I
:1
,Procedure A-text
:,I
,
,formats, given in
I
I~Section 5.
Data
I
,
,Areas").
,I
:1
,

,

,

,

,

Figure 32.

130

Parameter Cells for the A-Text Generator (Part 3 of 4)

Sect ion 2.

!fet h od of Opera tion

Licensed Material - Property of IBM

i

Parameter Cells for the A-text Generator
I
i
i
I OPERAND-2 PARAMETERS;
I
OPERAND-1 PARAMETERSl
I
~.----~r-----------------------~IDefini-1
I
i
IName
Heaning
Ition. I .Element
I Name I
M~aning
J
.I
I
I
I
I
BLREF2 Unused.
IBLREF110perand is a base
XL2
Base Locator
1
I locator.
Reference
I
I
I
I Byte-1: Type of base
I
I locator: BL, BLL" SBL
I
·1 (llill field of idk)

1

I

I
I

,
Ilttte--4: BL number
t
XREG1 IRegister number if first
,operand is a re~ister

XL1

XREG2

I

I~:
When this is
lused, the second operand
I (unless it is a register
,also) is still
Iconsidered the first
Inon-register operand and
lis placed in the
loperand-1 cell.
I
IHB
IImmediate field value
Ifor an SI instruction.
I
XXREG IRegister number for
lindex register in an RX
t, instruction.

Figure 32.

\.,

I

r

I
.I
I'
I
I
I
I
I
I
I
I
I

Register number for
second register in an
RR instruction.

XL1
XL1
I
I
-----'

Parameter Cells for the A-Text Generator (Part 4 of 4)
require the same virtual, the virtual
ap;pears only once.

The A-text Generator does not include
literals and virtuals in the Procedure
A-text. Rather, it writes the virtual with
an optimization A-text prefix on SYSUT2 and
writes the literal as optimization A-text
on SYSUT3. At execution time, virtuals and
literals are stored in the program Global
Table. By processing optimization A-text,
phase 6 or 62 can eliminate duplicate
storage if the same. virt ual or. literal is
used more than once.'
For virtuals, the A-text Generator
assigns an identifying number to the
virtual and writes the number as Procedure
A-text. The virtual itself is then written
with an Optimization A-text prefix on
SYSUT2, along with its identifying number.
Virtual identifying numbers are assigned
from the VIRCTR cell of COHHON. This
counter is initialized to 1 in phase 00.
The counter is incremented to indicate the
number of virtuals required by the options
that are in effect. Each virtual and the
options for which it is required are listed
belovo Although more than one option may

QPti.Q!!§~hat_~.ru!:ire

SRVO
DBGO
DBG5
FLWO
STNO
CT10
TOOO
SGMO

th~

}!irtua!,
NORESIDENT
COUNT, FLOW, STATE, SYHDHP,
TEST
SYMD~lP

FLOW
STATE
COUNT
COUNT
TEST, segmentation

The total number of virtuals processed by
phase 50 is equal to the number Qf virtuals
required by the options in the above list.
At the end of phase 50 initialization, the
value in VIRCTR is one greater than the
total number of virtuals processed by the
phase. Within phase 50, whenever a new
virtual is needed, the current value of
VIRCTR is used as the virtual number, and
then the counter is incremented. 'At the
end of phase 51, the counter is decremented
by 1. (VIRCTR is the only counter in
COMMON handled in this manner. For all
other counters, the value of the counter is
incremented ~~for~ being used.)
Phase 50

131

Licensed Material - Property of IBM

When a literal reference is required,
the Procedure A-text element contains a
code and a counter. The literal itself is
put out as optimization A-text, and the
LTLCTR counter of COMMON is incremented.
An identifying number is assigned to the
literal, so that phase 6 or 64 can
determine which literal reference applies
to a given literal.
During phase 50 processing, the
optimization A-text for a literal
definition is written in SYSUT3; all other
output from phase 50 is written in SYSUT2.

Once the PH5CTL routine has determined that
a verb s~ring is not one of those processed
by phase 50, it calls routine PH5BVB to
handle the verb string.
The PH5BV~ routine first checks to see
if the verb is .onethat will use registers
o through 5 at execution time. If it'is,
routine DFREER is called to free regist~rs.
(DFREER is described in "Register and
storage Allocation" earlier in this
chapter. )
Routine PH5BVB then writes the header
and operands of the verb string on SYSUT2
as P2-text. Then it determines whether the
verb is MOVE, EXAMINE, TRANSFORM, RECEIVE,
or SEND; a MESSAGE condition; or a
subroutine test verb generated for an IF
(NOT) MESSAGE statement. If it is one of
these, routine XSPRO is called. This
routine checks to see whether there is an
object of an OCCURS clause with the
DEPENDING ON option in the data-name being
moved into, examined, or transformed, in
the CD-name, or in the data-name associated
with a RECEIVE or SEND verb.
When this. is

132

Section 2.

Method of Operation

the case, routine XSPRO generates calls to
Q-Routines.
Finally, routine
whether the verb is
deletion of all the
table.
These verbs
CALL
LINK
ENTRY
SORT
OPEN
CLOSE
ACCEPT
RETURN
READ
MERGE

PH5BVB determines
one that requires
entries in the XSCRPT
include:

WRITE
REWRITE
REPORT-CALL
RELEASE
ON
STOP
STRING
UNSTRING
SEND

RECEIVE
ACCEPT MESSAGE
CANCEL
VSAM READ
VSAM WRITE
VSAM REWRITE
VSAM DELETE
VSAM START
VSAM OPEN
VSAM CLOSE

If the verb is one of the above, routine
KILSUB is called to delete the XSCRPT table
entries.

If the OPT option is in effect, phase 50
also performs the following functions:
• Converts phase 4 optimization
Information elements (43xx) to phase 50
optimization Information elements
(COxx) •
• Primes the BLUSTBL table for the number
of BLs and BLLs present in the program.
For each reference to a data-name, it
adds 1 to the entry for that BL or BLL.
This table is used by phase 62 to
assign permanent base registers to the
BLs and BLLs. Phase 51 also updates
the BLUSTBL table.
• Writes GNUREF elements for Q-Routine
calls.

Licensed Material - Property of IBM

Phase 51 (IKFCBL51) functions in a similar
manner to phase 50.
Elements of text
written by phase 50 are read from SYSUT2.
Phase 51 checks each element and performs
whatever processing is required, based on
the type of element read. After
processing, it writes the element as
Procedure A-text on SYSUT1, as optimization
A-text on SYSUT3, or as E-text on SYSUT4.
(Optimization A-text is written immediately
after any optimization A-text that was
written on SYSUT3 by phase 50.)
Input to phase 51 can be any of the
following:

To enable phase 00 to pass a return code
back to the operating system at the end of
compilation, phase 51 must determine the
highest severity level encountered in the
program.
When routine GETNXT encounters an
element of E-text or when the phase 51
processing routines firid an error situation
requiring that E-text be written, routine
ERRPRO is called. This routine uses a cell
in COMMON called ERRSEV (for the format of
COMMON. see "Appendix A: Communications
Area"). If any E-text was generated by
phases 10, 12, 20, 22, and 21, ERRSEV was
set by phase 21. Thereafter, ERRSEV is set
by phases 3, 4, and 50 to the highest error
severity level encountered •

.. Intermediate Procedure A-text
.. Intermediate Optimization A-text
.. Verb strings
.. Intermediate E-text
An element of Intermediate Procedure
A-text may be a Q-Routine control break, or
it may be text generated by phase 50 and
requiring no further processing.
If it is
a Q-Routine control break, routine GETNXT
generates an end-of-file macro instruction,
if necessary, and writes the text element
of 4440.
otherwise, the element is merely
copied as Procedure A~text output without
the identifying prefix of 28 and its count
field.
An element of Intermediate optimization
A-text, identified by a prefix of 27, can
be a segmentation control break or a PN.
GN, or VN definition.
Verb strings written in P2-text require
processing by one of the phase 51 verb
analyzer routines.

Whenever it encounters E-text in its input
or generates an E-text element itself,
phase 50 writes it out on SYSUT2 with an
identifying prefix or, if the SYNTAX or
CSYNTAX option is in effect, on SYSUT4
without the prefix. E-text with the prefix
is referred to as Intermediate E-text.
Phase 51 recognizes it, discards the
prefix, and writes the E-text out on
SYSUT4.

Routine ERRPRO adds 1 to the severity
code of the current E-text element and
multiplies this value by 4.
(The code must
be incremented by 1 because certain errors
produce a severity code of 0; adding 1 to
the severity code distinguishes such an
error from no errors at all.)
ERRPRO then compares this value to the
current value of ERRSEV, and enters the
code of the E-text into ERRSEV if it is
higher. The E-text is then written out on
SYSUT4.
Note that this is the first time
(unless the CSYNTAX or SYNTAX option is in
effect) that E-text is separated from the
other output of a phase, rather than
embedded in it.
If the CSYNTAX option is in effect and
if any phase generates an error (E) or
disaster (D) level message, the SYNTAX
option is forced into effect.
Following
phase 50 processing if phase 00 finds the
SYNTAX option in effect, phase 00 sets the
value of LINKCNT to indicate that phase 70
is to be executed next. If phase 00 finds
that the CSYNTAX option is still in effect,
processing continues with phase 51. If
phase 51 detects no syntax error which
would cause an error (E) or disaster (D)
level message, a full compilation is
produced. Otherwise, the SYNTAX option is
forced into effect, the ERRSEV cell is set,
and control is passed to phase 00.
Finding
the SYNTAX option in effect, phase 00 sets
the value of LINKCNT to indicate that phase
70 is to be executed next; error messages
are listed and the compilation is
terminated (see "syntax-checking
compilations ll in the chapter "Phase 00 11 ) .

Phase 51

133

Licensed Material - property of IBM

'Routine GETNXT uses program breaks to
determine where to issue the START
macro-type instruction. This instruction
indicates where in the object program
control is to be passed by the
initialization routines (see the discussion
of these routines in the chapter "Phase 6")
if the program is executed by PROGRAM-ID
rather than at an alternate entry point.
Each program break read by phase 51
(except for segmentation control breaks
that are handled as described below) is
handled by the routines CHKSEG and STRTEST.
CHKSEG examines the type of break and sets
the bit configuration of STRTSW, a one-byte
switch. STRTEST checks STRTSW to determine
the exact point at which the START
macro-type instruction should appear.
STRTSW is also used to check the point at
which current processing is taking place,
for example, within the Report writer
section.
If no beginning-of-declaratives br~ak is
encountered,. the START is written
immediately after the Procedure Division
break is encountered. If declaratives are
present, the START is written after the
end-of-declaratives break has been found.

Phase 51 writes Procedure A-text on the
direct-access device SYSUT1.
When phase 6,
or phases 62 and 63, read this text,
segments must be read and processed in
order of priority, rather than in the order
in which they appear in the source program.
To facilitate this, routine SEGENTR builds
a table (called SEGTBL) containing the
relative disk address of the beginning of
each segment.
The relative disk addresses are obtained
through phase 00.
(Note that phase 00
handles all input/output requests for the
other phases.)
When phase 00 writes
Procedure A-text for the first physical
record of a segment, after the CHECK has
been issued for that WRITE, it issues a
NOTE macro instruction. The NOTE macro
instruction returns the relative disk
address of the record just written, which
is saved in SEGSAVE, a cell internal to
phase 00.
The segmentation control break
encountered by phase 51 signals the end of
one segment and the beginning of a segment
with a different priority.
Routine GETNXT
calls phase 00 with a request for the
134

Section 2.

Method of operation

SEGNOTE function.
(For a description of
the calling sequence and parameters, see
"Phase Input/Output Requests" in the
chapter "Phase 00".)
To complete the
output for the previous segment, phase 00
writes whatever is left in the buffer, and
passes back to phase 51 the value in
SEGSAVE, which is the starting address of
the previous segment. Phase 51 stores this
as an entry in SEGTBL, along with the
priority number of the previous segment.
(For the SEGTBL table format, see "Section
5. Data Areas.")
The call to SEGNOTE also indicates to
phase 00 that the next time it writes on
SYSUT1, it will be the beginning of a new
segment and another NOTE must be issued.

When a PN, GN, or VN
encountered, routine
This routine changes
Procedure A-text and

definition is
PUTDEF is called.
the definition to
writes it out.

For PN definitions, the PN number and
the priority number are saved before PUTDEF
is called. For VN definitions, the SEGLMT
cell in CbMMON (see "Appendix A:
communications Area") is tested to see if
the program is segmented (a value other
than hexadecimal FF in SEGLHT means the
program is segmented). If it is segmented,
the VN def in it ion is written as both
Procedure A-text and optimization A-text.

It is possible that earlier phases have
generated more than one GN to define a
single verb within a procedure statement.
When this occurs, several GN definition
elements are encountered in a row without
any intervening text.
If the source
program included a procedure-name at this
point, a PN definition also occurs,
preceded by one or more GN definitions.
since only one procedure-name is required
to provide a branching point in the object
program, the rest of the GNs can be
eliminated. All the GNs (and the PN, ~f
any) are collected in a phase 51 work area
called GNLIST. from which they are written
in optimization A-text as an Equate string.
In Procedure A-text, only the PN definition
is written or, if there was none, the first
GN definition (the one with the lowest GN
number).
Phase 6 uses the Equate string to
change all references throughout the
program from the equated GNs to the one for
which Procedure A-text was issued.

Licensed Material - property of IBM

If the OPT option is in effect, these PN
and GN Equate st~ings a~e not w~itten.
All
PHs and GUs a~e w~itten in P~ocedu~e A-text
~ega~dless of their position.
Since no
cells in the PGT a~e allocated for thei~
add~esses, it is not necessa~y to equate
their add~esses. They a~e addressed
instead by using a displacement from a base
register.

verbs, it calls routine DBGTEST to generate
the call. The call is also generated
before the code generated to call any COBOL
object-time subroutine or any program that
is the ope~and of a CALL statement, and
before any b~anch to a Q-Routine o~ to
report writer routines (not including
report w~i ter declara ti ves). For a
desc~iption of the COBOL library
subroutines, see the publication l~tl_Q~Y~
fQ~Q1-SuQ~outin~-1iQ£~~y-~rog£~~1Qgic.

The sou~ce programmer may have coded some
procedure-name definitions to which
reference is never made. The address cells
for such procedu~e-names can be eliminated.
To do this, routine PNUSED in phase 51
builds the PNUTBL table for phase 6 or 62.
This table contains one bit for every PH
definition in the program, ~ounded up to a
multiple of 4. The size of the table is
determined from the cell PNCTR in COMMON.
This cell ~las incremented by phase 1 B every
time a PN definition was created, and
therefore contains a count of the total
number of PNs in the program. All bits in
the table are initialized to OQ and every
time a PN is referred to throughout phase
51 processing, the bit in the table
corresponding to the PrJ nnmber is set to 1.
Phase 62 uses the PNUTBL table to determine
if a PH has been referenced. If it has not
been referenced. no entry point proceSSing
is done at the point of definition.

Phase 51 generates the object code required
for the input/output ve~bs discussed in
this section. There is a separate verb
analyzer routine for each verb.
Each
~outine may share seve~al subroutines with
othe~ analyzers.
The coding generated is basically the
linkage to an input/output routine
and, therefore, depends on the access
method. Additionally, the following
factors influence the coding:
the
organization of the data records, the
blocking factor, the ~ecording mode,
multiple buffering, use of SAME RECORD AREA
clause, inclusion of a RERUN clause, use of
label ~ecords and declaratives, and the
type of device.
~equ~ed

By convention, the following register
assignments a~e used at execution time.
o Before an input/output operation:

Phase 51 processes input/output verbs,
other nonarithmetic verb strings (including
some ~equiring calls to object-time
subroutines). and DISPLAY literals.
As
examples, the ON st~ing is discussed below
under 910the~ Nonarithmetic Verb Stringsll
and the DISPLAY verb unde~ "Verbs Requiring
Calls to Object,..Time subroutines." Samples
of coding are included in those
discussions.
If the STATE or the SYMDMP option is in
effect, a call to the COBOL library
debugging subroutine entry point ILBODBG4
is generated for all verb analyzers (except
FLOW and COUNT) which produce code
branching outside the main line of the
program.
(RoHever g this call is not
generated befo~e the call to the flow trace
sUbroutines entry point ILBOFLW1.). When
~outine PH5CTL encounters the READ,
WRITE/RE~RITE. OPEN/CLOSE, RETURN, RELEASE,
USE/ENDOSE for error and label
declaratives q and checkpoint READ and WRITE

If a DECB for a file is referred to
in the generated code for an
input/output operation. the address
of the DECB is placed in both
registers 1 and 3, and the address
of the DCB for the file is placed
in register 2.
If a DECB for a file is not
referred to in the generated code,
the address of the DCB for the file
is placed in both registers 1 and
2.
Register 15 contains the add~ess of
the input/output ~outine that
corresponds to the particular
operation and access method.
• After certain input/output operations:
Register 1 contains the address of
the next record to be read or the
next area to be written in.
o Before calls to object-time
subrou tines:
Phase 51

135

Licensed Material - Property of IBM

Register 15 contains the address of
the COBOL library subroutine to be
called.
Register 1 contains the address of
the parameter list, if any.
Note: Before the first inline call for a
SORT or MERGE statement to the ILBOSRTO
subroutine, registers 0 through 5 contain
parameters used by the subroutine.
The code generated for input/output
verbs is described in the paragraphs that
follow. In cases where a call to a COBOL
library subroutine is generated, the
calling sequence is given in the
publication U!LQ§.LYLmlillLID!brouting
1~br~f~Qg~~g~£.

The general form of the code is the
expansion of the OPEN macro. Several
additions may be made depending on the
device and access method used. A call to
the ILBOSAMO subroutine is generated for a
BDAM file opened as output. Code is
genera ted to move the address of the Error
subroutine, ILBOSYNx, into the SYNAD
address in the DCB, to move the address of
ILBOSPAO into the DCB extension, to move
the address of ILBOEXT1 into the exit list,
and'if RERUN has been specified, to move
the address of the Checkpoint subroutine,
ILBOCKPO; into the exit list. The input is
two strings, the first of which is used to
generate device-type code and the OPEN
macro expansion.· The second is used to
generate the device-dependent code needed
after the file is open. In addition, code
is generated for each file so that an
appropriate message can be produced on the
console in the event of an unsuccessful
open for a file.
OPEN~:

CLQ2E1: The code generated is the
expansion of the CLOSE macro. Additions
may be made depending on the device and
access method used. A call to the ILBOSAMO
sub~outine is generated for the CLOSE
statement for a BSAM file.
This verb may cause either of two
distinct sets of code: a GET or READ macro
expansion is generated in most cases, with
additions depending on the device and
access method used; a COBOL library
subroutine linkage is generated in special
cases.

REAg~:

1For VSAM files, all interfaces to the VSAM
access meth od are handled by the library
SUbroutines ILBOVOC and ILBOVIO. These
subroutines are described in I~M 02LY2
£OBOL S'!!Ql:2ut~~1~brgLg£oqr~1ll-1Q8ic.
136

section 2.

Method of Operation

!RITE1: This verb may cause either of two
distinct sets of code: a PUT or WRITE
macro expansion is generated, with
additions and modifications depending on
the device and access method used; a COBOL
library subroutine linkage is generated in
special cases, for example, a WRITE
statement for a BSAM file, or QSAM file. or
printer spacing.
Note: For the OPEN, CLOSE, READ. and WRITE
verbs, Procedure A-text BLCHNG elements are
written. This indicates to phase 6 or to
phases 62, 63, and 64 that if they have
permanently or temporarily loaded the
associated BL into a register, they must
reload the register or flag the register as
no longer containing the BL. For ENTRY.
SORT, MERGE. label declaratives
initialization. and referencing the TOTALED
AREA. Procedure A-text BLCHNG elements
followed by the BLL reference instead of
the base locator CBL) reference are written
to indicate that a BLL has changed and must
be reloaded into the permanently assigned
register or that the internal phase 62
temporary register cell (14 or 15) must be
flagged as no longer containing the BLL.
2!!!~:

The START statement for ISAM files
without the generic KEY specified, results
in the macro expansion of an ESETL macro
instruction, followed by a SETL macro
instruction without the key class option.
The START statement for ISAM files with
the generic KEY specified, results in the
generated code for a call to the START
subroutine. Follouing the subroutine call,
phase 51 generates the macro expansion of
the ESETL macro instruction, followed by a
SETL macro instruction with the key class
option.
DISPLAY: The DISPLAY statement results in
the-generated code for a call to the
ILBODSPO or ILBODSSO subroutine except for
a DISPLAY of an alphanumeric literal, which
results in the macro expansion of aUTO
macro instruction.
ACCEPT: The ACCEPT statement results in
the generated code for a call to the ACCEPT
subroutine, ILBOACPO. when the "FROM SYSIN"
option is used. When the "FROM CONSOLE"
option is specified or implied. a WTOR
macro expansion is generated.
RECEIVE: The RECEIVE statement results in
the-generated code for a call to the
RECEIVE subroutine, ILBORECO. The ACCEPT
MESSAGE statement also results in the
generated code for a call to the RECEIVE
subroutine, ILBORECO. A switch byte is set
to indicate that the call is for a message
condition rather than a RECEIVE verb.

Licensed Material - property of IBM

SE!R: The SEND statement results in the
generated code for a call to the SEND
subroutine, ILBOSNDO.

with the maximum value, as specified
in the UNTIL option.

~I~!§:

Phase 51 assigns identifying numbers
to ON control cells using the ONCTR
cell in COMMON.
At execution time,
each ON control cell will occupy four
bytes in the ONCTL field of the Task
Global Table, or TGT (see "Appendix B.
Object Module" for the format of the
TGT) •

The STRING statement results in a
call to the STRING subroutine, ILBOSTGO.

UN~TRING:
The UNSTRING statement may
result in one or more calls to the UNSTRING
subroutine, ILBOUSTO, and in two or more
calls to the conversion subroutine,
ILBOCVBO, at both entry points: ILBOCVBO
and ILBOCVB1. The number and order of
calls are determined by the types of
operands specified in the UNSTRING
statement.

Registers 1 and 2 are generally used
in the object program for
nonarithmetic operations.
When a
non arithmetic register is needed by a
phase 51 verb, one will have been
freed by phase 50's issuing of an
instruction to store its contents in a
subscript save cell, if necessary (see
"Register and Storage Allocation" 1n
the chapter "Phase 50" for a fuller
description of register saving) •
Subscript save cell numbers are
obtained from the SUBCTR cell in
COMMON. They correspond to SUBADR
cells in the Task Global Table of the
object program. The instructions to
save the registers would precede the
LOAD instruction.

y~~:

The USE verb, on entry to the
Declaratives section, generates code which
sets up fields (pointers) for the
information requested, such as the address
of a label or an error block.
At the end
of the section, the code needed to return
to the object-time subroutine is generated.

This section discusses the ON string as an
example of a nonarithmetic verb string.
When routine PH5CTL encounters an ON
string, it moves the operands into a uork
area and calls routine ON to process the
string.
The processing depends upon the options
given in the ON statement.
In the simplest
case (ON 1), instructions are generated to
test a switch to see if the statement
completing the ON has been executed and, if
it has, to branch around this statement.
Figure 33 shows the Procedure A-text
produced for an ON statement with an
initial value, increment, and maximum
value.
The numbers of the following
explanations refer to the circled numbers
in the figure.

o

GN1 is the generated procedure-name
assigned to the next sequential source
program statement. A branch must be
made to this statement when the ON
condition is false (that is, in this
example, when the ON instructions to
test and increment the counter have
been executed an odd number of times
or more than 16 times).

o

The literal 16 is not actually issued
in the Procedure A-text. Rather, a
literal definition element is issued,
and the literal itself is written as
optimization A-text (see "Literals and
Virtuals" in the chapter "Phase 50").
This branch statement transfers
control to GN1 (the next source
program statement) when ONCTR1
contains a value greater than 16.
This statement causes a branch to GN1
when ONCTR1 contains a value that is
less than 2.
XSASW1 identifies a cell that will
control the increment (EVERY option)
of the ON statement at execution time.
The switch will be flipped each time
the statement is executed and tested
to determine whether the imperative
statement should be branched around.
The switch is used only if the
increment is 2 or in the ON 1 case.

This instruction loads the contents of
ONCTR1 into register 3.
ONCTR1 is the
identifying number of an ON control
cell. At execution time, this cell
will be incremented by 1 each time the
ON statement is executed and compared
Phase 51

137

Licensed Material - property of IBM

r------------------------------------------~.

I

ISource statements

I---ON-~ND~VERY 2 UNTIL 16 MOVE A TO B.I

I
I

ADD C TO D.

IP2::.ru.:L~tring§

ON 2 2 16 GN1.
I
MOVE (2) A B.
IGN1. ADD (2) C D.
I
IProcedure A-text
I

'---~--~NCTR1

I

I

L
BCR

3,1 (3)
3,ONCTR1
3,= (16)
2,A(GN1)
NOTLO,2

,

C

3,= (2)

,

I
I

LA
ST
C

R£Q£edy~~ Bran£h!g~~~gmented

t
I
I
I
I

BCR LO,2
5
XI
XSASW1.X'Ol'
CLI XSASW1,X'Ol'
BCR NOTEQ,2
instructions for MOVE
IGN1. instructions
for ADD
L---____________
. __________________________

Figure 33.

To handle this, the verb analyzer calls
routine DNTOR1. This routine determines
whether the value is already in binary or
must be converted.
If conversion is
needed, DNTORl generates code which
converts the value at object time, and
places the binary value in a work area in
the TEMP STORAGE-2 field of the Task Global
Table (leaving the value in the data area
unchanged). The work area, rather than the
data area. is then used ~hen the value is
referred to.

~J

Analysis of an ON statement

The identifying numbers are assigned
from cell XSWCTR in COMMON. They
correspond to cells in the XSASW field of
the Task Global Table in the object
program.

Program:
If a GO statement transfers control out of
the current segment and the current segment
is not the root segment, phase 4 has
indicated this by passing a special verb
code (see "Checking for segmentation in
Procedure Branching" in the chapter "Phase
4").
When phase 51 encounters this verb
code, it generates a call to the COBOL
library subroutine, ILBOSGMO. or if the OPT
option is in effect, to ILBOSGIH (the
calling sequence is given in the
publication IBM OS~COBO~ sub~tiyg
LibrarY-R£ogram Logic. This subroutine
checks to see whether the necessary segment
(the one containing the object of the GO
TO) is already in storage, brings it into
storage if it is not, initializes the
segment, and transfers control to the named
procedure.

If the increment is not 2, an ON control
cell is used to control the increment.
Like the cell described in paragraph number
2, it is assigned an identifying number
from ONCTR in COMMON, and it is used in a
similar manner.

If the operand is a PN or GN in a GO TO
statement with the regular GO verb code, a
normal branch is made whether or not the
program is segmented.
No test need be
made. because phase 4 only issued a regular
GO verb code if the branch did not require
segment initialization.

Some nonarithmetic verbs create special
situations that require additional
processing. These are described in this
section.

If the operand is a VN, the SEGLMT cell
in COMMON is tested.
If the test indicates
that the program is segmented (a value
other than hexadeci~al FF), a call to
ILBOSGMO is generated. If, at execution
time, the VN is within the same segment,
the subroutine will execute a normal
branch. If the VN is not in the current
segment q the subroutine will perform
segment initialization.

Nonarithmetic Conversions:
In a few
instances, nonarithmetic-data items must be
expressed in binary during object program.
execution. These instances are illustrated
by the following source program statements:
GO TO ABC DEPENDI NG ON X.
PERFORM RTNA X TIMES.
In both these cases, the value of X must
be in binary when the statement is
executed; however, the source programmer is
not required to create'X as a binary data
item. This situation also arises in some
Q-Routines.
138

section 2.

Method of Operation

If the GO TO statement contains a
DEPENDING ON option, SEGLMT is tested to
see whether the program is segmented.
If
it is, a call to the COBOL library
subroutine. ILBOSGMO. is generated. If the
OPT option is in effect, a Call to the
COBOL library subroutine, ILBOGDOO. is
genera ted.
This subroutine passes' control
to the appropriate PN. If the program is
segmented, the address of entry point
ILBOSGM1 is passed in register 2 to the
ILBOGDOO subroutine. This subroutine then
determines which PN to branch to and passes
control to entry point ILBOSGM1 to do
standard processing for segmentation.

Licensed Material - property of IBM

yer~ill!irin~!~s

for a discussion of hOH this text is
produced.

to-iUdgct-Time

Subrol1tine§
In this section, the DISPLAY verb is
discussed as an example of a verb which is
executed by a COBOL library sUbroutine.
(This discussion assumes that neither the
DYNAK nor RESIDENT option is in effect and
that the COBOL library DISPLAY subroutine,
ILBODSSO, cannot be used.)
The discussion
is based on the DISPLAY statement shown in
Figure 34.
In this example, A, B, C, D,
and E are data-names whose USAGE is DISPLAY
and whose PICTURE is XX. The numbers of
the following explanations refer to the
circled numbers in Figure 34.
Phase 4 puts a maximum of five
operands in a string.
since the
number of operands in this DISPLAY
statement requires a continuation
string, the first operand generated by
phase 4 is the COBOL word FIRST, and
the last operand is the COBOL word
END. This is the form of all
continued strings. The second operand
identifies the device and the third
through next-to-last operands are the
data items named in the source
statement.
(Note that the P2-text
contains the attributes, not the
names, of the data items.)

This parameter gives the device code,
which is 02 for CONSOLE. The section
on ILBODSPO in the publication 1~~
OSLVS~Q1..2ubrQ!!tin~Libll!:.Lg~.Qg~s.!\

Logic, contains a complete list of
device codes.
This parameter and the three which
follow it give operand information for
data-name A. Each operand is
specified in a 10-byte field.
The
description of ILBODSPO in the
publication IBM OSLV~£QBOL S!!Q£Qutin~
l..ib~rr_progrill!LLoill:£, gives all the
codes; the meanings of the codes used
in this example are as follows:

0-0-

Code

Meruling
Specifies the type of
the item. In this case,
data-name A is
nonnumeric, ready to
display.

000002

Specifies the length of
the item. Since the
PICTURE for A is XX, the
length is two bytes.

IL4(BC-DIS~

Specifies a displacement
of an item from the
beginning of the table
identified by a base
code.

1F

Specifies the
displacement of A from
the beginning of the
area controlled by its
base locator.

I

1~Q.!!tQ~llat~1!i

I
DISPLAY ABC D E UPON CONSOLE.
I
IP2::.:!:.nl=.
I
DISPLAY (5) FIRST CONSOLE ABC
I
DISPLAY (3) D E LAST
I
I f£Q. cedull.-A::!~i
L
BALR
DC
DC
DC
DC
DC

15, =V (ILBODSPO)
1,15
XL2'02'
~
XL1'00'
XL3,000002'
AL4(BC-DISP)
XL2 '1F'

DC

X'FFFF'

~

0

0

Figure 34.

o

Analysis of a DISPLAY Verb

ILBODSPO is the name of the COBOL
library DISPLAY subroutine. since it
is a virtual (for a definition of
virtuals, see the glossary), it is not
uritten as part of the Procedure
A-text.
Rather, its virtual number is
written as Procedure A-text; the name
of the virtual itself is put out as
Optimization A-text. See "DISPLAY
Literals" below and "Literals and
Virt~als" in the chapter "Phase 50"

Following the description of A are
similar 10-byte fields describing each
of the other operands. The code FFFF
follows the last description.
No~:
As a special case, the DISPLAY of a
single alphanumeric literal UPON CONSOLE
generates an in-line WTO
(write-to-operator) coding, rather than a
call to the library subroutine.

If the STATE option has been specified,
a call to the library subroutine ILBODBG4
is generated before any DISPLAY coding.

Generation of A-text, including literals
and virtuals, is almost identical to that
performad in phase 50. There is one
exception, however. If a literal is in a
Phase 51

139

Licensed Material - Property of IBM

DISPLAY statement that requires a call to a
COBOL library subroutine, a separate
DISPLAY literal Optimization A-text element
is written. This element is of a different
type than an internal literal. It is
generated differently so that phase 6 or 62
can build separate tables for internal and
DISPLAY literals and search these tables
using different techniques.

(24) elements for PERFORM verbs, and VN
EQUATE (44) PN (4C) elements, and

(3~

Phase 51 contains a verb analyzer routine
for each of the VSAM input/output verbs:
OPEN, CLOSE, READ, WRITE, REWRITE, START,
and DELETE. The VSAM verb routine:
If a variable-length move or compare is
required, the MVCL (for a move) or the CLCL
(for a compare) machine instruction will be
generated.
If a compare involves a field
greater than 256 bytes in length or if the
receiving field for a move is greater than
512 bytes in length, the CLCL or MVCL
machine instruction, respectively, is
generated.
If the receiving field for a
move is right justified and the receiving
field for the move is either greater than
512 bytes in length or variable in length,
a call is generated to the ILBOSMVO COBOL
library subroutine.

• Analyzes the operands in the verb
string.
• Creates the parameter list to be passed
to the object-time subroutine that
performs input/output operations for
VSAM files.
• Generates the calling sequence for
object-time subroutine.
The calling sequences to the COBOL
object-time subroutines (ILBOVCOO, and
ILBOVIOO) are described in I~~OS/VS_£OBOL
~~h~Q~ting_1ib£arY_R£~~_Logic.

GENERATING CALLS TO THE ILBOVCOO AND
ILBOVIOO SUBROUTINES
If the OPT option is in effect, phase 51
generates the following text elements:
• Procedure A-text BC elements'following
a call to the COBOL library
segmentation or GO TO DEPENDING ON
subroutine.
• Procedure A-text CO elements,
specifically, COOl, C003, and C006.
• Optimization A-text GNUREF (1C)
elements, PNUREF (20) elements, GN-VN

140

section 2.

Method of operation

The COBOL object-time subroutines act as
the interface between the COBOL object
program and VSAM. It uses the File
Information Block (FIB) (built by phase
21), the File Control Block. (FCB) (created
at object-time), and the parameter list and
options list (created in the calling
sequence for the subroutine by phase 51).
Phase 51 determines the parameters and the
list of options by examining the verb
string following each VSAM verb.

Licensed Material - Property of IBM

Phase 6 (IKFCBL60) prepares a machine
language program suitable for input to the
linkage editor. The elements of this
program are described in the chapter
"Object Hodule." The phase is divided into
several sequential parts, each of which
performs specific functions.
These are, in
order:
o

o

o

The output of phase 6 depends on the
compiler options specified by the user or
determined by defaults set at installation
time. The SXREF and XREF options have
already been mentioned. The following are
the other options that determine the output
produced by phase 6:

Determines object program storage
allocation for the TGT (Task Global
Table) by processing counters in COMMON
and calculating the displacements of
items that reside in the TGT at
execution time.
optimizes literals, virtuals, source
procedure-names. and compiler generated
procedure-names by processing
Optimization A-text and the PNUTBL
table; determining storage allocation
in the PGT (Program Global Table) for
these items and calculating their
displacements, using counters in
COMMON.
with Procedure A-text as input,
generates and writes machine language
instructions. If the program is
segmented, grouping the sections of
instructions into segments.
If the
SXREF or the XREFoption was specified,
writes procedure-name and data-name
defi- nitions on DEF-text. and
procedure- name and data-name
references on REF-text, for input to
phase 6A.
.. With Data A-tex.t as input, writes
object text for the data area of the
object program.
G writes object text for the TGT and
PGT from the RLDTBL table and Data
A-text.

o writes object text for the INIT2,
INIT3, and INIT1 routines of the object
program, in that order.
o Writes EXTRN statements for any
program referenced by a CALL statement.
.. Passes E-text to phase 70 by storing
it in the ERRTBL table, or by writing
it on SYSUT3 if the table overflows.
If the TERM option was specified,
incrementing the ERRNUM cell in COKMON
each time a message definition element
of E-text is encountered.

Result
Causes the-TGT, Literal Pool,
PGT. register assignments,
Working-storage message, and
a listing of the object text
to be written on SYSPRINT.
CLIST

Causes the TGT, Literal Pool,
PGT, register assignments,
working-storage message, and
a condensed object program
listing to be written on
SYSPRINT.
The object program
is limited to the card
number. verb name (or verb
number if the program is
segmented), and address of
the first instruction for
each verb.

DKAP

Causes the TGT; Literal Pool,
PGT, register assignments,
and the working-storage
message to be written on
SYSPRINT. This option has
already caUsed phase 3 to
print a Data Division
glossary.

LOAD

Causes the object program to be
written on SYSLIN.

DECK

Causes the object program to be
written (punched) on
SYSPUNCH.

BATCH
NAME

If both the BATCH and NAME
options are specified, they
cause a linkage editor
control card to be generated
at the end of the object
program, so that the object
program will be a separate
load module.
If BATCH is
specified, the relative
number of this compilation in
the batch appears among the
statistics printed by phase
6.
Phase 6

141

licensed Material - Property of IBM

~ig:
The linkage editor
control card generated for the
BATCH and NAME options is
produced by phase 65 if the
FLOW or STATE option is
specified.

FtoW[=n[n] Causes the flow trace facility
to be included in the object
program. The number [n[n]]
of traces requested is
retained in the FLOHSZ cell
in COMMON and is passed to
phase 65, which places the
number in the variable
portion of the TGT.
STATE

Causes the statement number
facility to be included in
the object program. phase 6
writes Debug-text elements on
SYSUT2 for use by phase 65.

For all compilations, compiler
statistics are written on SYSPRINT from
COMMON, where they Here saved by phase 02.
The user may specify both the LOAD and
DECK options, in which case the object
program is written on both SYSLIN and .
He may also specify NOLOAD and
SYSPUNCH.
NODECKj in this case, he receives no
executable copy of .his object prog~am.
If no output was requested (no PMAP,
LOAD, DECK, CLIST, DMAP, BATCH, NAME,
STATE, SXREF, XREF, VBREF, or VBSUM), phase
6 text processing is bypassed unless the
TERM option was specified. In this case,
phase 6 scans the E-text on SYSUT4 and
increments the ERRNUM cell in COMMON.
After phase 6 scans the E-text, it rewinds
SYSUT4 and returns to phase 00. Phase 00
uses the count in ERRNUM to write a message
to SYSTERM giving the number of errors
encountered for the compilation. Phase 6
also sets a bit in COMMON to indicate
whether phase 70 is required (see
"suppression of Output Listing" below).

If the SUPMAP (suppress map) option is in
effect, no output is produced by phase 6 if
a D-level or E-level error message was
generated by any phase. This is determined

142

Section 2.

Method of Operation

by testing the ERRSEV cell in COMMON.
A
value of 12 or greater means that at least
one D-Ievel or E-Ievel message occurred.
The ERRSEV cell was set by phases 2, 3,
4, 50, and 51 every time they encountered
or generated an element of E-text (see
"E-text" in the chapter "Phase 51"). A
test is made for this condition upon
entering phase 6. If it occurs, a message
is printed and the text is not processed
unless SXREF or XREF is specified.
If the SUPMAP condition occurs and
neither SXREF or XREF was requested, phase
6 terminates processing after i t sets two
bits in COMMON (bits 6 and 7 of the second
byte of SWITCH). Bit 6 indicates that
phase 70 is to be called, and bit 7
indicates to phase 70 that E-text must be
read from SYSUT4. However, if the TERM
option was specified, phase 6 scans the
E-text on SYSUT4 and increments the ERRNUM
cell in COMMON. After phase 6 scans the
E-text, it rewinds SYSUT4 and returns to
phase 00.
If SXREF or XREF was requested, text is
processed but the only output is REF-text
and DEF-text (which phase 6A uses to
produce the cross-reference listing). The
ERRTBL is built, or E-text is written on
SYSUT3. A bit is set in COMMON (bit 6 of
the second byte of SWITCH), indicating to
phase 6A that phase 70 is required. If
E-text was written on SYSUT3, bit 5 of the
second byte of SWITCH is set to indicate
that E-text must be read from SYSUT3.
Phase 6 does not write object text in
execution-time sequence. Rather, it
instructs the linkage editor to reorder the
text by assigning relative addresses.
To
do this, it allocates space for areas that
will be· written later, incrementing the
LOCCTR (location counter) cell of COMMON to
reflect the relative location at execution
time of the area currently being processed.

The symbols used in the Listing and
Glossary to define compiler-generated
information are shown in Figure 35.

Licensed Material - Property of IBM

r----------,I-----------------------------------~

Isymbol,
Definition
I
I
Base Locator
BL
BLL
Base Locator for Linkage section
CKP
Checkpoint Counter

,

DBGC
DBGI
DBGT

Debug Card Number
Debug Information Pointer
Debug Transfer

DCB
DEC
DNM
FIB
GN
INX
LIT

DCB Address
DECB Address
Source Data Name
FIB Address
Generated Procedure-name
Index Cell
Literal

ON
OVF

ON Counter
Overflow Cell

PBL

Procedure Block (Optimizer)

PFM
PN
POV

PERFORK Counter
Source Procedure-name
PGT Overflow

PRM
PSV
RSV
SAY
S12

Parameter
PERFORM Save
Report Save Area
Save Area Cell
Input/Output Error Save Cell

SA3

OPEN Parameter

I
I

SBL
Secondary Base Locator
SBS
Subscript Address
SSVE
Sort Save Area
SiT
switch Cell
TLY
Tally Cell
TOV
TGT OVerflow
TS
Temporary Storage Cell
TS2
Temporary Storage (NOn-Arithmetic)
TS3
Temporary storage (Synchronization)
TS4
,Temporary storage (Table-Handlin g)
V(BCD NAME). I Vitrual
VIR
,virtual Cell
. vtc
I Variable Length Cell
VN
I Variable Procedure-name
VNI
,Variable-name Initialization
He
,Working Cell
I
ISA
IExhibit Save Area
lSi
IExhibit
Switch
L---______
________________________
~

Figure 35.

Description
See "BL" in IITask. Global Table"
See "BLL" in "Task Global Table"
See "CHECKPT CTR" in "Task Global
Table"
See "DEBUG CARD" in "Task Global Table"
See "DEBUG PTR" in "Task Global Table"
See "DEBUG TRANSFER" in "Task Global
Table"
See "DCBADR" in "Program Global Table"
See "DECBADR" in "Task Global Table"
See "Glossary Building"
See "FIB" in "Task Global Table"
See "GN" in I'Program Global Table"
See "IND" in "Task Global Table"
See "Literal" and "Display Literal" in
"Program Global Table"
See "ONCTL" in "Task Global Table"
See "OVERFLOW" in "Program Global
Table"
'
See "PROCEDURE BLOCK'" in "Program
Global Table"
See "PFMCTL" in "Task Global Table"
See "PN" in "Program Global Table"
See "OVERFLOW" in "Program Global
Table"
See "PAR AM" in "Task Global"
See "PFMSAV" in "Task Global Table"
See "RPTSAV" in "Task Global Table"
See "Save Area" in "Task Global Table"
See "Save-Area -2" in "Task Glo bal
Table"
See "Save-Area-3" in "Task Global
Table"
See "SBL" in "Task Global Table"
See "SUBADR" in "Task Global Table"
See "Sort Save" in "Task Global Table"
See "Switch" in "Task Global Table"
See "Tally" in "Task Global Table"
See "OVERFLOll" in "Task Global Table"
See "TS" in "Task Global Table"
See "TS-2" in "Task Global Table"
See "TS-3" in "Task Global Table"
See "TS-4" in "Task Global Table"
See "Virtual" in "Program Global Table"
See "Virtual" in "Program Global Table"
See "VLC" in "Task Global Table"
See "VN" in "Task Global Table"
See "VNI" in "Program Global Table"
See "working Cells" in "Task Global·,
Table"
I
I
See "XSA" in "Task Global Table"
See "XSASi''' in "Task Global Table"
I

--~--------~----

Symbols Used in the Listing and Glossary to Define Compiler-Generated
Information

TASK GLOBAL TABLE

STORAG~!LLOCAtION

When phase 6 receives control, the LOCCTR
cell contains the relative address of the
Task Global Table (TGT) in the load module.
LOCCTR was set by phases 22 and 21, which
added the length of the data area to that

of the INIT1 routine.
(These areas precede
the TGT in the load'module.)
Routine TGTINT first does preliminary
computations to determine the length of the
entire TGT. If this length exceeds, 4096
bytes, one 4~byte OVERFLOW cell is
allocated for each 4096-byte area after the
Phase 6

143

Licensed Material - Property of IBM

first. Then this routine computes the
locations of TGT fields after the OVERFLOW
cells.
Some fields of the TGT are constant in
lengthi others are variable, depending on
the requirements of the pl:ogram being
compiled. For most of the variable fields,
there is a counter in.COMMON used to
compute its length. When the value has
been used •. the counter is set to the
displacement of the current field in the
TGT. Figure 36 lists these counters and
the TGT fieldS to which they correspond.
In a register called RW1, a counter is kep~
of the displacement of the current field in
the TGT.
Some of the counters in COMMON specify a
number of bytes. Others specify a number
of entries, where each entry requires two
or eight bytes. In the latter case, the
value of the counter is multiplied by 2 or
4 before it is used to compute
displacements.
This is done in routine DsPLAC, which is
called for each variable-length field. Two
parameters are passed to this routine: the
address of the counter in COMMON, and the
number of bytes for each entry. From the
number of bytes, DsPLAC ·a1so determines
boundary alignments. DsPLAC places the
value of RW1 (the displacement of the field
in the TGT) into the counter, and adds the
length of the field to RW1.
If the PMAP, CLIsT, or DMAP options are
in effect, DsPLAC calls routine MAPLOC,
which prints one line at a time.
If the statement number option (STATE)
or the flow trace option (FLOW) was
specified, the SWITCH cell, the current
priority cell (for STATE only), the TGTTAB
pointer, and the TGTTAB information are set
by phase 65.
After the length of the entire TGT has
been calc u1a ted, the value of RW 1 (the
length of the TGT) is added to the LOCCTR
cell. The value of the LOCCTR cell is now
the displacement of the PGT.

~~!MIZIN~

STORAGE FOR THE PROGRAM GLOBAL

~!llE.

The general function of this part of phase
6 is to allocate space for the Program

144

section 2.

Method of Operation

Global Table (PGT) in the same way that TGT
storage was allocated. Before this can be
done, however, the required space must be
determined for the literals, virtua1s, and
procedure-names that reside in this table
at execution time. The routines that
determine the lengths of these fields also
optimize the contents of the fields by
eliminating duplication.
For optimizing, the PNUTBL table and
optimization A-text are used. The
processing of the PNUTBL table occurs
first. Then the optimization A-text is
read and processed.
optiiniza t:Lon .A-text, which was generated
by phases 50 and 51, contains the following
kinds of elements:
• EQUATE strings, which equate any
procedure-names (PNs) and generated
procedure-names (GNs) that refer to the
same location (for a description of how
and why these strings are built, see
"Building PN and GN Equate strings" in
the chapter "Phase 51").
• Literal definitions, containing the
actual value of the literal.
• DISPLAY literal definitions.
• Virtual reference definitions for
.input/output error routines.
• Virtual definitions.
• Variable procedure-name (VN)
definitions, if the program is
segmented~

VN definition elements are not used for
optimization. They are included in the
optimization A-text for a segmented program
because they are used to build a table
(called VNPTY) which must be in storage for
the next part of phase 6 processing. As an
element is read, it is entered unchanged
into this table. After the Optimization
A-text file has be.en closed, the VNPTY
table is sorted in ascending order of
priority number.

Licensed Material - Property of IBM

r--

i

I

I

I
I
I
Multiplication I
I Counter I Contents From Earlier Phases
I TGT Field
Factor
I
~
I
I
~
I TSMAX
INumber of bytes needed for arithmetic temporary I TEMP
8
I
I STORAGE
I
I
I storage.
~
I
I
~
1 TS2M1X INumber of bytes needed for nonarithmetic
I TEMP
I
I
I temporary storage.
I STORAGE-2
I
I-I
I
'
I TS3MAX
INumber of bytes of uork area for aligning
I TEMP
I
I
I non-SYNCHRONIZED data items.
I STORAGE-3
I
I
I
I . ,
I TS4MAX INumber of bytes of work area for table-handling I TEMP
I
I STORAGE-4
I
I
I verbs.
!
+1 - 1
I BLLCTR INumber of base locators assigned to Linkage
I BLL
4
I
I
I
I
I Section.
I
I
1---:-1
I VLCCTR INumber of variable-length cells (containing
I VLC
2
I
I
I current length of a variable-length field).
I
I
I
I
I . ,
I INDEX1
INumber of index-names defined in INDEXED BY
I INDEX
4
I
I
I
I
I clause.
,
I
I
~
I SBLCTR INumber of secondary base locators (location of I SBL
4
I
I
I a field variably located because it follows a I
I
I
I
I
I
I variable-length field) •

I PSVCTR

t
--+-----+.,
INumber of base locators assigned to files and
I BL
I
4
I
I eorking-storage.
I
I
I
+I
I
-----t
I Number of subscript save cells.
I SUBADR
I
4
I
I
I
-+
.,
INumber of ON control cells.
I ONCTL
I
4
I
I
I
I
-----t
INumber of PERFORM control cells (for PERFORM X I PFMCTL
I
4
I
I THiES) •
I
I
I
I
I
I
.,
INumber of PERFORM save cells.
I PFMSAV
I
4
I

I--

I

INumber of variable procedure-names.

I VN

I

I--

I

I

I

I--

I BLCTR
I
I
I SUBCTR

I-1 ONCTR
I-I PFMCTR
I
I--

I VNLOC*

I DECBCT
I
I XSHCTR
I XSACTR

INumber of DECBs.
I
lNumber of EXHIBIT s~itches.
I
INumber of bytes for EXHIBIT saved area.

~

I

I--

I

I
I
I
I
I
I
I
I
I

DECBADR
XSASW
XSA

I

I
I
I
I
I

~

8
4

I

-----t

-r

I
-I
I
-I
I
-I
I

I PARMAX
IArea needed for parameter lists.
PARAM
I
4
I-I
I
-----t
I !BICTR INumber of FIBs for VSAM files.
FIB
I
4
I
•
-I
I*The number of VNs in the program is passed to phase 6 in the VNCTR cell of COMMON, notl
the VNLOC cell. However. this value is moved into the VNLOC cell and all further TGT I
(The number of VNs in the program must also I
I processing uses VNLOC rather than VNCTR.
I be known for PGT allocation to determine the size of the VN field in the PGT. This
I
I value is saved in VNCTR.)
________________________. _ _ _ _ _ _ _ JI
Figure 36.

Use of Counters in COMMON to Allocate Space in the TGT for variable-length
Fields (Part 1 of 2)

Phase 6

145

Licensed Material - Property of IBM

r--

or-

-,

I
I
I Counter I

Contents From Earlier Phases

Multiplication I
Factor
I

TGT Field

r-------;---------------.----------------------------r---------~------------~~

I RPTSAV
I
I
I CKPCTR
I
•
I SA2CTR

i

....... -

I SA3CTR
IL---____

!Report writer save area requirements.

I
I

INumber of checkpoint requests.

I
I

.

IUSE LABEL or USE ERROR procedure save area
I requirements.
IMaximum number of files specified in an OPEN

I

~

Figure 36.

statement~
______________________________________________
.__

REPORT
SAVE

4

CHECKPT
CTR

4

SAVE
AREA-2

4

SAVE
4
AREA-3
__________ ________________

~~

~.

I
I
-Ii
I
!

~~

Use of counters in COMMON to Allocate Space in the TGT for Variable-length
Fields (Part 2 of 2)

QRtimizing PNs and GNs

PNUTBL

PNTBL
,---,

v---,

The first step in optimizing PNs and GNs is
to allocate space in the compiler table
area for the PNTBL and GNTBL tables.
The
lengths of these tables are determined from
the values of PNCTR and GNCTR in COMMON,
respectively. Then, in routine PNUPRO. the
PNTBL is processed against the PNUTBL.
(The PNTBL, containing one entry for each
procedure-name in the program, is used only
in phase 6; the PNUTBL was built by phase
51. See ~Building the PNUTBL Table" in the
chapter "Phase 51", for a description of
how and why this table was created.)
If a
PNUTBL entry has a value of 1. the
corresponding PNTBL entry is numbered. The
numbers are sequential beginning with 1.
If the PNUTBL entry has a value of 0, this
means that the procedure-name is never
referred to in the program and can be
eliminated; therefore, the corresponding
PNTBL entry is set to O.
Once the PNTBL
values have all been set, the PNUTBL table
is released.
Figures 37 through 39 ShOM an example of
this processing for a program containing
six PNs and six GNs.
In Figure 37, the
table entries are shown as they would
appear after the PNUTBL processing.
Optimization A-text is then read by
routine READF2. Each time a PM or GN
Equate string is encountered, READF2 calls
the routines (PNEQUR or GNEQUR,
respectively) that process these strings.

146

I
I

Section 2.

Method of Operation

1 I 1 I

1

I 1 I

I----f

l--f
2 I o I

GNTBL
r-i

I 0 I

a----1

2 I 0 I

2 I 0 I

3 I 1 I

3 I 2 I

3 lOr

4 I 1 I

4 I 3 I

4 I 0 I

1--1

&---f
5 I o I

5 I

r--.f

1---1
~

5 I 0

f---f

,

l---f

1---1

I----f

~----'j

~~

o

I

~-4

6 I 1 I

6 I 4 I

6 I 0 I

'-----I

'----.J

L---~

Figure 37.

PNUTBL. PNTBL. and GNTBL Tables
at the Beginning of
optimization Processing

Figure 38 shows the effect of a PM
EQUATE string indicating that PN3 (the
number found in the PNTBL entry for
PN3, 2 in the example) is entered into the
slot for GN1. If there were no other
Equate strings read, the following would
occur after the optimization A-text file
had been closed: GN2 through GN6 lfOUld be
assigned relative numbers sequentially,
starting with the number after the last
referenced PN number in the PNTBL table
(which is 4 in the example). The GNTBL
entries would then read 2, 5, 6, 7, 8, 9.
If, however. as shown in Figure 38, a GN
equate string is encountered equating GN2
with GN4 and GN5, the relative number of
GN2 is assigned to GN4 and GN5. This
number will be 5, since GN2 will contain
the next sequential number after PN6.

Licensed Material - Property of IBM

GNTBL
i

1 I

I
2 I
..
3 I

i

2

I Equates GN1 to PN3

of

5
0

I
I
I

4 i s i } E q u a t e s GN2, GN4,
a
I and GN5, which it
5 I
5
I can be assumed Hill
I
I be assigned a rela6 I
0
I tive number of 5.
---I

I

Figure 38.

GNTBL Table after PN and GN
Equate Strings Have Been
Processed

After the optimization A-text file has
been closed, relative numbers are assigned
to each GN not equated to a PN or another
GR. The completed GNTBL table for the
example is shOlfn in Figure 39.
GRTBL
I

I
I
2 I

•

5

5

il5 I

5

6

I
-f
I

---t

I
I
I
I
I

I---~

7

I

Figure 39.

When a literal definition is
encountered, the CONTBL or CONDIS table is
searched for an entry identical to the
literal.
(To be identical, two internal
literals must meet the same boundary
requirements as well as have the same
value.)
If no match is found, the new
literal is entered into the CONTBL or
CONDIS table. Any bytes skipped because of
boundary alignment are filled with zeros.
The displacement of this entry from the
beginning of the table is placed in the
LTLTBL table, with a bit set to indicate
IIhether it is a CONTBL or CONDIS en try.
If
a match is found, only an LTLTBL entry is
made. This LTLTBL entry is the
displacement of the CONTBL or CONDIS entry
that matched the literal being processed.

I

2

3 I
I
4 I

6 I

routines build three tables:
the CONTBL
and CORDIS tables (for regular and DISPLAY
literals, respectively) contain one entry
for each unique literal, and the LTLTBL
table contains an entry for each use of a
Ii teral.

I
---I

GNTBL Tabie after the Relative
Numbers Have Been Assigned

Figure 40 sholls an example of these
tables after all optimization A-text has
been processed. The Optimization A-text
contained literal definition elements for
the folloeing literals:
8, 3(DISPLAY), 3, 9, Y (DISPLAY), 8
After the Optimization A-text data set
is closed, the Literal Pool is Britten on
SYSPRINT, using the contents of the CONTBL
andCONDIS tables, if the PMAP, CLIST, or
DMAP options are in effect. The Literal
Pool is also written on SYSPUNCH and
SYSLIN, as needed.

!Qi~:

In the object code listing, the
optimized GNs are numbered sequentially
starting with 1. The numbers to the left
of the tables in Figures 37, 38, and 39 are
A-text PN and GN numbers before
optimization. They represent implicit
positions in the tables.

QPtimizi~~iterals

and DISPLAY Literals

The literal optimization routines are used
to eliminate storage duplication in cases
where the source programmer used the same
literal more than once. Routine LTLRTN
processes internal literals, and routine
LTLDIS processes DISPLAY literals. These

The virtual optimization routine (VIRRTN)
is used to eliminate storage duplication in
cases wher e the same EBCDIC name of a
called program is referred to in more than
one CALL statement or in more than one call
to a COBOL library object-time sUbroutine.
The logic of this processing is similar to
that of literal optimization. Two tables
are built:
the CVIRTB table contains one
entry for each unique virtual, and the
VIRPTR table contains one entry for each
reference to a virtual.

Phase 6

147

Licensed Material - Property of IBM

r-'-

r---------------------------,I

CONTBL
r

Literals I
lI
I
I

I

8
3

~

9

I

L

CONDIS

,

DISPLAY I
Literals lI

CVIRTB

I
I
I

3

CVIRT1
Write text,
increment
RW1, and
release
tables.

CVIRT2
CVIRT3

L-._ _ _ _ _--.J1

y

,

~---------------------------------~

I
I
I

L

j,~

I-------~,

I
I
I
Write text, I
increment
,
RW1, and
,
release
I
tables.
,

I

LTLTBL
r-

I

10 (CONTBL displacemen t of 8) I
I
I
10 (CONDIS displacement of 3) I
lI
11 (CONTBL displacemen t of 3) I
lI Add PGT
12 (CONTBL displacement of 9) I displacelI ments andl
15 (CONDIS displacemen t of Y) I
I
I
I
I
10 (CONTBL displa'cemen t of 8) I
I
---I
I

r--------~---------~----~------~I

INote: For this example, the values in
I LTLTBL assume that each CONTBL entry is
lone byte long and each CONDIS entry is
Ifive
' - - bytes long.

___

Figure 40.

I
I
I
I

CONTBL, CONDIS, and LTLTBL
Tables after Processing
Literals

When a virtual definition is
encountered, the CVIRTB table is searched
for an identical entry. If none is found,
the new virtual is entered in the CVIRTB
table. Into the VIRPTR table is entered
the displacement of this virtual from the
beginning of the CVIRTB table. If a match
is found, only a VIRPTR entry is made.
This VIRPTR entry contains the displacement
in the CVIRTB table of the entry that
matched the virtual being processed.
Figure 41 shows the contents of these
tables after processing Optimization A-text
for a program containing the following
virtuals:
CVIRT1, CVIRT2, CVIRT3, CVIRT1, CVIRT2.

148

Section 2.

Method of Operation

When all Optimization A-text has been read,
storage is allocated for the PGT and PGT
initialization is done. Entries for the
External symbol Dictionary are created for
virtuals, and object text is written for
virtuals and literals. Register RW1 is
used throughout PGT allocation to hold the
displacement of the field currently being
processed. counters in COMMON are set to
the displacements of their corresponding
PGT fields from the beginning of the PGT.
If the PMAP, CLIST, or DMAP options are
in effect, the format of the PGT is written
on SYSPRINT using routine MAPLOC.

Licensed Material - property of IBM

r--------------------------------------------,
VIRPTR
r--------,

Preliminary calculations are made to
determine whether the size of the PGT
exceeds 4096 bytes. If it does, one 4-byte
OVERFLOW cell is required for each
4096-byte area after the first one.

After the OVERFLOW CELLS field of the PGT
has been calculated, the VIRTUAL field is
processed. using the CVIRTB table, an
External symbol Dictionary entry (ESD-text
type 2) is ~ritten for each virtual unless
the DINAH or the RESIDENT option is in
effect.
(If the RESIDENT option is in
effect, no ESD or RLD item is written for a
library subroutine; if the DINAK option is
in effect, no ESD or RLD item is written
for a library subroutine or a user
subprogram.) Object -text is also written
and entries are made in the RLDTBL table
for subsequent writing of the Relocation
Dictionary.
The VIRCTR cell of COKftON is set to the
displacement of the VIRTUAL field from the
beginning of the PGT. (This value is 0
unless OVERFLOW cells ha ve been allocated.)
To determine the length of the VIRTUAL
field, four bytes are allowed for each
entry in the CVIRTB table. The calculated
length is added to register Ri1. If the
DINAM-and/or RESIDENT option is in effect,
the CVIRTB table is used to enter in the
PGT the EBCDIC names of those routines that
are to be dynamically loaded. The CVIRTB
table is kept for use during Procedure
A-text processing, when its contents
(E BCDIC names) vill be u sed to generate
comments for CALL statements.
The entries in the VIRPTR table are
changed to contain displacements in the
VIRTUAL field (see the example in Figure
42). - The table is saved for subsequent use
during Procedure A-text processing.

I

*+0

I
I
I

*+4

1----4
*+8

•I

*+0

I
,I

*+4

*Indicates the displacement of the
VIRTUAL field in the PGT (the value is 0
if no overflow cells are present).
I Note: Each VIRTUAL in the PGT is four
I, bytes long.

Figure 42.

VIRPTR Table aftei VIRTUAL
Allocation

If the DINAK or RESIDENT option is in
effect, an 8-byte cell for each library
subroutine name is allocated in the PGT.
In addition for the- CALL identifier, or if
the DINAM option is in effect for the CALL
literal, an 8-byte cell for each user
subprogram name is allocated in the PGT.
If neither option is in effect, this field
does not exist.
A count of the EBCDIC names ~o be placed
in the PGT is kept in the BCDCTR cell in
COMMON. This count is multiplied by 8 to
reserve space for the list of names. After
VIRTUAL allocation, register Ri1 contained
the displacement of the VIRTUAL EBCDIC
NAMES field; the displacement is saved in
the BCDISP cell in COMMON and register RW1
is incremented to reflect the allocated
bytes for the VIRTUAL EBCDIC NAMES cells.

After the VIRTUAL field or the VIRTUAL
EBCDIC NAMES field, if allocated, has been
processed, the value in register RW1 is the
displacement of the PN field in the PGT.
This value is saved in the PNCTR cell of
COMMON.
For each referenced PN in the PNTBL
table, a 4-byte cell is allocated in the
PGT. The PNTBL entry is set to the
displacement of this cell from the
beginning of the PGT. If a PN was not
referenced (if the value in the PNTBL entry
Phase 6

149

Licensed Material - Property of IBM

was 0), no space is allocated. In the
example in Figure 37, only four 4-byte
cells are required in the PGT. After the
PNTBL table entries have been adjusted, the
entry for PN3 exceeds the entry forPNl by
four, and the entry for PN2 remains O. The
total length of the PN field (16 bytes in
the example) is then added to RW1.
Figure 43 shows the PNTBL table for the
same program as in Figure 37, after PN
allocation in the PGT. The table is saved
for use during Procedure A-text processing,
when the values it contains will be used as
displacements in instructions.
PNTBL
.-----,
1 1*+0 /
1---1
2 / 01

GNTBL

2 1*+161

3

3 1*+20 1

r--..

...--.,

/ *+4 1

1---'
1*+4 1

I---f
4 1*+8 1

1--1

1---4

three unique GN entries, or twelve bytes.
After all entrie.s have been processed, the
length of the GN field (12 in the example)
is added to register RW1.
The GNTBL table is saved for use during
Procedure A-text processing.

The DCBCTR cell in COMMON is used to
determine how much space is required: four
bytes are reserved for each DCB in the
program. The DCBCTR cell is set to the
displacement of the DCBADR field (the value
of register RW1), and RWl is then
incremented to reflect the allocated bytes.

VNI Allocation

1---4
4 1*+ 161

...--.,

5 I o /
I---f
6 1*+ 12/

5 / *+161

'-----I

L-.J

1---4

6 1*+241

*Indicates the displacement in bytes of
the PN field from the beginning of the
PGT.

The VNCTR cell of COMMON was used by
earlier phases to count the number of
variable procedure-names in the program.
Eight bytes are allocated for every VN.
The displacement of the VNI field (the
value of RW1) is placed in the VNILOC cell,
and the number of bytes allocated is added
to reg ister RW 1.

~---

INote: The numbers to the left of the
Itables are A-text PN and GN numbers.
IThey specify implicit positions in the
Itable.
L - - _ _ __

Figure 43.

PNTBL and GNTBL Values after
PGT Allocation

The value in register RW1 is now the
displacement of the GNfield in the PGT.
This value is placed in the GNCTR cell of
COMMON.
For each unique GN, a 4-byte cell is
allocated in the PGT. The GNTBL entry is
set to the displacement of this cell from
the beginning of the PGT. However, if the
GN was equated to a PN or another GN, the
GNTBL entry is set to the PGT displacement
of that PN or GN. This is illustrated in
Figure 43, which shows the GNTBL table
after this processing using the same
example as in Figures 37, 38, and 39. In
this example. GN4 and GN5 were equated to
GN2. Therefore, the GNTBL entries for GN4
and GN5 contain the displacement of GN2.
The PGT for this program will contain only
150

Section 2.

Method of.Operation

~RAL

Allocation

The displacement of the LITERAL field in
the PGT (the current value of register RW1)
is placed in the LTLCTR cell of COMMON.
The length and contents of the LITERAL
field will be identical to the CONTBL and
CONDIS tables.
For each LTLTBL entry that refers to
CONTBL, the value in the LTLTBL table is
replaced by the displacement of the
specific literal from the beginning of the
PGT. This displacement is calculated by
adding the value already in the LTLTBL
entry (which is the CONTBL displacement of
the literal) to the value of RW1. An
example is shown in Figure 44.
The same processing occurs for LTLTBL
entries that refer to CONDIS, except that
the increment includes the length of the
CONTBL table. This occurs because DISPLAY
literals are placed after internal literals
in the PGT, as illustrated by Figure 44.
The LTLTBL table is saved for use during
Procedure A-text processing. The lengths
of the CONTBL and CONDIS tables are used to
increment RW1. If the program is not
segmented, the contents of the tables are

Licensed Material - Property of IBM

used to urite object text, and the tables
are released. In a. segmented program, the
uriting of object text is delayed and"
therefore, the tables are kept.
LTLTBL
I

I
lI
I

,
lI
I
I

*+0
**+0
*+1
*+2
**+5

D

I
I

*+0
--I

*Displacement of LITERAL field from
I beginning of the PGT.
1**Displacement of DISPLAY LITERAL field
I from beginning of the PGT.
Figure 44.

LTLTBL Table after Literal
Allocation

PRQ£EDURE A-TEXT

PROCESS!!~

Phase 6 reads Procedure A-text to produce
machine-language instructions for the
object program. One element of text is
read and processed at a time, and the
object code produced for this element is
placed in a uork area called OU6REC. One
or more elements are required to produce a
complete instruction. When an instruction
is complete, it is uritten out from the
Hork area, and the LOCCTR cell in COMMON is
incremented by the number of bytes written.
If the instruction involves a base
locator, the processing routine refers to
or updates table REGKTX (see "ExecutionTime Base Register Assignment" in this
chapter)" which is a table internal to
phase 6 (that is, not a TAMER table). Base
locators Here assigned by phase 22;
a discussion of their meaning appears in
the chapter "Phase 22."

If the PMAP compiler option was
specified, routine PUT is called to write a
line of text on SYSPRINT every time a
complete instruction has been created. If
the CLIST option was specified, this
routine is called only for each source
progra m verb.
If the STATE option is in effect,
Procedure A-text is used to create
Debug-text which is written on SYSUT2.
Debug-text elements are written by the SY52
routine for all card numbers encountered
and contain the card number and its
displacement within the object module.
This text is used by phase 65 to produce
the PROCTAB and SEGINDX tables which are
written in the object module. If either
the FLOW or the STATE option is in effect,
phase 6 builds the TGTADTBL table which is
used to pass debugging information to phase
65.
If the SXREF, XREF, VBREF, or VBSUM
option is in effect, Procedure A-text is
used to create REF-text and to Ifri te it on
SYSUT3. This text, containing an element
for every data-name, file-name,
procedure-name, and verb in the program, is
used by phase 6A .to produce a
cross-reference listing.
Figure 45 describes the processing for
each type of Procedure A-text element. The
individual elements are illustrated in
"section 5. Data Areas."
Note on base registers for the PGT ang~~T:
At execution time, R12 always points to the
beginning of the PGT and R13 always points
to the beginning of the TGT. If the
displacement of an item in the PGT or TGT
exceeds 4096 bytes, an OVERFLOW cell must
be used. The OVERFLOW cells fields of both
the PGT and TGT are at fixed displacements
from R12 and R13, respectively. Which
OVERFLOW cell is to be used is determined
from the value of the displacement, for
example, a value from 4096 to 8191 bytes
uses cell 1, from 8192 to 12,287 bytes uses
cell 2, etc. An instruction is generated
to load R14 or R15 from the OVERFLOW cell.
Then, in the operand currently being
processed, R14 or R15 is used as the base,
and the displacement is decremented by
4096, 8192, etc.

Phase

\;I

151

Licensed Material - Property of IBM

i

I

I

ICode and Typel
Action Taken
I
I--+
I
12C*
IStore in 3-byte cells Orr6C()N and XFCDNO. If Pl!AP or CLIST are
I
Icard number Irequested, read Listing A-text. Used to create an in-line constant for I
I
ITRACE instructions which call the DISPLAY object-time subroutine
I
I
I
I (ILBODSPO). If STATE is requested, write Debug-text.
I-1
,
130*
1Using .PN number as an index, look in PNTBL (see "PN Allocation" in this 1
IPN definition 1chapter) to get displacement in PGT of the cell for this PN. create an I
I
IRLDTBL entry which will place the current value of LOCCTR in the PGT
I
I
I
I cell.
-f
I
I
134*
ISame as PN definition, using GN number and GNTBL (see "GN Allocation"
1
IGN definitionlin this chapter).
1
I-'1
-.,----------------'-f
138*
ICreate an indirect RLDTBL entry from this element and the PN reference
1
IVN definitionlwhich follows it.
1
I-1
.
,
13C
I convert the current card number to an EBCDIC constant of the form:
1
IEBCDIC card 1
I
Iname
I DC
X'5'
1
I
I DC
CL6'generated card number'
1
I
I
,
144
1Use byte 2 of the element as index to a branch table. Phase 6 produces 1
Imacro-type
Ithe required coding. The contents of these elements are listed in the
1
linstruction IProcedure A-text formats of "Section 5. Data Areas."
1
~----~---------'-----------------------------'------------4

1 *Indicates that no object text was written for this element.
1**See
note
under "Procedure A-text Processlng."
L - - ._ _
__
Figure 45.

152

Processing Procedure A-text Elements (Part 1 of 3)

section 2.

Method of operation

1
I

Licensed Material - Property of IBM

i

,

,

I Code and Typel
Action TaJcen
I
,
I
~
148
IThis element contains, in machine language the first two bytes of an
I
I'operation
I instruction. The first byte is the operation code; the second may
I
Icode
Igive condition codes, registers, or other operands. For an RR type
I
I
linstruction, this element contains the complete instruction. It is
I
I
I written out as received.
I
I
I
~
14c
IThis is the operand of a LOAD instruction. Procedure branching is
I
lPM reference laccomplished by loading an address and then branching to it. Using
I
Iregister 12** as a base, find displacement by using PN number as an indexl
I
I
finto PNTBL (see "PH Allocation" in this chapter). Usibg card number
I
I
Istored in XFCDNO, write an element of REF-text for phase 6A, if SXREF or I
I
IXREF is in effect.
I
I
I
I
150
ISame as PN refe~ence, using GN number and GNTBL (see "GN Allocation"
I
IGN reference lin this chapter). No REF-text is written.
I
rI
f
154
IUse register 13** as base. Get displacement of VN field of TGT from
I
I VN reference I VNLOC cell in COBHON (see "Task Global Table storage Allocation" in this I
I
Ichapter). Use a VN number to compute displacement of this VN cell.
I
I
I
I
158
IUse virtual number as an index in the VIRPTR table (see "VIRTUAL
I
I Virtual
IAllocation" in this chapter). Table entry contains displacement
,
,reference
lof this virtual in the PGT. ijse register 12** as a base.
,
I-I
~
15C
IThis element is the operand of an instruction which loads a base
I
I
IBL reference Iregister. Use register 13** as a base. Get displacement of BLL or BL
I
Ifield in TGT from BLLCTR or BLCTR, respectively, in COMMON. Use BL
I
I
Inumber to compute displacement of this cell. Update table REGMTX.
I
I-I
--I
160
I Use register 13*':0 as a base. Displacement is picked up from a list
,
ITGT standard lof constants. This element refers to a cell in the fixed portion of
I
larea
I the TGT.
I
Ireference
I
I
I
-I
---I
164
IUse register 13** as a base (unless the element specifies the DCBADR
I
IGlobal Table Ifield of the PGT. which uses register 12**). Get displacement of the
I
IvariablyITGT or PGT field from the appropriate cell in COMMON, and use
,
!located area lidentifying number to compute displacement of this item (see IITask
I
I reference
I Global Table storage Alloca tion" and Figure 36 in this chapter).
I
I-I
---i
168
IBytes 2 and 3 are used to find the correct entry in the LTLTBL table,
I
Iliteral
I ehich gives the displacement of this literal in the PGT. Register 12** I
I reference
lis the base.
,
r----I
I
16C
IThis element is used to create an inline constant for a calling
I
IDC definitionlsequence. It is aluays preceded by the element 4424, the macro-type
I
I
linstruction element signaling a DC definition (see Code 44 above in this I
I
I figure) • It is written out as received.
I
I
I
of
170
ISpecifies the actual register number and displacement for the
,
Ibase and
linstruction. It is written out as received.
,
Idisplacement I
,
f
I *Indicates that no object text ~as written for this element.
,
I**see note under "Procedure A-text Processing."
I

r-

·

I

Figure 45.

Processing Procedure A-text Elements (Part 2 of 3)

Phase 6

153

Licensed Material - Property of IBM

,---

1

I

ICode and Typel
Action Taken
r-I
178
Isearch table REGMTX on i and ~ (BL type and BL number). If a match is
I address
Ifound, the required BL is already in a register. Use that register as
,the base. If a match is not found, generate an instruction to load
I reference
I
I register 14 or register 15 with the BL from the BL or BLL field of the
ITGT and use that register as the base (see Code 64 above for generation
,
I
fof the LOAD macro instruction). Displacement is the 9. field of the
1
I element~ Get card number from XFCDNO to write a.n element of REF-text.
l---I
..
17C
IThis element always follows the element 4404, the macro-type instruction
1EBCDIC
lelement for ENTRY. It is used to punch an ESD-text type 1 card for the
1data-name
1entry point.
1reference
1

I

1

I
..
I
I
I
I
,
I
1
.,
I
I
I
I

180
1address
lincrement
1

IThis element is required, for example, by the second MVC for a MOVE of
Imore than 256 bytes. The element itself would have a value, in this
Icase, of 256 bytes (the value of the increment). Add it to the d
1 (displacement) field of the preceding reference.

I
1
I
I

I

1

of

184
1relative
laddress
1

,

IThis element is used to create an inline pointer to an item in a field
I
lof the TGT or PGT fora calling sequence. Get displacement of field
I
Ifrom appropriate counter in COMMON and use identifying number to compute 1
1
1displacement of item.
r-1
---4
I AO*
1specifies the register used by a· macro-type instruction element 6 and must I
I register
Ifo110w certain of these elements (see the list of macro-type
I
Ispecificationlinstructions under "Procedure A-text" in "section 5. Data Areas ll ) .
I
J--I
-----'j
IA4
IThis element combines the address reference and increment
I
I incremented le1ements into one (see Codes 78 and 80 abov~ •
I
,address
,
I
r-I
I
IBO
IUsed to create an in-line TGT or PGT pointer for a call to an object-time I
icalling
Isubroutine which requires a parameter containing a displacement from
I
Isequence
Iregister 13 or register 12.
I
I displacement I
I
i---I .
of
1B4'~
I Used when a file-name or data-name occurs in a calling sequence to l~rite I
!calling
la REF-text element for phase 6A. obtain card number from XFCDNO.
I
: sequence
I
1
I
I
I dictionary
I pointer
I
I
rI
.,
IB8*
IUsed to write an element of REF-text.
I
ifile
I
I
I
1
I reference
I
.
•
.,
I *Indicates that no object text was written for this element.
I
I **See note under "Procedure A-text Processing."
I
I

Figure 45.

154

Processing Procedure A-text Elements (Part 3 of 3)

section 2.

Method of Operation

Licensed !aterial - property of IB!

Phase 6 reads· Procedure A-text in the order
in which it was written.
Procedure A-text is read from the
direct-access data set SYSUT1 using the
segment priority (SEGTBL) table. For a
description of how this table is built, see
"segmentation Control Breaks" in the
chapter "Phase 51." The table format is
given in "Section 5. Data Areas."
In phase 1B, the priority numbers of all
sections in the root segment were set to O.
Routine SEGPROC searches the SEGTBL
table for the first entry whose priority is
zero. It then calls COS in phase 00 with a
request for SEGPNT, passing the relative
disk address of this section. The SEGPNT
routine in phase 00 positions the access
mechanism to the correct address on the
file. . (Additional information on this
routine is in the chapter "Phase 00" under
"Phase Input/Output Requests. II) The section
of Procedure A-text is then read and
processed. When a segmentation control
break is encountered in the text, the
SEGTBL is searched for other sections of
the same priority.
Note: A section is a series of source
program procedure instructions grouped
under the same section-name. A segment is
all the instructions whose sections have
the same priority, and a segment may
consist of one or more sections. There is
a SEGTBL entry for every section whose
priority differs from that of the section
preceding it.

When all sections of one priority have
been processed, the SEGTBL table is
searched for a different priority, and the
process is repeated. If the STATE option
was specified, at the end of processing for
each segment, the final LOCCTR value for
that segment and the priority for the next
segment to be processed are both written on
SYSUT2 for phase 65. Object text for the
segments is written throughout this
processing, as machine instructions are
generated. If any segment refers to
another program via a CALL statement, an
INSERT card for the called program is
generated also.
After the last nonroot segment has been
processed, the LOCCTR cell of CO!HON is set
to the location in the root segment of the
PGT. Object text is then written from the
CVIRTB, CONTBL, and CORDIS tables, which
contain the values of virtuals and literals
to be stored in the PGT ·(see "LITERAL
Allocation" and "VIRTUAL Allocation" in
this chapter). Then LOCCTR is set to the
beginning of the Procedure Area of the root
segment, which was saved in cell LOCPGM,
and processing of the Procedure A-text for
the root segment begins. The text is
located on SYSUT1 by finding all entries of
zero priority in the SEGTBL table.

Listing A-text is processed concurrently
with Procedure A-text. Generated by phase
1B, it contains the EBCDIC names of
procedure-names and COBOL verbs preceded by
a code and a count. It is used to print
procedure and ve~b-names alongside their
associated code on the object program
listing (if the PMAP option is in effect),
to print verb-names (if the CLIST option is
in effect), and in response to READY TRACE
(if the VERB option is in effect). One
~isting A-text element is read every time a
card number element is encountered in
Procedure A-text.

Phase 6

155

Licensed !aterial - Property of IBM

Before Procedure A-text processing begins,
permanent base registers are assigned.
Register 12 is always assigned to the PGT,
and register 13 to the TGT. Registers 6
through 11 are availa~le to the data area.
Of these registers, register 6 is
permanently assigned to the beginning of
the Wor!dng-Storage section if the program
contains one. The rest are assigned to
files in the order in which FDs occurred,
and to additional working-storage.
If the PMAP, CLIST, or DMAP options are
in effect, a list of permanently assigned
registers and the BLs (base locators)
associated with them is written on
SYSPRINT.
At execution time, permanent base
registers are loaded from the TGT by
routine INIT3.
(Registers 0 through 5 are
work registers; instructions using these
registers are generated from the Procedure
A-text.)
Registers 14 and 15 are used as
temporary base registers.
To assign base registers in procedure
instructions, phase 6 refers to and updates
table REGMTX (internal to Phase 6) which
contains an entry for each of registers 6
through 11, 14, and 15. Into an entry are

156

section 2.

Method of Operation

placed the BL type and BL number (the ! and
k of the idk field of an addressing
parameter) of the area to which the
register is currently pointing, .and the
status of the register (that is, how it is
being used). When a field of the data area
is the operand of a procedure instruction,
table REGMTX is searched for a matching !
and k. If it is found, this means that the
register already contains the desired base
locator and, therefore, the register can be
used in the instruction.
If .no register already contains the
necessary base locator, an instruction is
generated to load the base locator (which.
is stored in the TGT) into temporary base
register 14 or 15.
When a register is used in an
instruction, the status portion of the
REGMTX entry is updated to indicate how it
is currently being used. status bits may
also be updated by the A-text macro-type
instruction elements (see Figure 45 in this
chapter). A list of these elements and
their meanings appears in the Procedure
A-text formats in "Section 5. Data Areas."

Licensed Material - Property of IBM

fRQ£ESSI!!§ DATA A-TEIL._knXL-ill
~~

The primary function of Data A-text
processing is to place values into fields
of the data area and Global Tables of the
object program. Each element results in
either the writing of an object text
element or an entry in the RLDTBL. Some
RLDTBL entries will later be written out as
Relocation Dictionary (RLD-text) entries
for the data area and as object text.
Others, for the Global Tables, will be
written as object text only.
(These will
be relocated by the object program.)
SYSUT4, from which Data A-text is read,
also contains E-text generated by phases 10
through 51, and DEF-text for the
cross-reference listing if the SIREF, IREF,
VBREF, or VBSUK option is in effect.
Figure 46 illustrates the contents of this
data set when it is read by phase 6.
Figure 47 describes how each type of
element is processed.

PROCESSING THE RLDTBL TABLE
The maximum amount of space is obtained for
the RLDTBL table by a call to GETALL in
phase 00. The RLDTBL does not use a TIB.
The calling sequence is:
L

BALR

15,=A (GETALL)
14,15

The table is then sorted in ascending
order o~ target address. Object text is
written for items that are in the Global
Tables. This text consists of address
constant definitions that will be stored in
the Global Tables at execution time. No
RLD-text is required for these items,
because the addresses are relocated during
program execution by routine INIT3. Object
text is also written for data area address
constants (obtained from address constant
and indirect address constant definitions).
For the data area address constants,
RLD-text is written so that the linkage
editor can relocate the addresses.

After the RLDTBL table has been processed,
initialization coding is generated using
the routines that process Procedure A-text'.
There are three initialization routines,
called INIT1, INIT2, and INIT3. All three
are resident in the root segment if the
program is segmented. INIT2 is generated
first, followed by INIT3. In the
generation of INIT3. the QTBL table is used
to generate code that will call the
Q-Routines at the beginning of program
execution to initialize variable-length
fields. INIT1 is generated last, because
it contains pointers to INIT2 and INIT3.
The contents and functions of these three
routines are described in detail in
"Appendix B. Object Module."

The starting address of the. table area for
the RLDTBL table is returned in register 0,
and its length is returned in reglster 1.
After end-of-file has been reached on
SYSUT4, the RLDTBL table is processed.
First, indirect address constants are
resolved.

Phase 6

157

Licensed saterial - property of IBM

r--------------------------------------------------------------------------------------------,
Beginning of SYSUT4

WRITTEN BY PHASE 21
Data A-text
E-text generated by
phases 10,12,20,22, and 21
Data-name, file-name
DEF-text*
(These types of text are
intermixed.)
I
I WRITTEN BY PHASE 25
I
E-text
I
I

There are no control breaks provided
between sections of text to distinguish
text written by one phase from text
written by another.
During Data A-text processing, phase 6
determines solely from the code (which
is the first byte of the element) what
type of text is contained in an element,
and which routine is to be called to
process it.
E-text generated by phase 10 was passed
to phase 21 intermixed with DATA IC-text.
Read during Data A-text processing

I
I

I WRITTEN BY PHASE 3
I
Procedure-name
I
DEF-text*
I
I
I
I
I WRITTEN BY PHASE 51
I
E-text generated by
I
phases 12, 1B, 3, 4, 50, 51
I
End of File

I
I
I
E-text generated by phases 12, 1B, 3, 4, I
and 50 was passed to phase 51 intermixed I
with Procedure IC-text. However if the I
CSYNTAX option was requested and neither I
an error ~) nor disaster (D) level
I
message was generated, phases 3. 4, and
I
50 wrote E-text on SYSUT4.
I
I

Ir--------------------------------------------------------------------------~

,I*Produced
Figure 46.

158

only if SXREF, XREF, VBREF, VBSUM, or TEST option is specified.
Contents of SYSUT4 When Read by Phase 6

Section 2.

Method of Operation

I
,

Licensed Material - Property of IBM

,

I

ICode and Type
~

100

I E--text
i
I
I
I
I

104
IDCB address
I
I
I
I
I
108

IDECB address
I
I
I
I

----~".-.--,-

........- ...------,

I
Action Taken
I
I
I
IAll E-text is built into a table called ERRTBL, ~hich is pas~ed to
I
Iphase 70.
Phase 6 does not process the E-text. If the ERRTBL table
!
loverfl01l1s the space allocated to it, all of the E-text is rellritten on I
I SYSUT3,. and a bit in the SWITCH field of COMUON is set to indicate thisl
Ito phase 70.
I
I
I
IThere are tuo types of E-text elements:
message definitions and
I
I message parameters.
~!essage parameters are optional; h01';Ever .. if they I
loccur, one or more message parameters immediately follow the message
i
Idefinition to which they apply (the uses of these elements are
I
lexplained in the chapter "Phases 70. 71, and 72").
Phase 6 c:.':.:".mines
I
leach element to determine its length, so that the correct nu~~er of
I
Ibytes may be stored in the table. To do so, it checks the third byte
I
lof the element. If the byte contains a zero, the element is a message I
~definition lihose length is eight bytes.
If the third byte is nonzero, I
Ithe element is a message parameter of variable length, and the length I
lis determined from the value of the second byte ~or the format of
I
IE-text and for the format of ERRTBL, see "Section 5. Data Areas").
I
I
-f
IGenerate an RLDTBL entry that viII cause the address of the DCB
I
Ito be placed in the correct cell of the DCBADR field in the PGT at
I
!execution time.
Get displacement of the DCBADR field from cell DCBCTR I
lin COMMON (see "DCBADR Allocation" in this chapter) and use the DCB
I
Inumber to compute displacement of cell.
Text element contains the
I
Ivalue (relative address of the DCB) to be placed in the PGT cell.
I
I
I
IGenerate an RLDTBL entry that will cause the address of the DECB
I
Ito be placed in the correct cell of the DECBADR field of the TGT at
I
lexecution time. Get displacement of the DECBADR field from cell DECBCTI
I in COMMON (see Figure 36 in this chapter) and use the DECB number to
I
Icompute displacement of cell. Text element contains the value
I
I (relative address of the DECB) to be placed in the cell.
I

fir-----------~I------------------------------------------------------------~I

OC
Block address

14
IFIB address

I

I
I
I

•

120

I Data A-text
Figure 47.

IGenerate an RLDTBL entry that will cause the address of the buffer
Ito be placed in the correct BL cell of the TGT at execution time. Get
Idisplacement of the BL field from cell BLCTR in COMMON (see Figure 36
lin this chapter) and use the BL number to compute displacement of the
Icell. Text element contains the value (relative address of the buffer)
Ito be placed in the TGT cell.
I
IIf the value of the SIZE field of the element exceeds 1024 (SIZE
Ispecified length of the block in fullwords), more than one BL has been
lassigned to the buffer. For each 1024-word area after the first,
lanother RLDTBL entry is made. The second RLDTBL entry will cause the
Ibuffer address plus 4096 to be placed in the next BL cell of the TGT.

1

IGenerate an RLDTBL entry that will cause the address of the File
IInformation Block (Flm to be placed in the correct cell of the FIB
Ifield in the TGT at execution time.
Get displacement of the FIB field
Ifrom AMICTR ~ell in COMMON and use the FIB number to compute
Idisplacement of cell. Text element contains the value (relative
laddress o'f the FIB) to be placed in the TGT cell.
I
IGenerate the COUNT option information.
I

I

I
I
I
I
1
I
-f

I

I

Processing Data A-text, E-text, and DEF-text (Part 1 of 2)

Phase 6

159

Licensed !aterial - Property of IBM

i

i

Action Taken
I
I-I
24
IGenerate an RLDTBL entry that will cause the address of the
working-storagelworking-storage section to be placed in the correct BL cell of the
section addresslTGT at execution time. Get displacement of the Bt field from cell
IBLCTR in COMMON (see Figure 36 in this chapter) and use the BL number
Ito compute displacement of the item. Text element contains the value
I (relative address of the Working-Storage section) to be placed in the
ITGT cell.
I
IIf the value of the SIZE field exceeds 1024 (SIZE specifies the length I
lof the Working-Storage Section in fulluords). more than one BL has beenl
lassigned. For each 1024-word area after the first, another RLDTBL
I
lentry is made. The second entry will cause the address plus 4096 to bel
Iplaced in the next BL cell.
,
I Code and Type

1

I

128
,Constant
I definition
I

IWrite·object text that vi11 place the value of the constant into a
Ispecified location in the data area at e~ecution time. This type
lof element is used to fill some fields of DCBs and DECBs, and to
linitialize data items for which a VALUE clause was specified.

I--

I .

12C
I Address
tconstant·
I definition
I

.

--4
I

,
1
I

IGenerate an RLDTBL entry that will cause the address of the
tprocedure-name (PN) or generated procedure-name (GN) to be placed in
la specified location of the data area at execution time. This type
lof element is used to place pointers to routines in DCBs and exit
llists.

I-----------------~I--~-

~

I
I
I
I
I

---;

134
IThis type of element contains· a GN number for a Q-Routine. The
IO-Routine
le1ements are built into a .table called QTBL. Each entry is resolved
lidentification Iso that it contains the actual address of the routine rather than
1simp1ythe GN number. This processing is identical to that for GN
I
I
Ireferences in Procedure A-text (see Figure 45 in this chapter). When
Iphase 6 generates the code of lNlT3 (one of the execution-time
I
I
linitialization routines), it uses the QTBLtable to generate a call to
Isome Q-Routines to initialize the data and table areas affected by
I
I
IOCCURS ••• DEPENDING ON data items, where the object of the DEPENDING ON
I I c 1 a u s e is an item in iorking-storage.

I
I
I
I
I
t
I
I
I
I
1--1·
. .
I
138
IGenerate an RLDTBL entry that will.cause the displacement in the
I
IBL reference
ITGT of the BLnumber assigned to VSAB files to be placed in a specified I
I
Ilocation of the data area at execution time.
I
I
I
I
13C
IGenerate an RLDTBL entry that will cause the displacement in the
I
IBLL reference ITGT. of the BLL numbers assigned to VSAM files in the Linkage Section tal
I
tbe placed in a specified location of the data area at execution time.
I
IThis type of element is used to complete the building of the FIB at
I
I
I
lexecution time.
I
I
I
,
148
IThis element is. present only if the SXREF, XREF ,VBREF, VBSUIf or TEST I
1Data-name or
loption was spcified. Each element is written out as it is encountered I
Ion SISUT1, to be read by phase 6A. The chapter "Phase 6A" describes
I
I file-name
IDEF-text
Ihow. these elements are used.
I
I
I
~
14C
IThis element is present only if the SIREF, IREF, VBREF, VBSUIf or TEST I
IProcedure-name lopt.ion was specified. Each element is written out as it is encountered I
IDEF-text
Ion .SISUT1, to be read by phase 6A. The chapter "Phase 6A" describes
I
I
I
Ihow these elements are used.
I

,

Figure 47.

160

Processing Data A-text, E-text, and DEF-text (Part 2 of 2)

section 2.

Method of Operation

Licensed Material - property of IBM

Phase 62 (IKFCBL62) is the first of the
three phases that prepare a machine
language program suitable for input to the
linkage editor if the optimizer (OPT)
option is specified.
The elements of this
program are described in the chapter
"Object Module." The phase is divided into
several sequential parts, each of which
performs specific functions.
The functions
are:

1i§.sul t

Causes the TGT, Literal Pool,
PGT, register assignments,
Borking-Storage message, and
a listing of the object text
to be written on SYSPRINT.

CLIST

Causes the TGT. Literal Pool,
PGT, register assignments.
Working-storage message, and
a condensed object program
listing to be written on
SYSPRINT. The object program
is limited to the card
number. verb name (or verb
number if the program is
segmented), and address of
the first instruction for
each verb.

o Determines object program storage
allocation for the TGT (Task Global
Table) by processing counters in COMMON
and calculating the displacements of
items uhich reside in the TGT at
execution time.
o

optimizes literals and virtuals by
processing optimization A-text;
determines storage allocation in the
PGT (Program Global Table) for these
items, for PN and GN cells, and for the
DCBADR, VNI, and PROCEDURE BLOCK fields
and calCUlates their displacements,
using counters in COMMON.

D~IAP

Causes the TGT, Literal Pool,
PGT, register assignments,
and the Working-storage
message to be written on
SYSPRINT. This option has
already caused phase 3 to
print a Data Division
glossary.

o

With Procedure A-text as input,
determines approximate object program
storage requirements for the Procedure
Division by calculating the Procedure
blocJe number in uhich each PN or GN is
located.
If the program is segmented,
groups the sections of instructions
into segments.

XREF
SXREF

Causes a source ordered (XREF)
or alphabetically ordered
(SXREF) cross-reference
listing to be written on
SYSPRINT. Phase 64 writes
XREF-text for use by phase
6A.

LOAD

Causes the object program to be
uritten on SYSLIN by phase
00.

DECK

Causes the object program to be
written (punched) on SYSPUNCH
by phase 00.

BATCH
NAME

If both the BATCH and NAME
options are specified, they
cause a linkage editor
control card to be generated
at the end of the object
program, so that the object
program will be a separate
load module.
If BATCH is
specified, the relative
number of this compilation in
the batch appears among the
statistics printed by phase
64.

o optimizes usage for both permanent and
temporary register assignments.
The operations of phase 62 are described
in Diagram 5, located with the foldouts at
the back of this publication.

copies of the object program and
compilation information are put out by
phases 62 and 64. Phase 64 may also put
out REF-text and phase 63 may put out
Debug-text. The output of phases 62, 63,
and 64 depend on the compiler options
specified by the user or determined by
defaults set at installation time. The
following are the options that determine
the output produced:

Not~:
The linkage editor
control card generated for the
BATCH and NAME options is

Phase 62

161

Licensed Material - Property of IBM

produced by phase 65 if the
FLOW, STATE, or SYMDMP option
is specified.
FLOW[=n[ n]

Causes .the flow trace facility
to be included in the object
program. The number [n[n]]
of traces requested is
retained in the FLOWSZ cell
in COMMON and is passed to
phase 65, which places the
number in the variable
portion of the TGT.

STATE

Causes the statement number
facility to be included in
the object program. Phase 63
writes Debug-text elements on
SYSUT4 for use by phase 65.

SYMDMP
OR
TEST

Causes the symbolic debug
facility to be included in
the object program. Phase 63
writes Debug-text on SYSUT4
for use by phase 65.

For all compilations, compiler
statistics are written by phase 64 on
SYSPRINT from COMMON, where they were saved
by phase 02.
If the PMAP, CLIST, or DMAP options have
been specified, phase 62 causes the TGT,
Literal pool, PGT, register assignments,
and Working-Storage message to be written
on SYSPRINT. Phase 64 causes the object
program listing for the PMAP or CLIST
option to be written on SYSPRINT. If the
FLOW, STATE, or SYMDMP option is in effect,
phases 62 and 64 create the TGTADTBL table
which is used by phase 65. Phases 62, 63,
and 64 also use the TGTADTBL table for
interphase communication before completing
it in phase 64 for use py phase 65.
The user may specify both the LOAD and
DECK options, in which case the object
program is written on both SYSLIN and
SYSPUNCH. He may also specify NOLOAD and
NODECK; in this case, he receives no
executable copy of his object program.
If no output was requested (no PMAP,
LOAD, DECK, CLIST, DMAP, BATCH, NAME,
SYMDMP, STATE, SXREF, XREF, VBREF, or
VBSUM), text processing is bypassed unless
the· TERM option was specified. In this
case, phase 64 scans the E-text on SYSUT4
and increments the ERRNUIf. cell in COMMON.
After phase 64 scans. the E-text, it rewinds
SYSUT4 and returns to phase 00. Phase 00
uses the count in ERRNUMto write a message
to SYSTERM giving the number of errors
encountered for the compilation. Phase 64
also sets a bit in COMMON to indica~e
whether phase 70 is required (see
"suppression of Ouput Listing" below).
162

Section 2.

Method of Operation

If the SUPMAP (suppress map) option is in
effect, no output is produced by phases 62
and 64 if a D-Ievel or E-level error
message was generated by any phase. This
is determined by testing the ERRSEV cell in
COMMON. A value of 12 or greater means
that a t least one D-Ievel or E-level
message occurred.
The ERRSEV cell was set by phases 2, 3,
4, 50, and 51 every time they encountered
or generated an element of E-text (see
liE-text" in the chapter "Phase 51"). A
test is made for this condition upon
entering phase 62. If it occurs, a message
is printed and the text is not processed
unless SXREF or XREF is specified.
If the SUPMAP condition occurs and
neither SXREF or XREF was requested, phase
62 terminates processing, calls phase 63,
which does no processing and in turn calls
phase 64, after phase 62 sets two bits in
COMMON (bits 6 and 7 of the second byte of
SWITCH). Bit 6 indicates that phase 70 is
to be called, and bit 7 indicates to phase
70 that E-text must be read from SYSUT4.
If the TERM option was specified, phase 64
scans the E-text on SYSUT4 and increments·
the,ERRNUM cell in COMMON. After phase 64
scans the E-text, it rewinds SYSUT4 and
returns to phase 00.·
If SXREF or XREF was requested, text is
processed by phases 62, 63~ and 64 but the
only output is REF-text and DEF-text (which
phase 6A uses to produce the
cross-·reference listing): The ERRTBL is
also built by phase 64, or E-text is
written on SYSUT3. A bit is set in COMMON
(bit 6 or the second byte of SWITCH),
indica ting to phase. 6 A that phase 70 is
required. If E:-text was written on SYSUT3,
bit 5 of the second byte of SWITCH is set
to indicate that E-text must be read from
SYSUT3.
Phases 62 and 64 do not write object
text in execution-time sequence. Rather
they instruct. the linkage editor to reorder
the text by assigning relative addresses.
To do this, they allocate space for areas
that will be written later, altering the
LOCCTR (location counter) cell of COMMON to
reflect the relative location at execution
time of the area curren tly being processed.

TASK GLOBAL TABLE STORAGE ALLOCATION
When phase 62 receives control, the LOCCTR
cell contains the relative address of the
Task Global Table (TGT) in the load module.

Licensed 11aterial - property of IBM

LOCCTR was set by phases 22 and 21, uhich
added the length of the data area to that
of the INIT1 routine.
(These areas precede
the TGT in the load module.)
Routine TGTINT first does preliminary
computations to determine the length of the
entire TGT. If this length exceeds 4096
bytes, one 4-byte OVERFLOW cell is
allocated for each 4096-byte area after the
first. Then this routine computes the
locations of TGT fields after the OVERFLOU
cells.
Some fields of the TGT are constant in
length; others are variable, depending on
the requirements of the program being
compiled. For most of the variable fields,
,

there is a counter in COMMON used to
compute its length. When the value has
been used, the counter is set to the .
displacement of the current field in the
TGT. Figure 48 lists these counters and
the TGT fields to which they correspond.
In a register called Ril, a counter is kept
of the displacement of the current field in
the TGT.
Some of the counters in COMMON specify a
number of bytes. Others specify a number
of entries, vhere each entry requires two
or four bytes. In the latter case, the
value of the counter is multiplied by 2 or
4 before it is used to compute
displacements.

"

•

I
I
I
I Counter I contents From Earlier Phases
I TGT Field
I-I
I
I TSMAX
INumber of bytes needed for arithmetic temporary I TEHP
I
I storage.
I STORAGE
I

,TS2I1AX
I

I

I TS3MAX

I

I

I--

I

I

I VLCCTR
I
I
,INDEX1
,
,
,SBLCTR
,
,
,
I BLCTR

I

I
I

I
I
I

8

I
I

~

I
I·
--i'.
I

1

1

I
4
I
I
I

1

4

,
I

--;---------~,·----~------~I

I

·1

,
I BL

I
' I

I

,

I

I

I SUBCTR

,Number of subscript save cells.

,ONCTH
,
I PFIICTR
I

I
4

,Number of variable-length cells (containing
I VLC
I
2
I
I current length of a variable-length field).
I
I
I
I
--~I---------;I--------------f
INumber of index-names defined in INDEXED BY
I INDEX
,
4
I
' I
I
I clause.
t
I
,
---I
I Number of secondary base locators (location of al SBL
I
4
.,
, field .variably located because it follous a
I
I
,
I variable-length field) •
I '
I
INumber of base locators assigned to files and
, Working-storage.

•

Factor

I

I TEMP
,
I STORAGE-3 I

I
I
INumber of bytes of work area for table-handling I TEMP
I
I verbs.
I STORAGE-4 I
I
,
I
INumber of base locators assigned to Linkage
I BLL
I
I Section.
' I

I

i

I Multiplication I

, TEMP
I
I STORAGE-2 I

I

INumber of bytes of work area for aligning
I non-SYNCHRONIZED data items.

I TS4HAX
I
•
I BLLCTR
I

I

1Number of bytes needed for nonari thmetic
, temporary storage.

i

,

,

i SUBADR
,

I
I
I
,
I

f

4

, ! !

I

----t

4

I

~

INumber of ON control cells.
I ONCTL
4
,
,
INumber of PERFORM control cells (for PERFORM X I PFMCTL
4
f TI liES) •
' I

, !

,

I
I

,
'
f

,*The number of VNs in the program is passed to phase 62 in theVNCTR cell of COHHON,
I not the VNLOC cell. However, this value is moved into the VNLOC cell and all further
I TGT processing uses VNLOC rather than VNCTR.
(The number of VNs in the program must
I also be known for PGT allocation to determine the size of the VN field in the PGT.
I, This va lue is sa ved in VNCTR.)
Figure 48.

,
,
,
I
,
,

Use of Counters in COlUiON to Allocate Space in the TGT for Variable-length
Fields (Part 1 of 2)

Phase 62

163

Licensed Material - property of IBM

i

-,--------

,
,
, counter I

I
I TGT Field
I
I PFMSAV

Contents From Earlier Phases

r-

,

r-

,VNLOC*

I
INumber

l--

1

,PSVCTR

I

INumber of PERFORM save cells.

,DECBCT
I XSWCTR

, DECBADR

I XSASW

,

1

l--'

I
,Number of checkpoint requests.
,
I
IUSE LABEL or USE ERROR procedure save area
, requirements.

,

,

'

, XSA
I
I PARAM
I
, REPORT
I SAVE
,I
1 CHECKPT
I CTR
I
I SAVE
I AREA-2

,

f
,

~

4,
I
4
,
,
~

4

I

,
I
4,
,

I - - - - I j

,SA3CTR
,Maximum number of files specified in an OPEN
,
I statement.
f--I
t
,AMICTR
INumber
of FIBs
for VSAM files.
L---_____
___________
_
~

Figure 48.

4

,~

of bytes for EXHIBIT saved area.
,
I
,PARMAX IArea needed for parameter lists.
l----_t_
,RPTSAV
IReport writer save area requirements.

r---

I

1 VN
8,
l - f

of variable procedure-names.

.+,XSACTR
,Number

,CKPCTR
,
I
,SA2CTR
,

I
4

----------------------------~I--------~-------------~

,Number of DECBs.
I
INumber of EXHIBIT switches.

l--

I

Multiplication ,
Factor
I

,SAVE
, AREA-3

4,
I

"

, FIB

4

I

Use of Counters in COMMON to Allocate Space in the TGT for Variable-length
Fields (Part 2 of 2)

This is done in routine DSPLAC. which is
called for each variable-length field. Two
parameters are passed to this routine: the
address of the counter in COMMON,. and the
number of bytes for each entry.
From the
number of bytes, DSPLAC also determines
boundary alignments.
DSPLAC places the
value of Rli1 (the displacement of the field
in the TGT) into the counter, and adds the
length of the field to RW1.

If the PI1AP. CLIST, or DMAP options are
in effect, DSPLAC calls routine MAPLOC,
which prints one line at a time.

If the STATE, FLOW, SYMDMP, or TEST
option is in effect, the SWITCH cell, the
CURRENT PRIORITY cell (initialized to zero
only), the DEBUG TABLE PTR cell, and. the
DEBUG TABLE information in the TGT are set
by phase 65.

The general function of this part of phase
62 is to allocate space for the program
Global Table (PGT) in the same Hay that TGT
storage was allocated. Before this can be
done, however, the required space must be
determined for the literals, virtuals, and
procedure-names that reside in this table
at execution time.
The routines that
determine the lengths of these fields also
optimize the contents of the fields by
eliminating duplication.
For optimizing, phase 62 reads
optimiza tion A-text from SYSUT3 and merges
its information with information from
tables and counters generated by earlier
phases. This information is. used to
perform the following functions:
• Process virtual reference definitions
for library subroutines to be called at
exec ution time.

After the length of the entire TGT has
been calculated, the value of RW1 (the
length of the TGT) is added to the LOCCTR
cell. The value of the LOCCTR cell is now
the displacement of the PGT.

164

section 2.

Method of Operation

• Build the VN priority (VNPTY) table.
• Optimize and calculate storage
requirements for literals, DISPLAY
literals, and virtuals.

Licensed Material - Property of IBM

• Build the VNPNTBL, BLVNTBL, PNATBL, and
GNATBL tables.

VN definition elements are not used for
optimization. They are included in the
optimization A-text for a segmented program
because they are used to build a table
(called VNPTY) which must be in storage for
phase 62 and 63 processing.
As an element
is read, it is entered unchanged into this
table.
After the optimization A-text data
set has been closed, the VNPTY table is
sorted in ascending order of priority
number.

Processing PNs

~_§!§

Phase 62 builds the VNPNTBL, BLVNTBL,
PNATBL, and GNATBL tables for PN and GN
processing for the PGT. The VNPNSORT
routine builds the VNPNTBL table from the
VN EQUATE PN or VN EQUATE GN elements of
optimization A-text.

found, the new literal is entered into the
CONTBL table.
Any bytes skipped because of
boundary alignment are filled with zeros.
The displacement of this entry from the
beginning of the table is placed in the
LTLTBL table, with a bit set to indicate
whether it is a CONTBL or CONDIS entry. If
a match is found, only an LTLTBL entry is
made. This LTLTBL entry is the
displacement of the CONTBL entry that
matched the literal being processed.
Figure 49 shows an example of these
tables after all Optimization A-text has
been processed. The optimization A-text
contained literal definition elements for
the following literals:
8, 3 (DISPLAY), 3, 9, Y (DISPLAY), 8
After the optimization A-text data set
is closed, the Literal Pool is written on
SYSPRINT using the contents of the CONTBL
and CONDIS tables, if the PMAP, CLIST, or
DMAP options are in effect.
The Literal
Pool is also written on SYSPUNCH and
SYSLIN, as needed.
CONTBL

,
,
,

.---,
Literals \

,

The GNVNRTN routine builds the BLVNTBL
table from GN-VN PERFORM elements.

J-

~

3

~

\

The PGNARTN routine b.uilds the PNATBL
and GNATBL tables.
These tables list the
PNs and GNs for which address constant
cells are required in the PGT.

8

9

I

.J

CONDIS
r
I

DISPLAY
Literals \

,
I

,

3

write text,
increment
RW1, and
release
tables.

~

Y

I
.J

LTLTBL
r\ 0 (CONTBL displacement of 8) I

,

The literal optimization routines are used
to eliminate storage duplication in cases
where the source programmer used the same
literal more than once. Routine LTLRTN
processes internal literals, and routine
LTLDIS processes DISPLAY literals.
These
routines build three tables:
the CONTBL
and CONDIS (for regular and DISPLAY
literals, respectively) tables contain one
entry for each unique li,teral, and the
LTLTBL table contains an entry for each use
of a literal.

I

----1

I

--I

\ 0 (CONDIS displacement of 3) I

11 (CONTBL displacement of 3) I
I Add PGT
l\2 (CONTBL displacement of 9) I displace~ ments and
t-15 (CONDIS displacement of Y) I save
---1 table
l-10 (CONTBL displacement of 8) I
L--

DISPLAY literals are entered into the
CONDIS table.
When a nonliteral literal definition is
encountered, the CONTBL table is searched
for an entry identical to the literal.
(To
be identical, two internal literals must
meet the same boundary requirements as well
as have the same value.)
If no match is

--I

r

~

INo!~:

For this example, the values in
lLTLTBL assume that each CONTBL entry is
lone byte long and each CONDIS entry is
,five bytes long.
~

Figure 49.

I
I
,
I
.J

CONTBL, CONDIS, and LTLTBL
Tables after Processing
Literals
Phase 62

165

Licensed Material - Property of IBM

r-

The virtual optimization routine (VIRRTN)
is used to eliminate storage duplication in
cases where the same EBCDIC name of a
called program is referred to in more than
one CALL statement or in more than one call
to a COBOL library object-time subroutine.
The logic of this processing is similar to
that of literal optimization. Two tables
are built: the CVIRTB table contains one
entry for each unique virtual, and the
VIRPTR table contains one entry for each
reference to a virtual.

I
I
I
I

£!11 Virtual!:!
CVIRTB

I

I

CVIRT1

I
I
I
I
I
I
I

CVIRT2
CVIRT3

VIRPTR

•I
I

,
I
I

•I
I

I
I
I
f
I
I

Figure 50 shows the contents of these
tables after processing optimization A-text
for a program containing the following
virtuals:
t
I

1

I Note:
Ilong •

•

If the SYMDMP option is in effect~ 12 bytes
are allocated for the DEBUG LINKAGE AREA.
Otherwise, no space is allocated for the
field in the PGT.
166

section 2.

Method of Operation

I

\

,
.,,
,
.,

--,
0 (Disp. of
CVIRT1)
8 (Disp. of

CVIRT2)

I

,

16 (Disp. of
CVIRT3) .

.1

0 (Disp. of
CVIRT1)

I
I

8 (Disp. of

CVI RT2)

Save

.,

.,

I
1
I

Each CVIRTB entry is eight bytes

Figure 50.

If the PMAP, CLIST, or DHAP options are
in effect, the format of the PGT is written
on SYSPRINT using routine HAPLOC.

I

write text,
increm.ent
RW1, and
release
tables.

l-

This VIRPTR entry contains the displacement
in the CVIRTB table of the. entry that
matched the virtual being processed.

When all Optimization A-text has been read,
storage is allocated for the PGT. Entries
for the External Symbol Dictionary and
object text are generated for virtuals and
literals. Register RW1 is used throughout
PGT allocation to hold the displacement of
the field currently being processed.
Counters in COMMON are set to the
displacements of their corresponding P.GT
fields from the beginning of the PGT.

,

.J

When a virtual definition is
encountered, the CVIRTB table is searched
for an ident ical entry. I f none is found,
the new virtual is entered in the CVIRTB'
table. Into the VIRPTR table is entered
the displacement of this virtual from .the
beginning of the CVIRTB table. If a match
is found, only a VIRPTR entry is made.

CVIRT1, CVIRT2, CVIRT3, CVIRT1, CVIRT2.

.,I

CVIRTB and 'VIRPTR Tables after
Processing Vi.rtuals

Preliminary calculations are made to
determine whether the size of th~ PGT
exceeds 4096 bytes. If .it does,: one 4-byte
OVERFLOW cell is required for each
4096-byte area after the first. Since
OVERFLOW cell allocation occurs before the
first reading of Procedure A~textin this
phase, phase 62 cannot yet determine the
number of PROCEDURE BLOCK cells that are
required in the PGT. Therefore~ it
allocates one additiona,l OVERFLOW cell to
allow for the possibility that allocation
of the PROCEDURE BLOCK ~ells'may cause the
PGT to exceed the final 4096-byte area that
has already been allocated.

Licensed Material - property of IBM

VIRTUAL

..--

Alloca~·

After the .OVERFLOW CELLS field of, the PGT
has been calculated, the VIRTUAL. field is
processed. Using theCVIRTB table, an
External Symbol Dictionary entry (ESD-text
type 2) is written for each. virtual unless
the DINAH or the RESIDENT option is in
effect.
(If the RESIDENT option is in
effect., no ESD or RLD item is written for a
library subroutine; if the DINAM option is
in effect, no ESD or RLD item is written
for a library subroutine or a user
subprogram.)
Object text is also written
and entries are made in the RLDTBL table
for subsequent writing of the Relocation
Dictionary.
The VIRCTR cell of COMKON is set to the
displacement of the VIRTUAL field from the
beginning of t.he PGT ~ (This value is 0 '
unless OVERFLOW cells have been allOCated.)
To determine the length of the VIRTUAL
field, four bytes are allowed. for each
entry in the CVIRTB . table. Thecalculated
length is added to r.egister RW1. If the
DINAM and/or RESIDENT 9ption is in effect,
the CVIRTB table is used to enter in the
PGT the EBCDIC names of those routines that
are to be dynamically loaded. The CVIRTB
table is kept for'use during Procedure
A-text processing, when its contents
(EBCDIC na\lles) will be used to generate
comments for CALL statements.
.

If the DINAM or RESIDENT option is in
effect, an 8-bytecell for,each library
subroutine name is allocated in the PGT; in
addition, if the DINAH optio:n is.in effect,
an 8-byte cell for each use~ subprogram
name is allocated in the PGT. If neither
option is in 'effect,this'field does not
exist.
.
'.

.

."

,

I

i

,
1

I

*+0

•

*+4

1
I
I
I

*+8

I
I
I

*+4

*+0

the displacement of the
I
I VIRTUAL field in the PGT (the value is 01
I if no overflow cells are present).
I
J-I
I!~:
Each VIRTUAL in the PGT is four
I
I, bytes
long.
.
,I
I~Indicates

Figllre .51.

VIRPTR Table after VIRTUAL
Allocation

PN Allocation
After the·VIRTUAL field or·the VIRTUAL
EBCDIC NAMES field, if allocated, has been
processed, the value in register RWl is the
displacement of the P~ field in the PGT.
This value is saved in the PNCTR cell in
COIiHON.

.

The ent;ries in the VIRPTR table are
changed to contain displacements in the
VIRTUAL field (see the example in Figure
51. The table, is' saved for subseque;nt, use
during Procedure A-text and Procedure
A1-text processing.

.

VIRPTR

I
I
I

.

A count of the EBCDIcnam~s:tobeplaced
in the PGT is kept inthe;BCDCTR .cell in .
COMBON. This count . is multiplied by 8 to
reserve space for the list of names. After
VIRTUAL alloca~ion, . register RW1contained
the displacement. of the VIRTUAL EBCDIC
NAMES field; the displacement lssaved in
the BCDISP cell in. COHMON.and register Ri1
is incremented to reflect'. the allocated
bytes for the VIRTUAL. EBCDIC NAMES cells.

only those PNsthat follow TO PROCEED TO
in an ALTER statement and the section-names
defined in· a USE statement in the
Declaratives section require PN cells in
the PGT. Phase 51 sets the RPNCNTR counter
inCOKKON to th~ number of cells required.
Phase 62 uses the RPNCNTR counter to
allocate 4 bytes for each PN. The total
length of the PN field is then added to
register RW1.

GN' Allocation
After the PN field has been processed, the
value in register RWl is the displacement
of theGN field "in the PGT. This value is
sa
in COMHON.
. . ved in the
'. GNeTR .. cell
.'
'.

. only thoseGNS that are used in
instructions. for an AT· END phrase or an
INV~LID KEY option,require GN cells in the'
PGT. Phase'51 sets the RGNCTR counter in
COMMON to the. number of cells required.
Phase'62, uses the RGNCTR counter to
~llocate 4 bytes for each GN.
The total
length of th~ GN field is then added to
register RW1.-'
.
Phase 62

167

Licensed Material - Property of IBM

LTLTBL
i

The DCBCTR cell in COMHON is used to
determine the amount of space required: 4
bytes are reserved for each DCB in the
program. The DCBCTR cell is set to the
displacement of the DCBADR field (the value
of register Ril) , and Ril is th~n
incremented to reflect the allocated bytes.

I

I

I
I

The displacement of the LITERAL field in
the PGT (the current value of register Ril)
is placed in the LTLCTR cell of COMMON.
The length and contents of the LITERAL
field will be identical to the CONTBL and
CONDIS tables.
For each LTLTBL entry that refers to
CONTBL, the value in the LTLTBL table is
replaced by the displacement of the
specific literal from the beginning of the
PGT. This displacement is calculated by
adding the value already in the LTLTBL
entry (which is the CONTBL disp~acement of
the 1i teral) to the value of Ril. An
example is shown in Figure 52.
The same processing occurs for LTLTBL
entries that refer to CONDIS, except that
the increment includes the length of the
CONTBL table. This occurs because DISPLAY
literals are placed after internal literals
in the PGT, as illustrated by Figure 38.
The LTLTBL table is saved for use during
Procedure A-text processing. The lengths
of the CONTBL and CONDIS ,tables are used to
increment Ri1. The contents of the tables
are used to write object text, and the
tables are released.

168

section 2.

Method of operation

I

,

I **+0
I
I
f
I
*+1
I
I
I
I
*+2
I
.., - - - - - f l
I **+5
I

I

The VNCTR cell of COMMON was used by
earlier' phases to count the number of
variable procedure-names in the program.
Eight bytes are allocated for every VN.
The displacement of the VNI field (the
value of Ri1) is placed in the VNILOC cell,
and the number of bytes allocated is added
to register Ril.

I

*+0

*+0

I

I
I

I
I *Displacement of LITERAL field from
I beginning of the PGT.
1**Displacementof DISPLAY LITERAL field
I from beginning of the PGT.

f
I
I
I
I

L---

Figure 52.

LTLTBL Table after Literal
Allocation

Phase 6'2 does not allocate storage for the
PROCEDURE BLOCK field until after it reads
and processes Procedure A-text. It reads
procedure A-text to determine the number of
blocks, containing approximately 4096 bytes
of storage', that are required for the
optimized Procedure Division (see
"optimizing and Allocating Storage for the
Procedure Division" later in this chapter).
After the allocation of storage for the
other fields of the PGT, the value in
register Ril is the displacement of the
PROCEDURE BLOCK field in the PGT. This
value is saved in the PRBLDISP cell in
COMMON. After Procedure A-text processing,
phase 62, using the PROCBL counter,
allocates one 4-byte cell for each
P roced ure bloc k •

OPTIMIZING

REGISTER-1~~IGN~ENTS

Seven registers are used by the compiler to
address Data Division items or OVERFLOW
cells in the mac'hine language program.
Registers 6 through 10 are assigned
permanently, that is. for the entire object
program; registers 14 and 15 are assigned
on a temporary basis, that is, for single
instructions or for short sections of code
only. Phase 62 assigns registers 6 through
9 before Procedure A-text is read, and
register 10 after Procedure A-text is read.
Use of registers 14 and 15 is determined as
Procedure A-text is processed.
optimization takes place for both permanent
and temporary register assignments.

Licensed Material - property of IBM

PERMANENT REGISTER ASSIGNMENTS
Phase 62 builds the BLASGTBL table for
permanent register assignments. Before
Procedure A-text is read, the REGHV1
routine assigns the OVERFLOW cells of the
TGT and the PGT to permanent registers,
starting with register 6, except for the
OVERFLOW CELL.
Register 12 points to the
PGT permanent register. Next, the BLSRCH
routine searches the BLUSTBL table, built
by phases 50 and 51, to determine the most
frequently used base locator. That base
locator 'is assigned to the next unassigned
register.
The process is repeated until
each of registers 6 through 9 has been
assigned.
After Procedure A-text has been
read, register 10 is assigned to the next
most frequently used base locator if it is
not needed for the additional OVERFLOW cell
of the PGT.

TEMPORARY REGISTER ASSIGNMENTS
Registers 14 and 15 are assigned to base
locators for single instructions or for
short blocks of object code only. While
Procedure A-text is being read, the ENTDRP
and ENTDRPL routines build the DRPTBL and
DRPLTBL tables, respectively, to optimize
the assignment of these registers.
Phase 62 optimizes the assignment of
temporary registers by avoiding unnecessary
repetition of load instructions. To do
this, it assigns the first two unique base
locators referred to in Procedure A-text to

registers 14 and 15 by making entries in
the DRPLTBL table. It builds the DRPTBL
table from the subsequent base locators
referred to until a condition is met which
makes resolution of register assignment
possible. These conditions are as follows:
• A reference to a base locator whose
previous assignment to a register is
still in effect.
G

A PN, a GN~ or the entry point of a new
program segment.

o

The base locator that will be
permanently assigned to register 10 if
that register is not needed for the
extra OVERFLOW cell of the PGT.

e

A RESERVE, DESTROY, FREE, or BLCHNG
element.

Figure 53 exemplifies the optimizing
process for base locator assignments to
register 14 and 15. Phase 62 builds the
DRPLTBL table for address increment
elements as well as for address references.
DRPLTBL table processing for address
increments is done only if the increment is
greater than 4095, in which case an
additional generated instruction is needed
to load the address of the data-name plus
the address increment, which is at least
4096 bytes, into temporary register 14 or
15. Phase 62 adds 4 bytes to ACCUMCTR for
each such LA instruction needed.
The
DRPLTBL entry for an address increment
indicates to phase 63 which temporary
register to use in the RX field of the LA
instruction being generated.

Phase 62

169

Licensed Material - Property of. IBM'

r-----~i------------------

IStepsl TemporaryBLls

8

o

o
o

o

CD

0)

o

G)

@
@
@
@
@
@

BL=6

,
steps

DRPTBL

--------------~--------~~-------------

BL=7
BL=8

>

BL=10

>10

8

®

BL=6
BL=10

DRPLTBL

>

R14*

>

R15*

>

R15*

>

R 15*

>

R14**

>

R15**

>

R14*

>

R14*

>

R14*

>

R 14*

->

R15*

>

R14*

>

R15**

CD

o

BL=11 ------------------------~--------> 11
BL=12 ~----------~---~~------~.~> 12

BL=5***------------~~~~--~~--~·------~------------~~-----------------

BL=6
BL=10

>

BL=7

@

7

BL=10

t1s\

> 12~--~------~-~~--------- >

BL=12

R14*

Entry point (referenced PN or GN definition or new segment)

I
i
I
I *In icates that a load instruction is generated for this assignment by phase 63.
I **Indicates that the BL is already loaded and that no load instruction is generated by I
,
phase 63.
I
1***BL=5 is the base locator that will be loaded into register 10 if the additional
,
OVERFLOW CELL for the PGT is not required.

,
I

I

.,

' . '.

.

.'

.

'E~E.la!l~tion :

. .
f:\"
. ~
,The first two base locators which are read, BL=6 and BL;=7 (steps \.!..I and 2 ), are
,entered immediately into the DFPLTBL table.
This indicates to phase 63 th t
linstructions are to be generated to load.these base locators into registers 14 and 15,
I respectively.
I
are
I
The next two base locators that are read, BL=8 and BL=10 (stepsGJand
,entered into the DRPTBL table for later assignment to the DRPTBl tab'?e for later
assignment to the DRPLTBL table.

0,

Sin. ce the next bas~ocator, BL=6, has already been.assigned. to regis.ter 14, it is
assigned again (step ~) to register 14 in the DRPLTBL table and a flag is set to
indicate that no load ~nstruction is necessary.
.'
. .
'.' .

0).. ..'

BL=8 and BL=~ are then assigned to register 15 . (step
BL=10 (step~) is assigned to register 15 and a flag ~s set to indicate that no
load instruction ~s necessary •.'
.
f::'\
BL=11 and BL=12 are entered into .the DRPTBL (steps \.2) and

0). . .

I
I

,,
,,
,
,,
t

since BL=5is to be loaded into register 10 if it becomes av~ilable after Procedure
A-text is read, it. is con.ditionallY~Signed to regist. e. r 14 and . BL=11 .and BL=12 are
I
I also assigned to register 14 (step 9 ) •
'.
•
.
. ,
'.
. .'
'.
'.
I
The entire process. is essentially .,repeated ~ep. s @throu 9h@.)Untilthe entrYI
,point of a procedure or segment is met (step ~) .where the, process is initiated
I
,again.
'
..
I

,

Figure 53.

170

Optimizing Assignmen t. of Registers 14· and 15

section 2.

Method of operation

Licensed Material - Property of IBM

OPTIMIZING AND ALLOCATING
PRQ£EDURE DIllSIQ!!

ST~E

FOR TH!

Whenever a PN or GN is referred to in an
instruction, a check is made to determine
whether the address of the Procedure block
that contains the PN or GN has already been
loaded into register 11. If it has not
been loaded, then an instruction is
generated to load the address of the
Procedure block into register 11.
As phase 62 reads Procedure A-text, it
determines the Procedure block number for
each PN and GN and builds the PNLABTBL and
GNLABTBL tables. These tables are passed
to phase 63, which generates the act.ual
instructions necessary for establishing
addressabili ty.
To build the PNLABTBL and GNLABTBL
tables phase 62 uses a counter, called
ACCURCTR, to generate displacements within
Procedure blocks. This counter is
incremented with the length of each
instruction occurring in the completed
object program. phase 62 uses ACCUMCTR to
determine when the displacement of the
definition of a GN or PN from the beginning
of the Procedure block exceeds 4095 bytes.
When the displacement is greater than 4095
bytes, a new Procedure block is begun.

since references to PNs and GNs that
have not yet been defined may entail an·
additional instruction to load the
Procedure block address of a different
Procedure block, the number of bytes
represented by the counters in the PNFWDBTB
and GNFWDBTB tables must be added to the
displacement in ACCUMCTR to. determine the
current length of the Procedure block.

Phase 62 sets a counter, called PROCBL, for
use in building the PNLABTBL and GHLABTBL
tables. PROCBL is incremented for each
procedure block. The value contained in
PROCBL is the Procedure block number for
the current block of code. Using PROCBL,
the DEFLD11 routine enters the Procedure
block number of each referenced PH and GN
definition in the PNLABTBL ahd GNLABTBL
tables for use by phase 63.
The NOBLST routine uses the PNCTR and
GNCTR cells in CORMON to determ~ne the
number of PN entries and GN entries,
respectively, that are required in the
PNLABTBL and GNLABTBL tables.

Increm·enti!l.9.J:he ACCUMCTR £ounter
Phase 62 also builds the PNFWDBTB and
GNFiDBTB tables for all PNs and GNs that
are referred to prior to their definition
point. since it cannot be determined
whether the reference and the definition
occur within the same Procedure block, it
is not possible to determine whether the
Procedure block address of the definition
is already loaded into register 11 at the
point where the reference is made to it.
The forward branch tables (PNFWDBTB and
GNFiDBTB) are used to accumulate the number
of forward references to PNs and GNs,
respectively, which mayor may not be
defined in a different Procedure block. As
the definition .point for a PN or GN that
has been entered into the PNFiDBTB or
GHFWDBTB table is encountered, the counter
for that PN or GN is set to zero.

As phase 62 reads Procedure A-text, it
increments ACCUKCTR by the length of each
machine language instruction that is part
of the completed object program. Since the
optimizer phases of the compiler use
Procedure block addresses to address PNs
and GNs, these phases eliminate and change
some of the instructions in Procedure
A-text. Phase 62, therefore, determines
which instructions are to be eliminated or
changed during the optimization process,
and then increments ACCUMCTR accordingly.
To increment ACCUMCTR, phase 62 uses the
codes listed in Figure 54, Procedure
A-text, the PNLABTBL, GNLABTBL, PNFWDBTB,
and GNFWDBTB tables, and the PROCBL
counter.

Phase 62

171

Licensed Material - Property of IBM

r--

,

i

i

,

I

I

Action Taken By

I
I Meaning/Procedure-Name I
,Code, Definition
, P h a s e 62
I
,
,COOliLoad instruction not I
,followed by branch in-I

r--

'~truction.,

I

I

,
I
,
,

Phase 63

t

It---------+_
I A Procedure-name waslAdd 4 to ACCUMCTR. ,Set COOl switch;
I
defined in same
I
,replace L instruc,
Procedure block.
I
Ition with LA in,
I
,struction. Add
,
,
,Procedure base
I
I
Iregister element. 2
,
,
IAdd 4 to counters.
I
I
IDO not rewrite
,
,
COO 1.
........I
B Procedure-name was Add 8 to ACCUMCTR. Set COOl switch;
defined in differgenerate:
L Rl1,
ent Procedure
Procedure block
number element. 3
block.
Generate LA instruction.
Add Procedure base
register element.2
Add 8 to counters.
Do not rewrite
IC001.
C

Procedure-name is
not yet defined
(forward
reference) •

,

+-

IEnter procedureIname in PNFWDBTB orl
,GNFWDBTB table.
I
,Resolve procedureI name definition
Istatus by end of
I
IProcedure block.

,,
,

I~--~---------------------~-----------

~

I

I
Phase 64
I
,
i
,
I
I
I
,
I
,
i
IFill in displace- ,
Iment using PNLBDTBLI
lor GNLBDTBL table
I
land Procedure base I
Iregister element. 2 I
I
I
I
I
I
I
I
I
I
,
Fill in displaceI
ment of Procedure I
block in PGT using I
procedure block
I
number element.2
I
Fill in ~isplaceI
ment of procedure- I
name using PNLBDTBLI
or GNLBDTBL table
I
and Procedure base I
register element. 2 I
,
i
I
I
,
I
,
I
,
I

,

,

I
I

!

,
I
i

,
,,

I

'B2i~:

I lThese Phase 50 optimization information elements (COxx) are created by phase 50 from I
, Phase 40 optimization information elements (43xx).
,
I
I 2Procedure Base Register Element:

,,

Bytes

,
I

I
I

,
,
,,
,

2-3

0

1

C8 = PN
CC
GN

Register number

PN/GN number

, 3Procedure Block Number Element:
Bytes

I

L---______,__________

Figure 54.

172

0
L-

1

C4 - -____ L---________
Block number
______
.____

~

Processing for Optimization Information Elements (Part 1 of ,3)

Section 2.

Method of Operation

Licensed

r---

~aterial

- Property of IBM

,

~------------.------------.-----------

I

I
I
I
I
Ilieaning/Procedure-Name ....
,
ICodel Definition status
I
Phase 62
f-- I
I
IC002lBranch-in point.
Add 4 to ACCUMCTR.
I
I (Addressabili ty for
I
I Procedure block is
I
I uncertain.)
II
I
,
I
I
I
I
IC0031An address constant is Add 4 to ACCUMCTR.
I
I to be used for this
I
I element; PGT to conI
I tain a PN cell or GN
I
I cell.
I
I
I
I

Action Taken By

I
-f
I

--------------r-------------r---------

I

I

IC0041PERFORH exit.

I
I
I
I
I
I
I
I
I
I
I
I
I
I
1---+-1- - - -

I

+--

Phase 63

I

Phase 64

---+--------------~,

IIndicate that Pro- I
Icedure block
I
laddress is to be
I
Iloaded at next re- (
Iference to PN or
I
IGN. Do not rewritel
I C002.
I
I
I
IWrite Procedure A1-IProcess PN or GN
(text element iden- Ireference as in
Itical to Procedure Iphase 6.
I A-text element.
I
IAdd 4 to counters. I
I
IDo not rewrite
IC003.
I
I
I
IFind all entries in Do not rewrite
I
,the BLVNTBL for the C004.
I
IVN whose reference
I
Ifollous this eleI
I ment. Enter
I
Icurrent block numI
Iber in these
I
Itable entries.
I

I

I
I

1
(
I
I

I
-f
I
(
(
I
I
I
I

-f
I
I
I
I
I
1
I
I

l . f

COOS Return point from a
IAdd 4 to ACCUKCTR. Search BLVNTBL to IFill in displaceperformed procedure
I
determine if the
I ment of Proce'dure
(G N definition).
I
EXIT from the per- Iblock in PGT, using
Element is followed bYI
formed procedure islProcedure block
a GN definition
I
lin the same Proce- Inumber element. 3
element.
I
Idure block as the I
I
Ireturn point.
I
I
IRewrite GN defini- (
Ition element with- I
lout COOS. I f
(PERFORM Exit and
Ireturn point are in
Isame block, rewrite
element without
COOS.
If they are not in
same block, indicate that register
11 contains ProceI
dure block address
I
of PERFORM exit.
I
Rewri te element
I
without COOS.
I

f--

.f

I!iQ!:§.:
I
I lThese Phase 50 optimization information elements (COxx) are created by phase 50 from I
I Phase 4 optimization information elements (43xx).
I
I
I
I 3Procedure Block Number Element:
I
I
I
I
Bytes
0
1
I
I
I
I·
C4
Block
number
I
L--_ _ _ _ _ _ _.L---.
.
___
_ _ _ _- '
II
L -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _- - - - . - - - - - - - - -______________________________________.J

Figure 54.

Processing for Optimization Information Elements 1

(Part 2 of 3)

Phase 62

173

Licensed Material - Property of IBM

i

•

I
Action Taken By
I
I
tKeaning/Procedure-Namef~----~-------------ri------------~------ri------------------~I
,Code, Definition status
I
Phase 62
I
Phase 63
I
Phase 64
I
I t '
---~--III----------III---------~
,C006fLoad instruction,
,
I
I
,followed by an uncon- ,
1
1
I
I
I
I ditional branch.
1
I
,
,
I
I
I
I
I
of
I
I A procedure-name
,Add 4 to ACCUKCTR ,Turn on LOADS&
,
I
,
I
defined in same
Ifor RX-type branch ,switch.
I
I
,
I
Procedure blcok. linstruction to be IDO not rewrite
1
I
,
,generated.
,C006.
I
,
I
+-----------~,-~~
I B Procedure-name
IAdd 8 to ACCUMCTR ITurn on LOAD5i
IFill in displace- I
I
defined in difIfor load of regis- Iswitch.
Iment of ProcedUre I
ferent procedure Iter 11 and RX-type IDo not rewrite
Iblocks in PGT,
I
I
I
block
Ibranch instruction IC006.
lusing Procedure
I
I
I to be generated.
I
I block number
I
1
,
1element. 3
I
I
+I~'----------+I---------+I------------~'
,
,C Procedure-name notlEnter procedure,Turn on LOADSW
,Write RX-type
,
I
yet defined.
,name in PNFWDBT B
,swi tch.
1branch instruction I
,
,or GNF'liDBTB;
,Do not rewrite
,following the C006 I
,resolve procedure- ,C006.
Iload instruction. ,
I
,
Iname definition
I
I
,
I
Istatus by end o f l
I
I
I
I Procedure block.
I
,
I
r-- i
i
•
i
f

,

INo!~:

I lThese Phase 50 optimization information elements (COxx) are created by phase 50 from.
I Phase 4 optimization information elements (43xx).
I
I 3Procedure Block Number Element:
I
Bytes
1
o
I

,

C4

I
I

Figure 54.

processing for optimization Information Elements 1 (Part 3 of 3)

BRANCH INSTRUCTIONS: The
PROCBL counter contains the number of
Procedure blocks that are required for the
Procedure Division. Each time that
ACCUMCTR and the information in the
PNFiDBTB and GNFWDBTB tables indicate that
a PN or GN definition is at a location
greater than 4095 bytes from the start of
the Procedure block~ block transition takes
place. The PROCBL counter is incremented,
and ACCUKCTR is set to zero.

RROC~§!!~OR

When a branch is taken to a PN or GN
wi thin the· Procedure block whose address
already is loaded into register 11, an
addition of 4 bytes is made to ACCUMCTR for
the Rx-typebranch instruction. When a
branch is taken to a PNor GN whose
Procedure block is not already loaded into
register 11, 8 bytes are added to the
ACCUMCTR for the load of the Procedure
block address and the RX-type branch
instruction.

174

Block number

L-----____________~________________~

Section 2.

Method of operation

Each time that the ENTPT01 routine
processes a PN or GN definition, it
determines whether the value in ACCOMCTR
plus the number of bytes necessary to
branch to the procedure-na~es listed in the
PNFiDBTB or GHFiDBTB table is greater than
4095 bytes. If it is not greater, then
Procedure A-text processing continues. If·
it is, then the ENTPT01 routine determines
whether the definition being processed has
a count of forward references in the
PNFWDBTB or GNFiDBTB table. I·f it does
not, a new Procedure block begins at this
definition point. If.a count :is found,
however, the number o,f bytes. r,epresented by
the count is compared' with the' number of
bytes in ACCOftCTR minus 4096. If the count
value is low or equal, a new Procedure
block begins at this defini.tion point. If
it is high, the count field is set to zeros
and this definition point remains within
the current block. Phase 62 then makes new
calculations to determine the size of the
Procedure block.

Licensed Material - Property of IBM

Phase 63 (IKFCBL63) is the second of the
three phases that produce the machine
language program. Its principal function
is to produce Procedure Al-text, which is
uritten on SYSUT2. Phase 63 produces the
text according to the information supplied
from phase 62. Upon completion, the text
is passed to phase 64 where it is used to
urite the machine language program. Phase
63 also produces Debug-text on SYSUT4 if
the STATE or SYMDMP option is in effect.
Phase 63 produces Procedure A1-text from
Procedure A-text by:
o

Inserting information for addressing
PHs and GNs and Procedure blocks in
instructions, such as displacements of
Pl{s and GNs within a given block and
the Procedure block number to be used.

o

Generating all remaining instructions
for the object program except the load
instruction elements required when a
data-name is only temporarily
addressable.

o

Reading the program in ascending order
and writing Procedure Al-text in this
order with the root segment first.

The operations of Phase 63 are described
in Diagram 6. located with the foldouts at
the back of this publication.

Routine PHAS63 performs the initialization
process for phase 63. It saves LOCCTR for
restoration at end of file, relocates all
of the TIB addresses, and primes all the
new tables used by the phase except for the
QGNTBL. uhich is primed in routine QBEGIN
if there are Q-Routines. If the program is
segmented, a call to phase 00 is issued to
request a POINT to the first section of
text on SYSUT1. Otherwise, the .
initialization routine requests phase 00 to
read the first Procedure A-text buffer from
SYSUT1.

Phase 63 reads Procedure A-text from SYSUTl
and writes Procedure A1-text on SYSUT2.

Procedure A1-text is described in
"Section 5. Data Areas."
CONTROL ROUTINE
Routine GET serves as the control routine
for phase 63 processing of Procedure A-text
elements. It reads each element of
Procedure A-text and branches to one of
several routines for specific processing of
each type of element.
For Phase 50 and 51 optimization
information (CO) elements, macro-type
instruction (44) elements, and operation
code (4S) elements, it branches to routines
CO, MACRO and FOURTYS. respectively.
For each of the other elements the GET
routine uses the GETBTBL table to branch to
the proper routine for specific processing
of that element.

PROCESSING PROGRAMS WITH ONE PROCEDURE
BLOCK
In programs that do not exceed one
Procedure block in length, and that have no
Report Writer or Declaratives Section, the
procedure block address is loaded into
register 11 only when the ENTRY macro-type
instruction (4404) element and/or STA~
macro-type instruction (4420) element of
Procedure A-text is read.

PROCESSING FOR BRANCH INSTRUCTIONS
The BRANCH routine processes the branch
element that follows the PN or GN
reference.
It uses the SAVETBL and either
the PNLABEL or GNLABTBL table to determine
whether the referenced PN or GN is defined
in the Procedure block currently loaded in
register 11. If the PN or GN is defined
outside of the Procedure block, a ProcedUre
A1-text element is generated to load
register 11 with the address of the
Procedure block that does contain the PN or
GN definition.
The BRANCH routine then
generates an Rx-type Procedure A1-text
branch element instead of the RR-type
Procedure-A text element so that an
instruction will be generated to branch to
the PN or GN.
Phase 63

175

Licensed Material - Property of IBM

If the PN or GN is defined within the
Procedure block that is currently loaded in
register 11, the routine merely changes the
RR-type branch instruction to an Rx-type
branch instruction. The register number in
the original instruction is changed to zero
since register 11 is inserted in the branch
instruction by phase 64.
The PN (C8) or GN
(CC) number element from the SAVETBL work
area follows the instruction.
PROCESSING FOR OPTIMIZATION INFORMATION

~1~~~li1~=JcoQI=~00IL-------------------

Phase 63 processing for optimization
information elements is described in Figure
54 in the chapter "Phase 62."

PROCESSING FOR RPT-ORIGIN (D4) ELEMENT
An RPT-ORIGIN (D4) element indicates that
an RLDTBL table entry is to be made for
this location in the program. The location
is the point of definition (or the point of
definition plus 4 bytes) of the GN for a
REPORT-ORIGIN verb.
Routine D4 creates the
RLDTBL entry for the location, saving the
value contained in LOCCTR. It sets the
high-order byte to hexadecimal '10' to
indicate the purpose of this entry to phase
64. The entry is used to generate text
cards at the proper location; but phase 64
does not produce an RLD card for this type
of entry.
When the ORIGIN macro-type
instruction (4438) element is read later,
LOCCTR is set by phase 64 to the value of
LOCCTR at the time of the RPT-ORIGIN
element.

PROCESSING FOR ADDRESS REFERENCE (78)
ELEMENTS
Address reference (78) elements are
generated to address data areas.
The data
areas are addressed by means of a
displacement from a base locator.

and indicate that an additional
value is to be added to the
value indicated by the Address reference
(78) element to address a data-name.
displacem~nt

When routine GET finds an Address
increment (89) element in Procedure A-text,
it branches to routine ADINCR which
determines whether the sum of the
displacement and the value contained in the
Address reference (78) element is less than
4096 bytes. If the sum is less, then the
ADINCR routine adds a byte containing X'OO'
to the Address reference (78) element and
writes the element in Procedure A1-text.
If the ADINCR routine determines that
the Sum is 4096 bytes or greater, it adds a
byte containing X'OE' or X'OF', which
indicates to phase 64 that LA instructions
[that is, LA 14,4095(R) or LA 15,4095(R)]
are to be generated using either register
14 or register 15, respectively, to the
Address increment (80) element and writes
the element in Procedure A1-text.
LOCCTR
and ACMCTR are incremented by 4 for each
multiple of 4095 bytes in the added
displacement.

PROCESSING FOR INCREMENTED ADDRESS
ELEMENTS

(A4)

The Incremented address (A4) element in
Procedure A-text is functionally a
combination of the Address reference (78)
and Address increment (80) elements and is
treated as such by phase 63. The ADREF
routine (if no load is required, that is,
if the data-name is already in a register)
changes the element into a Base
displacement data-name element (see
"Processing for Address Reference (78)
Elements" in this chapter).
If the IDREF
routine changes the element, the increment
portion of the Incremented address (A4)
element is written out as an Address
increment (80) element with the high-order
bit of the low-order byte set to 1 to
indicate that the increment has already
been added.

When an Address reference (78) element
is found in Procedure A-text, routine GET
branches to the ADREF routine for
processing.

PROCESSING FOR ADDRESS INCREMENT (80)
ELEMENTS
When Address increment (80) elements pccur,
they follow Address reference (78) elements
176

Section 2.

Method of operation

If the SYMDMP or the STATE option is in
effect, Procedure A-text is used to create
Debug-text which is written on SYSUT4.
Debug-text elements are written by the SYS2
routine.
For all Card number (2C) elements
encountered, CARDLOC (10) elements are
written that contain the card number and
its displacement within the object module.

Licensed Material - Property of IBM

Debug-text also contains:
o

o

Discontinuity (40) elements "that are
created when phase 63 combines two
sections of equal priority that have
discontinuous card numbers because of
an intervening section or sections of
different priority.
ENDSEG (20) elements that identify the
last byte of each segment, or the last
byte of Procedure Division code if the
program is not segmented.

Debug-text is used by phase 65 to
produce debugging information for the COBOL
library debugging subroutines.

o

Produce RLD-text for the linkage editor

An RLD entry contains the relative address
within the object module for the entry
item.
Before an entry is made, the RLDTBL
table is sorted.
RLDTBL entries are
created by phases 63 and 64; the RLDTBL
table is completed and processed by phase
64. Processing the RLDTBL table entails
writing RLD-text is some cases.
At object
time, the linkage editor relocates
addresses contained in the RLD-text.
(Not
all RLD entries cause RLD-text to be
written. )
Routines PNDEF, GNDEF, and STARTMAC
enter the relative address of an address
constant in the RLDTBL table as well as the
target address.

While producing Procedure A1-text, phase 63
uses two counters:
LOCCTR in COMMON and
ACMCTR. LOCCTR is used to generate the
relative displacements of each instruction
listed and enter target addresses in the
RLDT BL table.
For details. see "Making
Entries in the RLDTBL Table" in this
chapter.
AC5CTR is incremented for all code that
is to be contained in the completed machine
language program. It is used to generate
the displacements of PN and GN definitions
within each separate Procedure block.
Routines PNDEF and GNDEF build the PNLBDTBL
and GNLBDTBL tables for this purpose.
Phase 64 uses these tables to generate the
proper displacements.

The QGNTBL table lists the Q-Routine GNs
and their corresponding Procedure block
numbers. These are needed by phase 64 to
initialize Q-Routines during INIT3
processing. The table is built from the
GNLABTBL by phase 63 at each GN definition
(34) element following the Q-BEGIN
macro-type instruction (4440) element.

RLD entries are made to:
• Resolve iN addresses
o Resolve the GNs for REPORT-ORIGIN verbs

Routine D4 makes entries for locations
associated with REPORT-ORIGIN verbs.
It
sets a bit to indicate to phase 64 that RLD
cards for these entries are not to be
produced. For details on these entries,
see "Processing for RPT-ORIGIN (D4)
Elements," which appeared earlier.

When a program is not segmented, phase 63
reads Procedure A-text from SYSUT1 in the
order in which it was written.
When a
program is segmented, Procedure A-text is
read in order of ascending priority so that
the procedure instructions for the root
segment are processed first.
The PHAS63 routine first determines
whether the program is segmented by
checking SEGLMT in COMMON. If SEGLMT does
not contain X'FFI, the routine relocates
the SEGTBL table and indicates to phase 00
that a POINT macro instruction is to be
issued to access the root segment in
Procedure A-text. Processing of Procedure
A-text begins at that point.
In phase 1B, the priority numbers of all
sections in the root segment were set to O.
When the MACRO routine comes to the end
of a section, it branches to the SEGBRK
routine, which determines whether the end
of the section is also the end of a
segment.
If it is the end of the segment,
the routine searches the SEGTBL table for
the next segment of next highest priority.
If it is not the end of the segment, the
SEGTBL is searched for the next section of
the same priority. When the end of the
SEGTBL table is reached, control passes to
routine EOF.
Phase 63

177

Licensed Material - Property of IBM

If the SYMDMP or the STATE option is in
effect, at the end of processing for each
segment, the final LOCCTR value for that
segment and the priority for the next
segment to be processed are both written on
SYSUT4 for phase 65.
A section is a series of source
program procedure instructions grouped
under the same section-name. A segment is
all the instructions whose sections have
the same priority, and ,a segment may
consist of one or more sections. There is
a SEGTBL entry for every section whose
priority differs from that of the section
preceding it.

When all segments have been processed or at
end of file in an unsegmented program,
routine EOF calls routine RLDSORT to sort
the final RLD entry.

!2~:

178

Section 2.

Method of operation

Then it releases the tables used by
phase 63. except for the PNLBDTBL.
GNLBDTBL, VNPTY. VIRPTR, LTLTBL, BLASGTBL,
GNATBL, PNATBL. QGNTBL, and RLDTBL tables,
which are passed to phase 64. Finally, it
restores LOCCTR, and returns control to
phase 00.

Licensed Material - Property of IBM

Phase 64 (IKFCBL64) is the last of the
three phases that produce the machine
language program. The major functions of
phase 64 are:
o Completing the RLDTBL table and
building the QTBL table by processing
Data A-text.
G

Processing E-text and DEF-text.

o

Processing Procedure A1-text and
entering displacements in the
instructions generated by phase 63.

e

Hriting object text and REF-text from
Procedure A1-text.

o writing object text for the INIT2,
INIT3, and INIT1 routines of the object
program in that order.

the object program. Each element results
in either the writing of an object text
element or an entry in the RLDTBL.
Some
RLDTBL entries will later be written out as
Relocation Dictionary (RLD~text) entries
for the data areas and as object text.
Others, for the Global Tables. Hill be
eritten as object text only.
(These will
be relocated by the object program.)
SYSUT4, from which Data A-text is read,
also contains E-text generated by phases 10
through 51, and DEF-text for the
cross-reference listing if the SXREF, XREF,
VBREF, VBSUM, or TEST option is in effect.
Figure 55 illustrates the contents of this
data set when it is read by phase 64.
Figure 56 illustrates hOH each type of
element is processed.

o writing object text and RLD-text from
the RLDTBL table.

An introductory discussion of the output
generated by phase 64 in response to
compiler options is given under "output of
Phases 62, 63, and 64" in the chapter
"Phase 62.11

Phase 64 reads Procedure A1-text from
SYSUT2 to produce the machine language
instructions for the object program.
One
element of text is read and processed at a
time, and the object code produced for this
element is placed in a worlt area OU6REC.
One or more elements are required to
produce a complete instruction. When an
instruction is complete, it is written out
from the work area.

PROCESSING DATA A-TEXT, E-TEXT, AND
DEF-TEXT.

If the PMAP option is in effect, the PUT
routine is called to write a line of text
on SYSPRINT every time a complete
instruction has been created.
If the CLIST
option is in effect, this routine is called
only for each source program verb.

Phase 64 reads Data A-text from SYSUT4
before it reads Procedure A1-text from
SYSUT2.
It does this because Procedure
A1-text for segmented programs has been
written by phase 63 in order of ascending
priority with the root segment first.
Therefore, phase 64 must complete all
RLDTBL entries for the root segment before
Procedure A1-text is read.

If the SXREF or the XREF option is in
effect, Procedure A1-text is used to create
REF-text, which is written on SYSUT3.
This
text, containing an element for every
data-name, file-name, and procedure-name in
the program, is used by phase 6A to produce
a cross-reference listing.

The primary function of Data A-text
processing is to place values into the data
areas and fields of the Global Tables of

Figure 57 describes the processing for
each type of Procedure A1-text element.
The individual elements are illustrated in
IIsection 5. Data Areas."

Phase 64

179

Licensed Material - Property of IBM

r------------------Beginning of
r---

I
I start

,,
,

SYSUT4

Da ta A-text

I
I

,

-,

Wr i ti~!L!rr.-Rha.2!L~l

E-text gen-erated by phases· 10,
12, 20, 22, and 21

I
I
I
I
I
I

t

DEF-text 2 (data-name, file-name)
NOTE:

These types of text are
intermixed

~

,,
,,
I

I

,I

,
I

,
I
,

.H~i t.!:mLlli

I,
I
,
I

Writte!L~.LPha§g_.21

Pha§g-d

DEF-text 2 (Procedure-name)

,

I
I
I

Read during Data A-text processing 1

4
I
I
,

------------------4I,

E-text 3 generated by phases 12,
1B, 3, 4, 45, 50, 51

,
I
,
,

End of data marker for Data A-,
DEF-, E-text (01)

,
~

writ.!:mL~~ Pha§g_~~

:
,

I
I

Debug-text if STATE or SYMDMP
option is specified

,
,

,
I
,
I
I
-4(

:
I

Not read by phase 64 -- passed to
phase 65

I
L---._____
--I .
, End
I
.-------------.----------~
"There are no control breaks provided between sections of text to distinguish text
I written by one phase from text written by another.
,
During Data A-text processing, phase 64 determines solely from code (which is the
I first byte of the element) .what type of text is contained in an element, and which
I routine is to be called to process it.
,
E-text generated by phase 10 was passed to phase 21 intermixed with Data Ie-text.
,2Produced only if the SXREF. XREF, or TEST option is specified.
13 E-text generated by phases 12, 1B, 3, 4, 45, and 50 was passed to phase 51 intermixed
I with Procedure IC-text. However, if the CSYNTAX option was requested and neither an
I error (E) nor a disaster (D) level message was generated, phases 3, 4, and 50 write
IL -E-text
- -_____ on SYSUT4.

Figure 55.

180

contents of SYSUT4 when read by Phase 64

section 2.

Method of Operation

Licensed Material - property of IBM

,

I

ICode and Type

I

r--

100
IE-text
I
I
I
I
1
I
I
I
I
,
I
I
I
,
I
I

I

Figure 56.

I

---+1--

~

IAII E-text is built into a table called ERRTBL, which is passed to
I
Iphase 70. Phase 64 does not process the E-text. If the ERRTBL table I
loverflows the space allotted to it, all of the E-text is rewritten on I
ISYSUT3, and a bit in the SWITCH field of COMMON is set to indicate thisl
Ito phase 70.
I
I
I
I
There are two types of E-text elements:
(1) message definitions andl
1(2) message parameters. Message parameters are optional; however, if I
Ithey occur, one or more message parameters immediately follow the
I
Imessage definition to which they apply (the uses of these elements are I
lexplained in the chapter "Phases 70,71, and 72"). Phase 64 examines I
leach element to determine its length, so that the correct number of
I
Ibytes may be stored in the table. To do so, it checks the third byte I
lof the element. If the byte contains a zero, the element is a message I
,definition whose length is 8 bytes. If the third byte is nonzero, the I
lelement is a message parameter of variable length, and the length is
I
Idetermined from the value of the second byte (for the format of E-text I
land ERRTBL see "Section 5.
Data Areas").
I

104
IDCB address
I
I
I
I
I
108
IDECB address
I
I
I
I
I
OC
block address

I
/14
IFIB address
I
I
I
,I

I

Action Taken

I

of

,

,

IGenerate an RLDTBL entry that will cause the address of the DCB to
I
Ibe placed in the correct cell of the DCBADR field in the PGT at
,
lexecution time. Get displacement of the DCBADR field from cell DCBCTR I
lin COliMON (see "DCBADR Allocation" in the chapter "Phase 62 11 ) and use I
Ithe DCB number to compute displacement of cell. Text element contains I
Ithe value (relative address of the DCB) to be placed in the PGT cell.
,
I
-f
IGenerate an RLDTBL entry that will cause the address of the DECB to
I
Ibe placed in the correct cell of the DECBADR field of the TGT at
I
lexecution time. Get displacement of the DECBADR field from cell DECBCTI
lin COMMON (see Figure 48 in the chapter "Phase 62 11 ) and use the DECB
I
Inumber to compute displacement of .cell. Text element contains the
I
Ivalue (relative address of the DECB) to be placed in the cell.
I
I
---t
IGenerate an RLDTBL entry that will cause the address of the buffer
Ito be placed in the correct BL cell of the TGT at execution time. Get
Idisplacement of the BL field from cell BLCTR in COMMON (see Figure 48
lin the chapter "Phase 62 11 ) and use the BL number to compute
Idisplacement of the cell. Text element contains the value (relative
laddress of the buffer) to be placed in the TGT cell.
I
I
If the value of the SIZE field of the element exceeds 1024 (SIZE
Ispecifies length of the block in full words), more than one BL has been
lassigned to the buffer. For each 1024-word area after the first,
lanother RLDTBL entry is made. The second RLDTBL entry will cause the
Ibuffer address plus 4096 to be placed in the next BL cell of the TGT.
I
-f
IGenerate an RLDTBL entry that will cause the address of the File
I
IInformation Block to be placed in the correct cell of the FIB field in I
Ithe TGT at execution time. Get displacement of the FIB field from
I
IAMICTR cell in COMMON and use the FIB number to compute displacement ofl
Icell. Text element contains the value (relative address of the FIB) tol
I be placed in the TGT cell.
I

Processing Data A-text, E-text, and DEF-text (Part 1 of 2)

Phase 64

181

Licensed Material - Property of IBM

,.--

I

ICode and Type
Action Taken
I
I
~
124
IGenerate an RLDTBL entry that viII cause the address of the iorkingI
IWorking-StoragelStorage Section to be placed in the correct BL cell of the TGT at
I
1Section addresslexecution time. Get displacement of the BL field from BLCTR cell in
I
I
ICOMMON (see Figure 48 in the chapter "Phase 62") and use the BL number I
I
Ito compute displacement of the item. Text element contains the value I
I
I (relati ve address of the Working-storage section) to be placed in the I
ITGT cell.
I
,
1
I
If the value of the SIZE field exceeds 1024 (SIZE specifies the
,
I
Ilength of the Working-storage section in fullvords), more than one BL I
Ihas been assigned. For each 1024-vord area after the first, another
I
I
I
IRLDTBL entry is made. The second entry viII cause the address plus
I
I
14096 to be placed in the next BL cell.
I
I
I
I
128
IWrite object text that viII place the value of the constant into a
I
I specified location in the data area at execution time. This type
,
I constant
,definition
lof element is used to fill some fields of DCBs and DECBs, and to
I
I
linitialize data items for vhich a VALUE clause vas specified.
I
I
I
of
12C
IGenerate an RLDTBL entry that viII cause the address of the
I
I procedure-name (PN) or generated proced ure-name (GN) to be placed in
I
I address
Iconstant
la specified location of the data area at execution time. This type
I
I definition
lof element is 'used to place pointers to routines in DCBs and exit
I
llists.
I
I
~
I
~
34
IThis type of element contains a GN number for Q-Routine. The
I
Q-Routine
lelements are built into a table called QTBL. Each entry is resolved
I
identification Iso that it contains the actual address of the routine rather than
I
Isimply the GN number. This processing is identical to that for GN
1
Ireferences in Procedure A-text (see Figure 57 in this chapter). When 1
Iphase 64 generates the code of INIT3 (one of the execution-time
1
linitialization routines), it uses the QTBL and QGNTBL tables to
1
Igenerate a call to some Q-Routines to initialize the data and table
1
lareas affected by some OCCURS ••• DEPENDING ON data items, where the
1
,object of the DEPENDING ON option is an item in the Working-storage
1
ISection.
1
•
+i
IGenerate an RLDTBL entry that viII cause the displacement in the
1
138
ITGT of the BL number assigned to VSAM files to be placed in a specified 1
IBL reference
1
Ilocation of the data area at execution time.
I
I
I
i
13C
IGenerate an RLDTBL entry that viII cause the displacement in the
1
IBLL reference ITGT of the BLL numbers assigned to VSAM files in the Linkage Section tol
I
Ibe placed in a specified location of the d.ata area at execution time.
1
I
IThis type of element is used to complete the building of the FIB at
1
lexecution time.
1
I
•
I
of
148
,This element is present only if the SXREF or theXREF option vas
1
Idata-name or
Ispecified. Each element is vritten out as it is encountered on
1
I file-name
,SYSUT1, to be read by phase 6A. The chapter "Phase 6A describes
1
IDEF-text
Ihow-these elements are used.
1
~------------~I------------------------------------------------------------~I

14C
,procedure-name
,DEF-text
I ______________
~,

Figure 56.

IThis element is present only if the SXREF or the XREF option was
Ispecified. Each element is written out as it is encountered on
,SYSUT 1, to be read by phase 6A. The chapter "Phase 6A" describes how
,these elements are used.

~___

Processing Data A-text, E-text, and DEF-text (Part 2 of 2)

!ot~-.QJ!J!!!.ruL.!t~qiste!:§....f2L!.~..f2L!!.!!d

TQ!:
At execution time, register 12 always
points to the beginning of the .PGT and
register 13 always points to the beginning
of the TGT. If the displacement of an item
in the PGT or TGT exceeds 4096 bytes, an
182

I
I
I
,
I

Section 2.

Method of operation

OVERFLOW cell must be used. The OVERFLOW
cells fields of both the PGT and TGT are at
fixed displacements from registers 12 and
13, respectively. Which OVERFLOW cell is
to be used is determined from the value of
the displacement, for example, a value

Licensed Material - Property of IBM

fron4096 to 0191 bytes uses cell 1, from
8192 to 12 :287 bytes uses cell 2. etc.
An
instruction is generated to load register
14 or register 15 from the OVERFLOW cell.
Then. in the operand currently being
processed, register 14 or register 15 is
used as the base; and the displacement is
decremented by 4096, 8192, etc.

~fter Procedure Al-text has been processed,
initialization coding is generated by phase
64, using the GINIT1, GINIT2, and GINIT3
routines.

There are three initialization routines,
called INIT1, INIT2, and INIT3.
All three
are resident in the root segment. INIT2 is
generated first, followed by INIT3.
In the
generation of INIT3, the QTBL table is used
to generate code that will call the
Q-Routines at the beginning of program
execution to initialize variable-length
fields. I~ITl is generated last because it
contains pointers to INIT2 and INIT3. The
r--

contents and functions of these three
routines are described in detail in
"Appendix B: Object Bodule."

After the initialization routines are
generated (after Procedure Division or root
segment processing). the RLDTBL table is
processed. First, indirect address
constants are resolved. Object text is
~lritten for items that are in the global
tables. This text consists of address
constant definitions that will be stored in
the Global Tables at execution time.
Because the addresses are relocated during
program execution by routine INIT3, no
RLD-text is required for these items with
one exception. RLD-text is written for
relocating all PROCEDURE BLOCK cells
contained in the PGT. Object text is also
eritten for data area address constants
(obtained from address constant and
indirect address constant definitions) •
For the data area address constants.
RLD-text is written so that the linkage
editor can relocate the addresses.

---r

-,

ICode and Typel
Action Taken
I
I
I
-i
12C!
IStore in 3-byte cells OU6CDN and XFCDNO. If PMAP or CLIST are requested, I
Icard number
Iread Listing A-text.
Used to create an inline constant for TRACE
I
I
I instructions that call the COBOL library DISPLAY subroutine (ILBODSPO).
I
!
--t
-I
130 1
I Using PU number as an index, look in PNATBL to get displacement in PGT of I
IPU definitionlthe cell for this PN. Create an RLDTBL entry that Hill place the cUrrentl
I
Ivalue of LOCCTR in the PGT cell.
If there is no entry in the PNATBL, no I
I
IRLDTBL entry is created.
I
II
-----4
134 1
ISame as PN definition, using GN number and GNATBL.
I
IVN definitionl
I
I-I
-1
138 1
ICreate an indirect RLDTBL entry from this element and the PN reference
I
IVN definitionlthat follows it.
I
!
I
-i
13C
IConvert the current card number to an EBCDIC constant of the form:
I
IEBCDIC card I
I
Iname
I DC X'S'
I
I
I DC CL6' generated card number'
I
I-I
I
144
IUse byte 2 of the element as index to a branch table.
Phase 64 produces I
Imacro-type
Ithe required coding. The contents of these elements are listed in the
I
I instruction IProcedure A-text formats given in "Section 5. Data Areas."
I
,
i
11 Indicates that no object text was written for this element.
I
12See "Note on Base Registers for the PGT and TGT" in this section.
I
L---

Figure 57.

J

Processing Procedure A1-text Elements (Part 1 of 4)

Phase b"

183

Licensed Material - Property of IBM

r---

,

--~I----

I Code and Type
I
148
loperation
Icode
I
I
~

Action Taken
I
I
I
--f
IThis element contains in machine language the first 2 bytes of an
I
linstruction. The first byte is the operation code; the second byte may I
Igive condition codes, registers, or other operands.
For an RR type
I
linstruction, this element contains the complete instruction. It is
I
Iwritten out as received.
I

---rl----~----

--I
I
I
I
!
I

14C
IPN reference
I
I
I

IThis is the operand of a LOAD instruction. Procedure branching is
laccomplished by loading an address and then branching to it. Using
Iregister12 2 as a base, find displacement by using PN number as an index
linto PNATBL. Using card number stored in XFCDNO, Hrite an element o·f
IREF-text for phase 6A if SXREF or XREF is in effect.

~-----

~

150
IGN reference
~-----

r-

15C
IBL reference
I
I

I
I
I

-------------------------f

--I

IUse register13 2 as a base. Displacement is picked up from a list of
I constants. This element refers to a cell in the fixed portion of the
ITGT.
I

--I-I~------------------"----------~------------------

164
IGlobal Table
I variable
Ilocated area
I reference
I

IUse register13 2 as a base (unless the element specifies the DCBADR
Ifield of the PGT, 'which uses register 12 2 ). Get displacement of the
ITGT or PGT field from the appropriate cell in COMMON, and use
lidentifying number to compute displacement of this item (see "Task
IGlobal Table storage Allocation" and Figure 48 in the chapter "Phase
162").

I literal
I reference

2 and 3 are used to find the correct entry in the LTLTBL table,
I which gi ves the displacement of this literal in the PGT.
Register 12
I is the base.

r---------+I--168
IBytes
r--

-f

IUse virtual number as an index in the VIRPTR table (see "VIRTUAL
I
IAllocation" in the chapter ~Phase 62"). Table entry contains
I
Idisplacement of this virtual in the PGT. Use register12 2 as a base.
I
I
--------------~------------------.,
IThis element is the operand of an instruction that loads a base
I
Iregister. Use register13 2 as a base, get displacement of BLL or BL
I
Ifield in TGT from BLLCTR or BLCTR, respectively, in COMMON.
Use BL
I
I number to compute displacement of this cell.
I

---1-1---

160
ITGT standard
larea
Ireference

.,

I
I

I Use R13 2 as base. Get displacement of VN f,ield of TGT from VNLOC cell
lin COMMON (see "Task Global Table storage Allocation" in the chapter
I "Phase 62").
Use a VN number to compute displacement of this VN cell.

+1-------

~-----

158
Ivirtual
I reference

~----

No REF-text is

-----jl~----

154
IVN reference
I

~.---

ISame as PN reference, using GN number and GNATBL.
I written.

I

16C
IThis element is used to create an inline constant for a calling
IDC definition Isequence. It is always preceded by the element 4424. the macro-type
I
linstruction element signaling a DC definition (see earlier in this
t
Ifigure). It is written out as received.
,
,--;1-170
I Specifies the actual register number and displacement for the
I base and
I instruction. It is written out as received.
Idisplacement I
~
~I-------------------------------------------------1 1 Indicates that no object text was written for this element.
12See
"Note on Base
L---______________
__ Registers for the PGT and TGT" in this section.

I
,
I

,

.,

I
I
I

I
I
I

.,

I
I
I
I
I
I
I
I

.,

I
I

1
-4
I
I
I

Figure 57.

184

Processing Procedure A1-text Elements (Part 2 of 4)

Section 2.

Method of operation

Licensed Material - Property of IBM

t

i

l

I Code and Type I
Action Taken
I
I
178
IIf the! field contains X0 03', the BL, BLL, SBL, or SBS indicated is
,address
lalready loaded. Use the register indicated in the low-order 8 bits of
Ireference
Ithe ~ field for the base register. Displacement is the g field of the
I
I element. If the i field contains a value other than X'03', save the
I
Icontents of print buffers and generate load of register 14 or register
I
115 with the BL, BLL. SBL, or SBS indicated by the ~ field. If the
I
,high-order bit of the! field is on, use register 15; if it is off, use
,
Iregister 14. Displacement is the g field of the element. In either
l
Icase. get the card number from XFCDNO to write an element of REF-text.

laddress
,increment
I
I
I
I

I
I
I
I
I
I
I
I
I
I
I
I
I
IThis element aluays follous the element 4404, the macro-type instruction I
lelement for ENTRY. It is used to punch an ESD-text type 1 card for the I
lentry point.
I
I
I
i
4
IIf appended byte is not zero, print buffers are saved. One LA
I
linstruction is generated for each multiple of 4095 in the sum of the
I
Idisplacement saved for the 78 (or DO) and 80 elements. Buffer is
I
Irestored; its displacement field is replaced by the amount in excess of I
lthe final multiple of 4095. Value of the 80 element is included in the,
I symbolic field as "+NNN." If appended byte is not zero, no LA
I
linstruction is required since the displacement field is less than 4096. I

184
,relative
!address
I

lThis element is used to create an inline pointer to an item in a field I
lof the TGT or PGT for a calling sequence. Get displacement of field
,
,froGl appropriate counter in COMMON and lise identifying number to compute I
Idisplacement of item.
I

I

I

~

I
IA4

•

~

I

17C
IEBCDIC
I data-name
I reference
~

180

,

r

I

lAO'
ISpecifies the register used by a macro-type instruction element, and
Iregister
'must folloll certain of these elements (see the list of macro-type
Ispecification linstructions under "Procedure A-text" "Section 5. Data Areas. II)

!incremented
I address

IThis element combines the Address reference (78) and Address increment
I (80, elements into one (see those elements in this table).
,

~

I

IBO
,calling
I sequence
Idisplacement

I

IBill

Icalling
I sequ.ence
I dictionary
I pointer

I

I

!

I
t

fUsed to create an inline TGT or PGT pointer for a call to an object-timet
Isubroutine that requires a parameter containing a displacement from
1
I register 12 or register 13.
!

I

I

.j

of

IUsed uhen a 'file-name or data-name occurs in a calling sequence to uritel
fa REF-text element for ph~se 6A.
Obtain card number from XFCDWO.
I

I
I
I
I

I
,
,

IB8 1
IUsed to write an element of REF-text.
lfile
I
I reference
I
I
I
,BC
I~enerate 3 DC instructions. used as parameters by the GO TO ••• DEPENDI segmentation lING ON and segmentation sUbroutines. Code generated is as follows:
land GO TO... I
X'priority'
I DEPENDING ON I DC
Icall parameterl DC
X'Procedure block number'
I
, DC
12' displacement within Procedure block'
•
IIIndicates that no object text was written for this eleDlent.
IzSee "Note on Base Registers for the PGT and TGT" in this section.
,

Figure 57.

I
,
I

.q

i
,
I

~

I
I
I
,
I'

I

I
,
I
,

processing Procedure A1-text Ele,ments (Part 3 of 4)

Phase 64

185

Licensed l1aterial - Property of IBM

I

i

.

,Code and Type I
Action Taken
I
I C4
I Add displacement within PG~ of PROCEDURE BLOCK cell (or OVERFLOI~ cell)
I procedure
Ito each instruction that establishes addressability for a Procedure
Iblock number I block. Use PRBLDISP cell in COMMON set by phase 62 for this purpose.

r

~

I

IEnter displacement in branch instructions generated by phase 63.
I procedure basel using PNLBPTBL.
I
I register for
IPHs
I

I
~

I
I
I

~

I
I
I
I
f-+-f
ICC
IEnter displacement in branch instructions generated by phase 63.
I
Iprocedure basel using GNLBDTBL.
I
I register for I
I
IGNs
I
I
II
-I
IDO
ISpecifies actual register number, displacement from start of area conI
Ibase displace-Itrolled by base register, and a data-name dictiona.ry point.er. write
I
Iment data-namelbase and displacement, and branch to routine for processing dictionary I
,
I pointer.
I
I
'
i
-I'
IlIndicates that no object text was written for this element.
I
12See "Note on Base Registers for the PG'l' and TGT" in this section.
I
le8

'---

Figure 57.

186

Processing Procedure .A1-text Elements (Part 4 of 4)

Sectiorl 2.

Method of operation

Licensed Haterial - Property of IBM

The function of phase 65 (IKFCBL65) is to
produce debugging information which is used
by object-time COBOL library debugging
sUbroutines and by the IBM OS COBOL
Interactive Debug Program Product (Program
Number 573ij-CB4). For information about
the object-time COBOL library subroutines,
see the publication I~H-~l!~£QBOL L~~y
f~2g~m-Logi£.
The phase is given control
only if the flow trace (FLOW), statement
number (STATE), symbolic debug (SYMDKP), or
interactive debug (TEST) compiler option is
specified by the user. The transfer of
control to phase 65 is described in
"Processing Between Phases" in the chapter
"Phase 00." The operations of phase 65 are
described in Diagram 7 located with the
foldouts at the back ·of this publication.

If FLOW is specified, phase 65 obtains the
number (n[n]) of traces requested from the
FLOWSZ cell in COHMON. The number is
stored in the first byte of the DEBUG TABLE
in the TGT. The ILBOFLWO subroutine
requests storage for the Flow Trace table
dynamically. For the FLOW option, the
PNCHSW routine writes the flow trace
information in the DEBUG TABLE. Further
processing for the FLOW option is discussed
in "Final Processing" later in this
chapter.

65 to produce tables that provide
information needed by the STATE or SYMDMP
COBOL library subroutines or the IBM OS
COBOL Interactive Debug Program.
(Phase 6
writes Debug-text on SYSUT2; phase 63
writes Debug-text on SYSUT4.) Phase 65
builds the PROCTAB and SEGINDX tables for
either the STATE, SYMDMP, or TEST option.
For the STATE option, the PROCTAB and
SEGINDX tables are written in the object
module; for the SYMDMP or TEST option, they
are written on the Debug data set. The
CARDINDX, PROCINDX, and PROGSUM tables are
c~eated only for the SYMDMP and TEST
options and are written on the Debug data
set. The OBODOTAB and DATATAB tables have
already been created for the SYMDMP and
TEST options by phase 25. For the TEST
option phase 65 also creates the BCDPN
table and writes it on the Debug dataset.

PROCESSING DEBUG-TEXT
The RDF2 routine locates and reads the
Debug-text, which is passed to phase 65 on
SYSUT2 from phase 6 or on SYSUT4 from phase
63. Debug-text elements are described in
"Section 5. Data Areas."
The F2PROCS branch table is used to
branch to one of the routines that control
the processing for the elements.

When STATE is specified, the object-time
statement number subroutine (ILBOSTNO) uses
the PROCTAB and SEGINDX tables.
When SYHDMP is specified, the
object-time symbolic debug subroutines use
the Debug data set (SYSUT5) to produce the
formatted symbolic dumps requested. When
TEST is specified, the IBM OS COBOL
Interactive Debug Program Product (Program
NUmber 5734-CB4) uses the Debug data set.
The Debug data set tables are created by
phases 25 and 65 (see "Section 5. Data
Areas" for a description of the Debug data
set) •
For the STATE option, phase 6 or 63 or
for the SYMDMP or TEST option, phase 63
created Debug-text, which is used by phase

Control

Elements

BQ.!!j;in~

PrQ£~gg

TENPROC
TiENPROC
FRTYPROC

CARDLOC
ENDSEG
Discontinuity

The TENPROC routine builds the PROCTAB
entries from the information in the CARDLOC
elements. Each PROCTAB entry contains the
rela ti ve address of the instruction
generated for the card and verb number in
the entry. Phase 65 divides any program or
segment that exceeds 64K bytes in size into
frag~ents less than 64K bytes in length and
creates a final (dummy) PROCTAB entry to
indicate the end of the each fragment.
Phase 65

187

Licensed Baterial - Property of IBM

A SEGINDX entry is created for each
fragment of the program.
If the TENPROC routine determines that
the code generated for the last verb causes
the current fragment to eocceed the maximum
size (64K bytes), it calls the GTEQ10K
routine to handle the processing for the
end of the fragment. The GTEQ10K routine
calls the SNF routine to start the new
fragment, make a SEGINDX entry for the old
fragment, and begin collecting information
for the next SEGINDX entry.
The end of the Proced ure Division is
signaled by an ENDSEG element. When the·
RDF2 routine reads an ENDSEG element, it
calls the TWENPROC routine to process the
ENDSEG.

If STATE is specified, the PROCTAB and
SEGINnX tables are created and written in
the object module as described above.
Addresses passed in the TGTADTBL table are
used to write the PROCTAB and SEGINDX
tables in the object module. The TXPNCH
routine writes the PROCTAB table in the
object module following INIT3 .At end of
file for Debug-text, the EOF2 routine
writes the SEGINDX table, after the PROCTAB
table in the object module. The addresses
of the beginning of each of thePROCTAB and
SEGINDX tables and of the end of the
SEGINDX table are saved in the DEBUG TABLE
in the TGT.
The discussion of processing for the
ST ATE option continues in "Final
processing" la ter in this chapter.

If SYKDBP or TEST is specified, phase 65
processes the CARDINDX, PROCINDX, and
PROGSU! tables for the Debug data set.
Processing for the CARDINDX and PROCINDX
tables occurs in conjunction with the
processing for the PROCTAB and SEGINDX
tables. If TEST is specified, phase 65
then builds the BCDPN table. The PROGSU!
table is processed after the other tables
have been written .on the Debug data set.
188

section 2.

Bethod of Operation

The CARDINDX table contains an entry for
each fragment of the program and for each
discontinuity in the COBOL instructions
within a segment of the program.
The discontinuity elements in Debug-text
indicate the discontinuity in card numbers
at the end of each noncontiguous section.
When the RDF2 routine reads a
discontinuity element, it branches to the
FRTYPROC routine. This routine sets the
DISCSW switch to indicate this special
processing is to be done for the end of
section.
CARDINDX entries are created for
discontinuity within segments and for each
program fragment.

After the TXPNCH routine moves a PROCTAB
element into the SYSUT5 buffer, it
determines whether the buffer is full. If
the buffer is full, it calls phase 00 to
write the buffer and builds a PROCINDX
entry providing card and verb number
information about the first entry in the
block and the note address of the block
after it has been written. The NOTE
address of the first block of the PROCTAB
table is saved for the PROGSUM table in the
PROCTNTE save area.

DEBUG DATA SET PROCESSING
The TXPNCH routine writes the PROCTAB table
on the Debug data set at the beginning of a
new block •.
At end of file on SYSUT4, control is
transferred to the EOFON2 routine to
collect information about the number of
entries in each of the CARDINDX·, SEGINDX,
and PROeINDX tables. It stores this
information for the PROGSU! table in the
CARDINUK, SEGINUK, and PROCNUK save areas,
respectively. It then sorts the CARDINDX
table in order of ascending card number
priority.
The EOFON2 routine then moves the
CARDINDX, SEGINDX, and PROCINDX tables (in
that order) to the buffer for the Debug
da ta set (SYSUT5).
(These tables are
written on the Debug data set, beginning at
a new block.) The EOFON2 routine saves the
displacement within the buffer of the

Licensed Material - Property of IBM

startof the SEGINDX and PROCINDX table in
the SEGDSPL and PROCDSPL save areas,
respectively. This information becomes
part of the PROGSUM table.
The EOFON2 routine then calls phase 00
to write the tables and note those blocks
that contain the beginning of a table. It
saves the note information in the CARDNOTE,
SEGNOTE, and PROCNOTE save areas for the
PROGSUM table.
All the information gathered by the
EOFON routine is entered in the PROGSUM
table.
If the TEST option is specified, phase
65 then reads DEF-text from SISUTl and
builds the BCDPN table. The table is
written on the Debug data set (SYSUT5).
The device address of the first block of
the table, along with the total number of
blocks in the table, is inserted into the
PROGSUM table.
If the Debug data set is located on
disk, the first 512-byte record is read
back into the buffer, and the PROGSUM table
is moved into the first lOS-byte field.
The record is then rewritten on the disk.
This processing is done in phase 65.
If the Debug data set is located on
tape, the ENDOFTBL routine issues a request
to phase 00 to erite the end of file mark
and reposition both SYSUT5 and SYSUT2 to
the first record. Phase 00 is requested to
read the first 512-byte record of SYSUT5

into the buffer and phase 65 inserts the
PROGSUM table in the first lOS bytes. It
calls phase 00 to write the buffer on
SYSUT2 and to copy the remainder of the
contents of SYSUT5 onto SYSUT2. Then it
recopies SYSUT2 onto SYSUT5.

For any of the options, the PNCHSW routine
sets the fullword SHITCH in the TGT to
reflect the options in effect and it also
sets the DEBUG TABLE PTR in the TGT. If an
error has occurred, the DEBUG TABLE PTR is
set to zero and the corresponding bit in
the PH6ERR cell in COMMON is set on.
(Phase 70 examines the bits in PH6ERR to
determine which error messages, reflecting
errors detected in phase 6, 62, 63, 64, or
65, are to be written.)
The DEBUG TABLE is
created from information produced during
phase 65 processing and from information in
the TGTADTBL table. and it is written in
the TGT. Finally. the END card for the
program is written in the object module,
and if both the BATCH and NAME options have
been specified~ a linkage editor control
card is written for the object module. If
the program is segmented, the object code
for independent segments is obtained from
SISUT1 and written in the object module.
If TEST is in effect, phase 65 inserts the
DEBUG TABLE information in the TGT of the
object module.

Phase 65

189

Licensed Material - Property of IBM

The function of phase 6A(IKFCBL6A) is to
produce a cross-reference listing on
SYSPRINT. The phase is given control only
if the SXREF, XREF, VBREF, or VBSUM
compiler option was specified by the user.
The transfer of control is described under
"Processing BetHeen Phases" in the chapter
"Phase 00."
Phase 6A tests the PHZSW1 byte in COMMON
to determine whether the option specified
is SXREF or XREF. If SXREF is in effect,
phase 6A generates an alphabetically
ordered cross-reference listing. Phase 6A
tests the PHZSW4 byte in COMMON to
determine uhether the option specified is
VBREF, or VBSUM. If VBREF is in effect,
phase 6A produces the verb cross-reference
listing.
If VBSUM is in effect, phase 6A
produces the verb summary listing.
If XREF
is in effect, a cross-reference listing
ordered by source statement sequence is
generated.
Phase 6A performs the following
operations:
• Reads DEF-text into storage until
either storage is filled or end-of-file
is reached.
• Creates a DATA record and, if SXREF is
in effect, a CONTROL record, for each
DEF-text element. For SXREF, the
CONTROL records are used in sorting the
external names.
• Reads REF-text and appends references
to the proper DATA record (or OVERFLOW
record) if the definition has been read
into storage.
• Prints each DATA record and its
associated OVERFLOW records.
These operations constitute the
fundamental cycle that is repeated until
all DEF-text has been processed.
DEF-text for verbs has the same format
and is processed in the same manner as
DEF-text for data-names.
Similarly,
REF-text for verbs (VBREF only) has the
same format and is processed in the same
manner as REF-text for data-names.
The
only special processing for verbs is the
re~ognition of the first verb-element and
the first procedure-name thereafter.
During phase initialization, phase 6A
uses the GET ALL routine in TAMER (see the
190

Section 2.

Method of Operation

chapter "Table and Dictionary Handling") to
get all available storage for use in
creating the DATATBL table, OFLOTBL table,
and the CNTLTBL table (if the SXREF option
is in effect), which contain the DATA
records, OVERFLOW records, and CONTROL
records, respectively. However, it does
not use TAl1ER routines to access these
tables. Therefore. phase 6A· is able to
construct tables occupying more than 32K
bytes.

PRODUCING A SOURCE ORDERED CROSS-REFERENCE
LISTING
The maximum amount of space is obtained for
the DATATBL and OFLOTBL tables by a call to
GETALL in phase 00.
The DEF-text is read from SYSUT1, where
it was written by phase 6 or 64. There is
one element of DEF-text for each data-name,
file-name, and procedure-name in the source
program.
The text on SYSUT1 is read into
storage until either storage is filled or
end-of-file is reached. one DATA record is
created for each DEF-text element.
The REF-text is read from SYSUT3 or, if
OPT is in effect, from file SYSUT1. There
is one element of REF-text for each time
the name is referred to in the source
program. The text on SYSUT3 is read, one
element at a time, until end-of-file is
reached.
For a data-name or file-name. the
internal name is the dictionary pointer
assigned by phase 22.
For a
procedure-name, the internal name is the PN
number assigned by phase lB.
The setting
of a bit in each entry indicates whether it
contains a dictionary pointer or a PN
number. When a REF-text element is read,
the high-order bit of the referencing card
number is tested to determine whether the
reference is to a data-name or to a
procedure-name.
(This test is made in case
a dictionary pointer and a PN number were
assigned the same value.)
If the DEF-text element for the
referenced data-name or procedure-name was
processed in this cycle, the DATA record is
in storage. For a REF-text element for a
data-name, a binary search of the DATATBL
table is made to locate the matching DATA
record for the data-name.
A REF-text

Licensed Material - Property of IBM

element for a p~ocedure-name is matched
directly by means of an algorithm with the
DllTA recol:d for the procedure-name.
If a
[w.7.Gh is not found, the HEF-text element is
ignored. If a match is found, the
referencing card number contained in the
REF-text element is placed in the DATA
record. or if it is full, in an OVERFLOW
record chained to it. If the current
OVETIFLOl'1 rec ord is full, another OVERFLOI1
record is added to the chain, and the
referencing card number is inserted in the
first three bytes of the record.
If no
OVERFLOU record is available, the last DATA
record is split into three OVERFLOW records
uhich are then placed on the overfloe-free
chain. Before the referencing card number
is placed in the nevly designated OVERFLOW
record, the REF-text element is rechecked
to ensure that the matching DATA record was
not just deleted. At end-at-file, the
REF-text data set is closed.
At the end of the cycle, each DATA
record and its associated OVERFLOW records
are printed on SYSPRINT.
If this is the last or only cycle,
processing is completed \Ihen all names,
defining card numbers, and referencing card
numbers in storage have been printed.
If
this is not the last cycle, DEF-text is
again read into storage.
(If it vas
necessary to split one or more DATA records
into OVERFLOW records in the preceding
cycle~ the DEF-text data set must be
closed, revound, and reopened.)
Names are
read and ignored until the last name
processed in the preceding cycle is
reached.
DATA records are created for
unprocessed names and the cycle continues
uith the reading. of REF-text.

PRODUCING AN APLHABETICALLY ORDERED
CROSS-REFERENCE LISTING
The maximum amount of space is obtained for
the DATATBL. OFLOTBL, and CNTLTBL tables by
a call to GETALL in phase 00.
The DEF-text is read from SYSUT1. The
text is read into storage until either
storage is filled or end-of-file is

reached. One DATA record and ODe CONTROL
record are created for each DEF-text
element. The CONTROL records are used in
sorting the external names, which is done
as the DEF-text is read.
The REF-text is read from SYSUT3.
The
text on SYSUT3 is read, one element at a
time, until end-of-file is reached and the
bit is tested as described in "Producing a
Source Ordered Cross-Reference Listing." A
search of the DATATBL table is made for the
matching DATA record and if it is found,
the referencing card number is placed in
the DATA record. or if it is full, in an
OVERFLOW record chained to it. If the
current OVERFLOW record is full, another
OVERFLOW record is added to the chain, and
the referencing card number is inserted in
the first three bytes of the record. If no
OVERFLOW record is available, the DATA
record that is last on the chain of sorted
DATA records is split into three OVERFLOW
records vhich are placed on the
overflow-free chain.
Before the
referencing card number is placed in the
newly designated OVERFLOW record, the
REF-text element is rechecked to ensure
that the matching DATA record was not just
deleted.
If a matching DATA record is not
found, the REF-text element is ignored.
At
end-of-file, the REF-text data set is
closed.
At the end of the cycle, each DATA
record and its associated OVERFLOW records
are printed in alphabetic order on
SYSPRINT. The lines printed give the
external name (from the DEF-text element),
the card number of the statement in which
the item vas defined (from the DEF-text
element), and the card numbers of all the
references (from the REF-text elements).
If this is not the last or only cycle,
DEF-text is again read into storage.
(I(henever more than one cycle is required
to process the entire DEF-text data set,
the data set must be closed, rewound, and
reopened.)
Names are read and each name is
compared with the last name processed in
the preceding.cycle.
If the name read
alphabetically precedes the last name
processed, it has already been processed.
If the name read alphabetically follows the
last name processed, the cycle continues
with the creation of DATA and CONTROL
records.

Phase 6A

191

Licensed Baterial - Property of IBM

Phases 7'0,71, and 72 (IKFCBL70, IKFCBL71,
and IKFCBL72) combine to generate all the
compiler diagnostic messages for sourc,e
program errors. Phase 70 contains all the
codes except for the message texts for
error messages generated by phases 20
through 65 and the associated address
constant tables used to' locate the text for
anyone of these messages. Phase 70
resides in storage during the entire
message generation process and loads either
phase 71 or 72 when message text is needed
from one,of these phases. Phase 71
contains the message texts for errors
arising dur,ing processing by phase 20, 22,
21, or 25; phase 72 contains the message
texts for phases 3, 35, 4, 45, 50, 51, 6,
62, 63, 64, or 65. Input to phase 70
consists of E-text, passed from phases 04
through 6A, which is either in storage or
on SYSUT3 or SYSUT4. output consists of
completed messages, which are written on
SYSPRINT and/or SYSTERM. Phase 70 also
produces a listing of all error messages in
numbeJ;ed order if it finds that the name of
the program is ERRMSG.

If the compiler options are such that
phase 6 or phases 62, 63, and 64 produce no
output, then phase 7a reads the E-text from
SYSUT4. otherwise, phase 6 or 64 reads in
the E-text on SYSUT4 along with Data A-text
and DEF-text. To avoid an extra
input/output operation, phase 6 or 64
attempts to save the E-text in storage for
phase 70 in the ERRTBL table. The ERRTBL
table, however, has a maximum size; if all
the E-,text cannot be saved in it, phase 6
or 64 puts the E-text for phase 70 on
SYSUT3.
If errors are encountered by phases 6,
62, 63, 64, or 65, the corresponding bits
in the PH6ERR cell in COHMON are set to 1.
No E-text is written. Instead, phase 70
tests the bits in PH6ERR to determine which
messages are to be uritten and then
generates these messages in the usual
manner. Note that since there are only 10
bits, phase 70 can only produce ten
messages for phase 6. Any others must be
produced by phase 6 itself. The presence
of the text in phase 72 for these
additional messages is for the error
message listing only.

INPUT FROB PRIOR PHASES
Phases 04 through 51 produce E-text in the
same manner. Whenever a processing routine
detects a source program error, it writes
out E-text message definition elements. If
parameters are associated with the error
message, the phase writes E-text message
parameter elements directly after the
message definition (see "section 5. Data
Areas" for the formats).
Phase 04 writes E-text for BASIS and
COpy statements on SYSUT3. Phase 10 writes
E-text interspersed with Data IC-texton
SYSUT3. When phase 21 reads the Data
IC-text, it writes the E-text back onto
SYSUT4 without change, along with Data
A-text and its own E-text. Phase 1B writes
the E-text produced during PO-text
processing on SYSUT2 with the PO-text.
From then on until phase 51, E-text is
added to the Procedure IC-text stream as
errors are encountered. Phase 51 separates
E-text and writes it, as veIl as its own
E-text, on SYSUT4. Note, however. that the
E-text is not interspersed with other texts
if the CSYNTAX or SYNTAX option is in
effect, instead phases 4, and 50 write
E-text directly on SYSUT4.
192

Section 2.

Bethod of Operation

PHASE 70 ERROR PROCESSING
Upon receiving control from phase 00, phase
70 uses the PABTBL, EACTBL, and PHxERR
tables together' wi th E-text to construct'
, error messages for the listing., The PH1ERR
tabl~ is located in phase 70; the PH2EBR
table is, located in phase 71; and the
PH3ERR, PH4ERR, PH5ERR, and PH6ERR tables
are located in phase 72. Messages for
error conditions that arise during
processing by phase 01, 04, 10, 12, or 1B
are completely processed within phase 70.
When an E-,text element produced during
phase 20, 22, 21, or 25 processing is
encountered,'phase 70 loads phase 71 into
storage and picks up the address of the
PH2EBR table which is located at the entry
point IKPCBL71. Phase 70 stores these
addresses in the corresponding entry in the
PHBESS table and sets a switch to indicate
that phase 71 has been loaded. Phase 70
can then use the pointers in the PH2ERR
table to find the message texts contained
in phase 71.

Licensed Material - Property of IBI!

When an E-text element produced dUring
phase 3, 35, 4, 45, 50, 51, 6, 62, 63, 64,
or 65 processing is encountered, phase 70
loads phase 72, to obtain the addresses of
thePH3ERR, PH4ERR, PH5ERR, and PH6ERR
tables as for phase 71. These addresses
are entered in the PHMESS table and the
switch is set to indicate that phase 72 has
been loaded. Phase 70 can then use the
pointers in the corresponding PHxERR table
to find the message texts contained in
phase 72.

~RTBL

and EACTBL Tables

The PARTBL table is a fixed table assembled
as part of phase 70 and is not handled by
TAMER routines. It contains 3-byte
pointers to all possible error message
parameters, COBOL words, verbs, operations,
etc., that are not programmer-supplied
names. Its entries are of the form:

Each entry is of the following form:

<

--------~--3

I Pointer to text of appropriate message

,

The message text is found in phases 70, 71,
and 72 (as described earlier in this
chapter) •

GENERATING MESSAGES
The XNORML routine scans each E-text item
in turn. It first moves the card number,
message-phase number, and the severity code
to the work area XU6REC. The severity code
is of the form:
IKFpxxxI -

<------------------3

bytess~--------------->

r-------------------------------------------,
Pointer to parameter

I,

<------------------3 bytes------------------>

*

where:
is the phase number in which the
error occurred, where:

p

The EACTBL table is a fixed table
assembled as part of phase 70 and not
handled by the TAMER routines. It contains
3-byte pointers to error statements that
describe which compiler action was taken
because of the error, for example,
"STATEI!ENT ACCEPTED AS WRITTEN.II Its
entries are of the following form:

bytes----------------->

r

Value

2LE
1
2
3
4
5
6

Phase
04,10',12, or 1B
20,22,21, or 25
3 or 35
4 or 45
50 or 51
6,62,63,64, or 65

Pointer to statement

The PHxERR tables are fixed tables
. assembled as part of phase 70, 71, and 72
and not handled by TAI!ER routines. For
each message, an entry is made in the
appropriate PHxERR table, where X has the
following values:

--,

Value
of x
2
3
4
5
6

Phase
04,10,12, or 1B
20,22,21, or 25
3 or 35
4 or 45
50 or 51
6,62,63,64, or 65

XXX

is the number of the message

*

is the severity code, as follows:
W = warning
C
conditional
error
E
disaster
D

The XNORML routine next uses the pointer
in the corresponding PHxERR table entry for
the E-text entry to find the text of the
message itself. It places the text in work
area XU6REC. It scans bhe text entry for
the presence of the symbols $, =, and /.
The symbol $ indicates that a parameter
following the E-text for this message must
be inserted at this point. Parameters are
taken either from the parameter entry
itself or from the location pointed to
indirectly through the PARTBL table by the
value field of the parameter entry.
Phases 70, 71, and 72

193

Licensed Material - property of IBM

The symbol = indicates that an error
action message must be added.
In this
si tuation, a number directly follows the
symbol. Phase 70 uses this number as a
pointer to determine the displacement into
the EACTBL table for the pointer to the
appropriate error action message.

I

lRoutine XPUT calls phase 00 with a request
to write to SYSPRINT. Phase 00 then
determines whether SYSPRINT, SYSTERH, or
both are to be written to and takes the
appropriate action.

194

section 2.

Method of operation

HE5~AGE

LISTING

On entry to phase 70 it determines if the
program-id stored in COMMON is ERRMSG. If
so, it is taken as a sign that this is a
dummy compilation simply to produce a
listing of all error messages in numerical
order.
This is done by scanning PHXERR and
SEVTBL sequentially.

The symbol/indicates that this is the
end of the text for this message.
The error action messages are in phase
70 starting at location EACTOO. Routine
XNORML moves the error action message into
the work area immediately following the
text for the message. The routine XPUT
then writes the message on SYSPRINT and/or
SYSTERM.l

ERliOR

I

FIPS PROCESSING
The FIPS processing phases (8s) cannot
handle programs with syntax errors in the
source. If phase 70 finds any errors of
greater severity than W. a flag is set in
COMNON (INFOHSG) to prevent FIPS
processing. In addition some warning
messages cause the flag to be turned on.
Those that do not, have a bit (X'20 1 ) set
on in their SEVTBL entry, indicating an
informational message.

Licensed Material - Prop erty of IBM·

The function of phase 80 is to flag the
COBOL source statements that are at
variance with the Federal Information
Processing Standard (FIPS). The phase is
given control only if the LVL compiler
option is specified by the user or was
defined as the default value at
installation time.
Phase 80 tests the FIPLVL switch in
COKMON to determine which level of flagging
has been specified (A = low; B = low
intermediate; C = high intermediate; D =
full standard) •

Processiilll
If INFOMSG in COMMON is on, IKFCBL80 puts
out error message number IKF8008 does not
produce the source program.
Phase 80 performs the following
functions:
• Scans each Division of the COBOL source
program.
• Generates diagnostic messages for
exceptions to the standard.
• Writes the source program and messages
on SYSPRINT or SYSTER!.

Input to phase 80 is the COBOL source
program listing on the SYSUT6 utility data
set and the FIPS parameter list. If the
LSTCOIIP option is in effect, the beginning
of the Lister output (from phase 08) is
identified by four bytes of binary zeros;
the end of the Lister output is identified
by four bytes of binary ones.
Phase 02 changes the name of the output
data set .for the source program listing
from SYSPRINT or SYSTERH to SYSUT6 or their
alternate DDnames when FIPS processing has
been requested. The source program is
written by phases 10, 12, and 1B.
The FIPS parameter list is described
below:
Byte

o

4
8

12

contents
Address of COllMaN
Address of DDname for input to
phase 80 (SYSUT6)
Address of DDname for output
from phase 80 (SYSPRINT or
SYSTER!!)
Address of DDname for phase 80
work da ta set (SYSUT1)

• Performs input and output operations.
• Returns control to phase 00.

SCANNING THE SOURCE PROGRAM
The source program is scanned by the four
scanning routines of phase 80. They are
IDSCAN, ENVSCAN, DATASCAN, and PROCSCAN;
they process the Identification,
Environment, Data, and Procedure Divisions,
respectively. These routines are under
control of the IKFCBL80. routine and they
use the GETLINE, PUTLINE, GETWORD, CHKCOPY,
CHKGLBLS, HSGHNDLR, and VERBCHK routines.
The scanning routines call the GETLINE
routine to read a line of the source
program and the GETWORD routine to
determine each word of the line.
Subroutines in each scanning routine check
each word to see if it meets the FIPS
standard. Diagnostic messages are issued
for exceptio~s to the standard.

The end of input to phase 80 is
identified by the appearance of 999999 as
the source sequence number.
When an exception to the FIPS standard is
discovered in the source program, the
MSGHNDLR and HSGWRITE routines are called
to format the diagnostic message and to
write it on the output data set.
The oatput of phase 80 consists of the
COBOL source program listing flagged
according to the specified level of the
Federal Information Processing Standard on
SYSPRINT or SYSTER!!.

Each Division scanning routine contains
the text of the messages that are issued by
that routine. When the MSGHNDLR routine is
called, the address of the message is
Phase 80

195

Licensed Material - Property of IBM

passed to the routine and the routine
formats it for printing by the MSGWRITE
routine.

WRITING THE SOURCE PROGRAM

----------~--------------

Each time the GETLINE routine is called by
pne of the scanning routines, it reads a

196

Section 2.

Method of Operation

line of the source program and then calls
the PUTLINE routine to write the line on
SYSPRINT or SYSTERM. SYSTERM is used only
if the user has specified the TERM option,
or when operating under TSO or CMS. After
the line is written on the output data set,
control is returned to the scanning routine
for PIPS processing.

Licensed Material - property of IBM

Flowcharts

197

Licensed Material - Property of IBM

FUNCTIONAL SYMBOLS

:*•••Al ••••••••• :
,..

PROCESSING

,..

,..

BLOCK

--

,..

--

• • • :tjl • • • • • • • • • • • •

B1

-.

.

-..··s3········· -

*.

.* .~ECISION *0 ••
:to

*0

BLOCK

*0

*•• *

-

.* .-

THE
TO
POI
BLO
POI

:- ..........

.-

HOURSRTN

..

:~~::--j

..

....

·····c3··········
.................
-

THE INSTRUCTION AT LOCATION
BRANCH CALLS A SUBROUTINE
NAMEO UPDATE.
UPDATE IS
A SMALL ROUTINE AND NO
FLOWCHART OF IT IS PROVIDED.

·----UPOATE-----·

-...............-

:'....:;': 1
•

..

;~i;: .->1
....
.
..
--_.. .. ..
. '" E3

..

BLOCK

·····Fl··········
:

••••• ·.Gl.·•••.•·.·*.

L

I

....
..
.................

•• PREDEFINED

....

••

••

PROCESS

nOlAl

·SUBNM

.................
BLOCK

'. *.

GOTO

*-*-*-*-*-*-*-*-*
•
SUBROUTINE
..

:

OFF-PAGE ENTRY CONNECTOR.
A BRANCH TO THIS BLOCK
APPEARS ON ANOTHER PAGE (5)
OF THIS FLOWCHART •

........--.. -.. ..
1
..·····F3··*···*·*·
_.-._*-._.-*-*-.
.-.................
1<-~~~~-~~~~TION

···El···········

-INPUT/OUTPUT

ON-PAGE E1URY CONNECTOR.
ONE OR MORE BRANCHES TO
THIS BLOCK APPEAR ON THIS
PAGE OF THE FLOWCHART •

.->

...-- ··03··········-----.................

-··Dl·······--...........--

.. PREPARATION ..
BLOCK
..

• •• " G 2 " . " . . . . .
•
RETURN
•
'"

.*.....**......

~

•

.<---- --_..
C

R
o
S

!

*..

G3

*. ••

THE INSTRUCTION AT LOCATION GOTO
CALLS A SUBROUTINE NAMED SUBNM •
THE LOGIC OF SUBNM IS SHOWN ON
CHART YY STARTING AT BLOCK Ai.

•

•••

••

•• ••

.'..

.•
••

. .---~

-------->

..
••

•*

,ON-PAGE
CONNECTOR

OF THE FLOWCHART.

• •••

1 :

n3 :

EXECUTE
UTLXYZ

THIS BLOCK REFERS TO A ROUTINE.
OR PROGRAM THAT IS DOCUMENTED
IN SOME OTHEI<. PUBLICATION.

....
••
••

••••••••••••••• *.

l->* .... ,..

1
.-.
...... .'....

• C3 •

- -

··....J2...........
•

OFF-PAGE

CONNECTOR

L ••••

RETURN

*.** ••••••• *...

..- • Al ..

.)

"..

J3

.<--------*.

S RETURNED TO
E POINT. (FOR
THE POINT
IS ROUTINE

>*02 •

••

•..•
•.. *

. .---~
·02 •

.A~'

XX02Al

TAXRTN

-

:

Explanation of Flowchart symbols

section 3.

program organization

g~~Ng~~~ ~3I~Lgg~N~~Tg~·PAg~N~ROL
OF THIS FLOWCHART.

•• *••

1 -····K3·········
...............•

:

198

~~A~~~~SE~~TBigg~EE10~N T~~~T~~~E

• • •

: : ••• H3 •••••••• : :

Figure 58.

F A ROD'rINE.

SHOWS AN ENTRY
MED HOURSRTN.

*->

BRANCH

•• •• cl· .. •••••••
:¥~~~hA~A§E6c~R:

INAL BLOCK IS USED
ENTRY AND EXIT

CONTROL BRANCHE.S TO AN ENTRY
POINT ON ANOTHER FLOWCHART.
BLOCK K3 SHOWS A BRANCH
TO LOCATION TAXRTN THAT

~~P~~~T~~G C~~R~L~K ~~~E

Licensed Material - Property of IBM

Chart AA (Part 1 of 7).

Overall Flow

Phase 00:

·.....·--v
• A3 •

.. *...

. ....At...........

.

..

[FRoM-CALLING----

................
COS

.. -------- PHASE

----------------

••

:

::_~::~::~~~~ ______ _

PARAMETERS:

..·..···r···....
*. ...

.......... READ ... '

D1'

*,'

TO WOUT

*02"

.--l
• ••••

1 .

TO WPCH

*.

l·

•• YES
••

SYSLIN

,

'"

:O~2:

·

TO WGO

+ •

····*·03·*·····*·..

+, YES

••• * •
*04"

.05 •
B2'
+ •

NO

,.'*---l

" ..
"
• NO

•• YES

1 .·
..., .'. .... --1
... .. . ....
,

TO READ

*'.,

PUT ••

••

•••••• PUNCH ..... "

••
••

*---l,
......

•"

.+.

• NO

1 ..:;*

••••••

**04
.... •It<

.. ..
B3

••

C3

.NO

· *•

1 .·

*, ,.

. , YES

*, . '"

• D1

YES

*---!

+ +

--------------------

• ¥.

*. ••

.NO

DECIPHER"
[SET FIRST 1-0 SWITCH,
LINKAGE
.. -------- SINGLE BUFFER SWITCH

0" Cl

.'. ••

•• _*

.
,.
**··*81······**··

."

A3

• ..... ~RINTE~ ......

j

..
..

.•

"'RETURN TO PHASE •

•••• * ••••••••••

TO WRITEA

*:;'

,+

E1

•"

·'.

"'.

*.

+, YES

... *---t
.....
1 .

" ' " ' ' ' ' PUTN ...... '

'"

• NO

'.

• " Fi
• ..

...

· *.

.."

*~}'

... ...
... YES

EOJ

•'.

.. 04"

.;to'.

•

'r-O WRITE

.........
::~;;~~*;~;;;~*::
MACRO AND . .

**

*-------->* .RELEASE

r~

· *. .,

."

. . . . . . . . . . . .. . . ...j

F£AST'" *,
.. ·P4 . . . . . . . . . u
• *COHP ILATION*. Y E S "
"'

COBOL.+------->*. IN BATCH DONE.
SPACE::

::

*'..

..'.

*-------->

CLOSE DATA SETS

•

..

:

nETURI~

••• *.G2 •• ** ••• + ••

., -------->*...**
..••**
..
." ..
'. t~: '::':
··..····1·····. ·· .
Gl

, . LINK NEXT". YES
••
PHASE
••
,

..

•

,

H2

ERROR
••

..*..

.' .*.

••••
• :.
••

,.

. '1' y~S

u3* •••••• *.*

*--INTERJ~UDEXX--.

•••• * 4••• *••••

.SET

·:.~~------>:~~~~~N ~5~~~~Sf :_______>!

••

AND BUH'ER
SPACE

•

:

** •••••

..·**·GS·····*·*.
...............

*.ISSUE RETURN . .
MACRO

......

: . . . +FS ........... :
RELEASE TAMER ..

-------->...

t:::::

.DETERMINE NEXT ..
•
•
PHASE·.

........

S¥
NEC

rlr------~~~~ii~~~~

*.

L •

RETURN TO

SYSTEM

•
..

• ••• Hs •••••••••

:-------->!LINK

NEXT PHASE:
• •
•
•
•••••••••••••••

. ·. ·

~:. __!_~~_~_4__~~~~

····J2·····. ···: -------- [~iNK=~~~~~~=
: I~E~Lb~

Flowcharts

199

Licensed Material - Property of IBM

chart AA (Pa rt 2 of 7) •

....
....

Pha!3e 00:

READ Rou tine

*02 .-

FROM • Bl .--~

Olel·
READ

.-

···B2···········

, ••

• o.

B1
*.
,* B3
*. *, YES
'-READ TO FIRST ..
" ..
.* .*
... FIRST READ
,,*------->
AREA
------> •. SINGLE
*. *"
0*
•
*.
,*
*.. *

FROM

.. .. .. .. ....

:~~~ • *_>loNO

....

,*

,,*. *.
Cl

···C2···········

*. *.
.• .*

0*
YES
•• SINGLE BUFFER.*-------->

*. *.

r

*. ".

o
READ

•

................

--------> o

.. *.
D2
*.
.."
*. ... " YES
.. •
SYSLIB
,,*-------->*.
SYSLIB
" *---!
•.
,*
*.
,*
*...*
*,
••
*. ".
* .. *
•••••

READe

0*

01

• *,

.. "

• '" SYSIN OR

*. ••

YES

..

• INITIATE NEW
READ

..

,*

•

E2

.0 •

*.

READLIB

*.

YES • '-ENTIRE AREA-"

<--------*.

................
1
.··Fl···········
PREVIOUS READ

:~:~:

i.-No

.......E1...........
CHECK

CHECK READ

,,"

:..*::*:*->lONO
•

r
···C3···········

*. *.

USED

.• 0*

r

*. 0*

••

···.·P2··········
o

0

.. INCREMENT USED •
•

o
o

LENGTH

•

0
0

·········[=~--~::::r······

····G2·········
...............

o

..
o

200

..*

s

..

06B2'"

READE

*, .,

.... NO
BUFFER •• ---~

section 3.

EXIT

0

•
0

Program organization

:O:!O:

o

.····C4·········
..............

------->.
0

o

0

EXIT

•

0

Licensed Material - property of IBM

Chart AA (Part 3 of 7)0

Phase 00:

WRITEA, WRITE, and WOUT Routines

................
····Ai·········.
..

START

..

[
I
..·····B1··········..
•

0

PHAsEs-wILLBRANcHANri-I:INKTo-COS:--REGISTERO

--- ~~~~:~~~~!~:~~~:!!~~~~~-~~~~~~~-~:~~-

.... 1"..........
........
••

GOSYSGO

••

...····Cl··········..
..
..
::

GSYSG2

::

········1·········

:0:+ .
.. Bl ..

Ii~;

. *.
."

D1

...

• " WRITE ON
...
BYSUTti

+,

*. + • • " ."
oNO

.+

YES

+.

+.

.. "

• •••• 03 ••••••••••

*. ... NO
....
zz=o
•+------->*

+....
* .. "

.*

..

GET SYSUT4
ADDRESS

•

.

..

j

•••••••••••••••••

r------------------------

v
.....E2..........

+.

.. " WRITE ON
....

0+

0

1

E1 . .

• ..

.. +-------->+.

• +,

,+

• +.

D2'

*. ...

SYSUT5

*••
. .0*+

..

... YES
,+

..

E3 . .
0+'

,.

0+

-MULTIPLY ZZ BY ..

+,

.."

+. YES

*-------->+..
11
*-------->*. *. ZZ=Q ..* .. *--------> ..
..
..•••••••••••••••••..
*+ •.•.
..
•

t~::~~·
.
• Bl •

......

o

···E4···········
WRITE RECORD

I·NO

..

••
•

0

.•

F3

..

.

..
•. o·

*0

r
.. ...r..
.0.

G3

·0 ..

.··.P4···········

YES

••

*.

ZZ=8

·0 0*

H3

*. ••

-------->

YES

*-------->
*
o· o.
•

••

.. .... .. .....0

.•

••

*. ••

.*

.*
••
••

••

Z Z= Ii

ZZ=12

YES

.NOTE AND SAVE •
ADDRESS
-->

···G4···········

.GET ADDR AND
POINT

•

-->

.···H4···········.

0.-------->

TCLOSE

-->

r
········F=-------·····K3·········.
.···J3···········
WRITE UPDATE

·................
•

RETURN

•

Flowcharts

201

Licensed Material - Property of IBM

Chart AA (Part 4 of 7).

A2

Phase 00:

.'. ...

WRITEAr WRITE. and §OUT Routines

.... *--1

'"

YES

0101 '"

***.

'"

·.··.·Bl········*·.

·····B2··········
. ·······..·1..······..

WRITEA

·
~;i:::::l··*·**···
....

• PICK UP LENGTH '"
'" FROM Ie-TEXT

FROM

OlEl '"
WRITE

'"

'" PUT DELIMITER '"

'"

..

*.

• Cl

.*

*. *.

••••

*. *.

C2

*. YES
FILE .. *----0* .*

"' .. UTILITY

·NO

'"

D1

.* . *

... ..

*.

·

.*.

*.

PRINTER

*.

*. *.

. '"

0*

..

··r
*"'*El·······*···
.

"'MOVE TO PUNCH '"
AREA AND PUNCH

· · ·. ·T··.

r

................

r

•

• •••• D3 ••••••••

••

FIRST I/O

PUT

.
.
.
. ...............

: ..... Cq ••••••••• :

.
•

CHECK

•••• CS •••••••••

.-------->.
•
*

EXIT

•

•

••• *•••••••••••••

..
. . ·*·D4···········. .····DS·········.
.
.
.................. ................ ·

••

••

...

.-------->.
..

···C3···········

•. *.
.*

YES
BUFFER.*-------->

.'.
....
.... .. ....
D2

YES
*----

.~

.. .. .. ..

* .. *

.... .->1

WOUT

.' .

.• .*
•• SINGLE
•.

FROM :°ril'"
OlB3 '"

'"

'"
•
'"
'"
*-------->*
EXIT
'"
...'"
•'"
'" ••••••••••••••• ...
•••••• * ••••••••••

r

*04 '"
FROM '" Bl

····A4*········

• •••• A3 ••••••••••

*. "' .
.* . '"
*. * . . * .*
*... *

--)*.FIT IN OUTPUT. *--------)*MQVE TO OUTPUT

YES

~.

**

SWITCH BUFFER •
AREAS
*-------->

•

• *------->.

-------->.

PUT

EXIT

..

•• *••••••••••••

·······£2··········.
..------->
. .····E4·········.
.
...............
·.................. ....
··•.....
F3 .•
.'.
..·F3···········
.... .. ...
...............
.CHECK PREVIOUS •
•
I/O

PUT

-------->:

EXIT

:

--~

····Fl·········..
··...............
'"

EXIT

'"

F2

"'.

.MOVE TO LINE.

•• ·*15 TERM·· •• NO

--> ..... o~~~gT IN ..... -------->.

r
.. ..
r
.. ..
r

ANRy~~fti~T ON

• •••• F4 ••••••••••

-------->:

EXIT

:

s

G2

.'. ••

• •••• G3 ••••••••••

···G4···········

••••
• •
•• SYSPRINT •• YES
•
POINT T O "
.MOVE TO LINE
•• UNaSABLE OR •• -------->.SYSTERM BUFFERS*-------> AND WRITE ON
•• DMY DATA ••
1\.
AND DECB.
•
SYSTERM
"'. SET ••
• •

••
•• A

... M

*.

.*.

R

*"'··GS···*·····
EXIT

*'
>I<

• ••••••••••• *••

•

'.
IS· •

".0

.•

.'. ••

:"' •• "'J5 •••• "' •••

• "'PH HAS ••
•• ERROR MSG •• NO

.. .. ....
1

• • FOR SYSPRINT •• ---~

*...
·YES

[----------

----- FOR SYSPRINT

... & SYSTERM .. "

TO SYSPRINT
ONLY

1\.

55 •• YES
FOR ... ----M ••

SY

J2

.................

. . .
-------->.

•

ONLY

----------

•

• REINITIALIZE
---:
SWITCH

·

*:
•
:

.

••• * •••••• "- ••••••
A

F3 :

.*.

K2
.*
.••. *.

.*IS THIS AN

YES

..*..
.SE

•

*.ERROR MESSAGE.*-------->.

*.

*. •. •*.•

.•

._.* .•.

SY

K3 ••••••••••
TCHTO*
•
ON
'"
AFTER .-------->
SY RINT
,.-

•
•**"' ••• *•• _•••• _••..

'NO

L_>*

• F3 •

••• *

202

Section 3.

Program Organization

··"'K4***·*·· "' •••
WRITE ON
•
•
SYSPRINT
--------> •

...KS.l ........ .
rlRI'l'E ON

SYSTERM

Licensed Material

Chart AA (Part 5 of 7).

....

*05 ..

FROM .. B2

Olel :.....
WPCH

0*

Phase 00:

Property of IBM

WPCH and WGO Routines

*--1

v

B2

.*. *.

• " SYSPUNCH
...
ACTIVE

*. ...

* ... *

*. *.

." 0*

.*

83

.*. *.

B4

*. *.

0*'

*.

."
* . *. YES
• *--*. * . . * ."
*.. *

YES
." FIT IN
NO
."
• *-------)*. OUTPUT AREA .. *-------)..
FIRST PUT

*. * . . * ."
* .. *

:~~: *_>l·<---------l*YES
l·
!.......
0*'
C2 . . *.
...•.•. C3........... . . .•.•.• Cq ••.•.•.•.•..
.*
NO

NO

FROM

~

..

OlD3
WGO

•"

..",

.... Y E S "

*.SYSLIN ACTIVE.*---

*. *.

.." .*

..

<--*
*'..

.CHECK PREVIOUS ..

................· ........I::::=-·
MOVE"

..

PUT

..
.
..
..
.

..

....

···04··.········

................
PUT

___________________________________ J

·······P3··········.
·..................
..

PICK UP
POINTERS

---->*

1

•• G3

o.
·0

.' .*'..

FIT IN
•• OUTPUT AREA

..
..

.00.--------).:••••

G4 ••••••••• :

YES.

,.
·0'·
.·l·N~

•
•

•
.·········l···::::·
.•
MOVE

......

->.

•

• J2 •

H3

• ..

· .
****

.. J2 ..

..

.***

.'.

.. .0
,. o·
·0 ·0 o. ,.
·0 .•

*->

·.·J2···········.

<--

BLANK PUNCH

.,

FIRST PUT

YES
...- - -

r

··.....J3.·········..
········F:::::--• CHECK PREVIOUS •
•
PUT
•

········T····
···K3···········
······K2·········.. ...............
.
...

EXIT

..

PUT

• *•••••••••••••

Flowcharts

203

Licensed Material - Property of IBM

Chart AA (Part 6 of 7).

Phase 00:

.....
...

READ Library Routines

·06 ..

.. A2*

t

FROM
0202
READLIB

.*

...

......

Oo_

*.

A2

*0 *0

RLIBD

.. ..

B2

.*-------------------------------->*. ...

T~NATE

.rs
*.

'.t

...

....

*. ....

:~~;:

CI.i

0* .."

*. ••

*.

• •••• 03 ••••••••••
..

>:..

......' .

SAV~A~MBER

=--~l:~---~:~]

. .·. r. . .

...

•

.···

"'''''''''''''E2''' "'.'" "'''''''*'''*
• SAVE LIBRARY

'"

NAME

'"

·*"'·*P2"'·**··*··*

*'"
.'"

*'"
"'*

"''''FIND (MACRO) . .

**
*.
*'"
*'"
"'*"'*"'*.**"'**"'****

G2

.*.*

...1

*.

"' . *.

FIND
•• SUCCESSFUL

*.

*.

.*
"' .. *

NO

.• • *-------------------------------

r
s

RLIEGO

•• "'*"'*Hl**"''''*''''''.*'''
*
*'"
. '" H2
*'"
"'*
YES .'"
*'" READ NOTE *"'<--------*.BASIS

*.
••

"'*'"' '

.* .

"' . "'.

"'. *
REQUEST.

"'. * . . . .•

·. ····l::::------~r
**

"'**"'J2··"'**"'···

RET W/REC TO
•
PHASE 10/ 12/ •
'" lB CALLING RTN •

•"'* ••••••••• "' ••

204

Section 3.

. *.

-.

*.

.... " ;HASE 00""
NO
.... ISSUED RETURN.

*.

•

•••••••••••••••

·······T·······

READB

.. : : NEW MEMBER :: .:~~ _____

·
··

• RTN W/ERR COE ..

,+

-TO ERROR CODE

.r

D2

,.

r

....

....

•. . "

*...* ...
*. ,*

-->+REGS 0 , 1 (FDa.
SYNADAF) IN
..
COMMON
..

YES ........
•• +.,
FIRST I/O .. "

_*..

•••• AS •••••••••

*0 YES
.. RET TO PH 101 ..
.. +-------->*121 1B CALLING.

.. STORE POINTER ..

.... YES

.* .."

C2

COPY

••••• B4 ••••••••••

... SAME MEMBER •• ---~

*. *..

*Oo +0

,+

NO

* ... "

.. "

.....

,* A4

*.

LIBRARY
OPENED
CORRECTLY...
*Oo
,+

Program organization

* ....

I·

:

0* .•

.. ····CS········· ..

*-------->*
RETURN
..
.. ••••••••••••••• ..

YES

····D4·········

."'..... "' .......
I~~~§L6~

:

________

[~~~~=~~=~~~~£~=

Licensed Material - Property of IBM

Chart 11 (Part 7 of 7).

Phase 00:

PLSCALL Routines

FROM PLS

CALLING
PHASE

B3
AD

~=I~~~

>-,N",O'-_ _!>I

MEMBE

YES

03

E3

NO

I-O

YES

ERROR

NO

El

TO

SYNAD

cos

YES

ERROR
NO

H2

Flowcharts

205

Licensed Material - Property of IBM

Chart BA.

Phase 01:

Overall Flow

. ·. ·r·. .

····A3·········
:

IKFCBLOl

: -------

·····B3··········
..
..

.... ]"'.........
........
•• LINK TO PHASE ••

••

02

••

.
..····C3·········
................
..

206

Section 3.

EXIT

Program organization

•

[~~~~R-F~~~=~~~:_~=

Licensed Material - property of IBM

Phase 02: Overall

Chart BII.

....... Al······",,:e:*

..

:

........... ...
1
. -.
IKFCBL02

"
. * .FIRST
BlITCH
ill

;0;.

*.

IN

on

.-

..

[____________ _
..

EUTER FROM

:---- ~~~~~_~~ ______ _

· .
..

****
• B3 *
***** *--v
.' .
B3 *.

*..• NO
___

• f..

*.

~

... riOBATCH ••

*.

.*

>/; • • "

A..

:.:~)

·····Cl·,."········

*----

..
51 ZES & SET
.COBOL SF CONSTS*
•
..

[ALSO-SETS-----------LONGPHSE =
LENGTH OF PHASE 00 ...
LENGTH OF THE LONGEST

........1"'..... ' '-' ---------·····Dr··········

•

YES

• ..

:

*'*.
••

NO

*
:

:

BUFFER CONTROL ELOCKS
TAMER AREAS
MAIN STORAGE LEFT
SWITCHES

------------------+ *"'** •
..

:•••• F2 ••••••••• :

"*.

.. -.

'. .....

*

NEW HEADER

.'"

G2*.*******:
.*-------->* MOVE TO PRInT **
: ••••

-.YES

.'"

-

'. j:~---------------~~~~~~]........
v

:****Hl * •• *** •• "'!
DATE
*
!* GET
cm'WILED
*

·

*** **** ****. *** **

---------------> •

.. REQUIRED FILES

*

1

*·***Kl .*** .****.
•:it EDIT BLOCKING ..+
:

.

!-'ACTOHS

:
,~

-**.*.,. *•• ** *****

l->*
:

**>t>t

*.

READ CARD

**"**G3* .* •• ******
. *G4
RESET OPTION"
YES .:;.
•
SWITCHES
.<--------*. eBL
*•

•..

.' .*.
CARD

*'..

.*-*

*

r

*..•

!* *·"E5· *.* ..... *:
..
RETURN
*
-----* INFORMATION TO *
* PHASE 00 •
*
*.*.***."'*** .. *....

*

1

..

..

•• *.

"'. * . . * .*

*******.*********

•• *.

. ' .*.
F5
.*
*. * .
YES ••
*
<--------*. BATCH MODE • *
*.
*.*
* ..
'NO

..···..··1..··..

••

r.

*.. "

....
*·*H4·**.****.*
* STORE
ADDRESS •

.

:gKR~~~b g~iTgTI:

..

IN COMMON

•

.* *** ••• ***. *.*.*

1

1

**·Jl******· ****
...
OPEN ALL
*

*--t

.*.

YES • *
••
LIB SPECIFIED.

"'*·F4"'····"'····*

..

..·l:~---------------~~~~~~~~j········

• " Gl

••

"'-------,->*
..

. '"

1

•

Ft~

.. :1<**.

•
:

*
***********.*.***
*"

04

DATE-----------------]

• " AUGMENTED ... Y E S "
... DDHAI"lES BEEN •
IIJOVE TO DCB' S ...
PASSED
."
..
..

*.

:

ESTABLISH
BUFFER AREAS

.* D5

**.******.*.***..

•••••••••• *••••••

*.

:---->

*

..
..

." F~AVE

•

CALCULATE NEW
BUFFER SIZE .-------------------------------

······E1·"'1········.
·
.-

1*....

•

USE DEFAULT
BUFFER SIZE

*
***:1<**:1<**********

rES

•

"'

. *.

1

:*~·*.C5*.***.*.*:

..

*

*. .•

:

: ........·C4 ... ***.***.:

*.~:~~~g~FY~~7*.*-------->:

•..•

STORAGE

*.* •• ******:t"***.*

:****D3*.** •• ***:

·....... ...........
SET OPTION
SWITCHES

~.

":

v

.SCAll P!1R!,H£TBRS*
.. FRO!-\. EXEC CARD."
.. CSL CARD, OR
..
.. COBOL COHMAND ..

..
..

:

.::OJ:;" ... ,~*.****.*.***

••

•• C3
MAIN

..

••• *
* •• **05**.*******..
'*,*,...;..;oBIl******
"
FOR •
.-------->. GETMAIN
NECESSARY
•

.USE BUFFER SIZE*
SPECIFIED

*------->*

.I~

v

!¥5ED~~~~"~n~RgH:

*.

.*'.

.'*.

••••

rES

DUFFER
SPECIFIED

."

J4 . '. *.

"'.

FIRST
*. YES
*..*COMPILATION
.~---------------->
*.
.*

"r' . .

**··*K4*.***·"···*

..*RESET

Ii

.

AREAS IN ..
• ****K5***·*···'"
..
PHASE 00
*-------->*
EXIT
..
•
..
******* .. *.*****
.****4.**** -tc*****

.

..

B] :

!).'*'*

Flowch arts

207

Licensed Material -Property of IBM

Chart BC.

Phase 03:

Overall Flow

·····Al·········.

. .:. . "1'. . ..
•

IKFCBL03

•

··.···Bl·····!"····.
·
.
-SAVE REGISTERS ..
•
ESTABLISH
•
*ADDRESSABILITY ..

·"··"r······
•.........

·····C2··········

..i

j-->i.:.::::~:::: ~

FROM".
•
•
-LOADS REGISTERS •

~" J...

..

.. . ...1........

....~,..........

.....M..........

....~...........

'· r . -===-===--:=_-.:=-_:::::::r......·
0" • •
... SYNAD

••

EXIT

...• *___
YES

*. * . . * .*

..ISSUE S Y N A D A F . . "

. . . . SET

•• OBTAIN
ERROR •• ------->*TEXT AND !.ENGTH*----->*SyST
MESSAGE""
. . . . BY

••

MACRO T O . .

••
••

..

GET MESSAGE

..

....

.. FOR

....

ES"

TO"

·····El··········

·
.
········1·:=::~.. GET MESSAGE ..
-TEXT AND LENGTH-

.. ..... . .
.. F4 ..

.--~

TRMNATE

Fl

.*

• ...

*0

CHKPRNT

*0

•..•

•• SYSTERM ••

1

.

••••• G ••••••••••

•
•
•

.. ..
1
.....
G2

•••

•
.----

~ ~

FJ

....

..

••

..

YES
-------->.
•

*----

.

:. . . T·. . '
.PURGE SYSPRINT •

.AND/OR SYSTERM •
• AS NECESSARY •

..........
CODE·
OFF •

......
SKIP:

j

•

F4 •

····J3·········.
·...............
•

•

Sec.tion ·3.

...

••••• F4 ••••••••••
..
..
.BRANCH TO PHASE•

.................
j ..
00 TO PUT OUT ..
MESSAGE

1<-----------------------

.

OPEN SYSPRINT

208

••

SJ(PRNT
• •••• G3 .......... .

.···82···········.
................
l ....
......
->.•

*0 *..

.NO

• .. I/O ERROR •• YES
•• ON SYSPRINT •
••

WRTERR

00

*...
...

••

. . . . . . .: ····r·
G

.*

*0

•..•
.NO

• YES

·

*0

SKPRNTA

NaPRINT "'. YES
... WRITE TO
----->
•.....'(TSO)
OPTION •• ------->..
SYSTERM
II
O IN EFFECT..
/\
••

• -MESSAGE TO ... NO
.•• BE WRITTEN TO ••

.. ..

.*

F2

.....

EXIT TO PHASE •

00

Program organization

•

••

••
*------->..
••
....

/OR
OR"

..

I

WTO

••

OUT
E

••
••

TO

••

••

Licensed ftaterial - Property of IBM

I Chart BD (Part 1 of II).

Phase 011:

IKPCBL04

A2

(

IKFCBL04

)

B2

PH04INIT
INITIALIZE
PHASE

C2
GET A
CARD
(SYSIN)

03

02

BASISRTN

IS,IT
BASIS

YES

PROCESS

BASIS
PASS

NO

I

E2
COPYRTN

PERFORM
COPY
PASS

F2
CLOSELIB

CLOSE

LIBRARY
DeBs

G3

G2

PHASEOO
BASIS
RUN

NO

YES

CLOS.E FILE 2
(BASIS
NORR FILE)

I

H2
PHASEOO
CLOSE

SYSU'1'4

J2

(

RETURN '1'0

PHASB 00

Flowcharts

209

Licensed Material - Property of IBM

Chart BD (Part 2 of 4).

Phase 04:

BASISRTlf

BASISRTN
A2

(

ENTER

B2

CKBASIS

VERIFY BASIS
LIBRARY
EXISTS-READ CARD

C2

INBSYSIN
GET FIRST
BASIS
CONTROL CARD

02

BYSIN
EOF

YES

AT EOF

NO

NO

E3

E2

E4

CKINSERT
INSERT
OR DELETE
CARD

~
BASIS
LIBRARY

YES

NO

INSERT CARD
IN SOURCE

PROCDLIB
READ

LIBRARY
TO EOF

YES

F2

F4
CKBSSCTL

PHASEOO

TCLOSE
WORl< FILE

PROCESS

INSERT/

(S,{SUT2)

DELETE

G2

l'
INBYSIN
GET NEXT
S~SIN

G4

(

CARD

210

Section 3.

Program organization

EXIT

)

Licensed !aterial - Property of IBM

I Chart BD (Part 3 of 4).

Phase 04:

COPYRTN

PROCESS

COPY

Flowcharts

211

Licensed Material - Property of IBM

Chart BD (Part 4 of 4).

Phase 04:

COPYPROC

OPEN.
LIBRARY,
FIND MEMBER

C2
ERRORS
FOUND

YES

NO

03

02

SUPPRESS IS
SPECIFIED

INDICATE
NO PRINT
OF COPIED
TEXT

YES

NO

E3

E2

CKARGS

REPLACING
NEXT

YES

SYNTAX CHECK I
SAVE
REPLACING
ARGUMENTS

NO

READ,UPDATE
LIBRARY
MEMBER

212

section 3.

OUTPUT
E-TEXT

Program Organization

Licensed Material - Property of IBM

Chart BE (Part 1 of 3).

Phase 05:

Overall Flow

A3

A2

IKFCBL05

r
I

ENTER PHASE 05

VIA PHASE 00

82

IN IT

HOUSEKEEPING

C2
CTLBGN

LANGUAGE
ANALYSIS
F-0UTINES

02
ENDPROG

FLUSH
HOLDAREA
ONTO SYSUT2,

CLOSE FILES

E2

EXIT TO
PHASE 00

Flowch arts

213

Licensed Material - Property of IBM

chart BE (Part 2 of 3).

Phase 05:

Language Analysis Routine

A1
CTLBGN

START A
NEW CLAUSE

BY PUSHING
DOWN ONE LEVEL

B1
MAYBE

DECODE A
PORTION OF
THE NEXT

Y-INSTRUCTION

05
CTLPOPUP
YES

EXIT

FROM
CLAUSE

214

section 3.

Program organization

Licensed Material - Property of IBM

Chart BE (Part 3 of 3).

Phase 05:

Input and scanning Routines (SCAN)

A2
SCAN
ENTRY

POINT

83

82

IN
ERROR
RECOVERY
MODE

YES

FETCH
TOKEN PROM

HOLDAREA
INSTEAD OF
CARD

NO

C2
SCAN12
FETCH TOKEN BY
SCANNING NEXT
ONE FROM CARD

02
SCAN14

BEGIN TOKEN
TYPE

DETERMINATION

E2
DETERMINE TOKEN
TYPE AND STORE

TOKEn IN
IIOLDAREA

Flowcharts

215

Licensed Material - Property of IBM

I Chart BF (Part 1 of 4).

Phase 06:

Overall Flow

ENTER PHASE 06

VIA PHASE

C2
BGNPASS
START
NEXT
PASS

D2
MAINGET
FETCH ..ONE

IPTEXT
ITEM

F2
MAINPUT

PUT ONE

IPTEXT
ITEM

EXCHANGE
ROLGS OF
SYSUT2 ~ SYSU'l'3

J2
NO

YES

216

Section 3.

Proqram organization

00

Licensed Material - Property of IBM

Chart BP (Part 2 of 4).

A2

. ;.A::;3_-:-:"TMX=---'
BS

BD$FX

ITEM. SET
POSITION IN
DEFINITION
VECTOR AND
SET TO
DEFINITION
STATUS

C2

IPTEXT ITEM Processors

A4

AS

AleRTN

BREFX
RESET ADDR
POINTER TO
REF VECTOR,
SET REFERENCE

STEP STH
NUMBER BY 1
TO REFLECT
88TH IT~

PROCESS BDEP

r

Phase 06:

MERGE IN
ASCENDING
ALPHA ORDER

ALL

STATUS

DEFINITIONS
IN CORE WITH
THOSE ON THE
IPTEX"l' INPUT
FILE

cs

C4
MAINPUT
(See Chart. OP
Part 1)

I

I

MAINPUT
(See Chart OF
Part 1)

I

I

1

ENDPASS

J

(See Chart BF

Part 1)

82
CO~YX

BEGIN COPY
ACROSS OF
,AliL IPTBXT

'IHMS

Plowcharts

211

Licensed Material - Property of IBM

Chart BF (Part 30f 4).

Phase 06:

IPTEXT I TEl'! Processors

Al
EDREFX
GET READY
TO PROCESS
EDREF
ELEMENT

B2

Bl

YES

MAINPUT
IS
REFERENCE
STATUS

NO

(See chart BF

NO

Part 1)

YES
C3
EDREFX6

C2

Cl
IS
REFERENC
RENAMES OR

STORE
CURRENT
STATEMENT
NmlBER

STEP PAST

YES

POINT FOR
EXPLICIT
ARGUMENTS

REDEFINES

NO

I

D3

01
CODE AS
AN EDREF

EDREFX2
CONCATENATE

EXPLICIT
ARGUMENTS
AND STEP TO
ADDRESS THE
RIGHTMOST

E3
MAINPUT

(See Chart DF

Part 1)

"'1
EDREFX3
RECaDE AND
ATTEMPT TO

RESOLVE

F2

PI

MAINPUT
RESOLVED

NO

(See Chart BF

Part 1)
YES

Gl

I:OREPX4
CHECK FOR

PRIOR
RESOLUTION

B3

218

section 3.

Program organization

Licensed Material - Property of IBM

Chart BF (Part 4 of 4).

Phase 06:

IPTEXT ITEM Processors

A1

ElREFX
BEGIN
PROCESSING

ElREF ITEM

B4

EDREFX3
B2

B1

REeaDE
EDRGP

YES
EDREFX7

NO

(See chart DF
Part 3)

FULL RESOLVE
IF LAST PASS
(See Chart BF

NO

Part 3)

C2

BDREFX
GO TO
PROCESS AS
NORMAL
REFERENCE

YES

(See Chart DF

NO

Part 3)

04

03

EDREFXe
NO

01
APPEMPT
RESOLUTION

GO TO
RESET
REFERENCE
STATUS

WITH SECTION
NAME AS SOLE

IMPLICIT
QUALIFIER
E3
CONSTRUCT
AND ATTEMPT

E2
EDREFX4
YES

TO STORE TWO
REFERENCES

(See Chart BF
Part 3)

NO

F1

ElREFX2

Flovch arts

219

Licensed Haterial - Property of IBM

Chart BG (Pa rt 1 of 2).

Phase 08:

Overall Flow

A2
PC

0-

BEGIN
PHASE 08
PHASE-

CONTROL

1

B2

HOUSEKEEPING
PRINT
PREFACE

I

1

C2

DMAIN

PROCESS THE
ID, ENV, AND
DATA

DIVISIONS

D2

1

PMAIN

PROCESS THE
PROCEDURE

DIVISION

E2

1

END OF PASS-I.
RETURN TO
PHASECONTROL

F2

t

SMAIN

PRINT THE
SUMMARY

G2

1

SHOR

PRINT THE
ALPHA INDEX

H2

1

PCEOF

EXIT TO
PHOO.

220

Section 3.

Program organization

Licensed Material - Property of IBM

I Chart BG (Part 2 of 2).

Phase 08:

Data Division Flov

A2
DHAIN
BEGIN WITH
LISTING
PAGE

BUILD
STATEMEN'r

INTO
PAGE-AREA

C3
PUT
STATEMENT

YES

NUMBER INTO
SUMMARY

TABLE

D3

PRINT A

YES

LISTING
PAGE

D4
PACK

PAGE-AREA
OVER
PRINTED
STATEMENTS

D5
SET UP

FOR NEXT
PAGE

B2

Flowcharts

221

Licensed Baterial - Property of IBM

Chart CA.

Phase 10:

Overall Flow

·····A3·········.
•

_::. ··r·. ·
•

IKFCBL10

•

....··a3·······....
.....[~,

• HOUSEKEEPING

•

·.·•_+_+_._._*_t_._*
..e3··········
-IDoseN

•

•

•

SCAN

·IDENTIFICATION •
DIVISION
•
•

·······l~:~:

·•· ..03··········
+ENVSCN

•

•• _+-*-*-*-*-+-*-*
SCAN
•
•

•

ENVIRONMENT

PIVISION

•

•

·······r~=:
·.......'[".......
:ti.ti;~fi3

••••••••• :

*-*-+-.-*-*-*_._*
•
SCAN DATA
•

•

DIVISION

•

....F3··.······
·...............
.
•,. EXIT TO
00 PHASE ••

222

Section 3.

Progra~

Organization

ENTER PHASE 10
~------

. _ - VIA PHASE 00

--------

Licensecl Material

Chart CB.

...

.. "

*.

.*

B!

*.... rn--------------------------

. *. ....

BATCH

*. ....

COMPILATION .

....

... *.. * ."

0*

•

*----

...

ENTER FROM
DUMTST

B2

.*. *,

*. YES
.SET E
... CARD
,
*. DELIMITER .• • *-------->*ON
.OF CB
**.
.
"
...
AD
.. '"
•••••••
.*

YES

• *CBL PROGRAM- ..

*-------->*,

I::_____________________

...

Cl

. '. ••

*.

'. 'N~

.'"

...

...

•

PUT OUT ERROR ..

TEXT

s----- ..

GET
AND

WORn •
END •

OF

CE"

1*.........

........

1
....*01..........
•..

*----c

•

*------->*•
'"

"ID:

..

iNO

• •••• C2 ••••••••••

*.

• • IO-DIVISION•• YES
HEADER
•

*' •••

of .IBM

IDDSCN Routine

Phase 10:

...............
1

• •••• Al •.•••
..
looseN

-~roperty

•

········l:~~::~~~

GETDLM
••

,*

D2

•• NEXT

.*. *.

CC01A2

*.

• ••• D3 •••••• ,., ••

*. YES
.EXIT TO ENVSCN
DIVISION. *-------->*
ROUTINE

•

•

*
. . * .•••••••••••••••
...
.....*

_ _ _ _ _ _ _ :~IN~
E2

.*. ...

,*

• •••• E3 ••••••••••

*.

..

•

•"
•• YES
•
STORE
•
•• PROGRAM-ID • *--------> . . PROGRAM-ID NAME.
••

:to.

¥

****

*·l*N~

...... .'.
•

•

*"

.:to

•

: •••• Fl ••••••

•

..•

STORE DATE

*..:

F2

•
••••

•

*->

: •• "'.P3 ••••••••• :

..
YES ••
••
*<--------*.DATE COMPILED.*

•. *... .*

•*

....

• F3 ...

.->

······T=------:r
•
..

..

. ::::· . *1·· ..·····.

.. F2 •

..

•

•

.........
.. ----GETWD---- ..
* GET NEXT WORn *

•..

•*

: ••• *G2****.**.*:
•

•
:

READ AND PASS ..

ID-DIVISION
STATEMENTS

•
:

••••••••• * *•••• *.

1

••••• H2 ••••••

***.

• ----CHKEOS-----.
• GET NEXT WORn •
• AND CHECK END
•
OF SENTENCE •

·...................

.'.

CC01A2
GETDLM.'.
H4
••
......
• ••• H5 •••••••••
•• YES
••
•• YES
.EXIT 'IO ENVSCN •
IN A-MARGIN •• ------>*.NEXT DIVIS!ON •• -------->.
ROUTINE
..
••
.. •
...
••
•
•
H3

••

••••

.."

.--------> ...

....
... ..
......
*NO

L_>. ......
• F3 ..

...............

....
.. . .
*NO

.

l_>'4o •••••

..

• F2 ..

Flowcharts

223

Licensed Baterial - Property of IBM

Chart

cc.

Phase 10:

ENYSeN Routine

····A2·········.
········1··
..····
•
•

~-------•
BRANCHED TO
*--VIA GBTDLM

ENVSCN

----------

·.....

.....

• BII "

B2. ' . ' .
ePR

t.

.f

E •

•::Tig~P~gg~io;:.!!:~--->: c
t.

*.

....

to

C2

•••••••••••••••••

I::----------------------·--~---r

.'. t.

of

• •••• Cl ••••••••••
•
•

t.

••

INPUT' . YES
to
OUTPUT
t . SECTION of
t..+

.+------->*••

to

.f

PROCESS

•

••••••••

'NO

L> ••••••

....•

• BII •

•

.

Section 3.

CD01A2
• ••• B5•• 4o; ••••••

·:---->*:;EXT DIVISIO;:'~---->: EXlio~IR~SCN :
:
~,. *.
.:..+ .
•••••••••••••••••
' t••*

:

of

~-~~

GBTDLM ........
......

Program organization

Licensed Material - property of IBM

Chart CD.

DDSCN Routine

Phase 10:

····A2·.····.·.. [----------·::::···1
---------.
·······
·.....
•
•

•
+---

DOSCN

BRANCHED TO
FROM GETOLM

... B2 •

•

+->

B2

~"'.

+0
0+
to
.'"
"'. YES
• .FlLE SECTION

FDSCN

•••••
...

SCAN FILE
INFORMATION

.*-----)+

+0 + 0 . + 0*

...'"

··1+N6

C2

• ... •

•+

+0

WLvscn
•••••

+0

...

.... YES

.....B4 ..........

FLVSCN

.SCAN RECORDS OFFILE SECTION '"

'"
...

········1·········
ell "' . *.

*------->+

C3..........
'"

'" SCAN RECORDS

'"

'"

•••••••••••••••••

• '" WORKING-

"'.

B3..........

......

•

'"

'"
'"

...'"

GETDLM

.....

••

+0

• '"

YES

.:.....~:..:--1
•••• cs •••••••••
'" EXIT TO PHASE '"

STORAGE
• +----->+ AND CONSTANTS +-------->+. NEXT DIVISION. +-------->+
00
'"
.... SECTION • '"
...
'"
A"'.
• '"
...
'"
+0.+
...
'"
+0.+
•••••••••••••••

to ••

•••••••••••••••••

1
+NO

....
D2

••
••

•••

...•...
.....

t~~

... 82 •

.

LDSCN

"'.

LINKAGE
SECTION

"' •• *

.
.

• •••• 03 ••••••••••
.

• SCAN. LINKAGE •
RECORDS
.--->
•.
.* ------>*. .
•
"'...
*. .•
•'" ••••••••••••••••

r
....
.. ..
... r..
....
E2

•••

"'. YES
••

COsCNA

••

• ••• ".E3 ••••••••••

.* . .

•

*""

.....................

••
•• Y E S .
•• cOMMUNICAT!ON.*-------->. SCAN CD ENTRY •
•• SECTION ...
•
•

1 .
.
.. .. ---!.... ..•..................---->

F2

••

r

• •••• F3 ••••••••••

•• REPORT
•• NO
••
SECTION
...
••
••

s

.SCAN RECORDS OF.

•

COMMUNICATION
SECTION
...

:.~:.:

.....G2··········

•
SET UP FOR
•
• REPORT WRITER •

·..................

.. (CALL VIA PHASE.---------------------------

•

00)

•

Flowcharts

225

Licensed Material - property of IBM

Chart CEo

Phase 12:

Overall Flow

·•....
......_!
.. A4 ..

·····A4·.········
*-*-*-*-*-*-*-*-*
...................

····A2·········.. [------------.
----------

..
'"

...............
IKFCBL12

..

*----

",,,,.···.··B2··········
j .
·

.. SET SWITCHES
.. PRIME TABLES

.
..
..

.GET NEXT RECORD-

1

. *B4
.. *

YES
---------------------------*
. RD
*"

··.··02··········

'"

*-*-*-*-*-*-*-*-*
.. PROCESS RD
*<.. STATEMENT GET ..
NEXT RECORD

·······T~::~

·····E2····..···.
........1'.......
·PROCOl

..

-->*..*-*-*-*-*-*-*-*-*
PROCESS LEVEL- *<--------------01 STATEMENT
..
-GET NEXT RECORD •

F2

•••

CI01Al
• •••• F3 •••••••••

••

••

*_*_._._*_._._*_.
••••.••••••••••••

••

• FLUSH

....o·

.

.
•

•• LEVEL-Ol t . YES
•• (SEE NOTE)
o.-------->.GENERATE GROUP.
••
••
•
ROUTINE
•

*.. *NO

1

CH01Al
·····G2····.··· ••

•
•·PROC02
-.-*-._.-._*-._+
•
PROCESS
...

...
...

LEVEL-02-49
STATEMENTS

...
..

·······r::=:
·····H2·····.····

•-.-._*_.-.-.-.-.
·FLUSH

•

• GENERATE GROUP •

RgMi4N~ECg~fi

········r·······
.'.
..
o. ..
:

J2

:

••

YES
LEVEL-O! ••
---••. (SEE NOTE)
••

*.

•.

.0

'

.* .*

0*

'NO

l_> ••••••

....•

• A4 •

•

226

Section 3.

*.

*.... "

..* .*

.. EXIT TO PHASE '"
..
00
'"

········r::::.
..

•• * ..

(SEE NOTE) .. '"

·"'.·C4·········

GET FIRST
RECORD

..

.'. *.

r
·................

··*C2···········

*RDSCAN

..

:if~EEA~I~~~!:

~····T··"··
•

C.JOIAl

*GNSPRT

ENTER VIA
PHASE 00

Program Organization

NOTE:

Licensed Material - property of IBM

Chart CF.

Phase 12:

RDSCAN Routine

· . ·....r. ·.

······A2·········..
..

RDSCAN

0_ B2

..

t.

•••• B3 •••••••••

to

•"

... NO
-RETURN TO PHASE00
..
.* +------>*..•••••••••••••••
..

... RWRTBL PRIMED.
*0 to
0+
to

."

r:::----------------------·······e2··········..
.
···..···r·······

RDPERD

.. POINT TO NEXT ..
..

CLAUSE

02

.+

.*
... END
to

...

+0

.. "

E2

BORDA

to

*0
•••• 03 •••••••••
*0 Y E S "
..
OF SCAN • +-______ >*EXIT TO GETDLM ..

+0

•+

..

r
r
r
o-

• +0

."

...

.*

.. ••••••••••••••• ..

DccaDE

• •••• E3 .......... .
..
..

+0

.... YES
.PROCESS CLAUSE ..
+oO conE CLAUSE .. +--------)*ENTER IN RPTTBL*-->
+0
.+
..
TABLE
..
+oO
.. '"
..
..

+0• • +

.+0
•• F2
.. "
....

*_..

CONTROL
CLAUSE

.... +0

*0 . " .. "

G2

.+0

•••••••••••••••••

:••••

DOCTL

.... YES
..

P3 ••••••••• :

.PROCESS CLAUSE ..
BUILD CTLTBL +-->

.* +------>*..

TABLE

..

..
..
•••••••••••••••••

DOPAGE

*0

••••• G3 ••••••••••

e··e
•
•
e.
•• Y E S .
•
.e PAGE CLAUSE e.------->.PROCESS CLAUSE . _ -

.e .... .... e.

r

•:.................:•

···.·H2······.···
··...................
•
•

PROCESS AS
ERROR

•

..

l~~

····J2·········.
·...............
•• EXIT TO GETDLM ••

Flowcharts

227

Licensed Material - property of.IBM

Chart

eG.

Phase 12:

PROC01 Routine

····A2·········..
··...............
"':;;::Ll<---~--~-,-------------··.··B2··········
..

PRaCOl

..

··
..
········r·······
.. POINT TO NEXT ..

-->*

CLAUSE

.*

...

.* C2

..

*. *0

SEE NOTE
CHART CE

END01A

...

YES"

•••• e3 •••••••••

..

... END OF SCAN • *-------->*EXIT TO GBTDLM ..

*. *0

r

... 0*

D2

.*0

•*
.'" NEXT

....

*0

." .*

••

r
r
....
.. ..
r
*..

E2

PRGP
• •••• 03 ••••••••••

*0

•

•

GROUP •• Y E S .

CLAUSE

to

.. ••••••••••••••• ..

0*..

'*0

••

.* . *

0*

• *------->*PROCESS, CLAUSE

•

•

*-->
•

:•••••••••••••••:
DOLINE

• •••• E3 ••••••••••

...
*. Y E S ·...
..
... LINE CLAUSE .. *------->*PROCESS CLAUSE ---*0
.*
..
..
*0.*
..
*0 .*
•••••••••••••••••..

F2 ...

*0

...••F3..........

'*0

0*

•"

PRTP

*0

••... P4.•......•.

................... ...................
..

...

....

..

YES.
....
GENERATE
..
.... TYPE CLAUSE • *-----,;..->*PROCESS CLAUSE
BEGINNING OF .--• ~
••
•
• • GROUP ROUTINE •

G2

."'.

DOUSGE

*..

. ' ~*'. ' . YES
' . USAGE CLAUSE ••
••

'.

········r·······.

..

.

section 3.

------------------

'.A'.

'. "' ... ' ..'

228

~PRo2A-iS-A-~ARTO~--

.---- PROC02 (CHART CH)
ITEM.
CONTROL RETURNS TO
•
PROCOl AT PROllO
,

---*.

••

• B2 •

••••••••• :

.'.
J2
'.
YES • 'STATEMENT
VALID
·.LEVEL-01

'.

t~~:·

*NO

PROllO

'.

• .. '

1
..

....

.... ------->..····G4·········
..............
...... ··..
G3

•• ...~
USAGE IS ' . NO
DISPLAY
••

-------->..

.' . '
*. .•

E

*------->.

.*

NO
•• ------------------_______ _

Program Organization

• EXIT TO, CLERl •
(ERROR ROUTINE)'

A.

•

Licensed Material - Property of IBM

Chart CR.

Phase 12:

····Al·········

.

PROC02 Routine

.•.

A2
*.
.* *
*oo +. NO
..
PROC02
..*------>*.. +. DATA-NAME .- ...
•••••••••••••••
*..*
*..•

*

..

-----------1

..... .......... ·····83··········
..
....
..
.................
·::::···1·········
. .
rES

_SET

PERD02

AND . . . .

-SAVE

AME ..

.. FOR

AND

tENDO

..

.. POINT TO NEXT ..

*----->*

CLAUSE

INES-"

....

..

..

....

.. ..

.. c3 ..

..

*->

C3

.too

....

.. C4 ..

..
*.

.--~

SEE NOTE
CHART CE

CG01A2

••••• C4 ••••••••••

.. ..
....
*PROCOl
..
• ••• cs •••••••••
.. " LEVEL-Ol *oo YES
ELEMENTARY .. *-----)*CHECK VALIDITY *------>*EXIT TO GETDLM ..

*. ....

PR02A

*-*-*-*-*-*-*-*-*..

.. ..
*ITEM
*....+*

D3

•*
.. ..

r

.to

*0 .~ND

END02A

, ••• '.04 ••••••••••

to

to

..

.. PROCESS OTHER . . . .
..
..•••••••••••••••••
CLAUSES"
•••••••••••••••

.... YES

•

..
..

OF SCA~ ••• ------:;.:,

*...*

•

. ·1·:N:6

.

COMPLETE

~Wo~iSg~Ng9

..
..

:

•

~) ·.,.·~1'1'··I···:::·:~E

·.....E3...........
·
.. ..····Eq·······.·
...............
ENn02

CHART CE

.DETERMINE TYPE • •
•
• EXIT TO GETDLM •
•
OF CLAUSE.

········r·······

.

..
.
.•......•........... .................
.
l .
....

.'.
....
....
.. ..
1
.. ... .. ......
F3

••

• •••• Fq..........

• •••• FS ••••••••••

.o. VALID
AND •• YES
• IDENTIFY AND •
•
CLAUSE .•- - - - - - > .
• .o NOT USAGE .• •• ------>.PROCESS
• (SEE NOTE).
•

••

'NO

PR02S0
NO ••
-_..

NOTE: CLAUSE

PROCESSING ROUTINE
OR PRG2

.o. G3

*.•.

USAGE.

-> ••••••
• c3 •
•

0

..o••

r
....
s

H3

.0.

....

••

.
.
:....

• •••• HU ••••••••••

..

.....
1

•• LEVEL-Ot •• YES
.: SET· SWITCH TO •
•• ELEMENTARY • *------>.INDICA.TE ERROR .--~
••
ITEM.·
*., . . •

BLANK WHEN

ZERO
JUSTIFIED
VALUE

.0.

POINT TO NEXT •
CLAUSE

RJUSTl
RVAL11

.IF GROUP INDICATE

*..
+
·NO

•••••••••••••••••••••

.... .'. ....
... ..

•

•
C4 :

*.

J3
... USAGE IS
••
. DISPLAY

r

•• YES
.. +.:...:--~

•. . *

••••

'.::.i

····K3·········
·...............
.

EXIT TO CLER3 •
->.• (ERROR
ROUTINE).

Flowcharts

229

Licensed Material - Property of IBM

Phase 12:

Chart CI.

FL USH Routine

......
.. All •

..
•
..

••••Al.........
FLUSH

1

•••••••••••••••

DONGP

."

Bl

*0

..

*0

.. •••• *--.q

XITS

..

to

*0.*

.. PROCESS NEXT
GROUP

..

.

.

XIT1

•••••AS ••••••••••

.*
*0.*

.........

XIT6

••••• BS ••••••••••

..

..

.*....
.*

to

....

t o

EPFT

XITXIT

••••• e2...........

*0

..•*---

..
..

.." CONTROL .... YES
-GENERATE END OF-.FOOTING FINAL.*----->*
CFF-ROUT

.·l:~---------------:=::::]········
.. ..
..

'.

*0

.*0
Ell
to
.. -TYPE IS*.

••••• E2..........
....

*. -.SPECIFIED.- 0*------>*..

0*

IS*..

"r~

*0

Cl .. "'.. *0

.....

.. "
CONTROL .... YES
-GENERATE END OF.
-.HEADING FINAL.*------>*
CHF-ROUT

.. -NEXT GROUP .... YES
CLAUSE WAS

FLEXl

All

..TYPE
..
..

'. I:~-----------::::=:I::::::~.....
.

.*

. . . .

..... ....

..

ell ...... *0

.

*.

••••• eS ••••••••••

..

..

.. "
TYPE IS .... YES
-GENERATE END OF.
.. -NEED LINES "'.. YES
.. INSERT LINES ..
-.PAGE FOOTING 0.------->.
PGE-ROUT
.,-:---------:-------------------->..
COUNT
••------->.COUNT IN SUMTBL.
••

••

• •

r~

....
D1

• ••

A . . . . .

..

....

.
..
................
.
.
...................

r

.
....
E1

'. ••

• •••• E2 ••••••••••

....
.. ...

••
TYPE IS
•• YES
.GENERATE END OF.
••
REPORT
•• -------->.
RPF-ROUT
.--------------------------->
•• FOOTING ...
•
•

r

.... .-------->:.
.:----------------------------->
....
..................
.. ..

XITl

F1

•••

••

• •••• P2 ••••••••••

••
TYPE IS ... YES
•••• ~gg~~G •• '

r

.. ...
....
.. ...

XIT2

Gl

•••

.GENERATE END OF •
RPH-ROUT

.
.
.................
.
.
..................
.
.
-------->.
XIT2A
• •••• G2 ••••••••••

••

••
TYPE IS •• YES
.GENERATE END OF •
•••• -------->:
DET-ROUT
:-------:---------~------------>
• ' •• DETAIL

XIT3

r
....
.. ..
r
....
.....
H1

••

...

••

TYPE IS

• •••• H2 ••••••••••

•• YES

.GENERATE END OF.

CONTROL
•• -------->.
•• HEADING ••
•

XIT4

J1

••
••

•••

*.

•••

••

....
......
TYPE IS

•• YES
CONTROL
••
FOOTING ••

*. .•
*NO
L_> ••••••

CTH-ROUT

.------------------.:..--------->
•

• •••• J2 ••••••••••

.

.GENERATE END OF.
CTF-ROUT

.------------------~-------

..•••••••••••••••••
•

•

• A4 •

23.0

Section 3.

Program organization

..··04···...···

CHART CE

••
TYPE IS
•• YES
.GENERATE END OF.
•• ~~GE HEADIN~ ••• -------->:
PGM-ROOT
:---------:----------:"--=.------->

... ...

•

·l·:~sEE-NOTE-------::::::::j········

EPHO
• •••• D2 ••••••••••

••

TABLE

.

...............

•
•
:EXIT TO GETDLM :

Licensed Material - Property of IBM

Chart CJ.

Phase 12:

GNSPRT and SPCRTS Routines

····Ai.••.·•.••.
··...............
.
•

GNSPRT

.*

B1

.'. *.

*.

·

: •••• 82 ••••••••• :

•.

•• ENTRIES IN ... YES
... NPTTBL TABLE •
...
."

..

'. i::------------~:~~~~]········
&

••••• D1..........
..
..

=

• GENERATE GRB
..
INO NAME

..

+.

,..

1

GNGPLD

*----

"'

..

: •••••••••••••• >I*
..
..

."

"'---- FROM GNSPRT
..
----------

SPCRTS

j
·····83··········

1

GNLDPT

....A3*........ .[ENTEREiJ---

·................
..
..

..

[-----__________________
INCLUDES ONE GRP.IND
{LEVEL-Oll CONSISTING

OF ONE GP.NNNN (LEVEL-02)
NAME FOR EACH GROUP

INDICATE CLAUSE IN THE

~~:~~_~::~~::_~~~~:.: ____ _

.
•

.* -------->.•

GUUSMR

.~*.*D3 •••

•
$

*,.

EACH DET-ROOT •

4:

•

GENERATE.
CTD-ROUT
:

D4

-> •

...

••

l"

•

: •••• E4 •• * ••••

*

*.:

.

*GENERATE DUMMY •
---:
eTB-ROUT
:

...

·····Fl··········
ENTRIES IN
SUMTBL TABLE

···

·······r······.
•
"

..
:

"' •••• ** •••••••• **

1

·

·

..

GENERATE
WRT-TOOT

GENERATE
RST-ROUT

•

*

,

.

·*·"·G3*"'**·····*

: •••• Gl:1< •••••••• :
..
..

~-----------

F4

·····F3*·········

• TABLE BASED ON ..

...

!

1.

..
..

•

GENERATE

..

........[........

*.'1'** •• ****.*** ••

1ST-ROUT

*•••••

*.

.....

••• *."' ... *"" ...... •••
~

•

.* DUMMY •• NO
• .NEED
.o
CTH-ROUT
...---

·······r. ····
·

..

GENERATE
RLS-ROUT

.>t: •

* ••• *"'.

GEIlRATE ONE •
•
lTSM-ROUT FOR.

•
:

.. BUILD ROLTBL

•

.-------->*
,
...

ALS-ROUT

. ·1':~----------====~~~~~~;:::::::~--------::::::::j"

: .. "**E3 ••••••••• :

DOROL

: •••• CS ••••••••• :

..

GENERATE.

-->*,;

. *. ••

.. .. ..... .. ..

...
• .NEED

*.

DUMMY ... NO
CTF-ROUT
•• _--

r.
s

: •••• G4 ........... :

.·........ .......

.GENERATE DUMMY •
---.
CTF-ROUT
•

"'

J<------------------------1

.'. *.

·····Hq··········..<-·
..
·
. ·
-. -. .-' ---------1 :...............:
·······r······ ·······r······
~~~~g~i~~Jig~i~i~~~i~~- ·
. ··.···J4········....
·
.
·
.
:~~·:~T'

CLRD

HI

.. '"

...

. "NEED

*.

INSROU

.*."'."' ••..
'*GENERA.TE
"
DUMMY'"

*****H2*

....

A " . YES

*-------->*
.*
..

DUMMY GROUP •

ROUTINE

r

:****Jl*********:

GROUP ROUTINE ..

.. ROUTBL TABLE

..

***** .***********

ROUTINE

BRANCH TO

CHF
CFF

PCTH21

PGH

PPGH
PRPH
PRPF

RPH
RPP

1

CJ01A3

'"

OF ROUTINES

....

GENERATE

LST-ROOT

*

•

*

GENERATE

ROL-ROUT

•

GENERATE
SAV-ROUT

•

GENERATE
RET-ROUT

•
•

····**··j· . .

SEE NOTE
CHART CE

****K2****** •••

*-*-*-*-*-*-*-*-*
'"
.. GENERATE REST *-------->*EXIT

..*** ••• ** •• *** ••••..

..

·****J3*·········

PCTF21
PPGF

PGP

*****Kl ***.**.***
*SPCRTS
..

•

4:

• ENTER NAMES OF ..

.. ROUTINES INTO ..

: •••• H3 ........... :

TO GETDLM

*.*****.* **.***

..•
'"

CJ01Al

····1<4········.

·................
•

•

RETURN TO
GNSPRT

•

•

Flowcharts

231

Licensed Material - Property of IBM

Chart CK.

•
:

Phase 1B:

Overall Flow (PDSCN Routine)

····Al········· [------------...
IKFCBLXB
:-•••••••••••••••

1

poseN
.. •

.. •

Bl

.to

...

• ..

BATCH

IA PHASE 00.

~D~TB~~I§~~ROLS

--------- ry:~~)--lNG.

.. •
... op

... YES

B2

..

"'= ...

to COMPILATION o*----->*.PROG
to

*0.*

0*

"'oP

"'NO

83

...

*0.+
*0 .'"

•

1

.t.

......
.. -CBL PROGRAM-.. YES

... NO

·NO

• 0.

.* . *

"'..

to

*oo

PROC
DIVISION
HEADER

••••• e2 ••••••••••

*0

*0 *0 .+ .. '"

• SET CARDHELD
•
BIT

•
•

• INA»
••••••••

•

...

l

•
...

• ••••

....

->: *;:*:

<----------------------------------------J
.

Cl

• •••• B" ••••••••••

.*------>*. to DELIMITER.. *.*---->*CQMMON
.+
+ADDR OF

IN

*0.*
*0 .+

.*

to

0

+:..

...

t.NO'"
...
.. +-------->*PUT OUT E-TEXT ...

.*

'"

j

'"

'"
'"
•••••••••••••••••

oYES

1<-----------------CHRDCL

01

.. "'..

OLSeN

••••• 02 ••••••••••

to

*. to Y E S ' "'"
.* . *
"' .. DECLARATIVES oo.-------->.
•

0

....
•o o.

'"

.•••••••••••••••••.

SECTION ••

•

PROCESS USE

..
•
•

:::~: L>I::------------------1-------------------1
0··. .0
.
..
o.

DELIM

E1

• ••

LHNAM
• •••• E2..........

••

•• LEFT-HAND
••
NAME
•

0

••••••••••••••••••* .••••••••••••••••••

r

•••
Fl..

VRBSCN

o·
*.
*.
•. ·0 .* oo.
·0 .•
VERB

•••• YES
____________________________

r

••
END
•
YES
•• DECLARATiVE ••
0

·NO

1.
•••.•H1..........
.
.
.
.::::...j.........
• END PROC DIV
• AND PHASE 1B
•
PROCESSING

....

•
•
•

•
•
ono

•

RESET.
DECLARATIVE •
SWITCH.

_>:*::0:
....

F3

232

00

•••••F" ••••••••••

r

.·oo

••
REPORT
•• YES
... WRITER VERB ••

·NO

•
SUBS'l'ITU'l'E
•
ENCODED COBOL
.PROC'S"l'ATEMENTS •

1<------------------------

....•H3....•.•..•
.
.
.-----GENA------.
.
.
·········l···::::·
•
•

PUT Otrl' ON
SYSUT2

....

•
•

->.ono•
•
•

•0

Section 3.

.oo

G3 •.
0··0
••••••G" •••••••••••
.-->
.0 . 0 . *.• -------->.•
·0 .•
••••..•••••..•.•••

*->

····J1·········
...............

0

0

• EXIT TO PHASE •

•o

••

.••.••

YES
.PROCESS
SPECIAL.
>. ...oo
SPECIAL VERB •• ------->.
VERBS
.-·0•
.•
•
•
.
.
•
•
•
•. .•
•••••••••••••••••

.•.

G1 •.
.••.
•••••• G2..........•
.0 • 0 o. .* ------->.••
•
•. ..
...........•.....
l

•

.

YES
•
SET U P .
.----DICENT-----•• ------>.LEFT-HAND NAME .------>.
PUT IN
•
-WITH ATTRIBUTES•
DICTIONARY
•

-0.*
·0 .•

...

.

• •••• E3 •••••••••

Program organization

Licensed Material - Property of IBM

Chart DA.

Phase 20:

Overall Flow

····A2·········. [------------·...............
•
•

'

•

ENTER VIA

*---- ------------PHASE 00

IKFCBL20

_..··82·······
j.

.. ..
····T·...

·INITIALIZATION ..
.. PROCESSING

..

. *. *.

D80lA1
•*FILEST
•••• C3 ••••••••••
..
*-*-*-*-*-*-*-*-*
.
FILE ..
.* *------->*.. PROCESS
SECTION
..
."
..
..

C2
... NEXT ...
• "'SECTION IS ... YES
... FILE SECTION •

*.

*.

'.0-'I:~------------::::::::j········

.

D

.. :
...

...

0*

E

·····03··········

DC01A!
*WSTSCT
..
.. : .:~----->:-·-·pi~E;S·-·-:
RAGE."
.WORKING-STORAGE'"

T *. +.

~~G!S
."

..

SECTION

..

..0..C--------------:::=:J··......
nCOlA3
...
• ••• *E3 ••••••••••
T".
*LINKST
..
IS ... YES
• *------->*PROCESS LINKAGE.
• ..
..
SECTION
..

*-*-*-*-*-*-*-*-*

• -SE
...
•• S

*..*

..

..

"1:~-------------:::::::]........
. *.

DC01F2
... F~EXT ... ...
:~~~;~~ .......... :
•• SECTION IS
YES
•• COMM SECTION ... - - - - - - ) .
PROCESS
•
••
••
• COMMUNICATION •
...
••
•
SECTION
•

*-.-._.-.-.-.-._•

*.

.·l:~------------::::::::j········
....
..-.-*-.-.-.-*-*-..
...~ ·j~___________=::::::i········
G2

....

...
...•• S
••

DC01A5

••

• •••• G3 ••••••••••

...
·REPORT
•
IS ••• .--------).PROCESS
YES'
REPORT •
N ••
•
SECTION
..

·······H2··.··.·.....
.

. . . .1'. . .
•
•

TERMINATION
PROCESSING

..
•

····J2·········.
·...............
• EXIT TO PHASE •

•

00

..

Flowcharts

233

Licensed Material - property of IBM

PILEST Routine

Phase 20:

Chart DB.

.
······Al·········
.
::::···1········
·....
.
.'.
•

FILEST

...

... B1 ... ,

...

*->

• ...

B1

0-

t.

END OF

*0

•• YES

-->*. toSECTION
OR • *-------->*
FlLE.t
•

r

to.t
to ot

el . .

....
....
FO ENTRY

*.

D1
• ...

....

• ••

to

.* *--------> •

SD ENTRY
to

.t
*NO

ot

.... y,gS

ot

o.

E1

.'. t.

•.

LEVEL-01

•••••••••••••••

• PLACE FD ON ...
SYSUT FOR PHASE - - -

·. . . . . . . .

22.

... PLACE SO ON

>----1>1 PROCESS

C3 . . *.

BBUBRN
• •••• D3 ••••••••••
...

•

... '

LA

too

•• NO

.*

•• ---

IF.
•

·······G1··········..
..................
• SET APPROPRIATE.
CODES
•

*

1<-::::--.·····Hl··········
-.-.-._.-.-._.-.
.................
·WTEXT

--.PROCESS

•

LEVEL- •

:01::3' EN¥:fE~ND:

234

*---!

..
...

:....

Bl :

. . . ·1. . . ·..
•

.

...

'"

• ••••••••••••••••••••
•
...

s

.CHECR

..
*------>*

section 3.

...
..
...

'.··1·:~~----------:····:].......:

....

22'"

....•Cq•.......... .

.t.

0*

r
······F1··········.

·

LINAGE

.'" ANY LABEL to Y E S "
....
RECORDS
•
BUILD LABTBL
·t o
.t
...

FOR PHASE ------>*GET NEXT ENTRY

••••••••••••••••

.... ....
ITEM IS

•
•

0*------> ... SYSUT

1

0••

MAINLINE

SDTEXT
• ••D2 •••• ~......
"'.

to

..

...e2...........

•• YES
•

....

•t

RETURN TO

FDTEXT

*0

'.'.t'

FLINAGE

•••• 82 •••••••••

NO

.*0

ot

B4

DA01A2
...

,Program Orqanizat:ion

Licensed Material - property of IBM

Chart DC.

Phase 20:

WSTSCT, LINKST. COMSCT, and REPORT Routines

······Al.·········..

. ·. ·1. . .·

..

WSTSCT

..

······A3·········
.................

··.................

j

j

•

.··Bl·······.
.............

LINKST

•

.··B3·······.
.............

.. INITIALIZE ..
-AREAS, SWITCHES.

• INITIALIZE •
.AREAS, SWITCHES.
• AND TABLES •

1 ·•.•
··.·.Cl
.•...•
*-*-*-*-*-*-*-*-*

1
.·····C3········*·
_._._.-.-.-._._.
........1'.......

•

AND TABLES

..

DDom

*LDTEXT

DDOlAl

·LDTEXT

..

• PROCESS LEVEL .<-•
DESCRIPTION •
ENTRIES
•
•

.. PROCESS LEVEL *<-.. DESCRIPTION ..
..
ENTRIES
..

* ••••••••••••••••

1

D1

.. . ..
.. ......

.'. *.

n3

. * ENDOF *. *... *-HO
.... SECTION OR
....
.... FILE .." .. "
0*

rM'".
···.E1··.··.·.·
·................
..

RETURN TO

MAINLINE

'. ••

r~".,

····E3·········

·................

..

•
•

..

RETURN TO
MAINLINE

····AS·········
REPORT
•

.·.as·······.
.............
1
·····cs··········
.-+-.-.-._._.-.-.
........1'.......
.. . . ..
....... ..
• INITIALIZE •
.AREAS, SWITCHES •
• AND TABLES •

DDOlAl

·LDTEXT

•
•

•

• PROCESS LEVEL .<-•
DESCRIPTION •
ENTRIES
•
•

DS

•• END OF
•• NO
•• SECTION OR •• _-••
FILE
...

+ ... "

..

•

...

'

••

... END OF
•• NO
•• SECTION OR • - - ...
FILE
.-

r. ~,

·.····£5·········
...............
•
•

RETURN TO
MAINLINE

•
•

····F2·········..
··...............
..

COMSCT

..

j

.··G2*······.
.............
1
·····H2··········

.. INITIALIZE ..
-AREAS, SWITCHES.. AND TABLES

..

DD01Al

*LDTEXT

..

*-*-*-*-*-*-*-*-*

.. PROCESS LEVEL *<.. DESCRIPTION ..
..
ENTRIES
..

........1'.......
0*

J2

.'. *.

*. *. NO
.. *--*
*. * .. * .."

0*

END OF

.... SECTION OR
FILE
..

*.

r~o",
··. ·K2·········

·................
•
•

RETURN TO
MAINLINE

•
•

FlOWCharts

235

Licensed Material -Property of IBM

Chart DD.

Phase 20:

LDTEXT Routine

....

•• A4 ••

....
·········r·······.
• ._-!

·····A4··········

BELEMI

······Ai·········..
·. ···r. . ·
'"

LDTEXT

•

CHECRS FOR

'"

• VALIDITY OF •
•
CLAUSES ON
•
"'ELEMENTARY ITEM-

•

.

. *. *.
GSPICT
Bl
••••• B2 ••••••••••
.* PICTURE *. •• YES
•• CHECK AND ''""
"'.
CLAUSE
• *------>* ENCODE CLAUSE •
*. * . . * .*
'•"
•'"

.' *.
B4
.* PICTURE *. •• YES
•'"
*.. PRESENT .*---->*
*. * . . * .*
•'"

•
'"
'"

CS ••••••••••
CALL
'"
YES
•
APPROPRIATE •
•• VALUE CLAUSE •• ------->.VALUE ANALYSIS •
••
••
•
ROUTINE
•

• '"

• '"

_~. -r~_-=r·····
······cl··········.
·..................
1
.'.
DETERMINE
SUBSCRIPT
REQUIREMENT

*.

n1

•*

C4

.*
••

•
'"
'"

*. *.

*------->

.*

• ••••
•

...............:

:

....
·····D4··········
•
•
·•
..<------------•
•

BNORML

"'->

.NORMALIZE LEVEL'"
•
NUMBER

-WRITE OUT 10 •
NAMES AND KEYS
ON SYSUT4
•

_ ··~~___::=r···
*.

VALGEN

*. "'.

: .::.: l·NO

···02···········

'"

.*. *.

.... ....

SRCHTB

• _OCCURS AND
YES
"'. INDEXED BY
•
"'. CLAUSE
••

r

* .. *

_=····r. · ·

·······E1··········..
.................

•

• BRING IN NEXT •
ITEM
•
•

···Eq···········
GENERATE
ATF-TEXT ON
SYSUT4

·········r..···
....'. .. ------>
.. .. .. .. . •...•••
j
. P4

• •• FS •••••••.••••

••

••
•• YES
•• DATA-A TEXT ••

' .• iI~

•••••••••

1<--------------

······G1··········.
·
.

BUSAGE

·.····GII·········
...............

•
CHECK USAGE •
'"
CLAUSE
•
• COMPATIBILITY •

•
•

~·"·T·"···
······H1··········.

RETURN TO
CALLER

•
•

·
.
········r·······
• ITEM ANALYSIS •

• ••

J1
.*
.••. ••

••
••
••

.. '..

GROUP

•..•

......

L_>. "'...•
• A4.

236

BGROUP
•••••

•

YES.
•• ------->.
••
•

·NO

Section 3.

.GENERATE DATA •
A-TEXT ON
SYSUTIl

VALGEN
• •••• J4 ••••••••••
'"
•
•
CALL APPRO
•
ON
. - - - - >•• VALUE CLAUSE ••------>.VALUE ANALYSIS •
p.
•.
• '"
•
ROUTINE
•

•••••••••
POR·
Y OF

•

.................•

•

C

••

•••
J3
••
••••

.. ..
................
l .
......
......
"'.

YES

*..*
"'NO

Program organization

•

•

L_>* •••• •

_>* •••••

.D4.

.D4.

Licensed Material - property of IBM

Chart DE.

Phase 22:

·.····Al····.··.·
..............
j ..
.'

•

•
+---

IKFCBL22

Overall Flow

[----------------------ENT:tR VIA
PHASE 00

·.·Bl·······.
·............

INIT

.. INITIALIZE

•

• CONSTANTS AND •
.. WORD AREAS
•

OIR

·····01··········

DK01Bl

*READFI.i

•

-->++-+-+-*-*-*-+-*-*
GET NEXT
•

........1'.......
-LOGICAL RECORD •

•

FROM S¥SUT4

DIR010
••

••

0*

••

E1

•••

••

*.

EOF
+0

ot

+0

..

••

•

-RELEASE TABLES

• +------->+
•

r
••

~:~~:~:~*0 •• NO
•.. .. . .•... "

•• '

I.

TERM
• •••• E2 ••••••••••
•• YES

•

•
•

••••

E3 •••••••••
-RETURN TO PHASE-

DELIMIT
+------->*
DICTIONARY··

00
•••••••••••••••

•
•

• ••••••••••••••••

.;~i;F~.;~;~~~. [~ig :---------------------------~~~~~;
ROUTINE
+---- LSECT )
............ .••.• ~~~~~:=-------------:------~~-----~~~~~~~-

•• PROGRAM BREAK. +------->+

r
.................
s

·····Gl··········

•
SET UP FOR
•
BRANCH TO
•
•
---.CORRES SECTION.
:
ROUTINE
:

Flowcharts

237

Licensed Material - Property of IBM

Chart DF.

Phase 22:

FSECT Routine

...•A2.... ...•. *---

·................
••

FSECT

•

~NTERFROMDIRECTOR

------

'

,.

j
.··a2·······.
.............
1

• INITIALIZE
SECTION

•

•

•

CONSTANTS

••

.*

-->*. *0
IS

C2

.*. *.

*0

..

FSTXT

• •••• c3 ••••••••••

YES

4o.

•
•

PASS DATA

•

*--------------j
•

ITEM AN FD.*------>*IC-TEXT
FOR FD •
0*
•
ON SYSUT3

*0

••

*0

D2

r
r
.4o

•

.4o

'*0 *0

•

•••••••••••••••••

SDTXT

•••••

*0

*0

*0 ...

E2

0" ot IS

...

*0

.'. *.

*0 ••

4o.

• ..

•

.4o

ITEM
LEVEL-Ol

*0

••

03..........

•
•
YES
•
PASS DATA.
... IS ITEM AN so. *-------->*IC-TEXT FOR so
••

•

YES

•
•

···.·E4··········
·-----XREF-,..----·
•
WRITE
•
• SXREF/XREF DATA.
:A-I~~I~~f.EIF :

..

'NO

1
.··.·F2··········
*-.-.-..-.-.-._._..<--------------DJOiA2

*LDTXT

ITEM

• •

*------->*•
0*
••
•

*----GETPTR-----+
*GET DICTIONARY •
POINTER FOR •

*-------->*•

ON SYSUT340

• ••••••••••••••••

*. ...

. . . r.·.
·. . r. .
•.•.•D4.........•

·····F4··········
S

*----BCO
.IF
.VAR
• DE

..

·

. ·. . ·L::~

• PROCESS LEVEL•
01/49 ITEMS •
• EN'rER INTO DICT.

E-----.
CONO.
ITER, •
COND •

.

. . ·. r::::::

·G2··*·······•
R-.EADF4
·····G4··········
.·.....
. _*-*-._.-*-*-.
.<--------------------------- .-.-*-.-*_.-.-.-•
·DICTBD

··. . ·T. . . .·

• FROM 1'SYSUT4
........
.......•

.

'. *•
H2
•• EOF OR ••
.*
CRITICAL *~ YES
---* . PROGRAM BREAK •• ~::~-.--.--)••

NO

.. .. ....
.
*..•

j

MOm

····J3·········.
·...............
•
•

238

Section 3.

•

• ENTER ITEM INTO.
•
DICTIONARY
•

•
GET NEXT
.LOGICAL RECORD •

RETURN TO
MAINLINE

Program Organization

•
•

Licensed Material - Property of IBM

Chart DG.

....
*

Phase 22:

•••• P,l* .......

*.

WSECT

*---*

..

• • • 4< . . . . . . . . . . . .

WSECT and LSECT Routines

[ENTER-FROMDIR010

-----------

.... A3......... *---- [ENTERFROM-

·................
..

..

LSECT

j

..

ZE ..
l"

.........
1
·····cl··········
:
.................
1
·····D1··········
.

EA~~·"

W01A2

*LDTXT

..

*-*-*-*-$-*-*-*-*
-->*PROCESS LEVEL- ..
°iN~~R ±~ 5i~~S:

DK01Bl

*READFII

..

*-*-*-*-*-*-*-*-*
GET NEXT
..

..

• LOGICAL RECORD ..

: .. !~~~.~¥~~I~ •• :

1

.'. *.

E1
.EOF OR "'.
.. " CRITICAL ....
PROGRAM BREAK."
o

NO

---*.

*.

*. * .. * ."

.*

.YES

1
...............

DE01Al

..

:

···.Fl······.··!
RETURN TO

MAINLINE

DIR010

----------

j

··Bl·······

• INI
S

"....

..

..

..

..

·.B3·······

... INITIALIZE ..
SECTION
..

.

CONSTANTS

...

..

*SWITCHES L • AND •

~~~~.~~~~

1
.·.·.c3··········
.
WOlA2

*LDTXT

.-.-.-.-.~.-.-.-

•

-->.PROCESS LEVEL- ..

:O~N~~R ±~ Bi~~:

."'+ ••••••••••••••

1
·····03*·········
.-.-.-.-*-..-.-.-*
........1'.......
DK01Bl

oI*•

••••• C4 ••••.•••••

DL01B2

•

• SET UP ENTRY

FOR CD

•

-DIeTBD

••

••••••••••• ••••••

•

DJ01A2

J----------------------------..
········1·::::::::--*LDTXT

..

NO

••

·PROCESS
.. 01-49 LEVEL-"
ITEMS ..
.. ENTER IN DIeT ..

.f •

to

USER

*0

-.

*0 SPECIFIED
CLAUSES." ."
*0

."

'"1-iris

..

..... E4 .•........
.. ATTRIBUTES
..
• •
• •

······1·······
F2

••

•• CRITICAL ...
PROGRAM BREAK..
••
••
·YES

DE01Al

+:

RETURN TO

•

MAINLINE

..
..
-GENERATE DUMMY"

·······r······
• •••• F4 ••••••••••

•• BOP OR .,

.. .. ."..
1
····G2·········
·................

-_.oo

section 3.

04

..
GET NEXT
..
-LOGICAL RECORD •
•
ON SYSUT4
•

DKOiA2

• _*_*_*_*_*_*_._*

240

0*

:::::~~

.....E2..........
*READF4

NO

I _

• •••••••

.....02..........

*_*_*_*_*_*_*_._*

•

*-------->**-*-*-*-*-*-*-*-*
ENTER ITEM IN •
• • DICTIONARY
•
•

+:
+:

Program organization

.----ENTNAM-----.
• ENTER ITEM
•

...................
•
•

DIRECTLY IN
DICTIONARY

.--..

Licensed Material - Property of IBM

Chart DI.

Phase 22:

RS EeT Routine

....A2......... *--- [ENTERFROM-

•III

RSECT

•

······r···.
.

• IIIS •••••••

• ltl

IZE •

...

• *swc

..

·W

••

t.

THIS

-->* .~~NTROL
*.

•"

ITE~••

'r

02

.•

DIR010
-----:'-... ---

.

1
C2
~s
~'..
.t.

.".

•

••

• ••••

YES

C3..........

.......

QUAL

et.......... .

:DISTRIBUTE TEXT!
:~Fc
TO WORK AREAS :------->:TO

*------>:

5 :
C:

................. ·······r······
•

III.

• ••••

t.

..

...

03..........
..

."
•• YES
*OISTRIBUTE TEXT.
*.IS ITEM AN RD.*------->* TO WORK AREAS

•. * 0 . *.*

•..

'r

roOU,

.••••E2..........

____
___T
. - .X
___
._.
*
L111D
T
.

-PROCESS LEVEL- ..

:Eg?rE~9iN~E~~CT:

•••••••••••••••••

FIER"

•.•••011•...•....•

+----GE'TPTR-----*
*GET DICTIONARY •
POINTER FOR ..
ITEM
..

*------->*
.
..
....

•••••••••••••••••

·······r······
.*

•....E4...........
..
WRITE
..
.-----XREF------.

*SXREF/XREF DATA.

•:A-!~~II~kft:tEIF
•••••• *•••••••••:

1
.····F4··········

.----BCO E----- •
COND •
• IF I
• VAR
, •
'" DEL
•
VARIABLE
•
•

~O'"
•••••G2..........
••••.G4 ••.•••.••.
.-._"'_.-.-.-.-*-..<------------------------------.._.-.-.-*-*-.-.-.

·······r:::::

• READFij

'"

'"
GET NEXT
.LOGICAL RECORD •
'"
ON SYSUT4
'"

········r·······
...

.DICTED

'"

ENTER ITEM IN '"
DICTIONARY
•
'"

.................
•
•

H2
••
• "'EOF OR "'.
NO •• CRITICAL "'.
---*.PROGRAM BREAK. '"

..

*.

.*

• ·",y~S

..

1

DE01A!

····J2·········.
·...............
•
•

RETURN TO
MAINLINE

...
•

Flowcharts

241

Licensed Material - Property of IBM

Chart DJ.

LDTXT Routine

Phase 22:

···.A2·········
··...............
...
•

LDTXT

..

j

···.··B2······.··..
..

DISTRIBUTE

..

·..······r···.....
..
..

ATF-TEXT TO
WORK AREAS

. *.

.0

0- 0..·0
IS ITEM
*0 LEVEL-Ol
C2

..
..

.,

.•.

to

,.

.0

• , ."

•

.c3. .*,,

YES

• *IS THIS THE-, NO
FILE SECT •

*-------->*. to

."

*0

rs

*0 ,-

'NO

."

*---

,•

·····D ....•.....
• SAVE

:s~~v

,.
."
•

0

.0

E2

.'.

*. *,

IS ITEM
LEVEL-77
•

0

ABOUT.

R~EW

·..................
1
..

RE

...

... YES
•

.'"
,*

..E3 •••••••

..

. t=::=-....:::J·····

..

..

.. INITIALIZE ...
WORK AREAS,
SWITCHES
...

*------>* .

:

.<--

•

·····P3··········
·..................
'.1
0
•
..
..
...

INITIAL
CONDITIONAL
VARIABLE
PROCESSING

..
'"
..
•

•• ~~ IT~..

GETPTR

: ••-n:G4 . . . . . . . . . :

.o. A REPORT *0 NO
"'GET DICTIONARY
*0 SECTION NAME • *-------->* POINTER FOR
~...

'"" --r:.
.... *.

.................

A:

."$V • • H3 ••••••••••

•
SET
OF"
. . .

*
'"
•

*-----

OF '"
ER"

*"'**"'**'" ** •• ****

ITEM

:~~~~~5 . . . ~~~~~~:

....
*-------->*SXREF
:
:A-~~~LI

..
DATA*
iEIF:

·······r······
• "'* "'*H 5* '" '" '" '" '" * '" **

"'----ECONDE-----'"
* IF ITEH IS COND'"
*VAR DELIMITER, '"
*• DELIMIT
COND '"
VARIABLE
•

•• ***"'*.* ....... "'***'"

1

DLOlE2

***·*,1'5· .* •• * *•• **
*-*-"'-*-*-*-*-"'-*
..
ENTER ITEM IN'"
*DICTED
:

DICTIONARY

:.

.. *****"'**"'* •• *.... *

.

j

.

*"'·*K5·"'*·**~·*

!

RETURN

"'***"'.*********

242

Section 3.

Program organization

:

Licensed Material - Property of IBM

Chart DK.

Phase 22:

READF4 Routine

.

• •••• Bl ••••••••••

·
•

READF4

•

"~·····I==---------~,------------------------------···Cl···········
..

..

GET NEXT

LOGICAL RECORD

FROM SYSUT4 ..

·········r·····
.. ..

0_ D1

*0 *0

.'. t.

*..

EOF
t

o

+0

.*
O.

r

.... YES

E1" *0 to

•+

.... REC
t

o

A KEY

*0

Fi

.*

.* .*

r

.... *0

..

to

."

.r
.*

*0

*.

Gl

...

....

.. *15 LOGICAL

*.

YES

••••v

*. *.. * .*

l ....
.
·NO

: G4 :

'. *•

H1
.. "
IS
....
.. -LOGICAL REC*.. YES
.... A CRITICAL ..
PROGRAM
... BREAK. ..

*.

..

..

.. ENTER KEY IN

•

.. '"

.* IS

+------------------------------->*0 *0

~:c ftMNDE~. '*---1

*.

CALLER

F3

*.

...

RETURN TO

••••••••••••••• ..

.* .. *------->*.. SRCHKY TABLE *-..
•••••••••••••••••••

• *IS LOGICAL ... YES
"'.REC ATF TEXT ..

"'..

• ••• 02 •••••••••

••••• E2 ••••••••••
•
..

to

.*IS LOGICAL .... YES
....

..

0*------->*..
.. *

.. "

.*. +0

ITEM
LEVEL-66
...

..*

.r

.... *

G3

RENAME

••••• F4 ••••••••••

*0 *0

*0

IS ITEM

'"

•

-PROCESS RENAMES-

*------->*ITEM
AND ENTER *-->
...
. • IN DICTIONARY ..
..

0*

YES

•

••••••••••••••••••

(:::L~

*.

...... G4 ••••••••••

*.

YES

+----ENTNAM-----+
.. ENTER ITEM
..

*0 *. LEVEL-B8 ... 0 *-------->:

gI~~i6h~~N

:---

*
...
*.. .
* .*.
•••••••••••••••••

l·NO
• ••• H3 •••••••••
. . . .

RETURN
.* *------------------------------>*.
.
. ...
• ••••••••••••••

r
o-

······Jl··········,
·
.

. ·. . 1. . ·.

.. SET conE TO ..
-INDICATE ERROR ..

................
·····Ki·········
-RETURN TO PHASE-

..

00

..

Flollch arts

243

Licensed Material - Property of IBM

Chart DL.

DICTBD Routine

Phase 22:

··

..

·. . ·r·. ·
• •• ·B2 •• • •••• ••

...

DIeTBD

C2

....

...

FSEND

...

FSTooa
• ...... Cq ••••••••••

*.

0*

•

• • END OF FILE-. YES
••
SECT
• *------->*
••
."

*.

• • RESOLVE LAST
FILE
• • DESCRIPTION

*-------->*

0*

...•
•
•

• • •

··l:~--------------------------:--------:::::::j······
..
D3..........
••••• 04 ••••••••••

D2

•••

REDEF

*.

RDSYN

• ••••

• '"
••
... ADDRESSING"'·
•
0* IS ITEM A"'. YES
...
PAR
...
-CHECR SYNTAX OF$:.
REDEFINES
• *-------->*SUBJEC
TO *--..:..---->*
REDEFINES
•
"'. SUBJECT • '"

*.

'"

0*

ADDR

•

*PARAM

•

ECT*

•

CLAUSE

··1::---------------::::::::---:::::---------::::::]··......
E2

• '"

*.

. '" IS

. *. *.

*. '

*. *.

0*

.. :

PRoc77

F2

• •••• E3 ••••••••••
'"
..

*. ••

ITEM
LEVEL-77

0* .'"

. '"

YES
•
DELIMIT ALL •
.*------->*GROUPS, IF ANY .---~

•

G2

• •••• P3 ••• ,. ••••••
RESOLV
•

...

• •>:

r

.'. ••

.. ..

o· 0"

r

•• 0

•

GROUP •
• ••• H4 •••••••••
INDICT, • •
•
T PREV • •
RETURN
•

------->.
:..•••....•••.••••
~~£~~* ~g4~~ :
.................

....
·····J2··········
.................
*->

:DEt¥~~T Da~6ups,:

• COMPLETE DATA •
•
A-TXT
•

j

····K2·········.
·...............

Section 3.

• ••• G4 •••••••••
• •
•
RETURN
•
• •
•

••••• • •••••••••

.ENTER ELEM ITEM.

244

_

GRIPR

ELIPR

RETURN

• ••• F4 •••••••••

.................•.------->.••••••••.••••••
•
DICTI
DELIMI
.'CD,I

-------->.•

··.0 •. o· 0.0.
:.:;.! l·NO

:

:-------->:

RETURN
:
• •
•
•
• ••••••••••••••

• ..... G3 ••••••••••
•
ENTER
N.

------->.
•

H2
*.
••••
... IS THIS A •• YES
•• GROUP ITEM ••

•

N

• ••••••••••••••••

••
••
"'. YES
•• IS ITEM A CD ••

•• ..

•

FSTOOO

*.

*. .•

~.

:....

J2 :

.I~D7§~R~N • :.~:~_____
cu~Rt
~
DICT
•.
~*
• FDTA

.0

..

•

1

. *. "'.

.

•
...
•••••••••••••••••••••

_NO

:

Program organization

Licensed Material - Property of IBM

Chart DM.

Phase 21:

Overall Flow

..

..•

··.·A3·········.*---- [------------------------..

IKFCBL21

ENTER VIA
PHASE 00

.ffi':·····r....·
.·B3·······

·INITIALIZE •

..

.. WORK AREAS
SETUP

..

.. CHECKPOINT

..

..

. . ·L:u,

• DCB NUMBERS-

·····C3··········
*FILEST

r. ·..
..

*-*-*-*-*-*-*-*-*
_PROCESS FD AND ..

• SD ENTRIES FROM.
.. FILE SECTION

. .=·. .

..

··..·..0)··.···. ···.
·..................
-END OF PHASE 21.
•
PROCESSING
•

j

····E3·········.
·...............
.. EXIT TO PHASE ..
..
00
..

Flowcharts

245

Licensed Material - Property of IBM

Chart DN.

Phase 21:

FILEST Routine

·····Ai·····.....
.......[:::-----------------------------•

•

•
*---

FILEST

Bl

~-------------ENTER FROM

BEGIN
--------------

. *. + •

• • • +END OF

DM01A3

*. ••

YES

•

-->*. "'.SECTION
OR • *------->*
FILE.+
•

*..*

r
r
....
*.

o-

Cl .. *. •.
• ••

.*

+.

•+

RETURN TO

•

MAINLINE

•

••••••••••••••• •

.•....C2..........• •.....C3..........• •.....Cq..........• •.....

FSTXT
YES

•

ACCMET

SET UP DCB I S .

• FILL IN DeB'S •

.PLACE ENTRY IN • •

cs •••••••••

••

.+-------->*• FORMETHOD.
ACCESS
*-------->+• AND ENTRY
DECB'S FD *-------->* DICTIONARY
*------->*GET NEXT ENTRY.
••
••
•
/I..
• •
•
*+....
.+
••••••••••••••••••• •..................• ••••••••••••••••••• •• •••••••••••••••••
+
FD ENTRY

D1

.*. ••

......
.. ... ..

NO
••
---..
SD ENTRY

246

····B2·········

.....................

SDTEXT

• •••• D2 ••••••••••

-------->.

•• YES
••

Section 3.

•

PROCESS SD
ENTRY

•
.--------------------------_

Program organization

Licensed Material - Property of IBM

Chart DO.

Phase 25:

OiYerall Flou

-""'' ' '-- . . . T. . ..
-ENTER-FROM-j
PHASE 00 IF
SYMDMP OR
TEST IS

-----..
..
..

•••• 11.2 •••••••••
IKFCBL25

..
•
..

.··B2·······.
. .

.. INITIALIZE

..

.. BASE REGISTER ..
*AND WORK AREA.

·....r····
C2

•*

. *. *.

SORTREN

*.

• • ANY RENAMES ••

... IN Pi{OGRAN

*.

*.

."

••••• C3 ••••••••••
..
....
.. SORT RENAMES
*-------)*
TABLE
..
..
..

.·l:~---------------~~~~~~~T .......

.* D2
0*

0*

•

YES

. *.

••

*.

ANY ODO'S

:.~~~~.~;~;:~ •• :

*.

YES

•

..... :N PROGRAM ... ' *-------->:
...

..

** ..... E1 *********

..

PHASEND

..
..

* •. "

."

..

FROM DCCTPL,

QI~~~t.E~RTN

..

::~;~~g~~

DP01A3

....... :

*-*-*-*-*-*-*-*-*

:-------->:~~i*~ ~go~~§t¥5:
..

............ "'* •• ')...

.COMPLETE OCC'IBL*

• ••••••••••••••••

l::~~~~~~-------------------------------------_J
·.··.E2··········
*BEGPASS

:::l

·······c:::_____

•

*-*-*-*-*-*-*-*-*
.READ
DICTIONARY.
.. BUILD DATA TAB *

mm
:

***
**F2**
**** *** **
SAVE
***INFORMATION
IN *
COMMON FOR
*
*PROGSUM OBJECT-*
•

TIME TABLE

•

·······r······
·
.
···*G2·** * .*.**

• EXIT TO PHASE •
00
*

*

**. *** *** * **** *

Flowchart:;

247

Licensed Material - Property of IBM

Phase 25:

Chart DP.

ODOBLD, BLDOBODO, and ENDP1 Routines

······Al·········..
•

ODOBLD

-:=r·····
0-

Bl

• *0

.....

•

*0 0*

•

.*

*0

...

B2

*0

*NO

ot

Cl

t.

:

•
*0

.t.

*.

t.

.-

•• N O .

*0

*0 0*

I

0*

-YES

*---1

v
••••

:

*:;*:
....

1-

YES

*->
OP01A3

:

£KITTO

'"

•••••••••••••••

:

B~gg~~~~

.:~. :

······D1··········.
·
.

GETN

*0 ••

.*
.....

•••• e2 •••••••••

........ ODO ENTRY .......

BLDOBODO

•

•

. . . .1'. . ..
• CALCULATE N FOR• NUMBER OF 000 •

-ENTRY IN OCCTBL*

OHARY.

•
POI
• OBJEC

'"

OF.
0 •

IN

'"

PREPARE
PARAMETER

•
._-•

.

BLDOB02
•

•
•
•

•

SET

.----

...

ENTRY

'"

.•H1 .*--1·. e2.•
.... v····
······H1········.·
.
'"

*

->*

NEXT BLOCK

·
.
······T·~:=
••
'"

•

.BUILD OOOBOTAB •
'" ENTRY IN WORK •

~----------------

NE

E

IUU!A

•

·ENTRDATA

•

•

OBODOTAB ON

•
'"

•
FILL IN
•
OBODOTAB
•
POINTER IN
• ODOTBL ENTRY

..
•
•
•

·

.

•

OF
OB
WHOSE

ENTER IN

*

• POIt.'T TO NEXT •
--.ENTRY IN aceTBL.
•
TABLE
•

•
•
.................

·······r··..···
Jl

.'. ••

.. .. ....
'
.•

·oo

••
•• NO
•• END OF (J-OOTBL ••---~

l ......
····Kl·········..
··...............
+ ... *

YES

••• t-

:

DP01A5

• EXIT TO ENOPl •

248

section 3.

•
•
'"

WR

QIFOUND

+----INSERT-----+
'" MAKE ODOTBL '"

SET StoiITCH

N----+

• L
·OIC'!'
• DINC

·SE'I'NAMS

*----

'"
'"
•••••••••••••••••

• •

T .
•
ER
'"

··.··03········. ·
····02·········
.<-•...............•
.:exIT TO ENOp16 •
'"
ROUTINE

•

'"

···.AS •• •••••••
ENOPl
•

•

INDICATE

DP01M

-FIND NTH OD2TBL*
:
PTRTI:riRTN :

• PREPARE ENTRY

•

.->

.SAVE D

·····E3··········
······El··········.
.-.-.-.-.-.-.-.-.
·
·
.
·r::=
oo~"'T"""
·····Pl··········
··. . . . .Fl-····.......
._.-._.-*_.-._.-.
• SYSUTS ..
1 .~:~----------:~ ~"T""'"
··.··G3·····.····
······Gl··········.
·.................
.
·.................
.... l ....
...

ENDP16

• i!l •

1
• t.

,

•

o ...
...
YES
.. " ANY ODO ... NO
• .END OF OCCTBL.*-------->*. ENTRIES IN ... _-*0
.f
*0 aceTBL

...

. ··.................
··.·AlI.··.·····
····Al·········.. .'...............
.
.
·..::::
...........
·.....
·····a3······.···
•
·
.
....••
·..................
1
--------------->
·····e3·········· r--------------....
.
.
.
.
....... ·1·....···· -------------...........::I:__ _

Proqram orqanization

B3 :

r,"~
····FS·········

·................
•
•

RETURN TO
BEGPASS

•
•

Licensed Material - Property of IBM

Chart DQ.

Phase 25:

BEGPASS

•••••A2...........

....
...A3·-1•••.•...••
••.••••

*-*-*-*-*-*-*-*-*
• ENTER DATATAB ...

*-*-*-*-*-*-*-*-*
• ENTER DATATAB •

.....
....

...

• '--l

•

••••Al.........

•
BEGPASS.

j

•••••••••••••••

•

...

...

*A2*

••

Routine

tA3_

IJR01Fl
•

DR01Fl
•

. . . . L. .__________________
. . . .. . .J. . . . ..
*ENTRDA'l'A

-ENTRY IN SYSUTS*
•
BUFFER.

*ENTRDATA

-ENTRY IN SYSU'l'S*
•
BUFFER
•

:.:~.L <________________

.... .......... ···s2···········
.....
.
. ................
.................

NOENDD

WRITES

•

NElrl'

•

:

D1

Y

•

• EOF

: - - - - - - - -•

.WRITE BUFFER
ON SYSUTS

•

D001P2

................
.... .
......
•. .0
o. o·
*. ...
.
.
.. .. '.• :*-l
....
1 ....

.................

!.'-.-___o>!U:[T

__._ _o>!

·. . ~.L. . ..

• ••• Sq •••••••••

. . . .

....

• eli •

.·. . r. . ..

·

... SAVE CURRENT

•

...

DIeT PTR IN
CURPTR

...

•

...

E1

0'0 *.

04

to

••••• B2 ••••••••••
...• SET CARDNUM ••

•

•••

0

.

CELL TO 0

•

.

•

0'0 ••

FD ENTRY

·.....
• A3 •

••

....•

•

.. .. ....

.- -1

...

.._._._+_._._._*-.
.•••H3..........

DR01AS

DR01Al

.TES'l'SUBS

•

:

:

········1·········
• DATATAB ENTRY •

... 0

~

:-1

sij~g~Rr~ED

••

0',

• ell •

••••• •

...
•

•. •o· o.

.....
..

t..

········~l·······i·::·:

....

• ••

to.·

•. o·

•

J2 •

.SET INDEX CELL •
NUMBER IN
•
t DATATAB ENTRY ..

.~;.:

REPORTD

• •••• Gs ••••••••••

YES

••

• SET SWITCH TO •
•

INDICATE RD
PROCESSING

•

..

••

-.

• •••• HS. . . . . . . . . .

•• YES
...

••

·NO

......

L>. •••••

_INDICATE INPUT ..
OR OUTPtrl' CD
•

..

•

•
••••.••••••••••••••••

• Bl •

..-..".," •.• -".•
•• YES

.----->.oENTRY RENAMEDo.-.o-.----,.!

.•••.••.....••..••.

.. •..... 0-

.....X2..........
-*-*-._.

X3

•

•
A3 :

:

• •••

........•
DROU'l

• • • ••

DR01AS

•

....

*.

• ••
.•.•RENAMER
ANO'l'HER •• YES
:----->•.•.
••••;:::~---.-.---o.---o-.-.-.---oo--->:C:=I~

*SETNAMS"

• ----CALLDIN----.
....-.-....
:LOCATE 1lENAMER :----->:SEfNAfiI¥I'RiES
•
• •
ENTRY.

•••••••••••••••••

••

••

••
•• CD ENTRY

V

J3· •••

•• LlCGE

->.•

••

RD ENTRY

R4

•

.I'l'EM , PROCESS.

NO •• UNDER PO • ..
---'.CD. s!!. wdNG •• ~::~_.____>'!o
••
S:.&."tiE,
••

•••.
••

••

••

NO

Jl .. •• ••
•• LD
••

s •

PT •

·NO

._._._*_*_*

~~o~I~D

ENTRY

o •

:

:

t.

Gil

*.

•• _t
SE'l'NAMS
___

TO •

• NO

NO

DICTFl

Bl :

..........

••
••

INDEXNAME ... YES

•

· .:!.:
l
..••.Hl..........

....

0'.

P

ot
• -DIC'!' ENTRY ... YES
-. IS A RENAMER ...
to
••.

·0

• •••

:

.·········l···::::·.•
.....,..
F"
...
•
••••
'S
••••••••
.
o..... ----->..
....
................
.
.. ..
L>: .
1
......
...... 0.----->..
.
-...
................
.
.. ..
L>:.::.:.
1
•..... •
.-.. ------>..
..---l

YES ••

• Bl •

Gl

1

•••

.SET DCB NUM PUT.
.ACCESS METH IN
• DATA'l'AB EN':rRY •

••

>.

BPASS2

o.

I·YES

.•....E3..........•
EI.! .0
0...
.<------.0 .0
.•
··········l···::::·. ....
··l·N~
->. •

FILED

.. ..
·0 ..... .• ----->.•'Ol·N6
·········L···::::·.
Pi

••

·0 ....
.0 ..

••

··0

------>.

•• RD BEING •• YBS
PROCESSED ••

oS

t..

... ·0.· ..

··l~----------:==J·······

BPASS12

t

.·0
.•.
0··0
.••.
.*-------> •.

•

....

_

••
-.YES..
..NO
•• LD UNDER RD
RPT.LIN ENTRYo.---!

•

*.

•

A3 :

r··. ·

.*

SO ENTRY

0

tNO

FROM ...

•• DICT PTa IN.. NO
•• DEF-TEX'l' = ...
•• CURPTR ••

0'0 ••

YES

...

M AND'

NOGET

-~

e4

..........
----*
ON

TO PHAOEND:

.••••••••••••••••

+0

·0 .• o.
'NO

L>+ •••••

·.....
• A2 •

Flowcharts

249

Licensed Baterial -Property of IBM

TESTSUBS and SETNAMS Routines

Phase 25:

Chart DR.

.................
······A1·········
1
..

TESTSUBS

B1

.*

······"S·········..

...

•

•. *.
.* .. "
*. * .•.• .*

DIC

•• NUMBER OF

.... SUBSCRIPTS
*.REQUlRED

..

.. SET

T ..

*-*-*-*-*-*-*-*-*

....

INF

..

•

coo

• ENTER IN SYSUTS*
•
BUPFER"

..

.. SET

,..

.. DAT
.. SET

. . . co

PT ..

.. INFO

..
..

..

.. DATA
.. SET

...
•

. . . cou

.*

D2

*.

ENTRY

BEGPASS"

TESTSB6

*. ...

r..........

.. " CONTAINS

NO

••••• D

*---.. Lac

•• OCCURS CLAUSE.*---··_-)*O!CT

..

.,

...... .....

••

s

......
·.·"'..................
"'SET
"'THI

·· F!····. .··*..

"". 1'. . .
**· ..

ENTRDATA

Gl

..

It...

-----*
WITH.

0

l ••• : ............... ,.,.:

:.~~.:

.. ..

*---

······H1······.···
·
·----WRITES-----.
*WRITE BUFFER ON.

. . . ·T. . .
SYSUTS

•

······Jl··.···.··..:<-·
.
• MOVE ENTRY TO •
:
BUFFER

' ' ' ' 1' ' ' '

····Kl·········
·.....
""., .........

. . .r.·.

.•

AS PARAMETER
---------

.

IN DATATAB
ENTRY

..
:

··..··P5*········..
•

RETURN

•........... ***.

•

.

• •••• G3 ••••••••••

•• ENTRY IS "'. YES
:t.• VARIABLE-LNG •
••

RETURN TO
CALLER

..
•

*...
GROUP

BIT
*-------->..SET
INFO
•

••

•

IN VLC •

BYTE

····"'82·········'"

·........1'........
.MOVE INFO FROM '"
.TBL TO DATATAB ...
...

ENTRY

•

J2 ..

.....J3..........

•••

.* .•

"'.

••

section 3.

J4 ..

TESTSBB

*. •.

aDO ENTRY

*...

••

•

YES

••

•••

..

.LOWEST
• • . ••

MOVE ODODOTAB •
PTR TO SAVE
•
l.REf,.

*-------->.

••

.------>.. ••LEVEL

•

•

*SET B
YES
• DICA
GROUP •• ------->.LEVEL
...
•
000 C

•..•

..

•

"c----------::~~:::=::==~--------~!:~----------:::=]···.....
.... .
:.q..
.. L>... ••••• ....................
:
......
X2

,',

••

• •••• X3 ••••••••••

...

•• SUBSCRIPT •• NO
•
REDUCE
•
•• CT IS ZERO • "'------->.SUBSCRIPT COUNT.--,

••••

.....

:

BY ·ONE

·YES

• Cl '"

250

DATA'l'AB EnTRY :

• SET MAJOR CODE ..

•
:

DIeT ENTRY"

•.. *

•
•

•

r .. _· ·r--_=r····
.

IN SYSUTS
•
•• BUFFER
••

*

•
..

•.. ···ES··**· . . ·"'· ..

•

,', "'.

DSF.CT

· 1 .

•

G2

...

•••• "' ••••••••••• *

• SETS OCCURS PTR.
FOR LATRPT
• IN THIS COBOL .---- ACCESS RTN

....

.
·............... ..."'..
·····CS··········

• SET BASE REG
.. FOR SYMtncT

:

..

TO'"
OR •

········1·······.

·

.SET CARD NUM IN'"

BOL'"

1<--~--------------------­
·····P2·········· [--------:.-

,', ...

.....
t.
• "'ENTRY PITS •• YES

"'.

•

•

1 .
·"'·. ··D5*·········
·
.

•••••••••

TESTSB3

'"

......"1'........
B

,..

········r:~~:=::--------~=~=::.!---~=~--------~=~~j

RETURN T O "

•••••••••••••••

T ..

.. INF

..
..

TESTSB2.".

•••• D1.........

..

..

.. SET

..

DATA
.. SET

.......... *1···· .....
...

•

CT

DIeT·

2r-----------::~::--3l
DIc;~~i~
1--::::::-------------Ir-----------:::--.....!->cl..........
.•..•c."........ ..... ........•.
..•..c"..........

DQ01Al

•

'~"'r"'"
..........

, " *,

*ENTRDATA

SETNAMS

Program organization

..

•
D3 :
"' •••

Licensed Material - Property of IBM

Chart EA.

Phase 3:

Overall Flow

······A3·········..
•

· . . r···.
IKFCBL30

...

.··23·······.
.............

• INITIALIZE

•

•~~S~wI~~~·. •

. . .J.
...

"'1ll
~-------SCAN
DIVISION
*--ENTRl
DIVISION
•
DICT
AND

•

GLOSSARY

*GLOSRY
*_*_*_*_*_*_*_t_*•
•
WRITE DATA

.................

----------

*PHCTRL
•
*_*_*_*_*_*_*_*_*

[-------TEXT

...

. . ~J."'. .
...

CONTROL

*--

• PROCESSING OF ...
... IC-TEXT ELTS.

~"""'T"""

.·.··E3·.········
•
•

LIST

UTE

ALL

FOR

---

·
.
·······r···..·
•

TERMINATION
ROUTINE

'4

•
•

..•·F3·········

...............•

... EXIT TO PHASE ...
00
...

••

Flo weh arts

251

Licensed lIaterial - Property of IBM

Chart EB.

..
..

..

Phase 3:

····Al·········.*--- [----------------------

...............

..

GLOSRY

BRANCHED TO
FROM PHINIT

..........
• '--l

1

.*

B1

'*0

*0

.. " ANY DATA
....
DIVISION

*0

..

*0

•.• iI~

.. B2 ..

DleSCN

*0

."

••••• 82 ••••••••••
..
..

.... YES
..

.*

1
....cl.........

*---___>*.GET

•••••••••••••••

DICTIONARY ..
ENTRY

1\"

········r·······
.
..

..

.EXIT TO PHINIT ..

..

GLOSRY Routine

..

NO

..

.. "

.*

C2· •••

*0

.... YES

.*

.. "

C3

~..

••
to

*0

YES

.LI

---*.DATA OPERAND .*----->I(:.HEADER-SWITCH.*------>*
*0
to
ON.*"
*s

*0.*
*0

'"

.*

*0.*

.*

*0

..

.*

•••

*NO

1 .
·······03·.········
.
········1·········

PRINIT

.. MOVE DATA TO

..

..

PRINT LINE

PRINT

..

<-------------------

···El···········..

MOVE PRINT
..
LINE TO

................
...1
..

"

Bg~F~~~p:r~~E

FJ

.* . *

*0

*0

....

*0 ••END

..

•••• ""F4 ••••••••••

..
•..*------>.
YES"

.

OF PAGE
...

•

.
..

SET
..
HEADER-SWITCH •
ON
•

. I::--~~-~~-::=:=j········

CHKENT

G3

.*. ••

EC01A2

....
.. .......

.*

*.

•• LAST DATA -. YES
••
DIVISION
••
••
ENTRY.·

'NO

L_>* •••••
• B2 •

252

Section 3.

Program Organization

····Gq·········

...............

-EXIT TO PHCTRL •
ROU'l'INE
•
•
-

------>*

Licensed Material - property of IBM

Chart EC.

PHCTRL Routine

Phase 3:

GETNX'T
GET
IC-TEXT
ELEMENT

C3

C2

Cl

YES

c4

COPYIN

GETNXT

COPY VERB
IN OUTPUT
AREA

GET
NEXT
ELEMENT

C5

NO

D2

D3

SORT
OR MERGE

NO

D4

COPYIN
COPY
CORRESPONDING
IN OUTPUT
AREA

NO

READ

D5

OR RETURN
YES

YES

E2

E4

E3

SMERGE

READEN

STRSCH

EXPAND TO
OPEN, CLOSE
FILES

APPEND
RECORD-NAME
AFTER
FILE-NAME

PROCESS
STRING IN
SEARCH
STATEMENT

F5

F4

CORRTN
USES GETNXT, GENDAT, SEARCH,
AND GENOP TO DO THESE
OPERATIONS. WHEN COMPLETE,
NEXT ELEMENT ALREADY GOTTEN.

GET OPERAND
NAMES. FIND
MATCHES IN
DICTIONARY

G2

SEARCH
NO

LOOK FOR
VALUE IN
DICTIONARY

SP'D

H3
H2
YES

GENOP
GENERATE
OPERAND
USING
ATTRIBUTES IN
OUTPUT AREA

Ji
ENDDBG
INVALIDATE
DEBUG-ITEM
DICTIONARY
ENTRIES

SPECIAL
REGISTERS

YES

NO

K2

K4

ERROR

GENDAT

ALTSCAN

GENERATE
E-TEXT

WRITE
DATA

PROCESS
ALTER
VERB

Flowcharts

253

Licensed lIaterial -Property of IBM

Chart ED (Part 1 of 5).

Phase 35:

.PHCTRL Main Control Routine

1 PKerRL
A1.

B1
PH35INIT
PHJ\SE

INITIALIZED ~
INCLUDING
TABLE PRIMES

Cl
ANLZUFDS
BUILD DTAB
ENTRIES FROM
UFO SENTENCES

IN THE
OECLARATlVES

(AT LEAST ONE
PN IS UFO OPERAND)

p1

YES

YES

D3
NO

END DECLS

CONTROL
BREAK

NO

YES

NO

E3

E1
EOFRTN

E4

GETISTPN
35
SPECIAL
PROCESSING
TO FIND FIRST
PN AFTER
DECLARATIVES

56

CLEANUP:
INCLUDING
TABLE
RELEASES

E5

CRDNBRTN
DBG TRANSFER

CHECK PN

VERB IS

FOR UFD
OPERAND

REQUIRED

BEFORE OR
AFTER CARD

F3
GOTAVERB

PROCESS ENTIRE
>.::.:::~-~ VERB STRING
FOR UFO
OPERANDS

G3

GENP1GET

47

GENERATE
CURRENT Pl,
GET NEXT pl

YES

J2
GENP1GET

47

GENERATE
CURRENT Pir

GET NEXT Pl

u1

254

Section 3.

Program organization

PNDEFRTN

DETERMINES IF

NUMBER

F2

YES

YES

G4

9A

Licensed Material - Property of IBM

Chart ED (Part 2 of 5).

Phase 35:

ANLZ tJFDS Rou tine

page 2 of 5

3
ANLZUFDS

Chart ED. Phase 35: ANLZUFDS Routine

A1
SCANS USE FOR DEBUGGING (UFO) nECLARATlVES
FOR PROPER OPERANDS I ADDING THEM TO DTAB

Bl

B4

B3

B2
GETNXTPI

43

GENPIGET
SECTION

GET FIRST
Pl TEXT
ELEMENT

NO

NO

ND

PN

DEFINITION
YES

47

GENERATE PI
GET NEXT pl

DECLARATlVES

YES

C1

c3

NO

D1

GENPIGE'l'

47

GENERATE PI
GET NEXT Pl

£1

E4
GENPIGET

47

GENERATE Pl
GET NEXT PI

F5
ERROR

CHECK UFO

GENERATE PN
GET NEXT-PI

NO

OPERANDS,
VERIFY AT
LEAS'l.' ONE
VALID

55

COMPILER
ERROR 40

YES

H4

H3

GENPIA
GENERATE CARD
NUMBER

GET NEXT PI

GENERATE
UFO VERB

48

COMPUTE BLLs
REQUIRED FOR
DEBUG- ITEM,
ADD TO VALUE
IN COMMON

NO

K2

ERROR

55

COMPILER

ERROR
339

Flowcharts

255

Licensed 8aterial - Property of IBM

Chart ED (Part 3 of 5).

Phase 35:

PNDEFRTN Routine

9APNOEFlI, ~:=~~ON,

DEBUG
1'RAIISFBR VERB

INUIAL VBIUI
. ANALYSIS. FLAGS

YES

NO

D1

D4

ABNDS1'1I'r
END OF
S1'A~T

PROCESSING

11

ANLZVRBS

12
D

OPBRAIIDS
REQUIRES
VARYING

SYH1'AX
AWARENESS

Flowcharts

257

Licensed Material - Property of IBM

Chart ED (Part 5 of 5).

Phase 35:

ANLZVRBS Routine

ANLZVRBS

A1

page 5 of
Chart BD. Phase 3S: ANLZVRBS RoUt.ine

COMPLETE VERB PROCESSING (SYNTAX ,
DATA ANALYSIS) 70 END OF VERB STRING

INDICATE:
PITEXT TO BE
SAVED IN
PITEXT TABLE

c1
SAVP1GET

58

SAVE VERB IN
PITEKT TABLE
GET NEXT Pl

E3

E2

E1

PLUS!WRB

38

GENTXT:

E5

B4

so

SRCHWND

. GENERATE

GUARAIITES
PAST ANY
IMPLICIT
TEXT

YES

>---i>I WHEN
CONDITION
GENERA'rES ANY

SAVED DEBUG

AND/OR PlTBXT

FROM!'1'ABLBS

SAVED PRIOR
DBGTEX'l'

P4
INDICATE
PlTEXT: MAY
ONCE AGAIN BE
GENERATED

IMIIEDlATELY

*13-24 ,17A,24A,29 ,38
G2

G1

*

VRBANALZ·
ONE OF MANY

'>----1>1 ::I~:~YSIS
ADDRESSED FROM

VERB TABLE
ENTY

B2
GETeI"

31

CURRENT
P1 FOR
DEBUGGING

SAVE
CURRENT Pl
GET NEXT PI

258

Section 3.

Program organization

30

PROCESS SEARCH

Licensed Material - prop erty of IBM

Chart FA.

Phase 4:

Overall Flow

·····A3·········.

",,: . . 1'. . .
•
•

IKFCBL40

•

*----

[----------------------ENTER VIA
PHASE 00

.

..··B3·······.. .····B"·········.
:.....~;:Ll<~=~---·-----~::~]·······
······C3··········.
->:
·········r·······.
•

*T

S+

•

_ •

•

•

IDENT

•

_PROCESS PRvGRAM*

~~~N ~~~ :

•*03

....

....

BOF

toO

...
t.
too END OF FILE ..
toO
...
too.*
to

YES

E3

...

VERB

.*

o

•••••••••••••••

VERB ANALYZERS
••••• E4 ••••••••••

toO

toO

t.
t

r

.....

•
•••• 05 •••••••••
• CLOSE FILES.
•
• EXIT TO PHASE.
TERMINATION *------->*
00
•
ROUTINES..
•

•

•
•
•••••••••••••••••

.*

.* . *

• •••• D" ••••••••••

+------>*•

•

*oO Y E S .

...

..

*------->*•

•

PROCESS VERB

..

..

·········t···::::·

.Ol*N6

->*

...........
" .
·.................
F

•

•
•

:

....

..

c3 :

ES·
•

Flowcharts

259

Licensed I!aterial. - property ofIBI!

Phase 4:

chart FB.

IF Routine

"."

",

·····Al·········.
•

•

[j----__
•
BRANCHED '1'0 _
*---FROM IDENT
------

IF

·
.
·····..·r·······.
FORMLA

,., .

Dl··~..

..D2·~~.~...

•••••os ••••••••••

OlCCOMJ?,·D .. · · : ...·

. *COLLECT *. •• YES
.* VALID *. *. YES
.
,
••
• _COND CLASS •• YES
• P
',. .
••
•
GENERATE
.*------>*.OR SIGN TEST .*------->*H
.....----> ... COMBINATION .*------>* ERROR-FREE'
•
*. OPERANDS
VALID .*
*. t .
NEXT
0*
•
•
It.
-.OF TERMS .".
".
STRINGS
•.
t.
.
*
.
*
•
•
*
.
.
*
•
.
•
to
*.• *
..............,.....
• •
•••••••••••••••••

••
t.

'NO

."'

'"
E2J
*.

•*

•• RELATION
••

t.

.r

TEST NEXT

*. *.

•• YES

0*
*. 0* .•

•

*------>

F2 ..

1'"

";'0

1 . *E5.'...
.E"..........
.
• ••••

•

-GENERATE ERROR •

TEXT.
•
•
..................

+,;

* •. NO

MESSAGE
*..*
.* • *-!
*.
...*f
••••

*-----ERROR-----*.* WAS THIS
••.

$.

r

..••.P3..........

1
••••.pll..........

:.:~':
..•..ps..••.•.•••

•••••••••••••••••

•••••••••••••••••

•••••••••••••••••••••

.... ------->..
..
.t~~:..:;..:
1
....
.
-------->.····G2··········
*...
•••••••.••••.•••
..·..
................
.•
L ....
I
......
.'.
.. ..
... .••••.

s

..

••
••
•
• • 8UBSTI'TUTE··
•
• • RELATIONAL •• YES
.ERROR CONDITION.
.DUMMY STATEMENT.
•
GENERATE
•
•• REQUIRED
••
ASSUME '=..
•• FOR INCORRECT
.---.SUBROUTINE TEST.--!
••
•••
ONE.
•
VERB
•

•

Gl

••

· *.•END OF IF*. •• Y E S .
*. •• STATEMENT •• ••
•

*

FA01BlI

••••• G3 ••••••••••

*

*-----ERROR-----.

EXIT TO IDENT •
"GENERATE ERROR •
• •
TEXT
•

NO

>.

•

• B3 •

H1

.•
*.
-.

••

*..
.• ••
.*

• RELATIONAL

'

'YES

L_>* •••••
• E3 -

260 'Section 3.

Program Organization

.. \

:

.

:.:~.:

.

Licensed Material - property of IBM

Chart Fe.

Phase 4:

·...·u.········.
•

•

. · . r··. ·

PRFORM Routine

BRANCHED '1'0
*--- ~----noM IDBtI'l' OR 'SORT

.

•

PRFORM

-------

.•. ...
.*. ...
.t. *.
Dl
B2
83
•••••Slt ••••••••••
.*
*.
.*
*.
.*
*.
•
•
•:* IS IT PNl ·:.~___>.:·pR~z~mU .:.!~--->.:. VALID PH2 .:.!~--->: ~t~~ I~~ 6~ :
*. * . . t .*
*. * . . * .*
*. * . . * <1*
•
PERFORM
•
••
.'.ii6

....cl.........

....

L>:•.;;.:•

NO

*->

*----

•• •••C3· •• ••• •• ••

••••• c ••••••••••

• • 1'1

• BXXT TO ID2ft •
•

•

•••••••••••••••••

I·

YR-----..
.
................
..
.
·······T..···.. ~:~~:~::........
PAOla"

•

.e

toO

1

*•• *

:....';;': I"NO
•

• •

'1'ION •

0

• DISCARD THRD

*<-------*

OP

• •

D2 .e. *.

ISEND

... .'...

.......r..

••

••

E2 •.

:

•

•

II

D3..........

DII
.,.---->.. ":8

V

S'l'ORB:
APPROPRIATE
STRINGS.

••

...............:

.*---->*•

.;

..
.0

ERROR "l"EXT.

. . ••••

•••• END 'OF •••• YES
STATDlENT
••
••

*.

I'N2. PUT Ou'l'

:

•••·e •

PRFO~" ••. YES

.... ..'...

••

CALLED BY ••
SORT
••
;

r.

•.•••E3..........

..•••Eq..•.......

UNTIL. • ....---->.INITIAL S"rRINGS.

j->.GENERA'rE
PINAL •
STRINGS

.0
..

t.

YES

.~

.
.•.
...
.................
..................
.M.J........
I'M~. •
•-----UN'rII.-----·
•
·................... ...............
•
• •
•
• . GENERATE.
.----GENSTR---- •

•

.<-

•

• GENERATE STRING.---

• ••• pq •••••••••

• EXI"r TO IDENT •

• FOR CONDITION • •

H2

....
".....
.....

.'. .0

o. .. . ...
•.•. o~··

••

••

0

r

.'.
.··0

-.

••

-...
-. ..
N TIMES

•

•• H3 ••

.--~

H3 ••••••••••
GENERA"rE

YES
:
•••• VARYInG . ' •• _ _ _ _ >:lNITIAL STRING

J2

...............

•••••05 ••••••••••
EXIT TO SORT •
•

----->.•

:••••••••••••••••

.
.
-.-.................
L

········r········
O. o·

• ••••J3••••••••••

•• YES
.----OKPFOP-----.
••··_--_>.CHECK THAT N IS.

o.

L>.•••••

'NO

.D3e

••••••

VALID

••

!-----:.!

-

>••• ~ ••

.D3.

••••• •

-

0

·0

Jq

.'. ••

.. .0
.-

........

AF'l'ER, ETC

0

•

NO
*---

·YES

L->. •••• •
• 83 •

••••••

Flowcharts

261

Licensed !aterial - Property of iBM

Chart FD.

Phase IJS:

·.··.·Al···.·····
. . 1'. . ..
•
•

'"
*----

IKFCBL45

Overall Flow

~-------ENTER VIA

---------

PHASE 00

.....Bl·······.•. .····B2·········
...............
··::···1······
j
....=_>
-----+
·····el··········
·..................
1
.'.
0•

PHASE"

•

"'INITIALIZATION •

·----GE
•
R
•
ATM

•
•
•

EL

D1

••

to

to

•

,.•

PH45CTL

<________________ _

: Cl

•

•

t.

END OF
ATM-TEXT

to

to YES

•••• 02 •••••••••
• EXIT TO PHASE •

.*------->*•.
00
•
...* .*
••• 41..••••••••••••

r

to

o-

·····El··········.
··.................
.
"'SAVE HEADER AND• OPERAND COUNT •

-------->1
*--------+
······Fl··········
.

·........1"'......
······Gl··········.
·········r·······.
•

R

T.

• PLACE ELEMENT •
•
IN NEXT
•
• AVAILABLE oop •

H1

NO

••

.to

to

. *OPERANDto ••

....
' .. '

YES

.*

82

•••

3 ••••••••••
LETE •

to
to

.....
' .. '
1

SA

..
....................
:.....
•

'.
---*. •• COUNT-l=O •• • *----->.. ••STRING
JUST •• ------:->.STR
READ.'
•

•

•• SUBSCRIPT •• YES

PT.

..... .,

'NO

SSCIN • ...:--~,
•
•

.'.

•
Cl :

J2 " .
• ••••J3 ••••••••••
....,
• SET UP ERROR •
• ••• J4 •••••••••
• ' UNSTRING ' . NO
• . MESSAGE •
.
• EXIT TO PHASE •
••• ~TRi~JUS: ••• ---->:·UNR~~~fZABLE:---:--->:
00
:

....
' .. '
1
•••..K2..........
•_._.-._._.-.-*-.
• YES

................... ...............
,

•

•....K3..........

.................

....................

FC01Al

'UNSTRING

FD01Al

.....K4..........

'SORTXT
• •
•
+-*-'-'-'-'-'-'-".
*----PUTDOP-----.
.----->'SORT TABLES FOR.----->* WRITE P2-TEXT

•
ANALYZE
• ATM-TEXT AND •
'CREATE P2-TEXT •

•
•

NEXT SET O F '

P2-TEXT

•

....................
.
• •
·.....

'.
•
,.

ON SYSUTl

*-~

•
•

• Cl •

262

Section 3.

Program organization

Licensed Material - Property of IBM

Chart FE.

Phase 45:

UNSTRING Routine

····Al·········..
··...............
•

UNSTRING

B!

1

.'. *.

. .(

•+

• : ... ISF¥~~
t.

...

*..

= .. : .:~~ _____>••
.*
...

..B2 •••••••

'. t"
•

PRIME
...
INTA E~tE ......
AND ...

·. ··.Cl··········
.................

.........
.........

...
...
*----NXTSTR-----...
... GET NEXT
...
•

FIRST
TICN

nop ...

...
...

E NUMBER.
OUT AND •
TABLES ...

...
...

· .......
·········r·······.
...

... ENTER DOPS 2

•

*AND 3 IN TXTOUT*
...
AS IS
...

F2

o. •*

•• FIE
*.5

.-. *•

*. t. YES
... P
4) .*-------->*
-.*
-SS
...
UT'"
*.. *
•••••••••••••••••

t..*

r

·······G2··········..
.. ENTER oop II IN ...
..
TXTOUT
...

:.::.L~

H3........... . . . . ......
..•.a" ••••••••••. .

········1·::::::::---------------.'.
H2
•*

*.

•••••
..... SET

*.

.. ..
1

.

. .········r·······.

... IS oopS = "'.. YES
CTL2 FLAG •
•• DELIMITED BY .*--------)* TO 'DELIMITER
"'..
..'"
...
FIELD'.

'. 'N~

+----GETDOP-----*
GET NEXT TEXT.
ELEMENT (DOP) •

+----->*•

•••••••••••••••••

••••• J ...........
• SET
FLAG •
• T
ING •
:FI
~ND :
•
TABLE.

NCH.

YES ••

••

Jil

.'.

••

••

.....
OOP

•• NO

•

FB01B2
• ••• Js •••••••••
RETURN TO
•
PHII5CTL
:

:<------•. ~~N!t!=~riE~I
.•------>:
to..
• ••••••••••••••

....

.... .......

•

·······X2··1. •. ••••·.. ·:..... .1..........:--- m------.
.·...............
..............
"' ..
L •.••
l ....
......
......
•
SET CTLl
•
• ' BREAK' FLAG ON.

>.

•

• Hil •

•

•

_>*

FIELD

~~~-----

.t

• Hil ' •

Flowcharts

263

Licensed Material - Property of IBM

Chart FF.

.'".

'"

Phase 45:

....Ai......... *---

..............
SORTXT

...

'" ..

SORTXT Routine

[ENTERED-FROM-------FIELD ANALYZER FOR
TEXT ITEMS (SCANTXT)

-------------------

j

·····Bl··········

..

SET

'"

"'DISPLACEMENT TO.

·..................
..
TXTOUT AND
..
• SSCOUT TO ZERO ..

1<-------------------------------------------------------------------------------------------

·····c ..........
... GET

OF"

.SSCOO

ADD ..

C
OlSF

..
..

·........1*........

-->*..

.'. ...

'r . . . . r.·.

01

• •••• 02 . . . . . . . . . .

•"
"'.
."
IS NEX'I
,... YES
"'.
ENTRY END
•
... MARKER
• ..

*..*

*-------->*..

..... E1..........

..

.. GET
*TXTOU

OF"
ADD ..
..
ENT"

C
DlSF

..

'"

.....E2..........

GET N E X T " "
..
"'GET STRING CODE'"

COMPLETE"
SUBSCRIPT"

..

STRING:

:

········1·········
.....
Pl..........

...
..
*----PUTDOP-----*
---.WHITE STRING ON.
SYSUT1.
•

·. . . . . . . . ..

AND OPERAND

...

COUNT, IF ANY :

········1::::::::------------------------------------------F2 .' .
P3..........
.....
.
.
*.

•••••

o*IS NEXT..
'"
..
." ELEMENT = ... YES
.. INSERT FINAL •
__ >*. "24" SEQUENCE. *-------->*SEQUENCE NUMBER.
NO...
•
•

· __________:==J. . . .

*.

.]~

"'····G2*·········
• MOVE OPE
• INTO NEXT

•
•
•

........ ........
1
"'AND SET OP
• LENGTH IN

"'

•

BYTE

•

H2···..

.* •••

NO

H3 •••• "'.....

H4·

NO

••

HS·

••••
·----PUTDOP-----·
••••
'" WRITE HEADER •
•• END OF
•• YES
• '" OPERAND •• YES
••
COUNT-l=O
•• ------->.AND FILLED DOPS.------->..
TXTOUT
••
(P2-TEXT).
•• SECTION ••

*.

.r

*. * .. *. '"

••

•

J2

••

r

•. .•

Al

.

•

SET

NO
..
---..

*

.. *

LED.

•••••••••••• *••••

••

IS NEXT

•
ER:

..

A . OOP'S

.. .'. ..
.. ...... ..
K2

Section 3.

•*.. .
.••

•• YES

END
... ----*. ENTRY
MARKER
••

Program organization

.·,0.*
•..•

I"YES

• •••• J3. ••••••••

••

.. ..

-----> •.

•
•
•
•••••••••••••••••

:·DO~~~EB~EN .:.:~ _____ >:CO~N~
... FILLED

264

.•

••

• • ••
•• END OF
••
ENTIRE TEXT-' ~.
••
••

FB01B2

Js •••••••••

...............
• •••

:

~B~~~TlO

:

• •

Licensed Material - property of IBM

Chart GA.

Phase 50:

Overall Flow

····A2·········. -------·...............
..&.:t,j~;;;;;;----------------------------------•

•

~-----ENTER FROM

•

IKFCBLSO

• - - - - - - PHASE 00

...•.
B2··········
Q--------*-*-*-*-*-*_*_*_**----*GETNXT

•

······..·r·······.
•

NORMAL EXIT
FROM PHSCTL

GET NEXT

•

ELEMENT.

•*C2

.*.

IS IN GETNXT

---------

...

C3

.*
*.

toO

.. . *.

••••• C4 •••••• • •••

*oO

•

DESTROY

•

:

• :*VERB STRING·:.~~-->.:·g~fI~~TIg~ .:.~:--->: op~¥~~g4ian

*.

*...*
*•• *

.*

**....**

• YES

...

•
TABLE
•
•••••••••••••••••••

j

tNO

1
.••..02..........

...D3...1<-----------------·.·•····

•
•
• MOVE OPERANDS.
• TO WORK AREA •
•
•

WRITE
-INTERMEDIATE
OPTIMIZATION
A-TEXT

.
. ...............
....•
l
->.
·······r··. .
·.....

·

•

• B2 •

·.·.··E2··········.
·········r·······.
•

UPDATE ANY

•
•

•

SUBSCRIPTED
ITEMS

F2 .*.

too

•

.+

•••••

..•. •. .o..o...

•• . *

•• PHASE

*. *a

YES

r

ANALYZE VERB

50 VERB.*----->.

••

oO*

F4 . *. . .
toO

..

*oO

... * . . •

*------> •. END OF

.oO YES

STRING ••->
••

l·No

G2
• .o
.o. VERB
• .o
•• NEBDS REGS •• YES
•• 1-5 AT OBJECT ••
•• TIME
...

•••••
•

.o.

GD01Al
• •••• G" ••••••••••
.GENERATE
+

G3..........
•

.STORE SUBSCRIPT.
REGISTERS 1-5 •
• IF NECESSARY

------>.

• .o

•

STRING

at.

PH5BVB

F3..........•

.••.....•.••••••••..•
••

. ·· .........
*

•

._*_.-.-*-*-*-.-*
• GENERATE PROC *-->
.A- OR INTERMED *
OPT A-TEXT
•

• •

·J~-----=~==~r·

2···········
OUT

ER

S AS
ON
•

J2

.o. ..
•. ~:

~.o

1

•••

••

I·

••

•

•

..o

.o

.o

.o+

••

YES

YES

••

t~~.•.•••

*---

• ••••••••••••••••

·.....
• B2 •

.····X2··········
•-*_.-._+-*-*_._.
,.................

·XSPRO

GE01A"
• •••• J" ••••••••••
.RILSUB
•
.-.-.-.-.-.-.-.-.
OPT. *----->.
DESTROY
.o • .o.
:
SUB~~~In OPT :

..o .. NO
.o.
• S
.o. +------>
A
• *.

GE01Al
•

otGENERATE CALLS .----: TO Q-ROUTINES :

Flowcharts

265

Licensed Material - Property of IBM

Chart GB.

...
•

Phase 50:

····AI····,..····

................
PH5CTL

..

[---------------

...
BRANCHED TO
... - - - - - - - FROM PHSO

:.......':·.81··········
': I
...

PH5CTL Routine

---------------

*->

GCDIAI

*GETNXT

...

...······1..······.

-->*..*-*-*-*-*-*-*-*-*
GET NEXT
..
ELEMENT
..

EOFIN
: •••• C2 ••••••••• :
•••• C3 •••••••••
... YES
.. TERMINATION •
.. EXIT PHASE 50 ...
END OF FILE .*-------->*ROUTINES (CLOSE*-------->* TO PHASE 00 ..

4'" Cl

•"

*.

*. ....

~.~

... "'.

* .. *

.

..
..•••••••••••••••••

.'" .*

INa

••

Dl .*. *.

• ••••

....

."

"'.

YES

...............

FILES)"

'"

..

D2..........

v .
•..... 03..........
D4 *.

fCiiPPROPiiiATE-ANALYZERl----------------------------l

.. MOVE OPNDS TO . . . . .
'"
WORK A R E A . . "

..
..

• '"

*0

*•••

...

0*

NO

•
• •...............*...•
••••••••••••.••••

l·

NO

CTLCOPY

."'...
E1

"'.

o.

• ••
E2

"' ..

*0
~~_. : ~~N 6E~~NI~~O~: • .:~~ _____ >.: ~N DEFINITIO~: .~~~ ___ > .WR~~~c~gfiR~N
.. •

"'.

.

.. .'" ..

.. '"

...

r

...
... . .
"'

................
l ... "'' '
.... ..
...........
.."

'"

->*•

•

•••••••••••• * •••

l->. .... •

......
'" 81 '"

section 3.

•

B1 ..

"'

ROC

ES~~~Y

•

.. A-1'EXT FORMAT.

IZATION' •
A-TEXT

266

"'...
.. ...

."' . ..'"
.....

t~;:

'" B1 '"

....

Program organization

GDOIAI

.-.-.-.-~-*-*-.-

•• VERB STRING. "'-------->.DETERMINE WHICH .. -------->.ANALYZE STRING *"-------->*.END OF STRING. "'------->.
••
'"
ANALYZER.".
*"
"'.
...
..
• •

...*
... .•

*D5* ........

.

.GENERATE"

••

PROCEDURE

A-TEXT
•.
... ................

Licensed Material - property of IBM

Chart GC (Part 1 of 2).

Phase 50:

GETNXT Routine

····Al·········..
··...............
:~~:...._>j
·....
······Bl··········.
r....................
.. 1
..

GETNXT

..

.. POINT TO NEXT ..
ELEMENT IN
..
BUFFER
:

-->*
:

: Bl :

: •••• Cl ••••••••• :
.SAVE COUNT FOR ..
..
ELEMENT
..

.................
+

+

+

•

:....
*::*: 1
..

*->

.• Dl

.+.

*0+.

.. "
.... YES
..
*0 END OF RECORD. +-_______ >

.... *0

*.

.*. * . .

,*

E1 or*. *.

• ••

.. ..

.... YES
•• ;:~ROR MESSA~;: ••

------>.

••

or
.. ..
l
...
Gi ..
....
.. .. .. ..
Hi or..
....
.. ......
••

F2

•• YES
NUMBER ••
••
••

••

r

••

•••••••••••••••••

.•...E3..........

•(:::=-!
..•.E4..•...•.•...

......

...
• ••••

.. .. ..··.
....
..••...G2..........
..
•
+ Eq +

•

..... 1

pq ........... .

....... ........
G3 ... •.
....
.. ....o·..

.-------->..

4304 CODE

•

••

...

*.

.

.TURN OFF DEBUG •
:CALLsw~¥~ftRESS :

ONSWTO..
OUTPUT.
•
ALLS TO.-------->.
EGO.
1\.
TINE..

• MOVE Co CODE
INTO ELEMENT

.................

••••DS •••••••••

.RETURN TO PHASE.
00
..

• . . . . . . . . :11 . . . . . . . . . . .

L>(~~::
P3..........

•

------->.

..

* .• *

••••
.TU
•• STATE OR •• NO
.SUP
SYSDMP OPTION ... ------->.OF
••
••
•
.....
•
SU

•

.•

.. *-------->+RELEASE TABLES

•• .................

t~;:

q3 CODE •• YES
(FOR OPT)
••

*.

EOF

.. POINT TO NEW •
:
BUFFER:

-------> •.

·NO

••

WRITE AS
I~~~~~E¥~~:fE •

:•••• 04 •••••••••:

+. Y E S "

*----...
+
.+
..
..
.
.-->*
.•••••••••••••••
...
+.
..
..
..

.~>(:~)

Fl..

••

..

E2...........

.•03 .....
• ••

.. "

------>*.

••••••••••• •••••

••••

•• ••CARD

READ NEXT"
RECORD

••••••••••••••••

.*
.. "

••

.··D2·.··.···.··

SAVE CARD
NUMBER

•

•

*··FS.··········

WRITE AS
·INTERMEDIATE
PROCEDURE
A-TEXT

•

................. ...............
.
l ....
....
.-------->

• •
•

->*•

+

•

Bl •

+

NO

• *---->

r ..
s

.••••.H2........... ...••.H3 .••.••.••.
.·········l···::::·. ..................
....
------>..····J2·········.
......
..
.. ..

••
••
OPTSW ON

•• Y E S .
••

• •
OPTSW=O.
•

-------->.

+Ol*N6
0+0

Ji

*.

•• CRITICAL •• NO
•• PROGRAN BREAK ••

*.

.•

r

->.

•

•
•

E4 •
+

OPTSW=l

•
.-----

GBOiAl

RETURN TO
PHSCTL

•

•
•

•••••••••••••••

s

'+0

*. ...

.. .. .. ..
.....r
•*K!

.

••
•• YES
•
•• START BREAK • *-------> A

*.

.•

·02 •
• Ai·

+ +
+

Flowcharts

267

Licensed Material - Property. of

Chart GC (Part 2 of

~

•

C2 .

*.

.....
·..

I~!

Phase 50:

GETNXT Routine

*02 •

.. A1-

!

.*

0*

Al

·'. *a

*•*.

START

YES

. ·~~~~mR~:~" . *--1
*. • NO
0*

•••••

1 ..

B1

•*

."

*01 ..

..

:~.

·'. *•

r
r

END

*.
.*

YES

.... DECLARATIVE ... ---~
.... BREAK

....

.. "

*.. *

.*

•••••

:~:~:

Cl . *. *.
. *Q-ROUTINE*. ....

.... .... ... BREAK .. '" .... " *--------)* .... :!~N BR~:

*... "

*•• *

s

. . . *------->..
YES.

..

WRITE OUT

OPTl~~i~~ION ..

WRITE OUT

········1..·..

..
..

····02·········
...............
RETURN TO
PH5CTL

..

..
..

·····E ..........

··.................
.
....
l
......
•

D

•-OPTI
su

•
N*..

->*01 ..

.. B1 ..

268

section 3.

---1
::li~:

GBOlA1

..

PROCEDURE
A-TEXT

..

•••••••••••••••• • ••••

I·NO

••• D1...........
..

••• c3 •••••••••••

.~

0* 0*SEGMENTA-*•*.

NO

Program Organization

•

Licensed Material - property of IBM

Chart GD.

Phase 50:

Genera te Routine

··.····AI·········
. . .r-.. ...
•

GENERATE

..

·····Bl··········
··........1"........
-SET UP OP CODE ..

-FOR INSTRUCTION-

·····cl··········
·
.
..

CALCULATE

..

.. LENGTH FIELDS ..
.. OR REGISTER ..
FIELDS
..
..

~::::~::l·········

.... ..........
·····0

GCKOP3

*0
*A
..

FIRSTPERANO*
UP"

·········r·······.
El

•*

.'. *.

*.

••
... YES
...... LITERAL •• '

*. *.

••••• ••••••••••
..• 0
TE·
TICN"

*------->:

o· ."

r

As

T3 ON

:---

•
..
•••••••••••••••••

.'. *.
F!
."
* •...
• • VIRTUAL
OR
... FIGURATIVE
... CONSTANT

*. * .. * 0*

0*

YES
..
• *--------)*

..
..•••••••••••••••••
S
..

l::----------------~-------------·······Gl··········..
·
• CHANGE OP CODE ..

.. IF NOT RR TYPE •

PLu::·····T·······
······H1··········.

·........1'........
..

SET UP PLUS

..

• ELEMENT IF IN ..
•
EXISTENCE
•

GDOAGN

.*

J1

..

*. *.

.-.

J2
*.
.*..

*0

....
.. ..

••••••.13..........• •• ••••JII ••••••••••.
.------>.

....
.. ..

................... .....................

••
SS
•• YES
•• SECOND
•• NO
•
CHANGE.
•• INSTRUCTION •• - - -____ >..
ADDRESS
•• -------->.WORlC-AREA 2 TO
••
••
•• COMPLETED..
•
WORK-AREAl.

r::__________________
2..........
............,....
.....

GNOPT

• ••••
•
C
WRITE.
A
-------->* P
CONSTRUCTED

*

A-TEXT

•
•

R

RK.
•

CHANGE EACH
POINTER 2 TO
POINTER 1

If'

•
•

L: :~~: :

JES

••• Kl...........

•

•

GB01Al
• ••• K3 •••••••••
•
RETURN TO
•

.------>.

posen

•

• •
•
•••••••••••••••

Flowcharts

269

Licensed rtaterial - Property of IBM,

Chart GE.

Phase 50:

XSPRO and KILSUB Routines

······A1·········..
..

. · . T·. .
XSPRO

B1

...

...

0*

•

• •••• B2 ••••••••••

*.

....

•"
... NO
...
Q-BIT ON
•
...
."

UPDATE

*------->*-TABLE
SUBSCRIPT OPT
(XSCRPT)

·"t'

*0.*

.....el..........

..

....

..
..

..

·······T····..

.....e2..........

..*----WRCOQ5-----*. . . ._UPDATE REGISTER-.
-IF • OPT' WRITE ..
..
TABLE
..
..
....
.. coos
....
...

········r·······

·······r::~:

····02·········
·········r·······. ·................
: •••• D1 ••••••••• :

.. GENERATE L 2, ..
..

GNREF FOR

..

..
..

..

Q-ROUTINE

..

RETURN TO
PH5CTL

..
..

...

El
*.
• •••• E2 ••••••••••
*. *. Y E S "..
....
.*.*
•• OPT REQUESTED.*-------->*ADD 1 TO RGNCTR*
...
.*
..
..
*..*
..
..

·······r······

* ..
'NO

···pz···········

.WRITE GNUREF

·

<---------------

·....
..... ..
•.
.. .. .. ..
.. Gl ..

..

*->

. *.
. "NUMBER OF*. ...
Gl

•"

2:~~E:f:r~EOT?

NO

··.·Hl·······.·

..

ELEMENT

. .·. r. .

••••• G2 ••••••••••
..• GENERATE
....

.

.•------->:

[u,

BALR 2,2

.
:

·····H2··········

.SUBTRACT 1 FROM.
NUMBER OF
•
•
• Q-ROUTINES TO •
•
CALL
•

·................ ·.................
.
l ....
......
•
•

RETURN TO
PHSCTL

...
...

->*•

270

Section 3.

. . . 1'. . .

·•····A4·········.•

..

Gl •
•

Program organization

KILSUB

•

..........
..
·

. .·. r. ·.·
.
..
IN·

T •
)

······C4··········
•
ZERO OUT
•
• DISPLACEMENT IN.
:
XSSNT TABLE :

·r~:~
·.····04·········
...............
•

•

RETURN TO

PH5CTL

•

•

Lioensed !aterial - Property of IBM

Chart GF.

Overall Flow

Phase 51:

••.• A2.........

.••.A
...........

·
. ------_.
.
:....:~~:~~:j.:::::~------------------~:~:]. . . .
•
•

ILFCBLSl

~--------

•
ENTER VIA
• - - - - - PHASE 00

.··..a2··········

~---------.

········r·······

--------

GH01Al

*GETNXT·

.. •

.. * C2

.'. *.

•

• ••C3 •••••••••••

to

'.. NO

' .. VERB STRING ..
toO

*. *0 .* .o*

r

of

•
•

NORMAL EXIT
FROM PHSCTL
IS IN GETNXT

'PROCESS UNLESS'
VERB STRING

PH5C'l'L

.

*-*-*-*-*-*-*-*-*
'GET TXT ELEMENT*----...

•
•

•

WRITE'

•••• C. . . . . . . . . . .

• EXIT TO PHASE •

*----> • COMPILER
ERROR ----->*
00
•
MESSAGE'
•
•
•••••••••••••••
••••••••••••••••

s

.. '

ot

.'. ' .
D2

*•'..

' .. SEGMENTATION ..
'.. VERB
.. '

*.

...r

f •

E2

.o' .'

···D3 •••••••••••
YES
'WRlTE ELEMENT
*-------->
AS PROCEDURE
•
A-TEXT

................
l ....
-).

.....

•• B2 ••

*.

•••••E3 ••••••••••
••

0*
*. '.. NO
•• MOVE OPERANDS
.. •
SYMDMP
*0 *0 ST~i~T 6R.o*" *---A"->:INTO WORK AREA
+.

·. ·····r·. .·

..'

•

J~

F2
.4o
. *.4o •. NO
4o.
-------*4o VERB
IN LIST ... ---->
...
*4o.. ...

'r~
•...•G2..........
*-.-.-._*-.-.-*-.

·OBGTEST

GEN LOAD AND

.-----

:

•

••••• F3 ••••••••••
••
•
SELEC'l'
•

·. ····T····..
•• VERB
APPROPRIATE
ANALYZER
•

•

••

....•G3 ..........
•

• •

.................

•

•

•
•
•

................
.
L ••••
·.....
•

GO TO
APPROPRIATE

• SALR INST'S FOR.
• VERB ANALYZER.
•
ILBODBG4"'·
•

>.

•

• B2 •

Flowcharts

271

Licensed Material -Property of IBM

Chart GG.

Phase 51:

DBGTEST Routine

. .····ALt.··••••••.
...····A3·········
............... .................

····Al·········..
··...............
..

DBGTEST

..

1

B1

.'. *•

..

DBGRTNDO

..

..

DBGRTNOl

····B2·········

*
*. *0.. *-------->*
.* .SWITCH
YES"
..
ON
RETURN
..
*0 *0
.. ••••••••••••••• ..
. " .*
*.. *

.. •

J::-----------------------------------------------

·······Cl··········..
-SET UP ILBODBG4*
..
VIRTUAL
..

······Dl··········
· ·. ·I::::=-~~-~-----~-----~----..

..
..
..

GENERATE:

..

L 15,VCON
..
BALR 14,15
..
DESTROY 14,15-

·. ·....T....·..

·····.··E1··········..
......"1'........
-TURN SWITCH ON ..

····Fl······.··..
··...............
..

272

RETURN

..

section 3.

Program Organization

..

Licensed Material - property of IBM

Chart GH.

Phase 51:

····Al·········..
··::::
..........
j .
·••••.
······81··········.
·. . . .1'. . ..
•

GETNXT

••

•

A2

BUFFER

•

too

......

......

•..83...........

~

WRITE
OPTIMIZATION
A-TEXT

"

YES

·.OPTIMIZATION •• - - - •• A-TElW ••
•

o. o·

0

..r
r

·0 o.

•

-••

PROCEDURE
•• A-TEXT ••
t.

Fl..

.*

•• END OF RECOao ••

•

• 81 •

···E4···········

.·................ ...............
.
l ....
·...."
.. ...
• GENERATE EOJ

•

•

WRITE

:MACRO IF NEEDEO:----->. Q-R.JUTINE

.0

YES

·0 ·0 .• o.
"NO

1
····H1········.
·................
GFom

PH5CTL

·.....

->.

F3
••
ERROR ••

_.-1.0
Gl
...G2...........
•. .0
..
----->
..
o.
.

RETURN TO

r

A-TEXT

BREA~

•

•

• •••• F4 ••••••••••
•
,.

0. MESSAGE .0 Y E S "
,.
.* 0.----------------------> •. DEPINITION ••------->. TEST SEVERITY •

.*

•

....

•

..·····E3··········.

~

•

···04···········
...............
.
l ....

.• o.

• B1 •

o. .·0 ..
*0 ••

•. ·0

->.

•• YES
••
•• INTERMEDIATE
• 0
E-TEXT
to

-.- .0 ·0
s

INTERMED. •• YES

••

03

.*.

_>.:~O~T:g~Ti~;:.~~----->· PR~i~~RE

It!

•.
0.--------------------·0 o. o.
El

l->..-•
" B1 •

••

••

: PLACE ENTRY IN :
SEGTBL
"
"
"

"
"
• ••••••••••••••••

·.....

• B1 •

0

------->.

1

•

·.....
.•••. 811••...•....
• B1 •

..... •
... ".. YES
•
WRITE"
".SEGMENTATION .. +----> SEGMENTATION
... CONTROL ...
• CONTROL BREAK·.BLOCK."
+oo .+
••••••••••••••••

..

•

:

l->••••••

>.

D1

GI01Al

+PUTDEF

______>:-;S;U;-::;E;T·-:
:FO~Ei¥fiI~~~)NXN :
•••••••••••••••••
• ••••••••••••••••
A-TEXT CODE

B2 -.- ...

• D1 •

•• INTERMED

•.....All.••••.•.•.

·NO

"SAVE COUNT FOR •

ELEMENT

__

A3..........

•
•
>:MO'1R~g~~ECT:

1

·······el··········.. ···e2···········
.•
................
·::::···1···
.
··•··
L ••••
·•......_>
·.....
.. -"- ...
•

•••••

:

+oo .+

+->

•

....

•+
+..
__>+ :;~NhErx&~¥O~: .:~~

B1 "

• POINT TO NEXT •
"
•
tLEMENT IN

GETNXT Routine

•

•

•

.t
•
•
.
.•
• ••
•• ••
• ••••••••••••••••

~

1<----------------.••G3•.••.....•.

READ NEXT

• WRITE ERROR
TEXT

RECORD

•

·········1·······

·········I::::::·.

.·0

.•. "

.....
.0.....•
• B1 t

0··. .0 ----->*..
·0.·

.0..·0

82

••

YES

EOF

r

... . *

j

••

.* ••

H3

••

.*PROGRAM•. ... YES
SEGMENTED .*------>

r

r'"

••••

.....
,. J2........... ......J3 .....•.....
··········L···::::·. .••...•..j. . . . ....<-- ·······J4··········..
•

•

POINT TO NEW

• •

BUFPER.

·.....

>"

.RELEASE TABLES

•

.MAKE LAST ENTRY.

•

IN SEGTBL

•

·······r..····

•

• 01 •

.

····K3···.···.·
...............
·
"
• EXIT TO PHASE •

•

00

•

·····K4···.····.·
•
•

·.................
.
"
•

----.

MAKE SEGTBL

STATIC

•
•

Flowcharts

273

Licensed Material - Property of IBM

Chart GI.

Phase 51:

PUTDEF Routine

·····Al·········.
:

. ····r. · ·
PUTDEF

B!
• '"

0'"
"'. VN
...

.'. *.

:

···B2········· . ·

:to.

-WRITE VN DEF
"'. YES
DEFINITION. *--------> AS PROCEDURE
A-TEXT
.*
'"

................

*. * ••• .*
°NO

•

."

-------->*.

0*

B3

.0.

*.

"'.

PROGRAM
SEGMENTED

*.

·.·B4··.··.··.·.

YES

-WRITE VN DEF

*..... . .*. '".. *--------> '" AS OPTIMIZATION
A-TEXT
'"

•

']~---=:J"""
..··C3······.·..
................
°'"

•

RETURN

'"

. •. *.
D4
0*
*.
• ••• 05 •••••••••
*.
NO
.. '"
"'.. NO
'"
'"
"'.PH OEFINITION.*------->*
GNLIST
*-------)*. GNLIST FULL .. *------->*.OPT REQUESTED.*------->*
RETURN
..
*. * . . * .*
''""
''""
*. * 0 . * . '"
*. * . . * .*
'" ••••••••••••••• ..
•••••••••••••••••
*. ...
• .....
*•• *
.*

01

. *. *0

*.

r
..
.. '"

"'.. NO

••••• 02...........

'"

'"

'" ENTER GN INTO ..

.. ..

.*

D3

.*. ....

*0

rs

s

.•...E1..........

'YES

•.••.E3.
..•..••...
.
.:--------------->

..

..
.......·1········· ------------------------------:~::::::::~::::~~--------------->
.....Pl..........
F3 .. .. . . . .F4....
.
.
.
!---.. ..
<--------.. ..
..
.. ------->..····ps········. .
• ENTER PN INTO •

:

GNLIST

.SET CODE FOR GN.
EQUATE STRING

:

. . . .r. . ·
• SET CODE FOR PM.

• EQUATE STRING.

• •

:

::: ...
•••

NO

••

PN EQUATE

PUTEQU

....

.." ••

... G4

:p~5iB~I~o~NT~~S:--•

PN

•• LO

GNCNT:l

••••••

: •••• G1 ••••••••• :

•

'r
•••

EQ. •

.:.

...

.,

•

.................

•

RETURN

••

...

• •• *•••••••••• *

.....

G~T~~g~TE

.,...
··l*N~

: •••• GS ••••••••• :

>: G~fto~O~~~Is~N :

. : • .::: _____
••
•

•

*

....H4............

·
.
................

::::::··1······""··•
....HS............
• HS '"

• ••••• ->

·
.
................
--------------------->1
1
···JIJ··.·.·····.
.·*Js····.······
................
WRITE PH EQUATE

WRITE GN EQUATE

. . . . 1. . ·
• WRITE PN DEF
. GNCNT=O

•

.WRITE GN DEF
GNCNT=O

•

j

····K4······"'.·. ···"'··KS·········..
··................
.
•

RETURN

•

'"

RETURN

• • • • • • • • • • • • It • •

27IJ

Section 3.

Program organization

•

Licensed I!aterial - Property of IBM

Chart GJ.

Phase 51:

· ·. r·. ·

A-text Generator Routine

·····Al·········.
•

•

A-TEXT

GENERATOR

•

. . . .r. .·

······Bl··········.
•

SET UP TYPE

~Rfi, (~CfF

:

•

:

·····el··········.
··.................
.
••

L

c

•

S ...

1<--------------------------------------------------------·····D1··········
·········r·······.

ROP3

.OETERMINE FIRST-

• ADDRESS OPERAND.
•
AND SET UP
•

•

A-TEXT

Bl

.*

.'. ••

•

•.

• •••• E2 ••••••••••

•
*-------->*••

•• VIRTUAL,
•• YES
•• LITERAL, OR •
••
FIG..*
·.CONST.'"

•

GENERATE
OPTIMIZATION
A-TEXT

••
•
•
•

.·l:~------------:::::=]········
·····Pl··········.
··
.
-CHANGE OP CODE •

• IF NOT RR TYPE •

_~"""r"""
······Gl··········.
·········r····...·
•

SET UP PLUS

•

• ELEMENT IF IN •
EXISTENCE
•
•

GDOAGN

Hi

."'.

+..

•* 55 t . "'.YES
0'"
to
._ .- •
•• *.INSTRUCTION
to ._

*---------------j

'NO

...J1J.........
J2···..
.....J3..........
.------>.
....
.
..
...................
... ...
.,.................
................
1.........
.=______.>:····K2·········.
.
... ...............
WRITE

CONSTRUCTED
A-TEXT

•

.* SECOND to •• NO
•
YES ••
"'MOVE
<-------*.
ADDRESS
•• ------->.2 TO
•• C O M P L E T E D . . .

R~yRTO

: •••• J4 ••••••••• :

•

WORK-AREA •
WORK AREA
1
•

•

•

MOVE EACH

•

POINTER 1

•

POINTER 2 TO

._--

:

Flowcharts

215

Licensed Material - Property of IBM

Chart HA.

Phase 6:

Overall Flow

..

····A3·········..

~------------ENTER FROM

..

.·····83··········
·. ·T~:~,
....

IRFCBL6Q

.·. .

------------

.. -------- PHASE 00

*PH6
•

*-*-*-*-*-*-*-*-*....

..-INITIALIZATION"..

[-------------INITIALIZE TABLES
-------- SWITCHES, AREAS FOR
TGT, PGT OPEN FILES

r::~:

-------------

.·...c3··········
*PRFTWO

...

*-*-*-*-*-*-*-*-*
PROCESS
...

...

.. OPTIMIZATION

...

····"'. ·.·03··········
·r==
..

A-TEXT

*SE6000

..

•

*-*-*-*-*-*-*-*-*..

.................
1
·····E3··········
.. PROCESS PROC

...

..

AND LISTING
A-TEXT

..

..

HE01Al

*PDATEX

..

*-*-*-*-*-*-*-._*
.. PROCESS DATA ..

·
..

A-TEXT

.
..

······F3··········
·. ··r==
*GINIT2

...

*-*-*-*-*-*-*-*-*...
INfiT2,:
:

:GE~~¥~jE

.................
..

INfTl'"

• ••• F4 •••••••••

1<---------------------·······G3··········
..
•
•

TERMINATION
ROUTINES

•
•

· · ·. r······

·····H3·········
................
• EXIT TO PHASE •
•
00
•

276

section 3.

Program organization

...

CLOSE
:
•••••••••••••••

1

Licensed Material - Property of IBM

Phase 6:

Chart HB.

··.·.Al········..
.. .......
··.............
..
•

. . ·. r··.
PH6

-IN

•

*----

PH6 Routine

~-----------BRANCHED TO

-------------FROM PHASE 00

ZE ..

•
*SWIT

L'
,AREAS-

Cl

.*
•"

1

.*. *0

HEADER

... ...

... .. • LIST MODE ... '

••• c2 •••••••••••

YES

• PRINT PAGE
..
~~NT ..

*------> .. HE~~g~f"

l---::]'
.
.
· .
to

.*

==

···

...

····

..

•• 01 •••••••

-INITIALIZE TGT ..

=~""T""
··El·······

..

_INITIALIZE PGT ..

•m=....

T. .

···Fl·······.

.. INITIALIZE

·

..

.

·PROCEDURE-NAME ..

. . ·L~u

.. USAGE TABLE ..

····Gl·········..
··...............
_EXIT TO PRFTWO ..

Flowcharts

277

Licensed Material - Property of IBM

Chart HC.

Phase 6:

PRFTiO Routine

······Ai·········..
..

· . ··r. ·.
PRFTWO

..

·····B1··········
..

OPEN SYSUT 2

..

.. (OPTIMIZATION ..
.. A-TEXT FILE)
..
.. PRIME TABLES ..

•

*

~::::~::l·········

....

···Cl···········
·········1..····

READF2
..

READ NEXT
RECORD

01

. *. *
.... END

.*. *.

··•....
....02 ..

F2EOF

.--~

···02···········

*. *. YES
..
OF FILE .. *-------> CLOSE
*.
.*
..
*.
.*
*.• *

El

r

....

SYSUT2

•

• •••• 03..........

• •••• E2 ••••••••••

Pi

L •

........... .....
PR

ESO

PUNCH TEXT

. *. ....

INSRT
• •••• P3 ••••••••••

.*
*.
ESS"
..
*E
SET U P . "
..
NE IF *------->* PUT IN TABLE ..
*. * . . * .* 0*-------->*..*BOL
MODE""
..
Y ALIGN.."
* ... "
••• •••••••••••••
•••••••••••••••••..

L>* •••••

1
*NO

GN EQUATE

••

·0.·
··l·N~
STRING

H1° •••

••••••G2 •••••••••••

GNEQUE
YES

•

PROCEsS GN

•

.·········l···::::·.

o.------>.STRINGo PUT IN •
••
•
GNTBLo
•

......•
.•...............
.•
l ....
->.•

Cl •

PNES~~•• H2 . . . . . . . . . .

0

••

••

•

PROCESS PN

•

• :. P~T~~X~TE .: .:~~ _____ >:~~~~~~. Pt2~E I~N:
••
••
•
GNTBL.
•

·0

.. .. o.
.•....02 .•
·lNO....

->*

278

......
.. cl ..

0.0 .0
G1
o. 0··0 .0
0

PUNCH ESD

.••••.

->*•

.. "
LITERAL .... YES
.... DEFINITION

•

.................

··.E3··········.----->
.
................ ................
.
l ....

TXPNH

...PROCESS VIRTUAL...
. * . "VIRTUAL *. .... YES
.... DEFINITION .. *------>* DEFINITION
*------> ..
*.
.*
.;.
ELEMENT"
*. *.. *.."
..
.................
...

r

• •••• D"..........
HD01Al
•
LIST PGT IF •
.. •• DS •••••••••
• •
.LIST MOPE O P E N . .
•
, T:-------->: SyS~~f.EtRIME :------->:EXIT TO SE6000 :
•
'"
•
• ••••••••••••••

•

•(
-------->:0
•

VIRRTN

*.

ENOPAT

•

Section 3.

......C1 .'"

->.

•

Program organization

•

C1 •

Licensed Material - Property of IBM

SE6000 Routine

Phase 6:

Chart HD .

·.Al·········..
··..................
•

SE6000

•

:'....::': 1
..

*->

·..·.Bl··········
·GET

'"

.. READ ELEMENT
:
FROM SYSUTl

:

*-*-*-*-*-*-*-*-*..

..······r·······
.'"

Cl . *.

*.

EOF
... YES

... END OF FILE •
.. •
."

*.

* .. "

."

'NO

SE6::~~: D1=-~{. . .
• +-

· .op

...

• ••

...

• '"

c2...........

+-CLOSE SY5UT1.

*--------> .. LIST LA.ST LINE...
••••••••••••••••

..

.....c3...........

HE01Al

ENDPTX

..
TERMINATION
.. ROUTINES FOR

..
• ••• eli •••••••••
....
..

-------->*PROCEDURE-TEXT +-------->*EXIT TO PDA'IEX ..
..
PROCESSING
\;..
..

....

• ••••••••••••••••

•••••••••••••••

r-------------=~~--------------------------------~:~---------]
..... D2...........
...03...........
*.

aPPRO

Dli

*0

CODE AND •• YES
ADDRESS
•
•• ELEMENT .'"

.. ..

. . . .
.PROCESS OF AND ..
ADDRESS

*------->*•

...*

.r

:t •

."

READ NEXT"
•• OPERATION ... YES
.--------> • .. ELEMENT
FROM
--------> •. DESCRIPTIVE •• _-ELEMENTS.
SYSUTl
.....

.................

••

................

•.

.....•

r

VtlOEFR
• •••• E2..........

..,.. •• E4 ••••••••••

•:~~~bE~¥tu~i~~: .~:~_____ ):~~~~~~g~I~~~~E:

:pu~~fl~:~~§~~EV:

El

••

!.. **::::~: .. *.. :
l->: ....

.. .... .. ....
'I NC

81 :

v
Fl

•••

••••

••

....
.. ..

••

••

•••

••

.CREATE IN-LINE •
• CONSTANT FROM •
SYSUT4.
•
ELEMENT
•

.................
.
l ......
·.....

*-------->. PREVIOUS

*NO

Hi

MAC PRO

••

.. ··l·N~..

•• YES

MACRO

IUSTRUCTION ••
•• ELEMENT ••

_)t

•

•

Bl •

*•••••••

• •••• H2 ••
.DETERMINE TYPE •
•
AND GO TO
•
ROUTINE TO
•
•
PROCESS
•

.·········l..·::::·.
....

-------->.

->.
:

.•

Jl

•••

•.

.. o. ..
*0

l

·No

• •••• J2 ••••••••••

•

.•

T

•

...•.•••••••••.•••
l ....
·.....
..

·

•

•

->.

•

• Bl •

:.***Kl***.u**.:
•
•
..

•

Bl :

SE6010

*.

• .CARD NUMBER"'. YES
• CORRE
••
ELEMENT
•• -------->.SYSUT4
LIST,

*.

01 :

• •••• F2 ••••••••••

'* •

••

..:

l->; ....

PHD PRO

••
••
• .PN BCD NAME •• YES
.. •
ELEHENT
•

••

:.~~~~~¥~~~~:

SPECIAL.
INTERNAL
ELEtJIENT.

GIDENL

:~~~~~i.i:~~~~~*:

• CONSTANT FROM ..
SPECH'IED
'"
ELEl'iENT

.-------->*

Flowcharts

279

Licensed Material - Property of IBM

Chart HE.

Phase 6:

PDATEX Routine

·····Ai···.···. ..
:

PDATEX

:

.2;~i:;::r"·"

·····Bl··········
*GTF4B

..

-->*..*-*-*-*-*-*-*-*-*
GET DATA OR ..
ERROR ELEMENT ..

·........1'.......
Cl

."
*.

.'. *.

"..'"
*... "

.*
.. "

D1

r

. *. *.

.*

NO.

*..*

*8
.AS

. .
*-------->*
...

..

.

.."

• •••• 02 ••••••••••
.. IDENTIFY AND ....
*-------->*.... PROCESS
DATA ..
A-TEXT
..
YES

..

..

·········l···::::·

··l·N~

......

->*..

: •••• E1 ••••••••• :

al

....

.................

280

PROCESSING

. . . . 1'. .

.. PUNCH TEXT
AND RLD'S FROM
....
RLDTBL
..

+------->

······04··········.
.SET UP REGISTER.

·

.
·r:::~:
·•................•
.ASSIGNMENTS FOR.
• MAIN PROGRAM •

...

• EXIT TO GINIT2 •

:

Section 3.

···Cq···········

06PN10

····E4··.····.·

• PUT E-TEXT IN ..
---.TABLE FOR ERROR.
:

IN ..
ER*

0 * "•••••••••••••••••..
•• !*

06000

*. "'..

.... DATA A-TEXT ..

....

..··.c ..........

068R10

*.

.. "
.... YES
*R
.... ENO OF FILE o*-------->*L

Program organization

Licensed Material - Property of IBM

Chart HF.

Phase 6:

GINIT2 Routine

····Al·········.•
·•.......
1".....
..

GINIT2

•

.•····Bl··········•
.. GENERATE PGT

•

••

••

• GENERATE TGT

..

·INITIALIZATION ..

~:""'T""'"
···.··.el··········..
,................
-INITIALIZATION •

GINI~3······D1··········
1 .
·
.
n.::......!"'....·
-GENERATE CODING'"
.. TO INITIALIZE ..
..
VN CELLS
..

·•..··El.·.•·.··.·•
-GENERATE

..••

••

.~""·r"""
·····Fl··········

•-GENERATE 101'1'1 ••

·
.
~"""T""'"
..

CODiNG

..

·.·Gl···········
PUNCH AND

..

.. Ll s-r IUIT1

CfR§~Gcd&~CH.

..

·········r·····
ot

Hi

.* ANY
to
to

t

o

.+0

t.

JA01A2
•••• S2 •••••••••

to

ERROR

t • • _ .+

to Y E S "
of

•
.+------>*EXI'r TO ERRLOD •
..
'"
•••••••••••••••

Lm

····Jl·········
...............

•• EXIT TO CLOSE ••
•
•

Flowcharts

281

Licensed Haterial - Property of IBM

Chart IA.

Phase 62:

Overall Flow

·....A3...........
. ·. ·T:::~,
'"

'"

IRFCBL62

.····e3·1<········

*PH6

...

*-*-*-*-*-*-*-*-*
*INIT
SWITCHES A •
:~SRL~T kN~~G~:

.......'1"==
·····C3··········
*-*-*-*-*-*-*-*-'"
*PRFTWO

..

...

...

. . . ·r~=:
PROCESS

'" OPTIMI7.ATION
..
A-TEXT

'"
'"

.··
. ·03*·········
*-*-*-*-*-*-*-*-*
*SE6000

...

...
'"

..
..

..

PROCESS
PROCEDURE

A-TEXT
••••••••••••••
.,*...

"""··. .J. . . ....
·........1"'......
'"
..

TERMINATION
ROUTINES

...
...

·· . . ·F3·········
·...............
.
... EXIT· TO PHASE ...
iii<
00
...

282

section 3.

Program Organization

[------,-----

'"

ENTER VIA

• ------- PHASE 00

",.

..

-..:.-------------

Licensed Material - Property of IBM

Chart lB.

Phase 62:

PH6 Routine

....A3......... *---

. . . 1'. . ..

·
••

PH6

•

···e3·······.
· .
·····r····

.. INITIALIZE

~INiTiALIzATioNROUTINE
----------

..

-AND HANDLE MAP ..
• SUPPRESSION ..

C3

.0.

*.

C4..........

•••••
*. *. YES
..
..
-SORT SEGTSL BY ..
..
.. +------->*PRIORITY NUMBER*-------->
*. + . . t ...
....
.
...
..
• t

.. *IS PROGRAM
....
SEGMENTED

••• cS..•.•..••••
WRITE PHASE
CARD

..

··r----:==:=--:=J····

···03·······.

·· . ·r. · .

.. INITIALIZE

..

..

..

.. COUNTERS AND

SWITCHES

E3

. .. .. *

*.

..

.0. *.

••• E4 •••••••••••
*. *. YES
.PRINT HEADER ..
• *-------> AND MEMORY MAP
.."
..
..
..+

LIST MODE

*. +.

=~·····Fl.··I~-·--=r·"
...·....
• COMPUTE 51 ZE OF.
•
roT AND
..
.. DISPLACEMENTS ..
.. OF ITS FIELDS ..

_=·. ·r··. ·
o

•

·····G3··········
o

•

-COMPUTE LENGTHS-

.. OF FIELDS IN
PGT.
..

o

..
..

•

·······r::~:

·•····H3.···.·.··
................•
-EXIT TO PRFTWO ..

Flowcharts

283

Licensed !aterial - property of IBM

chart IC.

Phase 62:

.·. .

PRFTWO Routine

•••• •
·•.....
.'.
• 1\4 •

··.···AI·········..
·r~
..

PRFTWO

..

...

B4

*.'*..

•

. *. *
*. *.

:*::*:
..

....

*.. +

..*

*-------------------_________________ _

I·NO

L>: .:~.:

I
.' .

Oil

*.

·.....

*.

•••••05 ••••••••••

•

•

."'···"'····L··"'::::·-·.
...
....
. ·......
"'...
.
l
......
......
...'"

••

.-----INSERT---- •
...- _____ >. MAKE ENTRY IN •
•
BLVNTBL
'"

>.

•

Ell

*.

••

.."' •• ES •••••• "' •••

.:;N/~ I~N;:.!~~----->:-MAi(i?=i-IN-:
••

...r

••

'"
VNPNTBL
•
'."'
" •••••••••••••••

*0 ••

'NO

PUNCH

*.

**..•.**

•

···F3···········
WRITE

• VIRTUALS, FSD' ~

L_> ••••• '"

_>'" •••••

• El'"

"'El.

•

'"
..
•••••••••••••••••

l->*......

I

ONO

......
.. E1 ..

.'. *0
Gl

•*

*.

••••• G2 ••••••••••

..*-----INSERT----*..
-------->*.. MARE
ENTRY IN·"
VNPTY TABLE ..
..•••••••••••••••••..

."
... YES
... VN REFERENCE ••

**....**

• ..

I
.

'NO

H1

.

'" El •

F!
• .. VIRTUAL ... YES
... .. ~EFINITION ... ' .-::::...-.-->,!

...

·.....

••••• es ••••••••••

*oO

··I"'N~

YES

.. •

..

.

ELEMENT

••

*->

."

••..•..T:;::::;

..GN PERFORM •• YES

••

.*.
. *E1 *. ...
.*
*.
---*. ...
END OF BLOCK ...
.*
*0
.*
* •. *

END

• ••••BS ••••••••••

·NO

*. *.

.*
.+

+.

...

• YES

EOP

•

• El •

•+-----INSERT----+•
.*.*PNUDEF *. *.... *------>*
YES
ENTRY IN •
*..
.*
• MAKEPNATBL
**.
••••••••••••••••••••
....**

.................
·
.•.1
.. •

..

.

·.....

>.

GNUREF

C4

A-

*.

·········L···::::·

··I·N~

·OPT

D1

..

*. *. YES
•*-----!NSERT----*•
.*--->*• MAXEGNATBL
ENTRY IN •
.+
•
*..*
•
•

....• *

"_,····r·
.
···Cl···········
-->

•••••AS ••••••••••
•+-----!NSERT----+•
YES
*----->*
INSERT IN
•
*.
*..+ ...
•• CONDIS TABLE ••
LITERAL

··I·N~

··..··Bi·..•.••....

• PRIME TABLES

--~

A4
*.
. *.*DISPLAY*. +.

l->+ ......

......
.. E1 ..

'. *.

*.
*.
.*
**.••.**

••••• 82 ••••••••••

*-----INSERT----*

.. :.. DE~I&~N .. :.:~~_____>:

I£~~~trI~uE

:

..
CONTBL
..
..•••••••••••••••••..

l_>* ......

l_>* ......

*A4*

*E1-

......

·NO

.....

..

• WRITE TEXT

CARDS FOR TGT
AND PGT
•

~·T·····

·······H3··········..
· ·. . r····.
-RELEASE CONTBL •
• AND CONDIS
•

···J3···········"--->"'. .'" .'. .. ------------j
·
'"
... ' '. .. ..
................
' ' ..
J'II

• WRITE MEMORY

•

••

• *IS PROGRAM •• NO

SEGMENTED

MAP O.N SYSPRINT

"

,"

••

.

.
.
..····RS·········
·..................
.. .
...............
, ID01A1

• ------->.EXIT TO SE6 0 00 •

284

Section 3.

Program organization

Licensed Haterial - Property of IBM

Phase 62:

Chart ID (Part 1 of 2).

SE6000 Routine

• •••• Al ••••••••••

·................
~,i:!::...Bi...........
·->l<-------~-;;;;------------------.....B........•.
•

5E6000

•

READ

r

-->

..

-MAKE

•
PROCEDURE
• EOF
A-TEXT ELEMENT
FROM SYSUTl ..

:·~~::·······l·······
.*

cl

.+.

••

..

.
~::::~
.
--~

.....

*0

+0

ELEMENT
+0

0+

.+

• ••• e3 ........ .

.'

c2

••

.+.

+------->*

r

BRANCH

••

• +------->+. INSTRUCTION •
+0
.+

+...
••• -

'NO

.·····C,,··········.
.................

...

.+2-BYTE +.

+ •• +

...............

ENTS"
• EXIT TO PHASE ..
EG
00
•
ENTS • •
•

...........

QPPRO

•• OPERATION •• YES

••

REG.

ASS

-------->*..

YES

..

+-------->*•

.

PR

P

•
•
ING
OAD •
ION . . .

......

------->+

.' .

'r · · ·.

+-------->.

····l······

04 . . . . . . . . . :
ADD 4 TO
•
ACCUMCTR
+--COUNTER
•
•

[-----------------------~__________________ ~~~~ __ _
N OR GN

----.

~.

i........ ......
:
....
TO.

l->.

.->

•
..

.................

..........

•I

•

:....

•• D2
•• +0
:~::~~g:~i:::::·:
••
LOAD
•• YES
•
SAVE.
•
... INSTRUCTION • +-------->+ INSTRUCTION
••
••
•
UNTIL NEXT"
'"
...
••
"'ELEMENT IS R E A D . .

•

ADD "TO
ACCUMCTR
COUNTER -

------...

w®w
BRANCH

·.....
..

• B1 •

.'. .0
.··0
Fi

••
•

0

•• YES
••

•. •. ·0 .• o· o·
CO ELEMENT

r
....
Gi

•• 0

'.

'N~

.

F2 ••••••••••

•.••..•.•..•.••.••.•.

L>(:~::

.0
0...
< .0
'0.------__
>..
.0 ·0 o. .•
.• .•

••

G2

• '"
GN/PN
•• YES
•• DEFINITION

.. •.

.•••••

•
-------->..SETCOAPPROPRIATE
SWITCH
•

•• 0

•• ACCUMCTR
4095

•

(::)--1
o.
•
.0
•. .0... .• -------->.•
G

tr

•
-

••••• G" ••••••••••

YES
•• IN
... - _______ >.~ OR

...

YES

•

ZERO CTR IN •
PNFWDBTB OR •
-GNFWDBTB TABLE •

'
.
r:~--------------:::::::l·········
•••..83..........
:.••.H" ••••••••.:

T~

H2 .'. ...

•• ·~NTRY IN·· •• NO
:~~~~A~~C~Mg¥ME:
.----DEFLDli----PNFWDBTB OR ... -------->.PN/GNFWDBTP AOO.-------->. PROC~SS LABEL •
•• GNFWOBTB ••
I\.
*1 TO PROCBL C T R . .
•

.~

·0 ·0 .• .*

•
• •••••..••.•.•••...•
•••••••••••.•.•••
l
->: .::.:

• YES

1

o·

J2 .'. ••

..

....

•• ACCUMCTR
•
NO
•• WITHOUT AODED •• ----·.LOAD<
••
•• 4095 ••

.. ..

0

·YES

l_> ••••••

.. ..
K1

••

••• 0

...

K2

GN/PN
... YES
REFERENCE ••••

.0..
•• •*

.....t
...
·NO

·02 •
• Ai·

· . ..••••
.-------->:

0·. .0 ....
....
•

••

••

-------> •.•.

G4 •

ANY co
... YES
SWITCH ON •• '"

.0..
•• ••

••••

..

·NO

l->.

•

• C2 •
••••

.

K3 ••••••••••

.PROCESS FOR co •
CONDITION
:

.•••••••••••••••••
.
l
->.

••••

.
..

B1 •
..• • •••

Flowcharts

285

Licensed lIaterial - Property of IBM

Chart ID (Part 2 o! 2).

Phase 62:

.....

SE6000 Routine

.

-02 •

• AI-

••

Al .'.t

+.
.*
....
.+ ADDRESS to

••

...

REFERENCE
to

to

••

0*

I

....

YES

A2..........

• ••••
•+-----R6q.QO-----+--__
• ~---------I
NEN'l'LY
A

.. +------->*PROCESS ADDRESS•

REFERENCE

..

...

ot.

*0

82
....

... VN REFERENCE
to

to

ON

-------------.. -

·.....
... B1 •

....

to

DRLP'l'BL
REGISTER

•

L>:~t··.

-No

B1

LD

...

•••••••••••••••••

*0 YES

.*
...

.+

.t. to

.."

••••• B3 ••••••••••

to

•

...
0*------->*.o*c004 ONSWITCH-.. t 'lES
__ ... _____>.
to

-NO

*..,,"
to ."

0*

..

-NO

-01 ..
.B~ •
•

..

L>:~t..

• •
....

D1

.'.

••••• 02 ••••••••••

to
to

.. " EBCDIC PN .... YES
...

to

GENERATOR
t

o

to

*---!

..••••••••••••••••••••••
..

.. B1 ..

.*

COOtl ...
ENTER ..

BL IN
BL"

.*
0+

..

•

0* .. *----->*•

1
tNO

ADD 6 TO
ACCUMCTR

..

*--!
•

..

..••••••••••••••••••••••
•

..

.01 ..

:~.

.t.

'+0

El
...
E2
+0
••••• E3 ••••••••••
• _GLOBAL ...
• +:rERMAN-+.
..
..
• " TBL VARI ..... YES
.+
ENTLY
... NO
..
ADD 4 TO
..
... ABLY-LOCATED • +------->+. ADDRESSABLE • +------->+
ACCUMCTR
... AREA REF ...
...
."
..
..
+0.+
+0.+
..
..
+0 .+
+0 .+
••••••••••••••••••••••
• NO
-YES
*01 ..

*---!

1

0'. +0
F!

•••• ..
l ->+01

·.....
.. B1 ..

••••• F2 . . . . . . . . . .
•+'
+0
..
..
."
... YES
+-----MACRO-----+
... MACRO ELEMENT. +------>+ PROCESS MACRO
+0
."
..
ELEMENTS
..
+0
•• +
..
..

+---!

+ •• "

-NO

......

L>:"bi+..
.. B1 ..

286

Section 3.

••••••••••••••••••••••

+01 ..

.. .B~
•
..

Program organization

.... Bl·
..
..

Licensed Material - Property of IBM

Chart IE.

Phase 63:

Overall Flow

······A2·········..
..

~NTERViA----

. ····r. . ·
IKFCBL63

• - - - - PHASE 00

---------

...··B2·······...
• INITIALIZE

..

• TABLE BUFFERS •

·····1······

··.c2········. ··

GET

. .................
...····.e3··········
.
.
................

EOF

· 1'......
.........

.GET PROCEDURE • EOF
A TEXT ELEMENT

"RELEASE TABLES r
ETC..

----->*

-->

.....
D2
...
.*
too
.. '"
... YES
".MAcao ELEMENT ..
.. ..
.. ..

r
r
. ..
· r.
too

-RETURN TO PHASE-

MACRO
• •••• 03 ••••••••••
..
•
•
BRANCH TO
•
APPROPRIATE
_MACRO ANALYZER •

*-

*------>*

too.*

*---->* ····c~·········
00
•

•

..

...

•

• ••••••••••••••••

.'.

E2
*oo
*. ...
... ooOPERATION

YES
..
•• CODE ELEMENT .. *------)*OP

*..

.. •

too

.*

*... * .. "

F2

.*

.*oo too

to

".. YES

-.C007 ELEMENT
••
••

..•

••••••••••••••••••

cO

••••• F3 ••••••••••
•
•
..
BRANCH TO
..

.................

.*------>*•

••••
~

Ii'

APPROPRIATE .-->
C007 ANALYZER •
•

····*G2··········

·
.
········1:::=::_-------------------·.··.·H2····•.··...
·..................
•
•
•

BRANCH TO
APPROPRIATE
ANALYZER

•
•
•

NOTE:
VARIOUS ANALYZERS
ADD TO ACHCTR AND LOCCTR
AND PRODUCE PROCEDURE

A1-TEXT

• OTHER PROCEDURE.
A-TEXT
•
•
ANALYZERS
•

-4o

Flowcharts

287

Licensed Baterial - property of IBM

Chart IF.

Phase 63:

BRANCH Routine

.... A2.........

[---PROM--.--

·. ·. r···. --

..

..
..

if ____

TABLE

BRANCH"
"

.*

B2

.•.

ESS BRANCR
CTIONS

tI.

*. * .. * ."

r

_____.___>
..

s

.•.

0*

"'.

C2
"' •
• "'BRANCH *.
TO
*. YES
*I
DIFFERENT .*------>*

*.

PRoe.*

*PR

"'.BLOCK."

..

...........
r~-----------=:::=j
TYPE '"

········r······.•
N TO •

E

•

..........
00 •

•
·········r········.
ON

•

..........

·•

MeTR'"
FOR ..

•

TION

'"

·······r······

•···.·G2··········
••
'T

·..................
·cc
.. PN

288

Section 3.

IE01C2

•••• as •••••••••
!_.---7"--'.! RETURN TO G~T :
..•••••••••••••••••. . . .• ••••••••••••••••..
•••••••••••••••

to

"
PN/GN
.. •• ~BER
SAVED .:.~N~~O~____ •• _>;Tl5;~~~~~;~ag(~H;'

..

--------------------------... ----------

Program Organization

•

Licensed Material - Property of IBM

Chart IG.

Phase 63:

GNDEP Routine

.·. .r. .

..... A2.. ••• .....

·
..

..

.

GNDEF

*-..

~NTER-viA--BRANCH TABLE
------------

...·.a2··········

..

ENTER

..

·. . . ·T. . ..
• OISPLACEMENT IN •
• PROCEDURE BLOCK.. INTO GNLBDTBL' ..

······e2··········.
.. CALL PHASE 00 ..
.. TO WRITE GN ..
•
.. DEFINITION

·........1'........
.'.
03 ••••••••••
."D2
.. .
*---- RLDSORT---..
•:·F~~ ~H~SG~N·:.:~~___ >:~rR~B~NTJ~ :-__
to

to
t

0"

...

ot

to

o

to

E2

•••••

.'.

t.

t.

ADDRESS
CONSTANT
to
t ...

."

F2"

..
THIS GN
..•••••••••••••••••
....

.* ."

r
.+

... YES
•

* 0*

0*

..

*------->*..

..
..
•••••••••••••••••

F------------======~------I .....F3.......... ......4..........
to to

to

..

•"
IS C2
to YES
...
SWITCH ON
•
to

to

. ..
~

.•
••

G

*.

TURN OFF C2
SWITCH

•••• FS •••••••••

..

..

....

.. SAVE CURRENT
BLOCK NUMBER

.................

..*------>*
A..
. . .

.................

r

.+. +.

*-------->*
It...

..
•

EXIT TO GET
• ••••••••••••••

..
..
..

*.

... .. .. ... .* _--!
...

... BLOCK

..

.* *------->*....
...

......

:.::.L-1IE01C2

....

.
:
1 ....
URE •• yl!;s
LAST ...

·NO

•

•

F5 :

.. ..
.... ... .
82

. '. ...

.. • LAST BRANCH. ~ NO
... CONDITIONAL ... - - - - - - - - - - - - - - - - - - - - - -...- -

*.

. .•

r.
······J2··········
s

·..................•

• ZERO PROCEDURE •
BLOCK
.-------------------------------------------

••

Flowcharts

289

Licensed Material - Property of IBM

Chart IH.

Phase 63:

•
:

PNDEF Routine

. . r·. .

····A2·.·······
PNDEF

...
:

[-----------ENTER VIA

- - - - - ~~~:~~~~~ __ _

··. . . r. . ..
·····B2··········
...

ENTER

•

"'DISPLACEMENT IN •
• PROCEDURE BLOCK.
•

FROM PNLBDTBL •

······c2··········.
·........ ........
• CALL PHASE 00 ...
•
TO WRITE PN ...
..
... DEFINITION

,..

1

.' .*.
02
*.
.*
.. *PN HAS BEEN... NO
*. *.REFERRED TO0* ... -~
*. *.... '" .*
•••• •
·YES
•

1 :

K4 :

...

E2 .'. . . *.

.•.... E3..........•

.....E4..........

.....E5..........

*----RLDSORT----*·
•
...
NEW
... Y E S .
•
*MAKE RLD ENTRY •
•
REPLACE OLD ...
.....
PROCEDURE
.. :e<------->*ZERO OUT ACMCTR*------->* FOR PROCEDURE *-------->*FRDCEDURE BLOCK.
"'..
BLOCK
...
•
. . .
BLOCK.
•
WITH NEW
•

*.

..'"

..

. . .

*.
.*. *ADDRESS *. *.

. . 0* . . . ,,'"
CONSTANT

• •••• P3 ••••••••••
•
•
RLD ..

YES
.----RLOSORT---- •
• *------->* MAKE PN
.ENTRY IN RLDTBL.

•

•

··l:~------------::::::]········
.'.

."
0··0
..** ••• G3 ••••••••••.
¥RI~N~N ·:.:~ ____ >:--MA~~D~~R~i:D--:
G2

. : . F~~
.. 0

·0

.•

•

•

•

.ENTR Y IN RLDTBL.

•

:....
.::.L~
H2 ."
••••• H3..........* .••••. H4 ••••••••••.
o.
-------->.
.------->.
•"." .. .. o· o·
••...................
••
•.................••
.•

··1·:~------------::::::]···
..···
.'.
*. *0

YES

••

• • c2 SWITCH ON ••

o. o.

*.

.. 0

J2

r

.'. ••

TURN OFF c2
SWITCH

." YES

r

·....
.
....
.....1<3..........
.... ................
.• .•••••••••••••••.
• K4 •

K2 .'. .. *.
•
.·0 .. ... o. ." .------>*

".LAST BRANCH." NO
• " CONDITIONAL
0

"

·YES

......

l_>••••••
•

Section 3.

.ZERO PROCEDURE •
BLOCK
•

t"

SAME

PROCEDURE
BLOCK ••

*"

290

•

.. o· .. 0.------------------------------->

of

...

..'.·l:~---------------:=:::::=:=:=:------:=:::::=:::=~---___::::::::i········

F2

.. "

>1<...

.. SAVE CURRENT
BLOCK NUMBER

84 •

Program organization

•

•

*->

IEOIC2
• ••• K4 •••••••••

• •

.--->.

EXIT TO GET

•
..

Licensed Material - Property of IBM

Chart II.

Phase 63:

ADREF Routine

....A2......... *----

·.MM·r···...
•

•

ADUF

B2

....

•

~-NTERViA-BRANCH TABLE

--------

...

B3

.*.

...

B4

.

t.

...

• •••• BS ••••••••••

•*ADDRESS too *. NO
.*
*. *0 YES
...
*.
• CALL
00 •
...
... PERMANENT ... Y E S .
•
*. *. LOADED
ALREADY
.. *------>*. BL OR BLL .. *--->* . REG ASSIGNED .. *-----'--->* EL
DO •
.*
*.
...
too
.*
•
••
*. *•• *...
**...
.+
*
.
.
*
•
*
*•• *
•••••••••••••••••
...

~

~

L

~

1 ~--2··········
..........
·::::::··1·········. .········1·········.
1

----

>* •••••

- - SBL OR

00 •

TO

•

ON

....

• D2 •

SBS

•

•

•

AD •

•

R1S*<--------

NGE •

•

• 02 •

••••• *->

•

····02·········+<-l*..
...............
IEOlc2

..
·······r······
••••• 03 ••••••••••

• • CALL PHASE 00 •

•• RETURN TO GET • . •

ELEMENT
TO
WRITE

••

···.·E3····.·····
·..................
-ADD 4 TO ACMCTR.
-AND LOCCTR FOR •
LOAD
•
INSTRUCTION •

---*•

•
•

•...F2.........

•

ADINCR

······r··"·

[EnTiRVii--. - - - BRANCR TABLE
•
---------

•

·.·•.•G2··········.
·········r·······.
• ADD INCREMENT •
•
TO VALUE IN •
•
DISPSAVE
•

.'. •• +.

·r · · . ·r·. · ·
·."."M.......... ......."r. . ..
H2

........
••

.*DISPSAVE

••

Q095

..

• •••• H3 ••••••••••

> •• NO
••

•....
J2............
•

•

----->.•

•

11095

.
•

.*....J3..........•

• ADD " TO A C M C T R . .

-FOR EACH UNIT

.•

ADD BnE OF
ZEROS

>*---->*
• •

•

ZERO DISPSAVE •
•

•.....X3..........•.------>.····K4.·.·•.•••*
IE01C2

·.................. ...............
• CALL PHASE 00 • •
•
•
TO WRITE
RETURN TO GET
•
ELEMENT

*.

•

'

Flowcharts

291

Licensed Material - Property of IBM

Chart IJ.

Phase 63:

·.·. r. . ·

C1REF Routine

....Al.........*--- [iNTEi-vIA---

·
'"

•

.

CIREF

'"

BRANCH TABLE

----------

.'.

B1
"'.
•• PRDe
'" •
• '" BLOCK OF "'. NO
*0 REF SAME AS
"'. CURRENT • '"

'"

.*-------->*

*0.*

•

NEW

'"

• •••• B3 ••••••••••
LOAD '"
'"
'"
ON FOR'"
"'ADD 4 TO ACMCTR*
EDURE
AND LOCCTR
'"
K . .
'"

*------->*
'"

'"

··i~~-·-~=:::::::::::~-=:::J·

······el·.········.
·..................
1
·····01··········
'"

GENERATE LA

...

•

REFERENCE

...

..··
•

-INSTRUCTION FORt

.GENERATE C8 OR ...
ELEMENT FOR ..
..
PROCEDURE
...

*ee

· j"'......
........
...

Ai-TEXT

..

·······E1*·········..
.................

.....

• ADD 4 TO ACMCTR*
... AND LOCCTR
...

I
...............

...

"",0'
····Fl·
.
.
·····
..•
*

*

*

·. . . 1'. . ..
•
•

GNREF

••

Hl

•••

••

0

·0 ·oo .• .•

r

@NTER-PROM-GET--

••

..

~.

F3 .*.

•• t .

,J.

...

..~.

IJ01Al
• •••• H2 ••••••••••
·C1REP
•
PROCESS FOR •
.PROCEDURE BLOCK.

•

• ••••••••••••••••

GET VIA BRANCH
TABLE

------------

•••••

.
•

------>.

.~

...

YES

F"..........

*

Program organization

.•...FS•.•.......

..

• • CALL
•
TO

.------->.

.ADD 2 TO ACMCTRt
AND LOCCTR

E

: •••••••••••••••: .

.

E 00 •

E
•
ON.
•

.•. .~..........• .····G5·········
. ·. r::~::

.

.

.

.• *------>.•.................-------->.
•
..............
•

SAVE PN I N . .
•
SAVETBL
RETURN TO GET •
1\.
•

•

•
PROCESS FOR . - - - - - - - - - - - - - - - - - - - - - - - .PROCEDURE BLOCK •

•

Section 3.

[ENTER-nOM---

IJ01Al

·C1REF

• RETURN TO GET •

292

..
~

.. ..
1 •
._._._t_._._._._
·····H3··········
...................
·0

• SAVE IN SAVETBL.

•

••••

·YES

•

•

CONSTANT

·······Jl··········..
·E~-·-··.·Kl········...
··...............
*

*0

ADDRESS

...

...

~...
... COOl
SWITCH•• NO
••
ON
..

----------------

------->..-.-.-._._.-.-.-*

••

• • COOl SWITCH •• YES
• ~
ON
••
•

.~

.---- VIA BRANCH TABLE
•

. . . 1'. . .
PNREF

~.

... RETURN TO GET ...

....Gl.........

....E3......... *---

Licensed Material - Property of IBM

Phase 64:

Chart lit •

·. . . 1'. . ..
•

•

..... Al-•••••• ••• •
ILFCBL64

ill-------ENTER FROM

----------

• -------- PHASE 00

.··Bl·······.

• INITIALIZE
•

Overall Flow

•

,.

OPTIONS AND •
SWITCHES
•

•••••••••••• •

1
......_.....el·······.··
-._._.-.-.-.
·..................
IL01Al

·PDATEX

•

• PROCESS DATA
•
A-TEXT

•
•

1
.....Dl···.···.··
IM01Al
• _I_t_I_' ___ ' ___ •'
*SE600Q
•
•

PROCESS
PROCEDURE

•
•

. . . .1':::::

•

Al':"TEXT

•

•tGINIT2
••• ·El· •• •••• •• ••

• _t_t_t_*_t_t_t_.
'GENERATE INIT2,'

:

INli~lTtND

:

~:""'T"""
···.·.·Fl··········..
·
.

. . .r.·.·
•
•

TERMINATION
ROUTINES

•
•

·...····Gl·········
............
• EXIT TO PHASE •
•
00
•
~

Flowcharts

293

Licensed Material - Property of IBM

Phase 64:

Chart IL.

PD ATEX Rou tin e

······A1·········..
~;;~i:;~r
·····B1··········
·········r·······.
.
PDATEX

. ..
..

*GTF4B

..

•

-->*..*-*-*-*-*-*-*-*-*
GET DATA OR ..
ERROR ELEMENT ..

."

Cl . *. *.

PDT03Q

• ••••

...

•"

*R

•• END OF FILE • *-------->*L
.. •
• ..
..

*. * .• " 0*

D1

r

*E

. *. ...

.•..•C3••.•...•.•

D6SR10

.SORT R
.ASCEND
NEEDED.
OF
RLDTBL'"
•
AD
DIRECT..'"

TELS NO*

*------->*

•••••••••••••••••

• •••• D2 ••••••••••

IDENTIFY AND

PROCESS DATA
A-TEXT

,.

..

..
..

..

·········l···::::·

'Ol*N6

......

->*..

······E1··········.
·..................

..

B1 ..

294

PROCESSING

···C4····*······

n6PN10

.. WRITE TEXT

*--------> .. AND

..
'"

RLD'S FROM
RLDTBL
..

·········r·····

······n4·····*····.
·
.
·. ····T:::~:
·
.
.SET UP REGISTER •
.ASSIGNMENTS FOR.
• MAIN PROGRAM •

.EXIT TO GINIT2 •

•

section 3.

ER*

• •••• E4 ••••••••• :+

.. PUT E-TEXT IN ..
---.TABLE FOR ERROR.

..

IN ..

• ••••••••••••••••

D6000

...
..
... YES
..
... DATA A-TEXT • *------->*
*.
.*
..
*..*
..
•"

.*

c2..........

.. CLOSE SYSUTLi. ..

... YES

Program organization

Licensed Material - Property of IBM

Chart IH.

Phase 64:

SE6000 Routine

····A1·········*
*...............
:....
*::*: j
·····Bl··········
:

8E6000

..

*->

:

"+------GET------++

................."
.. READ ELEMENT
..
FROM SYSUT2

"

cl

.* . *

*.

..
..

1

.*. ....

EOF

.....

• •••• C2..........

ENDPTX

• ••••

YES
: CLOSE SYSUT2. :
:
END OF l"ILE o*-------)*LIST LAST LINE.*-------->.

*. ....

* ... *

.."

:fI............
:*::":

.>1<

..

:*::*: ro
...... *->V

SE6025

......

.. " 01

'"

" . .

...... *--1
OPPRO
V

.... *.

.... ELEMENT ••
>I<

ILOIAl

....... C4"' . . . . . . . . ..

PROCEDURE
*------)*EXIT TO PDATEX ..
Al-'fEXT"
>to
..

PROCESSING"

••

.* •••• *** ••• *.~**

GET

: •••• 02 •••••••• ":
..
READ NEXT
-------->*... ELEHENTS'"*-------> "SYSUT2
ELEHENT FROM
••
........
,..*

.. • OP CODE AND*.. YES
....
ADDRESS
...

*. •. . * .
+NO

..

..

••••

C3..........:

R5~~~~~~T~g~

.PROCESS OP CODE.
AND ADDRESS
...

.. .
Dli

...

•*.

.

"'.

_--t·

.'" OPERATIon •• YES
DESCRIPTIVE ••

-------->*.

...

*¢***~

* ............ .

>I< • •

*.

*. t • • *.'"

l

.*

*>i<* •

"NO

:

D2 :

"."'** "

*. .

.... ··'"..
• ···EII*····
FORMAT LIS'!

:PU~~~E~~R~~S~fmv:

*

INSTRUC'l'ION,

'"

: ..~;~~!.~~~~+ .. :

l->* .. *'" •
:

v

•••
PUDPRO
Fl..
• '"
••
.fICREATE IN-LINE: ...
• • PN BCD NAME., YES
• CONSTANT FROM
••
ELEMENT
•• ------->"'PREVIOUS SYSUT4*
• •
• '"
•
ELEMENT
•

..

D1 :

*.*.

.****F2*.**.**"'.*
*

..**"'••••••

*. .• .'"

...

l->*** •••••
..*.,.

+NO

·.
• ai •

•• **

.*.

.*

. •I l l . . *.

MACRO
.... YES
•• INSTRUCTION ••
"'. ELEMENT ...

MACPRO
"' •••• H2.*.* ••
.DETERMINE TYPE
•
AND GO TO
ROUTINE TO
•
PROCESS

***...

-------->.

*...
*·l·N~

•

...
•
..

..

"'*·****·*l***::::*
*
•• ** "
*'" ••
->.

•

• B1 •

Jl

•••

SE6010

"',

•" ' . .

•

"'J2* ••••••• "' •
GET

•• CARD NUMBER*. YES
'" CORRESPONDING
••
ELEMENT
• "'-------->"'SYSUT4 ELEMENT.
LIST, SAVE IF
.. ,
••
•
PN

*.

.*

...

"'l"'N~

'"
•
'"
•
...

··*··***"'->*
l*··::::*•

...

... B1 •

.* ••• Kl** ••• *.***

•
,.
•
•

·

•
SPECIAL"
INTERNAL
ELEMENT
'"

••• ** •• **.* ••

'" *
*** •• K2*.* •••• *.*

GIDEllL

•

.CREATE IN-LINE
• CONSTANT FROM
SPECIFIED
...
ELEMENT

•
..
'"
..

*.... ..........l,. ........
.'"
..*'"
.-------->*

· .

->.

*

*

Bl '"

• * ••

Flowcharts

295

Licensed Material - Property of IBM

chart IN.

Phase 64:

ADREF, RC4, Rcac, and RD001 Routines

. . r. .·

····AI·········..
··...............

······A3···.·····..

·······Bl··········..

·. · . r.·. ·

·····B3··········.
··
.
········r·······

·····Cl··········
·
.

.. . ·r. . .

..

ADREF

'"

j

... SAVE CURRENT

'"

PRINT- LINE

..

..

.. GENREATE LOAD ..

. · . ·r··. .
·····01··········
. . . ·1. ·. .
"'INTO R14 OR R1S-

:

g~L~L6RB§'~S

:

*PUT R14 OR R1S '"
... IN BASE FIELD ...
..
AND
...
"'DISPLACEMENT IN•
01 SF FIELD
..

•

Rc8C

'"

'" FILL IN PRINT ...
..
SYMBOLICS
'"

·····C3*·········
.. G

CE- '"

..
..
.. F

..

Rll '"
BL ...
L IN •

P

A

'"

"'···03·········.
·...............

•
• '"

RETURN TO
MAINLINE

...
..

····El·········.
·...............
..
...

RETURN TO
MAINLINE

..
...

·. . . r. .·
······Gl·········..
...

RC4

...

................
··.····G3·········
j
•

RDOOI

·. . . 1. . . ·

·. .·. r.·.·

·····Jl··········

·.····J3·········
...............

·····Hl··········
"'FIND DISPLACE- ...

.. MENT OF PRO... CEDURE BLOCK

·
'"

CELL IN PGT

..
..

.
..

. . .r. .
'" GENERATE BASE
.. AND DISPLACE•
MENT BLOCK
•
NUMBER

·

...

•
•

.
•

·····H3··········
• FILL IN BASE •
• AND DISPLACE- •

·
•
•

•

•

MENT OUTPUT
AREA

RETURN TO

MAINLINE

···KI·········.
·................
•

•

296

•

RETURN TO

MAINLINE

•

•

Section 3.

Program organization

.
•
•

•

•

Licensed Material - Property of IBM

Chart IO.

Phase 64:

. . . 1'. . .

GI NIT2 Routine

······Al·········..
...

GINIT2

...

·······Bl··········..
• GENERATE PGT

...

-INITIALIZATION ...

.~"""r""
..
··
.····el.·········

·..................
• GENERATE TGT

•

·INITIALIZATION ...

1 .
······01··········

GINIT3

-GENERATE CODING-

TO IN1TIALIZE ...
VN CELLS

.
·
.•
~"'''T''''''
.....Gl··········
·····..··r..·····.
- .... ii: .. '.Fl.••••••••••

•-·-··M,;;••,;;····· :

... SET AND LIST •
• INI'll CODING.. ...

•

•

WRITE LAST

•

CARD.

.*
...

.* Hl

too

...

'.

...

IA01A2

*oo

ANY ERROR

••••H2 •••••••••
YES'"
...
.. *------>*EXIT TO ERRLOD •

too

*oo.* .*
*oo .*

•

••••••••••••••• •

.NO

. . J.

··.................
1I2l!'

... EXIT TO CLOSE •

Flowch arts

297

Licensed Material - Property of IBM

Chart If'.

Phase 65:

Overall Floll'

.... A2*........
:

PH65

.......j........
IKFCBL65

[------FROM---:----

P

~~S~t6~

.

~----=:~~~:~--

·*B2·······

·INITIALIZE ..

,., .. P¥~~fES P~~~i ,., ..
.. • DATA AREAS .. '"

····r·.

·····C2··········
.........1'........
.. DETERMINE OP- ..
"'TIONS IN EFFECT.

.. SYSDMP STATE
..
FLOW

..
..

. *. ••
D2
*. *. YES
. "-' . *
...
FLOW ONLY
•• ---~
*.
."
*. *.• " ."
.* ••

l

*NO

A BRANCHING TABLE
IS USED TO DIRECT
CONTROL TO ONE OF
SEVERAL ROUTINES
FOR HANDLING EACH
DEBUG-TEX
LEMENT.
CONTROL R

MS

TO THIS R
AFTER
IS PRO

INE

LEMENT
UNTIL
END-OFE ON
SYSUT2 OR SYSUTS.

RDF2

:

G3 :

• *"'E2**.* •••• ***

READ ELI' AND

"'BUILD TABLES
..
---------- FOR SYMDMP AND
•
STATE
*

EOF2

E3

.* .

*.

......

." SYMDMP OR +,. NO
TEST OPTION •
IN EFFECT.*

------->*. *..

*.

* ... *

.•

•"SORT
... *.E4."'
••••••••
SEGINDX BY.
...
ASCENDING
*

"'-------->*.WRITE
PRIORITY AND
*
IN OBJECT*
•
MODULE
•

r

******.**** •• **.*

s

-WRITE-:-CARDiNDX;j
~~gi~g~XTABLES

ON S¥SUTS

---------------

**·**F3.*·*·*· •• *
*
*
*
*
*.*** •• ***".*****

*----EOFQN2-----*
... COLLECT INFO
--------.... FOR PROGSUM TBL*
WRITE DEBUG
*INFO ON SYSUTS

:::~: Ll

<---------------------

*****G3·*****
.**.
*----PNCHSW-----*
• SET INFO FOR
..
*TGT, WRITE END *
:
CARD
:
••• *••••• * ••• *•••

:t<***K3*·····*··

• EXIT TO PHASE •
:
00
:

••• *.............. *

298

Section 3.

Program organization

Licensed Material - Property of IBM

Chart IQ.

Phase 65:

·······r·····.
••••A1.........

•
•

~

~

VERB

~

YES

~

•a..

•

PROCESS FOR
VERB NUMBER

•

•

•
•

_CALCULATE DUMMY.
.. ADDR WITHIN •
•

CALCULATE

..

-

FRAGMENT

•

·..······r·······.

C3 . *. *. *. *.

IQ01E5
D2 ••••••••••

YES

__=r·····
END FRAGMENT
START NEW

FRAGMENT

•

•

•

······El··········.
······..·r·······.
•

.•. .a

*.

a

....

a*

Hi

••

....a ·a

.. • a. ..

••

~.
DISCSW
•• NO
SWITCH ON
a +..,;-.-

·.a

~

a*

r.
······Jl··········

..

IQ01ES

•••••es ••••••••••

:

RELATIVE

:

:------>:A&H~~SA~B~~~:

FRAGMENT""

..

··i~-==~=r·····"
·.·.·.03·.········.
·..................
1
·····E3··········
··.····ES·········
................
·----TXPNCH-----*

tENTER PREVIOUS ..

.. PROCTAB ENTRY ..

..

START NEW

:

FRAGMENT

•

········r·······

•••••
•

.

.·.·.P3··········.
·
. ·•
.•

P2 ••••••••••

•

.BUILD CARDINDX •
ENTRY

··I~=J·······

• MOVE RELATIVE •
• ADDRESS INTO •
.. PROCTAB AREA •

CI.j..........

::'!'~i:~~._._._._:

IQ01ES

*------>-..

·.....Gl··········.
·........1'........

NO

::1'~~:2~._._._._:

*----TXPNCR-----·
• ENTER PREVIOUS •
• PROCTAB ENTRl: •

a*·a

•••••

DUMMY

*..*

.a a..
••••.
a
:~l'~~1~2~._._._._:
.a •a
a*-------->.•
•a.. a.
•

.. CRDINXSW •• YES
SWITCH ON
a

•

..~~D~~~E~ 6~f··----->: EN~Ta~G~~uT

•• a

Dl
.~L ADDR ;
6.lJ1( BY"I'ES

FRAGMENT

.•. *

• RELATIVE ADDR •
.OF CARD/VERB IN.

Fl

BRANCH TABLE
SEE CHART

•

••• ·.C1··········

~

RDF2 VIA

•
•

·····B3··········.
... ··........
1'.......

··l:~-==r···"

··~

TWENPROC

••••• B2 ••••••••••

.~

•

~

•

....A3.........*-- [iNiiRiRoM---

· · ·. r··.. "'-"'--

••

-----------

. ... .------>...
.'.

~.

~.

•

~NTBRFROMRDF2--

. - - - VIA BRANCH TABLE
•
SEE CHART IP01E2

TENPROC

Bl

TENPROC, THENPROC, and GTEQ10K Routines

...

SET FRAGNO

•

*COUN"I'ER TO ZERO-

·······l~:~:

···.G3·········..
··...............
• RETURN TO RDF2 •

•

GTEQ10K

•

1
······FS··········
.
·
.
.PUT DUNMl: ENTRl:.
• INTO PROCTAB •
•

TABLE

•

···..··r······
·····GS··········

·------SNF------.
• MAKE SEGINDX •
• ENTRY FOR OLD ..
• FRAGMENT I START •

.................
•

NEW

•

.·...............
. .J.. . . .
•

•

RETURN TO

CALLER

•

•

s

. . . 'f=-.

• TURN OFF DISCSW •
• SWITCH TURN ON •
• CRDINXSW SWITCH'"

·

···.1<1*··.·.·.·
·...............
.
.RETURN TO RDF2 •
..
ROUTINE
•

Flowcharts

299

Licensed Material - Property of IBM

Chart IR (part 1 of

~.

Phase 61:

overall Flow

·•.........'--l
- A3 •

READREF

·····Al·········.
•
•

...............
IXFCBL6A

----------

••
to

•

•

·0 •.

·oO

SXREF BIT ON

•.

oO. oO·

•

•

•

..... ..........
..... _.L

o.---l
.....

RCH----·
DATA.

.·................
•

BY

• BI

.<--

SEARCH.

•

READ DEF-TEXT

·········1......
.'.

Fl
...
.. •
••
•• YES
••
... END OF FILE •
••

••

••

to

Gl

.. '

of

• to

Hi

••

to

FOUND

t ..

to.·
.'

·.....

1
.....Jl..........

..

.
.
•••.•••••••••••••

•
FORMAT DATA
•
---.RECORD FOR NAME.
• •

G3

.t.

I
·.....E4...........
· · . T···. ·
• SAVE HIGHEST
NAME JUST
PROCESSED

•
.<-•

•

•

TO DATA

-~:~~--

...0..
:~~~:~o~~ ....
:...............
t :
1
•·....
A3 .•
.
'
.
J3 ..
.....JLI..........
0...
...

• •••• H,. ••••••••••

.NO

->* •••••

.---SPLIT
•• OVERFLOW... NO
• SPLIT H
_.
SPACE
.. _ - - - - - ) . SOURCE
•• A V A I L A B L E . . . DATA R

---.
•
•
•

.....
.
·0 .•
•••••••••••••••••
j
1<---~------------­
·.···X3·.·.··.·.·
•
•
·.................
.
L •••••
.••••A3 .•
'YES

•ov

RD•
•

• TO
•
I

>.

Section 3.

••

·0 .. oO· .•

r
E5
......
s

.'.

r

RECORD •• NO
•..-DATA
SPLIT
•• _-•• .
oO.

·.oO.

...F5...••.••••.
•

CLOSE

................
DEF-TEXT DATA
SET
•

•

... REF FITS IN •• YES
• INSERT REF IN •
•• LAST OVERFLOW ••-------->.OVERFLOW RECORD •

-ciiAiNED]

. '. toO

ALL

--~~-·:: .~:~~~I~:D.:: -<--

••••• G4 ••••••••••
•
•

to

to

83

YES
•• ---... ---......-------------------

·NO

DS
oO.

·•....El .•
... t .
.. . .. . .. ·................
·~l·N~
·········l···::::·
->--A3 ••
·.....
...
0*

.0

r

• A3 •

.. -REF FITS IN.. YES
• INSERT REF IN •
DATA RECORD ... - ___ .... ___ >. DATA RECORD •

-> •.

oO •

Pgi~I i~g~r

----to -.PROCESSED •• ...
to

•. a·

.····CS··········.:
---:·
•
·.................
.•

t ..

YES ... DATA-NAME
BEING

->+

•0.. •. .•0•.•

300

.rs

of

................
l ....

•••••••••••••••••

YES •• PROCESSED ••
<--*.
IN LAST CYCLE..

•• IS STORAGE
••
FULL

c"

to

CLOSE

to

.. · l·N;..
.. ... ·0

'.IN CYCLE ••

••

.REF-TEXT DATA •
SET. RESET
SWITCHES.

*-->

...

NAME

DNREF

. ' _ WAS ' .
NAJoJE LAST •• YES

' .. ONE PROCESSED •• _ -

...FLI...........

• •••• F2 ••••••••••
.TURN ON BIT TO •
INDICATE ALL •
DEF-TEXT
PROCESSED
•
•
•

*-------->*••

r
.. ..
to

o'

t ..

l_>* •••••

READDEF

-->

1

••

to

bNAbD• •

1M

85·'· .oO

...

'NO

YES

•t E1 •

r

NO.' DA'l'A-NAME

•••••••••••••••••

.02 •
Ai·

.NO

rs

._

to

NAME

".

*<------*. •• REFERENCE ... ••

.*

---*

.... ._>..1o· ....
..
....···El.···••..·.·
··
.
t.

._ .+

B4··· ••

LOCATE DATA.
RECORD VIA
•
-DIRECT LOOK-UP.

•

••

.* .•

to to

of

.....C3..........

IN •

.'.

PROC-NAME
..
... PROCESSED. •
to.t

• ••

to

to

to".0

*.
MATCHING toO

of

to

.....
.--- cl·····.····
-----.
·
.
········r·······
D1

•

B3"

. ··r···

•

...........
................

EOFREP

'.

.. -

••••••••••••••••

·INITIALlZATION •

M

All

•

1 .
.···Bl·······
·. ...

•

.+.

···A3···········
PR
____>•READ
REF-TEXT • _______>.:. END OF FILE·: .~ ___ > -OEF

r--------------

•
ENTER FROM
• - - - - - - - PHASE 00

Program organization

•

• ••• Gs •••••••• •

'RETURN TO PHASE'

•

00

.<-:-

Licensed Material - Property of IBM

Chart IR (Part 2 of 3).

.....
..

•

! ·••
···Al ••••••.•
•

• A2 •

..... 2..........
.....All..........
5..........
·········r·········. ................... . ................... .········1·········.
• •••• '-1
,v

READDF

+--

READ DEF-TEXT.

·········r·····
Bl

•+

.'.

.~

o

to

----+

•

A/

-PR

ATA

•

•

.1

TREEFOR

..•

BIT TO

.* .*

• •••• BS ••••••••••

*

..+---BUILDRTN--- ....

TE ALL ..
TEXT.
ESSED.

+----->*•

.. BUILD SEARCH •
.. RECORD TABLES ..

••••••••••••••••••..

I
0..

..••••••••••••••••••

.... 1
. .

·NO

: ':;':

•

*0

to

01

• ..

.'.

•• 0

04

t.

0- STORAGE*. ••
•

0

·········r·····
.··e 0.<------•. ..
·.................- ..<--------.. ....
...
.. ..
-.. . .
.

••

•• •• FILLED

•. o·

YES

•

•• 0.---1
•

El

'. +0

...

.. .. .•

FOR DATA-

·0

NAME

...

••

.··0
....
Fl..
FIRST

•
.•...............
l .
FORMAT DATA
RECORD FOR
DATA-NAME

:

......
F2..........

.
.
-..
·. ······1·········
• ••••

.---CHAINRTN----.
•• PROCEDURE•• ------->.cHAIN DATA-NAME·
-.
NAME
••
• DATA RECORDS •

•• YES

··l·N~

••••• G1..........
•
•
•

-

FORMAT DATA

RECORD FOR

••

e

*oO

*.

••••
END OF FILE ."

••

••

t~::;;·

....

: Al ••

D •

• H1 -

•••

••

DATA-NAME

NO

4.·······.·
--- .
.................- ...

••••• E2 ••••••••••
:

->-•••••

'NO

D5

••

·NO

------->.•

I

*..

••

••

REFFOR

I

•

A2 :

•• D;FINITIO~o •• YES

YES ••

D •

••••v

I. :....
••

·NO

• •

cs •••••••••••

READ REF-TEXT

r
o-

*->

READRF
•••

Cl
to
NAME -.
YES ... PROCESSED ...
<--*. toIN CYCLE
PREVIOUS
._ ••

•*

----*•
..
ER •

+---COMPLETE--- •

.SELECT N L O W E S T - "

*-------->+
ALPHABETIC
*------->*•
•
-UNPROC'D NAMES.

+------->+

• •

••••• 2* ••••••••

*.

...
•• 'iES
... END OF FILE •
••
••
t

Overall Flow

....•

.

*02 •

• A1·

-->.

Phase 6A:

• PROCEDURE-NAME

..
•

• •••• G2..........

::::::··1·········
. .... ._>
... .0
.··0
H!

YES •• FIRST NAME ••
OF A PAIR
.-.
••
••

. ··l+Nf·

.....Jl..........

••

0

••

G3

••

.

• •••• G4 ••••••••••

.······1::::::::..

:····..·1········: ]~~~~J~~··I·N~··

:······T::::::~

.
········1·········

•
•

STRUCTURE FOR •

SORT.

• H1 •

<--...

F3

•• MATCH IN •• NO
... STORAGE THIS ..
••
CYCLE

....
··I·
...
.....

.----INITRTN----.
.INITIALIZE TREE.

..
.<-•

.... ---t
·0.·o.
.·I·YES :....
.~;.:
.' .
...0
.

DATAREF

•••••
.--•

.1

----.

H ••••••••••
-

• .REF FITS IN •• YES
• INSERT REF IN •
• .. DATA RECORD ... - - - - - - " . DATA RECORD •

••

••

NO

83

••

•

•

..

....

• •

•

.

cS •

.

• •••• 84 ••••••••••

•
• .REF FITS IN •• YES
• INSERT REF IN •
E . . .. LAST OVERFLOW •• ------>.OVERPLOW RECORD.
ER •
•• RECORO • •
•
•

.....J2..........

•
• •
.---BUILDRTN--• COMPARE NAMES; •
---. INITIALIZE.
----. BUILD SEARCH
• CONTROL RECORDS.
• RECORD TABLES

•
•
•
•

••••••••••••••••••• •••••••••••••••••••

J3 .' .

..

.....
J4.........
• cS •

.oO

•••••

.....
·---ALFASPLT--- •
•• OVERFLOW •• NO
• SPLIT HIGHEST.
••
SPACE
~ .------->.ALPHABETIC DA'IA •
..AVAILABLE..
•
CORn
•

... ·0 .• o·

I
·····K3··········

••••••••••••••••••

'YES

j

<------------------

•
ADD NEW
•
• OVERFLOW RECORD.
• TO CHAIN AND •
•
.. INSERT REF

·.................
.
l->.....•
......
• c5 •

Flowch arts

301

Licensed Material - Property of IBM

Chart IR (Part 3 of

.....
..
..... .I.........
.................

Phase 6A:

•

~

Overall Flow

• 03 •

• A1·

...

ERSE

...
*R

OF DATA ...
(LOW TO.

...

'"

ETIC·

...

GH)

...

1<-----------------------

···Bl······.····

EOFRF

.D~~I

~fm •

N

NT

·········r·····
0*

c

... HI
... PRO

*.

. *. *.
ME

••••• c2 •
•

*.

••••••••

'"

ONE ... NO
'" POINT TO NEXT •
IN .. *------->* DATA RECORD •

CY

*. *.. * .."

0*

•

•

•••••••••••••••••••

c
s

.*.

01
*0
.. '" ALL *..
... DEF-TEXT ... YES
...
NAMES
..

"' .. PROCESSED.'"

*.

0*

.* D2

0*'

*-------->*.. *.

* . . . '" ..'"

l::_____________________J

*.. *

*•*.

• ••• 03 •••••••••
.RETURN TO PHASE.
*-------->*•
00
•
••••••••••••••• •

... DATA RECORD... NO
SPLIT
..

*. . *

yES

······E1··········.
.................
...··Fl··1. ·······
........... .. ..
1 .
·······Gl··········
·..........l .....
.
....
......
• SAVE HIGHEST

•

•

*

*

•

• NAME PROCESSED ...
...
IN CYCLE
•

• CLOSE DEF-TEXT '"

• AND REF-TEXT
...
DATA SETS

•
•

"' "' *

•

• RESET SWITCHES •

•

"'

*

->·02 •
• Al •

302

Section 3.

Program organization

Licensed Katerial - Property of IBM

Chart JA.

Phases 70, 71, and 72:

..

..
..

. ···A2·········..

...............
ERRLOD

..

Overall Flow

--------]

~--------ENTER VIA

ENTER FROM

:~::.22.._

------------

.. - - - - - - - PHASE 00

................

• •••• AS ••••••••••

----- "•

:"::": .".1

*.

82

*.

.. -MESSAGES IN-.. YES
..
....
TABLE
.. +------>*ME

.*

• PASS ADDRESSES ..
FOR PH2ERR
:
:

..
•••••••••••••••••..

r

* .. *

.. "

..

·,.····cz··. ·•·····."
·
.

+-----GTF4B-----+
-->* GET A RECORD ..

. . . . I:~~~~~~--------D2

*.

···D3···········. "
"
------->.
c

*. YES
OF E-TEXT.*-----> IF

*.

NO .. "
---*
.

.'. *.

r
.."

* ... "

. *E2

..

E·

R

•

.'. *•

•

,*

G2

*,

o.

'r

• ..

... ... ... ..

,*

G3

.... ....

.. •

...

I

·NO

--!

....

: .::.:

····"'·J2·*········"
·
."

*. *.

• •••• G4 ••••••••••

.0..

....

----->:

PHASE 71
NO
LOADED ••••

....

••
••
.••
•• PHASE 12 ... YES

LOADED

.. "

-----> •.•.

H2

••

PH~~~R{lH~~~~frn,:

YES

.. ..
PHASE
.... YES
••• ~Or2~S~1,2: •••

..

:

.·. . . 1'. . ...

B2 :

0*' *,

PHASE72

.PASS ADDRESSES •
•
FOR PH3ERR
•

:

AI:....

"NO

• •••• ES ••••••••••
:

··•. ·FS··. ··•····

F3 ••••••••••

.* PHASE *. .... YES
.... PROCESS AND ....
*.10.12.1B MSG 0*------)*
LIST
*. *.
.*
..
..*---!
..••• :to • • • • • • • • • • • • •.. • • • •
*... " .."
.. •

l

-----

······r·····

(:~:Ll
••••• v

s

:

EXIT TO CLOSE •

ENTER FROM

,*. *.
F2

70

····DII •• •••••••

:~:~.2~__

r

+... "

...............

..............."
--------]

.,

*.....
.* .."

IS THIS

E-TEXT

*. 4<.

.."

1
····cs.········

.RETURN TO PHASE.

:

"

.* .*
_.END
*.

•

1
······BS··········
.
.·................

.. ••• * *->
."
*. *0

PHASE71

..

LINR TO PHASE •
71
:

.
.
·······r:::~:
..-*-.-.-.-.-.-.-.

·................
····GS······"··

.RETURN TO PHASE •

•

70

•

• •••• HIJ ••••••••••
*PHASE71
•

.
.,..
...............
L>:.;;.:
.......
•

GET PH2ERR
ADDRESSES

..
•

• LINK TO PHASE •
•

72

•

••••••••••••• *•••

1u .••••••
·····K2·'
•-.-*_._.-.-*_._*
JA01E5

·PHASE72

·
'"

'"

..

GET PHXERR
ADDRESSES

.
•

•

••••••••• *•••••••
.;to ••

l_.>*

..•

: F3 :

••• *

Flowcharts

303

Licensed Material - Property of IBM

Chart KA (Part 1 of 5).

Phase 80:

FIPS

";.1_____

304

Section 3.

Program organization

Licensed Material - Property of IBM

Chart KA (Part 2 of 5).

Phase 80:

FIPS

Ai

G2
PROCESS

DATE-COMPILED
PARA

Flolfch arts

305

Licensed Material - Property of IBM

Chart KA (Part 3 of 5).

Phase 80:

FIPS

D1
WORKING

YES

STORAGE

NO
E1

[3
F1
YES

NO
G1
YES

306

Section 3.

Program organization

Licensed Material - Property of IBM

chart KA (Part 4 of 5).

Phase 80:

PIPS

NO

E2
CASE NUMBERS
DETERMINED BY
VERB LENGTH

Flowcharts

301

Licensed Material - Property of IBM

Chart KA (Part Sof 5).

308

section 3.

Phase 80:

FIPS

Program organization

Licensed Material - Property of IBM

SECTION 4.

FLOWCHART LABEL DIRECTOR!
DEFINITION
.RAGE ~Q£!
01
C3

LABE1
ACCMET
ANLZUFDS
ANLZVBS

£!!!RT
DN
ED
ED

BASISRTN
BEGIN
BEGIN
BELE!I
BGROUP
BLDOB02
BLDOB06
BLDOBO?
B!BSRN

BD
DA
DI1
DD
DD
DP
DP
DP
DD

01
01
01
01
01
01
01
01

B2
B3
A4
J2
C3
G3
H3
C1

BNORI1L

DD

01

D4

BPASS12

DQ

C1

F1

BPASS2
BREAD

DQ
DD

01
01

G1
E1

BSUBRN

DB

01

D3

B!JSAGE

DD

01

G1

CD seNA
CHKDCL

CD
CK

01
01

E3
D1

CHKENT

EB

01

G3

CHKPRNT

BC

01

F2

CLOSE
CLOSE
CLRD
COPYPROC
COPYRTN
CTCDECK
CO

IK
CJ
BD
BD
GB
IE

DATA REF
DELI!

REFERENCE
PAGE BLOCK
0'1 C2--

01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01

A2
A3
J1
J1
B3
F3
G3
B1
B2
C4
CS
J3
J4
E1
E2
F1
D1
D2
C3
C4
D2
F1

01
01
01
01
01
01
01
01
01
01
01

E2
C1
C2
F3
F4
F1
G1
D3
E1
G1

01
01
01

E3
F1
H1

01
01

E1
F3

01
01

D1
F2

IR

02

F3

CK

01

E1

02
02
01
01
01
01
01
01
01
01
01
01

D3
E4
D1
D2
E3
G2
H3
B1
C2
G3
B1
K2

IA

DICSCN

EB

01

B2

DICTENTR

DR

01

C1

bABEb
DICTP1
DIR

£!!!ll

DEFINITION
PAGE BLOCK

H'--

DQ
DE

-0;01

D1

DIR010
DLSCN
DNREF
DOCODE
DOCTL
DOLINE
DONGP
DOPAGE
DOROL
DOUSGE
DUMTST
D6PN10
D6PN10
D6SR10
D6SR10
D6000
D6000

DE
CK
IR
CF
CF
CG
CI
CF
CJ
CG
CA
HE
IL
HE
IL

01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01

E1
D2
C4
E3
F3
E3
B1
G3
F1
G3
B3
C4
C4
C3
C3
D2
D2

ELIPR

DL

01

J2

END

IC

01

E1

ENDPTX
ENDPTX
ENDPTX
ENDP13

HD
ID
IM
DP

01
01
01
01

C3
B2
:::3
C5

ENDO 1A
END02
END02A
ENOPAT
EOF
EOF
EOF
EOF
EOF
EOFIN
EOFREF

CG
CH
CH
He
EA
FA
HD
IE
IM
GB
IR

01
01
01
01
01
01
01
01
01
01
01

:::3
E4
D4
D3
E3
D4
C2
C3
C2

EOFRF

IR

03

B1

EOF2
EORDA
EPFT

IP
CF
CI

01
01
01

E3
D3
C2

IL

HE

DIRECTORY

REFERENCE
PAGE BLOCK

01 -;;;01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01

B1
G1
D1
D1
B4
E2
F2
E2
A1
G2
D1
G2
A3
C3
C3
C2
C2
D1
D1

01
01
01
01
01
01
01
01
01
01
C'1
01
01

E3
H2
AS
B5
c5
D1
D5
E4
E5
F2
G2
H2
C2

01

C2
A4
B5
C2
D4
D3
D2
D3
D3
C1

01

01
01
01
C'1
01
01
01
01

c;2

01
01

A5

01

01
03
C'3
01
') 1
01

Directory

C1
C1
A4
cs
A1
C2
E2
D2
Cl

309

Licensed Material - Property of IBM

1Hl!l1
EPHD
ESD

£!!!BT
CI
HC

DEFINITION
RAG£; !!.1Q£!S.
01
D2
01
E4

FDSCN
FDTEXT
FILED
F'L FX 1

CD
DB
DQ
CI

01
01
01
01

B3
C2
E3
C1

FLVSCN
FORMLA
FOUND

CD
FE
IR

01
01
01

B4
D1
G3

FOURTY8
FSEND
FSEC 1
FSEC 1
FSTXT
FSTXT
FSTOOO
FSTOOO
FTER
FTER
FTIN3
FTIN3
F2 EO P'

IE
DL
liF
10
DF
DN
D1
DL
HF
HF
10
HC

01
01
01
01
01
01
01
01
01
01
01
01
01

E3
C3
C1
C1
C3
C2
F3
C4
G1
G1
E1
E1
02

GCKOP3

GD

01

01

GOOAGN
GDOAGN
GET
GET

GD
GJ
HD
ID

01
01
01
01

J1
H1
D3
B1

IO

I

GE'!'

IE

01

C2

GET
GE TC RD
GETD1M
GETDLr-!
GETDL11

1M
CE
CB
CB
CO

01

01
01
01

D3
C2
02
H4
C4

I GETN

310

DP

Section 4.

C1

'J 1

01

Directory

REFERENCE
RAGE ]2LOCK
'01
D1
01
E3
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01

B2
C1
E4
B1
B2
B3
C1
C3
D3
E2
C2 .
B1
B1
C2
C1
F2
C3
F1
F1
D1
D1
D1
H1

01
01
01
01
01
01
01
01
01
01
01
01
02
02
02
02
02
02
02
02
01
01
01
01
01
01
01
01
01
01
01
01

C1
J4
H1
G1
D2
A1
C4
D4
E2
F2
H4
K3
A2
B2
B3
D2
E2
E3
F1
F2
B2
H2
D2
B2
C2
H3

BU
C3
D3
F3
G2
C1

1All1
GETNXT

£MRT
DK

DEFINITION
PAGE !!.1Q£lS
C1

-0'-

REFERENCE
PAGE
-0'- !!.1QflS
B1
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01

E2
F4
G4
D4
G3
H3
K1
K1
C1
C1
G1
C1
A1
J1
J2
C3
CS

GETOUT
GETPTR

DD
DJ

01
01

E4
G4

GIDEN1
GIDENL
GINIT3
GINIT3
GNEQUE
GNGPLD
GNLDPT
. GNOPT

HD
1M
HF
10
.HC
CJ
CJ
GD

01
01
01
01
01
01
01
01

K2
K2
D1
D1
G2
D1
B1
K1

GNUSMR

CJ

01

D3

GOTAVERB
GRIPR
GSPICT

ED
DL
DD

01
01

H3
B2

01
01

H2
B1

HEADER
IDLHN
IFERR
IPSO

HB
FA
FB
FB

01
01
01
01

C2
F3
E1
F1

INIT
INITL
INIT1
INIT1
INSROU
INSRT
INSRTCHK
ISEND
ITEMRN

DE
BD
HF
10
CJ
HC
BD
FC
DD

01

B1

01
01
01
01
01
01
01

C1
E3
Dl
E1
ES
FS
A1

01
01
01
01

F1
F1
J1
F3

01
01
01
01

E1
E1
H1
F2

01
01

D2
H1

01
01

C2
Gl

KOP3

GJ

01

D1

01
01

C1
JLI

LDSCN
LHNAM
LTLRTN

CD
CK
HC

01
01
01

D3
E2
F2

01
01
01

D2
E1
F1

MACPRO
MACPRO
MACRO
MAYBE

HD
1M
IE
BE

01
01
01

H2
H2
D3

01
01
01

H1
H1
D2

NOENDO

DQ

01

B1

01
01
01
01
01
01
01
01

A1
A2
A3
05
F2
G1
GS
H4

Licensed Material - Property of IBM

DEFINITION
l.!BE1
NO GET
NOTSTP

~HART

DQ
HB

DEFINITION
BLQ£!S.
01
E1
01
F1

!:!2~

OD2FND
OKCOMP

DP
FB

01
01

F1
D4

OPPRO

HD

01

D2

OPPRO

ID

01

C2

OPPRO

1M

01

D2

PDSCN
PDTO 20

CK
HE

01
01

B1
B1

PD T020

IL

01

B1

PDTO 30
PDTO 30
PERD01

HE
IL
CG

01
01
01

C2
C2
B2

PERD02

CH

01

B3

PGTINT
PGTINT
PHCTRL
PHINIT
PHINIT
PHTERM

HB
IB

01
01

E1
G3

CE
FA
DA

01
01
01

B2
R3

PHTERM
PH03
PH5BVB
PH5CTL

DM
BC
CA
GA

01
01
01
01

B1
G2
B2

PH65
PICTAN
PLSCALL
PLUS 1
PLUS1
PNBPRO
PNBPRO
PNDEFRTN

IP
DD
AA
GD
GJ
HD
1M
ED

;-:2
03

01
01

B2
B5

01
01
01
01
01

H1
G1
F2
F2
E5

REFERENCE
gAGE ~LOf!s'
01
D1
01
E1
01
01
01
01
01
01
01
01
01

E1
D3
E3
D1
D4
C1
K2
D1
D4

01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01

A1
A1
D2
E1
A1
E1
D2
C1
C1
A2
D3
E3
F4
G3
J2
A2
B2
D1
F3

01
01
01
01
01
01
01
01
01
01
01
01
01
01
01

A2
A3
G2
G3
C3
A1
F2
A2
D3
F4
G4
J3
J4
A2
B4

01
01
01
01
03
04

G1
F1
F1
F1
C2
A1

1!.!H;1
PNEQUR
PRGP
PRTP
PRINIT
PRINT

fJi!RT
HC
CG
CG
EB
EB

PROC77
PR 0110
PR02A
PR02A
PR0250
PUNCH
PUTEQU

PAGE BLOCK
01-----01
01
01
()1

F3
D3
E3

DL
CG
CG
CH
CH
IC
GI

01
01
01
01
01
01
01

E3
J2
H2
D3
G3
F3
F4

QIFOUND
QUAL
QUAL
RDF2
RDPERD

DP
DJ
DI
IP
CF

01
01
01
01
01

G1
H3
C4
E2
C2

RDSYN
READ
READB

DL
AA

01
02
02

D4
B1
C1

READC
READDEF

AA
IR

02
01

D1
E1

READDF

IR

02

A1

READF2

HC

01

C1

READF2

IC

01

C1

READUB
READREF

AA
IR

06
01

A2
A3

AA

REFERENCE
PAGE ~1Qf'!s
HO"1- H1
D01
D2
01
F2
01
C3
01
D3
(;1
C4
01
E2
01
H2
01
G2
01
C3
01
F3
01
D1
01
D4
01
E3
01
G1
01
01
01
01
01
01
01
01
01
01
02
06
02
01
01
01
01
01
02
02
02
03
01
01
01
01
01
01
C1
02
01
01
01
01
01
01
01

Directory

F1
G3
C3
D2
B2
E3
F3
G3
D3
C1
B1
B2
C1
D1
F4
G1
J1
D1
C1
H1
J1
G1
B1
E4
F3
G2
H2
B1
E1
D2
B3
C4
F2
G4
H1
H4
K3

311

Licensed Material - Property of IBM

bABEb
READRF

CHART

-ra--

DEFINITION
PAGE BLOCK
-02- CS-

REDEF
RELEASE
RE NAMS
RENM10
REPORTD
RETURN
RLIBA

DL
Ie
DK
DQ
DQ
AA
AA

01
01
01
01
01
01
06

J4
G5
G2
E2

RLIBD
RLIBGO
SDTEXT
SD TE fi'
SDTXT
SE6010
SE6010
SE6025

~A

AA
DB
DN
DF
HD
1M
HD

06
06
01
01
01
01
01
01

A4
H2
D2
D2
D3
J2
J2
D1

SE6025

1M

01

D1

SKPRNT

BC

01

G3

SKFRNTA

BC

01

F3

SKPRNT3
SORTREN
SRCHTB
STEP1
srEP2

BC
DO
DD
Be
BC

01
01
01
01
01

H3
C3
D2
C1
D1

TERM
TESTSB2

DE
DR

01
01

E2
D2

TESTSB3

DR

01

F2

TESTSB4

DR

01

H2

TESTSB6

DR

01

D3

TESTSB8
TGTINT

DR
HB

01
01

J3
D1

TGTINT

IB

01

F3

312

Section 4.

D3
H3
FLI

Directory

REFERENCE
PAGE BLOCK
-02 -B502
F3
G4
02
H4
02
02
K3
D2
01
01
G3
01
F3
J3'
01
G4
01
01
G1
06
C2
D2
06
06
D3
06
A2
06
G2
01
D1
01
D1
01
D2
J1
01
01
J1
01
C1
01
E4
C1
01
E4
01
01
F3
01
F4
01
F2
01
G2
01
G3
01
C2
01
D1
01
B1
01
C1
01
01
01
01
01
01
01
01
01
01
01
01
01
01
01

E1
C2
C3
C4
D3
E2
G2
G3
D2
K3
J2
C1
C2
E3
E4

LABEL
THRESUBS
TRMNATE

~HART

DR
AA

DEFINITION
PAGE BLOCK

-01 CiI
06

B4

REFERENCE
BLOCK

~

A4
G2
D5
E1

TRMNATE

BC

01

F1

06
06
01
01

TWOSUBS
TXPNH
TXPNH

DR
HC
IC

01
01
01

C3
E3
G3

01
01

E2
F3

VALGEN
VALGEN
VIRRTN
VNDEFR
VRBSCN
WGO

DD
DD
HC
HD
CK
AA

01
01
01
01
01
05

C5
J4
E2
E2
F3
C2

UVSCN
WOUT

CD

01
04

C3
D1

WPCH
WRITE

AA

AA

05
04

B2
C1

IlRITEA

AA

04

B1

01
01
01
01
01
01
05
05
05
01
01
04
01
01
04
01
03
03

C4
J3
E1
E1
F1
C3
B2
C3
D4
C2
A3
C1
B3
B1
E1
D1
D2
E1

IlRITE5
WRTERR

DQ
BC

01
01

B2
F4

01
01

H2
F3

XITXIT

CI

01

C4

XIT1
XIT2
XIT2A
XIT3
XIT4
XITs
XIT6
XIT7

CI
CI
CI
CI
CI
CI
CI
CI

01
01
01
01
01
01
01
01

F1
G1
G2
H1
J1
A4
Bs
AS

01
01
01
01
01
01.
01
01
01
01
01
01
01
01
01
01
01
01

AS
B4
B5
C2
D2
E2
F2
G2
H2
J2
E1
F1
G1
G1
H1
J1
B4
A4

AA

Licensed Material -

.--~-

I

Table and TIB Number

,

Property of IBM

---,

I

Ir-------------------------------~----------------------------~
IPhase,
Built or Changed by Phase
Referenced Only
,
I
,
I 10
ALPHTBL(27), CKPTBL(8), ENVTBL(3),
I
FNTBL( 10), HASH( 30), INDTBL (4) ,
I
I
I
INDXTB(34), KEYTAB(26), OD2TBL(9),
I
I
PIOTBL(7), P1BTBL(2), QLTABL(1),
I
QN!TBL(2), RCDTBL(11), RWRTBL(13),
I
I
I
SATBL (5), SPNTBL (21), 5RATBL (6),
I
I
TOTTBL (32), OPSTBL (29)
I
~
I
i
I 12
CTLTBL (14), DETTBL (17), GCNTBL (24) ,
I FNTBL (10), SPNTBL (21)
I
I
HASH (30), NPTTBL (1 B), PIOTBL (7) ,
I
I
I
P1BTBL(2), QALTBL(23), QLTABL(1),
I
,
I
RNMTBL (12), ROLTBL (15), ROUTBL(16) ,
I
I
,
RIlRTBL( 13), 5MSTBL (2B), SNMTBL (35) ,
I
I
I
SRCTBL (22), SOMTBL (19)
I
I
I-I
--..
I 1B
DICOT(2:), GVFNTBL(4), GVNMTBL(3),
I ALPHTBL(27), DETTBL(17), FNTBL(10),
I
I
H15H(30), PIOTBL(7), PNQTBL(6),
I PIBTBL(2), P1BTBL(2), RCDTBL(11),
I
I
PNTABL(5), QLTABL(1), RNMTBL(12),
I ROUTBL(16), RWRTBL(13), SPNTBL(21)
I
OSETBL (26), VRDEFTBL (14)
I
I
I
~
I
~
I 20
VALGRP (6), VALTRO (33), LABTBL (13)
I OD2TBL (9)
I
I-I
f
I 22
DICOT(20), FDTAB(2B), GPL5TK(10),
I OD2TBL(9), TOTTBL(32), UPSTBL(29),
I
I
HASH(30), INDKEY(31), MA5TODO(13),
I VALGRP(6), VALTRO(33)
I
t
OBJSOB(5), OCCTBL(2) , QFILE(23),
I
I
I
QITBL(22), QRTN(21), Q5BL(25), QVAR(24),J
I
RDF5TK (11), RENAMTB (3), RNMTBL (12) ,
I
I
I
,
SRCH KY (34), VARLTBL ( 1 5 ) ,
I
I+-f
,
21
CKPTBL(B), DATATAB(16), HA5H(30),
, FDTAB(2B), DICOT(20), PIOTBL(7)
I
I
IND2TBL (17), QFILE (23), RunBL (35) ,
I
I
SAMETB(19).SMRCDTBL(5)
I
I
,
I
+i
I 25
OCCTBL(2), ODOTBL(14)
I DICOT(20), HA5H(30), MA5TODO(13),
I
I
I
I OD2TBL (9), QITBL (22), QIiTN (21) ,
I
I RENAMTB(3), VARLTBL(15)
I
~
+--f
I 3
DTAB(4), QFILE(23), QVAR(24),
I DICOT(20), HASH (3:) , INDKEY(31),
I
I
OSNGTBL(2B)
I
I
I
I IND2TBL(17), VALTRU(33), QSBL(25)
I
I+--f
,
35-..L_ DBGTXT (6), DUB (4), PITEXT (5), VRBDN (7) ,I
L-__
_ _ _ _ _ _ _ _ _ _ _ _ _ - - . . 1I
Figure 59.

Tables Osed by Phases

(Part 1 of 2)

Dir=.:ctory

313

Licensed !aterial -Property of IBM

,

,--,.-

I

I

I

I-

Table and TIB Number

•

IPhase I

Buil t

or C hanged by Phase

l-----t-

I
I

Referenced Only

I

---t

DBGTBL (13), DEFSBS (18), KEYTBL (20) ,
PFMTBL(12), PNOUNT(14), PSHTBL(17) ,
PSIGNT (15), PTRFLS (16), SETTBL (21) , 1
STRING (9), VARYTB(1), VNTBL(11)
I

I
I

~II

-f

4

I
I

I

I
I

I
-t-I
I

I

---t

I
I
45

I

SSCIN (5), SSCOUT (11), SSDELIM (20),
TXTOUT(19)

I

I
I

I

I
I
I
I
l-----tI
~
I 5(1 I BLUSTBL(1C), XAVAL(2) , XINTR(1),
I
I
I
I XSCRPT(3), XSSN.T(4)
I
I
I--- I
I
---t
I 51 I BLUSTBL(10) , GNCALTBL(16), PNUTBL(6),
I ALPHTBL(27), RUNTBL(35), USETBL(26)
I
I
I
I
I SEGTBL(15)
I----t__
-11--~
I 6 I CONDIS(14) , CONTBL(9), CVIRTB(12),
I PNUTBL(6), SEGTBL(15)
I
I
I ERRTBL(10) , GNTBL(B) , LTLTBL(4),
I
I
I
I
I
I PNTBL(7), QTBL(3), RLDTBL(none).
I
I TGTADTBL(1), VIRPTR(13), VNPTY(17)
I
I
~-+-

----------~---~I~---------------------------___t

I BLiJSTBL(10), PNUTBL(6), SEGTBL(15)
I
I
, CONTBL(9), CVIRTB(12), DRPLTBL(25),
I
I
I
I DRPTBL (24), GNATBL (8), GNFWDBTB (21) ,
I
I
,
I GNLABTBL(19), LTLTBL(4), PNATBL(7),
I
I
I
I
I PNFWDBTB(20), PNLABTBL(18), TGTADTBL(1),1
I
I VIRPTR(13), VNPNTBL(29), VNPTY(17)
I
I
l-----tI
~
I 63, GNLBDTBL (27), PNI.BDTBL (26), QGNTBL (24), I BLASGTBL (16), BLVNTBL (23), DRPLTBL (25) I
I
I RLDTBL(28), TGTADTBL(1), VNPTY(17)
I GNATBL(8), GNLABTBL(19), PNATBL(7),
I
I
I
I PNLABTBL(18), SEGTBL(15), VNPNTBL(29) I
I--- I
I
~
I 64 I ERRTBL (10), QTBL (3), RLDTBL (28),
I BLASGTBL (16), GNATBL (8), GNLBDTBL (27), I
i
I TGTADTBI.(1)
I LTLTBL(4), PNATBL(7), PNLBDTBL(26).
I
I
I
I
I QGNTBL(24), VIRPTR(13), VNPTY(17)
.I
I
i
I 65 I CARDINDX(11) , PROCINDX(5), SEGINDX(16)
I TGTADTBL(1)
I
I----t-t-I
I
I 6A I CNTLTBL (none), DATATBL (none) , I
I
I
I
I OFLOTBL(none)
II
I
i
, 70 I
I ER RT BL (1 0)
I
,

62 I BLASGTBL(16), BLVNTBL(23), CONDIS(14),

L ___---L-

Figure 59~

314

'

Tables Used by Phases

Section 4.

Directory

(Part 2 of 2)

I

""

1-'IQ

t::

TIB
Number

H

ro
0\

o

Processing Phases

10

0

12

IB

I

QlTABl

--- - ....

2

PIBTBl"

---

20

22

--

GvNMTBl

3

ENVTBl

4

INDTBL

5

SATBl

PNTABl

c::

6

SRATBl

PNQTBl VAlGRP

(])

7

PIOTBl

8

CKPTBl

9

OD2TBl

10

11

{

FNTBl RCDTBl

13

RWRTBl

---

--

---

15

ROlTBl

16

ROUTal

17

DETTBl -

lB

NPTTBl

19

SUMTBl
SPNTBl

---

--

----

GPlSTK

VARlTBl-

..-

--

DATATAB

--

QRTN--

QVAR

--- - - - -

USETBl

FDTAB ' - -

SMSTBl
UPSTBL

UPSTBL

-

.I--

TOTiBl

35

VAlTRU

33
34

..

INDKEY-

31
32

--

QSBl - -

25

HASH

DTAB

DTAB
PITEXT

-.---

----

---- - - --- ---

-I-

---

- - - 1-----

H

ro

QTBl
lTlTBl

SSCIN
PNUTBl -

VRBDN

STRING
BLUSTBl

SNMTBl

RUNTBl -

64

63

65

6A

70

- - - - - I-- .....

1----

VNTBl

PNTBl

PNATBl-

GNTBl

GNATBl -

CONTBl

CONTBl

--VIRPTR

VIRPTR -

PNOUNT

CONDIS

CONDIS

PSIGNT

SEGTBl -

PTRFlS

GNCAlTBL

---

..... - - - - - BLASGTBl

VNPTY

PNLABTBl
SSDELIM

PNFWDBTB
GNFWDBTE
BlVNTBl-

..

---- --- --

DRPTBl

--

---

DRPlTBl -

-- ....
--- -- f-

ERRTBl f - - - -

- - - -1----- -.

-- -- -----

SEGINDX

--

-- ---....

QGNTBlPNlBDTBl

ALPHTBL

-- -

PNLBDTBL

USNGTBL

RLDTBL-

_.

VNPNTBl

----- r---

--- 1------

---

VNPTY- 1 - - - - ~
GNLABTBl

SETiBl

-

PROCINDX

CVIRTB

DBGTBl

KEYTBl

-----

--

CARDINDX
CVIRTB

TXTOUT

.-

------ -

---

SSCOUT

PFMTBl

--

QTBl

lTlTBl -

-.-- -ERRTBl -

t-'
1-'-

o(I)
~

(I)

ll>

:z
- - - - ---- - -

Legend:
'ijhe"QNMTBl table also uses TIB 2 during phose 10 processing.
"The REPTAB table (TiB 29) Is used only during Phose 02_
Note that the arrowhead indicates the last phase to process the table. Where more thon one arrowhead follows a table name, the last
__ _ __ _ _
phase ~ either phase 6 or one of the optimizer phases.

o1-'-

XSCRPT
XSSNT

SRCHKY

INDXTB

62

TGTABTBL TGTABTBl

DBGTXT

---

----- ---

QITBl -

GCNTBl

29

XINTR

6

XAVAl

- - - ---- ---- - - - .-

DICOT

24

30

51

DEFSBS
SAMETB

QFILE -

ALPHTBL

50

PSHTBl

SRaBl

2B

----

45

VARYTB

ODOTBl

QAlTBl

27

---

MASTODO

23

KEYTAB

4

35

---

RNMTBl

22

26

----

3

---'--

RDFSTK

LABTBl

25

SMRCDTBl

1---- 1--- 1 - - - 1 - - - -

CTUBl

21

OBlSUB

--.

--- 1 - - - - - - 1 - - - - -- f---f-

14

20

----

RENAMTB-

GVFNTBl

RNMTBl

12

-----

OCCTBl -

8
H
ttl
Ul
Pol
IQ

21

---

~

--

(I)

1"1

~­

I»

....

--

--

ttl

~

~

(I)

o

H
M-

o

'<

'<

HI

M-

H

w
....

111

o

H
ttl
3:

Licensed laterial- Property of IBM

...

i

i

i

i

I

I IC (Internal Compiler) IA (Assembler) I E (Error) IXREF-Text
I Debug-Text
,
,
-i
-----------4------------+'--------~,---------------+,-------------~
IPhase 041
I ' E-text I
,
I
•
I--,----------·--------+,-----------~I----------~I------------------,r_--------~
,Phase 10,Data IC-text
,
I E-text I
I
I
.----,,----------~----------+I--~-------~I-------~'---------~---,~-------~
,Phase 121 Da ta IC-text
,
,E-text ,
1
,
I
I Procedure IC-text
I
"
,
I
I
I (PO-text for Report
I
I
I
,
I
,
,Writer subprogram),
I '
I
,
~------i

----_i_,--~-------~,------_i_,----------~~,~----------i

,
,
,
,
,
,
" I
I--i
I Data A-te][t I E-text I
I
I
,(incomplete) "
,
I
I
I
I
I
,
,Data A-text 'E-text ,DEF-text (f9r
,
,
,
",
,data-names),
,
,
I '
,
,

I Phase 1 B, Procedure I C - t e x t ,
I
I (PO-text for
,
,
I Procedure Division)
,

..,
,Phase 20 I ATF-text
I
I

I

,E-text
"
"

•
f
,Phase 22,Procedure Ie-text
,
, (PC-text for
,Q-Routines)
I
~
-i
--~~~I----------~'~~----~I~-----------+I----------~
IPhase 211
,Data A-text t· E-text I
,
,
~
-i
I '
I
,
,
IPhase 3 ,Procedure I e - t e x t ,
IE-text ,DEF-text (for
,
I
,
,
,procedure-names) I
I
I
, (P 1- form)
~
'I
,
--+---4
I
I
,Phase 351 Procedure IC-text
I
,E-text I
I
,
I
, (PIA-form)
,
I
I
,
,
I
i
I Phase 4 ,Procedure I C - t e x t ,
,E-text I
,
,
'I(P2-form)
I
' I
I I
I
I AT M-text
,
I
I
,
,
I '
I
( (
,
~
,Phase 45, Proc~dure Ie-text
I
, E-text
,
,
I
' (
I
I (P2-textfor UNSTRING I
I
'verb)
"
' I
,,---------------~,I------'-~
f
IPhase 50, Procedure IC-text
,Intermediate IE-text
,
(
(Procedure
(InterI
,
(
, (P2-form)
' (
,A-text'
,mediate
,
(
( '
(Intermediate , E-text
(
,
' I
,Optimization ,
' (
(I
I A-text
,
I '

.,

,

--r'

.-

(

~I---~I--·----------·-----·~(--------rl-----+I---------+,------~

Figure 61.

316

I F i n a l , E-text I
(Procedure"
lA-text
I '
I Final
"
IOptimization I I
lA-text'
I
I
I
I
I
I
I
,REF-text

I
I
I
,
I
I
I
,Debug-text

Types of Compiler Text Produced by Each Phase

Section 4.

Directory

I

~

,

~

,

~

,

~

IProcedure,
,
IA 1-text
"
I
- -R
+E-F,- t e x t
I_ _ _ _ _ _ _ _ "
________ ______________
~

,

,_ _ _ _ _ _ •_ _ _ _ _ _

~

" I

,
,
,
(
I
I
I
I
I
i
IDebug-text
,
I
I
I
~
I____________ I
~

(Phase 511
' I
' I
' I
' I
I
I
.I
,Phase 6 I
~
-i
,Phase 63,
' I
"
,Phase
641I
L---

Licensed Material - property of IBM

This section contains two directories to be
used in con;unction with microfiche
listings of-the compiler. Microfiche names
are usually the same as the load module
names shown in the directories. Figure 62
associates load modules (listed in phase
or der) wit h object module na mes, the C SECTs
they contain, the flowcharts in which they
appear, and the chapters of this
.
publication in which they are described.

Figure 63 associates external symbols
(listed in alphabetical orde1;) with the
load modules in which they appear. Those
external symbols that are CSECT names are
designated as "SD." Those that are
location definitions within a CSECT are
designated as "LD."

r-------,,----------~----------~i~----~

Load
I
Entry
I
CSECT
Module I
Point
I
Names
I
I
I
IIKFCBLOO START
IIKFCBLOO
I
IPHOSECT2
I
I PROTBST1
I
IPHOTBST2
I
1TBDATA
I
1
I
1
I
I
--+
I
IIKFCBL01
IIKFCBL01
I
1
,
-:of
__+
IIKFCBLC21
IIKFCBL02
1
I
I IKFO 21
l-I
I
IIKFCBLC3
IIKFCBL03 I PRC3
I
I
I
I
I
I
r-----:of
.---__+
I IKFCB!.04
I IKFCB~041 STRTI?H04

i

------------------.----------------,

IFlow- IRefer tol
I
Icharts IChapter I
Function
I
I
I
I
"
tAA
IPhase 001 provides an interface between
I
I
I
I
the operating phases of the
1
I
I
I
compiler and between the system I
I
I
I
and the compiler.
Handles tablesl
I
, l a n d the dictionary for the
I
operating phases, as well as
1
I
I
I
I
I
1
requests for system input/output 1
operations.
I
I
I
I
I
I
I
---I
IBA
IPhase 011 contains installation default
I
1
I
1
values of compilation parameters. 1
I
I
I
"
IBB
IPhase 021 Initializes the compiler.
I
I
I
I
1
I
I
I
"
I BC
IPhase 031 Issues error messages and returns I
I
I
I
to phase 00 to terminate a
1
II·
I
compilation.
1
I
I
I
"
I
IPhase 041 Performs COPY/BASIS functions.
I
~~------~I----------+I·------·--~I~---t_
I
---I
IIKFCBLCSI
I IKFOS01
I
1Phase 051 Analyzes syntax of source program 1
II
I
I
1
and inserts syntactic markers fori
I
I
I
I
I
I
1
Lister processing.
I
~1------41--·---------r1---------r1--~+_--__+
---I
IIKFCBL061
IIKF0601
1
IPhase 061 Inserts cross-reference information I
I
I
I
I
I
into source program based on
I
I
I
I
I
I
I
I
syntactic markers.
1
r
I
I
I
I
I
---I
IIKFCBL081
I IKFC801
I
IPhase 081 produces Lister output.
.
I
r
I
__+
I
I
I
"
leA-CD IPhase 101 Reads the Identification,
1
IIKFCBL10lPH1A
IIKF1C1
I
I
I
I
I
I
Environment, and Data Divisions 1
I
I
I
I
I
I
of the source program and stores I
I
I
I
I
I
I
the information in tables, the
1
COMMON communicatior.s area, and I
I
I
I
I
I
I
I
I
I IKF118
I
I
I
Data IC-text for phase 20.
I
~~------~I----------+i---------I~---4-1
---:of
_---I
IIKFCBL121PHRW
IIKF101
ICE-CJ IPhase 121 Process.es Report Section of the
1
I
I
I
I
I
I
Data Division and generates
1
I
I
I
I
I
I
Report Writer Subprogram.
I
I
I
1
1
I
1
1
I ____ I ____________ I IKJi'114
I ______ I
1
___________4,
II
~'--

~LL-

Figure 62.

~,

I

.~

Load Module Directory (Part 1 of 4)

Microfiche Directories

317

License4 Baterial -

.--,

Property of IBM

i

I Load
,Entry
Point
I Module I

.. -

I

.....

I

I
I

i

CSECT
Names

I

---t

I

.,

JPhase 1BIReadsthe Procedure
Division of
I
I
the source program and stores
its information in tables, the
I
I
I
I
dictionary, and PO-text and
I
I
Listing A-text.
I
I

I

I-I
IDA-DD
I
I
I
I
I
I

I

I

I
I
I IKF209

I

IIKFCBL221START22
I
I
I
I
I
I
I
I

IIKP202
I
I
I
IIKF209

I

I

I

I--

I

IIKFCBL211PH2
I
I
I
f
I
f
I
I
I
I
I
I
I
I
I
I

IIKF201
I IKF203
I IKF205
IIKF207
IIKF209
IIKF211
IIKF213
I IKF214
I IKF215

I

IIKFCBL251PHASE25
I
I
I
I
I
I

-;.

I KFCBL3C I IKFCBL3C
f
I
I
I
I
I
I
I
f
I

I
I
I

I
I
I

f
I
I

I
I
I

L-

i-----t

IDE-DL
I
I
I
I

I

fDM-DN
I
I
I
I
I
I
I
I

-t

---t

Phase 211 completes FD and SD dictionary
I
entries and writes Data A-text
I
for DCBs, DECBs, and bU,ffers.
I
I
I
I
I
I

I

I

I

I

I

f

I

.,

EA-EC IPhase 3 1 Reads the PO-text from phase1B,
1
I
f
replaces the procedure-names withl
I
I
their dictionary attributes,
I
expands SEARCH statements and
I
I
I
f
CORRESPONDING clauses, and writesl
I
I
I
the text as P1-text for phase 4. I
I
I
Also produces a Data Division
I
glossary, i f requested.
Writes
I
I
I
I
I
procedure name DEF-:otext for phase I
I
I
6A, i f a cross-reference listing f
I
I
has been requested.
.
I

+-

I

IKF409
IKF401
IKF406

I

I.
I
!

Section 4.

Directory

Directory

---t

Phase 351 Scans USE FOR DEBUGGING declaraI
tives.
Inserts debug verbs into
I
procedure IC-text, i f required.
I

I
I
I

Modu1~

I
I
I
I
I
I
I
I
I

IPhase 251 Produces the DATATAB and OBODOTAB
I
I
I
tables on the Debug data set
I
I
I
(SYSUT5) i f the SYMDMP option is I
in effect.
I
I
I

IKF40B
IKF40BL
IKF40C

Load

---t

IDO-DR
I
I
I

IIKFCBL30
1
I
I
I
I
I
I
I
f
f

I

I
I
I
I
I
I
I
I

IPhase 221 Reads Data IC-text and ATF-text
I
I
I
and generates dictionary
I
I
I
entries. Also generates
I
I
I
Q-Routines and DEF-text, and com-I
I
pletes Data A-text from phase 20.1

"J

Fiqure 62.

318

I
J

IPhase 201 Reads the Data IC-text from phase
I
I
10 and creates ATF-text for
I
I
phase 22. Produces incomplete
I
I
Data A-text for VALUE clauses.
I
I
I
I
I
I
I
I

I
I
I
I
I
I

IIKF251
I IKF252
IIKF25A
I

...----+
---+
I IKFCBL3S I IKFCBL35
IKF40A
I
I
I

I
I

Function

I

I

ISDDEF2
I (or IKF200)
I IKF20 1 B
I IKF202
I

I
I
I

"

ICK
I
I
I
I
I

I IKFCBL201 PH20
I
I
I
I
I
I
I
I
I
I
I
I
I
I

r--

i

ISDDEF1
IIKF101
I
I
I
I IKF1 OC

---'---t

IIKFCBL1BIPH1B
I
I
I
I
I
I
I
I
I
I

i

I Fl·.ow- IRefer tol
IchartslChapter I

(Part 2 of 4)

Licensed Material - Property of IBM

,I

r-------.-------------.i----'-------.i--~--~i--------,_----------~---------------

, Load
I Module

L-

Entry
Point

I

I
1

CSECT
Names

I

I Flow- IRefer to
Ichartslchapter

1

Function

,

I
,--------t

IIKFCBL40lPH4
I (or CBLl KF40
I or PHINIT)

IKF40A
1 FA-FC phase 4
Performs syntax analysis on the
,
IKF40 B
,
P 1-text from phase 3, expands
1
IKF40B 1
&
each complex or implied verb
I
1
I
IKF40C
I
string into a series of simpler
I
I
IKF40D
I
strings, thus producing P2-text
I
I
1
I
IKF40E
I
for phases 50 and 51.
Produces
1
' I
IKF40F
I
ATM-text for the UNSTRING verb.
I
IKF409
I
1
I
I
I
IKF401
I
I
1
1
IKF406
1
1
I
Ir1
--t
- - - i - I- - - 1 - - - - - - + - - - - - - - - - - - - - - - - 1
IIKFCBL451PHASE45
IIKF450
IFD-FF IPhase 451 Translates ATM-text from phase 4
I
1
I
I
1
for the UNSTRING VErb into
1
1
1 (or PH45)
I
I
I
1
I
P2-text for phase 51.
I
1

I
I

I
I
L

I
I

I
I IKF4 53

--4

I '

,

I

I

,

,
,

i

-+-------~I----+I-----~I--------------

IIKFCBL50,PHASE50
I
I
I
I
I
1
1

IIKF501
I
I

IGA-GE
1
I
I
1
1
J

Phase 501 Begins to break down the P2-text
1
I
from phase 4 int.o assemblerI
I
language-like statements that
I
I
I
generally have a one-to-one
I
IIKF503
1
correspondence to machine
1
IIKF50A
t
instructions.
These are written I
1
I
as Intermediate A-text,which
I
I
I
I
1
consists of Intermediate
I
!
J
1
I
Procedure A-text and Intermediatel
I
IIKF50F
I
1
optimization A-text for input to I
1
IIKF504
I
I
phase 51.
Phase 50 also
I
I
I IKF505
1
I
produces optimization A-text to
I
I
I
I
I
help phase 6 or 62 to eliminate 1
I
I
1
I
I
storage duplication.
I
L------f
--t
I
I
-I
rIKFCBL511PHASE51
IIKF501
IGF-GJ IPhase 511 Completes the breaking down of P2- 1
,IKF503
1
I
1
text into assembler-language-likel
1
1
1
I
1 IKF502
I
J
I
statements that generally have a I
1
I
IIKF50A
1
I
I
one-to-one correspondence to
1
J IKF50G
I
1
1
machine instructions.
These are I
I
1
1
I
1
1
I
1
written as Final Procedure A-text,
I
1
I
1
I
1
for phase 6 or phases 62 and 63. ,
I
I
1
1
1
1
It also produces Optimization
1
I
1
I IKF5CM
1
I
1
A-text to help phase 6 or 62 to
I
I
I IKF504
I
I
I
eliminate storage duplication.
1
1
I
1
1 IKF505
I
I
,
1
1------+--------+1- - - - - - - + 1
1
----t
IIKFCBL60 PHASE6
IKF601
IHA-HF ,Phase 6
Combines all the information from I
I
(or PH6)
I
I
Procedure A-text, Optimization
1
' I
A-text, and Dat.a A-t.ext into an 1
1
J
J
object module.
Produces an
,
1
IKF609
I
I
object program listing, if
I
1
1
IKF610
1
J
requested.
Writes REF-text on
1
I
I
reference to data-names, fileI
1
J
names, and procedure-names for
1
1
1
I
I
phase 6A, if a cross-reference
I
1
I
I
I
listing has been requested.
I
' I
Writes Debug-text if the STATE
I
1
I
option has been requested.
1
1
I

--+-

I---

I

1

IIKFCBL621PHASE62
I
1
1
1
I
1
1
I
1
1

IIKF62
I IKF623
IIKF625
,IKF626
IIKF627
IIKF628

'--

' "

Figure 62.

IIA-ID
1
1
I
1
1

I

----t

JPhase 621 Reads optimization A-text and
1
J
optimizes literals and virtuals;
I
I
reads Procedure A-text and
I
1
calculates Procedure block
I
1
numbers. Produces partial list1
1
ings for DMAP, CLIST, and PMAP.

Load Module Directory (Part 3 of 4)

1
,
1
1
1

I

I

Microfiche Directories

319

Licensed Seterial -

,------~

I Load
I
I Module I

...-

Entry
Point

I

IIKFCBL631PHASE63
I
I
I
I
I
I
I
I
I
I
I
I

Property of IBM

---TI----------~I~----~I--------rl--------------·---------------------,

I
I

CSECT
Names

--+

IIK,F63
IIKF631
I
I
,
I
,

...--------f
IIKFCBL641PHASE64

---+

IFlow- IRefer tol
IchartslChapter I

' I

I

"

I

---+

IIKFCBL651PHASE65
I
I (or PH65)
I
I
I
I
I
I
I
I
I
I
I
I
I
I

----t

,IE-IJ IPhase 631 Produces Procedure A1-text from
I
I
I
,Procedure A-text, generating all I
I '
I
remaining instructions for the
I
I '
I
object program with the exceptionl
I
I
I
of certain load instructions.
I
I
I
I
Writes Debug-text i f the STATE orl
"
I
SYMDMP option has been requested.,

,IKF64
IIK-IO
I '
IIKF643
,
IIKF644,
I
I
IIKF645
t
I
I
I
I
I IKF6455,
I
I IIK F6 46
I
I
I
I IKF6 4 7
I
I
I
, IKF6 48
,
~-----t

I
J

Function

.

IPhase 641 Processes Data A-text and Proce,
I
dure A1-text and completes the
I
I
object text.
Produces an object
I
I
program listing, i f requested.
I
I
Writes REF-text for phase 6A.
I
I
,
,
,
I

.,

,
I
I
,

I
I
,
I

--------rl-----+-------~I----,----------------------------~I

IIKF651
I IKF652
I IKF653

IIP-IQ ,Phase 651 Produces debugging information for I
I
I
, t h e SYMDMP. FLOll, and/or STATE
I
I
I
(options in the TGT.
Adds the
I
I
I
I
I
PROCTAB and SEGINDX tables
I
I
I '
I
to the object module after INIT3 (
I
I '
I
for STATE; completes the Debug
I
( d a t a set (SYSUT5) for SYMDMP.
I
I
I
I
,Called only i f SYMDMP. FLOW.
I
I
I
I
I
I
I
I
and/or STATE has been requested. I
...------f--------t
----+1-----·+------+-I- - - - - - - - - - - - - - - - - -..,
IIKFCBL6AI
IIKF6A01
IR
IPhase 6AI Writes a cross-reference listing
I
,
I
from DEF-text and REF-text.
I
I
I
I IKF6A 02
I
I
I IKF601 A
I
I
listing has been reguested.
I
I
I
I
' I
listing has been requested.
,

...------f--------+
IIKFCBL70 PH7
I
(or IKFCBL 70)
I
I
I
I

I

f

.,

,IKF701
JA
,Phase 701 writes error messages for phases 10 I
I IKF702
,
I
through 65, i f a listing of error I
IIKF703,
I
messages has been requested.
I
I
"
Called only i f program errors
,
I
I
I
ha ve been detected during
I
I
I
I
compilation.
(

I--

J.

I

I

IIKFCBL71 IKFCBL71
I
I

IIKF711
I
I
I
(IKF7:21
(
I

IJA
I

IPhase 711 Contains message text for error
(
I
(messages generated by phases 20, (
1:2:2, 21. or 25.
I
I
I
----t
,Phase 72( Contains message text for error
(
(
I
messages genera ted by phases 3,
(
1
( 4 , "5, 50. 51, 6, 62. 63, 64. or I
I
I
65.
I

I-

.

IIKFCBL721IKFCBL72
I
I
I
t

((

...--------f-

I

---+

IIKFCBL8CIIKFCBL80
CHKCOPY
( I
CHKGLBLS
I
DATA SCAN
(
ENVSCAN
I
FIPSVT
GETLINE
I
I
GETWORD
I
IDSCAN
I
IKFCBL80
(
MSGHNDLR
MSGWRITE
I
I
PROS CAN
I
PUTLINE
I
VERBeEK
____- 4_____________
____
L-

~~--

Figure 62.
320

Load Module Directory

Section 4.

Directory

(

f

I'
I
IJA
I
I

I
I

I

I

Phase 801 Scans the source program for
I
deviations from the Federal
I
Information processing Standard
I
(FIPS) and produces a listing.
I

I
I
I
I
I
~

--~

___

I
I
(
~

(Part " of ")

I

f

Licensed Material - property of IBM

I

1
IExternal
ISymbol*

---r,--

i

ICSECT
I
Iwhere LD I
IType
IAppears I
I
I
---+
1
-f
ICBLIKF40
ILD
1IKFCBL40 IIKF408
1
1
I
1
I
1 (or PR4
I or PRINIT)
I
I
1
1
II
--+
I
of
ICHKCOPY
ISD
1IKFCBL80 1
1
1CHKGLBLS
1
1
I
I
1DATASCAN
I
1
I
I
IENVSCAN
I
I
I
I
I FIPSVT
I
I
I
I
IGETLINE
I
I
I
I
IGETiORD
I
I
I
I
I ID SCAN
1
I
1
I
I
I
I
+__
of
IIKFCBLOO
ISD
IIKFCBLOOI
I
II
--+
1
-of
IIKFCBL01
ISD
I IKFCBL01 I
I
1
1--+
+__
I
IIKFCBL02
ISD
IIKFCBL021
I
I
I
+__---of
1
IIKFCBL03
ISD
I IKFCBL03 I
I
I-I
--+
I
of
I IKFCBL04
ISD
I IKFCBL041
I
I-I
--+----+__
I
IIKFCBL20
ISD
I IKFCBL20 I
I
I
I
I
+__
of
IIKFCBL22
ISD
IIKFCBL22j
I
II
--+
I
I
IIKFCBL30
ILD
IIKFCBL301
I
I-I
I
+__---of
IIKPCBL60
ISD
I IKFCBL60 I
I
I-1
I
I
I
IIKFCBL65
ISD
I IKFCBL65 I
I
I-I
1
•
-f
IIKFCBL71
ISD
IIKFCBL71I
I
II
--+
I
-of
IIKFCBL72
ISD
I IKFCBL72 I
I
I
+-----+
I
. -f
IIKFCBL80
ILD
IIKFCBL80lI.FCBL80 I
I
I
--+
l----of
IIKF0501
ISD
IIKFCBL051
I
I
I
I
I
-f
IIKF0601
ISD
I IKFCBL06 I
I
1
I
--+
I
-of
IIKF0801
I SD
I IKFCBL08 ,
I
I-I
--+----+__
-f
IIKF021
ISD
I IKFCBL02 I
I
I--+----+
I
t
IIKF101
ISD
IIKFCBL101
I
I
I.
I
1
I
I
I.
I
I
I
I.
1•
1
I
I
IIKF118
ISD
1IKFCBL10 1
1
I-'
..L.-of
1*Use of "also" implies two separate CSECT 1
1 cards, where one CSECT has a lengt.h of I
I
1 zero in storage; "or" applies to LDs
1 wh ich are equa ted.
1
'-

I Loadl
I Object
1Module

Figure 63 (Part 1 of 5).
Directory

External symbol

'

,

I
IExternal
I symbol'"
I
IIKF101
I
I
I.
IIKF114

,

~

I
I
IType
I
ISD
I•
I.
1•
ISD

I------------~I-·--+

IIKF101
I
I
I
IIKF109

I--

ISD
I•
I•
I.
ISD
I

ISD
I.
1•
I.
1•
I.
I•
I.
ISD
I
ISD
I.

,
I.

I.'
1•
I

I

1
I
1
I
1
I
1
I
I

--~I------~t

IIKFCBL1BI
I
1
I
I
I
I
I
I
I
I
IIKFCBL1BI
I
--+----+__----.-f
IIKFCBL21I
I
I
I
I
I
I
I
I.
I
I
I
I
I
I
I
I
I
I
I
I
I
I
IIKFCBL21I
I
--+----+__
I
IIKFCBL201
I
I'
I
I
1
I
1
1
I
1
I
I
1
1
I
1
I
1
I
I
I
I
I IKFCBL20 I
I
--+
I
1
I IKFCBL22 I
I
I
I
I

IIKF201
I IKF 203
IIKF205
I I KF 207
I IKF209
IIKF211
IIKF213
IIKF214
IIKF215
I-IIKF201B
IIKF202
1I KF 203
IIKF204
I IKF 205
IIKF 20 6
I IKF 20 7
I IKF208
IIKF209
I-IIKF202
I

IIKF209
I-IIKF251
IIKF252
IIKF2SA
1
IKF40A
IKF40B
IKF40B1
IKF40C
IKF40D
IKF40E
IKF40F
IKF409
IKF401
IKF406

ISD
I•
I.
I•
I.
I.
I.
I.
ISD

--.".-------..,

I Loadl
ICSECT
I Object Iwhere LD
I Module IAppears
I
I
IIKFCBL121
I
I
1
1
I
I
I IKFCBL12 I

I
I

I~KFCBL221
I
1
1
I
IIKFCBL251IKFI51
I
I
I
I
1
1
1
I
I
-f
IKFCBL401
I
I
I
I I
I
I
.1
I
I
I
I
I
I
I
I
I
SD
IKFCBL40 I
I
-f
*Use of lIalso" 1mplies two separate CSECTI
cards, where one CSECT has a length of I
zero in storage; lIor" applies to LDs
I
which are equated.
1

'-

ISD
I
ISD
ISD
ISD
I
SD

I
I

Figure 63 (Part 2 of 5).
Directory

External Symbol

Microfiche Directories

321

'

Licensed Material - Property of IBM

r---

--~Ir------TI------~I~-------'

I
I External
I Sym bol*
I
IIKF4SO
IIKF4S1
IIKF452
IIKF453
I
IIKFSOl
IIKF502
I IKFS03
,IKF SOA
IIKFSOB
IIKFSOC
IIKFSOD
IIKFSOE
IIKFSOF
IIKFS04
I IKF505
I
IKFS01
lKFS02
lKF 503
lKF50 A
IKFSOG
lKF50H
lKF501
IKF50J
IKFSOK
IKF50L
IKFSOM
IKF504
1KFS05

I
I
I Type
I
ISO
I.
I.
ISO

I Load/
ICSECT
I Object I where LO
I Module I Appears
I
+-IIKFCBL451
I
I
I.
I
IIKFCBL45I

I
I
I
of

I
I
I
I

--~I-----+I------~I~------of

ISO
I.
I.
I.
I.
I.
I.
I.
I.
I.
ISO

IIKFCBL50
I
I
I
I
I
I
I
I
I
I IKFCBL50

--~I----~I~-----+I------~

t--

ISO
I.
I.
I.
I.
I.
I.
I.
I.
I.
I.
I.
ISD
I
ISD
I
ISO
I
ISD
I.
I.
I.
ISD
I
ISD
I•
I.
I•
ISD

IKFCBL51

IKFCBL51
I
+-IIKFCBL6AI
I
I
I1KFCBL6AI
I
I
IIKFCBL601
I
I
I
I
I
I
IIKFCBL601
I
I
I IKFCBL65 I
I
I
I
I
I
I
I IKFCBL65 I

I
I
,
I
t-.f
I1LF601
I
I
I
I
I
I
I
IIKF609
I
I
,
IIKF651
I
!
I
I
I
I
I
IIKF656
I
~
" I
of
I*Use of "also" implies two separate CSECTI
I cards, where one CSECT has a length of I
I zero in storage; lIor" applies to LDs
I
I which are equated.
I

IIKF6A01
II1KF6A02

1

,

Figure 63 (Part 3 of 5).
Directory

322

Section 4.

Directory

External Symbol

,---

i

~

I

C

I
I External
Isymbol*
I
IIKF701
I
I
I
IIKF703
I
IIK,711
I
IIKF721

1
I Load/
ICSECT
I
I
IObject I where LD I
IType IModule I Appears I
I
I
I
I
ISD
IIKFCBL701
I
I•
I
I
I
I•
I
I
!
I•
I
I
I
ISD
IIKFCBL701
I
I
I
+-of
ISO
IIKFCBL71I
I
I
I
l----t
ISD
I IKFCBL72 I
I
t-I
--+
+--§
I MSGHNDLR
ISD
tIKFCBL801
I
,
I
--+------1-,
IHSGWRITE
ISO
IIKFCBL801
I
t-I
I
+-~
IOPENEXIT
ILO
IIKFCBL80lIKFCBL80 I
+__---1
I
I
I
IPHASE45
ILO
I IKFCBL45IIKF450
I
t-I
I
+__
.f
IPHASE50
ILO
IIKFCBL50iIKFS04
I
I-I
---+----+__
I
IPHASES1
ILO
IIKFCBL51IIKF504·!
I(or PH51)
I
I
I
I
I-I
---+----+__
,
IPHASE6
ILD
IIKFCBL60lIKF601
I
, (or PH6)
I
I
I
I
t-I
I
+__
I
IPHASE65
ILO
IIKFCBL651IKF651
I
I (or PH65)
I
I
I
I
I
I
---+
I
,
IPHINIT
ILD
I IKFCBL40 IIKF408
I
I
I
I
I
I (or PH4
I or CBLIKF40)
I
I
I
I
I
I
--+
~
--I
IPHRW
ILD
I IKFCBL12 IIKF101
I
t-I
I+--.,
IPHOSECT2
ISD
I IKFCBLOO I
I
I-I
---+
I
I
IPHOTBST1
ISO
I IKFCBLOO I
I
I
I
I
+-of
IPHOTBST2
ISO
IIKFCBLOOI
I
I,---+
I
--I
IPH03
ILD
IIKFCBL03IIKFCBL03,
II
I
+-of
IPH1A
ILO
IIKFCBL10lIKF10l
I
I-I
---+----+__
.f
IPH1B
ILD
IIKFCBL1BIIKF101
I
I'
I*Use of "also" implies two separate CSECTI
I cards, where one CSECT has a length of I
I zero in storage; "or" applies to LOs
I
I which are equated.
I

-L--.,
I

L--

Figure 63 (Part 4 of 5).
Directory

External Symbol

Licensed Material - Property of IBM

r--

I
I External
Isymbol*
lIPH2
~

IPH20
I-IPH4
I (or CBLIKF40
I or PHI NI T)
~

IPH45

~

IPH6
I (or PHASE6)

~

IPH65
I (or PHASE65)
~

IPH7

~

I PROCSCAN
~

IPUTLINE
~

IRTRN85
~

ISDDEF1
I (also IKF101)
lISDDEF1
~

ISDDEF2
I (also IKF200)
I
I START
lISTART22
~

ITBDATA

~

i

----r

I

--+

I

I

I
I Loadl
I CSECT
I
I
IObject I where LD I
IType I Module I Appears I
I
-+----+__
I
ILD
IIKFCBL211IKF201
I
+__
I
I
~
ILD
IIKFCBL20lIKFCBL20 I
I
--+
I
,
ILD
IIKFCBL40lIKF408
I
I
I
I
I
I
I
I
I
I
I
I
--t
ILD
I IKFCBL45IIKF450
I
I
--+
I
~
ILD
I IKFCBL60 IIKF601
I
I
I
I
I
I
I
+__
~
ILD
IIKFCBL651IKF651
I
I
I
I
I
I
--+
I
~
ILD
IIKFCBL70lIKF701
I
I
--+
I
I
I SD
I IKFCBL80 I
I
I
--+
I
~
ISD
IIKFCBL801
I
I
I
+__
,
ILD
IIKFCBL80lIKFCBL80 I
I
I
I
~
ISD
IIKFCBL101
I
I
I
I
I
I

~

ISD
IIKFCBL1BI
I
I
--+-----+__----1
ISD
I IKFCBL20 I
I
I
I
I
I
I
--+
+__
I
ILD
IIKFCBLOOIPHOSECT2 I
I
--+
I
~
ILD
IIKFCBL221IKF202
I
I
I
I
I
ISD
IIKFCBLOOI
I
I
I
I
~
ISD
I IKpCBL80 I
~

IVERBCHK
I-I *Use of "also" implies two separate CSECT I
I cards, where one CSECT has a length of I
I
I zero in storage; "or" applies to LDs
I
I, which are equated.
,
Figure 63 (Part 5 of 5). External Symbol
Directory
I

I

I

,

Microfiche Directories

323

Licensed Material - property of IBM

SECTIQN 5.

COMMUNICATIONS AREA (COMMOEl

r

I
lI
I
I
I
I
I
I
I
I
I
I
I

The communications area (COMMON) is
resident in storage throughout compilation
at the beginning of phase 00. The format
of COMMON is defined as DSECTs in the
remainder of the phases and, therefore,
each phase can refer to any cell in COMMON
by its own name.
Phase 00 passes a parameter list to each
phase, the first word of which always
contains the address of COMMON. The phases
use this value to set up and maintain. a
register which points to COMMON, as shown
in Figure 64.

•

Phase
01
02
03
04
05
06
08
10
12
1B
20
22
21
25
3
35
4

Much of the information saved in COMMON
by phases 10 through .51 is used by phase 6
or 62 to form the Task Global Table (TGT)
and Program Global Table (PGT) of the
object program.
When the BATCH option has been
specified, certain cells in COMMON are
reset to their original values by routines
in phase 02 for subsequent compilations
after the first. These cells are indicated
by an asterisk following the cell name.

50
51
6
62
63
64
65
6A
10
80

section 5. Data Areas

Register
**
10
12
**
09
12
09
1
1
1
11*
1
1
10
**
",*
**
10

no

9

9
9

9
9

10
9
**

I *Except during ACCMET routine.

1**No register maintained throughout
". phase •
Figure 64. Registers pointing to COMMON·
•

324

DATA AREAS

L'_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _~

Licensed Material - Property of IBM

&s!!
cos

JU.U.§

12

Disp lace me nt
Hex; Decimal
o
0

TIBOTIB3S.

8 each

OOC

12

APRII!2
AIHSRT
ADSTAT
RELADD
TAMNAD

4 each

12C
130
134
138
13C

300
304
308
312
316

Address constants of TAMER routines used by the
phases in table management requests.

ACCESW*

1

140

320

ACCESS initialization switch (see "Appendix A.
Table and Dictionary Handling").

AMAlU

3

141

321

Pointer to the main free area'for tables and the
dictionary.

324

pointer to the "last entry in the TAMM table (see
"Appendix A. Table and Dictionary Handling U ) .

NO. of

ALSTA!

purpose
Executable instructions. This section of code is
used as an entry point to phase 00 by other
phases. See "Receiving Control from Another
Phase" in the chapter "Phase 00."
Table Information Blocks (TIBs) used by TAMER (see
"Appendix A. Table and Dictionary Handling") •
TIB20 is reserved for the DICOT table, and TIB30
is reserved for the HASH table. The rest are
aSSigned to various compiler tables throughout
compilation; one 'lIB may be reassigned when the
table for which it was used is released.

LOCCTR*

4

148

328

Relative address of the next location available in
the object program. It is incremented by phases
22 and 21 as they assign locations to data and
then by phase 6 or phases 62, 63, and 64 as they
assign locations to the Global Tables and
procedure instructions.

PROGID·

8

14C

332

PROGRAM-ID from the Identification Division of the
source program. It is saved to be used as the
CSECT name of the object module. If the program
is segmented, the name is the CSECT name of the
root segment, and its first six characters are
used with priority numbers to name the other
segments.

LABELS·

2

154

340

Label information.

PRBLDISP

2

156

342

Displacement of PROCEDURE BLOCK cells in the PGT.

PRCTR·

2

158

344

Used in phase 1B as a counter for assigning unique
PH numbers to source program procedure-names. In
phase 6, it is set to the displacement of the PN
field from the beginning of the PGT.

GRCTa·

2

1S1

346

Used in phases 10, 1B, 22, 4, 50, and 51 as a
counter for assigning unique GN numbers to
compiler-generated procedure-names. In phase 6 or
62, ,it is set to the displacement of the GN field
from the beginning of the PGT.

VIRCTR·

2

1SC

348

Used in phases 50 and 51 as a counter for assigning
unique identifying numbers to virtuals (names of
external procedures). In phase 6 or 62, it is set
to the displacement of the VIRTUAL field from the
beginning of the PGT.

Communications Area (COMMON)

325

Licensed Material - Property of IBM

No. of
Bytes

Di~placement

Hex. Decimal

2

15E 3SO-

Purpose
Used in phases 50 and 51 as a counter to save the
number of literals. In phase 6 or 62, it is set
to the displacement of the LITERAL field from the
beginning of the PGT.

WCMAX*

2

160

352

set by phases 50 and 51 to the size of the largest
work area needed by any COBOL library subroutine.
In phase 6 or 62, it is set to the displacement of
the WORKING CELLS field from the beginning of the
TGT.

TSMAX*

2

162

354

TS2MAX*

2

164

356

Set by phases 50 and 51 to the maximum number of
doubleword cells needed for temporary storage at
execution time by arithmetic verbs. In phase 6 or
62, i t is set to the displacement of the TEMP
STORAGE field from the beginning of the TGT.
Set by phases 50 and 51 to the number of bytes
needed for temporary work areas by nonarithmetic
statements. In phase 6 or 62, it is set to the
displacement of the TEMP STORAGE-2 field from the
beginning of the TGT.

ODOCTR*

2

166

358

Set in phase 22 to the number of Q-Routines
generated to initialize a field which contains an
OCCURS ••• DEPENDING ON clause the object of which
is ~n item in Working-Storage or Communication
section or is in a basic file. A Q-Routine is a
subroutine which. at execution time, calculates
the length of a variable-length field created by
the OCCURS ••• DEPENDING ON option, and the location
of the variably-located field which may follow it.
It is used in phase 6 or 64 to set up table QTBL.

CKPCTR*

2

168

360

Set in phase 21 to the number of checkpoint
requests. It is used in phase 6 or 62 to allocate
space for the CHECKPT CTR field of the TGT. Phase
6 or 62 sets it to the displacement of the CHECKPT
CTR field from the beginning of the TGT.

SBLCTR*

2

16A

362

Used in phase 22 as a
identifying numbers
(SBLs). In phase 6
displacement of the
of the TGT.

counter for assigning unique
for secondary base locators
or 62, it is set to the
SBL field from the beginning

VLCCTR*

2

16C

364

Used in phase 22 as a
identifying numbers
(VLCs). In phase 6
displacement of the
of the TGT.

counter for assigning unique
for variable length cells
or 62, it is set to the
VLC field from the beginning

BLLCTR*

2

16E

366

Used in phase 22 to assign unique identifying
numbers to Linkage Section base locators. In
phase 6 or 62, it is set to the displacement of
the BLL field from the beginning of the TGT.

SEQERR*

2

170

368

Count of source cards whose user-written card numbers are out of sequence. Set by phases 10 and
1B, and used by phase 70 in error message
processin g.

DICND2*

4

174

372

Dictionary pointer for the last dictionary entry
made in phase 22.

Cell
L"TLCTR*

326

Section 5. Data Areas

Licensed Material - Prop erty of

Cell
DICND1*
WSDEF*

No. of
Bytes

Displacement
Hex. Decimal

4

178

-376

7

17C

3BO

IB~I

Purpose
Dictionary pointer for the last dic,tionary en·try
made in phase 1B.
Set in phase 22 to the last seven bytes of the Data
A-text element for Working-Storage section address
definition, which gives the first base locator
number. the starting address, and the length of
the ~orking-Storage Section. When phase 6 or 62
assigns permanent base registers for base
locators, it uses this information because it
assigns base registers to the Working-Storage
Section first.
Meaning
starting address of
Working-storage

Name
HSSTRT
HSBL

1

BL number assigned to the
beginning of Working-Storage

USSIZE

3

Number of bytes occupied by
tforking-storage

ERRSEV

1

183

387

Set by phases 21g 3, 4, 50. and 51 to the highest
error severity level encountered in any phase.
When phase 00 returns to the operating system, it
passes a return code which indicates the highest
sr.ror severity level encountered in the program.

DICADR*

4

184

38B

ACCESS communication cell (see "Table and Dictionary
Han dl in gil) •

DLSVAL*

4

188

392

ACCESS communication cell.

DICPTR*

1

1BC

396

ACCESS communication cell.

DCPTR*

3

1BD

397

ACCESS communication cell.

RPTSAV*

2

190

400

set by phase 10 if a Report ~lri ter save area is
needed at execution time. Used by phase 6 or 62
to determine whether that area should be set in
the TGT and then set to the displacement of the
RPTSAV field from the beginning of the TGT.

SA2CTR*

2

192

402

Set in phase 51 if a USE AFTER (BEFORE) STANDARD
LABEL or USE AFTER STANDARD ERROR procedure is
encountered. If this field is set, phase 6 or 62
reserves an additional area (SAVE AREA-2~ in the
TGT and enters its displacement in this cell.

LCSECT*

4

194

404

Length of the object module CSECT.

RGNCTR*

2

198

40B

Set by phase 6 to the number of unique GNs or, under
the optimizer version of the compiler, set by
phase 51 to the number of GNs requiring an address
constant cell in the PGT.

ERF4SW*

1

19A

410

SNitch used by phases 6 or 62 and 64 and 70.

PTYNO*

1

19B

411

Set by phase 51 to current priority number, and used
by phase 00.

communications Area (COMMON)

327

Licensed Material - Property of IBM

Cell
COMMAD

No. of
Byte§

Displacement
Hex. Decimal

.f.!!rpos~

2

19C Li"'12-

A comma followed by a decimal point. If the
DECIMAL-POINT IS COMMA clause is specified, the
order of the two is reversed; that is, a decimal
point is followed by a comma. This cell is set by
phase 10. This cell is used by phase 6 or 62 to
set SWITCH in the TGT, or by phase 65 to set
SWITCH with the STATE and/or FLOW options.

2

19E

414

Unused.

AMOVDC*

4

1AO

416

Address constant for TAMER routines.

SDSIZ*

4

1A4

420

Set by phase 22 to the size of the largest Sort File
Description (SD) Entry in the program.

1A8

424

priority number of the highest-numbered Procedure
Division section to be considered part of the root
segment. Set in phase 10 to the value specified
in the SEGMENT-LIMIT clause, or to 49. If phase
1B finds that the program is not segmented, it is
set to hexadecimal 'FF' as an indication to later
phases.

SEGLMT*

CURSGN*

1

1A9

425

Set in phase 10 to contain the literal specified in
the CURRENCY-SIGN clause, and used by phase 20 to
recognize this literal.

DATABDSP

2

1AA

426

contains displacement into SYSUT5 block of first
entry in DATA TAB table, set by phase 25 for use by
phase 65.

INDEX1*

2

1AC

428

Number of index-names defined in INDEXED BY clause.
Set in phase 6 or 62 to the displacement of the
INDEX field from the beginning of the TGT.

IOPTRCTR*

2

1AE

430

Number of input/output pointers for APPLY WRITE-ONLY
clause.

TS3MAX*

2

1BO

432

Set by phases 50 and 51 to the number of bytes
needed for temporary storage for the SYNCHRONIZED
option.

TS4MAX*

2

1B2

434

Set by phase 50 to the number of bytes needed for
temporary storage by table-handling verbs.

1B4

436

Set by phase 02 to the number of traces requested
for the flow trace option. The default is 99.
Used by phase 65 to fill in the DEBUG TABLE in the
TGT.

135

437

To save SYSX from PARM field for a batch compile.

1B5

437

Unused.

FLOWSZ*

SYSTX

1

RPNCNTR

2

1B6

438

Under the optimizer version of the compiler, set by
phase 51 to the number of PNs requiring an address
constant cell in the PGT. Used by phases 62, 63,
and 64.

AGETALL

4

1B8

440

Address constant for TAMER routines.

IDENTL*

4

1BC

444

Set in phase 6 or 64 to the relative location of the
first executable instruction.

BLCTR*

2

1CO

446

Used in phase 22 as a counter for assigning unique
identifying numbers to base locators for files and

328

Section 5. Data Areas

Licensed Material - property of IBM

No. of
Bytes

]isplacemenl
~ ~imal

Purpose
Working-Storage Section. In phase 6 or 62. it is
set to the displacement of the BL field from the
beginning of the TGT.

VNCTR*

2

1C2

450

Used in phase 4 as a counter for assigning unique
identifying numbers to variable procedure-names.
In phase 6 or 62, it is set to eight times the
phase 4 value.

ONCTR*

2

1C4

452

Used in phase
identifying
6 or 62, it
ONCTL field

PFMCTR*

2

1C6

454

Used in phase 4 as a counter to assign unique
identifying numbers to PERFORM control cells.
In
phase 6 or 62, it is set to the displacement of
the PFMCTL field from the beginning of the TGT.

PSVCTR*

2

1C8

456

Used in phase 4 as a counter to assign unique
identifying numbers to PERFORM save cells. In
phase 6 Or 62, it is set to the displacement of
field PFMSAV from the beginning of the TGT.

XSACTR*

2

1CA

458

Relative location within an EXHIBIT or SORT save
area of the next area to be assigned.
It is used
by phase 51 in processing EXHIBIT or SORT
statements and then is set to the total number of
bytes needed for the save area.
In phase 6 or 62,
it is set to the displacement of field XSA from
the beginning of the TGT.

51 as a counter to assign unique
numbers to ON control cells. In phase
is set to the displacement of the
from the beginning of the TGT.

(Not~:

this counter is used and then incremented, unlike other counters ~Ihich are incremented
and then used.
The increment is equal to the
number of bytes in the save area used.)

XSWCTR*

2

1CC

460

Used by phase 51 as a counter to assign unique
identifying numbers to EXHIBIT first-time switches
and special ON switches. In phase 6 or 62, it is
set to the displacement of field XSASrl from the
beginning of the TGT.

PH6ERR

2

lCE

462

Used by phases 6 or 62 and 64 and 65 to indicate
that an error message is to be generated by phase
70.
Bits 0-9 are correlated to messages IKF60011
- IKF6010I. Phase 70 checks bits 0-9 and if a bit
is set to 1, the corresponding message is
generated.

RELLOC*

4

1DO

464

Set in phase 6 or 62 to the relative location,
within the object module or root segment, of the
beginning of the TGT.

GTLNG*

2

1D4

468

Set in phase 6 or 62 to the length of the TGT.

VNILOC*

2

1D6

470

Set in phase 6 or 62 to the relative location of the
VN field from the beginning of the PGT.

VNLOC*

2

1D8

472

Set in phase 6 or 62 to the relative location of the
VN field from the beginning of the TGT.

SOBCTR*

2

1DA

474

Used in phase 4 as a counter to assign unique
identifying numbers to subscripted references.
In
phase 6 or 62, it is set to the displacement of
field SUBADR from the beginning of the TGT.
Communications Area (COMMON)

329

Licensed Material - Property of IBM

~

No. of
Bytes

Pll.RL1AX*

2

~L. Q~imai
1DC
476

PRBLNUM

1

1DE

478

Set by phase 62 to the number of Procedure blocks in
the program; used by phases 63 and 64.

SPACING*

1

1DF

479

Set by phase 02 to the number of spaces between
lines in the listing. Used by phase 6 or 64 for
the statistics portion of the listing.

CORESIZE

4

1EO

480

Set by phase 02 to the total number of bytes
available for this compilation. Used by phase 6
or 64 for the statistics portion of the listing.

COI1FLOW

1

1E4

484

Value for FLOW from EXEC card.

3

1ES

485

Unused

FIL5BUF

4

1E8

488

Used by phase 02 to store the address of the SYSUT5
buffer. Phases 25 and 65 also use this cell.

ADA TAB

4

1EC

492

Note address for the first block of the DATATAB
table of SYSUT5.

DATATBNM

2

1FO

496

Number of DATATAB blocks on SYSUT5.

OBODOTBN

2

1F2

498

Total number of bytes used for OBODOTAB entries on
SYSUT5. including the slack bytes needed to align
each OBODOTAB entry on a fullword boundary and
unused bytes at the end of a block.

NODECTR

2

'F4

500

Number of node counters.

PROCCTR

2

1F6

502

Procedure~name

AMICTR

2

1F8

504

Used by phase 21 as a counter for assigning unique
identifying numbers for File Information Blocks.
Phase 6 or 62 sets the field to the displacement
of the FIB field from the beginning of the TGT.

DBGLOC

2

1 FA

506

Displacement of TDBGTRA in the TGT.

SWITV2

1

1FC

508

Switch

Displa~ement

gy.rpos~

Set in phase 50 to the
needed for parameter
expansion of some of
phase 6 or 62, it is
the PARAH field from

330

1FD

Section 5. Data Areas

509

counter.

Bit
-,-

Meaning
The compiler will not
issue an abend for
D-Ievel message condition
and will generate the
message.
(NODUMP option)

CNTFDECL

0

Declaratives specified
for COUNT.

COBOL2

2

ANS 1974 interpretation.

LSTRETXT

3

If E-text from phase 04.

IHFOMSG

4

On if messages present
that FIPS cannot process.

Na.!!!!il
NODUMP

3

size of the parameter area
lists for macro instruction
the source statements. In
set to the displacement of
the beginning of the TGT.

Unused

Licensed Material - Property of IBM

Disp la ce ment
Hex. Decimal

£Stll

200-

TMCNTBSZ
VTINITVN

-512--

£.!!'£.P~~

Size of count table.

2

204

516

Virtual number for VSAM.

2

206

518

ReseL"ved

AMILOC

2

208

520

set by phase 62 to the number of FIB cells.
hy phase 64.

INTVIRT

2

20A

522

Virtual number for Initializa~ion routines ILnoINTO.
Used by phases 62-64.

LOCTMCTT

II

20C

524

Start of count table.

VIOHRN

2

210

528

virtJal number for ILBOV2CO.URed hy

J.I STERSif

1

212

530

Switch
N~.!!!g

LSTRDECK
LSTRPCH
LSTRCOMP
LSTRONLY
LSTRPRC2
LSTR132

ni.t

phas~R

Tested

62-64.

QJ!tiQ!!

o

FDECK
C!)F.CK
LSTCOMP
.LSTONLY
LCOL2
L132

1

2
3
II
<;

COLLOVAL

213

531

collating sequence LOW VALU.E.

COLHrvn

214

532

collating sequence HIGH VALUE.

CDLCCTR

3

215

533

LOCCTR for CO INITIAL

CO.LLITNO

2
2

218
21A

536
538

Literal number of PCS.
Unused.

DICTNAME

4

21C

540

pointer to dictionary name from LATPTR.

LNGDSP

2

220

544

Displacement of first LINAGE-COUNTER.

LNGBL

2

222

546

BT,

APLSCALL

4

224

1

228

548
552

Address of PLSCALL routine in phse OC.
Unused.

3
14

229

553

22C

556

Card number of first PM following declaratives.
Unused

INDEX

6

23A

570

Index all

DATE*

15

240

576

Set by phase 02 to the date and time of compilation;
reused as follows by phases 10 and 1B:

BUGSTCRD

number of first LINAGE-COUNTER.

U!:22

0-3
4-7
8-11
12-14

CRDNUM

3

BCOISP

2

~ani!l.9.

Number of data-names
Number of verbs
Number of source cards
Unused

Used to hold object deck card number durinq
processing by phases 62 through 64.
252

594

set by phase 6 or 62 to the displacement of the
EBCDIC NAME field in the PGT.

Communications Area (COMMON)

331

Licensed Material - Property of IBM

No. of

Displacement

!;;d!

lUtes

.!i§..L.. llf.£i.!!lt!

seneTR

2

254

596

.Rl!!:J2Qg
Set by phase 6 or 62 to the number of ERCOre names
to be placed in the PGT.
This number is
multiplied hy 8 durinq ph~se 6 or 62 processing
and th~ resulting amount of space is reserved in
the PGT.

LINECNTX

2

256

598

'1'0 S'l.ve

CO MPIT.ES

4

258

500

Number of compilations for the

eN'T'L INE

2

25C

604

Set by phase 02 to the total number of lines per
listing page.
Used by phase 6 or 64 for the
statistics portion of the listinq.

ERR N HM *

2

25E

606

Numher of errors for this compilation.

DBG0DISP

2

260

608

Displacement of ILB008G0 virtual cell from the
beginning of the PGT.

SA3CTR*

2

262

610

Set to four times the maximum number of files
specified in any OPEN statement.
Phase 6 or 62
reserves an additional area (SAVP. AREA-3) in the
'l'GT and enters its displacp.ment in this cell.

veONDISP

2

264

612

Displacement of VCON TOL field in TGT.

2

266

614

Unused

8

268

616

Used by phase ry3 to store registers
SYNADAF macro instruction.

snHIDR01

332

Section 5. Data Areas

LINECtlT from PIIRM

fi~ld

for

bat.ch compile.

a

option.

BATCH

~

and 1 for the

Licensed Material - property of IBM

~gll

No. of
Byte§.

ADDRCARD

4

DCBCTR*

2

PU~EQg

Address of the CBL card saved by phase 02 or 10 for
the BATCH option.
274

628

Used in phase 21 as a counter for: assigning un iqlIe
identifying numbers for DCBs (data control
blocks). In phase fi or 62, it is set to the
displacement of the DCBlDR field from the
beginning of the PGT.

OPTINSIf

276

630

Used to hold PJ.fZSW until PH ZSW is reset for t.h2
BATCH opt ion.

OPTINSW1

277

631

Used to hold PHZSW1 unt il PHZSW1 is rr; set for the
DATCH option.

OPTINSi2

1

278

632

Used to hold PH ZSli2 unti 1 PHZS 11'2 is r:eset for the'
BATCH option.

OPTINSi3

1

279

533

Used to hold PHZSW3 until PH'lSW3 is reset for: th;:>
BATCR option.

OPTINSi4

27A

634

Used to hold PH ZSW4 until PHZSH4 is reset for the
BATCH option.

NUKINC R

27B

634

SYMDMP card number increment.

27C

636

Number of definition text elempnts.

280

640

Set by phase 02 from the compilation option s.
the bit is on, the option \(a s choser..

DEFCNT

4

PRZSW

If

Equate
Bit.

QElj,21l

LIST
LISTX

0

SOURC~

1

PMAP

DECK

2

DECK

LIN.K

SEQ

3
4

LOAD
SEQ

l!~.!!ljg

FLAGli

5

FLII.(;W

LIBR

6

ZWB

7

LIB
ZWB

When SYNTAX is specifiad Phase 00 tnrns off all th?
bits to negate the options listed bplow. TF
CSYNTAX is specified ~nd 000 or more error: (~) or
disaster (D) l EXIT
statemgnt and thus which
Procedure Flock number is
contained in raaister 11 upon return
from the performed procedur8.

342

Section~.

Data lr?as

,

I
2
I
2
I
I
..
I
--+
~
I GN number I VN number , Block I
IL __________- L
I - - -________L
I -_______
number JI

Licensed Material - Property of IBM

HNDX
I 11)

Store information about
the first card number for
each program fragment
and user-written
discontinuity within a
segment for use by the
COBOL library subroutines
when SYMDMP is specified.

,

,

RY.!.E2§g

I
3
I
I
I
I
I
I
-t
I Card/verb numberl Priorityl Relative
I
I for first card I
I fragment
I
I in this group
I
I number
I
I
I
I within this I
I
G)
I ______- L
I -priority
- -_________ 1
~

L - - - -________

.I

]!!i!Lf!~gY~!!£:I

One entry for each program
fragment and one entry
for each noncontiguous section
other than the first within
a segment.

Phases Involved
Phase-6s-buIlds this table
while-reading Debug-text on
SYSUT4 on building the
PROCTAB table.
fha~2 writes this table
on 5Y5UT5 and COBOL
library subroutines use
this table to relate card
numbers to entries in
the PROCTAB table.
~H§
)-19

10-23

Contents
Card-number
Verb number
(verb number is always 0 or 1)

rBL

I 8)

Purp~

Save RERUN statement
information from source
program scan.
Entll-E.r.gguen£.y'
One entry for each
RERUN statement.
Phase Involved
Phase 1 Q builds this
table-from RERUN
statement .in the
source program.
Phase 21 adds DCB numbar
and uses this table to
build RONTBL and BSAM
checkpoint file DCB.

ftit.

o

1
2-7

.----

I

T""----------r---I

2
I
----I
I
IExternal- IwelunusedlDCB numberltlInteger"IChain
I
Iname of
lof check- Ifor RF.RUNlpointer
I
I checkpoint I
I
IPoint filel file
I {contains
I
I file
I
I
I
I (contains, zeros i f no I
I
I
I
I
Izeros forlother entry I
I
I
I
I
I SORT
I for fil~)
I
I
'I
I
I RERUN)
I
I

B

1111

2

14

1-------+----+----+-------+

'0'

L

t

,

I

.I

MeaningL-if on.
R9run every N record
Rerun on END of REEL/UNIT
Unused

compiler Table Format

343

Licensed Material - Property of IBM

~~

Sorts data-names and
procedure-names for the
SXREF option.

r------------~----------

I

---,

I
4
"
2
I
2
I
~
I
IPointer tolPointer to CONTROL IPointer to
I
I associated
Irecord for lower
ICONTROL recorn.
I
Ent~:'LJ:reg!1ill1£Y
I DATA record
tname on first
I for lower name
,
One entry (CONTROL record) I
Icompare
Ion next compare I
for each DEF-text element.L-------------~-----------------~-----------------J
Phases Involved
Phase-6A-buIids and uses
thIs-table to reorder
data-names and procedurenames alphabetically for
the SXREP option.

-+-------------------+-

There is no TIB for this table
Phase 6A uses the phase 00 routine
GETALL to get space, but moves
data in and out of the table by itself.
CONDIS
(TIB 14)

PurllQ..§.g
Store DISPLAY literals
during literal
optimiza tion.
]!l!:!LE!:~g!!~!!£y

One entry for each
unique DISPLAY literal.

'1

1 Variable I
~

..

I
I LitEral
IL _ _ _ _ ___

I
I
I
J

Phases In volved
or, under the optimizer
version of the compiler,
phase 62 builds this table
while processing Optimization
A-text.
Phase 6 or Phase 62 uses this
table with CONTBL and LTLTBL
to eliminate duplicate
DISPLAY literals.
Pha~~

CONTIn
(TIE 9)

gY!.QQg

r-------'

Store each non-DISPLhY
I Variable I
literal value during
~\
optimization of literals. I
I
I Lit eral
I
.§JliD-Egg uen U
IL _ _ _ _ _ _'JI
one entry for each
unique non-DISPLAY
literal.

..

Phases Involved
fh~:§!L§-or:-iiiider the optimizer
version of the compiler,
phase 62 builds this table
while processing optimization
A-text.
Ph~~!L!i_Q.L.J2h~2.§L'§l uses this
table with CONOIS and LTLTBL
to eliminate duplicate
non-DISPLAY literals.

344

Section 5. Data Areas

Licensed Baterial - property of IBM

(Report Writer)
14) Purpose
store information on
control-names to check
validity and build
routines using them.

~BL

I

,

i

i

1 21

,

In
I
I
Entry Frequency
I
One for each control-name. I

7

I

IDuplicate
Iname (-nnnn)
lin EBCDIC
I
I (!)

L'_ _L'_ _

Phases Involved
Phase 1~ routine RDSCAN
builds th.is table.
Phase 1~ routine GNSPRT
and most other routines
uSe this table to create
CTB-ROUT. SAV-ROUT.
RET-ROUT routines.

tTB
I 12)

Pgrpose
store virtual definition
elements during virtual
optimization.

7

,
i

I

~

______

I

IGN number
Ifor control
I footing

ISave name
I (-nnnn)
lin EBCDIC
I
I C!) ____

~lL-~~

,

2

I

2

I

IFlaglLevel IGN number I
Ibytelof thislfor control I
I
Icontrollheading
I
I
I
I
I
I ~I ____ I__________ I

~'L-~~'~

~

2

I

I

I

,

2

1

I

~'

Variable

I Unused I Size of IControl-name including
I
Ipreviou~!qualifiers. and subscripts
I
lentry ~ (if any) in PO-text form.
,

8

Virtual

Entry Frequency
One entry for each
unique virtual.
Phases Inyolved
Ph,se 6 or, under the optimizer
v~rsion of the compiler.
phase 62 makes an entry
when it finds a virtual
definition during
Optimization A-text processing.
Phase § or phase 62 uses tbis table
witb VIRPTB table to eliminate
duplicate references to virtuals.
In PO.,.text form:
Bytgs
0
1
2
3-6

®

C2D;t;ents
05
(byphen)
nnnn

0-2
3

4-6

23

-

III
7

@

IBain9. i f oD
Unused
Control footing specified
Unused
Control heading specified

=

Size of previous entry
X'0001' for
first entry in tbe table.

Compiler Table Pormats

345
I

Licensed !aterial - Property of IBM

DATATBL

Purpose
Store information for
XREF or SXREF processing

I

i

2
I
33
I
I
I
I
IPointer tolExternal name in EBCDIC,
I Ascending
I
Entry Freguency
IdictionarYldefining card number, and Isource orderl
One entry (DATA record)
lentry for la variable number of refer-Ipointer
I
for each DEF-text element. I data name lencing card numbers
I (SIBEF only) I
lor PH
I
I
I
•
I
I
I number
Phases Involved
"
"
Phase 6A builds and uses
i
i
1 .
this table in producing
2
I
,
13
1
131
an XBEF or SIREF listing.
I
I
I
I
IDescendingloffset in byteslPointer ILengthlPointer I
Isource or-Ifrom start of Ito cur- lof ex-Ito first I
IternallOVERPLOil
Type will be 38 or 3C codelder point-Irecord to loca-Irent
I er (SXREF I tion for the
I (last)
I name I record I
for DATA A-text.
I only)
Inext referenc- IOVERFLOW I
I
I
ling card numberlrecord I
I
I,
,I
,

3

.

DATATBL

CD

purpose
1
38 or 3C data A-text.
Save elements until end ofl
phase, when all DeBs have Itype
been generated and all
I
addresses areknovn.
I
Freguency
One entry for each BL or
BLL address elemented
created.

~ntry

,CD

,

I
I

1

3

a address where I BL or BLL
IBL or BLL
I number
I address vill bel
I stored
I
J,
,I

Phases Inyolved
Phase 21 builds this table
for each 38 or 3C element
it will be generating.
Phase 21 uses this table
to generate all 38 or 3C
elements at end of phases'.
Type vill be 38 or 3C code
for DATA A-text.
DBGTBL
(TIB 13)

Purpose
Store information on
procedure-names referred
to in DEBUG statements.
Entry Freguency
One entry for each
procedure-name referred
to by DEBUG.

i

I

section 5. Data Areas

I

I

I

I
I,

I

I PN number for
I procedure-name

Phase§ Inyolyed
Rhase 4 builds this table
from PHs in P1-text
referred to in DEBUG
statements and from GNs
from GNeTH in COBMON.
Phase 4 uses this table
to issue P2-text CALL statements to debug .procedures.
346

i

2

2

IGH number for debug
Iprocedure associated I
Iwith procedure-name
i

Licensed Haterial - Property of IBM

There is no TIB for this table.
Phase 6A uses the phase 00 routine
GET ALL to get space~ but moves data
in and out of the table by itself.

:T
06 )

Purpose
Save newly created
Debug-text elements.
Phases Involved
Phase 35 builds this
table-and uses it to
accumulate DEBUG verb text
uhile processing an input
verb string.
Phase 35 deletes this
table upon completion
of processing.

i

I

I

IVariable
I
I
-f
I
I
I Number of I DEBUG
I
I verb string I
I bytes
I following lelement
I
L

-I

IS

18)

PorE2.2~

Store subscript-defining
string until all
subscripts in statement
are collected.

Variable

Variable

I Pirst elemen t
lin string

Last elementl
in string
I

Ent~gguen£!

One entry for current
string being built.
Phases Involved
Phase-q builds-this table
from-pi-text of subscripted
data-name.
Phase 4 uses this table
with STRING table to issue
P2-text subscript strings.

3L (Report Writer)
17) PurpQ~
Store information on
detail report group for
processing SUM ••• UPON
clauses and generating
detail-names.
ID!.ll:! Preguenc!
One entry for each
detail report group.

I

-T~--------~--~.r-------------------

-,

I
30
I 1 I
2
1 I
2
I
I---I
I
-+.~
IDetail report I
IGN numberl
I Displacement of
I
lfor this
lentry in RWRTBL for
I
I group data-namel
I
I
ldetail
I
Ireport-name associatedl
I
I
1 report
1(";\ I with this deta i l qroupl
I
G)1@Igroup
1011
•

.

I

I

.

, . "

J

Phases In vol ved
Phase12 builds this
table from scan of
I
2
I
01-level statements.
I
~
___________________
___
number for OSH-ROOTI
Phase 11 uses this table LIGN
to process SUM ••• UPON
clauses, and to generate
USH-ROUT routine.
Phase 1B uses this table
to generate detail-names.

,

compiler Table Formats

347

Licensed !aterial - Property of IBM

Left-justified, padded with binary
zeros in low-order bytes.

Code for c'orrela ting SOURCE and
SUM ••• UPON clauses •

Length of preceding detail report
group data-name.

00-

Code

.!1~£!!in.9:

This entry was made as the result of
a detail report group encountered.
This entry was made when an UPON
clause was encountered.
(This
code is changed to 00 when a
detail report group is
encountered for the nata-name.)

FF

00 . First
DICOT
(TIB 20)

Put:pos2
Store starting address
of each section in the
dictionary.
Entry~reque!!.s.::y

I

•

en try in the table is a dummy.

~-,

1.1

3

J 8 1

..
,
I
~
ICDIDisPlacement 101
I
lof section inl
I
I
I dictionary
I
1

One entry for each
dictionary section.

.J

Phases Involved
Phases 1B and-22 build this
table-aS-they-build the
dictionary.
Pha~2-1]L-1lL_l1L_12L_~!!.g_lQ

use this table to find
dictionary sections.

I

(2)

MeaningL-If~!!

2
3

4-7
DRPLTBL
(TIB 2S)

Section is not in storage.
Section is now in storage
In interlude before
phase 30 (21 or 25) if
both bits 1 and 2 are on,
the 3 bit is set on.
section has been spilled
(note: 0 or 1 bit is on)
This bit is set on and used
only during phase 30 processing.
A section, which has been
spilled and read back into
storage, has been modified and
the copy on the external device
is obsolete.
Not used.
purpose
Store information for
addressing BL, BLL, SBL,
SBS. or BDISP address
increment items.
Entn Frequen!;;y
One entry for each of
the above items if it is
not assigned a permanent
register.
PhaselLInyolv~g

Phase 62 builds this table
during Procedure A-text
processing.
Phase 63 uses this table.
348

Section S. Data Areas

Address on external device wher.e section
has been spilled.

r----,~-------------------r--------------

1

I

I

I

10
I
I1
I
I

1 bit

I

I
10

Load instruction
required
11
No load instructionl
required
I
I

1 bit

,

Register 141
Register 151
I
I

Licensed Material - Property of IBM

If a load instruction is
to be generated, it generates
the instruction and inserts
the proper temporary
register to address the
item. If no load instruction
is to be generated, it uses
the proper temporary register
as the base in the instruction.
DRPTBL
(TIB 24)

.fY!:£~

optimize the use of
temporary registers
14 and 15.
Entry Freguency
One entry for each BL,
BLL, SSL, SBS, or BDISP
address increment if it
is not assigned a
permanent register and
if a temporary register
is unavailable.

.

r--------~-----------,

I

1

I

1.

','

lItem typelItem number,
I
I
I
I
(2) I
I
L--

.

'

_.I

Pha§~_Inyolveg

Phase 62 builds this table
and keeps the entries until
a decision is made as to
which temporary register, 111 or
15, should be used.
Cod9
-aD
LlO
20
10

08
(cod~

DTAB
(TIS 04)

~ni.!!g

BL
BLL
SIlL
SBS
BDISP address increm~nt
values are in hexadecimal)
g.!!!:l!.Q~

Each entry describes a
USE FOR DERUGGING (UFD)
operand.

Pha~~In vOl.!.5Hl
Phase 30 builds this
table-and makes entries
for all the PN
definitions in the
proqiam after the debug
declaratives if the
BGALLPRC switch is on.
Phase 35 deletes this
table upon completion
of processing.

Bit
0'-1

2
3
II

rI

,
1

r---

I
I

,
1

1

2

I
i

IswitchlPN
IPrioritYIPN number I
I r:\ IReferencelnumber Ifor USE I
I 0
lelement I for PN I
I
L-.:-----L-

I

I

3

.IDICTPRT

I

•I Variahlel•
I
+orlAlpha

I
I PN <1)mber I Literal I
I
2
I
I

L

--4-

L

1

--,

I
of

I
I

I
-.I

Me .sni!lg

File namf.!
Procedure name
CD name
Identifier
All references of identifier

I~ The PN number is preceeded by FF •

compiler Table Formats

3119

Licensed !aterial - PrQpeJ;ty of .IBM

ENVTBL
(TIB 3)

Pur .l2Q§g
Store file information
from Environment Division
to be merged with Data
Division information to
form Data Ie-text.

•

..ISource
Inumber

t
I

Entry Freguencl
One entry for each file.
Phases Involved
Phase 10 builds this
table from Environm·ent
Division.
Phase 10 uses this table
to merqe with Data
Division information.

I

8

/

2

1

I
I

t---'-_t_

-t

cardlddname portion of
I system-name of file
1 padd·3d with blanks,
,if necessary

Il . . - - -_ _ _- - 4I

rI
2

,

-r-----r---~-----,

1

3

I

IFlag IFlag
IfieldlfiE"ld
Ifor
I
VSAM
I
I
.L

i

1

I
~

IBufferl
loffset!
I
1

CDI
!(2)

I

I
I

I

. 1 . - -___ .1

~----,

I

l-----f_
lPointer tol"Integer" from RESERVE
lentryin IAREAclause
/ PIOTBL
I (contains zeros if no
I
~
reserve area specified)

I
I

1

I
~

IUnused/
I
I
I
I
I
/
~

L

-r------r----,

r---------~------r-

/

2

/21

11

2

l------+---_t_

I

/2

I

-+---~

INumber of IUnusedlPointer tolNumber IFlag /
,TRACK LIMITI
lentry in lassignedlfieldl
Itracks
I
ICKPTBL
Ito SAME I
I
1
I'
IAREA
If.:'\ I
I
I
1
Iclause I ~ I

l..---

CD

- ' -_ _ _ - - ' - -

'

'.J

I ' ,
I
5
I
1
I
2
1-=-+--------+
+----+__

,

.----T

I 1 I

I

-f

1~INumber assignedlunused/ct of
IDisp. ofl
1
1
Ito SAME RECORD I
lIDs for lIDs in IUnusedl
I
IAREA clause
I
I file
IINDTBL I
I
.L-_______ L - -___
,

,.----I
1
I

~

.1.-._

I

~,

I

2

,

I 11

-+------t--f

IReservedlCt of
IUnusedlCtl
IPasswordl
I I
Ifor ALT I
j
I

®

L-~

I

____~'__~

I

I

I

L--J

I

1 --r-I
~
-,
I
31
I 4 I
4
I
4
I
4
I
I
I
I
I
+------1
I File-name ITRACKINQ[HNAL
IACTUn
I RECORD
I
lin FD entrYIAREA IKEY and
IKEY and
IKEY and
I
lsize lqualifierslqualifierslqualifiersl
I

,.-----

~

! ~~®

a

I

! ~

!

®

....,..

4

I

~

~----

4

4

14

I
I
---+
+--IPointer to data-name IFILE-STATUS
lPASSWORD
IRELATI
IqUalif~·
rs from APPLYI and qualifiersl and qualifiersl K.EY an
loption 5
I
I
IgualiI (REORG- RITERIA)
I
I
I tiers
--L..oL - -_ _

®

350

Section 5. Data Areas

CD

®

Licensed Material - Property of IBM

0)

!lit

a

1-3

4-6
7

8

9

10
11

12
13
14
15

tl.eanin~

1 = RANDOM ACCESS
organization
000
Not specified
001
INDEXED
010
DIRECT '1'1 '
DIRECT 'D I
011
100
RELATIVR
Unused
1 = Integer specified in
RESERVE ALTERNATE
AREA field
0 = No clause specified
'OPTIONAL' qualifier specified
in SELECT
1 = SAME AREA specified
Unused
SAME RECORD AREA specified
Unused
CKPTBL pointer appears
1
in this entry
PIOTRL po in ter appears
in this entry
Word • ALTERNATE' specified
in RESERVE clause

Displacement for the first of two
allowable entries for a file-name in
table.

1°

f!it
0-1
2
3
II

5
6

!1 eani !!.9.

TRACK-AREA
00
Not specified
01 = Data-n arne
10 = In teger
1
RELATIVE KEY
1
NOMINAL KEY
ACTUAL KEY
1
1
RECORD KEY
1 = WRITE ONLY

7

8

9-14
15

(0

I

Bits

0=3"4
5
6

I

7

0
I

0)

lly:!:.§§

FItE STATUS claus~ sPscified
1 = WRITE VERIFY
Unuse~ {10=RES~RVF jnteqer
invalid} (12 mul+iple fil;;,s)
1 = RECORD OVERFLOW
Conteni§
Temporary storage for
nhases 1~ and 1B
CORE-INDEX
1 = REORG-CRITERIA (APPI.Y)
ASCII

Unused
Cont.ents

0-1

i;llgth -'Of

2-3

(or lit?ral if TRACK AREA
size is an intHQOr)
Displacement of name in ONMTUL

f!it
')

1

2-4
2
'3

nam'~' (s)

in byt2S

l1gg. ni n9.
1
ADDRESSED SEQUENTIAL
1 = Organization parameter
omitted in system-name
OR~ANIZATION clause
1
RELATIVE
.1
INDEXF.D

4

1

5

1
Access ~ode is Dynamic
ALTERNATE RECODD ~F.Y specified
,
Password data name with
RECORD KEY clause.

n

7

SEQ UENTJ J\ L

8Th is field is moved to FST E X'l' sO': t-ur arEa
and is used there to contain LIN~GE
information. It will not contain LINAGE
information in the F.NV~BL. and if used
for any other purpose will be oV0rlaid by
FSTE leT.

Compiler TabJe Pormats

351

Licensed Haterial - Property of IBM

ERRTBL
(TI B 10)

Purpose
Store E-te.xt to separate
it from Data A-text for
phase 7.
Ent1:Y-..E~quen£!.

One entry for each
message to be
generated.

i

,
i

L..--

I

, ,

I

i

I
I First

+--+-+--

,message
I parameter

I

I

I

I

I 1 I 1 , Variable

IVariable

I 1 I1
I
,00 Ic
IE-text
Ifor basicl
I
Imessage I
I
8

...
I
~

100 Ic ILast

I

Imessage
I
Iparameter I

•

I

Phases Involved
Phasg-f or, under the optimizer
version of the compiler,
phase 64 builds this table
from E-text interspersed
with Data A-text.
Ph£§~-1Q uses this table
to generate error
messages.

FDTAB
(TIB 28)

Pur:QQg
Pass record description
informa tion from phase
22 to 21.
Ent£Y.J:~guen£:i

One entry for each FD in
source program.

~--~

2

..

-.----~------,

2111

I

I

2111

-t---lll-

IMaximuml Minimuml Fir3t ,Flag
Irecord Irecord Ibase
Ibyte
Ilength Ilength Ilocatorl f.i\
I
,
I• number
I ~
L..-__

--+

3

I

I
~

lMaximumlBufferlDictionarYI
llabel loffsetlpointer
I
Irecord I
I
I
I size --I.-___
I
I
I
--'---.J

CD

~

Phas~lL In volyed

Phase 22 builds from record
descriptions in ATF-text. Phase 21
uses to generate DCBs, DECBs,
and buffers

(2)

Bits

'0-34

5

FNTBL

(TIB 10)

Use
NUmber of base locators
OD02 switch: ON, if any
record descriptions
contained more than one
aDO clause.
ODD switch: ON, if any record
description contained an ODO
clause.

7

Used by phase 21 to qet dictionary
attributes when LATRNM returns a
duplicate code.

PurpQ§g
r'---------T-·
i
store Environment Divisionl
2
I
2
2
2
1
2
2
informa tion about a file l-I------+I------+-,--+-----fl--------+---for Procedure Division
IPointer tolPointer tolUnusedlGN numberlGN number IGN numb
processing.
IPIOTBL
IGVNI1TBL
Ifor
lforheaderlfortra
lentry
I
ISTANDARD Ilabels
Ilabels
Entry Freguen£:i
I
I.J.!ERROR
I
I
.-'_ _ _-L._ _ _ _ , - - L - - - ' - -_ _ _ _
One entry for each file.
Phases Involved

352

000 object switch: ON. if any
record description contained
the object of an ODD clause~
SAME RECORE AREA for this SD

6

r----

Phase~o-buIlds this

I

table from ENVTBL and
Data Division.
Phase 1B uses this table
in pr~edure Division
proce ssing.

I

Section 5. Data Areas

~------ri-ri----------'

2

2

I

1

111 Variable

I

--+-+

t

,

f

IGN numberlGN numberlSwitch,clFile-namel
Ifor BOV Ifor BOV Ib~ I 'in EBCDICI
llabels
Ila bels
1 \.!) "
I
L -_ _ _ _ _ _ _....._ ,
J
,

Licensed Material - property of IBM

Bits

0t
2
3
4
5

6-7

GCNTBL
(TIB 24)

Meaning. if on
ACCESS RUDO!
Mass storage file
LABEL RECORDS ARE STANDARD
LABEL RECORDS ARE OMITTED
B~FORE (in USE statement)
AFTER (in USE statement)
Unused

Purpo~

Store card numbers for
statements that contain
NEXT GflOUP or LINE
clauses that may be in
error; also, store card
numbers for TYPE IS PAGE
HEADING or TYPE IS PAGE
FOOTING groups that may
be in error.

"

I 3 I

3

I

I

t-I=--+I-----,~

I
"

CD I Card

Num ber I
----'

Freguen£:!
One entry for each clause
in error.

~

Phases Inyolved
Phase 12 builds and uses.
It makes an entry for
each clause that conflicts with the PAGE
LIMIT clause. Entries
are saved until the end
of the report, when it
can be established whether
these statements are actually in error, as signalled by the presence of
at least one relative LINE
or relative NEXT GROOP
cla'use.
These three bytes will contain
the address of one of the following messages:
ftSG94, for a NEXT GROUP clause error
ftSG119, for a LINE clause error
MSG165, for an illegal PAGE HEADING
MSG166, for an illegal PAGE FOOTING

GNTABL
(TIB 8)

purpose
Determine which GNs
require an address
constant cell in the PGT.

r-----,

I

2

I

J-I

I GN numberl

\..;.'-----'

!!lUL.freguen£!
One entry for each GN
requiring an address
constant cell in the PGT.
Ehase.§ Inyolved
Ehase61 builds this table
from GNUREF elements in
Optimization A-text.
Compiler Table Formats

353

Licensed Material - Property of IBM

Phase 63 uses this table to
determine whether a,GN
requires an add.ress
constant cAll.
Phase 64. uses this table when
deteriiilIii ng the address in
the PGT of the GN cell to be
used in an instruction.

GNCALTBL
(TIB 16)

PU.r12Q!a~

r------------~------------_,

store GN numbers
for Q-Iloutines.

I

En t ry.J:: re 9.!HUl£Y

I Count-1 of
I Q-Routines
I to call

One entry for each
GN number.

2

~

First GN
I
number for
I
Q-Routine call I

'----

~

Phases Involved
Phase 51 builds this table
and-Uses it to generate
calls to the Q-routines
after return f.rom the
CALL statement.
GNFWDFlTB
(TI B 21)

Purpo~

Optimize size of a
procedure hlock.

'~I-----------'-----------'

I

2

I

.------------4-----------f
I GN number
Counter I
~

E.n11:Y.J::];:e q u e!l.£Y

One entry for each
forward reference to a
GN within a Procedure Block.

Phg.ses_Invol.!.f!.g
ghalaE-2l builds this table
from Procedure A-text.
Phase 62 uses this table
to-Keep-count of the
number of U~byte load
instructions of th~
Procedure Block which
might be needed if a new
block is begun hefore the
GN is defined.
GNLABTBL
(TI B 19)

.furpQ~

Determine inter-block
and intra-block
references.
Rntu_Eregue!!.£y
One ent.ry for each r.N.

,
I

..

Phases Involved
Phase62enters in th is
table-t.he block number
for each GN as it rp.ads
Procedure A-text.
Phg~-2d extracts the block
number in which a GN is
defined each time a GN is
referr~d to.
354

Section 5. Data Areas

,
1

I
of

I Block
I
I numher for I
I GN
I

L

I

~

.

Licensed Material - Property of IBM

ITBL
27)

Purpose
Determine displacements
from the beginning of
the block for GN
definitions.

•I Displacemen t

E..!!1n Freguenci

,

I

I

12 bits

I from beginning
I of block for GN

One entry for each GN.
Phase s In vol ved
Phase 63 builds this table
during Procedure A-text
processing.
Phase 64 uses this table to
insert the displacement
in generated instructions
which address the GN.

8)

,

Purpose
create and store a list
of optimized GN numbers.
Entry Freguency
One entry for each GN
number.

2

I
I

INumber relativel
Ito beginning ofl
IPN cells
I

•

Phases Involved
Phase 6 builds this table
from GNCTR and PN and GN
equate strings.
Phase 6 uses this table
to optimize procedure-names
and process Procedure
A-text and Listing A-text.
~K

10)

Purpose
count length of group
item while subordinate
items are being
processed.
Entry Freguency
one entry for each group
item being currently
processed.
Phases Inyolved
jhase 2~ builds this
table from dictionary.
Phase 2l uses this table
to determine group item
length.

4

•I

•I

2

2

3

I
I
ISource
IFlag IOD2TBL displacement of IMaximum
Ibyteslentry for OCCURS
Inumber of
Icard
,occurrences Inumber
I
I DEPENDING ON object
I (0, i f none) I
I
Iwithin group item
I
I (0, if none)
I
I
,

. CD

•

I

,

I

I

3

3

4

I

I
r
IPointer to dictionary I Pointer tolMaximum lengthl
lentry for REDEFINES IdictionarYlof variable
I
10bject within group lentry for Igroup
I
I item (0, i f none)
I item
I
I
.'

•

113

1 «

•I

,

1

1

I

I
I
I
I Number of index-namesl Number of keys I
ILevel IAddress
(idk) I (0, i f none)
I (0, i f none)
I
Inumberlparameters
,
,
,

,

Compiler Table Formats

I

355

Licensed Material - Property of IBM

.
I

2

2

,
I

2

I
I
,Displacement of entrYIDisplacement of entrYIDisplacement
Ifor item in INDKEY
Ifor item in SRCHKY
lentry for VAL
Itable (0, if none)
,table (0, if none)
Iclause litera
,
I
I in VALGRP tab
,
I
,if used
I,
I, (0, if not)
,I
•

I

I
2
1 I
,
,
I
I Displacement of I Flag I
lentry for VALUE Ibytel
Iclause literal in I (:;\
IVALTRU table, if I~
lused (0, if not) I

CD

Bits

--0

1
2
3
4

5
6
7

8-11

12-13

Meaning
1 = Group occurs more than once;
alignment required.
1 = Group contains object of
OCCURS DEPENDING ON
= SYNC clause in item under
group item
1 = SYNC clause in group item
1 = VALUE clause in group
item
1 = Condition-name under group
item
1 = Group is or is in a label record
1 = Item itself contains an
OCCURS ••• DEPENDING ON clause
Hinor code (see "LD ENTRY" in
"Section 5. Data Areas)
Dictionary Entry Formats") ..
Number of subscripts required
00 = none
01
1
10 = 2
10 = 2
11

14

15-31

356

1

=3

= Item

contains an OCCURS or
OCCURS ••• DEPENDING ON clause
Length of group or VLC

Section 5. Data Areas
.~

f2\ Bits
O-

\.::..J

1-3

4-7

Contents
1= Master of an OCCURS •••
DEPENDING ON clause
Unused
Meaning
Code
Justified
100'0
1111
Usage other than displ

Licensed Material - property of· IBH

GVF'NTBL
(TIB 4)

gyrpo.§f
"1
I
store displacement to
I
2
I
entries i~ FNTBL for VSAM
~
files referred to in USE IL-______
Displacement
in FNTBLI
___________
AFTER STANDARD
ERROR/EXCEPTION with
GIVING option.

.----------------~~

~

Entry preguencl
One entry for each file-name
mentioned in USF. Declarative.
Phases Inyolve!!
Phase 1B builds the table
USIng the FNTBL.
Phase 1B uses the table to
IOC~the correct FNTBL
for each fileneme mentioned
in the Declarative and
insert into FNTBL the
displacement into the
GVNMTBL of the fully
qualified dataname in the
GIVING option.

GVNKTBL
(TIB 3)

Purpose
i
i
Store the data-name
11Variable 11
specified in the GIVING
I
I
I
option of the STANDARD
IOOldata-namelNumber of bytes in precedin g fieldl
ERROR/EXCEPTION PROCEDURE
Declarative for VSAM
For qualified data-n.ames the following
files.
fields are added.
!!!1~reguen£I

One entry for each
Declarative. If the
data-name is qualified
the entry contains all of
its qualifiers.
Phases Involved

Phase-1~ builds the table

from the entries in the
CURBCD and CURN data areas
and for qualified data names
from the QLTABL table.
Phase-1~ uses the table.

compile!: Table ForlRats357

Licensed Material - property of IBM

HASH
(TIB 30)

PurEQ~

Store dictionary pointer
for latest hash value.
Entrv2:~quen£l

r------,

I
3
I
I..
I Pictionary)
I poin ter or I
Izeros
I

One entry for each hash
L - . _ _ _ _- '
value. The table is 521
bytes long, allowing for 177
possible hash val ues.
Phases Involved
Phase 10 builds this table.
Phas~s lB, 22L-~25L_£gQ_J
use this table.
INDTBL
(TIB 4)

PurpQg
Store information about
ALTERNATE KEYS and their
passwords and/or
duplicate status; used
to construct IC-text
elements for alternate
keys.
EntrY2:reg~£Y

One entry for each
ALTERNATE KEY clause.
Phases Involved
Phase 10builds INDTBL,
thendeletes it after
Data IC-text is passed.

r

4
1
I 4
I
I
lIRECORDIPASSWORDIFLAG
I
I
IK(0
J 4
J
I

0

0

I

I

,
.,I
I

I
I
.I

1

I

3

I

1-.--------..
IGenerated Sourcel
I card number

RECORD KEY is a two-byte length
of the name, followed by a
two-byte displacement of the name
in QNMTBL. PASSWORD is a
two-byte length of the namei
followed by a t wo-b yte
displacement of the name in
QNMTBL.
The PASSWORD field is
filled with zeros if n~ PASSWORD
is specified.
Flag
].yte

Meaning
1 if another entry for the
same file follows.
1 if PASSWORD is specified
for this key.
1 if WITH DUPLICATES is
specified.

INDKEY
(TIB 31)

Purpo~

Store OCCURS DEPENDING
ON information for use
in table handling.
Entry F~g£y
One entry for each item
that has an OCCURS
clause and an INDEXED
BY clause.
358

Section 5. Data Areas

1

I

11

I

3

3

-+-

I

I

nJDictionarYIFlaglDictionary pointer
I
Ipointer tolbytelto object of OCCURS
I
Isubjec~fl (.;\ lor maximum number
Hable 0
lof occurrences
IL--LI

10

C2:Q)

1

INumber of
lindex-names
I
I _______

~.

1

..I

I
I
I
.J

Licensed Material - Property of IBM

Phases Involved
Phase 22 builds this
table~rom Data IC-text
data-names with OCCURS
and INDEXED BY clauses.
Phase 3 uses this table
to process SEARCH and
SEARCH ALL verbs.

3

I Dictionary
Ipointer to
I first ~d~X­
I name \2)

.f!H

Contents of dictionary pointer:

0-2
3

Bits

-0='1
2-14
15-23

contents
Zeros
Dictionary section
Displacement in section

4

5

6
7

CD

Meani!!!!:
Unused
1
Next th ree bytes conta in
dictionary pointer
o Next three bytes contain
maximum number of occurrences
Unused
o Object of aCCURS ••• DEPENDING ON
undefined
No error found in OCCURS •••
DEPENDING ON object
Un used
1
Error detected in key processing
o = No error found

Field contains zeros if bit 5 in preceding
field is set to 1.

2TBL
B 17)

PU!;£Qm:l
r
---r-1
Store information on VSAM I
3
I
3
I'
I
files for ORGANIZATION
II
-+--------1
IS INDEXED.
IDictiona~pointerlidk parameterslLevel numberl
lfor key ~
Ifor leey
I
I
_ _- " ' - _ - L -_ _ _ _ _ _ _.l
EntrY_fregue!l£Y
One entry for each PD
entry for VSAM files with
ORGANIZATION IS INDEXED.

C)

J

•

Phases Involved
Phase 21 builds this table
from Data IC-text.
Phase-1Q uses the table to
build P1-text.
RECORD KEY, ALTERNATE RECORD KEY
or RELATIVE KEY.
ITB
B 34)

Purpose
Save all index-names
associated with a data
item.

,

I

.

104
L

1

•
111 Variable
I I

(hex) I cl Index-name in EBCDIC

,

,
I
I
I

I

Entry Frequency
One entry for each
index-name associated with
the data item currently
being processed.

Compiler Table Formats

359

Licensed Material - Property of IBM

Phases In vol·ved
Phase 10 builds this table
from level number entries
in the source program Data
Division.
Phase 10 uses this table
to append index-names
to the Data IC-text LD
entry for the data item.

KEYTAB
(TIB 26)

Purpose
Save all key-names
associated with a data
item.
Entry Frequenc'y
One entry for each
key-name associated
with the data-item
currently being
processed.

I

1 1

"

111 variable

,

1

~+I-Ir-----~'-------;J

IFlaglclKey-name in EBCDICI
Ib03el I
4
I
1 1 1 I
I

I

I

._ _ _ _ - - '

Pha sa s In vol ved
Phase 10 builds from
level-number entries
in source program Data
Division.
Phase 10 uses this table
to append key-name to
Data IC-text LD entry
for data item.
Bits

O=S
6
7

Meaninq.&.-iL2!!
None; contains zeros
Descend ing key
Ascending key

KEITBL
(TIB 20)

Purpo§~

Used in SEARCH verb processing to check whether
.keys in WHEN clause are
valid for table in which
binary search is being
made.
Entry Frequency
,One entry for each key
in SEARCH ALL statement
currently being processed.
Phases Involved
Phase 4 builds this table
while-Processing a SEARCH
ALL statement.
Phase 4 uses this table
to make sure SEARCH ALL
statement has correct
keys for tabla and that
all preceding keys are
tested if the key is
tested.

360

Section 5. Data Areas

rl----------------------------------~___,

I 1 1
---+-:=-f
I Addressing parameters fO~1item (IDK)
101
Ifrom dictionary _
entry
II
L
___ ~
4_--J
I

~

3

Licensed Material -

!!;u.[

('000
0001
0100

U-15
1€-23
LABTBL
(TIE 131

Initially 0, but set to 1 whenever a
HHEN condition for KEY is found during
processing of this SEAFCH ALL statement.

Meaning
Type of BL con~aining base
address of area

0-3

d
k

property of IBM

BL
BLL
SBL

Displacement from base address
BL number

R.ur.EQse
Save label-record datanames refe~red to in a
Data IC-text FD entry.

I

I 2

I

111

,

Variable

I

\------+--+-------------------------/

IUnusedlclLABEL
RECOPD data-name in EBCDIC I
L -_ _ _ _ _
______
~

J

~n t

.[1.-1: re 9:lliill!<.Y
One entry for each LABEL
RECORD data-name referred
to in the Data IC-text FD
entry currently being
processed.

Phases Involved
Phase~o-builds this table
from-Data IC-text FD entries.
Phase 20 uses this table
to-aIfferentiate label
records from nonlabel
records in processing
Data IC-text LD entries.
LTLTBL
(TIB Ll)

Pur£Q§~

contains pointers to
CONTBL and CONDIS tables
during optimization of
li+.erals.

-,
1
-------/
\-------------IDisplacement from start of appropriate table of entrYI
Ifor
literal
L
______________________________________
_
1
I

I

2

J

EngLEf.§gy.§!!.9Y
One entry for each
reference to a literal.
Phase s In vol ved
Rhase 6or;lliider t he optimizer
version of the compiler,
phase 62 builds this. table
while building CONDIS and CONTBL.
~h~~_§ or, under the optimizer
version of the compiler,
phase 64 uses this table
with CONDIS and CONTBL
to. eliminate duplicate
DISPLAY and non-DISPLAY
literal s.

MASTODO
('T'IB 13)

~!!J;:EQ.2~

Identify masters of
OCCURS ••• DEPENDING ON
clause if SYMDMP or TEST
is specified.

r--------

--,

1 3 1
~----------~I

I Dictionary pointer for I
I master of an ODO
I
L

Compiler Table Formats

361

Licensed Material - Property of IBM

f!..!!.if:Lf.£§g.Y§!l£.Y

One entry for each master of an
OCCURS ... DEPENDING ON clause.

Phases Involved
Pha;e22builds this table
as-it-encounters OCCURS ...
DEPENDING ON clauses.
Phase 25 uses this table
to-identify master of
OCCURS ... DEPENDING ON clauses
for the DATATAB table.

NPTTBL
(~IB

18)

(Report Writer)
£gr£22§
Store N.nnnn names that
contain number of lines
a particular report
group occupies.

r------r--r

I

I 11

1

I

6

1-----+-+---------11
123

(hex) I071Name in EBCDIC,

~

__

~

__

J

~___

£!ni!.LEf:.§gY.§!l£Y

One entry for each report
group that contains PLUS
clause.
This table is cleared
at the end of each RD.

Phases Involved
Phase-'2-builds from
relative line clauses.
Rt~§§_11 uses this table
to generate Data IC-text
LD entries at the end
of the RD.

OBJSUB

err B

'5)

£.YL:I>2§S

r

Relate files and CD
entries, to obiects and
subjects of OCCURS ...
DEPFNDING ON clauses.
It is used to build the
QFI LE table.

,
I-

i

I 2 , 2
I
I.
DCB or I
ICD
I
I
INumberl
I

I
L

~!l.trY1reguen£y

One entry for each fil"! or CD
entry whose record descriptions
contain at least one object
and/or subject of an OCCURS ••.
DEPENDI NG ON clause.
Phases Involved
Phase22-builds and uses this
tableto build the QFILE table.
Wher. present, this field contains the
OD2TBL table displacement if the field
refors to the object of an 000 clause,
or :he GN number of the subject if the
field refers to the subject of an 000
clause.
If the field contains a GN
number, the high-order bit is ON.

362

Section 5.

Data Areas

i

2

,

I
I

2

1
~

CDI CDI X' FFFF' I
.L.-

I
1
I

I
I

--'

Licensed Material - property of IBM

C:TBL
IB 2)

Purpose
store information about
items in OCCURS and
OCCURS ••• DEPENDING ON
clauses if SYMDMP or TEST
is specified and program
contains an OCCURS or
OCCURS ••• DEPENDING ON
clause.
EntrY-freguency
One entry for each.
subject of an OCCURS
or of an OCCURS •••
DEPENDING ON clause.

...

I
I-

~------------,

3

,2
I
IDictionary pointer
,Maximum number
Ifor subject of clauselof occurrences

,
.,
~I
~,

----~~------------------~

--.,.
--,
I
2
I
2
I
I
,
I
,Reserved for
,
I Number of byteslODO
Ito next
(;\,switChIOBODOTAB pointe~orl
I occurrence ~! ~
~Object of ODO ~ ~

Phases Involved
Phase 22 builds this
table as it encounters
an OCCURS or an OCCURS •••
DEPENDING ON clause.
Phase 25 uses this table
and the-QRTN and QITBL
tables to build the
ODOTBL table.
The ODOTBL
table is then used
to fill in the OBODOTAB
pointers in this table.
The field contains either the number of
occurrences for an OCCURS clause or the
maximum number' of occurrences for an
OCCURS ••• DEPENDING ON clause.
If the subject of the. clause is a
variable-length group, the field
contains its VLC number.

o

If this byte contains 0, the entry is
for an OCCURS clause; if it contains 1,
the entry is for an OCCURS ••• DEPENDING
ON clause.

The field is present only when the
entry is for an OCCURS ••• DEPENDING ON
clause. Phase 22 fills the field with
zeros.
Phase 25 enters the OBODOTAB
pointer; then the contents of the field
are as follolis:
Bits

o-a
9-15

contents
Relative block number within the
OBODOTAB table
Displacement in fullwords within
the block

)OTBL
~I

B 14)

---,
Purpo·se
2
Determine which entries
I
3
I
2
I
1
in the dictionary are
1-1------------+1I
-t
objects of OCCURS...
I Dictionary
,Displacement 10BODOTAB
I
DEPENDING ON clauses and 1pointer for
Iwithin OCCTBL IPointer for t
therefore must be entered lobject of 000 Ifor OBODOTAB lobject of
I
in the OBODOTAB table if I
I pointer
1000
1
SYMDl'lP or TEST is speci- L'--------------.-------.------',----------..1
fied and the program contains
an OCCORS ••• DEPENDING ON
clause.

Entry Freguen£l:
One entry for each
OCCURS ••• DEPENDING ON
clause.

compiler Table Formats

363

Licensed Material - Property of IBM

Phase s In vol ved
Phase 25 builds this table
using the OCCTBL, QRTN,
and QIT BL tabl es •
ghase 25 uses this table
to build the OBODOTAB
table and to fill in the
OBODOTAB pointers for objects
of OCCURS ••• DEPENDING ON
clauses in the OCCTBL table.

OD2TBL
(TIB 9)

Purpo2~

Store objects of OCCURS
DEPENDING ON clauses and
their qualifiers for
Q-Routine generation •
.Entry .Frequency
One entry for each OCCURS
DEPENDING ON clause.
variable
Pha se s In vol ved
Pha§e 1Q enters EBCDIC
names from OCCURS
DEPENDING ON clauses.
Phase 22 uses this table
to generate Q-Routines.

qualifierll001
I
I

OFLOTBL

(2)

~pose

I
I

T---.,-----,

~

Store referencing card
3
I
3
3
3
I 1 I 3
I
numbers when the DATA'I'BL I
I
I
I
t
,
~
table entry is full. nsedIReferenc-IReferenc-IReferenc-IRBfer~nc-IOff-IPoint-I
in processing for the
ling card ling card ling card ling card I~ I~rto I
SXBEP or the XREF option Inumber
Inumber
lnumber
Inumber
I~ IpreI
I

Entry Frequency
I
One entry for each refer- I
encing card number which I
cannot be stored in the
DATATBL table entry for
the data-name or the
proced u re- nam e.
I

I

I

I

I

I ceil ill g I

I
I

I
I

I
I

I
I

IOV.ER- I
I FLOW I

I

I

I

I

I l:Gcor d I

I

t

- - L -_ _ _ _..L

I

Phases In volved
Phase6Abuilds and uses
this table to store
referencing card numbers
for the SXREF or the XREF
option.
PPMTBL
(TIB 12)

Purpose
r
-r------,
Store procedure-names and I
2
I
2
I
VNs to be equated in
..
+-..,..---.;,..----~
PERFORM statements.
I PN num ber of next
I VN number corr?spnnili.ng I
Iprocedure-name after Ito PN that; is the
I
Entll-Erequency
lend-of-range
lend-of-range____________ JI
LOne entry for each
delimiting
procedu re- name.
~

364

Section 5. Data Areas

.J

Licensed !aterial - Property of IB!

Phases Involveg
Phase 4 builds this table
from P1-text procedure-names
and VNeTR in CO~~ON.
Phase 4 uses this table to keep track of
delimiters of performed procedures
to set up return VNs.
Phase 6A
There is no TIB for this table.
uses the phase 00 routine GET ALL to get
space, but moves data in and out of the
table by itself·.

CD

This byte contains binary values 3, 6, 9,
12 as the OVERFLOW record contains 1, 2,
3, 4 referencing card numbers.

PIOTBL
(TIB 7)

PurM.§§.
store input/output
information for a file
from Procedure Division.

i

i

I
4
•
I Switch

I
-I
I

Iby~

Entry Freque!!£!
One entry for each file.

10

I
1

L

.J

Phases Involved
Phase 10 reserves space
for 'one-entry for each file.
Phases 1B and 12 complete entries
from Procedure Division.
Pha~-11 uses this table to
generate Data A-text.

.~i~
1

2
3
4

5
6
7
B
9

10
11

12
13
14
15
16

17
18
19
20

2f
22
23
24
25
26
27

28
29
30
31

Statement referring to
file, if bit is on
OPEN INPUT
OPEN OUTPUT
OPEN 1-0
CLOSE UNIT NO REWIND
(OS)
WRITE AFTER ADVANCING
CLOSE WITH LOCK
CLOSE
REWRITE
RERUN
OPEN INPUT REVERSED
READ (SEEK IN DOS)
WRITE BEfORE ADVANCING
USING
GIVING
USE
WRITE AFTER POSITIONING
BEFORE in USE
OPEN NO REWIND
WRITE
USE ON file-name
START
INVALID KEY
REVERSED
RESERVED
KEY OF REFERENCE (READ and START)
DELETE
GIVING data-name for USE procedures
OPEN EXTEND
. SEQUENTIAL ACCESS (DYNAMIC mode)
RESERVED
UNUSED
RESERVED
compiler Table Formats' 365

Licensed Material -

PNATBL
(TIB 7)

Property of IBM

PurJ2Qg
r
,
Determine which PNs
I
3
I
require an address
1
l
constant cell in the PGT. LI _
PN numberl
_ _ _- - '

]J!liLEl:gquen£1
One entry for eaen PH
requiring an address constant
cell in the PGT.
Phs..§~Invo!Y~1

Phase 62 builds this table from
PNUREF elements in optimization
A-text.
Pha~63 uses this table to
determine which PHs require
address constant cells.
Phase 64 uses this table
when determining the address
in the PGT of the PH cell
to be used in an instruction.
PNFWDBTB
(TIB 20)

PU.£Eose
Optimize size of a
Procedure Block.

r-----,-

2
I
1
I
I
-f
I
I PN numberlConnterl

EntU-El:g9 ue!l.£1
One entry for each
forward reference to a
PN within a Procedure Block.
Pha se s In vol ved
Ehas~~§l builds this table
from Procedure A-text.
Eh~~_'§l uses this table t.o
keep count of the number
of 4-byte load instructions
of the Procedure Block
which miqht be needed if a
new block is begun before
the PH is defined.
PNLABTBL
ITI B 18}

r ,

PU.£EQ.2Q
Determine interblock
I
I
and intrablock references..
~
IBlock numberl
Ifor
PN_ _ _ _ .JI
L
___

En i.£.Y..J:.£Q que n £1

One entry foreacn PN.
Ph~~InvolYg1
Ph~mL.§l enters

in th is
the block number for
each PM as it reads Procedure
ta~le

A-text.•

Phase 63 extracts the block number
In-which a PN is defined
each time a PN is referred to.

366

section 5. Data Areas

.J

Licensed l!Iaterial - Property of IBM

PNLBDTBL
(TIB 26)

Purpose
Determine displacements
from the beginning
of the block for PH
d~finitions.

I

...

I

12 bits

I

Ir---------~~----~

I
I
I

,Displacement from
Ibeginning of block
Ifor PH

Entry Fregllim£Y
One entry for each PN.

I

Phases Involved
Phase 63 builds this table
during Procedure A-text
proce ss in g •
Phase 64 uses this table to insert
the displacement in generated
instructions which address the PN.

PNOUNT
(TIB 14)

purpose
Stack operands of
COKPUTE and IF
statements.
Entry Freguency
One entry for each
operand in statement.

.

variable

...

I 1 1
,
I
ISame operand as in
1(2)
IP1-text, including
I
I
Ibyte 0 identificationl
I
-L--J

L

Phases Involved
Phase 4 builds this table
from P1-text scan.
Phase 4 uses this table
with PSIGNT table
to stack operands until
the string is ready to
be created.

C!)

Number of preceding bytes in this entry.

PNQTBL
(TIB 6)

Purpose
Store information on
references to qualified
PHs for completion of
dictionary entry.
EntrLJ::reguen£Y
One entry for each
qualified PH.
Phases Involved
Phase 1B builds. this
table from Procedure
Division.
Phase 1B uses this table
to complete procedurename dictionary entries.

1,

--,-I
I
•
• ...
I 1111 Variable
1 2
I
I I
.1
I
I
I nlclProcedure-namelFlag 1Unus-3d 1221
, bytes,
I
I
1 lin EBCDIC
I
I I I
1 I

,

L

I

I

i

I

!~!

L--J

-,

111 Variable
I
I I
-t
IclProcedure-name qualifier inl
I 1 EBCDIC
I
I

•

Compiler Table Formats

361

Licensed !aterial - Property of IBM

PNTABL
(TIB 5)

Purpo~

store information on
references to each
unqualified PH for later
completion of PN's
dictionary entry.

r.

i

l

l

11 I11Variabie
2
I
.. I I
1
-f
In JclProcedure-IFlag IDictionary I
I Illame in
Ib~slsearch codel
I
EBCDIC
~!

! I!

!

0

J

Entry Frequency
One entry for each PN
that. is not qualified.
Phases Involved
Phase1Bbuilds this table
fromProcedure Division • .
Phase 1B uses this table
to complete procedurename dictionary entries.

CD

Bit
--0

,

2
3
4
5
6

7

8
9

10
11

12

13
14

o -0
Bit

1-7

PNTBL
(TIB 7)

15

11ganinYL.J:.L2!!
Procedure-name
Section-name
Either nallle follows
THRU in PERFORM ••• THRU, or follow
PERFORM without THRU
Referred to by ALTER
Procedure-name of GO TO
Procedure-name of EXIT
Procedure-name following
TO PROCEED TO in an
ALTER statement
Unused
Referred to in DEBUG
Defined in DEBUG
Dummy section name
Defined in Decldratives section (or
in DEBUG statement referring to such
section). Bits 12-15 describe the
type of section.
USE ••• ERROR section-name
USE ••• LABELS section-name
Unused
USE ••• REPORTING section-name

1!2ning-« if on
Dictionary was search for
this PH before this section.
Unused.

Purpose
Create and store list of
optimized PN numbers.

,.-----,
I
2
I
~------------------------------- ~
IDisplacement of PN from start of PN cells inl
jobject module
I

Entry Freguency
One entry for each
optimized PN number.

L

Phases Involved
Phase 6 builds-this table
fro;-PNCTR in COMMON and PH
equate strings.
Phase 6 uses this table
to optimize PNs and
process Procedure A-text.
368

Section 5. Data Areas

~

Licensed I! at erial - Property of IBM

BL
6)

Purpo.eg
optimize procedure-names
by eliminating those not
referred to or, under
the optimizer version
of the compiler,
determine entry points.

•I

•I

1 bit

I
I
11 = Name is referred to
I
10
= ________________________
Name is not referred tol
L----.
~

EntrY-Ireguency
One entry for each source
program procedure-name.
Phases Involved

Pha~-21 reserves space

for as many entries as
there have been PNs
counted in PNCTR. These
entries are initially
set to O. In later
processing, phase 51
turns on a bit each
time the PN associated
with the bit is
referred to.
Phase 6 uses this table
to eliminate names not
referred to or, under the
optimizer version of the
compiler, phase 62 uses this
table to determine which PNs
are entry points.
:INDX
B 5)

Purpose
store information about
the PROCTAB table which
is written on SYSUT5 if
the SYMDMP option is in
effect.
Entry Freguency
One entry for each block
of PROCTAB entries.

.
I

,
3

I

,

I
-f
ICard/verb IRelative addresslDevice andressl
Inumber
lof code for
lof PROCTAB
I
Ifor first Ithis entry
Iblock
I
lentry in Iwithin
I
I
IPROCT~
,segment
I
I
Iblock~
I
I
L
______ __ I

l-

3

II

I

~

~!__________!

~

Phases Involved
Phase 62 builds this table
while reading Debug-text on
SYSUTII and building the
PROCTAB table.
Phase 65 writes this table on
SYSUTS-and COBOL library
subroutines use this table to
address entries in the PROCTAB
table.

Ute

0-19
20-23

£2.nU1l1.§

Card number
Verb number

Compiler Table Pormats'

369

Licensed Material - Property of IBM

PSHTBL
(TIB 17)

,

pur.EQ§g
store GN numbers of
1
I
, ELSE' branches in nested r and compo_und IF stateMaster GN
I 16
ments.
I 0 -= Otherwise

-----,
I
-1
-+IGN number I
I
I

I

2

,

J

L

EniuJ:reg uell£l
One entry for each false
branch.
Phases Involved
Phase 4 builds-this table
from-P1-text and GNCTR
in COMMON.
Phase 4 uses this table
to generate branches.

PSIGNT
('rIB 15)

Purpose
Store operators in
COMPUTE and IF
statements.

r--------------------- ,

I
2
I
I
-f
IP1-text code for sign I
~

Entry FreqUency
One entry for each
operator in the statement being processed.
Phases Involved
Phase-i builds-this table
from P1-text.
Phase-i stacks operators
until strings are ready
to generate. This table
is used with PNOUNT.

PTRFLS
(TIB 16)

-.-

-,
I
-!
I
I

I
I

I
I

Entry Freguency
One entry for each
decision in statement.

'NOT' is
active
'NOT' is
not acti ve
LI ________________

IGN number for
IGN number for
I fall-through bypasslbranch
,
,
I ____ •_________
I ____________________JI

Phases Involved
Phase 4 builds this table
from P1-text compound IF
statements and GNCTR in
COlUION.
Phase 4 uses this table
with PSHTBL to select true
and false branches for
P1-text.

370

r,----------------T'------

Pur,2.Qg
Store branches in an IF
statement.

Section 5. Data Areas

11
I
10

2

I
I

2

,

~

~

Licensed !aterial - Property of IBM

BTBL
IB 2)

PurpQg
Pass information from
phases 10 and 12 to
phase lB.
Entry Freguen!a
One entry made at end
of phase 10 processing
and. optionally, at the
of phase 12 processing.
Phase s In vol ved
Phases 10 and-'2 build
this table from-stored
informa tion.
Phase 18 and/or 11 moves
data into its ovn data
areas.

I

,

,

1

"I 3
80
8
8
12 I
I
I
-f
I I
In ICard numberlCard numberlUnusedlLast I
lfor last
Ifor last
Irecorell
I
I
Irecord readlrecord readl
Iread I
I
I (unpacked) I
I 1 (packed)
I
I
t

I

I

I

t

1

i

.J

t

-,

I
18
I
6
I
82
I
6
I
2
I
I
I
I
I
-+----~
I Error
I Sequence
IINSERT
tSequence IPhase
I
I information I number of Icarel worklnumber
Iswitchesl
Ion record Ilast recordlarea fromlfrom BASIS I ~
I
IBASIS
I
I \!J
I
I
I' read
L
L- _ _ _ _ _ _- - L -_ _ _ ----I
I

I

,

I
,.

i

I
I

24

82

8

I
I

8

~

I
2
I
-+-----f

J
ISequence numberslWork arealLatest IBASIS
I Phase
I
Ispecified on
Ifor BASISICOPY
Ilibrary- Iswitchesl
IBASIS card
Icard
llibrarY-lname
I
I
I
I
Iname
I ________ I
I
_______
.J
•

I

•

I

~'~

~I__

0

i ,

1

3

_~I

I

4

I

80

I

T-------,

8

2

I

1

I

1-1- - - - + I - - - · - + - - - - - + _
I
,
I Current IPhase
IDouble
ILibrary-namelContents ,Phase
I
Icard
Isvitcheslbuffer fort for double- lof
Iswitchesl
I number
I
ICOPY...
Ibuffer COpy Icolumns I
17.'\ I
IREPLACING
I
172
and
731
~ - - . II
I'-_ _ _ _ _---&1_
I
I '

CD

Bits
) 01
2

3
4
5
6

7

0

Bi1~

0
1
2
3

4
5
6
7

Byte-1,
Unused
COPYSW
BASISW
Unused
Unused
Unused
Unused
CPYXSW

.!!Ite 2
INOLSII'
INSTSW
INOERR
INOWSIf
DELSW1
DELSW2
DELSW3
CPYCSW

CD

Byte-1,
Unused
Unused
Unused
Unused
Unused
Unused
Unused
RPTWSW

Byte 2
TOTUSD
Unused
Unused
USEPDL
USEPOE
SRTSW
Unused
Unused

Bits
0) -0-6

Bits

-01
2
3

4
5
6
7

7

!!.tlJLl

Unused
Unused
Unused
. Unused
REPSW
Unused
Unused
Unused

!!:liL~

CDSURP
BUF2SW
BUF3SW
BUF4SW
CONTSW
Unused
Unused
Unused

!!YiiLl
CON2SW
NWCDSW
SKCD5W
Unused
Unused
Unused
Unused
DB RDS If

1lYiL!
Unused
SURPSW
BUF5SW
Unused
Unused
Unused
Unused
Unused

Switches
ijDused FRGNSW

Co~piler

Table Formats

371

Licensed Material - Property of IBM

P1TEXT
(TI B 05)

purpose
Save input P1-text
elements and nevly
created Debug-text
elements.

I

L
Phases Involved
Phase 35 builds this
table and makes entries
in this table as it is
process ing its inpu t
once the determination
has been made that no
more debug declaratives
exist. Phase 35 uses this
table to accumulate verb
strings until all debug
processing is complete.
Phase 35 deletes this
table when processing is
complete.

QALTBL (Report Writer)
(TIB 23)

.f.urpo~

Work table, for example,
to store qualified names
and qualifiers in reverse
order of appearance
in RD.
.

i

'

J
IVariablel
•
I
I
I Number
IP1A-textl
lof bytes lelement I
I
I followingl
'

I

,
I
Variable
I
IName(s) in EBCDIC, each
Ipreceded
by 1-byte count- - J
L_________________________

Entry FreguencI
One for each name in the
current string of a name
and its qualifiers.
Phases Involved
Phase 12 builds this table
as it scans a name and
its qualifiers.
Phase 12 uses this table
~verse the order of a
name and" its qualifiers.

QFILE
(TI B 23)

Pur~~

-,

,r---~--------~,-----

Store Q-Routine GN
I
21
2
I
numbers connected with
~
--+I
CD entries or with QSA/!, IDCB number forlGN nmmber for single Q-Routine fori
QISAM, or BISAI! files in I first file or I fi·le or for all Q-Routines for CD I
which at least one of the ICD number
lentry, or for chain of GNs, where I
records contains an OCCURSI
Ithere is more than one Q-Routine I
DEPENIHNG ON clause.
IL--____________
G)
lassociated with a file.
_ __
__ _ JI
~_________________

312

Section 5. Data Areas

~

®

Licensed Material - Property of IBM

IDl1ll.1. reg.l!.!m£.Y:
One entry for each CD entry
file or of this type.
Phases Involved
Phase 22 builds this table
from Q-Routines for files or CD entries.
Phase 21 increments the DCB.
number for DCBs for checkpoint
files.
Phase 3 adds Q-Routine GN
numbers to dictionary
attributes for corresponding
files or CD entries.
for SD
byte 1 = 09
byte 2 = BLL#
Table ends with a word of zeros.
QGNTBL
(TIB 24)

PurpQ.§g
r---------,-------------"
Pass Q-Routine GN numbers I
2
I
I
and their Procedure block ,
numbers from phase 63 to IGN numberlProcedure
I
phase 64. This table is t
I block numberl
built only if there is a I
Q-BEGIN macro element
passed in Procedure A-text.
Entll-freguen£l
One for each Q-Routine GN.
Phases Involved
Phase 63 builds this table
from the GNLABTBL.
Phase 64 uses the data to
InItIalIze Q-Routines
during processing for INIT3.

QITBL
(TIB 22)

Purpose
Contains a pointer to
the dictionary attributes
of each OCCURS DEPENDING
ON object entered in the
'()D2TBL table.
Entll.1.reguency
One entry for each OD2TBL
entry.

I

•

I
4
I
IPointer to entry
lin dictionary for
IOCCURS DEPENDING ON
I variable

I
4
I
IDisplacement of
lentry in OD2TBL for
IOCCURS DEPENDING ON
ivariable

I

I

Phases Involved
Phase 22 builds this table
from dictionary and OD2TBL.
Phase-2l combines this table
with OD2TBL and QRTN
tables to form QVAR table.
ghase 2~ uses this table with
QRTN and OCCTBL tables to
build the ODOTBL table.

:2)

Table ends with a word of zeros.

compiler Table Formats

373

Licensed Material - Property of IBM

QLTABL

Purpose
Store qualified names in
reverse order of receipt
(which was previously
reversed) •
Entry Frequency
One-entry table containing name currently
being processed and
its qualifiers.

Variable
Last qualifier-INumber of bytes,
name in EBCDIC lin preceding
Ifield

Phases Involved
Phase 1Q builds this
table when qualified
EBCDIC name is inserted
in QNMTBL or OD2TBL.
Phases 12 and 1B build this
table when qualified
EBCDIC name is written
on PO-text.
QNMTBL
(TIB 2)

Purpose
Store EBCDIC names C!)
Variable
Variable
from Data and Environment
divisions until Data
InlclLast qualifier-lc,Second from last
IC-text is written.
, I Iname in EBCDIC I ,qualifier-name
, , ,
I lin EBCDIC
Entry Freguency
One entry for each name
of this type.
Phases Involved
phase 1~ builds this
table from clauses in
FD, SELECT, and APPLY
statements.
Phase 10 uses this table
to write .out Data IC-text.

For REPORT, LABEL RECORD, ACTUAL KEY, NOMINAL KEY,
RECORD KEY, TOTALING-AREA, TRACK AREA, and APPLY
REORG-CRITERIA clauses.
QRTN
(TIB 21)

gurpose
Store GN numbers of
Q-Routines and OD2TBL
pointers for each OCCURS
DEPENDING ON clause in
a record.
Entry Freguency
One entry for each
record containing an
OCCURS DEPENDING ON
clause.
Phases Involved
Phase 22 bU1~dS this
table from GNCTH in
COMMON and OD2TBL.

374

Section 5.

Data Areas

2

I GN number
lof first
IQ-Routine

2

4

I Number of fields IDisplacement of
Ithat follow
IOD2TBL entry for
,
Ithefirst Q-Routine

Licensed Material - Property of IBM

Phase 21 combines this
table with OD2TBL and
QITBL tables to form the
QVAR table.
Phase 25 uses this table
with QITBL and OCCTBL tables
to build the ODOTBL table.
!SBL
:TIB 25)

Purpose
Hold and transmit data
on secondary base
locators (SBLs).
Entry Frequency
One entry for each INCRA
verb generated.

I

I
1
I
IFirst SBL number associated withl
I an INCRA ver b
,I
,

Phases In volved
phase 22 creates and passes
this table to phase 3.
Phase 3 uses this table to
generate for each INCRA
verb a P1-text literal
the value of which equals
the number of SBLs
associated with the verb.
lTBL
(TIB 3)

Purpo~

Store GN numbers for
Q-Routines during Data
A-text processing.

I

I
2
I
IGN number of Q-Routine
,

Entry F reguen£l:
One entry for each
Q-Routine definition
in Data A-text.
Phases Involved
Phase-2 or, under the optimizer
version of the compiler,
phase 64 makes an entry in
this table when it finds a
Q-Routine identification
element in Data A-text.
Phase 6 or phase 64 uses
this table to initialize
Q-Routines when
generating INIT3 code
for object module.
QVAR
(TIB 24)

purpose
Store Q-Routine GN
numbers connected with
items containing OCCURS
DEPENDING ON clauses.
Entry Freguen£l:
One entry for each item.

i

I
2
I
I
I
IPointer to dictionarYIGN number fori
lentry for object of IQ-Routine fori
IOCCURS DEPENDING~ Ifirst item
Ifor firs~item ~ I
4

,

r-----.--,
I
4
I
rI
I Dictionary I
Ipointer fori
Ilast item I
I
I
•

I

Compiler Table Formats

375

Licensed Material - Property of IBM

r,------------------------,-,

Phases Involved
Phase 2 builds-this table I
2
141
from QRTH, QITBL, and
•
I r
OD2TBL tables.
IGN number for last itemlOj
Phase ~ adds Q-Routine
I
---'-J
GN numbers to
dictionary attributes of
items that are objects of
OCCURS DEPENDING ON clauses.

!!its
0-9

10-22

23-31
RCDTBL
(TIB 11)

Contents
Zeros
Dictionary section number
Displacement in section

Purpog
Store each 01-level
record-name in FD Section
until input/output verb
processing.

r----

i

I

•

--,
I

i

III Variable

2

+-+---

~

IDisplacement of entrylclRecord-name in BBeDle!
Ifor file in FNTBL
I I
I

L

'

-J

I

Entil-!gguel:!!:I
One entry for each
01-level entry in FD
section.

Phases Involved
Phase 10 builds this table
from 01-level statements.
ghase_l~ uses this table
in processing input/output
sta tements.

RDFSTK
(TI B 11)

~pose

Store information
about subject and
object of FEDEFINES
clauses.
]JUil-! re 9 uQll£I
One entry for each
REDEFINES clause.

r

1

1

I

,

T

I 4
I
4
..
t-I
tILevel numberlContents of addresslUnusedlLength ofl
lof REDEFINESlparameter field
I
I REDEFINES I
I' (idk)
LIsubject
____ LI ______ Llobject
_________ JI
,

3

Phases Involved
ghase ££ builds this
table from dictionary.
Phase-ll uses this ~able
to assign address
parameter to items
after REDEFINES clause.

(!)

First entry is a dummy

RENA!!TB
(TIB 3)

~E.Qg

Store information for
associating a renamed
item with all of its
renaming items if the
SYMDMP or TEST option is
specified.

376

Section 5. Data Areas

,

I ]

3---.,
,,

J---IDictionary pointerlDictionary pointerl
,for renamed item Ifor renaming item I

«

J

Licensed Material - Property of IBM

Entry Freguen£.Y
On entry for each

RENA~ES

item.

Phases Involved
Phase 22 builds this table
while processinq RENAMES clauses.
Phas~_6~ uses this table to
associate renamed items with
renaming items.

REPTAB
(TIB 29)

purpose
Store COPY •••
REPLACING data-names
to be used during
read from library.

r-r--

------------~ir-Ir_--------------------------_,

l'IVariable

Variable

111

I

I~I~----------------+-+I------

~

IclWord being replaced IclFeplacing word, literal, or I
ifier.
J
1, ,I
I I ident
__________________
__
--L-~

J

Entry Preguency
One entry for each pair
specified in the REPLACING
clause of the COPY
statement currently
being executed.
Phases Inyolved
Phase 02 builds this
table from COPY ••• REPLACING
clause in source program.
Phase 02 uses this
table to replace data-names
while source statements
are being read from
a library.
RLDTBL (Phase 6)
Purpose
Store information
on items to be
inserted in
data area or a
Global Table in the
object module.

o

Entry Freguen£.Y
One entry for each PN
definition, VN
definition, and adcon
in Data A-text.

.----

I
I
DCB address or
184
other Data
I
A-text element
I
GN or PN
194
definition
I
I A4 = VN definition
ICO = TGT adcon
L

,

i

I

3

~

I
--+ITarget II Priori ty
laddressl (0, i f no
segmentation)

3
I
1 ----of

I Value
I
lof adcon I.
I
I
1
I
I
I
I
I
I
...:..L-_______
.JI

Phases Involv~!l
Ehase 6 builds this table
during Data A-text
processing.
Phase 6 uses this table to
write RLD and text
cards for object module.

compiler Table Formats

377

Licensed !aterial - Property of IBM

RLDTBL (Phases 63 and 64)
Purpose
(TIB 28)
Store information on
items to be inserted in
the data area or a Global
Table in the object
module.

r

1

I
I

3

I

3

~

ICode
ITarget IPriority
IValue ofl
Idefininqladdressl (0, if no
I~DCON
I
!item
!segmentation)
I

CD!

I

Entry Frequency
One entry for each PN
and GN definition,
VN definition, and each
address constant in
Data A-text.
Pha se s In vol ved
Phases 63 and 64 build
this table during Procedure
A-text and Data A-text
processing.
Phase 64 USes this table to
write RLD and text cards for
the object module and to
resolve VN EQUATE PN and
VN EQUATE GN addresses.

CD

Last entry in the table is followed
by a byte of zeros.

CD

There is no TIB for this table.
Phase 6
uses the phase 00 routine GETALL to get
space, but moves data in and out of
the table by itself.
When it receives
control back from phase 00, phase 6 stores
the first address in the table space in
location ARLDTB and the length in bytes 'in
location RLDSIZ.
During processing, it
uses location RLDINDEX as a counter of the
bytes used so far.

RNMTBL (Phase 22)
(TIB 12)
Purpose
Store information
on objects of
REDEFINES clauses.
~:Lf~quen£'y

One entry for each
REDEFINES clause.
Phases Involved
Phase 22 builds this table
from dictionary.
Phase 22 uses this table
to check whether the
REDEFINES clause is valid.

378

section 5.

Data Areas

ll~!!ning:

94
1\4

C4

r

I

RPT-ORIGIN GN
DCB address or other Data A-text
element
GN or PH definition
VN definition
IN1T1 ADCON address in TG~

~--,

I
I
I Level nu mber I Pointer tol Dictiona ry
lof REDEFINESldictionarYlminor code
lentry for I for object
I subject
I
IREDEFINES I
I
lobject
I
L _ _ _ _,

•

1

+-

3

I
1
I
I
I
I
I
.I

Licensed Haterial - Property of IBM

(Report Writer)
(TIB 12) PUilml,§
store data-names
of report groups.

RN~lTBL

Entry_Frgg1lil.n£,I
One for each REPORT
GROUP that has a
data-name and is not a
detail report group.

------------r,----·----------,

r---------~,----

32

I

r--------rl---·

2

I

I

---------~I~----------i

IData-name IGN number for this IliOP £QQ§
I
Ifor reportlreport-group
100
NOP PLUS I
Igroup innl
101 = NOP ZERO 1 0
I EBCDIC Vi
I
I
"

J

I

Phases Involved
Phase 12 builds this table
from scan of report groups.
Phase 1B uses this table
to-generate coding in
response to USE BEFORE
REPORTING statements.

CD

Left-justified, padded with
binary zeros in low-order bytes.

o

First entry is a dummy.

ROLTBL (Report Writer)
(TIB 15) PUil~
Store the SUM
clause data-names
and operand-names
that are needed to
create ROL-ROUT
and RST-ROUT.
Entry Frgg~'y
One entry for eash sum
rolled forward.

I

-,

12

2

2

4

I

II
In ISUM

I
I
I
----i
IUnusedlDisplacement oflDisplacement of r:\1
~Ilevell
ISUM name entry ISUM name SNMTBL 01
~I
I
I in SNMTBL (this lor nnnn por tion 0 f I
I I
I
lis the item to IS.-name (this is
I
I I
I
Ibe rolled
Ithe item into whichl
I I
I
I forward)
I the sum is to be
I
I I ____"I ____ I ________ ____ I______
rolled)
----------.----JI
L-~

~~

~

~

Phases Involved
Phase12DOROL-routine
builds this table.
Phase 12 GNSPRT routine
uses this table to create
ROL-ROUT and RST-ROUT.

Contains zeros if this is the·last
entry in the table

~

4

Contains zerosl
to indicate
end of entry

oo

Bytes

£Qnteni§.
FF

1

00

2-3

Displacement

Compiler Table Formats

379

Licensed !aterial - Property of IBM

ROUTBL (Report Writer)
(TIB 16) PurI!0s~
Store GNs for
routines in each
Report writer
generated program.
Entry FrgglliUl£.Y
One entry for each
report in Report
section.
Phases Involved
fhase 12 builds and
uses this table.
Phase 1B uses this
table in Report Writer
verb processing.

•

,

I

2
12
2
I
2
2
I
I
I
I
IGN numberlGN numberlGN numberlGN numberlGN numberl
Ifor
Ifor
Ifor
Ifor
Ifor
IPGF-ROUT
11ST-ROUT
,IRPH-ROUT ,IRPF-ROUT IPGH-ROUT
,
,
,
i

~

,

12
2
2
12
2
I
I
I
I
,GN numberlGN numberlGN numberlGN numberlGN numberl
Ifor
Ifor
Ifor
Ifor
Ifor
I
ILST-ROUT I~RT~ROUT IWRT-1
IWRT-2
ICTB-ROUT I
I

,

I
,

2

2

I
I

2

i

2

IGN numberlGN numberlGN numberlUnused
Ifor
'for
,for
,
I ROL-ROUT IRS T-ROUT I RST-1
I
I
I
I
I
I
-,,'(he
I
I
I

I

I

I

,

I

,

i

,

2

I

2

IGN number for deta
Inow being processE
I it is moved to
IDETTBL at end of
I processing for the
I detail
I

,

12

,

,

i

12

2

I

12
I

IGN numberlGN numberlGN number/GN numberlGN numberl
I for
I for
I for PH- 1 I for ROL-11 for
/CHF-ROUT leFF-ROUT ,
I
lINT-ROUT
"

I

I

i

I,
I

2
I
I
,GN num~erlGN number'GN numberlGN numberl
Ifor
'lfor
Ifor
Ifor
IALS-ROUT IRLS-ROUT ISAV-ROUT IRET-ROUT
2

I

RUNTBL
(TIB 35)

PurI!ose
Collect and condense
information about
checkpoints.
En try Frequency
One entry for each
valid RERUN statement
specified with the
'~integer-1 RECORDS"
option.

380

Section 5.

Data Areas

2

..a......

,

I

2

'

i

,

4
2
I
IDeB number I DCB number
l"Integer" for
lof' RERUN
lof checkpoint IRERUN file
Ifile
Ifile
I

I

I

2

'

I

I

I

Licensed Katerial - Property of IBM

Phases Involveg
Phase 21 builds this
table from the CKPTBL
table.
Phase 51 uses this
table to generate
coding to count and
test "integer",
for READs and WRITEs
for RERUN files.
RWRTBL (Report Writer)
(TIB 13) Purpose
Store information
about a report-name.
Er.1ll2req,Yjill£.I
One entry for each
report-name.

i

30

i

5

i

I

+--

I

2

I

I

2

I

+-------/

IReport-namel-nnnn portion IPointer to ISize in I
lin EBCDIC lof record-name Ifile-name-1Ibinary
I
I
Ifor file-name-1Ientry in
lof larger I
I
I FNTBL
I record
I
I

CD

I

Phg~~olveg

I

,

i

,

I

'

~

--,

Phases 10 and 12 build
I
5
I
2
2
I
this table from scan of FDI
I
-/
and RD entries.
I-nnnn portion oflPointer to entrYIDisplacement inl
Phase 1B uses this table Irecord-name for Ifor file-na~2 IROUTBL of entryl
during-Scan of Report
L:ile-name-2 ~!in FNTBL
~
Ifor this reportJ
Writer verbs.
Left-justified, padded with binary zeros
in low-order bytes.

CD

Contains zeros, if report is to be
written on only one file.

SAMETB
(TIB 19)

PurposS!
Save information on SAME
AREA files until buffer
allocation and Data
A-text generation of DeB
and DECB elements.
Entry Frequenc.I
One entry for each file
named in a SAME AREA
clause.
Phases Involved
Phm21 builds this
table from Data IC-text.
Phase 21 uses this table
to allocate buffers
and fill in fields for
DC Bs and DECBs.

r

I
I

I

I

I
I

I
2
2
I
ISAME IRelative location I Number of IBlock size
IAREA lin object module
Ibuffers forlrounded up I
Inumberlof DC~DECBI or
Ique~ file Ito multiplel
I
IFIB
I
~
lof eight
I
~~I________________~I~_________I~I__~~=a____
1

3

\2J

--,-

1

--J!

I

I

I

,

14 bitsl4 bitsl
I 1
1
I
of
I
I
I
1BL numberlKey
IAccessl
I
I
Ifor this Ile~hl
I method I
I
Ifile
I 2b I
(])I
l~
I

I

0

l

I

Compiler Table Formats

381

Licensed aaterial - Property of IBM

SATBL
(TIB 5)

PUil.Q§~

Store file-names
associated with SAME AREA
clauses until all SAME
clauses have been
processed.

of ICard
in I number
I entry
I
I

Entry Freguenc'y
One entry for each file
in a SAME AREA clause.

c IFile-name
lin EBCDIC
I
I
I

Phases Involved
Phase 10 builds this table
from SAME AREA clauses
in source program.
Phase 10 uses this table
to check SAME AREA
clause syntax.
contains the relative location of
the DECB for BASIC files except for
BASIC files containing spanned
records. For BASIC files containing
spanned records and all other files,
this field contains the relative
location of the DCB. For VSAM files,
the field contains the relative
location of the FIB.

CD

Field

£od~

0100

®

1 if this is a BASIC file.
if this is a VSAM file.

=1

@
G)

Bit

-02
3

SEGINDX
(TIB 16)

Meaning
Format V
Spanned records, ADVANCING or
SAME RECORD AREA specified
Direct BDAM file when REWRITE
is used
Direct BDAM or direct BSAM
f He with key
Purpose
Store information about
program fragments if the
SYMDHP or STATE option
is specified
Entry Frequenc'y
one'entry for each
program fragment.

I

i

I

3

!

!

Phases Involved

wh'ile reading Debug-text and
building the PROCTAB table.
COBOL library subroutines use
this table.
For the SYMDMP option, the field contents are:
Section 5.

Data Areas

3

I

3

I
I
I
IPrioritYIAddress of thislTable-locator fori Table-locator
Inumber Ifragment rela- IPROCTAB entry forlPROCTAB entry j
I
Itive to the
Ifirst card/verb Ilast card/verb
I
Ibeginning of
lin this fragment Ithis fragment
the segment
Q)

~ase 65 'builds this table

382

on
QSAM file containing
spanned records
BASIC file containing
spanned records
VSAM file
Unused

Field is set to zero for VSAM file.

1

CD

Meani~f

2
3-7

~ Maximum record size rounded to a
multiple of 8 for VSAM file.

I

Method
QSAM
QISAM
BISAM
BSAM

l!.£~s

0000
0001
0010

!

CD

!

Licensed Material - Property of IBM
Bits
0-14

15-23

contents
Relative block number in PROCTAB
Displacement within block

For the STATE option, the field contents are:
Bits
0-23
SEGTBL
(TIB 15)

content§
Displacement from the beginning of the
PROCTAB entries in the object module
Purpose
store disk addresses of
sections of Procedure
A-text.

I

i

I
1
4
J
I
I priority numberJDevice address \..Y

f.I'\,'
I

Entry Frequency
One entry for each
segment control break
encountered in P2-text.
Phases Involved
Phase 51 creates an entry when
it finds a segment control
break. Gets priority from
PNOUT + 1 in phase 5, and
device address from cell
SEGSAV in phase 00. Phase 6
or, under the optimizer
version of the compiler,
phases 62 and 63 use this
table to combine sections
into a segment.

Byte
0-1
2
3

SETTBL
(TIB 21)

contents
Relative track number
Block number
Zeros
Purpose
i
, Variable
Store operands before
TO, UP, or DOWN in SET
statement; store
I Element as encountered in P1-textl
receiving fields
before ON SIZE ERROR
or next verb in ADD or
SUBTRACT statements with
multiple receiving fields.

•

En try Frequency
One entry for each element
of P1-text encountered
before desired element
is found in input buffer.

Phases Involved
Phase 4 builds this table
while processing SET
statements, or ADD or
SUBTRACT statements with
more than one storage field.
Phase 4 uses this table
to temporarily bypass
operands in SETTBL
table while it scans
input buffer for desired
element following
these operands.
compiler Table Formats

383

Licensed lIaterial - Property of IBM

SMRCDTBL
(TIB 5)

Purpose
Save information on SAME
RECORD AREA files until
buffer allocation and
Data A-text generation.

i

i

I
3
2
I
I
I
ISame IRelative locationlMaximumlFirst BLIFlag
IRECORDlin object module Irecord Inumber Ibyte
IAREA lof DCB or DECB
Isize
Ifor filel
Inumperl for BASIC FILES, I
I
I
I
lor FIB
I
I
I

CD

Entry Fr~Yru!£Y
One entry for each file
named in a SAME RECORD
AREA clause.

~!____-4!____C9~1~

________~!______,~!______~!____~

I

1 I
I
r'---+I----------------------------------~

Ph~s InJ[olve,g
IFlaglKey length (if bit 3 is on in preceding field) I
Phase 21 builds this
table from Data IC-text
Ib~1
I
and PIOTBL.
I~I __ .____________________,____________________
I
Phase 21 uses this table
to allocate record
areas, to generate
block address definitions,
and to fill in DCB or DECB
fields.
L'~~LI

SMSTBL (Report Writer)
(TIB 28) Purpog
Store SUM clause
operand-names for
correlation of SUM
and' SOURCE clauses.

~

i

I

2 I
c
I
I
I
c ISUM clause operand-name in EBCDICI

~

Entry Frequency
One for each
operand~name in a
SUM clause.
PhS2~S InJ[olve,g
Phase 12 builds this
table from SUM clauses.
Phase 12 uses this table
with SRCTBL and SUMTBL
to generate USM-ROUT
routine for each detail
report group and to
build ROLTBL.

contains the relative
location of the DCB for BSAM
files containing spanned
, records. For all other BASIC
files, this field contains
the relative location of the
DECB. For VSAM files, this
field contains the relative
location of FIB.

CD

Bit

01

2

3-7

384

Section 5.

Meaning
QSAM file
spanned
BSAM file
spanned
VSAM file
Unused

containing
records
containing
records

Data Areas

0

Bits
-0-1

2
3

4-7

0

Me an i n g&.-li-21!
Format V
QSAM with spanned records
and/or ADVANCING option
Unused
File is direct BSAM or
direct BDAM
Access method.
0000 = QSAM
0001 = QISAM
0010 = BISAM
0100 = BSAM
1000 = BDAM

First entry is a dummy.

Licensed Material - Prop erty of IBM

SNKTBL (Report Writer)
(TIB 35) J!!!rpose
Store all data-names of
SUM clauses.

.,' ,r·..------------o--T'---."
\

32

\

3

\

I

\

I

I

,

----J

\Data-name for sum bucket CI)\ Unused\

IDl try..1.t:M~y

CD

One entry for each SUM
clause.
Phases Involved
Phase 12 builds this table
from SUM clause.
PhA§e 12 uses this table
to correlate SOURCE and
SUM clauses, build
ROLTBL, and generate
USM-ROUT routine.

SPNTBL
(TIB 21)

Purpose
Store function-name
information from
SPECIAL-NAMES paragraph
in Environment Division.

i 3 11 iv ariable G)

..
I I
I 3 IclMnemonic-name in EBCDIC\

.,

"

Entry Frequency
One entry for each
function-name.
Phases Involved
Phase 10 builds this table
from SPECIAL-NAMES
paragraph.
Phases 12 and 1B use this table
to substitute functionname for mnemonic-name
in Procedure Division.
Left-justified, padded with binary
zeros in lOW-order bytes.
First entry in the table is a dummy.

o

Three possible configurations:
~~Q

~.ttL.1

b.

54

Code for COBOL
Unused
word used (see note 7
under PO-text in
Appendix C) •

c.

55

Code for carriage
control word
(see note 5 under
PO-text in
Appendix C) •

a.

1-character
literal in
EBCDIC

Unused

.!inL~

Unused

Unused

Compiler Table Formats

385

Licensed Material - Property of IBM

SRATBL
(TIB 6)

PUll~

Store file-names
associated with SAME
RECORD AREA clauses
until all SAME clauses
have been processed.
Entry Frequenc'y
One entry fGr each file
named in a SAME RECORD
AREA clause.

30

ICount of I Card
I
I files inl number ofl
lentry
lentry
I
I
I
I

c IFile-name
lin EBCDIC
I
I

Phases Involved
Phase 10 builds this table
from SAME RECORD AREA
clauses in source program.
Phase 10 uses this table
to check SAME RECORD
AREA clause syntax.
SRCHKY
(TIB 34)

Pur!!.Qg
Save names of keys cited
in KEY clause for group
item until group item is
processed.

I

I

i

2

1

•

,1 I Variable

I

1~------------rl~I~-------------~

101
102

= ASCENDING

IclName of key in EBCDICI
DESCENDINGI I
I
I

I

En.ifL F r .§g.!Hill£.Y
one entry for each key
named in KEY clause in
current group item.
Phases Involved
Phase22builds this table
from group items in
Da ta IC- te xt.
Phase 2 uses this table
to make sure keys named
are defined in group.
If not, sets error bit
in IBDKEY table for
phase 3 reference.
SRCTBL (Report Writer)
(TIB 22) Purpose
Store SOURCE clause
operand names to
correlate SOURCE and
SU ~1 cl auses.
En llLXf eg lliill£Y
One entry for each
SOURCE clause in each
detail report group.
Phases In vol ved
Phase12biiI1ds this
table while scanning
detail report groups.
Phase 12 uses this table
in conjunction with SMSTBL
and SUMTBL to generate
SUM-ROUT routine for each
detail report group.

386

Section 5.

Data Areas

•

I

---,

I
2
2
I Variable
I
,
I
~
ILength of
IDisplacementlSoURCE operand with
I
ISOURCE clauselinto DETTBL lall qualifiers, indexes, I
loperand-name lof detail
I and subscripts (if any) I
I
Ireport grouplin PO-text format.
I
Idata-name
I
I
I
L-

"

.J

Licensed Material - Property of IBM

[N
I 5)

Purpose
Save all subscript
strings preceding an
UNSTRING verb string.
Entry Fr~~y
One entry for each
subscripted data-name
in an UNSTRING statement

I

I

i

3

I Variable
I
18439 (hex) followed IData-name
IData-name reference (30)
Iby count of elementslreference (30) lor alphanumeric literal
I (34) element for first
Ithat follow
I element
I
I
,Isubscript string

I

I

t

Phases Involved
ghase 45 builds and
uses this table.

OUT
8 11)

Variable
Subscripted dataname reference (31)
element with subscript string ID
number in place of
idk field

f1lrpos~

I

Store subscript strings
in the order in which
they are to bHritten
as P2-text.
\..!)

I
3
I
Variable
I
I
18439 (hex) followed I Data-name
Iby count of elements I reference (30)
Ithat follow
I element
I
I

Eniil Fregueru;;y
The table is divided
into sections which
contain the subscript
strings for any
subscripted data
items that are
referred to by the
text in the corresponding
section of the TXTOUT
table.
Phases Involved
Phase 45builds and
USes-this table with
the TXTOUT table.

t

IVariable

I

I

I
I
I
I
I
I

,

Variable
I Data-name reference (30)
lor alphanumeric literal
I (34) element for first
Isubscript string

"

I
I
I
I
I
I
I

Variable
subscripted dataname reference (31)
element with subscript string ID
number in place of
idk field
r

I
I

I
I
I
I
I
I

-,

2

I
I

IFFFF (hex)
I
Ito indicate
I
lend of subscriptl
I information
I
I

,

If the corresponding data item in
the TXTOUT table is not subscripted,
the entry consists of a halfword
containing hex 'FFFF'.

Compiler Table Formats

387

Licensed Material -

SSDELIM
(TIB 20)

property of IBM

Purpo~

Save delimiters from an
UNSTRING statement that
have to be repeated.
Entry Frequen£Y
One entry for each
delimiter that is
either subscripted or
follows a variablelength group.

2

14

2

2

IPointer to
1541D (hex)-15479 (hex)lentry in
Icode for
Icode for
I SSCIN for
I"DELIMITED I"ALL" i f
I subscript
IBY"
I specified
,string (if
I
I
I none containsl
I
I
I
I zeros)

Data-name
informati<
for UNSTRJ
(2A) elemE

Phases Involved
Phase 45 builds and uses
this table.

STRING
(TIB 9)

purpose
Store verb strings
while they are being
built for output as
P2-text.
Entry Frequen£y
One entry for each
operand in current
string.
Phases Involved
Phase 4 builds this table
as-strings are processed.
Phase~ uses this table to
collect output before
generating.

SUMTBL (Report Writer)
(TIB 19)
Purpo~
Store data-names and
operand-names from SUM
clauses that are used
to create USM-ROUT,
INT-ROUT, RST-ROUT, and
ROL-ROUT routines.

1

i

2

I

1

I

3

,

•

I

I

r--------+1------~1r_----------_+1---------1

n

o

~~

______

ISUM levellcard number fori Reset level I
Ithis SUM clausel"
I
I
I ________ I ________ ____ I___________JI

~'

~'~

~

~'

Entil~reguen£Y

One for each SUM clause.
Phases Involved
Phase12 builds this
table from scan of
SUM clauses.
Phase 12 uses this table
to ~uild USH-ROUT,
INT~ROUT, RST-ROUT~ and
ROL-ROUT routines.

,
2

,

I

4

I

I
f
IDisplacement of entrylCode for
IPointer to SUM I
lin DETTBL for detail Inext fieldlname in SNMTBL I
Iname in SUM ••• UPON
I
lor nnnn portion I
Iclause
S.-name
____________________ I __________ lof
______________
JI
~

0

~

~

r-----------~"------------~,r---------------------------,

7

I

24

I

2

I

I
I
I
IE.-name
I PICTURE for IDisplacement of entry
I
I in SMSTBL for first
I
I (REDEFINES) ,name in
lin PO-te~IEBCDIC
loperand-name in SUM clausel
I format ~I
I
I
I

388

Section 5.

Data Areas

I

Licensed Material - property of IBM

2

Displacement of entry
IZerosl
in SMSTBL for last
I
I
operand-name in SUM clausel
I

Number of bytes in preceding field.

CD

contains zeros if this is last
entry in table.

Bits

Contents
06
E
(period)
nnnn

-01

Code
00
10

FF

rADTBL
CB 1)

Meaning
Next two bytes contain
displacement into SNMTBL.
Next four bytes contain nnnn
portion of S.-name.
Next field contains nnnn
portion of S.-name.

purpose
Store information needed
by phase 65 for processing the SYMDMP, TEST,
STATE, and FLOW options.
Also used to pass information between phases 62,
63, and 64.
Entry Frequency
Information entered
depends upon options in
effect. Only the first
five fields are filled
in if phase 60 builds the
table.

.

2
3-6

I

i

i

2

4

I
I

4

1Q)0J
I

IS~~

1\.Vt.2J
I

I

2

gMses Involved
Phases 60 or 62, 63, and
64 build this table.
Phase 62 uses this table
in processing the SYMDMP,
STATE, and FLOW options.

i

I
4
4
I
4
I
I
I
I
I Displace- RelativelRelative
IRelative Address INote addaddress of STARTlress of
I ment of
address laddress of
I DEBUG
of byte Ifirst ino~3~RT of QI first
Istruction in
ITABLE in after
~~
Routineslblock of
or INIT21code genINIT3
I Procedure
TGTG)
if no Q-Ierated for
(!)~ IDivision (in
Iroot segment
R~eslindepenI when program
~
Ident segIments on
lis seg~ted)

I

2

Displacement of
ILBOFLWO virtual
from beginning
of PGT if
FLOW and
DYNAM/RESIDENT
used ~1 . phase 64
~

Displacement of
ILBOTEF3 virtual
from beginning
of PGT if SYMDMP
and DYNAM/RESIDENT
and program
contains f"loatingpoint item used
lonly ~. phase 64

I
I

2
Displacement of
ILBOSGMO virtual
from beginning of
PGT if TEST option
is specified for a
segmeC!)d program

I\.!)
!

•

21

I
ILength of transientl
larea if program is 1
Isegmented-used by I
Iphase 64 to fill inl
ITALENGTH field_in I
ITGT
I,
,

Compiler Table Formats

389

Licensed Material - Property of IBM

CD
CD
CD
0

Filled in by phase 62.

G)

Contains zeros i f the program is not segmented.

Filled in by phase 63.
Filled in by phase 64.
Filled in only i f the SYHDMP or the STATE option is in effect.

TIBP (Alternate name for RNMTBL)

TIBR (Alternate name for RDFSTK)

TOTTBL
(TIB 32)

Purpose
Store TOTALED option
information from Data
Division for use in
Procedure Division
processing and by
phase 22.

1

1

2

111
30
I I
02 IDisplacement of
IcIData-name-3 froml
lentry for associated I ITOTALED option
Ifile in FNTBL table I lin EB~C form
I
I I
\2)

EnyY1requency
One entry for each
TOTALED option specified.
Pha se s In vol ved
Phase 10 builds this table
from-source program FD
entries.
Phase 22 uses this table
~assign BLLsto a
TOTALED AREA data-name
and items subordinate
to it.

(!)

Padding starts from low-order bytes.

TXT OUT
(TIB 19)

Purpog
Save UNSTRING verb
strings.
Entry Frequen£J:
One entry for each
UNSTRING verb string.
The table is organized in sections which
contain all the strings,
except subscript
strings, for an UNSTRING
statement.

I

I

,

3

I

I

I

2

3

18465 (hex) 15496
I Verb information (24)
I followed
I (hex) -I element containing
I by count
I code
I the sequence number
lof elementslfor
lof this string and
lthat follow I "FIRST"I the total number of
I
I
I strings
,

I

Section 5. Data Areas

Variable

I Text string elemen
Ifor DELIMITER,
I RECEIVING FIELD,
IDELIMITER IN, COUN
lIN, POINTER, or
I TALLYING

I

I

I

I
2
2
I
2
I
I
154A1
IFFFF (hex) -18484
I (hex) -I to indicate I (hex)
lend of
I
I code
Ifor
I string
I
I"END" I
I
I
I
I

(!)

390

I

----~l----------------

I

I
3
3
I
INumeric literallGN reference (AA)
I (BB) element
I element which
Iwhich contains Icontains the GN
Ithe number of
Inumber of the
IQ-routine~
Ifirst
routine
Ineeded
\2;
I
1
I

,

0

Licensed Material - property of IBM

,
I

2

,

I

,FFFF (hex) - I
I to indicate
lend of string 1

G

.

,

The field is present only if the text
string is for a data item which is
the object of an OCCURS ••• DEPENDING ON
clause.
UPSTBL
(TIB 29)

Purpo~

r'---rl-----------r'----~i------~--T'------~I

Build during scan by phase,1 I 3
I 1 I 6
IVariab1el
10 from SPECIAL-NAMES (if ~I---r'----------~I----+i------r'--~I~------;I
not. used, must be
I
Icard
I
IUPSI-XI C IMnemonicl
released) •
,n I number
106 I name 1
I name
I
I
lof UPSI-X I
I
'I
I
Phases In vol ved
Phase 22 deletes this
"
"
•
.J
tab1eafter use.

kD:

Count of bytes in UPSTBL
entry.
Card number of UPSI
definition
Type of entry and count.
Bit

0=1
2-7

USETBL
(TIB 26)

•

11
~

IC
I
I

CD

i

I Variable
I
I

I

PUD!~

,

:

i

I

I

,

,

C I con di tion-I
Il!c;tme
I

I r;-.,!
I

I

/0.

:

11 Variable

1condition-I
Iname
I

ICD I

Meaning
Type of entry
11 = Mnemonic name
10 = ON condition name
01 = OFF condition name
Count of name which follows

:

o

I

I

I
I

I

Associate USE DECLARATIVE I
2
,
1
information with
I
I
I
procedure name.
\PN numberl Attributes I
I
I
I
I
I
~
I
Entry
________-4'__
__
One entry for each USE sentence
specified in.DECLARATIVES Section.
Freguenc~

~1

~~

~!

Phases Involved
Phase 1B builds this table from
source program USE DECLARATIVE entries.
Ph~e 51 uses this table to· generate
variable entry code in DECLARATIVES.

®

Bits
0
1
2
3
4
5
6
7

~ei!ningl if on
Unused
MULTIPLE FILE
AFTER
BEFORE
REEL/UNIT
FILE
BEGINNING
ENDING

Compiler Table Formats

391

Licensed Material - property of IBM

USNGTBL
('lIB 2)

Pgrpos~

Store dictionary pointer
and PNs for Error or
Label Declarative
associated with the
USING clause of SORT
or MERGE verb until all
file-names in clause have
been processed.

,

,

i

14-13
114-15
10-3
1
1
,
I
1Dictionary pointerlPNs for Error or IUnusedl
I Label Declarative 1
1
,1
,

.

Entry Freguency
One entry for each file-name
in SORT ••• USING clause. One
entry for each file-name in
MERGE ••• USING clause.
Phase Involved
Rnase 30 builds and uses this
table during USING processing.
VALGRP
(TIB 6)

Purpose
Save Data A-text address
constant definitions for
group items containing
VALUE clauses.

iii

i i i

111111
3
1112
I
I I 1 I
1 1
I
110lcl2SIReiative address in object modulel ISize ofl
I ~
,where address constant is located®item
,

,

"

,

,

IDltry Frequency
one entry for each group
i
i
1
IVariable
,
item with a VALUE clause
that is current by being I
I
I
processed.
I c IAlphanumeric constant itselfl
Im®1
,
Phases Involved
_ _ _ _ ____________________________
Fhases 20 builds this table
from Data IC-text LD entries.
Phase 22 adds the length of
the group item and, if it is not
an ALL constant, deletes the
literal byte count~
!~

~i

VALTRU
(TIB33)

.f,yrpose
Store literals for
VALUE ••• THRU clause in
level-SS group item.
IDlY::LFreg~.I

One entry for each VALUE
clause of this type.
Phases Involved
Phase 20 builds this
table from Data IC-text
LD entries.
Phase 22 uses for syntax
checking of the VALUE IS
SERIES clause.
Phase 3 uses this table
to fill in P1-text
literals with the actual
values.

392

Section 5.

Data Areas

Variable
IclP1-text element
~ for literal ®

~'

,

,

Licensed Material - property of IBM

Data A-text prefix

First byte contains the follouing
code:

Humber of bytes to follow.

Type of Literal
Numeric
Floating-point
Alphanumeric
ALL constant
ALL constant (one byte only)

Code

32

Type of constant as follows:

33
34
39
75

01 = Alphanumeric
FF = ALL constant
If not ALL constant this byte is
deleted by phase 22.

®

signifies the end of a series.

In the high-order four bits:

o = Value is not followed by THRU
8 = Value is followed by THRU
The low-order bits contain the count
of bytes in the next two fields.

VARLTBL
(TIB 15)

fYrpose
Store information about
variable-length items
needed for the DATATAB
table if the SYMDMP or
TEST option is specified.

,

i

I
I

3

I
I

3

IDictionary pointer fori Maximum size (including I
I variable-length items I slack bytes) in bytes ,I

Entry Freguenc,I
One entry for each
variable-length item.
Phases Involved
Phase 22 builds this table
using information in the
GPLSTK table.
Phase 25 uses this table
while processing variablelength items for the
DATA TAB table.

VARYTB
(TIB 1)

Purpose
Control GN numbers
branched to in
PERFORM ••• VARYING
statement.
Entry Freguenc:£
One entry for each
PERFORM ••• VARYING
statement.

3

3

3

3

I GN number forlVN number IGN number for IGN number
I condition
Ifor variedlADD verb stringlfor MOVE GN
I, branch
Ibranches Ithat increments I

Phases Involve,g
builds this table
from PERFORM ••• VARYING
strings in P1-text.
Phase 4 uses this table
to issue P2-text strings
with correct branches
for different steps.

Rh~

Compiler Table Formats

393

Licensed Material - Property of IBM

VIRPTR
(TIB 13)

R!!rpos~

Store pointers to
CVIRTB during virtual
optimization.

I

1

I

2
I
~I--------------------------------------------~

JDisplacement from start of PGT in the object module to

1 virtual

Entry Fregue!!£'y
One entry for each virtual
definition element.
Phases llivolveg
Phase 6 or, under the optimizer
version of the compiler,
phase 62 builds this table
when it builds CVIRTB.
Phase 6 or~se 6~ uses this
table with CVIRTB to eliminate
duplicate virtuals. After PGT
allocation, each entry points
to entry in PGT virtual field.
Phase 64 uses this table to
locate the constant (EBCDIC
name) to be inserted in the
object program listing, if the
listing is requested.
VNPNTBL
(TIB 29)

,fyrpose
Establish addressability
at PN definition
location.

,

i

i

1

I

Entry Freguenc,Y
One entry for each VN
EQUATE PN or VN EQUATE GN
element encounterd during
optimization A-text
processing.
Phases Involved
Phase 62 builds this table
during Optimization A-text
processing.
Phase 62 uses this table
to update the ACCUMCTR
counter by 4 for each load
instruction to he generated
by phase 63 for each PN or
GN associated with an ALTER
statement.
phase 63 creates, for every
entry in this table, RLD
entries for the VNI cells in
the PGT. The phase
generates a load instruction
of the current procedure Block
into register ,11 at the point of
definition of the PN or GN
associated with an ALTER statement.
~

00

OF
FO
FF

~aninq

PN,
PN,
GN,
GN.

ALTER
PERFORM
ALTER
PERFORM

(code values are in hexadecimal)

394

Section 5.

Data Areas

I,

,

2
2
I
I
I
I
J
I
IType (DIPN or GN number IVN number I

I

I
I

Licensed Material - Property of IBM

VNPTY
(TIB 17)

,Ryrpose
store VN numbers and
associated prior'ity
numbers to later compute
the position of VNI
cells in the object
module.

•I

i

I 2
1
I
I priority numberlVN
numberl
,
1

,.

I

Entry Frgg.!!§!!£:!
One entry for each VN
number.
Phases Involved
Phase 6 or;-under the optimizer
.version of the compiler
phase 62 builds this table
from segmentation elements in
optimization A-text.
Phase 6 or, under the optimizer
version of the compiler,
phase 64 sorts entries by
priority numbers and uses
the resulting order to
compute the position of
VNI cells in the object module.
VNTBL
(TIB 11)

gyrpose
store information on
procedure~names that
have been altered by an
ALTER statement or are
ends-of-range of
PERFORM statements.

i
'I
J
2

1

2

I

I
I
IPN numberlVN number corresponding to PN

I
I

Entry Freguenc:!
One entry" for \ each
procedure-name.
Phases Involved
Phase 4 builds this table
from P1-text PNs and
VNCTR in COMMON.
Phase 4 uses this table
to modify addresses
and set up return VNs.
VRBDN
(TIB 07)

purpose
Describes each data item
encountered by the phase
in the P1-text for a
specific verb for
debugging.

I

I

1

3

CD

' I

Phases Involved
Phase 35 builds this
table and uses it to
describe each data item
encountered by t he phase
in the P1-text for a
specific verb which may
be considered for
debugging. Phase 35
deletes this table
upon completion of
processing.

2

I
I
I
ISvitchlDictionarYIDisplaceI
Jpointer
Iment in
I
I
IDBGTXT
I

I

I
2
I
I
I Displacementl
lin P1TEXT
I

Compiler Table Formats

395

Licensed Material - Property of IBM

Bit

Meaning
Valid entry
Data item in DTAB table
Generate data item debug text if statistics
is on and duplicates is off
Generate debug text twice
Data item may change
Duplicate Data item
Data item in DTAB, subscrip~ed

-0-1
2
3
4
5
6
VRDEFTBL
(TIB 14)

RYrpose
Store information about
the occurrences of COBOL
verbs.
Entry Fr~!l£'y
One entry for each COBOL
verb used.

I

---,- I

1

i

'

1111

111

-+- I

I

-+--t

148100lNumber of IEOIAlphabetic verblCOI
loccurrencesl
Isequence numberl
•

,

t

I

,

I

i

~ase

11
11Variable
11
I
I
I
II
4LengthlFBIVerb-textlFFI

Purpo~

C

Phases Involved
1B builds this
table when VBREF or VBSUM
is specified.
Phase 22 uses this table
to generate verb DEF-text.

XAVAL
(TIB 2)

I

11112

1

optimize use of
I
2
1
arithmetic temporary
1
I
storage by object module. lID number of 8-byte slot available in Working-Storage I
EntryJ:reguency
One entry for each
8-byte slot.

~--------------------------------------------------------~

Phases .Involved
phase 50 creates an entry
for-eiCh slot as it is
released.
Phase 50 uses this table
to obtaIn temporary
storage that has been
used and released in the
object module.
XINTR
(TI B 1)

PurpQ~

store and analyze
intermediate results in
compile-time arithmetic.
E ni£LKgg,y.!ill£.!

One entry for each
intermediate result.

r

----------~Ir_-----------,

I
16
I
2
I
2
I
I
I
I Compile-time
I Length after
I Length afterl
Ivalue in internallscaling in
Iscaling in
I decimal
linternal
decimallbinary
L
I
__________
__________
~I

I

Phases In vol ved
Phase-2Q builds this
table from ID number of
intermediate result
passed from phase 4
and its own analysis Qf
operands in arithmetic
5.tatements.

396

Section 5.

Data Areas

i

~

i

I
2
2
I
2
I
2
•
I
I
INumber of
INumber of
I Length
I Relative
Idigits afterldecimal placesloccupied
I pointer in
Iscaling
lafter scaling lin Working-I workingIStorage
I Storage
I
I
,

,

I

,

I
-f
I
I
I
I

Licensed Material - property of IBM

Phase 50 uses this table
to process compile-time
arithmetic verbs.

I

,

,1

I

1

I.

,

2,

,

IRegisterlCharacteristicslIntermediatel
Inumber lof ope~d
Iresult
I
I nu mbe r
,
I
I

0

"

Bit
-01
2
3

4
5
6

7

:RPT
[B 3)

,

I

on
Register used in double-precision
mode
Overflow could occur
Double-precision floating-point
Operand is in register
Operand is a literal
Operand is floating-point
Operand is generated constant
Operand is literal ZERO

~nin9..&-if

Purposg
store subscript and
index information for
optimization.
EntrLl!:gg~:l

one entry for each subscripted or indexed item.
Phases Involved
Phase 50 builds this
table from subscript verb
strings passed by
phase 4.
Phase 50 uses this table
to calculate address of
subscripted or indexed
item, or to generate
object code for the
calculation.

i

i

.•

I"
3
I I
In+1lNumber of 10lNew addressing
,subscriptsl Iparameter of
lor indexesl Isubscripted or
indexed item
2

2

!

!!

I
4
I
IDictionary pointer
Ito unique identifier I
lof subscripted or
indexed item

C9.

0

3

IFlaglDictionary pointer
I byte I to unigue identifier
I (;)IOf first subscrip~
1 ~Ior index-name
~

. .t

Compiler Table Formats

397

Licensed Material - Property of IBM

Bits

0-3-

CD

Megnin.9
3 = Byte 2 contains number of
register which contains
new address· at object time.
6
Bytes 2 and 3 contain the
number of a SUBSCRIPT CELL
which contains the new
address at object time.

If bits 0-3 contain any other value, then
the configuration is as follows:
Fiel,£!

4-15
16-23

XSSNT
(TIE 4)

i

.tleanill.9
Type of BL containing base

d
k

address of area:
0000
BL
0001 = BLL
0100 = SBL
Displacement from base address
BL number

PUn!!2§.§

I

f.Qll~.:l:.§

10-22
23-31

Zeros
Dictionary section numb
Displacement in section

Q)

Bits
0
1-7

Literal
Unused

0

Bi.:l:2
0-1
2-14
15-23

ConiSll.:l:§
Zeros
Dictionary section numb
Displacement in section

Meanin~if-2!!.

i

Store pointers to
XSCRPT table dur ing
calculation of subscripted or indexed
addresses.

I
2
I
2
I
I
I
I
lID number
IDisplacement in XSCRPT I
lof subscriptltable of new address
I
lor index
I parameter of subscriptedl
Icomputation lor indexed item
I

Entry Fr.§.9.Y.§1l£.Y
One entry for each entry
in XSCRPT table.

I

Pha.ses Involved
PhaseSObuildS this table
while building XSCRPT table.
Phase 50 uses this table
to~ocate entries in
XSCRPT table.

398

I

Bits

0-9

Section 5.

Data Areas

I

,

Licensed Material - property of IBM

The types of compiler text produced by each
phase are given in Figure 61.
In this
appendix, there is a separate section
describing each type of text.
The sections
are in the folloHing order:
.. IPTEXT

section headers, and standard
paragraph-names are omitted.
All internal text elements begin with an
identifier byte.
In IC-text and E-text the
first two bits of ~his byte contain a code
with the following significance:
Code

" Data IC-text
o

01

ATF-text

10
11
00

" Data A-text

..
..
.

procedure IC-text (PH Form)

.

Proced ure IC-text (P 2 Form)

Q

..

Proced ure IC-text (PO Form)
Proced ure IC-text (P1 Form)

NOTES ON TEXT ELEMENT FORMATS
ATl1-text
Procedure A-text

.. Optimization A-text
Q

Meaning
1 byte follows
2 bytes follow
3 bytes follow
The byte immediately following
this gives the number of
bytes that follow it.

Procedure A1-text

.. The top row of figures shous the byte
numbers occupied by each field. except
where the field is preceded by a
variable-length field •

..

1J4~i%ili:~~?~ii;;i!:;;,§Ji~Ii;~5f!; 1 e fi ne 0 ptio na 1
fields or a series of similar fields •

.. E-text
II

XREF-text

., Debug-text
With some exceptions, one IC-text
element represents one sourC8 element.
A
source element is a COBOL reserved word, a
punctuation symbol, an arithmetic operator,
a relational symbol, an EBCDIC name, or a
literal.
The major exception is that one
IC-text element represents a complete data
item description. Other exceptions are:
the word DIVISION is suppressed in division
headers, the word SECTION is suppressed in

.. c = the number of bytes in the
that follows.

iig1~

.. n = the total number of bytes that
follow in the remainder of the text
elem!U!i.
• 1b

=

this field is one byte long.

• s = size, in Ilord.s, of the block
section or area to lihich the elemenT.
refers.
• Pairs of characters in byte 0 are
hexadecimal numbers.

Internal Text Formats

399

Licensed Material - property of IBM

BASIC LISTER FORMAT
r

i

t

,

i

1
1
1
1
1 1
1Variable I
1-----f----f---+I-----4'
Itype codelcard
Ilength Itext
I
I f::'\
I column I
I
I
I 0
I number I
I
I
L

'

,

CD

,

,

SYNTACTIC AND REFERENCE MARKERS (ONE BYTE)

r'-----....
I
I
It yp e code
I

0
3

L-

SYNTACTIC AND REFERENCE MARKERS (TWO BYTE)
r-

i

I
,

I
I
Ityp~e
code Imodifier code

I
L---

(2)

4

I_ _ _ _ _ _ _ _ _

~_~!

~

Type
Code

1!!u.l.
50

51

52
53
54
55

58
59

3C
~s.n.~rul

A COBOL source name (subject to
cross-referencing)
A COBOL reserved word
Syntactic string with no special
lister importance (for example,
text from a note paragraph)
Left punctuation (printed on left
end of string with no intervening
blanks)
Right punctuation (printed on
right end of string with no
intervening blanks)
A prose element from an *-comment
card
Initial ETEXT elements (with card
numbers)
Subsequent ETEXT elements
(w ithout card numbers)

3D
3E

3F
36

3A
37
38

39

o

Type
Code

1I.§:l!;
45

Length in bytes of the text in the
following variable field. Type
ot::\ (Hel)
Code

OC

xx
33
34
35

400

Me~i.!!.SIL!!2~~

Marks beginning of a COBOL source
Definition (range is 0-51 and
denotes the nesting depth)
Marks beginning of a COBOL source
Statement in column 8, 10 or
margin B
Column 12 org re at er ,

Section 5. Data Areas

respectively
Marks beginning of a COPY
statement
Marks end of a COpy statement
Marks beginning of a copied
library member
Marks end of a copied library
member
Harks beginning of a reference to
a source definition
Harks beginning of a reference to
the (TALLY, TALLYING) register
Indent to the left two places
Indent back to the right two
places
Cancel all outstanding BCLSEs.

44

Meaning
Indicates a COBOL source clause
and the modifier code indicates
where this clause belongs in a
standard ordering. In phase 08,
a COBOL source statement
continuing several BCLSn clauses will have these sorted in
ascending sequence on the
modifier code value prior to
printing and punching of that
source statement.
!odifier= C'E'.' Marks beginning
of erroneous, .issing, or out of
order COBOL source text.

Licensed Material - Property of IBM

44

Modifier = caRl. Marks end of
erroneous COBOL source text.

4B

Information collected at the
point of definition indicating
the type and statement number of
the reference. May be moved to
another definition prior to final
output to phase 08.
(Note: IPTEXT information passed
to phase 08 will contain no
CONDREFs. )
Tells phase 06 the statement
number of the Procedure Division
section from which the following
CONDREFs came.

The following codes have a four-byte
format, and are used by phase 06 for
creating and imbedding cross-reference
information into the IPTEXT which is passed
to phase 08:
Code
Hex

qa-

49

4C
n~sningLQsag~

Marks end of a source DEFN
reference (a source name followed
by zero or more qualifiers).
Phase 05 creates this and phase
06 fills in the statement field.
Marks end of a reference to a
Procedure Division definition.

The format for X'48' through X'4C' is as
follows:
r---~----------r---------------------,

1

The following codes are created by phase
06:

Code
H.~

4A

1

2

I

•
I
I
I
ItypelreferencelReference/definitionl
Icodeltype
Istatement number
I
,

J

MeaningLUsage
Information collected at the
point of definition indicating
the type and statement number of
the reference.

Internal Text Formats

401

Licensed Material - Property of IBM

LD ENTRY

r

i

.-

,

13-5

,

,

16

17
I

,

I

i

, 11
,8-9
110
I
.. I I
1
I
I
I-1031nlLevel
I ISource card numberlswitchlSwitchlOCCURS DEPENDINGISwitchlNumber of
I indexes
I byte I byte ION maximum
Ibyte
I I I indicator! I
I occurrences
I following
I I I
1 I
I
I
I
1
I
I
I
IL---L--L-_
I I
_ _ _ JI
,I
I 01112

CD
r

0-

0

r

I

I

I

,

I

.,

0

I

,
i

I 12

I

CD

I

,

i

i

I 131Variable 11 b I Variable 11 bl Variablel1 bl Variable IVariable
I
-f--tI
I I
I
I
I
~
I Number oflc I Name of
Ic I PICTURE Ic I Encoded I c IREDEFINESIOCCURS DEPENDING ON I
I data iteml
I (actual) I
I VALUE
1 keys
I
I Idata-namelpointer
I
I following I
I
I I
1 I
I
I
I
1
I
I
I
I _ _- - - L I
I
I
1
I

•
L

I

R~i~:

I

CD

I

.I

I

01 1 0)

I

I

I

A series of logical records can follow the LD entry.
ordered as follows:
i

1

i

CD

J

The types of records are

I

.,

Value for
11b
11blVariable
I
condition-name
Ir-----I
with multiple val ues 1Switch byte ( ] c I Encoded VALUE I

+-----------.

L-

I

,

I

r-----------~I-T.--·---------------------------__,

Indexes (first)
and/or
Keys (second)

11b

11blVariable

I

I-

I

~

IFlag byte
~

I

@Ic IIndex-name or key-name in EBCDIC I
,
~

rr-----------r'--'r-- --------,

Object of RENAMES
or
R EN AM ES T HRU

11b

I-

11blVariable

I

----~=+--+------------~I

IL
ID
code
--

@IC
I Na me _
in
EBCDIC JI
"
___

SD ENTRY
~,.-------,

I 01112

r--+-~-----------~

1031nlLevel
I
I 1 lindicator 361
I I I (he x)
I
I

,

l-=+-

17-8

19-10

,I

I

I

~

'--....L-

'

~----------------'-'I------,

I 13 14-6

J

1@lsource card numberlMinimum RECORDIMaximum RECORDI
I
I
ICONTAINS valuelCONTAINS valuEI
I
I
I
I
I

r--.---------.-----

111112

T'--T'-------------------------------------------------------"I

~~-------+-----+-+----

I

I

I

, 1--.

.-------------------------~

ISor":-name in EBCDIC;
Iblanks

I

I

11b I
I 01'12
I 131 Variable
l- I I
of ..-;-+--l
I031nlLevel
1001
I IclUser-assigned
I
I lindicator 341 I IEBCDIC report-name I
I
1 I (hex)
I I I
I
L
I
I
--I
I
I
--'-J
402

J

113-20121122-51

I@SAME RECORDIUnusealc
I
IAREA numberl
I
L--1. _ _ _ _ _ _ _- - ' -

ED ENTRY

,

Section 5. Data Areas

low-order unused bytes padded withl
I
----I

,

,
I

I
I
I

I
J

Licensed Baterial - Property of IBM

FD ENTRY
r

i

,

,

r

i

I I 3- 5

I 011 12

rl-+I~I~----------I

10 3 1niLe ve 1
I
I· I lindicator 381
I 1 I (hex)
I
I I I
I
~I~I~~I--.---------~

,

I

16 - 131 14

I i i

I

1 16
11 7
11 8 -1 9
1
I~--------+I~-Ir+-- I
I
I
--;
ISource cardl @ISwitchlSwitchlSwitchlBuffarlDisplacement of
I
Inumber
I ' Ibyte Ibyte I byte loffsetlentry for file in I
1
Ivalue IPIOTBL
I
1
1
I ~ I
I
I
I
I
1 ~ 1 @ 1 @ 1
I

.----

i

120

121

l

I

"

115

"

,

I

•

J

,

i

-,-

I

122-23
124-25
126-27
128-29
I
a--+I
I
I
I
.,
INumber of areaslSwitchlInteger-1
IMinimum
IMaximum
INumber of I
Ispecified in
Iby~
Ispecified in Inumber of
Inumber of
ITRACK LIMITI
IRESERVE clause I ~ IBLOCK CONTAINSlrecord by tes I record bytesltracks
I

..--

,

,

I

I

,

I

I

I

I

I

I

,

130-31 132-33
134
139-42 143
135
136
137
138
I
I
1
I
1
a--- 1
of
I
I·
IUnusedlDisplacement oflSAME ISwitch 1swi tch ISwitchl SAME 1Unusedl Unusedl
I entry for file IAREA Ibyte I byte Ibyte I RECORD I
1
1
I
lin CKPTBL
Inumber I
IAREA I
1
I
1
I
I
I
1
I
1 @ 1 @ I @ Inumberl
I
1
I

,

•

I

I

i

i

-..&.-.

i

144-45

I

I

--T',151
150

-.,.

I

I

---,r------"T'~--T,---"

146
147
148-49
152
I
I
I
I' I
I
IBLOCK
IswitchlCount of ID-IDisplacementlUnusedlLINAGEICount of
Ibyte Itext elelof IDs in
I
I
IPASSWORDS
I CONTAINS
Iments folIINDTBL
I
I
Ifor
Imaximum countl
I
I
Ilowing IDCNT I
I"
ALTERNATE
I
1
I
1
1',<;;\
'KEY'
I@
I
,
I
I@I
I
I

a---

,

I

f

.---

,-

,

i

' "

i

153-54 1551
I
I I
IUnusedlc I
I
I I
1
1 I
I
I'
I
I I
I
I I
"

,

i

i

IVariable

IVariable I variable
I Variable
I Variable
IVariable
a--I
--rl-----------+I----------~I------------+I----------~I
IFile-name ITRACK
INOMINAL KEY
I ACTUAL KEY andlRECORD KEY andIREORG-CRITERIAI
lin FD e~trYIAREA sizeland qualifierslqualifiers
Jqualifiers
,data-name and I
I
I
I·
1
I
I qualifiers
I
~
@ ___!~@..;;..3
_@..;;;23~
---L!~@",-3_ _---I~

!

@

I

~

tVariable

a---

!

___--I-!

i

,i

I Variable

IVariable

I Variable

I

I

1

__

'i

i

IVariable IVariable

I

I

,

1

IFILE STATUS
IPASSWORDIRELATIVE KEY ITOTALING AREAILINAGE
,FOOTING
I
Idata-name andldata-name andland qualifiersldata-name andldata-nameldata-name
I
I qualifiers
I qualifiers
lor
lor
I
I qualifiers
I
I
I!int~er
lint~er
I
I
I@
I@
I@
~I~
I
'-----=-'
,
' . J

@

Variable

Variable

Internal Text Formats

403

Licensed Material - Property of IBM

ID ENTRY
r-I 0

i

i

3 111-6

2

•
1
IIC
ICount
IIC
IFlaglCard
Itypeslof fixedllevellbytelnumber
I
Ipositiont
I
I
t@ I@ 1
I ' 03' I' 05'
,

I

' "

,

CD ENTRY
r

i

101112

i

I

.,
I
I
I
I

i ' ,

i

13-5

16

jVariable

I

t~l~t----------+I---------------rI----~Ir---------"

103lniLevel
~Isource card numberlSwitchlCD-name inl
I I indicator ~I
Ibyte . 1EBCDIC
1
Lt~~~!_(_h_eX_)_______· ~I________________!~.~~~!

I

_________l

If bit 0 is set to 0 in the Switch byte, the following fields are also generated •

li~i2:

.--

i

i

i

i

•

i

'

,

IVariablelVariableiVariablelVariablelVariablelVariablelVariablelVariablel
I
I
I
I
I
I
I
I
IDataIDataI DataIDataI DataI DataIDataIDataI
Ina@-1 I name-2 Iname-3 I name-II Ina@-s I na~-6 Ina@-7 In@-a I
1 26
I 2
I 2
I 2
I
l@ I 2

•

~®

~®

I

Note:

I

I

I

,

I

i

i

,

i

IVariablelVariablelVariablelVariablelVariablelVariableI
IDataIname-l

!@

I DataIna®-2
I 26
I

I DataIname-3

!@

.

I Data-.

I Data-

In~-II

Ina®-s
I, 2

I@.§J
,

CRITICAL PROGRAM BREAK
i

'1

10 11

,.

I

I

I

1421Type of break I
I

®

II
L

I

@

I

'

DESTINATION TABLE ENTRY:

,

I

1 0-1
l

1 2
I
I number

tnumber
lof index
lof
I occurrences I entries
,I
,I

1@

.-0

I

I

I
1

I Oil

I
I
I

I Prefix
I

,

I

I

I name-l
I

I name-2
I
I

1index-

I@
,

I

I Variable

C

1
1EBCDIC for
1index-name-n
1

I.-

404

I

Section 5. Data Areas

I

I Variable IVariablel

INDEX-NAME FORMAT:
1

1variable •I
f
I DataI
Ina~-'l I
I 2
I

.

If bit 0 is set to 1 in the Switch byte, the following fields are also generated.

I

i

~

I

,•

I index-

,

,

I
I
I
I
~

•••

1Variable
I
I indexIname-n
I

,I@

1

I
I

~

Licensed Baterial - Property of IBM

CD

Code
(hex)
01-31
32
33
34
36
37
38
39

®

Bits

-01

2-4

5-7

CD

Bits
-01
2
3
II

5

6
7

Bit§.

o

2-4

=
=
=
=
=
=
=
=

~lliI

Levels 01-49
Level 77
Level 88
RD
SD
CD
FD, or in Report
Section,
Special RD elements
Level 66

Code
'-;-BLANK WHEN ZERO
1 = JUSTIFIED
!ype of VALUE Clause
000 = No clause
OC1 = Alphanumeric literal
010 = Numeric literal
011 = Floating-point literal
100 = Figurative constant or ALL
lC1
Figurative constant ZERO
111
Condition-name with
multiple values
Type of USAGE
000' No clause
OC 1 = DISPLAY
010 = COMPUTATIONAL
011 = COMPUTATIONAL-1
100
COMPUTATIONAL-2
101
COMPUTATIONAL-3
110 = DISPLAY-ST
111
INDEX
Code
1 = OCCURS DEPENDING ON
1 = REDEFINES
1 = PICTURE
1 = COPY
1
Internal REDEFINES
(RD entry)
= S.nnnn description and
there,for e the PICTURE field
contains the E.nnnn name
from which the PICTURE
information is to be
extracted.
1 = RENAMES data -name follows
1 = SYNCHRONIZED
Meaning. if SYNCHRONIZED
o = SYNC LEFT
1 = SYNC RIGHT
RENAMES 'THRU data-name
follows
001 = SIGN is overpunch
trailing
011 = SIGN is overpunch
leading

101 = SIGN is separate
trailing
111
SIGN is separate
leading
If there is an OCCURS
Unused'

=

5
6-7

Contains zeros if this value is a
condition-name with multiple values.
These values follow the LD entry.
VALUE encoded like a figurative
constant, literal, or ALL character in
Procedure IC-text, except: for numeric
literal, digits not packed but in EBCDIC
format, with sign in zone of low-order
digit.
Note: This field contains zeros when
the-item is a condition-name that is
part of a VALUE ••• THRU .• ~clause.

(2)

Zero if no REDEFINES clause.

o

a.

If there is an OCCURS DEPEN DIH"G 0 N
clause, the field is a 16-bit number
representing displacement from start
of OD2TBL of entry for object of
clause.

b.

If internal REDEFINES (RD entry),
the field is a 16-bit number
representing the displacement which
added to the object gives address of
REDEFINES subject.

c.

If neither, field is eight bits of
zeros.

®

Bits

0-23
4

5-7

,£ontents
Zeros
1

o

Either value is upper limit
of THRU range, or THRU was
not speci fied.
1 = Value is lower limit of
range; upper limit name
follows.
Valu!a !1~in9.
001
Alphanumeric literal
010
Numeric literal
011
Floating-point literal
100
Figurative constant or ALL
101
Figurative constant ZERO

InternaL Text Formats

405

Licensed Material - Property of IBM

@ ~it.§

l1§.l!ning
Zeros
Unused
1
INDEXED BY
1 = DESCENDING KEY
1 = ASCENDING KEY

0-3
4
5
6
7

Code
22
23

@

§.ill

o
1

2

3-4

Meaning.
This name qualifies the name
that follows.
This is either a name without
qualifiers, or it is the last
(qualified) name in a string.

5-6

7

@

Bits

~teni2

0-5
6
7

Unused
1 = SAME RECORD AREA
Un used

~it.§

~lli!l12

0-2
3-6

Un used
Code
B§£2I..L!Q.ll!t!.

1000
0100
0010
0001
7

1

=

F

V

U (invalid)

@

~de

2
3
4
5
6
7

S

Bits

--01-3

4-6
7

Bits
-0-1
2
3

4
5

6
7

406

TRACK AREA
00 = Not specified
01 = Data-name
10 = Integer
1 = RELATIVE KEY
1 = NOMINAL KEY
1 = ACTUAL KEY
1 = RECORD KEY
1 = WRITE ONLY
FILE STATUS specified under
SELECT

ASCII collating sequence

ddname portion of system-name of file,
padded with blanks, if necessary.
Bits

Code
,;-COPY
Unused
RECORD CONTAINS CHARACTERS
BLOCK CONTAINS option
00 = Not specified
01 = RECORDS
10 = CHARACTERS
LABEL RECORDS option
00
Not specified
01 = STANDARD
10
OMITTED
11 = Da ta':'name
1 = REPORT clause

0=6
7

~nin.!IL-if ill!
Unused (4 multi pIe

files)
RESERVE integer
not in valid range
RECORD OVERFLOW

Cog.§

= RANDOM

ACCESS
Qrganization
000 SEQUENTIAL'S'
001 INDEXED
010 DIRECT with REWRITE 'i'
011 DIRECT 'D'
100 RELAT IVE
Reserved
1 = RESERVE ALTERNATE AREA

1

fgSil

Meaning.jL2.!!
OPTIONAL in SELECT
SAME AREA
Unused
SAME RECORD AREA
SAME SORT AREA
This entry contains pointer to
CKPTBL
This entry contains pointer to
PIOTBL
Word 'ALTERNATE' specified in
RESERVE clause

Section 5. Data Areas

Bits

0=34
5
6
7

Meaning« if on
Unused
CORE-INDEX
. REORG-CRIT ERIA
ASCII file
Unused

Licensed !aterial - Property of IBM

~

Bits

-01

2
3
4
5
6-7

Meanin!lL-.iLm!
TOTALING AREA
TOTALED AREA
(Unused after phase 1B)
Format F
Format V RECORDING MODE
Format U
Format S
Unused

Either name containing size of TRACK
AREA preceded by count-byte of
character or 2-byte field giving
integer TRACK AREA count.

-,--

Subfield

2

Contents
2-byte-count of bytes in
all the subfields that
follow in this field.
Name of highest level
qualifier preceded by
1-byte count of
characters.

n

Name of lowest-level
qualifier preceded by
1-byte count of
characters.
n+1
Zero. to separate this
field from the next.
If the option is not specified. the
field consists of one byte of zeros.

Series of all label record-names. each
preceded by a 1-byte count of
characters.
Bi!
Me~ninq
o
1 = OUTPUT
1
1 = Variable entries follow
2
1 = CD for INITIAL INPUT
3
1
Destination tabl,e specified
Byte

o

1-c

!12ning
Count of bytes in the field that
follows (c)
EBCDIC name of data-name-n

If a data-name is not specified. the
field will consist of one byte of
zeros.

Code

@ J!l~l
01
02

03
04
05
06
OE

Type of Break
Data Division
File Section
Working-Storage Section
Linkage Section
Report Section
Procedure Division
Communication Section

FSEVAM
Bit
Meaning
-0
1 - 'AS' specified as
organization parameter
1 = no organization parameter
1
2-4
ORGANIZATION clause
RELATIVE
2
3
INDEXED
4
SEQUENTIAL
ACCESS MODE DYNAMIC
5
ALTERNATE RECORD KEY(S)
6
7
PASSWORD specified
LINESW
Bit
Meaning
-'0
LINAGE clause specified
FOOTING option specified
1
2
TOP option specified
BOTTOM option specified
3
Object by LINAGE is data-name
4
5,
Object by FOOTING is data-name
Object by TOP is data-name
6
Object by BOTTOM is data-name
7
If the field is a data-name. it will be
preceded by a one-byte count field. If
in teger. the field will be eight bytes
in length. If LINAGE clause or other
three clauses are not specified, each
unspecified field will be replaced by
one byte of zero.

!1 ean ing
Level is ID
Bit
0-2
3
4
5
6-7

Meaning
Unused
1
Another ID follows
1 = PASSWORD specified
1 = DUPLICATES specified
Unused

Internal Text Formats

407

Licensed Material- Property of IBM

I

...---r-T

Level 10 1112
13-5
01-49
I I
+or 77 1031 nl Level ICard
items I I I number Inumber
I
I

•
I

1m
I

I

..l.-

•
16-7 18-9
110
111
112-13
I
I
I
I
I
I
of
IFlaglMaximum
INumber INumberlLength of thel
I number of lof
litem in the I
lof
I
1 0 I occurrences I indexes I keys lobject module I
I

i

i

I

I

I

I

I

I

I

I

14-Vs.riable
IEBCDIC name
lof item
I
10
I

Level I10 "111
12
89
r-+-t------+I
items I031nl
IX'33'
I (Level
I I I
I number)
I
I~
I 1\lA
,I
I

CD

'I

I

13-5
I
ICard
Inumber
I
I
I

I

IVariable
I
IEBCDIC
Iname of
lite
I
3

0

I

I

IVariable
I
I Partial
I dictionary
I a ttribu tes

!~

The maxmimum length of any element is
204 bytes.

2.

The flag indicates the origin of the
element, as follows:

3.

Bit

4.

-01
2
3

4
5
6

7
9

9
10
11
12
13
14
15

MeMing
RENAMES ••• THRU clause
Next element is an FD
Next element is an SD
Next element is an RD
Conditional variable
Data A-text follows
VALTRU table entry
VALGRP table entry
ODO
REDEFINES clause
USAGE is not DISPLAY
Item is or is in a LABEL record.
Internal redefines
RD
RENAMES clause
SYNCHRONIZED.

Either:
1.
2.
3.

Either:
1.

2.

Either:

3.

408

A 1-byte length count followed by
the objects of the REDEFINES
clause, if flag bit 9 is on; or

Section 5. Data Areas

A 2-byte OD2TBL table displacement
if flag bit 8 is on; or
A 2-byte internal redefines
displacement, if flag bit 12 is on;
or
The field does not exist.

The attributes are prefixed by a 1-byte
count of their length

The name is prefixed by a 1-byte count
of its length.

1.

A 1-byte length count followed by
the object of the internal
REDEFINES clause, if flag bit 12 is
on; or
A 1-byte length count followed by
the Report section (RD) name, if
flag bit 13 is on; or
The field does not exist.

4.

A 2-byte VALGRP table displacement
if flag bit 7 is on; or
A 2-byte VALTRU table displacement
if flag bit 6 is on; or
A 2-byte VALGRP table displacement
followed by a 2-byte VALTRU table
displacement if flag bits 6 and 7
are ·on; or
The field does not exist.

Licensed Haterial - Property of ZBH

DCB ADDRESS
..--r

I

I 011-3
14
I
• I
1041Relative address in INumber assigned from DCBCTR in COMMONI
I lobject module of DCBI
1
I
I
, .'
DECB ADDRESS
.-- t

1 011-3

r-+

'

i

14

I

I

15-617-81

,----------------+I----------------------·---------41--~_4

1081Relative address in INumber assigned from DECBCT in COMMON 100
I ,object module of DECBI
I
,
,

s

. '

BLOCK ADDRESS
i

i

10,1-3
I '

i.

'

i

I

14
15-6/1-81
I
I
,
~OCIRelative address pointedlBL number -- first base locator numberlOO
s 1
I Ito by base locator
lassigned to file from BLCTR in COMMON I
1
1
1
I I described in next field I
,

,

oJ

FIB ADDRESS
i

i

I

,

I

,

I 011-3
14
1
I
r
I I
1141Relative address in
IFIB number -- File Informationl
IBlock number assigned from
I lobject module of
I
IFile Information BlocklAHICTR in COHMON
COUNT INFORMATION
.-

I

'..

I 011-3
I I
.
120lRelative address following
I lo-routines during Data-A-text
I ,'processing

WORKING~STORAGE

,

,

I

I 415-617 through ~ + c
I I
1
1001 c tActual constant
I
I I
I (COUNT table information} 1
1 I
I
I

SECTION ADDRESS

I

I

I

,

15-11
1011-3
14
I
I I
.
I
1241Relative address in
IBL number -- first base locator number assigned I s
1
I lobject module of
Ito Working-Storage Section from BLCTR in
I Iworking-Storage sectionlCOHHoN
I
,

'

I

CONSTANT DEFINITION
•

i

i

i

I

1011-3
14
15-6/1 through 6 + c
'-1
I
1
I
1281Relative address inlType of I c IActual constant. If ALL,
lobject module wherelcon~ntl
loccupies only first byte.
!constant is located!
\.!)!

0:

®

i

1
I
I
I

!

Internal Text Formats

409

Licensed aaterial - Property of IBM

:..;

ADDRESS CONSTANT DEFINITION

r--T

i

I 011-3
,
I
12CIRelative address in object
I I module where address .
I Iconstant is located

i

i

14
15-7
I
I ..
I
I
ISize, in bytes, I Relative address in
I
lof address
lobject module specified I
I by .address constant
I
I constant

DELIMITER
i

"1

I 0

I

,

~

,101@1,

Q-ROUTINE IDENTIFICATION
rr~.r--------------------------------------------,

I 011-2
I
r~----------------------------------~'
1341GN number -- generated procedure-~ame numberl
I lassigned from GNCTR in COMMON
I

BL REFERENCE
i

•
14

I

I 011-3
•
I

1381 Relative address from beginning
I lof the program where disI I placement for base locator cell
I
Idescribed in next field is to
I Ibe placed
•

I

I

IBL number -- base locator I
1number
I
I
I
I
I
1
I
I

BI.L REFERENCE

r--T------------------·--------------'I--------------------------"
I) 11-3
14
I

I

I

I

,

,

--~.-+I--------------------~I

13CIRelative address from beginning
I lof the program where displace-.
.
I I ment for base locator cell
I I described in next field is to·
I I be placed

Code

.1hnl
00
01
FF

Meani!Ul
Binary
Alphanumeric
ALL constant
or figurative
constant

o

IBLL number -- base locator I
Inumber
I
I
I
I
I
I
I
,

I

If the constant is an ALL ~onstant, the
format differs beginning with byte 5
as follows, where d is tile number of bytes
reserved for the constant:
iii

15-61718 through 7 + .c
•
II
.
I d I c.l Value specified for the constant

L---L~'

________________~--------------~

CD

This element is written un SYSUT4 by phase: 51 if the SYMDMP or the STATE and OPT
options are in effect. It identifies the end of· Data A-text, DEF-text, andE-text
and the beginning of Debug-text, which phase 63 writes on SYSUT4 for use by phase 65.

410

Section 5. Data Areas

Licensed Material - Property of IBM

PROCEDURE IC-TjXT (PO FORMATl

NOBERlC LITERAL
r--i

.

PROCEDURE-NAME DEFINITION
r"

,

,

I 01112 through 1 + c
.. I I
105lclProcedure-name in EBCDIC I
L

'

i

i

i

I 01112
13
I
I I 1
I
f
1321nlPositions to
IPositions to
I
, I Ileft of decimallright of decimal I
"

r---,
14 through 1 + n
I
..
I
ILiteral in packed decimal formatl

,

QUALIFYING EBCDIC NAKE
ii'

I 01112 through 1 + c

..

I I

FLOATING-POINT LITERAL

I 22lclUser-assigned name in EBCDIC
I 1 Ithat qualifies procedure-name
I 1 lor data-name
, "
------.----------------~

i

EBCDIC NAME
oj

i

,

i

i

I 011 12-9
I I I
1331081Literal represented as
1 'Idouble-precision
, 1 ,floating-point number

i

I
..
I
I
l

1 01112 through 1 + c
.. I I
I 23lclUser-assigned name in EBCDICI
L

'

ALPHAHUMERIC LITERAL

,

I

i

1

, 01112 through 1 +
REPORT WRITER RECORD CONTAINING CODE OPTION
r

I 0 I 112- 6

..

I

I

1

1341clLiteral
in EBCDICI
______________

i

I

C

r-;-I

L-4-~

-----~

124105160FOFOFOF1 or F2

~

"EXHIBIT NAMED" NAME
r

t

I

,

1 0,112 through 1 + c
EBCDIC DATA-NAME OF GIVING OPTION FOR USE
ERROR DECLARATIVE
r"

i

i

,

I 0.1112 through 1 + c
I
} I I
f
1251clUse assigned EBCDIC name that wasl
I I lobject of GIVING option
I
L

'

,

.J

GN'S FOR ERROR/LABEL DECLARATIVES
r

i

i

i

I 01 112-3
14-5
.. I' I I
12610AIGN number
IGN number for
I
I for STANDARDlfile hea~
! ERROR Q) --1:abels '-.!J

I

~~I~I~---------------f

,351clEBCDIC name used in EXHIBIT I
I I I NAMED
statement
I
________________________
L-~~

~

LISTIHG A-TEXT FOR PROCEDURE-NAMES
iii

,

I 01112 through 1 + c
I
.. I I . .
I
I
,371clEBCDIC procedure-name
I 1 Ibit 0 of preceding field is I
I
1 I I set to 1
t
I

,.,

L

i

r"

16-7

18-9

,

I

IGN number forlGN number for
Ifile tra~er lend-of-v~.e
llabels \!) llabels \!)
L---

•

r-------------------------------"

110-11
I
•
I
IGN number for beginning-of-volumel
llabels
Q)________________
I
L________
~

----~·

Internal Text Formats

411

Licensed Baterial - Property of IBM

LISTING A-TEXT FOR VERBS
i

I

I

1 01112 through n
• I 1
1371nlEBCDIC verb
I 1 I

L

'

SPECIA L NAME

i

I

i

In +

I

1 011
1
.. 1
I'?I:sl
ISSICode ~.
1...-..&'_ _ _ _.1

I

, .

1Alphabetic ver.b 1
,Isequence number ·1

,

CRITICAL PROGRAM BREAK

I

I

I COBOL WORD 2

~i~i~-------'

1 011
1
I--+(.)',';21
1421Break
code
L
__4 -_ _ _ _ _
_ _ _ _\.v.

r-,---~-------ri--~

I 0I

12

1

~·~I-----------rl--~
1571 Wor~ode
I

~i

I,

VERB

II

~

10
,

r--,--

1 011
.. 1
1441Verb cOde01

FIGURATIVE CONSTANT

i

I

RELATIONAL CODE

I7SIEBCDIC value of figurativel
I Iconstant
__
_ _ _ _ _ _ _ _ _ _ _ _ _ _-.JiI

i

1 0 1

1
1
I
150 06 (hex) = Equal
1
08
1
= Greater thanl
OA
1
= Less than I
OC
I
= Not equal I

I...-~'

~

STANDARD DATA-NAME REFERENCE

L

i·

i

I 011

PARENTHESIS

... 1
179101 = LINE-COUNTER I
1 102- PAGE-COUNTER I
I
I 105 = TALLY

, ,

I 011

,
I
152100 (hex) = Left parenthesis I
Right parenthesisl
1 101 ____________________
L_~~

~

GENERATED PROCEDURE-NABE DEFINITION

t ' ..

,

ARITHMETIC OPERATOR

i

1 011-2

I

1
I

IS310perator
code ~
_________
~

,

I

.. 1
,
1881GN number -- identifying number 1
I lassigned to compiler-generated
1
I Iprocedure-names from COMMON field 1
1 IGNCTR
1

i

I 011
I
I

L __

I

~'~I--------------------~·f

r

,

i

1 0111

~~i

I

COBOL WORD

,

i

1 011
I
IS41Word code
1 I
I I
1 I
1 1

•
I

412

I

CD

i

,

12

1

,

f
ICode (Phases 10. 12. I
land 1B only. not
I
I passed on)
t

1
1
I

Section 5. Data Areas

®

I
,1

GENERATED PROCEDURE-NABE REFERENCE
i

,

I 011-2
... 1

IAAIGN number -- identifying number
1 lassigned to compiler-generated
1
I Iprocedure-names from COMMON fieldl
I
,I IGRCTH
I

I

Licensed Material - Property of IBM

G)

ERROR SYMBOL
r-,-,

1 0111
t-+::-f
IB9([l
~.J

~

.

CARD NUt!BER

•1

i

011-3
I 1
1 C11 Source card number

00
01
02
03
04
05
06
07
08

CD
®

If there is no GN for this purpose, the
field contains zeros.
Code
(hea
01
02
03
04
05
06
07

08
09
OA
OB
OC
OD
OE
OF
FO
F1
F2
F3
F4
F5
F6
F7
F8
F9

~ng.

Data Division
File Section
Working-Storage Section
Linkage Section
Report Section
Procedure Division
Start of declaratives
End of declaratives
Start of debug packets
Start of Q-Routines
Start of Report Writer
procedures
End of Report Writer
procedures
End of segment
Communication Section
Date-compiled entry
Security entry
Identification Division
Program-ID entry
Author entry
Environment Division
Configuration Section
Source-Computer entry
Object-Computer entry
Input-Output section
File-control entry

09
01
OB
OC
OD
OE
OF
10
11
12
13
14
15
16
17
18
19

Verb Code List.;"
type of v~rb.

Meaning
PO- and P1-text
ADD
SUBTRACT
I!ULTIPLY
DIVIDE
COMPUTE
END OF
SENTENCE
IF
ELSE
(OTHEE WISE)

STOP
GO

11

1B
1C
1D
1E
1F
20
21
22
23

24
25
26
21
28

Code indicates the

ALTER
MOVE
EXAMINE
TRANSFORM
READ
OPEN
CLOSE
iEITE
EEiRITE
ACCEPT
DISPLAY
EXHIBIT
RESET

P2-text
ADD
SO BTRACT
MULTIPLY
DIVIDE
EXPONENTIATE
STOEE
IF- EQ- NUMERIC
IF-NOTEQ-NUMEEIC
IF-GT-NUMEEIC
IF-NOTGT-NUMERIC
IF-LT-NUMEEIC
IF-NOTLT- NUMERIC
IF-ALPHABETIC
IF-NOT-ALPHABETIC
IF-NUMERIC
IF-NOT-NuMERIC
STOP
GO
GO-DEPEND-FIRST
GO-DE PEND-MIDDLE
GO-DEPEND-LAST
EVAL
IF-EQ-NONNuM
IF-NOTEQ-NONNuM
IF-GT-NONNuM
IF-NOTGT-NONNUM
IF-LT-NONNUM
IF-NOTLT-NONNm!
MOVE-4
MOVE
EXAMINE
TRANSFORM
EEAD
OPEN
CLOSE
WElTE
REVEITE
ACCEPT
DISPLAY
EXHIBIT
RESET

Internal Text Formats

413

Licensed Baterial -

Property

of

IBM

_ _ _ _ Meanill.9--_ _ ___
PO- and P1-text
READY
RETUBN
ON
ENTRY
CALL
ENTER
CANCEL
USE (except UFD)
EXIT
REPORT-NOP
GENERATE
TERMINATE
SORT
RELEASE
PERFORM

29
2A
2B
2C
2D
2E

30
31
32

33
34
35

36
37
38
39
3A
3B
3C
3D
3E
3F

INITIATE
DEBUG (ON)

40

INIT
INCRA
STEP
UPDATE

41
42
43

44
45

46
47
148

4A
4B
4C
4D
4E
4F

Q-CALL
Q-RETURN2
Q-RETURN3
REPORT-CALL
REPORT- SAVE-O
REPORT-SAVE-1
REPORT-SAVE-2
REPORT-SAVE-3
REPORT-SAVE-4
REPORT-SAVE-5
REPORT'"-RETURN-O

50
51
52
53
54
55

56

414

P2-text
READY
RETURN
ON
ENTRY
CALL

57
58
59
SA
5B
5C
5D
5E

CANCEL
SF

60
61
SORT
RELEASE
GO-N-TIMES
SUBSCRIPT
DEBUG
START KEY
TRACE
EQUATE
MOVE-1 (Report
Writer verb)
INIT
INCRA
STEP
UPDATE
USE-ERROR
ENDUSE-ERROR
US E-LABELS
ENDUSE-LABELS
ACCEPT MESSAGE
USE-REPORT
ENDUSE-REPORT
Q-CALL
Q-RETURN2
Q-RETURN3
RE PORT-CALL
REPORT-SA VE-O
REPORT-SAVE-1
REPORT-SA VE-2
REPORT-SAVE-3
REPORT-SAVE-4
REPORT-SAVE-5
REPORT-RETURN-O

Section 5. Data Areas

62
63
64
65
66

67
68
69
6A
6B
6D

6E

6F

REPOR"'"'"RETURN-1
REPORT-RETURN-2
REPORT-RETURN-3
REPORT-RETURN-4
REPORT-RETURN-5
REPORT-ORIGIN
REPORT-REORIGIN
SEARCH

RE PORT - RETU RN-1
REPORT-RETURN-2
REPORT-RETURN-3
REPORT-RETURN-4
REPORT-RETURN-5
REPORT-ORIGIN
REPORT-REORIGIN
Beginning of WHEN
in SEARCH ALL
SEARCH ALL
End of WHEN in
SEARCH ALL
SET format-1
SET
SET format-2
(UP BY)
See note following list
SEEK
START
START
UNSTRING
UNSTRING
IF EQUAL
(index-name)
IF NOT EQUAL
(index-name)
IF GREATER
(index-name)
IF NOT GREATER
(index-name)
IF LESS
(index-name)
IF NOT LESS
(index-name)
EQUATE in SEARCH
ALL
SET format-2
(DOWN BY)

GO TO

70
71

72
73

READ (for
RERUN file)
WRITE (for
RERUN file)
GOBACK

74
75

STRING

(segmentation)
S eg menta tion
initialization
verb
REA.D
(for RERUN file)
WRITE
(for RERUN file)
GOBACK
EXIT program
STRING

Licensed Haterial - Property of IBH

~~H",e.l:!:.aning

PO- and P1-te·~x~t----P-2---t-e-x-t
SETVLC
SETVLC
(for RENAME
(for RENAME
Q-Routine)
Q-Routine)
Flow trace
(for source PN's
only)
RECEIVE
RECEIVE
OPEN (VSAM)
CLOS E (VS AM)
Subroutine test
(for IF MESSAGE,
STRING, and
UNSTRING)
GNRPT
GNRPT
. (for OPT)
(for OPT)
SEND
SEND
READ (VSAM)
WRITE (VSAM)
REWRITE (VSAM)
START (VS.AM)
DELETE (VSAM)
DEBUG transfer
DEBUG transfer
of control
of control
QCALL2
(for UNSTRING)
UNSTRING header (PH45)
MERGE
HERGE
COUNT
UFD Debug verb
INSPECT
USE FOR DEBUGGING
ENABLE
DISABLE
ACCEPT MESSAGE
End-of-UFD section
RFRSEG
Debug subscript
verb

76

77

78
79

7A
7B

7C

7D
7E
7F
80
81
82
83
84

85

87
88
8A

BD
90
91

92
93
94
95
96

Note:

Code 62 indicates SEGMENT-LIMIT and
~used for E-text only.
Code
(he,&,
00
01
02
03

04

Operator
Addition
Subtraction
Multiplication
Division
Exponentiation

00

Special
In!!
cSP

01
02
03

C01
C02
C03

Code
11lll&

04

C04

cos

~5

06

C06

07
08
09
OA
OB
OC
OD
OE

C07
COB
C09
C10
C11

C12
S01
S02
S03

OF
10
11

12

504
505
PAGE
When Used
Reservedword used
invalidly.
Undefined or
multiply-defined
symbol found.

Error ~mb..Ql
COBOL word
code
CO (hex)

G)

COBOL Word Code: Nu mber assigned to
identify a COBOL word. Note that in
phases 10, 12, and 1B of the compiler
listing, these words appear in
alphabetical order according to length
of the word in the COBOL word table
(COBWRD) •
Code
Word

01-

DATA

02
03

SKIP1
SKIP2
SKIP3
EJECT
NSTD-REELS
SUPPRESS

04
05
06

07
OA
OC
OD
OE
OF
10
11
12
13
14
15
16
17
18

ORG~NIZATION

CORE-INDEX
PROGRAM
'RF

WRITE-ONLY
TOTALING
TOTALED
COMMA
DECIMAL-POINT
FILE-LIMIT(S)
MODE
RECORDING
REEL
SYSIN

Internal Text Formats

415

Licensed !aterial - Property of IBM

~~

19

1A

1B
1C
1D'
1E
1F
20
21
22
23
24
25
26
28

29
2A
2B
2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
40
41'
42
43
44
45
46
47

416

Word
SYSOUT
TRACK-AREA
MESSAGE
TRACK-LIMIT
DELIMITED
POIl~TER

OVERFLOW
COUNT
DELIMITER
TIKE
EGI
DATE
REORG-CRITERIA
DISPLAY
RESET
SEGKENT
SUB-QUEUE-1
ON
SUB-QDEUE-2
SDB-QUEUE-3
INITIAL
SYMBOLIC
CURRENCY
QUEUE
INDEX
S.TATUS
MODULES
MEMORY
WORDS
SYNCHRONIZED (SYNC)
OFF
RENAKES
UP
DOWN
FILE (in .Procedure Division and
after File Section header)
OPTIONAL
REMAINDER
POSITION
TAPE
TRAILING
ADDRESS
ALPHANUKERIC
NUKBER
CURRENT-DATE
TIKE-OF-DAY
TERl!INAL

Section 5. Data Areas

48
49
4A
4B
4C
4D
4E
IIF
50
51
52
53
54
55
56
57
58
SA
5B
5C
SD
5E
SF
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
70
71
72

73
74
75
76
77

78

SORT-RETURN
SEPARATE
LEAVE
REREAD
DISP
EXTENDED-SEARCH
MASTER-INDEX
CIL-OVERFLOW
THEN
CYL-INDEX
WRITE-VERIFY
THAN
RECORD-OVERFLOW
ALPHABETIC
NUMERIC
POSITIVE
NEGATIVE
END-OF-PAGE (EOP)
CHARACTER
NOT
AND
OR
LIKIT (S)
TEXT
BEGINNING.
ENDING
l!OBE- LABELS
OUTPUT
LENGTH
INPUT
RANDOK
PROCESSING
BEFORE
REPORTING
1-0
WITH
REWIND
REVERSED
IN:r'O
AT
INVALID
AFTER
ADVANCING
CBL
DEPTH
LOCK
SYSPUNCH
CONSOLE

Licensed Material -

Code

W7A
7B
7C
7D

7E
7F

80
81

82
83
84

85
86
87
88
89
8A
8B

8C

8D
8E

8F
90
91
92
93
94
95

96
97
98
99

9A
9B

9C
9D
9E

9F
AO

A1

A2
A3
A4

Word

ALL

CORRESPONDING (CORR)
TALLYING
LEADING
UNTIL
REPLACING
BY
DESTINATION
GIVING
ROUNDED
SIZE
ERROR
RUN
PROCEED
THROUGH (THR U)
VARYING
USING
COBOL
DAY
DESCENDING
ASCENDING
TRACE
CHANGED
NAMED
LINKAGE
CHARACTER (S)
TIMES
DEPENDING
LINE (S)
FIRST
NEXT
UPON
PROCEDURE (in Procedure Division)
EVERY
TO
IS, ARE
FROM
NO
KEY
RETURN-CODE
END
UNIT (S)
FOR
IN, OF

A5
A6
A7
A8

A9
AA
AB
AC
AD
AE

AF
BO

B1

B2
B3
B4

B5
B6

B7
B8

B9
BA

BB
BC
BD
BE
BF
CO

C1
C2
C3
C4
C6
C7
C8

C9
CA
CB

CC
CD
CF
DO

D1
D3

04

D5
D6
D7
D8
D9

Property of IBM

SECTION
LAB EL- RETU RN
DIVISION
SORT-FILE-SIZE
SORT-CORE- SIZ E
SORT-MODE-S IZE
SIGN
SORT (appears in Procedure
Division as verb with 36 code)
MULTIPLE
EXCEPTION
FILLER
ESI
ASSIGN
ACCESS
EMI
RES ERVE
NOMINAL
ACTUAL
TABLE
DYNAMIC
Reserved
SEQUENTIAL
DEBUGGING
INDEXED
SORT-MERGE
ALTERNATE
AREA(S)
SORT-MESSAGE
RELOAD
RELATIVE
SEARCH
TRACK(S)
PASSWORD
PROTECTION
LIBRARY
EXTEND
VALUE (S)
PRINT-SWITCH
BLOCK
RECORD
RECORDS
CONTROL(S)
L1>.BEL(S)
CONTAINS
OMITTED
STANDARD
REPORT (S)
REDEFINES
PICTURE (PIC)
BLANK

Internal Text Formats

417

Licensed Material -

!;.Q.Qjg
DA
DB
DC
DD
DE

.R.Q.I;:.Q
OCCURS
JUSTIFIED (JUST)
POSITIONING
USAGE
COMPUTATIONAL (COMP)
COMPUTATIONAL-4 (COMP-4)
COMPUTATIONAL-1 (COMP-1)
COMPUTATIONAL-2 (COMP-2)
COMPUTATIONAL-3 (COMP-3)
WHEN
RIGHT
LEFT
CODE
PAGE
FINAL
REMOVAL
HEADING
DETAIL (DE)
LAST
FOOTING
UPSI-O through UPSI-7
GROUP
TYPE
PLUS
LINAGE
DISPLAY-ST
RH
PH
BOTTOM
CH
NOTE
CF
TOP
PF
SENTENCE
COLUMN
INDICATE
SOURCE
SUM

DF
EO
E1
E2
E3
E4
E5
E6

E7
E8
E9
EA
EB
EC
ED
EE
EF
FO
I F1
F2
F3
F4

I

F5

F6
F7
F8
I F9
FA
FB
FC
FD
FE
FF

Bits

01
2
3

418

Property of IBM

l1~ning

FD. SD, RD
Paragraph wor a.
Section word
Division word

Section 5. Data Areas

4

5
6
7

Allowed in
Allowed in
Allowed in
Allowed in
Division

Environment Division
Data Division
Procedure Division
Identification

COBOL
Code

WORD 2
!!.2!:.Q

02
03
04

BASIS
ALSO
REFERENCES
PROCEDURES
COLLATING
SEQUENCE
STANDARD-1
NATIVE
CODE-SET
DUPLICATES
INSERT
DEBUG-ITEM
DEBUG-LINE
DEBUG-NAME
DEBUG-SUB-1
DEBUG-SUB- 2
DEBUG-S UB- 3
DEBUG-CONTENTS

0105
06
07
08
09
OA
OB
OC
OD
OE
OF
10
11
12
13

Licensed Material - property of IBM

PROCEDURE IC-TEXT (P1 FORMATl

PROCEDURE-NAME DEFINITION
,

i

i

i

,

1 01112 throuqh 1+ c
12 + c
1
• 1 1
I.,
I061c I Dicti'onary attributes IPriority
I
Inumber if I
1 1 lof procedure-name
Inot a
1
1 I I (see "section 5
1 1 1Data Areas ll )
1section1
1 1 1
Iname
1
, "
"

0

PROCEDURE-NAME REFERENCE
•

i

i

i

,

1 01112 throuqh 1 + c
12 + c
I I I
1
120lciDictionary attributes I Priority
I 1 lof procedure-name
Inumber if
1not a
1 1 I (se e "Section 5
1 1 IData Areas ll )
I sectionI 1 1
Iname

0

,

"

1
,

1
1
1
1
1

' I

SD ELEMENT
Iii

1 01112-9
~~,----------~--------~

1211nlDictionary attributes for
1 1 ISD (see .. SD ENTRY" in
1 1 I"Section 5. Data Areas")
, "

FILE-NAME REFERENCE
r

I'

I 0111variable (9 to 16 bytes)
I 1 1
1211nlDictionary attributes of
1 1 Ifile (see "FD ENTRY" in
!"Section5. Data AreaS ll

! !

I

1

r--T

of

110111-12

i

,

In - 1 to n + 11
~
1
I
I OIGN numberlDictionary
I
1t?::\1 for Q
I pointer
1
1~lroutines I
I

I
1

)0,

,

"

.J

Bytes 10-12 are present only if the
Q-bit is on.

CD-NAME REFERENCE
r

i

I

I

i

I 01112 throuqh n - 2
I 1 I
I I I
1251nlDictionary attributes
1 1 lof CD-name (see "CD
1 I I ENTRY" in "Section 5.
,

i

1

In - 1 to I
In + 1
I
I
1
I dictionarYI
I pointer
1
I

,

Internal Text Formats

I

--J

419

Licensed Material - Property of IBM

VSAM FILE-NAME REFERENCE
r

i

i '

•

1 01112 through 9
110
1
.11
--+I
I 26lnlDictionary, attributeslCountof
I
lof file (see "FD
I all GNs for I
I
I
IENTRY" in "Section 5.IQ-routines 1
I
IData Areas")
lassociated I
I
I
Iwith this I
I
I
Ifile
I
L

' . 1

'

.--

I

In - 1 to n + 1
•
I point~ to dictionan entry for
litem ~ ,

I
I
I
I

'---

.J

DATA-NAME REFERENCE IN KEY CLAUSE (VSAM
FILES)

• i,

i

,

101112 to n - 6 1 n - 5

r

i

-'---

I

i

115-22

123-24

~

I

L

'

,

130 In IDictionary attributes I Count of
1
lall GNs fori
I I (see "LD ENTRY" in
I I "Section 5 (":;'\Data
I Q-routines I
I IAreas ll )
0
I under item I

111-12
113-14
I
I-------+__
,
IGN number forlGN number for I
Istring of
1STANDARD ERROR I
IQ-routine GNsldeclarative(~)1
L-

I

1

~+-+-

,

,

I

~

I

I

' i

~

I

I Res®.vedl Pointer to dictionarYI
I
2
lentry for file
I
'

.

In - 4 to n - 3 In ~ 2 In - 1 to n +1
1
II
I
I First GN numberl Index I Poin ter to I
lin series of
IACB
I dictionary I
lall GN numbers Inumberlentry for
I
Ifor Q-routines I
lite~
I
lunder item
I
I
0
I

,

L

'

I

I

DATA-NAME REFERENCE
,

i

i

i

I 0 1112 to n - 5 or n - 2
I
t I I
,
130lniDictionary attributes (see "LDI
I I IENTRY" in ~ection 5. Data
I
1, '
I IIAreas")
~
I
__________
~I

NUMERIC LITERAL
r--~----------~I-----------'

I 01112
~I I
1321n,Positions
I I Ito left of
I I Idecimal
I

••

13
I
IPositions
Ito right of
Idecimal
I

I
•
I
I
1

J

I

,

14 through 1 + n

I

rl------------------~--~-1

I Literal in packed,decimal formatl

'-------~----~~----~--~----~I

420

Section 5. Data Areas

Licensed Material - Property of IBM

FLOATING-POINT LITERAL

LISTING A-TEXT FOR VERBS

Iii

,

I 01 112-9
1
I 1 I
,
1331081 Literal represented as
I
1 I Idouble-precision floating-I
I __ I I________________________
point number
I
L
~~

~

iii

I 01112 through n
1--1 I
1371nlEBCDIC verb
I 1 I
L..-'

,

,

,

In +

1

I

~

IAlphabetic verb \
\sequence number \

,

~

DATA NAME REFERENCE FOR OBJECT OF GIVING
OPTION OF USE ERROR DECLARATIVE

.,

I 011 through n + 1

ALPHANUMERIC LITERAL
r

i

i

I

r.-;I--------------------------~

,

13BISame as "Data-name Reference" (30) I
I 1__________________________________
element above
I

I 01112 through 1 + c 1
I I I
of
13ql
Literal in EBCDIC!
L__ cl _________________
~'~'

.

L--.~,

~,

~

"ALL" LITERAL LONGER THAN ONE CHARACTER
Iii

"EXHIBIT NAMED" NAME
•

i

i

I 01112 through 1 + c
.. I I
1351clEBCDIC form of name used in
1 I IEXHIBIT NAMED statement
L

'

,

L--'

r

i'

i

i

•

101112 13-q
15-6
I
I I I 1
1
,
136Ic~) Index-namelLength ofl
I I I I number
Isubject I
,

,

.J

I

CRITICAL PROGRAM BREAK
t

INDEX-NAME REFERENCE

-,

10 1112 through c + 1
1
,. 1 I
1
1391clAlphanumeric value following ALL 1

i

J

1 011

1

I

of

1

Iq21Break code ~I,

VERB
i

i

i

1 011

1

~I-+I----------------------~

,

17-9

IQqlVerb code
1
I I (see noteG)under PO-text) I

I

IPointer to dictionary entry I
Ifor index-name
I

LISTING A-TEXT FOR PROCEDURE-NAMES
r

i

,

1 0 11 12 through 1 + c
• I 1
1371clEBCDIC procedure name; the
I ,I ,Ipreceding field is set to 1

RELATIONAL CODE

r'--r'-----------------------,

I 011
I
.. I
I
150 106 (hex) = Equal
1
I lOB
= Greater thanl
1 lOA
= Less than
I
L

PARENTHESIS
r-- T, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ,

I 011
1
.. I
,
152100 (hex) = Left parenthesis I
I 101
= Right parenthesisl
____________________________
L--.~,

~

Internal Text Formats

Q21

Licensed Material - Property of IBM

GENERATED PROCEDURE-NAME DEFINITION

ARITHMETIC OPERATOR
r

,

.--,

I 011
~

1

15310perator code

.

COBOL WORD
r

,

1 0 t1
I
I
1541Word code
I 1 (see note(2)under PO-text)
L

i

I

1

,1
.,

ERROR SYMBOL
r---r-o

I 011 I
,. I I

.J

IB9~)

NFILES

L--~

.r--T,--------------------------,
1 0 t1
1
I
I
1561Number
of files in USING
L__
____________

CARD NUHBER

,
1

I I
ICllSource card number
1 1
1 1

COBOL WORD 2

•

10

®

I

2

-f
1571Word code
I
1 I(see note®under 1
I
1__________________
PC-te xt)
-JI
1

CD

o

L-~

FIGURATIVE CONSTANT
I

i

---,

I 0 f1

I

.. 1
---I
1751EBCDIC value of
1
I Ifigurative constant 1
•

---J

STANDARD DATA-NAME REFERENCE
r

,

I 011

I

1

179101 (hex) = LINE-COUNTER
PAGE-COUNTER
I
102
I
105 = TALLY

,

i

011-3

~

..

,

L--~'

1551Code 1
I I
1
II®I
"

i

I 011-2
1
~
I
~
IAAIGN number -- identifying number 1
I
I assigned to compiler-genera ted
I
I
Iprocedure-names from COMMON fieldl
I
I__________________________________
GNCTR
-J1

SPECIAL NAMES
1 011

.

GENERATED PROCEDURE- NAliE REFERENCE

'

"

I

1 011-2
1
.. I
-i
1881GN number -- identifying number I
I lassigned to compiler-generated
I
I
Iprocedure-names from COMMON fieldl
1 IGNCTR
1
,

o

.,1
1
1
I
-.J

Dictionary attributes, wi thOut count and
major code fields.
These fields appear only if the
file-name reference is an operand in an
OPEN statement. When a GN is not
generated, the field contains zeros.
Pointer contents:
Bill
0-1
2-14
15-23

contents
Unused
Dictionary section number
Displacement in section

Dictionary attributes with two fields
removed. Bits 1-4 of the flag byte
field overlay bits 1-4 of level number.
Bits 5-8 overlay count field preceding
major code field. In the level number
field, if bit 5 is on, the level is 01;
if bit 6 is on, the level is 77.
Otherwise, the bits are off.

I

In addition, the sub field of zeros
starting at the tenth bit of the
characteristics field is deleted for
alphanumeric items and elementary items
with either report or sterling report
pictures.
422

Section 5. Data Areas

Licensed Material - Property of IBM

In the case of data-name references to
special registers, the addressing
parameters field of the dictionary
attributes contains an ID number
according to the following schedule:
ID

~peci alJeqis~£

FFOOOD-FF0007
FF0008
FF0009
FFOOOB
FFOOOC
FFOOOD
FFOOOE
FFOOOF
FF0010
FFOO 11
FF0012
FFOO 13
FF0014
FFOO 15

UPSI
CURRENT-DATE
TIME-OF -D AY
SORT-RETURN
SORT-CORE-SIZE
SORT-FILE-SIZ E
SORT- MODE- SIZE
LABEL.-RETURN
RETURN-CODE
SORT-MESSAGE
DAY
T.IME
DATE
WHEN-COMPILED

1-3
4-7

OC
00
OE
OF
FO
F1
F2
F3
F4
F5

F6 ,

F7

Fa

F9
FA
FB
FC
FD
FE

Contents
If-';-subject has variable
length; bytes 5-6 contain
VLC number.
Unused
1111

Code
Jh.ex)
00
01
02
03
04
07

Code
(hen

01
02
03
04
05
06

07
08
09
OA
OB

Meaning
Data Division
File Section
working-storage section
Linkage Section
Report Section
Procedure Division
Start of declaratives
End of declaratives
Start of debug packets
Start of Q-Routines
Start of Report Writer

I

®

procedures
End of Report Writer
proce:dures
End of segment
Communication Section
Date-Compiled entry
Security entry
Identification Division
Program-ID entry
Author entry
Environment Division
configuration Section
source-compute:r entry
Object-computer entry
Input-Output Section
File-Control entry
I-O-Control entry
Special-Names Section
Date-Written entry
Installation entry
Remarks entry

Operato£
Addition
Subtraction
Multiplication
Division
Exponentiation
Unary minus

Error symbol
COBOL word
number
00 (hex)

When Used

Reserve~word used

invalidly.
Undefined or
multiply-defined
symbol found.

Bit 0 in byte
1 is on for a
verb.

Internal Text Formats

423

Licensed Material - property of IBM

Additional verb codes:
83
DEBUG transfer of control
8A
USE FOR DEBUGGING debug verb
96
Debug subscript verb

P1-A text is identical to P1-text with the
following exceptions:

10

Proced ure-name Reference
,

424

i

i

---,

1 01

1 2-3

I

t-t-

1

.,

I
IPriority number
IDOlof s6gment in
Iwhich PN is
I
I 1located
I
I
I
I
I
1

IPN number
1
lidentifying
I
Isequential numberl
lof source proI
Icedure name
I
lassigned from
1
IPNCTR in COMMON
I

L

,

'

Section 5. Data Areas

.J

Licensed Material - property of IBM

CEDURE IC-TEXT-1P2 FORMAT)

The code byte of Procedure IC-text (P2 Format) is used to determine the length of the item:

~:

For codes
For codes
For codes
For codes
bytes.

less than 40, the length is in the next byte.
40 through 7F, the length is two bytes.
80 through BF, the length is three bytes.
CO through FA, the length is four bytes except for code F9 whose length is three

,E- NA ME REFE RENCE
Variable (9 to 16 by tes)
1211nlDictionary attributes of file
1 I I (see "FD ENTRY"
"Section 5.
I 1 IData Areas")

RB INFORMATION
I

i

01112 through 1 + c
I I I
1241clFollows verb string for EXAMINE, TRANSFORM, EVAL, ADD, SUBTRACT, MULTIPLY, DIVIDE, USE, I
I I 1 UNSTRING, and DEBUG.
,I
I

,

,

RB INFORMATION

(VSA~

i 'I 3
o'
I 1 12

i

i

14
I 5- 7
• 1 1
I
I
I
1241 c 10 ACB 1 Execution-timel compile-time I Dictionary pointer tol
I I@InuRerlinformation
linfor~tion IRECORD KEY~
I
1,
~ ~
@
~
~ dataname ~

! ! !

!

NAME REFERENCE
,

i

i

I 01112 through n - 2
I I I
1251clDictionary attribu~es of CD-name
I I I (see "CD ENTRY" in "Section 5.
I I IData Areas ll )

,

"

I

In-1 to n+1
I
IDictionary
I pointer

,
I
I

,
I

Internal Text Formats

425

Licensed Material - Property of. IBM

VSAM FILE-NAME REFERENCE
~,

I

I 011 ,2 through 9

,10

~,

,

,

!

J

,
~

,261n IDictionary attributes of ,Count of all GNs for,
, , ,file (see "FD ENTRY" in 'Q-routines associated 1
! J@!"Section 5. Data Areas") with this file

,

r----------·--~ir-------------~,--------',---------------------__,.

,11-12

113-14

,15-22

123-24

,

~---------+'------~---+'------41~----------------~1

,GN number forlGN number for ,Reserved,Pointer to dictionary 1
,string of
,STANDARD ER~I
lentry for file
'1
I Q-routine GNs I declarative81([)
1
L--__________
,I
~I~_______

~

~

DATA-NAME INFORMATION FOR UNSTRING
10-11
12AlniTypeiLengthiBase codelDisplacement
I , Iflag,
I
1
I I I
I
I
I
11101 ®I
I
(2)

®

Not§..: If bits 4-7 of the Type flag indicate an edited data item, the following fields are also
generated.
I

I

I

, 0I1I

~

2- 4

5 ,
I

r~

6

--,,-------------------------,

17 - n + 1
I

12AlniSize of IBLANK WHEN
INumber of lEd it mask
I , Idata~temlzERO ~dicatorlbytes in I (PICTURE clause for
I, «I I
® I
Q.Y
I edi t mask I data item)
I

-,

I

...
, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _- - '

DATA-NAME REFERENCE
,-,-,-

I

~

I 01112 to n - 5

or

n - 2

In - 4

rl~I-+I-----------------------~Ir---·-------

,30lniDictionary attributes of
I I Idata-name (see "LD ENTRY"
I I I in "Section 6
Data
IL--L-L
I I ____________
Areas")
~

ICount of all GNs
Ifor Q-Routines
I under item
I
I

~_______

~.--------------

rl--TI~--------------~----------T'--'

In - 4

~

In - 3 to n - 2

•

1

to n + 1

I

IPointer to

IFirst GN number in
Iseties of all GN
I numbers for Q-Routines
1• under item

DATA-NAME REFERENCE FOR KEY CLAUSE
I 011 2 to n - 6 or n - 3

I

" n -

In - 3 to n - 2

Idictionar~ntr
~

1for item
I

I

In - 2 In - 1 to n + 1

I

I

~+----------------------+I--------------;I-----------~--~~I---rl------------~I

130ln
1 I
1 I
1 I
I ,
j

Dictionary attributes of ICount of all GNslFirst GN number in
data-name (see "LD ENTRY"lfor Q-routines I series of all GN
in "Section ~ Data
lunder item
Inumbers for
Areas")
1
1Q-rou tines under
1
1item

0

,

IIndex IPointer to
1
1ACB
I dictionary entry I
Inumberlfor item
1
I
1
I'!\
1
1
1
V
I
I

"

I

SUBSCRIPTED DATA-NAME REFERENCE

,-,-,I 01112

through n - 2

~-------------------------

'n - 1 to n + 1
--~----------+-----~--------------------~

131, n 1Dict.ionary attributes of sUbscri~d data-no ame
! (see "LD ENTRY" in Appendix D) ~ @

L!
426

Section 5.

Data Areas

'~I--~------------------~---------'

1pointe80 dictionary entry

. !. _______"-V_3________________________~

t

Licensed Material - Property of IBM

NUMERIC LITERAL (DECIMAL)
I

i

,

I

I 01112

13

I

I 1

1

I

I

I

----------T'-------------------------,
14 through 1 + n
1
+---

I

1321nlPositions to the leftlPositions to the rightlLiteral in packed decimall
I 1 lof decimal
lof decimal
I format
1
,

•

I

FLOATING-POINT LITERAL
r--r--·~i-------------------

I 011 12-9
I I 1
13310BILiteral
represented
as double-precision floating-point number
______________
_
L--L--.~I

-----------------------------~

ALPHANUMERIC LITERAL
I

i

I

I 01112 through 1 + c
I I I
I
1341clLiteral in EBCDICI
,

"

I

"EXHIBIT NAMED" NAME
Iii

,

I 01112 through 1 + c

1
I 1 1
I
1351clEBCDIC form of name used in EXHIBIT NAMED statement 1
,

.

INDEX-NAME REFERENCE
,

,

i

iii

17-9
101112 13-4
15-6
I ill
I
136Inl@lIndex-nameILength of IPointer to dictionary
I I I 1number
I subAct
: entry
item
I I
II
I,
I•
~
,
•

0

.

----~

LISTING A-TEXT FOR PROCEDURE-NAMES
I

i

i

i

I 01112 through 1 + c
I- I I
1371clEBCDIC procedure name; the
1 I Ipreceding bit is set to 1
•

n

I
-!
I
1

.J

LISTING A-TEXT FOR VERBS
I

I

i

i

1 01112 through n In+
I I I
I
1371nlEBCDIC verb IAlphabetic verb
Isequence number
1 1 1

..

.

MULTIPLE GN REFERENCE
I i i

I

1 01 112-3

14-5

I 1 I
13BI041GN numberl,
«
«
,

1GN numberl

I

•

I

Internal Test Formats.

427

Licensed Material - Property of IBM

I SPECIAL

FIGURATIVE CONSTANT "ALL" (Greater than 1
character)
,

i'

I 0111Variable
• I t
,39lclAlphanumeric literal following
,t "' I ALL

NAMES

•
10
Ii
1
.. I
t 551Code
I I (See Note®
I I under PO-text)

i

I
I
I
I

,

CRITICAL PROGRAM BREAK
r

COBOL WORD 2

I

I 0"1

4 I
1421 Break code
L

I• 0 Ii

@

I

PHASE 4 OPTIMIZATION INFORMATION
i

C

i

I 0 t1

I

L

,

,
I
I
1431Type code ~
I

NFILES
i

i

10 11
I I
1561Number of files in USING

RELATIONAL CODE
I

f

1

;
I
I 571 War d code fr:\
I
1 (See note~
I 1under PO-text)

I

I 011
I
, I
I
150106 (hex)= Equal
I
I 108
= Greater thanl
I lOA
= Less than
I
Not less
I
I 10C
IL__ I ____________________
than
I
~

FIGURATIVE CONSTANT
•

i

,

1 011

I
I
1751EBCDIC value of figurative constant I
~I

I.-~I----------------------------------~

~

STANDARD NAME REFERENCE
COBOL WORD
I

i

,

I 011
t 1
179101 (hex) = LINE-COUNTER
1 102 = PAGE-COUNTER
1 105
= TALLY
______________________

I

I 011
I
I
1541Word code (See noteG)underl
I __ 1PO-text)
I
L
____________

L--~I

~

~

VERB
I

I

011
12
I
I
I
1841 Verb code (see note@ under PC-text) ICount of elements that follow
1 for this 'statement
I
I
1.-.1.--

GENERATED PROCEDURE-NAME DEFINITION
I

I

I 011-2
I
I
1881GN number -- identifying number assigned to compiler-generated I
I Iprocedure-names from COMMON field GNCTJ
I
I

,

I

GENERATED PROCEDURE-NAME REFERENCE
I

I

I 011-2
t I

IAAIGN number -~ identifying number assigned to compiler-generated
I Iprocedure-names from COMMON field GNCTR

428

Section 5.

Data Areas

Licensed Material - property of IBM

INTERMEDIATE RESULT REFERENCE
•
i
10
11-2

I• BA\I IR number -- identifying number assigned to intermediate result\
L

I

NUMERIC LITERAL (BINARY)
r

I

I 011-2
I
I
IBBILiteral
in binary format
L__
________________________
~

~

TEMPORARY RESULT REFERENCE
r

i

,

1 011-2
I
\
IBC\TR number
L

I
of

1

'

I

CARD NUMBER
i

i

011-3
I: I

1
I
I

IC1\Source 'card number

@

I

CARD NUMBER AS OPERAND OF FLOW VERB
I

i

--,

I 011-3
I: I

1
I
IC2\Source card number I
I

PROCEDURE-NAME DEFINITION
t

I

I 011

I

I

12-3

1

•IC71PrioritYIPN
I
I
number. -- identifying sequential number of source
I
Inumber Iprocedure-name, assigned from COMMON field PNCTR

II
I

1--..L-.

J

FILE-NAME REFERENCE
I

i

\ 011-3
I: I

1cal Dictionary pointer
I

I

VARIABLE PROCEDURE-NAME DEFINITION
r

i

1 011

'

,

12- 3

I

~---I~--------------4\------------------------------------------------~

IC91Priority number oflVN number -- id~ntifying number assigned to compiler-generatedl
I lsegment in which 1variable procedure-names from COMMON field VNCTR
I
LI
•IVN is locatedI______________________________________________________________ I
.~I

~J

Internal Text Formats

429

Licensed Material - property of IBM

PROCEDURE-NAME REFERENCE

r.
I 011

-,-12-3

i

--'--

'

I
,.. I
I
I
IDOIPriority number oflPN number -- idantifying sequential number ofl
Isegment in which Isource procedure-name, assigned from COMMON I
IPN is located
Ifield PNCTR
I
I

PROCEDURE-NAME REFERENCE FOR XREF
•

I

I

i

I 011
12-3
I
,
I
I
I
ID41Priority number oflPN number -- idantifying sequential number ofl
1~lsegment in which
Isource procedure-name, assigned from COMMON I
I®I PN is located
1field PNCTR.
I
I

,

I

VARIABLE PROCEDURE-NAME REFERENCE
r

~

I

---------------------------------------------------------------,

I 011
12- 3
I
.. I
-+-1~---,----I
IDBIPriority number oflVN number -- identifying number assigned to compiler-generated,
,
,segment in which ,variable procedure-names from COMMON field VNCTR
,
L
I
•IVN is located____ I _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ I
~I~

~I

GLOBAL TABLE REFERENCE (TYPE 1)
r

------------------------TI--------------------------------------------,
12
I

I

I 011
,.. I
IF91Cell code for Task Global Table

@

I
I
I Displacement in bytes from start of cell I
I

GLOBAL TABLE REFERENCE (TYPE 2)
t

I

€J)

I

During phase 4 OPEN and CLOSE verb
analysis, byte 2 (count and. major code
field) of the file-name reference
element is changed to one of the
following:
Meaning,
Contents if OPEN
00'11-- LEAVE
REREAD
0001
0000
1000

4-7

DISP

Meaning,
if CLOS E
NO REWIND
Default
(REWIND)
Unused
REEL

Contents

~~nifr[

1111
0001

OPEN INPUT
or CLOSED
OUTPUT
INPUT REVERSED

oeoo

These fields appear only if the
file-name reference is an operand in an
OPEN or SORT statement. When a GN is
not generated, the field contains zeros
430

,

i

I 011
,.. I
I FA ICell code for Task or Program Global Table

Section 5. Data Areas

,

12-31
I
,
I@I
,
,

Pointer contents:
Bits

0-1

2-14
15-23

Contents
Unused
Dictionary section number
Displacement in section

For VSAM READ, C
Bit

-01-7
Bit

-01-7

=6

Meaning
0 = SEQUENTIAL ACCESS or READ
NEXT with DYNAMIC ACCESS
1 = RANDOM or DYNAMIC ACCESS
Unused
Meaning
0 = No duplicate string follows
1 = Duplicate string follows
(READ INTO with MOVE only)
Unused

This field is used only for a READ verb
wi th a KEY clause

Licensed Material - property of IBM

count field:: 6 for READ verb,
otherwis e = 3

The scaling factor represents the
number of Ps to the left of the decimal
point in a scaled integer.
This field
is present only for a receiving or
delimiter-in field.

For START with KEY dataname clause,
field = ACB~. otherwise = C

®

Bit§
0-1

2-3
4 ... 7

£; od§
00
01
10
11
00
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101

Meru!ing
Delimiter field
Receiving field
Delimi ter- in field
Count-in field
Unused
Variable-length group
I'll ph an umer ic
Alphanumeric. rightjustified
Alphanumeric edited
Alphanumeric edited,
right- justified
Numeric edited
External decimal,
unsigned
External decimal with
trailing overpunch
External decimal with
leading over punch
External decimal with
trailing separate sign
External decimal with
leading separate sign
Binary
Internal decimal,
unsigned
Internal decimal,
signed

I f bits 11-7 of the Type flag are set to

0000, this field contains the VLC
number.
For all other codes, the field
contains the SIZE, or length of the
complete data item to be moved.

0

~yte

1

2
3-4

£;ontent§
Base code
XI aCI
BL
SBL
X'14'
BLL
X'28'
X'01'
BL number

-

This field is set to zeros for a
subscripted da ta item.
This field is set to zeros for a
subscripted data item.
Otherwise it
contains the displacement of the data
item from the BL.

®

This field contains the number of
actual digits to the right of a real or
assumed decimal point. It is present
only for a receiving or delimiter-in
field.
If this field is present, the
scaling factor is set to zero.

This field contains the total size of
the data item, including all editing
characters and decimal positions.
This field is set to X' FF' \then the
data item contained a BLANK I~HEN ZERO
clause; otherwise, it is se~ to X'DO'.

@

Dictionary attributes with tliO fields
removed.
Bits 1-4 of the flag byte
field overlay bits 1-4 of level number.
Bits 5-8 overlay the count field
preceding major code field.
In the
level number field, if bit 5 is on, the
level is 01; if bit 6 is on, ~he level
is 77.
otherwise, the bits are off.
In addition, the subfield of zeros
starting at the tenth bit of the
characteristics field is deleted for
alphanumeric edited items and
elementary items with report or
sterling report pictures.
In the case of data-name references to
special registers, the addressing
parameters field of the dictionary
attribtues contains an ID number
according to the following schedule:
ID

FFOOGO-FFea07
FF0008
FF0009
FFOOOB
FFOOOC
FPOOOD
FFOOOE
FFOOOF
FF0010
FF 00 11
FFOO 12
FF0013
FP0015

Special Register
UPSI-O through UPSI-7
CU RRENT -DAT E
TIME-OF-DAY
SORT -RETU EN
SORT-CORE-SIZE
SORT-FILE-SIZE
SORT-MODE-SIZE
LABEL-RETURN
RETURN-CODE
DATE
DAY
TIME
WHEN-COMPILED

If this data-name reference contains a
subscript or index address calculation
ID number, the high-order bit is on,
bits 1-7 contain zeros, and bits 8-23
contain the ID number.
The high-order
bit is turned on by phase 4 when i~
assigns the ID number.
Addressina parameters field in
attribute~ has been replaced by unique
subscript identifier element to match
entry in DEFSBS table.
contents of byte 2:
Internal Text Formats

431

Licensed Material - Property of IBM

Bit
-0-

£,Qnteni2
o Bytes 5-6 contain fixed
length of subject.
1 = Subject has variable
length; bytes 5-6 contain
VLC number.

For a relative indexing clause, phase 4
adds this field to the element. Phase
50 recognizes the presence of this
field from the number of bytes given in
byte 1 of the element.
Code
(hen

01
02
03
04
05
06
07

OS
09
OA
DB
OC
OD
OE
OF
FO
F1
F2
F3
F4
F5
F6
F7
Code
FSF9

FA
FB
FC
FD
FE

Meaning
Data Division
File Section
Working-Storage Section
Linkage Section
Report Section
Procedure Division
Start of declaratives
End of declaratives
Start of debug packets
Start of Q-Routines
Start of Report Writer
procedures
End of Report Writer
procedures
End of segment
Communication Section
Date-Compiled entry
Securi ty entry
Identification Division
Program-ID entry
Author entry
Environment Division
Configuration Section
Source-Computer entry
Object-Computer entry
Meaning
Input-Output Section
File-Control entry
I-O-Control entry
Special-Names Section
Date-written entry
Installation entry
Remarks entry

(hen

04
05

432

Meaning
Precedes a Procedure-name
definition element equated to a
VN for an ALTER verb
Precedes a Variable
procedure-name reference
element at a PERFORM verb exit
Precedes a Generated
procedure~name definition
element at .the returning point
of a performed procedure

Section 5. Data Areas

1 is on for a verb.

an XREF element for
procedure-name B in the following cases :
• PERFORM A THRU B.
• ALTER A TO PROCEED TO B.
• A.
Code
(he&
02
04
06
08

(where A is altered)

GO TO B.
~ing

SAVE AREA
SWITCH
Unused
DEBUG

Code
~

00
04
08
OC
10
14
18

1C
1D
1E
20
24
28

2C
30
34

Meaning
DCBADR
VLC
ONCTL
PFMCTL
PFMSAV
DECBADR
XSA
PARAM
Single-precision
floating-point
Double-precision
floating-point
WORKING CELLS
Temporary storage
XSASW
BL, SBL# BLL
VIRTUAL
FIB

Except when the code for the preceding
field 11 is 2C, 1D, or 1E, this field
contains the identifying number from
one of the COMMON counters as described
in "Section 5. Data Areas." When the
preceding field is 2C, this field
contains the i and k fields of the
addressing parameters, as follows:
Bits

0-3

Code
02

@ Bit 0 in byte
@ Used to write

4-7
8-15

k

Value Meaning
0000
BL
0001
BLL
0100
SBL
0000
Unused
Base locator number
assigned from
corresponding
COMMON counter.

When the code for the preceding field
is 1D or 1E, this field contains zeros.

Licensed Katerial - Property of IBM

lTK-TEXT
ATM-text is a subset of Procedure IC-text
(P2 format).
It may contain all elements
of P2-text except the following:

BA
Be
C9
DO
D4
DB
F9

Code
2124
33
35

Element Name
FILE-NAMl!: REFERENCE
VERB INFORMATION
FLOATING-POINT LITERAL
"EXHIBIT NAMED" NAME

INTERMEDIATE RESULT REFERENCE
TEMPORARY RESULT REFERENCE
VARIABLE PROCEDURE-NAME DEFINITION
PROCEDURE-NAME REFERENCE
PROCEDURE-NAME REFERENCE FOR XREF
VARIABLE PROCEDURE-NAME REFERENCE
GLOBAL TABLE REFERENCE (TYPE 1)

For the formats of ATM-text elements,
see the formats under "Procedure IC-text
(P2 Format)."

Internal Text Formats

433

Licensed Material - Property of IBM

MACRO-TYPE INSTRUCTION

PN AND GN DEFS AND PROGRAM BREAKS
iii

r--Ti----~------rl----------~--------___,

I 01112

1011

I

I 271 n 124, C7, or 88 elementsl
L

I

I

12

~I~I----------·rl------------------.,
144lTyp~ode
IPriority number if
1
1 I
~
Itype code is 4C
I

I I
•

,

.

MISCELLANEOUS A-TEXT
r

I

,

--,

I 01112
I
I I

I
•
I
I

f281nlAll elements except 24, C7, 88
I
I I (see 27) and DO (see 29)
L

,

I

OPERATION CODE
r

,

,

1 011
I
~+I-------------------"
1481Machine operation code.,
I
100
~ex) used for CNOP I
________________________
L--~'

r-------------------------------------"1

E-TE XT
r

I

1

12

,

I 01112

,.

•

I

I I

J

.,

----I

,Value of second instruction
Ibyte: condition code, length,
I register, or immediate field

~

1291nlOO elementsl
I

~

,"

CARD NUMBER

,

r--.--

I 011-3
I- 1
12C1 Source card number

~11
\..Y'

L_-,--_.

~

@

.

I
I
I

PROCEDURE-NAME REFERENCE

I

I

,

,

-----------,

I 01 1 12-3

I

~I~I---TI----------------------------.,

14C 1~ IPN number assigned at point of 1
I
I
,definition
from PNCTR (COMMON) I
________________________________
L--~~I

~I

SOURCE PROCEDURE-NAME DEFINITION
r

i

l

l

, 0 I 1 12-3

I

I-~-t-

,

r--r--I 011-2

1301~IPN number -- number assigned I

I

1

Ifrom PNCTR in COMMON

I

I

i

1

,

.,

L-..L-

VARIABLE PROCEDURE-NAME DEFINITION
i

,

,.-

I

1
.,
1381~IVN number -- number assigned I
I
1
Ifrom
VNCTR in COMMON
I
L
_______
~

EBCDIC PROCEDURE-NAME GENERATOR

r---,
101 Consists only of this one field.
~., Used to create in-line DC
13CI instruction for current card
L---I
number to be used by the TRACE
verb.

434

Section 5. Data Areas

I

Idefinition
from GRCTH (COMMON)
I
____________________________________

L--.~I

I 011-2
I
I- I
1341GN number -- number assigned froml
. I
I
IGNCTR in COMMON

1 01 1 12-3
I- I
1 -

,

----------------------------1I
150lGN number assigned at point of

r-i-

~~--~------

GENERATED PROCEDURE-NAME DEFINITION

GENERATED PROCEDURE-NAME REFERENCE

~

VARIABLE PROCEDURE-NAME REFERENCE
r--r---~I------~--------------------------,

I 0 I 1 12-3
I

'-1

I
---I

1541~IVN number assigned at point of 1
I
1
I generation from VNCTR (COMMON) I

Licensed Material - Property of IBM

VIRTUAL REFERENCE
I

ADDRESS REFERENCE

I

I 011-2
, 1
1581VIR number assigned to source CALL
I Istatement operand from VIRCTR
I I (COMMON)
BASE LOCATOR REFERENCE
r

i

I 0I

1 12
.. 1
1
15CITypelBL or BLL number
1 Icodelassigned from BLCTR
1 !~ !or BLLCTR in COMMON

I

I

1
f

1
1

I

Iii

i

I 01112 through 1 + c

I
I
1
I,

.

ADDRESS INCREMENT

1 ~2

I 1
1
160lTypeiDisplacement in bytes froml
I
I~el start of specified area
1 .I\.V 1
«
,

i

i

,

I 011-3

1

L

f

I

180lValue that is to modify an 1
I I address. Negative value in 1
I
I 12's complement.
L--L-__________________________
~

GLOBAL TABLE VARIABLY-LOCATED AREA
REFERENCE
1

RELATIVE ADDRESS
I
I

I 0 I 1 12-3
I
I- I
I
1641TypelIdentifying number of iteml
I Icodel within specified area
I
I
L

-----------------f

!®!
I

i

,

I

12

r-+I------------+(------------41

t841Code for
(Size. in bytes,1
1 1object ~ule lof address
I
. Iconstant
1
I 1field ~
I

r---.---------------,

13-4

•Ispecified
INumber of item in
field

,

I 011-2
I
I- I
f
1681Number
of literall
L __
____.__________
~

i

I 011

LITERAL REFERENCE
I

,

17ClclData-name in EBCDIC
I I I
( I
@
, I

~·--~I------------·------------~

i

,

~~-----------------~

GLOBAL TABLE STANDARD AREA REFERENCE

•

,

1 0 11-3
14- 6
I 1
I
178 I Addressing r::;.,1 Dictiona~
I I parameters ~Ipointer ~

EBCDIC DATA-NAME REFERENCE

1

I 01

r

L--.______________

~

~

SPECIAL PHASE 6 ELEMENTS
DC DEFtNITION
,

•

i

REGISTER SPECIFICATION

I 01112 through c + 1
• I I
16ClclActual
constant
, ,

r

BASE AND DISPLACEMENT
i

,

,

1 011
• I
IAOIRegister number:
t 100 through CF (hex)

I
I
I
I

L

I

,

,

011-2

1

~'-+I------------------f
1701~it§

I
I

10-3
14 -1.5

contents
Register number
Displacement

1
1
1

I

Procedure PIA-Text

435

Licensed Material - Property of IBft

INCREMENTED ADDRESS

PARAMETER POR CALL TO SEGMENTATION AND GO
TO DEPENDI NG ON SUBROUT lIES

i

I 011-3

•
14-6

I

I

I
I Dictionary

i

I A41 Addressing
I I parCZ)eter
I ,I
7

•I
I
I" 011
12-3
I I
I
r
IBC IPrioritYIPN numberl,
,
"

IPoi~er

,

8

,

PHASE 50 OPTIMIZATION IHFORBATIOH

•17-9
I
,Value of increment,

..

i
I• 011

I

I• COlI Typ~COde
I I
13

·.

SPECIAL PHASE 6 ELEMENTS

RPT-OlUGU
•

CALLING
r

~EQUENCE

I

i
i
I 0,1-2
I
.. I
I
I D41 GH nUllberl,

DIS·PLACEMENT

i

i

, 011
,2
,
.. I
I I
IBOICode for
IBase codel
I object ~dule I s w~ch
I
Ifield
~
,
,I Q3I
,I

(!)

Bit 0 in byte 1 is on for a verb.

@code

Jb~l

r'----------------~I

13-4

04 .

I

---------f

08
Oc
10

&-,

INumber of item inl
Ispecified field I
L'_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

~

14
18

CALLING SEQUENCE DICTIONARY POINTER

Assembler equivalent
CNOP 0,4
CNOP 2,4
CNOP 0,8
CHOP 2,8
CHOP 4,8
CNOP 6,8

~

I 011-3
..

I

I

,

IB41Pointer to dictionary entry fori
I ·Ifile-name, data-name, or
I Isubscripted data-name.

®

FILE OR SUBSCRIPT REFERENCE ELEMENT
I

0,1-3

a

I

of

IB81Pointer todicti~rYI_
I, lentry
for file ~ II
,

436

section 5. Data Areas

~

Byte 1 contains priority number of
segment within which the procedure-name
is located.

Licensed Material - Property of IBM

CD

Code
(hexl.
00

Oij

08

DC
10

18

20
24
28

2C

30

3ij
38

3C
40
44

4C
50

Me a n.i.ruL
EQUATE -- equates variable
procedure-names to initial
value; followed by
procedure-name reference.
ENTRY -- defines entry point;
followed by EBCDIC data-name
reference giving entry point
name.
BLCHNG -- specific contents of
base locator changed; followed
by base locator reference.
ENDOPT -- indicates end of
register optimization.
DECLARATIVES START -- indicates
beginning address of
Declaratives Section; produced
only if the SYMDMP or STATE
option is in effect.
ADCON -- defines address
constant; followed by relative
address reference,
procedure-name reference,
calling sequence displacement
element, or calling sequence
dictionary pointer to which
adcon points.
START -- identifies first
exec~table instruction.
DC -- identifies constant;
followed by DC definition
element.
RESERVE -- specifies registers
not to be used by phase 6 or
by phases 62, 63, and 6ij;
followed by register
specification element.
FREE -- indicates registers no
longer reserved; followed by
register specification
element.
DESTROY -- indicates that
contents of register were
destroyed; followed by
register specification
element.
INIT -- indicates when permanent
registers must be loaded.
ORIGIN -- indicates where to set
location counter for
overlaying USE BEFORE
REPORTING code; followed by
generated procedure-name
reference.
REORIGIN -- indicates that the
reset location counter is to
be reset.
Q-BEGIN -- indicates start of
Q-Routine coding; destroys
permanent register assignment.
segmentation control break.
Segment initialization (1-byte
priority number in next
field) •
Dummy procedure-name reference
element to force an XREF
element to be written for the

following procedure-name
reference element.
Bits
0-3
4-7

Code
Jhexl.
02
Oij
06
08

OA

Code
0000
0000
0001

Meanilli!
Unused
BL
BLL

Meaning
SAVE-AREA
SWITCH
TALLY
SORT-SAVE
USDBGINF

Code
lhex) Meaning
00
DCBADR
04
VLC
08
ONCTL
OC
PFMCTL
10
PFMSAV
14
DE.CBADR
18
XSA
1C
PARAM
WORKING CELLS
20
TS
24
XSASW
28
2C
SUBADR
30
TS-2
3ij
FIB
3C
SAVE AREA-2
SAVE AREA-3
40
44
RPTSAV AREA
OVERFLOW
48
CHECKPT CTR
50
54
TS-3
58
TS-4
5C
IND
DBGTRA
60
64
DBGCRD

(2)

Bits
0-3

Fiel£! Code Conte.n.:Lgr Me~n.!ng
i
0000 BL
0001 BLL
0011 Address of data-name
is in registe r
specified in bits
12-15. Referred to
by zero displacement
from register.
0100 SBL
0110 subscript cell

4-15

d

16-23

k

Displacement from start
of area controlled by
base locator. If a
register is specified
in bits 0-3, however,
bits 4-11 contain
zeros, and bits 12-15
contain the register
number.
Base locator number
assigned from corresponding COMMON counter.
Procedure PIA-Text

437

Licensed Material -.Property of IBM

Bits
2-14
15-23

colU!m.i§
Unused
Dictionary section number
Displacement in section

Code
jhetl

l1~aning

0::;--

00
04

08
DC
14
1C
28
2C
30
34
38
3C
40

44
48
4C
50
58
5C
60
64
68

INIT1
TALLY
PARAM
BL
SBL
VLC
BLL
LITERAL
INIT3
CHECKPT CTR
PGT
TGT
INIT2
START (first executable
instruction identified
by START)
PN
VIRTUAL
GN
VN
VNI
SUBADR
Temporary Storage
External adcon (for address of
transient area in segmented
program)

@

Code

1hW.
00
04
08
OC
10
14
18
1C
20
24
28
2C
30
60
64

@

Code
.L~

00
01

Code
1h~1.

01

02

The following special phase 6 A-text
elements are generated and then used
by phase 6 to generate MVC
instructions to initialize VN c.ells
in the TGT:
Identifier
- l l t e __
90

A8

AC

438

Text Element
A 4 -byt e element that
references the VNI cell in
the PGT.
A 1-byte element that
indicates that the value
in the P6PLUS field should
be used as the "plus"
element of the MVC
instruction.
A 1-byte element that
indicates that the value
in the P6LNG field should
be used as the "length"
element of the MVC
instruction.

Section 5. Data Areas

Meaning
INIT1
TALLY
PARAM
BL
SAVE2
SBL
FIB
VLC
PN
GN
BLL
LITERAL
DCB
SUBADR
Temporary storage

03

05

06

~eaning

No preceding base code.
Base code precedes
this eleme·nt.
Phase
Produced
by
Me.ruli.ng
Precedes a load instruc- 50,51
tion which is not
followed by a branch
instruction
4,51
Precedes any possible
entry point for which
addressability must be
established
Precedes a load instruc- 50,51
tion for a PN or GN
which must be processed
with an address constant
cell in the PGT
Precedes a variable
4
procedure-name reference
element at a PERFORM
verb exit
4,51
Precedes a Generated
procedure-name definition element at the
returning point of any
performed procedure
except a PERFORM ••• TIMES
procedure in a nonsegmented pr,ogram
Precedes a load instruc- 50,51
tion for a PN or GN
which is followed by an
unconditional branch
instruction

Must be preceeded by either a
4404 or a 2C element.

Licensed Material - Property of IBM

r-------------------------------~

I[Variab1e number of 2-byte
L---____________________________
Ifie1ds
containing GN numbers] ~
VIRTUAL DEFINITION
r

i

,

i

1 01 112-3

I

1 1
r
100100lVIR number assigned froml
I I I VI RCTR in COKKON
I

~

L----L-.......L.-

I

In through n + 1
l---.------------~----------~

ILast GN number assigned to same
[location as others in string

I

.-

.J

I

14-11
~--------------------------~

IExterna1-nama in operand of
ICALL statement, left-justified,
Ipadded
with blanks.
L
- - - - -__________________________

DISPLAY LITERAL DEFINITION
.--.

~

LITERAL DEFINITION

r,

i

I

101 11213 through 2 + c
1 I
I I
I041TypelclVa1ue of literal
I I~el I
IL I \2) I I
I

I LITERAL

,.

I

i

,

I 011
I- J
1081n/2
I I (Number
I lof fields
1 Ito follow)

12-3
I
I
.,
IFirst GN number assigned 1
1to identify a location
1
I

,

I

I

I

I

I
.,
I
1
1
I

DEFINITION (Larger than 255)

.--.

GENERATED PROCEDURE-NAME EQUATE STRING
(NON-OPTIKIZER VERSION)
r

i

I 011
1213 through 2 + c
I 1
1 1
110 IType·lcl Value of literal
II~el 1
1 1l.2J
I' f1
,

I

1 01 1 12-3
1-, I
1
1541Type I C
1 ICodel

~~C) !

I

--,

14-3 + c

I

1

of

I Values of 1
1
I literal
1
1
I

.J

SEGMENTATION ELEMENT

r-------------------------.------~

I[Variable number of 2-byte
containin g GN numbers]
L1_fields
_ _ _ __

,

i

I '

1 011

12-3
1
I
I
J141Priority number oflVN
1
1 Isegment to which Inumberl
I 1VN belongs
I
I

Ir--+--

r-------------------------------,
In through n + 1

l-------ILast GN number

assigned to s~~e
11ocation as others in string

I

,

I

L

GNUREF ELEMENT

SOURCE PROCEDURE-NAME EQUATE STRING
(NON-OPTIKIZER VERSIOm
r

i

i

,
,

I 011
I- I
I OC In/2
I I (Number
I I 0 f fi e1 ds
I Ito fo11o~

12- 3
I
I
.,
1First PN number assigned I
I to identify a location I
I
I
1
I

I

I

,

t

1 011-2

---,

1

Ir--+-:--------------------------t

11C 1GN number for AT E~lD or INVALID KEY 1
1 1branches, or GNs at REPORT-ORIGIN 1
.J

Procedure PIA-Text 439

Licensed Material - Property of IBM

PROCEDURE-NAME REFERENCE

PHUREF ELEMENT

,

r--~I-----------------------------------'

1 011-2

1

I
I
I

GN-VN ELEMENT PERFORM VERB
r

i

~,

,

I

GENERATED PROCEDURE-NAME REFERENCE

,

1011-2
13-4
I
I
--+1241GN number
IVN number
lassociated withlassociated with
Ireturn point oflPERFORM exit
la performed
I
I, procedure
I,

,

r

I

I 011-2

I
I
I

ISOIGN number at point of
I
I Idefinition from GNCTR (COMMON) I

,

,

•

I

I

I

I

I

,

CD

Bits
0-1-

Code

00
01
10
11

VARIABLE PROCEDURE-NAME EQUATE
PROCEDURE-NAME OR VARIABLE PROCEDURE-NAME
EQUATE GENERATED PROCEDURE-NAME ELEMENT
(OPTIMIZER VERSION)

2
3

4
5
6
7

VARIABLE PROCEDURE-NAME DEFINITION
iii

i

.. fQl
. assigned at point ofl
14C
2 IPH number
I
I definition from PNCTR (COMMON) I

t~I~---------------------------4

120lPN number for PHs following TO
I I PROCEED TO in ALTER statements
I lor Declaratives PN number

i

101112-3

i

I 0~112-3
I
I
I I
,
13S@VN number -- number assignedl
I I, I, from VHCTR in COMMON
I

1

1
1
1
1
1

Meaning
No boundary requirement
Halfword boundary
Fullword boundary
Doubleword boundary
Floating-point number
EBCDIC numeric value
Binary number
Packed decimal number
EBCDIC character string
Hexadecimal number

Byte 1 contains the priority number of
the segment within which the
procedure-name is located.

MACRO-TYPE INSTRUCTION
r

I

I 011
I I
4
144100 I

! !®!

440

Section 5. Data Areas

®

The code 00 indicates EQUATE.

Licensed !aterial • Property of IBM

ADDRESS INCREMENT

PROCEDURE At-TEXT
The follovinq elements of Procedure A1-text
are identical to their counterparts in
Procedure A-text.
~

2C
30
3~

38
3C
~~
~8

4C
50

Element Name
CARD NUMBER
SOURCE PROCEDURE-NAHE DEFINITION
GENERATED PROCEDURE-NAME DEFINITION
VARIABLE PROCEDURE-NAME DEFINITION
EBCDIC PROCEDURE-NAKE G~RATOR
KACRO-TYPE INSTRUCTION \!)
OPERATION CODE
PROCEDURE~NAME REFERENCE (2)
G~RATED PROCEDURE-NAHE RiFERENCE

V~ABLE PROCEDURE-NAHE REFERENCE

54
58
5C
60

VIRTUAL REFERENCE
BASE LOCATOR REFERENCE
GLOBAL TABLE STANDARD AREA
REFERENCE
64 GLOBAL TABLE VARIABLY-LOCATED
AREA REFERENCE
68 LITERAL REFERENCE
6C DC DEFINITION
70 BASE AND DISPLACEMENT
7C EBCDIC DATA-NAME REFERENCE
84· RELATIVE ADDRESS
AO REGISTER· SPECIFICATION
BO CALLING SEQUENCE DISPLACEMENT
B4 CALLING SEQUENCE DICTIONARY POINTER
B8 FILE REFERENCE ELEMENT
BC SEGHENTATION AND GO TO DEPENDING ON
SUBROUTINE CALL PARAMETER
The SPECIAL PHASE 6 ELEMENTS are also
present in Procedure A1-text and are
processed by phase 6~ i f the OPT option is
specified.
ADDRESS REFERENCE
,

i

I 011-3

•

I

·.

"
I 011-3
I 4 1
r-+I---------------rl---;I

180lValue that is to 'C~ I
,I Imodify an address ,I ~ 1,

BLOCK NUMBER
i

,

i

1 011
1
.. 1
I
1C4, Block number,

PROCEDURE BASE REGISTER ELEMENT FOR PN'S
i

i

...

• 011-2
I C81 PH number

PROCEDURE BASE REGISTER ELEMENT FOR GN'S
i

,

I 011-2

r-,+I-----I

I, CCI, GN number

BASE DISPLACEMENT DATA-NAME
•

i
1 011-2
L •
I DOl Addressinq
1 I parameters

L--l

I
13-5
1
I
~ Dictiona® I
~pointer
5 I

'

f

,

14-6
1

178lAddreSSinq0lDiCtiOna~

•

t parameters 3 1pointer

I
I

L

'

,

,

~

1

Procedure PIA-Text

441

Licensed Haterial - property of IBM

A MACRO-TYPE INSTRUCTION element with a
44 byte code (segmentation control
break) has an added byte which contains
the priority number.

o

Address reference element to a Base
displacement data-name element, using
the permanently assigned register
number from the BLASGTBL table and the
displacement given in the Address
reference element.
The contents of the
field are:

Present only for those PNs and GNs that
have address constant cells in the PGT.

!!i1§

0-1
2-14
15-23

OF

Bit§.

a

Meaning
LA instruction not to be
generated
LA instruction to be generated,
using register 14 as base
register
LA ir.strnction is to be
generated, using register 15 as
base register.
EielSl
i

1-3

4-15

16-23

!!it§

COllt.en.!§
Un used
Dictionary section number
Displacement in section

d

k

£.Qde f..Q.!l!§.nt-2L~le£llin£l.
0
Use register 14 to
address item. (A
load instruction is
generated if bits 2
and 3 are on.)
Use register 15 to
address item.
(A
load instruction is
generated if bits 2
and 3 are on.)
000
BL
001
BLL
011
Address of data-name
is in register
specified in bits
12-15. Referred to
by zero displacement
from register.
100
SBL
110
Subscript cell
Displacement from start of
area controlled by base
locator. If a register
is specified in bits
0-3, however, bits 4-11
contain zeros, and bits
12-15 contain the
register number.
1
BL or BLL number
assigned from BLCTR,
or BLLCTR in COMMON
2
subscript cell
number
3
S BL number assigned
from SBLCTR in
COMMON

Por data-names with permanently
addressable BLs, phase 63 changes the

LISTING A-TEXT FOR PROCEDURE-NAMES

r-.,---,-

section 5. Data Areas

1

1 01112 through 1 + c

I

1

~

I I

17ClciEBCDIC procedure-name;
I
I
I Ibit 0 of the preceding field I
1 I lis se t to 1
I
1

LISTING A-TEXT FOR VERBS

r-.-.-

----,

--~------r,~·

I 01112 through n In +
I
1--t-+I
----i
17ClniEBCDIC verb IAlphabetic verb I
number I
I I I _____________IL·sequence
____.____________
L--~

~l

END OF LISTING A-TEXT

MESSAGE DEFINITION
i

. iii

,

1 01 11 2/3-4
I
j
I I--t-of
100107100lIdentifying
I
I" I I I message number 1
I

I

t

I

I

~

i

15-7

18

I

I

1
I Bi ts
10-3

~

ICard
Inumber

1
I

442

Contents
Baseregister
Displacement from start of
area controlled by base locator

0-3
4-15

,

Con.imll§
I
Severity code I

~_ Pha::~umber_J

Licensed Baterial - Property of IBM

DEF-TEXT ELEMENT FOR VERB DEFINITION
MESSAGE PARAMETER

r

i i i

I

,

r

••

I 01112
I
I I I
100In IIC-text identif(1)rl
I I I for parameter 1 I

1 01 112-3
14 15
I
~
I I
I I
I
148100 I Number of 1EO 1Al phabetic
1
I
1occurrences 1 Iverb sequence 1
1
I I n umber
I
1

L

'

. ,

,

,

,

13 through n + 1

.I

,

i

6171 819 to c + 71
1 I I
r
100lclFBIVerb
text I
, ,

~

•IEither

the actual value to be
linserted, or a pointer to the
IPARTBL field containing the
,I value.
Code
(hex)
05
22
23
34
42
43
44
50
52
53
54
57
75
79
81
F9
FA
FE

I

iii

END OF REF-TEXT and
BND OF E-TEXT
,------,
I 0 I

...--.,
1771

Meaning
Alphanumeric literal
Alphanumeric literal
EBCDIC name
Alphanumeric literal
critical program break
Level number
Verb
Relational
Parenthesis
Arithmetic operator
COBOL word
COBOL word
Figurative constant
Standard data-name·
Procedure-name definition
Global Table reference, Type 1
Global Table reference, Type 2
Dictionary pointer
(not an IC-text element)

10

I

L-=--..J

REF-TEXT FOR VERBS
•

i

,

10-2
I 314-5
1
I I
..
Icard Number I EO 1ver~odel

!

(!)

!!

~

~

BEGINN ING OF REF TEXT
,------,
10-1 I

...--..
1~11

I~

I

'-=--.1

RBF-TEXT
i

10-2

DEF-TEXT ELEMENT FOR DATA-NAME DEFINITION
f

i

i

i i

I '

,

,

13-5

'

I

~I-----------------+I------~-f
,

I 011-3
14-6
1718 to c + 71
.. I
I
1 1
.,
1481Card IPointer to dic-lcIExternal- I
I
I Inumber, tionary entry I Inalle in
'I
,for data-name 1 ,EBCDIC.
I
L

i

I Pointer to .dictionaryl Card numberl
lentry for data-name 1
1
lor PH number
1
1

®

I

"

I

DEF-TEXT ELEMENT FOR PROCEDURE-NABE
DEFINITION
r

i

1 011-2

,

13-5
I I
I
14CIPN
Icard Number
I number I
I,
1,

i

i

,

1617 to c + 61
I 1
,
Icl Bxternal- I
I Inalle in
I
I
I I EBCDIC
f

,

,

Procedure PIA-Text

443

Licensed Elaterial .;.. Property of

iBM

written by phase 60 or 64; read by
phase 6A.
CAFDLOC
i

(i

8eaning
o = Reference is. for
data-name
1 = Reference is for
procedure-name

i

I 011-3
14-6
I
I- 1
I
I
110lCard Icontents of LOCCTRI
I Inumberlwhen card'
. I
I encountered
I
I I
L

I

For an unsegmented program, only one
priority element is written; the
. priority number is set. to zero.

ENDSEG
r
i

i

14-6
1
I 1
1201 Zeros 1contents of LOCCTRI
lafter processing
I I
Ilast verb of
1 1
I 1
,I segment
1 011-3

.

,

SEGMENT

.--,
10 I

1 I
of
130lPriO.)rity I
I Inumber
I

1401

!

~I

i

,

I 011

t !

444

®

End-of-REF-text on file 3 and
end-of-E-text if spilled on file 3.
Written by phase 60 or phase 64.

DISCONTINUITY

I

i

~. Indicates beginning of a noncontiguous
section within a segment.

Q)

Section 5. Data Areas

The alphabetic verb sequence number
followed by X·OO·.

~

k-\I

~

The high-order bit is always set to O.

Licensed Baterial - Property of iBM

Dictionary handling is performed by ACCESS
routines described in "Appendix A: Table
and Dictionary Handling." Phases 1B, 22,
21, 25, and 3 use the dictionary.

NOTES ON DICTIONARY ENTRY FORKATS

• The top row of figures shows the number
of bytes in the field.
Phase 1'B enters procedure-names and
their attributes in the dictionary.
Phases 22 and 21 enter data-names and
their attributes in the dictionary. If the
SYKDMP option is in effect, phase 25 uses
the dictionary to build the DATATAB and
OBODOTAB tables for the Debug data set.
Phase 3 replaces data-names and
procedure-names in Procedure Division
statements with their dictionary
att:dbutes.

M'Mi !tin-. define optional
fields or a series of similar fields.

• litH

• c = the number of bytes in the !ield
that follows.
• n = the total number of bytes that
follow in the remainder of the ent~.
• 1b = this field is one byte long.

Dictionary Entry Formats

445

Licensed Haterial - property of IBM

PROCEDURE-NAME (PARAGRAPH) ENTRY

HASH Table Pointer

Delimiter
Pointer

Basic
Fields

~~
r-~-.-_,

......

~---

r-----,

111Variablel I 1
I
I I
I 1-----1
IclName
I I Coun t I
I
I I
I land
I I
I I major I
, ,
I IC~ I
I I
I

I

--l

I

10

I

L _ _ ---I

Attributes

----~

r

I

2

2

1

i

I

I

I

~I---------+-------~Ir---~I-------~

ICharacIPN numberlUnusedlPriority I
I Number
I
I teristicslof this I
I
I paragraph I
I
I

:

'~

0:

_ _ _ _ _ _-4'_ _ _ _ _

:

~I~

____

: 0

~I~

:

________ J

PROCEDURE-NAME (SECTION) ENTRY
Delimiter
Pointer

Basic

~
::==~~~~~~~A~t~t~~~i~b~u~t~e~s~~~~~~==~
, ,
,.--,
' I

111Variable
, I
Pointer to
IclName
dictionary
I I I
en tr y for next I I I
section- na me I I I
3

t

I

I
I
I
I
I
I

I 1
•
ICount
I and

.J

L----::::..J

I
2
I
2
I
I
I
~
I I
I ICharacteristicslPN
IUnusedl
I I
Inumber I
I
Imajo~ I
lof thisl
I
Icodv. I
I section I
I
I

0

"

I

I

,

2

I

Ir-------+I------------~

IPrioritY1PN number
I
I number lof next section I

2-14
15-23

4-7

446

contents
OO---Neither HASH table nor
delimiter pointer
01
Delimiter pointer
10
HASH table pointer not followed
by delimiter pointer
11
HASH table pointer followed by
delimiter
Dictionary section .number
Displacement in section
contents
Number-of bytes in attributes field.
If 0, see variable information
field under "LD ENTRY."
Code
Me~ing
0000
LDentry under FD
0001
LD entry under sD
0010
LD entry under CD
0011
VsAM file
0100
LD entry in Working-Storage
0101
LD entry in Linkage Section
0110
LD entry in Report Section
0111
LD en try under FD with
APPLY WRITE-ONLY (after phase
1000
FD en try
1001
SD entry
1010
CD entry
1011
FD entry with ASCII
1100
Condition-name entry
1101
Procedure-name entry
1110
RD entry
1111
Index-name entry

Section 5. Data Areas

Bi:!;,

o

1
2
3
4
5
6

7
8
9
10
11

12
13
14
15
3)

I®

MeaningL-if Q!!
SORT/MERGE input/output procedu
Section-name
Referred to by PERFORM
Referred to by ALTER
Procedure-name of simple GO TO
Procedure-name of EXIT
Procedure-name following
TO PROCEED TO in an
ALTER statement
Unused
Referred to by DEBUG
Defined in DEBUG
Dummy section-name
Defined in Declara ti ves section
or in DEBUG statement referri
to such a section. Bits 12-1
describe type of section.
Declarative error routine
Declarative label routine
Declarative for DEBUGGING
Declarative report section

Not present in dictionary added by
phase 30.

Licensed Material - Property of IBM

~TRY

~SB

Table Poi nt er

Delimiter
Pointer

Basic
Fields
~

•

i

,

Attributes

-

.

.-.----..,

1
111 Variable 1 I 1
I
1 I
I I
., ll-----II I
I
Pointer to nextl lei Name
I ICount I IFlag1First
entry after
I I by tel BL
I I
1 I and
last LD entry
Inumber
I I
1 Imajor I I
for this file
I
I I
I I code 1 I
I I
I
1101
Q)
1 I
I I
I I
I
3

10

I, ,I

I I

..I

L.._ _ _

I I

I

.J'

,

1

-

1

I
I
DCB
I Access
I
numberlmethod and I
or FIBII/O specifi-I
numberlcations
I
for
I
I
VSAH I
I
file I
@
I
!

CD

I

Non-VSAM file
I

i

I
2
1
,
IDECB IHaximumlCount
Inumberlrecord land I/O
Ilength loptions
I

I
I
I
I

,

,

01

'"

I

VSAM file
,

1

2

I

I
I
IIND2TBLIDisplacement I Number ofl
lentry lof first entrylBLs
I
Icount lin IND2TBL
I needed
I
1
I
I for this I
I
I
I
I file
« I

I
I

"

All files

QSAM File

•I

I

1

I

of
I
I option byte I
I
I

I

•

@

I
.J

Dictionary Entry Formats

447

Licensed !aterial - Property of IBM

Bits
--0-

-'---Q~Routine indication

1-2

00

3
4-7

contents

Format V
Format F
10
Format U
11
Format 5
USE AFTER ERROR
Number of BLs needed for this file

a1

Access
t!gtho~

0000

®

0001

QISAM

001C

BISAM

0100

BSAM

1000

BDAM

VSAM entry
Bit

-01

2
4
5
6
7

448

QSAM

Clause specified
Bit if bit is on
-4 BEFORE'ADViNCING
5 AFTER POSITIONING
6 APPLY WRITE-ONLY
7 AFTER ADVANCING
4 START
5-7 Unused
4 APPLY REORG-CRITERIA
5 TRACK AREA
IS ••• CHARACTERS
6 APPLY CORE-INDEX
7 FREE
4
NOMINAL or AerU AL
KEY
5 Direct organization
6-7 Unused
4
File organization 'D'
5 Direct organization
6 TRACK LIMIT
7 Unused

Contents

1~~CCESS IS SEQUENTIAL
1 = ACCESS IS RANDOM
1
ACCESS IS DYNAMIC

=

Reserved
Relative VSAM
1 = VSAM indexed file
1 = VSAM addressed
s eguential file

Section 5. Data Areas

Bits

0-34

5
6

7

contents
Number of bytes that follow
1 = SAME RECORD AREA
1 = SAME AREA
1 = User label
1
nonstandard label

Location of item in data area of objec·
module:
Bits

-0-3

Field

-·-i-

4-15

d

16- 23

k

l1gillng
Type of BL containing h
address of area:
0000 = BL
0001 = BLL
0100 = SBL
Displacement from base
address
BL number

This extra byte is present for all QSAI
files after count and input/output opt:
!l.it

o
2

.!1g!!illlg
LINAGE
FILE STATUS

Licensed Material - property of IBM

ENTRY

ASH Table pointer

Delimiter
pointer

------ Basic
Fields

I

3

Pointer to
next entry
after last
LD entry f
this file

I

111Variable
I
IclName
I I
I I
I I
I I

I

I

I
I
I
I
I
I
I

I

L

I

~

I

Attributes

~
i

1

,

.....

I 1

1
2
2
11
1
I
I
I
IFlaglFirst IMaximumlMinimumlO
IbytelBL
Irecord Irecord I
Inumberllength Ilength 1
I
I
I
I

J

•ICount
land
Imajor
ICC!)
I, 2

!

!

!

K9

ENTRY

lASH Table Pointer

Delimiter
Pointer

Basic
Fields

Attributes

~~

II

3

Pointer to
next entry
after last
LD entry ~
this file~

,

Bi ts

--01-2
3
4-7

,.---,~

111 Variable
II
I c I Name
I 1
I I
I I
II
,

I 1

1

1 I 7 I

"~-II----I

I I Coun t i l 0 I
I land
I I
I
I
1 I ma jor I I
I IC~ I I
I
1 1 8 II
I

-.I

'

J

'----J

Contents
1 =-SAME RECORD AREA
00 = Format V or S
01 = FO.rmat F
10 = Format U
1 = ASCII collating sequence
Number of BLLs needed for this
file.

Dictionary Entry Formats

44~~

Licensed Material - Property of IBM

LD ENTRY
Delimiter
Pointer

------------

HASH Table Pointer

Basic
Field s

-

--------

r----, I i i
I 1
1 I 1
3
11
I Variable
.......-;'·1
I
1
I
ICount I IMinorlAddressinglFlaglLevel nUl
I and
I I cOde. I parame tersl bltel ber and
Imajor I land Ifor item I ~ Ivariable
Icode 1 I flags I
1
linformatj
I
I I
I
I
I

3

If group item,
pointer to next
entry after
last LD entry
for
group

Attributes

I cl Name
I I
I I
I I

I 1
II

10
@ , I" 0
,

@

I

I

"

@

I

@ (

CD ENTRY

HASH Table Pointer

Delimiter
Pointer

Basic
Fields

--""'--------..

Attributes

_ _ _ _ "....-----_. ._ _.--~
I

,

-,

-

me&

..........

wr------r------r----~~~,r---~------------

111 Variable I I 1
1 3 " ' ··1
1
2
I I
r 1-1- - - 1 - · - - - 1 1 - - - - 4 1 - - - 1 - 1 - - ' - - - - -

IclNama
I I
I I
I I
I, I,

0

Bits

-0-3

Code
0000
0001
0010
0011
0100
0101
0110
0111
1000
10C1
1010
1011
1100
1101

450

Qeerand's Characteristic~
Error detected for this
operand
Fixed-length group
Alphabetic
Alphanumeric
Variable-length group
Report item
Sterling report item
Usage is index
External decimal
External floating-point
Internal floating-point
Binary
Internal decimal
Sterling nonreport

Section 5. Data Areas

I ICount ICD
IAddressinglFlaglNumber of ocI land
Inumberlparameterslbytelcurrences of
I Imajor I r.;;;..
Ifor item I r.;? I DESTINATION
I I c~ I ~
I
I ® ITABLE
1
0 IL _____'L.-__
I
@ __ I __-I' -_ _ _ _ _ _ __
J1lo'
.....;::::::...._ _...
....;;;~

1110
1111

4-5

Code

00
01

10
11
1
1

6
7

..J'~

Alphanumeric edited
Unused
Subscriets Reguired
None
1
2
3

= OCCURS clause in
= REDEFINES clause

this item
for this

item

@
@)

0

=1

SRA

Location of item in da ta area of object
module:

Licensed Material - Property of IBM

Bits

0-3

@

i

4-15

d

16-23

k

Bit§
0
1

2
3

4
5

6-7

@

1ielg

Bits

0-56

7-end

~~sniill!

Type of. BL containing base
address of area:
0000 = BL
0001 = BLL
0100 = SBL
Displacement from base
address
BL number

Meaning, if on
INDEXED BY
SYNCHRONIZED
Subject of key
I f hit 2· = 1
o = DESCENDING
1 = ASCENDING
Report HITH CODE
DEBUGGED item is subscripted
Contents
00
SIGN
01
SIGN
10
SIGN
11 = SIGN

@

During phase 3 operations, the flag
byte field is removed. The first four
bits overlay the first. four bits of the
level number, and the last four bits
overlay the count field preceding the
major field. In the level number
field, if bit 4 is on, the level is 01i
if bit 5 is on, the level is 77.
Otherwise, these bits are off.
Each CD is assigned an identifying
number beginning with the last DCB
number plus 1.
Bi ts

0 = INPUT
1 = OUTPUT

1-5

Unused
1 = Object of OCCURS ••• DEPENDING
ON under CD entry
Unused

6

is
is
is
is

overpunch trailing
overpunch leading
separate trailing
separate leading

Meaning

0-

7

Contents
Level number
1 = Q-Rontine is required
variable, according to
Table 18.

Dictionary Entry Formats

451

Licensed !aterial - property of IBM

i

i

1

, Characteristic 1 Bits
Contents
.1
1
I
t-Length of group.
IFixed-length
I 1-17
I
IGroup Item
1
I
I
t-----------------+--------+-------------------------------------------------~---~--------------~
1Element ary
1
1, if JUSTIFIED RIGHT.
1
1
1Alphabetic
Length of itemi
I
I 2-17
or
Dictionary section number of entry for group in which this I
I
I 18-32*
I Alphanumeric
item is included, if the group contains an OCCURS clause. I
I
Displacement in section.
I
lItem
I 33-41*
I
r------------------r-.--------r--------~--~---~------~
, External
1
1, if PICTURE contains S.
I
I Decimal
2-9
Signed number. .If positive, the number is the total of Ps
I
plus 9s to the right of decimal point. If negative, it
or
1
I
is the number of Ps to the left of decimal. If 0, the
IInternal
I
I
item is an integer.
IDecimal
1
I
or
Number of decimal digits.
1 10-17
I
1
Dictionary section number of entry for group in which this
IBinary
I 18- 32*
item is included, if the group contains an OCCURS clause. I
I
I
Displacement in section.
I
I
I 33-41*
I
1
I-IInternal
Unused
1 1-16
I Floating-point I
17
o = Short form
I
1 = Long ,form
I
I
Dictionary section number of entry for group in which this I
1 18-32*
item is included, if the group contains an OCCURS clause. I
1
Displacement;;in s.ection.
I
I 33-41*
1
--------i
I External
1
o = Mantissa blank when positive
1
I
I Floating-point I
1 = Plus sign when positive
I
Same for exponent sign
2
I
o = Implied decimal point
3
1
I
I
1 = Real decimal point
I
I
4-9
Scale of mantissa.
I
I
I
Total length.
I
I
I 10-17
Dictionary section number of entry for group in which this I
I
I 18- 32*
item is included, if the group contains an OCCURS clause. I
I
I
Displacement in section.
I
I 33-41*
I
Ir---------~----------------------------------------------~--------_____i
'1-,Sterling
1
o = BSI shillings
l' = IBI! shillings
I Non-Report
Elementary Item
o = 1-character pence
2
1 = 2-character pence
o = BSI pence
3
1 = IBI! pence
Number of decimal places to the right of V in pence field.
4-9
Number 0 f . poun d fiel d di gi ts.
10-14
15-17
000 = No~sign specified.
001 = Sign on high-order pound character
010 = Sign on low-order pound character,
011 = sign on: high-order shilling character
100 = Sign on low-order pence character
101 = Sign. on low.,.order decimal position in pence field
(Values 110 and··111 are unused.)
18-25
Number of character positions.
or
or
Dictionary section number of entry for group in which this
18-32*
item is included, if the group contains an OCCURS clause.
Displacement in section.
33-41 *
Number of character positions.
42-49*
I
1 *Entry contains these fields only if item is in a group with an OCCURS clause. The
I
I fields are not present after phase 3, but at the end of the dictionary attributes
1
I three bytes are appended: either the length of the item this item is subordinate to,1
I or the VLC of this item.
I

,,

,,
,
•
,

,
,
,

,

,
,

------------___

_____i

t

,

Figure 65 (Part 1 of 2).
452

S.ection 5. Dat.a.AJ:ea.

LD Entry Variable Information

Licensed Material - Property of IBM

i

i

i

,Characteristic I Bits
,Ivariable-length,"
1-2
,3-5
IGroup Item

i

,Contents

,
,I
,
,
I

,Unused.
I Number of BLs or BLLs for items.
,
I 6-17, VLC number.
I
I 18-32* , Dictionary section number of entry for group in which this
I
I '
item is included, if the group contains an OCCURS clause.
I
I 33-41* I Displacement in section.
I
~I----------------~I--------~'~------------~-----------------------------------------~
IAlphanumeric
I
1
1, if JUSTIFIED RIGHT
,
,Edited Item
,
2-9
Number of bytes following.
I
I
I 10-17** All zeros.
I
t 18-32*
Dictionary section number of entry for group in which this I
I
,
,
item is included, if the group contains an OCCURS clause. I
I
I 33-41 *
Displacement in section.
I
,
I 42-57
SIZE of item.
,
I
I 58 to
Byte 1 contains PICTURE character. Bytes 2 and 3 contain
I
1
I end
count of consecutive occurrences. These three bytes
I
I
I
are repeated until the entir~ PICTURE is recorded.
I

I

IIElementary Item--;-------r---------------------------------------------------------;I
1, if Z or * in PICTURE
1

with Report
PICTURE

2-9

Number of bytes following.
All zeros.
Dictionary section number of entry for group in which this
item is included, if the group contains an OCCURS clause.
Displacement in section.
33-41*
42
1, if BLANK WHEN' ZERO';
43
1, if * represents all numeric characters
44
Unused.
45-49
Number of digit places in item.
50-57
Scalin 9 factor.
58-65
SIZE of item.
66 to
Byte 1 contains PICTURE character (except v or Pl. Byte 2
end
contains count of consecutive occurrences. These two
bytes are repeated until the entire PICTURE is recorded.
Exception: For CR and DB, the first character appears in
byte 1, the second in byte 2.
r------------~------~I------------------·-----------------------------------~
Elementary Item
1 I Unused.
with Sterling
2-9 I Same as for Repo-rt ;PICTlJRE above.
10-17**1 All zeros.
I Report PICTURE
18-32* , Dictionary section number of entry for group in which this
item is included, if the group contains an OCCURS clause.
I
33-41*
Displacement in section.
42
1, if BLANK WHEN ZERO.
43
0, if shilling delimiter is D.
1, if shilling delimiter is S.
44
Same as bit 43 for pounds.
45
1, if no pounds field.
46-57
Unused.
58-65
Total length of item.
66-73
Number of pound .integer places.
74-81
Number of pence decimal places.
I
f
I *Entry contains these fields only if item is in a group with an OCCURS clause. The.
I
I fields are not present after phase 3, but at the end of the dictionary attributes
I
I three bytes are appended: either the length of the item to which this item is
I
I subordinate, or the VLC of this item.
I
I**Entry does not contain these fieldS after phase 3.
I
10-17**
18-32*

,

Pigure 65 (Part 2 of 2).

f

LD Entry Variable Information

Dictionary Entry Formats

453

Licensed Material - Property of IBM

CONDITION-NAME ENTRY

Delimiter
Pointer

-----------

HASH Table pointer

Basic
Fields

Attributes

__. .~___
~
____. .~eD*sE____
_

~_-----

r--r'-----"

111 Variable I
I--+-I- - - - I
IclName
I
I I
I
I I
I
I I
I
I
I
~,-,~------~,

.r---.,

•

I 1
,..--ICount
land
Imajor

111

IC~

1'0

,~~--~

i

i

i

3

111

c

r+----------+I-----rI~I----

10lPointer to dic- ISwitchlclValu,
I Itionary entry
I
I Ifiel
I I for data item tol
I I
I I be tested ~
I @ I I @
I I condition 0
I
I I
I

I

I

I

,

INDEX-NAME ENTRY

HASH Table Pointer
~

----------Delimiter
Pointer

Basic
Fields
r

.~.

,

111 Variable
,. I

IclName

I
I
I
I
L

I
I
I
I
,

If the switch = 1, the value field
contains a 2-byte displacement in the
VALTRU table of the object of the VALUE
clause. If the switch = 0, the field
contains the value itself.

454 Section 5. Data Areas

.

--J

Attribubes
r'----'

I

1

,

i

,

1-----1
ICount
land
Imajor
Icode

1
I
I
I
I
IFlaglIndex-name ILength of
I
Ibytelnumber takenlOCCURS clausel
I
Ifrom INDEX1 Isubject or
I
I@ I in COMMON
I VLC
I

!@

I'

Bit

o

1-7

1 1

I

I

2

I

2

I

1

I

I

Meaning, if on
Subject is variable length; last
field contains VLC number.
Unused.

Licensed Material - Property of IBM

When the SYMDMP, STATE, or TEST option is
in effect, phases 25 and 65 build
additional tables for debugging purposes.
The tables are accessed during execution
of the program or at abnormal termination
of the program by the subroutines of the
Symbolic Debug program.
For details see
the pUblication IBtl_OS/VS COBOL Subrouting
Li!2.£s.U-!'£Qgram Logic.
The tables list the characteristics of
the data areas defined by the user as well
as information about the relative location
in the object module of the code associated
with the card numbers generated for PNs and
COBOL verbs.
This information is used by
the object-time COBOL library subroutines
to ~roduce the dumps at user-specified card
numbers or card and verb numbers or by the
COBOL Interactive Debug Program.
If
abnormal termination occurs, this
information is also used to associate the
address of the instruction at which
abnormal termination occurred with its
corresponding card and verb number in the
COBOL source program.
The tables are also used by the IBM as
COBOL Interactive Debug Program Product
(Program Number 5734-CB4).

usable information within a block.
Table
entries are never split across a block.
The debug data set is single buffered
and the address of the buffer is placed by
phase 02 in location FIL5BUF in COMMON.
Each phase that uses the debug data set is
responsible for moving information into the
buffer and marking the end of the buffer.
Phase 00 is called only to write the buffer
on the debug data set.
Figure 66 shows the positions of the
tables in the debug data set (SYSUT5).
The
PROGSUM table contains information about.
and pointers to, the other tables in the
da ta set.

I PROGSUM
I
I
I

~

I OBODOT AB

f PROCTAB
j

Phase 25 builds the aBO DO TAB table if
there are any OCCURS clauses with the
DEPENDING ON option.
It also builds the
DATATAB table.
Phase 65 builds the
PROGSUM, PROCTAB, CARDINDX, SEGINDX,
PROCINDX and BCDPN tables.
The tables are made up of fixed-length
512-byte blocks; a 1-byte field containing
the hexadecimal value 'FF' marks the end of

k---J

1 - - - - -' a ,
I DATA TAB

ICJ
I

.

I CARDINDX

•

I SEGINDX
I
I PROCINDX

•I BCDPN
Figure 66.

SYSUT5

(Debug Data Set)

Debug Data Set Tables

455

Licensed Material - Property of IBM

The PROGSUM table is the first table in a debug data set. It consists of a single
fixed-length 108-byte entry and contains information about the program and the debug data
set itself.
Di.§.Em!1~

Hex

Decimal

No. of
Bytrua.

8

8

C

12

1C

16

Field
PGPROGID
PGDECLEN
PGBL1
PGBLL1

14

20

PGSBL1

18

24

PGDECB1

1C

28

PGVLC1

4

20

32

PGINDX1

4

24

36
40

PGDCB1
PGENDDCB

LI

28
2C

44

PGENDNDX

4

30

48

34

52

36

54

PGDTDVAD
PGDTNUM
PGDTDSP

2
2

--0 --0--

38
3C

4
4
4
4

4

4

72
74
76
78

PGPTDVAD
PGDXDVAD
PGSXDVAD
PGPXDVAD
PGCXNUM
PGSXNUM
PGPXNUM
PGSXDSP

2
2
2

50

80

PGPXDSP

2

52

82

PGODONUM

2

54

84

PGHASH

2

56
58

86

PGNNUM

5C

92

60

96

2
4
4
2

40
44
48
4A
4C
4E

56

8

60
64

68

88

62

98

64

100
102

66
68
69

6C

104

105
108

PGPNDVAD
PGTEFDSP
PGSMDSP
PGNBCD
PGPH25W
PGLNGTH
PGFIB

4
4
4
4
2

2
2
2
1
3
4

Description
PROGRAM-ID
Length of Declaratives Section
BL1 address relative to the start of the TGT
BLL1 address relative to the start of the
TGT
SBL1 address relative to the start of the
TGT
DECB1 address relative to the start of the
TGT
VLC1 address relative to the start of the
TGT
INDEX1 address relative to the start of the
TGT
DCB1 address in PGT
End of the DECBs relative to the start of
the TGT
End of the indexes relative to the start of
the TGT
Device address of first block in DATATAB
Number of blocks in DATA TAB
Displacement in the block of the first
DATATAB entry
Device address of PROCTAB
Device address of CARDINDX
Device address of SEGINDX
Device address of PROCINDX
Number of entries in CARDINDX
Number of entries in SEGINDX
Number of entries in PROCINDX
Displacement in the block of the first
SEGINDX entry
Displacement in the block of the first
PROCINDX entry
Number of bytes in OBODOTAB including the
unused bytes at the end of the blocks
Hashed compilation indicator which is
matched by the COBOL library subroutine
with the one in the Debug Table in the
TGT.
Number of blocks of BCDPNTBL
Reserved
Device address of first block of BCDPNTBL
Displacement from beginning of PGT to
ILBOTEF3 virtual if present
Unused
Number of entries in BCDPNTBL
Number of blocks written by phase 25
Length of PROGSU!
Unused
Address of first File Information Block
(FIB) relative to the start of the TGT.

Note: The only. fields that may be zero in this table are PGDECLEN, when there is no
Declarative Section and PGODONUM, when there are no OCCURS ••• DEPENDING ON clauses and
PGTEFDSP and PGSMDSP when the corresponding virtuals are not present. , For TGT addresses
which do not exist, the address of the first byte following the previous cell is used
because these cells are used in calculating the number of TGT cells of a given kind to
dump.

456

Section 5. Data Areas

Licensed Material - property of IBM

OBODOTAB TABLE
The OBODOTAB table is an abstract of the DATATAB entries for all objects of
OCCURS ••• DEPENDING ON clauses in the program. The OBODOTAB table, if present, follows on
the next fullword boundary the PROGSUM table and contains one variable-length entry for
each unique object of an OCCURS ••• DEPENDING ON clause •. Each entry begins on a fullword
boundary within tlie block.
The entries are essentially the same as the DATATAB entries for the same name. See
the entries for elementary numeric items in the format of the DATATAB table. OBODOTAB
entries differ only in that the card-number field is zero and the renaming and
subscripting information is omitted. Table-locators within the DATATAB entries are used
to access the OBODOTAB entries. See the subscripting information portion in the format
of the DATATAB table.
COUNT-NAME-TYPE FIELD
No. of
Bytes

Displace.!!!~

~.!

o

~imal

0

1

1

1

c

1+c

1+c

1

2+c
5+c

2+c
5+c

CARDNUM
MAJMIN

3
1

~glltion

Count field: number of bytes (c) in name
field
Name field: number of bytes,· varies between
1 and 30
Count field: number of bytes in remainder
of this entry
Card number where name is defined
Type of entry (For description of this field
see corresponding field in DATATAB table)

VARIABLE ATTRIBUTES FIELD
For description of this field see corresponding field in DATATAB table.

Debug Data Set Tables

457

Licensed Material - Property of IBM

DATATAB TABLE
The DATA TAB table is the third table in the debug data set. It immediately follows the
last entry of the OBODOTAB table, if that table is present. Otherwise, it follows the
PROGSUM table., The DATATAB table lists the characteristics of each data item in the Data
Division. The table consists of two fields, the Count-Name-Type field and the Variable
Attributes field. The Count-Name-Type field has the same format for all entries. It
varies in length from 7 to 36 bytes. The Variable Attributes field differs for each type
of entry and is described on the following pages.
COUNT-NAME~TYPE

~i.§12la£.§.!!l'§l!S

Hex
-0-

DeciJ!!9.1
0

riels!

No. of
Bytes
1

c
1+c

1+c

2+c

2+c

3+c

3+c

CARDNUM

6+c

6+c

MAJMIN

*

1
3

FIELD

Description
Count field: number of bytes (c) in name
field
Name field: number of bytes varies between
1 and 30
Displacement field: Number of bytes from
this field to TEST field (zeros if TEST
field is not present)
Count field: number of bytes in remainder
of entry
Card number where name is defined (contains
zeros for RENAMES items)
Type of entry
Bit
Sej:tin9.e
OOOOXXXX
0001XXXX
0010XXXX
0100XXXX
0101XXXX
0110XXXX
1000XXXX

4-7

*

Note 1:

Number of bytes includes
the byte field itself, if
number of entries is not
equal to zero.

4-7

mLdtem.:

458

1001XXXX
1010XXXX
1011XXXX
XXXX0001
1110XXXX
1111XXXX
XXXX0001
XXXX0010
XXXXOO 11
XXXX0100
XXXX0101
XXXX0110
XXXX0111
XXXX1000
XXXX1001
XXXX10 10
XXXX1011
XXXX1100
XXXX1101
XXXX1110
XXXX1111

There are no variable attributes for an SD entry.

Section 5. Data Areas

112 anin g

Level description under
FD
Level Description under
SD
Level description under
CD
Level description in
working-storage
Level description in
Linkage
Level Description under
RD
FD entry (other than
VSAM)
SD entry
CD entry
FDentry (VSAM)
organization sequential
RD entry
Index-name
Fixed length Group
Alphabetic
Alphanumeric
Variable-length group
Numeric edited
Sterling report
Usage index
External decimal
External floating-point
Internal floating-point
Binary
Internal decimal
Sterling non report
Alphanumeric edited
RENAMES (level 66)

Licensed Material - property of IBM

RENAMES item (level 66L:

Displacement
He!. Decimal
7+c --7+c-

8+c

Field
RENAMES

8+c

INDEX name:
-7+c-7+c
8+c
8+c

No. of
]ytes
1

variable

INDFLAG
INDXCELL

1
2

Descrip:!;.i.Q!!
Bit
Bit
~ing:
7
XXXXXXX1

Meaning
Next DATATAB entry
renames the same item
as this one does
This is the last (or
XXXXXXXO
only) item renaming an
item.
Field contents are the same as the
type-dependent portion of the level
description item for the particular data
type of the RENAMES item.

Flag
Bi:1;.
0

Meaning
Subject of OCCURS clause
is variable length,
next field contains
VLC number
Unused
1-7
Index cell number in TGT
Length of subject of OCCURS cIa use or VLC
number
.§.§tting
1

A+c

10+c

INDLNG

2

7+c
8+c

7+c
8+c

FIB
ORGACC

1
1

FIB number
ORGANIZATION and ACCESS clauses
Bits
Setting
tleaning
0-31000XXXX
Access sequential
0100XXIX
Access random
0010XXXX
Access dynamic
6-7
XXXX0100
organization relative
XXXX0010
organization indexed
XXXX0001
organization sequential

1
1

DCB or DECB number
Access method
Setting2
]1.:1;.
OOOOXXXX
0-3
0001XXXX
0010XXXX
0100XXXX
100CXXXX
7
XXXXXXX1

FD Item (other than VSAM1:
7+c
8+c

7+c
8+c

DCBDECB
ACCESSFLG

XXXXXXXO

gLI!§.!!!.:
7+c

7+c

1XXXXXXX
OXXXXXXX

Meaning
QSAM
QISAM
BISAM
BSAM
BDAM
DECB Number in preceding
byte
DCB Number in preceding
byte
Output
Input
Debug Data Set Tables

459

Licensed Baterial - Property of IBM

RD Item:
7+c--7+e

A+c

Level

1C+c

Descri~ion

LIIJECTR

3

PAGECTR

3

Addressing parameters of li.ne counter;
contains zeros if line counter is not
defined
~
Settins§
Beaning
0-3
OOOOXXXX
BL entry
0001XXXX
BLL entry
0100nXX
SBL entr,y
4-15
Displacement from BL
16-23
BL Number
Addressing parameters of page counter (same
form as addressing parameters above).
contains zeros if page counter is not
defined
.

item:

Variable attributes for level descriptic:m items are divided into two portions: (1) the
type-dependent portion. and (2) subscripting information portion. The subscripting
information portion is the same for· all level description item entries. It follows and
is described after the type-dependent portion descriptions.
(1)

Type-dependent

portio~:

FIXED-LENGTH GROUP:
7+e
A+c

7+c
10 +e

IDKFLD
LVLRDEFN

3
3

Addressing parameters (same form as above)
Bit
0-5

Bit
Settings
XXXIXX1X

6

7-23
VARIABLE-LENGTH
7+e
7+c
A+e 10+c

GROU~:

3

MAXSIZE

Addressing parameters (same form as above)

3

Bit

0-5

Bit
Settings
XXIXXX1X

6

7-23

D+c

13+c

VLCNUM

2

Bit

-0-

Bit
Settings
1XXXXXXX

1-3
4-15
!LEIiENTUL.-ALPHABET~ALPHANUMERIC.

7+e
A+e

7+c
10+e

JUSTRGT

3
3

Bit
settinS§

6

XXXXXX~X

7

XIXIXXX1

8~23

Section' 5. Data Areas

Meaning
Normalized level number
REDEFINES
Maximum object-time
storage size (in
bytes)
Meaning
ODO master
Unused
VLC nUlRber

REPORT.&.-J.PITED-.STERLING. EXTERNAL FLOATING-POINT:
Addressing parameters (same form as above)
Bit
0-5

460

Meaning
Normalized level number
REDEFINES
Object-time storage size
(in bytes)

Meaning
Normalized level number
REDEFINES
JUSTIFIED RIGHT
Object-time storage size
(in bytes)

Licensed Material - property of IBM

INTERNAL FLOATING-POINT:
7+c"7+c
A+c 10+c

,
3

FLPTYPE

Addressing parameters (same form as above)

Bit
0-5
6
7

B+c

11+c

2

xxxxxx,x
XXXXXXXO
XXXXXXX,

"Meaning
Normalized level number
REDEFINES
COMP-1
COMP-2

Unused

BINARY, INDEX INTERNAL DECIIUL, EXTERNAL DECIMAL:
7+c
7+c
3
Addressing parameters (sama form as above)
A+c 10+c
NUMINF01
1
Bit
Bit
Setting,§
~inq
0-5
Normalized level number
XXXXXX1X
REDEFINES
6
1
S in PICTURE
XXXXXXX1
B+c 11+c
NUI!INFO 2
2
lIXXXXXX
Leading sign
0
OXXX;XXXX
Trailing sign
X1XXIXXX
Separate sign
1
xoxxxxxx overpunch
significant digits left
2
XX1XXXXX
of decimal point
No significant digits
XXOXXXXX
left of decimal point
Significant digits right
3
XXX1XXXI
of decimal point
XXXOXXXX
No significant digits
right of decimal point
4-8
If bit 2 equals 1,
number of digits to
left of decimal point.
If bit 2 equals 0,
number of digits to
right of decimal
point.
If bits 2 and 3 both
9-13
equal 1, number of
digits to right of
decimal point.
If only bit 2 or 3
equals 1, number of Ps
in picture
14-15
Unused

Debug Data Set Tables

461

Licensed Material - Property of IBM

(2)

subscripting Information Portion:
This portion of the Variable Attributes field begins immediately after the
type-dependent portion.
It ranges in size from 2 bytes for an unsubscripted item to a maximum of 20 bytes
for an item belonging to 3 variable-length groups.
1

Guide to

~ENAMES

Bit
-0-

~tting2.

1

X1XXXXXX

2

XX lXXXXX

3

XXX1XXXX

4

XXXX1XXX

5

XXXIX1XX

6

XXXXXX1X

7

XXXXXXX1

and subscripting

Bit

1

1XXXXXXX

Meaning
This item is renamed.
The next DATA TAB entry
renames it.
This item contains an
ODO clause.
Item re quires a t least
subscript.
OCCURS clause connected
with the most
inclusi ve or only
group; or elementary
item contains an ODO.
Item requires at least
two subscripts.
OCCURS clause connected
with the less
inclusive group of 2
groups or the middle
inclusive group of 3
groups or elementary
group contains an ODO.
Item requires 3
subscripts.
OCCURS clause connected
with the least
inclusive group of 3
groups or elementary
item contains an ODO.

VLC information
Bit

0"

Bit
settings

~ing

Most inclusive of 3
groups or only group
X1XXXXXX
Less inclusive group of
2 gro~ps or middle
inclusiv.e group of 3
groups
XX1XXXXX
Least inclusive group of
2
3 groups
Unused
3-6
7
This item contains an
XXXIXXX1
object of an ODO or is
the object of an ODO
clause
If bits 0, 1, or 2 equals 1, the
displacement of next occurrence field for
the associated group contains a VLC number
(see note 2) •

462

Section 5. Data Areas

1XXXXXXX

Licensed Material - Property of IB[1

1st subscript
(if present)

2

Number of occurrences (maximum number if
ODO) specified in OCCURS clause governing
this item

(most inclusive
with OCCURS)

2

Displacement of next occurrence
governed by OCCURS clause (see note 2)

2nd subscript
(if present)

2

Number of occurrences (as above)

2

Displacement of next occurrence governed by
OCCURS clause

3rd subscript
(if present)

2

Number of occurrences (as above)

(least inclusive
with OCCURS)

2

Displacement of next occurrence
governed by OCCURS clause

1st subscript
with 000
(if present)

2

OBODOTAB pointer for most inclusi.ve
group or elementary item containing
an 000
Bit
0-8

Contents
Relative block number in OBODOTAB
Displacement with block
(in fulltlords)

9-15

2nd subscript
with ODO
(if present)
3rd subscript
uith 000
(if present)

2

OBODOTAB pointer for less inclusive
group (as above)

2

OBODOTAB pointer for least inclusive
group (as above)

(3) TEST Field:
This portion immediately follows the subscripting information and is pointed to by the
displacement field in the COUNT-NAME-TYPE portion. This field is present only for the
following data types when the TEST option is in effect:

1
2

Count of bytes following
Bit
~in.9
0-6
Unused
o mantissa blank when po si ti ve
7
1 = sign plus when positive
8

o = exponent blank tthen posi ti ve

1
9

10-15
1
1
2
n+3

o

= sign plus when positive
implied decimal point
= real decimal point

1
Scale of mantissa

Count of bytes following
PICTURE character
Count of consecutive occurrences
The preceding three bytes are repeated until
the entire PICTURE is recorded
Debug Data Set Tables

463

Licensed !aterial - Property of IB!

NUKERIC EDITED:
1
2

2

N+2
Note 1:

Count of bytes followinq
Bit
~inq
1 = Blank when zero
1
1 = * represents all numeric
characters
2
1 = Z or * in PICTURE
Number of diqit places in item
3-7
8-15
Scalinq factor
0-7
Contains PICTURE character (except V
or P)
8-15
Contains count of consecutive
occurrences
These bytes are repeated until the entire
PICTURE is recorded

-0-

For CR or DB, first character appears in byte 1, the second in byte 2.

12te 2: All subscript length information precedes any OBODOTAB pointers. If the OCCURS
cluase is applicable, the contents of the displacement field is as follows:
1.

For an elementary item, it is the machine lenqth of that item includinq any slack
bytes that precede its next occurrence.

2.

For a fixed-length group, it is the length of the qroup includinq any slack bytes
added at the end of the qroup before its next occurrence.

3.

For a variable-lenqth group, it is the VLC number for the VLC field which contains
the number of bytes to the next occurrence.

464

Section 5. Data Areas

Licensed ftaterial - Property of IBM

The PROCTAB table contains one 5-byte entry for each card and/or verb in the source
listing of the COBOL Procedure Division. The table is ordered on three levels:
1.

priority (in ascending order of independent segments, with the root segment last)

2.

Card-number within priority

3.

Verb-number within card

The last PROCTAB entry for a priority and for a program fragment has a card and verb
number of zero. In addition, the relative address field contains the address of the
first byte following all instructions for the segment with that priority.
Di§!!.lacement
Ru Decimal

o

3

0

3

Field
PTCDVB

PTRELAD

No. of
Bytes
3

2

~crip!ion

Card number and verb number on source
listing
Bit
contents
-0:19
Card number
20-23
Verb number
Relative address of instructions for this
entry within program fragment to which it
belongs

The CARDINDX table is a directory to the SEGINDX table and contains one 5-byte entry for
each program fragment and one entry for each discontinuity in the COBOL instructions
within a segment. Entries in the CARDINDX table are in ascending card number order and
are accessed by indexing through the table sequentially.
The CARDINDX table starts at the beginning of a block.
Displacement
Hex Decimal
0--0--

3
4

3
4

Field
CXCDVB

CXPRIOR
CXFRAG

No. of
Bytes
3

1
1

~crip!i.Q.!!

Card number and verb number of first card
represented by this entry

Bit
Contents
0-19
Card nUmber
20-23
Verb number
Priority number associated with this card
Relative fragment number within the priority
to which this card belongs

Debug Data set Tables

465

Licensed Material - :Propertyof IBM

SEGINDX TABLE
The SEGINDX table contains' one 10-byte ent,ry ~C?r"~ac~"pr,

, r-

, V

,

, Go to
, Side B

,,
,

, 2.

,
,

How to Find Argument

,

CMPL

I

---+

----------~I~

,

GPRxx

'.

."

~

,

I 3.
I 3. Type of failure:
one of the
I
following:
I
,
I
,
abend = ABENDxxx
I
I
wait = WAIT
loop
LOOP,
I
msg. = MSGIKFxxxxxl
1
1-----I
I 4. IKFCBLnn
I 4. Failing phase:
IKFCBLnn, where nn I
I
I
is the compiler
I
I
phase number.
I
I
I
5. COBOL verb being
5.
processed: (e.g.,
ADD, MOVE, GO)

,

,
I
I
,
I
I
I
, Location LINKNAME in phase 00 contains
I a name in the form IKFCBLxx, where xx
, is the compiler phase number.
,
___+

,
,

I
I
I
I
I
I
I
I

.,

I
I
I
I

-----."..---~

I A. Find the register used by the
failing phase (argument 4 above) to
point to COMMON; see "Register
I
Usage" in this section l •
I

!tJ:

~B.

~

I

obtain the address of COMMON from
the register •

Verify that you are at the correct
.••..' COIU!ON
C. area for COMMON; the contents of
. ".\
COMMON address + X'14C' should be
COMMON.
I
the same as the word coded on the
•
-,1
.
PROGRAM-ID card (card 2 or 3 in the
.
I I
source program) •
I '14C'- IProgram ID I I
I '153'Ientry
I I
Find card number at COMMON address
~
+ X'294' (e.g., 8000030 would indicate card 48 (hex. 30 = dec. 48).
I • 291" - I Card being I I
I '297' I
~ I
I .
I processed , I
I
I
I I E. Find the indicated card in the
I
L-I
source program and determine the
I
I
COBOL verb being processed.

: . '. ;tiD.

•

I

'

~

Jllf this worksheet has been rellovedfrom the OS/VS COBOL ProqramJtQgic !1anual, the
I
I address of COlUlON can be found by. using all of the registers listed under REG AT ENTRY I
I TO ABEND. Starting with register 10 (then 11, then 9) perform steps Band C until
I
I step C results in a iBatch;then do steps D and E.
.'
,
,

490

t

Section 6.

Diagnostic Aids

Licensed Material - property of IBM

COBOL Abstract Worksheet (side B)
,

I

I

,

I Search Item

, Search Argument

I How to Find Argument

I

I--

"

I 1. Component ID:

I 1. 5740-CB1-xxx

,

5740-CB1-xxx, where,
xxx is the program ,
product version
I
,level.
I

I
I

I--

2. Keyword entry (use
as indicated):

I
I
I
1
I

---t

The program product version level is
I
printed at the top of the first page of,
the COBOL listing.
It is also con,
tained in byte X' 17' of the load
1
mod ule.
I

+I--------T----------+I---

, If unsure, check the JCL to see which
I step was being executed at the time of
Unsure, the failure

Go to
Side A

,
,
,

2.

1
I
1

,

>1

I

I 3. Type of failure:

3.

l o n e of the
,
following:
,
abend
ABENDxxx
,
wait = WAIT
I
loop = LOOP
,
msg.
MSGIKFxxxxx
I
bad output
,
= INCORROUT

I
I

,

---t
I
I
I
I

1

I
I
I
I
I
I

,

,

=

1---------------, 4. COBOL verb or

EXEC

I

I
I
I
I

I
I

4.

--t

statement being
executed:

,
I

A. Determines the CSECT name assigned
to the failing program in the
PROGRAM-ID source statement, which
is usually the second or third card
in the source program.
B. Determine the length of the compiled
CSECT from one of the following
areas:
o

,
I
I
I
I

,
I

linkage editor map

.. extent list
G

r-

,

I 5. Optional COBOL

+--

1 5.
library module namel
being executed:
1

I
+-1---.----- .
1 6.
I 6. Special COBOL
features being used,
I
(optional) :
I
I
(e.g., SORT,
I
I
SYMDMP)
I
I
I
I

compiler generated Memory Map

I
I C. Use the PSW AT ENTRY TO ABEND to
determine the address of the failing
I
instruction.
I
I
I D. Is the failing instruction within
the scope of the code compiled for
I
the COBOL CSECT? If yes, see note
I
below. If no, se. note 2 below.
I
I
I

,

1
--------t

,

I

,,

1

1

I
I
I

I

•

----I

Diagnostic Aids

491

Licensed Material - Property of IBM

The tables that the compiler uses to store
information within a phase or between
phases are manipulated by a set of routines
called TAMER (Table Area Management
Executive Routines). TAMER is part of
phase 00 and is resident in storage
throughout compilation.
The dictionary, which is an internal
data set used by phases lB, 22, 21, 25, and
3, is manipulated by a set of routines
called ACCESS routines. ACCESS routines
are loaded into storage as part of these
phases.
The. chapter "Phase 02" explains how an
area for tables and the dictionary is
obtained initially. TAMER obtains
additional areas if they are needed. The
new areas mayor may not be contiguous to
the original area. Figure 73 shows the
arrangement of tables and the dictionary in
each contiguous area.
i

I

I

l

~

I

~~

I

,Dictionary I
I Section 1 ,
---J'.----JJ

Figure 73.

Arrangement of Tables and
Dictionary sections in
Contiguous Areas

ACCESS routines enter and retrieve
dictionary entries. They are assembled by
means of a macro instruction with phases
lB, 22, 21, 25, and 3, the only phases that
use the dictionary. only those routines
that are needed in a phase are assembled
with it.
Using the ACCESS routines, phases lB,
22, and 21 make dictionary entries for
data-names and procedure-names in the. order
in which the names are defined in the
source program. (Phase lB makes entries
for procedure-names; phases 22 and 21 makes
entries for data-names.) Basically, a
dictionary entry consists of a name and
attributes.
Formats for the types of dictionary
entries are illustrated in "Section 5.
492

Section 6.

Phase 25 uses the ACCESS routines to
locate dictionary information used in
building tables for the Debug data set.
Phase 3 uses the ACCESS routines to
replace data-names and procedure-names in
procedure statements with their dictionary
attributes. It tells the ACCESS routines
the name and the ACCESS routines obtain the
attributes from the dictionary entry for
that name.
It also uses the ACCESS routines to
resolve qualification and the CORRESPONDING
option. Phase 3 does not use "enter"
ACCESS routines (those whose names begin
with "ENT") or the GETPTR ACCESS routine.
The ACCESS routines do not restore
registers 0 and 1 on exit.

..

,Table 11 ••• ITable N,Main Free,Dictionary
I
' __
I
I SectionN
L-______
-L_______ ,Area
________
__________4
~.

Data Areas." Phases .1B, 22, and 21 do not
use the LOCNXT ACCESS routine.

Diagnostic Aids

ORGANIZATION OF THE DICTIONARY
.The dictionary is divided into sections of
512 bytes each. The location of a
dictionary entry is indicated by its
section and its displacement from the
beginning of that section. The. DICOT table
has an entry for each dictionary section,
giving the starting address of that
section.
The ACCESS routines use the HASH table
to keep track of the locations of
dictionary entries. HASH is a hash table
with 521 entries. When a dictionary entry
is made for a name, its section. and
displacement are entered in the HASH table
entry for that name. When an ACCESS
routine wants to find an entry, it
determines the hash value of the name to
find the HASH table entry for that name and
obtains the section and displacement from
the HASH table entry.
If a name hashes to. the same value as a
previous name, the section and displacement
for the previous name are taken from table
HASH and placed in front of the dictionary
entry for the new name asa dictionary
pointer. Then the section and displacement
of the new entry are entered in the HASH
table and duplicate hash.values are
indicated. when an ACCESS routine wants to
find an entry for a name and the HASH table
indica tes that there were duplicat e hash

Licensed Material - property of IBM

values, it uses these dictionary pointers
to search the dictionary, in reverse order,
to find the specified name. That is, it
obtains the section and displacement from
the HASH table for the hash value and finds
the name in the indicated entry. If the
names match, this is the correct entry,
unless duplicate names were defined. Then
it looks at the entry with the section and
displacement specified by the dictionary
pointer of the last entry. This process
continues until it has compared the names
of all entries with duplicate hash values.
At that time, it will either have found a
single unique name, a duplicately defined
name, or no name at all. It issues an
error code if it does not find a name or if
the name is duplicately defined.
If a name is unique because it is
qualified, the phases specify a range of
dictionary entries to be searched when they
call an ACCESS routine. This is explained
in routine LATACP.

~:

described above. The necessary moving is
. done dur ing interphase processing by
routines named TBINTPOO, TBINTP01, etc.
In the following descriptions of the
ACCESS routines, the format of the EBCDIC
name pointed to is:
Iii

I

No. of
Bits

1 1 1
1
12 161n*8 1

contents

IOOlntNamel

I

1 1

I

where n is the number of characters in the
name. -The entry starts on a fullword
boundary and is a multiple of 4 bytes.
Padding is with binary zeros starting with
the low-order bytes.

INITIALIZATION OF ACCESS ROUTINES
STORAGE FOR THE DICTIONARY
Generally, storage for a new dictionary
section can be obtained from the free area
between the tables and the dictionary (see
Figure 73). If the free area is exhausted,
a GETKAIN macro instruction is issued to
obtain all available COBOL space, the area
equal to the difference between the length
of the longest phase and the length of the
current phase. Areas obtained in this
manner ar.e not contiguous.
When the outstanding available area is
exhausted, dictionary sections are written
out on direct-access data set SISUT1 and
the area is reused. The DICOT table is
used to keep track of the dictionary
sections. There is'an entry for each
section, giving the beginning address of
the section and an indication of whether or
not it has .been written out (spilled). A
dictionary section is' read back into
storage, when it is needed, by SUbroutine
MOVDIC,described under "Table Handling
with TAKER" in this appendix. At the end
of phase 3, all dictionary space in storage
and the DICOT table and the HASH table are
released. SYSUT1, the dictionary spill
data set, is closed so that it may be
reopened asa utility data set for later
phases.
When control passes from a smaller to a
larger phase, any tables or dictionary
sections in danger of; being overlaid by the
new phase must bemov'ed to upper storage.
This possibility exists when space for the
table or dictionary section was obtained
via a GETKAIN macro' instruction, as
Appendix A:

To use the ACCESS routines, the phases must
call routine INTACC to initialize them.
INTACC primes the DICOT table upon
receiving control for the first time and
performs other initialization functions.
The call to INTACC must follow the call to
TAMEIN, the TAKER initialization routine.
The calling sequence to INTACC is:
L

BALR

15,=A (INTACC)
14,15

ACCESS ROUTINES
ACCESS routines are available to perform
the following functions.
1.

Enter attributes when given a
data-name.

2.

Enter attributes when given the
dictionary pointer.

3.

Get a dictionary pointer when given
the data-name and the length of its
attributes.

4.

Enter delimiter (dictionary pointer of
the entry that delimits a group or
section) when given the dictionary
pointer of the group or section.

5.

Locate attributes when given a
data-name.

6.

Locate attributes when given a
dictionary pointer.

Table and Dictionary Handling (TAMER)

493

Licensed Material - Property of IBM

7.

Locate attributes of next entry when
given a dictionary pointer.

8.

Locate delimiter Nhen given a
data-name.

9.

10.

where parameter h.as the following format
starting on a fullword boundary:
r-.-,------------r---------~

No. of
Bytes

Locate attributes when given ACCESS
pointer (name of an entry that is a
sub field of the last entry referred to
by an ACCESS routin~.

I
11
3
1
I
I
Contentsl161Address of ICount of
I IEBCDIC
NamelAttributes
____________
L -________
L-~

Locate attributes when given a
data-name and a dictionary pointer to
a group of which it is a subfield.

~

rI
I

I

I
3

1

3

I

r---------r---+I---------~,

IAddress ofl
IAttributesl
'"-

Given the address of an EBCDIC name
(procedure-name or data-name), routine
ENTNAM makes a dictionary entry for it. It
places its section and displacement in the
HASH table and also in register 1, to be
used by the calling phase as a dictionary
pointer. The calling sequence is:
1 ,=A (parameter)
15,=A (ENTNAli)
14,15

L
L

BALR

0 IDictionarYI
IPointer
I

. ,

I

GiVen an EBCDIC name and the length of its
attributes, routine GETPTR determines its
section and displacement and places this
dictionary pointer in register 1. The
calling sequence is:
1 ,=A (parameter)
15, =A (GETPTR)
14,15

L
L

BALR

where parameter has the following format
starting on a fullword boundary:

where parameter has the following format
starting on a fullword boundary:

I

r--

-,--

I

No. of

I
I
I
Bytes
I 1
3
I
3
I
II
I
.,
ICodelAddresslCount of I Ad dress ofl
Contents I
lof
I Attri- I Attributes I
I
I EBCDIC I butes
I
I
I
IName
I
I
I
L--'

---L-

I

J

I

No. of
Bytes

I
I
I
3
1
I
,.
I
.,
Contents ICodelAddress of ICount of I
I
IEBCDIC
namelAttributesl
____________
_________ J
L----.~I

~

where code is 8 for elementary items and
paragraph-names, and 12 for group items and
section-names.

where code is 0 for elementary items and
paragraph-names, and 4 for group items and
section- na me s.

Given a dictionary pointer, that is, a
section and displacement, routine ENTPTR
enters a specified name and its attributes
into the dictionary. The calling sequence
is:
L
L

BALR
494

1 ,=A (parameter)
15,=A (ENTPTR)
14,15

Appendixes

Given a dictionary pointer for a group item
or section-name and its delimiter pointer,
routine ENTDEL enters the delimiter pointer
into the dictionary entry for the group
item or section-name. A delimiter pointer
for a group item is the section and
displacement of the next group item on the
same or a lower level. A delimiter pointer
for a section-name is the section and
displacement of the next section-name. The
calling sequence is:
L
L

BALR

1 ,=A (parameter)
15,=A (ENTDEL)
14,15

Licensed Material - property of IBM

where parameter has the following format
starting on a,fullword boundary:
No. of
Bytes
Contents

.-r-------,---,I I
I I
111
3
111
3
1-1
I I
I
10 IDictionarYI 01 Delimiterl
I IPointer
I IPointer I
L-'

,

,

.--,-------

,

No. of
Bytes

I I
111

contents

141Dictionary pointer I

3

.-I--'~--,

I

I
I
-i
I

.

Given an EBCDIC name, routine LATRNM
locates its dictionary pointer and the
starting address of its attributes. If the
entry is found, the attributes starting
address is placed in register 2, the
dictionary pointer is placed in register 3,
and register 15 is set to 0. If the entry
is not found, the contents of registers 2
and 3 are meaningless, and register 15
contains a 4 if the name was not found and
an 8 if the name was duplicately defined.
The address of the located name as it
appears in the dictionary will be saved in
the DICTNAME in COMMON. Note: This
address should never be saved across CALLs
to phase 00. The calling sequence is:

Given the dictionary pointer of an entry.
routine LOCNXT locates the next entry. In
register 2, it places the starting address
of the next entry's attributes. In
register 1. it places the dictionary
pointer of the next entry. In register 3,
it places the starting address of the
EBCDIC name of the next entry. The calling
sequence is:
1,parameter
15, =A (LOCNXT)
14,15

L
L

BALR

where parameter has the follouing format
starting on a fulluord boundary:
I

No. of
Bytes

i

I I

contents

111
3
I I
10lDictionary
Pointer
_____________- - - - - J

'~I~I

1, = A(parameter)
15,=A (LATRNM)
14,15

L

L

BALR

where parameter has the following format
starting on a fullword boundary:
i

No. of
Bytes

11 I

contents

I I
10 I Address of EBCDIC Namel

I I

•

3

I

Given a dictionary pointer for an entry,
routine LATRPT locates the starting address
of its attributes and places it in register
2.
The address of the located name as it
appears in the dictionary will be saved in
the DICTNAME in COMMON. !~~: This
address should never be saved across CALLs
to phase 00. The calling sequence is:
L
L

BALR

Given the EBCDIC name of a group item or a
section, LDELNM locates its delimiter. It
places the starting address of the given
name's attributes in register 2, the
dictionary pointer of the data-name in
register 3. and the delimiter pointer in
register 1. It sets register 15 to 0.

1 ,=A (parameter)
15, =A (LATRPT)
14,15

If an error is detected, one of the
following codes. is placed in register 15.
The address of the located name as it
appears in the dictionary will be saved in
the DICTNAME in COMMON. Note: This
address should never be saved across CALLs
to phase 00.
Code in
~§!~_12

12

8
4

where parameter has the following format
starting on a fullword boundary:
Appendix A:

~nin.Sl

Unique name located was
paragraph name or
elementary item name.
Registers 2 and 3 are set
as above.
Name is duplicately defined.
Registers 2 and 3 contain
meaningless information.
Name was not found.
Registers 2 and 3 contain
meaningless infOrmation.

Table and Dictionary Handling (TAMER)

495

Licensed Material - Property of IBM

The calling sequence for LDELNM is:
L
1 ,=A (parameter)
L
15,=A(LDELN!!)
BUR 14,15
where parameter has the following format
starting on a full word boundary:
No. of
Bytes

r-

I

I

I

11

contents

3
I
I
I
1161 Address of EBCDIC Namel

•

l-

I

LAll~~:!:~

pointer)

I

Attributes !!§ing ACCESS

Given the EBCDIC name of an entry that is a
sub field of the last entry referred toby
an ACCESS routine, routine LATACP puts the
starting address of the attributes in
register 2 and the dictionary pointer in
register 3. The address of the located
name as it appears in the dictionary will
be saved in the DICTNA!!E in COMMON. Note:
This address should never be saved across
CALLs to phase 00. Register 15 is set to
O.
(This routine is used to locate
'
qualified names. It limits the search of
the dictionary.)
If an error is detected, one of the
following codes is placed iii register 15.
Code in
~gist~-1.2

12
8
4

Kea!!1:l!,g
Last entry referred to was
an elementary item.
Name is duplicately defined.
Name was not found.

Registers 2 alid 3 contain meaningless
information.
The calling sequence for LATACP is:

6\~Rf..1l&cat~-illWutes Given..§£oue
poin~.n

Given the EBCDIC name of an entry and the
dictionary pointer of the group item or
section-name of which it is a subfield,
routine LATGRP puts the ,starting address of
the entry's attributes in register 2 and
the dictionary, pointer of the entry in
register 3. It sets register 15 to o. The
address of the 'located name as it appears
in the dictionary will be saved in the
DICTNAIIE in COMMON., !2:\:!: This address "
should never be saved across CALLs ,to phase
00.
' '
If an error occurs, one of thefoll()wi~g
codes is placed in register 15.
Code in
Register
12

,5

paragraph~name

1 ,=A (parameter)
15,=A (LATACP)
14,15

BALR

where parameter has the following format
starting on a full word boundary:
No. of
Bytes

H Contents

I

8
4

Registers 2 and 3 contain meaningless
information.
The calling sequence for LATERP" is:
1 ,=A (parameter)
15, =A (LATGRP)
14,15

L
L

BUR

where parameter has'the following':format
starting on a fullwordboundary: ,',.,
No. of
Bytes

r

I

i i i

I"
II I
11 I
3
111
3"
I
1 I
I I
,
contents I 12 IAddresslOI Group or section
I
I lof
I IDictionary Pointer 1
.' ' r I
I 1EBCDIC I I
'
'I"
I IName
______ 'I 'I ________________
~~~

The address of the loca ted n~lDe-~ as '

~~

it

I

3
111
1 I
181 Address of EBCDIC Name
I

I

There must have been no call to a
TAKER routine intervening between this
routine and the last call to an ACCESS
routine.
Appendixes

<.

'.

appears in the~:i.ctionary will be sa'ved in'
the DICTNA1!E in COSMON; 'Note: This
"
address should never' be saved ~cross CALLS
to phase 00.
'
'

1 1

!2~:

1J96

ot

elementary item name.
Nameis,duplicately defined.
Name was not found.
'

L--~L

L
L

Meaning
Given dictionary pointer
pointed to a

TAMER (Table Area Management Executi~e
Routines) resides permanently in main
storage as part of phase 00 and is
available to all phases to handle tables.

•••

Licensed Katerial - Property of IB!

code

.CONTROL FIELDS

-01

"he three' control fields described below
are set up and used by the TAKER routines
as aids in the handling of tables.

02
04

For each table, there is a TIB in a fixed
location in COMMON. A TIB may be
reassigned when the table for which it was
used is released. The TIB points to
another control field for that table -- the
TAM! (see below). Each TIB has the
following format:

H~nin!l

Indicates that the table has
been released so that its
area is available as free
area.
Indicates that the table is
static. No further entries
will be made.
Indicates that the table has
been primed so that entries
can be made.

Table Address
address of the first byte of the
table.

If Status Is
0'1-------

N1 Is
0--

02 or 04

Number of bytes used so
far

If status Is
0,-------

N2 Is
Length of the freed
area

Entry Length
number ,of bytes in a table entry.

02

Number of unused bytes
in the table

TAM! Address
address of the TAI!M for the table.

04

Number of bytes
assigned to the table

,

i

,

No. of
Bytes

1
1
1
3
2
, I 1
I 2
I
I
I
I
lContents 1Eritry I TAM!
1Table IGrowthl
ILengthl Addressl Lengthl Factorl
L-____-L______

-L------~

____

~

Table Length
number. of bytes requested for the
table (used by thel?RIME routine).

TIB Address
address of the TIB for the table.

Growth Fac::tor
not used -- a table is always
incr.eased 256 bytes at a time.
'

.. '

Each KASTA! contains the characteristics of
a TA!ER area (contiguous space in storage
assigned to TAMER). A MASTA! has the
following format:

~

For each. table there is a TAMK in a
variablelocat.j.on within' fixed block (the
TA!K blo~k). Each TAKK points ·to a table
and to theTIB for the table. The format
of a' TAlUS: is:

a

r-

No. of
ByteS·
Contents

~I~.~I--r---------~I

I .
1

I
1

3

1

12 1,2

1
4

1

'~---4------~1-+1~1~------4

IStatuslTable IN11N2lTIB
I Addressll I Address
~

____

~_

_.'_'-L.__L -________

1
I

~,

Status
code indicating the status of the
table:
Appendix A:

<

>

fullword

I

I

1Beginning of area
l-ILength of area

..IFirst

,

I
I
1

.,

free byte not used so far

I
of

ILength of free area left over
l-IFirst TAKM used by this MASTA!

•

INext TAM! to be used by this MAST A!
l-INumber of dictionary section within the
1 !ASTAK
I

Table and Dictionary Handling (TAMER)

I
I
I
1
I

1
1
1
.J

497

Licensed Material - Property of IBM

Each time a new TAMER area is assigned
to TAMER through a GETMAIN macro
instruction. one of two conditions can be
true:
1.

before phase 3 processing.' It is.also
Its"operatii:>Il>s ar,e as
follows:
....

I called by phase, 02,.
• Phase 02:

The new TAMER area is contiguous to a
current one, in which case ·an old
MASTAM will be updated.

Called before any other TAKERrouti~~.
sets up the firstMASTAM for the TAME,R
area requested at the beginning of,· >
compilation. Sets up a TAMK and.TIB
for the 'HASH table' (see '.'ACCES,S . '
Dictionary Handling Routines" att.he
beginning, of this appendix)'. i"

or
2.

It is not contiguous to a current
TAMER area, in which case a new MASTAM
is created.

• Phase 3:

since only three MASTAMs, at most, are
needed (see "How Space is Assigned"
below) , prc)visions are made for using only
three con~ecutive GETMAINs without an
intervening FREEMAIN macro instruction.

If the dictionary. was not spilled ' (that
is. if no dictionary sections were
written on SISUT1), no action is taken.
If the dictionary ·isspilled. TAMEIN
calls TBGETSPC which tries to get"more
space for dictionary sections. If
space is available, T,BREADIC·is c:alled;
to ];ead back as manysection~ . as,"
possible.

HOW SPACE IS ASSIGNED
At the beginning of compilation, a variable
unconditional GETMAIN is issued to get the
main TAMER area. A MASTAM is set up for
the area. If more space is needed later
on, COBOL space is requested through an
unconditional GETMAIN [COBOL space is the
difference in length between the longest
phase (phase 4) and the current phase]. If
the COBOL space obtained is contiguous to
an old TAMER area. it is considered part ·of
that TAMER area and the old MAST!M is then
updated.
If the next phase to process is not
larger than the current phase. the COBOL
space is kept. Since this space is kept
only three MASTAMs are required. If the
next phase to process is larger than the
current phase, the tables that are to be
passed between phases are packed and moved
so that none of them are overlaid by the
next phase.
Within a TAMER area (and as indicated in
the MASTAM), the tables start in lowest
storage and the dictionary starts in
highest storage. The TAMMs for the MASTAM
are assigned contiguously within the TAMM
block, and their order reflects the storage
order of the tables to which they point.
!Qtg: If several GETMAINs are issued, the
areas obtained will usually be in low
storage so that only one MASTAM will be
used.

TAKEIN is the TAMER initialization routine.
It is called during phase 00 interphase
processing (in routineINT1B)' and once
498

Appendixes

The calling sequence for TAMEIN is:
L
15.=A(TAMEIN)
BALR. 14.15

PRIME Routin4jl
Routine PRIME allocates space, iil' any TAMER
area, to the table named in the calling
sequence. The 'following steps aJ:;~ taken ,.in
sequence until the ,required space is found:
.:'

,:".t

1.

A check is made for the required area
in the re.maining free space of the ,...'
current ,TAKER area. This .spaq~ ·is
called the Main Free Area. If the
area is too small'; the, Main.p:Iiee .:.Area
contained in the other TAMER areas is
checked.
.
.; .

2.

A check is made for the··.~equir~darea:.;:
in the space made ava:ilable., by the
release of tables by TAMER. . This
space is called the Freed Area.

3.

An attempt is made to pack 't.~~'tahi~~ ,
(eliminating the free bytes between
the .. primedand static taj)les)· to '.
iilcrease the. size of.· .theHain Free. '.'
Area wi thin a' TAllER area·.~.' ".' .

4.

A request

5.

The primed tables are packed. that i~,
all of the unused a·rea min.us the,
length of one more entry for each
table is considered available.
An attempt is made to spill a
dictionary section (write;.i t put· on

6.

is

ma<1,e for COBOL :space.

Licensed Material - Property of IBM

SYSUT1). For steps 5 and 6, table
space is assigned only on a single
entry basis.
Routine DICSPC is called only by ACCESS
routines, and requests space for a
dictionary section. The space is provided
by an internal call to the PRIME routine.
PRIME returns the starting address of the
section in register 1, and the ending
address in register 2.

If none of these methods is successful,
compilation cannot continue. If space is
found, a TAMM is created for the new table
(or is just updated in the case of success
in step 2).
The PRIME routine can also be called
internally by other routines just to find
space. In this case, a TAMM is not created
and the calling routine takes whatever
action is necessary.

The calling sequence for DICSPC is:
L
BALR

15,=A(DICSPC)
14,15

The calling sequence for PRIME is:
1, =A (parameter)
15,=A(PRIME)
14,15

L
L

BALR

where parameter has the following format
starting on a fullword boundary:

,

--,
i
I
t
3
2
2
I 1
I
I
I
I
t
I RequestedlGrowth I
Contents I Entry ITIB
ItengthlAddresslsize
IFactor I
No. of
Bytes

i

i

i

Routine STATIC tenders a table static.
This means that no new entries will be made
in the table during the rest of the phase.
It sets the TAMM for the table to static
format, that is, to the form:

..I

No. of
Bytes
Contents

~GETSPC

Routine

Routine 'J'BGETSPC is called by routi.ne PRIME
to obtain COBOL space. The space is
requested through an unconditional GETMAIN
macro instruction. A check is made to
determine whether or not the space obtained
is contiguous to a current TAMER area. If
the space is contiguous and is in lower
storage than the TAMER area, all of the
tables in the TAMER area are moved to what
is now the new beginning of the TAMER area.
If the space is not contiguous, a new
MASTAM is created, and the COBOL space
becomes a new TAMER area.

,

1

I
I
1
2
I 3
I 2 I
I
I
02 I Table IUsed IFree I
I AddresslByteslBytesl

,

The calling sequence to routine STATIC
. is:
L
L

BALR

1 ,=A (TIB)
15, =A (STATIC)
14,15

Routine TABREt releases a table when it is
no longer needed so that its area can be
used as a free area. It sets the TAMM for
the table to released format, as follows:
Routine MOVDIC reads back into storage a
dictionary section that has been spilled.
First, MOVDIC calls the PRIME routine to
make space available for the section and
then it reads the section back into that
space.

No. of
Bytes.
contents

•I

I 1
II 01
.,I

•

3
Table
Address

I
I

4
--t
Released I
Bytes
I
i

The calling sequence for MOVDIC is:
L
L

BALR

The TAMK aadress in the TIB is set to O.
Both the TAMM and the TIB for the released
table can now be used for another table in
a call to routine PRIME •.

15 ,=A (MOVDle)
3,=A{DICOTTABLE ENTRY)
14,15
Appendix A:

Table and Dictionary Handling (TAMER)

499

Licensed Material - Property of IBM

The calling sequence for routine TABREL
is:
L
L

BALR

1,=A(TIB)
15,=A (TABREL)
14,15

Routine INSERT provides for inserting an
entry into a table. It adjusts the
displacement field of the TAMM for the
table and returns to the phase the starting
address (in register 2) and the starting
displacement (in register 3) of the entry.
If the area allocated to the. table will
not hold the entry, routine INSERT calls
PRIME to obtain additional space.
The phases call INSERT with the
following calling sequence:
L
L

BALR

1,=A (TIB)
15, =A (INS ERT)
14,15

After the .dictionary section is spilled,
TBSPILL moves the first section (the
section in lowest storage, and, therefore,
closest to the tables) to the area just
freed.

Routine TBWRITE is called by routine
TBSPILL to spill dictionary sections by
writing them on the direct-access data set
SYSUT1. TBWRITE uses the DICOT table to
check and indicate the status of dictionary
sections (see "ACCESS Dictionary Handling
Routines" at the beginning of this
appendix) •
If a section has never been spilled,
TBWRITE spills it by issuing the BSAM WRITE
macro instruction. If a section has been
spilled before, but has been changed since
then, TBWRITE issues the XDAP macro
instruction to put the fresh copy on
SYSUT1. If a section has been spilled and
has not been changed since then -- that is,
an exact copy already exists on SISUT1 -it is not spilled again.

If a table contains variable-length
entries, the entry length specified in the
TIB must be changed before a phase calls
routine INSERT.

NQi~:

Routine TBREADIC is called by ftOVDIC to
read a dictionary section back into
storage.
Routine TAMEOP is called in the interlude
before every phase to reset TAMER switches
and to ensure that no tables being passed
. from a shorter phase are overlaid by a
longer phase. In phase 3, it releases
dictionary space.
The calling sequence for TAMEOP is:
L
BALR

15,=A(TAMEOP)
14,15

Routine TBSPILL, which is called by PRIME,
checks for the last dictionary section (the
section in highest storage), and calls
routine TBWRITE to spill it to provide
additional storage for tables. If the
section in highest storage is currently
being built, the next-to-last one will be
spilled.

500

Appendixes

Routine GETALL is called by phases 6 and
6A. Its function is to provide space for a
table that may be in excess of 32K bytes,
the normal maximum size. It is a request
for all available table space in a
contiguous area. The tables are packed
and, if all available COBOL space has not
yet been acquired, a GETMAIN macro
instruction is issued for the remainder.
The largest unused, contiguous area is
found, and its starting address and length
are passed back to the calling phase in
registers 0 and 1, respectively.
All subsequent use of that area is
handled internally by the phase that called
GETALL, since a call to TABREL is the only
TAMER call which may legitimately follow a
call to G~TALL in the same phase. At the
end of the phase that called GET ALL, the
area then becomes available for normal
phase 00 table-handling procedures.

Licensed !aterial - Property of IBM

The compiler produces an object module
suitable for input to the linkage editor.
After linkage editing, the module is
arranged as shown in Figure 711.

COUNT TABLE
the COUNT table contains entries for
each procedure-name and source verb
(COUNT option).

If the program is segmented, there are
some differences in the object module.
These are described in the section
"segmented Object Kodule" later in this
appendix.

INIT2
the initialization 2 routine stores
address constants as part of program
i ni tializa tio n.
INIT3

This section provides a brief description
of the fields of the object .module as they
appear in Figure 711. Each field is
discussed in greater detail elsewhere in
th is a ppendi x.
.
INIT1
the initialization 1 routine at
relative location 0 sets up registers
and address constants for the program.
DATA AREA
data areas are data constants defined
in the Data Division. This includes
FIBs, DCBs, DECBs, record areas, and
some buffers.
TGT

PGT

the Task Global Table contains
information and work areas used by the
program.
the Program Global Table contains
address constants and literals
referred to by procedure instructions.

RPT
Report Writer routines to process the
Report Section. This field is
discussed in "Appendix C: Report
Wri ter Subprogram."
PROCEDURE
procedure instructions for the
program. In a segmented program, this
field contains only the instructions
for the root segment.
Q-ROUTlNES
compute the length of variable-length
fields defined by the OCCURS clause
with the DEPENDING ON option, and the
locations of the variably-located
fields which follow them.

the initialization 3 routine
establishes addresses in the global
tables.

PROCTAB and SEGINDX
the PROCTAB and the SEGINDX tables
contain debugging information created
in response to a request for the
statement number (STATE) option.

•

I

•I
I

I
I
I
I---

,

I
I
II
I
I

,
,
I

I

4

,
,
,

DATA AREA

I

TGT

I

4

PGT

I

RPT

I

PROCEDURE

I

Q-ROUTINES
COUNT TABLE

I

INIT2

I
I
I

INIT3

I

SEGINDX

Figure 711.

I

INIT1

----4
I

----4
I
I
I

r

I
I
I

PROCTAB

4
I

Storage Map of a COBOL Object
Kodule

INITIALIZATION 1 ROUTINE-JINIT1t
The initialization 1 routine begins at
relative location O. The coding of the
routine is identical for every program;
however, the address constants it contains
differ with program requirements. These
address constants were provided by phase 6
Appendix B:

Object Module

501

Licensed Material - Property of IBM

or 64. This routine performs the following
functions, in the order listed:
1.

2.

3.

Saves the registers of the calling
program and the pointer to its Task
Global Table or save area.
Establishes address constants for this
program's Task Global Table, Program
Global Table, first instruction to be
executed, and initialization 1, 2, and
3 routines.
Branches to INIT2 (described later in
this chapter.

".Branches to ILBOINTO COBOL Library
Subroutine to do initialization for
VSAM file processing.

~i-------------------------------------------'
IW'orking-storage
I
J
,
I Exit list
I

•IDCB, FIB
I
~I-----'----------------'-----------------~
IDECB
I

•IBuffer

rI

•IRecord

,•
,

I
I
I

(unless the file is direct BSAM
with key, direct BDAM, or named in a
SA!E AREA or SAME RECORD ,AREA clause)
area if any WRITE ••• ADVANCING
statement was written for this file

r.--------------------------------------------~
IBuffer for a direct BSAM file with keys ,
,
I

or a direct BDAM file

area, followed by buffer, for
SAME AREA or SAME RECORD AREA file

I~ecord

In addition to its initialization
functions, the INIT1 routine also contains
the following:
1.

A DCB exit routine for the QISA!
delete code.

2.

A IIno-space li condition exit routine
for BSAM and QSA! files.

3.

A DCB exit routine for a BISAM file
CORE-INDEX option, if specified in the
program.

4.

A save area. This is used if the
program is re-entered. It contains
the register contents as they were
left when the program was last
executed, to be loaded by INIT3.

I
I

I

a

,
,

,

I

~,------------------------------------~

Figure 75.

Format of the Data Area

Formats for DCBs (data ,control blocks)
and DECBs (data event control blocks) may
be found in Q~LVS1~stgJL~ata Arell§, and
.QU!L~Igem Da1a_Ar~ll§.

A special discussion is given for exit
lists since the system-defined format is
not specific, and the compiler always
generates exit lists with specific format
and contents.

EXIT LISTS

The data area of the COBOL program contains
space for information provided in the
source program Data Division. It holds
control blocks, buffers, and record areas
for files, and reserved storage for the
working-Storage section, with data items
initialized if the VALUE clause was
specified.

The compiler generates an exit list for
each file. At execution time, the exit
list is located in storage immediately
preceding the DCB for that file. Exit list
entries are accessible to the COBOL program
because of their location relative to the
DCB. The list is accessed by the operating
system via the DCBEXLST field of the DCB.
This field contains the address of the exit
list, which was placed there by phase 21.

The forma t of the data area is shown in
Figure 75.

General information on exit lists may be
found in the publication Q~!S Dat~

In the first part of the data area, all
the information for each file is con'tiguous
in storage. The information exists in the
order in which FDs were written in the
source program.
The data area was generated by phase 22,
Which indicated space allocation by setting
the LOCCTR cell in COMMON and which placed
some constants in exit lists, DCBs, DECBs,
and working-storage where the VALOE clause
was specified.
502

Appendixes

lI~!l!!m!!!1!.L~~~Guide.

The compiler always generates the exit
list in the order specified in Figure 76.
If the object program does not contain one
of the routines specified, the exit list
entry is present, but deactivated.
The primary function of the exit list is
to provide the addresses of routines which
are to be called by the operating system
und~r certain conditions.
However, the
COBOL-generated exit list contains

Licensed Material - Property of

additional information for use by the COBOL
program. These exit list entries are
masked off from the system by having a
hexadecimal 100' in the first byte of the
en try.
Figure 76 shows the format of the exit
list and the text that folIous describes
each entry, uhich is a fulluord in length.
o

Code 1 may be:

<---------fuillford---------->
r

I
!
I

01

02
00

I)

.!:!~£ning

input
output
inactive

Code 2 may be:
Value

0'400

oc
OD

Beaning
output
inactive
input SUL
input NSL

BOF, BOV-RTN
address of a routine to process header
labels. This routine Has uritten in
the source program as a USE •••
[BEGINNING] LABELS declarative
section. The same entry is used for
both the FILE (beginning-of-file) and
REEL/UN IT (beginning- of-volume)
options. since the system does not
distinguish between beginning of file
and beginning of volume. The entry is
initialized before the file is opened
to contain the address of the
beginning-of-file routine.
Immediately after the file is opened,
the address of the beginning-of-volume
routine is moved into the entry. The
instructions which change the entry
are part of the COBOL-generated code
for the OPEN verb.
If the user did not provide a
beginning-of-file label routine, the entry
is initially inactive. If no
beginning-of-volume routine was provided,
the entry is deactivated after the file is
opened.
EOV-RTN
address of the routine to process
end-of-volume trailer labels. This
routine aas written in the source
program as a USE ••• [ENDING][REEL/UNIT]
LABELS declarative section. The entry
is initialized at OPEN time.

,

code 1

A (BOF,BOV-RTN)

code 2

A(EOV-RTN)

r-I
I
I

code 2
OA

I
1
I

-1

I

A (EOF-RTN)

~

I A(TOTALING AREA)

I
I
I

r------~

I
•

I

05
08

r-I

Valu~

IB~]

r
I

aI
,
I

!
I

00
00

00
00

06

I A (DCB-EXIT-RTN)
I
I A(ERROR-BIT-RTN)
I
I A (INV-KEY-GN)
I
I A (USE-ERROR-RTN)
I
,reserved
I
I
I n INSL I-lax. Size
I
I =V (ILBOCKP 1)

r
.I
I
80

~

I

,
I
~

I

~

I
I
I

~

I
--1

A (CKPTDCB)

I

r-----1..-

I

I .•..•......•... DCB ••••••••••.•••..•.••... I
~

L

Figure 76.

Fields of the Exit List

EOF-RTN
address of the routine to process
end-of-file trailer labels. This
routine lfas Hritten in the source
program as a USE ••• [ENDING][FILE]
LABELS declarative section. The entry
is initialized at OPEN time.
TOTALING AREA
address of the area specified as the
TOTALING AREA data-name in the LABEL
RECORDS clause.
DCB-EXIT-RTN
address of a routine called by Data
Management during execution of OPEN
for all QSAM or QISAM files and for
BISAM files Hith the CORE-INDEX
option. For QISAM, the routine sets
the delete code in the DCBOPTCD field
of the DCB. For BISAH, it initializes
fields in the DCB for CORE-INDEX. The
routine for QISAM or BISAM is located
in INIT1. The exit list entry for
these files is set by phase 21 for
QSAM, the address is that of the COBOL
library subroutine ILBOEXT1 which sets
the DCBRECF~ field of the DCB. The
exit list entry for a QSAM file is set
by phase 51.
The instructions necessary for the QISAH
DCB exit routine are always generated, even
if the program uses no QISAM files. Phase
6 or 64 determined whether to generate the
BISAH DCB exit routine by testing the
INITBIT bit of the PH1BYTE cell in COBMON.
Appendix B:

Object

Moaul~

503

Licensed Material

~

Property of IBM

This bit is turned on during compilation if
CORE-INDEX was specified.
ERROR-BIT-RTN
address of a routine used for BSAM and
QSAM files, if a WRITE statement
failed to execute because of a
no-space condition. This routine sets
the return code to indicate why the
WRITE statement failed, and returns to
the system, which then takes the SYNAD
exit. The coding for this routine is
located in theINIT1 routine. It is
always generated, even if no BSAM or
QSAM files are used in the program.
The exit list entry pointing to the
routine is set by phase 21.
INV-KEY-GN
address of the routine to handle an
INVALID KEY condition for a particular
READ, WRITE, REWRITE, or START
statement. If no routine was written
by the user, this entry is rendered
inactive by placing a 1 in the
low-order bit.

takes its own actions, as described in the
publication IBM OS/VS_£Q!Q~ Subroutipe
Program Logic.
USE-ERROR-RTN
address of a rout·ine to handle
input/output errors for non-V SA!
files. This routine was written by
the user as a USE AFTER STANDARD ERROR
declarative section. It is masked off
from the system, and is given control
after an input/output error in the
same manner as the INVALID KEY
routine, through the COBOL library
subroutine ILBOSYN. This entry is
interrogated first for any
input/output error which is not caused
by an invalid key condition. The
address is placed in this entry when
the file is opened. FS is posted if
present.
NSL Max. Size
maximum number of bytes required for
nonstandard labels for this file. If
nonstandard labels are used, the user
has written an SiC routine to process
these labels, and has incorporated
this routine into the system at
installation time. This entry is
available for interrogation by the SiC
routines. It is masked off from the
system's exit list examination.
Further description of the
requirements for nonstandard labels
may be found in the publication I~
Q§L!.§.,..COBOL CO!l2il~_!!.n.g Library

The contents of this entry are changed
or rendered inactive before each READ,
WRITE, REWRITE, or START statement executed
for the file. This is done because each
INVALID KEY routine applies only to the
statement for which it was written. When
an input/output operation is executed, this
entry always contains the address of the
proper routine, or it is rendered inactive
if no routine applies.

Erogr!!.!!!.~r's_Guide.

The exit list entry is masked off from
the system. It is not given .control
directly by the system, but by
COBOL-generated code in the following
manner. When an error occurs during an
input/output operation, the system gives
control to the routine specified in the
DCBSYNAD field of the DCB. This is the
COBOL librarysubroutineILBOSYN. . If the
error was caused by an invalid key, ILBOSYN
checks for an active entry in this exit
list position. If one is found, control is
passed to the address specified, that is,
the user's INVALID KEY routine. If none is
found, but an active entry is found in the
USE-ERROR-RTN exit list position for this
file, control is passed to theUSE ••• ERROR
routine. If neither of these routines was
written by the user, the ILBOSYN routine

504

Appendixes

• !.l represents:
Meaning:
input
output
1-0

ILBOCKP1
address of a second entry point to
ILBOCKPO. The checkpoint subroutine
is entered through ILBOCKP1 when the
"END OF REEL/UNIT" option is specified
in the RERUN clause.
.

CKPTDCB
address of the checkpoint file DCB for
a file in which checkpoints are being
taken at "END OF REEL/UNIT."

Licensed Material - property of IBM

~!LQlQ!!!L

TABLE 1!Q11.

The Task Global Table is used to record and save information needed during execution of
the object program. It begins with a series of fixed-length fields followed by a series
of variable-length fields. These fields are illustrated in Figure 77 and are described
in this section.
I

I

IRelative Loca tion I
Field
I
--------~
r-Hex
~s:
I
o I SAVE AREA
48
72
ISWITCH
4C
76
I TALLY
50
80
ISORT SAVE
54
84
IENTRY-SAVE
58
88
ISORT CORE SIZE
5C
92
IRET CODE
5E
94
ISORT RET
60
96
IWORKING CELLS
400
ISORT FILE SIZE
190
404
ISORT KODE SIZE
194
198
408
IPGT-VN TABLE
19C
412
ITGT-VN TABLE
416
IReserved
110
1A4
420
ILENGTH OF VN TBL
422
ILABEL RET
116
117
423
IReserved
1A8
424
IDB~ R14SAVE
l1C
428
ICOBOL INDICATOR
1BO
432
IA(INIT1)
1B4
436
IDEBUG TABLE PTR
1B8
440
ISUBCOK PTR
1BC
444
I SORT-MESSAGE
1C4
452
ISYSOUT DDNAKE
1C5
453
I Reserved
1C6
454
ICOBOL ID
456
1C8
ICOMPILED POINTER
460
ICOUNT TABLE ADDRESS
1CC
1DO
464
IReserved
1D8
472
IDBG R11 SAVE
476
ICOUNT CHAIN ADDRESS
1DC
1EO
480
IPRBL1 CELL PTR
484
I Reserved
1E4
1E9
489
ITA LENGTH
1EC
492
I Reser ved

o

I,

Figure 77.

r

i

I

IRe1ative Locationl

Field

I

fr------------~I~------------------i

Hex

Dec

1F4

1FS"

500

504
1FC
508
200
512
beginning of
Variable-length
portion

PCS LIT PTR
DEBUGGING
CD for INITIAL INPUT
OVERFLOW CELLS
BL CELLS
DECBADR CELLS
FIB CELLS
DEBUG TRANSFER
DEBUG CARD
DEBUG BLL
DEBUG VLC
DEBUG MAX
Reserved
DEBUG PTR
TEMP STORAGE
TEMP STORAGE-2
TEMP STORAGE-3
TEMP STORAGE-4
BLL CELLS
VLC CELLS
SBL CELLS
INDEX CELLS
SUBADR cells
ONCTL CELLS
PFMCTL CELLS
PFMSAV CELLS
VN CELLS
SAVE AREA=2
SAVE AREA=3
XSASW CELLS
XSA CELLS
PARMI CELLS
RPTSAV AREA
CHECKPT CTR
VCON TBL
DEBUG TABLE

----"----------------J

L--______________~____

Fields of the Task Global Table

The lengths of the variable-length
fields are determined by the requirements
of the program (if not required, a
particular field may not exist in the
object program). The lengths of these
fields are computed ill phase 6 or 62. In
the chapter "Phase 6," Figure 36 shows the
source of each variable TGT field.
SAVE AREA
the program's save area; used to
provide standard subroutine linkage
when this program is. called (by the
operating System or by another
program) and when this program calls
other programs.

SWITCH
a ful1word switch.
bits are used:
Bit

-0-

Only the following

~~~ing

Indicates a size error in series
addition or subtraction. If a
SIZE ERROR clause was included
in the source statement, and a
size error occurs before all
data items in the series have
been added or subtracted, this
bit is set to 1. It is tested'
after the entire addition or
subtraction is complete. If
the value is 1, the
Appendix B:

Object Module

505

Licensed flaterial - Property of IBM

verb) if an overflow condition
occurs. This execution-time
use is tested by generated
code.

instructions generated for the
ON SIZE ERRO.R clause are.
executed.
Used for TRACE. It is set to 1
by the execution ,of 'a READY
statement, and reset to 0, by a
RESET statement. If the
program uses a TRACE statement,
there are instructions to ,test
this bit at the point of
definition for every source
program procedure-name (PN).
If it is on, the DISPLAY
subroutine (ILBODSPO) is called
to print the card number of the
procedure-name (see the
publicationIBl-OSLYS C~~Q1

I,

7

Used for OPT. It is set to 1 by
phase 62 if optimization has
been requested for the program
or by phase 65 if the SYMDMP,
or STATE and OPT, or FLOW and
OPT options have been
specified.

8

Reserved

9

Used for CALL, CANCEL, or a
recursive CALL. Set to 1 by
the genera.ted code for the CALL
or CANCEL verb. Tested by
INIT2 to determine if a
recursive call condition
exists.

SubrQ.!!tiJ1g--1ib~llL-~!:Ul

Logi£ for a description of the
DISPLAY subroutine).
2

3

5

6

506

Indicates program initialization.
Set to 1 by routine .INIT3 to
show that initialization has
been. performed. Tested by
INIT3 so that i f the module'iis
re-enter ed, INIT3 can perform
re~entryfunctions instead of
initialization functions. See
"Initialization 3 Routine ll in
this appendix.

10

Execution-time STATE bit,
relocated from bit 6 by ILBODBGO
and tested by the debugging
subroutines.

11

set to 1 by the compiler if TEST
option is in effect.

Main or subprogram stlitch. Set
by IUIT2, if this is a main
program (see the subroutine
ILBOSTPO in the publication
referred to above).

12

QUOTE IS APOST bit. set to 1 if
the apostrophe is to be used to
delineate literals and to be
used in the generation of'
figurative constants.

Used for SYMDMP. It is set to
by phase 65 if the symbolic
debug option is in effect for
the program. This bit is
testeO by the object-time COBOL
library debugging control
subroutine ILBODBGO.

13

DBGFLPT bit. set to 1 by phase
65 if, when SYMDMP is
requested, there is a
floating-point item in the
program. Tested by ILBODBGO.
Indicates that, following call
to ILBODBGO, INIT3 contains DC
of 2-byte displacement from
beginning of PGT of virtual for
ILBO'l'EF3.

14

LONGTGT bit.

15

Indicates maximum length for a
variable-length field. Before
the execution of a Q-Routine,
this bit is set to 1 if the VLC
,and SBL for the field are to be
set to their maximum possible
values, rather than a value
depending on the current value
of a data item. The maximum
value is the value of X in the
clause "OCCURS X TIMES
DEPENDING ON ••• ".

16

,SRVBIT bit. Indicates ILBOCOH
subroutine is link edited uith
the object module.

Used for FLOW. It is set to
by
phase 65 if the flow trace
option is in effect for the
program. This bit is tested by
the object-time COBOL library
debuggirig control sUbroutine
ILBODBGO.
,. '
Compile-time STATE bit. It is
set to 1 by phase 65 if the
statement number option, is in
effect for the program. At
execution time, this bit is,
relocated to bit 10 by
ILBODBGO. At execution time,
this bit is set to 1 by
ILBORECO when the MESSAGE
condition being tested is true;
it is also set to 1 by ILBOSTGO
(for the STRING verb) or by
ILBOUSTO (for the UNSTRING

Appendixes

Always set to 1.

. -Licensed Haterial - property of IBM

17

set to 1 if ENDJOB is specified.

18

Indicates that OBJECT-COMPUTER
IBM-370 was specified. Used by
COBOL Library subroutines.

19

Indicates that Q-routines are to
be executed in initialization
mode.

20

Set to 1 if COUNT is specified.

21

set to 1 if the TRACE verb is
specified.

22

Indicates that an invalid SYNADAF
was performed in the ILBOSYNO
COBOL Library subroutine.
Tested by code generated for
Error Declarative.

2q-31

TALLY

DECIMAL-POINT IS COMMA clause
byte. If this clause was
specified, the byte contains a
comma in EBCDIC. If not, it
contains a decimal point.

a fnllword used for source program
references to the special register
TALLY.

SORT SAVE
a fnllword used during the execution
of a SORT/MERGE RETURN statement to
contain the GN for the next sequential
instruction following the RETURN.

SORT FILE SIZE
a fullword for the SORT-FILE-SIZE
special register as used in the source
program.
\

SORT MODE SIZE
a fullword for the SORT-MODE-SIZE
special register as used in the source
program.
PGT-VN TBL
a fullword pointer to that part of the
VN field of the PGT containing VNs for
independent segments.
TGT-VI TBL
a fullword pointer to that part of the
VI field of the TGT containing VNs for
independent segments.
LENGTH OF VN TBL
a halfword containing the length of
that part of the VN field (the length
is the same for both the TGT and PGT)
containing VNs for the independent
segments.
LABEL RET
the LABEL-RET.URN special register for
nonstandard labels. If an error
occurs in such a label, it is the
user's responsibility to place a
nonzero value into this 1-byte cell.

ENTRY-SAVE
a fullword used to save the entry
point of the program during INIT2 and
INIT3 execution.

DDBG R1QSAVE
contents of register 14. Phase 51
generates a call to ILBODBGQ, the Save
register 14 routine of the Debug
control subroutine (ILBODBGO), before
any instruction which passes control
outside the COBOL program. The
address of this instruction is saved
in this cell by ILBODBG4.

SORT CORE SIZE
a fullword for the SORT-CaRE-SIZE
special register as used in the source
program.

COBOL INDICATOR
identifies the object program as
compiled by an OS/VS COBOL or American
National Standard COBOL compiler.

RET CODE
a halfword for the RETURN-CODE special
register, which is used in the source
program to provide a completion code
on a STOP RUN, EXIT PROGRAM, or GOBACK
statement, or to store the return code
from a called program. It is the
user's responsibility to set this
code.

A(INIT 1)
address of IIIT1 used for GOBACK, STOP
RUN, and EX~T PROGRAM instructions,
and for segmentati on coding.

SORT RET
a halfword used to contain the return
code from a SORT/MERGE operation.
WORKING CELLS
variable-length cells used by COBOL
library subroutines called by the
program. The total length of the
field is 30q bytes.

DEBUG TABLE PTR
if the FLOW, STATE, SYMDKP, or TEST
option is specified, this field
contains displacement from the
beginning ofINIT1 to the Debug Table.
SUBCOK PTR
address of the Subroutine
communications area.
SORT-MESSAGE
eight bytes for the SORT-MESSAGE
special register which is used in the
source program to allow the user to
Appendix B:

Object Module

507

Licensed Baterial - Property of IBM

indicate to the Sort/Merge program
where to place the messages it issues.
SYSOUT DDNAME
character which will be concatenated
with "SYSOU" to create DISPLAY and
TRACE EXHIBIT SYSOUT DDname. If field
is zero, "T" is assumed.
COBOL ID
a 2-byte field containing a binary
number number that indicates the type
and version of the compiler. The
number is 0008 (hexadecimali for the
OS/VS COBOL compiler, release 1.

CD FOR INITIAL INPUT
a fullword cell containing the address
of the CD area with INITIAL INPUT
clause.
OVERFLOW
if the TGT is longer than 4096 bytes,
this field contains one fullword cell
pointing to each 4096-byte area after
the first.
The cell is loaded into a
register when a base is required for
the overflow area.
BL
base locators. Each BL cell is a
fullword containing an address in the
data area. There is one BL pointing
to the beginning of the workingStorage section and one for each file
in the File Section. More than one BL
is assigned if an area is larger than
4096 bytes. The BL assignments are
made by phase 22. The BLs for queued
files do not contain initial values
and are changed by the execution of
certain input/output operations.

COMPILED POINTER
an address (INIT1+88) pointing to the
WHEN-COMPILED information.
COUNT TABLE ADDRESS
relative address of the COUNT table
from the beginning of the TGT.
The
COUNT table, which is generated by
phase 60 or phase 64 if COUNT is
specified, is located between the
Q-routines, if any, and the INIT2
routine. The count table is used only
when the program terminates.
DBG R11SAVE
contents of register 11. When
ILBODBG5, the Dynamic dumping routine
of the Debug control subroutine
(ILBODBGO) receives control, it places
the return address to the inline code
of the calling program in register 11.
Therefore, the contents of register 11
must be saved before the call to
ILBODBG5.
COUNT CHAIN ADDRESS
address of the COUNT CHAIN for this
program. The address is initialized
to zero if count is specified; the
address is filled in at execution
time.
PR BL 1 CELL PTR
a fullword cell containing the address
of the first PROCEDURE BLOCK cell in
the PGT.
TA LENGTH
a halfword initialized by phase 6 or
64 to the length of the largest
segment with a nonzero priority.
PCS LIT PTR
a fullword cell containing the address
of the PCS ,(Program Collating
Sequence) alphabet.
DEBUGGING
a fullword cell containing the address
of the beginning of the debugging
cells in the variable portion of this
table.
508

Appendixes

DECBADR
DECB addresses.
There is one fullword
cell pointing to the address of the
DECB for each basic file.
FIB
File Information Block addresses.
There is one full word cell pointing to
the address of the FIB (address of the
FCB during execution) for each VSAM
file.

I

DEBUG TRANSFER
a one byte cell indicating the DEBUG
type for a PN.

I

DEBUG CARD
a three-byte cell containing the card
number.

I

DEBUG BLL
a tvo-byte cell containing the
displacement to the BLL cell.

I
I

DEBUG VLC
a two-byte cell containing the
displacement to the VLC cell.
DEBUG MAX
a two-byte cell containing the maximum
size of a DEBUG-ITEM.
DEBUG PTR
a fullword cell containing a pointer
used by ILBOBUG to reference the debug
subscript table. )
TEMP STORAGE
temporary storage for arithmetic
operations. TS space is allocated in
doublevord blocks by phase 50. See

Licensed Material - Property of IBM

"Register and storage Allocation" in
the chapter "Phase 50."
TEKP STORAGE-2
temporary storage for nonarithmetic
instructions. These cells are
variable in length. An example of the
use of TS-2 may be found under
"Nonarithmetic Conversions" in the
chapter "Phase 51."
TEMP STORAGE-3
temporary storage used to align fields
of data described by the SYNCHRONIZED
option. The field begins on a
doubleword boundary.
TEMP STORAGE-4
temporary storage cells used for the
SEARCH ALL table-handling verb. The
field starts on a doubleword boundary.
BLL
base locators for the Linkage section.
Each BLL cell is a full word containing
the address of an area passed as a
result of an ENTRY statement w a label
record. a totaled area, a SORT
description entry. or a GIVING option
in a USE ••• ERROR statement.

PFHCTL
PERFORM control counters and DEBUG
saved location. Each PFMCTL cell is a
fullword used for a PERFORM n TIMES
statement to count the number of times
the procedure has been performed. The
instructions which use these cells are
generated by phase 51. For DEBUG, a
PFMCTL cell is used to save the
contents of register 14 when the DEBUG
packei is entered. DEBUG packets are
called by BALR 14,15. See "PERFORM
Statement" and "DEBUG Card" in the
chapter "Phase 4."
PFMSAV
PERFORM saved locations. Each is a
fullword used to contain an address.
The statements using these cells are
generated by phase 4.
For PERFORM,
the cell is used to store the address
of the next sequential instruction
after the performed procedure, ~hen
that procedure is. being executed
because of a PERFORM. This is to
enable the procedure to be executed
inline.
VN
variable procedure-names. Each VN
cell is a double word containing the
current address of a branch point
which may change during program
execution because of an ALTER or
PERFORM statement. See "ALTER
Statement" and "PERFORM Statement" in
the chapter "Phase 4."

VLC
variable-length cells. Each VLC is a
half word whose value is set by the
execution of a Q-Routine. It contains
the current length of a variablelength field. There is one VLC for
each OCCURS ••• DEPENDING ON clause and
all items to which it is subordinate.
SBL
secondary base locators. Each SBL
cell is a fullword set by the
execution of a Q-Routine. It contains
the current address of a field which
is variably located because it follows
a variable-length field.

SAVE AREA-2
pointer to the save area provided for
label- and error-processing
declarati ves.
SAVE AREA-3
variable number of fullwords used for
OPEN parameters.
XSASW
1-byte EXHIBIT switches. These are
used as first-time switches for the
coding generated for the EXHIBIT
CHANGED statement. They are also used
in certain types of SORT statements
and ON statements.

INDEX
fullword cells. each containing the
current value of an INDEX-NAME. There
is one IND cell for each INDEX-NAME
defined in an INDEXED BY clause.
SUBADR
subscript addresses. Each SUBADR cell
is a fullword containing the address
for a subscripted reference. See
"Resolving Subscripted and Indexed
References" in the chapter "Phase 50."

XSA
EXHIBIT saved area cells. These are
variable in length and are referred to
in the coding generated for an EXHIBIT
CHANGED statement. There is one XSA
for each operand to be exhibited with
a CHANGED option. These cells are
also used for SORT and RELEASE verbs.

ONCTL
control counters for ON statements.
Each is a fullword initialized to
zero. See "Other Nonarithmetic Verb
Strings" in the chapter "Phase 51"
which discusses the ON statement.

PARAM
parameter area of full words,
containing parameter lists for macro
instruction expansions of certain
Appendix B:

Object Module

509

Licensed saterial - Property of IBM

• If the SYKDMP and FLOW options are
specified:

source statements. The size of the
parameter area equals the largest
number of words required for anyone
expansion.
RPTSAV
six words used to save branch
addresses during the execution of
Report writer routines, if the Report
writer is used.
CHECKPT CTR
fullword cells used to count the
number of file records processed for a
file for which checkpoints are to be
taken.
DEBUG TABLE
this table is used by the flow trace
statement number, and symbolic debug
COBOL library subroutines. It is also
used by the IBM OS COBOL Interactive
Debug Program Product. It is built by
phase 65; the format depends on the
options specified.
• If the FLOW option is specified:
Jltl~

o

1-3

conten!:!!
Number of traces requested.
Unused

• If the STATE option is specified:
1!:l!:~

0-3
4-7
8-11
12-15
16-19

contents
St~of Q-Routines, or if
none, start of INIT2.
Size of Declaratives (not
including Report writer)
Section.
Address of PROCTAB in object
module relative to beginning of
INIT1.
Address of SEGINDX in object
module relative to beginning of
INIT1.
Address of end of SEGINDX in
object module relative to
beginning of INIT1.

• If both the FLOW and STATE options are
specified:

1!ttg
o

1-19

Contents
Number-of traces requested.
The same as shown above for the
ST ATE option.

£Qnten!:§
Number of traces requested
The same as shown above for the
SYMDMP option.

PROGRAM GLOBAL'tABl&-Jf.GT)
The Program Global Table contains data
which procedure instructions reference.
All the fields in the PGT are variable in
length. The data contained in the PGT is
generated by phase 6 or 62. PGT data is
never modified by procedure instructions;
rather, it remains constant throughout
program execution. In the chapter "Phase
6," the sections "Optimizing Storage for
the Program Global Table" and "Allocating
Storage for the Program Global Table"
describe how the PGT is generated.
The fields in the PGT are illustrated in
Figure 78 and described in the text below.

.
i

i

ICOUNT LINKAGE AREA

,II

ITEST LINKAGE AREA
I
I OVERFLOW

I
I
I

I

I
I
I

IDEBUG LINKAGE AREA

I

rl-----------------------------------f
IVIRTUAL
I

IVIRTUAL EBCDIC NAMES

•

IPN
I
r-------,--------------------------~,
IGN
I
'~.--~------~--------------------~I
IDCBADR
I
~,--~.----------------------------I
IVNI
I
•
f
ILITERAL
I

I

I

IDISPLAY LITERAL
I
~.---------------------------------,f
IPROCEDURE BLOCK
I
I

Figure 78.

Fields of the Program Global
Table

• If the SYKDMP or TEST option is
specified:
n!:~

~Qn.ten.ts

0-3

Start of Q-Routines or, if none
start of INIT2.
Hashed compilation indicator
~ee PROGSUM table in
"section 5. Data Areas. lI )

4-5

510

Appendixes

,

DEBUG LINKAGE AREA
12-byte area which contains the
linkage for dynamic dumps. The area
contains the following code:
ST 11,DBG R11SAVE in TGT
L 11,=V(ILBODBG5)

Licensed Material - Property of IBM

BR 11
(2 slack bytes)

,;

loaded are listed; in addition, if
DYNAH is in effect, the EBCDIC names
of all user subprograms that are to be
dynamically called are listed. Each
VIRTUAL EBCDIC NAME cell is a
doubleword containing the name of the
subroutine or subprogram, left
justified and padded with blanks if
.necessary.. If neither DYNAM or
RESIDENT is in effect, this field does
not exist.

,

If the SYMDHP option is not specified,
;this,12-byte area does not exist.
. 'COUNT LINKAGE AREA
a-byte area which contains the linkage
to the COUNT routine. If the COUNT
option is not specified, this a-byte
area does not exist,.
TEST LINKAGE AREA
l6-byte field which contains the
iin.ki;l.ge 'to1;:he ,IBM. ,OS COBOL
.
lI;iJeractive Debug Program Product
(Program No. 5734-CB4) .when TEST wal>'
specified forcomp:Llation. At the'
start of execution. the field contains

PN
source program procedure-names. When
the OPT option is in effect, only
those PNs associated with ALTER and
declaratives references receive PN
cells. Each PM cell is a fullword
containing the address of the first
instruction in a block of coding. The
addresses of the PNs are in the same
order as their definition in the
source program. The program branches
by loading an address from the PGT and
then branching to it.

th~; ~ol1owing:

. LR'
14,0
BeTR. 1.4,0
13CTR ·14,0 .'
MvtO (14) ,X.' 07'
LIt
. 14~0 .
BR~~ .. '.. 14..
.
(2.slack ~ytes)

GN
compiler-generated procedure-names.
When the OPT option is in effect, only
those GNs associated with AT END and
INVALID KEY references receive GN
cells. Each GN is a full word
containing the address of the first
instruction in a block of coding. GNs
are used in the same way as PNs. They
were generated to provide addresses
for. branches implied but not stated in
the source program. They are stored
in the PGT in the order in which they
were generated.

OVERFLOW
if the entire PGT exceeds 4096 bytes
in length, there is one fullword
OVERFt9H cell pointing to each
4096-byte section after .the first.
The cell is loaded ipto a register
when a base is needed to refer to the
secti.on of the PGT.
VIR TUA.L, ,....
.'
each virtual is a fullword containing
the .a.d,ciress of an. external procedure
(the result of an ESD and RLD in the
()bjElctJ!lodule) unless the DYNAH or
RESIDENT option is in effect. If
eithEl:t; option if! in. effect, the
virtuals corresponding to library
s.ubrQuti,nep ar~ wd tten asE.BCDIC
.... ' / OQ. 00 00'

If t11.e DYN~M option is in effect, the
virtuals corresponding to user.
subp:t;ogramsc::ontain :the relative
displacement of the subprogram name
from the beginning oft;he, PGT. I t.. is
required because of a CALL statement
. in. the source program' or a bra'nch, to a
COB,O~i libraryobject.,..:time subr.outine.
Because of phase 6 or 62 optimization,
a given virtual is stored only once no
matter how many times it is used.

,< ...

VIRTUAL. EBCDIC NAMES
",'
.EBCDIC na!DEls of library subroutines
'and u$ersuJ>programs. ..If the DUAl! or
RESIDENT'option is ill effect, the
EBCDIC names of all. library
subroutinestha;t are t~bedynamically

DCBADR
DCB addresses. Each DCBADR cell is a
fullword containing the address of a
data control block in the data area of
the program. There is one DCBADR cell
for each DCB generated by phase 21 •
VNI

variable procedure-name initialization
cells. There is one doubleword VN
cell for each variable procedure-name
in the program. It contains the
initial value of the VN, and is used
to initialize the VN values in the
TGT. VNs are generated by phase 4 to
contain branch addresses which ·vary
because of PERFORM or ALTER
statements. See "PERFOFM Statement"
and "AL.TER statement" in the chapter.
"Phase 4" for a description of the
generated logic.

LITERAL
.
literals referred to by procedure
instructions. The literals are
variable in length. There is no
dUplication in storage. since
Appendix B:

Object Module

511

Licensed Saterial - Property of IBM

duplicate literals were removed by
phase 6 or 62 optimization.
DI SPLAY LITERAL
literals used by calling sequences
rather than instructions. They are
variable in length. Duplication was
eliminated by phase 6 or 62.
PROCEDURE BLOCK
each cell is a full word containing the
address of a Procedure block. The
compiler assigns these cells only when
the OPT option is in effect.

This area of the program contains the
special routines which handle the Report
Writer feature. I.t is discussed in
"Appendix C. Report writer Subprogram."

In this area is located the object code for
the instructions described in the source
program Procedure Division. The area does
not contain any COBOL library subroutines;
these routines, if required for execution,
are added to the load module by the linkage
editor or, if the RESIDENT or DYNA! option
is in effect, these routines are
dynamically loaded at object time. If the
program is segmented, this area contains
the Procedure Division sections for the
root segment. See Iisegmented Object
Kodule" in this chapter.
The object code for this area is
produced by phase 6 or 64, which also
generates code for the Report writer and
Q-Routine areas. Note that phase 6 or 64
does not make any distinction among these
three areas. They occur in the object
module in this order because PO-text was
written in that order: by phase 12 for
Report Writer, by phase 1B for the
Procedure Division, and by phase 22 for
Q-Routines. From phase 3 on, the compiler
did not recognize the end of one area and
the beginning of the next.

Q-Routines are special routines generated
for data items described by the .
OCCURS ••• DEPENDING ON option. The function
of these routines is to update the length
of the variable-length data item when that
512

Appendixes

length changes, and to update the location
of the field which follo"sit. The actual
output of a Q,..Routl.ne isa new vallie in the
appropriate VLC cell' of the TGT and the
corresponding SBL cell (seethe description
of the TGT in this chapter for the meaning
of these cells) •
only· the Q":Routine updates the pointers;
it does .not change the contents of the data
area involved. For this reason, if t.he
OCCURS ••• DEPENDING ON area. is followed by
another field within the same 01..:.1evel
item, aIidthe OCCURS ••• DEP,ENDING ON .area
becomes lonqer, the information immediately
followinq the area before it changed is now
no longer accessible: the pointer to it,
in the SBL, has been moved. This can be
avoided in the source program by moving
data out of the SBL field before any change
in the value of ,the DEPENDING ON object,
and moving it back after the change.
This problem does .not arise·,between one
01-level item and the next, because each 01
field of data.isallot:ted enough space for
the maximum number of occurrences.,

The COUNT table is used by the COBOL
library subroutine .ILBOTC30. It contains
entries for each procedure-name and source
verb. This table. is present. only i f COUNT
was specified. The format of each entry
is:
~

o

s;;ont~

Identification c,ode
s;;ode
00
01.,

02
1

*2-4
*5-6

lIeaning
end of table."
'procedure-id
, verb~id

Length of en,try .•' If byte 0
contains OO,'th±s byte
contains zero;,.,
cad' number.'
Blocknullber
If byte 0 contains 01, these
. ,bytes contain 'zeros~
If byte o contains 02, the
block number, ,of the count
block for.' -executable
verbs; the count block is
00 for non-executable
verbs.
If byte 0 contains 02, the
verb Dumber (PL-code)

or
*7 to n+1 If' byte 0 contains,01, the
. EBCDIC Daile of the
" procedure

Licensed Material - property of IBM

DELETE macro instruction for SOBCOK to
reduce the system responsibility
count. If ILBONTRO has not yet been
loaded, INIT2 loads it and saves the
address in SOBCOK. Then INIT2 obtains
the address of ILBONTRO from SOBeOK,
sets the SCLDLST flag in SOBCOM, and
passes control to ILBONTRO to load all
necessary COBOL library subroutines.

The initialization 2 (INIT2) routine is
entered from INIT1 each time the program is
executed. It is generated by phase 6 or
64. The routine performs the following
functions:
1~

2.

3.

4.

stores the address of the save area
(located at the beginning of the TGT)
for this program, which is contained
in register 13, into the save area of
the calling program or the job
sched'uler.
stores the location of the save area
of the calling. program or job
scheduler into this program's save
area, which is located at the
beginning of the TGT.
stores the address of the first
executable instruction in the ENTRY
SAVE cell of the TGT in case register
14 is needed. INIT2 checks the SWITCH
field of the TGT to determine if the
program has been entered before. If
so, it checks the SWITCH field to
determine if this program has called
another program and not yet received
control back via a GOBACK or EXIT
PROGRA! statement. This condition is
known as a recursive call and causes
the job step to be terminated. If
INIT2 finds a recursive call, it
passes control to ILBOSRV1 to issue an
error message and terminate
processing.
If neither the RESIDENT nor the DYNA!
option is in effect, branches and
links to the COBOL library subroutine
ILBOSRVO (see the publication ~
QUfi.£Q!!QL Sub!:Q!!iin.!LLi!!!:~f.!:ggnl!!
~ to dete.rmine whether this is a
main program or a subprogram in the
run unit. sets a bit in the SWITCH
field of the TGT according to the
information returned. If the DYNAK or
RESIDENT option is in effect, INIT2
loads the COBOL library Subroutine
communications area (SOBCOK) and
stores the address in the TGT. It
tests the SCKAIN flag in SOBCOK to
determine if it is the main program.
If it is a main program, INIT2 loads
the COBOL library ENTER subroutine,
ILBONTRO, and stores the address in
SUBCOK. Otherwise, INIT2 issues a

*This field is not present if byte 0
contains 00.

The initialization 3 (INIT3) routine is
executed whenever the program is entered.
It is generated by phase 6 or 64. The
functions of the routine are determined by
testing a bit in the SWITCH field of the
TGT to determine whether this is the first
time the module has been entered. If it
is, the INIT3 routine:
1.

Initializes the VN cells in the TGT
from the values contained in the VN
cells of the PGT.

2.

Relocates each address. constant in the
TGT and PGT to its absolute location.
(Ontil this routine is ~xecuted, the
addresses are relative.to the
beginning of the program.) This
relocation is accomplished by adding
the absolute location of the beginning
of the program (the address of INIT1,
which is in register 11) to the
relative addresses.

3.

Loads and BALRs to the addresses of
Q-Routines to initialize the VLC and
SBL cells in the TGT for
OCCURS ••• DEPENDING ON fields that
depend on an item in working-storage.

4.

Loads permanent base. ~egisters from BL
cells in the TGT. or~f the OPT option
is in effect, loads permanent base
registers from BL, BtL, and OVERFLOW
cells in the TGT and PGT.
(The
meaning of permanent 'base registers is
explained in the chapter "Phase 6"
under "Execution-Time, Base Register
Assignment. II)

5.

Branches to the first executable
instruction in the object program (at
location START, whose address is in
register 14), or to the entry point in
the coding generated for an ENTRY
statement, which is the instruction
following the BALR in the ENTRY
coding. If the FLOW, STATE, SYMDMP,
or COUNT option is in effect, the
COBOL library debugging subroutine,
ILBODBGO, is loaded and branched to
before the branch to the instruction.
If TEST was specified at compile time,
Appendix B:

Object Module

513

Licensed Material - Property of IBM

INIT3 determines if the TEST command
has been issued for execution time.
If it has, INIT3 branches to the IBM
OS COBOL Interactive Debug Program
Product (Program No. 5734-CB4). If,
additionally, there is ,a
floating-point item in the program,
the branch to ILBODBGO is followed by
a DC of the 2-byte displacement from
the beginning of the PGT where the
virtual for the ILBOTEF3 subroutine is
located.
If the testing of the SWITCH field
reveals that the module was entered
previously, INIT3 resets the program to its
previous state by loading registers from
the save area in INIT1. Then it branches
as described in item 5, above.

the statement nUl!lberoption. It contains
an entry for each fragment of the program.
The format of each entry is:
~1:te

o

1-3
4-6

7-9

£.Q.!!~!li§.

Zero.
Fragment address.
Relative address of first PROCTAB
entry for this fragment.
Relative address of last PROCTAB
entry for this fragment.

SEGMENTED OBJECT MODULE (TRANSIENT AREA)
In a segmented program, the segment
initialization subroutine ILBOGDO is always
among the routines present. This routine
is described in the publication ~H-Q~L!~
COBOL Subroutine Libra£Y-R~Qg~m LQgi£.

The PROCTAB table is used by the
object-time COBOL library subroutine for.
the statement number option. It contains
entries for all the card numbers and verb
numbers in the COBOL program. The format
of each entry is:
~ytg

0-2

3-4

£.Q.!!teni§.

Card number and verb number. The
verb number is contained in the
low-order 4 bits of byte 2.
Displacement of the verb within
the fragment.

The SEGINDX table is used by the
object-time COBO~ library subroutine for

514

Appendixes

If the user did not specify any
Procedure Division sections with a priority
lower than SEGMENT-LIMIT (or 49 by
default), the procedure are~ of the root
segment contains code generated by the
compiler.
There are two types of nonroot segments:
fixed segments and independent segments.
Fixed segments are always made available in
the state in which correspond to the
LANGLVL(n) option while independent
segments have any GO TO statements reset to
their initial values, if they have been
modified by ALTER statements. The
subroutine ILBOSGMO performs this resetting
when necessary. It reinitializes those VN
cells in the TGT which apply to this
segment from the corresponding VN cells in
the PGT.

Licensed Material - Property of IB!!

This chapter describes the Report iriter
Subprogram (RiS), its structure, elements,
and response to verbs in the Procedure
Division. The RiS.is generated by phase 12
from statements in the Report section of
the Data Division. The operation of phase
12 and associated activities in other
phases are described in the chapter "Phase
12".
If·the OPT option is specified, the code
generated for the Report iriter Subprogram
is optimized for procedure-name
addressabilityand register usage by phases
62, 63, and 64 in the same manner as is the
code generated for the other parts of the
Procedure Division. The operation of
phases 62. 63, and 64 is described in the
chapters "Phase 62," "Phase 63, II and "Phase
64."
STRUCTURE OF tHE REPORT

iR~~UBPRQ§B!!

Ji!ll
Each RiS is a complete subprogram which,
when executed, produces a report according
to the specifications coded in one RD
statement and its associated group and
elementary items. The RiS has a fixed
logical structure; that is, it contains
fixed, parametric, and group routines in a
prescrib~d order and quantity.
In certain
cases. du.myroutine's are inserted to
maintain the structure. The RiS produced
contains all linkages and exits needed.
Pigure 79 shows the logic of a Report
iriter Subproqram. The codinq in the boxes
is intended to be indicative rather than
comprehensive.

ILIAEI~S

QF A REPORT

FIXED ROUTINES
Fixed routines never vary in logical
content. Phase 12 generates one and only
one copy of each of them after all of the
statements under an RD have been scanned.
The three fixed routines are 1ST-ROUT,
LST-ROUT, and WRT-ROUT.

1ST-ROUT,Routine
The 1ST-ROUT routine causes the first
headings to be printed by calling on the
RPT-ROUT and theCHF-ROUT routines.
Routine 1ST-ROUT is executed when either
GENERATE, report-name or the f'irst
occurrence of GENERATE detail-name is
encountered.

The LST-ROUT routine, terminates the report.
It causes the highest level control break
(by setting CTL.LVL to 1) and then causes
the final footings to be printed by callinq
routines CFF-ROUT and RPF-ROUT. Routine
LST-ROOT transfers control to the LAST-ROLL
routine~ which provides return linkage to
the main program.
(LAST7ROLL is the name
of a STORE instruction located just before
the ROL-ROUT routine. It is not itself an
RiS routine.) control then falls through
to the ROL-ROUT routine.

iRI~1-~ROGRA!

.1IYl.
An RWS includes data items and three types
of routines: fixed, parametric, and qroup.
The data items are assiqned special
data-names; these can be either COBOL
words. which may be used in the source
program. or nonstandard words, which may
not. These routines and data-names are
discussed later. together with the special
internal Report writer verbs qenerated by
the compiler.

The WRT-ROUT routine writes a record from
the output work area, RPT.RCD. It then
moves blanks to CTL.CHR and to RPT.LIN.
This routine contains two sets of coding if
the program specifies two output files.
The prograamer may suppress printing of a
line by coding "!!OVE 1 TO PRINT-SWITCH".

Appendix C:

Report Writer Subprogram

515

... Licensed Material - Property of IBM
(INITIATE report-name)
REPORT-CALL

INT-ROUT-----------------1~-0

(GENERATE report-name)
REPORT-CALL I S T - R O U T ' - - - - - - - - - - - - - - - I - - - . (
REPORT-CALL CT8-ROUT'----------------iI--~E__c
REPORT-CALL USM-ROUT (for each detail in report, in order of sequence)I_+---I'"

(GENERATE detail-name)

-------------+----0

REPORT-CALL DET-ROUT (for this detail),,)
(TERMINATE report-name)

I

REPORT-CALL LST-ROUT

I

9

1ST-ROUT

~

I

cb

CFF-ROUT
REPORT-SAVE-3
02-coding
REPORT-RETURN-3

\ RPF-ROUT
02-coding
REPORT-CALL WRT-ROUT
REPORT-RETURN::'6

REPORT-SAVE-3
02-coding
GO TO CTH-ROUT (highest
level) or (if no controls exist)
REPORT -RETURN-3

t

r

I
pqF~ROUT
REPORl'':';SAVE:..t
02-codlng
IF TER.COD =2 REPORTRETURN-4.
REPORT-CALL WRT-ROUT
GO TO PG H-ROUT-,

5A

PGH-ROUT
02~coding

IF LlN,S!,,v =0, GO TO
(GNNN) ELSE MOVE
LlN.SAV TO A8S.LIN
* REPORT -CALL ALS-ROUT
REPORT-CALL WRT-ROUT(GNNN)
.
MOVE 0 TO LIN.SAV,
FRS. GRP, GRP. IND
REPORT-RETURN-4

,

RPH-ROUT
REPORT-SAVE-4
02-coding
GO TO PGH-ROUT
* Genera ted onl y. if there is a PAGE clause.

Pigure 79 (Part 1. .of 4).

Appendixes

I

l

CHF-ROUT

516

(LAST-ROLL)
REPORT-SAVE-2, then
fall through to
ROL-ROUT routine

REPORT-SAVE-6
IF FRS.GEN =0
REPORT-RETURN-6.
MOVE 1 to cn. LVL, TER.COD
REPORT-.CALL (LAST-ROLL) .
REPORT-CALL CFF-ROUT
MOVE 2 TO TER.COD
REPORT-CALL PGF-ROUT
GO TO RPF-ROUT

REPORT-SAVE-2
IF FRS.GEN NOT =0
REPORT-RETURN-2.
REPORT-CALL WRT-ROUT
MOVE 1 TO FRS. GEN
*MOVE 1 TO PAGE-COUNTER
REPORT-cALL RPH-ROUT
REPORT-CALL CHF-ROUT- ~
REPORT-RETURN-2

,

~

LST-ROUT

58

Logic of the

..
Gen.~ated

I

~
5A

B.eport Writer Sabprograa

58

Licensed Material -' property of IB!

DEl-ROUT (for this detail group)
REPORT-SAVE-I
REPORT-CALL 1ST-ROUT - ___I-t-t.
REPORT-CALL CTI~-ROUT---1f-"';:::"------------,
REPORT-CALL USM-ROUT--+---,
02-coding
REPORT-RETURN-I
CTB-ROUT
REPORT-SAVE-2
MOVEOTO
CTL.LVL. IF FRS .. GEN NOT = 2
MOVE 2 TO FRS.GEN GO TO RST-ROUT
(highest level)

3

USM-ROUT (for this DEl-ROUT)
REPORT-SAVE-2' .i.:/' ....
for each statement with UPON
clouse whose object is this
DE and each statement with
SOURCE-SUM correlation:
ADD operand TO sum bucket.

ADD I TO cn. LVL
IF source-control"
NOT -nnnn"*
MOVE 0 TO GRP .IND

one set
per'
control
level

=

GOTORO~ROUT---------+-~

(after lowest level)
REPORT-RETURN-2

(may be mare than one operand
or sum bucket)
REPORT-RETURN-2
4

*Source-controlis the nq(ii'e
specified intheC9NTRQL ,
clause of the source program.

ROL-ROUT
(lowest leveQ

**Control-fleld save area name.
one set

ADD (this level bucket)
TO (higher level bucket)
control' IF (this level-number) =
" , Ijlvel'
ClL. LVL
RPT-CALL SAV-ROUT--+-.-f
GO TO (lowest level)
CTF-ROUT---------+--t
" (next-higher level)
per'

'REPORT'"RETURN-2

figure 79. (Part2'of;,

4)~"

Logic: of the Generated Report Writer Subprogram

Appendix

c:

Report Writer subprogram

517

Licensed Material - property of IBM

~

RST-ROUT

CTF-ROUT (lowest level)

(lowest leve I)
IF FRS.GEN=l RPT-RETURN-3.
MOVE 0 TO sum bucket.
MOVE source-control**TO
-nnnn.**·
IF this level number=Cll. LVL
REPORT-RETURN-2.
(next higher level)

02-coding
IF (this level number)=CTL. LVL
RPT-CALL RET-ROUT
GO TO (this level) CTH-ROUT.
GO TO {next higher level} CTF-ROUT

12

CTF-ROUT (highest level)
REPORT-RETURN-2
RPT-CALL RET-ROUT
IF TER.COD=O GO TO
CTH (highest level).
GO TO RST-ROUT.

12

~

8

WRT-ROUT
If 2 files,
code
repeated
5B J--..4---.(GNAA)
If 2 files,
code
repeated

RPT-SAVE-5
WRITE FILE-NAME RECORD-NAME
(-nnnn) FROM RPT. RCD AFTER
ADVANCING LlN.NUM LINES
GO TO (GNBB).
RPT-SAVE-5
WRITE FILE-NAME RECORD-NAME
(-nnnn) FROM RPT. RCD AFTER
ADVANCING COl LINES.

CTH-ROUT (highest level)

.

~

JJ

\CTH-ROUT (control break level)
02-coding
GO TO (next lower level) CTH-ROU

MOVE 0 TO LINE-COUNTER
ADD I TO PAGE-COUNTER. *
(GNBB) . MOVE SPACES TO RPT. LIN
MOVE 0 TO LIN. NUM
RPT- RETURN-5

CTH-ROUT (next lower level)

CTH-ROUT (lowest level)
GO TO RST-ROUT.

Note: All calls of the WRT-ROUT routine are
not shown. Other routines call it as
often as necessary to print a II output
lines to be produced.
*Generated only if there is a PAGE clause.
**Source-control is the name specified in the
CONTROL clause of the source program.
*** Control-field save area name.

Figure 79 (Part 3 of 4).

518

Appendixes

Logie of the Generated Report.Writer Subprogram

-

8

Licensed Material - property of IBM

~

11

II

ALS-ROUT*

SAY-ROUT

REPORT-SAVE-5
IF LINE-COUNTER =0 MOVE 1 TO
. LlNE-COUNTE.R.
MOVE 1 TO FRS.GRP
SUBTRACT LINE-COUNTER FROM
ABS. LIN GIVING LIN. NUM
MOVE ABS. LIN TO LINE-COUNTER.
REPORT-RETURN-5

One for
each
control

REPORT-SAVE-5
MOVE source-control·· (CTB
value) TO -nnnn**·
MOVE -nnnn+l
(value previous to CTB)
TO source-contro I.

.

REPO RT- RETURN-5

12

RLS-ROUi*
REPORT -SAVE-5 ..
IF LINE-COUNTER =0 MOVE 1 TO
LINE-COUNTER.
IF LINE-COUNTER LESS THAN
(integer for FIRST DETAIL)
SUBTRACT LINE-COUNTER FROM
(FIRST DETAIL MINUS 1) GIVI"IG L1N.NUM
MOVE (FIRST DETAIL MINUS 1)
TO LINE-COUNTER.
IF FRS.GRP =0 ADD 1 TO
LINE-COUNTER ADD I TO
LlN.NUM.
REPORT-RETURN-5

RET-ROUT
One for
each
control

REPORT-SAVE-5
MOVE -nnnn**· TO
source-control.

*.

REPO RT-RETURN-5

9

INT-ROUT

Note: Not all calls to ALS-ROUT and
RtS-"ROUT are shown since each routine
will be called as many times as necessary
to determine line spacing.

REPORT-SAVE-2
MOVE 0 TO CTL. LVL, PRINT SWITCH,
GRP.IND, FRS.GEN, TER.COD,
FRS.GRP, LIN. NUM, ABS.LlN,
LIN. SAV, & all sum counters
·MOVE 0 TO LINE-COUNTER
·MOVE 1 TO PAGE-COUNTER
REPORT-RETURN-2

·Generated only if there is 0 PAGE clause.
··Source-control is the name specified in the
CONTROL clause of the source program.
·"Control-field save area name.

Figure 79 (part I! of .. 4).

Logic of the Generated Report writer subprogram

Appendix C:

Report Writer subprogram

519

Licensed Material - property. of IBM

PARAMETRIC ROUTINES
Parametric routines generally are fixed in
structure but vary according to the data
obtained from the source (level-Ol through
level-49) statements. They may. also
include statements or blocks of statements
that are repeated as needed. 'Except as
noted under USH-ROUT, RLS-ROUT, and
ALS-ROUT, the RWS contains one and only one
copy of each parametric routine. The nine
parametric routines are discussed in the
following paragraphs.

The USH~ROUT routine adds the operands of
all SUH clauses that either have UPON (this
detail-name) or that appear as SOURCE items
in a TYPE IS DETAIL group to as many sum
buckets as required. A sum bucket is a
work area that may be given a data-name by
the programmer or else is assigned an
S-point name by the compiler.
(S-point
names are described under "Nonstandard
Data-names" in this appendix.) Phase 12
generates one USH-ROUT routine for each
DET-ROUT ~outine. If there is no PET-ROUT
routine in an RWS, no USH-ROUT routine is
generated.

The CTB-ROUT routine acts as a control
break supervisor. It tests for a change in
value of a control field, always beginning
with the highest level and continuing until
either the lowest level is tested or a
control break occurs. A break causes
control to be passed to the ROL-ROUT
routine, leaving the current control level
number in location CTL.LVL. The CTB-ROUT
routine contains one block of coding for
each control level.

The RST-ROUT routine moves,the current
contents of sum buckets to control-field
save areas and sets the sum buckets to zero
for all control levels just processed by
the ROL-ROUT routine. The RST-ROUT routine
contains one block of coding for each
'
control level. When the level number of
the block being executed is equal to the
value in CTL.LVL, control is returned to
the routine that 'called the CTB-ROUT
routine.

The SAY-ROUT routine moves the current
control name contents to a save area and
the previous cont'rol name values to the
current control names.

The RET-ROUT routine resets the control
names to their current values.
!Qte: Routines SAY-ROUT and RET-ROUT are
used only when processing TYPE IS CONTROt
FOOTING or TYPE IS CONTROL FOOTING FINAL
report groups. Therefore, any source
control name areas contain the previous
val~e (that is, the value prior to the
control break) •

ROL-ROUT Routine

The INT-ROUT routine sets initial values of
all switches, counters, and SUft-names
(data-names or S-point names). Routine'
INT-ROUT is called when an initiate
statement is encountered.

The ROL-ROUT routine adds SUH-clause
operands originally defined in another
control group. It starts with the lowest
level and continues until the level number
of the current block is equal to the value
found in CTL.LVL. At this point, control
is transferred to the lowest level CTF-ROUT
routine. Routine ROL-ROUT contains one
block of coding for each control level.

The ALS-ROUT routine determines the line
spacing for absolute lines. The ALS-ROUT
routine is generated only if the RDentry
contains a PAGE LIMIT clause.

----------~----

520

Appendixes

Licensed Material - property of IBM

there is neither an actual nor a dummy
CTR-ROUT routine generated.
The RLS-ROUT routine determines the line
. spacing for relative lines.
Routine
RLS-ROUT is generated only if the RD entry
contains a PAGE LIMIT clause.

GROUP ROUTINES
Phase 12 generates one group routine for
each level-01 record description
encountered.
The group routine selected is
determined by the TYPE clause of the
level-01 statement. The coding within the
routine varies according to the level-01
through level-49 statements associated with
it.
A level-01 elementary item contains
all necessary information and, hence,
results in a complete routine.
If any of the group routines, except as
discussed under DET-ROUT, CTH-ROUT, and
CTF-ROUT routines, is not generated because
there is no corresponding level-01
statement, phase 12 supplies a dummy
routine to maintain the fixed logical
structure of the RiS. The nine group
routines are discussed in the following
paragraphs.

RPR-ROUT

The CTF-ROUT routine produces the control
footings.
There is one CTF-ROUT routine
for each control (except FINAL) in the
source program. It results from a TYPE IS
CONTROL FOOTING group.
If there is no such
group, a dummy CTF-ROUT routine is
generated for each control below the
highest (FINAL) level. If, however, there
are no controls (again, except FINAL) ,
there is neither an actual nor a dummy
CTF-ROUT routine generated.

The CHF-ROUT routine produces the heading
for the highest (FINAL) level control.
There is one CRF-ROUT routine in an RiS.
It results from a TYPE IS CONTROL HEADING
FINAL group.
If there is no such group
defined, or if there is no CONTROL clause
in the program, a dummy CRF-ROUT routine is
genera ted.

Rout!~

The RPT-ROUT routine produces the report
heading.
There is one RPH-ROUT routine in
an RiS; it results from a TYPE IS REPORT
HEADING group.

The CFF-ROUT routine produces the footing
for the highest (FINAL) level control.
There is one CFF-ROUT routine in an RWS.
It results from a TYPE IS CONTROL FOOTING
FINAL group. If there is no such group
defined or if there is no CONTROL clause in
the program, a dummy CFF-ROUT routine is
generated.

The RPF-ROUT routine produces the report
foot~ng.
There is one RPF-ROUT routine in
an RRS; it results from a TYPE IS REPORT
FOOTING group.
The PGR-ROUT routine produces the page
headings. There is one PGH-ROUT routine in
an RiS; it results from a TYPE IS PAGE
HEADING group.
The CTH-ROUT routine produces the control
headings. There is one CTH-ROUT routine
for each control (except FINAL) in the
source program. It results from a TYPE IS
CONTROL HEADING group.
If there is no such
group, a dummy CTH-ROUT routine is
generated for each control below the
highest (FINAL) level. If, however, there
are no controls (again, except FINAL),

PGF-ROUT Routine
The PGF-ROUT routine produces the page
footings.
There is one PGF-ROUT routine in
an RiS; it results from a TYPE IS PAGE
FOOTING group.
Appendix C:

Report Writer Subprogram

521

.Licensed !aterial - Property of IBM

DET-ROUT

R~~

The DET-BOUT routine produces a detail line
(or group of lines) of the report. There
is one DET-BOUT routine for each TYPE IS
DETAIL group. If there is no such group in
the source program, there is neither an
actual nor a dummy DET-ROUT routine
generated.

DATA-NUES
Report Writer data-names are generated to
identify counters, switches, and control
fields. There are two types of data-names
used in an RiS, COBOL word data-names and
nonstandard ·data-names.

COBOL Word Data-names
The COBOL word data-names follow the rules
for coding COBOL names and are accessible
to the source programmer. They are
PAGE-COUNTER, LINE-COUNTER, and
PRINT-SWITCH.
PAGl!-COUN~ER:
A counter. generated only if
there is a PAGE LIMIT clause in the RD
entry. There can be only one PAGE-COUNTER
in .an RiS. If present, it is initialized
to 1 by the IUT-ROUT routine and used by
the WET-ROUT routine.

A counter generated only if
there is a PAGE LIMIT clause in the RD
entry. There can be only one LINE-COUNTER
in an RiS. If present, it is initialized
to zero by the INT-ROUT routine and reset
to zero by the WRT-ROUT routine for each
new pa'4.e.

~!NE=&QY~IR:

"-.nnnn" (for example;E •. 0001) and'
control-filed save area names have no limit
and are uniquely numbered; the other nine
appear once per report. The nonstandard
data-names are:
CT~~:
A counter used by the CTB-ROOT,
ROL-ROUT, CTF-ROOT, and RST-ROUT routi.nes
to coordinate control break activities. It
is initialized to 0 by theIIfT-·ROUT routine
and set to 1 by the LST-ROUT routine.

FRS.GE~:
A l-byte switch used by' the
1ST-ROUT and CTB-ROUTroutines to ensure
that routine 1ST-ROUT is executed once
only. After the 1ST-ROUT routine is
finished_ FRS.GEN has a value of 1; after
routine CTB-ROUTis executed, the value is
2. FRS.GEN is also tested by routine
LST-ROUT to determine whether a TERMINATE
vas coded eithout an earlier GENERATE.

GRP. IN)!: A Horlc area consisting of 1-byte
switches. There is one sHitch'for each
GROUP INDICATE clause in a TYPE IS DETAIL
group. The switches are turned on by the
CTB-ROUT routine and individually tested by
DET-ROUT routines after control or page
break activities so that items specified in
a GROUP INDICATE clause Ifill. be moved to
the output line worle area. The sWi tche.s
may be treated as a group or individually,
as follovs:
e

til

GRP.IND: Group name (level-01) for a
set of GP.nnnn names. It is set to 0
after a page or control break by the
PGH-ROUT or the CTB-ROUT routine.
GP.nnnn: Elementary names· (level-02)
following the GRP. IND.· They are testEld
and, if zero. set to.1 by the DET-ROUT
routine for a specific. TYPE IS DETAIL
group. Each GP.nnnn represents one
'I-byte switch.

nL.COD: A 1-byte sHitch.tes.ted by the
PGF-ROUT routine to pr.event. printing of an
extra page heading, and by·the .CTF-ROUT·
routine (highest level) to determine if··.·
control headings should be produced. It is
initialized to 0 by the INT-ROUT routine
and set to 1 by the LST-ROOT routine.
i

UllT-SWITQi: A1-byte switch generated by
phase 12 for any program that contains a
Report Section. (It may then be used by
any.RWSgenerated for that program.) It is
set to Oby the INT-ROUT routine,
indicating that the current line is to be
printed. The source programmer can use
PRINT-SWITCH to suppress printing of a
report group by coding" MOVE 1 TO
PRINT-SWITCH" •

The nonstandard data-names contain the
special character "." or begin with a
hyphen; they cannot, therefore, be used by
the programmer. Da.ta-names in the form,
~22

Appendixes

RPT.RCD: The (fork area for the' record
contaIning the output print line. ,It is
133 bytes long and consists of either two
or three parts .(CODE-Cellis optiona:/.l in
the following order: CODE~Cel~i a1-byte
cell used to hold the code specified in the
CODE clause of the RD statement and defined
in the SPECIAL-NAMES paragraph;. C;TL.CHR, 'a
1-byte cell used to hold the carriage
control character; and R?T. LIN I i which.
contains the .actual output print ·line.
Note that, if there iSi.no·CODE clause,there
viII be no CODE~Cell and ·'RPT.;'LIN. will be

Licensed Material - Property of IBM

132 bytes. The equivalent COBOL coding for
the RPT.RCD group would be:
01

RPT. RCD.
02 FILLER PICTURE X VALUE code.
02 CTL.CHR PICTURE X VALUE SPACE.
02 RPT.LIN PICTURE X(131) VALUE SPACE.

ABS.LIN: A 2-byte counter used by the
ALS-ROUT routine ·for absolute line spacing.
It is initialized to 0 by the INT-ROUT
routine and set to the appropriate value as
report lines are produced. It is set,
therefore, by all group routines generated
as a result of source statements, but not
by dummy group routines.
A 2-byte save area. It contains
either zero or an absolute line to be
skipped to after a page heading is
produced. If a Control Footing, Control
Heading, or Detail report group contains a
NEXT GROUP IS integer clause and if, after
the presentation of that report group, the
value of integer is less than or equal to
LINE-COUNTER, then the integer is saved in
LIN.SAV and the report group will space up
to and including FOOTING.
~~SAV:

tI!~BQ~:
A work area used in the WRT-ROUT
routine in conjunction with the WRITE AFTER
ADVANCING ••• LINES clause. LIN.NUM can be
set by any group routine or by either the
AtS-ROUT or the RLS-ROUT routine. Routine
WRT-ROUT fills in LIN.NUM with zeros before
exiting.

FRS.GRP: A switch set to 0 after the
PGH-ROUT routine is executed.· It is tested
and set to 1 by a CTH-ROUT, CTF-ROUT, or
DET-ROUT routine. If one of these groups
is to be printed and if its first line is
relative (that is, LINE PLUS integer), and
if FRS.GRP is 0, the first relative line
will be printed on either FIRST DETAIL or
(LIN.SAV + 1).
£Ql!1~k.D:elL~Y!L!~1!!!Re:

Data -names

in the form "-nnnn" are names of
control-field save areas.
(There are two
save areas per control level.)

A "-nnnn" name is also generated for any
FD that contains a REPORT clause. The size
of the level-Ol item is determined from the
RECORD CONTAINS clause or is 133 characters
by default.

least one relative LINE clause, or both •..
Using the N-point counter, the initial
coding for a report group determines
whether there are enough lines left on a
page to print the entire group.
§=EQin~_R2~2=n2m~e:

Data-names in the form
"S.nnnn" are used for accumulators (sum
buckets) for Control Footing record
descriptions that have a SUM clause but no
data-name specified. They are generated so
that coding of MOVE sum bucket TO E.nnnn
can be produced. Attributes of the SUM
clause are picked up in the normal manner
except for the PICTURE which is picked up
from the corresponding E.nnnn name
generated for the sum bucket. If the
statement has a data-name, S.nnnn is not
generated. However, its PICTURE is picked
up in the same manner as an S.nnnn name.
SPECIAL REPORT WRITER VERBS
Phase 12 generates five special verbs for
use in the RWS: REPORT-CALL, REPORT-SAVE,
REPORT-RETURN, REPORT-ORIGIN, and
REPORT-REORIGIN. The first three of these
are used for linkage between the main
program and the RWS -- for example, as a
result of a GENERATE statement -- and
between routines of the RWS itself. Their
equivalent assembler language coding is
shown below. The remaining two verbs are
used to process USE BEFORE REPORTING
sentences. In the following descriptions,
the PO-text and Pl-text verb codes are
shown in parentheses after each verb.

~PORT=£!1&

(4F):

The equivalent coding

is:
L
15,A(Called routine)
BALR 1,15
REPORT-SAVE-O through~EPOR!=§!VE-n
(50-55): The equivalent coding is:
ST

1,Save-cell-n

!!~P°ltl=.Rll!!!U!=.L1h£Q1!g:h~~gORT-REX.URN-!!

(56-5B):
L
BCR

The equivalent coding is:

1,Save-cell-n
15,1

Data-names: Data-names in the form
"E.nnnn" are generated from COLUMN clauses
in elementary record descriptions. They
use the special Ril-redefines of "RPT .LIN +
COLUMN - (integer-l) ".

(5C): The execution of this
verb causes the address counter to be set
to the address of the Ri-NOP statement at
the start of the specified routine. A link
to the USE routine is inserted at this
point.

~£eint Data-nam~:
Data-names in the form
liN. nnnn" are counters used to hold the
number of lines· in a report group that
contains a relative NEXT GROUP clause, at

REPORT-REO~ (5D):
The execution of
this verb causes the address counter to be
reset to the address it contained before
the REPORT-ORIGIN was encountered.

~PORT=2RIGI!

~£eint

Appendix C:

Report ir1ter subprogram

523

Licensed Material - Property of IBM

Once the Report Writer subprogram has been
generated, it is called at particular entry
points and executed as a result of
INITIATE, GENERATE, and TERMINATE
statements in the Procedure Division ot the
source program. These responses are as
follows:
12-1NITIATE: As a result of
INITIATE, a branch is made to the INT-ROUT
routine of the particular report. Routine
INT-ROUT is executed and control returns to
the next instruction after the INITIATE.

B~§Eonse

t2-~NERAT~:
The response to a
GENERATE statement depends on whether the
statement is the first such GENERATE or a
subsequent one. Figures 80 and 81
illustrate the two cases. The logic flow
shown is that for GENERATE detail-name
statements. The logic for GENERATE
report-name statements is the same except
that all DET-ROUT routines are skipped and
all USM-ROUT routines, in the order of
their DET-ROUT routines, are executed.

To find cell CTL.LVL, turn to the memory
map and find the BL ceils in the TGT. BL1
is located at the address listed there and,
8 bytes farther, BL3. To t·he contents of
BL3 add the displacement (DISPL), 88. The
result is the address of CTL.LVL.
Note .that if there are registers
available for eachBL needed in the
program, one register is assigned
permanently to BL3 and listed in the
REGISTER ASSIGNMENT column of the memory
map. In that case, add the DISPL to the
contents of that register.

R~2Eonse

Response to ~MINAT!: The response to a
TERMINATE statement is illustrated in
Figure 82.

LOCATING DATA ITEMS IN THE OBJECT MODULE
To find references to a data item in the
object module, note its internal name in
the glossary and refer to the
cross-reference dictionary. A portion of
the cross-reference dictionary would look
like this (again using CTL. LVL as the
example):
DATA NAMES

lINDING THE ELEME~TS-2I-~PQRT iRITER
mtuROGRll-1nm..
It may become necessary to locate, in the
object module or in a storage dump, the
data items and routines that make up the
RiS. This can best be done using a listing
that includes a glossary and a
cross-reference dictionary. The foll.owing
discussion assumes the use of the DMAP and
SXREF or XREF options.

LOCATING DATA ITEMS IN A STORAGE DUMP
The glossary lists the cells, switches, and
work areas mentioned under "Data-names" in
this appendix. A portion of the four
pertinent columns of a typical glossary
look, for example, like this:
SOURCE NAME

CTL.LVL·

524

Appendixes

BASE

BL=3

DISPL

INTRNL NAME

088

.
DNM=2-426

CTL.LVL

DEFN

REFERENCE

0052

00100 00118

To the left of the object module appear
the numbers of the source statements that
generate each section of code; to the
right, in the remarks co~.umn, are the
internal data-names. Among the
instructions generated.for.sou;t"ce
statements 001 00 and 00 n8ldll be found
references to item "DRM~2-426", the
internal name for CTL. Lft. ..

LOCATING ROUTINES IN A STORAGE DUMP
To locate RiS routines in storage, identify
the desired routine in the object module
(discussed below), add the relative address
to the load address (shown in the Linkage
Editor map), and proceed as in finding any
other instruction or rC)litine.

Licensed Material - property of IBM

1ST-ROUT
RPHROUT

1

MAIN PROGRAM

I----

PGHROUT

I

(IN-LINE CODE)

2
GENERATE
detail-name
Next sequential
instNctien

- -

DET-ROUT

1

CHFROUT

2

cnlROUT
(Majer)

1

through

CTHROUT
(Minor)

3

I

4

CTBROUT
(NOP)

---

Pigure 80.

RSTROUT

USM~ROUT

First GENERATE statement Logic Plow

Appendix C:

Report writer Subprogram

525

Licensed Baterial - Property of IBM

rl

SAV-·
ROUT
L..-.r---I

rcra:ROUT

Control
break
poth
~L....-

ROL- _
ROUT

-

CTFROUT

f--e

(Minor)

I--

CTF-ROUT
{lntermedlote-I)

~

CTF-ROUT
(Intermediate-n}

CTF-

t-.-

ROUT

(Major)

I-

""""r-

L..--

Noncontrol
break
poth

I I I I
RETROUT

RETROUT

~

r

RETROUT

I

r

RETROUT

MAIN PROGRAM
(IN-LINE CODE)

.

f---- DEl-ROUT

0-f-

GENERATE
detail-name
Next seq. instr.

CTH-ROUT

CTH-ROUT

CTH-ROUT

CTH-ROUT

(Mojor)

(lritermediote-n)

(Intermediote-I)

(Minor)

2 ~~--------------------~

•

I I

STOP RUN

RSTROUT

3 l--f-------------...,

CTF-LOGIC:
IF the CTF level = the control breok level,
GO to CTH for thot level; else
GO to eTF for next higher level.

L.f

USMROUT

'---r--'

J

Figure 81.

526

Logic Flow of All GENERATE statements After the First

Appendixes

Licensed Material - property of IBM

MAIN PROGRAM
(IN-LINE CODE)

ROLROUT

CTFROUT

Ihrough

(Minor)

CTFROUT

(Mojor)

TERMINATE
REPORT-NAME -1--...rLLSisr::j-RKo>LurTrl

Ne,,1 Seq. Inslr.

STOP RUN

3

Pigure 82.

TERMINATE statement Logic Flow

LOCATING ROUTINES IN THE OBJECT MODULE
RiS routines can be found by scanning the
name field of the object module for their
GH numbers. Most of their GH numbers can
be found by using Figure 83. Phase 12
reserves 24 GN numbers while scanning each
RD statement and assigns 17 of them to
routines as shown. in this table. (The
other four routines, DET-ROUT, USB-.ROUT,
CTH-ROOT, and CTF-ROUT, are discussed
separately below.) The GN numbers in
Figure 83 may be considered absolute for
the first Rlsand relative for any
succeeding RiSs generated~ In the latter
case, the·GN number .of the INT-ROUT routine
can be used as a base. It may be found
from the coding for the INITIATE statement,
which is a branch to the lIT-ROUT routine,
with the GH number of that routine
indicated in the remarks column.

There is one DET-ROUT routine generated for
each detail group in the source program.
Each DET-ROUT routine .has one corresponding
USB-ROOT routine. The DET-ROUT routines
can be found by.tracing from the level-01
statement containing the TYPE IS DETAIL
clause. The generated instruction would
probably be:
GN=032

EQU

*

This is the first instruction of the
DET-ROOT routine and 032 is the GN number.
Each DET-ROOT routine has one
corresponding USM-ROUT routine. The
USM-ROUT routine is assigned a GN number
one less. than its DET-ROUT routine, in this
case 031.

Appendix C:

Report iriter Subprogram

521

Licensed Material - Property of IBM

GN

i

I
,I

RPH-ROUT
RPF-ROUT
PGH-ROUT
PGF-ROUT
1ST-ROUT
LST-ROUT
WRT-ROUT
CTB-ROUT
ROL-ROUT
RST-ROUT
CHF-ROUT
CFF-ROUT
INT-ROUT
ALS-ROUT
RLS-ROUT
SAV-ROUT
RET-ROUT

01
02
03
04
05
06
07
010
011
012
016
017
020
021
022
023
024
Figure 83.

528

ROUTINE

Report writer Subprogram GN
Numbers

Appendixes

One CTF-ROUT and one CTH-ROUT routine are
assigned to each control after the highest
(FINAL) level control (whose heading and
footing are provided by the CHF-ROUT and
CFF-ROUT routines). If they are described
in the source program, they may be found in
the same way as the DET-ROOT routines. If
not, they can be found by tracing the
logic, using Figure 79 as a guide.

Licensed Material - Property of IB1'1

The COBOL-CMS Interface routine is a module
executable under the Conversational Monitor
System (CMS) which allows the terminal user
to compile a COBOL source program by
invoking the IBM OS/VS COBOL Compiler.

The COBOL-CMS Interface routine allows the
terminal user a conversational means of
specifying the options, input and output
data sets, and libraries to be used by the
COBOL compiler. It also dynamically
allocates all data sets for the user. It
stores the compiled code for execution
either under OS/VS or under control of CMS
(for information on the interface between
the compiled code and CMS see I~~~LYg
~Q~QL§..!!brQ!!tine P£QG£ru!L1Q9.!$.

FUNCTIONS
The COBOL-CMS Interface routine analyzes a
COBOL command string from the terminal,
constructs an option list, issues CMS
FILEDEF commands according to the options
specified, and calls IKFCBLOO to compile
the source file.
The relationships among
the DMSCOB routine, the COBOL compiler, and
CMS are descri-bedin Figure 84.

ENVIRONMENT
The COBOL-CMS Interface routine, DMSCOB,
(known to CMS as the COBOL command module)
operates under the Conversational Monitor
System (CMS) in the virtual machine
environment of the IBM Virtual Machine
Facility/370 (VM/370).

Appendix D:

The COBOL-CMS Interface routine is
initiated when the COBOL command is issued
through a terminal, such as the 2741
Communications Terminal.
Input to the COBOL compiler is from the
file specified in the filename parameter.
This is the COBOL source program.
Only the
device types: DISK, READER, and TAPE, are
valid as input source file devices.
The
FILEDEF command for a DDname of a COBOL
source program must be issued if the source
file resides either on tape or in the
virtual reader.
The default medium is
DISK.
Diagnostic, informational, and prompting
messages are typed at the terminal.
The LISTING file which is produced by
the compiler may be written on disk, the
spooled printer, or to a dummy device.
The
object (TEXT) file produced by the compiler
may be written as a disk file. a spooled
punched deck, or to a dummy device.

PHYSICAL CHARACTERISTICS
The COBOL-CMS Interface routine resides on
the CMS system disk with the IBM OS/VS
COBOL compiler and is given control by the
initialization routine of CMS.
It consists
of two object modules, DMSCOB and DMSCBD.
DMSCOB constructs the option list, handles
linkages to and from the compiler, and
returns control at the end of compilation
to the CMS command level.
DMSCBD contains directory information
about each phase of the compiler. After
installation, DMSCBD is physically part of
the DMSCOB module.

Interface With Conversational Monitor System (CMS)

529

Licensed Material - Property of IBM

VM/370

.i

CMS-COBOL Interface

CMS

DMSCOB

.

COBOL

~ ..':::.:.:.:::

CMSScrvice
Routines

.....;,::::.;.:;::::.;.::::::.;.:

',"

Initialization
procedure

':':':::~:';'::::':""::::;':'::-:'~:::""':':-:-.:.;,::::'..':-:::-,:-:-:~

System

....

functions

. :.,

.

COBOL Conlpiler

Call Compiler

I
Search FHe Status
Table and DMSFST
macros -

..

IKFCBLOO

",' ,,'

DMSCBD

!- -

-

-

-

~-7I---DMSFST macros
(Compiler

Load Module

Directory

'. :'.

Information)

COBHAND

OPEN TEXT or
SYSPUNCH f)le

WRITE ENTRY card
for DMSILB

"':'''''' .,.,.,.,. "'»,,,.,.....

,.>,.,.', ,.,

,'.

Final
processing
RETURN
":"':,1

... , ....

~:

----~
indica~es

..

pointer in main storage

~:.

indicates flow of control

Figure Sq.

Relationships AmongCMS-COBOL Interface Routine, the COBOL compiler, and CIiS

,

'.~

..

;

~" '

530

Appendixes

.....

'~.

Licensed Katerial - Property of IBM

OPBRATIOIAL CONSIDBRATIONS

.-----

The DKSCOB routine is invoked when a COBOL
command is entered at the terminal. The
command consists of:
• The command name COBOL
• The source program Ifilename l
• Any optional parameters that the
terminal user may wish to specify
The parameters specified in the COBOL
command are used to build the option list
and to issue the CftS FILEDEF commands
needed for the output from the compiler and
the DKSCOB routine.

i2!£ce Prograa Filename
The source program filename is a required
positional parameter. It specifies the
filename of the data set containing the
COBOL source program that is to be
compiled. The file must have a filetype of
COBOL and have fixed-length records with a
logical record length permissible for that
device type. . standard search rules are
followed to locate the specified file among
those. disk directories currently accessible
to the·l1ser.

The option list consists of all parameters
specified or iaplied in the COBOL command.
~hese parameters may appear in any order in
a set of parentheses following the
filename. When an option and its default
are both specified, the last to appear is
.generally the one assumed. If any of the
following mutually exclusive options are
specified, the. last to appear is assumed:
CLIST - PUP
IREF

I

I

I option
,
I NOSOtJRCE
ICLIST
IDMAP
IP!AP
I NOLOAD
I DECK
I NOSEQ
IFLAGE
ISUPKAP
ITRUNC
ISPACE2
ISPACE3
INUK
IQUOTE
I STATE
IFLOWnn
IIREF
ISIREF
IADV
tNOTERK
INOLIB
IBATCR
,NAKE
INOZiB
ISIMDMP
10PT
IRES
IDINAH
I SYNTAX
ICSINTAI
IPRINT*
1NOPRINT*
ISIZE
, yyyyyy
IBUF yyyyy
15YSX
INOVERB
10SDECK
I LSTCOMP
ILSTONLY
ICDECK
IFDECK
ILCOL1
IL120
I COUNT
IVBREF
IVBStJM
I NODUKP
ILVL
IADV.
ILANGLVL (1)

I Default
I
SOURCE
NOCLIST
NODMAP
NOPMAP
LOAD
NODECK
SEQ
FLAGW
NOSUPMAP
NOTRUNC
SPACE1
SPACE1
NONUK
APOST
NOSTATE
NOFLOW
NOIREF
NOSIREF
NOADV
TER!
ILIB
,NOBATCR
I NONAKE
IZWB
I NOSIMDMP
I NOOPT
I NORES
I NODYNAM
,NOSINTAX
,NOSYNT!I
IDISK*
lDISK*
181920
,
I SYST
IVERB
I
I NOLST
IHOLST
I HOCDECK
INOlDECK
ILCOL2
IL132
I NOCOUNT
I NOVBREF
I NOVBSUM
I DUKP
I NOLVL
INOADV
ILANGLVL (2)

INOVER,'ER
IOSD
ILSTC,OLST
ILSTO,OLST
ICDE,OCDE
IFDE,OFDE
IOL1,OL2
IL12,L13
ICOU,OCOU
IVBR,OVBR
IVBS,OVBS
IODUM,DUM
ILVL,OLVL
IADV,OADV
I

..

'

'

Alternate Names
NOSOU,SOU
CLI,NOCLI
DKA,NODMA
PIU,NOPMA
NOLOA,LOA
DEC,NODEC

i

I

I

lLAG,LAGi
IStJP,NOSUP
ITRU ,NOTRU
IACE2,ACE1
IACE3,ACE1
I

IQUO,APO
ISTA,NOSTA
FLO, NOFLO
IRE,NOIRE
SIR,NOSIR
ADV,OADV
NOTER,TER
BAT,NOBAT
NAM, NONJUl
SYM,NOSYI'l
DYN.MODYN
SYN,NOSYN
CSYN,NOSYN
PRI.DI
DI,NOPRI
SIZ yyy
BUF HY

12768

ISee Note below.

,

I
I
I
I
I
I
I
I
-I
I
I
I
~

I

I

Figure 85.

COBOL Compiler options Under
C!S

Note: The PRINT, NOPRINT, and DISK options
apply only in the CMS environment. An
explanation follows:

- SXUF

PRINT - DISK
A aaximum of 100 characters, including
delimiter blanks, between options are
allowed within the set of parentheses. The
options are listed in Figure 85.
Appendix D:

• PRINT specifies that a program listing
is to be produced. The listing
includes page headings, line numbers of
the statements in error, message

Interface iith conversational l!onitor system (CLVlS) '- 531

Licensed Material- Property of IBM

identification numbers, severity
levels, and message texts {as well as
any other output requested by SOURCE,
CLIST. DMAP. PMAP. XREF, or SXREF).
The listing is printed at the spooled
printer.
• DISK specifies that a program listing
(as described for PRINT above) is to be
produced, but that it is to be written
to the appropriate read/write disk with
a filetype of LISTING instead of to the
spooled printer.
o

NOPRINT specifies that the listing file
described for PRINT above is not to be
written either to the spooled printer
or to the read/write disk described for
DISK.

o

OSDECK specifies that the object
program is to be executed under OS/VS.
If OSDECK is not specified. it is
assumed that the object program is to
be executed under CMS.

The DISK option is not recognized by the
compiler. The FDEFLIST routine of DMSCOB
processes this option by directing the
compiler output specified for SYSPRINT to a
disk file called LISTING.

The DHSCOB module calls routine DHSFLD to
issue FILEDEF commands. This co•• and is
used to specify the input/output devices
and data set characteristics that are
required according to the user specified
options. These data sets are listed in
Figure 86. For a description of CftS see
IB1LU!:t.~.L.b£hinLl~illlUll.Q

G.2l!.!!!I§A!isrnal ~ll2L~t.Y (CftS) Pr2.Sl£n
~qic. Order No.SY20-0881.

The DMSCOB routine is invoked by the CftS
command processor in response to a COBOL
command from a terminal user. DftSCOB
performs the initialization that is needed
to call the IBft OS/VS COBOL compiler.
After compilation is complete or. if any
D- or E-level messages have been issued.
after error processing is complete, DftSCOB
receives control to close all files and
return control to the CMS command
environment.

The other options that appear in Figure
85 are described in "compiler options" in
the chapter "Introduction."
.rIF-1-·l--et-y-p--e-/-F-i-l-e-n-a-m-e~;rc-·o-n-d-1-·t-1-·-o-n--R-e-q-u-i-r-e-d~lrc-o-m-m-e-n-·t-----------------------------------------------1

r-

I '
I
ISYSUT1-SYSUTIJ
IAlways created
IErased a.t end of compilation.
I
r--------~·+I--~· ------------~I~~---------------------------------------------~
I SYSUT5
ISYMDMP option
I written to disk where source file resides if that I
r---------c------+I----------------Ilis read/write; if not. to its parent disk i f that,
I LISTING
ISQURCE.DMAP,PMAP, lis read/write; or else to pr.imarydisk if that is f
I (SYSPRINT)
ICLIST,XREF,SXREF, I read/write.
I
,
,DISK options
I
I
Ir--------------~Ir---·
I
f
,TEXT
INo E- or D-level IMachine-language code created by compiler;
I
,
,error messages
,written to same disk as SYSUTS and/or LISTING.
,
I
, produced
I
I

r-,SYSLIB
r--

"

I LIB option
I
ITERM option
,
I
IDECK option

ISYSTERM
,
I
ISYSPUNCH

~I---------------I~·

ISYSUT61LVL option
,
I
L--

I

Icompiler SYSPRINT output passed on SYSUT6 to
,FIPS processor; era.sed at end of qompilation.

I

Figure 86.
532

,COpy or BASIS statements in source program.
I
,Progress and diagnostic messages and compiler
Istatistics written to the terminal.
I
IObject module is written on spooled punch.

FILEDEF Commands Issued for Compilation Under CftS

Appendixes

.,I

I
I
I
.,
I

I

,
I
,

Licensed Material - Property of IBM

INITIALIZATION
The operations of DMSCOB at initialization
are described in Figure 87. Most of the
processing is described in the "Extended
Descriptions" section of the diagram. See
the sections "option List" and "Issuing CMS
FILEDEF Commands" under "Operational
Considerations" for further information.
Additional explanations are given below
for:

(For a description of the execution-time
COBOL-CMS interface, see I~H-QS/VS CO~OL
~'!!!!~.Q.!!g!!!L1ibrarLR!:Q9.g!L!&.9.is:..
For a
description of the CMS commands see I~n
!i~!_Machin~-K~s:.i!i~!LlIQ_£Q~and
ll!!g~g~_!!~!:!.,§_Guidg"

Order

No. GC20-1804.)
If a program is compiled under CMS
and the OSDECK option is specified, the
ENTRY control card is not written in the
object file. The program cannot
subsequently be executed under CMS.

!Qi~:

• special processing for TEXT and
SYSPUNCH files.
• compiler directory information.
• Error processing.

~ial

Processing for TEXT and SYSPUNCH

rile,§
After the FILEDEF commands (described
above) have been issued for the TEXT and
SYSPUNCH files, the DMSCOB routine sets a
flag in the CMS Control Block for each file
to indicate that the auxiliary processing
routine COBHAND is to be given control when
these files are opened during compilation.
The CMS OPEN procedure passes control to
COBHAND after the OPEN has been completed.
When the COBHAND routine is called, it
writes a CMS Loader ENTRY control card on
the TEXT or SYSPUNCH file. The control
card is the first card in the compiled
program. It starts in column 1 and
specifies that ILBCMS is the external name
of the module that is to be loaded with the
compiled program. This is the entry point
of the execution-time COBOL-CMS Interface
routine, DMSILB.
At execution time, when the user issues
the LOAD command, the Loader loads the
DMSILB routine along with the compiled
COBOL program. When the user issues the
START command, the DMSILB routine is given
control to do the initialization necessary
to run the compiled program under CMS.

Appendix ,D:

At installation time the DMSGND routine of
CMS resolves the necessary directory
information for each phase of the COBOL
compiler. This information is stored in
the form of a DMSFST macro instruction in
the DMSCBD module. After initialization,
DMSCBD is physically part of the DMSCOB
module.
During compilation the CMS Loader
searches the File status Table and all
DMSFST macros whenever a LOAD instruction
is issued for a phase of the compiler. It
uses this information to locate the phase.
For descriptions of the DMSGND routine,
the DMSFST macro instruction, the CMS
loader, and the File Status Table see IB~
virtual Machine Facilit!Lll~~~iio!!~l
HQa!iQ~stem (CH2L-g!:Q9.~~m Logic, Order
No. SY20-0881.

During initialization, DMSCOB issues error
messages for user errors involving the
filename parameter. the file containing the
COBOL source program, or any of the options
specified. The error messages issued by
DMSCOB are listed in the section
"Diagnostic Aids."

Interface with Conversational Monitor System (CMS)

533

Licensed Material - Property of IBM

PROCESSING

INPUT
Start

INITIALIZATION

CD Set flag in nucleus
® Validate filename
® Define output files
@

Build option list

®

Prepare worl' files

®

Call compiler

Control passes to
IKFCBLOD

Extended Description

Label

CD

Set compile switch in OSSFlAGS located in NUCON (see IBM Virtual Machine Facility/370 Conversational Monitor System (eMS) Program Logic,

DMSCOB

VM01Al

CD

Check command line from terminal for filename.
Call eMS control program to verify fi,lename.
Determine that file has fixed·length records.

CKFNAME
STAT

VM01Dl
VM01Fl

0

Call eMS control program to define a disk for permanent output files.
Use COBOL source program disk if it is read/write; if rend only. use its parent disk if that disk is read/write; if read only, use primary disk if that

FINDRW
ANYRW
USEIT

VMIlIG3
VM02Gl

OPTSCN

VM02B4

FDEFS
FDEFLIST

VM03Gl
VM03Hl

NOOPT
STDPLIST

VM03Al
VM03G2

Order No. SY20·0881 for the format of NUCON)

disk is read/write.

CD
@

®

Chart

Build parameter list for specified compiler options in EBCDIC format.
Set switches to control allocation of output devices.
Flag invalid options.
Call eMS control program to determine rend/write disk with most space for utility files.
Call CM~ control program to erase any old TEXT, LISTING, and utility files with same filename as file being compiled.
Call eMS control program to issue the CMS FILEDEF commnrds required by options specified.

Issue GETMAIN for storage nceded by compiler.
Set address of DMSCBD in File Status Table Extension.
Calli KFCBLOO to compile source file.

Figure 87.

operations of DMSCOB Routine at Initialization

Appendixes

VM01Jl

Licensed Haterial - property of IBM

RETURNING CONTROL TO THE CMS COHMAND
ENVIRONMENT

contains all the executable code that is
required for initialization and for
transfer of control to the OS/VS COBOL
Compiler. DMSCBD contains the directory
information that is required by the Loader
to locate the phases of the compiler.
After system installation, DMSCBD is
physically part of the DMSCOB module.

When DMSCOB receives control from IKFCBLOO,
it saves the return code issued by the
compiler and issues a warning message for
any nonzero return code. It then calls
other modules to perform required
functions. The routines and their
functions are as follows:
Routin~

DMSFNSA

Function
close-aIl files

DMSERS

Erase all utility files

DMSAUPD

Update the user file directory

DMSFLD

Clear all file definitions

DI!SSMN

Reinitialize storage

This section describes the organization
of the Interface Routine. A standard
flowchart and directory information are
provided.

This section contains four directories to
be used in conjunction with microfiche
listings of the interface routine.
Figure 88 associates loaod modules with
the CSECTs they contain. Figure 89
associates external symbols with the load
modules in which they appear. Microfiche
names are usually the same as the load
module names shown in these directories.

Then the routine resets switches,
indicates that the virtual storage pages
'used by the compiler are no longer required
and can be released, sets a return code,
and returns to the CMS command environment.
Linkages to these routines are °described in
"Linkages II in the section IIDiagnostic
Aids. 1I

Figure 90 is a directory of all the
labels that appear in othe flowchart in this
appendix.

For descriptions ofothe routines see n~
Viti ualJ!achi~_n£!li tya 70 Con!ll2!llj,Q~!
Moni!QLUm:em (CMS) ...f~!!!:s!:.!Ll!.Qgic, Order
No. SY20-0881.

,
,--I
I
I External Symbol I Type ILoad/Object Modulel
I
I
I
LD I DMSCOB
I COBOL
ER IDMSCOB (after
I DMSCBD
I installation)
I
I DMSCOB
SD IDMSCOB
ER INUCON
I NUCON

•

PROGRAM ORGANIZATIO!
The COBOL-CMS Interface routine consists of
two modules, DMSCOB and DMSCBD. DMSCBD

Figure 89.

External symbol Directory

i

Load Module

Entry

CSECT Names I
r-----------~----------.--~-------I
DMSCBD
Non-executable
DMSCBD
I
code
I
I

,

Function
contains directory information for
compiler phases (part of DMSCOBo after
installation).

~~------~------------~-----------+--

DMSCOB

Figure 88.

COBOL

DMSCOB
COBHAND

I Initialization; link to compiler.
I ENTRY card for object module.
,

Write

I
I
I
I
I
I

I
I
,

Load Module Directory

Appendix D:

Interface with Conversational Monitor system (CMS)

535

Licensed 8aterial - Property of iB8

Chart V8 (Part 1 of 3).

····Al·4I:·······

.......'1"......
..

..

1j":--

,-------

t!---- -- .

COBOL"

D8SCOB (COBOL-C8S Interface Romtine)

.

AT

L•

······Bl·········..
·.......'1".......
-SAVE REGISTERS ..
..

SET

..

*ADDRESSABILITY ..

······el··········.

==. ·r. . .
..

SET COMPILE
SWITCH IN

..
..

..

[----------

.

----..;---------

.. - - - - - - - OSBFLAGS IS LOCATED
OSSFLAGS"
CMS NUCLEUS • NUeON'

..

······01··········.
·········r·······.
.. CHECK COMMAND ..

..
..

LINE FOR
FILENAME

E1

.'.

too

ot.

.. " FILENAME
....

*0

..
..

*oo

FOUND

'or

*oo.*

M..

.... NO

..... Fl..........

........

•• CALL
. . TO

••

..•.•P2.....•....

....
..
••
-SET RETURN CODE4••
..
1
.--~

....
.... ....................
.

••

1

G1

. . . ·r. . .
••

••
.* .. *------>••
••

• -.

-02 ..

.. D3*
.. ..
..

*oo

.. ..
....
.. ..
.... N O "
•• FILE FOUND ••------->...
••
••
•

....
··l· ;S

••••
*01 ..
: G3.

••••

*--1
G3..........

••••••••••.ANYRW
•••••

~---------

• TO..
....
DMSLADW GETS ACTIVE
....
.... - - - - - DISIt TABLE OF 1ST
ND.------->UCALL DMSLADW ••
R/W DISK
•
.A
••
••
-----------

.•••••••••••••••••"'..········1·········..

Y

:~~

..

.......-1
• H4

••

Hi

•••

••

ERROR3Q

••

• ••••H2..........

•• CALL DMSERR ••
•• TO PRINT..
••-------->.. ERROR MSG ••
•• DMSCOB03QE ••

• .FILE FIXED •• NO

••

••

LENGTH

···.·l·.y.·;~·

••

::..····1········::

H3

•••

••••
•• ANY Rl'W •• NO
..DISK ACCESSED ••
••
••

Jl ..
•••••J2..........
....
.
.
.. ....
..
.
.
.. ... ...... .................
l
1
....
...
.... ....

• .SOURCE FILE.. YES
•• DISK Rl'W
•• --~

·NO

Kl

·02
Cl·•
• •
•

.SET RETURN CODE.
•
3ft
•

••••
->.02 •
• D3 •

*

•

••

.SOURCE
DISK..•• NO
••• AN
EXTENSION
- - - -_____ ._______________

*. *..• .•
·YES

.....
L

.

*02 •

'" Ai·

••

536

Appendixes

• •••• SQ ••••••••••

•• CALL DMSERR
••. TO PRINT
ERROR MSG
•• DMSCOB006E

----->..

····.i;~·
L>:b;· •

......
• Cl •

FINDRW

ERROR6

••

••

••
••
••

::······1·····~~::

.•.•..JQ•....••.••
................
.
l .
....
'"

.SET RETURN CODE.

•
6
"
'
.•
.

• •••
->*02 '"
• A3 '"

•

'"

Licensed Material - Property of IBM

Chart V! (Pa rt 2 of 3).

DMSCOB (COBOL-CMS Interface Routine)

.......

.....

..
I
·····Al··········

.
1

·02 •
• A3·

*02 •

• At·

•• CALL

••

········1·······
D

••

0+ B1 .'.
to eo

.....s3..........
•• CALL DMSSMN ••
••
TO..
•• REINITIALIZE ••
••
STORAGE
••

..

•• __ ~

._ ••

.... 1 ·
·.....
··.·..·Cl··········..
.
.+

+0

•••••

tYES

•.

USEIT

·

•

:....
RESETSWT

·
•
•

••

••

+0

..

FILEDEP
+0

.+

."
."

1

" F2 •

.--~

ERROR2

t ···.

o

.+

--------~:
PRECOBFD

Gl

.+

.

•+

.-.

••

..

.. ...

+0

••

•• DEVICE TYPE ."
to

to

.+

0+

---,,>

TAP --.... >

[

••••• G2 ••••••••••
•
•
-SET RETURN CODE-

.................
•

•
•

iiiSR-:::>--AiiaOR

••

1·.... ·· ..

to

*.

..

..

•••

.,

0

·'l·Y~S

:~i;:

2

.
..
.

..

.SCAN FIRST/NEXT.
OPTION
(I

-->.

••

+---->
•
"

........j.........
····G3·········

•...............•

•
•

•
RETURN.

..

.

.

''""

••

••• ·.OS ••••• •••••

*. NO
.-~
... + . . . + .*

• •••• E3..........

• RESTORE REGS •
:SET RETURN CODE:

cS•..•........·

· ·. ·. t·········

.INDICATE PAGES •
.'1'0 BE RELEASED •

·.....p3...........

'[:;:~~:;

••

.....
Dq

.

•• CALL DMSERR ••
ISSUE MaG ••
DMSCOE070E ••

--------> •• '1'0

...

••
OPTION
••
SPECIFIED

*

P4 "'.
....,

.SET RETURN CODE •
70
•
•

········t::::::::

·.
• A3 ...
••••

"~.oo.

.....Ps...........
.
:---!
................
....
....
..
'"

••
•• NO
.INVALID OPTION.
., ~~~ON VA~~~ •••------->:
T~E§~~g~

··l+Y;S

~.::.:

•• ,
G4
.oO
...,
,.OPT LIST + ... YES
..NEW OPT> 100 ••

.0

Sq

Bli

....

o.

ERRORS2

••••• GS ••••••••••

••

+. CALL DMSERR
------->••
TO ISSUE MSG
DMSCOB052E

••
••
••
••

·r · · · ·r· · ·

••••• H4..........
• •••• HS ••••••••••
• PROCESS
ION • •
•
• BITS
'TO.
.SET RETURN CODE.
•
C
•
•
24
•
•p
1ST"·
•

··::::···1·········. ..................
.
l ....
••••
.... .,.. ....···JS.·...···.··...
..
..
·0 ·0 .• .•
·······r······
•

->.'"

*

•
•• J4 .->

·.··.Jl··········

GETNXT

ERROR7S

..
·······r·..·.
···.·Kl··········
·..................
•• CALL DMSERR - ••

..

'. r~s

.

ERROR10
• ••••

...

~

ELSE--

•• TO ISSUE
•• ERROR MSG
•• DMSCOeD7SE

C4

• .OPTION LIST.. NO
••
NEXT
...

··. ···r······ ···..··1······

••••

•• ~~BSW;· to
::·~~u···· ~·::
." INDICATES •• Y E S . .
••
".-STATE" ERROR. +______ ..>'..
MSG ••
to
.+
•• 0
002E ••
t

....
..,.

OPTS eN

••••• 8S ••••••••••
•
•
.SET RETURN CODE.
•
40
•
•
•

.......

NXTOPTN
• ..... E4 ••••••••••

•

.......

0-'

••

··

••

+00

.

RESET A L L .
SWITCHES.

~

'"

.'.

YES

·.·l.·N.'

········1·········

0" B1 t. ••
•• PREVIOUS ••

--_".

E4
.oO
.. •
• •
... FILEID
•• YES
..CONFLICT WITH •• ----... COMMAND ••

••••• 03..........

•• CALL DMSFLD ••
•• TO ISSUE
••
•• FlLEDEF FOR ••
SOURCE

.... .'.
.....

• ._>

~~i;::::l"'''''*'

~"·T"""
·.···01·····..···
..
..
········r..·····
..

.

• CLEAR FST (FILE.
• STATUS TABLE) •
•
EXTENSION
•

• SAVE MODE FOR •

" OUTPUT FILES

..

········1·········
·.....c3...........

.01 •
• GJ+
•

*02 •
• cl +->

..········1·········..

•••••••••• : E4 :

t. _ •

R/W

ERROR38
• •••• AS ••••••••••
••
••
•• CALL DHSERR ••
->"TO ISSDE MaG ••
•• DMSeOB03BE ••

··l·N~

• "PARENT DI51<+. NO

t.

FDCOEDSR .. ••
A4
...
.. .COESW2 ••
YES ... INDICATES ...
~--STATE ERROR ••
•• '
••

..········1········:-::
..<--1:.;;.:•..........

VE ••
••

•• FOR

••

All •

coeENO
•••••A3..........
••
••
•• CALL DMSFLD ••
->··TO CLEAR ALL ••
•• FILEDEP" S ••

W ••

UTO GE
•• DISK

.••.••••....·-v

J4

••

0

••SET RETURN CODE.•
•
15
.-----------------------•
•

••
••

r
.. ..
. *.

R4
••
••
t.
• .ANY INVALID.. YES
•• OPT IONS FOUND, . - - - -

.... .. ..
,

'NO

t
.....
..

.

*03 •

* Ai·

Appendix D:

ERROR3

••

YES •• ANY MORE
---...
OPTIONS

••
••
••

*'

A3 ..

110",**

.... CALL DMSERR ••
ISSUE MSG ••
•• DMSCOB003E ••

--> •• '1'0

·····KS··········
·.·......................
l->. •
·••••.
• SET RETURN CODE •

•

*

3

•

•

• A3 ..

Interface with Conversational Monitor System (CMS)

537

Licensed Uaterial _. Property of IBM

Chart VM (Part 3 of 3).

DMSCOB (COBOL-CMS Interface Routine)

.....
..

··•........A2 .•
t . ·····A2··········
····..Al·.····.···
..
................. ..
.

*03 ...
... Ai·

NOOPT

•• CALL DMSFLD ••
••
•• TO ISSUE
FILEDEF FOR ••
••
TEXT
••

SET FIRST
EXTENSION
'ADDRESS

.or.

1
..
..
.................

·····B2··········

•• • •• Bl· •• • ••••• •

•• CALL DMSSMN .....
••
TO GET
••
•• STORAGE FOR ... '"
. . COMPILER
••

1
·····Cl··········
..
..
.................
.1
'.

•• CALL DMSLADW
. . TO GET R/W
••
DISK WITH
. . MOST SPACE-

*.

n1

~

NO

---*

.."

. R/W
*

*. 10<.

•••••

:~:~:

DISK

FOUND

*.

•
INDICATE
•
• AUXILIARY PRoe •
•
COBHAND FOR •
TEXT FILE
•
•

·..................
1
*····C2··········
........................
1.
·····D2·····
·
.

FDEFLOAD

....

•• CALL DMSFLD
•• TO ISSUE
U: FILEDEF FOR
•• SYSPUNCH

I!< +

••
.....

0*

'"
INDICATE
.AUXILIARY PRoe
COBHAND FOR
•
• SYSPUNCH FILE

·r. ·. ·

....

····.·El··········.

••
••
**
••

~··*••

"'. ...

0*

fS
0*

.--~

. . . .r. . .

FDEFTEXT

•
•

==:.

·····E2·····
.. ••••
•• CALL
FLD ••
•• TO I E
••
•• FI
FOR ••

. · . r····..

.. 5··..
ID,~:: ..

·····Fl··········

·····F2·**·······
..
..

·

"'SAVE DISK MODE ..
'" FOR UTILITY ..
'"
FILES
..

,~

..
••

·T. ·. ·

>II •

..

. ·. r··. .

"'.. CALL DMSERS "' ...
••
TO ERASE
••
••
FILES

+.

,,~:
**
···"'·G:l*"'*.···*··

**

CALL D

•• T
•• FI

ES··
••

"'

'- - - '- - ·. . r.·.·
----------~~~~Iil
NSTRUC-·
OR

:

II

• C3 •

·····C3··:t;·······

. . . .1'. . .
•• CALL OM-SERR ••
•• TO ISSUE
••

••

ERROR MSG

•• DMSCOB008W

••

••

....

• .. Dt-lSCOBO

ACE
OF

••

.:to

-----------:------

COBCODE

•

~§~=;~~~;~~~~J---

. . . . r. . .

······ES···. ······.
.·................

•••
••
••
...

•
:

••

.SET RETURN CODE.

•

12

:

$

**
••
••
••

••••• ·--1

•

•••
J2
••
ERROR
••
•• RETURN FROM ...
·.COMPILER ...

1

•• CALL DMSERR
. . TO ISSUE
•• ERROR MSG
. . DMSCOB016W

v

*.

-i~i:~~~~~--~RC16---->
RCO ---->

H4

G3

.SET RETURN CODE.
..CALL DMSFNSA . .
•
16
.-------->**TO CLOSE ALL ••
•
•••
FILES
••

• •••• Jq ••••••••••

•• CALL DMSERS ••
••

TO ERASE

1
·····KII•.•••..•.•

....

UPDTDIR

··CALL

_____________

••

..UTILITY FILES••

••

TO

••

DI

....
••

••

RY

••

········r·······
·02 •
• A3·

Appendixes

RESTORE
HEGISTERS

j

····"'·F3··········..---->

.....
...

538

..

..

!RESET SWITCHES :

DOFINIS

-.-.•
*•*_*-*-.-*_.-.•
LINK TO
COMPILER
..

.• A2 .•

. .·. r. .

•• CALL DMSSBS . .
••
TO WRITE
••
---- ."'ENTRY CARD ON"'.
• .. OUTPUT FILE ••

······D5··········.
·
.

ERR~~1~~G3.~ ........ .

*IKFCBLOO

••

..

BS ••••••••• :

WRITE

1

ERROR12w
V
••• ... E3·· ....... •
•• CALL
•• TO I
• III ERROR

•
•

1
-----------------] ·····cs··········

• SET RETURN CODE.
•
8
.---->

! __

COBHAND

• • • • • "' • • :f< • • • • • • • •

·······03*·*·······..
·.................
·.....
...... ·..T. . ·...
: E3

····AS·········

:SAVE REGISTERS :

:----

ERROR8W

--"--.

·:*•••
·

.SET RETURN CODE.

..~

. . ·.

FLD *'"
E
••
FOR ••

->.

R ••

SYSUT~

• SET -STI,r:.lDARD •
*PARAME'l'ER LIST ...

D"'.
••
R ••
R ••

1
·····Jl······.···
..
..
.................
l ....

••

STDPI.IST

.....
..,.
••
••

TERMFIL

••

······B3. 1•.•.•••··.
.·...............
.
....
·•.....*--!

*••

1 .
···..Hl·········
.................
OPTIONS

..................
:eo.

.. G3 •
.. •• u ._-,

FDEFLIST

••

D**

40»,

,

•• CALL
••
TO
•• 'FI
•• LI

• A3 •

ERROR4W
·····A3·······.··
•• CALL DMSERR ••
•• TO ISSUE
••
•• ERROR MSG ••
:eo. DMSCOBOOqW ...

·.····F5·········
.
·
.
............
.
....... ..,....... .................
·.
1
···+·**G2··········.. ..
..
*·······1·····
..
··
:.::+:
r~:=
·(I . ··H2··········
·.....U3..................H4............
·........1'....... ·......................................
.. ..
.. 1 ..
.. .. ....
.....................
•• CALL
••

..
..
.................
CALL DMSFLD
. . TO ISSUE
. . FILEDEF FOR
••
SYSLIB

·•.........._-!

RETURN

"'

:

Licensed Material - Property of IBM

r-----r

i

ir-------~----~i-

I

I
ILabel

IDefinition IR~ference
IChart IPage Block IPage Block

IANYRi
I
I
ICKFNAME
COBCODE
COBEND

IVM
I
I
IVM
IVM
IVM

Ir------rl----;

-------il---------~

01

G3

01
03
02

D1
J2
A3

I
I
I
I
I
I
I
I
DOFINIS IVM
I

1
I
I

03

H4

I
I
I

IERAS
IVM
IERROR1
IVM
IERROR12WIVM
IERROR16ilVM
,ERROR2 IVM

03
01
03
03
02

F1
E2
E3
G3
F2

IERROR3
1ERROR34
,ERROR38
IERROR4i
IERROR52
IERROR6

IVM
IVM
IVM
IVM
IVM
I VI!

02
01
02
03
02
01

J5
H2
A5
A3
G5
84

I

I

'I

IERROR70 IVM
t"ERROR75 I VM
IERRQR8i IVM
IFDCOBDSKIVM
IFDEFCOB Ive
1FDEFLISTIVH
IFDEFLOADIVM
IFDEFS
IVH
IFDEFTEXTIVH
IFDEFUT1 I va
IFDEFUT5 IVM
IFINDRi I VM
IGETNXT I VH

I

I

I NOOPT

IVM

I

I

02
02
03
02
02
03
03
03
03
03
03
01
02

INOTFOUNDIVH
INXTOPTN IVH

I
I

,

C3
A4
D1
H1
C2
G1
A2
F2
E2
J1
J 4

03

A1

02
02

F5
E4

02
02

C4
Gl

02

D3

I

IRESETSiTIVH

I
I

C5
J 1

I

IOPTSCN IVM
IPRECOBFDIVM

I
I
,

I
I

I

Figure 90 (Part 1 of 2).
Directory

I 01
I 01
02
01
03
01
02
02
02
02
02
02
02
03
03
03
03
03
03
03
01
03
03
02
02
02
01
02
03
02
01
03
02
02
03
02
02
03
03
03
03
03
03
01
02
02
02
02
02
02
02
02
02
02
01
01
02

K1
G2
B1
C1
H2
J4
Kl
G2
J2
B5
D5
H5
K5
K4
J2
B3
D3
F3
H3
E1
El
J2
J2
F1
A4
K4
H1
B4
J2
G4
H3
D1
C4
H1
J2
Gl
C1
Gl
B2
Fl
J1
E2
D2
H1
H4
F5
D4
K4
F4
D4
J4
B4
El
Fl
F2
J2
C3

Flowchart Label

Appendix D:

----.,.,-

IDefinition
I
I
ILabel
I Chart Page Block
6-----j01
F1
ISTAT
IVB
ISTATERR IVH
01
G2
ISTDPLISTIVH
03
G2
03
J1
I TERHFIL I VH
03
I UPDTD IR I VB
K4
02
Cl
I USEIT
I Vt!
I
I
I
I
03
C5
IL-_
URITE
I VB
_- ' -_ _---L_
Figure 90 (part
of 2).
Directory

i

I

IReference
IPage Block

I
I

,
I
I
I
I
I
I
I

01
01
03
03
03
01
01
I 02
I 03

~

E1
G1
F2
H1
J4
J 1
H3
B1
B5

I
I
I
I
I
I
I

I
I

Flouchart Label

This section contains information for
use in diagnosing difficultie. uith the
COBOL-CHS Interface. Information is
provided about:
o Data set activity.
o
o

Register usage.
Elements of program design.

DATA SE'l' ACTIVITY
The DHSCOB routine issues FILEDEF commands
for each of the data sets that are used by
the compiler according to the user
specified options. These commands are
described in Figure 86 in the section
"operational Considerations."
REGISTER USAGE
Register usage is described in Figure 91.
ELEHENTS OF PROGRAM DESIGN
Elements in the design of the DMSCOB
routine can be used to determine
information in case of error. This section
provides information about:
o
o
o

Error messages issued by DMSCOB
CHS service routines called by DMSCOB
Register saving

The error messages issued by DMSCOB are
listed in Figure 92.

Interface uith Conversational Honitor System (CMS)

539

Licensed Saterial - Property of IBM

Register

Usage

1-10
11-12
13
14-15

.Work
Base
Work
work/Linkage

Figure 91.

Register Usage by DMSCOB

r-----------Tj------I Message
I Explanation
t---.
I
IDMSCOB004W IMinor errors were detected during compilation; successful
I
lexecution of program is probable. Compilation is completed with
I
lerror code of 4.
,
I
IDMSCOBOOBi IErrors were detected during compilation; execution is possible.
Icompilation is complete with code of B.
I
,
I
IDMSCOB012W ,Serious errors were detected during compilation. Successful
lexecution of program is not probable. compilation is completed
I
1
Iwith code of 12.

I

I

,COBCODE
IERROR8i
I
ICOBCODE
,ERROR12i
1

,
,
i
I
1
1

I

1

I

1

i

IDMSCOB016W
I
I
,

I
IDMSCOB001E
I
I
IDMSCOB002E
I

I--

IDMSCOB003E
I
,
IDMSCOB006E
I
IIDMSCOB034E
I
I
I
IDMSCOB03BE
I
I
I

I--

IDMSCOB052E
I
.
1
I
IDMSCOB010E
I

I

1

.

.

IVery serious errors were detected during compilation.
ICompilation is not complete. Results are not predictable.
,code of 16 is returned.
.
I

I

,

540

i

ICOBCODE 1
ErrorIERROR16W·1
I
1
i
I
, .
1
i
INo filename vas specified in the COBOL command. compilation is ICKFNAME ,
Iterminated with an error code of 24.
IERROR1
1
I
I
I
I The file named "filenam.e COBOL" is not found on an access disk.
IFDEFCOB I
ICompilation is terminated with an error code of 2B.
IERROR2
1
1
.
1---1
IThe option(s) specified is not valid for the COBOL command.
IGETNEXT I
ICompilation is terminated with an error code of 24.
IERROR3
I
I
I
. i
INo disk is currently accessed in a read/write status.
ISTATERR I
ICompilation is terminated with an error code of 36.
IERROR6
1
I
I
I
IThe specified file must have fixed-length records to be
ISTAT
I
lacceptable as input to the CMS COBOL command. compilation is
IERROR34 1
Iterminated with an error code of 32.
I
I
I
I
i
IA previously issued FILEDEFfor DDname COBOL to a disk device didlFDCOBDSK I
Inot contain the same filename and/or filetype as specified and
IERROR38 I
limplied by the COBOL command.
Compilation is terminated with an I
I
lerror code of 40.
I
I
I
I
I
IMore than 100 characters of options including one blank between INXTOPTN I
leach option were specifie·d. compilation is terminated with erroriERROR52 I
Icode of 24.
I
I
I
I
I
IThe specified parameter is not expected in the COBOL command
lOPTSCN
I
Iline. compilation is terminated with error code of 24.
IERROR10 I

.

IDMSCOB015E IThe specified device type is illegal for input to the COBOL
Icompiler. compilation is terminated with an error code of 40.
1
Figure 92.

i

IIssued bYI
,
I
ICOBCODE I
IERROR4i I
I
I

Error Messages Issued by DMSCOB

Appendixes

IPRECOBFD I
IERROR15 I
,

,

Licensed Haterial - Property of IBH

,
I

The DaSCOB routine calls several routines
to perform functions such as erasing disk
files, issuing PILEDEP commands and error
messages. These routines and the
subroutines of DMSCOB which call them are
listed in Pigure 93~

Normal OS/VS conventions are used for
register saving. SAVE and RETURN macros
are used in DMSCOB.

service Routine
Called
I
II DMSAUPD
IDMSERR

, DMSERS
I
lI DMSFLD
I
I
I
I
I
I
I
I
I
I DMSFNSA
lI DMSLADW
I
I
I-I DMSSBS
lI DMSSMN
I
I-I DKSSTT

DMSCOB Subroutines
UPDTDIR

I

I
I
-f
I

..

ERROR 1
ERROR12i
ERROR16W
ERROR2
ERROR3
ERROR34
ERROR38E
ERROR4W
ERROR52E
ERROR6
ERROR70
ERROR75
ERROR8il
I
I ERAS
I DOFINIS
I
I COBEND
I FDEFCOB
I FDEFLIST
I FDEFLOAD'
I FDEFS
I FDEFTEXT
I FDEFUT 1
I FDEFUT5
I TERMFIL
I
I DOFINIS
I
I . ANYR~l
I FINDRW
I NOOPT

..

I
I

I
I
I
I
I
I
I
I
I
. -----1
I

+-I
I
I
I
I
I

..

WRITE

COBEND
NOOPT
STAT

..

I
I
I
I
I
-----1
I
I
-----1
I
-..I

Figure 93.

Appendix D:

CMS Service Routines Called by
DMSCOB

:Interface with Conversational Monitor System (CMS)

541

Licensed (taterial ,;,property of :rBM

The words listed below are defined
acc~rding to their usage in this
publication. In the case of generic terms,
the.definitions would not necessarily be
applicable outside of this context.
Internal compiler
text generated in phases 22, 21, 50 and 51,
and used in phase 6 or 62, 63, and 6q to
produce the object module for the linkage
editor. This includes Data A-text,
Procedure A-text, Procedure A1-text, and
optimization A-text. See "section 5. Data
Areas" for formats.

libra{y sub{outines: Sllbrolltines
used for operations that are too extensive
to be coded in-line each time they are
used. Stored in the COBOL library and
linkage edited with the object module to
produce an executable load modllle.

~!2L

!=ig!1-1!§§gmble~xtL:

A group ox routines loaded into
main storage along with phases 1 B, 20, 22,
21, 25, and 3 that build and access the
compiler's dictionary. See "Appendix A:
Table and Dictionary Handling."
.

A&£E~:

£Q!2k..§l!!£.!: An area in main storage
representing the difference in length
between the longest compiler phase and the
phase cllrrently processing, .available to
store tables and dictionary sections.
COMMON: A communications area resident in
main storage throllghout compilation as part
of phase 00 and accessible via a DSECT to
every phase. Used to store miscellaneolls
information and to pass information from
one phase to another. The format is given
in "section 5. Data Areas".

ATF-text: An internal compiler text
generated by phase 20 for phase 22. It is
used in preparing entries for the
dictionary. See "Section 5. Data Areas"
for formats.

~NTROL

ATK-~:
An internal compiler text
generated by phase 4 for phase q5. It is
used in creating P2-text for the UNSTRING
verb. See nSection 5. Data Areas" for
formats.

A part of the object module
only when the COUNT option is specified.
It contains entries for each procedllre-naae
and verb in the sOllrce program.

base locator-L1liJ.: A full word cell in the
TGT containing the address of a location in
the data area of the object module. Phase
22 assigns one or more base locators to the
Working-Storage section, Communication
section, Report Section, and each file in
the File Section. Phase 6 or 62 assigns a
register to each base locator.
locator for Li~kaqe~§£tion~ll:
Fullword in the TGT containing the address
of an area passed as a result of an ENTRY
statement, the address of a file label area
provided by the control program, or the
address of an SD area. BLLs are assigned
by phase 22.

k~se,

1Ut:
~U:

See ka§2-1oca to!:.
See

ba~_!Q£9!.gr

fQ!:

Link~g~

CD-text: A Data IC-text type that
descriiies communication description
entries.
SQ2

Glossary

Sectism.

{eco[d: An a-byte record
associated with a DATA record. It is Ilsed
during the sorting process when phase 6Ais
prodllcing an alphabetized cross-reference
listing.
QQU~T llbl~:

critical prog{aa break: In Data IC~text,
these are. the Data Division header, .Data
Division section-names (File,
.
Working-Storage, Linkage, communication,
and Report), the beginning and end of
Q-Routine text, and-the beginning and end
of Report writer text. In Procedure
IC-text, they are Data Division headers,
Report Section nalles, Procedure Division
headers, Declaratives, End of Decl'aratives,
beginning of debug packets, and end of
program.

Data A-tex!: Text generated by phases 22
and 21 for phase 6 or 64 to generate the
data and global table areas of the,object
module. See "Section 5. Data Areas" for
format.
Da~C-text:
Data Division inforaation
collected by phases 10 and 12 and aerged
with Environment Division information for
ase by phases 20, 22, and 21 in prodllcing
Data A-text and data-naae dictionary
entries.

Licensed Katerial - Property of IBM

g!ta operand: A literal, figurative
constant, or data item described by a
Record Description entry (with a numeric
level number) and used as an operand in the
source program.
J2ATA..:.!:~~:
. A qS-:-byte
ph~se 6~ . which contains

rec,ord built by . .
information about a
procedure-name or a data-name obtained from
input DEF-t,ext. 'It may also contain
references to the procedure-name or
data-name.

Debug-text: Text generated by phase 6 or
63 and ,.usedbyphase. 65 for the STATE or
SYKDKP opti.on. Ii; contains card numbers,
their 'displacement within the object
module, the Prioritypf each segment, and
discontin~ity.elements (prpduced by phase'
63 only).
DEF-text· .Textproduced by phases 22 and 3
for .. ~~,6A to use in generating the
cross-reference. listing,. if the SXREF or
the XR.EF optiqn is in effect.·
de,liinite£:~'A~·.internal compiler text
ca tegory tha t consists of. the following
elements: critical program breaks, verbs,
source procedure-names at point of
definition,. andcompiler-generated
p~oc.edure-ll:ames at point of definition.'

delimiter pointe!::' A field'in dictionary
entries for Data Division group items and
Procedure Division section-names. For a
group item, . the delimiter pointer contains.
the section ·number and dis.placement of. the
n.ext group ,item on the same or lower level.
For section-names" it contains the section.
number and displacement of the next
sec,ti,on,.~a me •. , .
dictionan: A special table,. built by
phases 1B, 22,·: and 21, into which all the
attributes of every. data operand, nondata
operand,·... and. pro.cedure-name in. the source
program ,are collected. Unlike.T AMER
tables, the dictionary. may h.e spilled. onto
external. storage if_ storage space is· not ..

Text generated by
phases 10 through 51 llhenever a sOl1r·=e
program error is encountered. The text is
collected by phase 6 or 64 and used by
phase 70 to generate error messages.

!=~_1E!~Q~£~L:

el~LJtfiLtiru!!.~!ul:
One logical Ilnit
of a string of text, such as the
discription of a single data item or verb,
preceded by a unique code identifying the
element type. Each type has a fixed
format, as given in "Section 5. Data
Areas" •

~n~I-l~s~~_~n!nL:

contiguously-placed
information in a table that describes one
item. All entries in anyone table are
usually fixed in length and format. See
"Section 5. Data Areas".

error: A deviation from source language
rules discovered in the source program.
External Symbol Dictionary cards
that are punched in phase 6 or in phases 62
and 64, containing control information
which identifies each external symbol in
the module. They are used by the linkage
editor to put the modules identified by the
external-names into the load module.

!~~1§!~:

PD-text: A type of Data Ie-text that
describes files.
fragmeA!: A portion of code having a
maximum size of one less than 64K bytes
(65,535). A fragment begins with the first
byte of a verb and ends with the last byte
of a verb preceding the verb with a final
relative displacement greater than 64K
bytes. This unit is used in processing for
the STATE or SYMDMP option.

qlob~i-t~!!le:
See ~§.!s.
~ogram_210b~L1~~le.

GlQ.baLTable and

sufficient~

Q!:

Si£!ignary attribute.§: Descriptive
information about every source program name
placed into the dictionary by phase 1B for
procedure-names and by phases 22 and 21 for
Da t!=,-' Div~sion, names, and incorporated by.,
phase ~ into P1-text.
dictioilary..l!6fnter: The.Q.ictionary section
number and displacement of a dictionary
entry. The pointer is stored in the HASH
table Cit .a location depending on. t~e hash
valu4i!·ofthe name the en try.. describes~. If."
twoor more;·names·hash to the. same vallie,·
special processing is re.quired..see
"lppend.ix . A: Table .apd· Dictionary
Handling. "

See £rocedure-nameL-compiler-

g~~ted.

hierarchy-of operators: The order in which
operations must be performed in an
arithmetic expression.

~~:L.!!n!!!£!!al

£9J!leiler_tettl: Text
generated in phases 10, 12, and 1B from the
source program, modified by subsequent
phases, and eventually converted to A-text
or dictionary entries~see "Section 5.
Data Areas" for formats.
Glossary

543

Licensed

~aterial

- Property of IBM

The set of procedural
instructions that are. part of the main
sequential and controlling flo'w of the
source program, that is, nO.t part of the
Declaratives section or Sort input/output
procedures.

i~ii~~Q~du~~:

hie~hY:
The order of all group ,
and elementary items defined within the
second group item in a HOVE CORRESPONDING
statement.

QRj§~

ob~ct_l!!.odu12:

The output of a single
execution of the compiler, and the input to
the linkage editor.

Te xt generated by
phase 50 consisting of intermediate forms
of Procedure A-text and Optimization
A-text. Used only for input to phase 51.

Q1!:!=imi2.ti2n-.!=~I.:!=:

Text generated by
phase 50 consisting of E-text to which an
identification prefix has been added for
phase 51.

~l-of=!ig~~~:

In:!=~il~dia te-.!~:!=:

I!l.t~rmedi!l~~-t~:!=:

Where the source
program specified an arithmetic computation
using more than two operands, the output of
one step in the computation which is then
used as an operand in the next step. At
execution time, intermediate results are
held iri registers or in the TEMP STORAGE
field of the TGT.

Text generated by
phases 50 and 51 to be used in phase 6 'or
62 to eliminate storage duplication for
virtuals, literals, and procedure';'names.
See "section 5. Data Areas" for. format.
A section in the
Declaratives portion of the Procedure
Division, preceded by a USE statement.

in~~gigte~ul:!=:

QIERFLQjL.£2£QJ::!!: A 16-byte record chained
to a DATA record. It contains references'
to the procedure-name or da ta-name which
would not fit in the DATA record.

See nQg:ram S!lOR!ll Tgblg.

PG~:
~~:

A Data IC-text type that
describes level-numbered entries.

LD~text:

Main storage permanently
allocated for tables and/or dictionary
sections. The' 'Main Free Area is in that
portion of ma'in storage iinmediately higher
than COBOL space.

Hain~~_Ar~:

A 4-bit binary code
identifying i;he.:,different types of
dictionary entries. All data entries start
with 0, and allnondata entries start
with 1.

PN:

See

One load module of the compiler.
~~~!!ure=~!l!!2'

sou,"ce program_

~rioritt:
The number assigned to a section
1n the Procedure Division. All sections
having the same priority are loaded
together as a segment. One of these, the
root segment, resides in main storage
throughout execution of: the program. 'l'he
other segaents are loaded in order of the
priority number. each s'egment overlaying
tbe one bef~re •

.!!!g~L.£Q~:

Hg§:!=~of_~_Q~§_clau~_~ith the
DEf!lill~_ID!..:.:2l!!:ion:
A data-name for.

a
variable-length group item which does not
. itself contain an OCCURS clause with the
DEPENDING ON option, but at least one of
its subordinate items at the next level
does contain such an OCCURS clause.
A 4-bitbinary code
ident1fyirig the different categories ofLD
entries.

'!!!~£Q~:

E!:ocedure-name, com2!.ler-qgnerated_l§!!:t: A
point in the procedure instructions which
the compiler designates to be the object of
a branch instruction and, therefore,
defines by lIeans of: a GN number.
E!:ocedure-name, sO~2-proqram (PUt: A
user-assigned name.which appears in Area A
of the soqrce program Procedure Division
once, and which maybe used as the object
of procedure-branching source statements.
procedure-name,' variablL.1!lt: The object
of a br. anching instruction "hich may. vary
at execution time because. it is modified by
a PERFORM or ALTER statement.
~~!~LA';"text:

n2ng~_Q~~sng:
A file description,
communication description, sort
description, report description, or
condition-name used as an operand in the
source program.

544

Glossary

A text of assembler
language-like instructions produced by
phase 51 and qsed by phase 6 in generating
uchine instructions for the object module
or used by phases 62 and 63 in generating
Pro.c::edure A1.;.text for phase 64. See
"Section 5.' Data Areas" forfor.at.

U.censed NateLial .. Prop erty of IBH

Proceda~e

A1-te7~2

~

ta~t

O~

assewhler

language::llT(e·-).li:S;:,~ II c:': io ns ',):!~ ad He e d by

phase 63 and used by phase 64 in generating
machine instructions for -tI,e object mo(lnle.
See "Section 5. Data Areas" for format.
R£Q£~£'§~P..1Q:f!1f:

A.

te:cc.: produced by phase 6 or 64

for phase SA, if the SXREF or the IREF

compiler option is in effect. to be used in
producing a cross-reference listing. Each
element indicates the card number of the
statehlent in which a user-assigned name vas
:ceierTed to.

Unit. of add;:-essabilitl in

the optimizer versj.on of the machine
language program. Each P:;:ocedure block
consists of appro:cimately 1:096 bytes of
code. Host Plls and GUs uithin a Proc;edU:i.:·3
block are addressed as displacements added
to a base register uhich contains the
address of the first instruction .::r£ the
Procedure blocl,.
Procedure IC--te:,t: ili.:e1:t has'3d on the
sourceprograill-procedure Divisiol.l and
Report Briter statements iu the Data
Division Q It is generated ill its initial
(PO) for-ruby phases "120 1Bo and 22. and
modified by phases 3 and 4. Phases 50 and
51 use it to generate Procedure n-text.
ProglElL.f!.1obal TEhJ.& (PGfL~ An al~ea of
main storage in the object Ulodule llhich
contains virtuals o literals. and address
constants used by the ohject code of the
generated prcgrar;"
nassage m~it·ten to the
SYSTERtl dataset by phase 00 uhen the
compiler is operating muder the Tillie
Sharing OptiOD (rSO) of the operating
system,"
.Eb:.Qgg~'HLlil§§S~:

lnlE::t~L~,~

il.

PO-"i:ex'i::
The form of pj~oced.ll.re IC .. te:t"t
created firsto by phas·es 12 (for Report
Briter). 1B (for the Procedure Divisio~ u
and 22 (fol: Q-Rontilles), as input to phase
3.
P1-·te,:t: 'rhe form of ProceauI:e IC·-te"~t
Created by phase 3 as input. to phase tL
P2-tezt:
The form of Procedure Ie-text
created by phase I~ a s in pu t to phases 50
and 51.

Object module sUbI:outines
generated by phase 22 and used to calculate
the length of a variable-length field
defined by an OCCURS ••• DEPENDING ON clause
and the location of the U"ariablY'-located
field uhich follows it.

g=Rolltin~:

gyaliii.§fL!llHll.§: A useJ:-assigned name uhich
must be referred to along uith anotheJ: name
to be unique, since it is used to define
mOJ:e than one item in the source progJ:am.
FOJ: data-names, the qualifieJ: is the name
of a group to Hhich this item is
subordinate, and for procedure-names the
qualifier is the section-name of the
section in t-lhich the procedure is defined.

!1lJt:.I.§.!£:!;.:

Information produced by phase 6
or 64 for the linkage editor, indicating
all address constants in the object module
uhich @ust be relocated.

1:QQ.L.§§£L!.!l§.!l.t: That portion of a segmented
object module uhich is resident in storage
throughout object program execution.

SD-text:

describing

The forill of Data IC-text

sor:t description entries.

§.%1m.i!g2._.£§:§.!L1.Q£;S!ig!:._..lli!l1.L: A full Hord
cell in the TGT contai~ing the address of a
field in the data area which is variably
located because it follous an
OCCURS •• QDEPENDING ON field in the same
recoI:d.
section: A series of source progr:am
pr:ocedur:e illS"tructions grouped under the
same section-name.
gSLlli.§l!i: '1'ha t por tion of a segmented
object module uhich constitutes one load
hlodule. It consists of all the
instructions in those sections uith the
sal~e priority.
2'§Slli!~.!!i£r.Li.Q1!~

The feature by tlhich the
source programmer can organize his object
prograhl into several load modules, or
segments, uhich may overlay each other
during execution.
!.!lggyl.§! The source program input to
a singIe execution of the compiler.

2Qg~£§

§ybject hig£archy: The order of all group
and elementary items defined uithin the
first group item to appear in a MOVE
CORRESPONDING statement.

tablet: A contiguous area
in main storage containing information of a
particular type. A table is composed of a
variahle number of entries of a fixed,
usually identical, format.

Uble.J~piler

table-locator:
A field divided
conceptually-into tvo parts, the first of
uhich identifies the block vithin a table
and the second of which specifies the
displacement uithin the block at which an
entry may be found.
Glossary

545

Licensed Material - Property of IBM

TA~~R-l!able-A£~2_~~ng~~~~_~~g~ive

!m!ll.inesl.: A group of routines resident
throughout compilatiori in phase 00 and
accessible to all phases, which get space
for, build, and provide access to compiler
tab;Les.
TAMER spa~: space in main storage
occupied by TAMER tables. It follows (that
is, is in higher storage) COBOL space.
1~2~.£lobaLTab~1:GTl.:

An area of main
storage in the object module containing
information and work areas for use by the
object program. Its format is given in
"Appendix B: Object Module. II
A field temporarily
allocated in the Tsportion of the TGT to
hold the result of an arithmetic
computation, where that result must be
placed in several receiving fields and each
receiving field may require conversion or
truncation. The space is allocated by
phase 50.

te~£~y~sult:

Information created and written on a
work file by one phase for subsequent
reading by another phase g representing a
stage in the translation of the source
module into an object module.

~gxt:

12.1::

See Task

2.lo12~L~!:!lg.

n!L.l!~Q.!.~-!~formatiQ!l~lockl.:

One of 36
eight-byte cells in COMMON uS2d to provide
information about TArtER tables. The TIBs

546

Glossary

are numbered and can be reassigned after a
table has been released. See "Appendix A:
Table and Dictionary Handling."
A portion of main storage
reserved during execution time to contain
segments which are not permanently resident
in main storage. It contains one such
segment at a time and is large enough to
hold the largest non-resident segment in
the program.
tr~si!illL~1,;.~:

variable-length field: A data item
described by an OCCURS ••• DEPENDING ON
clause, whose length depends on the value
of the object of DEPENDING ON.
~rb

atring:

A verb and its operands.

virtual: T~e name of a procedure or table
referenced by a procedure. but not defined
in the source module. It is necessary
because of a CALL to an external procedure
or a branch to a COBOL library subroutine.
At execution time, if neither the DYNAM nor
the RESIDENT option vas specified, the
address of all procedures r.eferred to by
virtuals (which have been linkage edited
into the load »lOdu.le) are stored in the
Program Global Table. If the DYNAM or the
RESIDEIIT option is in effect, library
subroutines are dynamically loaded, and if
the DYNAM option is in effect, subprograms
are dynamically loaded.

Licensed Material - Property of IBM

DIAGRAMS

Diagrams

547

....t::II»

LISTER PHASES

IQ

Ii!EI
-"

~

11

....

~

t::I
CD

IP-text
SYSIN

In

....
IQ
I'

PHASE 05

PHASE 06

PHASE 08

Scans Source
program.

Sorts source
program.

Produces
Lister option
output.

Inserts
syntactic

Inserts
crossreferences.

SYSPRINT**

'COBOL
source program F"SY''\'YY'»,,::'<'0,'\'Y)>>"1

o

Ki

c+

~

CD

o
til
"-

SYSUT4
If LIB and LSTONL Y
or LSTCOMP

tJf

markers.

I I

If FDECK

If LSTCOMP

n

o
o

til

I:'"

n

o

EI

""........
~

LEGEND:

I:'"

~~~~~~~

m

Transfer of data to and
from data sets
Transfer of data
in storage

....
o

::l
In

m
~

3

~

m

....

11
""If LVL is in effect, output is written on SYSUT6
instead of on SYSPRINT.

I»
I-'

It:J

....t::I
I»

IQ

~

•
In

11

o

""l!l....

"\Wb§1tF~"'\"&~~ ~";::':r:"rcl!

til

o

L-'

n

o

II

'"....
~

~

'II LSTCOMP u' LIB .. in ~ffcci. "'put i. rUdd 'n."
SVSUT4 iMIt''''' ,,' 'rnmSYSIN
"11 LVL IS ", dl1X:1. WlllUI i5wrill~"u"SYSUT6

illit~74b~£srif::5r1

C1)

::::t
Ul
C1)

P3:

~

CD
11

....I»

~

....I»t:'

III

11
I»
Iii
Ul

I'd
11

o

't:I

l!l

rt

Iocj

o

HI
\J1
\J1

1-4
til
:I:

t'I'l

E

1l'I
1l'I

IQ
H

If.I

o

III

+'

I>-t

fltil

III

'n
Q

EI

~

CIS

o

'"'

III

....CIS

'n

'QI"'

1;;
E

rc
QI
III

e

""oQI

'n
...1

PROCTAS and SEc;INDX.

PROCTAB, CARDINDX, SEGINOX, PRQCINOX, ond PROGSUM
Debug

Do.

....'OJ"'

Debug text for SYMDMP

o.STATE HOPTi, in

Prod.rce.

.r!
110
EI

o

E-Iext

debugging
information

~fv!~f~!!~ r----------- ----------- -- ------ ----- ---------l

fo.FLOW,
STATE,or
SVMOMP.

I

IfERRTBl
I

overflow,
I

/

U

I

"

...1

o
o

IQ

IfSXRfFor
XREf

re~ue.led

U

III

I>

cro..-reference
listing

ERROR PROCESSING P'~H~AS~E:S~~~*S7So/"!1S#1mt:*t3'
PHASE 71

PHA5En

Conloin.

Conloin.

'eKhfo.

le~tf~

"III
o

QI

...:
+'

11-1
PHASE 70

o

1:1
til

HD, TXT, ondRlD
,Iot"rnen!'> for obiect

______ __________________
:ro~r~

-t~;:7::;~ e~.:~5!.6_.

Debug-I .. x'

________________

'n
-1/

III
QI

~'- _-Jr

Q

1 E-le"tloph:ne70ifph:.,e.
I 62. 63, and 64 lextprClcejOing
I bypa .... d •

.:>s£;;~:,J~J;;:7£A:0f!Vt+,*1At7:0'L0~j/J/::+tA7V\F,,~SUT'

9;
SYSUTJ

I

~'-~~m

I

t'I'l

:

_o.!e!!~""~ ____________ .J

+'

1-1
CIS
III

"

ERRJBL
overfl"w

ERRTBL

PHASE 80
Do FIPS
proce~ing;

IfLVl;. in eHect, outp!J1 ;swrillen on SYSUT6 in"cod of
SYSPRINT, except for noou'put from ph"", 80.

wrilesource
Ii.ling

....
EI

CIS
1-1
til
CIS

'n
Q

t;t

.....

OVERVIEW

I»

IQ

H
I»
iii

.
N

ttl
I»
H
rt'

....
Part 2

::Ii

]

CD
rt'

::r

0
p.

0
HI

CONLL

0

"C

CD

H
I»
rt'

i--

AND I/O

.....
0
=:I

Phases 00
01
02

1-3
I»
tI'

.....

I I

Phase 04

CD

I

I

REFORMATTED
SOURCE CODE
LISTING AND
EMBEDDED
CROSSREFERENCES

\DENTI FICATION
ENVIRONMENT
AND DATA
DIVISIONS
TRANSLATION

PROCEDURE
DIVISION
TRANSLATION

Phases 05
06
08

Phases 10
12
20
21
22

Phases 1B
3
35
40
45
50
51

Part3B

Part 4

Part 5

0

HI

Part 3

n

0
=:I
rt'
CD
=:I
rt'
til

,...t"
0
CD
=:I

~

.....

I»

II

Phases 50
51
6

OPTIMIZATION
OF OBJECT
MODULE

Phases 62
63
64

DEBUG DATA

SET
CREATION

Phases 25
65

IQ

H
I»
iii
til
U1
U1
U1

til
CD
P.

I

OBJECT
MODULE
PRODUCTION

t;t

Part3A

13:
I»

ERROR
MESSAGES,
DIAGNOSTICS,
CROSSREFERENCE
LISTINGS

Part 7

Part 8

,...

I»

.....
ttl
H

Phases 6A
70
71

0
'1:1

72

'"I

80
Part 6

rt'
CD

H

Part 9

CD
H

r+

0

HI

H
III
::Ii

....PIt:I

INPUTS

I.Cl

FUNCTIONS

RESULTS

Controls compilationa nd performs 110 functions COPY and
formatted listing

11
I»

EI

SYSPRINT or SYSTERM
Part 3

If SOURCE
Translates Identification, Environment, & Data Divisions

N
SYSLIB

Translates Procedure Division

'tI
I»

Source listing
object module

Part 4
PartS

11

(i-

If DECK

Produces Object Module

Part 6

N
Optimizes Object Module
(1)

(i~

0

~

0

(

II

Other

Produces Debug Data Set

User

0

If LINK
L~~=----+-----c.~\ Object code

PartS

Libraries
Issues error messages, diagnostics, & cross-reference listings

Part 9

HI

"C

SYSLINK

Part 7

3

Reformats source code listing and embeds cross-references

,

--1.1------

SYSUT5

I I

If SYMDMP

(1)

Debug Data

Set

11
PI

....
(i-

SYSPRINT or SYSTERM

0

1:1
If XREF. SXREF. or LVL

0
CI

Error messages
cross-reference
source listing with
F1PSfiag

(1)

11

....CI
(1)

C

If LSTONLY or LSTCOMP

....
I:'"

0

If FDECK

(1)

::I
In
SYSUT4

If LSTCOMP

(1)

P.
3

~

m

....

11

I»
....
'tI

11
0

....t:I
I»

"C

11

11

I.Cl

I»
IS

Ul

m
(i-

'-=
0
HI

VI
U1

--I

H
tJI
3

o

INPUTS

1-'.

FUNCTIONS

r;;;'~'~~tc"'·""";Ai.lIC";;'4'lii!il'k\>"""(5£i::'·1·1

J0

III
;0

til
H
til

'd
11

o
o(i)

III
III

SYSIN

I--+------------i>

I »l

PHASE 0 4 4
Process BASIS and COPY statements.

~

SYSUT4

f~
-S"

I~·:.',
"'1
...

~

~.~

":":-

/:;-,

o

SYSPRINT or
SYSUT6 if
LVL source
listing after

1'1

~r

....oI:"'

III
l:'
III
III
p..
t:It

~

(i)

....

1'1

I»
....

....
t:;I

III
IQ

1'1

III

iii
III

'd
1'1

o

."
III
1'1

IT

'..jI!lIl@TranslatesVALUEandPICTUREciauses

~"tI

11111
11111

::st'l"

@ Produces dictionary entries;

~~

III •
t'I"

Generates Data A-text

OCS:
::SID

Generates Q-routines

....

----cD

SYSUT2

-----oo-@

t'I"

go

SYSUT4

~

0

111
0
"CI
(I)

11

III
t'I"

....

0

::s

o
o

H
~
(I)

::s

....t'I"
....n
III
....t'I"

@

111

.
0

::s

til

::s

....
11
CI

0

::s
a(I)
::s

.

t'I"

@

Description
Reads source cards and stores information in the form of Data IC-text, builds tables, sets
cells in COMMON, analyzes syntax, writes source on SYSPRINT if SOURCE is in effect
or on SYSUT6 if LVL is in effect. Reads source from SYSUT4 if LSTCOMP or LIB.
If source program contains Report Section, generates Report Writer Subprogram (for the
structure of this program see the chapter "Report Writer Subprogram") as Data IC-text
scans input for errors and generates E-text, writes Report Section on SYSPRINT if
SOURCE is in effect (or on SYSUT6 if LBL is in effect), builds TAMER tables and sets
COMMON cells. If VERB is in effect generates Listing A-text. Reads source from
SYSUT4 if LSTCOMP or LIB

Translates VALUE and PICTURE clauses from Data IC-text to ATF-text, writes partial
dictionary entry for each LO, scans input for errors and generates E-text, builds TAMER
tables .

Produces dum~y FD and SO dictionary entries, builds CD; LD. RD. and 10 entries,
completes Data A-text, generates a-routines, produces E-tl!xt. buitds TAMER tables;
completes FO and SO entries, writes Data A-text for DeBs and DE CBs. determines
buffer sizes, produces E-text.

Module

Chapter

Chart

IKFCBL10

Phase 10

I

IKFCBL12

Phase 12

I CE-CJ

IKFCBL20

Phase 20

IDA-DO

CA-CD

IKFCBL22

Phase 22

I DE-DL

IKFCBL21

Phase 21

I DM-DN

to'
~.

n

cD

::s
Ul

ID

~

cs:
~
ID

....
III
11

~

III
1:1

~

....
t;I

t;I

III

III
t'I"
III

\.CI

~
a

Ul

U1

0'1
U1

....CI
....Ul
....0
t;I

1:1

"tI
11

o

"0
cD
11
t'I"

'<

o

111
H
tIl
:3

....t:I

SYSUT2

III
I.Cl

11

INPUTS

III

FUNCTIONS

53

.

to.)

o ---------------Encodes

Storage

I'd
III

11

SYSUT2

Dictionary

r!-

.

Procedur~ Division

®
® ~:$S:~D-:t:m~n~a:t;:r-:-pe:~-Inserts dictionary attributes in Procedure le·text
Expands CORRESPONDING statements

®

111

RESULTS
SYSPRINT or SYSUT6
If SOURCE

--JJ---'-p'-"O""""'d"'","'
•."'n."'m""es:......_ _ _ _ _.,

Analyzes syntax
Expands verbs

:::;:
(1)

SYSUTl

r!tr"

0
p,
0

HI
SYSUT3

0

"d
(1)

L-----------f---lJ>=--lf

11

~~~~ization

III
r!-

....

..
0

::s

I'd

11
0
0
(1)

P,

J:l

Description

0
®

11
<1l

....
....III

@

::s

®f

t:I
CI

....0

Module

Chapter

Chart

Reads Procedure Division of source program; creates dictionary entries for procedure-names:
writes Procedure Division on SYSPRINT if SOURCE is in effect (or on SYSUT6 if LVL is in
effect!; processes Declaratives Section; generates Listing A·text if VERB is in effect.
Reads source programs from SYSIN or SYSUT4 if LIB or LSTCOMP.

CK

Creates P1-text; replaces source program names with dictionary attributes: builds Data
Division Glossary of all source program data-names; performs special processing on
procedure-names in segmented programs, verb strings, and verb strings with
CORRESPONDING options: performs syntax analysis requiring dictionary; releases
dictionary_

I

IKFCBL30

I

Phase 30

I

EA-EC

Processes USE FOR DEBUGGING statements, adds to source programs the text necessary to
cause invocation of the USE FOR DEBUGGING declaratives, only invoked if WITH
DEBUGGING mode is specified and a USE FOR DEBUGGING is present.

I

IKFCBL35

I

Phase 35

I

ED·EI

....oto'
(1)

Transaltes PHext from SYSUT3'"' to P2-text on SYSUn; transforms P2-text to ATM-text
on SYSUT2++ for UNSTR ING verb, expands complex and implied verbs.

IKFCBL40

Phase 40

FA-Fe

::s
UI
(I)

Analyzes and translates UNSTR ING verb from ATM-text on SYSUT2+ + to P2-text on SYSUn.

IKFCBL45

Phase 45

FO-FF

P,

1-3
11

Processes arithmetic verbs from SYSUT1 to SYSUT2.

IKFCBL50

Phase 50

GA-GE

Gl:

::s

Process input/output verbs and other non-arithmetic verbs from SYSRT2 to
SYSun.

IKFCBL51

Phase 51

GF-GJ

III

III

....
III

+
++

~

(I)

....
....I»

SYSUT2 if Phase 35 has been invoked.
SYSUT3 if Phase 35 has been invoked.

11

....

r!-

0

::s

....
t:I

I»
I.Cl

11
I»

a

{JI

110

I'd

11

o

'tl
(1)

11
r!-

'<

o

HI
111
C1\

-.J

H
IJ:J
:::;:

....
t;I

INPUTS

PI
IQ

~""'"''''''

SYSUTl

Ii
PI

SYSUT4

iii

~~

Produces

®

I--~--~~.

SYSUT2

:

assembler-like instructions

OptImizes Program Global Table

-

Assigns base regIsters

':

I

Creates object program
~; ~;:'

Ii

j:

mtermedi~te
t, 0 ---_______________
_
~;

N

FUNCTIONS

SYSUT1

RESULTS

., ....",.•.• """,';';.'.0'.',' .:....... "'" ;''':~'';;'=''.....:...:.•

.hJ.,J'" ' ....-~....-.;- I. ;, •.~":'d-':

I.. \

DEF-text

~

ii' ~~ ~'. -,.} ?~.,t;:~ :'..,;,~~t·",.~A~

<+

SYSUTl
....----...

If XAEF or
SXREF

SYSUT3
/

If SXAEF or
XREF

".r

0\
SYSLIN

a:
(D

ESD, TX'

SYSUT3

<+
o
p.
o

SYSPUNCH

HI

o

statements for
object programs

PMAP, DMAP, or
CLiST

Global Tables:
literal pools, object
program listing

I!lPI

SYSPRINT

....o<+

1:1

o

tJ"

---

SYSUT2

u.

<+

ESD, TXT, and RLD

II DECK

't:I

~

and RL~
stateme
forobje
prograrr

II LOAD

::r

Description

0)

Module

Chapter

Chart

Receives P2-text as input on SYSUT1; produces intermediate Procedure A-text. intermediate
Optimization A-text, and P2-text on SYSUT2. and Optimization A-text on SVSUT3.

I

IKFCBL5tl

Phase 50

I

GD

Receives intermediate Procedure A-text and intermediate Optimization A-text, P2-text on
SYSUT2. produces Procedure A-text on SYSUT1_

I IKFCBL51

Phase 51

I

GJ

When OPT is not in effect; determines object program storage for Task Global Table and
Program Global Table; optimizes literals, virtuals. source program procedure-names. and
compiler-generated procedure-names; generates and writes machine language instructions;
writes object text for data area of program, writes object text for initialization routines;
passes E-text to phase 70.
When OPT is in effect, the functions described in Part 7 of this diagram take place instead.

I

Phase 6

I

STATE

I

:01

o

~
~

CD
ttl

Ii
o
p.

g

....o<+

.1:1

®

IKFCBL60

HA-H F

....ot-'
(D

1:1
!II

CD

p.

a:

~

...
CD

11

I»

~

ttl

g

....

't:I

~

'<

t;I

PI
IQ

iii

!II

~
<+

o

HI
U1
0\
\0

H
tIl
13

....0

INPUTS

III

\Q

,-----------..,~~I

11
III
EI

.

I\J

FUNCTIONS

RESULTS

SYSUTl

@DeterminesstoragereQUirements
If DMAP, PMAP, or CLIST

10

Optimizes literals, virtuals, PNs, GNs
SYSUT4

~-------....-111111

®

If STATE or SYMDMP

Generates object program with optimized

~ddress.ability

"Cl
III
t1

SYSUT2

....

Storage

SYSUT2

-..I

ERRTBL

SYSUT4

I----.-~.....
I

SYSLIN

@completesobjectprogram

13:
ID

If LINK

....

\:J"

0

j:l<

0

If DECK

HI

0

If PMAP. DMAP,
CUST

"C
ID
t1
III

....
....

..
0

1:1

0
"C

....
....

Description

10

1:1

0

HI

0
t:r

Chart

I

SYSUTl

IA·ID
IfSXREF or
XREF

10

DEF·text

SYSUT3
Produces Procedure A I·text; inserts information for addressing PNs and GNs and Procedure
Blocks in instructions; generates all remaining instructions, except load instructions;
writes segmented programs in order of ascemling IHIOflty
Completes instructions from Procoourl' A I \f~xt, wrile\ object program text and REF·text
from Procedure Al·text: writes INITI, INIT2. ilnf11NIT3; writ"l RlD·text

I

IKFCBl63

I

Phase 63

I

IE·IJ

IKFCBl64

I

Phase 64

I

IK·ID

II SXREF or

XREF

....to<

C'l
ID
tI
!II

II)

~

II:

tB
j:l<

I:l
I-'
ID

"0

....o
III

"C

~

III

!II

Phase 62

ID
C'l

0

EI

I

W-

....

\Q

IKFCBl62

BLOCK fields; calculates displacements; determines object program storage requirements
tor Procedure DiviSion; optimizes usage for both IJermanent and temporary reglHer
assignments

....EI r®
....0~
N

Chapter

Module

Determines object program storage allocation for Task Global Table; optimizes literals and
and virtuals by processing Optimization A-text, determines storage allocation in Program
Global Table for these, for PN and GN cells, and for OCBADR, VNI. and PROCEOURE

........
g

~

~

II)

....11

~
"Cl

a

"C

~

....

'<

o

Ht
U1
-..I
....

H

at

13:

....t:I

INPUTS

FUNCTIONS

RESULTS

SYSUT3 '

I»

oQ

IfSYMDMP

t'I

I»
II

@

Builds

SYSUT5

t~bles for SVMDMP

Writes Debug Data Set

N

®

:...

Produc;es debugging information for SYMDMP, STATE,

and FLOW

SYSLIN
If LOAD and STATE

Completes Debug Data Set

r+

(XI
If STATE
If DECK and STATE

til
CD

SYSUT4

r+

1:1"

If STATE or SYMDMP

o

SVSUT5

~ndOPT

~

If SYMDMP

o
....
o

""...
CD

I»

....r+o
1::1

t:I
CD
t:r
~

oQ

t:I

o
®

Description

Module

Chapter

Chart

If SYMDMP is in effect, builds OBODOTAB table for OCCURS .. DEPENDING ON clauses;
builds DATATAB table; writes tables on SYSUT5 data set.

I

IKFCBl25

Phase 25

I DO·DR

For the FLOW option, stores number of traces requested in DEBUG TABLE of Task Global
Table. For STATE. produces PRDCTAB and SEGINQX tables and writes them in object
module. For SYMDMP, produces CARDINDX, PROCrNQX. PROGSUM, PROCTAB, and
SEGINDX tables and write~ them Oil Debug Data Set (SYSUT5).

I

IKFCBl65

Phase 65

I IP-Ia

l!lI»

en

....t"'

r+

CD

o

...o
m
....r+o

Ii:CD

1:1

'0
~

....

CD

~

til

~

CD
11

...

eo

o

....
I»
...
I»
t:I

oQ

..
UI

U1

.....

W

1:1
I»

ttl

!:;

o

...

""~

r+

'<

o
....
H
til
til

....

t::I

INPUTS

I»

SYSUT4

\Q

11

E-text

'"

Storage

I

RESULTS
SYSPRINT or SYSTERM

0
~®

r---t--r----------~

I»
iii

,

FUNCTIONS

Contains text for and produces error messages

Error messages

Listing~:

II XREF or SXREF

Error
crolos·reference
FIPS flag

Produces cross-reference listing

ERRTBL

n"C1
11 I»
o 11

SYSUTl

III

DEF-text

~

-------i~

@ Flags FIPS deviations

-

IILVL

If XREF or SXREF

lIIeT

1-0

J

SYSUT3

!:tI,
(!)

H!

SYSUT6

(!)tlI:
1"1 (!)
(!)eT

REF-text

Source
Listing

::t::r

00
(!)P.

If XREF or SXREF

" LVL

t"'O

.... HI

III

.... ""

eTO

::t

(!)

\QI"I

III I»

Desaiption

Module

Chapter

IKFCBL04
IKFCBLlO
IKFCBLl2
IKFCBLlB
IKFCBL20
IKFCBL22
IKFCBL21
IKFCBL25
IKFCBL30
IKFCBL35
IKFCBL40
IKFCBL45
IKFCBL50
IKFCBL51
IKFCBL60
IKFCBL62
IKFCBL63
IKFCBL64
IKFCBL65

Phase 04
Phase 10
Phase 12
Phase 1B

Contains text for error messages.

IKFCBL71.70
IKFCBL72

Phases 70
71
72

Formats messages and prints them on SYSPRINT or, if TEAM is in effect. on SYSTERM.

IKFCBL70

Phases 70
71
72

JA

®

If XREF is in effect, produces a source-ordered cross-reference listing; if SXREF is in
effect, produces an alphabetically ordered cross-reference listing.

IKFCBL6A

Phase 6A

IR

@)

If lVl is in effect, scans COBOL source program after compilation is complete and produces
messages indicating deviations from the Federal Information Processing Standard (FIPSI.

IKFCBLBO

Phase 80

MAJ

0

Produces E-text as it scans source program listing and analyzes syntax.

....
eT

..

0
::t

t'iI

1"1

H.

0

H

01:
(!)

III
III

I»
\Q

(!)

..

III

....
t::I

I»

\Q

::t

0
III

....n
eT

.
III

I»
::t
P.

....
I»
t::I

\Q

1"1

III

iii
III

Chart

Phase 20
Phase 22
Phase 21
Phase 25
Phase 3
Phase 35

Phase 4
Phase
Phase
Phase
Phase
Phase

45
50
51
6
62

Phase 63
Phase 64
Phase 65

....t"'

n

In

fJ:(I)
P.
I
I

Ill:

~
CD
11

....
~
"C1

~
(!)

1"1
eT

'<

o

HI

H

til
VI
...,J

\11

:z

t::I
....

OOOTBt: Tabl •

I»

~,/

,.

lQ

11

•w

•

PHASE 22

It!

::r
I»

In

r

QRTN Tabl.

QITBL Tabla

--t.

CD

OBOOOTAB lobi.

QILOOP

1

SRCHQRTN

~
Build
OBOOOTAB

OOOBLD

N
VI

If any
000.

o

~

ENOPl
~ Control passes

~ complete
~
OOOTBL

Build
OOOTBL

table;

are present

~toBEGPASS

table

~
11
I»

rt"
....

OCCTBL

Phase 22

o

,/

1::1

In

!2.!.!::!.lli
N~

Pha..21
via

Phase

i

I

NORENAMS

~1

EXCHRENM

PHASE25

Iinilializanon I

OCCTEST

II~~~RSI~

Test for
presence

of 000.

..

~

COBOL
Dictionary

WRITES

PROCESLO
SETNAM
These routines are U5ed by

BLOOBOOO and BEGPASS

~

Build

~

entries

for
tobles

__

Routine"s
to process

Enter data

dirferent

prepare

kinds of

print entry
on Debug

entries

I~~

....t::I
I»
lQ

&l

iii

In

D
Routine

0

Data set

Table

Flow of Control

D

~

Branch Table

.. ...

Phase 22

BLDRO

I
If no
0005 ore
present

BEGPASS

TESTSUBS

Build

Test for
subscripted

OATATAB
lable

....t"'

n

ID
1::1

I

In

ID

j:b

sel

LOCNXT

Flow of Data

data set

Debug
data

GElutr
Legend:

in tables,
to

items; use

entries in

OCCTBL
lable

Phase

22

~I

.. I

VARLTBL

MASTOOO

r+

ID
11

....

I-

I---

::0:
I»

I»

SYSUT~

....
ttl

11
0

"CI
ID
11

r+

'<
0

HI
VI
-.I
-.I

H

tJI

til

t:I

~.

ALTSCAN

I»
\Q

Process ALTER
verbs if any UfOs

11
I»
III

"'"

ENDDBG

Invalidates DEBUG·
ITEM at end of
dictionary if UFOs

It!
I:r'
I»
1/1
CD

Dictionary

COMMON

r-

w

PHZSWl

GENOP

OEF-tex

I

names in source

I

CARDNO

Source card number

Contains all
program with

their attributes.

o

CD
11

~

TSlWRO

~.

o

MAP bit off

t:I
1/1

MAPBi'

Changes major
code to 7 for
each data item
in dictionary
under FD with
WRITE ONLY

IND2TBL

Record Key
Information

~

switch on.

GLOSRY

PHINIT
PHASE 00

Initializes phase
operations,
branches to
TSTWROor

~

MAP
bitan

GLOSRY.

Writes Data
Division glossary.
performs
TSTWRO
operation.

...

...

READFN

READ. RETURN verbs ...

'tI

TSlWRO, GLOSRY,
PHCTRL, and other

~"

GLORET

PHCTRL

Initializes
PHCTRL
operations.
Reads first
block of input.

Reads text element,
branches to appro·
priate routine. or
passes element on
without change.

~

CORRESPONDING in
ADD, SUBTRACT, or
MOVE statements""

Inserts recordname after filename.

·

CORRTN

for matching

·

pairs.

eD

Name: is it unique?
SEARCH

® Name is unique
@

~

J

PHASE 22

...

Expands into
simple statements

L.

Dummy attributes

Determines if
name is unique in
dictionary,

Substitute attributes for unique name .....
INDKEY Table
Da'a items and
literals associated
with tables

SEARCH verbs

r

II ..

of special registers

·

STSRCH

Adds attributes
of all data items
associated with
tables.

All other elements passed on without change
SYSUT2

Legend:
.. ERROR routine called for errors requiring E-text.

PHASE lB

.... SEARCH routine determines uniqueness in dictionary names
in verb string.

OVAR Table

PHASE 2

~FIOWOf Control

0

Data set

c=:::JT.bl.

t:I

~.

with data-names

processors)

Sequence of related operations.

..:.........-.. Flow of data

I'''-''~

PNTIN

IUs~ by PO-text

...... GENQP routine replaces names with their dictionary
attributes. adds literals to condition strings, adds exit lists
to OPEN verb strings. inserts segmentation control breaks.
writes DEF-text.

96

Proce"f",r

CONTBl
LTlTBl

new pro.;edun, block!

procedure nome (PN)
definition

~C;;;j~~~ion ~

ttl

::r
I»
rn
0\

generated
procedure-nome
(GNjdefinilion

Pmeed ..... ,.

Procn.
lorGN

'PH62

H
I»

Pha..,51

yj ..

Ph,neOO

"'''''

rnilioljUl~

liooRoutine.

o

I TG~

r-'-----r------"

rn
Ph.ne 50

BtuSTBlloble~

procedure"""'" d~fi-

I
I

I "". .
•

R6400

r"A"',~.

reference

I

I.

14ondl5

DRPLTBtloole

DMAP

2

"_"preceding

PNFWDBTBtabl ..

bronch

Printliler",1

option in

.

pool,DISPLAY
Iiter",l.a,,,IPGT
(ilrMAp, (LIST,

-!";-';;";'-;:;:-::c:':-t Pha--.
,e63

O""'APoplion i.
SE6020tabl,.

SYSPRINT

Proce..
operclion
code.

LoodinSlruction

block "....,b".

A-text

R6202loble

',~,hT,".
~
for Procedure
A-t .."toperolion

Several routine.

ADDlGTH

for proc""'ng
Procedure A-te~1

elementsond
"ddi"g to ACCUMCYR

All

cl:ldeetem ..n"

REGLIST
ENDPTX

Pro" .... 10'
eno;!ofProce'
dureA-Text
ond Phase

1-..
Flow of Control

ct~e ..

Add length
ofi,,,t,,,.:-

ACCUMTR

Legend:

DOQ--

SAVE i,,,I.uelionunril

pro.;eSlin!;l

BLASGTBLloble

I

Proce .. for
operationccxJe.

'_o,h"bI.
~
forl'rocedure

I

~edloh91

Table

~
Proce.. fo,

. 2br'ebron,l,irulruclion

Optimizetion

lneHec!]

1

GNlABTBlrable
Fo,buildingGNFWDBlB

buil~;ng DRPLrBL

For Reg 14-15A.. lg""""nl

forregi,ter

(ifPMAP

For

Build.

DRPTIIland
DRPLTBl

PNlASTBL loble

Fg • .)Uildillll PNFWOBTB

ORPTBllobie

CLIST,
effed)

Forbullding BLASGTBL

,.1",0,~c~:"'~-Text

oplimizo·
tionA-Text
elemen"

Print

t:I

P~

~
-+t

READF2

"0'
ID
~

OEFLDll

Precenror
Optimj%o'ion
A-Tul

'"o

....

I

I-

SYSUTJ

ID

1--4

~

Prinlpermar'lenlreg'.'er

11;~~~;t;MAP, DMAP -/ SYSPRINT

....o

I:"'
ID
t:I

rn

ID

j:l.

III

~
(1)

....H
I»
.....

t:I

ttl
H

I»

"0

lilI!I

loci

....

\Q

rn

o

(1)

H

r+

o

HI
VI
CO

...

H
ttl
III

....I!>
t:j

Routines to

\Q

~

1'1
I!>
51

procenoll
Procedure
A-Text
elements

0\

~

"CI

p-

I!>
Ul

CD

0\

w

o

CD
H

t;j

....
("I-

PNLABTBlioble
To build PNLBDTBl

Phose 62

PNlBDTBL toble

Phase 64

Displacement of PN

PNATBl toble
To build RLDTBl

Phose 62

RlDTBl toble

Phose 64

Process for

For Relocation Dictioncry

CIREF
references

GNATBl toble

Gcrlt'roie

G"

CO

GNREF

Control
CO element

CRLA YTBl table

o

Ul
To odd lengths to :'uffer

MACRO

Ph;:;se 62

GNL8DTBL toble

Pnose 64

ADREF
Phase 62

aLASGTBl table

CNOPI

~

~

GNLABTBLtoble
To build GNlBDTBL
Displacement of GN

Branch tollie
to routine
for proce15ing CO
elements

=:s

L.a...r Relocates TIB oddresses

-I

chonge L to LA
instruction

Routines
for processing CO
elements

Control
routine

Phose 62

To build RLDTBl

L 11, BLOCK.
If necessary

addres$cs;
prime tables
reod first

I!>

VNPTY toble
For building RLD

procedure

Initialization;

relocate TlB

VNPNT8l toble
For building RLO

PNREF

PHASE 63

'"

~

from
Phose 62

Routines for
processing
Macro
element!

Control
routine

~

Routine. for
proces~lng

(NOP
elements

CNOPT to:"lc
Number of lJyte~ for UPDATE

Phase 62

BRANCH
FOURTY8

Routine for
processing
branch
instruction

RLDSORT

r-~

legend:

~OPTRTBl table

C

For use with OPBTBl

Table
Flow of Dolo

Flow of

coo,}~

0

Do
Routine

Brendl Table

by releasing

or paSSIng
tables, closing
files. etc.
SEGTBl table

~9mented programs
L-Phose51

ACMCTR counter
~
Block size

Lp

r.lL___.-J

..

Routines for
processing
all other
operation
code
elements

These
three
routines
ore called
by several
routines in
phase 63

Sort the
RlDTBl
usi..,gtarget
oddren
on key

Block size

'~I ::;;iii:.

..........

.

B
WRITE

Write
Procedure
A-Iexl
elements
SYS2
Writes
Debug-text
iF the STATE
or SYMDMP
option is in
effect

....I:"'
o

CD

=:s

!II
CD
P.
13

~

(1)

....
H

I!>
....

....
I!>
t:j

.Q

Ii

I!>
EO
Ul

"CI

H

o

'"
cD

1'1

c+

0..::

o

HI
lJ1

CD
W

H
tIl
13

"'TMUMC!b

....
1;;1

II>

TENPROC

IQ

11

GTEQlOK

~

-..I

It!

::r

CARDlOC
(10)

Determine

....

build
'
PROCTAB
CARDINDX

SYSUT2
or
SYSUT4

Phase 63 or 6

C'\

111

o

TWENPROC

_.....

--

Debug\

'0
(1)

text

11
II>

........
o

::I
III

PH65
Pho
v

Phos,

I:.

Initiol iza-

tion
routines;

prime

tables

..

....

new
fragment

""""'l..

1

'1

ENDSEG (20)
elements;
enter code

l

1

Write tables
in doto set·

build table's ....J

~

1
_SEGINDX table

KSTATf'

SYSP~NCH

1

J-

T

SYSLIN
CARDINDX table

1--

L

;nto PROCTAB
to indicate

-

1

end
RDF2
Get next

THRTPROC

element

Process

and branch

to

SEGMENT
(30)

processing

elements

PROCINDX table

~

FRTYPROC

l

DISCONTINUITY
(40) element,·
turn on D ISC5W

switch

F2PROcsl
bronch
table

.-

D

l_
D
Data set

Branch Tobie

Flow of Data -8>

1m

Flow of ControT

I

STA TE or
SYMDMP

I

--

LENDOFTBl

I

PNCHSW

EOFON2

Debug
table ptr,
Debug table

for
PROGSUM
table

'-'

options

"

1

SYSUTl

Set Switch,

Collect information

ENDCODE
Release

for TGT;

tobles;

write END
card, write
independent

options:

segments

codes

determine
set return

PROGSUM table

....ot-'

--.J

m

i~y

l

0

legend:

EOF2
Process for

If program
is segmented

REGCOMAD

Process
~

~

SYSUT5

routines

4;GTADTBl tabl;

Routine

Process

~

PROCTAB table

L

(1)

fragment

...

Start

end of

CARDINDX table

-{

tobles

II>

SYSUT5

TXPNCH

elements-

III

LSYMWRITE

'-:"NF

Process

II>
13

,

(1)

::I
(1)

SYSUT2
or
SYSUT4

&J

1=1>

SYSLIN

:3

~

(1)

....II>

11

f-'

Table

It!

11

....II>

'0

11

11

1;;1

IQ

II>
!3
III

o

(1)

....

'<

o

HI
U1
(Xl

U1

H
tIl
:3

Licensed Material - Property of IBM

(Where more than one page reference is given, the major reference is first.)
-nnnn (Report Writer data.-name)
description 522
phase 22 generation of 62
A-text
(see also Listing A-text; Data A-text;
optimization A-text)
constant 127,132
definition 542
direct 127,132
generator routine
description 127-132
phase 50 flowchart 269
phase 51 flowchart 275
use in Arithmetic Translator
routines 124
A-text generator
description 127-132
flowcharts
phase 50 269
phase 51 275
A(INIT1) field (TGT)
description 507
location 505
ABEND codes 483-484
abnormal termination
compiler processing 31,32
SYMDMP processing for 85
ABS.LIN (Report Writer data-name)
523
access methods
BDAM
address elements 80
block address elements 80
buffer areas 82,83
constant definition elements 80
BISAM
address elements 80
block address elements 80
buffer areas 82,83
constant definition elements 80
BSAM
address elements 80
block address elements 80
bu£fer areas 82,83
constant definition elements 80
phase 21 processing 79-84
QISAM
block address elements 80
buffer area size 82
buffer areas 82,83
QSAM
block address elements 80
buffer areas 83
buffer area size 82
Q-routine generation 83
VSAM
address element 80
buffer area size 83

ACCESS routines
definition 542
description 492-500
ENTDEL 494-495
ENTNAM 494
ENTPTR 494
GETPTR 494
LATACP 496
LATGRP 496
LATRNM 495
LATRPT 495
LDELNM 495-496
LOCNXT 495
use
phase 1B 67
phase 3 88
ACCESW cell ~OMMON)
325
ACCMET subroutine 79
ACCUMCTR counter
incrementing of 171
use in phase 62 169
ACMCTR counter
use in ADINCR routine 176
use in phase 63 177
ADATAB cell (COMMON)
330
ADD string 125
ADDLGTH routine 583
ADDRCARD cell (COMMON)
description 333
use in phase 02 48
use in phase 1B 66
use in phase 10 56
addressing parameters 72
address calculation
indexed references 123
subscripted references (see subscripted
references)
address constant definition element
Data A-text format 409
DCB 80,81
DECB 80,81
phase 21 processing 80,81
phase 6 processing 160
phase 64 action 182
address constants of TAMER routines 325
address increment elements
phase 63 processing of 176
phase 64 action 185
procedure A1-text format 441
use in phase 62 169
address increments
phase 6 processing 155
phase 63 processing 176
phase 64 processing 185
Procedure A-text format 435
address reference elements
phase 63 processing of 176
phase 64 action 185

Inu",J(

587

Licensed Material - Property of IBM

address reference elements (continued)
procedure A1-text format 441
use in phase 62 169
address references
phase 6 processing 155
phase 64 processing 185
Procedure A-text format 435
ADINCR routine
description
176
diagram of 583
flowchart 291
ADREF routine (phase 63)
description 176
diagram of 583
flowchart 291
incremented address processing 176
ADREF routine (phase 64), flowchart 296
ADSTAT cell (COMMON)
325
ADV option
bit in COMMON 334
description 29
AGETALL cell (COMMON)
328
AHEADER cell (COMMON)
338
AINSRT cell (COMMON)
325
ALIBEOD cell (COMMON)
339
ALIBSYNA cell (COMMON)
339
ALL literal, procedure IC-text format 421
allocating storage for the PGT,
phase 62 168-170
alphanumeric literal references, procedure
IC-text
PO format 411-418
PU format 424
P1 format 419-423
P2 format 425-432
ALPHTBL table
format 341
use in ph ase 10 57
ALS-ROUT routine 64
ALSTAM cell (COMMON)
325
ALTER statement, OPT option
processing 105-109
ALTSCN routine 58,96
AMAINF cell (COMMON)
325
American National Standard Code for
Information Interchange (see ASCII)
AMICTR cell (COMMON)
330
AMILOC cell (COMMON)
331
AMOVDC cell (COMMON)
328
ANLZUFDS routine
description 101
flowchart 255
APLSCALL cell (COMMON)
331
APOST option
bit in COMMON 333
description 28
APPLY clause 58
APPLY WRITE-ONLY clause, phase 3 processing
for 88
APPWRO switch (COMMON), use in phase 3 88
APRIME cell (COMMON)
325
arithmetic operator, Procedure IC-text
PO format 412
P1 format 422
arithmetic processing switches 125'
arithmetic translator routines
description 124-127
switches for 125
588

arithmetic verb strings 124-127
assembler-text (see A-text)
ATF-text
definition 542
format 408
generation by phase 20 71-72
ATM-text
definition 542
description 433
format (same as P2)
425
input to phase 45 118
phase 4 processing 104
ATM-text analysis, phase 45 118
ATFTXT buffer 72
ATTACH macro instruction
compilation parameters 46
invoking the compiler 31
phase 02 processing 47
base and displacement element
phase 64 action 184
Procedure A-text format 435
base displacement data-name element
phase 64 action 186
procedure A1rtext format 441
base locator number
(see also BL, BLL, SBL)
BL number
field in TGT 508
position in TGT 505
BLL number
field in TGT 509
position in TGT 505
Linkage Section (see BLL)
OPT option processing
optimizing register
assignments 168-170
phase 62 processing 1168-170
SBL number
field in TGT 509
position in TGT 505
base locator reference
phase 6 processing 154
phase 64 processing 184
Procedure A-text format 435
basic lister format, IPTEXT 400
BASIS statement, phase 4 processing 51
BASISRTN routine 210
batch compilation (see BATCH option)
BATC H option
function 26
phase 02 processing for 48
phase 1B processing 66
phase 10 processing 56
phase 6 processing 141-142
phase 62 output 161
phase 65 processing for 189
PHZSW2 bit (COMMON) 334
resetting COMMON cells 324
BATCHSW cell (COMMON)
description 336
phase 02 processing 48
phase 1B processing 66
phase 10 processing 56
BCDCTR cell
description 332
use in compiler options 149

Licensed Material - Property of IBM

BCDISP cell (COMMON)
331
BCDPN table
(see also TEST option)
description 466
phase 65 processing of 187-188
BDAM access method
address elements 80
block address elements 80
buffer areas 82-83
constant definition elements 80
BEGIN routine 71
BEGPASS routine
description 88
flowchart 249
between phase processing 31-33
BGALLPN cell (COMMON) 338
BGALLPRI cell (COMMON)
338
BISAM access method
address elements 80
block address elements 80
buffer areas 80-83
constant definition elements 80
BL
counter in COMMON 143
definition 542
field in TGT 509
phase 6 processing 154
phase 64 processing 184
position in TGT 505
BL field (TGT), phase 62 counter for 163
BL n umber (see BL)
BL reference element 184
BLASGTBL table
format 341-342
use in phase 62 169
BLCHNG elements, phase 51 processing 136
BLCTR cell (COMMON)
description 328
use in phase 22 76
use in phase 6
Data A-text processing 159
Procedure A-text processing 154
space allocation in TGT 143
use in phase 62 163
use in phase 64 184
space allocation 184
text processing 181
BLDOBODO routine
diagram of 87
flowchart 261
BLDRD routine 86
BLL, definition
field in TGT 509
phase 6 processing 154
phase 64 processing 184
BLL field (TGT), phase 62 counter for 163
BLL number (see BLL)
BLLCTR cell (COMMON)
description 326
use in phase 22 76
use in phase 6
Data A-text processing 154
space allocation in TGT 163
use in phase 62 163
use in phase 64 184
block address elements
Data A-text format 409
phase 6 processing 154

phase 21 processing 80
phase 64 action 181
block number element, procedure A1-text
format 441-442
BLs, optimization of 169-170
BLSRCH routine 169
BLUSTBL table
format 342
use in phase 50 132
BLVNTBL table
format 342
function 173
phase 62 processing 165
BMBSRN routine 72
branch instructions
phase 62 processing for 174
phase 63 processing for 175
BRANCH routinedescription 175
diagram of 583
flowchart 288
BSAM access method
address elements 80
block address elements 80
buffer areas 80-83
constant definition elements 80
BUF option
description 25
phase 02 47"48
buffer pointer table 34
buffer size
compilation 47,48
determinatio~ for objett module
81
buffers
compilation 47,48
diagnostic aids 487-488
object program 82,83
BUFSIZE cell (COMMON)
description 336
use in phase 02 48
BUGBLLNO cell (COMMON)
338
BUGSTCRD cell (COMMON)
331
BUGVLCNO cell (COMMON)
338
building the PNLABTBL and GNLABTBL
tables 171
BUSAGE routine 72

CALL macro instruction
invoking the compiler 31
parameters passed to compiler 46
phase 01 processing 46
phase 02 processing 44
CALL string 105
calling sequence dictionary pointer element
phase 64 action 185
Procedure A-text format 436
calling sequence displacement element
phase 64 action 185
Procedure A-text format 436
card number
current
abnormal termination 487
phase 10 processing 55
Debug-text
description 444
phase 6 processing 151-152
Index

589

Licensed Material -Property of IBM

Procedure A-text
description 434
phase 6 processing 152
PO format 412
P1 format 422
P2 format 429
card number elements
phase 63 processing of 177
phase 64 action 183
CARDINDX table
building of 188
format
compiler 343
debug data set 465
CARDLOC elements
debug text processing for" 177
phase 65 processing 187
CARDNOTE save area, use in phase 65 ~89
CBL card
" "
phase 02 processing 48
phase 1B processing 66
phase 10 processing 56
"CD (see communication description)
CD dictionary entries, for~at 450,451
CD entries, data IC-text format 402"·
CD for intitial input field (TGT)
"
description 508
location 505
CD-name reference, procedure"IC-text
P1 format 419
P2 format 425
CD-names, phase 3 processirig 95
CD-text, definition 542
CDECK option 29
CDLCCTR cell (COI1MON)
331
CDSCNA routine 60
CDSECT routine flowchart 240
CDTEXT routine description 76
charts 197-308
checkpoint. debug processing 135
CHECKPT CTR field (TGT)
description 510
pbase 62 counter for 164
position 505
use of CKPCTR counter (COMMON)
146
CHP-ROUT subroutine (Report Writer
subprogram)
definition 521
function 521
GENERATE statement coding 526
CHKTBL table (see CKPTBL table)
CKPCTR cell (COMMON)
description 326
use in phase 21
79
use in phase 6 146
use in phase 62 164
CKPTBL table
description 58-59
format 343
u se in ph a"s e 21
79
clause compatibility 84
CLIST option
bit in COMMON 333
description 27
phase 02 processing 47
phase 62 output 161
phase 64 processing for 179
register assignment 483
590

CLOSE verb, debug processing 135
CLOSER routine, linkage code for 33
CLOSET routine 33
closing data sets 34
CMS interface routine
diagnostic aids 539-541
directories 535
environment 529
error messages 540
flowchart 536-538
functions 529
initialization 533
method of operation 532
operational considerations 531
option list 531
physical characteristics "529
program organization 535
relations with compiler 530
register usage 540
service routines 541
CNOP routine 583
CNTLINE cell (COMMON)
description 332
use in phase 00 48
use in phase 02 47
CNTLTBL table
description 190,191
format 344
COBEND routine, function 539
COB HAND routine
flowchart 537
function 539
COBOL command
(see also COBOL Prompter)
description of options 25-29
specifying compiler optio~s 25
COBOL ID field (TGT)
description 508
location 505
COBOL INDICATOR (TGT)
description 507
location 505
COBOL Interacti~e Debug Program (see TEST
option)
COBOL library subroutines, definition 542
COBOL Prompter
invoking the compiler 19
NUM option 26
COBOL space, definition 542
COBOL subroutines, definition 542
COBOL verbs
code list 413-415
internal code list 413-415
phase 50 processing 120
phase 51 processing 135- 137
COBOL word check 116
COBOL words, Procedure IC-text
internal code 416-418
PO format 412
P2 format 428
CODE clause, RDSCAN routine processing 62
codes, error, use in phase 03 50
COLHIVAL cell (COMMON)
331
COLLITNO cell (COMMON) 331
COLLOVAL cell (COMMON)
331
COLUMN clarise 62

Licensed Material - Property of IBM

COMFLOW cell (COMMON)
330
COMMAD cell (COMMON)
description 328
use in phase 10 57
COMMON
cells, description
ACCESW 325
ADATAB 330
ADDRCARD 333
ADSTAT 325
AGETALL 328
AHEADER 338
AINSRT 325
ALIBEOD 339
ALIBSYNA 339
ALSTAM 325
AMAINF 325
AMICTR 330
AMILOC 331
AMOVDC 328
APLSCALL 331
APRIME 325
BATCHSW 336
BCDCTR 332
BCDISP 331
BGALLPN 338
BGALLPRI 338
BLCTR 328
BLLCTR 326
BUFSIZE 336
BUGBLLNO 338
BUGSTCED 331
BUGVLCNO 338
CDLCCTR 331
CKPCTR 326
CNTLINE 332
COLHIV AL 331
COLLOVAL 331
COLLIT NO 331
COMFLOW 330
COMMAD 328
COMPILES 332
CORESIZE 330
COS 325
CRDNUM 331
CURCRD 336
CURSGN 328
DATABDSP 328
DATATBNM 330
DATE 331
DBGLOC 330
DBGODISP 332
DCBCTR 333
DCBNOXX 336
DCPTR 327
DECBCT 336
DEFCNT 333
DICADR 327
DICND1 327
DICND2 326
DICND3 338
DICPTR" 327
DICTNAME 331
DLSVAL 327
ERF4SW 327
ERRNUM 332
ERRSEV 327
ESDID 338

FIL5BUF 330
FIPLVL 338
FLOWSZ 328
GNCTR 325
GTLNG "329
IDBYTES 339
IDENTL 328
IDPHOO-IDPH80
INDEX 331
INDEX1 328
INITSIZE 338
INTVIRT 331
IOPTRCTR 328
KALOUT 337
KKADS5 337
KKPGR70 338
KKPHOSW 337
KTRMNATE 337
LABELS 325
LCSECT 327
LIBBUF 339
LINECNTX 332
LINKCNT 337
LISTERSW 331
LOCCTR 325
LOCTMCTT 331
LNGBL 331
LNGDSP 331
LTLCTR 326
MAXBGITM 338
NODECTR 330
NUMINCR 333
OBODOTBN 330
ODOCTR 326
ONCTR 329
OPTINSW 333
OPTINSW1 333
OPTINSW2 333
OPTINSW3 333
OPTINSW4 333
OPTLSTR 339
OPTLVL 339
OPTSWV2 339
OlJTLRECL 339
PARMAX 330
PFMCTR 329
PHZERR 338
PHZSW 333
PHZSW1 333
PHZSW2 334
PHZSW3 334
PHZSW4 334
PHOSW" 339
PH1BYTE 335
PH25SW 338
PH6ERR 329
PNCTR 325
PRBLDISP 325
PRBLNUM 330
PRINTBUF 338
PROCCTR 330
PROGID 325
PROGSW 338
PSVCTR 329
PTYNO 327
RELAPD 325
RELLOC 329
RELSPACA 337

339

Index

591

Licensed Material - Property of IBM

COMMON cells, description (continued)
RGNCTR 327
RPNCNTR 328
RPTSAV 327
SA2CTR 327
SA3CTR 332
SBLCTR 326
SDSIZ 328
SEGLMT 328
SEQERR 326
SPACEX 336
SPACING 330
STAESW 336
SUBCTR 329
SWITCH 334
SWITCH1 337
SWITCH2 336
SWITV2 330
SYMSK 333
SYMSK1 334
SYMSK2 334
SYMSK3 334
SYNADR01 332
SYSTDD 338
SYSTX 328
TAMN AD 325
TIB (Table Information Block)
325
TMCNTBSZ 331
TSMAX 326
TS2MAX 326
TS3MAX 328
TS4MAX 328
VCONDISP 332
VIOVIRN 331
VIRCTR 325
VLCCTR 326
VNCTR 329
VNILOC 329
VNLOC 329
VTINITVN 331
V2BUGSW 338
WCMAX 326
WSDEF 327
XSACTR 32,9
XSWCTR 329
counters used for TGT 143,144
definition . 542
function
overall design of compiler 21
phase 00 . 44
Program Global Table (PGT), relationship
to 324
register usage 324
Task Global Table (TGT). relationship
general 324
phase 6 142-146
use in
phase 00 44
phase 02 48
phase ':B 66
phase 10 56
phase 21 79,80
phase 3 88
phase 4 104
phase 50 127
phase 51 133-137
phase 6 148-152

592

Communication Description (CD)
phase 10 processing for 60
phase 20 processing 73
communication section dictionary entries,
phase 22 processing 77
communications area (see COMMON)
compilation directives
DEBUG card 105
compilation parameters (see options.
compilation directives)
compile-time
arithmetic 125-126
STATE bit (TGT)
506
COMPILED POINTER field ,(TGT)
description 508
location 505
compiler
COMMON, use of 21
(see also COMMON)
control information 25-29
(see also options; compilation
directi ves)
data sets 21
design 20-21
dictionary, use of 21
(see also dictionary)
dir~ctives (see compilation directives)
error handling (see error handling in
co mpila tion)
generated procedure-name (see GN)
initialization 47
input 20
options 25-29
(see also options)
output 20
overview 549
parameters (see options; compilation
directi ves)
phases 21-25
(see also phase 00; phase 01; phase
02; phase 03; phase 05; phase 06;
phase 08; phase 1B; phase 10; phase
12; phase 20; phase 22; phase 21;
phase 25; phase 3; phase 4; phase
45; phase 50; phase 51; phase 6;
phase 62; phase 63; phase 64; phase
65; phase 6A; phases 10, 71, and 72,
phase 80)
physical structure 549
relationship to operating system 19
storage requirements 29-30
structure 549
tables 21
(see also tables used by compile~
texts 399-444
(see also nata A-text; Data IC-text;
Debug-text; dictionary entries;
E-text; Listing A-text; Optimization
A-text; Procedure A-text; Procedu're
A1-text; Procedure IC-text:
PO
format, P1 format, P2 format; XREF
text)
COMPILES cell (COMMON)
332
completing dictionary entries
description 76-77
phase 21 processing 79,80
phase 22 processing 74
COMPUT routine 111

Licensed Material - Property of IBM

COMPUTE statement 111-113
COMSCT routine
flowchart 235
function 73
CON DIS table
description 165
format 344
literal allocation 150-151
optimizing DISPLAY literals 147
segmented program processing 155
use in literal allocation 168
condition-name dictionary entries,
format 454
condition- names 95
conditions causing ABENDs 483-484
Configuration Section 57
constant A-text 127
constant definition elements
Data A-text format 414
description 80,81
phase 21 processing 80,81
phase 64 action 182
constucting procedure A1-text 175
CONTBL table
format 344
literal allocation 151
optimizing literals 148
phase 62 processing 165
segmented program processing 155
use in literal allocation 168
control breaks in segmentation 134
control card for linkage editor
NAME option 26-27
phase 60 processing 141
CONTROL clause, RDSCAN routine
processing 62
control informa tion (see options,
compilation directives)
CONTIlOL record
definition 542
description 190-191
control~field save-area names
61
Conversational Monitor System (seeCMS
interface)
COPY statement, phase 4 processing 51
COPYPROC routine 212
COPYRN routine 51
COPYRTN routine 211
CORESIZE cell (COMMON)
description 330
use in phase 00 48
use in phase 02 48
CORIlESPONDING options 89-91
CORRTN routine
CORRESPONDING option 89,88
phase 3 operations 89-91
COS cell (COMMON)
325
COUNT CHAIN ADDRESS field (TGT)
description 508
location 505

COUNT LINKAGE AREA field (PGT)
description 510
COUNT location 510
option 29
COUNT TABLE ADDRESS field (TGT)
description 508
location 505
counters
AMICTR 330
BLCTR
Data A-text processing 159
description 328
Procedure A-text processing 154
TGT space allocation 143-144
BLLCTR
Data A-text processing 154
description 326
space allocation in TGT 143-144
CKPCTR
description 326
use in phase 21 79
use in phase 6 146
COMPILES 332
DCBCTR
address and constant definition
elements 80
Data A-text processing 159
DCBADR allocation 151
description 333
FD dictionary entries 79
DECBCT
address and constant definition
elements 80,81
Data A-text processing 159
description 336
FD dictionary entries 79
TGT space allocation 163
ERRNUM
description 332
phase 6 output 142
GNCTR
DEBUG CARD processing 106
Declaratives processing 70
description 325
GN allocation 150
INDEX1
description 328
TGT. space allocation 144
LOCCTR
block and working-storage section
address elements 80
description 325·
phase 6 output 142
Procedure A-text processing 151
segmented pro\Jrams 153

Index

593

Licensed Material - Property of IBM

counters (continued)
LTLCTR
description 326
phase 50 processing
NODECTR 330
ODOCTR 326
ONCTL
descri ption 509
phase 51 processing
ONCTR
description 329
phase 51 processing
phase 6 processing
PARMAX
descri ption 330
phase 6 processing
PFMCTL 509
PFMCTR
description 329
phase 4 processing
phase 6 processing
PNCTR·
descri ption 329
phase 1B processing
phase 51 processing
phase 6 p~ocessing
PROCCTR 330
PSVCTF
description 329
phase 6 processing
RGNCTR 327
RPTSAV
description 327
phase 6 processing
SA2CTR
description 327
phase 6 processing
SA3CTR
description 332
phase 6 processing
SBLCTR
description 326
phase 6 processing
SBSCTR 143
SEQERR 326
SUBCTR
description 329
phase 51 processing
TSMAX
description 326
phase 50 processing
phase 6 processing
TS2MAX
de scri ption 326
phase 6 processing
TS3MAX.
description 328
phase 6 processing
TS4MAX
description 328
phase 6 processing
VIRCTR
description 325
phase 50 processing
phase 6 processing

594

132

137
137
143

109
143
66
135
150

143

146
164
146
143

137
163
163
143
143
143
131
148

VLCCTR··
description 326
ph~se 6 processing
143
VNCTR
description 329
phase 6 processing 150
VNLOC
description 329
Procedure A-text processing 154
TGT space allocation 143
XSACTR
description 329
phase 6 processing 143
XSWCTR
description 329
phase 6 processing 143
phase 51 processing 137
CRDNUM cell (COMMON)
331
critical program breaks
Data IC-text format 404
definition 542
Procedure IC-text
PO format 412
P1 format 421
P2 format 428
cross-reference listing
alphabeticallyordered 191
compiler options 25-29
phase 6A processing 190~191
source ordered 190
CSECT names in phases 317-320
CSYNTAX option
description 26
E-text processing 192
phase 00 processing for 45
phase. 02 processing for 47
phase 21 processing 79
phase 3 processing 96
phase 4 proces~ing 116
phase 50 processing 119
phase 51 processing 133
SYSUT4 contents with i58
CTB-ROUT routine
description 520
GENERATE statement processing
first statement 525
subsequent statements 526
generation of 64 .
use of CTL. LVLcounter· .522
CTF-ROUT routine
CTL.LVl cdunter 522
description 521
FRS.GRP switch 523
GENERATE statement processing 526
generation of 64
locating routine in object module 528
logic of Report writer
subprogram 516,517.
CTH-ROUT routine
description 521
FRS.GRP switch 524
GENERATE statement processing
. first statement 525
subsequent statement 526
generation of 64

Licensed Material - Property of IBM

locating routine in object module 528
logic of Report Writer
subprogram 516,517
CTL.LVL (Report Writer data-name)
522
CTLTBL table 345
CURCRD-cell (COMMON)
description 336
use in phase 10 56
use in phase 4 104
CURGCN cell 56
current card number
abnormal termination 487
phase 1A processing 56
CURSGN cell (COMMON)
328
CVIRTB table
format 345
optimizing storage for PGT 148,149
Segmented program processing 155
use for compiler options 149
use in phase 62 166
cO routine diagram of 583
C1REF routine flowchart 292

Data A-text
definition 542
formats 409-410
generation of 77
input/output operations 37-43
phase 20 processing 72
phase 21 processing 83
phase 6 processing
description 22
flowch art 280
phase 64 action for 181
phase 64 processing 179
descri ption 179
flowch art 294
DATA AREA field (object module)
502
DATABDSP cell (COMMON)
328
Data Control Block (see DCB)
Data Division
flow 221
general description of processing
phase 10 processing 59-60
glossary 88
Data Event Control Block (see DECB)
data management for compiler (see
input/output requests)
data operand, definition 543
DATA record
definition 543
description 190,191
Data IC-text
definition 542
formats 402-404
input/output operations 37-43
LD-text
definition 544
description 59
phase 10 processing 59
phase 21 processing 79
phase 21 processing 84
data set activity
CMS interface routine 439
compiler 37-43

20

data-name DEF-text element
A-text generation 79
phase 64 action 182
data-name definition elements, DEF-text
format 443
data-name information for UNSTRING elements
created by phase 45 118
procedure IC-text 426
data-name references, Procedure Ie-text
P1 format 420
P2 format 426
data-name subscripts
phase 50 processing 121,122
Procedure Ie-text format 426
data-names for Report Writer (see Report
Wri ter)
DATATAB table
built by phase 25 86
format 458-464
DATATBL table
description 190,191
format 346
DATATBNM cell (COMMON)
330
DATE cell (COMMON)
description 331
use in phase 02 47
use in phase 10 57
DATE-COMPILED clause 57
DBG R11SAVE field (TGT)
description 508
location 505
DBGFLPT bit ~GT)
506
DBGLOC cell (CONNON)
330
DBGTBL table
format 346-347
phase 4 processing 105
DBGTEST routine
description 135
flo wchart 272
DBGTXT table
description 100
format 347
DBGODISP cell (COMMON)
332
DC definition elements
format 435
phase 64 action 184
DCB (Data Control Block)
address elements
creation 80,81
Data A-text format 409
description 80,81
building for object module
address and constant definition
elements 80,81
FD dictionary entries 79
manipulation for compiler files 44
DCB address element, phase 64 action 181
DCBADR field (PGT)
description 511
location 510
phase 62 allocation 169
phase 64 processing for
181
DCBCTR cell ~OMMON)
address and constant definition
elements 80,81
Data A-text processing 159
DCBADR allocation 150
description 333
Index - 595

Licensed Material - Property of IBM

DCBCTR cell (COMMON) (continued)
FD dictionary processing 79
use in phase 62 168
DCBNOXX cell (COMMON)
336
DCPTR cell (COMMON)
327
DDBG R14SAVE field (TGT)
description 507
location 505
DDSCN routine
communication section processing 60
Data Division processing 59
flowchart 225
phase 10 overview 56
DEBUG BLL field (TGT)
description 508
location 505
DEBUG card
description (TGT)
508
location (TGT)
505
use in phase 4 105
debug data set
description 455
format 455-469
phase 25 processing for 85
DEBUG LINKAGE AREA field (PGT)
allocation for 166
description 510-511.
location 510
DEBUG MAX field (TGT)
description 508
location 505
debug options
COBOL Interactive Debug Program (see
TEST option)
phase 65 processing 187-189
TGT allocation for 164
DEBUG PTR field (TGT)
description 508
location 505
DEBUG TABLE field (TGT)
description 510
location 505
phase 65 processing 189
DEBUG TABLE PTR field (TGT)
description 507
location 505
phase 65 processing 189
debug-text
construction in phase 63 176
data sets used for 151
definition 543
description 151
format 444
input/output operations 37-43
phase 6 processing 151
. .
phase 63 processing of 176-177·
phase 65 processing 187~189
DEBUG TRANSFER field (TGT)
description 508
location 505
DEBUGGING field (TGT)
description 508
location 505
debugging (see diagnostic aids)
DEBUG VLC field (TGT)
description 508
location 505

596

DECB( Data Event Control Block)
address elements
Data A-text formats 409
creation 80,81
description 80,81
building for object module
address .and constant definition
elements 80,81 .
FD dictionary entries 79
manipulation for compiler files 44
(see also DECBCT cell)
DECB address element, phase 64 action 181
DECBADR field (TGT)
DECBCT cell (COMMON) 336
DECBCT counter (phase 6)
143
description 508
location 505
phase 62 counter for 164
DECBCT cell (COMMON)
Data A-text processing 159
description 336
TGT space allocation 143
use in phase 2 79
use in phase 62 164
use in phase 64 181
DECIMAL-POINT IS COMMA clause
COM MAD cell (COMMON) 328
phase 10 processing 57
DECK option
bit in COMMON 333
description 28
phase 02 processing 47
phase 62 output 161
Declarative Section
description 70
error declaratives 70
label declaratives 70
DEF-text
compiler processing 24-25
definition 543
formats 444
input/output operations ,37~,43
phase 22 processing 75
phase'6A processing 190,191
phase 64 action for 181 '
phase 64 processing of ,,' 179
phases involved 316
DEFCNT,cell (COMMON)
333
DEFLD11 routine
description 171
diagram of 581
DEFSBS table 347
delimiter, definition 543
delimiter pointer
definition 543
format 447
design of compiler
diagram' 581
general description. 20
destination table entiy, Data IC-text 404
DESTROY element
function 120
use in phase 62 169
DET-ROUT routine
description 522
FBS.GRP switch 523
GENERATE statement ,logic floW 526

Licensed Material - property of IBM

logic of Report Writer
subprogram 527,316
phase 1B processing 61
DETTBL table
description 66
format 347-348
output of phase 1263
DEVTYPE macro instruction 48
\
diagnostic aids
ABEND codes 483-484
abnormal termination 31,32
buffers 487-488
CE worksheet 490-491
compiler error messages 485·486,483
current phase 486-487
description 470-491
registers
assignment 483
saving 487
usage by phases 471-482
system error recovery program 470
tables 313-315,488
!terminal error conditions 45
version of compiler 486
DICADR cell (COMMON)
327
DICND1 cell (COMMON)
description 327
use in phase 3 88
DICND2 cell (COMMON)
326
DICND3 cell (COMMON)
338
DICOT table
format 348
input to phase 25 85
organization of the dictionary 492
use in phase 1B 67
DICPTR cell (COMMON)
327
DICSPC routine 499
DICTBD routine
description 72,74
flowchart 244
dictionary
attributes, definition 453
definition 453
description 492
entries (see dictionary entries)
handling routines (see ACCESS routines)
organization 492,493
pointer, definition 453
spill
compiler data set activity 37-43
switch in COMMON 335
TAMEIN routine 498
TBSPILL routine 500
storage for 493
dictionary entries
(see also dictionary)
attributes
descriptions 446-454
phase 1B processing 66-68
base locator (see base locator)
building 74
completing
phase 21 processing 79,80
phase 22 processing 76
count field 79
FD
(see also FD dictionary entries)
completing 77

phase 21 processing 79,80
preprocessing 76-77
formats 445-454
handling routines (see ACCESS routines)
LD 72
(see also LD dictionary entries)
major code
definition 544
FD dictionary entries 79
minor code, definition 544
partial 76
phase 02 processing 47
phase 1B processing 66-68
phase 21 processing 79,80
phase 22 74-77
phase 3 processing 95
RD 76
(see also RD dictionary entries)
REDEFINES clause 77
routines (see ACCESS routines)
SD
(see also SD dictionary entries)
completing 77
preprocessing 76
storage allocation 47
dictionary preprocessing 74-76
DICTNAME cell (COMMON)
331
direct A-text 127
direct indexing 123
DIRECTOR routine 74
directories, microfiche 317-323
discontinuity elements
phase 63 processing of 177
phase 65 processing 187
display literal definitions
optimization 147,165
optimization A-text format 439
PGT field 512
phase 6 processing 147
DISPLAY LITERAL field (PGT)
description 512
location 510
DISPLAY verb translator routine 139
DLSVAL cell (COMMON)
327
DMAP option
bit in COMMON 333
description 27
phase 02 processing 47
phase 62 output 161
register assignments 483
DMSAUPD routine, function 535
DMSCBD module
external symbol directory 535
function 535
load module directory 535
DMSCOB routine 533
(see also CMS interface routine)
DMSERR routine, called by DMSCOB 541
DMSERS routine
called by DMSCOB 541
function 535
DMSFLD routine
called by DMSCOB 541
function 535
DMSFNSA routine
called by DMSCOB 541
function 535
DMSGND routine 533
Index

597

Licensed Material - Property of IBM

DMSILB routine, ENTRY card punched for 533
DMSLADW routine 541
DMSSBS routine 541
DMSSMN routine
called by DMSCOB 541
function 535
DMSSTT routine 541
DNTOR1 routine 138
DOFINIS routine, function 539
DOP1 workarea, use in phase 45 118
DRPLTBL table
format 348-349
function 169-170
DRPTBL table
function 169-170
format 349
DSPLAC routine (phase 6)
144
DSPLAC routine (phase 62)
164
DTAB table
description 100
format ·349
dump, producing a 29,470
DUMP option 29
ABEND conditions 483-484
description 29
DYN AM option
allocation of virtuals for 149
description 28
phase 02 processing 47
phase 51 processing 139
phase 6 processing for 148-149
phase 62 virtual EBCDIC names allocation
for 167
virtual allocation for 167

E-point name, phase 22 processing 62
E-text
definition 543
description 25
format 442
input/output operations 37-43
introduction 25
phase 20 71,72
phase 4 116
phase 51 133
phase 6
action taken 159
suppression of output listing 142
SYSUT4 processing 158
phase 64 action for 181
phase 64 processing of 179
phase 70 192-193
phases involved 316
E.nnnn (Report Writer data-name)
column clauses 523
nonstandard data-names 523
EACTBL table 193
EBCDIC card name element, phase 64 183
EBCDIC data-name reference element
phase 64 action 185
Procedure A-text format 435
EBCDIC name, Procedure IC-text format 411
EBCDIC procedure-name generator, Procedure
A-text format 434
EJECT routine 33
elementa~y item processing, phase 20
72
598

ELIODO routine 78
element (text), definition 543
ELSE clause 113
ENDCODE routine 585
ENDJOB option
description 28-29
parameter for 47
switch in COMMON 334
ENDOFTBL routine
diagram 585
function 189
ENDPTX routine (phase 6), diagram of 581
ENDP1 routine flowchart 261
ENDP16 routine, flowchart 261
ENDSEG elements
phase 63 processing of 177
phase 65 processing 187
ENDUSE verb, debug processing 135
ENTDEL routine 494-495
ENTDRP routine (phase 62)
169
ENTDRPL routine 169
ENTNAM routine 494
ENTPTR routine 494
ENTPT01 routine 174
ENTRDATA routine
description 86
flowchart 250
entry (table), definition 543j
entry points in phases 317-323
ENTRY-SAVE field (TGT)
description 507
location 505
Environment Division, phase 10
processing 57-58
ENVSCN routine
Environment Division processing 57
flowchart 224
phase 10 introduction 56
ENVTBL table
description 58
format 350-351
EOF routine (phase 63), diagram of 583
EOFON2 routine
description 188
diagram 585
EOFRTN routine 102
EOF2 routine, diagram 585
equate str ing
built by phase 51 134
GN 134
optimizing PNs and GNs 146
phase 6 processing 144
PN 134
use in Optimization 144
ERAS routine, function 539
ERF4SW cell (COMMON)
327
ERRNUM cell (COMMON)
description 332
passing E-text 141
phase orr processing 142
error, definition 543
error codes, use in phase 03 50
error declaratives
description 70
debug processing 133
error handling in compilation
clause compatibility 84
compilation in parameter ·errors 49

Licensed Material - Property of IBM

compiler errors 483
input/output errors
diagnostic aids 470
phase 02 processing 49
SYNAD routine 34
terminal 45
message generation, flowchart 303
(see also E-text)
severity 31
source program errors
phase 10 processing 56
phase 20 processing 73
phase 22 processing 78
phase 4 processing 116
terminal 45
terminal error conditions 45
error messages
CMS interface routine 540
generation by phase 12 64
printed by phase 03 50
error message texts 192
ERROR routine
phase 3
description 96
operations diagram 597
phase 4 116
error symbols, Procedure IC-text
PO format 412
P1 format 422
error text (see E-text)
ERRPRO routine 133
ERRSEV cell (COMMON)
327
ERRT BL table
forma t
352
E-text processing 159
general information 137
suppression of output listing 142
phase 7 processing 192
syntax-checking function 45
use in phase 3 95
use in ph~se 4 116
use in phase 50 119
use in phase 51
133
use in phase 6 142
use in phase 62 162
use in phase 64 181
ESD 149
ESD cards, definition 543
ESO-text, definition 543
ESDID cell (COMMON)
338
EVAL string 112-113
EVERY option 137
EXEC control card
compiler options 25
phase 00 processing 31
execution-time STATE bit (TGT)
506
EXHIBIT NAMED name, Procedure IC-text
PO format 411
P1 format 421
P2 format 427
exit lists 80
external symbol dictionary
description 148
microfiche directory 321-323

FO dictionary entries
completing 77
format 447
phase 21 processing 79,80
preprocessing 76
FO entries
Data IC~text format 403
description 59
FO text
definition 543
description 79
FDECK option 29
FOEFCOB routine, function 539
FOTAB table
format 352
use in phase 21 79
use in phase 21 80
use in phase 22 75
FIB field (TGT)
description 508
location 505
figurative constant ALL references,
Procedure IC-text format 428
figurative constant references, Procedure
IC-text
PO format 412
P1 format 422
P2 format 428
File Description dictionary entries (see FD
dictionary entries)
File Description entries 59
FILE-CONTROL paragraph 58
file information block field (TGT)
description 508
location 505
file-name DEF text element, phase 64
action 181
file-name reference elements
description 89
Procedure IC-text
P1 format 425
P2 format 429
file-name reference elements
phase 64 action 185
Procedure A-text format 436
Procedure IC-text format 419
File section
description 59
dictionary entries
phase 22 77
phase 20 72
FILEDEF commands
description 532
issued for CMS interface 532
FILEST routine (phase 20) flowchart 234
FILEST routine (phase 21)
description 72
flowchart 246
FIL5BUF cell (COMMON)
330
FINDRW routine, function 539
FINDSSC routine 118
FIPLVL cell (COMMON)
338
FIPS
processing for phase 8s 194

Index

599

Licensed Material • Property of IBM -

FIPS (continued)
flowcharts 304-308
fixed Report writer routines· 515
FLAG option
bit in COMMON 333
phase 02 processing 47
floating·point literal references,
Procedure IC-text
PO format 411
P 1 format 421
P2 format 427
floating·point operations 124-125
FLOW option
bit in COMMON 333
description 26
phase 02 processing 47
phase 6 output 142
phase 62 output 162
phase 65 processing 187
Procedure A-text processing 152
flow trace option (see FLOW option)
flowcharts 197-308
FLOWSZ cell (COMMON)
description 328
use in phase 65 187
FLUSH routine
description 64
flowchart 230
FNTBL table
Data Division processing 59
format 352-353
input to phase 12 63
output of phase 12 63
phase 1B processing 69
phase 10 processing 59
forcing a dump 470
FORMLA routine 111,112
FOURTY8 routine, diagram of 583
fragment, program, definition 543
FREE element
function 120
use in phase 62 169
FREEMAIN macro instruction 498
FRS.GEN (Report Writer data-name),
description 522
FRS.GRP (Report Writer data-name),
description 523
FRTYPROC routine
description 187
diagram 585
FSECT routine flowchart 252
FSTXT routine
FD processing 79
phase 21 processing 80
FSTOOO routine 77,79
F2PROCS branch table, use in phase 65

GATXTV routine 127-128
GCNTBL table 353
GENERATE statement
FRS.GEN data-name 524
logic flow
first statement 525
subsequent statements 526
,phase 1B processing of 61
response at execution time 523
600

187

special Report Writer verbs 524
1ST-ROUT routine 515
generated procedure-name (see GN)
generating data A-text 77
GENOP routine
condition-string processing
with VALUE clause 98
without VALUE clause 97
replacing names 95
phase 3 operations 88
GENOP routine, translation of PO text 89
GET routine (phase 63)
control 175
diagram of 583
GETALL routine (TAMER) 500
GETBTBL table, use in phase 63 182
GETCRD routine
phase 1B 66
phase 10 57
GETDLM routine
description 56
phase 10 56
phase 12
call to GNSPRT routine 64
RDSCAN routine 62
GETKAIN macro instruction
dictionary storage 493
TAMER area 497,498
GETNXT routine (Phase 3)
89,90
GETNXT routine (phase 50)
flowchart 267,268
introduction 119
GETNXT routine (phase 51)
flowchart 273
introduction 133
GETPTR routine 494
GETWD routine 56,57
global table (see Task Global Table;
Program Global Table)
global table references, procedure IC-text
format
type 1 430
type 2 430
global table standard area references 153
global table variable-located area
reference element
description 153
phase 64 action 184
Procedure A.. text format 435.
GLORET routine 88
GLOSRY routine
flowchart 252
glossary building 88
phase 3 operations 88
glossary (compiler)
processing for 88
symbols used in 142
glossary (for this book)
542-546
GN (compiler generated pr.ocedure-name)
allocation
phase 6 150
phase 62 167
definition
phase 64 action 184
procedure A-text format 434
PO text format 412
P1 text format 422
P2 text format 428

Licensed Material - property of IBM
\

description, general 543
equate strings
building 134
Optimization A-text format 439
optimizing 146-147
error declaratives, Procedure IC-text
format 411
field (PGT)
511
generated procedure-name reference,
optimization A-text format 439
label declaratives, Procedure IC-text
format 411
number
phase 1B 70
phase 3 95
phase 4 105
phase 50 130
phase 6 150
optimizing 146-147
phase 1B processing 70
phase 4 processing 113
phase 50 processing 130
phase 51 processing 134
phase 6 processing 146
reference element
phase 64 action 184
Procedure A-text format 434
PO text format 412
P1 text format 422
P2 text format 428
GN-VN element for PERFORM verb,
optimization A-text format 440
GNCALTBL table, format 354
GNCTR cell (COMMON)
description 325
use in phase 1B 70
use in phase 4 105
use in phase 6 149
GNDEF routine
diagram of 583
flowchart 289
GNDEFR routine 581
GNEQUR routine 146
GNFWDBTB table
building of 171
format 354
GNLABT BL table
building of 171
format 354
use in phase 63 175
use of ACCUMCTR 171
GNLBDTBL table 355
GNREF routine
diagram of 583
flowchart 292
GNSPRT routine
description 64
flowchart 231
GNTBL table
format 355
GN allocation 150
optimizing GNs 146-147
Procedure A-text processing 152
GNU REF element s
optimization A-text format 439
phase 50 processing 132
GNVNRTN routine 165
GOBACK statement, ENDJOB option for 28-29

GO string 106
GO TO DEPENDING ON call parameter element
phase 64 action 185
procedure A-text format 436
GO TO statement
phase 1B processing 69
with ALTER statements 105-108
GOTAVERB routine
description 101
flowchart 257
GPLSTK table
format 355-356
use in phase 22 76
group item processing, phase 20 72
GRP.IND (Report Writer data-name)
522
GSPICT routine 72
GTEQ10K routine
description 188
diagram 585
flowchart 299
GTLNG cell (COMMON)
329
GVFNTBL table 357
GVNMTBL table 357

HASH table
dictionary organization 492,493
format 358
input to phase 25 85
phase 3 processing 90
TIB30 cell (COMMON)
325
usage
313-314
use in phase lB 67
hierarchy of operators
definition 543
description 112

I-O-CONTROL paragraph 58
IC-text, definition 543
(see also Data IC-text; Procedure
IC-text)
IDBRK routine 104
IDBYTES cells (COMMON)
339
IDDSCN routine
. flowchart 223
Identification Division processing
phase 10 introduction 56
IDENT routine 104
identification, compiler version 486
Identification Division
compiler processing 20
phase 10
overview 56
processing 57
identifier constant 486
IDENTL cell (COMMON)
328
ID entry format, Data IC-text 104
idk field, phase 22 processing 76
IDLHN routine
ALTER statement processing 106
DEBUG Card processing 105
PERFORM statement processing 109
phase 4 overview 104
IDPHOO-IDPH80 cells (COMMON)
339
IF statement 113
Index

57

601

Licensed Material - property of IBM

IF string
IF statement processing 113
PERFORM statement processing 109
IF verb analyzer routine
flowchart 260
IF statement processing 113
IF MESSAGE statement processing 113
IKFCBLOO (see phase 00; producing a storage
dump)
IKFCBL01 (see phase 01)
IKFCBL02 (see phase 02)
IKFCBL03 (see phase 03)
IKFCBL04 (see phase 04)
IKFCBL05 (see phase 05)
IKFCBL06 (see phase 06)
IKFCLB08 (see phase 08)
IKFCBL1B (see phase 1B)
IKFCBL10 (see phase 10)
IKFCBL12 (see phase 12)
IKFCBL20 (see phase 20)
IKFCBL21 (see phase 21)
IKFCBL22 (sEe phase 22)
IKFCBL25 (see phase 25)
IKFCBL30 (see phase 3)
IKFCBL35 (see phase 35)
IKFCBL40 (see phase 4)
IKFCBL45 (see phase 45)
IKFCBL50 (see phase 50)
IKFCBL51 (see phase 51)
IKFCBL6 (see phase 6)
IKFCBL6A (see phase 6A)
IKFCBL62 (see phase 62)
IKFCBL63 (see phase 63)
IKFCBL64 (sEe phase 64)
IKFCBL65 (see phase 65)
IKFCBL70 (see phase 70)
IKFCBL 71 (see phase 71)
IKFCBL72 (see phase 72)
IKFCBL80 (see phase 80)
incremented address elements
phase 63 processing of 176
phase 64 action 185
Procedure A-text format 435
incrementing the ACCUMCTR counter 171
INDEX cell (COMMON)
331
INDEX field (TGT)
description 509
location 505
phase 6 processing 143
phase 62 counter for 163
use in phase 50 123
INDEX table, phase 22 output 75
index-name format, Data IC-text 404
index-name references
description 123-124
dictionary entry format 454
Procedure IC-text
PO format 421
P1 format 427
INDEXED BY clause 143
INDEX1 cell (COMMON)
description 328
use in phase 6 143
use in phase 62 163
indirect indexing 123,124
INDKEY table
format 358-359
phase 3 processing 88
602

SEARCH verb processing 92,93
INDXTB table 359-360
INDTBL table
description 58
format 358
IND2TBL table 359
initialization coding
description 157
flowchart 297
generation of
flowchart 281
phase 64 183
initialization of compiler 47
INITIATE statement 524
INITIATE verb, phase 1B procEssing for
INITSIZE cell (COMMON)
338
INIT1 routine (object module)
coding generation 157
description 501-502
location 501
written by phase 6 141,157
INIT2 routine (object module)
coding generation 157
description 513
location 501
wri tten by
phase 6 141,157
phase 64 183
INIT3 routine (object module)
coding generation 157
description 513-514
location 501
RLDTBL table processing 157
written by
phase 6 141,157
phase 64 183
inline procedures, definition 544
input/output
(see also access methods)
buffer assignments 37-43
compiler
buffer contents 487-488
buffer processing 47,48
data set activity 37-43
error messages 483
errors from phase requests 34
linkage codes 33,34
phase requests 34
phase 00 operations 31
register usage 471-482
response to system error
recovery 470
scanning routines 215
summary of phases 21-25
terminal errors 45
data set activity 37-43
errors
compiler messages 483
phase 02 processing 49
response to system recovery 470
result of phase requests 34
terminal 45
object module
(see also DCB; DECB)
buffer size 81
compiler processing for 80,81
data area 502
exit tests 502-504

61

Licensed Material - property ofIBM--

requests
linkage codes for 33,34
phase 00 processing 31
phase 34
summary of phases 21-25
Input-Output Section 58,59
INSERT routine 500
INT-ROUT routine
COBOL word data-name processing 522
description 520
generation of 64
logic 516,517
Interactive Debug Program (see TEST option)
interlude routines
flow of control 35
linkage to data management 44
phase 00 processing 31,34
Intermediate A-text
data sets used for 119
definition 544
description 24
phase 50 processing 119
phase 51 processing 133
Intermediate E-text
data sets used for 119
description 119
definition 544
phase 50 processing 119
phase 51 processing 133
intermediate results
definition 544
work area for 124
intermediate result references, Procedure
IC-text format 429
internal compiler text 399-444
(see also ATF-text; ATM-text; Data
A-text; Data IC-text; Debug-text;
DEF-text; E-text; optimization A-text;
Procedure A-text; Procedure A1-text;
Procedure IC-text; XREF-text)
ATF-text format 408
ATM-text format 433
Data A·text format 409
Data IC-text format 402
Debug-text format 444
description 399
E-text format 442
optimization A-text format 439
Procedure A-text format 434
Procedure A1-text format 441
Procedure IC-text
PO format 411
P1 format 419
P2 format 425
types produced by each phase 316
XREF text format 443
internal text formats 399-444
interphase routines (see interlude
routines)
INTxx routines (see interlude routines)
INTVIRT cell (COMMON)
331
IOPTRCTR cell (COMMON)
328
IPTEXT
formats 400-401
generation of 53
IPTEXT ITEM processors 217
issuing CMS FILEDEF commands 532

KALOUT cell (COMMON)
337
KEY TAB table 360
KEYTBL table
format 360-361
SEARCH processing 114
KILSUB routine
description 132
flowchart 270
KKADS5 cell (COMMON)
337
KKPGR70 cell (COMMON)
338
KKPHOSW cell (COMMON)
337
KTRMNATE cell (COMMON)
description 337
use in phase 03 50

label declaratives
debug processing 135
description 70
LABEL RET field (TGT)
description 507
location 505
LABELS cell (COMMON)
325
LABTBL table
format 361
input to phase 20 71
LANGLVL option 29
language analysis routine 214
LATACP routine
description 496
dictionary organization 493
LATGRP routine 496
LATRNM routine 495
LATRPT routine 495
LCOL1 option 29
LCOL2 option 29
LCSECT cell (COMMON)
327
LD dictionary entries
description 72
format 450
preprocessing 71
LD entries, Data IC-text format 402
LD-text
definition 544
description 59
LDELNM routine 495-496
LDTEXT routine
description 73
flowchart 236
phase 20 control 72
LDTXT routine, flowchart 242
LENGTH OF VN TBL field (TGT)
description 507
location 505
LIBBUF cell (COMMON)
339
LIB option
data set usage for 37-43
description 25-26
flowchart 207
parameters 47
phase 10 processing 57
switch for 295
LIN.NUM data-name 523
LIN.SAV data-name 523
LINE clause, input to PROC01 routine
LINE-COUNTER data-name 522
Index

56

603

Licensed Material - Property of IBM

LINECNT option
description 28
phase 02 parameters 47
LINECNTX cell (COMMON)
332
LINKCNT cell (COMMON)
337
LINK macro instruction
interphase processing 31
parameters 46
passing control to compiler 31
phase 02 47
LINKA routine 31
linkage editor
i nt rod uction 19
phase 6 overview 22
processing of CMS compiled program 533
Linkage Section
phase 10 processing 60
phase 22 processing 77
LINKB routine 35
LINKCNT cell (COMMON)
current phase 487
description 337
interphase processing 34
returning control to system 31
use in phase 4 116
LINKNAME cell 487
LINKPH1 routine 71
LINKST routine (phase 20), flowchart 235
LISTERSW cell (COMMON)
331
LISTING filename 532
listing
suppression of 142
symbols used in 142
Listing A-text
phase 60 processing 155
literal allocation, phase 62 168
literal definitions
A-text generation 127,131
optimization 147
optimization A-text format 439
phase 51 processing 139
LITERAL field (PGT)
description 511-512
location 510
literal reference element
phase 64 action 184
Procedure A-text format 435
literal subscripts 121,122
1i terals
description 511-512
optimization of 165
load module 46
load module microfiche directory 317-323
LOAD option
description 26
phase 02 parameters 47
phase 62 output 161
switch for 333
LOCCTR cell (COMMON)
description 325
use in ADINCR routine 176
use in phase 21 80
use in phase 22 76
use in phase 6 142-144
use in phase 63 175-178
use in RPT-ORIGIN processing 177

604

LOCNXT routine
description 495
phase 25 processing 86
LOCTMCTT cell (COMMON)
331
LONGTGT bit (TGT)
506
LNGBL cell (COMMON)
331
LNGDSP cell (COMMON)
331
LSECT routine flowchart 239
LST-ROUT routine
generation of 64
GN number 528
phase 1B processing 61
LSTCOMP option 29
LSTONLY option 29
LTLCTR cell (COMMON)
description 326
use in phase 50 132
use in phase 6 150
use in phase 62 168
LTLDIS routine
literal o~timization 169
phase 6 169
phase 62 165
LTLRTN routine
literal optimization 169
phase 6 169
phase 62 165
LTLTBL table
format 361
LITERAL allocation 150-151
literal optimization 169
phase 62 processing 165,168
processing Procedure A-text
elements 153
use in phase 62 168
LVL option 28
L120 option 29
L132 option 29
macro instructions
ATTACH 31,46
CALL 31,46-47
FREEMAIN 498,499
RETURN 32
XCTL 31,46-47
MACRO routine, diagram of 583
maero-type instruction element
optimization A-text format 440
phase 64 action 183
Procedure A-text format 434
Main Free Area, definition 544
major code, definition 544
master of an OCCURS clause with the
DEPENDING ON option,. definition 544
MAPLOC routine
PGT storage allocation 1~8
TGT storage allocation 1~4.
MASTAM table 497-498,
MASTODO table
format 361-362
input to phase 25 85
output of phase 22 75
MAXBGITM cell (COMMON)
338
MESSAGE condition, phase,·50. processing
for 132
message definitions, E-text format 442
message parameters, E~tsxt format 443

Licensed Material - Property of IBM

microfiche directories
external symbol dictionary 321-323
load module 317-323
minor code
definition 544
description 450
mode of operation for arithmetic
strings 126
MOVDIC routine 499
MOVE statement 104
MOVE string 104
MOVE verb analyzer routine
subscript references 123
verb string processing 120

N.nnnn data-name 504
NAME option
bit in COMMON 334
description 26
phase 02 parameters 47
phase 6 output 137
phase 62 output 161
phase 65 processing for 189
nested IF. st atemen ts 113
NEWBLOCK routine 581
NEXT GROUP clause 64
NOBLST routine 171
NODECTR cell (COMMON) 330
nondata operand, definition 544
NOTE routine 44
NPTTBL table 362
NUM option
bit in COMMON 334
description 26
GETWD routine 56
phase 02 parameters 47
nu me r ic Ii te ral re ferenc es, Proced ure
IC-text
PO format 411
P1 format 420
P2 format 427
NUMINCR cell (COMMON) 333
NXTOPTN routine, function 539

object deck 28
object hierarchy, definition 544
object module
definition 544'
description 501-514
fields
.COUNT table 512
DATA AREA 502
EXIT lists 501-504
INIT1 501-502
INIT2 513
INIT3 513
locations 501
PGT 510
(see also Program Global Table)
PROCEDURE 512
PROCTAB table ·514
Q- Routines-. 512

RPT 512
SEGINDX table 514
TGT 505-510
(see also Task Global Table)
Transient Area 514
initialization coding generation
description 157
flowchart 297
segmented 514
storage map 501
object program listing
CLIST option 27
phase 6 output 141
OBJECT-COMPUTER paragraph 57
OBJSUB table, format 362
OBODOTAB table
built by phase 25 87,85
format 457
OBODOTBN cell (COMMON)
description 330
obtaining and printing error messages 50
OCCORS DEPENDING ON clause (see Q-routines;
OBODOTAB table)
OCCTBL table
format 363
input to phase 25 85
output of phase 22 75
usage 313,314
ODOBLD rou tine
diagram of 87
flowchart 261
ODOCT counter 87
ODOCTR cell (COMMON)
326
ODOTBL table
diagram of 87
format 363-364
use in phase 25 87
OD2TBL table
Data Division processing 59
format 364
input to phase 22 75
phase 10 processing 59
OFLOTBL
description 190,191
format 364
ON routine 137.
ON SIZE ERROR clause 113
ON statement 137
ON strings 137
ONCTL field (TGT)
counter used for 143
description 509
location 505
ON processing 137
phase 62 counter for 163
ONCTR cell (COMMON)
description 329
use in phase 51 137
use in phase 6 143
use in phase 62 163
OPEN verb, debug processing 136
operating systelil
compilation
abnormal termination 31,32
invocation 31
compiler, relationship to 19
data management (see input/output
requests)
Index

605

License9,'Material - Property of IBM

operating system (continued)
object module, relationship to (see
input/output requests; error handling
in compilation; object module)
returning control to 31,32
operation code element
format 434
phase 64 action 184
operators, hierarchy of
defini tion 543
description 111
OPPRO routine, diagram of 581
OPT option
assembler coding for 110
compiler characteristics for 19
description 26
PERFORM statement processing with 110
phase 02 processing for 55
phase 4 processing for 106
phase 50 processing for 132
phase 51 processing 135,140
phase 62 processing for 161-174
phase 63 processing for 175-178
phase 64 processing for 179-186
segmentation operations 44
text generation for 140
optimization A-text
compiler overview 25
def ini tion 544
formats 439
generation 127
input/output operations 37-43
literal processing 139
phase 50 127,132
phase 50 introduction 119
phase 51 introduction 133
phase producing 316
optimization information elements
phase 4 format 428
phase 50 format 436
phase 50 processing of 132
phase 62 processing 171-174
phase 63 processing of 172-174,176
processing for 172-174
optimizing assignments (registers 14 and
15) 170
Optimizing literals 165
optimizing register assignments 168-170
optimizing storage for the PGT 164
optimizing virtuals 166
OPTINSW cell (COMMON)
333
OPTINSW1 cell (COMMON)
333
OPTINSW2 cell (COMMON)
333
OPTINS W3 cell (COMMON)
333
OPTINSW4 cell (COMMON)
333
optional phase processing 36
OPTLSTR cell (COMMON) 339
OPTLVL cell (COMMON)
339
OPTSWV2 cell (COMMON) 339
op.tions
(see also compilation directives)
ADV 29
APOST 28
BATCH 26
BUF 25
CDECK 29
CLIST 27
CMS interface 531
606

COUNT 29
CSYNTAX 26
DECK 28
DISK 531
DMAP 27
DUMP 29
DYNAM 28
ENDJOB 28-29
FDECK 29
FLAG 28
FLOW 26
LANGLVL 29
LIB 25-26
LINECNT 28
LOAD 26
LCOL 29
LSTCOMP 29
LSTONLY 29
LVL 28
L120 29
L132 29
NAME 26
NUM 26
OPT 26
phase 62 output 161
PMAP 27
PRINT 531
QUOTE 28
RESIDENT 28
SEQ 28
SIZE 25
SOURCE 25
SPACE 28
STATE 26-27
SUPIUP 27
SXREF 27
SYMDMP 27
SYNTAX 26
SYST 28
SYSx 28
TERM 26
TEST 27
TRUNC 27-28
VBREF 29
VBSUM 29
VERB 28
XREF 27
ZWB 27
OPTSCN routine, function 539
out-of-line procedure, definition 544
OUTLRECL cell (COMMON) 339
output listing, suppression of 142
QU6REC work area, use in phase ,64 179
OVERFLOW cell (TGT)
, '
allocation (pliase 62)-167' ,description 508
location 505
OVERFLOW cell (PGT)
511
OVERFLOW record
defini tion 5 4 4 '
description 190,191
'i."

PAGE clause, RDSCAN routine processing
PAGE-COUNTER data-name 522
PARAM field (TGT)
description 509-510

62

Licensed Material - property of IBM

location 505
phase 6 processing 143
phase 62 counter for 164
parametric Report Writer routines 520,521
parentheses, Procedure IC-text
PO format 412
P1' format 421
PARMAX cell (COMMON)
description 330
use in phase 6 143
use in phase 62 164
PARTBL table 193
PDATEX routine (phase 6) flowchart 294
PDATE~ routine (phase 64) flowchart
294
PDSCN routine
description 66
flowchart 232
PERFORM cells (see also PFMSAV field
(TGT) ) 329
PERFORM statement, phase 4
processing 109-111
PF routine (see PGF-ROUT routine)
PFINDL routine 113
PFMCTL field (TGT)
counter in COMMON 329
description 509
location 505
phase 6 processing 143
phase 62 counter for 163
PFMCTR cell (COMMON)
description 329
use in phase 4 109
use in phase 6 143
use in phase 62 163
PFMSAV field (TGT)
counter in COMMON 329
description 509
location 505
PERFORM statement processing 109
phase 6 processing 143
phase 62 counter for 164
PFMSAV number 109
PFMTBL table
forma t 364-365
PERFORM statement processing 109
PGF-ROUT routine
description 521
GN number 528
PGH-ROUT routine 521
PGNARTN routine 165
PGT (see program Global Table)
PGT-VN TABLE field (TGT) .
description 507
.
location 505
PH routine (seePGH- ROUT routine)
phase, definition' 544
phase, optional 36
phase 00
CSECT names 317
description 31-45
entry point
COS 35,44
(see also COMMON)
START 31
.
flowcharts 197-308
function 2 1 '
input/out put requests 33,34
internal cells

LINKCNT 31,487
LINKNAME 487
SEGSAVE 44
microfiche directory 317
register usage 471
SEGTBL table 44
phase 01
CSECT names 317
description 46
flo.wchart 206
function 22
microfiche ~irectory 317
register usage 471
phase 02
CSECT names 317
description 47-49
flowchart 207
function 22
microfiche directory 317
register usage 472
phase 03
CSECT names 317
description 50
diagram 597
flowchart 208
function 22
microfiche directory 317
register usage 472
returning control to phase 00
phase 04
description 51
diagram 561
entry point 317
flowcharts 209-212
function 22
input-output requests 51
microfiche directory 317
register usage 472
texts produced 316
phase 05 .
CSECT names 317
description 52-53
flowcharts 213-215
function 22
input/output requests 37
microfiche directory 317
register usage 473
phase 06
CSECT names 317
description 54
flowcharts 216-219
function 22
input/output requests 37
microfiche directory 317
register usage 473
phase 08
CSECT names 317
description 55
flowcharts 220~221
function 22
input/output requests 37
microfiche directory 317
register usage 473
phase 1B
CSECT names 318
description 66-70
entry point 318
flowchart 232

50

Index

607

Licensed Material - Property of IBM

phase 1B (continued)
function 22-23
input/output requests 37
internal cell SEGSH 69
microfiche directory 318
register usage 475
table usage 313
texts produced 316
TIB usage' 315
phase 3
CSECT names 318
description 88-98
entry points 318
flowcharts 251,253
function 23
input/output requests 38
microfiche directory 318
register usage 477
table usage 313
texts produced 316
TIB usage 315
phase 4
CSECT names 319
description 104-117
entry points 319
flowcharts 259-261
function 23
input/output requests 38
microfiche directory 319
optimization information elements 428.
register usage 477
texts produced 316
table usage 313
TIB usage 315
phase 6
CSECT names 319
description 141-160
entry points 319
flowcharts 276-281
function 24
input/output requests 31
microfiche directory 319
OU6REC internal cell 151
register usage 479
table usage 314
texts produced 316
TIB usage 315
phase 6A
CSECT names 320
flowcharts 300-302
description 190,191
function 24-25
input/output requests 42
microfiche directory 320
register usage 481
table usage 314
TIB I}sage 315
phase 10
communication section processing 60
CSECT names 317
description 56-60
entry point 317
flowcharts 222-225
function 22
input/output requests 37
internal cell CURGCN 56
microfiche directory 317
register usage 474
608

table usage 313
texts produced 316
TIB usage 315
work area ICTEXT 59
phase 12
CSECT names 317
description 61-65
flowcharts 226-231
function 22
generating error messages 64
input/output flow 63
input/output requests 37
microfiche directort 317
register usage 474-475
table usage 313
texts produced 316
TIB usage 315
phase 20
communication section processing
CSECT names 318
description 71-73
entry point 318
function: 23
flowcharts 233-236
input/output requests 37
DCBEXLST cell 80
microfiche directory 318
register usage 475
table usage 313
texts produced 316
TIB usage 315
phase 21
CSECT names 318
description 79-84
flowchart 245-246
function 23
input/output requests 38
microfiche directory 318
register usage 476
table usage 313
texts produced 316
TIB usage 315
phase 22
CSECT names 318
description 74-78
flowcharts 237-244
function 23
input/output requests 38
microfiche directory 318
register usage 476
table usage 313
texts produced 316
TIB usage 315
phase 25
CSECT names 318
description 85-87
diagram of operations 577
flowchart 247-250
function 23
input to 87
microfiche directory 318
operations 87
operations diagram 577
register usage 476
table usage 313
TIB usage 315
phase 35
CSECT names 318

73

Licensed Material - Property of IBM

description 99-103
entry point 317
flowcharts 254-258
function 23
microfiche directory 318
register usage 477
routines 100-102
table handling 100
table usage 313
TIB usage 315
phase 45
CSECT names 319
description 118
flowcharts 262-264
function 23
input/output requests 39
microfiche directory 319
register usage 478
table usage 313
texts produce~ 316
TIB usage 315
phase 50
CSECT names 319
description 119-132
entry points 319
flowcharts 265-270
function 24.
input/output requests 40
microfiche directory 319
optimization information elements
register usage 478
table usage 313
texts· produced 316
TIB usage 315
phase 51
CSECT names 319
description 133-140
entry points 319
flowcharts 271-275
function 24
input/output requests 40
microfiche directory 319
register usage 478
table usage 313
texts produced 316
TIB usage 315
phase 62
CSECT names 319
description 161- 174
diagram of 581
flowcharts 282-286
function 24,161
input/output requests 41
microfiche directory 319
operations 581
register usage 479
table usage 313
TIB usage 315
phase 63
CSECT names 320
description 175-178
diagram 583
flowchart 287-292
function 24
input/output requests 41
microfiche directory' 320
register usage 480
table usage 313

436

texts produced 316
TIB usage 315
phase 64
CSECT names 320
description 179-186
flowchart 293-297
function 24,179
input/output requests 42
microfiche directory 320
output 179
register usage 480
table usage 313
t~xts produced
316
TIB usage 315
phase 65
CSECT names 320
description 187-189
diagram 585
flowcharts 298-299
function 24,187
input/output requests 42
microfiche directory 320
register usage 480
table usage 314
TIB usage 315
phase 70
CSECT names 320
description 192-194
entry points 320
flowchart 303
function 25
input/output requests 43
microfiche directory 32C
register usage 481
table usage 314
TIB usage 315
XU6REC internal cell 193
phase 71
CSECT names 320
description 192-194
microfiche directory 320
phase 72
CSECT names 320
description 192-194
microfiche directory 320
phase 80
CSECT names 320
description 195-196
flowcharts 304-308
function 25
input/output requests 43
microfiche directory 320
register usage 482
PHASEND routine 86
PHAS63 routine 175,177
PHCTRL routine
flowchart 253
phase 3 control 88-89
SEARCH string processing 93
PHINIT routine
description 88
Glossary building 88,597
PHMESS table, use in phase 70 192
PHxERR tables 193,194
PHZERR cell (COMMON)
338
PHZSW cell (COMMON)
description 333
use in phase 02 47,48
Index

609

Licensed Material - Property of IBM

PHZSW1 cell (COMMON)
description 333
use in phase 02 47,48
use in phase 3 (SYM bit)
88
use in phase 6A 190
PHZSW2ceil (COMMON)
description 334
use in phase 02 47,48
PHZSW3 cell (COMMON)
description 334
statistical information 48
syntax-checking function 45
use in phase 02 47,48
PHZSW4 cell (COMMON)
334
PHOSW cell (COMMON)
339
PH1BYTE cell (COMMON)
configuration section processing 57
description 335
PH1ERR table, use in phase 70 193,194
PH2ERR table, use in phase 71 192
PH25SW cell (COMMON)
338
PH3ERR table, use in phase 72 192
PH4ERR table, use in phase 72 192
PH45CTL routine 118
PH45BIT bit (COMMON), set in phase 4 104
PH5CTL routine
debug option processing 135
flowchart 266
handling phase 51 verb strings 132
ON processing 137
verb string processing 119,120
PH5ERR table, use in phase 72 192
PH6 routine (phase 6) flowchart 277
PH6 routine (phase 62) flowchart 283
PH6ERR cell (COMMON)
description 329
phase 70 processing 193
PH6ERR table, use in phase 72 192
PH62 routine 581
PH65 routine 585
PIOTBL table
format 365
input to phase 12 63
output of phase 12 63
phase 1B processing 66
RERUN clause processing 58-59
use in phase 21 79
verb processing 69,70
PLSCALL routine 205
PMAP option
description 27
phase 02 parameters 47
phase 62 output 161
phase 64 processing for 179
register assignments 483
switch for 333
PN (source program procedure-name)
allocation (phase 62)
167
DEF-text
format 443
phase 64 action 179
Procedure A-text forinat 434
Procedure IC-text formats 411,419
description
definition 544
dictionary entry formats 446

610

phase 1B 66,67
phase 50 130
phase 51 134
equate strings
description 144
optimization A-text format 439
field (PGT)
511
number·
phase 1B 66,67
phase 4 104
phase 6 150
optimizing 146
reference element
phase 64 action 184
Procedure A-text format 434
Procedure IC-text formats 411,419
PNATBL table
format 366
phase 62 processing 165
PNCHSlf routine
description 189
diagram 585
PNCHSW switch, use in phase 65 189
PNCTR cell (COMMON)
description 325
use in phase 1B 66
use in phase 51 13~
PNDEF routine
diagram of 583
flowchart 290
PNDEFR routine (phase 62)
581.
PNDEFRTN routine· 102
PNEQUR routine 146
PNFWDBTB table
building of 171
format 366
PNLABTBL table
building of 171
format 366
use in phase 63 175
use of· ACCUMCTR 171
PNLBDTBL table, format 367
PNOUNT table
description 111~112
format ~67
PNQTBL tabledescription 67,68
format 367
PNTABLtable
description 67,:68
format 368
PNTBL table
format 368
optimizing PNs 583
PN allocation 149-150
Procedure A-text elements 152,153
PNUREF element, optimization A-text
format 440
PNUTBL table
building of 135
format 369
optimizingPNs
146
phase 6 introduction 141
PRBLDISP ~ell (CO~MON)
description 325
phase 64 processing 186
PRBLNUM cell (COMMON)
330

Licensed Material -

PRBL1 CELL PTR field (TGT)
description 508
location 505
PRFORM routine
description 109
flowchart 2.61
PRFTWO routine (phase 6)
flowchart 278
diagram of 581
PRFTWO routine (phase 62) flowchart 284
PRIME routine
called by MOVDIC 499
description 498-499
PRINT option 531
PRINT*SWITCH data-names 522
PRINTBUF cell (COMMON)
338
priority, definition 544
priority elements, debug-text format 444
priority numbers in segmentation
checking in phase 1B 69
Configuration Section 57
procedure A-text processing 151-152,155
PROC BL counter
use in branch instruction
processing 174
use in building PNLABTBL and
GNLABTBL 171
use in phase 62 169
PROCCTR cell (COMMON) 330
procedure, in-line, definition 544
procedure, out-of-line, definition 544
Proced ure A- te xt
data sets used for 37~43
definition 544
formats 434-438
use in procedure block
allocation 168,169
procedure A1-text
d ef ini tion 545
formats 441-442
phase 64 action 179,183-186
phase 64 processing of 179
producing of 175
procedure base register for GNs element
phase 64 action 182
procedure A1-text format 441
procedure base register for PNs element
phase 64 action 182
procedure A1-text format 441
Procedure Block
allocation 168,169
definition 545
phase 63 processing for 175
segmentation processing 171
PROCEDURE BLOCK field (PGT)
description 51,2
location 510 :
overflow allo'cation 166
procedure block number element, phase 64
action 183
Procedure Division
compiler design 2.0
overview 21-25
phase 1B processing 66
procedure-name processing 104
Procedure field (object module)
description 512
location 510

~roperty

of IBM

Procedure IC-text
data sets used for 37~43
definition 545
description 21
formats 411-432
procedure-name DEl-text element, phase 64
action 182
procedure-name reference, optimization
A-text format
440
'
procedure-name, compiler generated (see GN)
procedure-name, source program (see PN)
procedure-name, variable (see VN)
procedure P1A-text 424
PROCESLD routine 86
processing for branch instructions
phase 62 174
phase 63 17 5
processing for optimization information
elements 176
PROCINDX table
building of 188
format
compiler 369
debug data set 466
PROCNOTE save area, use in phase 65 188
PROCRENM routine 86
PROCTAB table
building of 187
format 46,5
location in object module 501
object module 514
PROC01 routine
description 64
flowchart 228
PROC02 routine
description 64
flowchart 229
producing a storage dump 29,470
producing file section entries 71
producing incomplete Data A-text 72
producing the report writer subprogram 62
PROGID cell (COMMON)
description 325
use in phase 10 57
program break 134
(see also critical program breaks)
program collating sequence, phase 05 57
Program Global Table (PGT)
base registers for 182
COMMON, relationship to 324
counters used for 146
definition 545
description 510-512
fields
COUNT LINKAGE AREA 511
DCBADR 511
DEBUG LINKAGE AREA 510
DISPLAY LITERAL 512
GN 511
LITERAL 511-512
locations 5,10
OVERFLOW 511
PN 511
PROCEDURE BLOCK 512
TEST LINKAGE AREA 511
VIRTUAL 511
VIRTUAL EBCDIC NAMES 511
VNI 511
Index

611

Licensed Material - Property of IBM

Program Global Table (PGT) (continued)
phase 6 introduction 141
phase 6 storage allocation 148-151
phase 62 storage allocation for 162-166
phase 64 processing for 179
progress messages
defini tion 545
interphase processing 34
SYSTERM data set 44
TERM option 26
PROGSUM table
building of 188
format 456
PROGSW cell (COMMON)
338
PSHTBL table
description 113
format 370
PSIGNT table
description 111-113
format 370
PSVCTR cell (COMMON)
description 329
use in phase 6 143
use in phase 62 164
PTRFLS table
description 113
format 370
PTYNO cell (COMMON)
327
PUT routine (phase 6)
151
PUTDEF routine
flowchart 274
PN definition 134
PO-text (see procedure IC-text)
P1-text (see procedure IC-text)
P1BTBL table
description 66
format 371
input to phase 12 63
outpu t of phase 12 63
use in phase 10 61
P1TEXT table
description 100
format 372
P2~text (see procedure IC-text)
Q-routine, definition 545
Q-routine generation 77-78
Q-routine identification elements
A-text processing for 77
phase 64 action 182
QALTBL table 372
QBEGIN routine 175
QBUILD routine 78
QFILE table
attribute replacement 95
format 372-373
phase 21 processing 79
use in phase 3 95
QGNTBL table
building of 177
format 373
use in phase 63 175
use in phase 64 182
QITBL table
diagram of 87
format 373
input to phase 25 85
612

QISAM access method 80-83
QLTABL table
format 374
input to phase 12 63
QNMTBL table
description 57-59
format 374
QRTN table
diagram of 87
format 374-375
input to phase 25 85
QSAM access method 80-83
QSBL table 375
QTBL table
format 375
Q-routine identification element 160
use in phase 64 182
QUALIF routine 95
qualified name, definition 545
qualifying EBCDIC name, Procedure IC-text
format 411
QUOTE option 28
QVAR table
dictionary attributes 95
format 375-376
phase 22 processing 75
QVARBD routine 78
RCDTBL table
Data Division processing 59
format 376
input to phase 12 63
output of phase 12 63
RC4 routine flowchart 296
RC8C routine flowchart 296
RD dictionary entries
Data IC-text format 402
description 59
format 449
preprocessing 76
RDFSTK table
format 376
use in phase 22 76,77
RDF2 routine
description 188
diagram 585
RDSCAN routine
description 62
flowchart 227
RDSYN routine 77
RD001 routine flowchart 296
READ routine
description 33
flowchart 200
READ statement 89
READ verb 136
READ verb, debug proc6ssing 135
READFN routine 89
READF2 routine (phase 6) 146
READF2 routine (phase 62) diagram
READF4 routine
description 74
flowchart 243
READLIB routine, flowchart 204
RECEIVE verb
phase 50 processing for 129
phase 51 processing 136

581

Licensed Material -property of IBM

Record Description dictionary entries 60
(see also RD dictionary entries)
RECORD KEY clause 64
REDEF routine 76-77
REF-text
data sets used for 37-43
definition 545
format 443
phase 6A 190,191
REFLD11 routine diagram 585
REDEFINES clause, phase 22 processing
of 62,76-77
REGCOMAD routine, diagram 585
register assignment
CMS interface routine 539
description 155,156
NOOPT option 483
OPT option 483
optimization of 168-170
phase 51 verb processing 135
register specification element
format 435
phase 64 action 185
register usage
compilation 471-482
execution-time 155,156
saving registers 487
work registers 135
register 14, optimizing assignment of 170
register 15, optimizing assignment of 170
REGLIST routine 581
REGMTX table 151-156
REGMV1 routine
diagram 581
use in register assignments 169
RELADD cell (COMMON)
325
relational codes, Procedure IC-text
format 412
P1 format 421
P2 format 428
relative addresses element
format 435
phase 64 action 185
RELEASE verb, debug processing 135
RELLOC cell (COMMON)
329
relocation dictionary, VIRTUAL
allocation 149
RELSPACA cell (COMMON)
337
RENAMES, dictionary entries 74
RENAMS routine 74
RENAMTB table
format 376-377
input to phase 25 85
REPORT clause, phase 10 processing 61
REPORT routine flowchart 235
REPORT SAVE field (TGT), phase 62 counter
for 164
Report Section, phase 12 processing for 61
report section dictionary entries, phase 22
processing of 77
report section header, use in phase 10 61
Report writer
data-names 522,523
description 515-528
fixed routines 515
group routines 521,522
parametric routines 520,521

routines generated for
subprogram 515-522
source statements, compiler response
to 516,517
subprogram
elements of 515-523
logic of 516-519
verbs 523,524
Report writer Subprogram (RWS), phase 12
processing for 61
REPORT-CALL verb 523
REPORT-ORIGIN verb
created by phase 1B 61
description 523
OPT processing for 176
REPORT-REORIGIN verb
created by phase 1B 61
description 523
REPORT-RETURN verb 523
REPORT-SAVE verb 523
REPTAB table
format 377
input to phase 12 63
output of phase 12 63
RERUN bit
Input/Output verb processing 69
RERUN clause processing 58-59
RERUN clause 58-59
RERUN verb, phase 51 processing 136
RESERVE element
function 120
use in phase 62 169
RESIDENT option
allocation of virtuals for 149
description 28
phase 02 processing 47
phase 51 processing for 139
phase 6 processing for 149
phase 62 virtual EBCDIC names allocation
for 167
virtual allocation for 167
RET CODE field (TGT)
description 507
location 505
RET-ROUT routine
description 520
generation of 65
RETURN macro instruction 32
RETURN verb, debug processing 135
REWRITE verb, debug processing 135
RGNCTR cell (COMMON)
description 327
use in phase 62 167
RLD-text
definition 545
description 156
RLDSORT routine, diagram 583
RLDTBL table
completion by phase 64 179
format 377,378
making entries in 177
phase 6 introduction 141
phase 64 action for 181
phase 64 table processing 183
processing Data A-text, E-text,
DEP-text 159-160

Index

613

Licensed Material - Property of IBM

RLDTBL table (continue~
processing Procedure A-text
elements 152
use in phase 63 176
RLS-ROUT routine 521
FNMTBL table
format 378,379
output of phase 12 63
phase 1B introduction 66
use in phase 22 77
ROL-ROUT routine
generation of 64
logic of report writer subprogram 517
ROLTBL table 379
root segment, definition 545
ROUNDED clause 113
ROUTBL table
description 66
format 380
output of phase 12 63
routines
ACCESS routines (see ACCESS routine~
interlude 37-43
Report writer 515-522
SYNAD 32,34
verb analyzer (see verb analyzer
routines)
RPF- ROUT routine
description 521
GN number 528
RPH-ROUT routine 521
RPNCNTR cell (COMMON)
description 328
use in phase 62 167
RPT field (object module)
description 512
location 501
RPT-ORIGIN elements
phase 63 processing of 176
Procedure A-text format 436
RPT.LIN work area, phase 22 processing 62
RPT.RCD data-name 522
RPTSAV field (TGT)
description 510
location 505
processing for 146
RPTSAV cell (COMMON)
description 327
use in phase 62 164
use in phase 6 146
PSFCT routine flowchart 241
RPTWTR bit (COHMON), use in phase 10 61
RST-ROUT routine
description 520
generation of 64
RUNT EL table
format 380-381
usage 313,314
RWFTBL table
description 66
format 381
input to phase 12 63
output of phase 12 63
F64CO routine diagram of 581

614

S.nnnn data-name 523
SAME AREA clause
buffer generation 83
I-a-Control paragraph processing
phase 21 processing 83
SAME RECORD AREA clause, phase 21
processing for 83
SAME RECORD clause 58
SAME routine 83
SAMER routine 83
SAMETB table
buffer generation 83
buffer processing 83
F]) dictionary entries 80
format 381
usage 313,314
use ~n phase 21 83
SATBL table
description 58
format 382
SAVE AREA field (TGT)
description 505
location 505
SAVE AREA-2 field (TGT)
description 509
location 505
phase 6 processing 146
phase 62 counter for 164
SAVE AREA-3 field (TGT)
description 509
location 505
phase 6 processing 146
phase 62 counter for 164
SAV-ROUT routine
description 520
generation of 64
GN number 528
SAVE routine 581
SAVETBL table, use in phase 63 175
SA2CTR cell (COMMON)
description 327
use in phase 6 146
use in phase 62 164
SA3CTR cell (COMMON)
description 332
use in phase 6 146
use in phase 62 164
SBL
counter used for 143
definition 545
SBL field (TGT)
description 509
location 505
phase 62 counter for 163
SBLCTR cell (COMMON)
description 326
use in phase 6 143
use in phase 22 76
use in phase 62 163
SD dictionary entries
Data IC-text format 402
format 449
phase 21 processing of 80
preprocessing 76
SD entries 59
SD-text, definition 545
SDSIZ cell (COMMON)
328

58-59

Licensed Material - Property of IBM

SDTEXT routine
description 80
SD dictionary entries 80
SEARCH routine
determining uniqueness 95
phase 3 processing 89
SEARCH verb analyzer routine 113-114
secondary base locator, definition 545
section, definition 545
SEGBRK routine 177
SEGENTR routine 134
SEGINDX table
building of 188
format 382,466
object module 514
SEGLMT cell (COMMON)
description 328
use in phase 1B 69
use in phase 10 57
segment, definition 545
segment elements
phase 65 processing 188
SEGMENT-LIMIT clause, phase 63 processing
of 177
segmentation
control breaks 134
definition 545
elements, format 439
optimization with 171
phase 00 processing 44
phase 1B 69
phase 10 57
phase 51 134
phase 6 155
phase 63 processing for 177
segmentation call parameter element
phase 64 action 185
procedure A-text format 436
SEGNOTE routine 33
SEGPNT routine
linkage codes to 33
segmentation operations 44
SEGPROC routine 155
SEGTBL table
format 383
Procedure A-text processing 155
segmentation control breaks 134
segmentation operations 44
SELECT clause 58
SELSCN routine 49
SEND verb
phase 50 processing 132
phase 51 processing 137
SEQ option
description 28
phase 02 parameters 47
SEQERR cell (COMMOm
326
sequence option
description 28
phase 02 parameters 47
swi tch for 333
SETNAMS routine
description 86
flowchart 250
SETTBL table 383
severity of errors 31
SE6000 routine (phase 6) flowchart 279

SE6000 routine (phase 62)
diagram of 581
flowchart 285,286
SE6000 routine (phase '64) flowchart 295
SIZE ERROR clause 113
SIZE option
description 25
error handling 49
phase 02 parameters 47
SKIP routine 33
SMRCDTBL table
buffer generation 83
FD dictionary entries 80
format 384
usage 313,314
use ~n phase 21 83
SMSTBL table 384
SNF routine (phase 65), diagram 585
SNMTBL table 385
SORT CORE SIZE field (TGT)
description 507
location 505
Sort Description dictionary Entries (see SD
dictionary entries)
Sort Description entries 59
SORT FILE SIZE field (TGT)
description 507
location 505
SORT-MESSAGE field (TGT)
description 507-508
location 505
SORT MODE SIZE field (TGT)
description 507
location 505
SORT RET field (TGT)
description 507
loca tion 505
SORT SAVE field (TGT)
description 507
location 505
SORTXT routine
description 118
flowchart 264
source listing, generated by phase 12 65
source module
definition 545
description 20
SOURCE option
description 25
Identification Division 57
phase 02 parameters 47
swi tch for 333
source program errors (see error handling
in compilation)
source program procedure-name (see PN)
SPACE option
description 28
phase 02 parameters 47
SPACEX cell (COMMON)
336
SPACING cell (COMMON)
description 330
use in phase 00 48
use in phase 02 47
SPCRTS routine flowchart 231
special names, Procedure IC-text
P1 format 412
P2 format 428
SPECIAL-NAMES paragraph 57
Index

015

Licensed Material - Property of IBM

special phase 6 elements, procedure A-text
format 435
SPNTBL table
configuration section processing 57
format 385
input to phase 12 63
output of phase 12 63
verb processing 69
SRATBL table
description 58
format 386
SRCHKY table
format 386
use in phase 22 75
SRCTBL table 386
SSCIN table
format 387
usage 313,314
use in phase 45 118
SSCOUT table
format 387
usage 313,314
use in phase 45 118
SSCRPT routine 123
SSDELIM table
format 388
usage 313,314
use in ph ase 45 118
STAESW cell (COMMON)
336
standard data-name references, Procedure
IC-text
format 412
P1 format 422
P2 format 428
START entry point 31
STATE option
bit in COMMON 334
debug text construction for 176
description 26-27
phase 02 parameters 47
phase 10 processing for 56,57
phase 50 processing 120,121
phase 51 processing 135
phase 6 output 142
phase 62 output 162
phase 63 processing for 176
phase 05 processing for 187,188
Procedure A-text processing 151
segmentation processing for 178
TGT allocation for 164
statement number option (see STATE option)
STATIC routine 499
STOP RUN statement, ENDJOB option
for 28-29
storage requirements for compiler 29-30
STRING table
COMPUTE statement processing 112
format 388
MOVE statement processing 104
SEARCH statement processing 113-114
STRING verb, phase 51 processing 137
strings
ADD 124
CALL 105
EQUATE 109
EVAL 113
GO 105,106
IF 113
616

MOVE 104
SUBSCRIPT 120,121
STSRCH routine
PO-text translation 89
SEARCH format-2processing 93
SUBADR field (TGT)
counter in COMMON 329
counter used for 143
description 509
location 505
ON processing 137
phase 62 counter for 163
SUB COM PTR field (TGT)
description 507
location 505
use in phase 51 137
use in phase 62 163
SUBCTR cell ~OMMON)
329
subject hierarchy, definition 545
subscript save cell
phase 50 126
phase 6 137
SUBSCRIPT string
. MOVE statement processing 104
resolving references 120-122
subscripted references
data-name
optimizing 121,122
procedure IC-text format 426
resolving 120-122
literal
optimizing 122,123
resolving 121,122
SUMTBL table 388-389
SUPMAP option
description 27
phase 02 parameters 47
phase 6 processing 142
phase 62 output 162
switch for 333
suppression of output listing 142
SWITCH cell (COMMON)
description 334
syntax-checking function 45
use in phase 10 (RERUNN bit)
58-59
use in phase 6 142
use in phase 70 159
SWITCH field (TGT)
description 505-507
location 505·
SWITCH1 cell (COMMON)
337
336
SWITCH2 cell (COMMON)
SWITV2 cell (COMMON)
330
SXREF option
description 27
interphase processing for 31
phase 02 parameters 47
phase 6 output 141,142
phase 6A processing 190,191
phase 62 output 161
phase 64 processing for 179
swicth for 333
SYAA routine
error recovery response 470
phase input/output requests 34
SYAB routine
error recovery response 470
phase input/output requests 34

Licensed Material - Property of IBM

SYAD routine
error recovery response 470
phase input/output requests 34
SYMDICT DSECT, function 86
SYMDMP option
debug linkage area for 166
debug text construction for 176
description 27
phase 02 processing for 47
phase 10 processing for 56,57
phase 22 processing 78
phase 25 processing for 85-87
phase 50 processing 120,121
phase 51 processing 135
phase 63 processing for 176
phase 65 processing for 187,188
segmentation processing for 177-178
TGT allocation for 164
SYMSK cell (COMMON)
333
SYMSK1 cell (COMMO~
334
SYMSK2 cell (COMMON)
334
SYMSK3 cell (COMMON)
334
SYMWRITE routine. diagram 585
SYNAD exit, phase 03 processing for 50
SYNAD routines
error recovery 470
phase input/output requests 34
SYNADR01 cell (COMMON)
description 332
phase 03 processing 50
syntactic and reference markers
IPTEXT format
one byte 400
two byte 400
syntax analysis, phase 05 52-53
SYNTAX option
(see also CSYNTAX option)
description 26
phase 00 processing for 45
phase 02 processing for 47
phase 21 processing 79
phase 3 processing for 96
phase 4 processing 116
phase 50 processing '19
phase 51 processing 133
E-text processing 192
syntax-checking compilations 45
syntax checking, compiler output for 20
SYSIN data set
buffer size determination 47
input to compiler 20
SYSLIB data set, CMS FILEDEF for 532
SYSLIN data set
compiler active 37-43
output of compiler 20
SYSOUT DDNAME field (TGT)
description 508
location 505
SYSPRINT data set
compiler activity .37-42
error messages to 44
Identification Division 57
output of compiler 26
phase 70 output 25
SYSPUNCH data set
CMS FILEDEF for 532
CMS processing of 533

compiler activity 37-43
output of compiler 20
SYST option 28
SYSTDD cell (COMMON)
338
SYSTX cell (COMMON)
328
System/370
phase 10 57
phase 50 127
phase 51 140
SYSTERM data set
CMS FILEDEF for 532
compiler activity 37-43
progress and error messages to
output of compiler 20
phase 70 output 25
SYSUT1 data set
CMS FILEDEF for 532
compiler activity 37-43
general 21
SYSUT2 data set
CMS FILEDEF for 532
compiler activity 37-43
general 21
STATE option 26 .... 27 \
SYSUT3 data set
CMS FILEDEF for 532
compiler activity 37-43
Data Division processing 59
general 21
SYSUT4 data set
CMS FILEDEF for 532
compiler activity 37-43
contents in phase 64 180
general 21
SYSUT5 data set
CMS FILEDEF for 532
compiler activity 37-43
general 21
SYSUT6 data set
compiler activity 37-43
FIPS processing 28
general 21
LVL option 20,28
SYSx option
description 28
phase 02 processing for 47
SYS2 routine, diagram of 583

44

TA LENGTH field (TGT)
description 508
location 505
Table Area Management Executive Routines
(see TAMER)
Table Area Management Maps (TAMM)
497
table, definition 545
table entry definition 543
table formats 340-398
table handling (see TAMER)
Table Information Blocks (TIB)
COMMON cell 325
definition 546
TAMER Control field 496-497
usage 315
table locator, definition 545
Table usage 313,314
tables, locating 313,314
tables used by compiler, formats 340-398
Index

617

Licensed Material - Property of IBM

TABREL routine 499-500
TALLY field (TGT)
description 507
location 505
TAMEIN routine 49B
TAMEOP routine 500
TAMER
definition 546
description 492-500
initialization 49B
interphase processing 31
register usage 151
routines 49B-500
space, definition 546
storage allocation 49B
TAMM (Table Area Management Maps)
TAMNAD cell (COMMON)
325
Task Global Table (TGT)
COMMON, relationship to 324
definition 546
base registers for 1B2
fields
A(INIT1)
507
BL 508
BLL 509
CHECKPT CTR 510
COBOL ID 508
COBOL INDICATOR 507
COMPILED POINTER SOB
COUNT CHAIN ADDRESS 508
COUNT TABLE ADDRESS SOB
DBG R11SAVE SOB
DDBG R14SAVE 507
DEBUG BLL SOB
DEBUG CARD 508
DEBUGGING SOB
DEBUG MAX SOB
DEBUG PTR SOB
DEBUG TABLE 510
DEBUG TABLE PTR 507
DEBUG TRANSFER 508
DEBUG VLC 508
DECBADR 508
description 505-510
ENTRY-SAVE 507
FIB 508
INDEX 509
LABEL RET 507
LENGTH OF VN TBL 507
locations 505
ONCTL 509
OVERFLOW 508
PARAM 509-510
PCS LIT PTR 508
PFMCTL 509
PFMSAV 509
PGT-VN TBL 507
PRBL1 CELL PTR 508
RET CODE 507
RPTSAV 510
SAVE AREA 505
SAVE AREA-2 509
SAVE AREA-3 509
SBL 509
SORT CORE SIZE 507
SORT FILE SIZE 507
SORT-MESSAGE 507-508
SORT MODE SIZE 507
61B

497

SORT RET 507
SORT SAVE 507
SUBADR 509
SUBCOM PTR. 507
SWITCH 505-507
SYSOUT DDNAME 507
TA LENGTH 507
TALL Y 507
TEMP STORAGE 508-509
TEMP STORAGE-2 509
TEMP STORAGE-3 509
TEMP STORAGE-4 509
TGT-VN TBL 507
VLC 509
VN 509
WORKING CELLS 507
IS! 509
XSASW 509
phase 64 processing for 179
storageallocation 143
TBGETSPC routine 499
TBLRPT table 61
TBREADIC routine 500
TBSPILL routine 500
TBWRITE routine 500
TEMP STORAGE field (TGT)
description 508-509
-'. location 505
phase 6 counter used for 143
phase 6 processing 143
phase 62 counter used for 163
use in phase 50 126
TEMP STORAGE-2 field (TGT)
description 509
location 505
phase 6 counter used for 143
phase 6 processing 143
phase 62 counter for 163
TEMP STORAGE-3 field (TGT)
description 509
location 505
phase 6 counter used for 143
phase 6 processing 143
phase 62 counter for 163
TEMP STORAGE-4 field (TGT)
description 509
location 505
phase 6 counter used for 143
phase 6 processing 143
phase 62 counter for 163
temporary result, definition 546
temporary result references. Procedure
IC-text format 429
TENPROC routine (phase 65)
description 187
diagram 585
flowchart 299,313
TER .COD data-name 522
TERM option
bit in COMMON 334
description 26
error and progress messages 44
phas~ 02 parameters
47
phase 6 introduction 141
terminal error conditions 45
TERMINATE statement 524,527
TERMINATE verb. phase 1B processing of
termination, abnormal 31.32

6'

Licensed Material - property of IBM

TEST LINKAGE AREA field (PGT) 511
TEST option
BCDPN table for 466
DATATAB field 458
data set for 37-43
description 27
INIT3 processing for 513
interphase processing for 31
parameters for 47
phase 10 processing 56
phase 25 processing 85
phase 62 output for 162
phase 65 processing for 187-189
TESTSUBS routine
description 86
flowchart 250
text (see Data A-text; Data IC-text; Debug
text; DEF-text; dictionary entries;
E-text; Listing A-text; optimization
A-text; Procedure A-text; Procedure
IC-text; REF-text; XREF-text)
definition 546
formats 399-444
TEXT filename
CMS FILEDEF for 532
CMS processing of 533
TGT (see Task Global Table)
TGT standard area reference element, phase
64 action 184
TGT storage allocation, phase 62 162-164
TGT-VN TABLE field (TGT)
description 507
location 505
TGTADTBL table
creation of 162
format 389-390
phase 6 151
use in phase 65 189
TGTINT routine
description 163
diagram of 581
THRTPROC routine
description 187
diagram 585
TIB (see Table Information Blocks)
TIB cell (COMMON)
325
TIE usage 315
Time-Sharing Option (TSO)
19
TOTTBL table
Data Division processing 59
format 390
phase 10 processing 59
usage 313,314
TMCNTBSZ cell (COMMON)
331
TRANSFORM verb, phase 50 processing 132
Transient Area field (object module)
description 514
definition 546
translating LD entries 72
TRUNC option
description 27-28
switch for 333
TSMAX cell (COMMON)
description 326
use in ph ase 50 127
use in phase 6 143
use in phase 62 163

TWTWRO routine
description 88
Glossary building 88,597
TS2MAX cell (COHMON)
description 326
use in phase 6 143
use in phase 62 163
TS3MAX cell (COMMON)
description 328
use in phase 6 143
use in phase 62 163
TS4MAX cell (COMMON)
description 328
use in phase 6 143
use in phase 62 163
TWENPRPC routine (phase 65)
description 202
diagram 585
flowchart 299
TXPNCH routine (phase 65)
description 187
diagram 585
TXT OUT tabl.e
format 390-391
usage 313,314
use in phase 45 118
TYPE clause, input to PROC01 routine

64

UNSTRING routine
description 118
flowchart 263
UNSTRING verb
compiler characteristics for 19
phase 4 processing for 104
phase 45 processing 118,119
phase 51 processing 137
UNTIL clause 137
UPDATE routine, diagram of 583
UPSIBIT switch (COMMON) 335
UPSTBL table
format 391
use in phase 22 75
USAGE clause, input bo PROC01 routine 64
USE AFTER (BEFORE) STANDARD LABEL
declarative 327
USE AFTER STANDARD ERROR declarative 327
USE FOR DEBUGGING declarative 96,70
USE FOR DEBUGGING verbs 99-100
USE sentence
cell in COMMON for 327
debug processing 135
Declaratives processing 70
phase 1B processing of 61
USETBL table 391
USH-ROUT routine
generation of 64
logic of report writer subprogram 517
USNGTBL table 392
utility data sets 21
VALGEN routine 72
VALGRP table
format 392
input to phase 20 71
input to phase 22 75
output of phase 20 71
Index

619

Licensed Material - Property of IBM

VALTRU table
description 95
format 392-393
input to phase 20 71
input to phase 22 75
output of phase 20 71
VALUE clauses, A-text generation for 77
variable-length field, definition 546
variable-length record (see Q-routines)
variable procedure-name (see VN)
variable procedure-name definition,
optimization A-text format 440
VARLTBL table
format 393
input to phase 25 85
output of phase 22 75
VARYING clause 109
VARYTB table 393
VBREF option 29
VBSUM option 29
VCONDISP cell (COMMON)
332
verb analyzer routines
phase 4 111-116
phase 50 119-132
phase 51 135
verb information, Procedure IC-text
format 421
VERB option 28
verb string, definition 546
verb strings 104
verbs, Procedure IC-text
PO format 412
P1 format, 421
P2 format 425
VIOVIRN cell (COMMON)
331
VIRCTR cell (COMMON)
description 325
initialization 131
use in phase 50 131
use in phase 6 149
VIRPTR table
format 394
optimizing virtuals 147-148
processing Procedure A-text
elements 153
use in phase 62 166
VIRRTN routine (phase 6), optimizing
virtuals 147
virtual, definition 546
virtual definition elements
description 144,146-148
optimization A-text format 439
virtual EBCDIC names allocation 149,167
VIRTUAL EBCDIC NAMES field (PGT)
description 511
location 510
VIRTUAL field (PGT)
511
virtual identifying number 131
Virtual Machine Facility/370 529-541
virtual references
description 80
phase 21 processing 80
phase 64 action 184
Procedure A-text format 435
virtual storage 529
virtuals, optimization of 166
VLC field (TGT)
description 509
620

location 505
phase 6 processing 143
phase 62 counter for 163
VLCCTR cell (COMMON)
description 326
use in phase 6 143
use in phase 62 163
VM/370 529-541
VN (variable procedure-name)
phase 50 119
phase 51 134
phase 6 144
procedure A-text format 434
Procedure IC-text format 429
VN definition element 18~
VN field (TGT)
description 509
location' 505
phase 62 counter for 164
VN priority table, phase 62 processing 165
VN reference element, phase 64 action 184
VNCTR cell (COMMON)
description 329
use in phase 62 168
VNI field (PGT)
allocation (phase 62)
168
description 511
location 510
VNILOC cell (COMMON)
description 329
use in phase 6 150
VNLOC cell (COMMON)
description 329
use in phase 6 143
use in phase 62 164
VNPNTBL table
format 394
phase 62 processing 165
VNPTY table
des cription 165
format 395
VNTBL-table
description 104-109
format 395
VRBDN table
description 100
format 395-396
VRDEFT BL table 396
VSAM
debug FIB 467-469
FIB 80
interface 136,140
object code generation 140
VTINITVN cell (COMMON)
331
V2BUGSW cell (COMMON)
338

WCMAX cell (COMMON)
326
WG01 routine 33
work registers 155,156
WORKING CELLS field (TGT)
description 507
location 505
Working-Storage address elements
Data A-text format 409
description 1,60
phase 21 processing 80

Licensed Material - Property of IBM

phase 22 processing 77
phase 64 action 182
Working-s'torage dictionary entries, phase
22 processing 77
Working-Storage section, phase 10
processing 60
WOUT routine
description 33
flowchart 201,202
WPCH routine, flowchart 203
WRITE routine (phase 00)
description 33
flowchart 201,202
WRITE routine (phase 63), diagram of 583
WRITE verb, debug processing 135
WRITEA routine
description 33
flowchart 201,202
WRITE5 routine (phase 21)
86
WRT-ROUT routine, generation of 64
WSDEF cell (COMMON)
327
WSECT routine flowchart 239
WSTSCT routine, flowchart 235

XAVAL table
description 127
format 396
XCTL macro instruction 46,47
XFCDNO cell
description 152-154
use in phase 64 185
XFTPT switch 125
XGDPFP switch 125
XGNCON switch 125
XGNSW switch 125
XGOVFL switch 125
XGSWT switch 125
XG2IRX switch 125
XINREG switch 125
XINTR table
description 124,125
format 396-397
XIS31 routine 120
XLITER switch 125
XLITZR switch 125
XOPMOD switch, format 125
XREF option
description 27
interphase processing for 31
output of phase 6 141,1ij2
phase 02 parameters 47
phase 6A processing 190,191
phase 62 output 161
phase 64 processing for 179
switch for 333

XREF-text
formats ij43
input/output operations 37-43
phases producing 316
XSA field (TGT)
description 509
location 505
phase 6 143
phase 62 counter for 164
XSACTR cell (COMMON)
description 329
use in phase 6 143
use in phase 62 164
XSASW field (TGT)
description 509
location 505
phase 6 143
phase 62 counter for 164
XSCOMP routine 121,122
XSCRPT table
description 120-122
format 397-398
XSPRO routine
description 132
flowchart 270
XSSNT table
description 122
format 398
XSUDB3 routine 122
XSWCTR cell (COMMON)
description 329
use in phase 51 137
use in phase 6 143
use in phase 62 164
XTEN routine 74
XY code 31
XZSWT switch, format 125

YBGN table, phase 05
Y1IRX+1 switch 125

52

ZIi'B option
description 27
phase 02 processing 47
ZZ code, linkage to phase 00

34

1ST-ROUT routine
generation of 64
logic of report writer subprogram
phase 1B processing 61

Index

516

621

LY28-6486- 2

oen

<:en
(')

oOJ
or
g
3

~.
CD
.....

r
-<
qc
N

~
91
oc

I':

International Business Machines Corporation
Data Processing Division
1133 Westchester Avenue, White Plains, New York 10604
(U.S.A. only)
IBM World Trade Corporation
821 United Nations Plaza, New York, New York 10017
(lnt~rnational)

IBM OS!VS COBOL Compiler
Program Logic
LY28·6486· 2
Your comments about this publication will help us to improve it for you.
Comment in the space below, giving specific page and paragraph references
whenever possible. All comments become the property of IBM.

Please do not use this form to ask technical questions about IBM
systems and programs or to request copies of publications. Rather,
direct such questions or requests to your local IBM representative.
If you would like a reply, please provide your name and address
(including ZIP coue).

Fold on two lines, staple, and.ruul. NO'postagenecessary< if mailed in the U.S.A. (Elsewhere.
any IBM repr.cscntative will be happy to forward your comments.) Thank you for your
l.'Ooperation.
<
<

Reader's
Comment
Form

LY28-6486-2

Fold and Staple

First Class Permit
Number 6090
San Jose, California

Business Reply Mail
No postage necessary if mailed in the U.S.A.

o
en

"
Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37
Create Date                     : 2013:02:26 20:31:32-08:00
Modify Date                     : 2013:02:26 22:17:12-08:00
Metadata Date                   : 2013:02:26 22:17:12-08:00
Producer                        : Adobe Acrobat 9.52 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:db4f720f-28d3-4f57-8324-3b6d63129da9
Instance ID                     : uuid:2d39f9a2-f53c-4868-a9d6-82309fc1bcde
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 624
EXIF Metadata provided by EXIF.tools

Navigation menu