C28 6594 4_PL1_F_Programmers_Guide_Nov68 4 PL1 F Programmers Guide Nov68
C28-6594-4_PL1_F_Programmers_Guide_Nov68 C28-6594-4_PL1_F_Programmers_Guide_Nov68
User Manual: C28-6594-4_PL1_F_Programmers_Guide_Nov68
Open the PDF directly: View PDF
.
Page Count: 288
| Download | |
| Open PDF In Browser | View PDF |
File No. S360-29
Form C28-6594-4
Systems Reference Library
IBM System/360 Operating System
PL/I (F)
Programmer's Guide
Program Number 360S-NL-Sll
The PL/I
(F) Compiler translates PL/I source
programs
into
object programs in System/360
machine language. This publication describes the
facilities provided by the compiler, and the
conventions and restrictions which the user must
observe.
It explains how to compile, link-edit,
and execute PL/I source programs in the environment of System/360 Operating System. Features of
PL/I which are not supported by the (F) Compiler
are detailed in Appendix H of this publication.
OS
PREFACE
This publication describes the facilities provided by the PL/I (F) Compiler,
which functions under IBM System/360 Operating System.
It covers those language
restrictions and operating considerations
that the user must take into account in
using the (F) Compiler.
Job Control Language Charts,
Form C28-6632
Supervisor and Data
ces., Form C28-6646
system
C28-6550
Management~ervi=
Programmer's
Guide,
Form
PREREQUISITE PUBLICATION
The reader is assumed to have a working
knowledge of PL/I; he should therefore be
familiar with the material contained in the
following publication:
Utilities, Form C28-6586
In addition to those mentioned above,
the following publications contain information which may be helpful to the user.
IBM System/360 Operating system:
The following publications are referred
to in the text for information beyond the
scope of this publication:
!~~_§yst~ffil3£Q_QE~fati~~System:
~i~~~g~_Editof'
Concepts and Facilities, Form C28-6535
Form
Storage Estimates, Form C28-6551
Form C28-6538
~ob Control~~~~age,
Form C28-6539
r-----------------------------------------------------------,
IFifth Edition (November, 1968)
I
I
I
IThis is a major revision of, and obsoletes, C2B-65911-3 andl
ITechnical Newsletters N33-6006 and N33-6007. Changes tol
I the text, and small changes to illustrations, are indicated I
I by a vertical line to the left of the change: changed or I
I added illustrations are denoted by the • symbol to the left I
lof the caption.
I
I
I
IThis edition applies to Release 17, of IBM System/3601
IOperating System, and to all subsequent releases until!
lotherwise indicated in new editions or Technical News-I
I letters • Changes are continually made to the specifica-I
I tions herein: before using this publication in connection I
Iwith the operation of IBM systems, consult the latest IBMI
ISystem/360 Bibliography SRL Newsletter, Form N20-0360, fori
I the
editions that are applicable and current.
I
L
___________________________________________________________
J
Requests for copies of IBM publications should be made to
your IBM representative or the IBM branch office serving your
locality.
A form for reader's comments is provided at the back of this
publication. If the form has been removed, comments may be
addressed to IBM United Kingdom Laboratories Ltd., Programming Publications,
Hurs ley
Park, Winchester, Hampshire,
England.
CI Copyright International Business Machines Corporation 1966,
1967, 196B
RL/1-2~£f~~i~~_~iQra£YL_Co~2~tatiQ~~!
2~Q£Q~~i~~~, Form C28-6590
CONTENTS
INTRODUCTION • • •
• 11
PL/I (F) Compiler.
• 11
Different Versions of the Compiler •
Changes at Second Version •.•
·
Changes at Third Version • •
•
Changes at Fourth Vers ion. .•
•
Changes at Fourth Version,
Release 17. • • • • • • • •
•
Programming Techniques and
Optimization of Source Code.
Compatibility between
Different Versions of the
PL/I Library and Compiled
Code • .•
•
Language Level •
• • • •
Language Support •
Language Features Not Supported
in the Fourth Version •
Compiler Options • • • • • • • •
11
11
12
12
13
14
14
• 16
. 16
• 16
• 16
Processing and the Operating system. • • 16
Job. • • •
• • • •
• 17
Job step •
• • ••
17
Data Set.
. 17
PL/I Processing. • • • •
Data Set Considerations.
Cataloged Procedures
· 19
• 19
JOB PROCESSING • • • •
• 20
• 18
Compiler Processing . • • • • •
• 20
Compiler ddnames. •
• 20
Compiler Device Classes
• 21
Blocking of Compiler Input and
Output • • •
· 23
Blocking of Compiler Input • .
23
Blocking of Compiler output.
• 23
Calculations for Storage
Requirements. • • • • .• • •
· 23
SYSPUNCH/SYSLIN in Batched
Compilations. • • • • • • •
24
Compil er opt ions • . • . • .
· 24
completion Codes for the Compiler • • 30
Job Control Procedure for
Compilation.
• 30
Batched Compilation.
• 30
Compiler Output • • • •
31
Printed Listings • • • •
31
Compiler Options • .
32
Compile-Time Processor Input
Listing • •
32
Source Program Listing • • •
32
Storage Requirements . • . • •
33
A'ttribute and Cross Reference
Table • • • • • • • • • . •
• 33
Aggregate Length Table. • •
• 35
External Symbol Dictionary
Listing • • • • • • • • •
36
0
0
•
•
•
0
00
•
•
•
•
•
•
•
0
•
0
•
•
Description of Contents of ESD
Listing • • • • • • • • • • • •
STATIC INTERNAL Storage Map. • •
Object Program Listing •
•
Diagnostic Messages • • . • • • •
Time of compilation. • • •
·
Object Module output. • • . •
•
Serialization of Object Decks
Abnormal End of compilation •
·
• 36
• 37
• 38
•
39
•
•
•
.
40
40
40
40
Linkage Editor Processing. • • •
••
Linkage Editor Input and output. •
Unit Names and ddnames • • • • • .
Specifying Additional Libraries. •
Link-Editing a PL/I Subroutine
into a Private Library. • • • • •
Linkage Editor Priority. • • • • •
Overlaying of PL/I Programs.. . •
Other Linkage Editor Facilities. •
Options for Linkage Editor
Processing • • • • •
.• • • • .
Job Control Procedure for Linkage
Editor • • • • • • • •
• •
Linkage Editor output .
• •
Size of Load Module.
• • • • •
Module Map • .• .• • •
• •
Cross Reference Table. . • • • • •
Disposition Data • •
• •
Diagnostic Messages • .
· .
40
40
41
41
Load Module Execution.
. .
Execution Device Specification • •
DCB Parameter. •
• • • . . •
Job Control Procedure for
Compiling, Processing by Linkage
Edi tor, and Execut ing. . .
. .
Object Program Outp ut . • •
. •
Stream-Oriented Output.
Record-Oriented Output •
. .
Object Time Diagnostic Messages . •
Operator Messages. • • •
• •
System output . • . • • . •
. •
Use of Cataloged Procedures. .
. .
Compilation with Deck Output • • .
Compilation with Object Modulp
Output. • . • . • • • . • • • . .
Compilation and Link-Editing • • •
Compilation, Link-Editing and
Execution •
••• ••
. .
Link-Editing and Execution • •
Link-Editing and Execution of
Several Separate Compilations . •
41
41
42
44
q4
45
45
45
45
45
45
46
46
46
46
46
47
47
47
48
48
48
48
49
49
49
49
50
50
MANAGING DATA.
• • 51
Files and Data Sets. .
CONSECUTIVE Organization . •
INDEXED Organization. . • •
REGIONAL Organization • . •
Source Keys and Recorded Keys.
REGIONAL (1) Data Sets ••
• • 51
• • 51
• • 51
0
•
•
•
55
55
• 56
REGIONAL (2) Data Sets. • • • • • • 5 (.
REGIONAL(3) Data sets • • • • • • • 57
Dummy Records within REGIONAL
Data Sets • • •
• 58
Data Set Definition. •
• 58
specifying Data Sets • • • • •
•
Naming of the Data Set (DSNAME). •
Extent Allocation (UNIT, VOLUME,
SPACE, LABEL) • • • • • • •
•
Disposition (DISP,SYSOUT) • •
Data Set Attributes (DCB).
• •
File Attributes and the DD
Statement • • • • • • •
• •
Record Format Information •
Record Types • • • • • •
.• •
Block Size • • • • • • .•
Logical Record Length. •
Record Format.
• •
Use of the Various Record
Formats in STREAM I/O • • • • • •
Use of the Various Record
Formats in RECORD I/O • • .•
•
Use of Spanned Records .• • •
•
Spanned Records and LOCATE I/O • •
Number of Buffers. • • • • •
•
Number of Channel Programs •
•
Chained Scheduling • • •
•
Source Code (Paper tape)
•
Density (Magnetic Tape).
•
conversion (Magnetic
tape - 7-track) • • • •
Mode (Card Reader, Punch). •
•
Stacking (Card reader, punch) • • .
Print Spacing (Printer).. • • • • •
UCS Printer - Suppress TRANSMIT. •
Validi ty Check • • • • •
•
Deleted Records. • • • •
Keys • • • • • • • • • •
• •
Extended Search Limit. •
• •
Relative Key position. •
•• •
Master Indexes • • • • •
• •
Independent Overflow Area. • • ••
Cylinder Overflow Area • • •
Data Set Organization. • • •
•
PRINT Files. • • • • • • • •
•
The Tab Control Table. • • •
•
changing the Tab Settings..
•
M
•
Creating and Accessing Data Sets •
•
58
58
58
59
59
59
61
61
62
62
63
64
64
65
65
65
65
65
65
66
66
66
66
66
66
66
66
67
67
67
67
67
67
68
69
69
• 70
• 70
• • 70
• 70
• 70
•
•
•
•
•
•
•
•
•
• •
• 73
• 73
• 74
74
• 75
Processing Modes in Record I/O •
Move Mode • • • • •
Characteristics.
•
Language Forms •
• • • •
File Attributes.
• • • •
Loca te Mode • • '. •
•
Characteristics.
• • • •
Language Forms •
File Attributes.
•
76
76
76
76
76
76
76
77
77
•
•
•
•
•
•
61.
Stream Data Sets • • • • • • • • •
• 70
Creation of STREAM Data Sets
• 70
Accessing of STREAM Data Sets. • • 70
Record Data Sets
• • • .•
•
Use of the EVENT Option.
CONSECUTIVE •
• • • •
Creation of CONSECUTIVE Data
sets. • • • • • • • • •
Accessing of CONSECUTIVE Data
Sets. • • • • • • • • •
INDEXED • • • • • • • • • • • • •
Creation of INDEXED Data Sets.
Accessing of INDEXED Data Sets
SEQUENTIAL Access. •
DIRECT Access. • • • • • • • •
REGIONAL. • • • • • • • • • • • • •
creation of REGIONAL Data Sets •
Accessing of REGIONAL Data Sets.
SEQUENTIAL Access.. •
DIRECT Access. • • •
•
70
71
71
72
72
73
SYSTEM
REQUIREME~S,.
•
• • 78
Minimum system/360 Requirements for
the (F) Compiler. • • • • • •
Instruction Sets • • •
•
Timing Clock ,~ • ,. • • •
•
Printer Character sets •
•
Operator's Console Character
Sets. • • • • • • • • • •
•
System/360 Operating System
Requirements • • • • • • •
•
Primary control Program of the
operating System. • • • •
•
Multiprogramming with a Fixed
Number of Tasks CMFT) • • • • •
Multiprogramming with a Variable
Number of Tasks (MVT) •
•
78
• 78
• 78
• 78
• 78
• 78
• 78
• 79
•
79
Compiler Support
• • 79
Object Program Support • •
control Program Options.
Usage of Data Management
Methods for STREAM I/O.
Usage of Data Management
Methods for RECORD I/O.
79
• • 79
Access
• • • • • 79
Access
•
79
MANAGING PROGRAMS.
• • 81
Program Segmentation •
The MAIN Option:.
communication Between Separate
Compilati ons. • • • • • •
Estimation of Program Size • •
· • 81
• • 81
• • 81
• • 81
Non-PL/I Modules in PL/I Programs • • • •
Combination of PL/I With Other
Languages • '. • • • • •
• •
Variable-Length Argument List. • •
PL/I Library Subroutines
••
82
82
82
83
Conditional Execution of Job Steps • • • 83
Setting Conditions • .. • .• • • • • 83
Return Code Setting by PL/I
Object Program. • •
83
Checkpoint/Restart • • • •
• • • • • 83
Compatibility with Release 11
Checkpoint/ Restart
• • 83
Introduction • • • •
83
Step Restarts. • • •
84.
Checkpoint Restarts.
84
Single Checkpoint. • • • • ,. • • •
Multiple Checkpoints • • • • • • •
Specifying Checkpoint Restart. • •
Restarts • • • • • • • • • • • • •
Data sets for Programmer-Deferred
Checkpoint Restarts. • • • • •
•
Card Input when Using PCP. • • • •
SYSIN.
• • • •
•
SYSOUT - PCP
·
SYSOUT - MVT
•
Preservation of Data sets • • • • • •
Temporary Data sets.
Updated Data Sets. • • •
•
Multitasking • • • • • • • • •
Multitasking Requirements.
Hystem/360 Requirements.
Operating System Requirements • •
Programming Requirements • '.
Mul ti tasking Management • '. • •
Programming considerations • •
Use of Priorities in PL/I.
•
I/O Handling • •
•
Strings. • • • • •
Task Termination •
Multiprocessing • •
Synchronization. • •
object Program Management •
Pseudo-Register Vector (PRV)
PL/I Sort. • • • • • • • • •
PL/I Sort Environment.
User Control of SORT ddnames
sorting Records from One Data
Set to Another. • • • • • •
Sorting Records from a PL/I
Program or Procedure onto a
Data Set. • • • • • • • • •
Sorting Records from a Data Set
into a PL/I Program or
Procedure • • • • • _ • • _ • •
Supplying~ Sorting, and Passing
Back Records to a PL/I
Procedure • • • • • • • • •
Use of PL/I SORT in a
Mul ti tasking Environment. ,.
Data Interchange • • •
PROGRAMMING TECHNIQUES •
1.
·
•
•
•
·
•
84
84
85
86
86
86
86
86
87
87
87
87
87
87
87
87
88
88
88
• 90
• 91
· 92
• 93
• 94
• 94
• 95
• 95
• 95
• 95
• 96
· 97
• 100
• 101
.102
.103
.103
'. .104
Common Errors and Pitfalls
.104
a. Operating System and Job
Control. • • • •
.104
b. Source Program and General
Syntax • • • • • • • • • • • • • • 104
c.
Program Control • • • • • • • • 104
d.
Declarations and ~ttributes • • 105
e. Assignments and
Initialization. • • • • • • • • .107
f.
Arithmetic and Logical
Operations. • • • •
.108
g. DO groups. • • • •
.110
h.
Data Aggregates. •
.111
i. S t r i n g s . . . . .
.111
j.
Functions and
Pseudo-Variables. •
.111
k. ON-Conditions and ON-Units • • 111
1.
Input/Output • • • • • • • . • 112
2. Programming for Increased
Efficiency. • • • • • • • • •
• .115
a. Improving Speed of
Compilation ,. • • • • •
• .115
b.
Improving Speed of Execution .116
c. Decreasing size of
Dict ionary • • • • • •
• .120
d.
Use of Storage • • •
• .122
e~ Use of Compile-Time
Facilities. • • • • •
• • • 123
f.
Use of Input/Output
Facilities. •
• .124
g. Additional Hints
• .126
TESTING PROGRAMS • • •
• .128
Debugging Facilities.
• .128
Control of Interruption and
Error Handl ing,. • • • • •
. .128
ON-Codes • • • • • • • • • • • • • 128
Trace of Active Procedures
•• 131
Symbolic Output. • • . • • • • • .132
Communication with the Program . . 132
User Requested Dump. • • •
•• 132
User Completion Codes for
Abnormal Termination. •
• .133
Return Codes. • • •
.134
APPENDIX
~:
DATA
FOR~TS
•
• .135
compiler Input •
• .135
Representation of Data
Coded Arithmetic Data ••
String Data. _ • • • • • •
Pi ct ured Data. • • • • • •
Data Element Descriptor (DED).
Pointer Data • •
Offset Data •
Label Data •
Task Data • •
Event Data •
~rea Data.
•
Arrays . •
Structures •
The Creation of Dope Vectors •
·
•
·
·
•
•
·
•
·
·
.135
.135
.136
.137
.137
.138
.138
.138
.138
.139
• .139
· .140
• .140
• .140
APPENDIX B: IMPIEMENT~TION CONVENTIONS
AND RESTRICTIONS. • • • • • • • • • • .141
Input/Output Conventions and
Restrictions. • • ,. • • •
PL/I and Data Sets •
DISPLAY • •
PAGESIZE
•
LINESIZE
LINESIZE, SKIP and COLUMN in
Non-PRINT Files • • • • •
Block Size and Record Size • •
Data-Directed Input/Output
Edit-Directed Input/Output
Character Code • • • • • •
48-Character Set • • • • •
The ENVIRONMENT Attribute.
GENKEY Option. •
EVENT Option • • • • • • •
• .141
• .141
• .141
•• 141
• .141
·
·
•
•
•
•
•
•
•
.142
.142
.142
.142
.142
.142
.142
.145
.146
WAIT statement • • • • •
TITLE Option • • • • • •
BASED Variables. •
Initializing LABEL Variables in
structures with the LIKE
Attribute • • • • • • • • •
Compile-Time Processing Conventions
and Restrictions.. • • •
The MACRO Option • • • •
Precision. • • _ • • • •
•
INCLUDE Conventions. • •
Compile-Time Procedures.
Compile-Time DECLARE • •
•
Combined Level of Nesting and
Depth of Replacement. • • • •
Limitations on Size of
compile-Time Processor Input.
Limitations on Number of
Compile-Time Variables.
Output Line Numbering. •
.146
.146
• 146
• 146
• 147
. 147
•• 147
• .147
• 11.n
• • 147
• .147
• .147
.148
• 148
other Compiler conventions and
Restrictions. • • • • • •
• • • • .148
• • • . .148
OPTIONS Attribute. •
Parameter to the MAIN Procedure • • 148
Number of Variables. • • • • • • • 148
Number of Executable Statements. .148
Size of an Individual Statement. • 148
Factoring of Attributes.
.149
Limitations on Nesting •
• 149
The GENERIC Attribute. •
• .149
Number of Blocks in a
Compilation • • • •
• • .149
Level Numbers. • • • • •
• .149
Number of Parameters
.149
Number of Dimensions. •
• .149
Array Boun1s • • • • • •
.149
Data-Directed List.
• • • 150
Structure and Array Expressions • • 150
Constants. • • • • •
.150
Sterling Constants. • •
.150
String Constants • • • •
.150
Floating-Point Constants and E
Format Items. • .
.150
Constants Returned by Procedures .150
Compiler-Generated Names • • • • • 150
Temporary Results in Expression
Evaluation. • • • •
.151
Multiple Assignments and
Pseudo-Variables.
• 151
Function Values. • • • •
• .151
Qualified Names. • •
• •• 151
String Lengths
.151
String Lengths in Intermediate
Result Fields • • • • •
.151
AREA Sizes • • • • • • •
• • .151
LABEL Attribute.
• • • 152
POSITION •
.152
PICTURE. • •
.152
SETS List. • • • • • • •
.152
Scale Factor
• 152
Precision. •
.152
Floating-Point Magnitude
.152
Built-In Functions • • • • • • • • 152
MAX, MIN, MOD Built-In Functions • 152
MOD Built-In Function. • • • • • .153
COMPLETION Built-In Function and
Pseudo-variable • • • •
• .153
STRING Built-In Function •
· .153
Length of Identifiers ••
• .153
Subscripted Identifiers • •
• .153
CHECK Lists. • • • • • •
• .153
Object-Time Conventions and
Restrictions. • • • • • •
• .153
Data-Directed Input. • •
• .153
Edit-Directed Output ••
• .154
CHECK Condition. • • • •
• .154
CONVERSION ON-Condition •
• .154
ON-Units and Entry Parameter
Procedures • • • _ •
· .154
Exponentiation • •
• .154
Collating Sequence
• .154
ENTRY Names as Arguments and ON
Statements in Recursive
Contexts • • • • • • • •
• .154
Concatenated Data Sets •
• .155
Locate Mode • • • •
• .155
ON Conditions. •
· .155
Record Alignment • •
· .155
APPENDIX C: OBJECT PROGRAM
ORGANIZATION AND CONVENTIONS. •
Introduction. • • • • • • •
Pseudo-Register Vector (PRV) •
Run-Time Stack.. • • • • • •
Dynamic Storage Area (DSA) • •
variable Data Area (VDA) • • •
Prologues and Epilogues • • •
Interrupt Activity and control • •
Initial Entry to Procedures with
the MAIN Option. . • • . • • • •
Combination of PL/I with Other
Languages. • . • • • • • • • • •
Calling Sequences and Register
Usage. • • • • • •
• • • • •
Linkage Conventions for Library
Modules. • • • • • • • • •
Presentation of Arguments • •
String Dope Vector (SDV) ••
AREA DOP8 Vector. • • • • •
Array Dope Vector (ADV) • •
Structure Dope Vector • • •
String Array Dope Vector (SADV) •
Structure Mapping • • • • • • • •
Rules for Order of Pairing • •
Rules for Mapping One Pair • •
Effect of UNALIGNED Attribute.
Example of Structure Mapping •
Allocation and Release of Storage
in an Area • • • • • • • • •
•
•
•
•
·
·
•
•
.158
.158
.158
.158
.159
.159
.159
.160
• .160
· .160
• .160
•
•
·
•
•
·
·
•
·
•
•
•
.161
.161
.161
.162
.162
.163
.163
.164
.165
.165
.165
.167
• .174
APPENDIX D: PROGRAMMING EXAMPLE • • • • . 176
APPENDIX E: CATALOGED PROCEDURES • • • • 182
Installation Modifications • • . • 182
Compilation with Deck Output •
• .182
Compilation with Object Module Output •• 183
Compilation and Link-Editing •
.183
compilation, Link-Editing, and
Executi on •
• • .• • •
.184
Link-Editing and Execution
.184
Overriding cataloged Procedures. •
overriding Parameters in the
EXEC statement. • • • •
Overriding and Adding DD
statements • • • • • • '.
.184
.184
.185
APPENDIX F: DYNAMIC INVOCATION OF THE
COMPILER. • • • • • • • • • •
.186
APPENDIX G
.188
DIAGNOSTIC MESSAGES
Source Program Diagnostic Messages • • • 188
Compile-Time Processing Diagnostic
Messages. • • • • • • • • • • • •
.250
Object-Time Diagnostic Messages. •
.260
APPENDIX H: LANGUAGE FEATURES
RESTRICTED OR NOT SUPPORTED IN THE
FOURTH VERSION. • • • • • • •
.272
IDENT Opt.ion • • • • • • • • • • .272
EVENT Option in the DISPLAY
Statement.,........
• .272
EVENT Option in the WRITE
statement • • • • •
• .272
INITIAL Attribute. • • •
• .272
DEFINED Attribute. • • •
• .272
Structures and Arrays of
Structures in Certain special
Contexts • • • • • • • • • • • • • 272
VARYING Strings.. . . . . . . . . 27 3
Interleaved Arrays of Varying
strings Passed as Arguments • • • 273
LABEL Arrays. • •
• • • • • • 273
The FLOAT Attribute • • • • • • • • 273
List Processing, Table Handling,
and Locate-Mode Input/Output
Facilities. • • • • • •
• .273
The SECONDARY Attribute • • • • • • 273
The NORMAL and ABNORMAL
Attributes • • • •
• .274
BASED Variables.. • • • •
• .274
OFFSET and POINTER Built-In
Function s • • • • • • • •
• .274
Based Variable Declaration
• .275
ONCOUNT Built-In Function.
• .275
APPENDIX I: MODEL 91 .
· .276
INDEX • •
• .279
Figure 1. Job Control Language
statements. • • • • • • • ~ •
• 20
Figure 2. Input/Output Data sets
21
Figure 3. Device Class Names • • ••
21
Figure 4. BCD and EBCDIC Punched Card
Codes and Graphics for PL/I
60-character Set. • • • • • • •
• 28
Figure 5. Specimen ESD Listing •
• 36
Figure 6. Linkage Editor Input/Output
Flow. • • • • • • • • • • . • • • • ~ . 41
Figure 7. Linkage Editor ddnames • • • • 42
Figure 8. Example of PL/I Procedure
Using STREAM I/O. • • • • • • • • • • . 47
Figure 9. Example of LIST/DATA/EDIT
Output to PRINT Files using the PUT
Statement • • . • •
• • '" • •
• 48
Figure 10. Invoking the Cataloged
Procedure PL1DFC..
• • • . •
49
Figure 11. Invoking the Cataloged
Procedure PL1LFC. •
• • • • • • • • 49
Figure 12. Invoking the Cataloged
Procedure PL1LFCL •
• • • • • .
49
Figure 13. Invoking the Cataloged
Procedure PL1LFCLG.
• _ • • •
• 50
Figure 14. Invoking the cataloged
Procedure PL1LFLG •
• 50
Figure 15. CONSECUTIVE Data Set
Organization and Applicable Language
Features • • • • • • • • • • • • • • • • 52
Figure 16. INDEXED Data Set
Organization and Applicable Language
Features • • • • • • • • • • • • • • • • 53
Figure 17. REGIONAL Data Set
Organization an1 Applicable Language
Features. • • • • • • • • •
• 54
Figure 18. DCB Subparameters for
STREAM I/O. • • • • • • • • •
60
Figure 19. Additional DCB
Subparameters for RECORD I/O.
• 60
Figure 20. Format of the Tab Control
Table
• ~ • • • • • • • • • • •
69
Figure 21. Control Program Options • • • 79
Figure 22. Usage of Data Management
Access Methods for RECORD-Oriented
I/O . • • • • • • • • • • • • • • • • • 80
Figure 23. Storage Required by PL/I
Library Modules when Opening and
Closing Files • • . • • • • • • • • • • 82
Figure 24. Basic Parameters for the
SYSCHK DD Statements. • • • • • • • • • 85
Figure 24.1. Figure-Length 160-byte
Records, showing Fields on which Sort
97
is to be Made • • • • • • • '" • • • •
Figure 25. Implicit Data Conversions
Performed In-Line • • • • • ~ • • • • .119
Figure 25. Implicit Data Conversions
Performed In-Line (continued) • • • • • 120
Figure 26. Conditions under which the
string Operations are Handled In-Line .121
Figure 27. Conditions under which the
String Functions are Handled In-Line. • 122
o
·
Figure 28.
Situations under which
RECORD Condition is raised in
RECORD-Oriented I/O • .. • • • • •
.126
Figure 29.
Main ON-Code Groupings
.131
Figure 30. Detailed ON-Code Groupings .131
Figure 31. Abbreviations for
ON-Conditions • • • • • • • • • • '" •• 132
Figure 32. Attributes and Precisions
for Coded Arithmetic Data • • • •• • .136
Figure 33. Data Element Descriptor
(DED) • • • • • • • • • • • • • • • • • 138
Figure 34. Eight-Bit Encoded Form of
DE!clared Information in Flags • •
.138
Figure 35. Format of the Task Variable .139
Figure 36. Event Variable Used with
I/O • • • • . • • • • • • • • • • • • .139
Figure 36.1. Event Variable Used with
a Task • • • • • . '" • ~ • • .
. .139
Figure 37.
Format of the Area
Variable. • • • • • • • • • .
• .140
Fiqure37.1. Effect of LEAVE and
RE~WIND Options on Repositioning of
Magnetic-Tape Volumes. •
• .144
Figure 38.
Equivalence of COBOL and
PL/I Data • • • • • • • • • • • • • • • 145
Fisrure 39.
Format of structure s . . . . 156
Figure 40. Block Created from
S1:ructure S • • • • • • • • • • • • • .156
Figure 41. Block Created by structure
s with Correct Alignment. • • •
.156
Figure 42. Alignment of Data in a
Buffer in Locate Mode I/O, for
Different Formats and File
Organizations • • • • • • • •
. .157
Figure 43.
Functional Content of a
Dynamic Storage Area. • • • .
• .159
Figure 44. Initial Entry to Procedures
with the MAIN Option.. '. • • • •
.160
Figure 45.
Format of the String DOpe
Vector (SDV). • • • • .• • • • • • • • .161
Figure 46.
Format of the Array Dope
Vector (ADV) • • • • • • • • • • • • • . 162
Figure 47.
Format of the Structure
Dope Vector (SDV) • • • • • • • • • • • 163
Figure 48.
Format of the Primary
String Array Dope Vector (SADV)
•• 164
Figure 49. Summary of Alignment
Requirements for ALIGNED Data • • • • • 166
Figure 49.1. Summary of Alignment
Requirements for UNALIGNED Data • • • .167
Figure 50. Mapping of Minor Structure
G ••
• • • • • • • • • • • .• • • .168
Figure 51. Mapping of Minor Structure
E
.169
Figure 52. Mapl?ing of Minor Structure
..
N
.170
Figure 53. Mapping of Minor Structure
S
.170
Figure 54. Mapping of Minor Structure
C
.171
Figure 55 • Mapping of Minor Structure
M
.172
··
··
··
··
··
········· ·
· · · ·· ·· ···
········ ··
·· ·········
a
···
···
· · ·
···
· · ···· ·· ·· · ···
Figure 56. Mapping of Major structure
A • • • • • • • • • • • • • '• • • • • • 173
Figure 56.1. Offsets in Final Mapping
of Structure A• • • • • • • • • • • • • 174
Figure 57. AREA Format, Showing
Example of Allocated Storage and Free
Elements • • • • • • • • • • • • • • • • 175
Figure 58. Ca"taloged Procedure
(PL1DFC) for Compilation with Deck
output • • • • • • • • • • • • • • • • • 183
Figure 59,. cataloged Procedure
(PL1LFC) for Compilation with Object
Mo d ul e au tp ut • • • • • • • • • •
• 18 3
Figure 60.
Compilation and
Link-Editing Cataloged Procedure
(PL1LFCL) • • • • • • • • • • • •
.183
Figure 61.
Compilation, Link-Editing,
and Execution cataloged Procedure
(PL1LFCLG) • • • • • • • • • • • • • • . 184
Figure 62. Link-Editing and Execution
Cataloged Procedure (PL1LFLG) • • • • • 184
The PL/I (F) compiler translates PL/I
source programs into object programs in
System/360
machine
language.
It
is
designed to provide fast compilation and
comprehensive diagnostic facilities.
The most significant changes for
second version of the compiler were:
the
RECORD I/O: The statements: READ,
WRITE, REWRITE, and DELETE
The attributes: RECORD, UPDATE,
SEQUENTIAL. DIRECT, BACKWARDS,
BUFFERED, UNBUFFERED, and KEYED
The source program is maintained in
storage throughout the compilation process,
as far as possible, and successive phases
of the compiler are passed against it.
This means that the use of input/output
data sets is kept to a minimum, with a
consequent improvement in performance.
The ON-conditions: RECORD and
KEY
The compiler is of modular construction.
For the compilation of a given source
program,
it uses only those modules that
are
actually
required, and these are
selected automatically.
Note: The usage UPDATE SEQUENTIAL was not supported except
for INDEXED data set organization.
A comprehensive set of compiler options
is available to the user.
The default
values for these options are set at system
generation time, and the options required
for a particular compilation are selected
at compilation time.
Wide use is made of modular library
routines,
us~n~
selective loading techniques to mlnlmize the
storage
space
required by object progr.ams.
The built-in functions: ONFILE
and ONKEY
COMPILE-TIME PROCESSING: The compiletime processing feature of PL/I
COMPILER OPTIONS: Abbreviated names as
alternatives to the full names
for compiler options
ARRAY INITIALIZATION: Initialization of
arrays of STATIC variables by
means of the INITIAL attribute
STREAM I/O: The options PAGESIZE and
LINESIZE
The ON-condition NAME
This edition Form C28-6594-4 of the PL/I
(F) Programmer's Guide documents the fourth
version of the compiler with the improvements incorporated for' Release 17 of the
operating system.
LIST/DATA-DIRECTED OUTPUT: Alignment of
data on preset tab positions
RECORD FORMAT: The use of undefinedformat source records
Earlier versions are:
1st
2nd
3rd
4th
version
version
version
version
Form:
Form:
Form:
Form:
C28-6594-0
C28-6594-11
C28-6594-2
C28-6594-3
The more important differences between
these versions of the compiler are listed
below.
There then follows a statement
concerning the compatibility between compiled code and Library modules of various
versi·ons.
PAPER TAPE: Paper tape as input to the
compiler and object program
OPERATORS: The operators ,> and ,<, and
their 48-character set
equivalents NG and NL
QUALIFIED NAMES: The resolution of
apparently ambiguous name qualification
Introduction
11
OBJECT PROGRAM LISTING: Double-column
format for the object program
listing
OBJECT-TIME ERROR HANDLING: Optional
inclusion of the statement
number in object-time diagnostic messages
Combination of SNAP output with
SYSTEM action for ON statements
RECURSION ENVIRONMENTS: A change in the
interpretation of ENTRY parameters and ON units in recursive
contexts
LINKAGE EDITING: A changed method of
link-editing library routines
into an object program, facilitating both the link-editing of
PL/I object modules from a
library and the use of overlay
technique with PL/I object
modules.
MIXED DEFINING: The severity of diagnostic messages for defined
data of type different from the
type of the base is reduced
from terminal to error, permitting the compilation of programs using mixed defining.
CATAL03ED PROCEDURES: A new cataloged
procedure (PL1LFLG) for linkage
editing and execution
The most significent changes for the
fourth version of the compiler are:
~hanges
LOCATE I/O AND LIST PROCESSING: The
following language is now supported:
at Third Version
The most significant changes
third version of the compiler are:
for the
OBJECT PERFORMANCE: Changes in the
object code generated by the
compiler will result in considerable improvements in the
object-time performance. The
most significant improvements
are in the following areas:
data conversions, the SUBSTR
function and pseudo-variable,
the INDEX function, the UNSPEC
function, object-time error
handling and procedural housekeeping, and the usage GO TO
label-variable.
ARRAY INITIALIZATION: Initialization of
arrays of AUTOMATIC or CONTROLLED variables by means of
the INITIAL attribute.
UPDATE SEQUENTIAL: The usage UPDATE
SEQUENTIAL for CONSECUTIVE and
REGIONAL data set organizations.
ASYNCHRONOUS OPERATION: The EVENT
option on I/O statements, the
COMPLETION built-in function
and pseudo-variable, and the
WAIT statement.
BATCHED COMPILATION: The facility for
batched compilation of programs
and a new compiler option,
OBJNM.
12
Statements and options:
READ FILE(filename) SET{pointer
variable) [KEY{expression) I
KEYTO(character-string
variable)];
LOCATE based variable
FILE (filename) [SET (pointer
variable)] [KEYFROM(expression)];
REWRITE FILECfilename);
ALLOCATE based variable
[IN(area variable)]
[SET{pointer variable)];
FREE based variable [IN (area
variable)];
Assignment:
AREA to AREA
POINTER/OFFSET to
POINTER/OFFSET
Attributes:
AREA[Cexpression)]
BASED (pointer)
OFFSET (based variable)
POINTER
REFERCidentifier)
Built-in functions:
ADDR
EMPTY
NULL
NULLO
Condition:
AREA
Operation:
-> in 60-character set
PT in 48-character set
ASYNCHRONOUS OPERATIONS AND MULTI TASK- :
ING : The following language is
now supported:
Statements and options:
CALL statement with TASK, EVENT
and PRIORITY options in any
combination, .
WAIT statement extended to
allow array names in the
event list
DISPLAY statement with REPLY
and EVENT options
UNLOCK statement
NOLOCK option in READ statement
Assignment:
EVENT to EVENT
Attributes:
EVENT
EXCLUSIVE
TASK
Built-in functions/pseudovariables:
COMPLETION
PRIORITY
STATUS
Multitasking is supported by the
MVT system
INTO or FROM options; the KEY
option in the DELETE statement
is now optional.
The DELETE
statement is now supported for
INDEXED data sets using SEQUENTIAL access.
Four new ENVIRONMENT options (INDEXAREA, NOWRITE, REWIND, and 3ENKEY)
provide improved performance
COMPILER OPTIONS: SIZE and SORMGIN have
been changed, and four new
options (OPLIST, EXTDIC, MACDCK
and NEST) have been added
COMPILE-TIME OPTIMIZATION: Macroprocessor concatenations are
improved
OBJECT PROGRAM OPTIMIZATION: Constant
subscri~t and constant
expres~ion evaluation; some
instances of VARYING strings in
assignment; in-line code for
some VARYING string operations;
prologue optimization; in-line
handling of certain data conversions and some bit-string
assignments; rounding-off
for Eand F-format output; dope vector initialization improved;
optimization of some IF statements.
LISTING IMPROVEMENTS: More details in
attribute listings; aggregate
listing is in alphabetical
order; sizes of the STATIC and
program control sections are
given; the size of each DSA is
given; statement number provided in diagnostic message for
invalid pictures; improvements
of aggregate length table for
BASED items.
Multiprocessing
DATA INTERCHANGE: The COBOL option in
the ENVIRONMENT attribute; the
ALIGNED/UNALIGNED attributes
(for FORTRAN data interchange)
ASSEMBLER SUBROUTINES: A variablelength argument list can be
passed to assembler subroutines
invoked by a PL/I program
STRING HANDLING: The STRINGRANGE condition for use with SUBSTR; the
STRING function
PROGRAM RESTART: The operating system
checkpoint/restart facility is
available under PCP
EVALUATION OF EXPRESSIONS: The order of
priority is changed; concatenation now comes before the comparison and logical-operators
in the sequence of priority
PL/I SORT: The operating system sort
program is available for use
with PL/I programs
STREAM I/O: LINESIZE. SKIP and COLUMN
in non-PRINT files; PUT DATA
with no data list
RECORD I/O: Some types of VARYING
string may be used with the
The most Significant changes for the
fourth version at Release 17 are:
Introduction
13
RECORD I/O: Spanned records (VS- or
VBS-format) can be specified to
span blocks
Generic keys (GENKEY option)
can be specified to access
groups of records on an INDEXED
data set
2.
In string to arithmetic conversion,
the precision obtained is now the
maximum precision, not the default
precision.
3.
E- and F-format items are now
on output, not truncated.
4.
Multitasking is supported in this version of the compiler.
Therefore a
fourth-version program with the TASK
option will only execute successfully
with programs based on earlier versions if these programs have been
recompiled with the TASK option. Even
then, subprograms of these earlier
programs may need rearranging to execute succesfully.
PL/I SORT: User control of SORT ddnames
for multiple use of PL/I SORT
within a single job step is
provided
MULTIPROCESSING: More than one PL/I
task may be executed simultaneously by a multiprocessing
system
PROGRAM RESTART: Improved checkpoint/
restart facilities are
supported by PCP and MVT systems
A program containing a CALL
statement
with the EVENT option should be compiled with the TASK option in the main
procedure. If the TASK option is not
specified, it is assumed by default.
CATALOGED PROCEDURES: Changes to some
condition codes and to the
dsnames for temporary data sets
have been incorporated into the
PL/I cataloged procedures
~ot~~
There is
an
incompatibility
between multitasking in Release 15 and
multitasking in Release ~6, caused by
the removal of multitasking code from
some PL/I
library modules. Multitasking programs coded using a Release
15 version of the compiler must be
recompiled and re-link edited if they
are to be executed with a Release 16
version.
5Q
If a procedure is to be used recursively or in a reentrant manner,
the
attributes
RECURSIVE
(for
any
procedure) or REENTRANT (for the ma1n
procedure) must be specified in the
PROCEDURE statement. In earlier versions if these attributes were omitted, a procedure would function correctly if used recursively or in a
reentrant manner.
6.
The removal of PACKED from the language, and the introduction of UNALIGNED as the complementary attribute
to ALIGNED, has brought differences
between the current and earlier versions of the compiler in the mapping
of some aggregates and in the application of default attributes.
Details on avoiding common pitfalls and
coding for improved efficiency are given in
t.he section entitled E.rogramming TechniSl};!~~·
Co~atibility between Different Versions of
the FL/I Library and Compiled Code
Certain changes and improvements have
been made to PL/I, the compiler, and the
library between the four versions of the
compiler.
As a result, certain incompatibilities have unavoidably arisen between
library modules of the different versions.
The purpose of this compatibility statement
is to make clear to the user what incompatibilities exist, and how the problems
raised by them can be overcome.
Several changes in the fourth version
prevent this version from being completely
compatible with earlier versions:
1.
14
In the evaluation of expressions, the
pri.ority of concatenation has been
increased so that it now takes precedence over the comparison and logical
operations.
rounded
When
a PL/I program containing a
statement with the PACKED attribute is
compiled by a PL/I (F)
compiler that
supports
ALIGNED/UNALIGNED,
then
PACKED is recognised and ignored, and
the current defaults for the data type
are applied. The mapping is the same
as that formerly obtained with PACKED.
For example:
DCL A(5) BIT(7) PACKED;
is word-aligned,
B is
and C is bit-aligned.
The default for string elements in
aggregates is UNALIGNED, which provides the same mapping as for PACKED.
7.
DCL 1 STR PACKED,
2 A FLOAT(5).,
2 B BIT( 3) ;
The data-type defaults are applied; A
is ALIGNED and B is UNALIGNED.
The
mapping is the same as that
for
PACKED.
It must be remembered that PACKED and
UNALIGNED are not similar in meaning.
If UNALIGNED is substituted for PACKED
in the explicit declaration of a major
structure,
then there may be significant differences in the two mappings.
For example:
DCL 1 STR PACKED,
2 A CHAR(3),
2 B FLOAT DECIMAL(15),
2 C BIT( 2) ;
Exponentation by integers
is
now
changed.
Previously,
both operands
were converted to floating-point,
and
the result precision was the greater
of the operand precisions.
Now,
if
the second operand is a fixed-point
variable with precision (p,O),
the
first
operand
is
converted
to
floating-point, and the prec1s1on of
the result is the precision of the
first operand.
Two definite compatibility statements
can be made about the compilers in general:
1.
Compiled code from any version of the
compiler must always be executed using
a library of the same version or a
later version ..
2.
Library modules of different versions
can be mixed only in the following
circumstances:
Here A would be aligned on a byte
boundary, B on a doubleword, and C on
a bit boundary.
If UNALIGNED were
substituted for PACKED, A and B would
be byte-aligned. and C bit-aligned.
The change in the default attributes
has brought an incompatibility for bit
string arrays.
In the statement:
DCL A(10) FLOAT(5).
B(5) BIT(3);
byte-aligned,
a.
All link-edited modules must be ot
the same version as each other,
and
b.
All dynamically linked or loaded
modules must be of the same version as each other and must be of
at least as late a version as the
link-edited modules.
the former defaults for A and B would
be ALIGNED;
A would be an array of
word~aligned arithmetic
data,
and B
would be an array of byte-aligned bit
strings.
But the default for arrays
is now according to data type; A is
ALIGNED and hence still word-aligned
and B is UNALIGNED and becomes bitaligned.
To make string arrays in
programs with
PACKED
as
default
compatible (without recompiling) with
those in programs with the data-type
default, the latter must be explicitly
declared ALIGNED.
Unless
a user has link-edited PL/I
external procedures with modules from a
PL/I library and placed them in a private
library for future use with main programs
compiled by a later version of the compiler, these incompatibilities should cause no
problems.
Provided the user has installed
the latest compiler and library components,
all future link-editing operations will
result in the incorporation of the correct
library modules.
If. however, he has linkedited some of his external procedures,
then,
if
he intends to use them in
conjunction with a main program containing
later-version library modules,
he
must
remove the earlier-version library modules
from them.
On the other hand, the default mapping
for structures is the same as before.
A structure declared as:
Two methods may be employed to
this out. one temporary and the
permanent:
DCL 1
-2
2
2
STR,
A FLOAT(5),
B CHAR(4),
C(10) BIT(7);
formerly had the default attribute
PACKED; it now has default attributes
that depend on the data type.
The
mapping is the same in both cases: A
1.
carry
other
The linkage editor map for the external procedure is examined to
see
whether any library modules have been
incorporated in the load module; these
can pe identified by the initial letters IHE.
If there are no library
modules present in the load module, no
further
action
is
required.
If
library
modules are present,
then
Introduction
15
every time a main program needs to use
the external procedure. it should be
link-edited with it, using INCLUDE
cards naming the library modules which
are to be replaced (i.e., all of them)
and an INCLUDE card naming the external procedure its elf.
(The latter
must be a separate card and it must
follow the INCLUDE card
for
the
library modules.) This will result in
the incorporation of
the
correct
later-version library modules and then
the external procedure itself.
This
method is temporary.
storage size
Line count
Source program listing
Object program listing
compiler options listing
External reference listing
Attribute listing
Cross reference listing
20
The permanent method is to link-edit
the external procedure
using
the
replace facility on the NAME card. In
other words,
the linkage editor is
executed using the INCLUDE cards naming the library modules which are to
be replaced, followed by an INCLUDE
card naming the external procedure,
followed by a NAME card naming the
external procedure with the replace
option.
LANGUAGE LEVEL
-------------
Object program deck
Object program load file
Production of a NAME card
editor processing
for
linkage
Optimization
Use of either BCD or EBCDIC
Specification of source margins and of
carriage control character for source
program listing
Use of either 48- or 60-character set
Inclusion of source program statement
numbers in diagnostic messages
rh~ language features supported
by the
(F) Compiler are as defined in the publication I!~_~y~~g~Ll~Q_Q~rating System, PL/I
Reference Mdnual. Certain minor restrictions-are-necessary for the efficient operation of the compiler.
For full details of
these restrictions refer to Appendix B of
this publication.
Level at which diagnostic messages
printed
are
Compile-time processing
Compile-time processor input listing
compilation
processing
to
follow
compile-time
Extended dictionary
Nesting
ing
count for source program list-
In addition to the restrictions specified in Appendix B, certain areas of the
language are not implemented in the fourth
version of the compiler.
For
fuller
details of features not supported by this
version, refer to Appendix H of this publication.
For details of these options,
section called "Job Processing."
A number of compiler options are available to the user. These can be specified at
compilation time as parameters on the execute statement (EXEC) card. They include
the following:
The basic units of processing in the
operating system are the job and job step.
The programmer communicates with the PL/I
(F) compiler via the PL/I language; he
communicates with the operating system via
the job control language.
16
Macro-processor card deck
Model 91 option
see
the
JOB: Aircraft test flight
JOB STEP 1 : Refine raw data
On receiving a problem, a programmer
analyzes that problem and constructs a
precise procedure to solve it;
in other
words, he writes a program to solve the
problem. The computer then carries out the
work specified in the programmer's procedure.
The amount of work specified by the
programmer for the computer is called a
job, and is defined by using the JOB
control statement in the job control language.
For example,
executing a single
program to solve an equation is a job to
the computing system.
If the problem is complex, the programmer may break it down into a series of
steps, each step corresponding to a program.
For example, the programmer may
receive a tape containing raw data from an
aircraft test flight.
His objective may be
to transform the raw data into a series of
charts and reports.
He may define the
tnree following steps:
1.
g~ii!!i!!g_g~~_Qat~: Because
of intermittent errors in meters and data
transmission facilities,
errors may
occur in the raw data. The first step
is to compare the raw data to projected data and to eliminate errors.
2.
Q~Y~lQEi!!9. __ ~al~~~:
To use the refined
data and a set of parameters as input
to a set of equations to develop the
values for the creation of charts and
reports.
JOB STEP 2: Develop values
JOB STEP 3 : Generate
graphs
reports
and
Data Set
In the example,
job step 1 used three
collections
of
data
as
input
and
output -- raw data, projected data.
and
refined data. Any job step can use collections of data.
In the System/360 operating
system, a collection of data is called a
data set.
A data set is defined to the
operating system by a DD (Data Definition)
statement of the job control language. ~ne
word "file," as defined for PL/I, may for
the most part be equa~ed with the term
"data se~," as defined for the operating
system.
A data set resides on one or more
volumes.
A volume is a standard unit of
external storage~hat can be written on or
read by an input/output device.
(For example, a volume may be a reel of ta~e, a disk
pack, or a card deck.)
The operating
system provides the feature of device independence; that is, when writing his source
code,
the user need not concern himself
with the physical device from or onto which
he may be reading or writing.
The same
data set may at different times reside on
different
volumes (and hence different
types of device).
The important aspect of a job is that it
is defined by the programmer.
In this
example the job can cover all three steps.
In operating system terminology, a stage of
processing executed to perform part of a
job is called a iQ2-st~E. The programmer
defines the job step to the operating
system by using an EXEC control statement
of the job control language.
The names of data sets and any information identifying the volumes on which they
reside may be placed in a catalog to help
the operating system find the data set.
This catalog resides on the direct-access
volume that contains the operating system.
Any data set whose name and volume identification are placed in the catalog is
called a catal25l.ed data se~. Other information concerning the data set, such as
device specification, the position of the
data set in the volume or the format of
records in the data set,
can also te
accessed by the operating systemo
If the
data set is cataloged when it is first
created, the only information needed to
retrieve the data set is its name.
By designating several related steps as
one job, with each step designated as a job
step, efficient use is made of the operating system. In the aircraft test flight
example, each step may be defined as a job
step in a job encompassing all the required
processing, as follows:
Note: Data set names that begin with the
letters SYS and have a P as the nineteenth
character of the name should not be used.
Data sets with such names are created for
temporary data sets on PCP systems, but not
for temporary data sets on MVT or MFT
systems, and are deleted when the IEHPROGM
3.
9~!!er~~i!!g __ g~Eor~~
and Graphs: To use
the values to develop points for the
charts, and to print the charts and
reports.
Introduction
17
utility is used and the SCRATCH utility
control statement is specified with the
VTOC, PURGE, and SYS keywords.
Furthermore, a hierarchy of indexes may
be devised to enable the operating system
to find data sets faster. For example, an
installation may divide its cataloged data
sets into four groups:
SCIENCE, ENGRNG u
ACCNTS, and INVNTRY.
In turn, each of
these groups may be subdivided into groups.
For example, the SCIENCE group may be
divided into groups called MATH, PHYSICS B
CHEM, and BIOLOGY; MATH may be further
divided into ALGEBRA, CALCULUS, and BOOLm
To find the data set BOOL, it is necessary
to specify the names of all indexes of
which it is a part, beginning with the
largest group (SCIENCE), then the next
largest group (MATH), and finally, the data
set
BOOL.
The complete identification
needed
to find the data set BOOL is
SCIENCE. MATH. BOOL.
Data set names may be either unqualified
or qualified. An ~!lg~lified name is a
data set name that is not preceded by an
index name; for example, in the preceding
text, if data sets were not indexed, BOOL
would be an unqualified name. A gualifieQ
!l~m~
is a data set name preceded by index
names representing index levels; for example, in the preceding text, the qualified
name
of
the
data
set
BOOL
is
SCIENCE. MATH. BOOL.
Data set identification may also be
based upon the time of generation. In the
System/360 operating system, a collection
of successive historically related data
sets is called a generation data group.
Some data sets are updated periodically,
or are logically part of a group of data
sets, each of which is created at a different time: for example, a series of data
sets used for weather reporting and forecasting. The data set name for these data
sets might be WEATHER. A generation number
is attached to the data set name to refer
to
a particular generation.
The most
recently cataloged data set is always 0;
the generation before 0 is -1; the generation before -1 is -2; and so on.
The
generations for the generation dat~ group
WEATHER are:
WEATHER (0)
data set that was WEATHER (0) at the
beginning of the job becomes WEATHER (-1),
and so on, and the oldest one is usually
deleted automatically.
In the System/360 operating system, the
output of the (F) compiler is called an
Q!2~£~_!!!od~!.~ (object program)..
The object
module cannot be
executed
until
the
required references to functions and subroutines are resolved (that i~6 identified
for the use of the operating system), and
the object module is put into a format
suitable for loading.
Its external references are resolved by a program supplied
by IBM called the li!l~~g~_edi1QE.
The output of the linkage editor is
called a load module~ However, the input
to the linkage editor may be either object
modules or load modules.
Linkage- editor
execution- can be expanded further: several
object modules and load modules may be
combined to form one load module. The
linkage editor automatically picks out the
library functions and the requested subroutines and inserts them into the
load
moduLe.
The name of the library is specified to the linkage editor by a SYSLIB DD
card.
For example, if the compiled object
module TEST calls subroutines ALPHA and
BETA (which in this example are assumed to
be object modules) and the library function
SIN (a load module), the linkage editor
combines the object modules ALPHA, BETA,
and TEST and the load module SIN to form a
single load module.
A program written in PL/I may call
subprograms written in the assembler language.
An example is given in Appendix D.
After an object module is processed by
the linkage editor, the resulting load
module may be executed.
Therefore# to
execute a PL/I program, a minimum of three
steps is necessary:
1.
Compile the PL/I source program
2.
Process the resulting object module
and any load modules
(which
may
include any PL/I subprograms) to form
a load module
3.
Execute the load module
WEATHER (-1)
WEATHER (-2)
When a new generation data group is
created, it may be called generation +~.
After a job has created WEATHER (+1), the
operating system changes its name to WEATHER (0), if cataloged automatically. The
18
Compiling, link-editing, and execution are
a series of jobs and/or job steps; to the
operating system, each job and job step is
defined by the programmer.
Each compilation,
the linkage editor
execution, and the load module execution
may be defined as separate jobs.
(If this
is done, there is only one job step in each
job.)
However, several single
job steps
may be combined into one job. For example,
all the compilations may be combined.
In
this case, each compilation is a single job
step.
Furthermore, all of the steps,
compilations,
link-editing, and execution may
be combined into one job.
Then each compilation, the linkage editor processing,
and
the execution of the load module are separate steps.
An exception is that a batched
compilation facility (described later) permits more than one compilation within a
single job step.
includes a directory which is used to
locate a particular member.
One of the
uses of partitioned data sets is the storage of load modules.
In fact,
a load
module can be executed only if it is a
member of a partitioned data set.
cataloged data sets and generation data
groups do not have to reside on directaccess devices. A catalog is maintained by
the operating system for cataloged data
sets and generation data groups.
However,
a PDS must reside on a
direct-access
device,
and its members must be sequential
data sets.
The PDS maintains its own
directory of its members.
To further clarify these distinctions,
assume that a ~30urce program MAIN is to be
compiled and executedQ
MAIN requires the
services of two subprograms, SUB1 and SUB2u
and neither subprogram is compiled.
In
this example,
five steps are used to perform the job:
JOB: Multiple
compilations,
editing, and execution
link-
JOB STEP 1 : Compile MAIN
JOB STEP 2: Compile SUB1
J'j,..) STEP 3 : Compile SUB2
JOB STEP 4 : Process
editor
by
linkage
load
JOB STEP 5: Execute
the
module called MAIN
A data set has been defined as a collection of data.
The (F) compiler and linkage
editor are concerned with two types of data
sets, sequential data sets and partitioned
data sets.
A ~3equential_data~~ is a data set in
which the records are arranged to be read
in the sequence in which they are physically stored.
A sequential data set may
reside on any type of volume.
A ~~titi~~Q~ata ~ (PDS) is a group
of members,
each of which has many of the
properties-of a sequential data set,
and
which can be used individually as a sequential data set.
A partitioned data set must
reside on a direct access volume, and it
An installation may have certain procedures to follow in its daily processing.
For example, weather reporting is processed
daily.
To reduce the possibility of error
in the daily reproduction of these
job
control statements,
a cataloged procedure
may be written. A £~~alQg~~_EEQcedure is a
set of EXEC and DD control statements that
are placed in a PDS accessed by the operating system.
The JOB statement cannot be
cataloged.
To describe a job stef an EXEC
statement may invoke a cataloged procedure.
Because EXEC statements may be cataloged,
the cataloged procedure may consist of a
series of steps.
The equivalent of a job
step in a job is called a procedure step in
a cataloged procedure.
Cataloged procedUres cannot be nested; that is, one cataloged procedure cannot invoke another cataloged procedure.
For a job step, a number of data sets
may be defined by the DD statement.
DD
statements may be written in cataloged
procedures.
To simplify the steps involved
in compiling and link-editing, five cataloged procedures have been supplied by IBM
for the PL/I
(F)
compiler.
These five
cataloged procedures and their uses are:
PL1DFC
compilation with deck output
PL~LFC
compilation with object module
output
for
linkage editor
input
PL1LFCL
compilation and link-editing
PL1LFCLG compilation, link-editing* and
execution
PL1LFLG
link-editing and execution
Introduction
19
JOB PROCESSING
To execute a PL/I program three steps
are required:
compilation, processing of
object output by the linkage editor, and
execution of the load module. These steps
all require the use of job control language
statements. A summary of these statements
is given in Figure 1.
r-----------T-----------------------------,
Function
I
I Statement I
~-----------+-----------------------------~
I JOB
I Indicates the beginning of I
I
I a new job
I
~-----------+-----------------------------i
I EXEC
I First statement for each
I
I
I job step. It indicates the I
I
I
I cataloged procedure or
J program to be executed
I
I
~-----------+-----------------------------i
I DD
I Describes data sets and
I
I
I controls device and volume I
I
I assignment
I
~-----------+-----------------------------i
I delimiter I Used, when data is included I
I in the input stream, to
I
I (/*)
I
I separate data from subI
I
I sequent control statements I
~-----------+-----------------------------i
I null (II) I Marks the end of the last
I
I _____________________________
job in an input stream
LI ___________ L
JI
Figure 1.
Job Control Language Statements
If data is included in the input stream,
the data cards must normally be preceded by
a DD * statement (e.g.,
SYSIN DD *) and
followed by a delimiter statement, although
these are not always necessary when operating with a priority scheduler. For full
details,
refer to the publication 1~~
§~~em/360_Qe~~~igg __ §ystem,
Job Control
Lang£~g~.
Job processing can often be simplified
by using the cataloged procedures described
1n this chapter and in Appendix E of this
publication.
The names for DO statements (ddnames)
connect 1/0 statements in the compiler with
data sets used by the compiler. Names for
1/0
device classes have also been established and must be used by the programmer.
The program name for the compiler is IEMAA,
so that if the compiler is to be executed
in a job step, the parameter PGM=IE~~ must
be used in the EXEC statement. Normally,
20
however, the parameter would appear on
EXEC card within a cataloged procedure.
an
If the compiler is to be dynamically
invoked by the CALL, LINK, XCTL, or ATTACH
macro instructions, details of the method
to be used will be found in Appendix F.
COMPILER DONAMES
The (F) compiler uses a maximum of seven
standard data sets. Each data set has been
assigned a specific ddname in order to
establish communication between the compiler and the programmer. Each data set is
given a specific function which must meet
device requirements for the PL/I (F) compiler. The ddnames l functions, and device
classes for the data sets are given in
Figure 2. These ddnames ~~~~ be specified
as ddnames for compiler DO statements, and
must correspond to the function listed in
Figure 2.
The requirements for each data
set designate which type of inputloutput
device must be used for the data set. In
additLon to the seven standard data sets,
each data set explicitly referenced in a
compile-time INCLUDE statement must also
have a corresponding DD statement. The
device requirements for these data sets are
the same as for the SYSLIB data set.
To compile a PL/I program on the (F)
compiler, two of these data sets are necessary: SYSIN and SYSPRINT, along with the
direct-access
volume that contains the
operating system.
With these two data
sets, only the listing is generated by the
compiler, If an object deck or a MACDCK
deck is to be provided, a SYSPONCH DD
statement must be specified. If the object
module is to be written, a SYSLIN DD
statement must be supplied.
SYSUT1 is
always
required
if
the
SIZE option
(explicitly or by default) specifies a
value less than 53,248. With higher values
of SIZE, the SYSUT1 data set is used only
when the source program and internal tables
cannot be wholly contained in main storage.
The table of space requirements for SYSUT1
(see "Compiler Device Classes") is a guide
to when the data set will be used.
For
practical purposes* however, it is advisable to include the DO statement for SYSUT1
as a matter of course. SYSUT3 is used for
compile-time processing, and for programs
using the 48-character set. SYSLIB is used
for compile-time processing of
INCLUDE
statements in which a ddname is not explicitly specified.
r-----------T-----------------------T-----------------------------------,
ddname
I
Function
I
Possible
I
I
I
I
I
Device Classes
I
~-----------+-----------------------+-----------------------------------~
I SYSIN
I Source Input
I SYSSQ, the input stream device
I
I
I
I (specified by DD *), or paper tapel
I
I
I reader
J
I
I SYSPRINT
I
I S~SPUNCH
I
I Listing Output
I
I Deck and MACDCK
I
I SYSSQ, or SYSOUT device
1
I SYSCP, SYSSQ
I
I
I
I
1
I output, or SYSOUT
I (punch) device
I
I
I
1
I SYSLIN
I
J
I
I
I
I Object Module Output I SYSSQ
I
I
I
I
SYSUr1
I Auxiliary Storage for I SYSDA
I
I
I
I Text and Dictionary
I
I
I
SYSUr3
I Auxiliary Storage for I SYSSQ
I
I Compile-Time Process- I
I
I ing and 48-Character I
I
I Syntax
I
I
I
I
J
SYSLIB
I Default input for
I SYSDA
I
I compile-time INCLUDE I
J
statements
I ___________________________________ JI
___________ LI _______________________
~
Figure 2.
Input/Output Data Sets
r------------T------------------------------------"-----T-----------------------------,
Class Function
I
Device Type
I
I Class Name I
r------------+-----------------------------------------+-----------------------------~
I
SYSSQ
I Writing, reading
I Magnetic tape, DASD
I
~------------+-----------------------------------------+-----------------------------~
I
SYSDA
I Writing, reading, updating records in
I DASD
I
I
I
I
I place
~------------+-----------------------------------------+-----------------------------~
I
SYSCP
I Intermediate or ultimate device for
I Card punch, magnetic tape
I
I ____________ I ________________________________________
punched cards
I _____________________________
DASD
L
J1
~_.
Figure 3.
~
Device Class Names
For the DD statements SYSIN, SYSPUNCH,
or SYSPRINT, an intermediate storage device
may be specified instead of the card reader, card punch, or printer, respectively.
If an intermediate storage device is
specified for SYSIN, the compiler assumes
that the source program deck was placed
there by a previous job or job steps.
If
an intermediate storage device is specified
for SYSPRINT, the listing and diagnostic
messages are written on the device; a new
job or job step can print the contents of
the data set. Similarly, if an intermediate storage device is specified for SYSPUNCH,
the card deck is written on that
device, and another job or job step will be
needed to punch the card deck.
Under the
MVT system, this can be done automatically
by specifying a SYSOur data set.
COMPILER DEVICE CLASSES
Names for input/output device classes
used for compilation are specified to the
operating system at system generation time.
The usual class names, functions, and types
of devices are shown in Figure 3.
The data sets used by the compiler must
be assigned to devices eligible for the
classes listed in Figure 2.
It should be noted that a direct-access
storage device may be used for all compiler
devices.
The SPACE parameter in the DD
statement must be used if there is a
possibility that the data set will be
written on a direct-access device.
Job Processing
21
For
most
practical situations,
the
values used in the SPACE parameters of the
data sets defined in the cataloged procedures in Appendix E will be adequate.
However,
typical space requirements for
various data sets can be calculated from
tne following information (All values given
are in bytes):
r----T------T-----------------------,
I
I
INO. of tracks required 1
I SN I SIZE r-------7-------T-------~
I
1
1 2311 1 2301 1 2321 1
~----+------+-------+-------+-------~
1
1 44K 1
8 I
4 I
22 I
24* I
I
I
1
I
I
I
~------+-------+-------+-------~
I
IR = number of input records (i.e., number of records containing source
text + number of records included
through
the compile-time INCLUDE
statement).
SR
SN
number of records containing source
statements after compile-time time
processing is completed.
number of source statements after
compile-time processing is completed.
VN
of
numb~r
variables
used
in
the
program.
150 I 100K
I
0
I
0
I
0 1
I
t------+-------+-------+-------~
I
I
200K
I
0
I
0
I
0
I
~----+------+-------+-------+-------~
I
1
1
92 I
97* 1
I 5 00 1 100K 1
1
1
I
18 1
22*1
9 I
11*1
27 I
33*1
I
I
1
1
I
I
1
44K
I
31
I
14
J
~------+-------+-------+-------~
~------+-------+-------+-------~
1 200K 1
0 I
0 1
0 I
r----+------+-------+-------+-------~
44K 1
1
64 I
1
1
1
1
r------+-------+-------+-------~
I
t------+-------+-------+-------~
110001 100K 1
1
1
1
68 1
74*1
28 1
1
192 I
202*1
1
1
34 1
37*\
102 1
111*1
\
1 200K 1
15 1
9 1
27 1
1L ____ L1______ L1_______
20*1L _______
12*1L _______
28*1J
* EXTDIC option specified
Space required =
120x( IR
+
+
SR
10xSN
+
+
VN
+
VN
30)
if SOURCE2 op~ion
is specified
if SOURCE option
is specified
if LIST option is
specified
if ATR option is
specified
if XREF option is
specified
bytes if EXTREF option
is specified
Space required = 80 x SN bytes
Source programs which are large enough
to cause the SYSUr1 data set to be used
will compile more efficiently if this
data set resides on a drum or in a
contiguous area on a disk.
Since it is not advisable to use
EXTDIC if SIZE=44K, the figures for this
value must be taken as applying to a 48K
capacity.
22
Space required for 48-character set processing
2 x SR x (average record
length) bytes
Space
required
for
compile-time
processing = size of program after
compile-time processing
Space
required for both 48-character set
and
compile-time
processing =
2 x (size of program after compiletime processing
These formulas give only approximate
answers, in that considerable variation
may result from the nature of individual
source
programs.
The figures given
should provide adequate space in most
cases. The secondary allocation facility
should be used as a protection against
exceptional requirements.
Record parameters on this data set
depend on whether the MACRO or the CHAR48
option is used.
If the MACRO option is specified (with
or without the CHAR48 option), SYSUT3
will be opened with the following parameters:
Record format:
F(available size < 56K)
FB(available size 2 56K)
Recorc1 size:
80 bytes
Blocking factor: 1 (available si~e < 56K)
2(available size 2 56K)
For available size, see 'SIZE Option'.
Of the 44K bytes minimum storage necessary for the F compiler, 1000 bytes are
reserved for two SYSIN buffers, so that the
SYSIN block size can always be up to SOO
bytes (i.e., the size of one SYSIN buffer).
A block size greater than SOO bytes is
allowed if the extra storage necessary for
the SYSIN buffers is available in the
amount of storage requested in the SIZE
option (i.e., SIZE must be at least 44K1K + 2 x block size). If the SIZE option
does not allow for 4~OS6 bytes more than
the additional storage required by the
SYSIN buffers, compilation will be terminated.
If the CHAR48 option (but not the
MACRO option) is specified~ SYSUT3 contains a CHAR48 and a CHAR60 copy of each
source record. It is opened wi t.h the
following parameters:
Record format:
F(available size < 56K)
FB(available size 2 56K)
U(if SYSIN record format
is U)
Record size:
SYSIN record length
Blocking factor: 1 (available size < 56K)
2(available size 2 56K)
For available size., see 'SIZE Option.'
Data set:.
Write-yerifLlQ~2D)
The Write Verify option for DASD is not
fully supported for SYSUT1.
Although the
Wri te VE~rify may be requested by specifying
OPTCD = W in the DCB for SYSUT1, not all
the data blocks written on this data set
will in fact be verified. Specifying the
OPTCD parameter results in write verification only when a new dictionary or text
block is written on the device; reuse of
this block will not result in verification
of the data written.
The Write Verify feature is always available for use with a data block on other
data sets on direct-access devices, and is
obtained
by specifying the appropriate
option on the data set DD card.
(See
'supervisor and Data Management Services~)
The compiler allows the programmer to
request blocked output on SYSPRINT, SYSPUNCH and/or SYSLIN by specifying a BLKSIZE
parameter on the appropriate DO card.
Of the 44K bytes minimum storage necessary for the F compiler, 2S8 bytes are
reserved for two SYSPRINT buffers (129
bytes each), 400 bytes are reserved for the
SYSPUNCH buffer, and 400 bytes are reserved
for the SYSLIN buffer. Thus when SIZE=44K,
SYSPRINT block size must be 129 bytes and
SYSPUNCH and SYSLIN block sizes can be up
to 400 bytes.
Greater block sizes than
these are allowed if extra storage for
larger buffers is specified in the SIZE
option.
(See next section "Calculations
for Storage Requirements.")
If the SYSPUNCH block size or the SYSLIN
block size is greater than 400 bytes and
the SIZE parameter is not great enough to
accommodate it, then the corresponding compiler options will be deleted.
SYSPRINT block size must be of the form
(4 + n x 12S) bytes.
If the SIZE option
does not allow for 4S056 bytes more than
the additional storage required by the
SYSPRINT buffers, compilation will be terminated.
The E-Ievel Linkage Editor cannot accept
blocked input, so the compiler
output
should be blocked only if the F-Ievel
Linkage Editor is in use.
BLOCKING OF COMPILER INPUT AND OUTPUT
Blocking of ComEiler Ineut
Calculations for
The compiler allows the programmer to
request blocked input on SYSIN (other than
SYSIN DO DATA or .) by specifying a BLKSIZE
parameter on the appropriate DD card or by
obtaining the block size from the data set
label (see Appendix A, ftCompiler Input ft ).
Storage requirements for blocking compiler input and output should be based on
the following:
Storagg-E~~i!~m~~~
44K is needed for the compilation,
this
and
Job Processing
of
23
1000 bytes are saved for two SYSIN
buffers (500 bytes each)
258 bytes are saved for two SYSPRINT
buffers (129 bytes each)
400 bytes are saved for the SYSPUNCH
buffer
400 bytes are saved for the SYSLIN
buffer
If
If
SYSIN block size is greater than 500
bytes then (2 x SYSIN block size - 1K)
is subtracted from the storage specified by SIZE.
SYSPRINT block size is greater than 129
bytes then (2 x SYSPRINT block size258)
is subtracted from the remaining
storage.
If SYSPUNCH block size is greater than 400
bytes then (SYSPUNCH block size - 400)
is subtracted from the remaining storage.
If
SiSLIN block size is greater than 400
bytes then (SYSLIN block size 400)
is subtracted from the remaining storage.
COMPILER OPTIONS
A number of compiler options are available to the programmer. These may be passed
to the compiler through the PARM parameter
on the EXEC card at compilation time.
Included in the information that may be
specified to the compiler are the following
items:
The amount of main storage allocated to
the" compiler for this compilation
The number of lines to be printed on
each page of the source listing
Whether a source program listing is
be printed
Whether an object program listing is to
ne printed
Whether a list of the compiler options
specified for the program is to be
printed.
Whether a listing of the External Symbol Dictionary (ESD) is to be provided
Whether a list of the attributes
identifiers is to be provided
The storage that finally remains must be
equal to or greater than 44K.
SYSPUNCH/SYSLIN in Batched Compilations
to
of
Whether a list of cross-references to
identifiers is to be provided
Whether the compiler is to produce an
object module for input to the linkage
editor, output either as a data set on
SYSLIN, or SYSPUNCH, or both, as the
user requires
Once SYSPUNCH or SYSLIN has been opened,
it is left open and buffer space is allocated for all subsequent compilations in
the batch, whether or not there is any
SYSPUNCH or SYSLIN output for those compilations.
Whether the compiler is to produce the
linkage editor control statement NAME
to follow either the object module or
the onject program deck
If SYSPUNCH or SYSLIN block sizes greater than 400 are asked for, the extra space
needed for the larger buffers will be
subtracted from the SIZE specified for each
compilation in the batch before calculating
the text and dictionary block sizes.
In
some cases, compilations which do not have
SYSPUNCH or SYSLIN output may be allocated
smaller text and dictionary block sizes
than they would otherwise get if they
follow a compilation which opened SYSPUNCH
or SYSLIN. If SYSPUNCH or SYSLIN has been
successfully opened with a big block size
and
a
following compilation specifies
SIZE < (44K + extra buffer space needed),
this will be ignored and SIZE = (44K +
extr~ buffer space needed) will be assumed.
Whether
EBCDIC
24
The level of optimization required
the
source
code is in BCD or
The specification of source margins and
the specification of a carriage control
character for the source program listing
The choice of 48- or 60-character set
for source programs
Whether diagnostic messages produced
during execution are to include statement numbers from the source program
The choice of severity level at which
diagnostic messages will be printed
Whether compile-time
required
processing
is
Whether a compile-time processor input
listing is to be printed
Whether compile-time processing
be followed by compilation
Whether
be used
the
is
to
extended dictionary is to
Whether a nesting block level is to be
printed next to each statement number
Whether a sequenced card deck is to be
punched as the macro-processor output
Whether the object program is to
executed on a System/360 Model 91
be
r------------------T------------T---------,
I
Compiler
IAbbreviated IStandard I
I
option
I
name
1default I
~------------------+------------+---------i
\SIZE=yyyKlyyyyyy I
SIZE
1999999
I
ILINECNT=xxx
I
LC
150
I
ISOURCEINOSOURCE
I
SINS
I SOURCE
I
ILISTINOLIST
I
LINL
I NOLIST
I
IOPLISTINOOPLIST
I
OLINOL
\OPLIST
I
IEXTREFjNOEXTREF
I
EINE
INOEXTREF I
IATRINOATR
\
AINA
1NOATR
I
IXREFINOXREF
I
X\NX
I NOXREF
I
IDECKINODECK
I
DIND
I NODECK
I
ILOADINOLOAD
I
LDjNLD
I LOAD
\
IOBJNM=aaaaaaaa
I
N I N o actionl
\ OPT=nn
I
0
I 01
I
IBCDJEBCDIC
I
BlEB
I EBCDIC
I
ISORMGIN=(mmm,nnn[, I
SM
1(2,72)
I
I
ccc] )
I
I
I
\CHAR 60 ICHAR48
I
C60lC48
ICHAR60
I
ISTMTINOSTMT
I
STINST
I NOSTMT
I
IFLAGWIFLAGElFLAGS I
FWIFEIFS IFLAGW
I
IMACROINOMACRO
J
M\NM
1NOMACRO \
!SOURCE2!NOSOURCE2 I
s21 NS 2
ISOURCE2
I
ICOMPINOCOMP
I
CINC
ICOMP
I
IEXTDIC!NOEXTDIC
I
ED1NED
INOEXTDIC]
INESTINONEST
I
NT]NNT
I NONEST
I
IMACDCKINOMACDCK
I
MDINMD
INOMACDCK I
M91 J NOM91
I ____________ LI _________
NOLV191
lI __________________
JI
~
The list of compiler options following
the equals sign in the PARM parameter must
be enclQsed in quotation marks; the separate options are separated by commas.
The
list must not exceed 40 characters including commas,
but excluding the quotation
marks. Because of the 40 character limitation, the compiler has been designed to
accept
the abbreviated compiler option
names given in the table below, as alternatives to the longer mnemonics.
Where an
option includes a numerical specification,
as in SIZE, LINECNT, OPT, and SORMGIN, only
significant digits need be specified by the
user.
There is no required order for
specifying the compiler options,
but if
conflicting options are specified the last
specification in the list will be used.
The default for all options (except OBJNM)
can be set at system generation time to
suit the requirements of the installation.
In the absence of any such setting, the
standard defaults shown in the table below
will be effective. The DELETE parameter of
the system generation PL1 macro instruction
(described
in
the
publication
IEM
§y~te~Ll~Q ___ QEerating
systemL__ ~~!~~
Generation) may be used at system generation time to specify any compiler options
not to be used at compilation time.
SIZE=yyyyyylyyyKl999999 - The SIZE option
indicates to the compiler the amount
of main storage (in bytes) available
for the compilation.
The programmer
specifies this amount as one of the
following:
yyyyyy: This gives the number of bytes
available for the compilation.
For
blocked input, the amount yyyyyy must
be
greater than 45056 + (2*SYSIN
BLKSIZE if BLKSIZE>500) + (2*SYSPRINT
BLKSIZE if SYSPRINT is blocked).
If
it is not, the compiler will terminate
abnormally. For unblocked input, if
the amount yyyyyy is less than 45056,
the default size is taken.
This gives the number yyy of K
units
(K = 1024 bytes) available for
the compilation.
If the number of
bytes specified is less than 44K, a
message is printed and the default
size is taken.
yyy~:
299222: This instructs the compiler to
obtain as much main storage as it can.
If this amount is less than 44K, the
compiler will comment and then will
attempt to continue; later it may
terminate
abnormally.
Because the
compiler calculation of the amount of
storage available is only an approximation, SIZE=999999 should not be used
if the amount of storage available is
less than 48K.
The partition (MFT) or region (MVT) in
which the compilation step is executed
must be at least 8K larger than the
amount specified in the SIZE option.
Failure to ensure this may result in a
system abnormal termination before the
compiler can provide any diagnostic
aid.
The following table shows the text and
dictionary block sizes used for various
core availabilities as specified by the
SIZE option.
The available size is the
amount specified in the SIZE option minus
the extra space needed for larger input and
output buffers.
The text and dictionary
Job Processing
25
block sizes are determined from the amount:
available after any extra storage needed
for larger input/output buffers has been
subtracted from the amount specified in the
SIZE option.
r-------------------~------------,
I
I
Available Size
(bytes)
I Block Size I
I (bytes)
I
r-------------------t------------i
1 45,056 - 57,343 I
I
~,024
I 57,344 - 73,727 I
2.048
I
I 73.728 - 135,167 I
4.096
I
! 135,168 - 172,031 I
8,192
I
~72,032 or more
1____________
16,384
lI ___________________
JI
~
LINECNT=xxx - the LINECNT option informs
the compiler how many lines are to be
printed on a page of listing. The
number
specified
includes heading
lines and blank lines. If a number is
not specified. a standard default of
50 lines is assumed.
SOURCE
or
NOSOURCE
(Source
Program
Listing) - the SOURCE option specifies
that the source program is to be
written on the device indicated on the
SYSPRINT DD card. The source listing
is in the same character set as the
source records. rhe statement number
of the first statement in each line is
printed to the left of that line. but
a statement number is not given on a
line
containing
only a continued
statement. NOSOURCE indicates that no
source listing is required. If ne~~h
er option is specified, the compiler
assumes the standard default SOURCE.
A description of the listing is given
in the section called "Compiler Output."
LIST or NOLIST (Object Program Listing) the LIST option specifies that generated machine instructions are to be
listed in a format resembling the
listing
output
of
the operating
system/360 assembler program.
(This
output is not suitable for use as
input to the assembler.)
Each line
contains the location counter value
and text in hexadecimal, the mnemonic
symbol for the operation code, and a
variable field in assembler language
format.
Source program identifiers
are used wherever possible, and comments are inserted to assist in correlation with the source program. When
the LIST option is specified, a STATIC
INTERNAL storage map is also printed.
The NOLIST option indicates that no
object
program
listing or STATIC
INTERNAL storage map is to be provid-'
ed.
If no option is specified, the
~tandard default. NOLIST,
is assumed
by the compiler. A description of the
26
object program listing is given in the
section called "Compiler Output."
OPLIST or NOOPLIST - the OPLIST option (the
standard default) causes the list of
compiler options to be printed.
The
NOOPLIST option provides that no such
list shall be printed.
EXTREF or NOEXTREF (External Listing) - the
EXT REF option causes a listing of the
external symbol dictionary (ESD) to be
provided.
The NOEXTREF option specifies that no listing is required and
is the standard default assumed if no
option is specified. A description of
the ESD listing is given in the section called "Compiler output."
ATR
or NOATR (Attribute Table) - the ATR
option gives:
~.
A table showing.
tifier:
fOE
each
~den
Statement number of the statement
in
which
the
identifier
is
declared
Identifier
structures
and
all
containing
A list of attributes pertaining to
the identifier
2.
A listing showing the length. in
bytes, of every aggregate (array
or structure> variable declared or
allocated with fixed extents within the program.
The list of identifiers is sorted, ignoring the qualification. The NOATR option
specifies that no listing is required and
is the standard default assumed if no
option is specified. A description of the
attribute listing is given in the section
called "Compiler Output."
XREF
or NOXREF (Cross Reference Table) the XREF option produces output showing, for each identifier:
Statement number of the statement
in
which
the
identifier
is
declared
Identifier
structures
and
all
containing
List of all statements in which a
reference is made to the identifier
The list of identifiers is sorted,
ignoring the qualification. The NOXREF option indicates that no cross
reference listing is required~ and is
to the user.
The decimal integer
constant
(nn)
indicates the level
required.
The choice depends upon
whether the prime concern of the user
is
execution speed or object-time
storage space.
the standard default assumed if no
option is specified. A description of
the listing is given in the section
called "Printed Listings."
DECK or NODECK (Object Program Deck) - the
DECK option specifies that the compiled
program
(i.e.
the object
module) is to be output in the form of
a sequenced card deck in linkage editor format.
The data set is defined
by a SYSPUNCH DO statement.
No job
control statements,
(DD cards, etc.)
are generated by the compiler. NODECK
specifies that no object program deck
is required; if NODECK is specified,
the
DD statement SYSPUNCH is not
required. If no option is specified,
the standard default,
NODECK,
is
assumed. A description of the deck is
given in the section called "Compiler
Output."
LOAD or NOLOAD (Object Program output) the LOAD option causes object program
output to be produced as a sequential
data set defined by a SYSLIN DD statement in standard linkage editor input
format.
NOLOAD specifies that no load
module is to be created.
LOAD is
assumed as the standard default if no
option is specified.
If NOLOAD is
specified, the DO statement SYSLIN is
not required.
OPT=OO: in this case, the object-time
storage requirement is kept to a minimum.
OPT=01: in this case, the execution
speed is improved at the expense of
object-time storage space.
The difference in the compilation time
for the two options is negligible.
The standard default assumption if
neither is specified is OPT=01o
BCD
or EBCDIC Source Code - the BCD or
EBCDIC option allows the programmer to
state in which character code his
source program is punched. The BCD
and EBCDIC punched card codes and
graphics for the PL/I 60-character set
are shown in Figure 4. If neither
option
is specified, the standard
default assumption is EBCDIC.
SORMGIN=(mmm,nnn[,ccc]) - the source margin
option allows the programmer to specify:
mmm,nnn - margin for source statements
OBJNM=aaaaaaaa - this option causes the
compiler to produce the linkage editor
control statement NAME following either the object module, the object program deck, or both. If neither LOAD
nor
DECK
has
been
specified
(explicitly or by default), the use of
this option will have no effect.
The
NAME statement produced will be of the
following form:
l:?Q§'!l~1.
2NAMEQaaaaaaaa(R)
where aaaaaaaa represents the name
given, which may have up to eight
characters n and 2 represents one or
more blanks.
ccc - carriage control character position (optional)
The values for these arguments
subject to the constraints:
1.
mmm
2.
ccc must be
(mmm, nnn).
OPT=nn
(Optimization) - two alternative
levels of optimization are available
nnn
$
100
outside
the
range
The carriage control characters are:
b
Skip one line before printing
+
Skip three lines before printing
Suppress space before printing
Skip to Channel 1 (i.e. start
new page>
o Skip two lines before printing
1
Care should be taken when using this
option in conjunction with cataloged
procedures, otherwise the program name
used in the EXEC statement will be
incorrect.
The principal purpose of
this option is to enable the user to
create a partitioned data set of load
modules from a series of batched compilations, by means of the linkage
editor.
$
are
If the source margin is not specified,
a standard default of SORMGIN~(2,72)
is assumed.
The compile-time processor produces output requiring margins (2,72)
and
changes
SORMGIN
accordingly.
The default value for
the
carr1age control character is
installation-defined,
that is, the
user must decide at system generation
whether a default is required and what
it is to be.
Job Processing
27
r------------~---------------T------------'---T------------T---------------T-------------1
I
I
BCD
I
EBCDIC
I Punched
I
BCD
I
EBCDIC I
~-------T-------+-------~----·---i
~-------r-------+-------r-----+
, Card Code I Graphicl PL/I ,Graphicl Pl/I
I Card Code IGraphicl PL/I I Graphic I PL/II
~------------+-------+-------+-------+----.---+------------+-------+-------+-------+-----~
I No punches
I
12-7
GIG
G
G
I 12-8-3
I
12-8
H
I
H
H
H
I 12-8-4
»
J
<
<
12-9
I
I
I
I
I
, 12-8-5
[
%
I
(
(11-1
J
J
J
I 12-8-6
<
<]
+
+
11-2
K
I
KKK
I 12 - 8 - 7
.'
I
I
I
11- 3
L
ILL
L
I 12
& +
+
&
&
11-4
M
I
M
M
M
I 11-8-3
$
$
$
$
11-5
N
INN
N
I 11-8-4
*
*
*
*
11-6
0
I
0
0
0
I 11-8-5
&
11-7
PIP
P
P
I 11-8-6;
11-8
Q
I
Q
Q
Q
I 11-8-7
!J.
11
1'1
11
1 ~-9
R
I
R
R
R
I 11
0-2
SIS
S
S
I 0-1
/
/
/
/
0-3
T
T
T
T
J 0-8-3
,
,
,
,
0-4
U
U
U
U
I 0-8-4
% (
(
%
%
0-5
V
V
V
V
I 0-8-5
"i
0-6
W
W
W
W
I 0-8-6
,
#
>
>
0-7
X
X
X
X
I 0-8-7.
??
0-8
Y
Y
Y
Y
I 8-2
b
@
0-9
Z
Z
Z
Z
I 8-3
#-=
#
#
0
0
0
0
0
I 8-4
@ I
@
@
1
1
1
1
1
I 8-5
2
2
2
2
2
1 8-6
>
>
3
3
3
3
3
, 12-0
??
4
4
4
4
4
I 12-1
A
A
A
A
5
5
5
5
5
1 12-2
B
B
B
B
6
6
6
6
6
I 12-3
C
C
C
C
7
7
7
7
7
I 12-4
D
D
D
D
8
8
8
8
8
I 12-5
E
E
E
E
9
9
9
9
9
12-6
F L_p
F
FLF
l, ____________
LI
_______
_____ LI
_______
_______ L ____________ L _______ LI _______ L _______ LI _____ J
Punched
I
J,
Figure 4.
BCD and EBCDIC Punched Card Codf:s and Graphics for PL/I 60-character Set
CHAR60 or CHAR48 - this option allows th.:
source language to be written in one
of two
character
sets:
60or
48-characters.
The standard default
assumed
if
no
character set is
specified is the 60-character set.
Note that all characters
in
the
60-character set are acceptable to thl:
compiler,
even when the CHAR48 option
has been selected. However, there are
two points to be borne in mind by
anyone intending to use 60-character
set input after selecting the CHAR48
option.
Firstly, the restrictions of
the 48-character set must be observed
in
the
60-character
set
input.
otherwise errors may result. Secondly, such a mode of operation is inefficient, and should not, therefore, be
made a general practice.
STMT
28
or NOSTMT - the STMT option specifies
to the compiler that extra code is to
be produced which will allow diagnostic messages printed during execution of the compiled program to contain statement numbers from the sourCf~
program, in addition to offsets relative to PL/I entry points; these offsets alone are given if NOSTMr is
specified.
The
standard
default
assumed if no option is specified is
NOSTMT.
Note: The average PL/I program can be
executed without significant degradation in speed or space requirements.
However., the use of the STMr option
will cause both the execution time and
the object-code space requirements to
increase in direct proportion to the
number of statements in the program.
The benefits obtained as a result of
the debugging aid that this option
gives, should offset and justify these
increases.
FI.AGWIFLAGEIFLAGS - a high level of diagnostic capability is available in the
(F) compiler. Compile-time processor
diagnostic messages are written after
the SOURCE2 listing and before the
source program listing.
All other
diagnostic messages are written in a
group following the source program
listing.
In both cases, messages are
listed in order of their severitye
There are four classes of diagnostic
messages, which are graded in order of
severity:
Specification
warning (lowest)
FLAGW
error
FLAGE
severe error
FLAGS
terminal error (highest)
A ~~f~!~g is a message that calls attention to a possible error, although the
statement to which it refers is syntactically valid. In addition to alerting the
programmer, it may assist him in writing
more efficient programs in the future.
An Error message describes an attempt to
statement; the programmer is informed of the correction.
Errors do not normally terminate processing
of the t:ext.
correc~-~~-erroneous
A Severe error message indicates an
error whIch cannot be corrected by the
compiler. The incorrect section of the
program is deleted, but compilation is
continued.
Where reasonable, the ERROR
condition will be raised at object time, if
execution of an incorrect source statement
is attempted. If a severe error occurs
during compile-time processing, compilation
will be terminated after the SOURCE listing
has been produced.
A rerminal error message describes an
error whIch;-when discovered, forces the
termination of the compilation.
The choice of the severity level at and
above which diagnostic messages appear on
the output is an option which may be
selected
by the programmer.
FLAGW is
assumed if no level is specified.
A source program message consists of the.
(F) compiler's identification code (IEM)
followed by a number which is unique to
this message. Where applicable, the statement number to which the message refers is
given .next. The message then follows.
It
will normally refer to the number of the
statement which has produced the diagnostic
message with the number corresponding to
that on the source program listing. It may
also contain a numeric parameter, a source
program identifier, or a segment of source
program text. During compile-time processing, messages will contain input line numbers, source text identifiers, or segments
of source text.
IEM0096I 23 SEMI-COLON
NOT
FOUND
~HEN
EXPECTED IN STATEMENT NUMBER
23. ONE HAS BEEN INSERTED.
A detailed list of diagnostic messages
is given in Appendix G of this publication.
MACRO or NOMACRO - the MACRO option indicates that compile-time processing is
required. The NOMACRO option causes
the compile-time processor
to
be
bypassed.
If no option is specified,
the
compiler assumes the standard
default NOMACRO.
SOURCE2 or NOSOURCE2 - the SOURCE2 option
indicates that the input
to
the
compile-time processor is to be listed
on the device indicated on the SYSPRINT DD card. The SOURCE2 listing is
in the same character set as the input
text. Each line is preceded by a line
number.
NOSOURCE2
suppresses the
listing
of
compile-time processor
input. If no option is specified, the
compiler assumes the standard default
SOURCE2. If MACRO has not been specified, the SOURCE2 option is ignored.
COMP
or NOCOMP - the COMP option specifies
that compilation is to proceed after
compile-time processing has been completed.
NOCOMP specifies that compilation is not required.
If neither
option
is specified, the compiler
assumes the standard default COMP. If
MACRO
has
not
been
specified,
COMPINOCOMP is ignored.
EXTDIC or NOEXTDIC - The EXTDIC option provides a compiler dictionary with a
capacity 1.5 times that of the normal
dictionary if the block size is 1K
bytes, and 3.5 times that of the
normal dictionary if the block size is
greater than 1Ko This allows successful compilation of some larger programs that would otherwise overflow
the dictionary capacity. As the use
of EXTDIC reduces compilation speed,
it should be specified only when the
program will not compile with the
normal dictionary.
The default is
NOEXTDIC.
Programs that are large enough to
require the EXTDIC option will compile
very much more efficiently if a large
storage size is available to the compiler. Enough storage should be specified, if possible, for the dictionary
to be held in storage throughout the
compilation. As a rough rule, the
SIZE option should allow about 100,000
bytes plus 75 times the number of
identifiers in the source program.
Job Processing
29
EXTDIC
should
not
SIZE<47104 bytes.
NEST
be
used
terminated and, if the
SOURCE
option has been specified, a listing of the PL/I program text produced by the compile-time processor will be printed
if
or NON EST If NEST is specified, a
number is printed under the heading
LEVEL showing the depth of blocknesting for the first statement on
each line of the
source
program
listing, and a number is printed under
the heading NEsr showing the depth of
DO-group nesting for such statements
which are contained within DO groups.
MACDCK or NOMACDCK - The MACDCR option
causes the output records of the macro
processor to be written on SYSPUNCH as
sequenced card images. rhe default is
NOMACtJCK.
M91 or NOM91 - the M91 option must be specified when the object program is to be
executed on an IBM System/360 Model
91. This option may be specified in
the PARM field of the EXEC card at
compilation time or it may be set
during system generation time. The
standard default for this option is
NOM91.
16
Terminal error messages issued;
compilation terminated abnormally;
successful execution impossible
JOB CONTROL PROCEDURE FOR COMPILATION
An example of a job control procedure
showing the job control cards and deck
required for a compilation is shown below.
IIJOB1
IISTEP 1
JOB
EXEC
Code
30
o
No
diagnostic messages issued;
compilation
completed
with no
errors;
successful
execution
expected
4
Warning messages only issued; program compiled; successful execution is probable
8
Error messages issued; compilation
completed, but with errors; execution may fail
12
Severe error messages issued; compilation may be completed,
but
with errors; successful execution
improbable.
If a severe error
occurs during compile-time processing, the compilation will be
PGM=IEMAA" PARM=
'options'
IISYSPUNCH DD
SYSOUT=B
IISYSPRINT DD
SYSOUT=A
/ISYSUT1
DD
UNIT=SYSDA,
SPACE=(1024, (60, 60}),
SEP=(SYSPRINT,
SYSPUNCH)
IISYSIN
DD
*
COMPLETION CODES FOR THE COMPILER
At the end of compilation, the compiler
returns a completion code to the operating
system indicating the degree of success
achieved in compilation of the source program and anticipated in execution of the
object program. rests of this code may be
requested on the JOB and EXEC cards of the
job control language, allowing later steps
of a job to be suppressed if compilation
has not achieved the required degree of
success.
The compiler completion codes
are:
123,JOHNSMITH,
MSGLEVEL=1
(Source Program Deck)
/*
A facility is available which allows
more than one external procedure to be
compiled within the same job step. This is
achieved by preceding the second (and each
subsequent) compilation by a control record
of the following form:
*
PROCESS('options'):
The first character of the record is an
asterisk. which must appear in column 1.
It denotes the end of the preceding source
deck.
Note that if SORMGIN=(1.72) has been
specified, this facility is obtained only
when there is an asterisk in column 1 and
the first non-blank character string is
PROCESS.
Any number of spaces, or no space,
is
acceptable between the asterisk and the
keyword
PROCESS.
Spaces are permitted
between:
1.
2.
The keyword PROCESS
list delimiter
T Ie option
o itions
list
and
the
delimiter
option
and
//BTCHCP
JOB
//STPCMP
EXEC
the
//PL1L.SYSIN
DD
PL1PROG,MSGLEVEL=1
PROC=PL1LFCL,
PARM.PL1L='LOAD,
NODECK,OBJNM=BATCHA'
*
!
3.
T ,e option
s lmi-colon
list
delimiter
and
source program one
the
Opt ',ons in the list are separated by
commas, as in the PARM field on the EXEC
card.
The options to be listed are the compiler op ,ions to be used in compiling the
source deck that follows.
If any option is
not Ii ted, the installation default is
assume I; there is no carry-over of the
option listed on the preceding EXEC card.
If th' us er dOes not wish to specify any
option explicitly, he can simply place the
termin :ting semicolon immediately after the
word P 'OCESS. The number of characters in
the 0 ~ion list is limited only by the
length of the record, and may exceed 40
characers.
*
PROCESS('LOAb,ATR,NODECK');
source program two
*
PROCESS('LOAD,LIST,ATR,NODECK,
OBJNM=BATCHB');
source program three
/*
//LKED.SYSLMOD DD
OSNAME=PL1.PROGRAMS,
DISP=OLD
//BTCHEX
JOB
PL1PROG,MSGLEVEL=1
//JOBLIB
DO
//STPEXA
EXEC
//SYSPRINT
//STEPEXB
The length of the control record is
limite to the length of the SYSIN record.
The re :ord must be punched in EBCDIC.
I
The return code given for the job step
is the highest code from those which the
indivi ual compilations would return.
The advantages of batched compilation
are
reduction
of
control program
overhe ds, and a reduction in the number of
cards to be punched. The disadvantage is
that
terminal error in one compilation
may re ,ult in termination of the whole
batch.
The following example shows the job
contra statements required (in conjunction
with cltaloged procedure PL1LFCL): to batch
compil e three separate source programs; to
link-e,it source program 1 as one load
module source programs 2 and 3 together as
a seco d load module, and to put both load
module
into an existing cataloged data
set; a ld to execute both load modules.
DD
EXEC
//SYSPRINT
DO
DSNAME=PL1.PROGRAMS,
DISP=(OLD,PASS)
PGM=BATCHA
SYSOUT=A
PGM=BATCHB
SYSOUT=A
COMPILER OUTPUT
The compiler can generate listings of
source statements, compile-time statements,
attributes, cross references, External Symbol Dictionary entries, aggregate lengths
and
object
code.
Source program and
compile-time diagnostic messages are also
produced during compilation.
PRINTED LISTINGS
The first page has the following heading: VERSION x RELEASE zz on the left-hand
side of the page (where x indicates the
version
of
the compiler, and zz the
System/360
operating
system
release
number); OS/360 PL/I COMPILER (F) in the
center of the page; and DATE yy.ddd on the
right-hand side of the page (where yy=year
and
ddd=day).
Page
numbering, which
appears at the top right-hand corner of
each page, begins on this page. Following
the heading is the invocation parameter
list containing the options specified for
I
Job Processing
31
the compilation.
rhe diagnostic messages,
if any,
associated with the specification
of compiler options appear next.
If
the
compiler
options specified
incluje OPLIsr, these diagnostic messages
are followed by a complete list of the
compiler options used for the compilationo
This list includes all options validly
specified at the time of invocation, as
well as those options assumed by default.
specified in the SYSPRINT DD statement, one
input
record per line.
Each line is
assigned a number which appears to the left
of the line.
§.xampl~:
% DCL A CHAR, B FIXED;
2 % A='B+C'; % B=2;
3 X=A;
Each page thereafter has a heading and a
page number.
If the compiler is invoked by
an EXEC statement, the heading used is the
first record of PL/I source text read from
the input source (SYSIN).
The listings consist of the following
items in the order given; items 1 through
10 depend on the appropriate
compiler
options being selected and specified on the
EXEC statement card; items 5 through 9 are
not produced if a terminal error halts the
compilation.
I
1 ..
List of compiler options specified
2.
Compile-time processor input listing
3.
Compile-time processor diagnostic messag8s
Source Program Listing
If the SOURCE option is specified,
the
source program is written on the output
device specified in the SYSPRINT DD statement.
The contents of one card are printed
on one line; if a carriage control character
is specified,
these may be skips
between lines or to a new page.
The number
of the first statement starting on that
line is printed at the left-hand side of
that line.
1 PGMNAME:
40
Source program listing
5 ..
Attribute and/or cross reference table
2 DECLARE
A STATIC,
6.
Aggregate length table
3
B AUTOMATIC; A=B;
7.
Storage requirements listing
ti.
External symbol dictionary listing
90
Assembly listing
10.,
Source program diagnostic messages
rhe time taken for the compilation is also
shown on the listing.
The compiler options listed are those
used for ~he particular compilation. A
description of the options is given in the
section called "Compiler Processing."
If
the
spe~ified,
processor
32
MACRO and SOURCE2 options are
the input to the compile-time
is written on the output device
PROCEDURE;
For numbering purposes, statements contained within compound statements (IF and
ON) are counted, as well as the compound
statements themselves.
In addition# when
an END statement closes multiple groups or
blocks, all implied END statements are
included in the count.
~~~!!!21~:
P:
PROC;
2
X:
BEGIN;
3
IF
A=B
4
THEN
A=1;
5
ELSE
DO;
6
A=O;
7
C=Bi
8
END
10
D=E;
11
END;
Xi
If the input to the compiler is produced
by th~ compile-time processor, the SORMGIN
optio
will be (2,72) and columns 73-80
will ontain auxiliary information.
This
infor ation can be used by the programmer
to de~ermine how the input to the compiler
was g.nerated from the original input.
Storage area for each procedure
Storage area for each begin block
Storage area for each on-unit
Length of program CSECr
Length of static CSECT
columns, which are listed as part
SOURCE listing, are used as follows:
rh~se
of
th~
Contains the input line number
from which this output line was
generated. These numbers correspond to the line numbers printed
with the SOURCE2 listing.
73-77
Contains a two-digit number giving the maximum depth of replacement
which occurred for this
linc~
If
no
replacement
occurred, this field will
be
blank.
78-79
If an error occurs while replacement is being attempted (e.g., a
%
is found in a replacement
value), this column will contain
the letter "E".
Otherwise it
will be blank ..
80
If
th~
NEST option is specified then:
1.
he block level at the begining of the
tatement indicatej is printed next to
he statement number for that line.
2.
in iterative DO level count is printed
~ext to the level count.
STMT
~EVEL
NEST
1
2
3
4
5
6
7
8
9
1
2
2
2
2
3
2
1
1
2
1
1
1
A: PROC OPTIONS (MAIN);
B: PROC (L) ;
DO I = 1 TO 10;
DO J = 1 TO 10;
END;
BEGIN;
END;
END B;
END A;
Th's listing is printed out whenever the
SOURC: option is in effect and gives the
follo~ing information in bytes:
If the ATR option is specified, the
identifiers used in the program are listed
in alphameric order, together with their
explicitly declared and default attributes.
The attributes INTERNAL,
NORMAL, and
REAL are not listed; these attributes can
be assumed unless the conflicting attributes EXTERNAL, ABNORMAL, and COMPLEX are
listed.
For file identifiers. only explicitly
declared attributes are listed, except for
EXTERNAL, which is listed even when applied
by default.
For an array, the dimension attribute is
printed first.
The dimensions are printed
as in the declaration except that expression3 are replaced by asterisks. Constants
and expressions for string lengths are
represented in the length attribute in the
same way as constants and expressions for
array dimensions are represented in the
dimension attribute.
If
an identifier is declared in a
DECLARE statement, it is preceded by the
number of that statement. Statement labels
and entry labels are preceded by the defining statement number.
No statement number
precedes a contextually declared identifier.
If the XREF option is specified in
addition to the ATR option, each identifier
has the numbers of all the statements in
which it occurs printed immediately below
its attributes.
If the XREF option is specified without
the ATR option, the table is printed without the attributes.
Job Processing
33
1
2
3
4
5
6
7
8
9
QQ:
10
11
12
13
14
15
PROCEDURE:
DCL 1 A, 2 B(3), 2 C. 3 0:
DCL G(10.10) CHAR(2);
DCL 1 E# 2 F LIKE C:
DeL I(10) CHAR(2) DEF G(1SUB,1SUB);
DCL 1 J, 2 K BIT(1), 2 L BIT (9):
DCL S(V):
DCL H(10,10) CHAR(2) DEF G:
DCL U(*> CONTROLLED:
DCL 1 M BASED(P), 2 N POINTER, 2 T:
DCL Y(2:4,II);
DCL X (2: II) :
DCL W AREA:
DCL Z(II:JJ,2):
ALLOCATE M IN (W) SET (P):
GET LIST(P->T):
ALLOCATE M IN (W) SET (Q):
GET LISTCQ->T):
P->N=Q:
PUT LIST(Q->T):
R=4:
ALLOCATE U ( R) :
16
17
18
19
20
21
22
150
END QQ:
The foregoing procedure will produce
table ..
the
following
attribute
and
cross
reference
ATTRIBUTE AND CROSS-REFERENCE TABLE
DCL NO.
IDENTIFIER
ATTRIBUTES AND REFERENCES
2
A
AUTOMATIC .• UNALIGNED, STRUCTURE
2
B
(3)IN A, AUTOMATIC, ALIGNED, DECIMAL, FLOAT (SINGLE)
2
C
IN A,AUTOMATIC,UNALIGNED,STRUCTURE
2
D
IN C IN A,AUTOMATIC,ALIGNED,DECIMAL#FLOAT(SINGLE)
4
D
IN F IN E,AUTOMATIC,ALIGNED,DECIMAL.FLOAT(SINGLE)
4
E
AUTOMATIC, UNALIGNED" STRUCTURE
4
F
IN E,AUTOMATIC,UNALIGNED,STRUCTURE
3
G
(10,10)AUTOMATIC,UNALIGNED,STRING(2),CHARACTER
8
H
(10,10)AUTOMATIC.DEFINED,UNALIGNED,STRING(2),CHARACTER
5
I
(10)AUTOMATIC.DEFINED,UNALIGNED,STRING(2),CHARACTER
II
AUTOMATIC,ALIGNED,BINARY,FIXED(15,0)
14,12,11
J
AUTOMATIC, UNALIGNED, STRUCTURE
JJ
AUTOMATIC,ALIGNED,BINARY,FIXED(15,0)
14
K
IN J.AUTOMATIC,UNALIGNED.STRING(1),BIT
6
6
34
6
L
IN J.AUTOMATIC,UNALIGNED,STRING(9).BIT
10
M
BASED(P),UNALIGNED,STRUCTURE
15,17
10
N
IN M.BASED(P),ALIGNED,POINTER
19
P
AUTOMATIC" ALIGNED, POINTER
15,,16,19
Q
AUTOMATIC. ALIGNED, POINTER
17, 18, 19,,20
QQ
ENTRY,DECIMAL~FLOAT(SINGLE)
R
AUTOMATIC, ALIGNED" DECIMAL" FLOAT (S INGLE)
21,22
s
(*)AUTOMATIC#ALIGNED,DECIMAL~FLOAT(SINGLE)
SYSIN
FILE. EXTERNAL
16., 18
SYSPRINT
FILE" EXTERNAL
20
10
T
IN ~BASED(P)~ALIGNED,DECIMAL,FLOAT(SINGLE)
16,18,,20
9
u
1
7
(*)CONTROLLED,ALIGNED~DECIMAL,FLOAT(SINGLE)
22
v
AUTOMATICBALIGNED, DECIMAL, FLOAT (SINGLE)
7
13
w
AUTOMATIC II ALIGNED, AREA
15,17
12
x
(2:*)AUTOMATIC,ALIGNED,DEClMAL,FLOAT(SINGLE)
11
Y
(2:4,*)AUTOMATIC,ALIGNED.DECIMAL,FLOAT(SINGLE)
14
z
(*:*,2)AUTOMATIC g ALIGNED,DECIMAL,FLOAT(SINGLE)
The attributes FLOAT(SINGLE)
and FLOAT(DOUBLE)
refer to the precision
floati g-point data.
These precisions are defined in Figures 32. 49, and 49.1.
SpeCification of the ATR option or the
XREF 'ption produces an aggregate length
which gives,
where possible.
the
in bytes of all major structures and
uctured arrays used in the program.
Each entry in the table consists of the
identi: ier of an aggregate preceded by a
state ~nt number and followed by the length
of th aggregate in bytes.
Th
er of
gate
non-B
ment
statement number is the number eithDECLARE statement for the aggrein the case of a CONTROLLED,
aggregate, of an ALLOCATE statethe aggregate.
An entry appears
of
the
for every ALLOCATE statement involving a
non-BASED aggregate since such statements
may have the effect of changing the aggregate length during execution.
Allocation
of a BASED aggregate does not have this
effect,
and only one entry, which is that
corresponding to the DECLARE statement,
appears for any BASED aggregate.
The length of an aggregate may not be
known at compilation,
either because the
aggregate contains elements having adjustable lengths or dimensions, or hecause the
aggregate is dynamically defined.
In these
cases, the words 'ADJUSTABLE' or 'DEFINED'
appear in the 'Length in Bytes' column.
The entry for a COBOL mapped structure
has the word '(COBOL)' appended.
Job Processing
35
The procedure in the foregoing attribute
and cross reference table example produces
the following aggregate length table.
LENGTH - the length in bytes of the section
(applicable only to SD.
CM, and PR
type entries). expressed as a hexadecimal number
AGGREGATE LENGTH TABLE
The sizes of the program and STATIC
INTERNAL control sections are printed at
the end of the ESD: they are also printed
at the end of the compilation. This makes
the sizes available even if EXTREF is not
specified. The size of each DSA is also
printed at the end of the compilation.
Printing of these sizes is under the control of the SOURCE option.
STATEMENT NO.
IDENTIFIER
LENGTH IN BYTES
2
A
16
4
E
4
3
G
200
8
H
200
5
I
DEFINED
6
J
2
10
M
8
7
S
ADJUSTABLE
22
U
ADJUSTABLE
12
X
ADJUSTABLE
J PGMNAME
J
J PGMNAMEA
11
Y
ADJUSTABLE
l
14
Z
ADJUSTABLE
I
Description of Contents of ESD Listing
The first seven entries are in standard
format, as shown in Figure 5.
r-----------------------------------------,
TYPE
ID
ADDR
LENGTH
I SYMBOL
1
J IHEQINV
) IHESADA
J
J IHESADB
J
If the option EXTREF is specified, all
entries in the external symbol dictionary
(ESD)
are listed.
The information appears
under the following headings:
I IHEQERR
I
so
0001
000000
00033A
SD
0002
000000
00005F
PR
0003
000000
000004
ER
0004
000000
ER
0005
000000
PR
0006
000000
000004
JL _________________________________________
IHEQTIC
PR
0007 000000 000004 J
Figure 5.
Specimen ESD Listing
The seven entries are:
SYMBOL - an eight-character field containing the name identifying the ESD entry
1.
TYPE - two characters from the following
list, to identify the particular type
of ESD entry:
Name of the program control section.
This is the first label in the external procedure statement.
2.
Name of the STATIC INTERNAL control
section. This is the same label as in
1,
(left-filled with asterisks
if
necessary)
to seven characters, with
an eighth character, A.
3.
Pseudo-register
for the invocation
count (the count of the number of
times a block is invoked recursively).
4.
Entry point of the library routine
used to obtain AUTOMATIC storage for a
PL/I block.
5.
Entry point of the library routine
used to obtain storage for some AUTOMATIC variables.
6.
pseudo-register for the error handling
routine.
SO
CM
ER
PR
LD
Section Definition
Named Common
External Reference
Pseudo-register
Label Definition
(For a detailed description of the
different types of ESD entries,
refer
to the publication
IBM
System/36Q
Q£erating sY2teIDL~kage Editor.)
ID - a 4-digit hexadecimal
identifies the symbol
number
which
ADDR - the hexadecimal representation
the compiled address of the symbol
36
of
7.
******XB
pseudo-register used for tasking.
******XC
Tl~e
remainder of the listing is variable,
but the general organization is as
foIl )ws:
1.
Section definition for one-word control section IHEMAIN, which contains
the address of the principal entry
point to the external procedure.
This
item is present only if the external
procedure has the option MAIN.
Section definition for the three-word
control
section
IHENTRY
(always
present), which provides the linkage
with the library at execution time.
2.
LD type items for all names of entry
points
to the external procedure.
except the first, which has been used
as the name of the program control
section ..
3..
A
PR type entry for the display
pseudo-register for each block in the
compilation..
The names are generated
from the external procedure name which
is left-filled to seven characters
with asterisks. The eighth character
is selected from a table of printable
characters which are assigned to names
in the order in which the blocks
appear in the compilation.
If each character in the table has
been used once and more names are
still required, the first character of
the name is replaced from another
(smaller) table and the eighth character recycles. The first and, if necessary, the second character of the
name are allowed to cycle through this
second table ..
If the first or second character overwritten in this way was a character in
the external
procedure
name
(as
opposed to an
asterisk
used
in
padding), a warning message is printed
out, since this could mean that separate external procedures with distinct
names could contain identical generated names.
X: PROC;
Y: PROC;
Z: BEGIN;
END X;
The display pseudo-registers for X, Y,
and Z would have the names:
******XO
4.
ER type entries for all library routines and external routines called by
the compilation. The list of names of
library routines contains the names of
routines which are directly called by
the
compiled
code
(first-level
routines) and the names of modules
which are called by the first-level
routines.
ER type entries for all library routines not directly called by the compiled code but required for successful
compilation.
5.
SO type entries for EXTERNAL FILE
constants and STATIC EXTERNAL variables, except in the case of STATIC
EXTERNAL variables without any initial
text. which have CM type entries ..
File
constants, both internal and
external, have a pseudo-register associated with them, used by the library
for addressing a dynamically allocated
data set control block. For EXTERNAL
FILE
constants the pseudo-register
name is the same as the file name, and
for internal ones it is generated as
for display pseudo-registers.
6.
PR type entries for all CONTROLLED
variables. For external variables the
declared name is used. and for internal variables a name is generated as
for the display pseudo-registers.
A STATIC INTERNAL storage map is produced only when the compiler option LIST is
specified.
The size of this storage area
is given at the end of the compilation.
The first 52 bytes of the STATIC INTERNAL Control Section are of a standard form
and are not listed.
They contain the
following information:
DC
DC
F'4096'
AL4(SI.+X'1000')
DC
DC
DC
DC
DC
DC
AL4CSI.+X·7000')
VL4(IHESADA)
VL4(IHESADB)
A(OSASUB)
ACEPISUB)
A(IHESAFA)
Job Processing
37
SI.
is the address of the STATIC INTERNAL
control section, and IHESADA,
IHESADB and
IHESAFA are library routines.
DSASUB and
EPISUB are compiler routines for getting
and freeing DSAs.
The remainder of STATIC is listed in the
following form:
A sample of a STATIC INTERNAL storage
map is given in Appendix D.
1.
6-character hexadecimal offset
2.
Up to 8 bytes of hexadecimal text
3.
Comment indicating type of item to
which the text belongs (only appears
against first line of text for item)
The possible
(xxx
indicates
identifier):
comments are as follows
the
presence
of
an
OED FOR TEMP
or
OED
Data Element Descriptor
for temporary or for a
programmer's variable
FED
Format Element Descriptor
DV •. xxx
Dope Vector
variable
DVD ••
Dope Vector Descriptor
of
a
If the LINECNT specification for the
listing is 72 or less. and the actual
number of lines to be printed (including
skips) exceeds the LINECNT, double-column
format is used.
If LINECNT is greater than
72, or if the actual number of lines to be
printed (including skips) is less than the
LINECNT, single-column format is used.
STATIC
D.V. SKELETON Dope Vector skeleton for an
AUTOMATIC
or
CONTROLLED
variable
If the LIST option is specified,
a
listing of the object code is produced,
together with its equivalent in a form
similar to assembler language.
If the
LINECNT specification for the listing is 72
or less, and the actual number of lines to
be printed (including skips) exceeds the
LINECNT, double-column format is used.
If
LINECNT is greater than 72, or if the
actual
number of lines to be printed
(including skips) is less than the LINECNT,
single-column format is used.
Comments, of
the form shown below, are included to help
the programmer to identify the functions of
different segments of the object program.
*
STATEMENT NUMBER n - identifies the start
of the code generated for source listing statement number n
RDV ••
Record Dope Vector
*
PROCEDURE xxx - identifies the
the procedure labeled xxx
A•• xxx
Address of EXTERNAL control
section or entry point, or
of an internal label
*
REAL ENTRY xxx - heads the initialization
code for an entry point to a procedure
labeled xxx
*
PROLOGUE BASE - identifies the start of
the initialization code common to all
entry points to that procedure
*
PROCEDURE BASE - identifies the address
loaded into the base register for the
procedure
*
APPARENT ENTRY xxx - identifies the point
of entry into the procedure for the
entry point labeled xxx
*
END PROCEDURE xxx - identifies the end of
the procedure labeled xxx
*
BEGIN BLOCK xxx - indicates the start of
the BEGIN block with label xxx
*
END BLOCK xxx - indicates the end of
BEGIN block with label xxx
*
INITIALIZATION CODE FOR xxx - indicates
that the code following performs initial value assignment or dope vector
initialization for the variable xxx
ARGUMBNT
LIST
Argument list skeleton
CONSTANTS
38
SYMTAB
Symbol table entry
SYM •• xxx
Symbolic name of label constant or label variable
FILE •• xxx
File name
ON •• xxx
Programmer-declared
ON-condition
ATTRIB
File attributes
xxx
STATIC variable.
If the
variable is not initialized,
no
text
appears
against the comment,
and
there is also no STATIC
offset if the variable is
an array.
(This can be
calculated from the dope
vector if required)
start of
the
Whbrever possible, a mnemonic prefix is
used to identify the type of operand in an
instr ction, and where applicable this is
folIo ed by a source program identifier.
The f'llowing prefixes are used:
TMPDV ••
Temporary dope vector, followed
by hexadecimal dictionary reference
VO..
Virtual origin
A ••
Address constant
WP1.
AE.
Apparent entry point (point in
the procedure to which control
passed from the prologue)
Workspace~ followed by decimal
number of block which allocates
workspace
WP2.
Label created for an otherwise
unlabeled block (followed by the
number of the block)
Workspace, followed by decimal
number of block which allocates
workspace
WS1.
followed by decimal
number of block which allocates
workspace
WS2.
Workspace~ followed by decimal
number of block which allocates
workspace
WS3.
Wo~kspaceg followed by decimal
number of block which allocates
workspace
BLO~K.
c.o
constant (followed by a hexadecimal dictiona+y reference)
CL.
A label generated by the
compiler (followed by a decimal
number identifying the label)
Data Element Descriptor
Workspace~
Dope Vector
A listing of the various storage areas
is not produced, but the addresses of
variables can be deduced from the object
program listing.
Dope Vector Descriptor
Data Element Descriptor of
function value
Exampl~:
FVR ...
Function value
A=B+10E1; in the
duces:
Invocation count pseudo
register
ON ...
ON-condition name
PR ••
pseudo-register
source
program
0002CA
78 00 B 058
LE
O,B
0002CE
7A 00
AE
0,C •• 08F4
0002D2
70 00 B 060
STE
O,A
B
064
pro-
Record Definition Vector
A and B a~e STATIC INTERNAL variables at an
offset of X'60' and X'58'g respectively,
from the start of the control section.
Return switch
Address of STATIC INTERNAL
control section
Skeleton dope vector, followed
by hexadecimal dictionary reference
Skeleton parameter list,
followed by hexadecimal
tionary reference
dic-
symbol table entry
Symbolic representation of a
label
Temporary control Area. A word
containing the address of the
dope vector of the specified
temporary
Temporary, followed by hexadecimal dictionary reference
A sample of an object program listing is
given in Appendix DA
The size of this
listing is always printed at the end of the
compilation.
Diagnostic messages are produced whenever the compiler detects an error (or possible error) in the program and are sorted in
order of severity.
The four levels of
severity and types of message are fully
described
in
the
section
"Compiler
Options."
Each error message is preceded by a code
in the form IEMnnnnI, where IEM is the
identification code for the PL/I (F) compiler, and nnnn is a decimal number identifying the message.
Job Processing
39
For a detailed list of the diagnostic
messages refer to Appendix G of this publication.
At the end of a compilation, the time
taken, in minutes
and
hundredths
of
minutes, is printed out, provided that the
appropriate control-program timing options
have been selected at the time of system
generation. The time given is the time
during which the compiler is actually in
control. For details of these options,
refer to 'system Requirements'.
This card appears only when the
option is specified.
OBJNM
Object decks generated as a result of
the use of the DECK option will be serialized in the following manner.
Columns 73 to 76 will contain the first
four characters of the first entry label of
the external procedure. If the label has
fewer than four characters, it will be
left-adjusted in the field and the remainder padded with blanks.
Columns 77 to 80 will contain a fourdigit decimal serial number.
Numbering
starts at 0001 and the increment is 1 each
time.
OBJECT MODULE OUTPUT
The object module is in a form suitable
for direct input into the linkage editor.
It is made up as follows:
ABNORMAL END OF COMPILATION
1.
ESD entries for the object module.
2.
TXT and RLD entries for the compiled
program.
TXT and RLD entries are
intermingled, although RLD entries are
always preceded by their related texto
3.
TXT and RLD entries for the STATIC
INTERNAL control section.
LINKAGE EDITOR PROCESSING
4u
TXT and RLD entries for a one-word
control section IHEMAIN,
whicq contains the address of the principal
entry point to the external procedure.
This control section is produced only
when the external procedure has the
MAIN option; it is used by the library
routines IHESAPA, IHESAPC, IHETSAP and
IHETSAO when passing control to the
program.
5.
TXT and RLD entries for a three-word
control section IHENTRY. This control
section is referenced by the END card
and contains a branch to one of the
four library routines IHESAPA, IHESAPC, IHETSAP or IHETSAO.
The last
two routines are used for tasking.
The linkage editor processes PL/I object
modules, resolves any references to subroutines and functions,
and forms a load
module. To communicate with the linkage
editor program, the programmer supplies an
EXEC
statement and DO statements that
define all data sets. He may also supply
control statements for the linkage editor.
The program name for the linkage editor is
IEWL.
If tne linkage editor is executed as
a
job step, the parameter PGM=IEWL is used
in the EXEC statement.
6.
TXT and RLD entries for all STATIC
EXTERNAL control sections and EXTERNAL
file constant control sections.
The
sections appear in increasing order of
ESD identification.
7.
END statement for the compilation.
This specifies the IHENTRY control
section as the one to be entered.
8.
NAME
40
statement
for
the compilation.
If a program check occurs during a
compilation,
a
diagnostic
message
is
printed giving the type of interruption.
The primary input to the linkage editor
is in the form of object modules and/or
linkage editor control statements.
(A load
module, by itself, cannot be the primary
input.) While processing an object module,
the linkage editor finds any references to
functions or subroutines in the object
module, and uses an automatic library call
to
resolve
them.
The automatic call
library consists of either object modules
and linkage editor control statements, or
load modules, but not both.
r-------,
r---------, r---------,1
ISource 1 ILanguage 1 IObject
t-------,
1
1->ITrans1->1
Ilator
Module
lIPrograml
_______ J
L __________ J1
lI _________
J1
]I
1
]
v
r-------,
r---------,
r---------,1 1r---------,
r---------,] 1r---------,
r--------,
ISource I
ILanguage 1 IObject
Linkage 1 ILoad
Control
I
IMain
I
1
1->ITrans1->1
1->1
1->1
1->1
1->]
1
1L_________
Module
1l _________
Editor
1L_________
Program J1 lIStorage
lIPrograml
_______ J
lIlator
_________ J1
J1
JI
lIModule
_________ J1
________ J1
"
J
I
I
r-------,
r---------,
r---------.,
1
I
r------- J
L_______ J
Iprograml
Ilator
I
L_________ J
Figure 6.
Linkage Editor Input/Output Flow
I Source 1 I Language I IObject
I
1->ITransI->l
Il _________
Module
l
J
The programmer can specify additional
libraries and data sets for use by the
linkage editor; the LIBRARY card is used
for this purpose (see the publication 1~~
~Y~~~~~l£Q_QE~r~tig~_~~!emL
Linkage Editor.)
The output of the linkage editor is
always placed in a library. Error messages
and optional diagnostic messages are written on either an intermediate
storage
device or the printer.
In addition, a work
data set is required by the linkage editor
to do its processing.
Figure 6 shows the
input/output flow in linkage editor processing.
The programmer communicates information
about data sets to the linkage editor
through DD statements identified by specific ddnames, similar to the ddnames used by
the compiler.
The programmer must use
these ddnames and he must meet the functions and requirements for data sets specified in Figure 7.
Any data sets defined by SYSLIB or
SYSLMOD, and any additional data sets, must
be partitioned data sets. The ddname given
to refer to any additional libraries is not
fixed by the linkage editor. L~hkage editor control statements are used to inform
the linkage editor about the additional
libraries.
The data sets used by the linkage editor
are assigned to the device classes listed
in Figure 7.
The user can specify additional libraries by means of the linkage editor control
statements INCLUDE and LIBRARY. These control statements can appear in either the
input stream or the libraries. For details
of these statements refer to the publicati on !~!~L.§y§.!~rn/ 360 _QEer a t i:!!L§y§.!~!!!L_1.!!}~:.
~L~£itQr·
Space can be conserved by link-editing
PL/I subroutines into a private library
with their external references unresolved.
To do this, the linkage editor option NCAL
is specified; the SYSLIB DD statement is
then unnecessary.
It is also possible to
maintain a liorary of PL/I object modules.
Either of these techniques requires considerably less disk space than link-editing
all PL/I object modules with their external
references resolved.
Linkage Editor Priority
If modules with the same name appear in
the input to the linkage editor, the linkage editor accepts the first module which
appears.
Job Processing
41
r------------r-----------------------------·------T-------------------------,
I
I
Possible
I
I
) ddname
I
I
Function
Device Classes
I
.------------+-----------------------------------+-------------------------i
I SYSLIN
I Primary input data, normally the I SYSSQ# or the input
I
I stream device (specifiedl
I
I output of the compiler
I
I
I by DD *)
I
t------------+-----------------------------------+-------------------------~
l SYSLIB
I Automatic call library (usually
I SYSDA
I
I
I
I
I the PL/ I Library)
t------------+----------------------------------·-+-------------------------~
! SYSUT1
I Work data set
I SYSDA
I
.------------+-----------------------------------+-------------------------i
t-~:~:~~~:---t-~~:~~~:~~~-~:::~~::---------·------+-~~~~~~-~:-~~~~~:-~=~~~=-~
I SYSLMOD
I Output for load module
I SYSDA
I
r------------+------------------------------------+-------------------------~
I (userI Additional libraries and data setsl SYSDA
)
lL____________
specified) LI ___________________________________.J.I _________________________ JI
Figure 7.
Linkage Editor ddnames
2.
In order to overlay PL/I programs,
the
user must have some knowledge of the control sections produced by the compiler.
The following control sections are produced
for each external procedure:
One control section containing the executable portion of the program and all
constants.
One control section
INTERNAL data.
containing
(only if
for
the
There is a linkage editor requirement that
each segment of an overlay structure consists of one or more complete control
sections.
No control section can be split
between different segments.
The input to the linkage editor must
contain all external procedures required in
the overlay structure,
together with the
linkage-editor control cards describing the
required structure.
The external procedures may be in the form of:
42
I
JA
One control section IHENTRY.
1.
For a full description of the overlay
facilities, s~e IBM System/360 0Eeratigg
System~ __ bi~~~~__ §gitQr~
The two examples
given below show how the simple overlay
structure illustrated in the diagram can be
produced from each of the forms of external
procedure described above.
Both examples
use cataloged procedures;
the first one
also uses batched compilation methods.
STATIC
One control section for each STATIC
EXTERNAL item or EXTERNAL file name.
(This is a named common control section
only for a non-string scalar variable
declared
without
the
INITIAL
attribute.)
One control section IHEMAIN
oprrONS(MAIN)
is specified
procedure).
Object and load modules in a library.
These modules are called by means of
the linkage-editor INCLUDE statement.
Object modules in the input stream
r------J.------,
I
IB
I
X
JF
+
I
I
IC
I
r---- L - - - - ,
I
Y
I
JD
jE
I
I
I
EX~~El~-1~
§t£~~ The
QQ~ct
Modules in the Input
cataloged procedure PL1LFCLG is
used, with two additional DD statements for
SYSIN in the compilation and link-edit
job
steps.
//jobname
//stepname
//PL1L.SYSIN
•
*
JOB
EXEC
DD
etc.
PL1LFCLG"
PARM.LKED='OVLY'
*
A:PROC OPTIONS(MAIN)i ••• END Ai
PROCESS •••
B:PROC; ••• END B;
PROCESS •••
*
*
*
·..
C:PROC;
END C;
PROCESS •••
D:PROCi
END Di
PROCESS •••
E:PROC;
END Ei
PROCESS •••
F:PROCi
END Fi
·..
· ..
1*
IILKED.SYSIN DD
INSERT A
OVERLAY X
INSERT B
INSERT C
OVERLAY Y
INSERT D
OVERLAY Y
INSERT E
OVERLAY X
INSERT F
*
Note that the DD statement
LKED.SYSIN
allows data in the input stream to be
concatenated with the object file.
~xa~E~~~~
QQiect and Load Modules in a
The cataloged procedure PL1LFCL is
used to compile source modules in a library
LIB.S and to use the object modules from
this as input to the link-edit step.
The
load modules produced are placed in a
library of load modules, LIB.L. Both LIB.S
and LIB.L are cataloged data sets.
Each
external procedure requires:
Li£ra~~
Iistepname
IIPL1L.SYSIN
EXEC
DD
IILKED.SYSLMOD DD
PL1LFCL,PARM.LKED=
'XREF,LIST,NCAL'
DSNAME=LIB.S(member),
DISP=SHR
DSNAME=LIB.L(member>,
DISP=OLD
To create an overlay structure from modules
in LIB.L,
the cataloged procedure PL1LFLG
is used witn the INCLUDE statement:
Iistepname
EXEC
IILKEDePRIVLIB DD
PL1LFLG,PARM.LKED=
OVLY
DSNAME=LIB. L,
DISP=SHR
IILKED.SYSIN
DD
*
INCLUDE PRIVLIB(A,B,C,D,E,F)
INSERT A
OVERLAY X
INSERT B
INSERT C
OVERLAY Y
INSERT D
OVERLAY Y
INSERT E
OVERLAY X
INSERT F
ENTRY IHENTRY
Use of the NCAL option (see below) ensures
that only those modules required are placed
in
the
load
module
library.
The
LKED.SYSLMOD DD statement overrides the DD
statement with the same ddname in the
cataloged procedure. The other DD statements are additions to those in the cataloged procedure.
The basis of the above method is that
all object and load modules appear in the
input
stream before the first OVERLAY
statement. All control sections are therefore placed in the root segment until
explicitly moved to another segment by an
INSERT statement.
Each INSERT statement
moves into the appropriate overlay segment,
only the control section containing executable code.
Since all modules required from the PL/I
library are obtained using the automatic
library call procedure to resolve external
references, all library modules and data
are in the root segment, where they are
available to all other segments.
This is
basically necessary, since PL/I does not
support
exclusive
calls,
i.e.,
calls
between segments which do not lie on a
single path.
For example, in the above
structure, procedures in the segment containing D could call procedures in the
segments containing A, B, C, and D, but not
in the segments containing E or Fo Procedures in the segments containing Band C
could call procedures in the segments containing A,
H, C, D and E, but not in the
segment containing Fa A procedure in, say,
the segment containing B may not call a
procedure in the segment containing A which
in turn calls a procedure in the segment
containing F.
However, certain modules may not be
required ~y all segments, in which case
they can be moved out into a lower segment.
The method of doing this is to compile the
procedures using the compiler option EXTREF
and then to examine the lists of external
references produced. For example, if in
the above structure a module IHExxx is
called only by the segment containing E, it
may be moved into that segment by a control
statement of the form INSERT IHExxx immediately following the statement INSERT E.
Similarly, if module IHEyyy is called only
by the segments containing D and E it may
be moved into the segment containing B or
C. Any module called by both the segment
containing F and anyone or more of the
segments containing B, C, D, and E must
remain in the root segment.
Similarly, data control sections may be
moved from the root structure to segments
lower in the structure. For example:
1~
To move the STATIC INTERNAL control
section for procedure F into the segment containing F,
the
statement
Job Processing
43
INSERT
F
must
INSERT ******FA.
2.
be
followed
To move the STATIC EXTERNAL control
section PQR (which is referenced by B
and C only) into the segment containing Band C, the statement INSERT C
must be followed by INSERT PQR.
Values assigned to these STATIC data items
are not saved when the segment is overlaid;
when the segment is reloaded the original
values are restored.
STATIC data should
therefore be left in the root segment
unless it consists of:
1•
2.
Values set
and
then
read-only>
by the INITIAL attribute.
unchanged
(that
is~
Values that need not be
retained
between different loadings of the segment.
An alternative method of producing an
overlay structure is to obtain object decks
and intermingle these with OVERLAY cards.
This method requires much more careful
handling. STATIC INTERNAL control sections
must be moved up into the root segment,
unless they are read-only. Named common
control sections (which are produced only
for non-initialized~ non-string EXTERNAL
scalar variables> are automatically moved
up so that they are accessible to all
segments requ1r1ng them,
but all other
EXTERNAL items will need to be moved up by
the use of INSERT statements.
Further information on the use of overlay structures can be obtained from the
publication IBM_£ystem/360 Operating Sys!~~_binkag~Editof~
In addition to those already discussed,
other linkage editor control statements are
available:
1.
NAME statement: Specifies the name of
the load module created from
the
preceding input modules.
2.
ALIAS statement: Specifies alternative
names for the load module and can also
specify alternative entry points.
3.
CHAN3E statement: Changes a control
section name, an entry name. or an
external reference.
4.
44
tion to be replaced by another; or
changes an entry name or an external
reference.
by
REPLACE statement:
Deletes a control
section, an entry name. or an external
reference; or deletes a control sec-
For a detailed description of these
facilities,
see
the
publication
IEM
2Y§~60_QEerating System, Li~n~k~a~g~e~~E~d~i=.
to!:.
OPTIONS FOR LINKAGE EDITOR PROCESSING
The linkage editor options can be specified in the EXEC statement. The options
that are most applicable to the PL/I programmer are:
PARM='LIST,MAPIXREF,LETIXCAL,NCAL.OVLY'
LIST - the LIST option specifies that all
control statements processed by the
linkage editor are listed in cardimage format on the diagnostic output
data set.
MAP
or XREF - the MAP option tells the
linkage editor to produce a map of the
load module; this map indicates the
relative location
and
length
of
control sections.
If XREF is specified, a map of the load module is
produced and a cross reference list
indicating all external references in
each control section is generated.
If
neither MAP nor XREF is specified,
neither the map nor the cross reference listing is generated.
LET or XCAL - the LET option specifies that
the linkage editor should mark the
load module ready for execution even
though certain error or abnormal conditions
were found during linkage
editing.
(It should be noted that,
because of the selective loading techniques, certain external references to
library modules may not be resolved.)
The XCAL option marks the load module
executable
even
though
improper
branches were made between control
sections; this occurs only if the
OVERLAY feature of the linkage editor
is being used.
NCAL - the NCAL option informs the Linkage
Editor that no external references are
to
be
resolved by the automatic
library call mechanism.
The subprograms in the library are not inserted
in the load module.
However, the load
module is marked executable.
Other options can also be specified for
the linkage editor.
For a detailed description of all linkage editor options, see
the publication IBM System/360 operatin~
Syst~Link~ge Editor.
JOB CONTROL PROCEDURE FOR LINKAGE EDITOR
An example of a linkage editor procedure
that handles the object program deck from
the PL/I (F) compiler is given below.
IIJOB2
/
I]~INK
JOB 345,JOHNSMITH,
MSGLEVEL=i1
EXEC PGM=IEWL,
PARM='XREF,LIST'
If the module is in an overlay structure. the control sections are arranged by
segment in the order in which they were
specified.
Each control section that is included
from a library during automatic library
call is indicated by an asterisk.
After the control sections, the module
map shows the contents of the pseudoregister vector (PRV).
//SYSPRINT DD SYSOUT=A
//SYSLIB
At the end of the module map is:
1.
The
relative
address
of
the
instruction with which processing of
the module begins.
DD UNIT=SYSDA,
SPACE=(1024.(200,20»
2.
The total
bytes
DD DSNAME=PRIVATE(PROGRAM),
DISP=OLD
3.
The
total
length
register vector.
DD
DSNAME=SYS1.PL~LIB~
DISP=SHR
//SYSUT1
/ISYSLMOD
//SYSLIN
DD
*
(Object program deck)
/*
length
of
the
of
the
module in
pseudo-
In the case of an overlay load module#
the length ~s that of the longest path.
The addresses shown in the module map are
those assigned by the linkage editor prior
to loading for execution.
LINKAGE EDITOR OUTPUT
The linkage editor produces a map of the
load module if the MAP option is specified.
or a cross reference list and a map if the
XREF option is specified.
The linkage
editor also produces diagnostic messages,
which are fully described in the publication I~~_§y~tgm/36~~~tin~ System, Link~gg_§Qi:!:.Qr·
The size of the load module produced by
the linkage editor must not exceed 512K
bytes. Programs producing a load module
larger than this should be segmented.
The module map shows all control sections in the output module and all entry
names in each control section. The control
sections are arranged in ascending order
according to their assigned origins.
All
entry names are listed below the control
section in which they are defined.
The cross reference table consists of a
module map and a list of cross references
for each control section.
Each address
constant is listed with
its
assigned
location, the symbol referred to# and the
name of the control section in which the
symbol is defined. For overlay programs,
this information is provided for each segment.
In addition, the number of the
segment in which the symbol is defined is
provided.
If the program is in an overlay structure, a list of cross references is provided for each segment.
If a symbol is unresolved after processing by the linkage editor, it is identified
by $UNRESOLVED in the list. However. if an
unresolved symbol is marked by the nevercall (NCAL) function, it is identified by
$NEVER-CALL.
Disposition Data
Information indicating the options and
attributes specified is provided with each
load module produced.
Job Processing
45
There are, in addition, a number of
disposition messages
to
indicate
the
conditions of the load module in the output
module library.
For full details see the
publication IBM_§ystem/360 Operating Sys~emL_bin~~~ Editof.
DIAGNOSTIC MESSAGES
Certain conditions that are present when
a module is being processed can cause an
error or warning message to be printBd. An
error or warning message consists of a
message code and a message text.
The message text contains combinations
of the following:
The code lEW, which identifies
editor messages
linkage
The message
classification
error or warning)
(either
£)CB Paramet er
The data control block , or member in
error
//SYSPRINT DD
SYSOUT=A
//SYSLIN
DO
DSNAME=&&LOADSET.
UNIT=SYSDA,
DISP=(MOD,PASS),
SPACE=(80, (250,100»
//SYSUT1
DO
UNIT=SYSDA"
SPACE=(1024, (60,60»,
SEP=(SYSPRINT,
SYSLIN)
//SYSIN
DO
*
Instructions to the programmer
Actions taken by the linkage editor
If an error is encountered during processing, the message code for that error iEI
printed with the applicable symbol, sym-·
boIs, or record in error. After processing
has been completed, the diagnostic message
associated with that message code is printed.
(Source Program Deck)
/*
EXEC
PGM=IEWL
//SYSPRINT DD
SYSOUT=A
//SYSLMOD
DO
DSNAME=&&LOADSET,
SPACE=(1024, (50,20,1»,
DISP=(NEW,PASS),
UNIT=SYSDA
//SYSLIB
DD
DSNAME=SYS1.PL1LIB,
DISP=SHR
//SYSUT1
DO
UNIT=SYSDA,
SEP=(SYSLMOD,SYSLIB),
SPACE=(1024,(200,20»
//SYSLIN
DD
DSNAME=*.STEP1.SYSLIN,
DISP=(OLD,DELETE)
/ILKED
When the system is generated, device
names are assigned by the operating system
and the installation, and the programmer
chooses devices by specifying either the
installation or operating system names.
The programmer can choose which device
to use for his data sets and can specify
the name of the device or class of devices
in the UNIT parameter of the DO statement.
46
/ISTEP3
EXEC
PGM=*.LKED.SYSLMOD,
COND=(C5,LT,STEP1),
C5,LT,LKED»
//SYSPRINT DD
SYSOUT=A
//SYSIN
*
DO
(Data)
/*
tion 1.
The preset tab positions are: 25,
49, 73, 97, and 121.
(See the section "The
Tab Control Table" for details of how to
alter these values.)
A numeric data field
for list- or data- directed output will not
be split over two lines when this can be
avoided.
A field which exceeds the residual space on the current line will begin a
new line, and only if the new line cannot
accommodate the complete field will it be
carried over to subsequent lines.
OBJECT PR03RAM OUTPUT
Execution of the PL/I procedure shown in
Figure 8 will produce the object time
output in Figure 9.
Figure 9 illustrates various forms of
external data representation as produced by
PUT statements employing the EDIT, LIST,
and DATA keywords.
It should be noted that
the output of data fields to PRINT files by
list- or data- directed techniques will
automatically be aligned upon preset tab
positions, the initial data field of a line
being aligned upon the left margin,
posi-
This form of output is concerned with
writing complete records,
instead of one
item at a time.
One record is the contents
of one variable.
rhe external data representation is the same as the internal
form;
there is no data conversion. RECORDoriented output is described in 'Managing
Data' •
OUTPUT: PROCEDURE
DCL
OPTIONSCMAIN)~
A FIXED,
B FLOAT,
C FLOAT COMPLEX,
D BIT(10),
E CHAR (10),
ARRAY(2,2)~
A,B = 12345~
C
A+12345I~
D
'1100111'B;
E
'ABC"DEFG';
DO I = 1 TO 2; DO J
ARRAY(I,J) = I+J;
END; END~
1 TO 2;
PUT PAGE LIST('EXAMPLES OF LIST/DATA/EDIT OUTPUT');
LIST:
PUT SKIPC2} LIST('LIST DIRECTED EXAMPLES:');
PUT SKIP(1) LISTCA,B,C,D,E);
DATA:
PUT SKIP(2) LIST('DATA DIRECTED EXAMPLES:');
PUT SKIP(1) DATA(A,B,C,D,E);
PUT SKIP DATACARRAY);
EDIT:
PUT SKIP(2) LIST('EDIT DIRECTED EXAMPLES:-);
PUT SKIP(1) EDIT(A,B,C,D,E)
(F(10,2),E(~O,O,5),C(E(10,O,5»,X(5),2A);
END;
Figure 8.
Example of PL/I Procedure Using STREAM I/O
Job Processing
47
EXAMPLES OF LIST/DATA/EDIT OUTPUT
LIST DIRECTED EXAMPLES:
Q2345
1.23450E+04
ABC'DEFG
1.23450E+04+1.23450E+04I
'1100111000'B
DATA DIRECTED EXAMPLES:
E='ABC"DEFG 'i
ARRAY(l,l)= 2.00000E+00 ARRAY(1,2)= 3.000000E+00 ARRAY(2,1)= 3.000000E+00 ARRAY(2,2)= 4.00000E+00;
EDIT DIRECTED EXAMPLES:
12345.00 12345E+00 12345E+00 12345E+00
Figure 9.
1100111000ABC'DEFG
Example of LIST/DATA/EDIT Output to PHINT Files using the PUT Statement
2E~rator
when an exceptional or error condition
arises during the execution of a PL/I
program,
a
message
of
the
form
IHEnnnI - text is printed. The first three
characters IHE are standard and indicate a
PL/I library message. The message number
is specified by the digits nnn. The final
character, I, is a system standard action
code, indicating an informative message for
the programmer. These messages are printed
on an output data set which is specified by
the SYSPRINT DD statement provided by the
programmer.
If the SYSPRINT DD statement
is absent, the object time messages appear
on the operator's console, except for the
ON CHECK system action messages and the
COpy option output, which are not printed
at all in this case.
rhe text of the
message, which may consist of any number of
characters, is separated from the I by one
blank. PL/I input/output messages include
the word FILE and the file-name at the
start of the message, to assist in the
identification of the file causing the
error.
If the statement number compiler option
has been specified, each message will also
contain IN STATEMENT nnnnn prior to AT
location message.
nnnnn gives the number
of the statement in which the condition
occurred.
Messages are generated for two reasons:
1..
An error occurred
for
which
no
specific ON condition exists in PL/I.
A diagnostic message is printed out
and the ERROR condition is raised.
2.
A'n ON condition is raised, by compiled
code or by the library, and the action
required is system action, for which
the language specifies COMMENT as part
of the necessary action.
The complete list of object time diagnostic messages appears in Appendix G of
this publication.
48
Messages
A message is transmitted to the operator
when the DISPLAY statement is specifiea in
the PL/I program. The two forms in which
an operator message may appear are as
follows:
1.
Without the REPLY option - the message
is in the form of a character string
specified by the programmer.
2.
with REPLY option - the message is in
the form of a character string specified by the programmer, but it 1S
preceded by a two-digit code generated
by the operating system. rhe operator
must use this code as the prefix to
his reply message.
SYSTEM OUTPUT
Diagnostic messages and completion codes
are issued by the operating system, indicating coding errors found in job control
statements and system macro instructions,
and errors detected during processing by
the linkage editor. The completion codes
indicate conditions causing the control
program to abnormally terminate execution
of a job.
For details of the system
messages and completion codes, refer to the
publication IBM System/360 0Eerating System" Messages, Completion Codes and Stora~
r:umE§..
To ease the work of the PL/I programmer,
IBM has supplied cataloged procedures to
assist in the compilation, linkage editor
processing, and execution of PL/I source
programs. The job control statements needed to invoke the procedures, and the deck
structures used with the procedures, are
described in the following paragraphs.
In the examples given in this
the operand is specified as:
section,
The cataloged procedure, PL1LFC, consists of the control statements shown in
Figure 59 in Appendix E.
PROC = cataloged procedure name
but the 'PROC=' can be omitted if required.
It is recommended that each installation
review the procedures supplied by IBM, and
modify them to obtain more efficient use of
the devices available, to allow for installation conventions, to accommodate local
changes to the compiler options, to alter
the REGION fields to correspond to available storage, or to set block sizes for
output data sets.
Invoking the PL1LFC catalo~ed_E£2~~~~
Figure 11 shows control statements that
might be used to invoke the procedure.
r-----------------------------------------,
I
//COMPLM
JOB PL1PROG,MSGLEVEL=1
I
I
1
1
~
!
~
//STEP1
EXEC
//PL1L.SYSIN DO
PROC=PL1LFC
I
I
I
I
I
I
*
(Source Program Deck)
1
I
JI
IL _________________________________________
/*
Figure 11.
The cataloged procedure for compilation
with deck output is PL10FC. The programmer
invokes this procedure by using an EXEC
statement with the first parameter containing the name PL10FC. An example is shown
as follows:
//STEP1
EXEC
PROC=PL1DFC
the PL10FC Cataloged Procedure:
Figure 10 shows control statements that
might be used to invoke the procedure.
r-----------------------------------------,
I
/ICOMPIL
JOB PL1PROG,MSGLEVEL=1
I
I
I
I
//STEP1
EXEC PROC=PL1DFC
I
I
I
I
/IPL1D.SYSIN DO *
I
I
I
(Source Program)
I
I
I
I
LI _________________________________________
JI
/*
Figure 10.
Invoking the
dure PL1DFC
Cataloged Proce-
The cataloged procedure for compiling
and link-editing a PL/I source program is
PL1LFCL. The programmer invokes this procedure by using an EXEC statement with the
first
parameter
containing
the
name
PL1LFCL. For example:
//STEP1
//STEP1
EXEC
PROC=PL1LFC
EXEC
PROC=PL1LFCL
The cataloged procedure for compiling
and link-editing consists of the control
statements shown in Figure 60 in Appendix
E.
InY2~!gg __ ~h~ __fL1~E£~_£~~alQg~Q_f£2ce1Q£~~
Figure 12 shows the statements that might
be used to invoke the procedure PL1LFCL.
r-----------------------------------------,
//JOBCLE
JOB PL1PROG,MSGLEVEL=1
I
1
I
I
I
I
I
I
I
I
//PL1L.SYSIN DO *
I
I
]
(Source program)
I
I
I
JI
1L _________________________________________
/*
//STEP1
Figure 12.
The cataloged procedure for compilation
with object module output is PL1LFC. The
programmer invokes this procedure by using
an EXEC statement with the first parameter
containing the name PL1LFC. An example is
shown as follows:
Cataloged Proce-
Compilation and Link-Editigg
The cataloged procedure, PL1DFC, consists of the control statements shown in
Figure 43 in Appendix E.
lrrY2~~~
Invoking the
dure PL1LFC
EXEC
PROC=PL1LFCL
Invoking the
dure PL1LFCL
cataloged Proce-
Compilation, Link-Editing and Execution
Another cataloged procedure, PL1LFCLG,
passes a source program through three procedure steps - compilation. link-editing,
and execution. The cataloged procedure is
Job Processing
49
//STEP1
invoked by specifying the name PL1LFCLG as
the first parameter in an EXEC statement.
For example:
//STEP1
EXEC
specifinot
be
Figure 61 in Appendix E shows the statements that make up the cataloged procedure
PL1LFCLG.
1!!YQls!!!g:_~h~_!:!:!1.LF£!:!~_~~e.12g:ed Procedure.:..
Figure 13 shows statements that might be
used to invoke the procedure PL1LFCLG.
Figure 62 in Appendix E shows the statements that make up the cataloged procedure
PL1LFLG.
1nY2king _~h~_-f!:!1.1f1~-fe.~aIQged_Pr2~£~~
Figure 14 shows statements that might be
used to invoke the procedure PL1LFLG.
r------------------------~----------------,
J
~
r-----------------------------------------~
I
I
I
I
I
I
I
I
//COMPLEG
JOB
PL~PROG,MSGLEVEL=l
~
I
I
I
I
//PL1L.SYSIN DD *
I
I
(Source Program)
I
J
I
lI _________________________________________
/*
JI
//STEP1
Figure 13.
EXEC
PROC=PL1LFCLG,
REGION. GO=xxxxK
Invoking the Cataloged
dure PL1LFCLG
PROC=PL1LFLG,
REGION. GO=xxxxK
where xxxxK represents the REGION specification
(leading
zeros
need
not
be
specified).
PROC=PL1LFCLG,
REGION. GO=xxxxK
where xxxxK represents the REGION
cation
(leading
zeros
need
specified).
EXEC
J
//jobname
//STEPl
JOB
EXEC
J
J
1
I
PL1PROG,MSGLEVEL=1
PROC=PL1LFLG,
REGION. GO=xxxxK
I
I
I
I
J
parameters defining I
the input data set I
]
to the Linkage
I
lJ _________________________________________
JI
Editor
//LKEO.SYSIN DO
Figure 14.
Invoking the
dure PL1LFLG
Cataloged Proce-
ProceLink-Editigg and Execution of Several
separate Com.1&lations
The cataloged procedure for link-editing
and executing a previously compiled PL/I
program is PL1LFLG.
This procedure is
invoked. by an EXEC statement with the first
parameter containing the name PL1LFLG. For
example:
50
Several programs can be separately compiled, then link-edited together and executed as one program.
This is done by
using the cataloged procedure PL1LFC for
each
individual compilation except the
last, then using the procedure PL1LFCLG for
the last, all within the same job.
organizations used in the System/360
ating System are:
The term "file," as defined for PL/I,
may be equated for the most part with the
system'360
operating system term "data
set." However, there is not necessarily a
one-to-one correspondence between the number of files being used within a program
and the number of data sets being used.
That is, a program may declare two files,
ALPHA and BETA, both of which are concurrently open and both referring to the same
data set.
This may be effected in two
ways:
1.
When opened, both files ALPHA and BETA
use the same TITLE option value, i~e ••
they refer to the same DD statement.
2.
Two DO statements are used, one for
each file, and each nominates the same
data set.
From the above, it may be seen that the
PL'I program does not itself nominate data
sets directly.
The TITLE option of the
OPEN statement is employed to specify the
name (ddname) of the OD statement to be
associated with a given file; in turn, the
00
statement specifies its associated data
set (dsname). Should the TITLE option be
omitted from the OPEN statement. or should
the file be opened implicitly by another
I/O statement, a default TITLE is obtained
from th~ file identifier; the initial eight
characters, padded with blanks if necessary, are used.
Oper-
CONSECUTIVE
INDEXED
REGIONAL
CONSECUTIVE
organization
permits
only
sequential access, while
REGIONAL
and
INDEXED organization permit both direct and
sequential access.
The permitted combinations of data set
organization, PL/I statements, access methods. etc. are detailed in Figures 15. 16,
and 17.
CONSECUTIVE ORGANIZATION
In CONSECUTIVE organization, the data
set consists of records whose placement
within the data set is determined solely by
the order in which they were initially
added. Such a data set does not employ
keys; records may be retrieved only in
sequential order. Device support for CONSECUTIVE data sets includes magnetic tapes,
card readers/punches, direct access storage
devices, and paper tape readers. However,
for UPDATE files, only direct access devices may be used.
Both STREAM and RECORD I/O facilities
may employ data sets of this organization.
STREAM I/O is limited to this organization.
If two or more files are assigned to the
same data set or SYSOur class (via different DO statements) and are simultaneously
open for sequential output, then~ if the
PCP or MFT system is being used, the
records in the files will be intermixed or
the job will be abnormally terminated.
If
MVT is being used, the records will remain
separate. This practice is extremely dangerous and is not recommended.
The facility for reading BACKWARDS is
available only for files with records in
F,FB,FBS, or U format on 9-track magnetic
tapes, or 7-track magnetic tapes recorded
without the use of the data converter. If
the data converter is used, only string
records should be read BACKWARDS (Record
formats are described later in this chapter.)
There are three data set organizations
which are supported by PL/I object programs. Specification of data set organization is made by means of an option within
the ENVIRONMENT attribute, which is discussed further in Appendix B.
INDEXED ORGANIZATION
The organization of a data set determines the manner in which data is stored
within the data set and the permitted
techniques
of accessing it.
The PL/I
In INDEXED organization. the data set
consists of keyed records whose placement
within the data set is determined by the
value of the key. Since a key is associated with each record, direct retrieval,
replacement,
addition,
or deletion of
Managing Data
51
r-------T-------T-------------------------v-----·--r-------T--------------r-----T--------,
IOrgani-IAccess I
File Declaration
I
Istate- I
Options
IData IRecord I
ModE~
~zation I
I
I
Iment
I
I Mgmt. I Format
I
~-------+-------+------------~-----------+-------+-------+--------------+-----+--------~
I
I
J
I [BUFFERED]
I
I
I [BACKWARDS] 1 I
I INPU'l~
I READ
I
I
I
I
~------------+-------+-------+--------------i
IFIFBIFBSI
I
I
I
I
I
I WRITE I FROM
IQSAM I
I
I
t
I
IOUTPUT ~-------+--------------i
I
I
I
I
I
I
I LOCATE I [SET]
1
I
I
I
I
I
l·-------+-------+--------------i
I UI VI VB I
J
I [BUFFERED]
I
I READ
I [INTOIIGNOREI I
IVSIVBS I
I
I
I
I
I
SET]]
I
I
I
I
ICONSEC- SEQUEN-I[ENV
I
IUPDATE2~-------+--------------~
I
I
IUTIVE
TIAL
ICCONSECUI
I
I REWRITE I [FROM]
I
I
I
I
I TIVE)]
.------------+-------+-------+--------------+-----+--------i
I
I
I UNBUFFERED I INPUT I READ
I [INTOIIGNORE] I
I
I
I
I
I [BACKWARDS] ~ I
I
I [EVENT]
I
I
I
J
.------------+-------+-------+--------------~
I
I
I
I
I
I
IOUTPUT IWRITE IFROM [EVENT]
I
I
I
J
r-------+-------+--------------iBSAM IFIUIV
I
I
I
~
I
I UNBUFFERED I
I READ
I [INTOIIGNORE] I
I
I
I
I
I
I
I
I [EVENT]
I
I
I
IUPDATE .-------+--------------i
I
I
I
I
I
I
J
I
I
I
I REWRITE I FROM [EVENT] I
I
I
~-_-----~-------~------------L------------L-------~-------~--------------~-----~--------i
I~ BACKWARDS is available only for records of F, FB, FBS, and U format.
I
I
I [INTO I IGNORE I I
I
SET] I
I
12 UPDATE is not available for records of VS and VBS format.
)
I NO:!;!,:" The syntax notation used in this table is the same as that used in
IB~
I
I
I
I
._____________________________________________ JI
IL__________________________________________
§y2:!:.!!!!~1§.Q_QE!!:~:!:.in9._§.y2~!!!, PL/I Ref·erenc~~!!!!e.!.
.Figure 15.
CONSECUTIVE Data Set Organization and Applicable Language Features
records is possible, as well as se~uential
access of such records. The keyed records
of an INDEXED data set are located by means
of several levels of indexes which are
initially constructed when the data set is
created.
Keys for INDEXED data sets consist of
character strings, 1 through 255 characters
in length, defined by means of the DCB
subparameter KEYLEN(described later in this
chapter). Should the length of a character
string key specified in a KEY or KEYFROM
option differ from that specified by KEYLEN, it is truncated or padded with blanks
to KEYLEN.
Device support for INDEXED data sets is
restricted to direct access storage devices.
Basically, there are three areas
an INDEXED data set:
within
Prime data area
Overflow area
Index area
The prime data area is the area into
which records are inserted during creation.
52
Subsequent addition of records" when using
DIRECT access for UPDATE# may cause records
to be moved from the prime data area to an
overflow area, in order to keep the indexes
in order. Access to records in an overflow
area is slower than to those in the prime
data area; accordingly~ the data set should
be
"reorganized"
periodically
(see:
"Accessing of INDEXED Data Sets").
There are two types of overflow area:
1.
a cylinder overflow area (a certain
number of tracks per cylinder reserved
during creation)
2.
an independent overflow area, which
requires special DD statement usage
(see "Creation of INDEXED Data Sets").
The index area may be spread, physically, through the space allocated to the data
set. There are two basic index types, the
track index and the cylinder index; a third
type, the master index, is used if the
cylinder index becomes too large for efficient access.
The track index specifies the highest
key value for each track of a given cylin-
r--------T-------r------------------------~------~---------T-------------~------~-------,
10rgani- IAccess I
Ization I
I
File Declaration
I Mode I statement I
I
I
Options
IData
IRecord 1
IFormat 1
1Mgmt.
I
~--------+-------+---------~--------------+------+---------+-~-----------+------+-------~
I [BUFFERED I
I
I
I
UNBUFFEREDJIINPUT I READ
I
1
I
I
I
I
I
I
I
I [KEYED] 2
I
I
I [INTO I SET4
I [KEYTOIKEYJI
I
IGNORE)
I
I
IQISAM I
I (SCAN) I
~--------------+------+---------+-------------+------i
I [BUFFERED I
I
I WRITE
IFROM KEYFROM I
UNBUFFERED) I OUTPUT I
I
IQISAM
SEQUEN- ENV
I KEYED
I
~---------+-------------~ (LOAD)
TIAL
(INDEXED) I
I
I LOCATE4 I [SET] KEYFROMI
I
I
I
I
I
r--------------+------+---------+-------------+------~
t
I
I [BUFFERED ~
I
UNBUFFERED]
I [KEYED] 2
1
I
I [INTOISET4
I
I [KEYTO I KEY] I I
I UPDATE I
I
IGNORE]
IQISAM
I
.---------+-------------~ (SCAN)
I
I REWRITE I [FROM] 4
I
I
I
I
t---------+-------------~
I
I
I
I DELETE
1
I
I
I
I
I
I
I
I
I READ
I
I FIFB3
1
I
I
I
I
IINDEXED1~-------+---------+--------------+------+---------+-------------+------~
I
I
1
I
I
I
1
I
1
[KEYED]
I
IINPUT I READ
I
I
I
I
1
I
I
I
I
I
I
1
1
I
I
I
I
I
1
I
I
I
I
I
I
1
I
I
I
I
KEY
[EVENT]
I
I
I
I
I
I
I
I
I
I
I
I READ
I
1
I INTO KEY
[NOLOCK]
I
[EVENT]
I
1
1
1
I
I
1
I
t---------+-------------~
IFROM KEYFROM I
I
I [EVENT]
I BISAM 1
[EXCLUSIVE]IUPDATE~---------+-------------~
I
I
I REWRITE IFROM KEY
1
1
I
I
I [EVENT]
I
I
IENV
I
DIRECT I (INDEXED) I [KEYED]
I
I
I
t--------------+------+---------+-------------~
I
J
1 INTO
I
I WRITE5
I
I
I
t---------+-------------~
I DELETE 1KEY [EVENT] I
r---------+-------------~
I
I
I
I
I
I
1 UNLOCK
~--------~-------~---------L--------------L------~----
_____ LI KEY
_____________ LI ______ LI _______
~
11 INDEXED organization is supported only for direct access storage devices.
~
12 For INDEXED SEQUENTIAL INPUT and UPDATE, the file attribute KEYED must be declared
I if the KEYTO or KEY option on the READ statement is to be used. DIRECT access
I implies KEYED.
I3
1
Blocked records are not supported for UNBUFFERED files.
I
14 Locate mode I/O operations are applicable to BUFFERED files only.
I5
1
WRITE is ignored if NOWRITE is specified.
I
INot~ The synt:ax notation used in this table is the same as that used in IBM
LISys~~ill/36Q_QE~fatin9-§y~~~ill,
_______________________________________________________________________________________
J
PL/I Reference Manual.
Figure 16.
INDEXED Data Set Organization and Applicable Language Features
der;
the cylinder index specifies the
highest key value of each cylinder.
The
master index may be created (by specification of the NTM subparameter of the DCB
parameter in the DD statement) when the
cylinder index exceeds the specified number
of tracks. Each entry in the master index
points to a track within the cylinder
index. Up to three levels of master index
(addressing tracks within the next lowest
level master index) may be created automatically.
Records within an INDEXED data set are
either "actual" (representing still valid
data> or "dummy" (marked as deleted,
and
inaccessible to the user). Dummy records
are recognized only when both of the following are present:
1.
The DCB subparameter OPTCD
DD statement used to create
set.
=L
the
in the
data
Managing Data
53
r---------T-------T-------------------------T--·----T-------T-------------T------T-------,
IAccess I
File Declaration
I Mode ]State-,
Options
IData 'Record I
IOrganiIzation
I
I
,
,ment,
,Mgmt.
,Format I
r---------+-------+-------------T---------·--+------+-------+-------------+------+-------~
![BUFFERED] IINPUT /READ
/ [INTO'SET[KEYIBS~M2 I
, [KEYED] 2 ,
,
, TO] I IGNORE],
I
I
r-----------+------+-------+-------------+------i
I
I
I
I (BUFFERED] ]
I WRITE IFROM KEYFROM IBSAM I
I
JKEYED
'OUTPUT~-------+-------------i(LOAD) I
I
I
I
I '
I
"LOCATE '[SET] KEYFROM,
,
I
I
l
r-----------+------+-------+-------------+------1
I
I
I
I
I ' READ
I [INTO] SET[KEYI
I
,
I
I
I [BUFFERED] I
I
I TO] I IGNORE]
I
I
]
~
I
I [KEYED12
'UPDATE~-------+-------------iBSAM2 I
/
/
I
,
"REWRITE/ [FROM]
,
I
I
/SEQUEN-IENV
.-----------+------+-------+-------------+------i
I
ITIAL
/(REGIONAL(1) I 'UNBUFFERED I
I
I [INTO[KEYTO] I I
I
1
I
IREGIONAL(2) I J [KEYED] 2
I
IGNORE]
lBSAM I
IINPUT IREAD
I
I
IREGIONAL(3» ,
I
I
I [EVENT]
,
I
I
I
)
r-----------+------+-------+-------------+------i
I
I
I
IUNBUFFERED IOUTPUTIWRITE IFROM KEYFROM IBSAM I
I
/
I
I KEYED
I
I
I [EVENT]
, (LOAD) I
I
/
I
.-----------+------+-------+-------------+------1
/
I
I
I
I'
I [INTO[KEYTO] II
IREG(1) /
/
I
I
/ UNBUFFERED I
I READ
I
IGNORE]
I
I and (2) : I
I REGIONAL" I
I I [KEYED12
I UPDATE I
I [EVENT]
I BSAM I F only I
/
/
I
/
I
/
]
I
I
1
I
~-------+-------------+-----------+------+-------+-------------+------iFIUIV
/
I
/
/
/
I
J
I
I
I
/
I
I '
I
I
I
I
I
I
I
,
I
I
I
I
/
,
/
I
~-------+-------------i
/REWRITEIFROM [EVENT]
IINPUT /READ
I
,INTO KEY
, [EVENT]
l
/
,
,
/
'KEYED
~------+-------+-------------1
IFROM KEYFROM I
I
/
I [EVENT]
I
.-----------+------+-------+-------------1
/INTO KEY
IBDAM
,
/
I
JE N V ]
I READ
I [EVENT]
I (BSAM:
IDIRECT /(REGIONAL(1)/1
I
,[NOLOCK]
/LOAD)
~-------+-------------i
I
I REGIONAL (2) I I
]
I REGIONAL (3»
/
I WRITE I FROM KEYFROM i
I
I
I [EXCLUSIVE] UPDATE I
, [EVENT]
I
/
I
I [KEYED]
~------- +-------------i
1
I
1
IREWRITEIFROM KEY
I
I
I
I
I
I [EVENT]
I
/
I
I
I
I
1
I
1
1
I
I
I
I
I
I
I
I
I
I
/
,
I
IOUTPUT/WRITE
I
/
I
I
I
J
I
I
I
/
I
I
!
I
/
I
J
~-------+-------------i
I
I DELETE I KEY [EVENT]
I
/
I
1
~-------+-------------i
I
IUNLOCK IKEY
I
I
/
IREG(3): I
I
~---------L-------L-------------~-----------~------L-------L-------------L------L-------i
11
1
12
,
/
~
REGIONAL organization is supported only for direct access storage devices.
For REGIONAL SEQUENTIAL INPUT and UPDATE, the file attribute KEYED must be declared
if the KEYTO option on the READ statement is to be used (DIRECT access impli~s
KEYED). If the KEYED attribute is not declared, QSAM is used for REGIONAL(1) INPUT
and UPDATE.
I
/
1
I
,
/
/
/
The syntax notation used in this table is the same as that used in IBM
/
L _______________________________________________________________________________________
JI
'§y~~~m/l£Q_opeEatin~_§ystem
PL/I Reference Manual.
I~Q~~:
Figure 17.
2.
REGIONAL Data Set Organization and Applicable Language Features
A character whose value is (8)'1'B in
the initial position of the record.
Should either condition not apply, a given
record is not recognized as
a
dummy
(deleted)
record.
Should the OPTCD = L
54
subparameter be employed, the user is cautioned that unless care is taken to prevent
the unintentional presence of such an initial character (for example, cecause of
negative FIXED BINARY data), records may
vanish from the data set.
REGIONAL ORGANIZATION
There are three types of REGIONAL data
organization: REGIONAL(1), REGIONAL(2}, and
RE3IONAL(3}.
REGIONAL(1)
and (2) support
unblocked
F-format records; REGIONAL(3}
supports unblocked records of U, F, or
V-format.
In all tnree REGIONAL organizations, the
data set consists of regions numbered consecutively,
starting
at
zero.
In
REGIONAL(1)
and (2), each region contains
just one record.
In REGIONAL(3),
each
region is a whole track, containing as many
records as will fit onto the track.
The
actual number will depend upon the size of
the records and the device characteristics.
REGIONAL organizations support DIRECT
access of records by directly locating the
region in which the record is placed and
then, if necessary, performing a sequential
search for the specified record in the
vicinity of the located regiono REGIONAL
organizations
also
support
SEQUENTIAL
access of records.
A major advantage of REGIONAL organization is that it permits program control
over the relative physical placement of
records.
Accordingly,
optimization
of
record access in terms of particular application requirements and device capabilities
can be obtained by judicious programming.
it takes the form of a character string
which is actually written in the data set
attached to tne record, and is known as the
~rded_!s§.y.
The recorded key consists of
the initial n characters of th~ source key.
where n is the number specified in the DCB
subparameter KEYLEN.
If the source key
specified in the KEY or KEYFROM option is
not equal in length to the number specified
by KEYLEN. the source key is either padded
with blanks or truncated (on the right)
before being written with the record as the
recorded key or compared with existing
recorded keys in the search for a particular record.
The relationship between the portion of
the source key which represents th~ region
number of the record (i.e., the last eight
characters of the source key)
and the
portion which constitutes the recordej key
(i.e.,
the
first n characters, where
KEYLEN = n) should be carefully considered.
Some possibilities are illustrated below.
Note that all the examples
refer
to
REGIONAL (2)
or (3).
In REGIONAL ( 1 ), there
is no recorded key, and any characters in
the source key other than the final eight
are ignored.
Source key of 16 characters; KEYLEN
8 9
8
16
r--------T--------,
I
I
J ________ L ________ J
L
Characters 9 through 16 represent the
region number; characters 1 through 8
are used as the recorded key.
Two types of key are used with REGIONAL
organizations: source keys and recorded
keys.
Source key of 12 characters; KEYLEN
The §'Q.~f£~ __!s§'Y is a character string
specified in the KEY FROM option of a WRITE
or LOCATE statement or in the KEY option of
a READ,
REWRITE, or DELETE statement. In
the WRITE statement, its purpose is to
determine whereabouts in the data set a new
record will be written; in the READ, REWRITE, or DELETE statement, its purpose is
to identify the record which is to be read,
rewritten,
or deleted.
The last eight
characters of the source key (or all of it.
if there are less than eight) represent the
region
number
of
the
record.
In
REGIONAL(1), any additional characters in
the source key are ignored.
In REGIONAL(1}, the region number alone
is sufficient to determine the location in
which a record will be placed and to
identify it for retrieval. In REGIONAL(2)
and (3) (as will be explained below), a
further means of identification is needed;
5
8
8
12
r----'T----T----l
IL ____ LI ____ LI ____ JI
Characters 5 through 12 represent the
region number; characters 1 through 8
are used as the recorded key.
Example 3:
Source key of 8 characters; KEYLEN
8
8
r--------,
I
I
l ________ J
Characters 1 through 8 represent the
region number; characters 1 through 8
are also used as the recorded key.
Managing Data
55
Source key of 6 characters; KEYLEN
6
r------,
12
12
REGION L(1) Data Sets
IL ______ JI
Characters 1 through 6 represent the
region number;
characters 1 through 6
are padded on the right with blanks to
make 12 characters, which are then used
as the recorded key.
Source
KEYLEN
key
16
10
3
r--T--------l
IL __ LI ________ JI
of
10
characters;
16
--,
I
__ J
Characters 3 through 10 represent the
region number; characters 1 through 10
are padded on the right with blanks to
make 16 characters, which are then used
as the recorded key.
Source key of 16 characters; KEYLEN
1
6
the KEYTO option can only be guaranteed if
the length of the KEYFROM value is equal to
that specified by KEYLEN.
9
=6
A
REGIONAL(l)
data set consists of
unblocked F-format records without associated recorded keys.
The data set is
divided into regions each of which is large
enough to con~ain just one record,
hence
each region number corresponds to a relative record position within the data set.
The location of a particular record can be
determined by the source key alone.
The
final eight characters of the source key
are the character-string representation of
an unsigned decimal integer not exceeding
16777215, and may contain only the characters 0 through 9 and blank. If more than
eight characters are given in the KEY or
KEYFROM option, only the last eight are
used; otherwise all characters are used.
If
the
KEYTO
option
specifies a
character-string
variable of more than
eight characters, the source key value
returned is padded at the left with blanks;
if it has fewer than eight characters, the
value is truncated on the left without
raising any condition.
16
r------T--r--------,
IL______ LI __ LI __ ------1J
Characters 9 through 16 represent the
region number; characters 1 through 6
are used as the recorded key. Characters 7 and 8 are not used.
From the above illustrations, it can be
seen that it is optional whether the region
number portion of the source key is included in the recorded key. Similarly, the KEY
option may sp'ecify a source key longer than
the recorded key, thereby causing a search
for a key matching only the initial n
characters of the source key, where n is
defined by KEYLEN; this facilitates reading
data
sets created by other processors
(e.g., COBOL, which has a different source
language keying mechanism).
SEQUENTIAL access of REGIONAL data sets
will retrieve records in the order in which
they are physically located in the data
set.
The recorded key will not affect the
sequence, but can be obtained by use of the
KEYTO option.
Equality between the value specified by
the KEYFROM option and that subsequently
assigned to a character string by means of
56
A
REGIONAL(2)
data
set
contains
unblocked F-format records with associated
recorded keys. As in REGIONAL(1), the data
set is divided into regions each of which
will
hold
just
one
record.
Unlike
REGIONAL(1) however, in REGIONAL(2) organization a particular record will not necessarily occupy the relative position specified by the region number in the source
key.
When writing a new record in a data
set opened for DIREcr access. the location
in which the record will be written is
determined as follows. A search is commenced at the beginning of the track containing the region number specified by the
source key.
The record is written in the
first available position on that track or,
if that track is full,
on a subsequent
track. The record maYI therefore, be written either before or after the specified
region number, depending on the availability of space.
The search for a vacant
position can, however, be limited by the
DCB subparameter LIMCT.
(The use of LIMCT
in REGIONAL(2) is described below.) Similarly, when accessing a record
in
a
REGIONAL(2) data set opened for DIRECT
access, the record is located as follows.
REGIONAL(3) Data Sets
Commencing at the beginning of the track
containing the specified region number, a
sequential search is made for a record
whose recorded key matches the source key
(truncated or padded as required). Again,
tne extent of the search can be restricted
by the use of the DCB subparameter LIMCT.
A REGIONAL(3)
data set may
contain
unblocked records of U,F, or V-format, with
associated recorded keys.
The data set is
divided
into
regions,
but
unlike
REGIONAL(1) and (2), in REGIONAL(3)
a
region is a whole track on the directaccess device. The region number in the
source key thus corresponds not to
a
relative record position, but to a relative
track on the device. The number of records
within any region will depend on the record
sizes and the device characteristics.
The DCB subparameter LIMCT limits the
number of regions which are to be sequentially searched.
In
REGIONAL(2),
the
search commences at the beginning of the
track containing the region number specified by the source key, and continues to
the end of the track containing the region
whose number is given by:
region number specified in source key
LIMcr value - 1
When writing a new record in a data set
opened for DIRECT access, the location in
which the record will be written is d~ter
mined as follows.
A search is made for an
available position, commencing at the start
of the track whose relative position is
represented by the region number in the
source key.
The record will be written in
the first available position on that track,
or, if that track is full, on a subsequent
track. The search can, however, be limited
by use of the DCB subparameter LIMCT.
(The
use of LIMCT in REGIONAL(3) is described
below.> Similarly, when accessing a record
in a REGIONAL(3) data set opened for DIRECT
access, the record is located as follows.
Commencing at the beginning of the track
whose relative position is representEj by
the region number in the source key, a
sequential search is made for a r~cord
whose recorded key matches the source key
(truncated or padded as required).
Again,
the extent of the search can be restricted
by use of the DCB sUbparameter LIMCT.
+
Each track of a device holds
ten
records. The final eight characters of
thE~ source key represent the number 17.
LIMCT has the value 15.
The sequential search will commence at
the start of track 2 (since region
number 17 is on this track) and continue through to the end of track 4 (since
region number 31u given by source key
region number + LIMCT value - 1, is on
track 4).
It can be seen from the foregoing that,
in REGIONAL(2) " the nearer a record is to
the beginning of a track, the more quickly
can the record be accessed.
REGIONAL(2) organization does provide a
degree of device independence. Provided
that access to the data set is DIRECT and
that all keys are unique, the programmer
does not need to modify his algorithms in
consideration of the device type.
If,
however, a data set created or updated by
DIRECT access is subsequently read
by
SEQUENTIAL access, then the order in which
the records are read will vary slightly
according to the type of device.
The DCB subparameter LIMCT limits the
number of regions which are to be sequentially
searched.
In REGIONAL(3)~ ~ach
region is a track, hence the value s~eci
fied in LIMCT qUite simply specifies the
number of tracks which are to be searched.
The final eight characters of the source
key are the character-string representation
of an unsigned decimal integer not exceeding 32767, and may contain only the characters 0 through 9 and blank.
If more than
eight characters are given in the KEY or
KEYFROM option, only the last eight are
used as the region number; otherwise all
characters are used.
The final eight characters of the source
key are the character-string representation
of an unsigned decimal integer not exceeding 16777215, and may contain only the
characters 0 through 9 and blank. If more
than eight characters are given in the KEY
or KEYFROM option, only the last eight are
used as the region number; otherwise all
characters are used.
If the
KEYTO
option
specifies
a
character-string variable
of
different
length from that of the recorded key, the
recorded key returned is padded with blanks
at the right or truncated at the right; no
condition is raised.
If
the
KEYTO
option
specifies a
variable of length different from that of the recorded key,
the
recorded key returned is padded with blanks
at the right or truncated at the right: no
condition is raised.
char~cter-string
I
Note~
The EVENT option should be used with
caution when v- or U-format records are
being added to a REGIONAL(3) data set.
Managing Data
57
Dummy Records within RE3IONAL Data Sets
Records within a REGIONAL data set are
either "actual"
(representing valid data>
or "dummy"
(inserted during creation or
when actual records are deleted>.
Dummy
records vary in format according to the
REGIONAL type and, in the case of REGIONAL
(3), according to the record format as
well.
See also the section "Accessing of
REGIONAL Data Sets."
REGIONAL(1) - initial character of record
has the value (8) '1'B; the remainder
of the record is undefined.
REGIONAL(2) - initial character of recorded
key has the value (8)'1'B, the remainder of the key being undefined;
the
initial character of the record is an
internal
representation
of
the
sequence number of the record within a
track,
the remainder of the record
being undefined.
REGIONAL(3) - if F-format records, as for
REGIONAL (2).
If U- or
V-format
records,
the initial character of the
key has the value (S)'1'B, the remainder of the key being undefined.
If
V-format,
the control bytes of the
record are valid, but the remainder is
undefined.
personnel familiar with requirements at a
given installation (see Appendix E).
Also,
use of cataloged data sets will reduce the
amount of configuration knowledge required.
S~ECIFYING
DATA SETS
Data sets in the operating system can be
specified by parameters in the DO statement.
This section describes the use of
such DD statements.
The DO statement provides the
functions:
following
1.
Naming of the data set (DSNAME)
2.
Extent allocation,
i.e.,
device and
space (UNIT, VOLUME. SPACE, LABEL)
3.
Disposition (DISP, SYSOUT)
4.
Data set attributes (DCB)
The functions are summarized in the
following paragraphs.
For full details
refer to the publication IBM __ £Y~~~Ll~Q
Qfera~in~~yste~L_~QQ_fQgifQ!_1~gg~~~·
DATA SET DEFINITION
------------------Whereas the attributes of a file
(which
may be considered to be a "data set usage")
are declared within a PL/I program, the
attributes of ~ts associated data set are
specified by means of the DD statement or
the ENVIRONMENT attribute.
(For the format
of the options available in the ENVIRONMENT
attribute, refer to Appendix Be)
In this
manner a large degree of device independence is achieved.
rhe DO statement permits the specification of object
time
device type,
unit assignment, record format" etc.
Since PL/I itself does not define data
set attributes, there are no default attributes,
witn the exception of PRINT files
which have a default of the V-format,
with
unblocked records of 129 bytes. Information regarding specific data sets is communicated to the Operating System via DD
statements. It is not, however,
necessary
for each programmer to understand
the
details of DD statements: in some instances
the use of cataloged procedures will allow
the programmer to be oblivious of the
particular I/O device configuration. These
cataloged procedures will be prepared by
58
The DSNAME ~arameter allows the programmer to specify the name of a newly defined
data set or to refer to a previously
defined data setu
rhis parameter should De
supplied for all but temporary data sets.
Note: Data set names that begin with the
letters SYS and have a P as the nineteenth
character of the name should not be used.
Data sets with such names are created for
temporary data sets on PCP systems, but not
for temporary data sets on MVT or MFT
systems, and are deleted when the IEHPROGM
utility is used and the SCRATCH utility
control statement is specified with the
VTOC, PURGE, and SYS keywords.
The UNIT parameter allows the programmer
to state the
type
and
quantity
of
input/output devices to be allocated for
the data set. The type of unit is specified by a symbol that refers to a collection of one or more devices.
The VOLUME parameter is used to specify
the identification of the volume on which
the data set resides.
Other information
includes instructions to the system for
volume mounting actions.
The SPACE parameter permits the specification of the type and amount of space
required to accommodate the data set on a
direct-access
device.
This
space is
obtained either from the volume designated
in the VOLUME parameter or from the volume
mounted on one of the devices specified in
the UNIT parameter.
The LABEL parameter specifies the type
and contents of the label or labels associated with the data set.
The disposition (DISP) parameter indicates the current status of the data set
and what is to be done with it when the
step is completed. Parameters are provided
to delete the data set, to pass the data
set to another step within the same job, to
enter the data set name into the catalog,
or to remove the data set name from the
catalog.
DISP must be carefully specified when
the EXCLUSIVE attribute is used.
This
attribute protects records against access
by different tasks in the same program.
provided the references to a data set are
made by means of the same file.
DISP=OLD
ensures that a data set is used by one job
onlYi DISP=SHR allows a data set to be used
by different jobs. If a data set is to be
updated by more than one job, DISP=SHR must
got be specified.
The system output (SYSOUT) parameter is
used to schedule a printing or punching
operation for the data set described by
this DD statement.
The DCB parameter allows the programmer,
at execution time, to complete information
declared for his file at the time of
compilation via a FILE declaration or OPEN
statement.
File Att,ributes._and the DD Statement
The DCB parameter of the DD statement
permits object-time definition of various
data set characteristics.
Whereas
the
other DD statement parameters deal chiefly
with the physical residence of a data set,
or aid in data set identification. the DCB
parameter may specify information required
to process the data records themselves.
Information supplied to the object program
by means of the DCB parameter can only De
"additive" information, i.e., it may not
override information already established
for a data set during compilation.
DCB
subparameters which specify DCB
fields
already completed during compilation (by
means of the file declaration or OPEN
attributes) will be ignored.
DCB sUbparameters which may be specified
for STREAM-oriented I/O are listed in Figure ~8. The DCB subparameters which may be
specified in the PL/I language for this
mode of I/O are:
RECFM
BLKSIZE
LRECL
BUFNO
The first three are specifiable by means
of the record option of the ENVIRONME~T
file declaration attribute (see Appendix
B)i the fourth is specified by means of tne
BUFFERS option. In addition, the LINESI~E
attribute of the OPEN statement for PRINT
files may specify the initial three subparameters to be established by default; see
the section called "PRINT Files."
DCB sUbparameters which may be specified
for RECORD 1/0 include those available for
STREAM I/O.
Additional subparameters are
listed in Figure 19.
Data set information supplied within the
PL/I program may not be overridden by DD
statement parameters, or data set label
information (in the instance of directaccess devices, the DSCB). Accordingly,
files which are to remain open to objecttime definition of data set characteristics
must not specify these
characteristics
within a program.
(It should be noted that
data sets which are defined by a "DD *"
statement are supplied with full DCB subparameters by the Operating System.) Data
control blocks generated by the PL/I "open"
process at object time are of a format
which allows complete device-type independence when applicable. During various executions of a program, a file may be associated with a card reader,
paper tape,
magnetic tape, or a direct-access device.
Managing Data
59
r---------T------------------------------------------T----------------,
Specifies
I PLiI Option
I
I Keyword I
~---------+------------------------------------------+----------------~
I BLKSIZE I Maximum, or fixed, number of bytes per
I ENV (Record)
I
I
I physical record (block)
I LINESIZE
I
,---------+------------------------------------------+----------------~
I LRECL
I Maximum, or fixed, number of bytes per
I ENV (Record)
I
I
I logical record
I LINESIZE
I
r---------+------------------------------------------+----------------~
I RECFM
I Record format and characteristics (usage I ENV (Record)
I
I
I of printer/punch control character)
I LINESIZE I
I
I
I
I
I PRINT
r---------+------------------------------------------+----------------i
I BUFNO
I Number of buffers for physical record
I ENV (BUFFERS) I
I
I transmission
I
I
r---------+-------------------------·-----------------+----------------~
I CODE
I Paper tape: code in which the data was
I
J
I
I punched
I
J
r---------+------------------------------------------+----------------~
I DEN
I Magnetic tape: tape recording density
I
I
.---------+------------------------------------------+----------------1
I TRTCH
I Magnetic tape: tape recording technique I
I
I
I for 7-track tapes
I
I
t---------+------------------------------------------+----------------~
I MODE
I
I Card reader or punch: mode of operation, I
I column binary or EBCDIC
I
I
I
I ( 0, 1, 2, or 3)
I
r---------+------------------------------------------+----------------1
I STACK
I Card reader or punch: stacker selection I
I
t---------t-------------------------------·-----------+----------------i
I PRTSP
I Spacing of printer between each line
I
I
I
t---------t------------------------------------------+----------------i
I OPTCD
I Optional data management services and
I
I
IL_________ I __________________________________________
data set attributes
I ________________ j I
~
Fig~re
18.
~
DCB Subparameters for STREAM 1/0
r---------T-------------------------------·-----------T----------------,
I Applicable
J
I
I
I Keyword I
Specifies
I Organization
I
I REGIONAL
I ( 2) and (3)
I
r---------+------------------------------------------+----------------1
1 KEYLEN
I Number of characters in recorded key
I INDEXED
I
I
I
I
I
J
r---------+------------------------------------------+----------------~
I LIMcr
I Maximum number of records or tracks
I REGIONAL
)
I
I to be searched
I (2) and (3)
I
t---------+------------------------------------------+----------------~
I RKP
I Relative key position within record
I INDEXED
I
r---------+------------------------------------------+ ----------------~
I NTM
I Number of tracks in cylinder index
I INDEXED
I
I
I per master index entry
I
J
r---------+-------------------------------·-----------+----------------i
I CYLOFL I Number of overflow tracks in each
I INDEXED
J
I
I cylinder
I
I
r---------+------------------------------------------+----------------i
I DSOR3
I Creation of INDEXED or
I INDEXED
I
I
I REGIONAL data set
I I
I REGIONAL
I
I ( 1) , (2), and (3) I
t---------+-------------------------------·-----------+----------------~
I NCP
I Number of channel programs allocated
I All
I
LI ________________ JI
IL_________ LI __________________________________________
to a file
Figure 19.
60
Additional DeB Subparameters for RECORD I/O
The format of the DCB subparameters is
given in the following paragraphs. Refer
to Appendix B for the format of the ENVIRONMENT option.
RECORD FORMAT INFORMATION
The notation used in the format descriptions of record format is interpreted as
follows:
Upper case letters and numbers must
coded by the programmer exactly
shown.
be
as
Lower case letters represent variables
for which the programmer must substitute specific information or specific
values.
Items or groups of items within brackets [] are optional.
They may be
omitted at the programmer's discretion.
A logical OR sign
of option.
~
indicates a choice
The
PL/I programmer may
access data sets which consist
the following types of record:
create and
of one of
Fixed-length (F-format) records
Undefined-length (U-format) records
Variable-length (V-format) records
whichever record type is used, data is
transmitted to and from main storage, and
written on external storage in blocks. A
block is considered to be either the data
between two interrecord gaps in the case of
magnetic storage devices such as disks and
magnetic tape, or the number of bytes which
can be transmitted to or from a unit record
device, such as a line printer or card
reader, in one input/output operation.
separate block.
The
interrecord
gap
between blocks delimits undefined-leng~h
records when held on an external s~orage
medium, such as magnetic tape or disk.
Variable-Length Records: A variable-length
(V-format) record consists of a four-byte
control field containing the number of
bytes in the record# including the control
field, followed by bytes containing data.
A variable-length record is transmitted in
a block formed by one or more such records.
The length of the block depends on th~
number and length of consecutive variablelength records which can be accommodated
within the maximum block size specifieo.
The
block itself contains a four-byte
length
field
to determine its actual
length, including the control field.
Variable-length
records can also be
specified
as
~~nned
eVS-format
or
VBS-format) records.
Spanned records are
written over block boundaries in order ~o
enable maximum-length blocks to ce used in
conjun~tion with
variable-length records,
thereby permitting efficient use of external storage. A spanned record is a logical
record which can be divided into segmen~s
which are written on separate consecutive
blocks. Each segment contains a four-byte
control field to indicate the length of the
segment, including the control field, and a
flag byte to designate a segment as th~
first, intermediate, or last segment of a
logical record which spans blocks. If a
complete
logical record does not span
blocks, i.e., it is contained entirely
within one block, it is designated as the
last or only segment of the logical record.
Spanned records are created and retrieved
automatically, and their use in no way
affects the programmer. Data sets containing spanned records must be CONSEcurIVE.
They can be opened as INPUT or OUTPUT
files, but not as UPDATE files.
Fix~d-~eB~_E~2££~~
A
fixed-length
(F-format)
record consists of a predetermined number of bytes, and is transmitted
in a block containing one or more of these
records. The length of a block containing
fixed-length records is an exact multiple
of the record length used.
If unblocked
records are specified,
each record
is
transmitted and stored as a separate block.
Undefined-Lenqth __ Recor~s~
An
undefinedlength (U-format) record simply consists of
a string of bytes containing data.
Each
record is transmitted or stored as
a
Block Size
BLKSIZE=nnnnn: the decimal integer specified must not exceed 32,760, and may
be limited by the device used, such as
a unit record device. Blocks to contain V-format records must exceed the
maximum record length by four bytes,
for control purposes. Blocks to contain VS- or VBS-format records may be
shorter than
the
maximum
record
length.
Managing Data
61
LRECL=nnnnn: the decimal integer specified
must not exceed 32,760 bytes for Fformat records, and 32,756 for Vformat
records.
The
LRECL
subparameter specifies the length of
fixed-length records, and the maximum
length of V-format, VS- and VBS-format
records.
It is not specified for
U-format records for which the maximum
length is 32,760 bytes. If not specified for the v-, VS-, or VBS-format,
or F-format records, the BLKSIZE specified is assumed. For VS-, VBS- or
V-format records, a four-byte control
field must be included in the LRECL
quantity. An extra byte must be added
for all record formats which include a
printer/punch control character. This
includes all PRINT files, which use
ASA printer control characters.
Note that for INDEXED data sets which
contain blocked records, if RKP=O the
value of LRECL must include the number
of bytes required for the recorded
key.
RECFM=
U [T][AIM]
[S]
[B]
F
[B] [S] [T] [A I M]
The record
follows:
[T]
[AI
V
M]
format
is
specified
as
U: Undefined-length records
V: Variable-length records
F: Fixed-length records
The additional subfields are indicated
by the following:
B: Blocked records
S:
S:
62
(F-format records only) Standard: no blocks of a length less
than the specified blocksize,
except possibly the last, are
present in the data set
(V-format records only> Spanned
records: variable-length records
can span maximum-length blocks.
A spanned record is
written on
one or more consecutive blocks.
The length of the spanned record
can exceed the length of the
maximum-length block.
For variable-length
VS-format
records the maximum block size
must
always
be stated. VSformat records that exceed the
maximum
block
size
are
segmented, and the segments are
placed in consecutive blocks.
Each block can contain only one
record or segment of a record.
For example, if a record format
is specified as VS(SO,200),
an
ENV or DeB record that includes
180 bytes of data will appear in
the data set as two blocks of 80
bytes (S control bytes and 72
data bytes) and one block of 44
bytes (8 control bytes and 36
data bytes).
Varying-length
VBS-format
records are similar to VS-format
records except that they are
blocked, that is, each block
contains
as
many
complete
records or segments of recoris
as it can accommodate;
each
block is substantially the same
size, although there can be a
variation of up to four bytes,
since each segment must contain
at least one byte of data. For
example, a block might contain
the last segment of one record,
one or more complete records,
and the first segment of another
record.
T: Track OverflowD Track overflow
is a feature of System/360 operating system which can be incorporated
at system generation
time; it requires the record
overflow feature on the direct
access
storage control unit.
Track Overflow allows a record
to overflow from one track to
another.
It
is
useful in
achieving a greater data packing
efficiency, and allows the size
of a record to exceed the capaci ty of a track.
Note: Track overflow
is
not
available for REGIONAL(3) data
sets with U- or V-format records
or for INDEXED data sets.
A: ASA printer/punch control characters are present within the
records
M: Machine code printer/punch control characters
are
present
within the records
The following figures
various record formats:
illustrate
the
r--------,
If the file is a PRINT file, the initial
byte of the data portion of each logical
record is reserved for an ASA printer
control byte.
1________
Data J1
L
U-Format Record
r--------,
1________
Data J1
L
F-Format Record
r--------T--------,
r--------,
Blocked records are not accepted from
paper tape. Fixed-length records on paper
tape have a fixed number of characters
after translation; the number of characters
before translation is not fixed.
1________
Data 1________
Data J1••• 1
Data J1
L
L________
~
F-Format (Blocked) Record
r--T--T--------,
IC"IC
Data JI
2 1________
L__ J. __
~
Use of the Various Record Formats in
STREA~
I/Q---------------------------------
V-Format Record
r--T--T--------T--T--------,
r--T-------,
IC,,/C
Data LIC
Data J/ ••• IC
Data JI
2 L1________
2 L1_______
2 Ll ________
L
__ __
__
L__
~
V-Format (Blocked) Record
r--T--T----------~
r--T--T------,
I
IL __________ J1
L __I__
1L __ J.I __ L1______
1
.JI
IC~IC2J
Record 1 I
~
r--T--T--------,
1L __
C" 1__
C2 1________
Record 2/J
~
~
Ic~lc2IRecord/
r--T--T--------,
1L __
Cl'I 1__
C2 1________
Record 31J
~
~
VS-Format (Spanned) Records
r--T--T------T--T------,
IC1lC2]RecordlC2lRecordl
1__ 1__ LI ______
1
I __ J.1.2
L
______ .JI
~
~
r--T--T----------------l
Record 2
lIC~IC21
__ __ ________________
J]
~
~
r--T--T------T--T------,
I C!lIC 2 IRecordIC 2 )Record]
2
I __ LI ______
3
lI __ 1__ LI ______
J1
~
~
VBS-Format (Blocked Spanned) Records
The control field C. (four bytes) specifies the total byte count of the block
(including C~);
the field C2 (four bytes)
specifies, for each logical record, the
byte count of the logical record (including
C2 ).
In the figure depicting
spanned
(VS-format)
records, the field C2 contains
the number of bytes including C2 , in the
segment of a spanned record that is written
on a particular block.
Field C2 also
contains a flag to indicate the relative
position of any segment of a spanned record
within a logical record which is written on
one or more blocks. It designates a segment as the first, intermediate, last, or
only segment of a record. The flag is set
and used automatically when this type of
record format is specified.
The
three available record formats,
undefined,
variable-length,
and iixe3length, must each be considered for its
application to the features of STREAM I/O.
The following points should be consijercd
when making a choice for OUTPUT files.
Variable-L~~~~ Rec££~~~
The
variab12length record format is the most versatile
of the three available formats.
In order
to prevent the output of possible 'noise'
records, i.e., records of less than the
System/360 operating system standardizei
minimum length, the records for output
files are padded to contain at least ten
data characters. With the addition of tne
eight bytes required for
the
control
fields, this gives a total of 18 data
characters. Accordingly,
LINESIZE should
not specify a value less than 10 (9 for
PRINT files, because a control character is
required) •
Fixed-Le~RecorQ~~
For output files-as the printing options/format items have
the ability to truncate a record (line),
each record is padded with blanks when the
following record is prepared for output.
Blocked output is not supported on unit
record devices, where each logical record
begins on a new card or line. For example,
specification
of
recordsize=20,
blocksize=80 for a card punch will result
in only the first 20 columns of each card
being punched.
If these cards are then
read in, the stream will contain 60 blank
characters between each of the original
records.
Also,
the length of logical records
should not exceed the physical size of each
unit record, as the excess characters will
be truncated without notification.
Managing Data
63
Use of the Various Record Formats in RECORD
I/O
Data transmitted by a single RECORD I/O
statement is always contained within a
single record, the size of which should be
large enough to hold the data aggregate
being transmitted, yet small enough to
conform
to device restrictions on the
length of records which may be transmitted.
Determination of the record length required
for the various formats of data aggregates
may require the information available in
the section "Structure Mapping" in Appendix
C of this publication; similar calculations
are required for determination of space
required for array data aggregates.
It should be noted that when a data
aggregate is moved into a record buffer, or
transmitted immediately from the area in
which the data aggregate is stored, no
"padding bytes" are added before or after
those bytes defined by the aggregate (or
string). The current length of a variablebit string will be such as to terminate the
s~ring on a byte boundary.
Another
consideration
affecting the
transmission of data aggregates is the fact
that the implementation includes locate
mode I/O. This allows data to be processed
in the input/output buffers. Therefore a
programmer who is creating files to be read
using READ statements with the SET option
should bear in mind that:
1.
2.
The first byte in a block read from a
file will be aligned in the buffer on
a doubleword boundary.
If any data within any record in the
block has an alignment requirement,
this requirement must be preserved in
the buffer when the record is read in.
For all record formats, this first byte
is,
with one exception, the first byte of
data in the first record of the block. The
exception is for FB-format records in an
INDEXED file where RKP=O; here the first
byte of the key of the first record is
aligned on the doubleword boundary. The
following information, if present, precedes
this double word boundary:
1.
Keys for F-format INDEXED files or for
REGIONAL files.
2.
Control fields for
records.
V-
and
VB-format
The user must be aware that, for the
subsequent records in the buffer. the presence of keys and control fields will
affect the alignment of the data elements
in these records.
64
There are several constraints regard~ng
record format in RECORD I/O which depend
upon the data set organization and the
manner in which it is accessed.
CONSECUTIVE Records:
V-, VB-, VS,- and
VBS-format data sets may not be read BACKWARDS.
INDEXED Records:
Only
records are available.
F-
REGIONAL(1) and (2) Records:
records are available.
and
FB-format
Only F-format
REGION L(3) Records:
Record formats U,F,
and V-are available;-i.e., records cannot
be blocked.
Additionally~
there
are
various
overheads which apply to the use of different
formats within different data s~t
organizations. The choice between BUFFERED
and UNBUFFERED for SEQUENTIAL files may
depend upon the time and space overheads
outlined, as may the choice between tne
record formats U and V for REGIONAL(3) data
sets.
In the following details, the term
"hidden buffers" refers to work buffers
allocated by the object program library to
provide special areas for the actual transmission of records to and from the data
set,
even though the file is declarea
UNBUFFERED or DIRECT.
UNBUFFERED access of CONSECUTIVE data
sets employs hidden buffers if V-format
records are used, in order to handle tne
V-format control bytes.
An INDEXED data set always requires hiaden buffers in order to handle a special
10 byte control field.
A REGIONAL data set accessed sequentially, and declared KEYED, requires hidden
buffers (except for REGIONAL(1» to handle both the key and the record,
which
must be transmitted to and from contiguous storage areas.
Use of Spanned Records
The blocksize (BLKSIZE) used for spanned
records can be selected independently of
the record lengths likely to be encountered.
It should be chosen with regard to
attaining efficient use of external storage
combined
with
efficient
use
of
processor-I/O overlap.
For instance, the
block size seleGted for use on a 2311 disk
store should be the correct part of one
track, to ensure that the entire track is
used and that efficient processing
is
achieved.
Chained Scheduling
When READ SET is used with spanned
records, each record is built up from its
segments in an additional area (buffer)
supplied by the PLiI library, and the
pointer is set to address this area; the
record is not processed in the data management buffer.
Similarly, with LOCATE, a
record for output is built up in a library
area before being passed to data management
for segmentation and transmission. Consequently, the advantage gained by using
locate mode is lessened if the records are
spanned ..
OPTCD=C
Specifies chained scheduling, which
improves input/output performance by
reducing the time required to transmit
records to and from external devices.
If this option is specified with QSAM,
it is recommended that at least three
buffers are specified for the file:
with BSAM, the number of channel programs should be at least three.
If BSAM or QSAM are used, then chained
scheduling will not be used for INPUT or
UPDATE with U-format records.
BUFNO=n; the decimal constant must be less
than 256.
If a file is declared BUFFERED,
but
the number of buffers is not specified
or is specified as zero, the number is
assumed to be 2.
Performance
is
not
necessarily
improved by specifying a large number
of buffers.
Generally, the use of
more than two gives little improvement.
In some circumstances, however,
more may be required;
for example,
chained scheduling requires at least
three.
CODE=IIFIBICIAITIN. where the codes
fy:
speci-
I: IBM BCD perforated tape
and
transmission code (8 tracks)
F: Friden (8 tracks)
B: Burroughs (7 tracks)
C: NCR (8 tracks)
A: ASCII (8 tracks)
T: Teletype (5 tracks)
N: No conversion (F-format recoras
only>
If no code is specified, I is assumed.
NCP=n: the decimal constant must not exceed
99.
Specifies the number of channel programs allocated to the file when it is
opened.
The number of incomplete
input/output operations may not exceed
the number of channel programs.
This
option is available only for DIRECT
access to INDEXED data sets or for
UNBUFFERED SEQUENTIAL access to CONSECUTIVE or REGIONAL data sets. The
default value assumed if the option is
not specified is 1.
An attempt to exceed the appropriate
number of
incomplete
input/output
operations will have one
of
two
results.
For UNBUFFERED SEQUENTIAL
access to CONSECUTIVE or REGIONAL data
sets, the ERROR condition will be
raised.
For DIRECT access to
an
INDEXED data set, the operations, will
be queued until a channel program
becomes available.
DEN=011121 3
r-------T-------------------,
I
I Bytes per Inch
I
I DEN ~---------T---------~
1 Value I 7-track I 9-track I
~-------+---------+---------~
I
0
I
200
I
I
I
1
I
556
I
I
I
2
I
800
I
800
I
IL _______
3
1600
LI _________ LI _________
JI
The density assumed, if none is specified, is:
7-track
9-track (one density>
9-track (dual density>
200
800
1600
Managing Data
65
Conversion
(Magnet!£-1~e
after printing each line; a value of 3
will cause 2 blank lines to appear
between each printed line.
- 7-track)
TRTCH=CIEITIET
C: Data conversion feature is used
E: Even parity
T: Translation from BCD
required
ET:
(Both E and
r,
to
This
parameter is ignored if the
record format uses ASA control characters.
EBCDIC
above)
This subparameter is required only for
7-track magnetic tape data sets.
Use of a tape recording technique
other than TRTCH=C restricts the character set in which data can be written
if it is subsequently to be reread and
result in the same bit-configuration
in storage.
In PL/I terms, for STREAM and RECORD
iqput/output of character strings or
pictured data,
acceptable modes are
TRTCH=CIT (with TRTCH=ET acceptable if
characters
are
restricted to the
48-character
set).
For
RECORD
input/output
of
arithmetic
data,
TRTCH=C must be used.
OPTCD=U
If a printer has the universal character set feature~ the TRANSMIT condition is normally raised when an invalid character is passed to the printer.
Specifying OPTCD=U suppresses the condition.
Either way, a blank character
is printed.
op~rCD=W
W: Perform write validity
check
when writing on a direct-access
device.
MODE=CIE
C: Column binary card images
E: EBCDIC card code
op~rCD=L
STACK=112
Specifies
that
records within an
INDEXED data set are to be recogniz~d
as deleted if the initial charact~r
(byte) of the record has the valu~
(8)'1'B.
1: All cards read or punched are to
be fed into stacker po~ket 1
2: All cards read or punched are to
be fed into stacker pocket 2.
Stacker pocket 1 is assumed if neither
is specified.
PRTSP=OI11213
Specifies spacing of 0 through 3 lines
66
KEYLEN=n
Specifies the number of characters to
be
written, or retrieved,
a~
the
recorded key of records in data sets
of the INDEXED or REGIONAL(2) and (3)
organizations. Note that this value
is fixed during data set creation, and
that all records within a data set
will have keys of the same length~ the
maximum length being 255 characters.
LIMCT=n
Limits
the
extent of the search
through a REGIONAL(2) or (3) data set
beyond the region number specified in
the source key.
If LIMCT is not
specified, the search for a particular
record, or for space to add a new
record, will continue from the specified region to the end of the data
set.
In
RE3IONAL(2)
LIMCT
specifies
records,
but the search will continue
to the end of the track containing the
record whose region number is given
by:
source key region no.
+ LIMCT -
Specifies the number of tracks within
a cylinder index which are to be
filled before a master index entry is
to be created.
It also specifies the
number of tracks within a master index
(of which there may be three levels),
which.
when exceeded,
will cause an
entry in the next higher master index
level.
Such a facility is advantageous for large data sets, in order to
avoid
extensive
serial
searches
through large low-level indexes.
The
maximum value for n is 99.
Note that
the OPTCD subparameter
list
must
include the "M" option in order to
create master indexes.
1
Independent Overflow Area
In
REGIONAL(3).
LIMCT
specifies
tracks: the number of tracks searched
will be the number specified by LIMCT.
OPTCD=I
Specifies that an independent overflow
area is to be used and must be defined
in a separate DD statement.
RKP=n
Keys for INDEXED records may be separate from or embedded in the records.
RKP=n specifies the position (n) of
the first byte of the key relative to
the beginning of the record (byte O).
RKP=O implies that the key is not
embedded.
Note that n is always 1
less than the byte number of the first
character of the key; that is, if
RKP=1 then the first character of the
key is in byte 2.
Embedded keys obviate the need for the
KEYTO option for sequential input, but
not the KEYFROM option for output (the
data specified by the KEYFROM option
may
be
the embedded key itself,
however).
Unblocked records always
have a separate key (recorded key)
attached to the record.
even when
there is already an embedded key; such
records will therefore require double
the space for key information.
The
maximum value for n is {recordsize keylength}.
Cylinder Overflow Area
OPTCD=Y
CYLOFL=n
Specifies number of tracks within each
cylinder to be reserved. during creation,
for overflow records.
If an
independent overflow area is requested
(via another DD statement), a cylinder
overflow area need not be specified.
The maximum number of such tracks is
99, but the limit varies with the
particular device:
there must be at
least one track on a given cylinder to
hold the track index, and one to hold
prime data.
DSORG=IS\DA
IS:
specifies that an INDEXED data
set is being created
OPTCD=M
NTM=n
DA: specifies that a REGIONAL
set is being created
Managing Data
data
67
be accommodated within the existing record
and block size. For example, a PRINT file
declared with V-format records with
a
maximum length of 60 bytes, a block size of
69 bytes, and opened with a LINESIZE of 60
bytes may not be reopened with a LINESIZE
of 100 bytes, as this will raise the
UNDEFINEDFILE condition.
To avoid this,
declare the file explicitly with a maximum
record length and block size large enough
to accommodate the increased LINESIZE. The
block size should exceed the LINESIZE by at
least 9 bytes. If the record length is not
declared explicitly, it is set to the
length specified in LINESIZE when the file
is first opened.
Declaration of the PRINT attribute for a
file causes the initial data byte within
each record to be reserved for an ASA
printer control character. These control
characters are set by the PAGE, SKIP, or
LINE options and format items.
Unless
overridden
by these options or format
items, the printer control character is set
for single spacing. rhe following control
characters are used:
Page eject
Single space
Double space
Triple space
Suppress space
1
b
0'
+
All these characters cause the spacing
action to occur before printing the g~ven
record (it should be noted that a record
is,
in System/360 operating system, a
line).
The ASA control characters for
'skip to channel n' are not employed. It
is possible to use them, however, by specifying in the DD statement that the ASA
character is present, but nQ~ declaring the
file to be a PRINr file and not specifying
record format information in the ENVIRONMENT attribute: in this case, the initial
byte of each record is available to the
program.
Also,
by the above means, it is
possible to use the initial byte for printer control if the RECFM subparameter specifies the use of machine carriage control
characters oy the letter M.
While a PRINT file is always an output
file, it is possible to read such a file,
but not as a PRINT file. This is effected
simply by-not declaring the file as PRINT,
and opening it for INPUT: the initial data
byte of each record in the data set will
then be available for inspection.
PRINT files,
since they have a default
LINESIZE of 120 characters, need not have
any record information specified for them.
The complete default record information
will become:
I
When the SYSPRINT file is opened, the
PL/I program automatically positions the
file output at the start of a new physical
paqe.. A blank page will appear if the
first PUT statement using the file:
1.
Has the PAGE option, or
2.
Is a PUT EDIT with PAGE as the first
format item
If a SIGNAL ENDPAGE (filename) statement
is present for which there is no corresponding ON ENDPAGE (filename) on-unit, the
statement is ignored, and the standard
system action to start a new page is
suppressed.
This prevents the standard
system action from attempting to start a
new page on a file which may not have been
opE~ned.
RECORD I/O is not applicable to PRINT
files,
but the use of printer spacing
characters (ASA or machine code, the latter
being device
dependent)
is
available
through the DD statement by means of the
DCB subparameter of RECFM, or by using one
of the options CTLASA/CTL360 in the ENVIRONt'.lENT
attribute.
The
user is then
responsible for ensuring that the initial
character of the record is a valid printer
control character, which may be a 'skip to
channel n'.
The ASA channel skip codes are:
BLKSIZE
LRECL
RECFM
=
129
125
VA
Note: rhe LINESIZE for a PRINT file can be
varied during execution by closing the file
and reopening it with a different LINESIZE
option.
If this action is taken on a file
which is being output to any medium other
than a printer, (the use of MVT and MFT-II
may cause a file intended for direct printing to be held temporarily on a directaccess device) the record and block size
established for the file originally cannot
be changed, and any change to LINESIZE must
68
Channel
Code
1 through 9
10 through 12
1 through 9
A through C
Also, punch stacker
following characters:
punch pocket 1
punch pocket 2
select
uses
the
V
W
Should any other code be employed, it will
be interpreted as either single-space or
pocket 1, depending upon the device in use.
Byte 0
3
2
r---------------------~---------------------,
Word 1 I
PAGESIZE
I
LINESIZE
I
~----------T----------t----------T----------~
2 I (Reserved) I (Reserved)ITab count I Tab.
I
r----------t----------t----------t----------i
3 I Tab 2
I Tab 3
I Tab. • • I Tab. •• I
r----------t----------t----------t----------~
I
I
I
I
I
I
I
I
I
I
r----------t----------~----------~----------J
m IL __________
Tab n
I
J
Figure 20.
Format of the Tab Control Table
DATA and LIST directed output to PRINT
files will automatically align data on
preset tab positions.
The positions are
determined from the tab control table.
which is the PL/I Library module IHETAB.
This table can be altered, as described
below,
and either replaced within the
library permanently or inserted in the
linkage editor input stream for use in a
single program only. the format of the tab
control table is shown in Figure 20.
PAGESIZE:
LINESIZE:
Half-word binary
the
defining
PAGESIZE
integer
default
Half-word binary
defining
the
LINESIZE
integer
default
are
begun at the tab
position specified, or,
in the case of the first
data field of a line, at
the left margin default
(position 1).
In its unaltered
up as follows:
form~
the table is
set
r---------T---------,
I
60
I
120
1
r----T----t---~----~
I
0 I
0 I
5 I 25 1
.----t----t----t----i
IL____
49 I ____
73 I ____
97 1121
____ 1
~
~
~
J
Reserved Bytes: Reserved
for left and
right margin fac~lities
Tab count:
specifies number of tab
position entries within
table (maximum of 255).
If the tab
count = 0,
then the tab positions
are not used; each data
item is put out according
to the STREAM file output
mode used.
Tab 1l ··Tab n :
Tab positions within the
print line: initial position is numbered 1, greatest position is numbered
255. The value of each
tab should be
greater
than that of the
tab
preceding
it
in
the
table; if not, it
is
ignored
during
table
scanning, which proceeds
through the table from
rab~
to Tab n for each
data field. Data fields
To change the tab settings# a user must
change the values in the assembler language
control section listed below. To become an
installation standard, this must be linkedited into the PL/I library (data set
SYS1.PL1LIB) to replace module IHErABS.
For use in one program only, the object
deck is link-edited with that program.
TAB
IHETAB
IHETABS
PAGESIZE
LINESIZE
NOTABS
TAB1
TAB2
'rAB3
TAB4
'rAB5
ENDTABS
TITLE
CSECT
ENTRY
DS
DC
DC
DC
DC
DC
DC
DC
DC
DC
EQU
END
'IHETAB'
IHETABS
OD
AL2(60)
AL2(120)
H'O'
AL1(ENDTABS-*-1)
AL1(25)
AL1(49)
AL1(73)
AL 1( 97)
AL1(121)
*
Managing Data
69
CREATING AND
ACCESSING~~TA_SETS
The facilities available for initially
creating data sets are outlined in the
following paragraphs, together with details
for the subsequent usage of created data
sets.
It should be noted that creation of
a data set is indicated by opening a file
for OUTPUT, while subsequent access is
indicated by either INPUT or UPDATE.
There are no special considerations with
regard to the data set specification beyond
those
already
indicated
under
nFile
Attributes and the DD statement."
Accessing of STREAM Data Sets
After a STREAM data set is created, it
may, with one exception, be opened only for
INPUT.
The ~xception is that it may be
opened
for OUTPUT using the parameter
DISP=MOD, in which case the new records are
added at the end of the existing records in
the data set. In any other circumstances,
opening a STREAM data set for OUTPUT will
result in the data set being overwritten.
When an I/O statement is executed with
the
EVENT option, input/output of the
record is initiated but is not completed
before control is returned to the user's
problem program. The user can take advantage of the time taken for the I/O operation by incorporating statements whose execution is independent of the I/O operation.
When, at some later stage, it is necessary
to ensure tnat the I/O operation is complete, the WAIT statement is used.
Event Variable: The Event Variable, when
used--In--con]unction with a RECORD I/O
statement, can be in either an active or an
inactive state. It becomes active when an
I/O statement with which it is associated
is executed. It remains active until any
I/O conditions associated with the I/O
operation have been raised or until the I/O
operation has been completed (either normally or abnormally). The Event Variable
also becomes inactive after a GO TO out of
an ON-unit entered as a result of a condition being raised. An Event Variatle which
is active must not be used again in any I/O
statement, a CALL or assignment statement,
or in the COMPLETION pseudovariable, until
it has become inactive.
Ra!~igg_£2g~!~!2n~~
All I/O conditions are
raised at the time of execution of the WAIT
statement. The UNDEFINEDFILE condition is
raised in the normal way when an implicit
OPEN error occurs.
Any statement errors
that occur cause the I/O operation to be
terminated and an ERROR condition raised;
in this case, the ERROR condition is raised
when the I/O statement is executed, and the
Event Variable is unchanged.
CONSECUTIVE
creation
and
acceSSing
of RECORDoriented data sets varies according to the
three data set organizations available.
Details are given below for each of the
three types: CONSECUTIVE,
INDEXED,
and
REGIONAL.
There are no special considerations with
regard to the data set specification beyond
those already indicated under "File Attributes and the DD Statement."
Note that
LOCATE is only valid for BUFFERED files.
Accessin9-of CONSECUTIVE Data Sets
The EVENT option gives the user the
ability to overlap input/output operations
with internal processing. This option may
be used with statements for all RECORD
files except:
1.
SEQUENTIAL BUFFERED
restriction)
2.
SEQUENTIAL
INDEXED
«F)
implementation restriction).
70
(PLII
language
compiler
After a CONSECUTIVE data set is created,
it may, with one exception, be opened only
for INPUT or UPDATE. The exception is that
it may be opened for OUTPUT using the
parameter DISP=MOD, in which case the new
records are added at the end of the existing records in the data set. In any other
circumstances, opening a CONSECUTIVE data
set for OUTPUT will result in the data set
being overwritten. Reading of such a data
set may be either forwards or backwards if
it resides on tape; to read backwards,
the
file must be opened with the BACKWARDS
attribute. If a file is first read (or
written) forwards, and then read backwards,
the LEAVE option in the ENVIRONMENT attribute should be specified, to prevent the
normal rewind at close time, or when volume
switching occurs on a multivolume data set.
~~1~£em~~~_2f-gec2EQ~l
When a CONSECUTIVE
data set is opened for SEQUENTIAL UPDATE,
the only I/O' statements which may be used,
apart from OPEN and CLOSE, are READ and
REWRITE.
READ· SET and REWRITE without
options can only be used for BUFFERED
files.
h
REWRITE statement may not be
issued until' 'a READ statement has been
issued; and a REWRITE statement will always
update the last record read.
It is not
permissible'~o have intervening READ statements between a READ and a REWRITE referring to the same record in the ~ata set.
For example:
READ FILE(F) INTO(A);
5
9
READ FILE(f) INTO(B);
REWRITE FILE(F) FROM(C);
In the above example, statement number (9)
updates the record which was read at statement number (5). The record which was read
at statement number (1) can never be updated after statement number (5) has been
executed.
consider also the following:
READ FILE(F) INTO(A) EVENT(E1);
updating
records
READ •••• SET.
obtained
by
of
INDEXED
£f~~~!on
of INDEXED Data Sets
Special DD statement requirements are as
follows:
One, two~ or three DD statements are
required.
The number depends on the
sizes and relative positions of the
three parts of the INDEXED data set,
namely the prime data area, the overflow area, and the index area. The
SPACE and DSNAME fields of the CD caru
have special formats for INDEXED data
sets.
The following DCB subpararneters
specified:
mu~~
be
KEYLEN=n
DSORG=IS
The following DCB subparameters may
specified:
be
RKP=n
OPTCD=LIMIYII (or any combination)
NTM=n
CYLOFL=n
Space for the data set must ce allocated in cylinders, unless the absolute
track (ABSTR) technique is used.
If
ABSTR is used, the number of tracks
must be equivalent to an integral number of cylinders, and the first track
used must be the first track on a
cylinder which is not the first cylinder on a volume.
Programming considerations are
lows:
5
means
as
fol-
READ FILE(F) INTO(B) EVENT(E2);
For blocked INDEXED data sets, the DCB
subparameters LRECL and BLKSIZE must be
sp~cified as follows:
9
10
WAIT (E1);
REWRITE FILE(F) FROM(A);
Statement number (10) would cause the ERROR
condition to be raised, since between the
REWRITE statement and its corresponding
READ statement (1), there is an intervening
READ statement (5).
When blocked records are used with UPDATE
files, it must be remembered that if one
record in a block is rewritten, then all
the records in that block are rewritten.
The user must take this into account when
Without embedded key (i.e., RKP=O),
LRECL
size of data area + size of
key
With embedded key (i.e.,
LRECL = size of data area
RKP*O),
In both cases,
blOCking factor.
LRECL x
BLKSIZE
Creation of an INDEXED data set is only
available
in the SEQUENTIAL OUTPUT
mode. The EVENT option is not supportManaging Data
71
ed for SEQUENTIAL access to INDEXED
.data sets.
The LOCATE statement is
only valid for BUFFERED files.
When creating INDEXED data sets, the
values of the keys presented must be in
ascending collating sequence
order;
i.e., the binary value of each successive key must be greater by at least 1
than that of the previously presented
key.
Therefore, duplicate keys cannot
be added to the data set.
Data set specifications made during
creation may not be altered during
subsequent processing of the data set;
e.g. KEYLEN is fixed during creation.
Also prov1s1on for overflow
areas,
whether cylinder or independent, must
be made when the data set is created.
If the prime data area is not filled
during creation, then, with one exception, the unused area is not usable for
overflow records,
nor for any records
subsequently
added
during
direct
access.
The exception is that the
unfilled portion of the last track used
may be filled if required.
It is
possible to reserve space for later use
within the prime 1ata area by writing
"dummy" records during creation: provided that the initial byte of the
record has the value (8) 11'B, and that
the option OPTCD=L has been specified,
these dummy records can subsequently be
replaced by actual records with the
same key.
Refer to the publication 11M
System/360
OpeEating_§y~te~L-~QQ_£QQ~E2l Language, and
lBM __ §y~te~Ll£Q __ QE~E~~Q~§ystem, Job Con~EQ!_~an~~~g~_fh~rt~,
for more detailed
discussion of the above considerations.
After an INDEXED data set is created, it
may be reopened for INPUT or UPDATE, for
either SEQUENTIAL or DIRECT access.
If
opened for DIRECT access, records may then
be added and deleted. It should be noted
that once created~ an INDEXED data set may
not be opened for OUTPUT to add further
records; it must be opened for UPDATE.
The user is cautioned that only one
DIRECT UPDATE file that adds records to an
INDEXED data set should be open at anyone
time.
If two files are simultaneously open
for SEQUENTIAL and DIRECT processing of the
same INDEXED data set, then the following
records might not be accessed by
the
SEQUENTIAL file:
1.
72
Records
set.
added
to the end of the data
2.
Records written directly in the
flow area of the data set.
3.
Records written on the overflow area
when forced out of the prime data area
by a record being added to this data
area.
over-
INDEXED data sets accessed
in
the
SEQUENTIAL fashion may be opened for either
INPUT or UPDATE, once created. sequential
access is in the order defined by the
values of the recorded key, i.e., ascending
collating sequence order.
Records
are
retrieved in this order irrespective of the
sequence in which they were added to the
data set. Those records which have been
deleted are not retrieved, and may be
overwritten or lost when other records are
added to the data set.
It is possible to use the KEY option on
READ statements to cause repositioning, in
either a forward or backward direction,
among
the
records
being sequentially
accessed either for INPUT or UPDATE.
This
facility is available only if the KEYED
attribute is specified. Repositioning may
be either to a specified record or, if
GENKEY has been specified in the ENVIRONMENT option list, to the first non-dummy
record of a particular key class.
In
either case a record is retrieved followed
by the next higher keyed record if the
subsequent READ does not have a KEY option.
If the specified KEY is not found in the
data set. the KEY condition is raised.
A
subsequent READ without the KEY option will
retrieve the first record in the data set.
The EVENT option is not supported for
SEQUENTIAL access to INDEXED data sets.
READ SET and REWRITE without the FROM
option are only valid for BUFFERED files.
When opened for SEQUENTIAL UPDATE, only
the statements READ and REWRITE (other than
OPEN and CLOSE) may apply to the file.
The
order of operation must be READ then REWRITE~
but not every record read need be
rewritten.
When blocked records are used
with UPDATE files,
it must be remembered
that if one record in a block is rewritten,
then all the records in that block are
rewritten.
The user must take this into
account when updating records obtained by
means of READ •••• SET. Records may not be
added to the data set when in this mode,
but they may be deleted simply by setting
the initial character of the record to the
delete-code (i.e. a character of the value
(8)ll I B)
and then rewriting it. This can
also be done by using the DELETE statement
which marks as deleted the last record
read. Records which are marked "deleted"
are not made available during sequential
input.
If blocked records are to be deleted,
RKP must be greater than O.
This is
necessary because a deleted record is indicated by (S)'1'B in the first byte and, for
blocked records, this byte is part of the
recorded key; hence if RKP=O, the access of
subsequent records in the block may be
impossible.
After several usages of an INDEXED data
set in which records have been added or
deleted, it may become desirable to copy
the data set from one volume to another in
order to purge the data set of records
marked deleted, but still physically present, and to collect records from overflow
areas into the prime data areas. Such
reorganization will allow more efficient
future access to the data set.
If blocked records are to be deleted,
RKP must be specified as greater than zero.
Otherwise, owing to the technique by which
records are marked as deleted -- ty setting
the initial byte of the record, which for
blocked records includes the recorded key.
to the value (S}"'B -- the locating of
subsequent records in the data set may be
impossible.
__2K--E~£ords~ The specified
record is overwritten ty the replacement
record. Records may be replaced without
having been read, unless the data set
contains blocked records, in which case the
sequence must be READ then REWRITE. In the
case of blocked records, a WRITE, DELETE,
or READ statement may not be issued while a
previous READ statement is still outstanding; that is, before its corresponding
REWRITE statement has been issued. The
EXCLUSIVE attribute should be specified to
synchronize the READ-REWRITE cycle
and
WRITE statements.
~E1~~~~n~
REGIONAL
INDEXED data sets accessed in the DIRECT
fashion may be opened for INPUT or UPDATE,
once created. A DIRECT UPDATE file may
have records added, deleted, or replaced,
as well as retrieved.
The three types of
organization are treated
following paragraphsa
REGIONAL data set
together in the
Creation of REGIONAL Data Sets
Retrieval
of
Records:
Records
"deleted"-are-no~made-available.
marked
:ddition of Records:
If the key is unique,
the-record-isadded-to the data set, either
in the prime area 1 or absent).
REGIONAL(3):
If P-format records, as for
Consider also the following:
READ PILE(P) INTO(A) EVENT(E1);
5
9
10
READ FILE(P) INTO(B) EVENT(E2);
WAIT. (E1);
REWRITE FILE(F) FROM(A)i
Statement number (10) would cause the ERROR
condition to be raised, since between the
REWRITE statement and its corresponding
READ statement (1), there is an intervening
READ statement (5).
Managing Data
75
REGIONAL(1):
REGIONAL(2). If U- or Vformat records, records are
added to available space on
specified
track
(or
subsequent
tracks,
if
extended-search
has been
requested, i.e., LIMCT> 1
or absent).
MOVE MODE
The specified record
is
overwritten with a dummy
record; the space may be
reused.
OU,tput: Data is moved from the work area to
a file, possibly via a buffer.
REGIONAL (2) :
The specified record
is
overwritten with a dummy
record, the key being rewritten as a dummy key: the
space may be reused.
REGIONAL(3):
If F-format records, as for
REGIONAL(2).
If U- or Vformat records, the record
is overwritten with a dummy
record" the key being rewritten as a dummy key: the
space may rr2t be reused.
REGIONAL(1):
The
specified
whether a dummy
actual
record,
written.
REGIONAL(2):
The specified record is rewritten; a record with the
specified key must exist.
RE3IONAL( 3) :
As for REGIONAL(2), for all
record formats ..
record,
or
an
is
re-
If a REGIONAL file has the EXCLUSIVE attribute, then, in order to lock a particular
record, different tasks must use the same
region number to refer to the record.
Characteristics
Data is moved (possibly via
a
buffer) from a file to a work area,
where it is processed. (The work area is
the £~coE3-yariable.)
In~~:
Move mode may be simpler to use than
locate mode, as there are no buffer alignment problems.
In cases where there are
numerous references to the contents of a
record, it can also be faster, as it does
not have the indirect addressing overhead
of locate mode.
The basic statements used in move mode are:
READ
FILE
variable) ;
WRITE
FILE
variable) ;
REWRITE FILE
variable) ;
(filename)
INTO
(record
(filename)
FROM
(record
(filename)
FROM
(record
The full set of RECORD-oriented I/O file
attributes is permitted.
LOCATE MODE
InEut: Data is moved from a file to an
input buffer, where it is processed.
In RECORD I/O, the user has the choice
of processing a record in a work area or in
a buffer.
This choice is exercised by
selecting one of two processing modes: moyg
mode or locate mode. There are advantages
in processing-an-entire file with one mode,
but it is permitted to use a combination of
both modes in the same file.
76
Ou!put: The data record is constructed by
the user in an output buffer.
The
buffer is then transmitted to a file.
The locate mode input statement sets the
address of the record (in the buffer) in a
Eointer variable. The record can then be
identified for processing by using this
pointer in conjunction with a Q~~g_-y~~~
ble that defines the structure of the
record. As many based variables as are
required can be declared for a file; the
record can be associated with any of them.
READ
FILE
(filename)
SET (pointer
variable) ;
LOCATE based variable FILE (filename)
[SET (pointer variable)i]
REWRITE FILE (filename);
can be used to read self~
These are records where
information in one part of the record is
used to indicate the structure of the rest
of the record. This information could be,
for example, a count of the number of
repetitions of a subfield, or a
code
identifying which one of a class of structures should be used to interpret the
record.
Locate
mode
~efini!,.9:~~2rds.
Locate mode should also provide faster
execution, as there is no need to move data
from a buffer to a work area, and may have
a smaller storage requir~ment, because no
storage is needed for separate work areas.
Whenever a statement that causes data
transmission to or from a file is executed.
any logical record accessed previously by a
locate mode statement is no longer available for processing.
Locate mode can only be used with SEQUENTIAL BUFFERED files. The KEYED and ENVIRONMENT attributes may be specified; the
other file attributes permitted depend on
the statement used:
Statement
READ-'(with SET)
LOCATE
REWRITE (without FROM)
File Attribute
OOUT/UPCATEOUTPUT
UPDATE
If any of these attributes is not explicitly or implicitly declared, or if any other
attribute is present, the ERROR condition
is raised.
The basic
are:
statements
used in locate mode
Managing Data
77
To operate successfully, the PLiI (F)
Compiler and its associated load modules
must have the required amount of main
storage and input/output devices, as specified in the following paragraphso
System/360 operating system operates in
a device-independent environment.
In particular, the (P) Compiler may operate with
different combinations of devices. However, certain restrictions should be noted.
The PL/I (F) Compiler requires at least
a System/360 Model 30 with a minimum of
64K bytes of storage. At least 45,056
(44K) bytes should be allocated in the
SIZE option.
If additional storage is
available and allocated, the compiler
will in general run more efficiently
and provide a faster compilation.
At least one direct access device must
be used for residence of the operating
system, and for the use of the SYSUT1
data set. The same volume may be used
for both purposes. The use of certain
source program and operating system
features requires a storage minimum
greater than that given above.
For
example, PL/I tasking uses the MVT
system, which requires at least 256K
bytes of storage.
Instruction Sets
---------------The standard, decimal, and floatingpoint instruction sets are required by the
compiler and object programs, irrespective
of declared data attributes.
For flexibility in character sets and
graphic representation, the following types
of chains, trains, or type bars are available for use with output printers.
48-character set
BCD
60-character set
HN
HN
PN or QN
48-character set
BCD
60-character set
52H
52H
63-character bar
The operator's console should have the
IBM 1052 printer keyboard Model 7 with dual
case printing element, feature code 9572.
SYSTEM/360 OPERATING SYSTEM REQUIREMENTS
The primary control program of the operating system provides all sequential scheduling features of the job control languag~
as specified in the
publications
IBM
§ystemL360 _QE~atig~~te~~2f-f2g~!21
LanC[uage, and IBM System/360 0Eer~!ing_§.Y§.:.
~illl_Q~rator's
Guide.
It affords data
management capability and contains a supervisor which provides for:
Efficient overlapping of central processing unit operations and input/output
channel activity
The timer feature is required in order
to provide elapsed time of compilation, or
to support the timer built-in function.
In
the
absence
of
the
clock, no time
information will be printed out.
78
Error checking and standard input/
output error recovery procedures
Supervision and processing of interruptions
Supervision of requests for various
services provided by the system
This control program provides for a
single input job stream and the sequential
processing of job steps through single task
operations.
!'1ul:!:.!.Erog£~!!!!!!!.!!g
Tas~:§._lMF~l.
lation, a message will be generated giving
the actual time taken. Under MVT, the time
given is CPU time only, as I/O time cannot
be measured.
with a. Fixed Number of
This is an extension of the primary
control program. It provides for concurrent control of up to four independent
tasks representing separate jobs. Each job
occupies its own fixed partition of main
storage.
Figure 21 shows the control program
options which may be added to the primary
control program in order to provide greater
performance and/or programming flexibili~y
for the various features of PL/I. These
exclude input/output features.
r------------T----------------------------,
!PL/I Featurel
Control Program Option*
I
.------------+----------------------------~
)WAIT
I Multiple WAIT
I
This provides, in addition to the facilities provided by the primary control program:
Priority scheduling of jobs submitted
from single or multiple job streams
Concurrent scheduling and execution of
up to 15 separately protected jobs
The MVT system is used in PL/I tasking •
I
I Tasking
]
ITIME, DATE
I
I
I MVT
I
I Timing: A. Time
I
I
I
I
I
I
ITIME, DATE I Timing: B. Interval timing)
] DELAY
I
I
.------------~----------------------------i
1* See the publication !BM~Y:§.:!:.~!!!~l£Q
I
] QE~E~:!:.!.!!g_§Y:§.1~!!!L-§~QE~g~-~:§.:!:.!.!!!~:!:.~:§.
I
I for further details of these options. I
L _________________________________________ J
Figure 21.
Control Program Options
cm1PILER SUPPORT
-----------_._After the compiler initially receives
control from the calling program of the
operating system by means of a supervisorassisted
linkage,
communication
is
maintained
with
the
operating system
through the compiler control routinesQ
The functions provided by the primary
control program of the opera~lng system,
together with the data management routines
BSAM and QSAM, are required by the compiler.
In addition, BPAM data management
routines are required by the compile-time
processor if the INCLUDE statement is used~
STREAM I/O ~ithin PL/I is supported by
the queued sequential access method (QSAM).
In order to conserve space and time# the
GET and PUT macros are used in the locate
mode whenever possible.
Automatic datatransmission
computing-time
overlap is
provided~ as are blocking-deblocking
functions.
In order to achieve an efficient
degree of I/O overlap, two buffers are
normally allocated to each data set when it
is opened. The number of buffers allocated
is, however,
under the control of the DD
statement, or the BUFFERS option of the
ENVIRONMENT attribute.
Object-time interfaces with the operating system control program are made through
the PL/I Library routines.
The facility for providinJ details of
the time taken for each compilation must be
specified at system generation time through
the control program options (see "Object
Program Support"). On completing a compi-
The access method employed depends upon
the following factors:
System Requirements
79
r------------T-----------T-------~-----------T-------------T-----~---------------------,
I Organization I
Record
IAccessl
Notes on Use of
I
Format
I Method 1
Access Method
I
~------------+-----------+-------+-----------+-------------+------+---------------------i
I
I
lINPUT I BUFFERED
IAII
IQSAM jLocate mode
I
I
I
I UPDATE I
I
I
I (except paper tape)
I
ICONSECUTIVE ISEQUENTIAL jOUTPUT ~-----------+--.-----------+------+---------------------i
I
J
1
IUNBUFFERED IFIU]V
IBSAM I
I
I
Access
I
J
J
Mode
1Buffering
I
I
I
f------------+-----------+-------+---------·--+--·-----------+------+---------------------~
I
I
I
I
ISEQUENTIAL ~-------iUNBUFFERED I
I
J OUTPUT I
IFIFB
~-----------+-------+-----------i
1DIRECT
I INPUT f
I
I
I UPDATE I
I
I
I
I
lINDEXED
I
I
I
IINPUT I BUFFERED
lUPDATE lor
I
IScan mode
I
I
~ESETL/SETL
I
IQISAM ~---------------------~
I
ILoad mode
I
~------+---------------------i
IBISAM I
I
I
I
I
.------------+-----------+-------+-----------+-------------+------+---------------------i
I
I
1INPUT I BUFFERED
I
I
IQSAM (under certain I
I
I UPDATE lor
I
I ] circumstances)
I
ISEQUENTIAL ~-------iUNBUFFERED I
I BSAM ~---------------------i
I
I
JOUTPUT I
IF (REGIONAL I
IBDAM load mode
I
I
and (2»
~------t---------------------~
I
I
!
I
I
I
I REGIONAL ( 1) *
1
) REGIONAL( 1), I
]
I
I F I UI V
I
I Relative record
I
I (2), and (3) I
I
I
I ,( REGIONAL (3) ) I
1wi thout keys
I
I
I
I INPUT t
I
I BDAM I REGIONAL( 2) *
I
I
I DIRECT
IOUTPUT ]
I
I
IRelative record
I
]
I
IUPDATE I
I
I
Iwith keys
I
I
I
I
I
I
I
I REGIONAL (3) *
I
I
I
I
I
I
I
1 Relative track
J
I
I
I
I
1
I
I wi th keys
1
~------------~---------~-L-------~---------~-i---.----------~------i---------------------i
1*
L ___________________________________________
OUTPUT causes data set to be formatted using
•____________________________________________
BSAM (BDAM load mode) at open time
JI
I
I
.-----------t-------t-----------i(1)
eFigure 22.
Usage of Data Management Access Methods for RECORD-Oriented I/O
Organization
Record format
File attributes
The various combinations of the above.,
and the resultant usage of data management"
are illustrated in Figure 22.
80
Although external procedures must be
compiled separately,
several compilations
may be processed by the linkage editor to
form a single load module.
In order to
execute such a load module, the external
procedure of one of the compilations must
possess the option MAIN.
vided by the compiler and the linkage
editor 1S a guide only to the
space
required by the executable control section
and the STATIC INTERNAL control section in
the load module. Several other items must
be added to this to obtain a realistic
estimate
of
the
maximum
object-time
requirements.
These include the following:
1•
!:~QgQ:.Bg9i: s t ~!: __ Y:~£!Q!: __ iEBY:l. •
2.
~~!~!:EQE! __ ~~Q __ ~EfQE __ ~~~Qli~g.
3.
2Yn~~i£_~§~2E~g~_~f~~~iQ§~~1..
4.
CONTROLLEG Variables.
Each allocated
generation of -each CONTROLLED variable
will require 12 bytes in addition to
the space required for the contents of
the variable and its dope vector.
5.
!il~_~~~iEQ!~!i2~.
If more than one compilation has this
option, then the linkage editor will cause
control to be passed to the first of these
compilations to appear in its input streamo
Note that tnis is a function of the linkage
editor itself and is not a formal PL/I
facility.
An attempt to execute a PL/I program in
which no procedure has been given the MAIN
option will result in termination of execution,
accompanied by a message on the
console or system output listing.
Communication between separate compilations can be achieved by means of EXTERNAL
jeclarations or by passing arguments in
CALL statemsnts or function references.
It
should be noted that the PL/I language
makes the following restrictions:
AUTOMATIC variables cannot be EXTERNAL
(but may be passed as arguments)
Descriptions of an external variable in
separate compilations must not be contradictory.
If they are, the compiler
will not be able to detect this.
rhe linkage editor will load the INITIAL
value of a STATIC EXTERNAL variable from
the first object module encountered in its
input stream which declared the variable.
Th e
overall length of the PRV is contained
in the linkage editor module map,
which is produced when the MAP option
is specified.
The maximum size of a
PRV is 4096 bytes.
(Refer to Appendix
C of this publication for a more
detailed
description
of
pseudoregister
vectors.)
The
primary
workspace requirement for the library
is approximately 1100 bytes,
which
should De added to the PRV requir~
ment, plus 512 bytes if optimization
level OPT=1 has been chosen.
For
each PL/I interrupt,
1100 bytes ar~
required for library workspace.
In
addition, library modules which a~e
dynamically invoked as a result of
interrupts may require up to 2600
bytes
(irrespective of the number 0:
interrupts).
All storage requir2j for
interrupt
and
error
handling is
released when the interrupt has been
cleared.
A general guide to the length of each DSA
is to add 200 bytes per active Dlock
to the space required for the AUTOMATIC variables declared within the clock
and their dope vectors.
This is only
a guideline; there may be consiieratls
variations between different programs.
The main factors
to be considered in estimating the
storage required when opening
and
closing files are as follows:
a.
In order to estimate with any accuracy
the maximum overall storage requirements
for a PL/I program, several factors must be
taken into account. The information pro-
File Control Block (FCB). Approximately 150 bytes for CONSECUTIVE
and REGIONAL data set organizations; approximately 300 bytes for
INDEXED organization.
Managing Programs
81
r------------T--------------------------T---------------~---------------T---------------,
"
,Organization/
I
I
I '
I OPEN* (bytes)
PL/I Attributes
ICLOSE* (bytes)
INORMAL* (bytes) I
~-------T-------+-------T-------+-------T-------i
/ Non- I
I Non- I
I Non- I
,
ITasking,TaskingITasking,Tasking,TaskingITaskingl
.------------+---------?----------------+-------+-------+-------+-------+-------+-------i
}CO.\lSECUTIVE /STREAM
/ 1900 ,1900 / 1300 / 1700,
I
I
I
1
I
ISEQUENTIAL BUFFERED
ISEQ.BUFF.(spanned input)
ISEQ.BUFF.(spanned output}
I SEQ. UNBUFFERED
l
I 2400
I 1900
, 1800
I 5100
I 2400
,1900
,1800
I 5100
I 2400
, 1900
I 1800
I 5100
I 2800
, 2300
,2200
,5500
,1100
, 600
I 500
,3800
I 1100
600
500
I 3800
I
,
,
,
,
I
r------------+--------------------------+-------+-------+-------+-------+-------+---~---~
I INDEXED
I SEQUENTIAL
IDIRECr
!
,3600
,3100
,3600
/ 3900
,3600
I 3100
I 4000
1 4300
,2300
,2300
I 1800
I 2600
,
I
.------------+-------~------------------+-------+-------+-------+-------+-------+-------~
I REGIONAL
I
I
/SEQUENTIAL INPUT/UPDATE
jSEQUENrIAL OUTPUT
1DIRECT
I 5100
,3900
1 3100
I 5100
,3900
I 3900
,5100
I 3900
I 3100
I 5500
I 4300
1 4300
I 3800
I 2600
I 1800
,3800
I 2600
I 2600
I
I
I
r------------L--------------------------~-------~----- --~-------~-------~-------~-------i
1* These figures show the extra storage required by linked PL/I library I/O modules inl
I both non-tasking and tasking environments. The first two columns show the maximum I
I space occupied by the library modules during the opening of a file with the givenl
I attributes.
The second two columns show the maximum space occupied during thel
I closing of the same file. The third two columns show the space occupied by thel
1 library modules while the file is open. If several files with the same attributes I
I are processed, then the storage requirements are unaffected.
If, however~ anotherl
I file with different attributes is open when a file is opened or closed~ then thel
I figure for that file must be added to the figure in the OPEN and CLOSE column.
I
I For instance, if a SEQUENTIAL INDEXED file is open in a non-tasking environment atl
I the time that a CONSECUTIVE SEQUENTIAL BUFFERED file is being closed, then the totall
I storage required by the linked modules w:lll be 2300+2400=4700 bytes. The figures dol
IL______
not -include
the storage
required by data management.
I
________________
- - ________________________________________________
--------------J
.Figure 23.
Storage Required by PL/I Library Modules when opening and
b.
~i~!~!Y __ ~2g~le~.
The
greatest
storage
requirement
generally
occurs when a file is opened or
closed. Figure 23 shows the storage required at these times. In
all cases, the space required by
data management must be added to
the figures givend
Co
~~ifer~.
In addition to the factors given above, space must be
allowed for buffers or I/O control
blocks.
This
requirement can
become very large if large blocksizes are used.
Closing Files
structured to support the advanced features
of PL/I. In order to achieve more than a
limited use,
the user would require an
intimate
knowledge of the object code
structure and requirements of a PL/I program.
Appendix C is provided as an introduction to the sUbject. Appendix D of the
present manual contains an example illustrating one way in which an assembler
language program can be written in order to
combine it with a PL/I procedure.
All space required
by
files
is
released and becomes reusable after
the file has been closed.
When an assembler subroutine is called
by a PL/I program,
by means of a CALL
statement or a function reference, a variable number of arguments can be passed. The
compiler indicates the last argument by
setting X'80' in its high-order byte.
The combination of modules written in
other languages with modules written in
PL/I is possible only in a rather limited
way, since most other languages are not
82
This feature provides compatibility with
COBOL and FORTRAN calling sequences.
It
cannot be used in an exclusively PL/I
environment because PL/I does not allow a
variable number of arguments.
PLiI object programs make use of a large
number of subroutines. These subroutines
are held in the PL/I library and are
incorporated into the PL/I program by the
linkage
editor.
Library
modules not
directly referenced by the compiled module,
but which are selectively referenced by
other required modules (e.g., modules within in the data conversion package) are
specified by the compiler in ESD entries.
These ESD entries, in conjunction with the
linkage editor control statement, LIBRARY*
are used to keep the program's storage
requirements to a minimum. The form of the
LIBRARY statement used specifies that the
linkage editor is not obliged to resolve
certain external references within a given
module, unless the referends are already
included within the module being edited.
Those modules which require this feature
use the LIBRARY control statement when they
are edited into the PYI library.
Thus,
when these modules are subsequently processed by the linkage editor when building a
PL/I program, there will be no second-level
search of the library. Library subroutines
are automatically selected, and no user
intervention is needed.
Other library modules are used on a
transient basis, and are dynamically loaded
during program execution.
These modules
reside within the data set SYS1.LINKLIB.
Modules of this type include those required
for opening and closing files, RECORD I/O
data management interface modules,
and
object-program error-handling routines and
message tables.
then, if 22 were greater than the return
code passed from STEPA, or if 59 were not
equal to the return code passed from STEPB,
the job step STEPC would not be executed.
For further information on the use of the
COND parameter, see the publication IEM
§ystem/360_QEerating System« Job Control
Language.
To use this facility in a PL/I program,
it
is first necessary to declare the
library module antry point IHESARC:
DCL IHESARC ENTRY(BINARY FIXED);
Once IHESARC has been declared, the
return code can be set at any point in the
program by the following CALL statement:
CALL IHESARC(expression);
The routine may be called as often as
requiredft
Each time, the expression will
be evaluated and its value will be saved.
On normal termination, the return code will
be set to the latest value~ modulo 4096.
(On abnormal termination, the complete job
would be terminated.>
If the facility is not used, a return
code of zero will be passed.
It is possible for the programmer to
specify that a particular job step shall
not be executed if any of certain conditions are satisfied by return codes passed
from previously executed job steps.
A
return code can be set during execution of
a PL/I program ..
The major differences between Release 17
and the earlier Release 11 version of
Checkpoint/Restart are the increased number
of Checkpoint/Restart features and
the
changed method the programmer must use to
initiate a programmer-deferred checkpOint
restart, or step restart.
The conditions under which a job step is
to be bypassed are set out in the COND
parameter of the EXEC statement for the
step. For example, if the EXEC statement
for a job step, STEPC, contained the parameter
When a job step terminates because of,
for example, an I/O error or a machine
check~
the programmer may require that
processing begins again from a point ~ithig
the job step or, alternatively, from the
beginning of the job step. This can be
done by means of the IBM System/360 Operating System checkpoint/Restart facility.
COND=(22,GT,STEPA),(59~NE,STEPB»
Managing Programs
83
Checkpoint/Restart is supported by the
MVT and PCP supervisors, and provides the
following features:
Automatic step restart
Automatic checkpoint restart
Programmer-deferred step restart
Programmer-deferred checkpoint
restart
If automatic checkpoint restart or automatic step restart is specified when using
MVT, MSGLEVEL=1 must be specified in the
JOB statement ..
Programmer-deferred step restart enables
the programmer to resubmit a multistep job
and cause any number of steps to
be
bypassed, until the required
step
is
reached, at which point execution commences. Automatic step restart causes the
excution of a job step which terminates
abnormally to be recommenced from the orginal starting point.
programmer-deferred checkpoint restart
is the technique used if the job is to be
discontinued, and resubmitted for checKpoint restart by the user at a later time;
automatic checkpoint restart is the technique used if a restart at the
last
checkpoint taken is to ce performed during
the job immediately that the system recognizes that the job step has been terminated
abnormally.
Both checkpoint restart techniques require £h~£~E2in~_g2~2' in order to
carry out the restart operation. Checkpoint data consists of all the information
about a program at a point in its execution
which can be used to recommence execution
from that point. Multiple checkpoints can
be preserved, or, alternatively, only a
single checkpoint may be required, in which
case each checkpoint is overwritten by a
subsequent checkpoint. Deferred checkpoint
restart can be performed at any of these
checkpoints, if multiple checkpoints are
preserved, or from the latest checkpoint,
if it is the only checkpoint that is
preserved.
Automatic checkpoint restart
will use only the last checkpoint taken.
To create a checkpoint from within a PL/I
program, code the statement
CALL IHECKPT;
at a strategic point in the program such
that any data sets used by the program can
84
be repositioned by the restart program to
the positions held at the time the checkpoint was taken.
Note: The CALL IHECKPT statement must not
Ee--executed in a multitasking environment.
When the CALL IHECKPT statement is executed, a checkpoint data set is created,
for which a unique name or checkid is
generated by the system. rhe-checkId is
displayed on the operator's console for
each checkpoint taken. The checkid for a
particular checkpoint data set which is to
be used to restart execution of the program
should be noted, and later used to identify
the data set. The checkpoint data set is
sequential only, and may not be a member of
a partioned data set.
A DD statement with the ddname SYSCHK
must be provided in the job stream for each
step which produces checkpoints. This DD
statement contains the specifications for
the checkpoint data set. rhe parameters
for this statement are given in Figure 24.
The SYSCHK DD DISP parameter depends on
whether there is a ~ing!~__ £he£~E2!~~ or
whether m~!~iE!e chec~oint~ are required.
For
a
single
checkpoint
code
DISP=(NEW,KEEP), for multiple checkpoints
code DISP=(MOD,KEEP).
With a single checkpoint, the information stored at a checkpoint overwrites the
information stored by any previous check poinl:; thus only the latest checkpoint information is available.
The information for a checkpoint is
stored after the information for a previous
checkpoint; thus all the checkpoints taken
are available for a restart.
The other checkpoint/restart techniques
mentioned,
automatic
step restart and
programmer-deferred step restart, do not
require either the CALL IHECKPT or SYSCHK
DD statements.
(Automatic step restart
causes a step to be reexecuted immediately
if it is terminated abnormally; programmerdeferred step restart permits the job to be
resubmitted, but any job steps preceding
the step to be reexecuted are bypassed,
permitting the immediate restart of the
step.)
r------------T-----------------------------------------------,
I
Tape, Drum, Disk
I
I
I Parameter
I
~----------------------T------------------------~
I Single checkpoint
1 Multiple checkpoints
I
r-----·-------t----------------------~------------------------~
I OSNAME=
Any name
I
~-----·-------t-----------------------------------------------~
I VOLUME=
I Volume number or other reference
,
J
t------------t-----------------------------------------------~
~
UNIT=
I 2400, 2400-2, 2301, 2311, 2314, 2321 etc.
I
r------------t----------------------T------------------------~
I DISp:=
, (NEW,KEEP)
, (MOO.KEEP)
,
r------------t----------------------~------------------------~
I SPACE=
I Provided by formulas for direct-access devices I
t------------t-----------------------------------------------i
I DCB=
I (TRTCH=C> if UNIT=2400-2
I
t------------~-----------------------------------------------1
, *
I
,
I
I
I
,
,
I
The space allocated on a direct-access device must bel
sufficient for the job-step requirements together withl
the system blocks.
In effect, this means that it mightl
have to be as much as one and a quarter times mainl
storage or region size. For example, a 256K machine orl
region might require 10 cylinders on a 2311 disk pack.,
The amount required is derived from the formulas provided]
in !g~_~y~~~~~l~Q_QEerating System: storag~_~st!~~~~~.
I
,
,
,
A secondary quantity can appear in the SPACE parameter ofl
the SYSCHK DD statement. However, if it is specified, itl
IL ____________________________________________________________
is not used.
J,
• Figure 24.
Basic Parameters for the SYSCHK DD Statements
RNC (restart, but
no checkpoints)
Automatic
checkpoint
restart
is
specified implicitly by the execution of a
CALL IHECKPT statement.
The remaining checkpoint restart features are controlled from the RD (Restart
Definition) parameter, which can be specified in either a JOB statement or an EXEC
statement.
The settings of the RD parameter are listed below:
RD [.procstep]
=
1.
An RO parameter coded in a JOB statement overrides one coded in an EXEC
statement.
2.
If the RD=value is coded in an EXEC
statement for a cataloged procedure,
it applies to all the steps within the
procedure. RD.procstep=value can be
coded instead of RO=value; it then
applies only to the specified procedure step.
RO.procstep=value can be
coded for each step in the cataloged
procedure, in procedure step order.
3.
The CALL IHECKPT statement causes a
request
for
automatic
checkpoint
restart and overrides the request for
automatic step restart, if the parameter RO=R has been specified.
4.
RD=NC and RD=RNC are provided to suppress the execution of a CALL IHECKPT
statement which is contained in a
{R]NCINRIRNC}
where:
R (restart)
requests automatic
step restart.
NC (no checkpoint) totally suppresses
both the execution
of the CALL IHECKPT
statement, and the
implicit automatic
checkpoint restart.
NR (no restart)
requests automatic
step restart and
totally suppresses
the execution of the
CALL IHECKPT
statement.
Checkpoints may be
written. but automatic checkpoint restart is inhibited.
2.Eecify this
12arameter for
Managing Programs
85
program to be executed, but is
required for a particular job.
5.
not
RD=NC and RD=NR have no effect on a
step in which there is no CALL IHECKPT
statement to be executed.
In this
case RD=RNC has the same effect as
RD=R,
specifying
automatic
step
restart.
6.
If no RD parameter is specified, automatic step restart is suppresed but an
automatic checkpoint restart can occur
if a checkpoint is taken.
1.
The RD parameter is ignored when the
MFT II supervisor is used.
Automatic restarts are specified in
RD parameter described previously.
the
Prugrammer-deferred restarts are performed by resubmitting the deck containing
the job control statements for the original
job, with the JOB statement containing a
RESTART parameter to specify that a restart
is required, and how it is to be performed.
The RESTART parameter specifies the step to
be restarted, and, if a checkpoint restart
is required, the checkpoint identity, i.e.,
checkid, of the checkpoint data set to be
used.
It is specified as follows:
RESTART= ( {
stepname
~tepname.procstep
}
[,checkid)
If the restart is a programmer-deferred
step restart, the checkid information must
not be specified, and the enclosing parentheses may be omitted. The stepname parameter identifies the step in the job to be
restarted. The form stepname.procstep is
used if the step is in a cataloged procedure. The form '*' can be used to indicate
that the first step in the job is to be
restarted.
(greater than) ;
L (letter), < (less than) •
0
(letter), 0 (zero) ;
S (letter), 5 (five) ;
Z (letter), 2 (two) ;
This is a list of the errors and pitfalls most likely to be encountered when
writing a PL/I source program. Some of the
items concern misunderstood or overlooked
language rules, while others result from
fail~re
to observe the implementation conventions and restrictions of the PL/I (F)
compiler, and are indicated by (I) appearing after the item.
(1)
The option list in the PARM parameter
of an EXEC
statement
should
be
enclosed in quotation marks, and is
limited to a maximum length of 40
characters
(including
commas
but
excluding quotation marks).
(I)
(2)
When the source deck is in the input
stream to the sequential scheduler,
check that the last card in the source
deck is a delimiter (/* in columns 1
and 2).
(I)
(3)
A STATIC variable in an overlay segment could be overwritten during an
overlay operation unless it has the
EXTERNAL attribute.
(I)
(4)
Special care should be taken when
using
ENVIRONMENT
(INDEXED).
For
example, no secondary quantity can be
(I)
allocated by the SPACE parameter.
(1)
104
Keypunch transcription
errors
may
occur unless particular care is taken
when writing the folLowing characters:
(break character),
(minus sign);
(2) Ensure that the source program is
completely contained within the margins
specified
by
the
SORMGIN
option.
(I)
(3)
Inadvert~nt
omission of certain symbols may give rise to errors that are
difficult to trace.
Common errors
are:
unbalanced
quotation
marks;
unmatched parentheses; unmatched comment delimiters (e.g., /*
punched
instead of */ when closing a comment);
and missing semicolons.
(4)
Reserved keyword operators in
the
48-character set (e.g., GT, CAT) must
in all cases be preceded and followed
by a blank or comment.
( 5)
Care should be taken to ensure that
END statements correctly match the
appropriate DO, BEGIN, and PROCEDURE
statements.
(6)
In some situations. parentheses are
required when their necessity is not
immediately obvious.
In particular,
the expression following WHILE and
RETURN
must
be
enclosed
in
parentheses.
(1)
The procedure to be given initial
control at execution time must have
the OPTIONS(MAIN) attribute.
If more
than
one
procedure has the MAIN
option,
the
first
one
gets
control.
(I)
(2) When a procedure of a program is
invoked while it is still active,
it
is said to be
used
recursively.
Attempting the recursive use of a
procedure that has not been given the
RECURSIVE attribute may result in a
program interrupt after exit from the
procedure.
This will occur if reference is made to AUTOMATIC data of an
earlier invocation of the procedure.
(1)
DECL~RE statements for AUTOMATIC variables are in effect executed at entry
to a block: sequences of the following
type are therefore likely to lead to
unpreiictable storage requests:
004
00.4
(3)
Missing commas in DECLARE statements
are a common source of error.
For
example, a comma must follow the entry
for each element in a structure declaration.
External identifiers should neither
contain more than seven characters n
nor start with the letters IHE.
(I)
(4) In a PICTURE declaration, the V character indicates the scale factor,
but
does not in itself produce a decimal
point on output.
The point picture
character produces a point on output~
but is purely an editing character and
does not indicate the scale factor.
In a decimal constant, however, the
point does indicate the scale factor.
For example:
DCL A PIC'99.9',
B PIC'99V9',
C PIC'99.V9~;
Ai B ,C=45.6;
PUT LIST (A,B,C);
This will cause the following values
to be put out for A,
B,
and C,
respectively:
04.5
456
45.6
If these values were now read back
into the variables by a GET LIST
statement, A, B, and C would be set to
the following respective values:
560
45.6
(5) Separate
external declarations of the
same identifier must not specify conflicting attributes, either explicitly
or by default.
If this occurs the
compiler will not be able to detect
the conflict.
PL/I also requires that
if an INITIAL value is sp~cified in
one declaration of a STATIC EXTERNAL
variable,
the same
INITIAL
value
should appear in every declaration of
that variable.
(6)
An identifier cannot be used for more
than one purpose within its scope.
Thus, the use of X in the following
sequence of statements would be in
error:
PUT FILE (X) LIST (A,B,C); X=Y+Zi
X: M=N;
(7)
(2)
45.6
If the PUT statement were then repeated, the result would be:
A: PROC;
N=4;
DCL B(N) FIXED;
END;
56.0
It is advisable to declare all entry
points, associated parameter lists,
and any return values, to avoid inadvertent clashes of attributes.
If the attributes of the data items in
an argument list do not match those
declared for the ENTRY# a dummy argument is created with the
correct
attributes, and the data item is converted into the dummy_
For example:
DCL X ENTRY (FIXED. CHAR(4}),
Y FIXED, Z FIXED(1,0);
Y=45;
Z=O;
CALL X(Y,Z);
X:PROC(A,B);
DCL A FIXED,
B CHAR(4);
END;
In the above example,
a dummy is
created for the second argument, Z,
and is passed to X as 'bbbO'.
If the attributes declared for X in
the entry name declaration W8re incompatible with the attritu~ps of tne
arguments in the CALL statem~nt,
the
compiler would issue a diagnostic message, and at execution time no conversion would take place.
However, if
the attributes declared for X in the
entry name declaration conflicted with
the attributes of the corresponding
parameters in the PROCEDURE statement,
the compiler would not detect the
disagreement, and at execution time
Programming Techniques
105
the consequences of such an error
would, in general, be unpredictable.
For example, if X were declared
DCL X ENTRY (FLOAT, CHAR(4»;
then 45 would be passed as FLOAT, but
would be interpreted by X as FIXED#
possibly with disastrous results.
Similarly, attributes declared
for
RETURN values must agree in the invoking and invoked procedures; however,
the actual expression returned may be
of any data type and will be converted
to that declared.
For example:
FLOAT DECIMAL REAL is assumed for
implicitly declared arithmetic variables, unless the initial letter is in
the range I
through N,
when FIXED
BINARY REAL is assumed.
If a variable is explicitly declared
and any of the base, scale, or mode
attributes is specified. the others
are assumed to be from
the
set
FLOAT/DECIMAL/REAL.
For example:
DCL I;
/*1 IS FIXED BINARY
(15,0) REAL
AUTOMATIC*/
DCL J REAL;
/*J IS FLOAT DECIMAL
(6) REAL
AUTOMATIC*/
DCL X RETURNS (CHAR(4»i
DCL A CHAR(4);
X: PROC CHAR(4);
RETURN (I*J*K);
END X;
DeL K STATIC; /*K IS FIXED BINARY
(15,"0) REAL
STATIC*/
DCL L FIXED;
A=X;
The precision of decimal integer constants should be taken into account
when such constants are passed.
For
example:
CALL ALPHA(6);
ALPHA: PROCEDURE(X)i
DCL X FIXED DECIMAL;
END;
The above example is incorrect because
X will be given a default precision.
while the constant, 6, will be passed
with precision (1,0).
(8) When a data item requires conversion
to a dummy, and the called procedure
alters the value of the parameter 6
note that the dummy is altered, not
the original argument.
For example:
(10) The precision of complex expressions
is not obvious.
For example,
the
precision of 1 + 11 is (2#0), that is,
the precision follows the rules for
expression evaluation.
(11) When a procedure contains more than
one entry point, with different parameter lists on each entry, make sure
that no references are made to parameters other than those associated with
the point at which control entered the
procedure.
For example:
A: PROCEDURE(P,Q)i
P=Q+8i RETURN;
B: ENTRY(R,S)i
R=P+Si /*THE REFERENCE TO P
IS AN ERROR*/
END;
DCL X ENTRY (FIXED, FIXED)#
A FIXED,
B FLOAT;
CALL X(A,B);
(12) BASED storage is allocated in terms of
doublewords;
therefore,
even for the
smallest item, at least eight bytes
are required.
(I)
X:PROC(Y,Z);
DCL (Y,Z) FIXEDi
Y=Z**100i /*A IS ALTERED IN
CALLING PROC*/
Z=Y**3;
/*B IS UNALTERED IN
CALLING PROC*/
END Xi
(13) The variable used in the REFE~ option
must be referred to unambiguously.
For example:
(9) When the attributes for a given identifier are incompletely declared, the
rest of the required attributes are
supplied by default.
The following
default assumptions should be carefully noted.
106
/*L IS FIXED DECIMAL
(5,0) REAL
AUTOMATIC*/
DCL 1 A,
2 Y FIXED BIN,
2 Z FLOAT,
B,
2 Y FIXED BIN
2 T(1:N REFER(BoY»;
In any references to this declaration,
Y must be fully qualified to prevent a
possible ambiguity.
(14) A pointer qualifier (explicit or
implicit) may not be based or subscripted.
(I)
(15) Conflicting contextual
declarations
must be avoided. P is often used as
the name of a pointer: it must not,
therefore, assume by default the characteristics of another data type. For
example:
(2) Any attempt to write out a variable or
array that has not been initialized
may well cause a data interrupt to
occur. For example:
DCL A(10) FIXED:
A(1)=10i
PUT LIST (A):
B BASED (P),
To avoid the data interrupt, the array
should
be
initialized before the
assignment statement, thus:
P AUTO,
.,
A=O:
P is first contextually declared to be
a pointer and then, by default, to be
FLOAT DECIMAL.
(16) BASED variables cannot
arguments or parameters.
be used
(I)
as
(17) Offsets must be declared with a level
1 unsubscripted BASED area.
~~_Assignments
Failure to initialize a subscript can
be detected by checking for subscripts
out of range, when debugging the program.
and Initialization
(1) When a variable is accessed, it is
assumed to have a value which has been
previously assigned to it and which is
consistent with the attributes of the
variable.
If
this assumption" is
incorrect~
either the program will
proceed with incorrect data or a program interrupt will occur.
such a
situation can result from failure to
initialize the variable, or it can
occur as a result of the variable
having been set in one of the following ways:
(a) by the use of the UNSPEC pseudovariable
(b) by RECORD-oriented input
(c) by overlay defining a picture on a
character string, with subsequent
assignment to the character string
and then access to the picture
(d) by
passing as an
argument
a
var~able
assigned in a different
procedure, without matching the
attributes of the parameter.
Failure to initialize a variable will
result
in the variable having an
unpredictable value at execution time.
Do not assume this value to be zero.
Note that this problem can also occur
as a result of CHECK system action for
an uninitialized array. If the CHECK
condition were enabled for the array
in the above example, and
system
action were taken, the results, and
the way in which the program terminates, would be unpredictable. The
same problem arises when PUT DATA is
used.
(3) Note
the
distinction
between
= (assignment)
and
= (comparison).
The statement
A=B=C:
means "compare B with C and assign the
result (either '1'B or 'O'B) to A,
performing type conversion if necessary."
(4) Assignments that involve conversion
should be avoided if possible (see
section 1.f.2., below).
(5) In the case of initialization of or
assignment to a fixed length string:
if the assigned value is shorter than
the string, it is extended on th~
right with blanks (for a character
string) or zeros (for bit strings).
For example:
DCL A CHAR(6),
B CHAR(3) INIT('CR'):
A=B:
After the execution of the
above
statements, B would contain CRb, and A
would contain CRbbbb.
(6) It is not possible to assign a cross
section of an array of structures in a
single statement; the whole of an
array of structures, or a single element may be referenced, but not a
cross section.
(I)
Programming Techniques
107
The value of I
is now 1.062S.
This is because .1 is converted to
FIXED BINARY(S~4),
so that the
nearest binary approximation is
0.0001B (no rounding occurs).
The
decimal equivalent of this
is
.062S.
A better result would have
been achieved by specifying .1000
in place of .1.
(See also item
(f) below.)
(7) When SIZE is disabled, the result of
an assignment which would have raised
SIZE is unpredictable:
FIXED BINARY: The result of an assignment here
which includes,
for
instance,
source language assignments
and the conversions implied by parameter matching
may be to raise FIXEDOVERFLOW.
FIXED DECIMAL: Truncation to the nearest byte may occur, without raising an
interrupt.
If the target precision is
even,
an extra digit may be inserted
in the high-order byte.
(b)
If arithmetic is performed
on
character string data, the intermediate results are held in the
maximum precision:
DCL A CHAR(6) INIT('12304S');
DCL B FIXED(S,2);
B=A;
/*B HAS VALUE 123.4S*/
3=A+A; /*B HAS VALUE 246.00*/
(1)
The rules for expression evaluation
should be carefully noted, with particular reference to priority of operations.
The following examples show
the kind of mistake that can occur:
X>YIZ is not equivalent to X>YIX>Z
Dut is equivalent to (X>Y) IZ
x>y>Z is not equivalent to X>Y&X>Z
but is equivalent to (X>Y»Z
The clause IF A=BI IC is equivalent
to IF A=(BI IC),not to IF (A=B)] IC
All
operation
sequences of equal
priority are evaluated left to right~
except for **, prefix +, prefix -, and
"
which are evaluated right to lefto
Thus, the statement
is equivalent to
A=B**(-(C**D»;
The normal use of parentheses is to
modify the rules of priority; however,
it may be convenient to use redundant
parentheses as a safeguard or to clarify the operation.
(2) Conversion is governed by comprehensive rules which must be thoroughly
understood if unnecessary trouble is
to be avoided.
Some examples of the
effect of conversion follow.
~08
(c) The rules for arithmetic to bit
string conversion affect assignment to a bit string from a decimal constant:
DCL A BIT(1),
D BIT(S);
A=1i /*A HAS VALUE 'O'B*/
0=1; /*D HAS VALUE '00010'B*/
D='1'Bi /*D HAS VALUE
'10000'B*/
IF A=1 THEN GO TO Y;
ELSE GO TO Xi
The branch will be to X,
because
the assignment to A resulted in
the following sequence of actions:
(1) The decimal constant,
1,
is
assumed to be FIXED DECIMAL
(1,0) and is assigned to temporary storage with the attributes FIXED BINARY(4,0), taking the value '0001'B;
(2) This value is now treated as a
bit string of length
(4),
so
that it becomes '0001'B;
(3) The resultant bit string is
assigned to A.
Since A has a
declared length of 1, and the
value
to
be assigned has
acquired a length of 4,
truncation occurs at the right,
and A has a
final value of
'O'B.
(a) DECIMAL FIXED to BINARY FIXED can
cause unexpected results if fractions are involved:
To perform the comparison op~ra
tion in the IF statement, 'O'B and
1 are converted to FIXED BINARY
and compared arithmetically.
They
are unequal,
giving a result of
"false" for the relationship A=1.
DCL I FIXED BIN(31,S) INIT(1);
1=1+.1;
In the first assignment to 0, a
sequence of actions similar to
that described for A takes place.
except that the value is extended
at the right with a zero, because
D has a declared length that is 1
greater than that of the value to
be assigned.
Cd) Assignment of arithmetic values to
character strings involves conversion according to the rules for
LIST-directed output.
Example
DCL A CHAR(4),
B CHAR(7) :
A='O'; /*A HAS VALUE 'Obbb'*/
A=O:
/*A HAS VALUE 'bbbO'*/
B=1234567; /*B HAS VALUE
'bbb1234'*/
Note: The three blanks are necessary to allow for the possibility
of a minus sign and/or a decimal
or binary point,
with provision
for a single leading zero before
the point.
Example 2
DCL CTLNO CHAR(S) INIT('O');
DO I=1 TO 100;
CTLNO=CTLNO+1;
fully converted to arithmetic
type for the second iteration
of the loop ..
Ce) FIXED division can result in unexpected overflows or truncation.
For example. the expression
25+1/3
would yield a value of 5.33 ••• 3.
To obtain a result of 25~33 •• _3,
it would be necessary to write
25+01/3
The explanation is that constants
have the precision and scale factor with which they are written,
while FIXED division results in a
value at maximum implementationdefined precisiono The results of
the two evaluations are reached as
follows:
r-------T-------T-----------------,
1
1 Preen/I
I
I
I Item
I Scale I
I Factorl
I
I
Result
t-------+-------+-----------------~
In
this example, a conversion
error occurs because of the following sequence of actions:
1 (1,0) I
1
I (1,0) 1
3
1(15,14)10_33333333333333
1 (2.0) I
25
125+1/3 I (15,14) 15 .. 33333333333333
I
I
1 (truncation on
1
1
I left:
1
1
I FIXEDOVERFLOW
1
I
1 would be raised
I
I
I unless disabled)
(1) The initial value of CTLNO,
that is, 'Obbbbbbb', is converted to FIXED DECIMAL(5,0)
for the addition,
giving a
temporary value of 00000.
1 (2,0) I
01
I
I (1.0) ]
3
I
101/3
1 (15,13) 100 .. 3333333333333 1
125
I (2,0) 1
25
i
125+01/31(15,13)]25.3333333333333
L _______ L _______ L _________________ J1
END;
(2) The
decimal
constant,
1.
assumed
to
be
FIXED
DECIMAL(1,0),
is added;
in
accordance with the rules for
addition, the precision of the
result
is (6,0), giving a
value of 000001 ..
(3) This value is now converted to
a character string of length
9, value 'bbbbbbbb1', in preparation for the assignment
back to CTLNO.
(4) Because CrLNO has a length of
8, the assignment causes truncation at the right; thus.
CTLNO has a final value that
consists entirely of blanks.
This value cannot be success-
I 1
I 3
I 1/3
I 25
I
I
1
I
I
I
I
I
I
I
~-------+-------+-----------------~
101
I 3
(f> Checking of a picture is performed
only on assignment into the picture variable:
DCL A PIC'999999',
B CHAR(6) DEF A,
C CHAR(6);
3=' ABCDEF' ;
C=A; /*WILL NOT RAISE CONV
CONDITION*/
A=C; /*WILL RAISE CONV*/
Note also
above) :
(A,
B,
C as declared
A=123456; /*A HAS VALUE
123456*/
/*B HAS VALUE
'123456'*/
Programming Techniques
109
C=123456; /*C HAS VALUE
'bbb123'*/
C=A; /*C HAS VALUE '123456'*/
DECIMAL scalar with a
even precision (P,Q) may
effective precision of
(P+1,Q),
as the high-order byte
may not be non-zero.
The SIZE
condition can be used to eliminate
this effect:
Five iterations would result if the DO
statement were replaced by
(g) A FIXED
declared
have an
DCL (A,B,C) FIXED DECIMAL (6,0);
ON SIZE;
ITEMP=A/2;
DO I=1 TO ITEMP;
(4) DO
groups cannot be used as ON-units.
(5) Upper and lower bounds of iterative DO
groups are computed once only, even if
the variables involved are reassigned
within the group. This applies also
to the BY expression.
(SIZE): A = B + C;
Any new values assigned to the variables involved would take effect only
if the DO group was started again.
This ensures that the high-order
byte
of A is zero after the
assignment.
(1) The
scope
of a condition prefix
applied to a DO statement is limited
to execution of the statement itself;
it does not apply to execution of the
entire group.
(6) In a DO group with both a control
variable and a WHILE clause,
the
evaluation and testing of the WHILE
expression is carried out only after
determination (from the value of the
control variable) that iteration may
be performed.
For example, the following group would be executed at most
once:
DO I=1 WHILE(X>Y);
(2) An iterative DO group is not executed
if the terminating condition is satisfied at initialization:
END;
I=6;
DO J=I TO 4;
X=X+J;
END;
(7)
I is frequently used as the control
variable in a DO group, for example:
DO 1=1 TO 10;
x
is not altered by this group,
since
BY 1 is implied.
Iterations can step
backwards, and if BY -1 had been
specified, three iterations would have
taken place.
Within the scope of this implicit
declaration, I might be contextually
declared as a pointer, for example:
DCL X BASED(I);
(3)
Expressions in a DO statement are
assigned to temporaries with the same
characteristics as the expression, not
the variable. For example:
DCL A DECIMAL FIXED(5,O);
A=10;
DO 1= 1 ro A/ 2;
The two statements are in conflict and
will produce a diagnostic message.
When I is a pointer variable~ it can
only be used in a DO group in one of
the following ways:
1.
END;
This loop will not
be
executed~
because A/2 has decimal
precision
(~~,10),
which, on
conversion
to
binary (for
comparison
with
I),
becomes binary (31,34).
110
DCL (P, lA, IB, IC) POINTER;
DO P=IA,IB,IC;
2.
DCL (P, IA) POINTER;
DO WHILE(P=IA);
:i.e
(1) Array arithmetic should be thought of
as a convenient way of specifying an
iterative computation4 For example:
DCL A(10,20);
A=A/AC 1,1);
strings
(1) Assignments made to a varying string
by means of the SUBSTR pseudo-variable
do not set the length of the string4
A varying string initially has an
undefined
length,
so that if all
assignments to the string are made
using the SUBSTR pseudo-variable, the
string still has an undefined length
and cannot be successfully assigned to
another variable or written out4
(2) The user must ensure that the lengths
of
intermediate results of string
expressions do not exceed 32767 bytes.
This applies particularly to variable
string lengths, as there is no objecttime length checking.
(I)
has the same effect as
DCL A(10,20);
DO 1=1 TO 10;
DO J=1 TO 20;
A(I,J)=A(I,J)/A(1,1);
END; END;
Note that the effect is to change the
value of A(1,1) only, since the first
iteration would produce a value of 1
for A(1,1).
If the programmer wished
to divide each element of A by the
original value of A(1,1), he could
write
(1)
When UNSPEC is used as a pseudovariable, the expression on the right
is converted
to
a
bit
string.
Consequently, the expression must not
be invalid for such conversion; for
example, if the expression is a character
string containing characters
other than 0 or 1, a conversion error
will result.
(~)
Note the correct positioning of the ON
statement. If the specified action is
to apply when the named condition is
raised by a given statement, the ON
statement must be executed before that
statement. The statements:
B=A(1,1) ;
A=A/B;
or alternatively,
DCL A ( 10, 20) ,
B(10,20) ;
B=A/A (1, 1) ;
(2) Note
the
plication:
effect
of
array
multi-
DCL (A,B,C) (10,10);
A=B*C;
This does not effect matrix multiplication; it is equivalent to:
DCL (A,B.C) (10,10);
DO 1=1 TO 10;
DO J=1 TO 10;
A(I,J)=B(I,J)*C(I,J);
END; END;
GET FILE CACCTS) LIST (A,B~C);
ON TRANSMIT (ACCTS) GO TO TRERR;
would result in the ERROR condition
being raised in the event of a transmission error during the first GET
operation, and the required branch
would not be taken (assuming that no
previous
ON
statement
applies).
Furthermore, the ON statement would be
executed after each execution of the
GE'l' statement.
(2) An ON-unit cannot be entered by means
of a GOTO statement4 To execute an
ON-unit
deliberately,
the
SIGNAL
statement can be used.
Programming Techniques
111
(3) CONVERSION
ON-units
entered as a
result of an invalid conversion (as
opposed to SIGNAL)
should
either
change the invalid character (by means
of
the
ON SOURCE
or
ONCHAR
pseudo-variable), or else terminate
with a GOTO statement. Otherwise, the
system will print a message and raise
the ERROR condition.
(4)
At normal exit from an AREA ON-unit,
the standard system actio~ is to try
again to make the alloc?tion. As a
result the ON unit will be entered
again, and an indefinite loop will be
created. To avoid this, the amount
allocated should be modified in the ON
unit, for example, by using the EMPTY
built-in function or by changing a
pointer variable.
(1) The UNDEFINEDFILE condition may be
raised if a STREAM file is reopened
with attributes or options that conflict with attributes, options, or
parameters previously specified for
it. For example, if a file originally
opened with a LINESIZE of 100 is
subsequently reopened with a LINESIZE
of 131, the UNDEFINEDFILE condition
will be raised if the DCB sUbparameter
BLKSIZE is not specified on the DD
card, or if it is specified as less
than 132. Difficulties of this nature
can be avoided by the use of different
file names, or by using the same file
name
with
different TITLE option
specifications.
(I)
(2) The UNDEFINEDFILE condition is raised
not only by
conflicting
language
attributes (such
as
DIRECT
with
PRINT), but also by the following:
Ca) Block size smaller than record
size.
This
condition is not
raised
if
spanned
(VSor
VBS-format) records are used.
(b) LINESIZE
maximum.
exceeding
the permitted
(f) Attempting to open an INDEXED data
set for DIRECT OUTPUT.
(g) Attempting to open a CONSECUTIVE
data set with DIRECT or KEYED
attributes.
(h) Specifying an RKP option, for an
INDEXED data set, with a value
resulting in KEYLEN+RKP exceeding
LRECL.
(i) Specifying
a
V-format logical
record length of less than 18
bytes for STREAM data sets.
(j)
Specifyingl for F-format blocked
records, a block size which is not
an
integral
multiple
of the
recordsize.
(k)
Specifying~ for V-format
records,
a logical record length that is
not at least four bytes smaller
than the specified block size.
(1)
Attempting to open a paper-tape
reader for OUTPUT or UPDATE.
(m) Attempting to open a file with the
UNBUFFERED attribute for blocked
records.
(n) Attempting to use blocked records
in the system input stream (SYSIN
DD DATA or SYSIN DD *) with an
UNBUFFERED
file.
The default
record format for the system input
stream is FB-format.
Since this
stream is not checked on input,
the presence of FB-format records
will not be detected until an
attempt is made to open the file,
when UNDEFINEDFILE will be raised.
~Q£~~
If the UNDEFINEDFILE condition
raised because either the key
length or the block size is not specified, a subsequent attempt to open the
file will not raise this condition
again.
1S
(I)
(c) Blocked records specified for REGIONAL organization.
(d) U- or V-format records specified
fOI
INDEXED,
REGIONAL(1),
or
REGIONAL(2) organizations.
(e) KEYLEN not specified for creation
of
INDEXED,
REGIONAL(2),
or
REGIONAL(3) data sets.
112
(3) If a file is to be used for both input
and output, it must not be declared
with either the INPUT or the OUTPUT
attribute. The required option can be
specified on the
OPEN
statement.
Th~re must be no conflict between file
attributes specified in the declaration and those specified by the OPEN
statement.
(4) Input/output lists must be surrounded
by a pair of parentheses: so must
iteration lists. Therefore, two pairs
of outer parentheses are required in
GET LIST «A(I) DO I=1 TO N»:
(5) The last eight bytes of a source key
to access a regional data set must be
the character string representation of
a fixed decimal integer. When gener~
ating the key, the rules for arithmetic
to character string conversion
should be considered.
For example,
the following group would be in error:
PUT EDIT (A) (A(5)"F(5,2»;
(11)1 Arrays are transmitted in row rna jor
order (e.g., A(1,1), A(1,2), A(1,3),
A(2,1),
etc.)
The
default
for
I
is
FIXED
BINARY(15,0), which requires not Sbut
9 characters to contain the character
string representation of the arithmetic values.
Note that the file must have the KEYED
attribute if the KEY, KEYFROM, or
KEYTO options are to be used in any
input/output statement referring to
that file.
(7) The standard file names SYSIN and
SYSPRINT are implicit only in GET and
PUT statements. Any other reference,
such as those in ON statements or
RECORD-oriented
input/output statements, must be explicit.
(S) PAGESIZE and LINESIZE are not file
attributes, that is, they cannot be
included in a DECLARE statement for
the file: they are options on the OPEN
statement.
(9) When an EDIT-directed data list is
exhausted, no fu~ther format items
will be processed, even if the next
format item does not require a matching data item. For example:
DCL A FIXED(5),
B FIXED(5,2);
GET EDIT (A,B) (F(5).F(5,2),X(70»;
The X(70) format item will not be
processed. To read a following card
with data in the first ten columns
only, the SKIP option can be used:
GET EDIT (A,B) (F(5). F(5,2»
DCL 1 A,
2 B CHAR(5),
2 C FIXED(5,2);
B will be matched with the A(5) item,
and C will be matched with the F(5,2)
item.
DCL KEYS CHAR(S);
DO I=1 TO ~O:
KEYS=I:
WRITE FILE(F) FROM (R)
KEYFROM (KEYS);
END;
(6 )
number of scalar elements in the array
or structure; thus if more than one
format item appears in the format
list, successive elements will
be
matched with successive format items.
For example:
SKIP;
(10) The number of data items represented
by an array or structure name appearing in a data list is equal to the
(12) Strings used as input data for GET
DATA and GET LIST must be enclosed in
quotation marks.
(13) The 4S-character representation of a
semicolon ( •• ) is not recognized as a
semicolon if it appears in a DATAdirected
input stream; the 11-S-6
punch must be used.
(I)
(14) If a new record is added by DIRECT
access to an INDEXED data set whose
overflow areas are already full, a
record will be irretrievacly lost.
The position of the new record, in
relation to the existing records on
the track, will determine whether it
is the new record or an existing one
which is lost.
If the new record
would follow the last existing record
on tbe track, the new record will be
lost.
otherwise, the last existing
record on the track will be lost.
In
either case, the KEY condition will be
raised.
(15) The user must be
aware
of
two
limitations of PUT DATA;
(i.e., no
data list). Firstly, its use with an
ON statement is restricted because the
data known to PUT DATA would be the
data known at the point of the ON
unit. Secondly, and more serious. the
data will be put out as normal datadirected output, which means that any
unallocated or unassigned data may
raise a CONVERSION or other cond-i tiona
If the ON-unit
ON ERROR PUT DATA;
is used in an outer block, it must be
remembered that variables in inner
blocks are not known and therefore
programming Techniques
113
will not be dumped.
It would be a
good practice, therefore, to repeat
the ON-unit in all inner blocks during
debuggL1g.
If an
error
does
occur
during
execution of the PUT DATA statement,
and this statem9nt is within an ON
ERROR unit,
the program will recursively enter the ERROR unit until no
more storage remains for the DSA.
Since
this
could be wasteful of
machine time and printout, the ERROR
unit should be turned off once it is
activated.
Instead of:
ON ERROR PUT DATA;
ON ERROR BEGIN;
ON ERROR SYSTEM;
PUT DATA;
END;
When PUT DATA is used without a datalist every variable known at that
point in the program is transmitted in
data-directed output format to the
specified
file.
Users
of
this
facility, however, should note that:
(16) Qse_2f_!2£~~~_~2Q~I~Q.
A pointer set
in READ SET or LOCATE SET may not be
valid beyond the next operation on the
file, or beyond a CLOSE statement.
In
OUTPUT files, wRIrE and LOCATE statements can be freely mixed.
For UPDATE files, the REWRITE statement with no options must be used if
it is required to rewrite an updated
record. The result of this REWRITE is
always to rewrite the contents of the
last buffer onto the data set.
For example:
114
3
READ FILE (F) SET (P);
5
P->R
7
REWRITE FILE (F);
S;
15
REWRITE FILE (F);
~9
REWRITE FILE (F) FROM (X);
There are two cases where it is not
possible to check for the KEY condition
on a LOCATE statement until
transmission of a record is attempted.
(This will generally occur on execution of the next PL/I output statement
for this file.)
a) Uninitialized FIXED DECIMAL data
may raise the CONVERSION condition or a data interrupt.
Unallocated CONTROLLED data will
cause arbitrary values to be
printed and,
in the case of
FIXED DECIMAL,
may raise the
CONVERSION condition or a data
interrupt.
READ FILE (P) INTO (X);
Statement 7 will rewrite a record
updated in the buffer.
Statement 15 will only
rewrite
exactly what was read, i.e.# it
will not change the data set at
all.
ERROR,
Statement 19 will raise
since there is no preceding
READ statement.
better code would be:
b)
~1
These are:
1.
When there is insufficient room
specified region to output the
on a REGIONAL(3) V- or U-format
Neither the record raising the
tion nor the current record are
mitted.
2.
When the embedded key differs from the
KEYFROM in an ISAM file.
in the
record
file.
conditrans-
If this LOCATE statement is to transmit the last record before the file is
closed,
in case 1, the record is not
transmitted, and in the second case,
the embedded key is overwritten with
the KEYFROM string, and the record is
transmitted.
Thus the condition may be raised by a
CLOSE statement or by an END statement
that causes implicit closing.
Until
the error is corrected,
the record
cannot be transmitted nor can any
further operation be carried out on
the file.
If a LOCATE statement was used in the
addition of KEYED records to any type
of REGIONAL data set then. if RECORD
condition is raised,
the key value
presented
at subsequent operations
must not be less than the current one.
(18) Allocation and ffe~ing of BASED Variables: If a reference is made, at
object time, to a BASED variable that
has not been allocated storage, an
unpredictable interrupt (protection,
addressing
or
specification)
may
occur.
use of input/output facilities; and additional hints.
(19) Areas, pointers, offsets and structures containing any of these cannot
be used with STREAM I/O.
PUT DATA
cannot be used with BASED variables.
The following measures are suggested for
use where compilation time is an important
factor.
When a BASED variable is freed, the
associated pointer no longer contains
useful information. This pointer can
only be used again if:
1.
2.
It is re-allocated with the
another BASED variable, or,
A value is assigned to
offset or another pointer
same
or
(2) Keep
it from an
A BASED variable allocated in an
must be freed in that area.
example:
area
For
DCL A AREA, B BASED (X);
ALLOCATE B IN (A);
FREE B;
FREE B IN (A);
LEGAL
the number of BEGIN blocks and
procedures to a minimum. Do not use
BEGIN-END to effect statement grouping; this is more simply obtained by
use of DO-groups.
(3) Try
to avoid
LIST,
DECK,
options.
using the ATR, XREF,
and
CHAR48 compiler
(4) Avoid features which give rise to
large dictionary entries and large
amounts of text. For example,
1* ILLEGAL */
/*
(1) Allocate as much storage to the compiler
as
possible,
using
the
SIZE=999999 option on the EXEC statement. This reduces the chances of
bringing the spill mechanism
into
operation.
DCL A PIC '(4000)X';
*/
occupies
block.
In PL/I there are often several different ways of producing a given effect. One
of these ways will usually be more efficient from a particular point of view than
another, depending largely on the method of
implementation of the language features
concerned.
However, it should be realized
at the outset that a primary cause of
program inefficiency occurs at the problem
definition stage, before any actual programming is done: PLII cannot be used to
full
advantage
unless the problem is
defined in terms of PL/I.
The purpose of this section is to help
the programmer make the best use of the
PL/I (F) Compiler. The first two parts are
presented from two different viewpoints:
a.
Improving the speed of compilation
b.
Improving the speed of execution.
The remainder of the section is of common
interest, and deals
with
methods
of
decreasing the dictionary size: use of
storage; use of compile-time facilities;
one
complete
dictionary
(5) Use of the following features causes
optional compiler phases to be loaded:
ALLOCATE, LIKE, USES/SETS. CHECK, iSUB
defining,
built-in
functions
with
aggregate arguments, GENERIC
entry
names, DELAY/DISPLAY. If any of these
features can be completely avoided
without
extensively increasing the
source code, there will be a corresponding increase in compilation speed.
(6) On re-runs, further slight increases
in efficiency can be obtained by
(a) removing all
and data;
unreferenced
labels
(b) correcting §!ll source errors, and,
where possible, m1n1m1zing
the
number of diagnostic messages produced, including such messages as
"FILE/STRING
option missing in
GET/PUT statement";
(c) subdividing the program if the
auxiliary storage has been used:
(d) specifying the NOSOURCE option:
(e) specifying the FLAGS option.
Programming Techniques
115
See also
tionary.
2.c.
Decreasing Size of Dic-
(6) Avoid
extensive use of adjustable
arrays and/or CONTROLLED storage.
(7) Use
constants
wherever
instead of expressions.
The following measures are suggested for
use where execution time is an important
factor.
Note that while some of these
measures may slow down the compilation,
this is offset by the fact that others will
accelerate it.
In the main, there should
be no serious increase in compilation time.
(1) Make use of the OPT=01 option.
the STMT option.
possible
(8) Exercise care in specifying precision.
For example,
DCL A FIXED DEC(8,4),
B FIXED DEC(10,2),
C FIXED DEC(10,1);
Avoid
C=A+Bi
(2) Avoid unnecessary program segmentation
and block structure; all procedures,
ON-units and BEGIN blocks need prologues and epilogues, the initialization
and housekeeping for which carry a
considerable overheado
(Prologues and
epilogues are described in Appendix C
of this publication.) Whenever possible, use GOTO or IF statements to
control program logic, rather than the
CALL statement.
(3)
Branching in IF statements can be
improved by using DO and END statements to bracket a THEN clause, rather
than using a GOTO statement in the
THEN clause. For example:
IF A=B THEN DO;
C=D;
E=F;
END;
L: etc.
is more efficient than
IF A,=B THEN GO TO L;
C=D;
E=F;
L: etc.
(4) When GO TO is used in an IF st~tement,
more efficient object code is produced
by tha GO TO if it refers to a label
within the same block rather than to a
label outside the block.
(5) Keep IF clauses simple; separate any
multiple conditions into a series of
simple IF statements. For example:
IF A=B
THEN IF C=D
THEN IF E=F
THEN GO TO Mi
This requires almost twice as much
code
as it would if B had been
declared (10,4), because tho: evaluation of A+B requires a scale factor of
4.
(9) Use the PICTURE attribute only when
necessary.
For example, use FIXED
DECIMAL(5,2) instead of PIC'999V99'.
If a picture field is used in more
than one arithmetic operation, convert
it once and then use the new form in
each operation. This holds for any
conversion required more than once.
If it is necessary to use data with
the PICTURE attribute in arithmetic
expressions, use pictures that will be
handled in-line, as this considerably
reduces execution time. Pictures with
all 9s, a V and a non-drifting sign
are particularly useful. For example:
'999'
'$99v99'
, s99'
'V999'
(10) Internal switches and counters, and
data involved in substantial computation or used for subscripts, should be
declared BINARY; data required for
output should be kept in DECIMAL form.
(11) Keep data conversions to a minimum.
Some possible methods follow:
(a) Use additional variables.
For
example, if a problem specifies
that a character variable has to
be regularly incremented by 1,
DCL CTLNO CHAR(18);
is more efficient than
CTLNO = CTLNO+1;
IF (A=B)&(C=D)&(E=F)
THEN GO TO Mi
116
requires two conversions, while
DCL CTLNO CHAR(S),
DCTLNO DEC FIXED:
(c)
DCTLNO=DCTLNO+1:
CTLNO=DCTLNO:
DCL SW BIT(S) INIT('1·B):
IF SW
'10000000'B THEN DO;
requires only one conversion.
(b) Take special care to make structures match when it is intended to
move data from one structure to
another.
(c) Avoid mixed mode arithmetic, especially the
use
of
character
strings in arithmetic
calculations.
2.
M~l~~E1e s~~~ches
(a)
DCL B BIT(8);
B
(12) Declare arrays in the procedure in
which they are used, instead of passing them as arguments. Declare subscript variables in the block in which
they are used, as FIXED BINARY.
(13) In multiple assignments to subscripted
variables, restrict the assignment to
three variables.
'11100000'B:
IF B
(b)
(14) If a subscripted item is referred tc
more than once with the same subscript, assign the element to a scalar
variable:
THEN DO;
DCL B BIT(3);
B
R={A(I)+1/A(I»+A(I)**A(I) ;
'11~OOOOO'B
'111'B;
IF B =
'11~'B
THEN DO;
should be replaced by
ASUB=A(I)i
R=(ASUB+1/ASUB)+ASUB**ASUB;
(15) Bit strings should, if possible, be
specified as multiples of eight bits.
Bit strings used as logical switches
should be specified according to the
number of switches required.
In the
examples below, (a) is preferable to
(b), and (b) to (c):
(a)
DCL SW BIT(1) INIT ('1'B);
IF SW THEN DO:
(c)
DCL R2
I
Rl < R2
I Rl > R2
1
~--------+-------------+------------------+------------------+-------------~
1
F
1 Truncate R2 1 Excess Rl
1 Excess R2
1 Truncate Rl 1
1
1
I length undefined#1 length undefined 1
I
~--------+-------------+------------------+------------------+-------------~
1 U V vs 1 Truncate R2*1
1
1 Truncate Rl I
1 VBS
I
I
I
1
I
~--------~-------------~------------------~------------------~-------------~
IR1: Length of record variable
I
IR2: Actual or maximum length of data set record
1
11
If record variable is a VARYING string, then its current length
1
1
is set equal to MIN(R 2 , maximum length of record variable).
1
12
Rl=current length if the record variable is a V~RYING string.
1
1*
If U-format and the file is UNBUFFERED (and requires no hidden
1
1
buffers), truncation occurs, but the RECORD condition cannot be
I
I
raised since this condition cannot be detected.
1
1#
A short record read from the data set will raise the TR~NSMIT
1
1
condition; the RECORD condition is raised only if the length of
I
L
1__________________________________________________________________________
the record variable does not equal LRECL.
J1
1
I Record 1
.Figure 28.
Situations under which RECORD Condition is raised in RECORD-Oriented I/O
1.
File is SEQUENTIAL INDEXED
2.
RKP
3.
The statement was a REWRITE
*
(2)
the
the
not
the
key
The
the
Input/Output Error Recovery:
When
I/O
transmission
errors
are
encountered,
exhaustive recovery procedures are performed automatically by data management, so
that, upon entry to a TRANSMIT ON-unit, it
is unnecessary and impossible to perform
further transmission error correction procedures. Synchronization of transmission
errors and entry to relevant ON-units can
only be guaranteed for input errors.
~n
output operation error will be detected in
a succeeding output operation, the particular one being dependent upon the blocking
factor and the number of allocated buffers.
g.
(1)
Additional Hints
Operating System and Job Control
External procedures, but not internal
procedures, are treated as separate control
sections.
126
(a) Do not rely too heavily on default
attributes. Explicit declarations
help to clarify the source program
logic, and in some cases (for
example# preciSion) reduce
the
chance of error.
0
if the KEY condition is raised because
embedded key in the record variable or
buffer (if there is no FROM option) is
equal to the embedded key provided on
preceding READ, then ONKEY returns the
of the record provided by the READ.
length of this key is the length of
data set.
Declarations and Attributes
(b) Variables declared FIXED BINARY or
FLOAT BINARY are
automatically
aligned on the proper word boundary, regardless of whether they are
single or part of an aggregate.
FIXED DECIMAL variables are stored
in packed decimal format and the
System/360 decimal
instructions
are used in operations involving
them.
FLOAT DECIMAL variables are
stored in floating-point format;
operations involving them are carried out using the floating-point
instruction set.
(3)
~ssignments
and Initialization
(a) High order zeros will be inserted
if required on assignment to or
initialization of an arithmetic
variable:
DCL A FIXED DECIMAL (5,2) INIT (12);
/*~ HAS VALUE 012.00*/
DCL B FIXED BINARY (15,0);
B=12;
/*B HAS VALUE 000000000001100B*/
(b)
~rrays
may
be
ini tial ized
by
assignment
sion:
DCL
from
a scalar expres-
A(10)~
A=O~
The scalar value will be assigned
to each element of the array.
Similarly, when a scalar expression is assigned to a structure,
its value will be assigned to each
element of the structure:
DCL IB,
2 C BIT(l),
2 D CHAR(l),
2 E CHAR (4);
B=O;
As a result of this assignment,
the values of the various elements
will be:
(4)
It is possible to transfer from within a
DO loop to a label on the END statement for
the group. This has the effect of incrementing the control variable without intermediate processing; control will not fall
through. It is also possible to transfer
out of an iterative DO group before the
terminating value of the control variable
is reached.
(5)
Functions
The arguments in a function reference
can be modified by the function.
(6)
ON-conditions and ON-units
Note the scope of condition prefixes:
(SIZE):A:PROC;
'O'B
C
D
'b'
E
'bbbO'
(NOSIZE):IF M>N THEN DO;
J=E+F;
END;
DO Groups
Iterations can step backwards., and the
expression in the WHILE clause can refer to
the control variable, e.g.,
DO I=N+2*L BY
END;
-x
WHILE (1)0);
The control variable can be modified within
the loop.
END A;
In the above example, SIZE is disabled
only during the evaluation of
the
expression M>N; SIZE is enabled for the
assignment J=E+F.
Programming Techniques
127
TESTING PROGRAMS
Programs can be checked using the debugging facilities provided by PL/I. When the
user is satisfied that his program is
working
correctly, debugging statements
should be removed from the source deck,
which is then recompiled to produce an
optimum object program ready for execution.
The ONCODE built-in function may be used
by the programmer in any ON-unit to determine the nature of the errqr or condition
which caused entry into that ON-unit.
DEBUGGING FACILITIES
certain language features are provided
in PL/I to assist the programmer to debug
his program. The facilities include:
Control over
handling
Standard system action for an ERROR
condition raised in a non-tasking environment causes the FINISH condition to be
raised.
interruptions
and
error
The ability to obtain a trace of active
procedures
An ON-unit, which has been established
by the execution of an ON statement, is
entered when the associated ON-condition is
raised during execution of PL/I compiled
code or of a PL/I library module. Thus,
for example, a FIXEDOVERFLOW ON-unit would
be entered whenever any of the conditions
occur for which the language demands the
raising of the FIXEDOVERFLOW condition.
Symbolic output
communication
execution
with
the program during
The use of specific language features
proviies the debugging facilities; in addition, the programmer may use his own techniques, such as inserting PUT statements at
selected points.
Two ON-conditions, ERROR and FINISH,
require special explanation.
The ERROR
condition is raised:
1.
Upon execution
statement
2.
As a result of system action for those
ON-conditions for which the language
specifies system action to be "comment
and raise the ERROR condition"
3.
As a result of an error (for which
there is no ON-condition) occurring
during program execution
Control of Interruption and Error Handling
Some conditions may be enabled or disabled by means of the prefix option feature,
full details of which can be found in the
publication IBM System/360 Operating System, PL/I Reference Manua~.
In association with this, the programmer
may specify his own exit (to be taken when
a particular condition occurs) or may cause
an interruption by means of the SIGNAL
statement. In particular, attention should
be paid to the CHECK condition, as this
enables the programmer to maintain a close
watch on any variables he wishes to nominate.
Should the programmer wish to exercise
control of a more general nature, he may
make use of the ERROR condition and, in his
"ON-unit" further analyze the program by
means of the ONCODE and ONLOC functions.
128
of
a
SIGNAL
ERROR
The FINISH ccndition is raised:
1.
Upon execution of a SIGNAL
STOP, or EXIT statement
FINISH,
2.
Upon normal completion of
procedure of a PL/I program
3.
Upon completion of the action associated with the raising of the ERROR
condition, except when a GO TO statement in the ON ERROR unit has resulted
in transfer of control out of that
unit
the MAIN
As a general rule,
the value of the
ON-code returned by the ONCODE function is
that of the specific condition which caused
entry into the ON-unit.
Thus,
in an ON
CONVERSION unit, the programmer can expect
an ON code corresponding to one of the
conversion conditions which cause the CONVERSION condition to be raised in PL/I.
However,
this is not necessarily true when
executing an ON ERROR or an ON FINISH unit;
the values are as follows:
1.
2.
When entered as a result of a SIGNAL
ERROR or a SIGNAL FINISH, STOP or EXIT
statement. or as a result of normal
termination, the ON code values will
be those of ERROR or FINISH respectively.
When entered for any other reason, the
ON code value will be that associated
with the error or condition which
originally caused the ERROR condition
to be raised.
The ON-codes and their associated conditions and errors are shown below.
The
groups and their ON-code ranges are shown
in
Figures
29 and 30.
Language ONconditions are shown in capitals, others in
lower case letters.)
Condition/Error
o
3
4
9
10
20
21
22
Several separate but related occurrences
may cause a particular PL/I ON-condition to
be raised.
For example, the TRANSMIT condition may be raised:
1.
By execution
statement
2.
By occurrence
error
3.
By occurrence of
error
of
SIGNAL
a
of
an
an
TRANSMIT
input TRANSMIT
output
TRANSMIT
Although it is often useful to know precisely what caused an ON-condition to be
raised,
at times it will be sufficient
simply
to know which ON-condition was
raised. This will apply particularly if
the ONCODE function is used in an ERROR
ON-unit after system action has occurred
for an ON-condition.
The ON codes have
therefore been grouped, each group containing the codes associated with a particular
ON-condition.
From time to time i t may become necessary or desirable to add new ON-codes into
a group.
Perhaps a group containing one
ON-code only may be expanded.
rhis fact
must be remembered when the ONCODE function
is used to determine if a particular PL/I
ON-condition has been raised.
It is important to test to see whether the ON-code is
within the range specified, even if there
is only one ON-code in the range;
otherwise, when a new set of library modules is
used, it may become necessary to recompile
the program.
When a group contains only one ON-code
value, it is impossible to test specifically for the signaled condition.
With
more than one ON-code in the group,
the
first in the group represents the signaled
condition, provided the program was compiled using a compiler which was released
at the same time as the library in which
the expansion of the group first appeared.
23
24
40
41
42
50
51
52
53
54
55
56
57
70
80
81
82
83
84
85
90
300
310
320
330
340
341
350
360
361
362
500
510
511
520
600
601
602
603
604
ONCODE function used out of context
Source program error
FINISH
ERROR
NAME
RECORD (signaled)
RECORD (record variable smaller than
record size)
RECORD (record variable larger than
record size)
RECORD (attempt to write zero length
record)
RECORD (zero length record read)
TRANSMIT (signaled)
TRANSMIT (output)
TRANSMIT (input)
KEY (signaled)
KEY (keyed record not found)
KEY (attempt to add duplicate key)
KEY (key sequence error)
KEY (key conversion error)
KEY (key specification error)
KEY (keyed relative record/track
outside data set limit)
KEY (no space available to add keyed
record)
END FILE
UNDEFINEDFILE (siqnaled)
UNDEFINEDFILE (attribute conflict)
UNDEFINEDFILE (access method not
supported)
UNDEFINEDFILE (blocksize not
specified)
UNDEFINEDFILE (file cannot be
opened, no DD card)
UNDEFINEDFILE (error initializing
REGIONAL data set)
ENDPAGE
OVERFLOW
FIX EDOVER FLOW
ZERODIVIDE
UNDERFLOW
SIZE (normal)
SIZE (1/0)
STRINGRANGE
AREA raised in ALLOCATE statement
AREA raised in assignment statement
AREA signaled
CONDITION
CHECK (LABEL)
CHECK (VARIABLE)
SUBSCRIPTRANGE
CONVERSION (internal) (signaled)
CONVERSION (I/O)
CONVERSION (transmit)
CONVERSION (error in F-format input)
CONVERSION (error in F-format input)
(I/O)
Testing Programs
129
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
130
CONVERSION (error in F-format input)
(transmit)
CONVERSION (error in E-format input)
CONVERSION (error in E-format input)
(I/O)
CONVERSION (error in E-format input)
(transmit)
CONVERSION (error in B-format input)
CONVERSION (error in B-format input)
(I/O)
CONVERSION (error in B-format input)
(transmit)
CONVERSION (character string to
arithmetic)
CONVERSION (character string to
arithmetic) (I/O)
CONVERSION (character string to
arithmetic) (transmit)
CONVERSION (character string to bit
string)
CONVERSION (character string to bit
string) (I/O)
CONVERSION (character string to bit
string) (transmit)
CONVERSION (character to picture)
CONVERSION (character to picture)
(I/O)
CONVERSION (character to picture)
(transmit)
CONVERSION (P-format input decimal)
CONVERSION (P-format input decimal) (I/O)
CONVERSION (P-format input decimal) (transmit)
CONVERSION (P-format input character)
CONVERSION (P-format input character) (I/O)
CONVERSION (P-format input character) (transmit)
CONVERSION (P-format input sterling)
CONVERSION (P-format input sterl ing) (I/O)
CONVERSION (P-format input sterling) (transmit)
Attempt to read output file
Attempt to write input file
GET/PUT string length error
Unacceptable output transmission
error
Print option on non-print file
Message length for DISPLAY statements zero
Illegal array datum data-directed
input
REWRITE not immediately preceded by
READ
GET STRING -- unrecognizable data
name
Unsupported file operation
File type not supported
Inexplicable I/O error
outstanding READ for update exists
No completed READ exists - incorrect
NCP value
Too many incomplete I/O operations
1015
1016
1017
1018
1019
1500
1501
1504
1505
1506
1507
1508
1509
1510
1511
1514
1515
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
2000
2001
3000
3001
3002
3003
3004
3005
3006
3798
3799
3800
3801
3900
3901
3902
3903
EVENT variable already in use
Implicit-OPEN failure - cannot proceed
Attempt to REWRITE out of sequence
ERROR condition raised if end-offile is encountered before the
delimiter while scanning listdirected or data-directed input, or
if the field width in the format
list of edit-directed input would
take the scan beyond the end-offile,.
Attempt to close file not opened in
current task
Short SQRT error
Long SQRT error
Short LOG error
Long LOG error
Short SIN error
Long SIN error
Short TAN error
Long TAN error
Short ARCTAN error
Long ARCTAN error
Short ARCTANH error
Long ARCTANH error
Invalid exponent in short float
integer exponentiation
Invalid exponent in long float
integer exponentiation
Invalid exponent in short float
general exponentiation
Invalid exponent in long float general exponentiation
Invalid exponent in complex short
float integer exponentiation
Invalid exponent in complex long
float integer exponentiation
Invalid exponent in complex short
float general exponentiation
Invalid exponent in complex long
float general exponentiation
Invalid argument in short float
complex ARCTAN or ARCTANH
Invalid argument in long float complex ARCTAN or ARCTANH
Unacceptable DELAY statement
Unacceptable use of the TIME builtin function
E-format conversion error
F-format conversion error
A-format conversion error
B-format conversion error
A-format input error
B-format input error
Picture character string error
ONSOURCE or ONCHAR out of context
Improper return from CONVERSION
ON-unit
Structure length ~ 16**6 bytes
Virtual origin of array ~ 16**6 or ~
-16**6
Attempt to wait on inactive and
incomplete event
Task variable already active
Event already being waited on
Wait on more than 255 incomplete
events
r-----------T---------------------------------,
Range
I
Group
I
I
~-----------+---------------------------------~
3-5
I As for 1000-9999
I
I 10-199
I I/O ON-conditions
I
I 300-399
I Computational ON-conditions
I
I 500-549
I Program check-out conditions
I
I 600-899
I Conversion conditions
I
1000-9999 I _________________________________
Error conditions (also 3-5)
Il ___________
JI
I
~
Figure 29.
Main ON-Code Groupings
r-----------T-------------------------T-----------T-----------------------------------,
Range
I
Group
I
Range
I
Group
I
I
~-----------+-------------------------+-----------+-----------------------------------~
0
I ONCODE
I 510-519
I CHECK
3
I Source program error
I 520-529
I SUBSCRIPTRANGE
4
I FINISH
I
I
9
I ERROR
I 530-599
I (Unallocated)
10-19
I NAME
I 600-899
I CONVERSION
I 20-39
I RECORD
I 900-999
I (Unallocated)
I 40-49
I TRANSMIT
I 1000-1199 I I/O errors
I 50-69
I KEY
I 1200-1499 I (Unallocated)
I 70-79
I ENDFILE
I 1500-1699 I Data processing errors
I 80-89
I UNDEFINEDFILE
1700-1999 I (Unallocated)
I 90-99
I ENDPAGE
2000-2099 I Unacceptable statement errors
I 100-299
I (Unallocated)
2100-2999 I (Unallocated)
I 300-309
I OVERFLOW
3000-3499 I Conversion errors
I 310-319
I FIXEDOVERFLOW
3500-3799 I (Unallocated)
I 320-329
I ZERODIVIDE
3800-3899 I Structure and array errors
I 330-339
i UNDERFLOW
3900-3999 I Tasking errors
I 340-349
I SIZE
4000-8090 I (Unalloca ted)
I 350-359
I STRINGRANGE
8091-8199 I Program interrupt errors
I 360-369
I AREA
8200-8999 I (Unallocated)
I 370-499
I (Unallocated)
9000-9999 I System errors
Il ___________
500-509
I _________________________
CONDITION
___________ LI ___________________________________ JI
I
I
I
I
I
~
Figure 30.
3904
3905
3906
3907
3908
8091
8092
8093
8094
8095
8096
8097
9000
9002
~
Detailed ON-Code Groupings
Active event variable as argument
to COMPLETION pseudo-variable
Invalid task variable as argument
to PRIORITY pseudo-variable
Event variable active in assignment
statement
Event variable already active
Attempt to wait on an I/O event in
wrong task
Invalid operation
Privileged operation
EXECUTE statement executed
Protection violation
Addressing interruption
Specification interruption
Data interruption
Too many active ON-units and entry
parameter procedures
Invalid free storage (main
procedure)
statement. However, this technique has the
limitation that it records only procedures
which are active at the time when the
condition occurs, because of the use of
dynamic
storage;
when the storage is
released it is immediately available for
some other use, and so cannot be used to
maintain a full trace.
If a full flow
trace is required, then this should be
programmed, either by means of the SIGNAL
statement in association with an ON statement and ON-unit, or by specifying all
procedure names in a CHECK list with the
appropriate action in an ON-unit.
The format of the SNAP output is
of the following:
1.
CONDITION xxxx OCCURRED
hhhhh FROM ENTRY POINT E1
2.
CONDITION xxxx OCCURRED AT OFFSET ±
hhhhh FROM ENTRY POINT OF xxxx ON-UNIT
Trace of Active Procedures
A trace of active procedures may be
obtained by use of the SNAP option in an ON
either
AT OFFSET ±
Testing Programs
131
followed by:
CALLED FROM PROCEDURE WITH ENTRY POINT
E2
CALLED FROM PROCEDURE WITH ENTRY POINT
E3
etc., etc.
If the statement number compiler option
is specified, the SNAP output message will
also contain IN STATEMENT nnnnn immediately
following the word OCCURRED in the first
line, or after the word CALLED in subsequent lines. The notation nnnnn gives the
number of the statement in which the condition occurred.
The characters that replace xxxx are an
abbreviated form of the name of the ONcondition
which
has
occurred
(the
abbreviations are given in Figure 31).
hhhhh is a hexadecimal offset; El,
E2,
etc., are entry point names indicating the
actual entry points used to enter the
procedure in which the condition occurred,
or from which the next named entry point
was called.
If a condition occurs in an ON-unit,
then the entry point name in the second
line will be that of the procedure from
which the ON-unit was entered, not necessarily the procedure in which the ON-unit
is situated.
r--------------------T--------------------,
Condition
I
Abbreviation
I
I
~--------------------+--------------------~
OVERFLOW
OFL
SIZE
SIZE
F IXEDOVE'R FLOW
FOFL
SUBSCRIPTRANGE
SUBRG
CHECK
CHCK
CONDITION
COND
FINISH
FIN
ERROR
ERR
ZERODIVIDE
ZDIV
UNDERFLOW
UFL
STRINGRANGE
STRG
NAME
NAME
RECORD
REC
TRANSMIT
TMIT
I
KEY
KEY
I
ENDFILE
ENDF
I
UNDF
UNDEFINEDFILE
I
CONVERSION
CONV
I
ENDPAGE
ENDP
L- __________________
_
IL ____________________
Figure 31.
CALLED FROM PROCEDURE WITH ENTRY POINT
E2
etc.
The one exception is the case of SNAP
SYSTEM for the CHECK conditions.
In these
cases a standard SNAP message will be
written, followed by the standard system
action print-out for the CHECK condition.
symbolic output
The data-directed input/output features
may be used instead of, or in addition to,
the CHECK condition handling. The programmer may use data-directed output to obtain
status information in terms of the symbols
used in the source program. Refer to the
publication IBM System/360 Operating System'I PL/I: Refrence Manual., for a full
description of this feature.
communication with the Program
The DISPLAY statement provides a means
of communicating with the program while it
is being executed.
The two forms in which an operator
message can appear on the typewriter are as
follows:
Without the REPLY option, which gives
the unaltered character string specified by the programmer.
With the REPLY option, which gives the
character string specified by the programmer preceded by a two-digit code
generated by the Operating System. The
operator must use this code as a prefix
to his reply message.
The EVENT option
may be used here.
User Requested Dump
An additional debugging feature is the
ability to obtain a storage dump at any
point in the program.
A dump is obtained by the statement:
Abbreviations for ON-Conditions
CALL dump identifier [ (argument) ] ;
If SNAP SYSTEM has been specified in a
programmer's ON statement,
the
system
action message described in the section
called "Object Time Diagnostic Messages"
will be printed, followed by the trace of
active procedures:
132
The
lowing
dump
identifier is one of the fol-
IHEDUMP or IHEDUMT
terminate
- dump
all core
and
IHEDUMJ
The dump will include information such
as register values, load list, contents of
PIE, and a storage dump. To help the user
interpret the dumps, a directory is printed
out at the start of each dump.
This
directory includes:
1.
The contents of the SYSPRINT
buffers, if the file is open.
2.
The name of the files currently open,
with the addresses of the relevant
control blocks.
file
3.
The name of the current file.
4.
The addresses of the save areas and of
other areas of special interest.
The argument in the CALL statement is
optional; if it is used the dump identifier
must be declared as ENTRY(FIXED BINARY).
The argument is an expression that is
evaluated at execution-time; the result is
a fixed binary integer that appears in the
heading of the dump. This integer must be
in the range 0 to 127, a number outside
this range is replaced by 127.
If no DD card is supplied, or if an
unrecoverable error is detected during the
output, e.g. incorrect chaining 'of save
areas, then a standard operating system
ABEND dump will occur and will terminate
the job step.
For more information on storage dumps
and the information they provide, see IBM
£ystem/360 Operating system: Messages, Completion Codes .and Storage Dumps,
Form
C28-6631.
User Completion Codes for Abnormal
Termination
PL/I programs can terminate abnormally
in six different ways:
1.
EXIT (abnormal termination of a task)
2.
STOP
(abnormal
program)
3.
This results in'execution of the ABEND
macro.
or IHEDUMC - dump all core and
continue processing
termination
of
6.
An
ABEND in OS/360 in the major task.
In cases (5) and (6) above, a full
storage dump will be printed, provided that
a SYSABEND DD card has been used. If no
such card exists, and MFT or PCP is being
used~ an indicative dump will be printed.
If~
in cases (1) to (5), a program
terminates abnormally in a non-tasking program. a completion code is printed out. In
the first four cases listed above, the
completion code has a value which is the
sum of a basic code plus the current value
of the return code.
(The return code can
be set by the programmer or may have a
default value of zero - see the chapter
"Managing
Programs".)
The basic code
values are:
EXIT and STOP
ERROR
CALL IBEDUMP
Interrupt in error
handler
1000
2000
3000
4000
When a program terminates abnormally with a
completion code of 4000, this means that
disastrous error has occurred, such as a
control block being overwritten.
When a program terminates abnormally
with a completion code of 3333 this means
that a disastrous error has occurred in the
dump output modules.
When the operating system terminates a
program, the user completion code is zero,
and the system completion code is the
operating system completion code.
There are two instances in which, since
execution of the program has never commenced, no user completion code is issued.
Instead, a special return code value is
generated by the PL/I library and then
passed to the return code register of the
operating system in the usual way. These
two instances, and the return codes generated, are:
the
If the ERROR condition is raised and
there is neither an ERROR ON-unit nor
a FINISH ON-unit with a GO TC statement.
4.
CALL IHEDUMP or CALL IHEDUMT.
5.
If an interrupt occurs during execution of the error handler routine.
Pseudo-register vector too long
No MAIN procedure
400L:
4008
All the 4000-series codes
mentioned
above are accompanied by a message at the
operator's console.
(For further explanation of the underlying causes of these
messages, refer to the explanations given
for each message in "Object-Time Error
Messages" in Appendix G of this publication. )
Testing Programs
133
Return Codes
Return codes are set
statement CALL IHESARC.
134
by
use
of the
APPENDIX A: DATA FORMATS
COMPILER INPUT
REPRESENTATION OF DATA
Source records must be in one of the two
following formats:
The representation of data in System/360
storage is described in the following paragraphs, together with the various permitted
precisions and lengths of such data.
Fixed-length records of logical record
length up to 100 characters. Blocked
records are acceptable.
The maximum
block size must be a multiple of the
logical record length and must be one
capable of being accommodated by the
SIZE opti on.
However,
blocked
records
are not
accepted from paper tape. Fixed-length
records on:" paper tape have a fixed
number of characters after translation;
the numberl of characters before translation is not fixed.
Undefined format records of
to 100 characters.
length
up
The format,
logical record length, and
block size may be specified in the DCB
operand in the DD statement, they may be
taken from the data set label, or they may
be implied from the occurrence of the
source file in the input stream.
If not
specified, undefined format is assumed with
a block size of 100.
In order to use the undefined format,
the identity of SYSIN must be switched to
the appropriate input device for the duration of the compilation job-step by means
of a DD statement, e~ther explicit or
cataloged,
for that job-step.
The DD
statement must specify u-type record format,
and if the input is of paper tape
origin, the appropriate translate mode must
also be specified, depending on the nature
of the tape code.
The user must ensure
that an end-of-record indication is given
by the correct code on the paper tape, with
the paper tape reader keys set correctly to
interpret the code.
In both cases the source listing option
(SOURCE) causes the complete input record
to be printed.
The SORMGIN option specifies the area
within
the record which contains PLII
source text. The rest of the record may be
used for identification purposes. If SORMGIN is not specified, the standard default
values of 2 and 72 are assumed (see the
section called "Compiler Processing" for a
description of the SORMGIN option).
Coded Arithmetic Data
By virtue of declared attributes, the
following eight types of coded arithmetic
data forms may exist:
REAL FIXED DECIMAL prec1s10n (P,Q) data
is represented in the packed-decimal format. The P. digits occupy FLOOR {(P + 2)/2)
bytes, aligned on any byte.
When P is
even, the effective precision is
(P + l,Q)
for arithmetic operations other than division. An unwanted high-order digit may
exist, therefore, and may remain undetected
and be included in further operations. It
can only be eliminated if SIZE is enabled.
The maximum precision avaialble is
15
digits.
Arithmetic operations are performed on P-digit integers, according to
the scale factor Q. The scale factor is
not directly associated in storage with the
data, but is specified in a data element
descriptor (DED) passed to the library for
operations involving the data. The default
precision is 5,0.
REAL FIXED BINARY precision (P,Q) data
is represented in the fixed-point hinary
format. The P digits occupy four bytes,
word aligned (half-word or double-word precision is not supported).
The maximum
precision is 31 digits. Arithmetic operations are performed as for real fixed
decimal data; again, the scale factor is
supplied to the library via a DED. The
default precision is 15,0.
REAL FLOAT DECIMAL precision (P) data is
represented in the hexadecimal floatingpoint format. Before and after arithmetic
operations,
the data is normalized in
storage. The maximum available precision
is 16 digits. If the specified precision
~s less
than or equal to 6, the data
occupies four bytes, word aligned (short
floating-point form).
If the specified
precision is 7 or more, the data occupies
eight
bytes, double-word aligned (long
floating-point form). The default precision is 6.
Appendix A: Data Formats
135
r-------------------T--------------------T--------------------T--------------------,
Declared
Default
Maximum
Default
I
I
attributes
I
I
attributes
I
I
precision
I
I
precision
I
I
~-------------------+--------------------+--------------------+--------------------~
I
I
I
Initial letter:
A --> H, 0 --> Z
I --> N
I
I
I
REAL, FLOAT, DECIMAL
REAL,FIXED,BINARY
I
I
I
I
I
I
6 decimal digits
15 bits
I
I
I
~-------------------+--------------------+--------------------+--------------------~
53 bits
I 21 bits
I
16 decimal digits
I 6 decimal digits
I
15 decimal digits
I 5 decimal digits
I
16 decimal digits
I 6 decimal digits
I
16 decimal digits
I 6 decimal digits
I
r-------------------+--------------------+------------ --------+--------------------~
I FIXED BINARY
I REAL
I 31 bits
I 15 bits
I
I FIXED DECIMAL
I REAL
I 15 decimal digits I 5 decimal digits
I
I FLOAT BINARY
I REAL
I 53 bits
I 21 bits
I
I FLOAT DECIMAL
I REAL
I 16 decimal digits I 6 decimal digits
I
~-----------------.--+--------------------+--------------------+--------------------~
I REAL1 FIXED
I DECIMAL
I 15 decimal digits I 5 decimal digits
I
I REAL1 FLOAT
I DECIMAL
I 16 decimal digits I 6 decimal digits
I
I REAL1 BINARY
I FLOAT
I 53 bits
I 21 bits
I
I REAL1 DECIMAL
I FLOAT
I 16 decimal digits I 6 decimal digits
I
I
I
I
I
I
BINARY
DECIMAL
FIXED
FLOAT
REAL1
I
I
I
I
I
REAL, FLOAT
REAL, FLOAT
REAL, DECIMAL
REAL, DECIMAL
FLOAT, DECIMAL
I
I
I
I
I
~-------------------~--------------------~--------------------~--------------------~
I Note 1: If COMPLEX is declared instead of REAL, the attributes are the same as
I
for REAL and are applied to each Jf the two arguments.
lI __________________________________________________________________________________
JI
Figure 32.
Attributes and Precisions for Coded Arithmetic Data
REAL FLOAT BINARY precision (P) data is
represented in the hexadecimal floatingpoint format.
Before ann after arithmetic
operations
the
data is normalized in
storage. The maximum available preclslon
is 53 digits. If the specified precision
is less than or equal to 21 the data
occupies four by-tes, word aligned (short
floating-point form).
If the specified
precision is 22 or more, the data occupies
eight
bytes, double-word aligned (long
floating-point form). The default precision is 21.
COMPLEX FIXED DECIMAL precision (P,Q)
data is represented as for REAL FIXED
The real and imaginary parts
DECIMAL.
occupy immediately adjacent fields,
the
real part first.
COMPLEX FIXED BINARY precision (P,Q)
Qata is represented as for REAL FIXED
BINARY. The real and imaginary parts occupy immediately adjacent full words, the
real part first.
COMPLEX FLOAT DECIMAL precision (P) data
is represented as for REAL FLOAT DECIMAL.
The real and imaginary parts occupy immediately adjacent full or
double
Nords,
oepending upon the precision; the real part
occupies the first field.
COMPLEX FLOAT BINARY precision (P) data
is represented as for REAL FLOAT BINARY.
The real and imaginary parts occupy immediately adjacent full or
double
words,
136
depending upon the precision; the real part
occupies the first field.
There are four types of string data:
1.
Fixed-length CHARACTER
2.
Fixed-length BIT
3.
Variable-length CHARACTER
4.
Variable-length BIT
Variable-length data has associated control areas known as "dope vectors" which
describe the strings. A dope vector contains a record of the maximum length and
the current length of the string, together
with a pointer to the beginning of the
string. Dope vectors need not be adjacent
to the data they describe, but will normally occupy storage of the same storage
class.
A string dope vector is created for all
variable-length strings.
In addition a
dope vector is created for any fixed-length
string which is an argument to either a
procedure or
a
library
routine.
A
variable-length string is addressed through
its dope vector. A fixed-length string may
be addressed directly or, if it has one,
through its dope vector. Refer to Appendix
C of this publication for a detailed
cription of string dope vectors.
des-
CHARACTER data is stored contiguously
from the left end of a field long enough to
accommodate the maximum length declared for
the string.
The leftmost byte has no
special alignment: it is this byte which is
addressed by a CHARACTER string's dope
vector.
BIT data may be either UNALIGNED or
ALIGNED.
Both are stored eight bits per
byte. Unalignment refers to the relative
location of adjacent strings, not to the
density of a single string.
Aligned data
fields occupy an integral number of bytes.
Unaligned data fields occupy only as many
bits as their maximum lengths require. BIT
data is stored contiguously from the leftmost bit of its field, and is addressed at
this leftmost bit.
represented as two immediately adjacent
byte fields, the real part first. Both
parts are described by the single picture
specification which is as described for a
REAL fixed decimal numeric field.
COMPLEX
PICTURE
(floating
decimal
picture) data - the real and imaginary
parts are represented as two immediately
adjacent byte fields, the real part first.
Both parts are described by the single
picture specification which is as described
for a REAL float decimal numeric fieln.
CHARACTER, but not BIT, string data may
be specified by a PICTURE attribute.
The
data is represented by one byte per character on a byte boundary.
The picture field contains the declared
picture specification without its surrounding quotation marks and with iteration of
characters expanded.
Pictured Data
Data Element Descriptor {DED)
Data declared with a PICTURE attribute
is stored in two fields.
One field contains the picture information, the other
the data element. The data is addressed
independently of the picture information.
Pictured data requires two addresses.
Data
of either type, arithmetic or
string, may be specified by a PICTURE
attribute. A pictured arithmetic data item
is termed a numeric field. There are five
types of numeric fields, which are described as follows:
REAL PICTURE (fixed decimal picture)
data is represented by bytes on a byte
boundary. The precision of a fixed decimal
numeric field may not exceed the limits for
the corresponding coded arithmetic form,
i.e., 15 digit positions.
REAL PICTURE (float decimal picture)
data is represented by bytes on a byte
boundary. The precision must not exceed
the limits for the corresponding coded
arithmetic form, i.e., 16 digit positions
and an exponent of P digits where P is
defined as for the exponent of an E format
item.
The format of the data element descriptor (DED) (Figure 33) is as follows:
Flags: An eight-bit encoded form
declared information (see Figure 34).
of
The P byte is the declared or default
precision of the data item. Maximum values
are:
Binary
Binary
Decimal
Decimal
Fixed:
Float:
Fixed:
Float:
31
53
15
16
The Q byte is the declared or default
scale factor of the data item in excess 128
notation (i.e., if the implied fractional
point is between the last and next to last
digit, Q will have the value 129). For
numeric fields, Q is the resultant scale
factor derived from the apparent precision
as specified in the picture, i.e., the
number of digit positions after a V picture
item as modified by an F (scale factor)
item.
The W byte specifies the number of bytes
allocated for the numeric field.
REAL PICTURE (sterling picture) data is
represented by bytes on a byte boundary.
The precision is 3 + number of digits in
the pound field + number of fractional
digits in the pence field;
this must not
exceed the limits for the coded fixed
decimal form, i.e., 15 digit positions.
The L byte specifies the number of bytes
allocated for the picture associated with a
numeric field; if the data item is string,
L occupies two bytes; if arithmetic, one
byte.
COMPLEX PICTURE (fixed decimal picture)
data - the real and imaginary parts are
The picture specification field contains
the picture declared for the data item; if
the data item is string, the picture may
Appendix A: Data Formats
137
r-----------T----------------T-----------------------------------,
I
I
I D E O Formats (in Bytes)
I
I Data Type I Representation ~-------T---T---T-----T---T---------~
I
I
I
1
I 2 I 3 I 4
I 5 I 6..... I
~-----------+----------------+-------t---t---t-----t---+---------~
I
I Fixed-point
I
I
I Ar i thmetic I Floating-point
I
I
I
I Packed-decimal
I
I
I
I
I
I
I Flags I P 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
~----------------t-------t---t---t-----t---t---------~
I
I Numeric ~ield I Flags I P I Q I W I L I Picture I
~-----------t----------------t-------t---t---t-----t---t---------~
I
I
I Unpictured
I Flags I
I
I
I
I
I
I String
~----------------t-------t---~---t-----~---~---------~
IL ___________ I ________________
Pictured
I _______
Flags I ______
L
I ___________________
Picture
JI
~
Figure 33.
~
~
~
Data Element Descriptor (OED)
r--------T---T----------T-------T----------T--------T-------T---------,
111
2
131
4
I
5
I
6
I
7
I
10
~--------t---t----------t-------t----------t--------t-------t---------~
o
I
I 0 I Unaligned! Fixed I Pictured I Bit
I
0
I
0
I
I string ~---t----------+-------t----------t--------t-------t---------~
I
I 0 I Aligned I Vary- I UnI Charac-I
0
I
0
I
I
I
I
I ing
I pictured I ter
I
I
I
1
I
,Ari thI metic
I
r--------t---t----------t-------t----------t--------+-------t---------~
I 0 I NonI
I
I sterling !
Short I Numeric
I Field
I DeciI mal
I Fixed I
I
I
Real
I
I
r---t----------t-------t----------t--------t-------t---------~
I 0 I Sterling ! Long
I Coded
I Binary I Float I Complex I
L ________ ~ ___ ~ __________ ~-------~----------~--------~ _______ ~ _________ J
Figure 34.
0
1
0
1
Eight-Bit Encoded Form of Declared Information in Flags
occupy 1 through 32,767 bytes; if arithmetic, 1 through 255 bytes. If the original
picture specification contained iteration
factors, it will have been fully expanded.
Data of type LABEL takes on the values
of statement labels. Label variables occupy a two-word field aligned to a fullword
address.
The field is used as follows:
Pointer Data
Word 1:
Word 2:
A pointer variable is stored as four
bytes aligned on a fullword boundary.
rhe
four bytes contain:
Byte 0:
Bytes 1-3:
Zero
The data is
word address.
addressed at the first full-
A (Based variable):
For null values,
X'FFOOOOOO'.
the
four bytes contain
Offset Data
An offset variable is stored in four
bytes aligned on a full word boundary. The
data consists of byte offsets.
The null
value is X'FFOOOOOO'.
138
Activation indicator
Bits 0-7
Gives nature of
activation indicator
Bits 8-31
Address of statement
in object program
A task variable is stored in a 28-byte
area aligned on a fullword boundary. The
format
is
shown
in
Figure 35.
On
allocation, the compiler initializes the
variable as follows:
Byte 0:
Zero
Byte 8-11: A(Symbol table entry)
o
31
7 8
1 2
r-T-T--------T----------------------------,
IAIDI Unused I
A(PRV VDA)
I
~-~-~--------~---------------------------~
I
A(Task control block)
I
~-----------------------------------------~
I
A(Symbol table entry)
l
~-----------------------------------------~
I
A(Event variable)
I
~--------------------T--------------------~
I
Limit priority
IDespatching priority I
~--------------------~--------------------~
I
Chain-back address
I
~-----------------------------------------~
lI _________________________________________
Chain-forward address
JI
Figure 35.
a
31
7 8
r---------T-------------------------------,
I FLAG 1 I
0
I
~---------+-------------------------------~
FLAG 2 I
ECB
I
~---------~-------------------------------~
I
Unused
I
~-----------------------------------------~
I
Unused
I
~---.----------- -----T ---- -- --------------- ~
I
Status
I Statement number
I
~---------T---------+----------T----------~
I Unused
I
MCF
I
WTF
I Unused I
I
~---------~---------~----------~----------~
I
Infinite Wait ECB
I
~-----------------------------------------~
tl _________________________________________
Wait to Terminate ECB
JI
Format of the Task Variable
eFigure 36.1.
The flags set are:
Event
Task
Variable
Used
with a
The flags set are:
A
0 TASK variable inactive
D
1 TASK variable active
0 CALL with TASK option
1 CALL without TASK option
I/O Event
1000 0000
0100 0000
0010 0000
0001 0000
Event Data
An event variable is stored in a 32-byte
area aligned on a full word boundary.
The
formats are shown in Figures 36 and 36.1.
On allocation. the compiler initializes the
variable as follows:
0000 1000
0000 0100
0000 0010
Task EVENT
0000 0000
Byte 0:
Byte 4:
status:
Flag
Zero
Zero
Zero
Zero
Active EVENT variable
EVENT
variable associated
with I/O
No WAIT required
A(FCB)
in first word of
variable
EVENT variable to be checked
DISPLAY EVENT variable
IGNORE
option
with this
event
1000
0010
0001
0000
0000
0000
0000
0001
Multitasking non-I/O EVENT
variable
Acti ve EVENT variable
Normal PL/I termination
Abnormal PL/I termination
EVENT variable being waited
on
Flag 2
o
31
7 8
r----------T------------------------------,
I FLAG 1
I
A(Event DECB/FCB)
I
~----------+------------------------------~
I FLAG 2 I
Unused
I
~----------~------------------------------~
I
Chain-forward address (task)
I
I/O EVENT
1000 0000
0100 0000
EVENT being waited for
EVENT is complete
~------------------------------------.----~
I
Chain-back address (task)
I
~-------------------T---------------------~
I
Status
I
Unuse1
I
~-------------------~---------------------~
I
Chain-forward pointer (file)
I
~-----------------------------------------~
I
Chain-back pointer (file)
I
~-----------------------------------------~
I
A(Task PRV)
l _________________________________________
JI
-Figure 36.
Event Variable Used with I/O
An area variable is stored as 16 bytes
plus the area length required;
it
is
aligned on a doubleword boundary.
The
format is shown in Figure 37.
The AD DR
function applied to an area returns the
address of the 16-byte area,
not of the
area itself.
An area is described by an
Appendix A: Data Formats
139
area dope vector (see Appendix C,
'Object
Program Organization and Conventions')
o
7 8
31
r-T------T--------------------------------,
IA!Unusedl
Length (Area)
!
~-L------i--------------------------------~
I
Length (Current extent)
!
~-----------------------------------------~
I
Offset of largest free element
I
~-----------------------------------------~
I
Unused/O
I
~-----------------------------------------~
I
I
I
I
I
Area
!
I
I
LI _________________________________________ JI
Figure 37.
A structure dope vector for a nondimensioned structure is an ordered list of
addresses of the elements of which the
major structure is composed, including the
elements of minor structures
contained
within the major structure. Minor structures do not have separate dope vectors.
The elements of a minor structure are a
contiguous subset of the elements of its
major structure, and can therefore
be
addressed from the major structure's dope
vector. If an element is an array, the
address in the structure dope vector is
replaced by the array dope vector.
An
array of variable-length strings in
a
structure would therefore be addressed as
follows:
Format of the Area Variable
The structure dope vector has an
which is an array dope vector
entry
The flag set is:
A
=
1
AREA variable contains free list.
This array dope vector points to an
array of string dope vectors
If a free list exists, the fourth word is
set to O.
Each string dope vector then points
a string
to
Arrays
Arrays of any data type described in the
section on scalars are allowed. Arrays are
stored in row-major order, in increasing
storage addresses. Except for aligned bit
strings, the elements of an array which is
not in a structure are stored contiguously.
Each array may be described by a dope
vector holding the dimension information
declared for the array.
The number of
dimensions of the array is not included in
its dope vector. The routine which refers
to the dope vector must know the number of
dimensions.
External procedures know the
number from a declaration of the parameter,
and Library routines receive the number as
an argument.
Arrays of scalars
and
fixed-length
strings are described by a single level of
dope vector.
Arrays of variable-length strings have a
dope vector which points to an array of
string dope vectors, which in turn give the
current and maximum lengths of each element
and point to the actual strings.
If a structure has a dimension attribute, it specifies an array of structures.
However, the dope vector does not pOint
through an array dope vector to an array of
structure
dope
vectors.
Instead, the
dimensionality is applied to the elements
of the structure.
The Creation of Dope Vectors
The PL/I (F) compiler produces dope
vectors in the following five circumstances:
1.
When arguments are passed to a procedure (whether internal or external).
2.
When lengths of strings or dimensions
of arrays are variable, or greater
than 256 bytes
(or 2048 bits) in
length.
3.
When a variable is DEFINED on another.
4.
When minor structures are passed as
arguments
(a subset of the major
structure will not suffice in all
cases) •
5.
When asterisk notation is used, creation
of separate dope vectors is
required for projections of arrays.
Structures
structures require dope vectors whether
they contain arrays or not.
140
APPENDIX B: IMPLEMENTATION CONVENTIONS AND RESTRICTIONS
The following implementation conventions
and restrictions apply to the operating
system/360 PL/I (F) implementation.
DISPLAY
The maximum lengths of character string
acceptable are 100 characters for the message and 72 characters for the reply. The
reply string's current length is set equal
to its maximum length and padded with
blanks if necessary.
INPUTIOUTPUT CONVENTIONS AND RESTRICTIONS
PLII and Data Sets
A PL/I program does not nominate data
sets
directly.
Instead,
under
the
System/360 operating system, it associates
a file with a job control DD statement that
identifies a data set. The file is associated with the DD statement by means of:
1.
The maximum size of a page is 32,767
lines; the minimum is 1 line. If the page
size is not specified a value of 60 lines
is assumed.
The TITLE option: This specifies the
name (up to eight characters long) of
the DD statement
The maximum and minimum line size depend
on the record format.
2.
The file name: If there is no TITLE
option, the file name (padded or truncated to eight characters) is used as
the ddname.
Associating the file with the data set
requires the merging of information describing each of them and ensuring that
there is no conflict of information on any
particular item.
At execution time the
compiler calls the PL/I library 110 modules
to handle the source program information.
The 1/0 modules generate a skeleton DCB and
insert in it, first, the file attribute
from the DECLARE and OPEN statements, and
then, any default file attributes required.
r--------T--------------------------------,
I
I
LINESIZE
I
I Record ~------------------T-------------~
I Format I
Min.
I
Max.
I
~--------+------------------+-------------~
I
V
I Non-PRINT file: 101
32,751
I
I
IPRINT file: 9
I
I
IL ________
U.F
I __________________
1
I _____________
32,759
JI
~
If a line size
default values are:
~
is not specified, the
PRINT file - 120 characters
Non-PRINT output file - no default value
The library modules then issue an OPEN
macro, which fills in the rema~n~ng DCB
fields with information from, first, the DD
statement for the data set and, then, the
data set label. Neither the DD statement
nor the data set label can override information already provided by the source program; the data set label cannot override
information provided by the DD statement.
If there are any DCB fields still not
set, default information is provided by the
PL/I library OPEN module.
SYSPRINT is normally used as a STREAM
OUTPUT PRINT file; it can be used as a
RECORD file if declared INTERNAL.
The
LINESIZE
value
determines the
logical-record length in the data set (i.e.
the value of LRECL):
F- and U-format records: LRECL
V-format records: LRECL
= LINESIZE
= LINESIZE
+
4
For PRINT files, an extra byte (for the
ASA control character) is added to each of
the above LRECL values.
If BLKSIZE is specified, its value and
the LRECL value must be compatible. If
BLKSIZE is not specified, its value is
calculated from the LINESIZE value.
Appendix B: Implementation Conventions and Restrictions
141
LINESIZE, SKIP and COLUMN in Non-PRINT
Files
Data-Directed Input/Output
LINESIZE (expression):
Evaluation of the
expression gives an integer that must be
within the limits described above. For V
and U format records, LINESIZE is the
maximum size of a line.
If a variable
LINESIZE is required, the maximum value
must be specified as the BLKSIZE in the DD
statement or in the ENVIRONMENT attribute.
Short lines are padded with blanks for F
format records only.
SKIP(expression): For output files,
action depends on the record format:
SKIP
F'-format On a short line, SKIP fills
out the remainder of the line with
blanks.
V-format SKIP puts out the current line
as a short record. If the byte count
of the line is less than 14 (18 with
control bytes), the line
will
be
blanked up to that size. Successive
lines will be of the same minimum
length, padded with blanks.
The maximum length of a qualified name,
including the separating periods, is 255
characters.
The semicolon, which is not in the
48-character set, must always be represented in the input stream by the proper 11-8-6
punch (i.e., the character sequence ,.
is
not recognized as a semicolon).
Edit-Directed Input/Output
When
using
the
E-format
output,
E (w" d., s) " s mus t be less than 1 7 digits.
When using E(w~d). j must be less than 16
digits,.
If the number of significant digits
E-format data is greater than 16, then:
in
E-format input:
CONVERSION condition
raised
E-format output: Data is truncated
U-format SKIP will put out the current
line as a short record.
Character Code
COLUMN (expression):
For input files, if
the value of the expression is greater than
the current record length, a value of 1 is
assumed.
F'or both input and output files, if the
value is less than the current position on
the line, the file is positioned at COLUMN
(value) on the next line.
For output files,
all characters from
the current position in the line to the
next position are blanked out. For U- or
V-format records, if another record is
required, a short record is put out subject
to the rules described under the SKIP
option.
Input to the object program is assumed
to be in EBCDIC mode.
48-Character Set
48-character set "reserved" words (e.g.,
GT, LE, CAT, etc.) words must be preceded
and followed by a blank or a comment. If
they are not, the interpretation by the
compiler is undefined and may not, therefore, be what the user intended.
A record containing part or all of a
48-character set reserved word must be 3
characters or mere in length.
Block Size and Record Size
The ENVIRONMENT Attribute
The maximum size of a block or a
must not exceed 32,760 bytes.
record
See the section "Structure Mapping" in
Appendix C for details of data aggregate
size requirements necessary in calculating
the record and block size for data sets
using RECORD I/O facilities.
142
The ENVIRONMENT attribute may contain
the subfields given below. Only one option
from each group is permitted.
General format of the ENVIRONMEIff attribute is:
contained in V-format records. These
items must te considered when specifying the block size and record size
subfields.
Blocked records are not
supported for UNBUFFERED files.
ENVIRONMENT([CONSECUTIVEIINDEXEDI
REGIONAL (1) \REGIONAL(2)\REGIONAL(3)]
[{VIVS\VBSIF\U} (Blocksize
[,Recordsize ])] [LEAVE I REWIND]
[BUFFERS(n)] [COBOL] [CTLASA\CTL360]
[INDEXAREA[ (m)]] [NOWRITE] [GENKEY])
VS(max-blocksize[max-recordsize])
specifies that spanned records are to
be processed. The maximum block size
can be exceeded by any logical record,
in which case the record is segmented
and written on two or more consecutive
blocks. One block is written for each
complete record, or segment, if spanning takes place.
Data set Orqanization:
There are five
types of data set organization. These are
detailed below.
CONSECUTIVE: A data set consisting of
unkeyed records, which are accessed in a
physically sequential order. This organization is assumed if none is specified.
INDEXED: A data set which consists of
keyed records, located by means of several
levels of index.
VBS(max-blocksize[max-recordsize])
specifies that spanned records are to
be processed.
The maximum block size
can be exceeded by any logical record,
in which case the record is segmented
and written on two or more consecutive
blocks. Each block is written to within four bytes of the maximum length
specified. A block can contain up to
two spanned record segments or any
number of complete records, or a mixture of both.
REGIONAL(l): A data set. which consists
of keyed records, without recorded keys,
which are located by means of relative
record positions within the data set.
REGIONAL(2): A data set which consists
of keyed records, with recorded keys, which
are located by means of relative record
positions, and by a search for a recorded
key to match the given key.
REGIONAL(3): Identical
except that positioning
relative tracks.
to
is
U(max-blocksize) specifies blocks of
varying length up to the maximum sp.ecified.
REGIONAL(2),
in terms of
Record Format: Logical records may be in
one of three formats: fixed length (format
F), variable length (format V), or undefined
(format U).
Information regarding
record format may be supplemented by the DD
statement DCB subparameters, BLKSIZE and
LRECL. The block size and record size must
be specified in bytes.
F(blocksize[,recordsize])
specifies
fixed length records with the block
size as stated. The record size may be
specified optionally, which indicates
that records are blocked (i.e., that
each physical record contains more than
one logical record). In this case, the
block size must be a simple multiple of
the record size. If the record size is
not specified, the records will not be
blocked.
Blocked records are not supported for UNBUFFERED files.
V(max-blocksize[,max-recordsize])
specifies that records are of varying
length.
A number of complete logical
records are grouped together to form a
physical record in such a way that each
physical record does not exceed the
maximum block size stated.
If the
maximum record size is specified, no
logical record may exceed this size.
Four bytes of control information per
record, plus four bytes per block, are
1.
All record formats permit the use of a
"printer
control character."
This
character appears as the initial character of each record (except for V
format, when it appears after the four
control bytes).
2.
The specification of a single parameter (blocksize) in the record format
in the ENVIRONMENT attribute is taken
to imply unblocked records.
For Fand V-format records record size is
then derived from the block size parameter and therefore overrides information supplied on the DD statement.
Data Set Positioning: The LEAVE and REWIND
options are
used
for
positioning
a
magnetic-tape volume when a data set is
closed or when a volume switch is required
in a multi-volume data set. The REWIND
option allows the DISP parameter in the
data set DD statement to control the action
taken.
Figure 37.1 shows the result when
these options are specified.
Buffer Allocation:
BUFFERS(n) specifies
the number of buffers to be allocated for
the data set: this number must not exceed
255.
For BUFFERED files, if the option is
omitted or the number specified is zero,
two buffers are automatically allocated
upon opening the data set.
The buffer
Appendix B: Implementation Conventions and Restrictions
143
r------------------T---------------------------------------T---------------------,
Option
I
Action at Closing of Data Set
I Action at End of
I
I
I
I
I
Volume
I
~------------------+---------------------------------------+---------------------~
volume wound on to end of data set
I No repositioning
I
(If the file is BACKWARDS, the volume I Channel: available
I
I
I
I
I is rewound to the beginning of the
I
I data set)
I
I
I
I Channel: busy
I
I
.--------T---------+---------------------------------------+---------------------~
I
I Volume is wound on to end of data set I
I
I
I (If the file is BACKWARDS., the volume I No repositioning
I
I PASS
I is rewound to the beginning of the
I Channel: available I
I
I data set)
I
I
I
I Channel: busy
I
I
REWIND .---------+---------------------------------------~---------------------~
I KEEP,
I volume is rewound and unloaded
I
I
I CATLG, I Channel: available
I UNCATLG I
I
I
LEAVE
I
I
I
.---------+-------------------------------------------------------------~
I DELETE
I
I Volume is rewound
I Channel: available
I
I
.--------~---------+-------------------------------------------------------------~
I Both LEAVE and
I
REWIND
I REWIND is ignored
I
I
I
.------------------+-------------------------------------------------------------~
Volume is repositioned to the beginning of the current iata I
set on that volume. (If the file is BACKWARDS, the volume
I
I
I is wound to the end of the data set.)
I
Channel: busy
I __________________ I _____________________________________________________________
L
JI
I
I
Neither LEAVE
nor REWIND
I
I
~
Figure 37.1. Effect of LEAVE and REWIND Options on Repositioning of Magnetic-Tape Volumes
count may be supplied by a DD statement DCB
subparameter BUFNO, if not specified in the
ENVIRONMENT attr ibute.
An additional buffer is obtained for
STREAM output data sets using U-format
records.
COBOL Option:
This specifies that files
with this attribute will contain structures
mapped according to the COBOL algorithm.
This type of file may be used only for READ
INTO, WRITE FROM, and REWRITE FROM statements.
COBOL data types and the equivalent PL/I
data types are shown in Figure 38.
Files with the COBOL option may
passed as arguments.
not
If an ON condition arises during a
INTO, then
READ
1.
the INTO variable may not be used in
the on-unit,
2.
if the completed INTO variable is
required,
there must be a
normal
return from the on-unit.
be
READ INTO, WRITE FROM and REWRITE FROM
statements specifying COBOL files may have
the EVENT option only if the compiler is
able to determine that the PLII and COBOL
structure mappings are identical (i. e,., all
elementary
items
have
identical
boundaries).
If they are not identical, or
if the compiler cannot detect that they are
identical, then an intermediate variable is
created to represent the level 1 item
mapped using the COBOL algorithm. The PLII
variable
is assigned to this variable
before the WRITE FROM is executed, or
144
assigned from it after the READ INTO is
executed. Thus the 1/0 statement containing the EVENT is not the one that completes
the 1/0 operation; in these cases, the
EVENT is ignored.
Printer/Punch Control
Characters:
Two
options are available, for' RECORD CONSECUTIVE OUTPUT files only: CTLASA and CTL360.
They have the following meaning:CTLASA - Requires the implementation to
set the ASA control bit in the DCB
subparameter DCBRECFM.
CTL360 - Requires the implementation to
set the machine code control bit in the
DCB subparameter DCBRECFM.
r--------------------T--------------------,
COBOL data type
I
PLII data type
I
I
~--------------------+--------------------~
DISPLAY
I PICTURE with A andl I
I or X picture char-l
I racters
I
I CHARACTER
I
t--------------------+--------------------~
!COMPUTATIONAL
I
I
jDecimal lenqth (=No.1
I
lof 9s in picture) isl
I
I
I
I
I
I
I
lito 4
I
5 to 9
INO equivalent
I FIXED BINARY
I Cint-_egers only)
I
I
I
I
I
INDEXAREA: if no parameter is specified the
index (whatever its size)
is loaded
into main storage.
NOWRITE. Used for INDEXED DIRECT files
--- opened for UPDATE Cand ignored by other
files).
This option indicates to data
management that there are no records to
be added to the file and therefore the
write-add facility is not required. If
an attempt is made to execute a WRITE
statement on a file with this option, a
diagnostic message will be printed and
the ERROR condition raised.
I
10 to 18
INa equivalent
I
t--------------------+--------------------~
ICOMPUTATIONAL-l
I
I
I
IFLOAT Cn) BINARY
I
(for n ~ 21)
IFLOAT Cn) DECIMAL
I ( for n ~ 6)
I
I
I
I
t--------------------+--------------------~
ICOMPUTATIONAL-2
I
I
I
IFLOAT (n) BINARY
I (for n > 21)
IFLOAT (n) DECIMAL
I
(for n > 6)
I
I
I
I
t--------------------+--------------------~
ICOMPUTATIONAL-3
I FIXED DECIMAL
I
I Cpreci sion and
I
I
I
I scale as in COBOL I
picture)
I ____________________ LI ____________________
L
JI
figure 38.
Equivalence of COBOL
Data
and
GENKEY Option
PL/I
These options are used in order that
spacing, skipping, etc., may be achieved in
RECORD
110
files.
It is the user's
responsibility to ensure that the first
byte of each record contains a valid ASA or
machine code control character.
These
options will be ignored for STREAM files.
Performance
with DIRECT INDEXED Cln~t o~
Performance is improved if
INDEXEJ DIRECT files (which use BISAM) are
specified with the INDEXAREA and NOWRITE
options.
Update~iles:
INDEXAREA [em)]. Used with INDEXED DIRECT
files opened for INPUT or UPDATE
Cand
ignored by other files). This option causes the highest level of index to be loaded
into main storage. The permitted formats
are:
INDEXAREA (m): the parameter m is a decimal
constant ~ 32767.
If the index size ~
m, the index is loaded into main storage; if the index size > m, the index
is not loaded. This enables the programmer to place a limit on the amount
of core he is prepared to allocate for
an index area.
If m > 32767, the
parameter is ignored and the index
(whatever its size) is loaded into main
storage.
The GENKEY option applies
only
to
INDEXED data sets. It enables the programmer to classify keys used in the data set
into generic classes and to use a SEQUENTIAL KEYED INPUT or SEQUENTIAL KEYED UPDATE
file to access and read records according
to the classification of their keys.
A generic key is a character string that
identifies a class of keys. All keys which
begin with such a string are members of
that class of keys.
For example, the
recorded keys 'ABCD',
'ABCE', and 'ABDF'
are all members of the classes identified
by the generic keys 'A'
and 'AB'.
The
first two keys are also members of the
class 'ABC', and the three keys can be
considered as unique members of the classes
'ABCD', ABCE', 'ABDF', respectively.
The GENKEY option allows the programmer
to start sequential reading or updating of
an INDEXED data set from the first nondummy record that has a key in a particular
class. The class is identified by the
inclusion of its generic key in the KEY
option of a READ statement.
Subsequent
records can be read by READ statements
without the KEY option, or they can be
updated by REWRITE statements.
It is the
responsibility of the programmer to check
that the last record in a generic class has
been processed, as no indication is given
when it is reached.
In the following example, a key length
of more than three bytes is assumed:
DCL IND FILE RECORD SEQUENTIAL
UPDATE KEYED
ENVCINDEXED GENKEY);
READ FlLE(IND) INTO (INFIELD)
KEY ( • ABC') ;
Appendix B: Implementation Conventions and Restrictions
145
Note: The EVENT option should not be used
on a WRITE statement if V or U format
records are being added to a REGIONAL(3)
data set which is being accessed in a
direct update mode.
NEXT: READ FILE (IND) INTO(INFIELD);
GO TO NEXT;
In the above example, the first
READ
statement causes the first non-dummy record
in the data set whose key begins with 'ABC'
to be read into INFIELD. Each time that
the second READ statement is executed, the
next non-dummy record will be retrieved.
WAIT Statement
If the user wishes to specify more than
one event name in a WAIT statement, the
multiple-wait option must have been specified at SYSGEN time.
If the data set contains no non-dummy
records with keys of the specified gener1c
class, the KEY condition is raised, and, on
return from the on-unit, the next READ
statement will read the first record in the
data set. However, if the data set contains only dummy records, the ENDFILE condition is raised.
Note how the use of the GENKEY option
affects execution of a READ statement that
supplies a source key shor.te!: than the key
length specified in the KEYLEN subparameter
of the DD statement which defines the data
set.
If the GENKEY option is used,
it
causes the source key to be interpreted as
a generic key, and the record to be read is
the first non-dummy record in the data set
whose key begins with this source key. If
the GENKEY option is not used, a short
source key is padded on the right with
blanks to form a source key of the specifie1 key length, and the record to be read
is the record which has this padded key, if
such a record exists.
The use of the GENKEY option does not
affect the result of supplying a source key
whose length is greater than or equal to
the specified key length. The source key,
truncated on the right if necessary, identifies a specific record whose key can be
considered the only member of its generic
class.
If a WAIT statement is executed and the
events required to satisfy the WAIT contain
a mixture of 1/0 and non-I/O events all
non-I/O events will be set complete before
any of the 1/0 events.
If the TITLE option specified exceeds
eight characters, then the first eight are
used.
I
BASED Variables
The implementation of offsets and pointers does not support bit addressing. This
restriction has no practical effect on
ALIGNED bit strings.
with UNALIGNED bit
strings belonging to arrays or structures,
however, only offsets or pointers to major
structures or minor structures with byte
(or higher) alignment should be
used.
Other restrictions on the use of based
variables are given in Appendix H.
!gitializing LABEL Variables in Structures
with the LIKE Attribute
EVENT Option
The EVENT option is implemented for
RECORD input/output statements used as follows:
File Organization
146
SEQUENTIAL
CONSECUTIVE UNBUFFERED
REGIONAL UNBUFFERED
DIRECT
CONSECUTIVE INDEXED
or REGIONAL
Initialization of LABEL variables in
these structures requires careful handling
particularly as the implementation does not
provide the result specified by the language.
A structure A is declared, using
the LIKE attribute, to be identical to a
structure B. Structure B contains a LABEL
variable that is initialized, using the
INITIAL attribute, to the value of a LABEL
constant. The initial value of the corresponding LABEL variable in A is the initial
value of the LABEL constant known in the
block containing the declaration of B, not
A.
Compile-Time Procedures
For example:
DCL 1 B,
2 L LABEL INITIAL (Ll);
Ll:
.
,
I*B.L
There may be no more than 254 compiletime procedures per compilation~
Further,
each procedure is limited to a maximum of
15 parameters.
Ll*1
BEGIN;
DCL A LIKE B;
Ll:
.
,
Compile-Time DECLARE
I*A.L IS GIVEN THE VALUE OF
Ll IN STRUCTURE B*I
No more than three levels of factoring
are permitted in a compile-time DECLARE
statement.
END;
COMPILE-TIME PROCESSING CONVENTIONS AND
RESTRICTIONS
Combined Level of Nesting and Depth of
Replacement
The MACRO Option
The MACRO option should be included
among the complete set of options for the
compiler invocation if the program contains
compile-time statements.
Precision
The precision,
N,
for a compile-time
variable declared FIXED is 5.
At any point in the program the combined
level of nesting and depth of replacement
is restricted to 50 levels. However, since
not all nested or replacement items require
the same amount of space, a program may run
with
a
greater
actual
nesting
or
replacement depth than 50 levels. Depth of
replacement is self-defining, but nesting
level requires some clarification. A nesting level is required for:
each pair of parentheses, either explicit or implied by hierarchy of operation
each IF, DO, or PROCEDURE statement
INCLUDE Conventions
each member of a parenthesized list,
such as factor lists in DECLARE statements or argument lists of procedures.
Included text must be a member of a
partitioned data set.
If only a sing.le
identifier is specified, i.e.~ of either of
the following forms
Limitations on size of Compile-Time
Processor Input
(identif ier)
identifier,
then it is assumed to be the name of a
member of the data set with the ddname
SYSLIB.
If identifier1.
(identifier.:!) is
written then identifier1. is the ddname and
identifier,2 is the member name.
DD cards
must be provided for those data sets used.
Records in these data sets must have a
fixed length of not more than 100 characters. The maximum blocking factor is 5.
The source margin and character set options
on the EXEC control card also apply to
included text.
The user~s program is maintained internally as blocks of text.
BlocKsize is
assigned at the start of processing and is
a function of machine size as specified by
the SIZE option on the EXEC card.
The
total size of internal text is restricted
to 90 times the size of a text block.
The
minimum system configuration results in a
blocksize of lK, so a total of 90K is
allowed for internal text. This minimum
figure is roughly equivalent to 1000 source
input statements.
Appendix B: Implementation Conventions and Restrictions
147
Limitations on Number of Compile-Time
Variables
The maximum number of compile-time variables which can be used in a program
depends on the total size of the dictionary, which is restricted to 65,000 bytes.
Assuming an average dictionary entry size
of 28 bytes, this restricts the processor
to approximately 2,300 items. An entry is
made in the dictionary for each macro
variable, macro procedure name, INCLUDE
identifier,
macro
label,
and
unique
compile-time constant.
In addition, two
dictionary entries are created for each
iterative DO, one for each THEN or ELSE
clause, and one for each compile-time procedure. Error message references are also
entered into the dictionary. The dictionary is cleared at the end of compile-time
processing; it is therefore unnecessary to
keep the above considerations in mind if
estimating available dictionary space during actual program compilation.
character string; the maximum length is
100~ and the current length is set equal to
the parameter length at object time.
The
parameter can also be a fixed-length character string.
Number of Variables
The maximt~ number of variables in the
source program depends on the total size of
the dictionary, which (for NOEXTDIC) is
restricted to approximately 65,000 bytes.
This is equivalent to a restriction of
roughly 1,200 variables for a scientific
user and to 1.000 for a commercial user.
In computing these figures a reasonable
allowance has been made for constants,
statement labels, and other items which may
require dictionary entries.
If the EXTDIC option is specified, the
maximum size of the dictionary is approximately 1.5 times 65,000 bytes for a block
size of lK, and approximately 3.5 times
65,000 bytes for other block sizes.
Output Line Numbering
Where constants or comments span more
than one line, the output line numbering
refers to the first input line number of
the string or comment.
The figures for variables are necessarily approximate, since the size of a dictionary entry varies with the type of
variable, length of identifier, whether it
is a structure element, and so on.
Number of Executable statements
OTHER COMPILER CONVENTIONS AND RESTRICTIONS
OPTIONS Attribute
The list in the OPTIONS attribute may
include the options MAIN, TASK and REENTRANT.
The MAIN option should be used for
the external procedure which is required to
be given initial control at object time.
The REENTRANT option must be specified. if
the object program generated by the compiler is to be reenterable.
The TASK option must be used if the
procedure is to be invoked for tasking or
to be invoked with other procedures with
the TASK option.
The total size of the internal text, at
any point in the compilation, is restricted
to 90 times the size of a text block.
The
size of a text block is itself dependent on
the amount of core storage available to the
compiler, as specified by the SIZE option
The minimum block size is 1,024 bytes (lK),
giving a maximum size for the internal text
of 92,260 (90K).
This is equivalent to
roughly 280 executable statements.
The maximum block size is 16,384 bytes,
giving a maximum of 1,474,560 bytes for the
size of internal text. This is equivalent
to roughly 14,000 executable statements.
The figures given for numbers of statements are necessarily approximate, since
the number of bytes per statement will vary
between different types of source programs.
Parameter to the MAIN Procedure
A single parameter may be passed by the
EXEC statement for the execution job step
to the MAIN procedure.
If this facility is
used, the first parameter to the MAIN
procedure should be declared as a VARYING
148
Size of an Individual Statement
All statements, other than a DECLARE
statement"
are limited to 3,500 source
characters, i.e., equivalent to 50 cards.
The 'content' of any statement, other than
a DECLARE statement, is limited by the size
of a text block; this varies, as described
in the preceding paragraphs, with the storage available. but will not be less than
1,024 bytes.
The content of a statement can be calculated by ignoring nonsignificant blanks and
comments, expanding iteration factors in
string constants and pictures, and then
adding one byte for each occurrence of an
identifier, and three bytes for each occurrence of a constant. To this, for binary
constants add the iterations of any CHARACTER or BIT strings (note that at this point
BIT strings are treated as characters, not
bits), since the (F) compiler expands the
strings as if the programmer had written
them in full, and two decimal digits for
decimal constants. At most, these restrictions will limit a statement to six cards,
but the limit will normally be between 20
and 30 cards, even for a text block of
1,024 bytes.
The GENERIC Attribute
There is a limitation on the number of
family members and arguments wh~ch may be
associated with a GENERIC entry name. The
value given by evaluating the following
formula must not exceed 700:
n
3n + 82:a.+ 8MAX(a1,a2, ••• ,an) + 3d
1
where n
a
d
i
1
the number of family members
number of arguments relating
to the ith family member
the greatest function nesting
depth at which an invocation of
the GENERIC entry name appears
= the
Number of Blocks in a Compilation
The number of PROCEDURE, BEGIN, and
iterative DO groups~ plus the number of ON
statements, must not exceed 255.
These
restrictions also apply to a
DECLARE statement for the text between any
two commas which are not contained within
parentheses.
Level Numbers
The maximum declared level number permitted in a structure is 255. The maximum
true level number permitted in a structure
is 63.
Factoring of Attributes
The number of left parentheses used for
factoring attributes in DECLARE statements
is limited to 73 in a compilation.
Number of Parameters
The maximum r:umber of parameters permitted at any entry point is 64.
Limitations on Nesting
There must not be more than 50 levels of
nesting at any point in the compilation.
The degree of nesting at any point is the
number of PROCEDURE, BEGIN, or DO statements without a corresponding END statement, plus the number of currently active
IF compound statements, plus the number of
currently unmatched left parentheses, plus
the number of dimensions in each active
array expression, plus the maximum number
of dimensions in each active structure
expression.
The number of nested iteration factors
in a format list must not exceed 20. The
maximum nesting of ENTRY attributes within
an ENTRY or GENERIC attribute is 3.
Number of Dimensions
The maximum number of dimensions permitted" including dimensions inherited from
containing structures, is 32.
Arrays are limited, for each dimension,
to a lower bound of -32,768 and to an upper
bound of 32.,767.
Appendix B: Implementation Conventions and Restrictions
149
Data-Directed List
Floating-Point Constants and E Format Items
The maximum number of elements permitted
in a list for data-directed input is 320.
Each base element of a structure counts as
a separate list element.
The exponents of floating-point numbers
are restricted to a maximum of 2 digits for
decimal or 3 digits for binary.
structure and Array Expressions
Constants Returned by Procedures
The level of nesting in structure and
array expressions is limited by the following rule:
For each level of nesting of structure or
array expressions, add 2 for the maximum
number of dimensions in the structure or
array, add 2 for the maximum level in a
structure expression,
add 3 for each subscript or arqument list in the expression
or assignment, and finally, add 15.
The total for
exceed 900.
the
If a procedure has more than one entry
point, and each entry point returns a
value, code is generated to convert each
value returned to each of the data types
for the entry points.
If any of these
values is a constant, it is possible that
this constant cannot be converted to all
the data types specified. A severe error
message will be put out, and execution will
be unsuccessful.
whole nest should not
This situation can be avoided by assigning the constant to a variable of the same
data type, and then returning this variable. For example:
constants
The precision or length of constants may
not be greater than the precision or length
of the corresponding type of variable.
sterling Constants
the
13.
The maximum number of digits allowed in
90unds field of a sterling constant is
The number of digits following the decimal point in the pence field must not
exceed 13 minus the number of digits in the
pounds field.
DCL A ENTRY RETURNS(CHAR(S»,
B ENTRY RETURNS (FIXED DECIMAL(15»,
C ENTRY RETURNS(BIT(64»,
ATEMP CHAR(S);
A: ENTRY CHAR(S);
ATEMP = 'AOS';
RETURN (ATEMP) ;
B: ENTRY FIXED DECIMAL(15) ;
RETURN (108) ;
C: ENTRY BIT(64);
RETURN('10101'B);
The use of ATEMP avoids the interrupt
caused by the CHARACTER->FIXED DECIMAL and
the CHARACTER->BIT conversions.
However,
execution may still be unsuccessful, and a
warning message is put out to remind the
user.
string Constants
Compiler-Generated Names
The number of characters in a string
constant, after expansion of iteration factors, may not exceed the size of a dictionary block minus 14. The size of a dictionary block will vary with the storage available to the compiler in the same way as
does text block size, but will not be less
than 1,024 bytes.
150
The number of narres generated by the
compiler must not exceed 11,264 in a compilation. One name is generated for each
PROCEDURE, BEGIN, or ON block, for each
variable declared as CONTROLLED INTERNAL,
and for each INTERNAL file.
Temporary Results in Expression Evaluation
String Lengths
The maximum number of temporary results
which may exist during the evaluation of an
expression or during an assignment statement is 200.
The length, in characters or bits, of a
string variable or intermediate
string
result is limited to 32,767.
An estimate of the number of temporary
results which may exist during the evaluation of an expression can be obtained from
the following:
String Lengths in Intermediate Result
Fields
At each level of parenthesis, count one for
each operator which is forced to be evaluated before an inner level of parentheses.
For each such operator, count one for each
operand which -requires conversion before
use, count one for each nested function,
count one for each subscripted variable
used as a target in an assignment statement, and finally, count one for each
pseudo-variable and each argument of a
pseudo-variable.
When non-ad-ustable VARYING strings, or
functions which return non-adjustable VARYING strings# are used in an expression, the
lengths of the intermediate result fields
are calculated from the maximum lengths of
the operands. If these lengths are at or
near the maximum permitted by the implementation (32767 bytes or bits), the length of
the intermediate fields may be greater than
the implementation maximum; if so, they
will be truncated on the left~ This situation can occur with concatenation, the
UNSPEC function with a character-string
argument, the REPEAT function,
and the
STRING function.
Multiple Assignments and Pseudo-Variables
The use of adjustable VARYING strings
can create a similar problem.
When an
operand of the concatenate operator or the
argument of the UNSPEC function is an
adjustable VARYING string, the length of
the intermediate result field is not tested, and execution will fail. This situation can also occur with SUBSTR if the
third argument is not a constant, because
in this case the result is an adjustable
VARYING string.
Multiple assignments are limited by the
following rule:
count 11 for each target of a multiple
assignment, add 3 for each pseudovariable, and then add 11 for each
argument of a pseudo-variable.
The
total must not exceed 4,085.
Function Values
The maximum number of different
types or precisions
returned
by
function may not exceed 256.
data
one
Similarly, when a VARYING string is
passed as an argument to a fixed-length
string parameter, the length of the temporary argument created is the maximum length.
If the user wishes to pass the current
length of the VARYING string (in, for
example, Y=X(A»_ a possible method is:
DCL ATEMP CHAR<*) CTLi
ALLOCATE ATEMP CHAR(LENGTH(A»;
ATEMP=A;
Y=X (ATEMP) i
FREE ATEMP;
Qualified Names
The number of characters in a qualified
name, which is to be used either for
data-directed input/output or in
CHECK
lists, must not exceed 256.
Note that if the DATA option without a
list is used for data-directed input, this
will include all structure elements in the
compilation..
AREA Sizes
The size of an area is limited to 32767
bytes. In this implementation, the AREA
size is provided by thp. value associated
with the AREA attribute or by the default
value of 1000 bytes.
Appendix B: Implementation Conventions and Restrictions
151
LABEL Attribute
Floating-Point Magnitude
The number of statement-label constants
specified by the LABEL attribute is limited
to 125 in any particular label list.
The magnitude of a normalized floatingpoint variable or intermediate result must
lie in the range from 2.4 x 10- 78 to 7.2 X
10 75 •
POSITION
Built-In Functions
The maximum value of the integer constant in the POSITION attribute is 32,767.
The default value
for
the
second
argument of the FIXED built-in function is
15 for binary data, and 5 for decimal data.
The default value for the second argument of the FLOAT built-in function is 21
for binary data, and 6 for decimal data.
The maximum length of a PICTURE describing a numeric field, after expansion of
iteration factors, is 255.
The length of the bit string which is
the val ue ret lIned by the UNSPEC function
is defined by the type of the argument.
Argument Type
The maximum length of a PICTURE describing a character string, after expansion of
it€ration factors, is the size of a dictionary block, less 14.
The size of a
dictionary block will vary with the storage
available to the compiler in the same way
as does text block size, but will not be
less than 1,024 bytes (or 768 bytes if the
EXTDIC option is in use).
FIXED BINARY (p,q)
FIXED DECIMAL (p,q)
FLOAT BINARY (p)
FLOAT DECIMAL (p)
CHARA..CTER (n)
BIT en)
POINTER
OFFSET
AREA
Length of Bit String
32
8*FLOOR «p+2)/2)
32 if p :s; 21
64 if P ~ 22
32 if p :s; 6
64 if P 2 7
8*n
n
32
32
(Number of bytes
allocated + 16>*8
SETS List
The t.otal of twice the number of identifiers in a SETS list, plus the number of
parameter numbers in a SETS list, must not
exceed 255.
The length of the string returned by the
ONSOURCE and DATAFIELD built-in functions
is subject to an implementation maximum of
255 characters.
MA~~IN,
MOD Built-In Functions
Scale Factor
The scale factor of a variable, or of an
intermediate result of type FIXED, must be
in the range -128 and +127.
Precision
The maximum precision of a variable or
of an intermediate result is:
When the arguments to these functions
have different attributes, all the arguments are converted, before the function is
invoked, to the highest characteristics.
Contrary to the language specification,
both the precision and the scale factor of
an argument will be adjusted.
If all the
arguments are FIOED, application of tne
highest-character1stics rule may, in conjunction with the maximum precision defined
by the implementation, cause truncation and
hence an inaccurate result.
For example:
DCL X FIXED DECIMAL (12,1),
53
16
31
15
152
for
for
for
for
FLOAT
FLOAT
FIXED
FIXED
BINARY
DECIMAL
BINARY
DECIMAL
Y FIXED DECIMAL (12,9);
Z
MOD eX,y);
Here Z (whatever its attributes) will be
wrong.
X and Yare stored in a temporary
field which would have, according to the
precisions o~ the operands, a precision
larger than the implementation permits.
Therefore the implementation-defined maximum is applied. resulting in a precision of
(15,9). Y can be stored satisfactorily
inside such a field but X is truncated,
with
the loss of its five high-order
digits.
Length of Identifiers
The
following
types of identifiers
should contain not more than seven characters:
All EXTERNAL data identifiers
EXTERNAL PROCEDURE and ENTRY labels
EXTERNAL Files
CONDITION identifiers
If this restriction is exceeded, the
first four characters are concatenated with
the last three to form an abridged identifier.
MOD Built-In Function
In addition, such identifiers must not
start with the letters IHE, lest they
conflict with the names of Library modules.
When the MOD function is used with FIXED
arguments of different scale factors, the
results may be truncated.
If SIZE is
enabled, an error message will be printed;
if SIZE is disabled, no error message will
be printed and the result is undefined.
COMPLETION Built-In Function and
Pseudo-variable
The COMPLETION built-in function and
pseudo-variable were previously defined in
PL/I with the name EVENT. The (F) compiler
implements the COMPLETION built-in function
and pseudo-variable whether the keyword
used is COMPLETION or EVENT.
STRING Built-In Function
The argument may be a scalar, array, or
structure variable that consists of one of
the following:
1.
Bit strings
2.
Character strings
3.
Decimal numeric pictures
4.
A mixture of (2) and (3)
Sub$cripted Identifiers
For subscripted identifiers, the maximum
number of characters in the subscript is
limited to 225 characters.
This figure
includes the first left parenthesis, the
commas, and the final right parenthesis; it
excludes
redundant
characters such as
blanks and plus signs.
The maximum number of entries in a CHECK
condition, whether in a prefix list or in
an ON statement, is 510.
The maximum number of data items being
checked at any point in the compilation
varies between 2078-2n and 3968-2n, where n
is the number of currently checked items
which have the attribute EXTERNAL.
If a structure or part of a structure is
in a CHECK condition, the number of items
in this restriction must include all elements of the structure.
OBJECT-TIME CONVENTIONS AnD RESTRICTIONS
It may not be an expression.
Data-Directed Input
The argument can be
IGNED; if it is ALIGNED,
included in the result.
ALIGNED or UNALpadding is not
The concatenated string in the result
has a maximum length of 32767 bytes.
When the CHECK condition is enabled for
data-directed input., assignment of each
element of an array will cause the whole
array to be written out.
Appendix B: Implementation Conventions and Restrictions
153
Edit-Directed Output
ON-Units and Entry Parameter Procedures
E- and
truncated.
There is an implementation limit to the
number of ON-units and/or entry parameter
procedures which can be active at any time.
An entry parameter procedure is one that
passes an entry name as parameter to a
procedure it calls. The total permissible
number of these ON-units and/or entry parameter procedures is 127.
F-format items are rounded, not
CHECK Condition
If an identifier which is read in by a
GET DATA statement is included in a CHECK
list anywhere in the proqram, then the
CHECK condition is raised, and will be
treated as enabled unless the block containing the GET DATA statement has an
explicit NOCHECK prefix.
If the CHECK
condition is raised, SYSTEM action will be
taken unless the GET DATA statement lies
within the dynamic scope of an ONCHECK
statement for the identifier in question.
Exponentiation
The expression X**(-N) for N>O is evaluated by taking the reciprocal of X**N.
This may cause the OVERFLOW condition to
occur as the intermediate result is computed, which corresponds to UNDERFLOW in the
original expression.
Collating Seguence
If a READ statement with the EVENT
option has a KEYTO or an INTO variable for
which the CHECK condition is enabled,
the
value of the variable will be printed
immediately after the READ statement, not
after the WAIT statement. Consequently the
printed values of the variable will be the
old, not the new values.
In the execution of PL/I programs,
comparisons of character data will observe the
collating sequence resulting from the representations of characters in bytes of
System/360 storage, in extended
binary
coded decimal interchange code (EBCDIC).
The BCD and EBCDIC punched card codes and
graphics for the PLiI 60-character set are
tabled in collating sequence order in Figure 4 of this publication.
CONVERSION ON-Condition
ENTRY Names as Arguments and ON Statements
in Recursive Contexts
If a return from an ON-unit for CONVERSION is made, then, unless it was entered
on accou~t of a SIGNAL statement, the data
conversion will be
reattempted.
This
implies the use of corrective measures on
the
field
in error using either the
ONSOURCE or the ONCHAR pseudo-variables.
If corrective action is not taken in the
ON-unit, and normal return is attempted, a
message will be printed and the ERROR
condition will be raised.
If
the
ONSOURCE or ONCHAR pseudovariable is used outside an ON-unit, or in
an ON-unit other than either a CONVERSION
ON-unit or an ERROR or FINISH ON-unit
entered because of system
action
for
CONVERSION, then a message is printed and
the ERROR condition is raised.
If the ONSOURCE built-in function is
used out of context, a null string is
returned. If the ONCHAR function is used
out of context, a blank is returned.
154
In the first version of the (F) compiler, ENTRY parameters were invoked with the
environment existing at the time of invocation.
In subsequent versions, they will be
invoked with the environment existing at
the time when the ENTRY name was passed as
an argument.
Pi:
PROC RECURSIVE;
B = 1;
CALL P4 (P3) ;
RETURN;
P4:
ENTRY(PP);
B
=
2;
CALL PP;
P3: PROC;
PUT DATA (B);
END;
END;
Note: For the first version., the above
procedure gave B = 2 ;" for subsequent
versions it gives B = 1;.
In the first version of the (F) compiler, ON-units in recursive contexts were
entered with the environment existing when
the condition occurred. In sUbsequent versions, the ON-unit will be entered with the
environment which was in existence when the
ON statement was executed.
1.
On the LOCATE statement the KEYFROM
key is checked for sequence; the KEY
condition is raised if a sequence
error is found.
2.
Processing continues until
operation on the file.
3.
At the next operation on the file, the
embedded key in the buffer is checked
against the KEY FROM string that was
given in the LOCATE statement.
If
they differ, then:
Example:
P:
PROCEDURE RECURSIVE;
DECLARE I STATIC INITIAL (0),
M AUTOMATIC;
I = I + 1;
M = I;
IF I = 1 THEN DO;
ON OVERFLOW PUT DATA (M);
END;
IF I = 3 THEN SIGNAL OVERFLOW;
ELSE CALL P;
END;
Explicit CLOSE:
raised
the
the next
KEY condition is
Implicit
close: the KEYFROM string
replaces the embedded key in the
buffer, an error message is Written on the console, and the file
is closed.
Note: In the first version, the procedure
gave M = 3; subsequent versions give
4.
M = 1.
These modifications of semantics can
affect only those programs which contain
both recursive procedures and either entry
parameters or ON statements.
On normal return from the ON unit,
control passes to the next statement
The current statement is not executed.
Concatenated Data Sets
Record Alignment
Concatenation of data sets with "unlike
attributes" (device type., record format,
etc.) is not supported at object time.
LOCATE MODE
ON Conditions
UNDEFINEDFILE
condition for
OPEN is raised in the normal way.
The user must pay attention to record
alignment within the buffer when using
locate mode I/O.
The first data byte of
the first record in a block is generally
aligned in a buffer on a doubleword boundary (see Figure 39); the next logical record
begins at the next available byte in the
buffer. The user must ensure that the
alignment of this byte matches the alignment requirements of the based variable
with which the record is to be associated.
implicit
TRANSMIT condition is raised when it is
detected, which may be some statements
later. ONKEY does not necessarily give the
key of the record that caused an I/O
transmission error.
RECORD condition is raised in the usual
way for LOCATE. It cannot occur for READ
SET or REWRITE without the FROM option.
Most of the alignment problems described
here occur in ALIGNED based or non-based
variables.
If these variables were UNALIGNED,
the preservation of the record
alignment in the buffer would be considerably easier.
If a VB format record is to be constructed with logical records defined by
the struct ure:
DeL 1 S,
KEY condition is raised in the usual way
except for a LOCATE statement on an INDEXED
file with RKP*O. If this happens then the
sequence of operations is:
2 A CHAR (1) ,
2 B FIXED BINARY;
this structure is mapped as in Figure 39.
Appendix B: Implementation Conventions ar.d Restrictions
155
r--------T--T-----------,
B
I
IL__ J __ J __ IA I __ l
~_~
In both cases the problem is avoided if
the structure is padded in such a way that
B is always correctly aligned:
__ J __ J_-J
t
t
t
W
W
W
w=
1 S,'
2 PAD CHAR(3),
2 A CHAR(l),
2 B FIXED BINARY;
Word boundary
Figure 39.
Format of structure S
If
the
block was created using a
sequence of WRITE FROM(S) statements,
the
format of the block would be as in Figure
40, and it can be seen that the alignment
in the buffer differs from the alignment of
S.
There is no problem if the file is then
read using move mode READ statements, e.g.,
READ INTO(S), because information is moved
from the buffer to correctly aligned storage.
If, however, a structure is defined as:
1 SBASED BASED(P) LIKE S;
and READ SET(P) statements are used,
then,
reference to SBASED.B would, for the first
record in the block, be to data aligned at
a doublewor~ plus one byte, and would
probably result in a specification interrupt.
The block format would now be as in Figure
41;
B is always on a word boundary. Padding may be required at the beginning and
end of a structure to preserve alignment.
The alignment of different types of
record within a buffer is shown in Figure
42. For all organizations and record types
except blocked records in INDEXED files
with RKP=O, the first duta byte in a
block
is always on a doubleword boundary.
The
position of any successive records in the
buffer depends on the record format.
For unblocked INDEXED, the LOCATE statement will
use a hidden buffer if the data
set key length is not a multiple of 8. The
pointer variable will point at this hidden
buffer.
A special problem ar£ses when using
locate mode in conjunction with based variable containing adjustable extents,
i.e.,
containing a REFER attribute.
Consider the
based structure:
The same problem would have arisen had
the file originally been created by using
the statement:
1 S BASED(P),
2 N,
2 C CHAR (L REFER (N»;
LOCATE SBASED SET(P);
Again,
for the first record in the
block, P would be set to address a doubleword and references to SBASED.B would be
invalid.
If it is desired to create blocked V-format
records of this type, using locate mode,
then this record alignment must be such
that N is word aligned.
If L is not a
multiple of 4 then, if the alignment of the
r-----------T-----------T--T-----------T-----------T--T-----------T--------BL
I
RL
IA I
B
I
RL
IA I
B
I
I
l __ J
__ J __ J __ __ J __ J
~
__ J
__
L-_~
__ J __ J __ J __ __ J __ J __ J __ __ __ J __ J __ J __ _____ - -__
~
~
~
~
t
t
t
,
,
,
D
W
D
W
D
W
BL
Block length
RL = Record length
Figure 40.
D
W
Doubleword boundary
Word boundary
Block Created from structure S
r-----------T-----------T--------T--T-----------T-----------T--------T--T-----------T--BL
I
RL
I
PAD I A I
B
I
RL
I
PAD
I AI
B
I
IL __ J
__ J __ J __
D
BL
RL
__ J __ J __ J __ L-_J __ J __ J. __ __ J __ J __ J __ J. __ J __ J __ J __ __ J __ J __ __ __ J __ J __ J __ __ _
~
~
~
~
,
t
,
t
t
,
W
D
W
D
W
D
Block length
Record length
Figure 41.
156
~
D
W
Doubleword boundary
Word boundary
Block Created by structure S with Correct Alignment
~
t
W
current record is correct, that of the
following record will be wrong.. Correct
alignment can be obtained by the following
sequence:
/* ROUND UP TO MULTIPLE OF 4 */
LOCATE S FILE (F);
N = LENGTH;
/* SET REFER VARIABLE */
LENGTH = L;
/* SAVE DESIRED LENGTH L */
L = 4* CEIL(L/4);
This technique can be adapted to other uses
of the REFER attribute.
Doubleword
boundary
CONSECUTIVE
I
~----------,
L
F
I
1
data
I
block length
record length
~----------J
r---T---t----------,
V or VS
I L I 1 I
data
I
L---i---t----------J
~----------,
u
I
data
I
~----------J
~----------T----------T---
FB
I
data
I
data
I
~----------i----------~--
r---T---t----------T---T----------T---T---
VB or VBS
I L I 1 I
data
I 1 I
data
I 1 I
L---~---t----------~---i----------i---~---
I
I
INDEXED
r---t----------,
IkeYI
F
data
I
L---t---------- J
FB
RKP
RKP
o
'* a
~-----T----------T-----T----------T---
I key I
data
I key I
I
F
V
U
I
IEKI
I
IEKI
I
~---~-~---i---i--i---L----
I <--data--> <--data-->
REGIONAL
data
~-----~----------i-----~----------~--~---T--T---T---T--T---T----
EK = embedded key
I
I
r---t ----------,
IkeYI __________
data
I
L---t
J
r---T---T---t----------,
I L I 1 IkeYI
data
I
L---L---i---t----------J
r---t----------,
IL---t
keYI __________
data
I
J
I
I
-Figure 42.
Alignment of Data in a Buffer in Locate Mode I/O, for
Different Formats and File Organizations
Appendix B: Implementation Conventions and Restrictions
157
APPENDIX C: OBJECT PROGRAM ORGANIZATION AND CONVENTIONS
RUN-TIME STACK
INTRODUCTION
The main features of PL/I which affect
object code organization are, briefly, as
follows:
1.
The block structure, rules
and storage class
2.
Interruption activity
3.
Asynchronous facilities
4.
Data types and extents
of
scope,
The term 'block' is used to mean either
a PROCE~URE or a BEGIN-END group which
contains declarations of AUTOMATIC variables. Because such storage is dynamic, it
is allocated only when the
block
is
entered.
It is stressed that the code for
a block is present at all times and as that
code is read-only, one copy only is necessary, even if the procedure is recursive.
Therefore, when a block is activated, storage is allocated.
At anyone time during the execution of
a PL/I program,
control resides in one
particular block of code.
If this block
invokes another, then the old block is
"pushed down" in the stack when the new one
assumes control. This stacking of blocks
of executable code is exactly matched by
the allocations of AUTOMATIC storage, and
so both storage and code can be controlled
by the same stacking mechanism.
This is
achieved by means of the dynamic storage
allocation
facilitie~
(provided by the
library or control program) in association
with general register 13. This register is
maintained such that it always points at
the storage area corresponding to the current block of code.
As the areas are
chained together it is a comparatively
simple matter to "pop up" the stack when
leaving a block, by resetting general register 13 to point at the previous area in
the chain, and to release the current area.
The following program and diagram illustrate this mechanism.
PSEUDO-REGISTER VECTOR (PRV)
A:
The pseudo-register vector (PRV) is a
task-oriented
communications
area,
addressed through register PR(12): one PRY
is established for each task or subtask.
Object programs not employing multitasking
will have only one PRY. Because of the
possibility of multitasking in a dynamic
environment, the PRY is contained in dynamic storage.
The PRY contains a number of
pseudo-registers which effectively operate
as implicit arguments and give information
about, for example, current program status.
Since all references to specific pseudoregisters within the PRY are made by the
addition of a fixed displacement to the
base address (contained in register PR) of
the PRY, read-only modules are able to
address
dynamically
allocated
storage
obtained for any task (library workspace,
for example).
Addressinq of the PRY within library
modules is effected by using Q-type address
constants which are fixed during linkediting.
All
pseudo-register
address
constants within the PLII implementation
are two bytes in length; the maximum size
of a PRY is 4096 bytes.
158
PROCEDURE;
CALL B;
B:
PROCEDURE;
C:
BEGIN;
END C;
END B;
END A;
When control
looks like this:
is
in block C. the stack
r-----'
When a routine in System/360 assembler
language is used in a tasking environment,
any DSA obtained in it must have at least
108 bytes.
(The minimum for a DSA in a
non-tasking environment is 100 bytes).
I
1<--,
I
I
I storage for A
IL _____ JI
II
I
r-----'I---JI
I <--, storage for B
1
1
L _____ J
II
I
GR 13 ---> r-----'
I
I---J
I
VARIABLE DATA AREA (VDA)
In some instances, it may be necessary
to obtain storage after the DSA has been
allocated.
For example, the following
statements would cause this situation to
arise:
storage for C
IL _____ JI
When control reverts from block C to
block B, the stack takes on the following
appearance:
r-----'
I
1<--,
1
I
1L _____ JI
GR 13 --->
END Ai
1 storage for A
II
In the above example, the prologue of
procedure A would first establish its DSA,
then initialize the variable I, and then
obtain more dynamic storage for the array
A.
This storage is known as a variable
data area (VDA) and can conceptually be
regarded as a secondary stack based on
individual members of the primary stack of
DSAs.
I
I
I---J
I
storage for B
IL _____ JI
r-----'
These areas of storage are
dynamic storage areas (DSAs).
known
as
VDAs are required in a nrnTber of circumstances in addition to that outlined above.
In particular, code may be compiled to
obtain a VDA whenever there is a demand for
temporary ~orkspace (e.g.
for strings of
more than 256 bytes).
DYNAMIC STORAGE AREA (DSA)
Each Dynamic Storage Area is an entry in
the run-time stack and, consequently, each
DSA must possess a standard layout. Figure
43 shows the functional content of a DSA.
,
r--------T------------------,
FLAGS I LENGTH OF AREA I
1
~--------L------------------~
I
CHAIN BACK
I
~---------------------------~
I
CHAIN FORWARD
I
~---------------------------~
I
REGISTER SAVE AREA
1
1
1
>
STANDARD
SAVE AREA
1
1
I 1
~---------------------------~
J
I ENVIRONMENT AND INTERRUPTI
CONTROL INFORMATION
I
I
~---------------------------~
1 DOPE VECTORS AND DEDS
1
I
(IF- ANY)
1
I
AUTOMATIC DATA,
I
1
PARAMETER LISTS,
I
1
WORKSPACE,
I
I ___________________________
L
EXTRA SAVE AREAS
J1
Figure 43.
A : PROC;
DCL I INITIAL(10);
DCL A(I) CHAR(6)i
Functional content of a Dynamic
storage Area
PROLOGUES AND EPILOGUES
It can be seen from a study of the
language and from the foregoing description, that it is necessary for each block
to have a "prologue" and an "epilogue."
Each prologue must save registers in the
area provided, obtain storage for its new
DSA., update register 13 to point at the
DSA, maintain the forward and backward
chains~
initialize the environment
and
interrupt control entries, initialize the
dope vectors (if any), and decide which
entry point is required.
The epilogue has
complementary
tasks
to perform before
finally returning.
In
view
of
the
fact that these
prologues/epilogues must be executed each
time a block is entered and left, space
economy is achieved by incorporating as
much of this work into subroutines as
possible.
Appendix C: Object Program Organization and Conventions
159
The library routines contain certain
sections of the prologue and epilogue which
are cornmon to all prologues and epilogues.
The functions of the prologue subroutines
are:
1.
To preserve the
invoking block
2.
To obtain and initialize
storage for the block
3.
To provide chaining mechanisms to enable the program's progress to
be
traced.
The main
routine are
block, and
the invoking
to it.
environment
of the
AUTOMATIC
functions of the epilogue subto release storage for the
to recover the environment of
block before returning control
is always to a compiler generated control
section, IHENTRY. This calls the appropriate PL/I library initialization routine
(IHESA or IHETSA)i the choice depends on
the OPT parameter and whether the main
procedure has the TASK option or not. The
routine
selected provides the PRV and
Library workspace, issues a SI?IE macro, and
then transfers control to the address contained in a control section named IHEMAIN.
This address constant is produced by the
compiler for each external procedure with
the MAIN option. The situation is illustrated in Figure 44. If an argument list
is to be passed to the PL/I program, IHESA
or IHETSA must be entered at the appropriate entry point.
If more than one module has the MAIN
option, the linkage editor will accept the
first appearance of the control section
IHEMAIN in its input stream and ignore the
rest.
INTERRUPT ACTIVITY AND CONTROL
All interrupt activity in PL/I is controlled at the language level by means of
prefix
options and ON statements.
At
object time, all interruptions are channeled through the library error handling
module, IHEERR. Hardware interruptions are
passed to IHEERR because a SPIE macro is
issued as part of a PL/I program's initialization, in which IHEERR is nominated as
the exit for the user.
Programmed interruptions reach IHEERR by means of the
normal branch and link instruction.
In order to locate the ON-unit (if any)
specified in the PL/I program, the error
handler searches through the stack until it
finds the necessary information in the
interruption control area of a DSA. If the
search is unsuccessful, then SYSTEM action
is taken.
INITIAL ENTRY TO PROCEDURES WITH THE MAIN
OPTION
In order to achieve the proper initialization of PL/I programs, the primary entry
IHEMAIN
PROCl
COMBINATION OF PL/I WITH OTHER LANGUAGES
The programming example in Appendix D
illustrates the inclusion of a subroutine
written in assembler language.
This subroutine performs some of the functions of a
PL/I procedure and shows how to make use of
PL/I library subroutines. The functional
capabilities of the subroutine are fully
described in the commentary contained within it.
CALLING SEQUENCES AND REGISTER USAGE
Linkage between PL/I procedures is provided by the standard operating system
System/360 calling sequence with the exception that the last a~gument in the parameter list is not indicated by a '1' in the
high-order bit.
(Refer to the publication
IBM System/360 Operating System, Supervisor
and Data Management Services).
In addition. the trace forward chain is maintained.
IHESA/IHETSA
IHENTRY
r-----------,
r----------,
r------------,
r----------------,
PL/I
A(PROC1) JI<--------~L____________
A(IHEMAIN) JI<--------~L_________________
A (IHESA/IHETSA) JI
II PROCEDURE
I,<---------~L_________
I WITH MAIN I
IL ___________
OPTION
JI
Figure 44.
160
Initial Entry to Procedures with the MAIN Option
Register usage in object code produced
by the PLiI (F) compiler observes the
following conventions:
Description of Use
o
Work Register
1
Work Register and Parameter
List Pointer
2-8
Caller provides a standard format register save area addressed through register DR(13)
3.
Registers used by the called program
are saved in the save area provided
4.
If the called module
another module#
it
module with a save
register DR to address
area~
and chaining it
area
5.
Upon return to the calling module,
registers RB(2)
through LR(14), the
program
mask
and
PICA
will be
unchanged#
while
registers
RO(O),RA(l),
BR(15), the floatingpOint registers,
and the condition
code may be changed
Work Registers
9
Address Register
10
Program Base
11
static Data Pointer
12
pseudo-Register vector
Pointer
13
Current DSA Pointer
14
Arithmetic and Return
Register
15
2 .•
PRESENTATION OF ARGUMENTS
Arithmetic and Branch
Register
The
linkage conventions for library
modules, some of which employ an internal
standard, are described be~ow.
LINKAGE CONVENTIONS FOR LIBRARY MODULES
Intermodule linkage conforms to either
the System/360 operating system calling
sequence standards or an internal PL/I
standard. The latter applies only to certain library modules which require a higher
degree of efficiency. The internal standard passes the addresses of arguments in
registers rather than through a parameter
list; in all other respects, it is identical to the System/360 operating system
standards.
The
internal
standard is
optionally employed under the following
constraints:
1.
The number
than eight
2.
The arguments must be fixed in number
of arguments must be less
The normal System/360 operating system
standard of passing parameters, by pointing
at a list of addresses, is employed in PL/I
object
code.
These
addresses
point
directly at data in the case of scalar
variables only, provided they are
not
strings.
In all other cases, the address
passed is that of a control block known as
a "dope vector."
Various types of dope
vector are described below.
STRING DOPE VECTOR (SDV)
This control block specifies storage
requirements for string data. An SDV consists of eight bytes (word-aligned), in the
format shown in Figure 45.
023
If these constraints cannot be met, the
operating system standard is
employed.
Definition of operating system linkage conventions is provided in the publication IBM
System/360 Operating System, Supervisor and
Data Management Services. Several salient
features of these conventions are:
Arguments are passed by name,
value
not
by
31
7 8
r----T-----T------------------------------,
IBtOfl
0 I
Byte address of string
I
~----~-----~--------T---------------------~
I __________________
Maximum length
L
Figure 45.
1.
in turn calls
provides
that
area, updating
the new save
to the old save
I _____________________
Curre~t length
JI
~
Format of the String Dope
tor (SDV)
Vec-
Definition of SDV fields:
BtOf
(Bit offset): If the string is a bit
string, positions 0 to 2 of the SDV
specify the offset of the first bit of
the string within the addressed byte.
The bit offset is only applicable to
bit strings which form part of a data
aggregate, and then only if that aggregate has the UNALIGNED attribute.
Appendix C: Object Program Organization and Conventions
161
Byte address of string: For both character
and bit string this three-byte field
specifies the address of the initial
byte of the string.
Maximum length: Halfword binary integer
which specifies the number of storage
units allocated for the string; byte
count if character, bit count if bit.
This value does not vary for a particular generation
of
its
associated
string.
Current length: Halfword binary integer
which specifies the number of storage
units, within the maximum length, currently occupied by the string.
The two length fields exist to accommodate strings with the VARYING attributes;
in the instance of a fixed-length string,
the two fields contain identical values.
For
both fields the maximum value is
32,767.
2 3
31
7 8
r----T-----~------------------------------,
I BtOf I
I
virtual origin
I
~----~-----~------------------------------~
I
Multiplier 1
I
~-----------------------------------------~
I
I
I
I
I
I
~-----------------------------------------~
Multipliern
I
~-------------------T---------------------~
I
Upper bound 1
I
Lower bound 1
I
~-------------------+---------------------~
I
I
I
I
I
I
I
I
I
I
~-------------------+---------------------~
IL ___________________
Upper bound n
I _____________________
Lower bound n
JI
~
Figure 46.
Format of the Array Dope Vector
(ADV)
The ADV contains (2n + 1) 32-bit words,
where n is the number of dimensions of the
array.
The number of dimensions in the
array is not described within the ADV, but
is passed to the library as an additional
argument.
AREA DOPE VECTOR
This has the same format as the string
dope vector, except that both the length
fields are the same and contain the length
of the AREA (not including the 16-byte
control area).
ARRAY DOPE VECTOR (ADV)
This control block, shown in Figure 46,
contains information required in the derivation of elemental addresses within an
array data aggregate.
The ADV has three
functions:
1.
Given an array, to step
array in row-major order
2.
Given the subscript values of an array
element, to determine the
element
address
3.
Given an element address, to determine
its subscript values
through
the
Within PL/I implementation, arrays are
stored in row-major order, upward in storage. The elements of an array are normally
held in contiguous storage, although this
may not be so if the array is a member af a
structure. However, any lack of contiguity
is transparent to algorithms which employ
an array dope vector.
162
o
Defini~ion~of
BtOf
ADV fields:
(= Bit offset):
For an array of bit
strings with the UNALIG~ED attribute,
this is the bit offset from the byte
address of the virtual origin.
Virtual origin: The byte address of the
array element whose subscript values
are all zero, i.e.,X(O, ••. ,O);this element need not be an actual member of
the array, in which case the virtual
origin will address a location in storage outside the actual bounds of the
array.
Multiplier: Multipliers
are
fullword
binary integers which in the standard
ADV
algorithm
effect
dimensional
incrementation or decrementation
to
locate an element. Multipliers are in
bits
for
fixed-length,
bit string
arrays, otherwise in bytes.
Upper
Bound: Halfword
binary integer,
specifying the maximum value permitted
for a subscript in the ith dimension.
This value may be negative.
Lower
Bound: Halfword
binary integer,
specifying the minimum value permitted
for a subscript in the ith dimension.
The value may be negative.
ADV Algorithm: Given subscript values
for an n-dimensional array, the address
of any element is computed as:
n
Address
virtual origin +
L.:
i=l
S.*M.
1.
1.
where Si = value of the ith subcript
Mi = value of the ith multiplier
For an array of bit st:i~gs with the
UNALIGNED attribute, the orl.gl.n is a bit
address formed by concatenating the virtual
origin and the bit offset.
For q;ll other
arrays, the origin is the virtual origin.
ture or to minor structures are inherited
by the contained structure base elements:
undimensioned non-string base elements are
assigned a dope vector consisting only of a
single-word address field. The structure
dope vector is then derived by concatenating the dope vectors which the base elements would have if they were not part of a
structure. in the order in which the elements appear in the structure.
The following structure would have a
dope vector of the form shown in Figure 47:
1 A"
2 B ( 10),
2 E,
STRUCTURE DOPE VECTOR
3 C (1 0) CHAR ( 6 ) ,
3 D BIT (10) VARYING,
3 F FLOAT (5),
3 G (10) FIXED,
3 H CHAR (3);
This control block contains information
required to 1erive, directly or indirectly,
the address of all elements of the structure.
The format of a structure dope vector is
determined
as follows.
The dimensions
which have been applied to the major struc-
o
31
r-----------------------------------------,
I
CiS Virtual origin
I
~-----------------------------------------~
Multiplier 1
I
~-----------------------------------------~
I
Multip lier 2
I
I
~--------------------T--------------------~
I
Upper bound 1
I
Lower bound 1
I
~--------------------+--------------------~
I
Upper bound 2
I
Lower bound 2
I
~--------------------+--------------------~
I
STRING ARRAY DOPE VECTOR (SADV)
This control block contains information
required to derive, directly or indirectly
(through a secondary array of SDV entries),
,
,
I
I
I
I
I
I
I
I
I
B's
> Dope
Maximum length
I Current length
I
I Vector
I
~--------------------L--------------------~
I
D's virtual origin
I
I
I
~-----------------------------------------~
I
Multiplier
I
I
I
~--------------------T--------------------~
I
Upper bound
I
Lower bound
I
I
I
~--------------------+--------------------~
J
I Maximum length
I
0
I
~--------------------L--------------------~
I
F's Address
I,
~-----------------------------------------~
I
I
G's virtual origin
I
I
~-----------------------------------------~
I
I
Multiplier
I
IE's
~-------------------~--------------------~
> Dope
I
Upper bound
I
Lower bound
I
I vector
~--------------------~--------------------~
I
I
H's Address
I
I
~--------------------T--------------------~
I
Maximum length
I ____________________
Current length
IL____________________
JI
JI
~
A's
> Dope
I Vector
I
I
I
I
I
I
I
I
I
I
I
I
I
I
J
Figure 47.
Format of the structure Dope vector (SDV)
Appendix C: Object Program Organization and Conventions
163
the address of elemental strings. The SADV
is identical to the basic ADV, with the
addition of a fullword which describes the
string length. as shown in Figure 48.
o
31
r-----------------------------------------,I
I
I
I
I
I
I
I
ADV
I
I
I
I
I
I
IL~--------------------~--------------------~
Maximum length
I ____________________
Current length/O JI
____________________
~
Figure 48.
Format of the Primary String
Array Dope Vector (SADV)
Fixed-length strings require only a primary dope vector.
The two length fields
are set to the same value, which is the
declared length of the string.
Variable-length strings
require,
in
addition to the pr1mary dope vector, a
secondary dope vector which consists of SDV
entries for each elemental string within
the array.
The secondary dope vector is
addressed via the primary dope vector by
the standard ADV algorithm; having located
the relevant SDV, the actual string data is
directly addressable.
The maximum-length
field appended to the ADV is set to the
maximum length of each array element.
The
current-length field is set to zero for
arrays of VARYING strings, while for fixedlength strings it is set to the maximum
length. Whereas the multipliers of the ADV
for a fixed-length string apply to the
actual string data, those of the ~DV for a
variable-length
string
apply
to
the
secondary dope vector of SDV entries.
STRUCTURE MAPPING
For any structure (major or minor), the
length, alignment requirement, and position
relative to a doubleword boundary will
depend on the lengths, alignment requirements, and relative positions of its members.
The process of determining these
requirements for each level in turn and
finally for the complete structure, is
known as structure mapping.
During the structure mapping process,
the F compiler minimizes the amount of
unused storage (padding) between members of
the structure.
It completes the entire
process before the structure is allocated,
according (in effect) to the rules discussed in the following paragraphs. It is
necessary for the user to understand these
164
rules for such purposes as determining the
record length required for a structure when
record-oriented input/output is used, and
for determining the amount of padding or
rearrangement required to ensure correct
alignment of a structure for locate-mode
input/output (see "Record Alignment" in
Appendix B).
Structure mapping is not a physical
process. Although during this discussion
such terms as "shifted" and "offset" are
used, these terms are used purely for ease
of discussion, and do not imply actual
movement in storage; when the structure is
allocated, the relative
locations
are
already known as a result of the mapping
process.
The mapping for a complete structure
reduces to successively combining pairs of
items (elements, or minor structures whose
individual mappings have
already
been
determined).
Once a pair has been combined, it becomes a unit to be paired with
another unit, and so on until the complete
structure has been mapped. The rules for
the process are therefore categorized as:
Rules for
pairing
determining
the
order
of
Rules for mapping one pair
These rules are described below, and the
example at the end of this section shows an
application of the rules in detail.
Note: To follow these rules, it is necessarY-to appreciate the difference between
logical level and level number.. The item
with the greatest level number is not
necessarily the item with the deepest logical level. If the structure declaration is
written with consistent level numbers or
suitable indention (as in the detailed
example given after the rules), the logical
levels are immediately apparent. In any
case., the logical level of each item in the
structure can be determined by applying the
following rule to each item in turn, starting at the beginning of the structure
declaration:
The logical level of a given item is
always one unit deeper than that of the
nearest preceding item that has a lesser level number than the given item.
For example:
DCL 1 A, 4 B, 5 C, 5 D, 3 E, 8 F, 7 G;
1
2
3
3
2
3
3
The lower line shows the logical level
for each item in the declaration.
Rules for Order of Pairing
The steps in determining
pairing are as follows:
the
order
of
1.
Find the minor structure with the
deepest logical level (which we will
call logical level n).
2.
If the number of minor structures at
logical level n exceeds one, take the
first one of them as it appears in the
declaration.
3.
Using the rules for mapping one pair
(see below), ~air the first two elements appear1ng in this minor structure, thus forming a unit,.
4.
Pair this unit with the next element
(if any) appearing in the declaration
for the minor structure, thus forming
a larger unit.
5.
Repeat rule 4 until all the elements
in the minor structure have been combined into one unit. This completes
the mapping for this minor structure;
its alignment requirement and length,
including any padding, are now determined and will not change (unless the
programmer
changes
the
structure
declaration).
Its offset from a doubleword boundary will also have been
determined; note that this offset will
be significant during mapping of any
containing structure, and
it
may
change as a result of such mapping.
6.
Repeat rules 3 through 5 for the next
minor structure (if any) appearing at
logical level n in the declaration.
7.
Repeat rule 6 until all minor structures at logical level n have been
mapped.
Each of these minor structures can now be thought of as an
element for structure mapping purposes.
8.
9.
Repeat the process for minor structures at the next higher
logical
level; that is, make n equal
to
(n - 1) and repeat rules 2 through 7.
Repeat rule 8 until n = 1; then repeat
rules 3 through 5 for the major structure.
Rules for Maoping One Pair
(As stated earlier, terms apparently
implying physical storage are used here
only for ease of discussion; the storage
thus implied may be thought of as an
imaginary model consisting of a number of
contiguous doublewords.
Each doubleword
has eight bytes numbered zero through 7, so
that the offset from a doubleword boundary
can be given; in addition, the bytes in the
model may be numbered continuously from
zero onwards, starting at any byte, so that
lengths and offsets from the start of a
s'tructure can be given.)
1.
Begin the first item of the pair on a
doubleword boundary; or, if the item
is a minor structure that has already
been mapped .. offset it from the doubleword boundary by the amount indicated.
2.
Begin the other item of the pair at
the first valid position following the
end of the first item. This position
will depend on the alignment requirement of the second item. Alignment
and length requirements for elements
are given in Figures 49 and 49.1.
(If
the item is a minor structure, its
alignment requirement will have been
determined already.)
3.
Shift the first item towards the second item as far as the alignment
requirement of the first item will
allow. The amount of shift determines
the offset of this pair from a doubleword boundary.
After this process has been completed,
any padding between the two items will have
been minimized and will remain unchanged
throughout the rest of the operation.
The
pair can now be considered to be a unit of
fixed length and alignment requirement; its
length is the sum of the two lengths plus
padding., and its alignment requirement is
the higher of the two alignment requirements (if they differ).
Effect of UNALIGNED Attribute
The example of structure mapping given
below shows the rules applied to a structure declared ALIGNED, because mapping of
aligned structures is more complex owing to
the number of different alignment requirements.
Briefly, with the F compiler, the
general effect of the UNALIGNED attribute
is to reduce fullword and doubleword alignment requirements down to byte, and to
reduce the alignment requirement for bit
strings from byte down to bit. The same
structure mapping rules apply, but the
reduced alignment requirements are used.
This means that unused storage between
items can only be bit padding within a
byte, and never a complete byte; bit pad-
Appendix C: Object Program Organization and Conventions
165
r-------------------T-----------------T-----------------T------------T--------------,
I
I
storage
I
I
I
I
I
I
Variable
Type
Istored Internally I
I
as
I
Requirements
(in Bytes)
I Alignment I Explanation
I Requirements I
I
I
.-------------------+-----------------+-----------------+------------+--------------~
IBIT (n)
I
I
lOne byte for eachl
Igroup of 8 bits
I
I (or part thereof) I
n rounded
- up
I
I
8
.;
I
~-------------------+-----------------+--------------;---~
ICHARACTER Cn)
lOne byte per
I
n
I
I
I character
I
I
~-------------------+-----------------+-----------------~
I PICTURE
lOne byte for eachlNumber of
I Byte
I
IPICTURE characterlPICTURE characI
I
I (except
I ters other than
I
I
1M, V, K, G)
1M, V, K, and G
1
Data may
begin on
any byte
o through 7
~-------------------+-----------------+-----------------~
I P + 1 rounded
I
IDECIMAL FIXED (p,q) 11/2 byte per
1
Idigit plus 1/2
I
Ibyte for sign
I
I
----- up
2
I
I
.-------------------+-----------------+-----------------+------------+--------------~
IBINARY FIXED (p,q)
I
I
~-------------------+-----------------~
I
IBINARY FLOAT
I p < 22
(p)
IBinary integer
I
I Short
~-------------------~floating
I DECIMAL FLO~_T (p)
I
point
I
I
I
I
4
I p < 7
I
I
~-------------------+-----------------~
I
I
~-------------------+-----------------~
I
I POINTER
I
I OFFSET
I
I
I
Data may
begin on
byte 0 or
4 only
I
I Full
I word
I
I
I
~-------------------+-----------------+-----------------~
I LABEL
1
I
8
I
~-------------------+-----------------+-----------------~
I TASK
1
I
28
I
~-------------------+-----------------+-----------------~
I EVE NT
I
I
32
I
~--- ----------------+-----------------+-----------------+------------+--------------~
IBINARY FLOAT (p)
I
I
I
IData may
I
1
21 < P < S4
I Long
I
I Double
Ibegin on
1
~-------------------~floating point
I
8
Iwor1
Ibyte 0
1
IDECIMAL FLOAT (p)
I
1
I
lonly
I
.
I
6 < P < 17
I
1
I
~-------------------+-----------------+-----------------~
I AREA
L
___________________
eFigure 49.
1
I
I _________________ I 16+length
_________________ I ____________ I ______________ JI
~
~
~
~
Summary of Alignment Requirements for ALIGNED Data
ding may occur when the structure contains
bit strings.
POINTER, OFFSET, LABEL, TASK, EVENr, and
AREA data cannot be unaligned.
If a structure has the UNALIGNED attribute and it
contains an element that cannot be unaligned, then UNALIGNED is ignored for that
element; the element is aligned by the
compiler and error message IEM3181I is put
166
I
I
out.
For example,
declaration
in a program with the
DECLARE 1 A UNALIGNED,
2 B,
2 C AREA(100) ;
C is given the attribute ALIGNED,
as the
inherited attribute UNALIGNED
conflicts
with AREA.
r-------------------T-----------------T-----------------T------------T--------------,
I
I
I
storage
I
I
I
I
Variable
IStored Internally I Requirements
I Alignment
I Explanation I
Type
I
as
I
(in Bytes)
I Requirements I
I
I
t-------------------t-----------------t-----------------t------------t--------------~
IBIT (n)
lAs many bits as
I
n bits
IBit
IData may beginl
I
I are required"
I
I
Ion any bit in I
I
I regardless of
I
I
I any byte 0
I
Ibyte boundaries
I
I
Ithrough 7
I
I
t-------------~-----t-----------------t-----------------t------------t--------------~
ICHARACTER (n)
lOne byte per
I
n
I
I
I
I
I
I
I character
r-------------------t-----------------t-----------------~
I
I PICTURE
lOne byte for eachlNumber of PICTURE I
I
I
I
IPICTURE character I characters other I
I
I (except M, V,K,G) I than M, V, K and G I
t-------------------t-----------------t-----------------~
IDECIMAL FIXED (p,q) 11/2 byte per
I P + 1 rounded
I
Data may begin
Idigit, plus 1/2
I ----- up
I
I
on any byte 0
Ibyte for sign
I
2
I
I
through 7
~-------------------t-----------------t-----------------~Byte
IBINARY FIXED (p/q) IBinary integer
I
I
r-------------------t-----------------i
IBINARY FLOAT (p)
I
I
I
p
< 22
I Short
~-------------------~floating
I DECINAL FLO.AT
I
p
<
(p)
7
point
I
I
4
I
I
I
I
I
I
I
I
I
I
I
I Long
I
I
I
I
I
I
I ____________ I ______________ J
~-------------------t-----------------t-----------------~
IBINARY FLOAT
I 21 < P < 54
(p)
point
I
B
IDECIMAL FLOAT (p)
I
I
6 < P < 17 ______ I _________________ I _________________
IL ____________
~-------------------~floating
~
~
~
~
~
Note: POINTER, OFrSET, LABEL, TASK, EVENT, and AREA data cannot be UNALIGNED.
-Figure 49.1.
Summary of Alignment Requirements for UNALIGNED Data
Example of structure Mapping
This example shows the application of
the structure mappipg rules for a structure
declared as follows:
3 S,
4 T FLOAT DECI~AL(15),
4 U CHARACTER ( 2),
3 V POINTER,
2 W PICTURE '$9V99 1 ;
DECLARE 1 A ALIGNED,
2 B POINTER,
2 C,
3 D FLOAT DECIMAL(14),
3 E,
4 F LABEL,
4 G,
5 H CHARACTER(2) ,
5 I FLOAT DECIMAL(13),
4 J FIXED BINARY (15,0) "
3 K CHARACTER ( 2) "
3 L FIXED BINARY(15,O),
2 M,
3 N,
The minor structure at the deepest logical level is G, so that this is mapped
first.
Then E is mapped, followed by N, S,
C,
and M,
in that order.
Finally, the
major structure A is mappe1.
For each
structure,
a table is given showing the
steps in the process, accompanied by a
diagram giving a visual interpretation of
the process. At the end of the example,
the structure map for A is set out in the
form of a table showing the offset of each
member from the start of A.
4 P FIXED BINARY(15,O),
4 Q CHARACTER(2),
4 R FLOAT DECIMAL(2),
Appendix
c: Object Program Organization and Conventions
167
r---------T-------------T--------T-----------T-----------T-------------,
I
I
I
IOffset froml
I
I
I Length IDoubleword I Length of I Offset from I
I Name of I Alignment
I Item
I Requirement I
t-----T-----1 Padding I
G
I
I
I
I Begin I End I
I
I
I
~---------t-------------t--------t-----t-----t-------- ---t-------------i
step 1 I
I
I
I
I
I
H
I
I
I
step 2 I
I
*H
I
Byte
Doubl e
Byte
Double
I
I
I
I
I
I
2
8
I
2
8
I
I
I
0
0
6
0
I
I
I
I
I
1
7
7
7
I
I
I
I
I
0
I
I
I
I
I
0
2
I
I
I
I
I
~---------t-------------t--------t-----t-----t-------- ---t-------------i
IL _________
G
I _____________
Double
I ________
10
I _____
6 LI _____
7 LI ________ ___ LI _____________ JI
~
~
~
*First item shifted right
I
H
,-A--..
Step
Step
I
H
I
,..-A--..,
•
2
G
-Figure 50.
168
Mapping of Minor Structure G
r---------T-------------T--------T-----------T-----------T-------------,
I
" O f f s e t froml
,
I
Name of I Alignment I Length 'Doubleword , Length of , Offset from I
I Item
I Requirement I
~-----T-----~
Padding I
E
I
I
I
I
IBeginl End I
I
I
~---------+-------------+--------+-----+-----+-----------+-------------~
Step 1 I
F
I
Word
I
8
I
0 I 7 I
I
I
I
G
I
Double
I 10
I 6 , 7 I
,
,
I
I
I
,
I
I
I
I
I
Step 3 I
F
I
I through I
I
G
I
I
J
I
Step 2 I
I
*F
G
Word
Double
Double
Word
I
I 4
I 6
' I
I '
I 20
I 4
I
I
I
4
I 0
,8
I 10
I
I
I
I
I
I
I
I
I
3 I
7,
2
I
I
I
I
I
0
7
3
,
I
I
I
,
I
I
I
I
I
I
I
I
I
I
I
0
10
20
~---------+-------------+--------+-----+-----+-----------+-------------~
IL _________
E
I _____________
Double
I ________
24
I _____
4 I _____
3 I ___________ I _____________ JI
~
~
~
~
~
~
*First item shifted right
G
F
Step
I
o
o
F
Step
G
o
2
F
Step
G
J
o
3
.I
E
-Figure 51.
Mapping of Minor Structure E
Appendix C: Object Program Organization and Conventions
169
r---------T-------------T--------T-----------T-----------T-------------,
I
I
IOffset froml
,
I
I
I Name of
I Item
I
Alignment I Length IDoubleword I Length of , Offset from ,
,Requirement,
~-----T-----~
Padding'
N
I
I
I
,Beginl End I
I
I
~---------+-------------+--------+-----+-----+-----------+-------------~
step 1 I
P
,Word
I
4
I 0
I
3 I
I
0
I
I
Q
I
Byte
I
2
I 4 I 5 I
I
4
I
Step
2,I
I
I
P
I
I through I
I
I
I
word
I
I
I
Q
I
I
I
6
I
' I
I
I
0
I
I
I
5
I
I
I
I
,
I
I
I
I
I
I
I
I
R
Word
,4
,0
3
2
I
8
I
~----~----+-------------+--------+-----+-----+-----------+-------------~
L
I _________
N
I _____________
Word
I ________
12
I _____
0 I _____
3 I _________ I ____________ JI
~
~
p
a
p
Q
~
~
~-
-~-
R
----~
Step
2
\-
N
·~igure 52.
Mapping of Minor structure N
r---------T-------------T--------T-----------T-----------T-------------,
I
I
I
IOffset from I
I
I
I Name of I Alignment I Length IDoubleword I Length of I Offset from I
I Item
I Requirement I
~-----T-----~
Padding I
S
I
I
I
I
IBegin' End,
I
I
~---------+-------------+--------+-----+-----+-----------+-------------~
Step 1 I
T
I
Double
I
8
I
0 I 7 I
I
0
I
I
U
I
Byte
I
2
I
0
I
1 I
0
I
8
I
~---------+-------------+--------+-----+-----+-----------+-------------~
IL_________
s
I _____________
Double
I ________
10
I _____
0 I 1 I
I
JI
~
~
T
Step
I
~
L_----~--------
___ _____________
~
U
0
-+~~~+_~~~~-L-L4_~~~~~-L~~~~~~~_+-L~~~
S
.Figure 53.
170
Mapping of Minor Structure S
r---------T-------------T--------T-----------T-----------T-------------,
I
I
I
IOffset froml
I
I
I Name of I Alignment I Length IDoubleword I Length of I Offset from I
I
Item
I Requirement I
~-----T-----~
Padding I
C
I
IBeginl End I
I
I
I
I
I
step 1
~---------t-------------t--------t-----t-----t-----------t-------------i
Doubl e
Double
D
E
step 2
8
24
0
4
7
3
I
I
0
12
0
36
2
40
I
D
through
Double
36
0
3
2
4
5
I
I
I
E
Byte
K
step 3
4
I
I
I
D
through
Double
38
0
5
I
3
I
I
K
Word
L
4
0
~---------t-------------t--------t-----t-----t-----------t-------------~
I
C
L _________
I _____________
Double
I ________
44
I _____
0 I _____
3 I ___________ I _____________ JI
~
~
~
D
Step
~
E (Ienqth 24)
D
2
.A
E (Ienqth 24)
,
,
r
D
3
K
,,--A--...
.&,
7 1-'o 12-"-13-"-14--'-15-'-16'-17'--10
10II 121314151617 ~ 415 AII--7 0 rlr--I21~31-41--51--rb1----r
,
Step
~
I
I
Step
~
,.,
""""'1
E (Ienqth 24)
,
~
I
I--r",
-1
K
,--A--...,
L
£
..
I011121314151617~1415rk10111213141516171011121314151bl?F
,
c
-Figure 54.
Mapping of Minor structure C
Appendix C: Object Program Organization and Conventions
171
r---------T-------------T--------T-----------T-----------T-------------,
,
" O f f s e t froml
I
I
,
I Name of I
Alignment I Length IDoubleword I Length of I Offset from I
Requi rement I
~-----T-----~
Padding I
M
I
,
I
I
,Beginl End I
I
1
~---------+-------------+--------+-----+-----+-----------+-------------~
step 1 I
N
I
Word
I
12
I
0
I
3 I
I
I
I
s
I
Double
I
10
I
0 I 1 I
I
I
Item
I
I
step 2 I
*N
s
I
I
Step 3,
I
N
through
S
I
I
I
I
I
'Word
I
Double
I
I
I
I
I
I
I
Double
I
I
I
I
I
12
10
22
I
I
4
0
I
I '
I
I
I
I
I '
I
4 I
I
I
1
I
7
1
1
I
I
I
I
0
I
0
12
I
I
I
I
I
I
I
I
I
I
I
,
I
I
I
V
Word
4
4
7 I
2
I
24
I
~---------+-------------+--------+-----+-----+-----------+-------------~
M
Double
28
4 iI _____
7 LI ________ ___ iI _____________ JI
l, _________
iI _____________
L,________
iI _____
*Pirst item shifted right
N
Step
I
S
0
N
S
__--------A--------__
,~---------A--------
Step
2
Step 3
M
.Pigure 55.
172
Mapping of Minor Structure M
r---------T-------------T--------T-----------T-----------T-------------,
I
I
IOffset froml
I
I
I
I Name of I Alignment I Length IDoubleword I Length of I Offset from I
I Item
I Requirement I
~-----T-----~
Padding I
A
I
I
I
I
I Beginl End I
I
I
step 1
~---------+-------------+--------+-----+-----+-----------+-------------~
B
C
Word
Double
4
44
0
0
3
3
*B
Word
Double
4
44
4
7
C
0
3
B
through
Double
48
4
3
Double
28
4
7
Double
76
4
7
4
0
3
step 2
step 3
C
M
step 4
o
o
4
o
48
0
76
B
through
M
W
Byte
~---------+-------------+--------+-----+-----+-----------+-------------~
IL_________
A
I _____________
Double
I ________
80
I _____
4 I _____
3 I ___________ I _____________ JI
~
~
~
~
~
~
*First item shifted right
B
C (lenqth
Step
Step
I
44)
~
r",
IOII12131415IbI7IOIIP.'j1~3--14~15~lb~17~IOI~I1~21~31~41~51~bl~7IO~I-r112~13~14~15~lb~17'-~
B
C
B
C
2
M (Ienqth 28)
"
Step 3
B
C
M
w
Step 4
""
A (length 80)
-Figure 56.
Mapping of Major structure A
Appendix c: Object Program Organization and conventions
173
r--------------------~--------T--------T--------T--------,
A
From A
0
From C
4
D
0
4
padding (4)
8
12
E
From E
12
16
F
0
12
16
padding (2)
8
20
24
G
From G
10
22
26
H
0
10
22
26
I
2
12
24
28
J
20
32
36
36
40
K
padding (2)
38
42
40
44
L
M
From M
48
N
o
48
From-E
p
o
48
o
Q
4
4
52
padding( 2)
6
6
54
8
R
8
56
12
60
s
From S
--0T
12
60
8
20
68
U
padding (2)
22
70
24
72
V
w
76
__________ .__________ -1-_______ .1. ________ .L ________ .L ________ J
B
C
l
-Figure 56.1.
Offsets in Final Mapping of structure A
ALLOCATION AND RELEASE OF STORAGE IN AN
AREA
It is the area size. plus the 16 bytes
of control information. For example:
The AREA attribute defines storaae reserved for the allocation of based Jvariables.
In this implementation the amount
reaserved consists of sixteen bytes of
control
information
plus
the
amount
requested for each allocation (see Figure
57).
The control information and each
allocation start on a doubleword boundary.
The
amount
of storage
defined in one of two ways:
1.
required
is
Area size: This is the amount of
storage reserved in the declaration of
an area.
For example, in the statement:
DeL Z AREA(500) CONTROLLED;
ALLOCATE Z;
creates an allocated area Z of 516
bytes. The maximum length is 32783
bytes; the effective minimum length is
24 bytes. The default length is 1016
bytes. When an area is written using
RECORD I/O, the amount transmitted is
the area length., not the area size.
The storage allocated for a variable
always starts and ends on a doubleword
boundary, whatever the amount requested.
The amount allocated is
8*(CEIL«L+H)/8»
when L
Variable length (in bytes)
DCL Z AREA(500);
H
The size of area Z is 500 bytes.
The
maximum size that can be declared is
32767 bytes.
The effective minimum
size is 8 bytes; 0 bytes can be
declared but the AREA condition would
be raised if an attempt was made to
allocate a based variable into it. If
a size is not declared, a default
value of 1000 bytes is assumed.
2.
174
Area length This is the amount of
storage needed for an area allocation.
Offset (in bytes) of beginning of
this variable from a doubleword
boundary. Maximum value of H is 7
bytes.
The total amount of storage allocated
for variables in an area is the extent; the
amount at a particular time in the current
extent. The value of the current extent is
increased every time an allocation is made
beyond the end of the current extent.
It
is decreased only if the allocation that
forms the end of the current extent is
freed; then the value of the current extent
is reduced accordingly. The current extent
is not changed when an allocation ~ithin
the extent is freed.
r--------------------------------------,
Length
I
o I
~--------------------------------------~
4 I
Current extent
I
8
When an allocation within the extent is
freed, the freed area is called a free
element. Each free element starts ~ith two
control words:
Word 1: length
bytes)
of
free
element(in
Word 2: Offset (in bytes) of next smallest free element.
The last
free element contains the offset of the fourth word of the
control information.
The chain of free elements created in
this way in the fre~list.
When an allocation is required, the free
list is examined to find the smallest free
element in which the variable will fit. If
no free element is large enough, then the
unused section at the end of the current
extent is used.
If this in turn is not
large enough, the AREA condition is raised.
When an element is freed, the free list
is scanned to find if this element is
contiguous with another free element.
If
so, the two are combined and then placed in
the free list according to the combined
size. If there is no contiguous element"
the freed element is placed in the free
list according to its size.
r--------------------------------------~
I Offset of largest free element
I
r--------------------------------------~
12 I
Reserved/O
I
r--------------------------------------~
16 I
I
· I
Allocated
I
· I
·
I
r--------------------------------------~
I
I
I
Free element
I
I
I
Allocated
I
I
I
r--------------------------------------~
I
I
I
r--------------------------------------~
I
I
I
I
I
Free element
I
I
I
Allocated
I
I
I
I
I
r--------------------------------------~
I
I
I
r--------------------------------------~
Free element
I
r--------------------------------------~
I
I
I
I
Allocated
I
I
I
r--------------------------------------~
I
I
I
I
I
I
I
I
Unused
I
I
I
I
I
I
I
I
IL ______________________________________ JI
Note:
Figure 57.
If there is a free list, the
fourth control word contains 0;
otherwise it is unused.
AREA Format, showing Example of
Allocated Storage and Free Elements
Appendix C: Object Program Organization and Conventions
175
PAGE
VERSION 4 RELEASE 17
OS/360 PLII COMPILER (F)
1
DATE 68.306
PLII F COMPILER OPTIONS SPECIFIED ARE AS FOLLOWS-LIST ,ATR.XREF, 0PT=1., LC=60, SIZE=96000
THE COMPLETE LIST OF OPTIONS USED DURING THIS COMPILATION IS--
EBCDIC
CHAR60
NOMACRO
SOURCE2
NOMACOCK
COMP
SOURCE
ATR
XREF
NOEXTREF
LIST
LOAD
NODECK
FLAGW
STMT
SIZE-096000
LINECNT=060
OPT =01
SORMGIN=(002,072)
NOEXTDIC
NONEST
OPLIST
/*THIS IS A SMALL PROGRAMMING EXAMPLE
./
/.THIS IS A SMALL PROGRAMMING EXAMPLE
/.TO SHOW HOW ASSEMBLER LANGUAGE SUBPROGRAMS CAN BE INCORPORATED
/.INTO A PLII !9.IN PROGRAM.
./
./
./
/.THIS MODULE IS DESIGNED TO ACCEPT A CHARACTER STRING ARGUMENT
/.OF ANY SIZE AND WRITE IT IN THE DATA SET DEFINED ON THE SYSPRINT
1'.00 CARD.
./
./
./
/*THE ACTUAL OUTPUT OPERATION IS CARRIED OUT BY THE PL/I LIBRARY
/.MODULE lHEPRTB, WHICH IS INVOKED BY THE ASSEMBLER LANGUAGE
/.MODULE (PRINTER).
./
./
./
/ . ' PRIlfl'ER' IS INVOKED BY WRITING THE STANDARD CALL STATEMElfl'
/.IN PLlI, USING THE ENTRY NAME TO WHICH CONTROL IS TO BE PASSED.
./
./
I'.TO RUN THIS JOB, THERE MUST BE A DO CARD TO DESCRIBE THE DATA SET
/.SYSPRINT. THE PL/I LIBRARY CONTAINS A DCB FOR THIS DATA SET, AND
I'*WILL OPEN THE FILE FOR OUTPUT WHEN IT IS INVOKED, IF IT IS NOT
/* ALREADY OPEN.
./
./
./
./
I'.TO EXECUTE THIS PROGRAM, THE PLII AND ASSEMBLER LANGUAGE OBJECT
./
./
./
./
/.MODULES MUST BE LINKAGE EDITED TOGETHER INTO ONE MODULE.
THE
I'.MODULES MUST BE PREPARED FOR LINKAGE EDITING IN THE ORDER PL/I
/.MODULE FIRST, THEN ASSEMBLER LANGUAGE MODULE.
1
2
TEST:
PROCEDURE OPTIONS (MAIN) ;
DECLARE A1 CHARC3S);
/.A1 IS THE VARIABLE TO BE
/.WRITTEN ON SYSPRINT.
3
C.B = 2;
/~INITIALIZE
4
D
/.AND D.
5
A1 = (B.(C •• 2»/D;
/.CALCULATE A VALUE IN FLOATING
/.POINT AND CONVERT IT TO A CHAR/.ACTER STRING.
6
CALL PRINTER(Al);
/.TO USE FACILITIES PROVIDED BY
/.THE LIBRARY ROUTINE TO PUT OUT
/.ERROR MESSAGES, IT IS NECESSARY
/.TO CALL THE SUBROUTINE PRINTER.
/.THIS IS WRITTEN IN ASSEMBLER
/.LANGUAGE, AND ILLUSTRATES TWO
/.IMPORTANT ASPECTS OF THIS SORT
/.OF LINKAGE.
7
END TEST;
176
PAGE
= 4;
C AND B
2
/.THIS IS A SMALL PROGRAMMING EXAMPLE
PAGE
3
PAGE
4
ATTRIBUTE AND CROSS-REFERENCE TABLE
DCL NO.
IDENTIFIER
ATTRIBUTES AND REFERENCES
2
A1
AUTOMATIC. STRING, CHARACTER
B
AUTOMATIC.DECIMAL,FLOATCSINGLE)
C
AUTOMATIC. DEC I f9.L., FLOAT( SINGLE)
5,6
3.5
3.5
o
AUTOMATIC.DECIMAL,FLOATCSINGLE)
4.5
PRINTER
EXTERNAL. ENTRY, DECIMAL. FLOAT CSINGLE)
TEST
ENTRY ,DECIMAL., FLOAT CSINGLE)
6
1
/*THIS IS A SMALL PROGRAMMING EXAMPLE
STORAGE REQUIREMENTS
THE STORAGE AREA FOR THE PROCEDURE LABELED TEST IS 240 BYTES LONG
THE PROGRAM CSECT IS NAMED TEST AND IS 184 BYTES LONG
THE STATIC CSECT IS NAMED ••• TEST AND IS 100 BYTES LONG
PAGE
/.THIS IS A SMALL PROGRAMMING EXAMPLE
STATIC INTERNAL STORAGE
000038
000040
000044
000030
000048
000050
000058
000060
000068
8A0680
00000000
00000000
00000000
00000000
4140000041200000
000000AC00230023
8A0600
2C
5
M~P
OED FOR TEMP
A..
TEST
A..
IHEDNCA
A..
IHESAFA
A..
PRINTER
CONSTANTS
D.V. SKELETON
OED
OED
(
Appendix D: Programming Example
177
/*THIS IS A SMALL PROGRAMMING EXAMPLE
OBJECT LISTING
* STATEMENT NUMBER
1
* PROCEDURE
TEST
* REAL ENTRY
000000 47 FO F OOA
000004
000005
OOOOOA 90 EB 0 OOC
OOOOOE 41 AO 1 OOA
000012 41 80 A 026
000016 59 BO A OlE
00001A 58 FO B 020
00001E 59 00 A 022
000022 05 EF
000024 07 F8
000026 07 00
000029 00000000
00002C OOOOOOFO
000030 OS AO
000032 05 AO
TEST
10(0,15)
ALl (4)
C'TEST'
14,11,12(13)
10,10(0,lS)
8,38 (0,10)
11, 30( 0, 10)
15,32(0,11)
0,34(0,10)
14,15
9
0
A(SI.)
F'2110'
10,0
10,0
• PROLOGUE
000034 41
000038
000039 50
00003C 92
000040 92
000044 92
000049 02
DC
00
01
CO
07
00004E
000052
000056
00005A
FO 0 OAC
FO 0 099
AO A 029
00
41
50
41
07
B
OC
OC
STM
LA
IA
L
L
L
BALR
BR
NOPR
OC
OC
BALR
BALR
LA
CL.4
000
062
063
000
098 B OSO
* PROCEDURE BASE
00005C
EQU
ST
MYI
MYI
MYI
MYC
IA
ST
IA
NaPR
CL.2
EQU
* APPARENT ENTRY
99 (13) ,X' 06'
9,OV •• Al
9, WS1.1
l,WS1.1
15,A •• PRINTER
14,15
• STATEMENT NUMBER 7
OOOOBA 92 07 0 063
MVI
OOOOBE 58 FO B 03C
L
0000C2 05 EF
BALR
99(3),X'07'
lS,A •• IHESAFA
14,15
* END PROCEDURE
TEST
00
00
00
10
20
30
40
FO
EF
0
0
0
0
B
0
B
B
OA4
OAO
090
090
030
098
05B
038
ME
DE
STE
LA
LA
LA
LA
9,209(0,13)
•
*
TEST
MVI
MVC
MVC
99(1),X'30'
C(4) ,C •• 0414
B(CI) ,C •• 0414
• STATEMENT NUMBER 4
00006C 92 04 0 063
000070 02 03 0 OAO B 048
MYI
MVC
99(13),X'04'
0(4) ,C •• 0440
* STATEMENT NUMBER 5
000076 92 OS 0 063
00007A 79 00 0 OA9
00007E 7C 00 0 OA9
MVI
LE
ME
o,e
o,e
99(13),X'OS'
/* THIS IS A SMALL PROGRAMMING EXAMPLE
NO ERRORS OR WARNINGS DETECTED.
178
* STATEMENT NUMBER 6
0000A4 92 06 0 063
MVI
0000A9 41 80 0 098
LA
OOOOAC 50 90 0 090
ST
OOOOBO 41 10 0 090
LA
0000B4 59 FO B 040
L
0000B9 05 EF
BALR
7c
70
70
41
41
41
41
58
05
13,PR •• TEST(2)
99 (13) ,X'OO'
99(13),X'01'
0(1) ,X'CO'
DV •• A1(9),SKOV •• 04
CC
15,Al
15,OV •• Al
10,CL.2
0
* STATEMENT NUMBER 3
00005C 92 03 0 063
000060 02 03 0 OA9 B 04C
000066 02 03 0 OA4 B 04C
COMPILE TIME
L
BALR
0, B .
0,0
O,WS1.l
1,WS1.l
2,OED •• 04AO
3, DV •• Al
4,OEO •• Al
lS,A •• IHEONCA
14,15
000082
000086
00008A
00009B
000092
000096
00009A
00009B
0000A2
6
END
BASE
90 0 000
0
0
0
0
0
PAGE
*/
2.09 MINS
PAGE
7
OUTPUT FROM OS/360 ASSEMBLER (E)
SYMBOL
PRINTER
IHESADA
IHEPRTB
IHESAFA
TYPE
SD
ER
ER
ER
PAGE 1
ID ADDR LENGTH
01 000000 000044
02
03
04
PAGE 2
LOC
OBJECT CODE ADOR1 ADDR2 STMT
SOURCE STATEMENT
THIS SUBROUTINE ILLUSTRATES SOME OF THE FUNCTIONS
NECESSARY IN ORDER TO COMMUNICATE BETWEEN A PL/I MAIN
PROGRAM AND AN ASSEMBLER LANGUAGE SUBPROGRAM.
5·
6.
7.
8.
9·
10·
11·
12·
13·
14.
15·
16·
17.
18.
19·
20·
21·
22·
THE COMMENTS INCLUDED EXPLAIN FULLY WHAT HAS BEEN
DONE TOGETHER WITH AN INDICATION OF WHAT MIGHT HAVE
BEEN DONE.
WHILE THIS IS A TRIVIAL EXAMPLE IT DOES
SERVE TO DEMONSTRATE MOST OF THE LINKAGE
PROBLEMS. IT SHOULD BE NOTED THAT TqE STANDARD
SAVE MACRO COULD HAVE BEEN EMPLOYED IN THIS
SUBPROGRAM.
THIS PROGRAM IS LIMITED TO EXTRACTING THE
ADDRESS AND CURRENT LENGTH OF A CHARACTER STRING
FROM ITS DOPE VECTOR, AND PRESENTING THESE ITEMS AS
ARGUMENTS TO A LIBRARY PRINT ROUTINE.
THE PROGRAM ~ND STORAGE MANAGEME~T ROUTINES USE
DIFFERENT MODULES FOR MULTITASKING AND
NON-MULTITASKING
Appendix D: Programming Example
179
PAGE 3
LOC
OBJECT CODE ADDR1 ADDR2 STMT
000000
000000
000000
000004
000005
47FO FOOC
07
D7D9C9D5E3C5D9
OOOOOC
90EB DOOC
23PRINTER
24
OOOOC 25
26
27
28*
29*
30*
OOOOOC 31PRINT1
32*
33*
34*
35*
36*
37*
SOURCE STATEMENT
START 0
USING .,15
BC
15.,PRINT1
DC
r-.L1 (7)
DC
C' PRINTER'
STM
14.11,12 (13)
000010
000012
05AO
000012
4100 0064
00064
000016
00001A
58FO A026
05EF
00038
00001C
180
9280 DOOO 00000
61
62
63*
64·
65*
66·
67*
68*
69·
70·
71·
72
73·
74·
75·
76*
SAVE REGISTERS IN CALLER'S SAVE
AREA. NOTE THAT THIS SUBPROGRAM IS
PREPARED TO PRESERVE REGISTER 12.
IN THE EVENT 0 F AN IN'IERRUPTION
THE PL/I EXECUTION ERROR PACKAGE
WOULD BE INVOKED.
(IF IT WERE FELT TO BE NECESSARY
THIS SUBROUTINE COULD HAVE HANDLED
INTERRUPTIONS ITSELF BY SAVING
REGISTER 12 AS WELL, ISSUING A
SPIE MACRO, AND SAVING THE FORMER
PICA ADDRESS. ON EXIT THESE ITEMS
MUST BE RESTORED.)
3p·
39·
40·
41·
42·
43·
44·
45·
46
47
48
49·
50·
51*
52·
53·
54·
55·
56·
57.
58·
59*
60
LENGTH OF THE CHARACTER STRING
WHICH FOLLOWS. ITS PURPOSE IS TO
ENABLE THE PL/I SNAP OPTION TO
PRINT OUT A TRACE IF SO REQUIRED.
DROP 15
BALR 10.0
USING .,10
ESTABLISH ADDRESSIBILITY FOR
REST OF ceNTROL SECTION. THIS
FOLLOWS THE SYSTEM USED BY THE
OBJECT CODE PRODUCED EY THE F
COMPILER.
USE IS NOW M~DE OF THE PL/I LIBRARY IN ORDER TO
OBTAIN A SAVE AREA. THIS HAS BEEN DONE DYNAMICALLY AS
THIS IS EXACTLY WHAT IS DONE BY PL/I OBJECT CODE. IF
THERE IS NO ABSOLUTE REQUIREMENT roR THIS CODE TO BE
EITHER REENTRANT OR RECURSIVE THEN STORAGE COULD HAVE
BEEN RESERVED roR IT BY MEANS OF DC'S OR DS'S.
LA
0,100
L
15,ADDR1
BALR 14,15
LENGTH OF DYNAMIC SAVE AREA
(LENGTH IS 108 IF MULTITASKING IS
USED)
GET ADDRESS OF LIBRARY GETDSA
ROUTINE, AND BRANCH TO IT.
IT IS NOW NECESSARY TO INITIALIZE THE SAVE AREA.
NOT MUCH WORK IS DONE IN THIS EXAMPLE BUT PL/I OBJECT
CODE USUALLY PERFORMS MAtN MORE FUNCTIONS. IT IS NOT
ABSOLUTELY NECESSARY TO DO MORE THAN IS INDICATED HERE
BUT IF THE READE~ WISHES TO OBSERVE ALL THE PL/I
CONVENTIONS THEN CONSIDERABLY MORE CODE WOULD BE
REQUIRED.
MVI
0(13),X'80'
MOVE IN FLAG BYTE AS REQUIRED
BY LIBRARY FREEDSA ROUTINE.
AT THIS STAGE THE SAVING CONVENTIONS HAVE BEEN
DEALT WITH AND ATTENTION CAN BE GIVEN TO PARAMETERS
PAGE 4
LOC
OBJECT CODE ADDRl ADDR2 S'l'MT
000020
5860 1000
00000
000024
5810 EOOO
00000
000028
4120 E006
00006
00002C
000030
58FO A02A
05EF
0003C
000032
000036
58PO A02E
07FF
000038
00003C
000040
00000000
00000000
00000000
00040
77
78·
79.
80
81·
82
83·
84
85
86·
87.
88·
89·
90·
91·
92·
93
94
95·
96·
97.
98ADDRl
99ADDR2
100ADDR3
101·
102·
103
SOURCE STATEMENT
L
14.0 (0,1)
L
1,,0 (0,14)
LA
2,6(0,14)
GET ADDRESS OF ARGUMENT - NOTE
THAT THIS IS NOT TaE STRING
ITSELF BUT ITS DOPE VECTOR.
GET ADDRESS OF STRING FROM THE
DOPE VECTOR.
GET ADDRESS OF CURRENT LENGTH
OF STRING FROM DOPE VECTOR.
GET ADDRESS OF LIBRARY PRINT
MODULE, AND BRANCH TO IT.
15.,ADDR2
L
BALR 14,15
UPON RETURN THIS SUBPROGRAM HAS COMPLETED
ITS TASK AND NOW MAKES USE OF THE LIBRARY
FREEDSA ROUTINE IN ORDER TO RELEASE ITS DYNAMIC
STORAGE (USED AS A SAVE AREA), AND TO RETURN TO
ITS CALLER.
L
BCR
15.ADDR3
15.,15
DC
V(IHESADA)
V( IHEPRTB)
V(IHESAPA)
DC
DC
GET ADDRESS OF LIBRARY FREED SA
MODULE AND BRANCH TO IT.
ADDRESS OF LIBRARY GETDSA RTN
ADDRESS OF LIBRARY PRINT RTN
ADDRESS OF LIBRARY FREEDSA RTN
END
RELOCATION DICTIONARY
POS.ID
REL. ID
01
01
01
02
03
04
FLAGS
lC
1C
1C
ADDRESS
000038
00003C
000040
Appendix D: Programming Example
181
APPENDIX E: CATALOGED PROCEDURES
This section lists the PLiI (F) cataloged procedures. It also describes statements used to override statements and parameters in any cataloged procedure.
(The
use of cataloged procedures is discussed in
"Job Processing".)
The procedures may be used with any of
the System/360 operating system job schedulers. When parameters required by a particular scheduler are encountered by another
scheduler not requiring those parameters,
either they are ignored or alternative
parameters are substituted automatically.
For example, if these procedures are used
with a sequential scheduler the following
parameters, which are required for the
multiprogramming option with variable number of tasks (MVT), are treated as follows:
REGION=xxxxK is ignored
DISP=SHR is interpreted as DISP=(OLD)
execution step in procedures PL1LFCLG and
PL1LFLG, unless the default value is acceptable. The default value is established by
the input reader procedure.
Installations not using the MVT option
should remove the superfluous parameters.
In addition, the
following
general
recommendations should be considered:
under MVI', the system task initiator
requires 52K bytes to initiate or terminate a step.
If REGION<52K, the
initiator may be held up during step
termination until 52K bytes are available.
when the MVT option is used, a SPACE
parameter may be required for SYSPRINT
if the device is other than a printer.
the PARM fields for compilation and
linkage editing steps should follow
installation conventions.
Installation Modifications
Before use, these procedures should be
studied with a view to modifying them for
greater efficiency within the particular
environment of the installation. Some such
modifications are detailed below.
In installations using the MVT option of
the operating system., the REGION specifications
for the compilation and linkediting
steps
must
be altered where
necessary to suit the available storage.
The REGION specification for the compilation step must be at least 4K bytes greater
than the storage specified in the compiler
SIZE option (unless SIZE=999999). Failure
to ensure this may result in a system
abnormal termination before the compiler
can provide any diagnostic aid.
In the
three procedures in which the Linkage Editor is invoked, a REGION of 96K has been
specified for the link-editing step. If
necessary, this REGION specification may be
reduced to conserve storage.
The minimum
REGION specifications for
the
various
design levels of the Linkage Editor are:
Linkage Editor
E15
E18
E44
REGION Specification
24K
26K
54K
Installations using the MVT option should
also insert a REGION specification for the
182
the SPACE and UNIT parameters for temporary data sets should be modified
according to installation configuration
and conventions.
blocking factors should
for output data sets.
be
specified
For further information
on
writing
installation cataloged procedures" see the
publication IBM System/360 Operating Systern~ystern Programmer" s Guide.
COMPILATION WITH DECK OUTPUT
The cataloged procedure for compilation
with deck output is shown in Figure 58.
The cataloged procedur~ specified in the
user's EXEC statement that invokes the PL/I
(F) compiler is named PL1DFC. In turn, the
EXEC statement PL1D within the cataloged
procedure itself, indicates that the operating system is to execute the program
IEMAA (the name for the PLII (F) compiler).
If compiler options are not explicitly
supplied
with
the
procedure, default
options are assumed.
The programmer can
override the default options by specifying
the required options in the EXEC statement
invoking the cataloged procedure.
r-----------------------------------------,
IIPL1D
EXEC
COMPILATION AND LINK-EDITING
PGM=IE~
PARM=- DECK, NOLOAD' "
REGION=52K
IISYSPRINT DD
SYSOUT=A
IISYSPUNCH DD
SYSOUT=B
IISYSUT3
DD
UNIT=SYSSQ,
SPACE=(SO, (250,250»,
SEP=SYSPRINT
UNIT=SYSDA,
SPACE=(1024,(60,60)"
CONTIG) ,
SEP= (SYSUT3,
_________________________________________
SYSPRINT,SYSPUNCH)
J
IISYSUT1
.Figure 58.
DD
Cataloged Procedure
(PL1DFC)
for compilation with Deck output
The cataloged procedure for compiling
and link-editing a PL/I source program is
shown in Figure 60.
The EXEC statement invoking the linkage
editor is named LKED, and specifies that
the operating system is to execute IEWL,
the name for the linkage editor program.
If linkage editor options other than those
in the cataloged procedure are required,
the parameters an the IILKED EXEC card must
be overridden as described below.
r-----------------------------------------,
IIPL1L
EXEC PGM=IEMAA,
PARM=4LOAD,NODECK',
REGION=52K
IISYSPRINT DD
SYSOUT=A
IISYSLIN
DO
DSNAME=&&LOADSET,
DISP=(MOD, PASS),
UNIT=SYSSQ,
SPACE=(SO, (250,100»
IISYSUT3
DD
UNIT=SYSSQ,
SPACE= ( 80, (25 0 , 250) ) ,
SEP=SYSPRINT
IISYSUT1
DO
UNIT=SYSDA,
SPACE=(1024,(60,60)"
CONTIG) ,
SEP=(SYSUT3,SYSPRINT,
SYSLIN)
COMPILATION WITH OBJECT MODULE OUTPUT
The cataloged procedure for compilation
with object module output is shown in
Figure 59.
The cataloged procedure specified in the
user's EXEC statement that invokes the PL/I
(F) compiler is named PL1LFC. In turn, the
EXEC statement PL1L within the cataloged
procedure itself indicates that the operating system is to execute the program IEMAA
(the name for the PL/I (F) compiler).
EXEC
IILKED
r-----------------------------------------,
IIPL1L
EXEC PGM=IEMAA,
PGM=IEWL,
PARM='XREF,LIST',
COND=(9,LT,PL1L),
REGION=96K
PARM='LOAD,NODECK',
REGION=52K
IISYSLIB
DO
DSNAME=SYS1.PL1LIB,
DISP=SHR
IISYSPRINT DD
SYSOUT=A
IISYSLMOD
DD
IISYSLIN
DD
DSNAME=&&LOADSET,
DISP=(MOD,PASS),
UNIT=SYSSQ,
SPACE= (80, (250,100»
DSNAME=&&GOSET(GO),
OISP=(MOD,PASS),
UNIT=SYSDA,
SPACE=(1024,(50,20,1),
RLSE)
I/SYSUT1
DO
IISYSUT3
DO
UNIT=SYSSQ,
SPACE=(SO, (250,250»,
SEP=SYSPRINT
UNIT=SYSDA,
SEP=(SYSLMOD,SYSLIB),
SPACE=(1024,(200,20»
UNIT=SYSDA,
SPACE=(1024,(60,60)"
CONTIG) ,
SEP= (SYSUT3,
L________________________________________
_
SYSPRINT,SYSLIN)
IISYSUT1
eFigure 59.
IISYSPRINT DO
SYSOUT=A
IISYSLIN
DO
OSNAME=&&LOADSET,
DISP=(OLD,DELETE)
II
DO
DDNAME=SYSIN
DD
Cataloged
Procedure (PL1LFC)
for
Compilation with Object
Module output
.Figure 60.
Compilation
and Link-Editing
Cataloged Procedure (PL1LFCL)
Appendix E: Cataloged Procedures
lS3
COMPILATION, LINK-EDITING, AND EXECUTION
The cataloged procedure for compiling,
link-editing, and executing PL/I source
programs (PL1LFCLG) is shown in Figure 61.
LINK-EDITING AND EXECUTION
The cataloged procedure for link-editing
and executing a previously compiled PL/I
program is shown in Figure 62.
r-----------------------------------------,
//LKED
EXEC PGM=IEWL,
PARM='XREF,LIST' "
REGION=96K
r-----------------------------------------,
//PL1L
EXEC
//SYSLIB
DD
DSNAME=SYS1.PL1LIB,
DISP=SHR
//SYSLMOD
DD
DSNAME=&&GOSET(GO),
DISP=(MOD,PASS),
UNIT=SYSDA,
SPACE=(1024,(50,20,1},
RLSE)
DD
UNIT=SYSDA,
SEP= (SYSLMOD., SYSLIB),
SPACE=(1024,(200,20»
PGM=IE~Ar
PARM=' LOAD, NODECK'
REGION=52K
//SYSPRINT DD
SYSOUT=A
//SYSLIN
DSNAME=&&LOADSET,
DISP=(MOD,PASS),
UNIT=SYSSQ,
SPACE= (80, (250,100»
//SYSUTl
UNIT=SYSSQ,
SPACE=(80, (250,250»,
SEP=SYSPRINT
//SYSPRINT DD
SYSOUT=A
//SYSLIN
DDNAME=SYSIN
//SYSUT3
//SYSUTl
//LKED
DD
DD
DO
EXEC
//SYSLIB
//SYSLMOD
//SYSUTl
DD
DD
DD
UNIT=SYSDA,
SPACE=(1024,(60,60),.
CONTIG) ,
SEP=(SYSUT3,SYSPRINT,
SYSLIN)
PGM=IEWL,
PARM='XREF,LIST',
COND=(9,LT,PL1L),
REGION=96K
DSNAME=SYS1.PL1LIB,
DISP=SHR
DSNAME=&&GOSET(GO),
DISP=(MOD, PASS),
UNIT=SYSDA,
SPACE=(1024, (50,20,1),
RLSE)
UNIT=SYSDA,
SEP=(SYSLMOD,SYSLIB),
SPACE=(1024,(200,20»
//SYSPRINT DD
SYSOUT=A
//SYSLIN
DD
DSNAME=&&LOADSET,
DISP=(OLD,DELETE)
//
DD
DDNAME=SYSIN
//GO
DD
EXEC
PGM=*.LKED.SYSLMOD,
COND= (9, LT, LKED)
I
I
//SYSPRINT DD SYSOUT=A
l _________________________________________
J
.Figure 62.
Link-Editing
an1
Execution
Cataloged Procedure (PL1LFLG)
OVERRIDING CATALOGED PROCEDURES
Cataloged procedures are composed of
EXEC and DD statements. A feature of the
operating system is its ability to read
control statements and to modify a cataloged procedure for the duration of the
current job. Overriding is only temporary;
that is, the parameters added or modified
are in effect only for the duration of the
job; the cataloged procedure is not permanently modified. This section discusses the
techniques used in modifying cataloged procedures.
Overriding Parameters in the EXEC Statement
//GO
EXEC
PGM=*.LKED.SYSLMOD,
COND=( (9 ,LT, LKED),
(9 .. LT, PL1L»
_________________________________________
J
//SYSPRINT DD SYSOUT=A
.Figure 61.
184
Compilation, Link-Editing, and
Execution cataloged Procedure
(PL1LFCLG)
The PL/I programmer can change compiler
or linkage editor options for execution of
a cataloged procedure, or he can state
different conditions for bypassing a job
step. For full details, see the publication IBM System/360 Operating System, Job
Control Language.
Example:
Assume a source program is compiled, linkedited, and executed using the cataloged
procedure PL1LFCLG.
Assume further that
the compiler option SIZE and the linkage
editor option XREF are used, that the
linkage editor option LIST is not required,
and that the time for execution of the load
module is charged to account number 123.
The following EXEC statement adds and overrides parameters to the procedure:
When overriding takes place, the original DO statement in the cataloged procedure
is copied, and the parameters specified in
the original DD statement are replaced by
the corresponding parameters in the new DD
statement. Therefore, only parameters that
must be changed are specified in the new DD
statement.
If more than one DO statement is modithe overriding DD statements must be
in the same order as the original DD
statements in the cataloged procedure. Any
DD statements that are added to the procedure must follow the overriding statements
within the job step to which they belong.
fied~
//STEPl
EXEC
PL1LFCLG,PARM.PL1L=
'SIZE=065536,
LOAD, NODECK',
REGION.PL1L=68K,
PARM.LKED='XREF'
ACCT.GO='123'
Note that if the COND parameter is to be
overwritten, it must be
specified
as
COND.catprocname.stepname, where catprocname is the name of the cataloged procedure.
In procedure steps, the programmer can
catalog data sets, assign names to data
sets~ supply DCB information for data sets,
add data sets, or
specify
particular
volumes for data sets by using overriding
DD statements.
overriding and Adding DD statements
The programmer may also override and add
parameters in DD statements.
The form
"procstep. d,"1name" is used for this purpose.
The "procstep" ir1entifies the step in the
cataloged procedure.
If "ddname" is the
name of a DD statement present in the step,
the parameters in the new DD statement
override parameters in the DO statement in
the step.
If "ddname" is the name of a DD statement not present in the step, the new OD
statement is added to the step.
In any case, the modification is effective only for the current execution of the
cataloged procedure.
Note: ~ temporary name assigned to a data
set--should be preceded by a double ampersand (&&). A single ampersand (&) denotes
a symbolic parameter. Since the occurence
of a single ampersand defines a symbolic
parameter., two consective ampersands should
be coded when a symbolic parameter is not
being defined (e.g., a DSNAME value or a
PARM field value). However, if a character
string preceded by a Single ampersand is
encountered and no symbolic value has been
assigned to it, the single ampersand is
processed as if double ampersands had been
coded.
For further information on the use
of single and double ampersands see the
section on symbolic parameters in the publication IBM System/360 Operating System:
Job Control Language.
Appendix E: Cataloged Procedures
185
APPENDIX F: DYNAMIC INVOCATION OF THE COMPILER
The PL/I (P) compiler can be invoked by
using one of the assembler language macro
instructions CALL, LINK, XCTL, or ATTACH.
If the XCTL macro is used to invoke the
compiler, then no user options may be
stated. The compiler will use the standard
default, as set during system generation,
for each option.
If the compiler is invoked by CALL,
LINK, or ATTACH, the user may supply:
The compiler options
The ddnames of the data sets to be used
during processing
The first page number to be used on the
output listing
r----------T----------T-------------------,
I
Name
I Operation I
Operand
I
r----------+----------+-------------------i
I [symboll I CALL
IIEMAA,([optionlistl I
I
I
I
I
I
I
I [symbol] I LINK
I
I ATTACH
I
I
IL__________ I __________
~
I [,[ddnamelistl
I [,pagenbrl]), VL
I
I
I
I
I EP=IEMAA,
I
IPARAM=([optionlistll
I [,[ddnamelistl
I
I ___________________
[,pagenbr]]), VL=l JI
~
EP - specifies the symbolic name of the
compiler.
The entry point at which
execution is to begin is determined by
the control program (from the library
directory entry).
PARAM - specifies,
as a sublist, address
parameters to be passed from the problem program to the compiler.
The
first word in the address parameter
list
contains the address of the
option list. The second word contains
the address of the ddname list.
The
third word contains the address of the
page number parameter.
If standard
pagination is to be used, this parameter nlay be omitted.
optionlist - specifies the
variable length list
options.
If no list is
position must be marked
address of a
containing the
provided,
the
by a comma.
The option list must begin on a halfword boundary.
The two high-order
bytes contain a count of the number of
bytes in the remainder of the list.
If no options are specified, the count
must be zero.
The option list is free
186
form with each field separated by a
comma.
No blanks or zeros should
appear in the list.
ddnamelist - specifies the address of a
variable
length
list
containing
alternate ddnames for the data sets
used during compiler processing.
If
standard ddnames are used and the page
number operand is not used, then this
operand may be omitted.
If it is
omitted and the page number operand is
specified, a comma must be included to
represent the omission.
If the page
number operand is
specified,
the
address must be written whether or not
standard ddnames are used.
The ddname list must begin on a halfword boundary.
The two high-order
bytes contain a count of the number of
bytes in the remainder of the list.
If no ddnames are specified but the
page number operand is used, then the
count must be zero. Each name of less
than
eight
bytes
must be leftjustified and padded with blanks.
If
an alternate ddname is omitted, the
standard name will be assumed.
If the
name is omitted within the list, the
8-byte entry must
contain
binary
zeros.
Names can be omitted from the
end merely by shortening the list.
The sequence of the 8-byte entries in
the ddname list is as follows:
Entry Alternate Name for:
1
2
3
4
5
6
7
8
9
10
SYSLIN
not applicable
not applicable
SYSLIB
SYSIN
SYSPRINT
SYSPUNCH
SYSUT1
not applicable
SYSUT3
pagenbr - specifies the address of a 6-byte
fixed length list containing a number
to be used as the initial page number
on the output listing of the compiler.
If standard pagination is to be used,
then this operand may be omitted.
The page number list must begin on a
halfword
boundary.
the
halfword
containing the value four, followed by
four bytes containing the page number
in binary.
VL - specifies that the sign bit is to be
set to 1 in the last word of the
address parameter list.
Appendix F: Dynamic Invocation of the Compiler
187
APPENDIX G
DIAGNOSTIC MESSAGES
SOURCE PROGRAM DIAGNOSTIC MESSAGES
All source program diagnostic messages
produced are written in a group following
the source program listing and any other
listings specified as a parameter on the
EXEC statement card.
Each message number is of the form
IEMnnnnI, where the code IEM indicates the
PLII (F) Compiler, and nnnn the number of
the message.
The letter I is a system
standard action code indicating an informative message for the programmer.
There are four types of diagnostic message:
warning, error, severe error, and
terminal error.
A Warning is a message that calls attention to a possible error, although the
statement to which it refers is syntactically valid. In addition to alerting the
programmer, it may assist him in writing
more efficient programs in the future.
An Error message describes an attempt to
correct an erroneous statement; the programmer is informed of the correction.
Errors do not normally terminate processing
of the text.
A Severe error message indicates an
error which cannot be corrected by the
compiler. The incorrect section of the
program is deleted, but compilation is
continued.
Where reasonable, the ERROR
condition will be raised at object time, if
execution of an incorrect source statement
is attempted. If a severe error occurs
during compile-time processing, compilation
will be terminated after the SOURCE listing
has been produced.
sages
are
according to
In
the list of diagnostic messages
below, the abbreviations W, E, S, and T,
respectively, are used to indicate the
severity of the message, and appear immediately before the number of the message.
They do not appear in this way in the
compiler output listings; instead, the mes188
in
separate
groups
In the following text, messages are
followed where necessary by an explanation,
a description of the action taken by the
system, and the response required from the
user.
"Explanation" and "System Action"
are given only when this information is not
contained in the text of the message. When
no "User Response" is stated explicitly,
the user should assume that he must correct
the error in his source program unless the
action taken by the system makes it unnecessary for him to do so. However, even
when system action successfully corrects an
error, the user should remember that if he
subsequently recompiles the same program,
he will get the same diagnostic message
again unless he has corrected the source
error.
E IEM0002I
INVALID
PREFIX
OPERATOR IN
STATEMENT NUMBER xxx. REPLACED
BY PLUS.
E IEM0003I
RIGHT PARE~THESIS INSERTED
STATEMENT NUMBER xxx
E IEM00041
OPERATOR .NOT.
IN STATEMENT
NUMBER xxx USED AS AN INFIX
OPERATOR. IT HAS BEEN REPLACED
BY .NE.
E IEM0005I
RIGHT
PARENTHESIS
INSERTED
AFTER
SINGLE
PARENTHESIZED
EXPRESSION IN STATEMENT NUMBER
xxx
E IEM0006I
RIGHT PARENTHESIS INSERTED AT
END OF SUBSCRIPT, ARGUMENT OR
CHECK LIST IN STATEMENT NUMBER
xxx
S IEM0007I
IDENTIFIER MISSING IN STATEMENT
NUMBER xxx. A DUMMY IDENTIFIER HAS BEEN INSERTED.
E IEM0008I
RIGHT PARENTHESIS INSERTED AT
END OF CALI ARGUMENT LIST OR
OTHER EXPRESSION LIST IN STATEMENT NUMBER xxx
W IEM0009I
A LETTER IMMEDIATELY FOLLOWS
CONSTANT IN STATEMENT NUMBER
xxx.
AN INTERVENING BLANK IS
ASSUMED.
E IEM0010I
IMPLEMENTATION
RESTRICTION.
IDENTIFIER
yyyy IN OR NEAR
STATEMENT NUMBER xxx IS TOO
LONG AND HAS BEEN SHORTENED.
A Terminal error message describes an
error which, when discovered, forces the
termination of the compilation.
The choice of the severity level at and
above which niagnostic messages appear on
the output is an option which may be
selected
by the programmer.
FLAGW is
assumed if no level is specified.
printed
severity~
IN
Implementation
Explanation:
I dentif iers may
restriction.
not exceed 31 characters in
length.
E IEM0012I
E IEM0013I
E IEM0014I
E IEM0015I
E IEM0016I
E IEM0017I
E IEM0018I
SHILLINGS FIELD TRUNCATED IN
STERLING
CONSTANT
BEGINNING
yyyy IN STATEMENT NUMBER xxx
E IEM0025I
ZERO INSERTED
IN
FIELD OF
STERLING
BEGINNING yyyy IN
NUMBER xxx
E IEM0026I
ILLEGAL CHARACTER IN APPARENT
BIT STRING yyyy IN STATEMENT
NUMBER xxx. STRING TREATED AS
A CHARACTER STRING.
E IEM0027I
FIXED-POINT CONSTANT BEGINNING
yyyy IN STATEMENT NUMBER xxx
HAS BEEN TRUNCATED
ON
THE
RIGHT.
INTEGER
yyyy
TOO
LONG IN
STATEMENT ~UMBER xxx. IT HAS
BEEN TRUNCATED ON THE RIGHT.
S IEM0028I
EXPONENT TOO LONG IN FLOATINGPOINT CONSTANT BEGINNING yyyy
TN STATEMENT NUMBER xxx. IT
HAS BEEN TRUNCATED.
LABEL REFERENCED ON END STATEMENT
NUMBER
xxx CANNOT BE
FOUND. END TREATED AS HAVING
NO OPERAND.
S IEM0029I
SOLITARY DECIMAr~ POINT FOUND IN
OPERAND POSITION IN STATEMENT
NUMBER xxx
A FIXED-POINT
ZERO HAS BEEN INSERTED.
INVALID CHARACTER IN
BINARY
CONSTANT IN STATEMENT NUMBER
xxx
CONSTANT TREATED AS
DECIMAL CONSTANT.
S IEM0030I
POINTER QUALIFIER FOLLOWS EITHER A SUBSCRIPT OR ANOTHER POINTER QUALIFIER IN STATEMENT NUMBER xxx.
CONSTANT
IMMEDIATELY FOLLOWS
IDENTIFIER IN STATEMENT NUMBER
xxx.
AN INTERVENING BLANK IS
ASSUMED.
EXPONENT MISSING IN FLOATINGPOINT CONSTANT BEGINNING yyyy
IN STATEMENT NUMBER xxx.
ZERO
HAS BEEN INSERTED.
FLOATING-POINT
CONSTANT
BEGINNING
yyyy IN STATEMENT
NUMBER xxx IS TOO LONG AND HAS
BEEN TRUNCATED ON THE RIGHT.
ZERO INSERTED IN FLOATING-POINT
CONSTANT BEGINNING .E IN STATEMENT NUMBER xxx
POUNDS FIELD IN STERLING CONSTANT BEGINNING yyyy IN STATEMENT NUMBER xxx IS TOO LONG AND
HAS BEEN TRUNCATED.
E IEM0020I
ZERO INSERTED IN POUNDS FIELD
OF STERLING CONSTANT BEGINNING
yyyy IN STATEMENT NUMBER xxx
E IEM0021I
DECIMAL POINT IN EXPONENT FIELD
OF CONSTANT BEGINNING yyyy IN
STATEMENT NUMBER xxx
FIELD
TRUNCATED AT DECIMAL POINT.
E IEM0022I
DECIMAL PENCE
TRUNCATED
IN
STERLING
CONSTANT
BEGINNING
yyyy STATEMENT NUMBER xxx
S IEM0031I
OPERAND MISSING IN OR FOLLOWING
STATEMENT NUMBER xxx
DUMMY
OPERAND INSERTED.
Explanation: Something invalid
has been found in an expression~ or
where an expression
was expected but not found. In
order that further diagnosis
can be made., the compiler has
inserted a dummy operand. This
may cause further error messages to appear for this statement.
T IEM0032I
LETTER L MISSING FROM STERLING
CONSTANT
BEGINNING
yyyy IN
STATEMENT NUMBER xxx
SHILLINGS
CONSTANT
STATEMENT
System Action: As stated in a
further message referring to
the same statement.
ZERO INSERTED IN PENCE FIELD OF
STERLING
CONSTANT
BEGINNING
yyyy IN STATEMENT NUMBER xxx
E IEM0019I
E IEM0023I
None
E IEM0024I
System Action: Identifier has
been shortened by concatenating
first 16 characters with last
15.
W IEMOOllI
System Action:
IMPLEMENTATION
RESTRICTION.
STATEMENT NUMBER xxx IS TOO
LONG.
COMPILATION TERMINATED
AT THIS POINT.
User
Response:
subdivide
statement and recompile
E IEM0033I
AN INVALID PICTURE CHARACTER
IMMEDIATELY FOLLOWS TEXT yyyy
IN STATEMENT NUMBER xxx.
THE
PICTURE HAS BEEN TRUNCATED AT
THIS POINT.
Appendix G: Diagnostic Messages
189
W IEM00341
A LETTER IMMEDIATELY FOLLOWS A
CONSTANT
AT
nnnn
SEPARATE
POSITION(S> IN STATEMENT NUMBER
xxx.
AN INTERVENING BLANK HAS
BEEN ASSUMED IN EACH CASE.
User Response: check that
system action will have
required effect
E IEM00351
E IEM00371
system Action: All
lowing the 1* is
comrrent.
LETTER F IS NOT FOLLOWED BY
LEFT PARENTHESIS IN PICTURE IN
STATEMENT NUMBER xxx. ONE HAS
BEEN INSERTED.
ZERO INSERTED IN SCALING FACTOR
IN PICTURE yyyy IN STATEMENT
NUMBER xxx
RIGHT
PARENTHESIS
INSERTED
AFTER SCALING OR REPLICATION
FACTOR
IN
PICTURE yyyy IN
STATEMENT NUMBER xxx
E IEM00391
NO CHARACTER FOLLOWS REPLICATION FACTOR IN PICTURE yyyy IN
STATEMENT NUMBER xxx. THE PICTURE HAS BEEN TRUNCATED AT THE
LEFT PARENTHESIS OF THE REPLICATION FACTOR.
E IEM00401
A REPLICATION FACTOR OF 1 HAS
BEEN INSERTED IN PICTURE yyyy
IN STATEMENT NUMBER xxx
S IEM00431
RIGHT PARENTHESIS INSERTED
STATEMENT NUMBER xxx
IN STATEMENT NUMBER xxx PRECISION NOT AN INTEGER
Precision
be an unsigned integer
Expl~nation:
INVALID STATEMENT LABEL CONSTANT IN LABEL ATTRIBUTE IN
STATEMENT
NUMBER
xxx.
THE
STATEMENT LABEL CONSTANT LIST
HAS BEEN DELETED.
W IEM0051I
MISSING
RIGHT
PARENTHE·SIS
INSERTED
FOLLOWING STATEMENT
LABEL CONSTANT IN LABEL ATTRIBUTE IN STATEMENT NUMBER xxx
S IEM00521
INVALID ATTRIBUTE IN RETURNS
ATTRIBUTE
LIST IN STATEMENT
NUMBER xxx. THE INVALID ATTRIBUTE HAS BEEN DELETED FROM THE
LIST.
W IEM00531
SURPLUS COMMA HAS BEEN FOUND IN
DECLARE OR ALLOCATE STATEMENT
NUMBER xxx.
THIS COMMA HAS
BEEN DELETED.
S IEM00541
ILLEGAL FORM OF CALL STATEMENT.
STATEMENT NUMBER xxx DELETED.
W IEM00551
LABEL OR
STATEMENT
IGNORED.
E IEM00561
NULL PICTURE FORMAT ITEM IN
STATEMENT NUMBER
xxx.
THE
CHARACTER 9 HAS BEEN INSERTED
IN THE PICTURE.
LABELS ON
DECLARE
NUMBER xxx HAVE BEEN
should
Z£RO INSERTED IN FIXED PRECISION SPECIFICATION IN STATEMENT
NUMBER xxx
E IEM00461
RIGHT
PARENTHESIS
INSERTED
AFTER PRECISION SPECIFICATION
IN STATEMENT NUMBER xxx
E IEM00481
RIGHT PARENTHESIS INSERTED IN
FILE NAME LIST IN STATEMENT
NUMBER xxx
190
folas a
S IEM00501
System Action:
The
action
taken depends on whether the
precision is found in a DECLARE
statement or a PROCEDURE statement. A further message will
be produced.
E IEM00451
text
read
User Response:
Check if this
is a delimiter in the wrong
column of the record.
IN
Explanation: Right parenthesis
missing from length attached to
character or bit string.
THE COMMENT FOLLOWING THE LOGICAL END OF PROGRAM HAS NOT BEEN
TERMINATED.
Explanation: A 1* was found
following the logical end of
the program and was interpreted
as the start of a comment, but
end-of-file was reached before
the comment was terminated.
the
the
E IEM00381
E IEM00441
E IEM00491
Explanation: The null picture
may be the result of the compiler
truncating an invalid
picture.
E IEM00571
INVALID
CHARACTER
FOLLOWING
ITERATION
FACTOR IN PICTURE
BEGINNING
yyyy IN STATEMENT
NUMBER xxx.
THE PICTURE HAS
BEEN TRUNCATED AT THE
LEFT
PARENTHESI S OF THE ITERATION
FACTOR.
E IEM00581
ITERATION
FACTOR IN PICTURE
BEGINNING yyyy NOT AN UNSIGNED
User Response:
Rewrite program
with fewer blocks,
or divide
into more than one separate
compilation.
INTEGER IN STATEMENT
NUMBER
xxx.
THE PICTURE HAS
BEEN
TRUNCATED AT THE LEFT PARENTHESIS OF THE ITERATION FACTOR.
T IEM0070I
E IEM0059I
MISSING
RIGHT
PARENTHESIS
INSERTED IN POSITION ATTRIBUTE
I~ STATEMENT NUMBER xxx.
E IEM0060I
POSITION MISSING IN POSITION
ATTRIBUTE IN STATEMENT NUMBER
xxx.
POSITION OF 1 INSERTED.
E IEM0061I
MISSING
LEFT
PARENTHESIS
INSERTED IN POSITION ATTRIBUTE
IN STATEMENT NUMBER xxx.
W IEM0062I
THE ATTRIBUTE 'PACKED' IN DECLARATION STATEMENT NUMBER xxx
IS NOW OBSOLETE, ~ND HAS BEEN
IGNORED.
User Response:
Reduce level of
nesting of blocks to 50 or
less.
T IEM0071I
TOO MANY
PROCEDURE,
BEGIN,
ITERATIVE DO, ON STATEMENTS IN
THIS PROGRAM.
COMPILATION TERMINATED.
Explanation:
There
is
an
implementation restriction on
the number of blocks in a compilation. Refer to Appendix B
of
this
publication
for
details.
EXE1~~ation:
PACKED has been
removed from the language;
the
complementary
attribute
to
ALIGNED is now UNALIGNED.
system Action:
Since PACKED
applied only to arrays
and
maJor
structures,
the
new
alignment defaults will be compatible w~th those of earlier
versions
of
the
compiler,
except for bit string arrays
that are not members of structures.
BEGIN STATEMENT NUMBER xxx IS
BEYOND THE PERMITTED
NESTED
LEVEL. COMPILATION TERMINATED.
User Response:
Subdivide progra n into two or more compilations.
S IEM00721
DO
STATEMENT
NUMBER
xxx
REPLACED BY BEGIN STATEMENT.
E IEMOO 7 41
THEN INSERTED
NUMBER xxx
S IEM0075I
NO STATEMENT FOLLOWS THEN IN IF
STATEMENT NUMBER xxx
User Response: Correct source,
and recompile if necessary.
S IEM0076I
NO STATEMENT FOLLOWS ELSE IN OR
FOLLOWING STATEMENT NUMBER xxx
E IEM0063I
MISSING
LEFT
PARENTHESIS
INSERTED IN RETURNS STATEMENT
NUMBER xxx.
S IEM00771
ELSE DELETED IN OR
STATEMENT NUMBER xxx
E IEM00781
S IEM00641
ILLEGAL STATEMENT FOLLOWS THE
'T'HEN IN STATEMENT NUMBER xxx.
SEMICOLON HAS BEEN
INSERTED
AFTER THE THEN.
IMPLEMENTATION
RESTRICTION.
TOO MANY CHARACTERS IN INITIAL
LABEL· ON STATEMENT NUMBER xxx.
LABEL IGNORED.
S IEM0066I
TEXT BEGINNING yyyy IN ST~TE
MENT NUMBER xxx HAS BEEN DELETED.
Explanation: The source error
is detailed in another message
referring to the same statement.
E IEM0067I
T IEM00691
EQUAL SYMBOL HAS BEEN INSERTED
IN DO STATEMENT NUMBER xxx
IMPLEMENTATION
SOURCE
PROGRAM
MANY BLOCKS.
system Action:
terminated
RESTRICTION.
CONTAINS TOO
Compilation
is
I;~~
IF STATEMENT
FOLLOWING
Explanation:
There
is
an
implementation restriction on
the number of characters in the
subscript
of
a subscripted
identifier. The maximum permissible number is 225.
E IEM00801
EQUAL SYMBOL HAS BEEN INSERTED
IN ASSIGNMENT STATEMENT NUMBER
xxx
S IEM0081I
LABELS OR PREFIX OPTIONS BEFORE
ELSE TRANSFERRED TO STATEMENT
NUMBER xxx
Explanation: Labels or prefix
options illegal before ELSE and
therefore transferred to following statement.
Appendix G: Diagnostic Messages
191
S IEM00821
OPERAND MISSING IN CHECK LIST
IN STATEMENT NUMBER xxx.
DUMMY
INSERTED.
S IEM0083I
ON-CONDITION INVALID OR MISSING
IN STATEMENT NUMBER xxx. ON
ERROR HAS BEE~ ASSUMED.
Syst.~e~m~~A~c~t~i~o~n:
inserted in
condition
place
THE I/O ON-CONDITION IN STATEMENT NUMaER xxx HAS NO FILENAME
FOLLOWING
IT.
SYSIN
IS
ASSUMED.
E IEM0085I
COLON
MISSING
AFTER PREFIX
OPTION IN OR FOLLOWING STATEMENT NUMBER xxx. ONE HAS BEEN
ASSUMED.
T IEM0090I
THERE ARE NO COMPLETE STATEMENTS IN THIS PROGRAM .. 20MPILATION TERMINATED.
E IEM0095I
S IEM0099I
.§ystem ktion:
If the statement is incomplete, it is deleted.
Whether or
not
the
statement is incomplete, the
required number of END statements are added to the program
so that compilation can continue.
User Response:
Correct
the
source code.
Possible causes
of this error include:
1.
Unmatched quote marks
2.
Insufficient
ments
3.
Omission of final
lon.
END
state-
PARAMETER MISSING IN STATEMENT
NUMBER xxx. A DUMMY HAS BEEH
INSERTED.
LABEL ON STATEMENT NUMBER xxx
HAS NO COLON. OtlE IS ASSUMED.
S IEM0102I
LABEL MISSING FROM PROCEDURE
STA TEMENT NUMBER xxx.
A DUMMY
LABEL HAS SEEN INSERTED.
S IEM0103I
LABEL MISSING FROM ENTRY STATEMENT NUMBER xxx
S IEM0104I
ILLEGAL STATEMENT FOLLOWS ELSE
IN STATEMENT NUMBER xxx
A
colon
is
SEMI-COLON
NOT
FOUND
WHEN
EXPECTF.D IN STATEMENT NUMBER
xxx. O~E HAS BEEN INSERTED.
INVALID
CHARACTER
HAS BEEN
REPLACED BY BLANK IN OR FOLLOWING STATEMENT NUMBER xxx.
THE
CONTAINING OUTPUT RECORD
IS
MARKED BY AN ASTERISK.
System Action:
inserted
S IEM010SI
T IEM0106I
Null
semico-
statement
ILLEGAL STATEMENT FOLLOWS ON IN
STATEMENT NUMBER xxx
System Action:
inserted
LOGICAL END OF PROGRAM OCCURS
AT STATEMENT NUMBER xxx.
THIS
STATEMENT HAS BEEN IGNORED SO
THAT SUBSEQUENT STATEMENTS MAY
BE PROCESSED.
Explanation: Although the compiler has detected the end of
the program, there is more text
following it.
The programmer
appears to have made an error
in matching END statements with
PROCEDURE,
BEGIN, DO or ON
statements.
192
END OF FILE FOUND IN OR AFTER
STATEMENT NUMBER xxx, BEFORE
THE LOGICAL END OF PROGRAM.
S IEM0101I
System Action:
inserted
E IEM0097I
state-
RECORD IN OR FOLLOWING STATEMENT NUMBER xxx IS SHORTER THAN
THE SPECIFIED SOURCE
START.
THE OUTPUT RECORD HAS
BEEN
MARKED WITH AN ASTERISK AND
IGNORED.
Explanation: The compiler has
encountered an identifier which
appears to be
a
statement
label, but without a colon.
E IEM0096I
S IEM0100I
ON
ERROR
of invalid
E IEM0084I
W IEM0094I
System Action: The END
ment is ignored
IMPLEMENTATION
SOURCE
PROGRAM
MANY BLOCKS.
system Action:
terminated.
Null statement
RESTRICTION.
CONTAINS TOO
Compilation
is
User Response:
Rewrite program
with fewer blocks, or divide
into more than one separate
compilation.
T IEM010?I
IMPLEMENTATION
RESTRICTION.
STATEt1ENT NUMBER xxx IS TOO
WNG.
THIS STATEMENT MAY CONTAIN UNMATCHED QUOTE MARKS.
User
Response:
Subdivide
statement and recompile
S IEM01081
S IEM01091
S IEM01321
DUMMY
OPERAND
INSERTED
STATEMENT NUMBER xxx
IN
ENTRY STATEMENT NUMBER xxx IN
AN ITERATIVE DO GROUP HAS BEEN
DELETED.
S IEM0133I
RIGHT PARENTHESIS INSERTED
STATEMENT NUMBER xxx
IN
TEXT BEGINNING yyyy IN OR FOLLOWING STATEMENT NU~1BER xxx HAS
BEEN DELETED.
S IEM0134I
IMPLEMENTATION
RESTRICTION.
TOO MANY LEVELS OF REPLICATION
IN INITIAL ATTRIBUTE IN STATEMEN'! NUMBER xxx. THE ATTRIBUTE
HAS BEEN DELETED.
Explanation:
The source error
is detailed in another message
referring to the same statement.
S IEMOll01
Explanation:
The implementation restriction on levels of
nesting has been contravened.
For details, refer to Appendix
B of this publication.
TEXT BEGINNING yyyy IN OR FOLLOWING STATEMENT NUMBER xxx HAS
BEEN DELETED.
The source error
is detailed in another message
referring to the same statement.
User Response:
Rewrite INITIAL
attribute with lower level of
rep lica tion
~xplanation:
E IEM01361
'IN' CLAUSE IN STATEME~T NUMBER
xxx HAS NO ASSOCIATED 'SET'
CLAUSE.
S IEMOlll1
FIRST STATEMENT NOT A PROCEDURE
STATEMENT. A DUMMY PROCEDURE
STATEMENT HAS BEEN INSERTED.
S IEMOl12I
ENTRY STATEMENT NUMBER xxx IN
BEGIN BLOCK HAS BEEN DELETED.
Explanation: An IN clause must
be accompanied by a SET clause
in the same statement.
S IEM01131
RIGHT PARENTHESIS INSERTED
STATEMENT NUMBER xxx
system Action:
is ignored
IN
Explanation:
Parenthesized
list in ON statement is either
not closed or contains an error
and has been truncated.
E IEMOl141
E IEM01381
RIGHT PARENTHESIS INSERTED IN
PREFIX OPTION IN OR FOLLOWING
STATEMENT NUMBER xxx
E IEMOl151
LEFT PARENTHESIS INSERTED AFTER
WHILE IN STATEMENT NUMBER xxx
E IEM01161
PREFIX OPTION FOLLOWS LABEL IN
STATEMENT NUMBER xxx. PREFIX
OPTION IS IGNORED.
OFFSET ATTRIBUTE NOT FOLLOWED
BY PARENTHESIZED BASED VARIABLE
IN STATEMENT NUMBER xxx. THE
ATTRIBUTE IS IGNORED.
S IEM01281
LENGTH
OF BIT OR CHARACTER
STRING
MISSING IN STArEMENT
NUMBER xxx. LENGTH 1 INSERTED.
S IEM01291
INVALID WAIT
xxx DELETED.
E IEM0130I
OPERAND MISSING.
COMMA DELETED
IN WAIT STATEMENT NUMBER xxx
S IEM0131I
RIGHT PARENTHESIS INSERTED IN
STATEMENT NUMBER xxx
STATEMENT
NUMBER
IN
clause
SOLITARY I
FOUND WHERE A CONSTANT IS EXPECTED IN INITIAL
ATTRIBUTE IN STATEMENT NUMBER
xxx.
FIXED DECIMAL IMAGINARY
11 HAS BEEN ASSUMED.
Explanation:
The
programmer
has initialized
an
element
using the variable I where the
constant 11 was expected.
system Action:
S IEMOl181
The
S IEM01391
11 is assumed
TEXT IMMEDIATELY FOLLOWING yyyy
IN INITIAL ATTRIBUTE IS ILLEGAL. INITIAL ATTRIBUTE DELETED
IN STATEMENT NUMBER xxx
Explanation:
A language feature has been used that is not
supported by this version of
the
compiler.
For details,
refer to Appendix H of this
publication. Although the message states that the error follows the quoted text, the quoted text may itself be invalid,
and
the
compiler may have
attempted to correct the source
error.
In this case, there
will usually be another diagnostic message associated with
the statement.
Appendix G: Diagnostic Messages
193
W IEM0140I
NO
IDENTIFIER
APPEARS
IN
DECLARE STATEMENT NUMBER xxx
system Action:
is ignored
The
referring
ment.
to
the
same state-
statement
E IEM0153I
THE ATTRIBUTED BASED HAS BEEN
ASSUMED IN STATEMENT NUMBER xxx
WHERE CONTROLLED WAS SPECIFIED.
S IEM0142I
RIGHT PARENTHESIS INSERTED IN
STATEMENT NUMBER xxx
S IEM0143I
RIGHT PARENTHESIS INSERTED
STATEMENT NU~BER xxx
S IEM0144I
ATTRIBUTE IS NOT rOLLOWED BY A DATA DESCRIPTION IN
STATEMENT NUMBER
xxx.
THE
RETURNS ATTRIBUTE HAS BEEN DELETED.
S IEM0145I
DUMMY IDENTIrIER INSERTED
GENERIC
ATTRIBUTE
LIST
STATEMENT NUMBER xxx
IN
IN
System Action: Text is deleted.
See further error message
for this statement.
S IEM0146I
~IGHT
PARENTHESIS INSERTED
STATEl..ffiNT NUMBER xxx
IN
User Response:
statement
S IEM0141I
'T.'HE USE or RErER IN STATEMENT
NUMBER xxx IS EITHER INVALID OR
IS
NOT IMPLEMENTED IN THIS
RELEASE
Explanation:
The PL/I feature
CONTROLLED (pointer)
has been
changed to BASED (pointer).
IN
~ETURNS
S IEM0154I
E IEM0158I
Explanation:
The implementation of the REFER option is
restricted;
see Appendix H,
'Language
features
Not
supported' •
system Action:
Ignore
the
REFER clause.
A further message identifying the invalid
text will usually
accompany
this message.
E IKM0148I
E IEM0149I
E IEM0150I
IEM0159I
source
ZERO STRUCTURE LEVEL
NUMBER
DELETED IN DECLARE STATEMENT
NUMBER xxx
Explanation:
not allowed
E
Correct
Zero level number
SIGN DELETED PRECEDING
TURE LEVEL NUMBER IN
STATEMENT NUMBER xxx
STRUCDECL~RE
Explanation: The level number
must be an unsigned integer
S IEM0163I
FORMAT
INSERTED
xxx
LIST
MISSING,
(A)
IN STATEMENT NUMBER
IN
E IEM0164I
MISSING
INSERTED
xxx
RIGHT
PARENTHESIS
IN STATEMEL'lT NUMBER
System Action:
See
further
messages
relating
to
this
statement
S IEM0166I
OPERAND MISSING IN GO TO STATEMENT NUMBER xxx.
DUMMY
IS
INSERTED.
COMMA HAS BEEN DELETED FROM
LIST IN STATEMENT NUMBER xxx
E IEM0112I
LEFT PARENTHESIS INSERTED
DELAY STATEMENT NUMBER xxx
LEFT PARENTHESIS MISSING
STATEMENT NUMBER xxx
STATEME~~'l'
NUMBER xxx IS AN
INVALID FREE STATEMENT.
THE
STATEMENT HAS BEEN DELETED.
Explanation: The format of the
statement is invalid
S IEM0151I
SEMI-COLON INSERTED
MENT NUMBER xxx
S IEM0152I
TEXT BEGINNING yyyy IN STATEMENT NUMBER xxx HAS BEEN DELETED.
IN
Explanation: The expression in
a DELAY statement should be
contained in parentheses
E IEM0180I
EQUAL SYMBOL HAS BEEN INSERTED
IN DO SPEC I FICATIONS IN STATEMENT NUMBER xxx
E IEM0181I
SEMICOLON INSERTED IN STATEMENT
NUMBER xxx
IN STATE-
Explanation:
The source error
is detailed in another message
194
IMPLEMENTATION RESTRICTION IN
STATEMENT NUMBER xxx.
BASED
MUST BE FOLLOWED BY AN IDENTIFIER IN PARENTHESIS.
Explanation: An error has been
discovered.
A semi-colon is
therefore inserted and the rest
of the statement is skipped.
S IEM0182I
TEXT BEGINNING yyyy SKIPPED IN
OR FOLLOWING STATEMENT NUMBER
xxx
Appendix B of this
for details.
Explanation: The source error
is detailed in another message
referring to the same statement.
System Action:
pilation
S IEM0185I
OPTION IN GET/PUT
STATEMENT
NUMBER xxx IS INVALID AND HAS
BEEN DELETED.
S IEM0187I
DATA LIST MISSING IN STATEMENT
NUMBER xxx. OPTION DELETED.
S IEM0191I
DUMMY OPERAND INSERTED IN DATA
LIST IN ST~TEMENT NUMBER xxx
E IEM0193I
RIGHT PARENTHESIS INSERTED IN
DATA LIST IN STATEMENT NUMBER
xxx
E IEM0194I
MISSING
RIGHT
PARENTHESIS
IN
INSERTED IN FORMAT LIST
STATEMENT NUMBER xxx
S IEM0195I
INVALID FORMAT LIST DELETED IN
STATEMENT
NUMBER
xxx.
(A)
INSERTED.
S IEM0202I
E IEM0211I
LEFT PARENTHESIS INSERTED
STATEMENT NUMBER xxx
E IEM0212I
MULTIPLE TASK OPTIONS SPECIFIED
IN STATEMENT NUMBER xxx.
THE
FIRST ONE IS USED.
MULTIPLE EVENT OPTIONS SPECIFIED IN STATEMENT NUMBER xxx.
THE FIRST ONE IS USED.
System Action:
Ignores options
other than the first
E IEM0214I
MULTIPLE PRIORITY OPTIONS SPECIFIED IN STATEMENT NUMBER xxx.
THE FIRST ONE IS USED.
system Action: Ignores options
other than the first
E IEM0216I
INVALID EVENT OPTION IGNORED IN
STATEMENT NUMBER xxx
statement
Explanation:
The
referred to is of a type not
supported by this version of
the
compiler.
For details,
refer to Appendix H of this
publication.
E IEM0217I
INVALID PRIORITY OPTION IGNORED
IN STATEMENT NUMBER xxx
S IEM0220I
IDEt~IFIER MISSING OR INCORRECT
AFTER OPTION IN STATEMENT NUMBER xxx. OPTION DELETED.
Compilation
S IEM0221I
NUMBER OF LINES NOT GIVEN AFTER
LINE OPTION IN STATEMENT NUMBER
xxx.
(1) INSERTED.
User Response: Rewrite source
program avoiding use of unsupported feature
S IEM0222I
DEFERRED FEATURE.
THE IDENT
OPTION ON OPEN/CLOSE STATEMENT
NUMBER xxx IS NOT IMPLEMENTED
BY THIS VERSION.
system
Action:
continues
E IEM0207I
IN
system Action: Ignores options
other than the first
COMPLEX FORMAT ITEM yyyy IN
STATEMENT NUMBER xxx IS INVALID
AND HAS BEEN DELETED.
DEFERRED FEATURE.
STATEMENT
NUMBER xxx NOT IMPLEMENTED IN
THIS VERSION.
Terminates com-
User Response:
Divide statement into two or more statements
E IEM0213I
S IEM01981
publication
COMMA REPLACED BY EQUAL SYMBOL
IN ASSIGm~ENT STATEMENT NUMBER
xxx
E IEM0208I
LEFT PARENTHESIS INSERTED IN
CHECK LIST IN STATEMENT NUMBER
xxx
T IEM0209I
IMPLEMENTATION
STATEMENT NUMBER
COMPLEX
Explanation: A language feature has been used that is not
supported by this version of
the compiler. Refer to Appendix H of this publication for
details.
RESTRICTION.
xxx IS TOO
System Action:
S IEM0223I
Explanation:
The
level of
nesting exceeds the implementation
restriction.
Refer to
Option ignored
EXPRESSION
MISSING
AFTER
IDENT/TITLE/LINESIZE/PAGESIZE
OPTION IN STATEMENT NUMBER xxx.
OPTION DELETED.
Appendix G: Diagnostic Messages
195
Explanation: No left parenthesis found following keyword
S IEM0224I
INVALID OPTION DELETED IN 1/0
STATEMENT NUMBER xxx
S IEM0225I
OPTION
AFTER
OPEN/CLOSE IN
STATEMENT NUMBER xxx IS INVALID
OR MISSING.
S IEM0226I
EXPRESSION MISSING AFTER FORMA.T
ITEM IN STATEMENT NUMBER xxx.
ITEM DELETED.
W IEM0227I
NO FILE/STRING OPTION SPECIFIED
IN ONE OR MORE GETIPUT STATEMENTS. SYSIN/SYSPRINT HA.S BEEN
ASSUMED IN EACH CASE
S IEM0238I
Explanation:
The omission of
the locate variable renders the
statement
meaningless.
Subscripted locate variables are
invalid.
System Action: Replaces invalid statement with a null statement.
T IEM0240I
Explanation: One or more GET
or PUT statements have appeared
in the program with no specified
FILE option or STRING
option.
S IEM0229I
S IEM0230I
EXPRESSION MISSING AFTER OPTION
IN
STATEMENT
NUMBER
xxx.
OPTION DELETED.
FORMAT ITEM IN STATEMENT NUMBER
xxx IS INVALID AND HAS BEEN
DELETED.
COMPILER ERROR IN PHASE ev.
SCAN CANNOT IDENTIFY DICTIONARY
ENTRY.
Explanat1Qg: The main scan of
fifth pass of read-in has found
something in the
dictionary
which it cannot recognize
System Action:
terminated
System Action:
The compiler
has assumed the
appropriate
default file (SYSIN for GET,
SYSPRINT for PUT).
S IEM0228I
THE LOCATE-VARIABLE IN LOCATE
STATEMENT NUMBER xxx IS OMITTED
OR SUBSCRIPTED. THE STATEMENT
HAS BEEN DELETED.
Compilation is
User Response:
Save relevant
data. Call your local IBM representative.
E IEM0241I
MULTIPLE USE OF A PREFIX OPTION
HAS OCCURRED IN STATEMENT NUMBER xxx. THE LAST NAMED OPTION
IS USED.
S IEM0242I
INVALID PREFIX OPTION IN STATEMENT NUMBER xxx.
THE OPTION
HAS BEEN IGNORED.
T IEM02431
COMPILER ERROR.
PHASE CS HAS
FOUND AN UNMATCHED END.
INVALID DATA LIST IN STATEMENT
xxx. ST~TEMENT DELETED.
NU~BER
E IEM0231I
MISSING COMMA INSERTED IN DATA
LIST IN STATEMENT NUMBER xxx
system Action:
terminated
Explanation:
Comma
miSSing
between elements of a data list
E IEM0232I
KEYWORD DO MISSING IN DATA LIST
IN STATEMENT NUMBER xxx. DO IS
INSERTED.
S IEM0233I
RETURN STATEMENT NUMBER xxx IS
HITHIN ]I,N ON-UNIT
IT IS
P~PLACED BY A NULL STATEMENT.
S IEM0235I
ARGUMENT OMITTED FOLLOWIN3 yyyy
OPTION IN STATEMENT NUMBER xxx.
OPTION DELETED.
S IEM0236I
THE OPTION yyyy IN STArEMENT
NUMBER xxx IS UNSUPPORTED OR
INVALID.
S IEM0237I
196
INSUFFICIENT OPTIONS SPECIFIED
IN STATEMENT NUMBER xxx. THE
STATEMENT HAS BEEN REPLACED BY
A NULL STATEMENT.
Compilation
is
User Re§E~:
Save relevant
data. Call your local IBM representati ve,.
E IEM0244I
CHECK PREFIX OPTION IN STATEMENT NUMBER xxx IS NOT FOLLOWED
BY A PARENTHESIZED LIST. THE
OPTION HAS BEEN IGNORED.
E IEM02451
A CHECK PREFIX OPTION IS GIVEN
FOR STATEMENT NUMBER xxx WHICH
IS NOT A PROCEDURE OR BEGIN.
THE OPTION HAS BEEN IGNORED.
S IEM0247I
ALL SUBSCRIPTED LABELS PREFIXING PROCEDURE OR ENTRY STATEMENT NUMBER xxx
HAVE
BEEN
IGNORED.
Explanation:
Subscripted
labels may not be used as pre-
ENTRY
S IEM051QI
PARAMETER yyyy IN
STATEMENT
NUMBER xxx IS SAME AS LABEL.
PARAMETER REPLACED BY DUMMY.
COMPILER UNABLE TO RECOVER FROM
I/O ERROR - PLEASE RETRY JOB.
S IEM05151
IMPLEMENTATION
RESTRICTION.
CHARACTER
STRING
LENGTH IN
STATEMENT NUMBER xxx REDUCED TO
32,767.
S IEM05161
ILLEGAL OPTIONS LIST ON STATEMENT NUMBER xxx. LIST IGNORED.
fixes on PROCEDURE
statements.
T IEM025QI
T IEM02551
or
System Action:
pilation
Terminates com-
User Response:
pilation
Re-attempt com-
system Action: Compiler scans
for next right bracket.
If
this is not the bracket closing
the illegal options list, a
compiler error will probably
follow.
THERE ARE NO COMPLETE STATEMENTS IN THIS PROGRAM
Compiler cannot
Explanation:
reconcile END statements with
stack entries. Usually caused
by a program containing only
comments.
S IEM05171
CONFLICTING ATTRIBUTE DELETED
IN STATEMENT NUMBER xxx
System Action:
terminated
S IEM05181
IMPLEMENTATION
RESTRICTION.
PRECISION TOO LARGE IN STATEMENT NUMBER xxx. DEFAULT PRECISION GIVEN.
Compilation
is
User Response:
Check source
for completed statements.
If
these are present then save
relevant data and call your
local IBM representative.
W IEM0510I
Explanation:
If later a valid
precision is given, this will
be accepted in place of the
default.
THE TASK
OPTION
H&S
BEEN
ASSUMED TO APPLY TO THE EXTERNAL PROCEDURE STATEMENT NUMBER
xxx
Explanation:
TASK, EVENT or
PRIORITY
options
have been
1etected in a CALL statement,
but the TASK option has not
been specified in the external
procedure.
System
Action:
Attribute
ignored.
Attribute test mask
restored so that later attribute will not be found to conflict with deleted one.
S IEM0519I
OPTIONS MAIN AND/OR TASK ARE
NOT ALLOWED ON THE INTERNAL
PROCEDURE STATEMENT NUMBER xxx
system Action:
The
options are ignored
S IEM05121
S IEM05131
T IEM0520I
system
Action:
immediately
IDENTIFIER yyyy IN STATEMENT
NUMBER xxx IN INITIAL ATTRIBUTE
LIST IS NOT A KNOWN LABEL CONSTANT AND HAS BEEN IGNORED.
REPEATED LABEL IN SAME BLOCK ON
STATEMENT NUMBER xxx.
LABEL
DELETED.
Explanation:
A label may not
be used more than once in the
same block.
COMPILER ERROR CODE nnnn
Explanation: A compiler
has occurred.
invalid
system
Action:
Identifier
changed tb * in the list.
STATEMENT
Explanation:
Only data attributes allowed on procedure or
entry statements.
(No dimensions allowed).
system Action: The TASK option
is correctly applied
W IEM05111
ILLEGAL ATTRIBUTE ON
NUMBER xxx IGNORED.
error
Terminates
User Response:
Save relevant
data. Call your local IBM representative.
S IEM0521I
INVALID STRING LENGTH IN STATEMENT NUMBER xxx. LENGTH OF 1
ASSUMED.
Explanation: Either no length
has been given or string length
* has been used in source code.
System
Action:
Assumes length
Appendix G: Diagnostic Messages
197
of 1 and skips to
bute
S IEM05221
S IEM05231
S IEM05241
attri-
IN STATEMENT NUMBER xxx. THE
LABEL zzzz AND ANY FOLLOWING IT
HAVE BEEN IGNORED.
IMPLEMENTATION
RESTRICTION.
NUMBER OF PARAMETERS IN PROCEDURE OR ENTRY STATEMENT NUMBER
xxx TRUNCATED TO 64.
PARAMETER zzzz IN
STATEMENT
NUMBER xxx APPEARS TWICE. SECOND ONE REPLACED BY DUMMY.
Explanation:
There
is
an
implementation restriction limiting the number of label constants following
the
LABEL
attribute to 125.
S IEM05321
IDENTIFIER yyyy IN LABEL LIST
IN STATEMENT NUMBER xxx IS NOT
A LABEL OR IS NOT KNOWN.
System Action:
tifier
T IEM0525I
next
Ignores
Explanation:
There
is
an
implementation restriction limiting the number of left parentheses
used
for
factoring
attributes in DECLARE statements to 73 within a compilation.
System Action:
pilation
system
Action:
Compilation
continues with truncated iSUB
1ist# possibly causing cascade
errors.
iden-
IMPLEMENTATION
RESTRICTION.
MORE THAN 73 PAIRS OF FACTORED
ATTRIBUTE BRACKETS.
S IEM05331
S IEM05341
IMPLEMENTATION
RESTRICTION.
STRING LENGTH IN STATEMENT NUMBER xxx REDUCED TO 32,767.
S IEM05351
IMPLEMENTATION
RESTRICTION.
KEYLENGTH IN STATEMENT NUMBER
xxx REDUCED TO 255.
S IEM05361
IDENTIFIER yyyy IN STATEMENT
NUMBER xxx IS NOT A LABEL CONSTANT OR IS NOT KNOWN.
IT IS
IGNORED.
Terminates com-
W IEM5261
OPTION MAIN HAS NOT BEEN SPECIFIED FOR THE EXTERNAL PROCEDURE
STATEMENT NUMBER xxx
S IEM0527I
IMPLEMENTATION
RESTRICTION.
ARRAY BOUND IN STATEMENT Nur-1BER
xxx IS TOO LARGE AND HAS BEEN
REPLACED BY THE MAXIMUM PERMITTED VALUE (32767 OR -32768).
T IEM05281
COMPILER ERROR CODE
STATEMENT NUMBER xxx
IMPLEMENT.ATION
RESTRICTION.
POSITION CONSTANT IN STATEMENT
NUMBER xxx REDUCED TO 32,767.
E IEM05381
IMPLEMENTATION
RESTRICTION.
IN
PRECISION
SPECIFICATION
STATEMENT NUMBER xxx TOO LARGE.
eEFAULT PRECISION GIVEN.
E IEM05391
User Response:
Save relevant
data. Call your local IBM representative.
ILLEGAL NEGATIVE PRECISION IN
STATEMENT NUMBER xxx. DEFAULT
PRECISION GIVEN.
S IEM05401
IMPLEMENTATION
RESTRICTION.
STRUCTURE
LEVEL
NUMBER
IN
STATEMENT NUMBER xxx REDUCED TO
255.
* BOUNDS ARE MIXED WITH NON--*
BOUNDS IN DECLARE
STATEMENT
NUMBER xxx
ALL THE BOUNDS
ARE MADE *.
E IEM05411
LOWER BOUND GREATER THAN UPPER
BOUND IN DECLARE OR ALLOCATE
STATEMENT NUMBER xxx
THE
BOUNDS ARE INTERCHANGED.
system Action:
pilation
198
Explanation:
Identifiers following the LABEL attribute must
be LABEL constants and must be
known.
S IEMO 5 3 71
nnnn
IN
Explanation:
Compiler error
found in processing a DECLARE
statement
S IEM05301
IMPLEMENTATION
RESTRICTION.
I-SUB VALUE IN STATEMENT NUMBER
xxx TOO LARGE. REDUCED TO 32.
Explanation:
There
is
an
implementation restriction limiting the number of dimensions
to a maximum of 32.
User Response: Reduce factoring by expanding declarations.
S IEM05291
ILLEGAL ASTERISK AS SUBSCRIPT
IN DEFINING LIST IN STATEMENT
NUMBER xxx. LIST TRUNCATED.
Terminates com-
IMPLEMENTATION
RESTRICTION.
TOO MANY LABELS IN LABEL LIST
S IEM05421
IMPLEMENTATION
RESTRICTION.
NUMBER OF DIMENSIONS DECLARED
TRUNCATED TO 32 IN STATEMENT
NUMBER xxx
T IEM05431
COMPILER ERROR.
MENT FOUND IN
CHAIN.
ILLEGAL STATETHE
DECLARE
System Action: Same BCD treated as different identifiers
F.xplanation:
Compiler
error
found in scanning chain
of
DECLARE statements
system
Action:
terminated
MA.JOR STRUCTURE MEMBER AND HAS
THE SAME NAME AS A PARAMETER IN
THE
SAME BLOCK.
THESE ARE
DIFFERENT
IDENTIFIERS,
AND
UNQUALIFIED REFERENCES REFER TO
THE PARAMETER.
T IEM05481
Compilation
Explanation:
Compiler error
found in list of declarations
in DECLARE statement
User Response:
Save relevant
data. Call your local IBM representative.
T IEM05441
Explanation:
Compiler
error
found in first byte of DECLARE
statements
EIEM05491
THE DECLARED LEVEL OF IDENTIFIER yyyy IN STATEMENT NUMBER xxx
SHOULD BE ONE. THIS HAS BEEN
FORCED.
S IEM05501
THE IDENTIFIER yyyy HAS BEEN
DECLARED IN STATEME~T NUMBER
xxx WITH A TRUE LEVEL NUMBER
GREATER THAN THE IMPLEMENTATION
RESTRICTION OF 63. TriE DECLARATION OF THE IDENTIFIER
IS
IGNORED.
E IEM05511
THE IDENTIFIER yyyy HAS BEEN
DECLARED IN STATEMENT NUMBER
xxx WITH ZERO PRECISION. THE
DEFAULT VALUE HAS BEEN ASSUMED.
T IEM05521
User Response:
Save relevant
data. Call your local IBM representative.
COMPILER ERROR. ILLEGAL CHARACTER FOUND IN FACTORED ATTRIBUTE LIST IN DECLARE STATEMENT
NUMBER xxx
COMPILER ERROR. ILLEGAL CHARACTER FOUND AFTER LEVEL NUMBER
IN DECLARE STATEMENT NUMBER xxx
Explanation:
Compiler
error
found in factored
attribute
list
Explanation:
Compiler
error
found after structure
level
number in DECLARE statement
system
Action:
terminated
COMPILER ERROR.
ILLEGAL INITIAL CHARACTER TO DECLARED ITEM
IN STATEMENT NUMBER xxx
system
Action:
terminated
System
Action:
terminated
Compilation
THE IDENTIFIER yyyy DECLARED IN
STATEMENT NUMBER xxx I S A NON-
Compilation
User Response:
Save relevant
data. Call your local IBM representative.
Compilation
User Response:
Save relevant
data. Call your local IBM representative.
W IEM05471
User Resp~:
Save relevant
data. Call your local IBM representative.
system Action:
Illegal level
number treated as 1
Explanation:
Compiler error
found
in scanning start of
declared item
T IEM05461
Compilation
Compilation
User Response:
Save relevant
data. Call your local IBM representative .•
T IEM05451
System
~ction:
terminated
COMPILER ERROR.
INITIAL CODE
BYTE OF DECLARE ST~TEMENT IS
NEITHER STATEMENT NUMBER NOR
STATEMENT LABEL.
System
Action:
terminated
COMPILER ERROR. ILLEGAL CHARACTER
FOUND
IN DECLARATION
LIST.
E IEM05531
THE IDENTIFIER yyyy HAS HAD A
CONFLICTING ATTRIBUTE IGNORED
IN DECLARE STATEMENT NUMBER xxx
Explanation: The
two
butes may conflict as a
Appendix G: Diagnostic Messages
attriresult
199
T IEM0554I
of a feature not supported by
this version of the compiler.
For details of these features,
refer to Appendix H of this
publication.
S IEM0562I
THE IDENTIFIER yyyy IS DECLARED
IN STATEMENT NUMBER xxx AS AN
INTERNAL ENTRY POINT. THE NUMBER OF PARAMETERS DECLARED IS
DIFFERENT FROM THE NUMBER GIVEN
AT THE ENTRY POINT.
COMPILER ERROR.
ILLEGAL CHARACTER FOUND IN PARAMETER LIST
FOLLOWING 'GENERIC' ATTRIBUTE.
S IEM0563I
THE IDENTIFIER yyyy DECLARED
'BUILTIN' IN STATEMENT NUMBER
xxx IS NOT A BUILT-IN FUNCTION.
DECLARATION IGNORED.
System
Action:
terminated
E IEM0564I
THE IDENTIFIER yyyy HAS BEEN
DECLARED IN STATEMENT NUMBER
xxx WITH PRECISION GREATER THAN
THE IMPLEMENTATION LIMITS. THE
MAXIMUM VALUE HAS BEEN TAKEN .•
E IEM0565I
THE IDENTIFIER yyyy IS DECLARED
IN STATEMENT NUMBER xxx AS A
MEMBER OF A GENERIC LIST, BUT
ITS ATTRIBUTES DO NOT MAKE IT
AN ENTRY POINT.
THE DECLARATI eN OF THE IDENTIFIER HAS
BEEN IGNORED.
E IEM0566I
ONE OF THE PARAMETERS DECLARED
FOR ENTRY POINT yyyy IN STATEMENT i-lUMBER xxx SHOULD BE AT
LEV EL ONE.
THIS
HAS
BEEN
FORCED.
W IEM0567I
IF FUNCTION zzzz IN STATEMENT
NUMBER xxx IS INVOKED,THE USE
OF' DEFAULT ATTRIBUTES FOR THE
VALUE RETURNED WILL CONFLICT
WITH THE DECLARED ATTRIBUTES
FOR THAT VALUE.
compilation
User Response:
Save relevant
data. Call your local IBM representative.
E IEM0555I
STORAGE CLASS ATTRIBUTES MAY
NOT BE SPECIFIED FOR STRUCTURE
MEMBER
yyyy
ATTRIBUTE
IGNORED.
Qser~Qg§~:
Delete illegal
storage class attribute for the
structure member.
T IEM0556I
COMPILER ERROR.
ILLEGAL CHARACTER FOUND IN PARAMETER LIST
FOLLOWING AN 'ENTRY' ATTRIBUTE
IN DECLARE STATEMEt~ NUMBER xxx
System
Action:
terminated
Compilation
User Response:
Save relevant
data. Call your local IBM representative.
E IEM0557I
THE MULTIPLE DECLARATION
OF
IDENTIFIER yyyy IN STATEMENT
NUMBER xxx HAS BEEN IGNORED.
S IEM0558I
IMPLEMENTATION
RESTRICTION.
NUMBER OF PARAMETER DESCRIPTIONS DECLARED FOR PROCEDURE OR
ENTRY NAME yyyy IN STArEMENT
~UMBER xxx TRUNCATED TO 64.
E IEM0559I
E IEM0560I
THE IDENTIFIER yyyy HAS BEEN
DECLARED IN STATEMENT NUMBER
xxx WITH CONFLICTING FACTORED
LEVEL NUMBERS.
THE ONE
AT
DEEPEST FACTORING LEVEL
HAS
BEEN CHOSEN.
Explanation: The data type to
which a result will be converted at a RETURN (expression)
will not be the same as that
expected at an invocation of
the entry label as a function.
System Action:
User Response: Write an ENTRY
declaration in the containing
PROCEDURE or BEGIN block, giving the same data attributes as
on
the
PROCEDURE or ENTRY
statement.
S IEM0568I
IN STATEMENT NUMBER xxx A CONFLICTING
ATTRIBUTE HAS BEEN
IGNORED IN THE DECLARATION OF
THE RETURNED VALUE OF ENTRY
POINT yyyy
200
IN STATEMENT NUMBER xxx THE
IDENTIFIER yyyy IS A MULTIPLE
DECLARATION
OF
AN INTERNAL
ENTRY LABEL.
THIS DECLARATION
IS IGNORED.
THE IDENTIFIER zzzz IS CALLED
BUT IS EITHER A BUILTIN FUNCTION OR IS NOT AN ENTRY POINT.
system Action:
The erroneous
statement is deleted.
T IEM0569I
S IEM0561I
None
COMPILER ERROR NUMBER
MODULE EP.
nnnn
IN
Explapation:
Compiler
error
found in scan of chain of CALL
statements
system
Action:
terminated
Compilation
S IEM05901
Save relevant
data. Call your local IBM representative ..
User~onse:
W IEM05701
THE ENTRY POINT yyyy HAS BEEN
DECLARED IN STATEMENT NUMBER
xxx TO HAVE A RETURNED VALUE
DIFFERENT FROM THAT GIVEN ON
THE PROCEDURE OR ENTRY STATEMENT.
System Action:
STRUCTURE ELEMENT zzzz WHICH
HAS LIKE ATTRIBUTE ATTACHED TO
IT, IS FOLLOWED BY AN ELEMENT
WITH A
NUMERICALLY
GREATER
STRUCTURE LEVEL NUMBER.
LIKE
ATTRIBUTE IS IGNORED.
System Action:
Self explanatory: may result in cascade
errors.
S IEM05911
STRUCTURE ELEMENT zzzz IS LIKENED TO AN ITEM WHICH IS NOT A
STRUCTURE
VARIABLE.
LIKE
ATTRIBUTE IS IGNORED.
None
System Action:
Self
atory: may result in
errors.
User Response: Change the declaration, or the PROCEDURE or
ENTRY statement.
S IEM05921
S IEM05711
IMPLEMENTATION
RESTRICTION.
IDENTIFIER yyyy IN STATEMENT
NUMBER xxx HAS MORE THAN 32
DIMENSIO~m.
DIMENSION ATTRIBUTE IGNORED.
S IEM05721
THE IDENTIFIER yyyy HAS BEEN
DECLARED IN STATEMENT NUMBER
xxx WITH THE ATTRIBUTE "NORMAL"
OR "ABNORMAL". THE APPLICATION
OF THIS ATTRIBUTE IS AN UNSUPPORTED FEATURE OF THE FOURTH
VERSION,
AND
IT
HAS BEEN
IGNORED.
STRUCTURE ELEMENT zzzz IS LIKENED TO A STRUCTURE WHICH CONTAINS ELEMENTS WHICH HAVE ALSO
BEEN DECLARED WITH THE LIKE
ATTRIBUTE.
LIKE ATTRIBUTE ON
ORIGINAL STRUCTURE IS IGNORED.
System Action:
Self
atory: may result in
errors.
S IEM05931
explancascade
explancascade
STRUCTURE NAME TO WHICH zzzz IS
LIKENED IS NOT KNOWN.
LIKE
ATTRIBUTE IGNORED.
~S~y~s~t~e~m~~A=c~tion:
]!xplanation: A language feature
has been used which is not
supported by this version of
the compiler. Refer to Appendix H of this publication for
rletails.
S IEM05731
atory: may
errors.
Self explanresult in cascade
E IEM05941
AMBIGUOUS QUALIFIED NAME yyyy
USED AS A BASE
IDENTIFIER.
MOST RECENT DECLARATION USED.
THE SELECTION OF GENERIC FAMILY
MEMBERS WHOSE PARAMETERS HAVE A
STRUCTURE
DESCRIPTION
IS
DEFERRED.
ENTRY NAME yyyy.,
DECLARED IN STATEMENT NUMBER
xxx,
IS SUCH A MEMBER AND HAS
BEEN DELETED.
E IEM05951
QUALIFIED NAME yyyy USED AS A
BASE IDENTIFIER CONTAINS MORE
THAN ONE IDENTIFIBR AT THE SAME:
STRUCTURE LEVEL.
Ex21anation:
The
usage
referred to is not supported by
this version of the compiler.
For details, refer to Appendix
H of this publication.
S IEM05961
T IEM05741
THE
MULTIPLE DECLARATION OF
IDENTIFIER yyyy IN STATEMENT
NUMBER xxx HAS BEEN IGNORED.
S IEM05891
COMPILER ERROR.
ITEM zzzz IN
LIKE CHAIN IS NOT A STRUCTURE.
ITEM IS IGNORED.
system Action:
The erroneous
statement is deleted.
system Action:
Self
atory: may result in
errors.
S IEM0597I
User Response:
Save relevant
data. Call your local IBM representative,.
MAJOR STRUCTURE yyyy HAS BEEN
LIKENED TO AN ITEM WHICH IS NOT
A VALID STRUCTURE. DECLARATION
OF STRUCTURE IGNORED.
explancascade
IDENTIFIER zzzz WHICH IS NOT A
FORMAL PARAMETER OR OF STORAGE
CLASS CONTROLLED HAS BEEN LIKENED TO -A STRUCTURE CONTAINING
* DIMENSIONS OR LENGTH.
*
DIMENSIONS OR LENGTH HAVE BEEN
IGNORED
IN
THE CONSTRUCTED
STRUCTURE.
Appendix G: Diagnostic Messages
201
S IEM05981
S IEM05991
System Action:
Self explanatory: may result in cascade
errors from later phases.
tation rules.
(see Appendix B,
'Implementation Conventions and
Restrictions').
QUALIFIED NAME TO WHICH zzzz
HAS BEEN LIKENED IS AN AMBIGUOUS REFERENCE. LIKE ATTRIBUTE
HAS BEEN IGNORED.
system Action:
pilation
zzzz WHICH IS A PARAMETER OR A
BASED
VARIABLE,
HA S
BEEN
DECLARED
(USING
THE
LIKE
ATTRIBUTE) AS A STRUCTURE WITH
THE INITIAL ATTRIBUTE.
THE
INITIAL ATTRIBUTE IS INVALID
AND HAS BEEN IGNORED.
User Response: Declare the parameter or based variable with
the LIKE attribute specifying a
structure without the INITIAL
attribute.
S IEM06001
T IEM06051
system Action:
pilation
S IEM0606I
STATIC STRUCTURE zzzz HAS BEEN
DECLARED BY MEANS OF THE LIKE
ATTRIBUTE TO HAVE ADJUSTABLE
EXTENTS. THE EXTENTS HAVE BEEN
IGNORED.
W IEM06071
OFFSET ATTRIBUTE ON PROCEDURE
STATEMENT NUMBER xxx IS NOT
BASED ON A BASED AREA. IT HAS
BEEN CHANGED TO POINTER.
T IEM0603I
Compilation is
INVALID POINTER EXPRESSION
BASED ATTRIBUTE ON zzzz
STATEMENT NUMBER xxx
IN
IN
System Action:
is terminated
T IEM0604I
202
The compilation
IF THE BASE OF zzzz CORRESPONDENCE DEFINED IN STATEMENT NUMBER xxx IS ALLOCATED WITH THE
DECLARED BOUNDS THE DEFINING
WILL BE IN ERROR ..
System Action:
T IEM06081
Explanation: The pointer associated with the based variable
does not obey the implementation rules (e.g.~ it may be
subscripted) •
OFFSET VARIABLE zzzz HAS BEEN
DECLARED IN STATEMENT NUMBER
xxx RELATIVE TO AN IDENTIFIER
WHICH IS NOT A BASED AREA. IT
HAS BEEN CHANGED TO A POINTER
VARIABLE.
Explanation:
For
correspondence defining not involving
iSUB's,
the
bounds of the
defined array must be a subset
of the bounds of the base. In
this case the bounds declared
for the base do not satisfy
this requirement. However, the
base is of CONTROLLED storage
class and if it is allocated
with
different
bounds
the
defining may be legal.
IDENTIFIER IN BASED ATTRIBUTE
ON zzzz DECLARED IN STATEMENT
NUMBER xxx IS NOT A NON-BASED
POINTER
system Action:
terminated
Terminates com-
System Action:
The offset is
changed to a pointer to prevent
the
compiler from producing
further error messages.
System Action:
All bounds on
the offending variable are set
to zero
T IEM06021
BOUNDS DECLARED FOR BASED ARRAY
zzzz IN STATEMENT NUMBER xxx
ARE INVALID
Explanation:
The adjustable
bounds
declared are outside
those permitted by this implementation,..
Explanation: A STATIC variable
cannot have adjustable extents
S IEM06011
Terminates com-
Nothing further
ILLEGAL DEFINING IN STATEMENT
NUMBER xxx '.
BAS E IDENTIFIER
zzzz IS A MEMBER OF A DIMENSIONED STRUCTURE~
Explanation:
In the case of
string class overlay defining
where the base is an array, it
is an error if it is a member
of an array of structures.
LENGTH
DECLARED
FOR
BASED
STRING zzzz IN STATEMENT NUMBER
xxx IS INVALID
system Action:
is termina ted.
Explanation:
The declaration
violates the compiler implemen-
User Response:
Refer
PL/I Reference Manual
The compilation
to the
"The
DEFINED Attribute"
rect error.
T IEM0609I
- and cor-
IN STATEMENT NUMBER xxx ILLEGALLY REFERS TO OR IS DEPENDENT
ON THE DEFINED VARIABLE.
DEFERRED FEATURE. DEFINING OF
zzzz DECLARED IN STATEMENT NUMBER xxx WITH A
SUBSCRIPTED
BASE.
Explanation:
It is illegal for
a base subscript list in the
DEFINED attribute
to
refer
directly, or via any further
level
of
defining, to the
defined item.
Explanation: Overlay defining
on a subscripted base is not
supported by this version of
the compiler.
system Action:
is terminated.
User Response:
Refer to the
PL/I Reference Manual - "The
DEFINED Attribute" and correct error.
T IEM0624I
DEFERRED FEATURE. DEFINING OF
zzzz DECLARED IN STATEMENT NUMBER xxx ON A BASE OF ~ONTROLLED
STORAGE CLASS.
System Action:
is terminated.
The compilation
T IEM0625I
Explanation: Only arrays may
be correspondence defined using
iSUB notation.
INITIAL ATTRIBUTE DECLARED FOR
DEFINED ITEM zzzz IN STATEMENT
NUMBER xxx WILL BE' IGNORED.
Explanation: DEFINED items may
not have the INITIAL attribute.
system Action:
bute ignored
T IEM0623I
THE
DEFINING BASE FOR zzzz
DECLARED IN STATEMENT NUMBER
xxx HAS THE WRONG NUMBER OF
SUBSCRIPTS.
System Action:
is terminated.
The compilation
The compilation
User Response:
Refer to the
PL/I Reference Manual
"The
DEFINED Attribute" - and correct error.
E IEM0612I
The compilation
Explanation:
If the base reference in a DEFINED attribute
is subscripted, it must have
the same number of subscript
expressions as the dimensionality of the base array.
SCALAR zzzz DECLARED IN STATEMENT NUMBER xxx IS ILLEGALLY
DEFINED WITH ISUBS.
System Action:
is terminated.
of
be
User ReSDonse:
Replace
the
specified base by an appropriate reference to its base.
User
Response:
Replace all
references to the defined item
by appropriate references to
the base.
T IEM0611I
THE DEFINING BASE FOR
zzzz
DECLARED IN STATEMENT NUMBER
xxx IS ITSELF DEFINED.
Explanation,:
The
base
DEFI~~D data may not itself
DEFINED
ExE1~nation:
If the base is
declared CONTROLLED,
neither
overlay defining nor correspondence defining is supported by
this release of the compiler.
System Action:
is te;rminated.
The compilation
The compilation
User
Response:
Replace all
references to the defined item
by appropriate subscripted references to the base.
T IEM0610I
System Action:
is terminated.
INITIAL
User
Response:
Correct the
subscript list, or declaration
of
the
base,
whichever
appropriate.
T IEM0626I
THE
DEFINING B~SE FOR zzzz
DECLARED IN STATEMEHT NUMBER
xxx IS NOT DATA.
Explanation:
The only legal
data types that may be used for
defining
bases
are string,
Arithmetic, Task, Event, and
Label.
attri-
THE BASE SUBSCRIPT LIST USED
WITH THE DEFINED VARIABLE zzzz
Action:
is terminated.
~tem
User
Response:
The compilation
Check that the
hppendix G: Diagnostic Messages
203
defining
base
is correctly
written and declared.
T IEM0627I
IMPLEMENTATION
NUMBER
LONG.
STATEME~T
yyyy AN
DECLARED
xxx.
RESTRICTION.
xxx IS TOO
Explanation:
Correspondence
defining with arrays of structures is not supported by the
compiler.
Explanation: system Generation
compiler restriction
system Action:
is terminated.
User Response:
ment size
T IEM0628I
System Action:
is terminated.
The compilation
Explanation: The complexity of
defining has resulted in
a
level of nesting which is too
great for the compiler.
Action:
is terminated.
The compilation
T
IEM06~2I
User Response: Reduce complexi ty of defining ..
T IEM0629I
Explanation:
For correspondence defining not involving
iSUB's. the bounds
of
the
defined array must be a subset
of the corresponding bounds of
the base array.
Explanation: The POS attribute
may not be specified for correspondence defining.
system Action:
is terminated.
User
Response:
attribute
Delete
pas
THE DESCRIPTION OF zzzz CORRESPONDENCE DEFINED IN STATEMENT
NUMBER xxx DOES NOT MATCH THAT
OF THE DEFINING BASE.
system Action:
is terminated.
The compilation
User
Response:
Correct the
program. Note that POS (1) may
be used to force overlay defining.
T IEM0631I
204
IMPLEMENTATION
RESTRICTION.
THE CORRESPONDENCE DEFINING OF
The compilation
User Response:
Refer to the
PL/I Reference Ma nual
"The
DEFINED Attribute" - and correct program.
Note that pas
(1)
may be used to force overlay defining.
The compilation
Explanation:
For correspondence defining, if either the
base or the defined item are
arrays of structures, then both
must be arrays of structures.
I
THE BOUNDS OF zzzz CORRESPONDENCE DEFINED IN STATEMENT NUMBER xxx ARE NOT A SUBSET OF THE
BASE.
ARRAY zzzz DECLARED IN STATEMENT NUMBER xxx ILLEGALLY HAS
THE POS ATTRIBUTE WITH ISUB
DEFINING.
System Action:
is terminated.
T IEM0630I
The compilation
User
Response:
Declare the
base
arrays of the defined
structure
as
correspondence
defined on the matching base
arrays of the base structure.
Note that for this to be valid,
the base arrays of the defined
structure must
have
unique
names anj be declared at level
1.
This alternative method
precludes structure operations
with the defined item#
but
achieves the desired mapping.
Reduce state-
IMPLEMENTATION
RESTRICTION.
THE NESTING OF REFERENCES TO
DATA DEFINED WITH A SUBSCRIPTED
BASE IS TOO DEEP.
~ystem
ARRAY OF STRUCTURES
IN STATEMENT NUMBER
S IEM0633I
ITEM TO BE ALLOCATED IN STATEMENT NUMBER xxx IS NOT AT LEVEL
1.
THE STATEMK~T HAS
BEE~'l
IGNORED.
Explanation:
An
identifier
specified in an ALLOCATE statement must refer to a major
structure or data not contained
in a structure. A major structure identifier may optionally
be followed by a full structure
description.
System Action:
The
statement is deleted
ALLOCATE
User Response:
Replace erroneous identifier by that of the
containing major structure.
S IEM0634I
butes are permitted in ALLOCATE
statements.
ITEM TO BE ALLOCATED IN STATEMENT NUMBER xxx HAS NOT BEEN
DECLARED.
THE STATEMENT HAS
BEEN IGNORED.
Explanation:
Only CONTROLLED
data may be allocated. Data
may only obtain the attribute
CONTROLLED from an
explicit
declaration.
System Action:
The
statement is deleted
system Action:
The
statement is deleted
E IEM06411
ALLOCATE
ITEM TO BE ALLOCATED IN STATEMENT
NUMBER
xxx
WAS
NOT
DECLARED
CONTROLLED.
THE
STATEMENT HAS BEEN IGNORED.
Explanation:
Only CONTROLLED
data may be specified in ALLOCATE statements.
system Action:
The
statement is deleted
E IEM06371
Syste~_~~~ion:
All attributes
after the first in a particular
class are ignored.
S IEM0642I
ALLOCATE
User Response:
Declare
identifier CONTROLLED
A CONFLICTING ATTRIBUTE
WAS
GIVEN FOR zzzz IN STATEMENT
NUMBER xxx. THE ATTRIBUTE HAS
BEEN IGNORED.
System Action:
The
statement is deleted
W IEM0643I
THE STRUCTURE DESCRIPTION GIVEN
ON STATEMENT NUMBER xxx DIFFERS
FROM THAT DECLARED. THE STATEMENT HAS BEEN IGNORED.
If a structure
description is given in
an
ALLOCATE Statement, it
must
match the declaration.
The
indicated level number discrepancy may be an error.
System Action:
ALLOCATE
AN INVALID ATTRIBUTE WAS GIVEN
IN STATEMENT NUMBER xxx.
THE
STATEMENT HAS BEEN IGNORED.
Explanation:
INITIAL, and
Only CHAR, BIT,
Dimension attri-
Nothing further
User
Response:
Check
ALLOCATE
statement
is
intended
S IEM06441
S IEM06401
THE LEVEL NUMBER DECLARED FOR
zzzz IS NOT THE SAME AS THAT
GIVEN IN STATEMENT NUMBER xxx.
THE FORMER HAS BEEN USED.
Explanatio~:
Explanation:
If a description
of a major structure is given
on an ALLOCATE statement, the
description
must match that
declared.
system Action:
The
statement is deleted
ALLOCATE
User Response: Correct declaration or ALLOCATE Statement,
whichever applicable.
System Action:
Ignores
the
attribute from the ALLOCATE
S IEM0638I
DIMENSIONALITY GIVEN IN STATEMEN'] NUMBER xxx 01 FFERS FROtlJ
THAT DECLARED.
THE STATEMENT
HAS BEEN IGNORED.
Explanati£n:
If a dimension
attribute is given for an identifier in an ALLOCATE statement'l
the identifier must have
been declared with the same
dimensionality.
the
Explanation:
Attributes given
for an identifier in an ALLOCATE statement may not conflict
with those given explicitly or
assumed by default from the
declaration ..
CONFLICTING
ATTRIBUTES
HAVE
BEEN GIVEN FOR zzzz IN STATEMENT NUMBER xxx.
THE FIRST
LEGAL ONE HAS BEEN USED.
Explanation:
At
most, one
attribute
in
the following
classes may be given for an
identifier
in
an
ALLOCATE
statement:
Dimension,
StringCCHAR or BIT), INITIAL.
User
Response:
Construct a
DECLARE statement for the identifier
S IEM06361
ALLOCATE
that
as
STATEMENT NUMBER xxx CONTAINS
AN ILLEGAL PARENTHESIZED LIST.
THE STATEMENT HAS BEEN IGNORED.
Explanation:
Factored attribures are not allowed on ALLOCATE statements.
Appendix G: Diagnostic Messages
205
~s~y_s_t_e_m~____
Action:
S IEM0645I
statement
ignored
COMPILER ERROR
NUMBER xxx
User Response:
Remove parentheses and any factored attributes
Explanation:
Compiler
error
found in scan of statement
User Response:
CATE statement
Correct
S IEM0655I
System Action: The identifier
is replaced by a dummy dictionary
reference;
a later
phase will delete the statement.
User Response: Correct program
by inserting DECLARE statement
E IEM0656I
MOST RECENT DECLARATION USED OF
AMBIGUOUS QUALIFIED NAME
OR
STRUCTURE MEMBER BEGINNING yyyy
IN STATEMENT NUMBER xxx
E IEM0657I
QUALIFIED NAME BEGINNING yyyy
IN STATEMENT NUMBER xxx CONTAINS MORE THAN ONE IDENTIFIER
AT THE SAME STRUCTURE LEVEL.
the
POINTER-QUALIFIED
IDENTIFIER
zzzz IN STATEMENT NUMBER xxx IS
NOT A BASED VARIABLE
IMPLEMENTATION
STATEMENT NUMBER
LONG.
System Action:
is deleted
S IEM0658I
the
RESTRICTION.
xxx IS TOO
The
statement
QUALIFIED NAME BEGINNING yyyy
IN STATEMENT NUMBER xxx IS AN
AMBIGUOUS
REFERENCE.
DUMMY
REFERENCE INSERTED.
statement will
be deleted by later phase
Syste~_b£tion:
Compilation
S IEM0673I
ILLEGAL USE OF FUNCTION NAME O~~
LEFT HAlW SIDE OF EQUAL SYMBOL
IN STATEMENT NUMBER xxx
User Response: Rewrite statement in question and recompile
System Action: S"tateroent will
be deleted by later phases
system
Action:
terminated
COMPILER ERROR.
ILLEGAL ENTRY
IN STATEMENT NUMBER xxx
S IEM0674I
system
Action:
terminate::]
STATEMENT NUMBER xxx CONTAINS
ILLEGAL USE OF FUNCTION yyyy
System Action:
Reference to
function
or whole statement
will be deleted by later phases
Explanation:
Compiler error
found in scan of statement
Compilation
User Response:
Save relevant
oata. Call your local IBM representative.
206
QUALIFIED NAME BEGINNING yyyy
USED IN STATEMENT NUMBER xxx
BUT NO PREVIOUS STRUCTURE DECLARATION GIVEN.
DUMMY
REFERENCE INSERTED.
System Action:
Refer.ence to
the illegal variable or the
whole statement will be deleted
by later phases.
User Response:
Correct
invalid statement
T IEM0653I
Compi la ti on
User Response:
Save relevant
data. Call your local IBM representative.
ALLO-
system Action:
Identifier is
replaced by a dummy dictionary
reference; a later phase will
delete the statement.
T IEM0652I
STATEMENT
IDENTIFIER yyyy PRECEDING POINTER QUALIFIER IN STATEMENT NUMBER xxx IS NOT A NON-BASED
POINTER VARIABLE
User_ Response:
Correct
invalid statement
S IEM0647I
IN
System
Action:
terminated
ATTRIBUTE
GIVEN
WITH BASED
VARIABLE
zzzz
IN
ALLOCATE
STATEMENT NUMBER xxx HAS BEEN
IGNORED.
Explanations: Based
variable
may
not
be specified with
attributes
S IEM0646I
T IEM0654I
S IEM0675I
IN STATEMENT NUMBER xxx IDENTIFIER yyyy AFTER GO TO IS NOT
A LABEL OR LABEL VARIABLE KNOWN
IN THE BLOCK CONTAINING THE GO
TO.
S IEM06761
System Action: statement deleted by later phases.
REFERENCE INSERTED IN STATEMENT
NUMBER xxx.
DEFERRED FEATURE.
IDENTIFIER
yyyy NOT ALLOWED AS A BUILT-IN
FUNCTION OR PSEUDO-VARIABLE
DUMMY REFERENCE INSERTED
IN
STATEMENT NUMBER xxx
system Action:
A dummy reference is inserted. The statement will be deleted by a later
phase
Explanation:
~
language feature has been used that is not
supported by this version of
the
compiler.
For details~
refer to Appendix H of this
publication.
W IEM06871
System Action: Statement deleted by later phases
S IEM06881
system Action:
Statement will
be deleted by later phases
User Response: Correct statement by removing reference to
function in error
S IEM06771
IEM06821
S IEM06831
W IEM0684I
System Action:
S IEM06891
zzzz WAS FOUND WHERE A TASK
IDENTIFIER
IS
REQUIRED
IN
STATEMENT NUMBER xxx.
DUMMY
REFERENCE INSERTED.
System Action: Statement will
be deleted by later phases
S IEM06901
zzzz
WAS FOUND WHERE EVENT
VARIABLE IS REQUIRED IN STATEMENT NUMBER xxx.
DUMMY REFERENCE INSERTED.
system Action:
Statement will
be deleted by later phases
S IEM06911
INVALID ITEM zzzz IN DATA LIST,
OR 'FROM' OR 'INTO' OPTION, IN
STATEMENT NUMBER xxx
system Action:
Statement will
be deleted by later phases
validity
S IEM06921
zzzz IS NOT A STATEMENT LABEL
ON
AN EXECUTABLE STATEMENT.
DUMMY REFERENCE INSERTED AFTER
GO TO IN STATEMENT NUMBER xxx
System Action: Statement will
be deleted by later phases
S IEM06861
User Response:
Save relevant
data. Call your local IBM representati ve,.
None
User Response: Check
of possible branches.
S IEM06851
Action:
None taken.
Cascade errors may result.
USE OF LABEL VARIABLE zzzz MAY
RESULT IN AN ILLEGAL BRANCH IN
STATEMENT NUMBER xxx
Explanation:
It is possible
that the label variable may
contain a value which would
cause control to branch illegally into a block.
This is a compil-
~tem
zzzz WAS FOUND WHERE A FILE
VARIABLE IS REQUIRED IN STATEMENT NUMBER xxx.
DUMMY DICTIONARY
REFERENCE
REPLACES
ILLEGAL ITEM.
System Action: Statement will
be deleted by later phases
COMPILER ERROR.
TOO FEW LEFT
PARENTHESES IN STATEMENT NUMBER
xxx
Explanation:
er error
ILLEGAL PARENTHESIZED LIST IN
STATEMENT NUMBER xxx FOLLOWS AN
IDENTIFIER WHICH IS NOT A FUNCTION OR ARRAY. LIST DELETED.
IN STATEME11T NUMBER xxx GO TO
TRANSFERS CONTROL ILLEGALLY TO
A FORMAT STATEMENT.
IN STATEMENT NUMBER xxx GO TO
zzzz TRANSFERS CONTROL ILLEGALLY TO ANOTHER BLOCK OR GROUP.
zzzz APPEARS IN A FREE OR ALLOCATE STATEMENT BUT HAS NOT BEEN
DECLARED
CONTROLLED.
DUMMY
DATA DIRECTED I/O LIST,
OR
FROM'll OR I NTO OPT ION IN STATEMENT NUMBER xxx CONTAINS FORMAL
PARAMETER OR DEFINED ITEM zzzz
system Action:
Statement will
be deleted by later phases
S IEM06931
ILLEGAL USE OF FUNCTION zzzz IN
INPUT LIST IN STATEMENT NUMBER
xxx. DUMMY REFERENCE INSERTED.
System Action: Statement will
be deleted by later phases
Appendix G: Diagnostic Messages
207
S IEM0694I
IN THE FORMAT LIST IN STATEMENT
NUMBER xxx A REMOTE FORMAT ITEM
REFERENCES zzzz, WHICH IS NOT A
STATEMENT LABEL IN THE CURRENT
BLOCK. DUMMY REFERENCE INSERTED.
System
Action:
Format
deleted by later phase
S IEM0695I
item
LABEL ARRAY zzzz IS NOT FOLLOWED BY A SUBSCRIPT LIST AFTER
GO TO IN STATEMENT NUMBER xxx.
DUMMY REFERENCE REPLACES REFERENCE TO ARMY.
STATEMENT NUMBER xxx.
REFERENCE INSERTED.
system Action: Statement
etej by later phase
S IEM0701I
IEM0696I
IN STATEMENT NUMBER xxx IT IS
AN ERROR IF THE PARAMETER zzzz
IN A REMOTE FORMAT ITEM REFERS
TO A FORMAT STATEMENT WHICH IS
NOT INTERNAL TO THE SAME BLOCK
AS THE REMOTE FORMAT ITEM.
Explanation:
Remote
formats
become executable code, but not
internal procedures. Therefore
they must appear in the same
block in which they are used.
S IEM0697I
ARGUMENT zzzz OF SET OPTION IS
NOT A POIN~ER VARIABLE.
DUMMY
REFERENCE INSERTED.
W IEM0702I
LABEL, TASK OR EVENT VARIABLE
zzzz USED IN FROM OR
INTO
OPTION IN STATEMENT NUMBER xxx
MAY LOSE ITS VALIDITY IN TRANSMISSION
S IEM0703I
INVALID IDENTIFIER zzzz
IN STATEMENT NUMBER xxx
System Action:
Invalid identifier replaced by dumroy.
S IEM0704I
STATEMENT NUMBER xxx CONTAINS
INVALID USE OF FUNCTION zzzz
System Action: Statement deleted by later phase
Correct program
W IEM0705I
STATEMENT LABBL zzzz ATTACHED
TO STATEMENT NUMBER xxx IS USED
AS A REMOTE FORMAT ITEM IN TH1\.T
STATEMENT.
A DUMMY REPLACES
THE REMOTE FORMAT ITEM.
IF THE LABEL VARIABLE IN GO TO
STATEMENT NUMBER xxx ASSUMES
THE VALUE OF ITS VALUE-LIST
MEMBER zzzz., THE STATEMENT WILL
CONSTITUTE AN INVALID BRA.NCH
INTO AN ITERATIVE DO GROUP.
System Action:
System Action:
statement will
be deleted by a later phase
S IEM0698I
THE BASED VARIABLE zzzz
IN
LOCATE STATEMENT NUMBER xxx IS
NOT AT LEVEL 1.
DUMMY REFERENCE INSERTED.
STRUCTURE ARGUMENT zzzz OF FROM
OR INTO OPTION IN STATEMENT
NUMBER
xxx IS NOT A MAJOR
STRUCTURE.
DUMMY
REFERENCE
INSERTED
system Action: statement
eted by later phase
S IEM0700I
208
None
User
Response:
Check that
branch will be valid at execution time ..
S IEM0706I
The statement
System Action:
will be deleted by a later
phase.
S IEM0699I
FREED
Explanation:
An identifier in
the FREE statement is not a
CONTROLLED variable.
System
Action:
Object-time
error message is compiled
User ResDonse:
and recompile
del-
system Action: Statement deleted by later phase.
System Action: Statement will
be deleted by later phases
W
DUMMY
VARIABLE zzzz IN ·LOCATE STATEMENT IS NOT A BASED VARIABLE.
DUMMY REFEFENCE INSERTED.
System Action:
The statement
is deletej by a later phase.
User
Response:
invalid statement
S IEM0707I
Correct
the
ARGUMENT zzzz OF IN OPTION IS
NOT AN AREA VARIABLE. DUMMY
REFERENCE INSERTED.
del-
ILLEGAL USE OF FUNCTION, LABEL
OR VARYING STRING zzzz AS ARGUMENT OF FROM OR INTO OPTION IN
System Action:
The statement
is deleted by a later phase.
User Response:
Correct
invalid statement
the
E IEM0708I
ASTERISK NOT ALONE IN SETS OR
USES LIST. REMAINDER OF LIST
IGNORED.
S IEM0709I
IMPLEMENTATION
RESTRICTION.
ARGUMENT NUMBER IN SETS OR USES
LIST TOO LARGE.
REDUCED TO
255.
E IEM0710I
REPEATED
ARGUMENT
NUMBER
IGNORED IN SETS OR USES LIST.
T IEM0711I
COMPILER ERROR IN SETS LIST.
Compiler error
found in scan of SETS list
S IEM0721I
ELEMENT OF STATIC LABEL ARRAY
zzzz USED AS LABEL ON STATEMENT
NUMBER xxx
System Action:
ed
S IEM0722I
Label is delet-
ELEMENT OF LABEL ARRAY zzzz
USED AS LABEL ON STATEMENT NUMBER xxx IN BLOCK OTHER THAN THE
ONE IN WHICH IT IS DECLARED.
system Action: An error statement is inserted in the text in
place of the offending label.
~xplanation:
system
Action:
termi nat ed.
T IEM0723I
IDENTIFIER yyyy IN SETS OR USES
LIST NOT KNOWN AT POINT OF
OCCURRENCE OF LIST. IDENTIFIER
IGNORED.
E IEM0713I
IDENTIFIER yyyy IN SETS LIST IS
BASED
VARIABLE.
DUMMY REF-!
ERENCE INSERTED.
System
Action:
terminated
User_Response: Correct source
program by removing reference
to based variable.
System Action:
The
attribute is deleted
FORMAL PARAMETER zzzz IN CHECK
LIST. PARAMETER IS IGNORED.
S IEM0725I
STATEMENT NUMBER xxx HAS BEEN
DELETED DUE TO A SEVERE ERROR
NOTED ELSEWHERE.
System
Action:
The
statement is replaced
error statement.
S IEM0726I
whole
by an
IDENTIFIER zzzz IN STATEMENT
NUMBER xxx IS NOT A FILE NAME.
THE STATEMENT IS DELETED.
INITIAL
S IEM0718I
INVALID CHECK LIST IN STATEMENT
NUMBER xxx. STATEMENT HAS BEEN
CHANGED TO 'ON ERROR'.
S IEM0719I
ELEMENT OF LABEL ARRAY zzzz
WHICH IS DECLARED WITH INITIAL
ATTRIBUTE USED AS
STATEMENT
LABEL ON STATEMENT NUMBER xxx
Explanation:
The identifier
has been used previously in a
different context and is therefore not recognized as a file
name
S IEM0727I
Label is delet-
T IEM0728I
Label is delet-
IDENTIFIER zzzz IN STATEMENT
NUMBER xxx IS NOT A CONDITION
NAME. THE STATEMENT IS DELETED.
Explanation:
The
identifier
has been used previously in a
different context and is therefore not recognized as a condition name
SUBSCRIPTED
IDENTIFIER
zzzz
USED AS LABEL ON STATEMENT NUMBER xxx IS NOT A LABEL ARRAY
system Action:
ed
compilation
Explanation:
The
identifier
list of a CHECK prefix must not
contain formal parameters
TEXT yyyy ASSOCIATED WITH THE
INITIAL ATTRIBUTE IN STATEMENT
NUMBER xxx IS ILLEGAL AND HAS
BEEN IGNORED.
Expl~~ation:
The
INITIAL
attribute has been used incorrectly.
error
User Response:
Save relevant
data. Call your local IBM representa ti ve.
S IEM0724I
S IEM0720I
STATEMENT
Explanation:
Compiler
found in scan of text
E IEM0712I
System Action:
ed
IN
Compilation
User Response:
Save relevant
data. Call your local IBM representative.
S IEM0715I
COMPILER ERROR
NUMBER xxx
COMPILATION TERMINATED DUE TO A
PREVIOUSLY
DETECTED
SEVERE
ERROR IN STATEMENT NUMBER xxx
Appendix G: Diagnostic Messages
209
Explanation: A previous module
has inserted a dummy dictionary
reference into the second file .•
The compiler cannot recover.
S IEM0729I
S IEM07351
COMPILER ERROR IN SCALE FACTOR
IN
PICTURE
BEGINNING yyyy.
THIS PICTURE OCCURS IN STATEMENT NUMBER xxx, AND POSSIBLY
IN OTHER STATEMENTS.
system Action: Scan of picture
halted. All references to picture deleted.
System Action: Scan of picture
terminated: picture ignored by
later phases.
S IEM07361
User Response:
Save relevant
data. Call your local IBM representative.
S IEM07301
MORE THAN ONE SIGN CHARACTER
PRESENT IN A SUBFIELD OF PICTURE yyyy. THIS PICTURE OCCURS
IN STATEMENT NUMBER xxx, AND
POSSIBLY IN OTHER STATEMENTS.
S IEM07321
PICTURE CHARACTER M APPEARS IN
NON-STERLING
PICTURE
yyyy.
THIS PICTURE OCCURS IN STATEMENT NUMBER xxx, AND POSSIBLY
IN OTHER STATEMENTS.
S IEM07371
FIELD MISSING IN STERLING PICTURE yyyy. THIS PICTURE OCCURS
IN STATEMENT NUMBER xxx, AND
POSSIBLY IN OTHER STATEMENTS.
System Action:
Scan of picture
continued with item ignored,
but picture will be ignored by
la ter phases .•
S IEM07391
E IEM0740I
ILLEGAL EDIT
CHARACTERS
AT
START OF STERLING PICTURE yyyy.
THIS PICTURE OCCURS IN STATEMENT NUMBER xxx, AND POSSIBLY
IN OTHER STATEMENTS.
MULTIPLE USE OF E K OR V IN
PICTURE.
PICTURE TRUNCATED AT
ILLEGAL CHARACTER. PICTURE IN
ERROR IS yyyy.
THIS PICTURE
OCCURS IN STATEMENT NUMBER xxx,
AND POSSIBLY IN OTHER STATEMENTS.
system Action:
Picture truncated at point indicated
E IEM0741I
ILLEGAL CHARACTER OR ILLEGAL
NUMBER OF CHARACTERS IN POUNDS
FIELD OF STERLING PICTURE yyyy.
THIS PICTURE OCCURS IN STATEMENT NUMBER xxx, AND POSSIBLY
IN OTHER STATEMENTS.
system Action: Scan of picture
terminated; picture ignored by
later phases.
210
system Action: Scan of picture
terminated: picture ignored by
later phases.
System Action:
Scan of picture
terminated; picture ignored by
later phases.
system Action: Scan of picture
terminated: picture ignored by
later phases.
S IEM0734I
ILLEGAL CHARACTER OR ILLEGAL
NUMBER OF CHARACTERS IN PENCE
FIELD OF STERLING PICTURE yyyy.
THIS PICTURE OCCURS IN STATEMENT NUMBER xxx, AND POSSIBLY
IN OTHER STATEMENTS.
STA.TIC PIC'IURE CHA.RACTER $ S +
- NOT AT EXTREMITY OF SUBFIELD.
PICTURE IN ERROR IS yyyy. THIS
PICTURE OCCURS IN
STATEMENT
NUMBER xxx, AND POSSIBLY IN
OTHER STATEMENTS.
System Action: Scan of picture
terminated; picture ignored by
later phases.
S IEM0733I
WRONG NUMBER OF DELIMITER CHARACTERS M IN STERLING PICTURE
yyyy. THIS PICTURE OCCURS IN
STATEMENT NUMBER xxx, AND POSSIBLY IN OTHER STATEMENTS.
system Action: Scan of picture
terminated; picture ignored by
late r phases.
system Action: Scan of picture
terminated: picture ignored by
later phases.
S IEM07311
ILLEGAL CHARACTER OR ILLEGAL
NUMBER OF CHARACTERS IN SHILLINGS FIELD OF STERLING PICTURE
yyyy.. THIS PICTURE OCCURS IN
STATEMENT NUMBER xxx, AND POSSIBLY IN OTHER STATEMENTS.
CR OR DB INCORRECTLY POSITIONED
IN SUBFIELD. PICTURE TRUNCATED
AT
THIS POINT.
PICTURE IN
ERROR IS yyyy.
THIS PICTURE
OCCURS IN STATEMENT NUMBER xxx,
AND POSSIBLY IN OTHER STATEMENTS.
system Action:
Picture
cated at point indicated
E IEM0742I
trun-
CR OR DB GIVEN FOR A NON-REAL,
NON-NUMERIC OR FLOATING FIELD.
PICTURE TRUNCATED BEFORE CR OR
DB IN PICTURE yyyy. THIS PICTURE OCCURS IN STATEMENT NUMBER
xxx, AND POSSIBLY IN
OTHER
STATEMENTS.
ME NT NUMBER xxx, AND
IN OTHER STATEMENTS.
System Action: Scan of picture
continued with item' ignored,
but ~icture will be ignored by
later phases.
system Action:
Picture truncated at point indicated
S IEM0745I
ILLEGAL USE OF PICTURE CHARACTER Z OR * IN PICTURE yyyy .•
THIS PICTURE OCCURS IN STATEMENT NUMBER xxx" AND POSSIBLY
IN OTHER STATEMENTS.
S IEM0751I
System Action: Scan of picture
continued with item ignored.
but picture will be ignored by
later phases.
S IEM0746I
STERLING MARKER FOUND IN OTHER
THAN FIRST POSITION IN PICTURE
yyyy. THIS PICTURE OCCURS IN
STATEMENT NUMBER xxx, AND POSSIBLY IN OTHER STATEMENTS.
STERLING
PICTURE
CHARACTERS
FOUND IN NON-STERLING PICTURE.
SCANNING OF PICTURE STOPPED.
PICTURE IN ERROR IS yyyy. THIS
OCCURS IN STATEMENT
PICTURE
NUMBER xxx, AND POSSIBLY IN
OTHER STATEMENTS.
§ystem Action: Scan of picture
terminated; picture ignored by
later phases.
E IEM07481
S IEM07521
S IEM07491
S IEM07541
ILLEGAL CHARACTER IN PICTURE
yyyy.
THIS PICTURE OCCURS IN
STATEMENT NUMBER xxx. AND POSSIBLY IN OTHER STATEMENTS.
system Action: Scan of picture
continued with item ignored,
but picture will be ignored by
later phases.
S IEM0755I
ILLEGAL USE OF DRIFTING EDITING
SYMBOLS S $ +
IN PICTURE
yyyy. THIS PICTURE OCCURS IN
STATEMENT NUMBER xxx, AND POSSIBLY IN OTHER STATEMENTS.
system Action: Scan of picture
continued with item ignored,
but picture will be ignored by
later phas es .•
trunS IEM07561
ILLEGAL USE OF SCALING FACTOR
IN PICTURE.
SCAN OF PICTURE
TERMINATED.
PICTURE IN ERROR
IS yyyy. THIS PICTURE OCCURS
IN STATEMENT NUMBER xxx, AND
POSSIBLY IN OTHER STATEMENTS.
T IEM07581
ILLEGAL CHARACTER PRESENT IN
CHARACTER STRING PICTURE yyyy.
THIS PICTURE OCCURS IN STATE-
IMPLEMENTATION
RESTRICTION.
PRECISION TOO LARGE OR PICTURE
TOO LONG IN PICTURE BEGINNING
yyyy.. THIS PICTURE OCCURS IH
STATEMENT NUMB ER xxx " AND POSSIBLY IN OTHER STATEMENTS.
System Action: Scan of picture
continued with item ignored,
but picture will be ignored by
later ph as es.
System Action: Scan of picture
terminated; picture ignored by
later phases.
S IEM07501
ILLEGAL USE OF,OR ILLEGAL CHARACTERS
IN, STERLING PICTURE
yyyy. THIS PICTURE OCCURS IN
STATEMENT NUMBER xxx, AND POSSIBLY IN OTHER STATEMENTS.
system Action:
Scan of picture
continued with item ignored,
but picture will be ignored by
later phases.
ILLEGAL USE OF SCALING FACTOR
IN PICTURE.
SCALING
FACTOR
ONWARDS DELETED.
PICTURE IN
ERROR IS yyyy.
THIS PICTURE
OCCURS IN STATEMENT NUMBER xxx,
AND POSSIBLY IN OTHER STATEMENTS.
system Action:
Picture
cated at point indicated
NO MEANINGFUL CHARACTERS
IN
PICTURE yyyy.
THIS
PICTURE
OCCURS IN STATEMENT NUMBER xxx,
AND POSSIBLY IN OTHER STATEMENTS.
System Action: Scan of picture
continued with item ignored,
but picture will be ignored by
later phases.
2Ystem Action: Scan of picture
continued with item ignored,
but picture will be ignored by
later phases.
S IEM07471
POSSIBLY
COMPILER ERROR IN PHASE FT.
Explanation:
Compiler error
found in scan of dictionary
Appendix G: Diagnostic Messages
211
System
Action:
terminated
Compilation
Explanation: The compiler has
encocntered meaningless input
to phase GA.
User Response:
Save relevant
data. call your local IBM representative.
S IEM07591
IMPLEMENTATION
RESTRICTION.
STERLING
CONSTANT
EXCEEDS
4166666666666.13.3t.
HIGH
ORDER DIGITS LOST DURING CONVERSION TO DECIMAL.
System
Action:
High order
digits lost somewhere in the
following conversion process:
shift pounds field left one
digit, double by addition.. Add
shillings field.
Add result,
doubled by addition, to result
shifted left one digit. Add
pence field.
S IEM07601
Reference
S IEM0771I
IMPLEMENTATION
RESTRICTION.
NESTING OF FORMAT LISTS
IN
STATEMENT NUMBER xxx EXCEEDS
20. STATEMENT DELETED.
S IEM0778I
AN INTERMEDIATE VARIABLE HAS
BEEN CREATED IN
READ
INTO
STATEMENT NUMBER xxx.
THIS
STATEMENT SPECIFIES FILE zzzz,
WHICH HAS BEEN DECLARED WITH
THE ENV(COBOL) ATTRIBUTE AND
THE EVENT OPTION.
THE EVENT
OPTION HAS BEEN DELETED.
Explanation:
The intermediate
variable
has
been
created
because there is a difference
between the PLII mapping and
the COBOL mapping of the READ
INTO variable.
The READ INTO
statement
has been expanded
into:
to
PICTURE CHARACTER
E
OR
K
APPEARS WITHOUT AN
EXPONENT
FIELD FOLLOWING IT.. PICTURE IN
ERROR IS yyyy.
THIS PICTURE
OCCURS IN STATEMENT NUMBER xxx,
AND POSSIBLY IN OTHER STATEMENTS.
READ
INTO
(Intermediate
variable) ;
Variable = Intermediate
variable;
The READ statement must have
been
completed
before
the
assignment takes place.
The
EVENT option has been deleted
to ensure that the READ statement is complete before processing continues.
System Action:
Reference to
picture deleted from program
User Response:
S IEM0762I
S IEM0769I
Correct picture
PICTURE CHARACTER E OR K IS NOT
PRECEDED BY A DIGIT POSITION
CHARACTER. PICTURE IN ERROR IS
yyyy.
THIS PICTURE OCCURS IN
STATEMENT NUMBER xxx, AND POSSIBLY IN OTHER STATEMENTS.
system Action:
picture deleted
212
System
Action:
Delete
EVENT option and continue
the
User ResQonse: Check the use
of the EVENT option or of the
COBOL file.
References to
IMPLEMENTATION
RESTRICTION.
STATEMENT NUMBER xxx AS EXPANDED IS TOO LONG AND HAS BEEN
DELETED.
User Response:
Simplify
by
splitting into two or
more
statements and recompile
T IEM0770I
compilation
User ResQ~:
Save relevant
data. Call your local IBM representative.
IMPLEMENTATION
RESTRICTION.
EXPONENT FIELD TOO LARGE IN
PICTURE yyyy.
THIS
PICTURE
OCCURS IN STATEMENT NUMBER xxx,
AND POSSIBLY IN OTHER STATEMENTS.
system Action:
picture deleted
S IEM0761I
system
Action:
terminated
COMPILER ERROR IN INPUT
TO
PHASE GA IN STATEMENT NUMBER
xxx
S IEM0779I
AN INTERMEDIATE VARIABLE HAS
BEEN CREATED IN WRITE/REWRITE
FROM
STATEMENT
NUMBER xxx.
THIS STATEMENT SPECIFIES FILE
zzzz, WHICH HAS BEEN DECLARED
WITH THE ENV(COBOL) ATTRIBUTE
AND THE EVENT OPTION.
THE
EVENT OPTION HAS BEEN DELETED.
Explanation: The intermediate
variable
has
been
created
because there is a difference
between the PL/I mapping and
the COBOL
mapping
of
the
The attributes
Explanation:
referred to do not exist in
COBOL
WRITE/REWRITE FROM
variable.
The WRITE/REWRITE FROM statement has been expanded to:
system Action:
is deleted
Intermediate
variable = variable;
WRITE/REWRITE
FROM
(Intermediate variable);
S IEM07841
The
WRITE/REWRITE
statement
must have been completed before
the intermediate variable can
be deleted.
The EVENT option
has been deleted to ensure that
the WRITE/REWRITE statement is
complete before processing continues.
Explanation:
Only a single
argument can be g1ven in the
ALLOCATION function.
and
it
must be one of the following:
a major structure
2.
the
an unsubscripted array or
scalar variable, not in a
structure
User Response:
Check the use
of the EVENT option or of the
COBOL file ..
It must also be of nonbased
CONTROLLED storage class.
System Action: If the argument
list begins with a valid operand, that operand is used as
the argument; otherwise, the
argument list is deleted.
THE USE OF COBOL FILE zzzz IN
LOCATE STATEMENT NUMBER xxx MAY
LEAD TO ERRORS WHEN THE RECORD
IS PROCESSED.
Explanation:
The
COBOL
structure-mapping is not necessarily the same as the PL/I
structure-mapping.
System Action:
is deleted
The
W IEM07861
NAME, NOT VALUE, OF FUNCTION
zzzz
PASSED AS ARGUMENT IN
STATEMENT NUMBER xxx
S IEM07871
INCORRECT NUMBER OF ARGUMENTS
FOR FUNCTION zzzz IN STATEMENT
NUMBER xxx
T IEM0790I
IMPLEMENT~TION
statement
User Response:
Either
the
LOCATE
statement
must
be
replaced by a WRITE FROM statement, or a non-COBOL file must
be used.
S IEM0781I
THE USE OF COBOL FILE zzzz IN
READ SET STATEMENT NUMBER xxx
MAY LEAD TO ERRORS WHEN THE
RECORD IS PROCESSED.
System Action:
is deleted
RESTRICTION.
STATEMENT NUMBER xxx IS TOO
LONG AND HAS BEEN TRUNCATED.
Explanation:
The first bytes
of a statement to be moved out
exceed the text block length.
System Action:
The statement
is truncated. compilation will
not be completed.
Explanation:
The
COBOL
structure-mapping is not necessarily the same as the PLII
structure-mapping.
User
Response:
Subdivide
statement into two or more separate statements, and recompile .•
The statement
User Response: Either the READ
SET statement must be replaced
by a READ INTO statement, or a
non-COBOL file must be used.
S IEM07821
INVALID ARGUMENT LIST FOR ALLOCATION FUNCTION IN STATEMENT
NUMBER xxx HAS BEEN TRUNCATED
OR DELETED.
1.
System Action:
Delete
EVENT option and continue
S IEM0780I
The statement
THE ATTRIBUTES OF zzzz USED IN
RECORD I/O STATEMENT NUMBER XXX
ARE NOT PERMITTED WHEN A COBOL
FILE IS USED.
W IEM0791I
NUMBER OF ARGUMENTS FOR zzzz
STATEMENT NUMBER xxx INCONSISTENT WITH NUMBER USED ELSEWHERE
Explanation:
The number of
arguments for zzzz has not been
explicitly
declared.
'ELSEWHERE' refers either to
the PROCEDURE or ENTRY statement for zzzz, or to a previous
invocation of the function.
Appendix G: Diagnostic Messages
213
E IEM0792I
IN STATEMENT NUMBER xxx IT IS
IMPOSSIBLE TO CONVERT FROM THE
ATTRIBUTES OF ARGUMENT NUMBER
nnnn TO THOSE OF THE CORRESPONDING
PARAMETER
IN ENTRY
zzzz. THE PARAMETER DESCRIPTION IS IGNORED.
MAY NOT BE PASSED AS AN ARGUMENT. STATEMENT DELETED.
S IEM07981
Explanation:
The message is
gene rated,
for example"
when
scalar arguments are given for
array built-in functions.
For
the ADDR function the message
could indicate that the function
cannot return a valid
result
because the argument
does not satisfy the requirements of contiguous storage.
This could occur# for example,
if the argument was a crosssection of an array.
Explanation: Self explanatory.
Examples of circumstances under
which the error message is generated are label arguments to
data
item parameters, array
arguments to scalar parameters.
system Action:
The parameter
description is ignored. If the
parameter description is correct, this will give rise to
totally incorrect execution.
User Response: Correct the parameter description
or
the
argument so that at least conversion is possible.
W IEM0793I
S IEM0794I
IN STATEMENT NUMBER xxx ARGUMENT NUMBER nnnn OF ENTRY zzzz
CONTAINS A SUBSCRIPTED VARIABLE
WITB THE WRONG NUMBER OF SUBSCRIPTS.
THE STATEMENT
HAS
BEEN DELETED.
S IEM07951
DEFERRED FEATURE. IN STATEMENT
NUMBER xxx ARGUMENT NUMBER nnnn
OF ENTRY zzzz CONTAINS A CROSSSECTION
OF
AN
ARRAY
OF
STRUCTURES. STATEMENT DELETED.
Explanation:
The
usage
referred to is not supported by
this version of the compiler.
For details, refer to Appendix
H of this publication.
S IEM07961
S IEM07971
214
E IEM07991
IN STATEMENT NUMBER xxx ARGUMENT NUMBER nnnn OF ENTRY zzzz
IS A SCALAR AND THE CORRESPONDING PARAMETER IS A STRUCTURE.
System
Action:
A temporary
structure of the same type as
the parameter description is
created and the argument is
assigned to each base element,
converting where necessary.
IN STATEMENT NUMBER xxx ARGUMENT NUMBER nnnn OF ENTRY zzzz
IS A GENERIC ENTRY NAME AND
THERE IS NO CORRESPONDING ENTRY
DESCRIPTION.
STATEMENT DELETED.
I N STATEMENT NUMBER xxx ARGUMENT NUMBER nnnn OF ENTRY zzzz
IS A BUILT-IN FUNCTION WHICH
IN STATEMENT NUMBER xxx ARGUMENT NUMBER nnnn OF ENTRY zzzz
IS NOT PERMISSIBLE. THE STATEMENT HAS BEEN DELETED.
IN STATEMENT NUMBER xxx A DUMMY
ARGUMENT HAS BEEN CREATED FOR
ARGUMENT NUMBER nnnn OF ENTRY
zzzz. THIS ARGUMENT APPEARS
IN A SETS LIST.
System
Action:
The
value
assigned to the temporary argument during the execution of
the procedure is lost on return
from the procedure.
W IEM08001
Hi
STATEMENT NUMBER xxx ARGUMENT NUMBER nnnn IN ENTRY zzzz
IS A SCALAR AND THE CORRESPONDING PARAMETER IS AN ARRAY.
System Action:
A
temporary
array with the attributes of
the entry description is created and the scalar is assigned
to each element of the array,
converting the type if necessary.
S IEM08011
IN STATEMENT lJUMBER xxx ARGUMENT NUMBER nnnn IN ENTRY zzzz
IS SCALAR CORRESPONDING TO AN
ARRAY PARAMETER WITH * BOUNDS.
THE STATEMENT HAS BEEN DELETED.
W IEM08021
IN STATEMENT NUMBER xxx ARGUMENT NUMBER nnnn OF ENTRY zzzz
DOES NO!' MATCH THE PARAMETER.
A
DUMMY
ARGUMENT HAS BEEN
CREATED.
T IEM08031
IMPLEMENTATION
RESTRICTION.
STATEMENT NUMBER xxx CONTAINS
TOO MANY NESTED FUNCTION REFERENCES.
LIMIT EXCEEDED AT
ARGUMENT NUMBER nnnn OF ENTRY
zzzz
system
Action:
terminated
Compilation
User Response: Reduce dep·th of
function call nesting.
T IEM0804I
Explanation: Compiler error in
scanning source text
system
Action:
terminated
system
Action:
terminated
Compilation
Reduce
DEFERRED FEATURE. IN STATEMENT
NUMBER xxx ARGUMENT NUMBER nnnn
OF ENTRY zzzz IS AN EVENT.
STATEMENT DELETED.
User Response:
Save relevant
data. Call your local IBM representative.
T IEM0819I
S IEM0807I
T IEM0816I
execution
entry to
System Action:
terminated
T IEM0820I
System Action:
terminated
Compilation is
User
Response:
Subdivide
statement and recompile
E IEM0821I
INVALID I'lEM
CHECK LIST IN
xxx
zzzz
IGNORED IN
NUMBER
STATEMEN~
Compilation is
Explanation:
Valid items in
CHECK
lists are:
statement
labels, entry labels. and scalar, array, structure, or label
variables.
Subscripted variable names, or data having the
DEFINED attribute,
are
not
allowed.
COMPILER ERROR IN LABEL CHAIN
FOR STATEMENT NUMBER xxx
Explanation: Compiler error in
scanning labels of a statement
System Action:
terminated
RES~RICTION.
NUMBER xxx TOO LONG.
Explanation: Statement length
exceeds text-block size.
User Response:
Save relevant
data. Call your local IBM representative.
T IEM0817I
IMPLEMENT~TION
STATEMENT
COMPILER ERROR. INVALID END OF
STATEMENT NUMBER xxx
system Action:
terminated
Compilation is
User Response:
Save relevant
data. Call your local IBM representative.
IN STATEMENT NUMBER xxx ARGUMENT NUMBER nnnn OF BUILT-IN
FUNCTION zzzz IS ~N ENTRY NAME~
THE STATEMENT HAS BEEN DELETED.
Explanation: Compiler error in
scan of input text
COMPILER ERROR IN CHECK/NOCHECK
LIST ENTRY FOR ST~TEMENT ~lUMBER
xxx
Explanation: Compiler error in
CHEC F or NOCHECK list dictionary entry
IN STATEMENT ~UMBER xxx ARGUMENT NUMBER nnnn OF ENTRY zzzz
IS NOT CONTROLLED BUT THE CORRESPONDING PARAMETER IS.
§ystem Action:
An
error will occur on
the called procedure
Compilation
state-
Explanation: A language feature has been used that is not
supported by this version of
the compiler.
For
details,
refer to Appendix H of this
publication.
S IEM08061
COMPILER ERROR IN DICTIONARY
ENTRY FOR STATEMENT NUMBER xxx
IMPLEMENTATION
RESTRICTION.
STATEMENT NUMBER xxx IS TOO
LONG AND HAS BEEN DELETED.
User Response:
ment size
S IEM0805I
T IEM08181
Compilation
W IEM0823I
IMPLEMENTATION RESTRICTION. NO
ROOM FOR zzzz IN CHECK TABLE
STATEMENT NUMBER xxx
is
User Response:
Save relevant
data. Call your local IBM representative.
Note that this
error can be avoided by using
only one label on the statement.
Explanation:
The CHECK
table has overflowed
list
System Action:
The item mentioned is ignored
User Response:
many items
~ppendix
Do not CHECK so
G: Diagnostic Messages
215
T IEM0824I
IMPLEMENTATION
RESTRICTION.
TOO MANY CHECKED ITEMS WITHIN
STATEMENT NUMBER xxx
Explanation:
A stack used to
trace nested IF statements has
overflowed
System Action:
terminated
S IEM0833I
COMPILER ERROR IN READ
STATEMENT NUMBER xxx
S IEM0834I
DATA
S IEM0835I
IMPLEMENTATION
RESTRICTION.
CHECK WILL NOT BE RAISED FOR
zzzz IN STATEMENT NUMBER xxx
BEC.;l\USE OF EVENT OPTION
IN THE EXPANSION OF BY NAME
ASSIGNMENT STATEMENT NUMBER xxx
A SET OF MATCHING ELEMENTS HAS
BEEN FOUND BUT THEY ARE NOT ALL
BASE ELEMENTS.
THE STATEMENT
HAS BEEN DELETED.
Explanation:
For a valid component
scalar assignment to
result from a BY NAME structure
assignment,
it is necessary
that all the scalar names derived from original structure
name operands have identical
qualification relative to the
structure name originally specified. e.g: DCL lS,
2T, 2U,
3V; DCL lW, 2T, 2U; W=S; gives
rise to the component assignments W.T=S.T; W.U=S.U;
the
second of which is invalid.
System Action:
The BY NAME
assignment statement is deleted
User Response:
PL/I Reference
for
expansion
216
Refer to the
Manual - rules
of structure
THE ASSIGNED OPERAND IN BY NAME
ASSIGNMENT STATEMENT NUMBER xxx
IS NOT A STRUCTURE OR AN ARRAY
OF STRUCTURES. STATEMENT DELETED.
ALL OPERANDS LEFT OF EQUAL SYMBOL
IN
MULTIPLE
STRUCTURE
ASSIGNMENT STATEMENT NUMBER xxx
ARE NOT STRUCTURES.
STATEMENT
DELETED
Explanation:
In
multiple
structure aSSignment, all the
operands being assigned to must
be structures.
Explanation: The compiler does
not raise the CHECK condition
for variables when they are
changed in statements containing an EVENT option.
S IEM08321
THE EXPANSION
OF
BY
NAME
ASSIGNMENT STATEMENT NUMBER xxx
HAS RESULTED IN NO COMPONENT
ASSIGNMENTS.
Explanation:
In
BY
NAME
assignment, the operand to the
left of the equals sign must be
a structure or an array of
structures .•
Compilation is
User Response: Avoid the error
by supplying an explicit DATA
list
W IEM08261
cor-
system Action:
The statement
is treated as a null statement
IF
so
Explanation: Compiler error in
processing GET or READ DATA
statement
System Action:
terminated
and
Compilation is
User
Response:
Rephrase
statements, or do not CHECK
many items.
T IEM08251
assignment BY NAME rect the error.
system Action:
Replaces statement by c null statement and
continues
User Response: Break statement
up into a series of separate
statements
S IEM0836I
ILLEGAL ARRAY
REFERENCE
IN
STRUCTURE ASSIGNMENT OR EXPRESSTATEMENT NUMBER
xxx
SION.
DELETED.
Explanation:
In PL/I, arrays
of scalars are invalid operands
in
structure,
or array of
structure, expressions.
T IEM0837I
COMPILER
ERROR
PHASE IEMHF.
IN
INPUT
TO
Explanation:
Meaningless
input. This message is also
produced if an error is found
in a DECLARE statement.
In
that case, a second message, of
severity
level
severe,
is
issued giving details of the
error.
System Action:
terminated
Compilation
is
elements at the next level.
Corresponding sets of contained
elements must all be arrays of
structures, structures, arrays,
or scalars.
The arrays must
have the same dimensionality
and bounds.
User Response:
Save relevant
data. Call your local IBM representative.
E IEM0838I
EXPRESSION RIGHT OF EQUAL SYMBOL IN BY
NAME
ASSIGNMENT
STATEMENT NUMBER xxx CONTAINS
NO STRUCTURES. BY NAME OPTION
DELETED.
Explanation:
In an assignment
statement having the BY NAME
option. the expression to the
right
of
the equal symbol
should contain at least one
structure or array of structures.
S IEM0848I
User Response:
Refer to the
PL/I Reference Manual
the
expansion of array and structure expressions and assignments - and correct the program.
S IEM0851I
IMPLEMENTATION
RESTRICTION.
THE
EXPANSION
OF STRUCTURE
EXPRESSIONS IN STATEMENT NUMBER
xxx HAS CAUSED A TABLE INTERNAL
TO THE COMPILER TO OVERFLOW.
STATEMENT DELETED.
The expansion of
expressions
or
assignments has given rise to a
statement which exceeds
one
text block in length
EXPla~tion:
struc~re
User Response:
ment size
Explanation:
The nesting of
structure expressions in argument lists is too deep.
S IEM0852I
User Response:
nesting.
S IEM0849I
Decrease
the
AN EXPRESSION OR ASSIGNMENT IN
STATEMENT NUMBER xxx
EITHER
CONTAINS SEPARATE
STRUCTURES
WITH DIFFERENT STRUCTURING, OR
CONT AINS BOTH A STRUCTURE AND
AN ARRAY OF STRUCTURES. THE
STATEMENT HAS BEEN DELETED.
Explanation:
PL/I does not
allow separate structures with
different structuring
within
the same expression or assignment. The (F) compiler does
not support reference to both a
structure and an
array
of
structures within
the
same
expression or assignment.
THE BOUNDS OF THE BASE ARRAYS
OF THE STRUCTURE OPERANDS OF
THE
STRUCTURE EXPRESSION OR
ASSIGNMENT IN STATEMENT NUMBER
xxx ARE NOT THE SAME.
THE
STATEMENT HAS BEEN DELETED.
Explanation:
In a structure
assignment or expression, all
structure operands must have
the same number of contained
Decrease state-
A SUBSCRIPTED REFERENCE TO AN
ARRAY OF STRUCTURES IN STATEMENT NUMBER xxx HAS THE WRONG
NUMBER
OF
SUBSCRIPTS.
THE
STATEMENT HAS BEEN DELETED.
Explanation:
Subscripted references to arrays must have
subscript expressions equal in
number to the dimenSionality of
the array
User Response:
Correct
scripted reference
S IEM0853I
sub-
DEFERRED FEATURE. A STRUCTURE
ASSIGNMENT OR EXPRESSION
IN
STATEMENT NUMBER xxx INVOLVES
CROSS
SECTIONS
OF
ARRAYS.
STATEMENT DELETED.
Explanation: This version of
the compiler does not support
reference to cross sections of
arrays of structures.
User Response:
Correct
the
source code. The two restrictions quoted above are detailed
in the PL/I Reference Manual
and in Appendix H of this publication, respectively.
S IEM0850I
IMPLEMENTATION
RESTRICTION.
STATEMENT NUMBER xxx IS TOO
LONG AND HAS BEEN DELETED.
User Response:
Expand
the
statement in DO loops replacing
'* f S in subscripts
by
the
appropriate DO control variable.
S IEM0864I
IMPLEMENTATION
RESTRICTION.
NESTING OF ARRAY ASSIGNMENTS OR
I/O LISTS TOO DEEP.
STATEMENT
NUMBER xxx DELETED.
Explanation:
Nesting of functions,. combined with size of
arrays inVOlved, is too great
Appendix G: Diagnostic Messages
217
User Response:
splitting into
statements
S IEM08651
Simplify
by
two or
more
IMPLEMENTATION
RESTRICTION.
STATEMENT NUMBER xxx IS TOO
LONG AND HAS BEEN DELETED.
Explanation: Nesting of functions with
array
arguments
involves a large expansion of
text
User
Response:
splitting
into
statements
S IEM08661
S IEM08721
Explanation:
The number
subscripts specified must
the same as the number
dimensions of the array
S IEM08731
Simplify by
two or more
NEITHER
MULTIPLE
ASSIGNMENT
COMMA
NOR ASSIGNMENT MARKER
FOUND
IN
CORRECT POSITION.
STATEMENT NUMBER xxx DELETED.
S IEM08741
An
expression
occurr1ng on the left-hand side
of an assignment must be contained within parentheses.
NUMBER OF * SUBSCRIPTS SPECIFIED FOR zzzz IS NOT THE DIMENSIONALITY
OF
THE
LEFTMOST
ARRAY.
STATEMENT NUMBER xxx
DELETED
S IEM0875I
BOUNDS OF ARRAY zzzz ARE NOT
SAME AS FOR LEFTMOST ARRAY IN
ASSIGNMENT
OR
EXPRESSION.
STATEMENT NUMBER xxx DELErED.
DIMENSIONS OF ARRAY zzzz ARE
NOT THE SAME AS FOR LEFTMOST
ARRAY
IN ASSIGNMENT OR I/O
EXPRESSION.
STATEMENT NUMBER
xxx DELETED.
S IEM08761
ARGUMENT
OF
PSEUDO-VARIABLE
INVALID.
STATEMENT NUMBER xxx
IS DELETED.
S IEM08771
S IEM08781
218
UNSUBSCRIPTED ARRAY
SCALAR ASSIGNMENT.
NUMBER xxx DELETED.
zzzz
IN
STATEMENT
can
STRUCTURE zzzz FOUND IN ARRAY
OR SCALAR EXPRESSION. STATEMENT NUMBER xxx DELETED.
Explanation:
Structures
may
only be aSSigned to structures
S IEM08791
SCALAR zzzz ON LEFT OF EQUAL
SYMBOL
IN ARRAY ASSIGNMENT.
STATEMENT NUMBER xxx DELETED.
ARGUMENTS
OF PSEUDO-VARIABLE
SUBSTR
INCORRECT.
STATEMENT
NUMBER xxx DELETED.
Explanation: Only scalars
be assigned to scalars
Explanation:
Arguments
of
pseudo-variables must be variables which are not expressions
S IEM08711
ONSOURCE OR ONCHAR APPEARS IN A
DIMENSIONED ARRAY ASSIGNMENT.
STATEMENT NUMBER xxx DELETED.
Explanation: Only one argument
given for SUBSTR. or expreSS10n
illegally used as argument for
pseudo-variable.
Explanation:
Array references
in expressions must have the
same dimensionality
S IEM08701
SECOND ARGUMENT
OF
PSEUDOVARIABLE
COMPLEX
OR
FIRST
ARGUMENT OF REAL, IMAG,
OR
UNSPEC EITHER IS NOT FOLLOWED
BY A RIGHT PARENTHESIS OR IS AN
EXPRESSION.
STATEMENT NUMBER
xxx DELETED.
Explanation:
ON SOURCE
and
ONCHAR may only appear in scalar assignments
Explanation: Array references
in expressions must have the
same bounds
S IEM08691
ARGUMENTS OF
PSEUDO-VARIABLE
COMPLEX INCORRECT.
STATEMENT
NUMBER xxx DELETED.
Explanation:
Too many arguments given for this pseudovariable~ or expression used as
argument.
Explanation:
Array references
in expressions must have the
same dimensionality
S IEM08681
of
be
of
Explanation: Only one argument
given for COMPLEX, or expression illegally used as argument
for pseudo-variable.
~xplan~tion:
S IEM08671
NUMBER OF SUBSCRIPTS SPECIFIED
FOR LEFTMOST OPERAND zzzz IS
NOT
SAME AS DIMENSIONALITY.
STATEMENT NUMBER xxx DELETED.
PSEUDO-VARIABLE COMPLEX, REAL,
lMAG., UNSPEC, COMPLETION, OR
SUBSTR LACKS ARGUMENTS. STATEMENT NUMBER xxx DELETED.
Explanation:
Pseudo-variables
COMPLEX, REAL, I MAG"
UNS PEC"
COMPLETION. and SUBSTR require
arguments
T IEM08981
Explanation:
compiler error
User Response:
Check whether
the variable was intended as a
pseudo-variable or whether it
should have been declared otherwise
S IEM08801
NUMBER OF SUBSCRIPTS SPECIFIED
FOR zzzz IS NOT SAME AS DIMENSIONALITY.
STATEMENT
NUMBER
xxx DELETED.
Explanation:
The number
subscripts specified must
the
same as the number
dimensions of the array
S IEM08811
T IEM08821
system Action:
pila tion
E IEM08991
of
be
of
Compilation
Rewrite expres-
* USED AS SUBSCRIPT FOR ISUB
DEFINED ITEM zzzz IN STATEMENT
NUMBER xxx.
ZERO SUBSTITUTED.
User Response:
Rewrite without
*
E IEM09011
IMPLEMENTATION
RESTRICTION.
TOO MANY LEVELS OF ISUB NESTING
IN STATEMENT NUMBER xxx
Explanation: Stack has overflowed scratch core.
The maximum number of levels of nesting
possible depends on the dimensionality
of
the
arrays
involved.
User Response: Rewrite defining DECLARE statement
E IEM09021
Compilation
WRONG NUMBER OF SUBSCRIPTS FOR
ISUB DEFINED ITEM
zzzz
IN
STATEMENT NUMBER
xxx.
SUBSCRIPTS IGNORED OR ZERO SUPPLIED.
User Response:
Rewrite with
correct number of subscripts.
The error may be in the reference to the defined item or
in the defining DECLARE statement.
ISUB DEFINED OPERAND zzzz HAS
NOT BEEN DECLARED AS AN ARRAY.
ISUBS IN STATEMENT NUMBER xxx
DELETED.
T IEM09031
User Response: Declare defined
item with dimension attribute
ISUB NUMBER IN DEFINING LIST
FOR zzzz IN STATEMENT NUMBER
xxx IS TOO GREAT. MAXIMUM NUMBER USED.
System Action: The iSUB number
is replaced by the number of
dimensions
of
the
defined
array.
User Response: Reduce the number of levels of nesting in the
statement
S IEM08971
Terminates com-
MULTIPLIER IN ISUB
DEFINING
LIST FOR zzzz IN STATEMENT NUMBER xxx IS NOT A SCALAR EXPRESSION.
User Response:
sion
has
User Response:
Save relevant
data. Call your local IBM representative.
system
Action:
terminated
a
System Action:
Remainder of
expression,
after
comma,
ignored
E IEM09001
T IEM08961
is
Explanation:
A comma has been
found within the iSUB multiplier expression
COMPILER ERROR.
INVALID INPUT
TO PHASE HK AT STATEMENT NUMBER
xxx
System
Action:
terminated
This
User Response:
Save relevant
data. Call your local IBM representative.
NUMBER OF DIMENSIONS IN REFERENCE TO zzzz IS NOT SAME AS
THAT OF EXPRESSION OR ASSIGNMENT.
STATEMENT NUMBER
xxx
DELETED.
Explanation: Illegal text
been encountered
NO
SUBSCRIPTS
AFTER
ISUBDEFINED ITEM zzzz IN STATEMENT
NUMBER xxx.
COMPILER ERROR. ERROR DETECTED
IN DEFINING ISUB LIST FOR zzzz
IN STATEMENT NUMBER xxx
Appendix G: Diagnostic Messages
219
Explanation:
Compiler error.
Either Ca) SUB not found where
expected, or Cb) SUBO found
without a multiplier expression,.
System
Action:
terminated
W IEM1026I
T IEM1027I
STATEMENT DELIMITER FOUND WITHIN SUBSCRIPT LIST FOR ZZZZ IN
STATEMENT NUMBER xxx
system
Action:
The present
statement is dropped and the
new one processed. Compilation
will not be completed.
T IEM1028I
IMPLEMENTATION
RESTRICTION.
STATEMENT NUMBER xxx IS TOO
LONG AND HAS BEEN TRUNCATED.
is
Terminates com-
User Response:
Save relevant
data. Call your local IBM representative.
T IEM1029I
IN
STATEMENT NUMBER
ARRAY
CROSS-SECTION
ILLEGALLY.
xxx AN
APPEARS
Explanation: A
feature
has
been used that is not supported
by this version of the compiler.
For details, refer
to
Appendix H of this publication.
Simplify state-
ILLEGAL USE OF zzzz IN STATEMENT
NUMBER
xxx.
A FIXED
BINARY ZERO CONSTANT IS SUBSTITUTED.
system Action:
pila tion
T IEM1040I
Explanation:
A
non-scalar
identifier has been specified
in a context that requires a
scalar identifier.
FEATURE.
STRUCTURE
IS BEING PASSED TO
Z2ZZ IN STATEMENT NUM-
System Action:
pilation
IDENTIFIER zzzz ILLEGALLY USED
AS SUBSCRIPT IN STATEMENT NUMBER xxx
Explanation:
A subscript has
been used which is not a scalar, a scalar expression, or a
constant
DEFERRED
ARGUMENT
FUNCTION
BER xxx.
Terminates com-
Explanation: In this version
of the compiler, structures may
not be passed as arguments to
built-in functions.
System Action: Replaces illegal identifier with arithmetic
constant zero
220
Compilation
COMPILER ERROR IN
STATEMENT
NUMBER xxx. ILLEGAL INPUT TEXT
FOR PHASE IA.
system Action:
pilation
System Action:
Statement is
truncated.
Compilation
will
not be compl eted,.
S IEM1025I
AN
THE SUBSCRIPTED STRUCTURE ITEM
zzzz
IS
ILLEGALLY USED IN
STATEMENT NUMBER xxx
system .Action:
terminated
Explanation:
statement length
exceeds text block size
S IEM1024I
STATEMENT
NUMBER xxx IS
UNLABELED FORMAT STATEMENT
Explanation:
The
indicated
structure item is used in a
statement other than an assignment statement or an I/O data
list,.
User Response: Check text, but
this is probably a compiler
error, in which case save relevant data and contact your your
local IBM representative.
User Response:
ment
ille-
Explanation: A FORMAT statement should have a label
Explanation:
The
subscript
scan routine has found a statement marker
S IEM0907I
Replaces
wi th arithmetic
Compilation
User Response:
Save relevant
data. Call your local IBM representative.
S IEM0906I
System Action:
gal subscript
constant zero
User
gram~
Terminates com-
Response:
Rewrite proavoiding unsupported fea-
ture.
T IEM1051I
DEFERRED FEATURE.
STRUCTURE
ARGUMENT IS BEING PASSED TO
PSEUDO-VARIABLE zzzz IN STATEMENT NUMBE R xxx.
Explanation:
In this version
of the compiler, structures may
not be passed as arguments to
pseudo-variables.
System Action:
pilation
T IEM10611
Explanation: Too few arguments
are being passed to a built-in
function
Terminates com-
User Response:
Rewrite program, avoiding unsupported feature.
T IEM10561
INVALID
ARGUMENT
IS
BEING
PASSED TO ENTRY NAME zzzz IN
STATEMENT NUMBER xxx.
System Action:
pilation
T IEM1057I
system Action:
pilation
T IEM10621
System Action:
Function result
is set to zero and compilation
terminated .•
OR STRUCTURE ARGUMENT IS
NOT BEING PASSED, AS REQUIRED,
TO FUNCTION zzzz IN STATEMENT
NUMBER xxx.
ARR~Y
T IEM10631
to
an
as
COMPILER
ERROR.
UNEXPECTED
SITUATION HAS ARISEN IN THE
SCANNING
OF
THE
ARGUMENTS
PASSED TO FUNCTION zzzz
IN
STATEMENT NUMBER xxx
Explanation:
Compiler is unable to correctly scan an argument list
System Action:
pilation
Terminates com-
system Action:
is set to zero
User Response:
ment
Correct
User Response:
Save relevant
data. Call your local IBM representative.
state-
FIRST ARGUMENT BEING PASSED TO
FUNCTION zzzz IN STATEMENT NUMBER xxx SHOULD BE AN ARRAY.
Explanation:
Argument
built-in function is not
array as expected
system Action:
pilation
T IEM10601
User Response:
Save relevant
data. Call your local IBM representative.
Terminates com-
Explanation:
Argument
built-in function is not
array
or
a
structure"
expected .•
T IEM10591
COMPILER ERROR. CORRECT GENERIC SELECTION FOR FUNCTION zzzz
IN ST~TEMENT NUMBER xxx HAS NOT
BEEN ACHIEVED.
Explanation:
Compiler.,
althcugh being given a legal
argument to a generic built-in
function. is unable to make the
selection.
Explanation:
~rgument
to
built-in function is not
a
decimal integer as expected.
T IEM10581
Terminates com-
Terminates com-
DECIMAL INTEGER CONSTANT IS NOT
BEING PASSED, AS REQUIRED, TO
FUNCTION zzzz IN STATEMENT NUMBER xxx.
system Action:
pilation
TOO FEW ARGUMENTS ARE BEING
PASSED
TO FUNCTION zzzz IN
STATEMENT NUMBER xxx.
T IEM10641
to
an
system Action:
pila tion
TOO MANY ARGUMENTS ARE BEING
PASSED TO FUNCTION zzzz
IN
STATEMENT NUMBER xxx.
Terminates com-
Terminates com-
User Response:
Save relevant
data. Call your local IBM representa ti ve .•
arguto a
T IEM10651
System Action:
pilation
ERROR.
THE GENERIC
ASSOCIATED WITH ENTRY
HAVE BEEN INCORRECTLY
THE DICTIONARY.
Explanation:
The dictionary
entry for one or more of the
generic families is not a recognizable entry type .•
Terminates com-
Explanation:
Too many
ments are being passed
built-in fUnction
COMPILER
FAMILIES
NAME zzzz
FORMED IN
Function result
NO GENERIC SELECTION POSSIBLE
FOR THE ENTRY NAME zzzz IN
STATEMENT NUMBER xxx.
Appendix G: Diagnostic Messages
221
Explanation:
Incorrect use of
the GENERIC attribute resulting
in no selection being possible
System
Action:
terminated
System Action:
pilation
User Response:
Save relevant
data. Call your local IBM representa ti ve,.
Terminates comT IEM1074I
T IEM1066I
T IEM10671
MORE THAN ONE GENERIC SELECTION
IS POSSIBLE FOR THE ENTRY NAME
zzzz IN STATEMENT NUMBER xxx.
Explanation:
Unable to correctly scan an argument list of
a pseudo-variable
system Action:
pilation
System
Action:
terminated
Terminates com-
PSEUDO-VARIABLE zzzz APPEARS IN
STATEMENT NUMBER xxx WITH AN
ILLEGAL ARGUMENT,.
System Action:
pilation
T IEM1072I
Compilation
User Response:
Save relevant
data. Call your local IBM representati ve,.
T IEM10781
Terminates com-
IMPLEMENTATION
RESTRICTION.
THE NUMBER OF FAMILY MEMBERS
AND ARGUMENTS ASSOCIATED WITH
THE GENERIC ENTRY NAME yyyy
EXCEEDS THE LIMITATION IMPOSED.
There
is
an
Explanation:
implementation restriction on
the number of family members
and arguments associated with
GENERIC
entry
names.
For
details, refer to Appendix B of
this publication.
Terminates comSystem
Action:
terminated
Compilation
User Response: Divide the generic family into two or more
generic families.
Terminates com-
COMPILER ERROR. CORRECT GENERIC
SELECTION
FOR
PSEUDOVARIABLE zzzz
IN
STATEMENT
NUMBER
xxx
HAS
NOT
BEEN
ACHIEVED.
Explanation:
Compiler error.
Although being given a legal
argument to a generic pseudovariable. is unable to make the
selection.
222
COMPILER ERROR IN PHASE JD
system
Action:
terminates
PSEUDO-VARIABLE zzzz APPEARS IN
STATEMENT NUMBER xxx WITH TOO
FEW ARGUMENTS ..
System Action:
pilation
T IEM1073I
T IEM10761
PSEUDO-VARIABLE zzzz APPEARS IN
STATEMENT NUMBER xxx WITH TOO
MANY ARGUMENTS,.
system Action:
pilation
Compilation
User Response:
Save relevant
data. Call your local IBM representative.
Terminates com-
AN ARRAY IS BEING PASSED TO
FUNCTION zzzz IN STATEMENT NUMBER
xxx.
THIS PRODUCES AN
ARRAY
EXPRESSION
WHICH
IS
INVALID IN THIS ~NTEXT.
System Action:
pilation
T IEM1071I
COMPILER
ERROR.
UNEXPECTED
SITUATION HAS ARISEN IN THE
SCANNING
OF
THE
ARGUMENTS
PASSED TO PSEUDO-VARIABLE zzzz
IN STATEMENT NUMBER xxx
Explanation:
Incorrect use of
the GENERIC attribute resulting
in
more than one selection
being possible
Explanation:
Argument
to
pseudo-variable cannot be converted to a legal type; or,
structure argument being used
with pseudo-variable.
T IEM1068I
Compilation
S IEM10821
STATEMENT NUMBER xxx CONTAINS
AN INVALID USE OF AREA OR POINTER DATA. PART OR ALL OF THE
STATEMENT HAS BEEN DELETED.
Explanation:
The
statement
contains an operation that:
1.
is not permitted for AREA
or POINTER data. or
2.
can only be used with AREA
or POINTER data but such
data is not the data specified for the operationu
Explanation:
The TASK, EVENT,
or LABEL variable may lose its
validity in transmission.
System Action:
Deletes
the
statement or clause responsible
for the error.
S IEM1088I
THE SIZE OF AGGREGATE zzzz IS
GREATER THAN 8,388,,601 BYTES ..
STORAGE ALLOCATION
WILL
BE
UNSUCCESSFUL.
User Response:
Correct
source code if necessary
E IEM1104I
System Action: Array or structure mapping for the item is
terminated, but the compilation
continues,. Execution of object
decks containing references to
the item will give incorrect
results.
S IEM1089I
Response:
Chec k
system Action:
Defined item
mapped onto same storage as
item
defined on.
Data and
specification
interrupts may
occur at execution.
source
THE RELATIVE VIRTUAL ORIGIN OF
AGGREGATE zzzz IS LESS THAN
-8,,388,. 608 BYTES,. STORAGE HAS
NOT BEEN ALLOCATED,.
User Respons~:
Refer to the
PL/I Reference Manual - "The
DEFINED Attribute" and correc t the error.
E IEM11051
Explanation: The low bounds of
the arrays in the aggregate are
too high.
system Action:
Defined item
mapped onto same storage as
item defined on.
Data
and
specification interrupts
may
occur at execution.
User Response: Reduce the size
of the aggregate. or reduce the
value of the low bounds in the
aggregate,.
THE STRUCTURE zzzz DECLARED IN
STATEMENT NUMBER xxx CONTAINS
VARYING STRINGS AND MAY APPEAR
IN A RECORD I/O STATEMENT
Explanation:
VARYING strings
in structures are not permitted
in RECORD I/O statements.
System Action: The RECORD I/O
statement is processed but the
record will contain erroneous
information.
User
Response:
source code
W IEM1092I
Correct
the
THE TASKS, EVENTS OR LABELS
CONTAINED IN STRUCTURE
zzzz
DECLARED IN STATEMENT NUMBER
xxx MAY LOSE THEIR VALIDITY IF
USED IN A RECORD I/O STATEMENT.
THE DATA CHARACTERISTICS
OF
zzzz DECLARED IN STATEMENT NUMBER xxx DO NOT MATCH THOSE OF
THE DEFINING BASE.
Explanation: For valid use of
the DEFINED attribute, both the
defined item and the base must
be of the same defining class.
System Action: The mapping of
the aggregate is undefined,. and
will cause errors on execution.
S IEM1090I
THE DEFINING OF zzzz DECLARED
IN
STATEMENT
NUMBER
xxx
INVOLVES DATA NOT ALLOWED FOR
STRING CLASS OVERLAY DEFINING.
Explanation:
The programmer's
use of the DEFINED attribute
contravenes the language rules
concerned with the permitted
data types and dimensionality
of base and defined item.
Explanation:
The message is
generated
when an array or
structure size exceeds 2 23 -1
User
code
the
User Response:
Refer to the
PL/I Reference Manual
"The
DEFINED Attribute" - and correct the error.
T IEMll06I
THE
DIMENSIONALITY
OF zzzz
DECLARED IN STATEMENT NUMBER
xxx IS NOT THE SAME AS THAT OF
THE DEFINING BASE.
Explanation: With the exception of the case of string
class d'efining, if either the
base or the defined item are
arrays., then both the base and
the defined item must be arrays
with the same dimensionality.
system Action: Compilation is
aborted after examining other
uses of the DEFINED attribute
Appendix G: Diagnostic Messages
223
User Response:
Refer to the
PLII Reference Manual
"The
DEFINED Attribute" - and correct the error.
PL/I Reference Manual - "The
DEFINED Attribute" and correct the error.
E IEM1111I
T IEM1107I
THE DEFINING OF zzzz DECLARED
IN STATEMENT NUMBER xxx ILLEGALLY INVOLVES VARYING STRINGS.
Explanation:
In use of the
DEFINED attribute. neither the
base nor the defined item may
involve strings declared VARYING.
Explanation: In the case of
string class overlay defining
where the defined item or the
base is a structure l then all
the elements of the structure
must be data of the same string
defining class.
system Action: Compilation is
aborted after examining other
uses of the DEFINED attribute.
E IEM1108I
User Response:
Refer to the
PL/I Reference Manual
"The
DEFINED Attribute" - and correct the error.
System Action:
Defined item
mapped onto same storage as
item defined on.
Data
and
specification interrupts
may
occur at execution.
THE DEFINING OF zzzz DECLARED
IN STATEMENT NUMBER xxx ILLEGALLY INVOLVES DATA AGGREGATES
THAT ARE NOT UNALIGNED.
User Response:
Refer to the
PL/I Reference Manual
"The
DEFINED Attribute" - and correct the error.
Explanation:
In the case of
string class overlay defining
where either or both the base
and the defined item are aggregates, then the aggregates must
have the PACKED attribute.
T IEM1110I
T IEM1112I
THE DEFINING OF zzzz DECLARED
IN STATEMENT NUMBER xxx ILLEGALLY INVOLVES THE POS ATTRIBUTE.
Explanation:
The
POSITION
attribute may only be declared
for data of the string class
which is overlay defined
System Action:
Defined item
mapped onto same storage as
item
defined on.
Data and
specification
interrupts may
occur at execution.
System Action:
terminated
User Response:
Refer to the
PL/I Reference Manual - "The
DEFINED Attribute" - and correct the error.
User Response:
Refer to the
PL/I Reference Manual
"The
DEFINED Attribute" - and correct the error.
THE DEFINING BASE
OF
zzzz
DECLARED IN STATEMENT NUMBER
xxx IS SHORTER THAN THE DEFINED
ITEM.
Explanation: In the case of
string class overlay defining,
the defined item must occupy a
subset of the base storage.
In the case of correspondence
defining, the length of each
defined element must not be
greater than the length of each
base element.
System Action: Compilation is
aborted after examining other
uses of the DEFINED attribute
User Response:
224
THE DEFINING OF zzzz DECLARED
IN
STATEMENT
NUMBER
xxx
INVOLVES A STRUCTURE
HAVING
ELEMENTS NOT ALL OF THE SAME
DEFINING CLASS.
Refer
to
the
E IEM1113I
THE
STRUCTURE
Compilation
DESCRIPTION
is
OF
zzzz DECLARED IN STATEMENT NUMBER xxx DOES NOT MATCH THAT OF
THE DEFINING BASE.
Explanation: Where a structure
or an array of structures is
defined on a structure or an
array of structures, and it is
not string class overlay defining, then the two structure
descriptions must be identical.
System Action:
Defined item
mapped onto same storage as
item
defined on.
Data and
specification
interrupts may
occur at execution.
User Response:
PL/I Reference
Refer to the
Manual - "The
DEFINED Attribute" rect the error.
W IEMll141
and
Explanation: A complex expression has been use1 to initialize a STATIC string. This is a
feature of PL/I not supported
by this version of the compiler. See Appendix H of this
publication for details.
cor-
IF THE BASE OF zzzz DECLARED IN
STATEMENT NUMBER xxx IS ALLOCATED
WITH
THE
DECLARED
EXTENTS"
THE DEFINING WILL BE
IN ERROR.
System Action:
The string is
initialized to nUll.
ExElanation: In the case of
string class overlay defining,
the defined item must occupy a
subset of the base storage. If
the base is of CONTROLLED storage class, its extents are not
finally resolved until execution time.
User Response:
Amend source
code.
The restriction can be
overcome by using an assignment
statement instead of the INITIAL attribute.
further
S IEMl1231
INITIAL VALUE FOR STATIC DATA
ITEM zzzz IN nnnn IS NOT A
CONSTANT.
INITIALIZATION TERMINATED.
User Response: Check that when
the base is allocated it is of
adequate size to accommodate
the defined item
User Response: Use a constant
in the INITIAL string.
System
action
Action:
No
S IEMl1251
E IEMll151
THE DEFINING BASE
OF
zzzz
DECLARED IN STATEMENT NUMBER
xxx IS AN ARRAY FORMAL PARAMETER. IF THE MATCHING ARGUMENT
IS AN ELEMENT OF AN ARRAY OF
STRUCTURES OR A CROSS SECTION
OF AN ARRAY, THE DEFINING WILL
BE IN ERROR.
Explanation: Iteration factors
are converted by the compiler
to REAL FIXED BINARY with a
default precision of 15,0. The
iteration factor referred to in
the message has a value greater
than 2~5~ and therefore exceeds
the defaul t precision.
Explanation:
The
base for
string class overlay defining
must occupy contiguous storage
system Action:
continues
User Response:
of arguments
S IEMl1201
Comments
Check
System Action:
The iteration
factor is replaced by zero
and
User Response:
Amend
code so that iteration
does not exceed 2~5_
validity
COMPILER ERROR.
INVALID SIGN
FOUND IN INITIAL VALUE LIST FOR
zzzz IN STATEMENT NUMBER xxx.
TREATED AS PLUS.
T IEM12001
User Response:
Save relevant
data. Call your local IBM representative.
S IEM11211
S IEMl1221
UNSUPPORTED
FEATURE.
AN
EXPRESSION HAS BEEN USED TO
INITIALIZE STATIC STRING zzzz
IN
STATEMENT
NUMBER
xxx.
STRING INITIALIZED TO NULL.
source
factor
COMPILER EFROR. ILLEGAL TRIPLE
IN TEXT.
CURRENT
STATEMENT
NUMBER xxx
Explanation:
Phase LA is out
of step in scanning text
System Action: Recovery impossible. Compilation is terminated .•
COMPILER ERROR. INVALID MARKER
FOUND IN INITIAL VALUE LIST FOR
zzzz IN STATEMENT NUMBER xxx.
INITIAL VALUE LIST TRUNCATED.
User Response:
Save relevant
data. Call your local IBM representati ve ..
ITERATION FACTOR USED IN INITIALIZATION
OF STATIC ARRAY
zzzz IN STATEMENT NUMBER xxx IS
TOO LARGE. REPLACED BY ZERO.
User Response:
Save relevant
data. Call your local IBM representa ti vee
T IEM15691
IMPLEMENTATION
RESTRICTION.
SOURCE PROGRAM TOO LARGE.
Explanation:
The number of
symbolic register names generated by the code generation
section of the compiler has
Appendix G: Diagnostic Messages
225
exceeded
allowed
the
system Action:
terminated
maximum
number
label variable, or label constant has been used in an 1n1tial value" TO or BY clause.
Compilation is
System Action:
Ignore
the
erroneous expression and use a
fixed binary temporary
User
Response:
Programmer
should break down the compilation into smaller modules
T IEM1570I
COMPILER ERROR. INVALID TRIPLE
FOLLOWING WHILE PRIME TRIPLE.
S IEM1575I
Explanation:
Input to phase LG
of compiler is erroneous.
A
WHILE' triple is not followed
by CV' or compiler label.
system Action:
terminated
Compilation
Explanation:
An invali? argument" such as an express10n or
function"
has been used in a
pseudo-variable.
is
User Response:
Save relevant
data.. Call your local IBM representat ive,.
T IEM1571I
IMPLEMENTATION
RESTRICTION.
SOURCE PROGRAM TOO LARGE.
System Action: Assigns invalid
argument to binary temporary,
and uses the latter as argument.
W IEM1588I
Explanation:
No more core is
available for the stack
of
nested DO statements (both in
source language and those generated internally for
array
assignments etc.)
system Action:
terminated
Explanation:
If the VARYING
strir.g is declared BASED, the
ADDR result is invalid
T IEM1600I
ILLE~AL USE OF ARRAY OR
STRUCTURE VARIABLE IN DO STATEMENT
NUMBER xxx
None
User Response:
program
Correct
INVALID LOOP CONTROL EXPRESSION
OR CONTROL VARIABLE SUBSCRIPT
IN
STATEMENT
NUMBER
xxx
REPLACED BY FIXED BINARY TEMPORARY.
Explanation:
Either something
other than an arithmetic or
string datum has been used as a
subscript in the control variable, or something other than an
arithmetic or string
datum,
source
COMPILER ERROR.
ILLEGAL ABSOLUTE REGISTER NUMBER. STATEMEN T NUMBER xxx
system Action: Compilation is
terminated and error messages
printed.
system Action:
Generates an
error stop at execution time
226
System Action:
Explanation:
Compiler error.
Fixed binary arithmetic uses an
unassigned
general
register
number
greater than 15, or
floating
arithmetic
uses a
floating register greater than
6.
Explanation:
A
non-scalar
variable has been used as (1)
the control variable, or (2) a
control variable subscript, or
(3) a loop limit or increment
value.
S IEM1574I
VARYING STRING HAS BEEN USED AS
AN ARGUMENT TO ADDR FUNCTION IN
STATEMENT NUMBER xxx
Compilation is
User Response:
Simplify nesting so as to reduce number of
levels.
S IEM1572I
DO LOOP CONTROL PSEUDO-VARIABLE
IN STATEMENT NUMBER xxx HAS AN
INVALID ARGUMEN~. BINARY INTEGER TEMPORARY ASSUMED.
User Response:
Save relevant
data. Call your local IBM representative.
T IEM1601I
RESTRICTION.
STATEMENT NUMBER xxx REQUIRES
MORE THAN
200
INTERMEDIATE
RESULT DESCRIPTIONS.
IM~LEMENTATION
Explanation:
Compiler limitation.
The temporary result
stack, which holds 200 items,
is full.
System Action: Compilation is
terminated and error messages
printed
S IEM1605I
User Response:
This
error
should only occur in very large
statements.
Divide the statement into two smaller statements,.
T IEM1602I
Explanation: Error in source
program.
When a fixed decimal
variable is corrected to fixed
binary. the magnitude of its
scale factor is multiplied by
3.31.
If the original scale
factor is >38 or <-38, then the
fixed binary scale factor would
be outside the range +121 to
-128.
COMPILER ERROR.
INSUFFICIENT
NUMBER OF TEMPORARY RESULT DESCRIPTIONS.
STATEMENT NUMBER
xxx
Explanation:
compiler error.
A temporary result is required
but the temporary result stack
is empty.
This can happen if
the triples are out of order or
if
extra triples have been
inserted.
System
Action:
The
fixed
binary scale factor is set to
+127 or -1284 Processing continues,.
User Response: The data in the
expression must be re-declared
with more suitable scale factors.
system Action: Compilation is
aborted and
error
messages
printed
T IEM16061
User Response:
Save relevant
data. Call your local IBM representative.
T IEM16031
system Action: Compilation is
terminated and error messages
printed
Explanation:
Compiler error in
evaluation phase.
Error 1n control blocks for
floating registers.
express~on
User Response:
Save relevant
data. Call your local IBM representative ..
system Action: Compilation is
terminated and error messages
printed
S IEM16011
T IEM16041
COMPILER ERROR. SECOND OPERAND
FOR RS OR SS INSTRUCTION IS IN
A REGISTER.
STATEMENT NUMBER
xxx
Explanation: Compiler error in
expression
evaluation phase .•
Attempt to generate an RS or SS
type
pseudo-code instruction
using a register as the 2nd
operand.
system Action: Compilation is
terminated and error messages
printed.
User Response:
Save relevant
data. Call your local IBM representative ..
COMPILER ERROR.
FUNCTION NOT
FOLLOWED BY RESULT DESCRIPTION.
STATEMENT NUMBER xxx
Explanation:
Compiler error.
A function is not followed by
TMPD or LEFT triples giving the
result type.
COMPILER ERROR. COUNT OF FREE
FLOATING REGISTERS IS WRONG.
STATEMENT NUMBER xxx
User Response:
Save relevant
data. Call your local IBM representati ve,.
IN STATEMENT NUMBER xxx FIXED
DECIMAL VARIABLE CANNOT BE CORRECTLY CONVERTED TO BINARY DUE
TO SIZE OF SCALE FACTOR.
LABEL"
EVENT, FILE"
OR TASK
ITEM zzzz IN STATEMENT NUMBER
xxx IS USED IN AN EXPRESSION
WHICH IS ILLEGAL.
Explanation: Error in source
program,. A label, event, file,
or task datum cannot be used in
an expression. ~lternatively,
this can be a compiler error
when an unrecognizable
dictionary entry is used in an
expression,.
System Action:
Substitute a
fixed binary (31,0) data item
(if the illegal item occurs in
an arithmetic expression) or a
null bit string (if it occurs
in a string expression). Processing is continued.
User Response:
If error
source program, correct it.
Appendix G: Diagnostic Messages
in
227
E IEM1608I
resul t is the sum of the operand lengths.
LT. LE"
GE,
OR GT COMPARISON
OPERATOR
ILLEGALLY
USED IN
STATEMENT NUMBER xxx WITH COMPLEX OPERANDS.
REPLACED WITH
EQUALS OPERA'roR.
System
Action:
Compilation
continues with string result
length truncated to 32767
Explanation: Error in source
program.
The only legal comparison between complex operands is '= •.
User Response:
must be used
W IEM1612I
System Action: The operator is
replaced with '=" and processing continues
User Response: Correct source
program using either the ABS
function or possibly the REAL
and IMAG functions.
T IEM1609I
COMPILER ERROR.
ILLEGAL DICTIONARY
REFERENCE X" 00 ... •
STATEMENT NUMBER xxx
System Action:
The first 50
areas
of
work
space
are
released.
The remainder may
not be released until the end
of the block. Compilation continues and execution is valid.
Compilation
System
Action:
terminated and error messages
printed
User
Response:
Divide the
string expression into several
sub-expressions
User Response:
Save relevant
data. Call your local IBM representative.
S IEM1613I
COMPILER ERROR IN PHASE LW AT
STATEMENT NUMBER x~x. INSUFFICIENT
NUMBER
OF
TEMPORARY
RESULT DESCRIPTIONS.
Explanation:
program
Illegal
source
System Action:
Severe error
message and
object
program
branch. Compilation continues,
assuming scalar of same type if
array~
or fixed binary (31,0)
type if structure.
System Action: Compilation is
terminated and error messages
printed
User
Response:
Insert
DO
blocks for array* or break down
structure into its components.
IMPLEMENTATION RESTRICTION. A
STRING RESULT LONGER THAN 32767
IS PRODUCED BY CONCATENATE IN
STATEMENT NUMBER xxx. STRING
TRUNCATED TO LENGTH 32767.
Explanation:
Maximum string
length for this implementation
is 32767. This may be exceeded
during concatenation, because
the length of the intermediate
228
ILLEGAL USE OF ARRAY OR STRUCTURE VARIABLE IN STATEMENT NUMBER xxx
Explanation:
Compiler error.
A temporary result is required
but the temporary result stack
is empty.
This can happen if
the triples are out of order or
if
extra triples have been
inserted.
User Response:
Save relevant
data,. Call your local IBM representative.
E IEM1611I
IMPLEMENTATION RESTRICTION IN
STATEMENT NUMBER xxx. INTERMEDIATE WORK SPACE IS OBTAINED
MORE THAN 50 TIMES IN A STRING
SOME WORK SPACE
EXPRESSION.
WI LL NOT BE RELEASED UNTIL THE
END OF THE BLOCK.
Explanation:
The intermediate
work space is required each
time a function
returns
a
string result or each time a
lib rary module is called
Explanation:
Compiler error.
The symbolic dictionary reference is less than 256.
T IEM1610I
Shorter strings
W IEM1614I
IMPLEMENTATION RESTRICTION. A
VARYING STRING RESULT LONGER
THAN 32767 MAY BE PRODUCED BY
CONCATENATE IN STATEMENT NUMBER
xxx.
STRING
TRUNCATED
TO
LENGTH 32767.
Explanation: The sum of the
maximum lengths of two strings
in a concatenation operation
exceeds the implementation restriction of 32767. Since one
or both of the operands is a
VARYING string, it is not known
at compile-time whether
the
restriction will be exceeded at
execution time.
system Action: The assignment
is deleted from the text.
S IEM16201
System
Action:
Compilation
continues with string result
maximum
length truncated to
32767.
Explanation:
The
pseudovariable 'IMAG' is meaningful
only if its argument is of type
complex.
User Response: Shorter strings
must be used if the sum of the
execution-time current lengths
will ever exceed 327674
E IEM16151
SECOND ARGUMENT IN THE SUBSTR
FUNCTION IN STATEMENT NUMBER
xxx IS ZERO, WHICH IS INVALID.
ZERO HAS BEEN REPLACED BY ONE.
E IEM16161
SECOND ARGUMENT IN THE SUBSTR
PSEUDO-VARIABLE IN
STATEMENT
NUMBER xxx IS ZERO" WHICH IS
INVALID.
ZERO
HAS
BEEN
REPLACED BY ONE .•
System Action: A fixed binary
temporary target is provided
for the assignment or input
data list iter; and the pseudovariable is ignored
S IEM16211
T IEM16171
Explanation: An illegal return
of control has been made by the
SCAN routine which supports the
code generation phases.
Compilation
System
Action:
A temporary
whose type is legal in the
context is used to replace the
erroneous argument and the latter is removed from the text
is
S IEM16221
User Response:
Save relevant
data. Call your local IBM representative.
S IEM16181
IN STATEMENT
NUMBER xxx INCORRECTLY SPECIFIED.. REPLACED BY FIXED BINARY
TEMPORARY.
PSEUDO-VARI~BLE
system Action:
Ignores
the
pseudo-variable and
uses
a
fixed binary temporary instead.
RIGHT HAND SIDE OF STATEMENT
NUMBER xxx CANNOT BE ASSIGNED
TO A PSEUDO-VARIABLE. ASSIGNMENT IGNORED.
Explanation: The expression on
the
right-hand side of the
specified statement cannot be
assigned to a pseudo-variable"
i.e. it is not an arithmetic
or string datum.
FIRST
ARGUMENT
OF
PSEUDOVARIABLE SUBSTR IN STATEMENT
NUMBER xxx IS NOT A STRING
VARIABLE.
ARGUMENT HAS BEEN
CONVERTED TO STRING TEMPORARY
AND
THE
ASSIGNMENT
MADE
THERETO.
Explanation:
SUBSTR
pseudovariable cannot have a first
argument which is not a string
variable,.
Explanation: A pseudo-variable
in the given source statement
has been incorrectly specif ied"
e.g. has an incorrect number
of arguments.
S IEM16191
ILLEGAL
PSEUDO-VARIABLE
ARGUMENT IN STATEMENT NUMBER
xxx REPLACED BY BINARY TEMPORARY.
Explanation: A pseudo-variable
in the specified statement has
an illegal argument, i.e.
one
whose data type is not permissible in that context.
COMPILER ERROR. ILLEGAL RETURN
FROM SCAN ROUTINE. STATEMENT
NUMBER xxx
System Action:
terminated.
:'IMAG' IN STATEMENT NUMBER xxx
HAS REAL ARGUMENT. REPLACED BY
ASSIGNMENT TO TEMPORARY FIXED
BINARY INTEGER.
system
Action:
code
is
compiled to assign to a string
temporary.
The original argument remains unchanged.
T IEM16231
IMPLEMENTATION
RESTRICTION.
SOURCE PROGRAM TOO LARGE.
Explanation:
The number of
symbolic register names generated by the code generation
section of the compiler has
exceeded the maximum
number
allowed
System Action:
terminated
User
Response:
Compilation is
Programmer
Appendix G: Diagnostic Messages
229
W IEM1625I
should break down the compilation into smaller modules
System Action:
to zero
PSEUDO-VARIABLE REAL IN STATEMENT NUMBER xxx DOES NOT HAVE
COMPLEX ARGUMENT. ARGUMENT HAS
BEEN TREATED AS HAVING ZERO
IMAGINARY PART.
User Response: Check scale and
precision of the first argument
in ROUND function
Result
is
set
S IEM16331
ILLEGAL NEGATIVE SECOND ARGUMENT IS BEING PASSED TO THE
PSEUDO-VARIABLE
SUBSTR
IN
STATEMENT NUMBER xxx. AN EXECUTION ERROR WILL RESULT.
system Action: code is generated to perform assignment to
the specified REAL argument
S IEM1626I
ILLEGAL NEGATIVE SECOND ARGUMENT IS BEING PASSED TO THE
FUNCTION SUBSTR IN STATEMENT
NUMBER xxx. AN EXECUTION ERROR
WILL RESULT.
S IEM16341
ILLEGAL NEGATIVE THIRD ARGUMENT
IS BEING PASSED TO THE PSEUDOVARIABLE SUBSTR IN STATEMENT
NUMBER xxx. AN EXECUTION ERROR
WILL RESULT.
S IEM1627I
ILLEGAL NEGATIVE THIRD ARGUMENT
IS BEING PASSED TO THE FUNCTION
SUBSTR IN STATEMENT NUMBER xxx.
AN EXECUTION ERROR WILL RESULT.
S IEM16351
S IEM16281
THE SUBSTRING SPECIFIED BY THE
SECOND AND THIRD ARGUMENTS TO
THE FUNCTION SUBSTR IN STATEMENT NUMBER xxx DOES NOT LIE
WITHIN THE FIRST ARGUMENT.
AN
EXECUTION ERROR WILL RESULT.
THE SUBSTRING SPECIFIED BY THE
SECOND AND THIRD ARGUMENTS TO
THE PSEUDO-VARIABLE SUBSTR IN
STATEMENT NUMBER xxx DOES NOT
LIE WITHIN THE ST~ING zzzz. AN
EXECUTION ERROR WILL RESULT.
S IEM16361
THE SECOND ARGUMENT TO
THE
FUNCTION SUBSTR IN STATEMENT
NUMBER xxx IS GREATER THAN THE
LENGTH OF THE FIRST ARGUMENT.
AN EXECUTION ERROR WILL RESULT.
THE SECOND ARGUMENT TO
THE
PSEUDO-VARIABLE
SUBSTR
IN
STATEMENT NUMBER xxx IS GREATER
THAN THE LENGTH OF THE STRING
zzzz.
AN EXECUTION ERROR WILL
RESULT.
S IEM16371
THE THIRD ARGUMENT TO THE FUNCTION SUBSTR IN STATEMENT NUMBER
xxx IS GREATER THAN THE LENGTH
OF THE FIRST ARGUMENT. AN EXECUTION ERROR WILL RESULT.
S IEM16381
THE THIRD ARGUMENT
TO
THE
PSEUDO-VARIABLE
SUBSTR
IN
STATEMENT NUMBER xxx IS GREATER
THAN THE LENGTH OF THE STRING
zzzz.
AN EXECUTION ERROR WILL
RESULT.
T IEM16391
COMPILER
ERROR.
INCORRECT
INPUT TO SUBROUTINE 6 IN MODULE
IEIvlMF IN STATEMENT NUMBER xxx.
S IEM1629I
T IEM16301
COMPILER
ERROR
IN
CEIL/FLOOR/TRUNC IN-LINE FUNCTION IN STATEMENT NUMBER xxx
System Action:
terminated
Compilation is
User Response:
Save relevant
data.. Call your local IBM representative ..
T IEM1631I
COMPILER
FUNCTION
xxx
ERROR IN MOD IN-LINE
IN STATEMENT NUMBER
System Action:
terminated
System Action:
terminated
THE INVOCATION 0 F THE ROUND
FUNCTION IN STATEMENT NUMBER
xxx WILL ALWAYS GIVE A ZERO
RESULT.
Explanation:
(p - q + r)
is
zero
or
negative,
where
p = precision, q = scale factor, and r = rounding position.
230
is
Compilation is
User Response:
Save relevant
data. Call your local IBM representative.
W IEM16321
Compilation
User Response:
Save relevant
data and call your local IBM
representative.
T IEM16401
THE
PARAMETER
DESCRIPTION
RELATING TO THE PASSING OF THE
GENERIC ENTRY NAME zzzz DOES
NOT MATCH ANY OF THE FAMILY
MEMBERS.
system Action:
pilation
Terminates com-
User Response: Provide correct
parameter description
W IEM1641I
THE
PARAMETER
DESCRIPTION
RELATING TO THE PASSING OF THE
GENERIC ENTRY NAME zzzz DESCRIBES THE ENTRY NAME'S RESULT
TYPE RATHER THAN ARGUMENT TYPE.
IF POSSIBLE, GENERIC SELECTION
WILL BE MADE ON THE BASIS OF
THIS RESULT TYPE.
T IEMl6481
Explanation:
Incorrect handling
of
text by previous
phase.
System Action:
pilation
User Response: Provide fuller
parameter description
T IEM16421
THE
PARAMETER
DESCRIPTION
RELATING TO THE PASSING OF THE
GENERIC ENTRY NAME zzzz IS NOT
SUFFICIENT FOR THE PURPOSES OF
GENERIC SELECTION.
System Action:
pilation
T IEM16431
COMPILER ERROR. INCORRECT FORMATION OF ARGUMENT LIST ASSOCIATED WITH ENTRY NAME zzzz IN
STATEMENT NUMBER xxx
Explanation:
Incorrect
handling of text by previous phase
System Action:
pila tion
Terminates com-
User Response:
Save relevant
data. Call your local IBM representative.
Terminates com-
COMPILER ERROR.
INCORRECT HANDLING OF ARGUMENT LIST ASSOCIATED WITH ENTRY NAME zzzz IN
STATEMENT NUMBER xxx
User Response:
Save relevant
data. Call your local IBM representative ..
Explanation:
Incorrect handling of text by previous phase
System Action:
pilation
T IEM16441
T IEM16491
fuller
COMPILER ERROR. THE PARAMETER
DESCRIPTION
RELATING TO THE
PASSING OF THE GENERIC ENTRY
NAr~ zzzz IS INCORRECTLY FORMED
IN THE DICTIONARY.
Terminates com-
User Response:
Save relevant
data. Call your local IBM representative.
Terminates com-
User Response: Provide
parameter description
COMPILER ERROR.
FUNCTION REFERENCE MISSING FROM TEXT IN
STATEMENT NUMBER xxx
COMPILER
FAMILIES
NAME zzzz
FORMED IN
T IEM16501
System Action:
pila tion
ERROR.
THE GENERIC
ASSOCIATED WITH ENTRY
HAVE BEEN INCORRECTLY
THE DICTIONARY.
The dictionary
entry for one or more of the
generic families is not a recognizable entry type.
Terminates com-
User Response:
Save relevant
data. Call your local IBM representa tive.
E~planation:
system Action:
pilation
T IEM16511
Terminates comExplanation:
Incorrect
handling of text by previous phase
User Response:
Save relevant
data. Call your local IBM representative.
T IEM16451
COMPILER ERROR. ARGUMENT REFERENCE MISSING FROM ARGUMENT
LIST ASSOCIATED WITH ENTRY NAME
zzzz IN STATEMENT NUMBER xxx
THE
PARAMETER
DESCRIPTION
RELATING TO THE PASSING OF THE
GENERIC ENTRY NAME zzzz RESULTS
IN MORE THAN ONE POSSIBLE FAMILY MEMBER SELECTION.
System Action:
pilation
Terminates com-
User Response:
Save relevant
data. Call your local IBM representrt
if
the
statement is executed
System
result.
COMPILER ERROR IN
NUMBER xxx PHASE OE.
system Action:
terminated
error
in bad
Compilation
INVALID ITEM IN FREE
NUMBER xxx
S IEM180iI
is
AN ERROR HAS OCCURRED IN THE
CONVERSION TO FLOATING-POINT OF
THE STERLING CONSTANT WHICH HAS
DECIMAL PENCE FORM yyyy. THE
ERROR WAS DETECTED IN STATEMENT
NUMBER xxx BUT CHECK ALL SIMILAR USES OF THIS CONSTANT.
STATEMENT
S IEM1802I
System Action: Error condition
and message given at object
time
ASSIGNMENT OF AN ILLEGAL LABEL
CONSTANT IN STATEMENT NUMBER
xxx.
S IEM1803I
AN ERROR HAS OCCURRED IN THE
CONVERSION TO FIXED BINARY OF
THE STERLING CONSTANT WHICH HAS
DECIMAL PENCE FORM yyyy. THE
ERROR WAS DETECTED IN STATEMENT
NUMBER xxx BUT CHECK ALL SIMILAR USES OF THIS CONSTANT.
User Response: Change the constant and check its use in the
given statement and elsewhere.
system Action:
Accepts label
constant as if in value list
and continues compilation~
S IEM1804I
CONVERSION OF NULL VALUES IN
POINTER/OFFSET ASSIGNMENTS IS
INVALID.
NULLO
HAS
BEEN
REPLACED BY NULL, OR NULL BY
NULLO, IN STATEMENT NUMBER xxx
AN ERROR HAS OCCURRED wHEN CONVERTING THE CONSTANT yyyy TO
FIXED BINARY.
THE ERROR WAS
DETECTED IN STATEMENT NUMBER
xxx BUT CHECK ALL SIMILAR USES
OF THIS CONSTANT.
User Response: Change the constant and check its use in the
given statement and elsewhere.
Explanation:
The label constant does not appear in the
value
list
in the DECLARE
statement for the label variable.
234
Truncates
User Response: Change the constant and check its use in the
given statement and elsewhere.
Explanation:
Variable in FREE
statement is either not CONTROLLED or not at level 1
W IEM1797I
Action:
User Response: Change the constant and check its use in the
given statement and elsewhere.
STATEMENT
User Response:
Save relevant
data. Call your local IBM representative.
E IEM1796I
assignment
Explanation:
Illegal assignment or conversion in source
statement,
e.g.
label
to
arithmetic,.
Explanation:
Compiler
caused by input text
format
S IEM1795I
The
AN ERROR HAS OCCURRED WHEN CONVERTING THE CONSTANT yyyy TO
FIXED DECIMAL. THE ERROR WAS
DETECTED IN STATEMENT NUMBER
xxx BUT CHECK ALL SIMILAR USES
OF THIS CONSTANT.
system
result ..
Action:
Truncates
S IEM18i0I
User Response: Change the constant and check its use in the
given statement and elsewhere.
S IEM18051
AN ERROR HAS OCCURRED IN THE
CONVERSION TO FIXED DECIMAL OF
THE STERLING CONSTANT WHICH HAS
DECIMAL PENCE FORM yyyy.
THE
ERROR WAS DETECTED IN STATEMENT
NUMBER xxx BUT CHECK ALL SIMILAR USE OF THIS CONSTANT.
User Re~Q~: Change the constant and check its use in the
given statement and elsewhere.
S IEM181i1
User Response: Change the constant and check its use in the
given statement and elsewhere.
S IEM18061
AN ERROR HAS OCCURRED WHEN CONVERTING THE CONSTANT yyyy TO
DECIMAL NUMERIC FIELD.
THE
ERROR WAS DETECTED IN STATEMENT
NUMBER xxx BUT CHECK ALL SIMILAR USES OF THIS CONSTANT.
AN ERROR HAS OCCURRED IN THE
CONVERSION TO DECIMAL NUMERIC
FIELD OF THE STERLING CONSTANT
WHICH HAS DECIMAL PENCE FORM
yyyy. THE ERROR WAS DETECTED
IN STATEMENT NUMBER xxx BUT
CHECK ALL SIMILAR USES OF THIS
CONSTANT.
S IEM1812I
AN ERROR HAS OCCURRED WHEN CONVERTING THE CONSTANT yyyy TO
STERLING NUMERIC FIELD.
THE
ERROR WAS DETECTED IN STATEMENT
NUMBER xxx BUT CHECK ALL SIMILAR USES OF THIS CONSTANT.
S IEM1813I
AN ERROR HAS OCCURRED IN THE
CONVERSION TO STERLING NUMERIC
FIELD OF THE STERLING CONSTANT
WHICH HAS DECIMAL PENCE FORM
yyyy.
THE ERROR WAS DETECTED
IN STATEMENT NUMBER xxx BUT
CHECK ALL SIMILAR USES OF THIS
CONSTANT.
User Response: Change the constant and check its use in the
given statement and elsewhere.
AN ERROR HAS OCCURRED IN THE
CONVERSION TO CHARACTER STRING
OF THE STERLING CONSTANT WHICH
HAS DECIMAL PENCE FORM yyyy.
THE
ERROR
WAS DETECTED IN
STATEMENT NUMBER xxx BUT CHECK
ALL SIMILAR USES OF THIS CONSTANT.
User Response: Change the constant and check its use in the
given statement and elsewhere.
S IEM18141
User Response: Change the constant and check its use in the
given statement and elsewhere.
S IEM1809I
AN ERROR HAS OCCURRED WHEN CONVERTING THE CONSTANT yyyy TO
CHARACTER STRING.
THE ERROR
WAS DETECTED IN STATEMENT NUMBER xxx BUT CHECK ALL SIMILAR
USES OF THIS CONSTANT.
User Response: Change the constant and check its use in the
given statement and elsewhere.
User Esponse: Change the constant and check its use in the
given statement and elsewhere.
S IEM18081
AN ERROR HAS OCCURRED IN THE
CONVERSION TO BIT STRING OF THE
STERLING
CONSTANT WHICH HAS
DECIMAL PENCE FORM yyyy.
THE
ERROR WAS DETECTED IN STATEMENT
NUMBER xxx BUT CHECK ALL SIMILAR USES OF THIS CONSTANT.
User Response: Change the constant and check its use in the
given statement and elsewhere.
User Res~: Change the constant and check its use in the
given statement and elsewhere.
S IEM18071
AN ERROR HAS OCCURRED WHEN CONVERTING THE CONSTANT yyyy TO
BIT STRING.
THE ERROR
WAS
DETECTED IN STATEMENT NUMBER
xxx BUT CHECK ALL SIMILAR USES
OF THIS CONSTANT.
AN ERROR HAS OCCURRED IN THE
CONVERSION OF THE CONSTANT yyyy
TO PICTURED CHARACTER STRING.
THE
ERROR
WAS DETECTED IN
STATEMENT NUMBER xxx BUT CHECK
ALL SIMILAR USES OF THIS CONSTANT.
User Response: Change the constant and check its use in the
given statement and elsewhere.
S IEM18151
AN ERROR HAS OCCURRED IN THE
CONVERSION TO PICTURED CHARACTER STRING OF THE STERLING CONSTANT WHICH HAS DECIMAL PENCE
FORM yyyy •
THE
ERROR
WAS
DETECTED IN STATEMENT NUMBER
xxx BUT CHECK ALL SIMILAR USES
OF THIS CONSTANT.
Appendix G: Diagnostic Messages
235
S IEM18161
User Response: Change the constant and check its use in the
given statement and elsewhere.
S IEM18271
INVALID
ARGUMENT
TO
STATEMENT NUMBER xxx.
MENT IGNORED.
zzzz USED IN FILE OPTION IN
STATEMENT NUMBER xxx IS NOT A
FILE. OPTION HAS BEEN IGNORED.
EXECUTION ERROR WILL RESULT
T IEM18281
COMPILER ERROR. INCORRECT NUMBER OF TMPDS FOLLOWING ZERO
OPERAND IN STATEMENT NUMBER xxx
System Action:
terminated
Explanation:
Dictionary reference of file triple was not
file constant or file parameter
code.
System Action:
but continues
ment.
E IEM18171
S IEM18181
Ignores option"
to scan stateS IEM18291
KEYTO option must
character string
S IEM18191
System Action:
The number of
event names in the list is
assumed as the event count.
T IEM18301
zzzz USED IN THE IGNORE OPTION
IN STATEMENT NUMBER xxx I S NOT
A SCALAR. OPTION IGNORED.
T IEM18231
system Action:
terminated
Correct IGNORE
DETECTED
COMPILER
ERROR
PHASE NJ/NK.
Compilation
is
User Response:
Save relevant
data. Call your local IBM representative.
IN
Explanation: NJ/NK found some
unexpected input.
Register 9
in dump will indicate cause of
error.
E IEM18321
INVALID PAGE OPTION IGNORED
STATEMENT NUMBER xxx
E IEM18331
INVALID LINE OPTION IGNORED IN
STATEMENT NUMBER xxx
system Action:
pilation
IN
E IEM18341
MULTIPLE COPY OPTIONS SPECIFIED
IN STATEMENT NUMBER xxx.
THE
FIRST ONE IS USED.
Terminates com-
User Response:
Save relevant
data. Call your local IBM representative.
S IEM18241
COMPILER
ERROR.
INCORRECT
INPUT
TO PHASE NG IN WAIT
STATEMENT NUMBER xxx,.
Explanation: The compiler has
encountered incorrect input to
phase NG and cannot continue,.
System Action: Ignores option
but continues scan of statement
User Response:
variable
INVALID
SCALAR
EXPRESSION
OPTION IN WAIT STATEMENT NUMBER
xxx.
MAXIMUM
EVENT
COUNT
GIVEN.
Explanation: The optional scalar
expression in the WAIT
statement cannot be converted
to a n integer.
zzzz USED IN KEY/KEYFROM OPTION
IN STATEMENT NUMBER xxx IS NOT
A SCALAR. OPTION IGNORED.
System Action: Ignores option
but continues scan of statement
Compilation is
User Response:
Save relevant
data.. Call your local IBM representa ti ve,.
INVALID
KEYTO
OPTION
zzzz
IGNORED IN STATEMENT NUMBER xxx
Explanation:
be
scalar
variable.
DELAY
STATE-
system
Action:
The
option only is used
first
OPTIONS IN OPEN STATEMENT NUMBER xxx ARE IN CONFLICT WITH
PAGESIZE AND/OR LlNESIZE.
E IEM18351
INVALID FILE OPTION IGNORED IN
STATEMENT NUMBER xxx
E IEM18251
INVALID REPLY OPTION IGNORED IN
STATEMENT NUMBER xxx
E IEM18361
INVALID STRING OPTION IGNORED
IN STATEMENT NUMBER xxx
S IEM18261
INVALID
MESSAGE
STATEMENT NUMBER
MENT IGNORED.
S IEM18371
NO FILE OR STRING SPECIFIED IN
STATEMENT NUMBER xxx. STATEMENT IGNORED.
236
IN DISPLAY
xxx. STATE-
Explanation: No FILE or STRING
given in GET/PUT statement
E IEM18381
INVALID TITLE OPTION IGNORED IN
STATEMENT NUMBER xxx
E IEM18391
INVALID IDENT OPTION IGNORED IN
STATEMENT NUMBER xxx
E IEM18401
INVALID LINE SIZE OPTION IGNORED
IN STATEMENT NUMBER xxx
E IEM18411
INVALID PAGESIZE OPTION IGNORED
IN STATEMENT NUMBER xxx
S IEM18431
NO FILE SPECIFIED IN OPEN/CLOSE
STATEMENT NUMBER
xxx.
ANY
OPTIONS ARE IGNORED.
T IEM18441
COMPILER ERROR. INCORRECT NUMBER OF TMPDS FOLLOWING ZERO
OPERAND IN STATEMENT NUMBER xxx
system Action:
aborted
Compilation
DELETED FROM THE I/O DATA
IN STATEMENT NUMBER xxx
S IEM18621
AN EXPRESSION OR FUNCTION INVOCATION IS AN ILLEGAL DATA ITEM
AND HAS BEEN DELETED FROM THE
DATA-DIRECTED
I/O
STATEMENT
NUMBER xxx.
E IEM18701
THE FORMAT LIST IN STATEMENT
NUMBER xxx CONTAINS NO DATA
FORMAT ITEMS AND WILL BE EXECUTED ONCE IF THE STATEMENT IS
INVOKED.
system Action:
At execution
time, on finding no data format
items" control passes out of
the statement at the end of the
format list.
S IEM18111
IN STATEMENT NUMBER xxx THE
FORMAT LIST CONTAINS AN E OR F
FORMAT ITEM WITH AN ILLEGAL
SPECIFICATION. THE FORMAT ITEM
HAS BEEN DELETED.
W IEM18121
IN STATEMENT NUMBER xxx AN E
FORMAT ITEM HAS A FIELD WIDTH
WHICH WOULD NOT PERMIT PRINTING
OF A MINUS SIGN.
S IEM18131
IMPLEMENTATION RESTRICTION. IN
STATEMENT NUMBER xxx AN A, B OR
CONTROL FORMAT ITEM SPECIFIES
AN EXCESSIVE LENGTH WHICH HAS
BEEN REPLl\.CED BY THE MAXIMUM OF
32.,767.
E IEM18141
is
User Response:
Save relevant
data. Call your local IBM representative .•
LIST
E IEM18451
MULTIPLE
DATA SPECIFICl\.TIONS
IGNORED IN STATEMENT NUMBER xxx
E IEM18461
INVl\.LID SKIP OPTION IGNORED
STATEMENT NUMBER xxx
S IEM18471
NO DATA SPECIFICATIONS GIVEN
FOR GET STATEMENT NUMBER xxx.
STATEMENT DELETED.
S IEM18481
NO DATA SPECIFICATIONS OR PRINT
OPTIONS GIVEN FOR PUT STATEMENT
NUMBER xxx,. STl\.TEMENT DELETED.
IN
STATEMENT NUMBER xxx AN
INPUT STATEMENT CONTAINS A FORMAT ITEM WHICH MAY BE USED ONLY
IN OUTPUT STATEMENTS.
W IEM18491
THE USE OF THE BUILT-IN FUNCTION NULL IN STATEMENT NUMBER
xxx IS INVALID; NULLO HAS BEEN
SUBSTITUTED. CHECK ALL SIMILAR
USES OF NULL.
Explanation: PAGE, SKIP" LINE,
COLUMN, and format items A and
B with no width specification,
may be used only for output.
System
NULLO
Action:
IN
system Action:
item deleted
Substitute
W IEM18751
W IEM18501
THE USE OF THE BUILT-IN FUNCTION NULLO IN STATEMENT NUMBER
xxx IS INVALID; NULL HAS BEEN
SUBSTITUTED. CHECK ALL SIMILl\.R
USES OF NULLO.
System Action:
S IEM18601
S IEM18611
Substitute NULL
Invalid
format
IN STATEMENT NUMBER xxx AN E
FORMAT
ITEM HAS AN ILLEGAL
SPECIFICATION IF USED FOR AN
OUTPUT DATA ITEM.
Explanation: The specification
violates the restriction that
the
field width w must be
greater than s+n+2.
THE ILLEGAL ITEM zzzz HAS BEEN
DELETED FROM THE I/O DATA LIST
IN STATEMENT NUMBER xxx
system Action: There will
an error at execution time.
AN ILLEGAL TEMPORARY RESULT OR
SUBSCRIPTED ELEMENT HAS' BEEN
User Response:
fication
be
Correct speci-
l\.ppendix G: Diagnostic Messages
231
T IEM2304I
COMPILER
ERROR.
DICTIONARY
ENTRY zzzz UNRECOGNIZED IN STATIC CHAIN.
System Action:
terminated
Explanation: Due to a compiler
error. a dictionary entry with
an unrecognized code byte has
been found in the static chain.
User Response:
Save relevant
data. Call your local IBM representative.
T IEM2702I
system Action:
terminated
T IEM2305I
Compilation
is
COMPILER ERROR.
DOPE VECTOR
REQUESTED BY NON-STRING" NONSTRUCTURE MEMBER zzzz
User Response:
Save relevant
data. Call your local IBM representative .•
T IEM2703I
T IEM2704I
Compilation
is
COMPILER
ERROR IN INPUT TO
PHASE IEMRF, S'IATEMENT NUMBER
xxx.
'USNG' ITEM DOES NOT HAVE
ASSIGNED REGISTER.
System Action:
terminated
Explanation:
This message is
generated
when a number of
automatic variables are mutually dependent. It is not then
possible to allocate storage in
order of dependency.
Compilation is
User Response:
Save relevant
data. Call your local IBM representative.
S IEM2705I
Compilation is
User Response: Rewrite statement. eliminating mutual dependency,.
COMPILER ERROR IN INPUT
TO
PHASE IEMRF, STATEMENT NUMBER
xxx.
DROPPED
REGISTER NOT
ACTIVE.
Explanation:
Register number
in field in DROP item is not in
register table nor in storage.
COMPILER ERROR IN INPUT
TO
PHASE IEMRF, STATEMENT NUMBER
xxx. SPECIAL ASSIGNED REGISTER
IN FORMAT/DATA LIST CODE CANNOT
BE FOUND.
System Action: continues compilation. ignoring DROP. Execution is inhibited.
system Action:
termi nat.ed
User Response:
Save relevant
data,. Call your local IBM representative.
Compilation
is
User Response:
Save relevant
data. Call your local IBM representative.
238
is
User Response:
Save relevant
data. Call your local IBM representative ..
THE AUTOMATIC VARIABLES IN THE
BLOCK HEADED BY STATEMENT NUMBER xxx ARE MUTUALLY DEPENDENT.
STORAGE CANNOT BE ALLOCATED.
system Action:
terminated
Compilation
COMPILER
ERROR IN INPUT TO
PHASE IEMRF, STATEMENT NUMBER
xxx.
LINK REGISTER IN BALR IS
NOT ASSIGNED.
System Action:
terminated
Compilation is
User Response:
Save relevant
data. Call your local IBM representative.
T IEM2701I
COMPILER
ERROR IN INPUT TO
PHASE IEMRF, STATEMENT NUMBER
xxx.
BCT WITHOUT DICTIONARY
REFERENCE AS DESTINATION.
System Action:
terminated
System Action:
terminated
T IEM2700I
is
User Response:
Save relevant
data. Call your local IBM representative ..
Explanation: Due to a compiler
error. the allocation of a dope
vector has been requested for
an item which should
never
require one.
T IEM2352I
Compilation
COMPILER ERROR.
PHASE
STATEMENT NUMBER xxx.
GREATER THAN 32K.
IEMRF,
PSTOR
S IEM2706I
COMPILER ERROR IN INPUT
TO
PHASE IEMRF, STATEMENT NUMBER
xxx.
NOT ALL REGISTERS IN
'DRPL' ITEM CAN BE FOUND.
System Action:
Ignores
item and continues
DRPL
PHASE IEMRF, STATEMENT NUMBER
xxx.
MORE THAN ONE REGISTER
PAIR REQUIRED IN AN INSTRUCTION.
User Response:
Save relevant
data. Call your local IBM representative.
S IEM27071
COMPILER
ERROR IN INPUT TO
PHASE IEMRF. STATEMENT NUMBER
xxx,.
Nor ALL SYMBOLIC REGISTERS DROPPED AT END OF PROCEDURE OR BEGIN BLOCK.
Explanation: One or more symbolic registers have been used
in
the
PROCEDURE or BEGIN
block,
but no corresponding
DROP has occurred.
System Action:
terminated
User Response:
Save relevant
data,. Call your local IBM representa ti ve,.
S IEM27111
System
Action:
Inserts in
listing at end of block:
the
register number. the
offset
from register 9 at which the
register is stored~ and the
words • ERROR STOP'.
COMPILER
ERROR IN INPUT TO
PHASE IEMRF. STATEMENT NUMBER
xxx. ASSIGNED REGISTER USED IN
SOURCE FIELD IS NOT INITIALIZED.
System
Action:
Drops
the
assigned register and continues
compilation
User Response:
Save relevant
data. Call your local IBM representati ve,.
S IEM27121
Explanation: The assigned register should have a previous
value (e,.g.
X in AR X" Y or L
Y, 10 (X) et c. ) " but none can be
found.
S IEM2816I
is
ILLEGAL ENVIRONMENT OPTION
STATEMENT NUMBER xxx
IN
System Action:
Remainder of
environment attributes ignored.
S IEM28171
COMPILER ERROR. INVALID ATTRIBUTE CODE IN STATEMENT NUMBER
xxx
Explanation:
Register X in an
instruction such as AR X, Y"
or
L Y,10eX). has not been set up
previously.
Explanation: An invalid attribute marker has been found in
the dictionary entry corresponding to the file attributes
in the statement specified
System Action:
Inserts register 12 and continues compilation.
system
Action:
rest of the entry
S IEM2818I
COMPILER
ERROR
IN
INPUT
TO
Ignores
the
User Response:
Save relevant
data. Call your local IBM representative.
User Response:
Save relevant
data. Call your local IBM representative ..
T IEM2710I
Compilation
User Response:
Save relevant
data,. Call your local IBM representative,.
User Response:
Save relevant
data,. Call your local IBM representative.
COMPILER
ERROR IN INPUT TO
PHASE IEMRF, STATEMENT NUMBER
xxx.
SYMBOLIC REGISTER SHOULD
HAVE PREVIOUS VALUE"
BUT HAS
NOT.
COMPILER ERROR IN INPUT
TO
PHASE IEMRF. STATEMENT NUMBER
xxx. IPRM/IPRM' OR EPRM/EPRM'
PAIRS ARE NOT MATCHED IN PREVIOUS STATEMENT.
System Action:
continued
System Action: Register 13 is
used instead of the correct
number. and compilation is continued ..
S IEM27091
COMPILER ERROR IN INPUT
TO
PHASE IEMRF. STATEMENT NUMBER
xxx.
ASSIGNED
REGISTER IS
STILL IN USE AT THE START OF A
PROCEDURE.
Explanation: Assigned register
status should be zero at the
start of each procedure.
User Response:
Save relevant
data. Call your local IBM representative.
S IEM27081
Compilation is
CONFLICTING ATTRIBUTE IN STATEMENT NUMBER xxx IGNORED.
Appendix G: Diagnostic Messages
239
Explanation:
An
attribute
other than 'ENVIRONMENT' clashes
with previously declared
attributes
in the specified
statement
system Action:
attribute.
S IEM2819I
Ignores
System
S IEM2825I
this
system Action:
Remainder of
ENVIRONMENT attribute ignored
ERRONEOUS USE OF COMMA IN ENVIRONMENT OPTION IN STATEMENT
NUMBER xxx
User Response:
ONMENT option
S IEM2826I
System Action:
Remainder of
ENVIRONMENT attribute ignored
System Action: No compile-time
action, but
execution
will
fail.
User Response: Provide ENVIRONMENT attribute
ILLEGAL CHARACTER IN KEYWORD IN
ENVIRONMENT OPTION IN STATEMENT
NUMBER xxx
system Action:
Remainder of
ENVIRONMENT attribute ignored
W IEM2827I
A D COMPILER OPTION HAS BEEN
DECLARED IN THE
ENVIRONMENT
LIST IN STATEMENT NUMBER xxx.
IT HAS BEEN IGNORED.
W IEM2828I
ENVIRONMENT OPTIONS CLTASA AND
CLT360 HAVE BOTH BEEN DECLARED
IN STATEMENT NUMBER xxx.
THE
SECOND ONE LISTED
WILL
BE
IGNORED.
W IEM2829I
IN STATEMENT NUMBER xxx THE
PARAMETER
SPECIFIED
IN THE
INDEXAREA
OPTION IS GREATER
THAN
32767
AND
HAS
BEEN
IGNORED.
FIELD TOO LARGE IN ENVIRONMENT
OPTION IN STATEMENT NUMBER xxx
Explanation: Field in item in
ENVIRONMENT attribute too large
System Action:
Remainder of
ENVIRONMENT attribute ignored
S IEM2823I
ERROR IN FORMAT OF ENVIRONMENT
ATTRIBUTE IN STATEMENT NUMBER
xxx
Explanation: If the parameter
is not specified or is outside
the permitted range, data management uses as much main storage as is required for the
master index.
Explanation: Format of item in
ENVIRONMENT attribute incorrect
System Action:
Remainder of
ENVIRONMENT attribute ignored
S IEM2824I
CONFLI'CT BE'IWEEN
ENVIRONMENT
ATTRIBUTE AND OTHER ATTRIBUTES
IN STATEMENT NUMBER xxx
Explanation: An option in the
ENVI RONMENT attribute clashes
with either another ENVIRONMENT
with a declared
option
or
attribute.
240
ENVIR-
comma
Explanation:
Invalid keyword
in ENVIRONMENT attribute
S IEM2822I
Correct
IMPLEMENTATION
RESTRICTION.
DIRECT FILE zzzz DECLARED IN
STATEMENT NUMBER xxx MUST HAVE
AN ORGANIZATION SUB FIELD IN THE
ENVIRONMENT ATTRIBUTE.
Explanation:
Misplaced
in ENVIRONMENT attribute
S IEM2821I
CONFLICTING OPTIONS IN ENVIRONMENT ATTRIBUTE IN
STATEMENT
NUMBER xxx.
REST OF ENVIRONMENT IGNORED.
System Action: DECLARE control
block
is
constructed
from
attributes which have already
been processed.
The rest are
ignored.
ERRONEOUS USE OF PARENTHESIS IN
ENVIRONMENT OPTION IN STATEMENT
NUMBER xxx
Explanation:
Misplaced parenthesis in ENVIRONMENT attribute
S IEM2820I
Action:
Remainder of
attribute ignored
ENVIRONMEN~
S IEM2833I
COMPILER ERROR. OPERAND OF
OR SL NOT LABEL.
CL
Explanation:
The
dictionary
entry referenced after a compiler label or statement label
marker in the text is not in
fact a label
System Action: The label definition is ignored.
User Response:
Save relevant
data. Call your local IBM representative,.
T IEM2834I
COMPILER
ERROR.
PSEUDO-CODE OPERATION.
Explanation: Use of a pseudoregister accompanied by literal
offset has been called for by
compiled code. This cannot be
assembled owing to the manner
in
which
pseudo-register
relocation is performed.
INVALID
Explanation:
The input text
contains a marker which is not
valid
System Action:
terminated
Compilation is
User Response:
Save relevant
data. Call your local IBM representative,.
S IEM2835I
System
Action:
The
offset is ignored.
COMPILER ERROR.
LABEL CHAIN ERROR.
User Response:
Save relevant
data. Call your local IBM representative.
S IEM2853I
SUBSCRIPTED
System Action:
~n
offset of
zero is assembled into the output text.
User Response:
Save relevant
data. Call your local IBM representa ti ve,.
system Action: The label definition is ignored
T IEM2836I
S IEM2854I
Explanation:
Not
enough
scratch core is available for
the generated
label
number
table created by this phase.
The condition arises when a
large number of such labels
have been used, and this in
turn is related to the size of
the program.
The compilation
User Response:
Save relevant
data. Call your local IBM representa ti ve,.
S IEM2855I
An offset of
zero is assembled into the output text.
Syste~ction:
Compilation is
User Response:
Save relevant
data. Call your local IBM representative.
User Response:
Save relevant
data. Call your local IBM representative.
S IEM2865I
S IEM2852I
COMPILER
SET
IN
ERENCE.
ERROR. NON-ZERO OFFPSEUDO-REGISTER REF-
COMPILER ERROR. REQUESTED OFFSET NOT ASSIGNED.
Explanation: Although implied
by a dictionary reference in
the text* storage has not been
allocated
COMPILER
ERROR.
MULTIPLY
DEFINED LABEL OR INVALID LABEL
NUMBER.
system Action:
terminated
DIC-
System Action:
An offset of
zero is assembled into the output text ..
User Response: Break down the
program into smaller modules
T IEM2837I
COMPILER ERROR.
INVALID
TIONARY REFERENCE OFFSET.
ExPlanation: A dictionary reference in the input text corresponds to a valid dictionary
entry, but the dictionary reference offset is not valid.
IMPLEMENTATION
RESTRICTION.
SOURCE PROGRAM TOO LARGE.
System Action:
is terminated
COMPILER ERROR.
REFERENCE TO
INVALID DICTIONARY ENTRY.
Explanation: A dictionary reference in the input text does
not correspond to a legal dictionary entry.
Explanation:
Subscripted
labels in the source program
result
in
the creation of
chains of dictionary entries.
An error in the chaining causes
this message to appear.
User Response:
Save relevant
data. Call your local IBM representative.
literal
IMPLEMENTATION
RESTRICTION.
SOURCE PROGRAM CONTAINS
TOO
MANY BLOCKS AND/OR CONTROLLED
VARIABLES.
Appendix G: Diagnostic Messages
241
Explanation:
The
compiler
allocates
a
pseudo-register
entry for each block and CONTROLLED variable in the source
program. The maximum number of
such entries is 1,024 •
and the two are then joined by
the Linkage Editor, two External Symbol Dictionary entries
may have the same name.
System Action:
System Action:
No
pseudoregisters are allocated
for
items after the limit has been
reached.
T IEM2881I
User Response:
Reduce number
of
blocks,
or
CONTROLLED
variables, in program to less
than 1,025.
W IEM2866I
System Action:
terminated
S IEM2882I
Explanation:
tifiers are
characters
External
restricted
System Action:
An
zero
is assembled
text.
W IEM2868I
Response:
Shorten
S IEM2883I
idento 7
COMPILER ERROR IN
STATEMENT
NUMBER xxx.
INVALID REQUEST
FOR RELOCATABLE TEXT.
Explanation: The operand of a
branch instruction has
been
found to require relocation.
System Action:
An
zero
is assembled
text.
offset of
into the
the
THIS PL/I COMPILATION HAS GENERATED EXTERNAL NAMES IN WHICH
THE SECOND LEADING CHARACTER OF
THE EXTERNAL PROCEDURE NAME HAS
BEEN
REPLACED BY A SPECIAL
CHARACTER.
Explanation: The external procedure with its second character changed is being used as a
base for generating names for
External
Symbol
Dictionary
entries.
If the same thing
happens in another compilation,
242
offset of
into the
User Response:
Save relevant
data. Call your local IBM representative.
System Action:
Name of ESD
entry truncated by taking first
4 and last 3 characters;
phase then carries on normally.
User
name.
COMPILER ERROR IN
STATEMENT
NUMBER xxx. OPERAND OF DC CODE
INVALID.
Explanation:
The operand of a
DCA4 pseudo-code item is not
valid
the operand
should
always be relocatable.
None
IMPLEMENTATION
RESTRICTION.
EXTERNAL NAME zzzz HAS BEEN
TRUNCATED TO 7 CHARACTERS.
Compilation is
User Response:
Save relevant
data.
Call your local
IBM
representative.
Explanation: The external procedure
name with its first
character changed is being used
as a base for generating names
for External Symbol Dictionary
entries.
If the same thing
happens in another compilation,
and the two are then joined by
the Linkage Editor, two External Symbol Dictionary entries
may have the same name.
E IEM2867I
COMPILER
ERROR IN STATEMENT
NUMBER xxx.
INVALID PSEUDOCODE OPERATION.
Explanation:
The input text
contains a marker which is not
valid.
THIS PL/I COMPILATION HAS GENERATED EXTERNAL NAMES IN WHICH
THE FIRST LEADING CHARACTER OF
THE EXTERNAL PROCEDURE NAME HAS
BEEN
REPLACED BY A SPECIAL
CHARACTER.
system Action:
None
User Response:
Save relevant
data.
Call your local IBM representative .•
S IEM2884I
COMPILER ERROR IN
STATEMENT
NUMBER xxx~ NON-ZERO OFFSET IN
PSEUDO-REGISTER REFERENCE.
Explanation:
Use of a pseudoregister
accompanied
by
a
literal offset has been called
for by compiled code.
This
cannot be assembled owing to
the manner in which pseudoregister
relocation
is
performed.
System Action:
The
offset is ignored
literal
User Response:
Save relevant
data. Call your local IBM representative.
S IEM2885I
User Response:
Save relevant
data. Call your local IBM representative.
S IEM2897I
COMPILER
ERROR IN STATEMENT
NUMBER
xxx.
REFERENCE
TO
INVALID DICTIONARY ENTRY.
Explanation: The fully qualified name of the variable indicated will not fit into its
Symbol Table entry
Explanation: A dictionary reference in the input text does
not correspond to a legal dictionary entry
System Action:
Leaves Symbol
Table entry incomplete and carries on with the initialization
of the Static Internal control
section .•
System Action:
An offset of
zero is assembled into the output text
User Response:
Save relevant
data. Call your local IBM representative ..
Us er
Respons e:
qualified name
S IEM2898I
S IEM2886I
COMPILER
ERROR IN STATEMENT
NUMBER xxx. INVALID DICTIONARY
REFERENCE OFFSET.
COMPILER ERROR IN
STATEMENT
NUMBER xxx.
REQUESTED OFFSET
NOT ASSIGNED.
W IEM2899I
T IEM2888I
Correct
GET
INITIALIZATION
SPECIFIED FOR
TOO
FEW ELEMENTS IN STATIC
ARRAY zzzz
System Action:
Initialization
terminated when end of initial
string is found.
W IEM2900I
Explanation: Although implied
by a dictionary reference in
the input text, storage has not
been allocated.
system Action:
An offset of
zero is assembled into the output text.
the
DATA-DIRECTED GET STATEMENT IN
PROGRAM WITH NO LIST BUT PROGRAM HAS NO DATA VARIABLES.
User
Response:
statement
User Response:
Save relevant
data. Call your local IBM representative.
S IEM2887I
Shorten
System
Action:
Zeros
are
inserted in the argument list
for the call to the Library
routine to 'GET DATA', and compilation continues
Explanation: A dictionary reference in the text corresponds
to a valid dictionary entry,
but the dictionary reference
offset is not valid.
system Action:
An offset of
zero is assembled into the output text
IMPLEMENTATION
RESTRICTION.
QUALIFIED NAME zzzz LONGER THAN
256 CHARACTERS.
INITIALIZATION
SPECIFIED FOR
TOO MANY ELEMENTS IN STATIC
ARRAY zzzz
system Action: Initialization
is terminated when every element has been initialized.
T IEM2913I
COMPILER
ERRO~.
PSEUDO-CODE OPERATION.
INVALID
User Response:
Save relevant
data. Call your local IBM representative.
Explanation:
The input text
contains a marker which is not
valid
COMPILER
ERROR IN STATEMENT
NUMBER xxx. UNDEFINED LABEL.
System Action:
terminated
Explanation:
No offset has
been assigned to a label generated by the compiler,.
User Response:
Save relevant
data. Call your local IBM representative.
system Action:
terminated
compilation
is
IEM3088I
-32131
Compilation is
THE CONFLICTING ATTRIBUTE aaaa
HAS BEEN IGNORED IN THE DECLAR-
Appendix G: Diagnostic Messages
243
ATION OF IDENTIFIER
STATEMENT NUMBER xxx
yyyy
IN
Explanation: Referenced
is not in core
system Action:
terminated
Explanation:
The
attribute
given in the message conflicts
with another attribute declared
for the same identifier, or is
invalid for that identifier.
The attribute
system Action:
message
is
given
in
the
ignored ..
E IEM35841
T IEM38411
T IEM38441
System Action:
terminated
Compilation
T IEM38451
T IEM38461
is
COMPILER ERROR.
SCRATCH CORE IS
4K.
REQUEST FOR
GREATER THAN
EXQlanation:
Request
for
scratch core exceeds 4096 bytes
System Action:
terminated
Compilation is
User ResQonse:
Save relevant
data. Call your local IBM representative.
T IEM38481
244
Compilation
User ResQQnse: Subdivide program and recompile
Compilation is
USED
IMPLEMENTATION
RESTRICTION.
SOURCE PROGRAM TOO LARGE.
ALL
TEXT BLOCKS FULL.
System Action:
terminated
Explanation:
All blocks in
core have become busy. Compiler cannot continue since an
external block cannot be read
in.
COMPILER ERROR.
ZDABRF
WITH BLOCK NOT IN CORE.
is
Explanation:
There is no more
space for text in this environment
T IEM38471
T IEM38431
Compilation
User Response:
Save relevant
data. Call your local IBM representative.
is
User Response:
Save relevant
data. Call your local IBM representative ..
is
COMPILER
ERROR.
REFERENCED
TEXT BLOCK NOT IN CORE.
§ystem Action:
terminated
COMPILER
ERROR.
ALL
TEXT
BLOCKS IN CORE ARE BUSY. REFERENCED BLOCK CANNOT BE BROUGHT
INTO CORE.
system Action:
terminated
Compilation
User Response:
Save relevant
data. Call your local IBM representa ti ve,.
User
Response:
Check
the
nirectory and re-attempt compilation.
If error
persists,
have
the
computing
system
checked.
T IEM38421
COMPILER
ERROR.
DICTIONARY
ENTRY IS TOO LONG FOR THIS
ENVIRONMENT.
System Action:
terminated
I/O LRROR ON SEARCHING DIRECTORY.
Explanation:
This message is
written directly on SYSPRINT.
A permanent 1/0
error
was
detected when an attempt was
made to search the directory of
the library containing the compiler.
Compilation is
User Response:
Save relevant
data. Call your local IBM representati ve,.
AN UNBALANCED NUMBER OF PARENTHESES HAS BEEN DETECTED WITHIN
A STATEMENT AT OR NEAR STATEMENT NUMBER xxx
Explanation:
An occurrence of
a comma immediately followed by
a period at or near the given
statement has been taken as a
statement
delimiter.
The
statement contains an
unbalanced number of parentheses.
block
COMPILER ERROR. AN ATTEMPT WAS
MADE TO RELEASE
UNALLOCATED
CORE.
EXQlanation:
Attempt
to
release
unallocated
scratch
core
System Action:
terminated
Compilation is
Explanation: This message is
written directly on SYSPRINT.
A
compiler
error has been
discovered during the printing
of compile-time diagnostic messages (if phase quoted in message
is BM) or of sourceprogram diagnostic messages (if
phase is XA).
User Response:
Save relevant
data. Call your local IBM representative.
T IEM3849I
COMPILER ERROR.
PHASE
RELEASE LIST IS NOT IN
DIRECTORY.
System Action:
terminated
T IEM3850I
yy IN
PHASE
Compilation is
User Response:
Save relevant
data. Call your local IBM representative.
system Action: Compilation is
terminated. Note that only the
diagnostic message output is
incomplete. All other output
files
have
been
generated
satisfactorily.
COMPILER ERROR.
PHASE
LOAD
LIST IS NOT IN
DIRECTORY.
User Response:
Save relevant
data. Call your local IBM representative.
system Action:
terminated
yy IN
PHASE
Compilation
is
T IEM3856I
User Response:
Save relevant
data. Call your local IBM representative.
T IEM3851I
COMPILER ERROR. PHASE
MARKED. IT IS LOADED.
Explanation:
is loaded
yy
Explanation: A program check
has occurred during compilation. This is due to a compiler failure which may have been
exposed by an error in the
source code.
NOT
An unmarked phase
System Action:
terminated
System Action:
terminated
Compilation is
resentative~
COMPILER
ERROR.
REFERENCED
BLOCK IS NOT IN USE. COMPILER
CANNOT CONTINUE.
system Action:
terminated
Compilation
is
T IEM3857I
User Response:
Save relevant
data. Call your local IBM representative.
T IEM3853I
T IEM3858I
T IEM3855I
ERROR IN PHASE yy.
Compilation
is
User Response:
Save relevant
data. Call your local IBM representative.
is
User Response: subdivide into
more
than
one program and
recompile
COMPILER ERROR.
ATTEMPT
TO
PASS CONTROL TO AN
UNNAMED
PHASE.
AN UNMARKED PHASE HAS
BEEN ENCOUNTERED.
system Action:
terminated
Explanation:
This message is
written directly on SYSPRINT.
Compilation
is
Explanation: An unmarked phase
has been encountered. Compiler
cannot continue
IMPLEMENTATION
RESTRICTION.
SOURCE PROGRAM TOO LARGE. DICTIONARY IS FULL.
System Action:
terminated
Compilation
User Response: Check
source
code carefully. If an error is
found, correcting it may enable
compilation to be
completed
successfully.
Whether or not
an error is found, please save
relevant data and contact your
your local IBM representative.
User Response:
Save relevant
data. Call your local IBM repT IEM3852I
COMPILER ERROR. PROGRAM CHECK
TYPE nnnn HAS OCCURRED IN PHASE
yy AT OR NEAR STATEMENT NUMBER
xxx
COMPILER ERROR.
UNWANTED PHASE
DIRECTORY.
REQUESTED OR
NOT IN PHASE
Explanation: Request to mark a
phase which is not in phase
Appendix G: Diagnostic Messages
245
directory.
continue.
Compiler
system Action:
terminated
cannot
line message. It is written to
operator.
There is an I/O
error
on
SYSPRINT.
The
compiler cannot continue.
Compilation is
System Action:
terminated
User Response:
Save relevant
data. Call your local IBM representative.
T IEM3859I
User Response: Check DD card
and recompile.
If I/O error
persists. have computing system
checked.
INSUFFICIENT CORE IS AVAILABLE
TO CONTINUE THIS COMPILATION.
Explanation:
An attempt is
being made to expand the number
of text blocks in core.
The
GETMAIN routine has failed to
get the core. This will only
occur where less than 45,056
bytes are available to the compiler~ or when the SIZE
option
has been given too large a
value.
System Action:
terminated
Compilation
T IEM3863I
I/O
ERROR ON SYSIN.
AS INPUT.
T IEM3864I
System Action:
terminated
RECORD
T IEM3865I
system Action:
termina ted
User Response:
If SYSIN is a
card reader, check that every
column of the indicated card
contains a valid code. If the
I/O error persists, have the
computing system checked.
T IEM3862I
is
I/O ERROR ON SYSUT3
Explanation: This message is
written directly on SYSPRINT.
There
is
an I/O error on
SYSUT3.
The compiler cannot
continue.
System ~~~ion:
terminated
Compilation is
I/O ERROR ON SYSPRINT
Explanation:
246
Compilation
User Response:
Save relevant
data. Call your local IBM representative.
T IEM3872I
User Response:
Check DD card
and recompile.
If I/O error
persists, have computing system
checked.
ERROR IN COMPILER ABORT
Explanation: This message is
written directly on SYSPRINT.
The compiler has tried twice to
abort and cannot do so. Compilation will therefore terminate
without the production of any
further diagnostic messages.
System Action: The error message number is printed in the
source
listing
before
the
record in error. The record is
accepted as input.
I/O ERROR ON SYSLIN. GENERATION OF LOAD FILE IS TERMINATED.
Compilation is
User Response: Check DD card
and recompile.
If I/O error
persists_ have computing system
checked,.
~CCEPTED
T IEM3861I
I/O ERROR ON SYSUTl
Explanation: This message is
written directly on SYSPRINT.
There
is
an I/O error on
SYSUT1.
The compiler cannot
continue ..
is
Explanation:
The error may be
a machine error, or"
if SYSIN
is a card reader, there may be
a hole pattern which does not
represent a valid System/360
character (validity check).
I/O ERROR ON SYSPUNCH. GENERATION OF OBJECT DECK IS TERMINATED.
User Response: Check DD card
and recompile.
If I/O error
persists. have computing system
checked.
User Response: Check the SIZE
option
and
check that the
required core is available in
the system on which the compilation is being run
E IEM3860I
Compilation is
This
is
an on-
User Response: Check DD card
and recompile.
If I/O error
Unable to open SYSUT3.
compiler cannot continue.
persists, have computing system
checked.
E IEM38731
I/O ERROR ON SYSUT3.
ACCEPTED AS INPUT.
system
Action:
continues
RECORD
System Action:
terminated
S IEM3888I
System Action:
The DECK and
MACDCK optIons are deleted
Compilation is
User Response: Check SYSIN
card and recompile
UNABLE TO OPEN SYSLIN.
FILE NOT GENERATED.
User
Response:
Correct the
blocksize definition and recompile
DD
LOAD
S IEM3889I
user~2nse:
Check SYSLIN DD
card and recompile.
If error
persists, have computing system
checked.
T IEM3876I
Explanation:
This is an online message. It is written to
operator.
Unable
to
open
SYSPRINT. The compiler cannot
continue
u
Explanation:
No RECFM definition has been found. in the DeB
parameter of the SYSIN DD card
or the data-set label.
SYSPUNCH
system
Action:
Compilation
proceeds
assuming
U
type
records.
U format will
be
specified in the data-set label
when SYSIN is closed.
UNABLE TO OPEN SYSUT1. COMPILATION CANNOT CONTINUE.
Compilation
is
User Response: Check SYSUTl DD
card and recompile
T IEM3880I
NO RECFM GIVEN FOR SYSIN.
TYPE RECORDS ARE ASSUMED
SYSPRINT
UNABLE
TO
OPEN
SYSPUNCH.
OBJECT DECK NOT GENERATED.
system Action:
terminated
The LOAD option
User
Response:
Correct the
blocksize definition and recompile
W IEM3890I
User Response: Check
DD card and recompile
T IEM3878I
system Af1ion:
is deleted
Compilation is
User Response: Check
DD card and recompile
T IEM3877I
SYSIIN BLOCKSIZE NOT A MULTIPLE
OF 80.
THE LOAD OPTION HAS
BEEN DELETED.
Explanation:
On opening SYSLIN# the blocksize definition,
either on the DD card or in the
data-set label, was not a multiple of 80.
UNABLE TO OPEN SYSPRINT
system Action:
terminated
SYSPUNCH BLOCKSIZE NOT A MULTIPLE OF 80. THE DECK AND MACDCK
OPTIONS HAVE BEEN DELETED.
Explanation:
On opening SYSPUNCH. the blocksize definition. either on the DD card or
in the data-set label, was not
a multiple of 80.
Explanation:
This message is
written directly on SYSPRINT.
Unable to open SYSIN. The compiler cannot continue.
T IEM3875I
is
User Response: Check SYSUT3 DD
card and recompile
UNABLE TO OPEN SYSIN
System Action:
terminated
Compilation
Compilation
User Response:
Check DD card
and recompile.
If I/O error
persists, have computing system
checked.
T IEM3874I
The
UNABLE TO OPEN SYSUT3
Explanation:
This message is
written directly on SYSPRINT.
User Response:
Check
RECFM
definition on SYSIN DD card and
rer \,,'11 if necessary.
T IEM3891I
SYSIN BLOCKSIZE IS TOO LARGE
Explanation:
On opening SYSIN
for unblocked records, a blocksize of greater than 100 has
been specified either in the
Appendix G: Diagnostic Messages
247
DCB parameter of the SYSIN DD
card or in the data-set label.
in the data-set label, was not
of the form 4+N*125.
system Action:
terminated
System Action:
terminated
Compilation
is
Change
the
User Response:
invalid blocksize
definition
and recompile
T IEM3893I
SYSIN BLOCKSIZE NOT A MULTIPLE
OF RECORD LENGTH.
T IEM3897I
T IEM3894I
SYSIN BLOCKSIZE
RECORD LENGTH.
NOT
EQUAL
System Action:
terreinated
User
Response:
Correct the
nefinition of SYSIN and recompile
W IEM3898I
Compilation
~
IEM3899I
is
Explanation:
On opening SYSIN
for F format records, a record
length definition, either on
the DD card or in the data-set
label, was found to be greater
than 100.
Compilation
User Response:
Correct
record-length definition
recompile
T IEM3896I
248
is
SPILL
file
A BLOCK FOR OVERFLOW DICTIONARY
ENTRY OFFSETS WAS CREATED DURING COMPILER PHASE YY
system Action:
The block is
created to hold the entry offsets overflowing from any entry
offset tables during this compilation.
E IEM3900I
ERROR IN PROCESS STATEMENT.
Explanation:
This message is
written directly on SYSPRINT.
The syntax of
the
PROCESS
statement is incorrect.
NOT OF
system Action:
An attempt is
made to interpret the statement
correctly.
Actual results will
depend on the nature of the
syntax error.
Explanation: On opening SYSPRINT, the blocksize definition, either on the DD card or
User Response: Check that the
options required have been correctly applied.
If not, and
recompilation
is
necessary,
SYSPRINT BLOCKSIZE
FORM 4+N*125
IS
the
and
Action:
Explanation:
This
message
occurs only in compilations run
with the extended dictionary
option.
An entry offset table
in a dictionary block became
full before the entries filled
the block.
SYSIN RECORD LENGTH TOO LARGE
system Action:
terminated.
COMPILER
CORE
REQUIREMENT
EXCEEDED SIZE GIVEN. AUXILIARY
STORAGE USED.
§ystem
opened
User Response:
Change
the
incorrect definition and recompile
T IEM3895I
Compilation is
TO
Explanation:
On opening SYSIN
for F format records, the block
size and record-length definitions, either on the DD card or
in the data-set label, were
found to be unequal.
system Action:
terminated.
SYSIN DEFINITION IS INVALID
Explanation: On opening SYSIN,
the record-format definition,
either on the DD card or in the
data-set label, was varying.
This is invalid.
Compilation is
User
Response:
Correct the
blocksize definition and recompile
is
User Response:
Correct
the
blocksize definition and recompile
Explanation: On opening SYSIN
for FB format records, it has
been noted that the blocksize
definition, either on the DD
card or in the data set label,
is not an exact multiple of the
record length.
System Action:
terminated.
Compilation
correct the syntax of the PROCESS statement.
E IEM3901I
E IEM3905I
Explanation:
This message is
written directly on SYSPRINT.
The compiler was processing the
option list passed to it as an
invocation parameter, when it
found an option keyword that
had been deleted at system generation.
ERROR IN PROCESS
STATEMENT.
DEFAULT OPTIONS ASSUMED.
Explanation:
This message is
written directly on SYSPRINT.
Invalid syntax in the PROCESS
statement
has
rendered the
options unrecognizable.
system Action:
tion defaults
all options.
System
Action:
The keyword
passed at invocation time is
ignored. The default interpretation for the option, as set
at system generation, is used.
The installaare assumed for
User Response:
If the use of
installation default options is
unsatisfactory,
correct
the
syntax of the PROCESS statement
and recompile.
E IEM3902I
OBJNM FIELD TOO LARGE.
FIRST
EIGHT CHARACTERS OF NAME HAVE
BEEN USED.
User Response:
None, unless it
is required to reinstate the
deleted keyword, in which case
it is necessary to generate the
required version of the compiler with a system generation
run.
E IEM3906I
Explanation:
The name specified in the OBJNM option may
not have more than eight characters.
System
Action:
First
characters of name used.
eight
System
Action:
The keyword
passed at invocation time 1S
ignored. The default interpretation for the option, as set
at system generation# is used.
CARRIAGE CONTROL POSITION LIES
WITHIN THE SOURCE MARGIN. IT
HAS BEEN IGNORED.
User Response: Recompile witp
carriage control position outside source margin.
E IEM3904I
THE FOLLOWING STRING NOT IDENTIFIED AS A KEYWORD - yyyy
Explanation:
This message is
written directly on SYSPRINT.
The compiler was processing the
option list passed to it as an
invocation parameter, when it
found a character string that
it could not identify as a
keyword.
System Action:
The offending
character string is ignored.
User
Response:
Correct the
erroneous parameter, and recompile.
OPTION SPECIFICATION CONTAINS
INVALID SYNTAX, DEFAULT USED
FOR - yyyy
Explanation: This message is
written directly on SYSPRINT.
The compiler was processing the
option list passed to it as an
invocation parameter, when it
found
that a sub-parameter,
associated
with the keyword
given in the diagnostic message, was incorrectly specified.
User Response:
Either amend
object module name as required,
or alter other references to
object
module to correspond
with truncated name.
W IEM3903I
THE FOLLOWING KEYWORD DELETED,
DEFAULT USED FOR - yyyy
User Res22Dse:
Correct
the
erroneous parameter, and recompile.o
E IEM3907I
THE FOLLOWING NAME IGNORED AS
IT DOES NOT APPEAR IN THE PHASE
DIRECTORY - yy
Explanation: This message is
written directly on SYSPRINT.
The two characters given in the
message were used as parameters
to the DUMP option. This usage
is incorrect since the characters do not represent the name
of a compiler phase.
System Action: The processing
of the DUMP option continues,
unless the two characters were
used to indicate the
first
Appendix G: Diagnostic Messages
249
phase of an inclusive phase
dump, in which case the scan of
the DUMP option is terminated.
fied allows a limited buffer
area which is smaller than that
required by the buffers for
SYSIN, or for SYSIN and SYSPRINT together.
User Response:
Correct
the
erroneous parameter, a nd recompile.
S IEM3908I
SYNTAX ERROR
SPECIFICATION
IN
DUMP
system Action:
Processing
DUMP option is terminated
User Response:
Correct
erroneous specification,
recompile.
compilation
is
SYSPRINT BLOCKSIZE IS TOO LARGE
WITH THIS SIZE OPTION
Explanation: The size specified allows a limited buffer
area which is smaller than that
required
by
the
specified
blocksize.
System Action:
terminated
compilation
User Response: Ensure that the
SIZE option allows room for the
SYSPUNCH buffers needed, and
recompile.
S IEM3914I
SYSLIN BLOCKSIZE IS TOO LARGE
WITH THIS SIZE OPTION.
THE
LOAD OPTION HAS BEEN DELETED.
Explanation:
The SIZE specified allows a limited buffer
area which is smaller than that
required by the specified SYSLIN blocksize.
system Action:
is deleted.
The LOAD option
User Response: Ensure that the
SIZE option allows room for the
SYSLIN
buffers
needed
and
recompile.
is
COMPILE-TIME PROCESSING DIAGNOSTIC MESSAGES
SIZE AVAILABLE FOUND TO
BE
yyyyyy
BYTES.
SIZE=44K
ASSUMED.
COMPILATION CONTINUES.
The details given under the heading
"Source Program Diagnostic Messages" apply
equally to compile-time processing messages, with one exception: all compile-time
processing messages are listed in a group
following the SOURCE 2 input listing and
preceding the source program listing.
to
SYSIN BLOCKSIZE IS TOO LARGE
WITH THIS SIZE OPTION
Explanation:
250
System Action:
The DECK and
MACDCK options are deleted
User Response:
Use
smaller
blocksize or larger SIZE option
Explanation: SIZE is found
be less than 44K.
T IEM3912I
SYSPUNCH BLOCKSIZE IS TOO LARGE
WITH THIS SIZE OPTION.
THE
DEC 1< AND MACDCK OPTIONS HAVE
BEEN DELETED.
Explanation: The SIZE specified allows a limited buffer
area which is smaller than that
required by the specified SYSPUNCH blocksize.
the
and
User Response: subdivide program and recompile
W IEM3911I
S IEM3913I
of
Explanation:
This
message
occurs only in compilations run
with the extended dictionary
option.. The block creat.ed to
hold overflow dictionary entry
offsets is full.
T IEM3910I
is
User Response:
Ensure
that
SIZE option allows room for
both the SYSIN and the SYSPRINT
buffers,.
EXTENDED DICTIONARY
CAPACITY
EXCEEDED.
COMPILATION TERMINATED.
system Action:
terminated
Compilation
OPTION
Explanation: This message is
written directly on SYSPRINT.
Incorrect use of delimiters in
the specification of the DUMP
option parameters.
T IEM3909I
System Action:
terminated
The
size
speci-
The line number in the messages refers
to the line in which the error was found.
The incorrect statement may have commenced
on an earlier line.
S IEM4106I
UNEXPECTED
END-OF-FILE
IN
STRING AT OR BEYOND LINE NUMBER
xxx. A STRING DELIMITER HAS
BEEN INSERTED.
for which a DECLARE statement
has not been executed.
E IEM4133I
Explanation:
End-of-file
encountered while scanning for
closing quote of a string constant.
User Response:
label list
System Action:
Closing quote
inserted before end-of-file.
T IEM4109I
ENCOUNTERED IN LABELLIST OF
STATEMENT IN LINE NUMBER xxx.
IT HAS BEEN IGNORED.
~
Remove % from
REPLACEMENT VALUE IN LINE NUMBER xxx CONTAINS UNDELIMITED
STRING. PROCESSING TERMINATED.
E IEM4134I
UNE 2U'ECTED
COLON
WITHOUT
PRECEDING LABEL IN LINE NUMBER
xxx. COLON HAS BEEN IGNORED.
Explanation:
End-of-string
delimiter cannot be found in a
replacement value.
S IEM4136I
STATEMENT TYPE NOT RECOGNIZABLE
IN LINE NUMBER xxx.
STATEMENT
DELETED.
E IEM4112I
ILLEGAL CHARACTER IN APPARENT
BIT STRING IN LINE NUMBER xxx.
STRING TREATED AS A CHARACTER
STRING.
E IEM4139I
PREVIOUS USAGE OF IDENTIFIER
zzzz CONFLICTS WITH USE
AS
LABEL IN LINE NUMBER xxx. ANY
REFERENCE WILL TERMINATE PROCESSING.
S IEM4115I
UNEXPECTED END-OF-FILE IN COMMENT AT OR BEYOND LINE NUMBER
xxx. A COMMENT DELIMITER HAS
BEEN INSERTED.
Explanation:
End-of-file
encountered while scanning for
end-of-comment delimiter.
T IEM4118I
system
Action:
No
action
unless an attempt is made to
execute a statement which references the ill-defined identifier .•
E IEM4142I
REPLACEMENT VALUE IN LINE NUMBER xxx CONTAINS UNDELIMITED
COMMENT.
PROCESSING TERMINATED.
System
unless a
erences
label is
Explanation:
End-of-comment
delimiter cannot be found in a
replacement value,.
E IEM4121I
INVALID
CHARACTER
HAS BEEN
REPLACED BY BLANK IN OR FOLLOWING LINE NUMBER xxx
COMPILER
ERROR.
STACK OUT OF PHASE
system Action:
minated
PUSH
LABELS BEFORE DECLARE STATEMENT
IN LINE NUMBER xxx ARE IGNORED.
E IEM4148I
IDENTIFIER zzzz IN LINE NUMBER
xxx
USED
WITH
CONFLICTING
ATTRIBUTES. ANY REFERENCE WILL
TERMINATE PROCESSING.
DOWN
Explanation:
Usage of identifier conflicts with a previous usage or declaration. If
the line number refers to a
procedure END statement, the
error occurred within the procedure.
Processing ter-
User Response:
Save relevant
data. Call your local IBM representative.
T IEM4130I
System
Action:
No
action
unless a statement is executed
which references the identifier
in error.
UNDECLARED IDENTIFIER zzzz REFERENCED AT LINE NUMBER xxx.
PROCESSING TERMINATED.
E IEM4150I
Explanation:
An attempt is
made to execute a statement
which references an identifier
Action:
No
action
statement which refthe multiply defined
executed.
W IEM4143I
Explanation: Invalid character
found in source text
T IEM4124I
LABEL zzzz IN LINE NUMBER xxx
MULTIPLY DEFINED.
ANY
REFERENCE WILL TERMINATE PROCESSING.
FORMAL PARAMETER zzzz WAS NOT
DECLARED IN PROCEDURE ENDING IN
LINE NUMBER xxx. TYPE CHARACTER HAS BEEN FORCED.
Appendix G: Diagnostic Messages
251
E IEM4151I
LABEL zzzz IS NOT DEFINED. ANY
REFERENCE WILL TERMINATE PROCESSING ..
system
Action:
No
action
unless a statement is executed
which references the undefined
label.
E IEM4152I
E IEM4153I
W IEM4175I
LABELS BEFORE ELSE IN LINE NUMBER xxx HAVE BEEN IGNORED.
Explanation:
Label(s)
found
preceding an ELSE statement.
S IEM41761
NO STATEMENT FOLLOWS THEN OR
ELSE IN LINE NUMBER xxx.
A
NULL STATEMENT HAS BEEN INSERTED.
E IEM41781
ELSE WITHOUT
LINE
NUMBER
IGNCRED,.
LABEL zzzz IS UNDEFINED IN THE
PROCEDURE ENDING IN LINE NUMBER
xxx. ANY REFERENCE WILL TERMINATE PROCESSING.
S IEM4184I
ASSIGNMENT STATEMENT IN LINE
NUMBER xxx MUST END WITH SEMICOLON. TEXT DELETED TILL SEMICOLON IS FOUND.
Explanation:
Label may have
been defined outside of procedure, but transfers out of procedures are not allowed.
E IEM4187I
LABEL MISSING FROM PROCEDURE
STATEMENT IN LINE NUMBER xxx.
A DUMMY LABEL HAS BEEN INSERTED.
system Action:
~ny
reference
to the label in the procedure
will terminate processing,.
T IEM41881
IMPLEMENTATION RESTRICTION. NO
MORE THAN 254 COMPILE-TIME PROCEDURES MAY BE DEFINED IN A
COMPILATION.
PROCESSING TERMINATED.
END OF FILE OCCURS BEFORE END
FOR CURRENT PROCEDURE OR DO.
END HAS BEEN INSERTED AT LINE
NUMBER xxx.
E IEM4154I
SEMICOLON TERMINATES IF EXPRESSION IN LINE NUMBER xxx. SEMICOLON HAS BEEN IGNORED.
S IEM4157I
NEITHER % NOR THEN FOLLOWS IF
EXPRESSION IN LINE NUMBER xxx.
IF STATEMENT DELETED.
User Response:
procedures
E IEM4190I
PRECEDING IF IN
xxx
HAS BEEN
Delete excess
LABEL zzzz ON PROCEDURE IN LINE
NUMBEER
xxx
IS
PREVIOUSLY
DEFINED. ANY REFERENCE TO IT
WILL TERMINATE PROCESSING.
E IEM4160I
% MISSING BEFORE THEN OF IF
STATEMENT IN LINE NUMBER xxx.
% HAS BEEN INSERTED.
E IEM4163I
THEN MISSING FOLLOWING % IN IF
STATEMENT IN LINE NUMBER xxx.
A THEN HAS BEEN INSERTED.
E IEM41661
COMPILE TIME ST~TEMENT
MUST
FOLLOW THEN OR ELSE IN LINE
NUMBER
xxx.
A % HAS BEEN
INSERTED IN FRONT OF STATEMENT.
E IEM41931
ILLEGAL USE OF FUNCTION NAME
zzzz
ON LEFT HAND SIDE OF
EQUALS SYMBOL.
ANY REFERENCE
WILL TERMINATE PROCESSING.
Explanation: % does not precede the first statement in the
THEN or ELSE clause of an IF
statement .•
E IEM4196I
PREVIOUS USE OF IDENTIFIER zzzz
CONFLICTS WITH USE AS ENTRY
NAME IN LINE NUMBER xxx.
ANY
REFERENCE WILL TERMINATE PROCESSING.
System
Action:
No
action
unless a statement is executed
which references the multiply
defined label.
User Response:
If the statement in question is meant to be
a non-compile time statement,
it should be put inside of a "%
DO" group.
E IEM4169I
THEN MISSING FROM IF STATEMENT
AT LINE NUMBER xxx IN A COMPILE
TIME PROCEDURE.
A THEN H~S
BEEN INSERTED.
E IEM4172I
THE % IN LINE NUMBER xxx IS NOT
ALLOWED IN COMPILE TIME PROCEDURES. IT HAS BEEN IGNORED.
252
System
Action:
No
action
unless a statement is executed
which references the erroneous
identifier.
S IEM4199I
S IEM42021
FOR~L
PARAMETER
zzzz
IS
REPEATED IN PARAMETER LIST IN
LINE NUMBER xxx.
THE SECOND
OCCURRENCE HAS BEEN REPLACED BY
A DUMMY PARAMETER.
RESTRICTION:
15 PARAMETERS OCCUR
IMPLEMENT~TION
MORE
THAN
IN LINE NUMBER xxx.
ANY REFERENCE WILL TERMINATE PROCESSING.
System Action:
Processing is
terminated if an attempt is
made to execute a statement
which references the procedure
that has more than 15 parameters.
E IEM4205I
FORMAL PARAMETER MISSING
IN
LINE NUMBER xxx. A DUMMY HAS
BEEN INSERTED.
E IEM4208I
UNRECOGNIZABLE PARAMETER yyyy
IN LINE NUMBER xxx.
IT HAS
BEEN REPLACED BY A DUMMY PARAMETER.
S IEM4211I
PARAMETER IN LINE NUMBER xxx
NOT FOLLOWED BY COMMA OR PARENTHESIS.
TEXT DELETED TO NEXT
COMMA OR END OF STATEMENT.
S IEM4212I
UNEXPECTED
END OF PROCEDURE
STATEMENT IN LINE NUMBER xxx.
RIGHT PARENTHESIS INSERTED.
System Action:
The number of
parameters
specified in the
PROCEDURE statement is used.
E IEM4226I
System Action:
The returned
value will first be converted
to the type on the procedure
statement and will then be converted to the type given in the
RETURNS attribute.
A
third
conversion can occur if the
type
given
in the returns
attribute does not agree with
the type required where the
result is used.
S IEM4229I
System Action: Text is deleted
up to and including the first %
END
following the erroneous
PROCEDURE statement.
S IEM4232I
System Action: A right parenthesis is inserted before the
semicolon and processing continues.
PROCEDURE
STATEMENT AT LINE
NUMBER xxx MAY NOT FOLLOW THEN
OR ELSE.
PROCEDURE HAS BEEN
REPLACED BY A NULL STATEMENT.
Exp la na ti on:
A
PROCEDURE
statement may appear in a THEN
or ELSE clause only if it is
inside a compile-time DO group.
ILLEGAL FORM FOR ATTRIBUTE FOR
RETURNED VALUE IN LINE NUMBER
xxx. TEXT DELETED TO SEMICOLON.
S IEM4235I
RETURN STATEMENT IN LINE NUMBER
xxx IS NOT ALLOWED OUTSIDE OF
COMPILE-TIME PROCEDURE. STATEMENT DELETED.
System
Action:
CHARACTER
attribute is assigned
E IEM4238I
NO ATTRIBUTE FOR RETURNED VALUE
IN LINE NUMBER xxx. CHARACTER
ATTRIBUTE IS USED.•
RETURNED VALUE MUST BE PARENTHESIZED IN LINE NUMBER xxx.
PARENTHESIS INSERTED.
E IEM4241I
RETURNS EXPRESSION IN LINE NUMBER xxx DOES NOT END RETURN
STATEMENT. REMAINDER OF STATEMENT HAS BEEN IGNORED.
S IEM4244I
GOTO IN LINE NUMBER xxx IS NOT
FOLLOWED BY LABEL. STATEMENT
DELETED.
E IEM4247I
PREVIOUS USE OF IDENTIFIER zzzz
CONFLICTS WITH USE AS OBJECT OF
GOTO IN LINE NUMBER xxx.
ANY
REFERENCE WILL TERMINATE PROCESSING.
Explanation:
Returned values
may only be FIXED or CHARACTER.
E IEM4217I
PROCEDURE
STATEMENT AT LINE
NUMBER xxx MAY NOT BE USED
WITHIN A PROCEDURE. PROCEDURE
HAS BEEN DELETED.
Explanation: Compile-time procedures may not be nested.
Explanation:
A semicolon was
encountered during scan of an
apparent parameter list.
E IEM4214I
RETURNS ATTRIBUTE AND PROCEDURE
STATEMENT FOR ENTRY zzzz DISAGREE ON ATTRIBUTE OF RETURNED
VALUE.
System
Action:
CHARACTER
attribute is assigned
S IEM4220I
SEMICOLON
NOT
FOUND
WHERE
EXPECTED IN PROCEDURE STATEMENT
IN LINE NUMBER xxx. TEXT DELETED UP TO NEXT SEMICOLON.
E IEM4223I
ENTRY ATTRIBUTE AND PROCEDURE
STATEMENT FOR ENTRY zzzz DISAGREE ON THE NUMBER OF PARAMETERS,. THE LATTER IS USED.
Appendix G: Diagnostic Messages
253
system
Action:
No
action
unless a statement is executed
which references the erroneous
identifier ..
E IEM4289I
DO STATEMENT IN LINE NUMBER xxx
SHOULD
END
WITH SEMICOLON.
TEXT TO SEMICOLON DELETED.
S IEM4248I
SEMICOLON
NOT
FOUND
WHERE
EXPECTED IN GOTO STATEMENT IN
LINE NUMBER xxx. TEXT DELETED
UP TO NEXT SEMICOLON.
E IEM4292I
END STATEMENT AT LINE NUMBER
xxx MAY NOT FOLLOW THEN OR
ELSE.
A NULL STATEMENT HAS
BEEN INSERTED BEFORE THE END
STATEMENT.
T IEM4250I
GOTO zzzz IN LINE NUMBER xxx
TRANSFERS CONTROL INTO ITERATIVE DO OR ENCLOSED INCLUDED
TEXT. PROCESSING TERMINATED.
E IEM4295I
ACTIVATE OR DEACTIVATE IN LINE
NUMBER xxx NOT ALLOWED IN A
COMPILE-TIME PROCEDURE. STATEMENT DELETED.
SEMICOLON
NOT
FOUND
WHERE
EXPECTED IN END STATEMENT IN
LINE NUMBER xxx. TEXT DELETED
UP TO SEMICOLON.
E IEM4296I
END STATEMENT IN LINE NUMBER
xxx NOT PRECEDED BY DO OR PROCEDURE STATEMENT. END HAS BEEN
DELETED.
S IEM4253I
E IEM4254I
EMPTY ACTIVATE OR DEACTIVATE
STATEMENT IN LINE NUMBER xxx .•
STATEMENT DELETED.
E IEM4256I
SURPLUS COMMA IN ACTIVATE OR
DEACTIVATE IN LINE NUMBER xxx.
THE COMMA HAS BEEN DELETED.
S IEM4259I
UNRECOGNIZABLE FIELD IN ACTIVATE OR DEACTIVATE STATEMENT IN
LINE NUMBER xxx. THE FIELD HAS
BEEN DELETED.
S IEM4262I
ONLY PROCEDURES OR VARIABLES
MAY
HAVE
ACTIVITY CHANGED.
IDENTIFIER zzzz IN LINE NUMBER
xxx HAS BEEN
DELETED
FROM
STATEMENT.
S IEM4265I
COMMA MUST SEPARATE FIELDS OF
ACTIVATE AND DEACTIVATE STATEMENTS.. IN LINE NUMBER xxx TEXT
AFTER IDENTIFIER yyyy HAS BEEN
DELETED UP TO NEXT COMMA.
Explanation: ~ END statement
has been encountered which is
not preceded by a DO or PROCEDURE statement that has not
already been terminated.
E IEM4298I
Explanation:
The label cannot
be found on a DO or PROCEDURE
statement that has not already
been termi na ted.
E IEM4299I
S IEM4271I
W IEM4277I
E IEM4280I
E IEM4283I
E IEM4286I
254
LABEL REFERENCED ON END STATEMENT IN LINE NUMBER xxx CANNOT
BE FOUNo.. END TREATED AS HAVING NO OPERAND.
END STATEMENT ENDING PROCEDURE
IN LINE NUMBER xxx DID NOT HAVE
A PRECEDING PERCENT.
A PERCENT
IS INSERTED .•
Explanation: The END statement
referred to in this message is
the logical end of the procedure ..
INVALID SYNTAX I N DO STATEMENT
IN LINE NUMBER xxx.
IT HAS
BEEN CONVERTED TO A GROUPING
DO.
E IEM4301I
NO MAXIMUM VALUE WAS SPECIFIED
IN ITERATIVE DO IN LINE NUMBER
xxx.
PROGRAM WILL LOOP UNLESS
ALTERNATE EXIT IS PROVIDED.
IDENTIFIER zzzz ON END STATEMENT IN LINE NUMBER xxx IS NOT
A LABEL. END TREATED AS HAVING
NO OPERAND.
E IEM4304I
PROCEDURE zzzz DID NOT INCLUDE
A RETURN STATEMENT.
UNEXPECTED % IN LINE NUMBER xxx
TREATED AS HAVING BEEN PRECEDED
BY SEMICOLON.
Explanation:
Language syntax
requires use of RETURN statement in a procedure.
MULTIPLE TO'S HAVE OCCURRED IN
DO STATEMENT IN LINE NUMBER
xxx.
SECOND 'TO' HAS BEEN
CHANGED TO 'BY'.
MULTIPLE BY'S HAVE OCCURRED IN
DO STATEMENT IN LINE NUMBER
xxx.
SECOND 'BY' HAS BEEN
CHANGED TO 'TO".
system Action: A null value is
returned if the procedure is
invoked.
S IEM43071
INCLUDE STATEMENT AT LINE NUMBER
xxx IS NOT ALLOWED IN
COMPILE-TIME
PROCEDURES.
STATEMENT DELETED.
E IEM4310I
IMPLEMENTATION
RESTRICTION.
DDNAME IN LINE NUMBER xxx H~S
BEEN TRUNCATED TO 8 CHARACTERS.
S IEM4334I
Explanation:
The first of a
pair of data set identifiers in
an
INCLUDE
statement is a
ddname and as such is limited
to a maximum of 8 characters.
S IEM4313I
UNRECOGNIZABLE FIELD IN INCLUDE
STATEMENT AT LINE NUMBER xxx.
FIELD HAS BEEN DELETED.
system Action: Text is deleted
up to next comma or semicolon.
S IEM4319I
E IEM4322I
User Response: Reduce level of
factoring in DECLARE statement.
E IEM4337I
SURPLUS COMMA HAS BEEN FOUND IN
DECLARE STATEMENT IN LINE NUMBER xxx. THIS COMMA HAS BEEN
DELETED.
E IEM4340I
IDENTIFIER
MISSING
WHERE
EXPECTED IN LINE NUMBER xxx. A
DUMMY
IDENTIFIER
HAS
BEEN
INSERTED.
E IEM4343I
IDENTIFIER zzzz IN LINE NUMBER
xxx HAS MULTIPLE DECLARATIONS.
ANY REFERENCE WILL TERMINATE
PROCESSING.
EMPTY INCLUDE STATEMENT IN LINE
NUMBER xxx. STATEMENT DELETED.
Explanation:
At
least
one
identifier must appear in an
INCLUDE
statement i.e., the
data set member name.
IMPLEMENTATION
RESTRICTION.
MEMBER NAME IN LINE NUMBER xxx
HAS BEEN TRUNCATED TO 8 CHARACTERS.
Explanation: An identifier may
be declared only once.
System
Action:
No
action
unless a statement is executed
which references the multiply
declared identifier.
System Action:
First 8 characters of member name have been
used.
S IEM4346I
UNRECOGNIZABLE
SYNTAX
IN
DECLARE STATEMENT IN LINE NUMBER xxx. STATEMENT DELETED.
E IEM4349I
LABEL zzzz CANNOT BE DECLARED
IN LINE NUMBER xxx.
ANY REFERENCE WILL TERMINATE PROCESSING.
User Response:
Correct data
set member name in
INCLUDE
statement.
E IEM4325I
RIGHT
PARENTHESIS
INSERTED
AFTER MEMBER NAME IN LINE NUMBER xxx.
T IEM4328I
COMPILER
ERROR.
DICTIONARY
INFORMATION INCORRECT.
Explanation:
An attempt has
been made to declare an identifier which has already been
used as a label.
Explanation: A name containing
an invalid character is found
in the dictionary.
System Action:
terminat ed
Processing
S IEM4331I
System
Action:
No
action
unless a statement is executed
which references the declared
label.
is
User Response:
Save relevant
data. Call your local IBM representative.
E IEM4352I
EXTRA PARENTHESIS
LINE NUMBER xxx.
E IEM4355I
ILLEGAL ATTRIBUTE yyyy IN LINE
NUMBER xxx. AT~RIBUTE HAS BEEN
DELETED.
DECLARE STATEMENT IN LINE NUMBER xxx IS ILLEGAL AFTER THEN
OR ELSE.
STATEMENT DELETED.
EMPTY DECLARE STATEMENT IN LINE
NUMBER xxx. STATEMENT DELETED.
DELETED
IN
Explanation:
Legal attributes
are FIXED, CHARACTER, ENTRY and
RETURNS.
User Response:
Correct program.
A DECLARE statement can
appear in the THEN or ELSE
clause of an IF statement if it
is inside a DO group.
E IEM4332I
IMPLEMENTATION
RESTRICTION.
FACTORING IN DECLARE STATEMENT
IN LINE NUMBER xxx EXCEEDS 3
LEVELS. REMAINDER OF STATEMENT
DELETED.
System
Action:
The
attribute is deleted.
E IEM4358I
illegal
CLOSING
RIGHT
PARENTHESIS
INSERTED IN LINE NUMBER xxx.
Appendix G: Diagnostic Messages
255
E IEM4361I
ATTRIBUTE
OCCURRED
RETURNS
WITHOUT
ENTRY ATTRIBUTE FOR
PROCEDURE
zzzz
IN
DECLARE
STATEMENT AT OR BEFORE LINE
NUMBER xxx.
System Action:
The attribute
of the returned value is determined by the relevant PROCEDURE
statement.
E IEM4379I
Explanation:
Both ENTRY and
RETURNS
attributes
must be
declared
for a compile-time
procedure name.
Explanation: An invalid attribute was found.
System Action: The identifier
is treated as an ENTRY name.
If it is referenced, the arguments will be converted to the
types declared for the procedure parameters.
E IEM4364I
E IElJl4367I
System Action:
No conversion
to an ENTRY attribute will be
carried out. However, if the
relevant procedure
is
referenced. arguments will be converted to the types declared
for the procedure parameters.
NO ATTRIBUTES WERE DECLARED FOR
IDENTIFIER zzzz
IN
DECLARE
STATEMENT AT OR BEFORE LINE
NUMBER xxx.. CHARACTER HAS BEEN
ASSIGNED.
E IEM4382I
ATTRIBUTE CONFLICTS WITH PREVIOUS ATTRIBUTE FOR IDENTIFIER
zzzz
IN
LINE
NUMBER xxx.
ATTRIBUTE IGNORED.
RETURNS ATTRIBUTE NOT GIVEN FOR
ENTRY
NAME zzzz IN DECLARE
STATEMENT AT OR BEFORE LINE
NUMBER xxx.
E IEM4383I
PREVIOUS USAGE OF IDENFIFIER
zzzz CONFLICTS WITH ATTRIBUTE
IN LINE NUMBER xxx.
ANY REFERENCE WILL TERMINATE PROCESSING.
E IEM4391I
OPERAND MISSING IN LINE NUMBER
xxx.
A FIXED DECIMAL ZERO HAS
BEEN INSERTED.
S IEM4394I
ILLEGAL OPERATOR yyyy IN
NUMBER xxx.
IT
HAS
REPLACED BY A PLUS.
ENTRY ATTRIBUTE DISAGREES WITH
DECLARATION FOR FORMAL PARAMETER zzzz.
THE LATTER HAS BEEN
USED.
W IEM4397I
A LETTER IMMEDIATELY FOLLOWS
CONSTANT yyyy IN LINE NUMBER
xxx.
AN INTERVENING BLANK HAS
BEEN ASSUMED.
Explanation:
An ENTRY attribute in a DECLARE statement
does not agree with the parameter attributes declared in the
procedure.
E IEM4400I
OPERATOR .NOT.
IN LINE NUMBER
xxx USED AS AN INFIX OPERATOR.
IT HAS BEEN REPLACED BY .NE.
T IEM4403I
COMPILER
ERROR.
SCAN OUT OF PHASE.
Explanation:
Both ENTRY and
RETURNS
attributes
must be
declared
for a compile-time
procedure name.
System Action:
The attribute
of the returned value is determined by the relevant PROCEDURE
statement.
E IEM4370I
System Action:
If the relevant
procedure is referenced~
the
argument will be converted to
the type declared for the formal parameter.
E IEM4373I
E IEM4376I
RETURNS ATTRIBUTE IN LINE NUMBER xxx MUST BE PARENTHESIZED.
PARENTHESIS INSERTED.
ONLY FIXED OR CHARACTER ARE
ALLOWED IN RETURNS ATTRIBUTE IN
LINE
NUMBER xxx.
ATTRIBUTE
IGNORED.
Explanation: An illegal attribute was found.
256
ATTRIBUTE yyyy IS ILLEGAL IN
ENTRY ATTRIBUTE IN LINE NUMBER
xxx.
NO CONVERSION WILL BE
DONE.
System Action:
terminated.
LINE
BEEN
EXPRESSION
Processing
is
User Response:
Save relevant
data. Call your local IBM representative .•
E IEM4406I
PREVIOUS USAGE OF IDENTIFIER
zzzz CONFLICTS WITH USE
IN
EXPRESSION IN LINE NUMBER xxx.
System Action:
Processing is
terminated if an attempt is
made to execute a statement
which references the identifier
in question .•
S IEM4407I
UNDECIPHERABLE KEYWORD.
nnn
IDENTIFIERS HAVE BEEN DELETED
BEFORE yyyy IN LINE NUMBER xxx.
T IEM4452I
RECURSIVE USE OF PROCEDURE zzzz
IN LINE NUMBER xxx IS DISALLm~ED.
PROCESSING TERMINATED.
Explanation: The processor has
foun1 a mis-match while scanning a keyword consisting of
more than one identifier.
E IEM4454I
TOO FEW ARGUMENTS HAVE BEEN
SPECIFIED FOR THE BUILTIN FUNCTION SUBSTR IN LINE NUMBER xxx.
A
NULL
STRING
HA.S
BEEN
RETURNED.
system Action: The identifiers
nreceding
the
non-matching
identifier are deleted.
E IEM4457I
TOO MANY ARGUMENTS HAVE BEEN
SPECIFIED FOR THE BUILTIN FUNCTION SUBSTR IN LINE NUMBER xxx.
EXTRA
ARGUMEN~S
HAVE
BEEN
IGNORED.
E IEM4460I
FIXED OVERFLOW HAS OCCURRED IN
LINE NUMBER xxx. RESULT TRUNCATED.
S IEM4409I
OPERATOR MISSING IN LINE NUMBER
xxx.
A PLUS HAS BEEN INSERTED.
S IEM4412I
NO EXPRESSION WHERE ONE
IS
EXPECTED IN LINE NUMBER xxx. A
F'IXED DECH1AL ZERO HA.S BEEN
system
Action:
occurs on left
digits.
INSE~TED.
S IEM4415I
to
Truncation
5 decimal
ILLEGAL OPERAND yyyy IN LINE
xxx HAS BEEN REPLACED BY
A FIXED DECIMAL ZERO.
E IEM4463I
MISSING
LEFT
PARENTHESIS
INSERTED
AT
BEGINNIN3
OF'
EXPRESSION IN LINE NUMBER xxx.
ZERO DIVIDE HAS OCCURRFD AT
LINE NUMBER xxx. RESULT SET TO
ONE.
S IEM4469I
REFERENCE IN LINE NUMBER xxx TO
STATEMENT OR IDENTIFIER WHICH
IS IN ERROR.
PROCESSING TERMINATED.
END-OF-FILE FOUND IMBEDDED IN
STATEMENT IN LINE NUMBER xxx.
EXECUTION OF STATEMENT
WILL
CAUSE TERMINATION.
E IEM4472I
IDENTIFIER BEGIW1ING zzzz IN
STATEMENT AT LINE NUMBER xxx IS
TOO LONG AND HAS BEEN TR.UNCATED.
~UBBER
E IEM4421I
T IEM4433I
S IEM4436I
EXCESS ARGUMENTS TO FUNCTION
zzzz IN LINE NUMBER xxx. EXTRA
ARGUMENTS HAVE BEEN DELETED.
Expl~nation:
ments appear
reference.
TN
IEM4439I
Identifiers may
Explanation:
not exceed 31 characters in
length.
Too many arguin a proc edure
TOO FEW ARGUMENTS TO F'UNCTION
zzzz IN LINE NUMBER xxx. r1ISSING
ARGUMENTS
HAVE
BEEN
~EPL~CED
BY
FIXED
DECIMAL
ZEROS.
Syste!!}_ Action:
is truncated to
characters.
S IEM4473I
Explanation: Too few arguments
appear in a procedure
reference.
E IEIVJ4448I
T IEM4451I
PROCEDURE zzzz REFERENCED IN
LINE NUMBER xxx
CANNOT
BE
FOUND.
PROCESSING TERMINATED.
CONSTANT yyyy I~ LINE NUMBER
xxx HAS PRECISION GREATER THAN
5.
A FIXED DECIMAL ZERO HAS
BEEN INSERTED.
Explanation:
Impleroentation
restriction.
?recision
of
fixed decimal numbers is limited to 5 digits.
NO ENTRY DECLARATION FOR PROCEDURE zzzz REFERENCED IN LINE
NUMBER xxx.
ATTRIBUTES TAKEN
FROM PROCEDURE.
All
procedure
Explanation:
names must be declared with
ENTRY and RETURNS attributes
before the procedure is referenced.
The identifier
the first 31
System Action:
is assigned.
E IEM4475I
A value of zero
QUESTION MARK IN LINE NUMBER
xxx HAS NO SIGNIFICANCE.
IT
HAS BEEN IGNORED
Explanation:
Question mark,
although a recognizable character in PL/I, has no syntactical
meaning.
Appendix G: Diagnostic Messages
257
T IEM44781
STRING IN LINE NUMBER xxx CONVERTS TO A FIXED DECIMAL NUMBER
WITH PRECISION GREATER THAN 5.
PROCESSING TERMINATED.
Explanation:
Implementation
restriction.
Precision
of
fixed decimal numbers is limited to 5 digits.
system Action:
terminated
Processing
ddname is specified in
the
INCLUDE statement, a SYSLIB DD
statement is required.
User
Response:
Insert
appropriate DD statement and
recompile.
T IEM4508I
is
T IEM44811
CHARACTER STRING IN LINE NUMBER
xxx CONTAINS CHARACTER OTHER
THAN 1 OR 0 AND CANNOT BE
CONVERTED TO A BIT
STRING.
PROCESSING TERMINATED.
T IEM44841
STRING IN LINE NUMBER xxx OR IN
PROCEDURE REFERENCED IN SAID
LINE NUMBER CANNOT BE CONVERTED
TO A FrXED DECIMAL CONSTANT.
PROCESSING TERMINATED.
Us~~~:
Check DD statement and reattempt compilation.
If error persists, check computing system.
T IEM45111
T IEM4499I
A % STATEMENT IS FOUND IN A
REPLACEMENT VALUE IN LINE NUMBER xxx.
PROCESSING TERMINATED.
T IEM4514I
A
replacement
value
may
not
contain
a
compile-time statement.
AN IDENTIFIER zzzz WITH CONFLICTING USAGE
OR
MULTIPLE
DEFI'NITIONS IS REFERENCED IN
LI~~
NUMBER xxx.
PROCESSING
TERMINATED.
W IEM45171
VARIABLE zzzz IS USED IN LINE
NUMBER xxx BEFORE IT IS INITIALIZED. IT HAS BEEN GIVEN
NULL STRING OR ZERO VALUE.
BLOCKSIZE
NOT SPECIFIED FOR
INCLUDE zzzz IN LINE NUMBER
xxx. BLOCKSIZE EQUAL TO RECORD
LENGTH HAS BEEN ASSUMED.
User Resp~: Correct blocksize specification in DD statement. if necessary.
W IEM45231
DD STATEMENT FOR INCLUDE zzzz
MISSING IN LINE NUMBER xxx.
PROCESSING TERMINATED.
Explanation:
A DD statement
must be present,
in the Job
Control cards for the compilation, with a name in the name
field that corresponds to the
ddname
identifier
in
the
INCLUDE
statement.
If
no
258
RECORD LENGTH NOT SPECIFIED FOR
INCLUDE zzzz IN LINE NUMBER
xxx. RECORD LENGTH EQUAL TO
BLOCKSIZE HAS BEEN ASSUMED.
Correct program
Explanation:
A value must be
assigned to variables before
they are referenced after being
declared.
T IEM4505I
Check INCLUDE
statement
and
Us eE-_Bg§pQnse: Correct record
length
specification
in DD
statement, if necessary.
W IEM45201
S IEM4504I
MEMBER OF INCLUDE zzzz IN LINE
NUMBER XX}{ NOT FOU NO ON DATA
SET. PROCESSING TERMINATED.
User Response:
sta tement, DD
data file.
Expl~nation:
An attempt
is
made to execute a statement
which references an identifier
that was not properly defined.
User Response:
ILLEGAL RECORD FORMAT SPECIFIED
FOR INCLUDE zzzz IN LINE NUMBER
xxx. PROCESSING TERMINATED.
Explanation:
Included records
must be a fixed length of not
more than 100 characters with a
maximum blocking factor of 5.
Rlocksize must be a multiple of
tb~ record length.
Expl~ation:
T IEM45021
UNRECOVERABLE I/O ERROR WHILE
SEARCHING FOR MEMBER OF INCLUDE
zzzz IN LINE NUMBER xxx. PROCESSING TERMINATED.
RECORD LENGTH AND BLOCKSIZE NOT
SPECIFIED FOR INCLUDE zzzz IN
LINE NUMBER xxx. RECORD LENGTH
OF 80 AND BLOCKSIZE OF 400 HAVE
BEEN ASSUMED.
User Response: Correct record
length and block size specifications in DD statement, if
necessary.
T IEM45261
I/O ERROR WHILE READING TEXT
INCLUDED FROM zzzz AT LINE NUM-
BER xxx.
ATED.
PROCESSING
TERMIN-
User Response:
Check DD statement and reattempt compilation.
If error persists,
check computing system.
T IEM4529I
User Response:
Save relevant
data. Call your local IBM representative.
E IEM4550I
Explanation: The argument list
referred to is in a source
program reference to a compiletime procedure.
IMPLEMENTATION
RESTRICTION.
EXCESSIVE LEVEL OF NESTING OR
REPLACEMENT AT LINE NUMBER xxx.
PROCESSING TERMINATED.
T IEM4553I
Explanation:
Level of nesting
in this case is calculated by
summing the number of current
unbalanced left
parentheses,
tta number of current nested
DO'S, the number of current
nested IF's, and the number of
current nested replacements. A
level of 50 is always acceptable.
T IEM4532I
E IEM4559I
INPUT RECORD AT LINE NUMBER xxx
IS TOO LONG.
PROCESSING TERMINA.TED.
INPUT
RECORD CONTAINS FEWER
CHARACTERS
THAN
SORMGIN
REQUIRES.
PROCESSING TERMINATED.
E IEM4562I
E IEM4570I
THE THIRD A..~GUMENT OF BUILT-IN
FUNCTION SUBSTR IS NEGATIVE, IN
LINE NUMBER xxx. A NULL STRING
HAS BEEN RETURNED.
E IEM4572I
THE THIRD ARGUMENT OF BUILT-IN
FUNCTION SUBSTR EXCEE0S
THE
STRING LENGTH, IN LINE ~UMBER
xxx. THE SUBSTRING HAS BEEN
TRUNCATED AT THE END OF THE
ORIGINAL STRING.
E IEM4574I
THE COMBINED SECO~-J'D AND THIRD
ARGUMENTS OF BUILT-IN FUNCTION
SUBSTR
EXCEED
THE
STRING
LENGTH, IN LINE NUMBER xxx.
THE SUBSTRING HAS BEEN TRUNCATED AT THE END OF THE ORIGINAL
STRING.
E IEM4576I
THE SECOND ARGUMENT OF BUILT-IN
FUNCTION SUBSTR IS LESS THAN
ONE, IN LINE NUMBER xxx.
ITS
VALUE HAS BEEN RESET TO ONE.
ERROR. SUBSTR MUST BE
A SINGLE WORD KEYWORD.
COMPILE~
System Action:
terminated
Processing is
User
Response:
Replace the
multiple keyword with a single
keyword and recompile the compiler.
T IEM4547I
COMPILER ERROR.
SPACE FOR TABLES.
system Action:
terminated
IDENTIFIER IN LINE NUMBER xxx
EXCEEDS
31
CHARACTERS.
REPLACEMENT WAS DONE ON TRUNCATED FORM zzzz.
Explanation:
A non-compiletime
source text identifier
consists of more than 31 characters.
User Response:
Check SORMGIN
option on EXEC control card.
Explanation:
The
keyword
SUBSTR has been replaced, in
the compiler tables, with a
multiple keyword. The CompileTime Processor cannot handle
this situation.
LEFT
PARENTHESIS
BEGINNING
ARGUMENT LIST OF PROCEDURE zzzz
WAS NOT FOUND. PROCEDURE WAS
INVOKED
AT LINE NUMBER xxx
WITHOUT ARGUMEN~S.
Explanation: The argument list
referred to is in a source
program reference to a compiletime procedure.
Explanation: The length of the
input record is less than the
left
margin of the SORMGIN
specification.
T IEM4538I
IN LINE NUMBER xxx ARGUMENT
LIST
FOR
PROCEDURE
zzzz
CONTAINS COMPILE TIME
CODE.
PROCESSING TERMINATED.
Exolanation: Compile-time code
may not be embedded in arqument
list of compile-time procedure
reference.
Explanation: Input record contains more than 100 characters.
T IEM4535I
RIGHT PARENTHESIS INSERTED IN
LINE NUMBER xxx TO END ARGUMENT
LIST FOR PROCEDURE zzzz.
INSUFFICIENT
Processing is
Appendix G: Diagnostic Messages
259
E IEM4578I
THE SECOND ARGUMENT OF BUILT-IN
FUNCTION SUBSTR EXCEEDS
THE
STRING LENGTH, IN LINE NUMBER
xxx. A NULL STRING HAS BEEN
RETURNED.
S IEM4580I
AN UNINITIALISED VARIABLE H~S
BEEN FOUND IN A BUILT-IN FUNCTION ARGUMENT LIST, IN STATEMENT NUMBER xxx. A NULL STRING
HAS BEEN RETURNED.
'rtname' is the name of the Library
routine
in
which
the error
occurred (given only for computational subroutines>.
~location
User Response: Initialise
variable before invoking
built-in function.
message' is either
OFFSET ± hhhhh FROM
E1
ENTRY
POINT
or
the
the
OFFSET ± hhhhh FROM ENTRY POINT
OF cccc ON-UNIT
If it is a Model 91 message
resulting from an imprecise interrupt,
"AT OFFSET ••• "
is replaced by "NEAR
OFFSET ••• "
since
the instruction
causing the interrupt cannot be precisely identified.
~ote:
OBJECT-TIME DIAGNOSTIC MESSAGES
The messages in the following text may
be printed on the output data set specified
for SYSPRINT, as the result of an exceptional or error condition occurring during
the execution of a PL/I program. If the
SYSPRINT DD statement is absent, then the
object-time
messages
appear
on
the
operator's console, except for the ON CHECK
system action messages and the copy option
output, which will not be produced at all
in this case.
Each message number is of the form
IHEnnnI, where the code IHE indicates a
PL/I library message, and nnn the number of
the message. The final character I indicates the informative nature of the mes!:age.
Diagnostic messages are printed at
cution time for two main reasons:
1.
2.
The diagnostic messages for other than
ON-type errors are mainly self-explanatory.
Explanations in the following lists are
given only when the message is not selfexplanatory.
IHE003I
IHE004I
2.
IHEnnnI rtname - text AT location message
3.
IHEnnnI text AT location message
where
AT
will
IHEnnnI FILE name - text
message
location
'name' is the name of the file
associated with the error (given
only in I/O diagnostic messages)
ERROR
IN
INTERRUPT IN ERROR
PROGRAM TERMINATED
HANDLER-
Explanation: When an unexpected program interrupt
occurs
during the handling of another
program interrupt, it indicates
that the program has a disastrous error in it, such as DSA
chain out of order,
instructions overwritten, or
such.
The program is abnormally terminated, and the above message
is printed out at the console.
A dump is produced with a User
Completion Code of 4000.
An ON-condition is raised, by compiled
code or by the Library, and the action
required is system action_ for which
the language specifies COMMENT as part
of the necessary action.
1.
SOURCE
PROGRAM
STATEMENT nnnnn
This message will always contain a statement number whether
or not the compiler option is
specified.
exe-
An error occurs for which no specific
ON-condition exists in PL/I. A diagnostic message is printed, and the
ERROR ON-condition is raised.
Object time diagnostic messages
take one of the following forms:
260
If the statement number compiler option
has been specified, each message will also
contain IN STATEMENT nnnnn prior to AT
location message. nnnnn gives the number
of the statement in which the condition
occurred.
IHE005I
PSEUDO-REGISTER
VECTOR
TOO
LONG - PROGRAM NOT EXECUTED
Explanation: This error arises
when the sum of the number of
procedures~
the
number
of
files, and the number of controlled variables exceeds 1000.
It causes return to the Supervisor from IHESAPi PL/I program
is not entered.
The message
always appears at the console.
A return code of 4004 is generated.
IHE0061
NO MAIN PROCEDURE.
TERMINATED.
For output: programmer
is
trying to write more than his
output string will hold.
IHE0231
Explanation:
The
ERROR is
raised, (i) upon return from a
TRANSMIT ON-unit, if the device
in error is other than a printer~ or (ii)
if access to a
file by RECORD I/O has been
attempted after the TRANSMIT
condition has been raised for
output.
IHEDUM*. NO PLIDUl-1P DD
EXECUTION TERMINATED.
CARD.
IHE0241
Explanation: Execution has been
abnormally terminated with a
dump and a completion code of
(3000 + Return Code (if set»
IHE010I
PROGRAM ENDED BY OS360. RETURN
CODE = hhh
(a
hexadecimal
number) •
Explanation: The major task has
been terminated abnormally by
the operating
system.
The
above message appears on the
console.
IHE0111
TRANSMIT
PROGRAM
Explanation:
No external procedure in the program has been
given the option MAIN. This
message appears at the console.
A return code of 4008 is generated.
IHE0091
FILE name - OUTPUT
ERROR NOT ACCEPTABLE
KEY ERROR WHEN CLOSING FILE
END OF TASK
FILE name - PRIN~r OPTION/FORMAT
ITEM FOR N CN-PRINT FILE
Explanation:
Attempt to use
PAGE, LINE or SKIP:$ 0 for a
non-print file.
IHE0251
DISPLAY - MESSAGE OR REPLY AREA
LENGTH ZERO
Explanation:
This
message
appears only if
the
REPLY
option is exercised.
IHE0261
FILE name - DATA DIRECTED INPUT
- INVALID ARRAY DATUM
AT
Explanation: An unresolved key
error exists for which no condition can now be raised.
The
above message appears on the
console.
Explanation:
Number of subscripts on external medium does
not correspond to number of
declared subscripts.
IHE0271
I/O Errors
GET STRING
DATA NAME
UNRECOGNIZABLE
Explanation:
IHE018I
FILE name - FILE TYPE NOT
PORTED
IHE020I
FILE name
OUTPUT FILE
IHE0211
FILE name INPUT FILE
IHE022I
GET/PUT
SIZE
ATTEMPT
ATTEMPT
STRING
SUP-
1.
GET DATA - name of data
item found in string is
not known at the time of
the GET statement, or
2.
GET DATA data list - name
of data item found
in
string is not specified in
the list.
TO READ
TO
WRITE
EXCEEDS STRING
IHE0291
FILE name
OPERATION
UNSUPPORTED FILE
Explanation:
For input: programmer
has
requested more than exists on
the input string.
Explanation:
Programmer has
executed an I/O statement with
an option or verb not applicable to the specified file.
Appendix G: Diagnostic Messages
261
For example:
Explana tion: There has been a
failure in an implicit OPEN
operation ..
I/O Option
or-Verb
--
File Attribute
READ SETI
LOCATE
DIRECTI
(SEQUENTIAL
UNBUFFERED)
IHE037I
REGIONAL
DIRECT
LINESIZE I
PAGESIZE
STREA~
An
intervening
I/O statement occurs between a
READ statement and a REWRITE
statement referring to the same
record.
IHE038I
UPDATE)
FILE name - REWRITE/DELETE NOT
IMMEDIATELY PRECEDED ~Y READ
IHE03lI
FILE name - INEXPLICABLE
ERROR
I/O
IHE039I
I/O ON-conditions
FILE
name - OUTSTA~ING
FOR UPDATE EXISTS
All these conditions may
the SIGNAL statement.
READ
When a record is
read from an INDEXE0 file which
contains blocked records and
which
is
open
for DIRECT
UPDATE. the record mllst be rewrittene
Between
the
READ
statement and the associated
REWRITE statement, no
other
operation may be performed on
the file.
IHE034I
IHElOOI
IHEllOI
FILE name - TOO MANY INCOMPLETE
I/O OPERATIONS
IHElllI
VARIABLE
IHE035I
FILE
name - EVENT
ALREADY IN USE
IHE036I
FILE name - IMPLICIT OPEN FAILURE, CANNOT PROCEED
raised
Initiating ON-con1ition:
Explanation:
This message may
be issued because the correct
NCP value has not been specified or it may be due to incorrect source code.
0=
be
by
FILE name - UNRECOGNIZABLE DATA
NAME
NAME
1.
GET DATA - name of data
item
found on external
mediQm is not known at the
time of the GET statement,
or
2.
GET DATA data list - name
of data item founj
on
external medium is
not
specified in the list.
FILE name - NO COMPLETED READ
EXISTS (INCORRECT NCP VALUE)
Ex21anation:
The number
incomplete
I/O
operations
equals the NCP value.
262
FILE name - ATTEMPT
'IO CLOSE
FILE NOT OPENED IN CURRENT TASK
Explanation:
Data Management
has detected some error in the
current I/O operation, but has
provided no furtherietails.
Expla~ation:
IHE033I
FILE name - ENDFILE FOUND UNEXPECTEDLY IN MIDDLE OF
DATA
ITEM.
ExplanaiiQQ:
The ERROR condition is raised when end-of-file
is encountered before the delimiter
when
scanning
listdirected
or
data-directed
input, or if the field width in
the format
list
of
editdirected input would take the
scan beyond the end-of-file.
(INPUT I
IHE030I
IHE032I
REWRITE
EXDlanatiQ~:
(SEQUENTIAL
REWRITE
(without FROM) I I NPur \ OUTPUT \
UPDATE) \
EXCLUSIVE I
(DIRECT INPUT \
UNLOCK \
OUTPUT)
(READ NOLOCK)
KEYTO
FILE name - ATT~MPT TO
OUT OF SEQUENCE
FILE name - RECORD
SIGNALED
FILE
S~~LLER
CONDITION
name - RECORD
VARIABLE
THAN RECORD SIZE
Explanation:
The
variable
specified in the READ statement
INTO option allows fewer characters than
exist
in
the
record.
F format records:
a WRITE statement attempts to
put a record smaller than the
record size.
All formats:
a REWRITE attempts to replace
a record with one of smaller
size.
(Note~ This condition
cannot ~detected for Uformat
records
read
for
UNBUFFERED or DIRECT files.)
IHE1121
FILE name - TRANSMIT CONDITION
SIGNALED
IHE1301
FILE name - KEY CONDITION
NALED
IHE1311
FILE name - KEYED
FOUND
ATTEMPT TO WRITE/LOCATE
LENGTH RECORD
RECORD
SIGNOT
Explanation: READ, REWRITE, or
DELETE
statement
specified
record key which 10es not match
with records of data set. If
REGIONAL (2) or (3) data sets
are employed, and the DD statement pararreter LIMCT is used,
then the record does not exist
within the number of records or
tracks searched, but may exist
elsewhere.
FILE
name - RECORD
VARIABLE
LARGER THAN RECO~D SIZE
Explanation:
The
variable
specified in the READ st~tement
INTO option requires more characters than
exist
in
the
record: or a WRITE statement
attempts to put out a record
gr~ater
than
the
available
record size; or
a
REWRITE
statement attempts to replace a
record with one of
greater
size.
IHE1131
IHE1221
IHE1321
FILE
name - ATTEMPT
DUPLICATE KEY
TO
ADD
Explanation:
WRITE statement
specified a key value which
already exists within data set.
ZERO
Explanation: A WRITE or REWRITE statement attempts to put
out a record of zero length, or
a LOCATE statement attempts to
get buffer space for a record
of zero l~ngth; such records
are used for end-of-file markers for direct access storage
devices.
IHE1331
1.
INDEXED
data
sets:
detected for both SEQUENTIAL and DIRECT access.
2.
REGIONAL
data
sets:
detected only for REGIONAL
(1)
and (2)
SEQUENTIAL
output.
FILE name - KEY SEQUENCE ERROR
Explanation:
IHE114I
FILE
READ
wRITE statement
during creation of
data set (OUTPUT SEQUENTIAL), a
key which for:
specifi~d,
name - ZERO LENGTH RECORD
Explanation: A record of zerO
length has been read from a
REGIONAL data set accessed in
the DIRECT mode. This shoUld
not occur, unless the data· set
was created by another processor. A zero length record,
on a direct access device, is
an end-ai-file signal.
IHE1201
FILE name - PERMANENT
ERROR
INPUT
IHE134I
Initiating ON-CONDITION:
TRANSMIT
FILE name - PERMANENT
ERROR
OUTPUT
ExplCj.nation:
Initiating ON-condition:
TRANSMIT
INDEXED data sets is lower
in
binary. collating
sequence than prior key
2.
REGIONAL
data sets the
relative
record/track
value is .lower than that
of prior key.
FILE
ERROR
name - KEY
CONVERSION
Explanation: WRITE, READ, REWRITE., or DELETE statement for
REGIONAL
data set soecified
character
string
key value
whose
relative
record/track
partition contains characters
other than blank or the digits
o through 9, or which contains
only the character blank.
Explanation:
IHE1211
1.
1HE135!
FILE name - KEY
ERROR
SPECIFICATION
Appendix G: Diagnostic Messages
263
Explanation:
1,.
2.
ExPlanation:
INDEXED: the KEYFROM or
KEY expression may be the
NULL string. Alternatively, RKP does not equal
zero and the embedded key
is not identical with that
specified by the KEY FROM
option (or the KEY option
in the case of a rewrite
statement). A third possibility
is
that
an
attempt has been made during SEQUENTIAL UPDATE to
replace a record by one
whose embedded key does
not match that of the original record.
FILE
name - KEYED
RECORD/TRACK OUTSIDE
LIMIT
FILE name - NO SPACE
TO ADD KEYED RECORD
AVAILABLE
Explanation:
WRITE statement
attempted to add record, but
data set was full.
If REGIONAL
(2)
or (3) data set, condition
is
raised
if space within
optional limits (DD parameter
LIMCT) is unavailable.
IHE140I
IHE150I
Attribute
Conflicting
Attributes
PRINT
INPUT" UPDATE,
RECORD, DIRECT,
SEQUENTIAL,
BACKWARDS. BUFFERED,
UNBUFFERED,
EXCLUSIVE. KEYED
STREAM
UPDATE, RECORD,
DIRECT, SEQUENTIAL,
BACKWARDS, BUFFERED,
UNBUFFERED,
EXCLUSIVE. KEYED
EXCLUSIVE
INPUT, OUTPUT,
SEQUENTIAL,
BACKWARDS. BUFFERED,
UNBUFFERED
DIRECT
SEQUENTIAL,
BACKWARDS, BUFFERED,
UNBUFFERED
UPDATE
INPUT, OUTPUT.,
BACKWARDS
OUTPUT
INPUT, BACKWARDS
BUFFERED
UNBUFFERED
RELATIVE
DATA SET
Explanation: WRITE, READ, REWRITE, or DELETE statement for
REGIONAL data set specified a
key whose relative record/track
value exceeds the number of
records or tracks assigned to
the data set.
IHE137I
There is a conflict between the
declared PL/I file attributes.
For example:
REGIONAL: as for INDEXED,
or initial character of
KEY or KEYFROM expression
value
is
the
value
(8) ' l l1 B.
IHE136I
Initiating ON-condition:
UNDEFINEDFILE
Some attributes may have been
supplied when a file is opened
implicitly.
Example of attributes implied by I/O statements
are:
I/O
Statement
Implied Attributes
FILE name - END OF FILE ENCOUNTERED
DELETE
RECORD"
UPDATE
Explanation:
GET
INPUT
Initiating ON-condition:
END FILE
LOCATE
RECORD, OUTPUT,
SEQUENTIAL, BUFFERED
PUT
OUTPUT
READ
RECORD, INPUT
REWRITE
RECORD, UPDATE
UNLOCK
RECORD, DIRECT,
FILE name - CANNOT
NO DD CARD
BE
OPENED,
DIRECT,
Explanation:
Initiating ON-condition:
UNDEFINEDFILE
UPDATE, EXCLUSIVE
IHE151I
264
FILE name - CONFLICTING DECLARE
AND OPEN ATTRIBUTES
WRITE
RECORD, OUTPUT
In turn, certain attributes may
imply other attributes:
Attribute
ImQlied Attributes
BACKWARDS
RECORD., SEQUENTIAL,
INPUT
BUFFERED
Block size not specified on DD
card" nor on environment. However. will never occur
for
PRINT file, because
default
block size is assumed.
IHE154I
FILE name - UNDEFINED FILE CONDITION SIGNALED
IHE155I
RECORD, SEQUENTIAL
FILE name - ERROR
REGIONAL DATA SET
DIRECT
RECORD, KEYED
Exolanation:
EXCLUSIVE
RECORD, KEYED"
DIRECT. UPDATE
Initiating ON-condition:
UNDEFINEDFILE
KEYED
RECORD
PRINT
OUTPUT, STREAM
A REGIONAL data set, opened for
DIRECT OUTPUT, cannot be properly formatted during the open
process.
INITIALIZING
SEQUENTIAL RECORD
IHE156I
UNBUFFERED RECORD, SEQUENTIAL
FILE name - CONFLICTING ATTRIBUTE AND ENVIRONMENT PARAMETERS
UPDATE
Explanation:
RECORD
Finally, a group of alternate
attributes has one of the gro?p
as a default. The default 1S
implied if none of the group is
specified
explicitly
or is
implied by other attributes or
by the opening I/O statement.
The groups of alternates are:
Initiating ON-condition:
UNDEFINEDFILE
Examples of conflicting parameters
N~ME
block
size is
assumed. are:
ENVIRONMENT
Parameter
No file
organization
parameter
STREAM I RECORD
STRE~M
INPUTIOUTPUTIUPDATE
INPUT
SEQUENTIAL I DIRECT
(RECORD files)
SEQUENTIAL
BUFFERED I UNBUFFERED
(SEQUENTIAL files)
BUFFERED
File Attribute
KEYED
INDEXEDIREGIONAL STREAM
IHE152I
FILE name - FILE TYPE NOT
PORTED
SUP-
DIRECTI
EXCLUSIVE
INDEXED
DIRECT OUTPUT
INDEXEDIREGIONAL OUTPUT without
KEYED
EXJ?lanation:
Blocked records
Initiating ON-condition:
UNDEFINED FILE
V-format records BACKWARDS
IHE157I
The user has attempted to associate a paper-tape device with
a file that does not have the
INPUT attribute.
IHE153I
CONSECUTIVE
FILE name - BLOCKSIZE NOT SPECIFIED
EXQlanation:
Initiating ON-condition:
UNDEFINED FILE
UNBUFFERED
FILE name - CONFLICTING ENVIRONMENT AND/OR DD PARAMETERS
EXQlanation:
Initiating ON-condition:
UNDEFINEDFILE
One of the following conflicts
exists:
1.
F-format records have
been specified
for
Appendix G: Diagnostic Messages
not
an
265
INDEXED"
REGIONAL(1), or
REGIONAL ( 2> file.
2.
IHE158I
Blocked records have been
specified with a REGIONAL
file.
IHEi61I
F-format records
32758
V-format records
32750
FILE name - CONFLICTING ,ATTRIBUTE AND DD PARAMETERS
FILE name - KEYLENGTH NOT SPECIFIED
Explanation:
Explanation:
IHE159I
Initiating ON-condition:
UNDEFINEDFILE
Initiating ON-condition:
UNDEFINED FILE
A keylength has not been specified
for
an
INDEXED,
REGIONAL(2),
or
REGIONAL (3)
file that is being opened for
OUTPUT.
The user has attempted to associate a file with the BACKWARDS
attribute with a device that is
not a magnetic tape device.
FILE name - INCORRECT BLOCKSIZE
AND/OR LOGICAL RECORD SIZE IN
STATEMENT NUMBER xxx
IHE200I
rtname - X
Initiating ON-condition:
UNDEFINED FILE
IHE202I
rtname - X LT 0 IN
LOG2(X) OR LOG10(X)
IHE203I
rtname - ABS(X) GE (2**50)*K IN
SIN(X) OR COS (X)
(K=PI)
OR
SIND (X) OR COSD (X) (K=180)
IHE204I
rtname - ABS(X) GE (2**50>*K IN
TAN (X)
(K=PI)
OR
TAND(X)
(K=180)
IHE206I
rtname- X=Y=O IN ATAN(Y,X) AND
ATAND(Y,X)
IHE20MI
rtname ... ABS(X)
ATANH(X)
IHE209I
rtname -
IHE210I
rtname - X=O,
REAL IN X**Y
IHE2111
rtname - Z=+I OR -I IN ATAN(Z)
OR Z=+l OR -1 IN ATANH(Z)
IHE212I
rtname - ABS(X) GE (2**18)*K IN
SIN(X)
OR COS (X)
(K=PI)
OR
SIND(X) OR COSO(X) (K=180)
IHE213I
rtname ... ABS(X) GE (2**18)*K IN
TAN (X)
(K=PI)
OR
TAND(X)
(K=180)
1.
F-format records
a.
b.
2.
The specified
block
size is less than the
logical record length.
The
specified block
size is not a multiple
of the logical record
length.
LOGeX)
OR
V-format records
a.
b.
The specified
block
size is less than the
logical record length
+ 4.
The
logical
record
length is less than 14
for a RECORD file or
15 for a STREAM file.
FILE name - LINESIZE
THAN
IMPLEMENTATION
MAXIMUM LENGTH
GREATER
DEFINED
Explanation:
Initiating ON-condition:
UNDEFINED FILE
The implementation-defined maximum linesize is:
266
LT 0 IN SQRT(X)
Explanation:
One or the following situations
exists:
IHE160I
QQIDPutational Errors
X=O~
GT
1
IN
Y LE 0 IN x**y
Y
NOT
POSITIVE
List of Routine Names
exponent of a floating-point
number exceeds the permitted
maximum, as defined by implementation.
IHESQS
Short float square root
IHELNS
Short float logarithm
IHETNS
Short float tangent
IHEATS
Short float arctan
IHESNS
Short float sine ana cosine
IHEHTS
Short float hyperbolic arctan
IHESQL
Long float square root
IHELNL
Long float logarithm
IHETNL
Long float tangent
IHEATL
Long float arctan
IHESNL
Long float sine and cosine
IHEflTL
Long float hyperbolic arctan
IHEXIS
Short float integer exponentiation
IHEXIL
Long float integer
tion
IHEXXS
Short float general exponentiation
IHE310I
Explanation: This condi t~ion is
raised~
by Library routines or
by compiled code. when assignment is attempted where the
number to be assigned will not
fit into the target
field.
This condition can be raised by
allowing the fixed
overflow
interrupt to occur on account
of SIZE.
If associated with
I/O, then "FILE name" will be
inserted between the message
number and the text.
IHE320I
exponentia-
IHEXXL
Long
tion
IHEXIW
Short
float complex
exponentiation
integer
IHEXIZ
Long
float
complex
exponentiation
integer
IHEXXW
Short
float complex
exponentiation
general
IHEXXZ
Long
float
complex
exponentiation
general
IHEATW
Short float complex arctan
hyperbolic arctan
IHEATZ
Long float complex arctan and
hyperbolic arctan
ZERODIVIDE
Explanation: This condition is
raised. by Library routines or
by compiled code,
when
an
attempt is made to divide by
zero,
or when the quotient
exceeds the precision allocated
for the result of a division.
The condition can be raised by
hardware interrupt or by special coding .•
float general exponentia-
IHE340I
UNDERFLOW
Explana~ion:
This condition is
raised. by Library routines or
by
compiled code., when the
exponent of a floating-point
number is smaller than
the
implementation-defined mimimum.
The condition does not occur
when
equal
floating-point
numbers are subtracted.
and
IHE350I
STRINGRANGE
ON-Conditions
All these conditions may
the SIGNAL statement.
IHE300I
FIXEDOVERFLOW
Explanation: This condition is
raised. by Library routines or
by
compiled code, when the
result of a fixed-point binary
or decimal operation exceeds
the
maximum field width as
defined by implementation.
IHE330I
~utational
SIZE
be
raised
Explanation: This condition is
raised by library routines when
an invalid reference by the
SUBSTR
built-in function or
pseudo-variable
has
been
detected,.
by
OVERFLOW
Explanation: This condition is
by Library routines or
by
compiled code, when the
raised~
IHE360I
AREA CONDITION RAISED IN
CATE STATEMENT
Appendix G: Diagnostic Messages
ALLO-
267
Explanation:
There
is
not
enough room in the area in
which to allocate the based
variable.
IHE3611
CONDITION
AREA
RAISED
ASSIGNMENT STATEMENT
IN
Explanation:
There
is not
enough room in the area to
\-lhich the based variable is
being assigned.
IHE3621
AREA SIGNALED
Structure and
IHE3801
Errors Associated with Tasking
The following errors are associated with
execution of the CALL. R~D. or WRITE
statement with TASK option; with the WAIT
statement; with the use of TASK or EVENT
variables; with
the
PRIORITY
pseudovariable or built-in function; or with the
COMPLETION pseudo-variable.
IHE5501
ATTEMPT TO WAIT ON AN
AND INCOMPLETE EVENT
IHE5511
TASK VARIABLE ALREADY ACTIVE
ExPlanation: Task variable is
already
associated
with an
active task.
Array~rrors
IHESTR - STRUCTURE
OR
LENGTH GE 16**6 BYTES
ARRAY
IHE5521
IHESTR
VIRTUAL ORIGIN
ARRAY GE 16**6 OR LE -16**6
OF
Explanation:
During the mapping
of
a
structure, the
address of the element lt1i th
zero subscripts in an array,
whether it exists or not, has
been computed to be outside the
range (-16**6 to +16**6).
Control Program
DELAY STAT~MENT EXECUTED - NO
TIMER FUNCTION IN SYSTEM
IHE4011
TIME
STATEMENT EXECUTED - NO
TIMER FUNCTION IN SYSTEM
Cond i tion Type ON-Conditions
CONDITION
Explanation: This condition is
raised by execution of a SIGNAL
(identifier)
statement, referencing a programmer-specified
EXTERNAL identifier.
268
WAIT ON MORE
PLE'l'E EVENTS
IHE5541
ACTIVE EVENT VARIABLE AS ARGUMENT
TO
COMPLETION PSEUDOVARIABLE
IHE5551
INVALID
ARGUMENT
VARIABLE
THA~
255
INCOM-
TASK
VARIABLE
AS
TO PRIORITY PSEUDO-
ExplaD~tion:
The task variable
specified was active and not
associated with the
current
task or one of its immediate
subtasks.
IHE5561
EVENT
VARIABLE
ACTIVE
ASSIGNMENT STATEMENT
IHE5571
EVENT VARIABLE ALREADY ACTIVE
IN
Event variable is
already
associated
with an
active task.
Explanati2~:
SUBSCRIPTRANGE
Explanation: This condition is
raised~ by library routines
or
by compiled code, when a subscript is evaluated and found
to lie outside its specified
bounds. or by the SIGNAL statement.
IHE5011
IHE5531
~est~ict~ons
IHE4001
IHE5001
EVENT ALREADY BEING WAITED ON
Explanation: During the execution of a WAIT statement, in
order to complete the required
number of events, an event must
not
be waited on which is
already
being waited on in
another task.
Explanation: During the mapping of a structure or array,
the length of the structure or
array has been found to be
greater than or equal to 16**6
bytes.
IHE3811
INACTIVE
IHE5581
ATTEMPT TO WAIT ON AN I/O EVENT
IN WRONG TASK
Explanation: An 1/0 event can
be waited on only in the same
task as the statement which
initiated the I/O
operation
with which the event is associated.
In the
messages,
number.
following group of
hhh is a hexadecimal
COM-
list and a conversion error
occur.
is
likely
to
IHE5711
TASK (name) TERMINATED.
PLETION CODE= hhh.
IHE5721
TASK (name) TERMINATED. COMEVENT
PLETION
CODE
hhh .•
VARIABLE OVERWRITTEN OR DESTROYED.
IHE600I
CONVERSION CONDITION SIGNALED
IHE6011
CONVERSION
INPUT
ERROR
IN
F-FORMAT
IHE5731
TASK (name) TERMINATED. COMPLETION CODE = hhh. TASK VARIABLE OVERWRITTEN OR DESTROYED.
IHE6021
CONVERSION
INPUT
ERROR
IN
E-FORMAT
IHE603I
IN
B-FORMAT
TASK (NAME) TERMINATED. COMPLETION CODE
hhh.
INVALID
FREE STATEMENT.
CONVERSION
INPUT
ERROR
IHE574I
IHE6041
ERROR IN CONVERSION FROM CHARACTER STRING TO ARITHMETIC
IHE6051
ERROR IN CONVERSION FROM CHARACTER STRING TO BIT STRING
IHE606I
ERROR IN CONVERSION FROM CHARACTER STRING TO PICTURED CHARACTER STRING
IHE6071
CONVERSION ERROR
INPUT (DECIMAL)
IN
P-FORMAT
IHE608I
CONVERSION ERROR
INPUT in a parameter description within
the GENERIC attribute, is not permitted.
of
List Processing, Table Handling 4 and
Locate-Mode Input/Output Facilities
The CELL attribute is not permitted.
The SECONDARY Attribute
The SECONDARY attribute will be recognized but ignored.
Appendix H: Language Features not supported in the Fourth Version
273
The NORMAL and ABNORMAL Attributes
2.
The attributes NORMAL and ABNORMAL are
not implemented.
If declared# they will be
ignored.
It must be the upper bound of the
leading dimension (including inherited
dimensions) of the element with which
it is declared.
3.
The structure member with which the
bound is declared must be, or must
contain, the last base element in the
structure,.
BASED Variables
For exampl e:
DeL 1 PARTS LIST BASED (P),
2 FIRM NAME CHAR (40),
2 REF NO FIXED BINARY,
2 FIRM ADDRESS,
3 STREET TOWN CHAR (50),
3 COUNTRY CHAR (30),
2 STOCK (20: N REFER( REF NO), 100: 200 >.,
3 NUMBER,
4 HERE FIXED (10,0).
4 ORDERED"
5 PROVISIONAL FIXED (10,0),
5 CONFIRMED FIXED (10,0),
3 COST FIXED (5,,0);
The pointer variable
explicitly
or
implicitly qualifying a based variable must
be a non-based unsubscripted scalar pointer
identifier.
The BASED attribute must be followed by
a pointer identifier in parentheses.
The OFFSET attribute must be followed by
an identifier in parentheses.
The variable named in the OFFSET attribute must be an unsubscripted level 1 based
area.
Offset variables may not be used in any
SET option or in any explicit or implicit
rased variable qualifier.
A based variable may not have the INI'IIAL attribute.
A based label array cannot be initialized by means of subscripted label prefixes.
Based structure with one adjustable-length
bit or character string: This is permitted
only when there are no adjustable array
bounds in the structure. The string must
conform to the following rules:
1.
It must be scalar.
2.
It must be the
structure.
3.
The length
form:
last
must
be
element
in
the
declared in the
A based structure can have either:
X REFER (Y)
1.
One adjustable array round, or
2.
One adjustable-length bit or character
string.
where X and Yare as described above.
For exampl e:
Based structure with one adjustable array
bound: This is permitted only when there
are-Do adjustable strings in the structure.
The bound must conform to the following
rules:
1.
It must be of the form:
DCL 1 TYPE OF HOUSE BASED (P) "
2 NUMBER:=O(=FLOORS FIXED (2,0)"
2 AREA FIXED BINARY,
2 RATES_CODE CHAR (N REFER (AREA»;
Note: Pointer and AREA data types
ALIGNED.
must
be
X REFER (Y)
where
X is an unsubscripted fixed
binary
variable of default
precision. and
Y
is
an unsubcripted fixed
binary variable, of default
precision, which is:
(a) part of the structure, and
(b)
not associated with an
explicit pointer qualifier.
274
OFFSET and POINTER Built-In Functions
The OFFSET and POINTER built-in functions cannot be specified explicitly. However~ if the value of an offset variable is
assigned to a pointer variable, or a pointer value to an offset variable. the necessary conversion is implicit in the assignment.
Based Variable Declaration
ONCOUNT Built-In Function
A pointer variable must be included in a
cased variable declaration.
(This is the
pointer that will be set in the absence of
a SET option from a LOCATE or an ALLOCATE
statement referring to the based variable.)
This function is supported
Model 91 requirements.
only
Appendix H: Language Features not supported in the Fourth Version
for
275
APPENDIX I: MODEL 91
When using the (F) Compiler to produce
cbject
programs
for
execution
on a
System/360, Model 91 the option M91 must be
specified ..
In the following discussion, the terms
exception and interrupt are used.
An
exception is a hardware occurrence (such as
an overflow error) which can cause a program interrupt. An interrupt is a suspenEion of normal program activities. There
are many possible causes of interrupts, but
the following discussion is concerned only
with interrupts resulting from hardware
exceptions.
The Model 91 is a high-speed processing
system in which more than one instruction
is executed concurrently. As a result, an
exception may be detected and an interrupt
occur when the address of the instruction
which caused the exception is no longer
held in the central processing unit. Consequently, the instruction causing
the
interrupt cannot be precisely identified.
Interrupts of this type are termed imprecise..
When an exception
occurs,
the
machine stops decoding further instructions
and ensures that all instructions which
¥ere decoded prior to the exception are
executed before honoring the exception.
Execution of the remaining decoded instructions may result in further exceptions
occurring. An imprecise interrupt in which
more than one exception has occurred is
known as a multiple-exception imprecise
jnterrupt.
When the M91 option is used,
the compiler and library permit processing
of imprecise interrupts.
When the M91
following occurs:
1.
276
Before a REVERT statement.
c.
Before compiled code
SIZE condition.
d.
Before compiled
prefix options.
e.
For a null statement.
{This feature provides the programmer with
source language control over the
timing of program interrupts.}
f.
Before every statement of the STMT
option (in the PARM field of the
EXEC statement) is used.
(This is
an important debugging tool.)
code
to
set
to
the
change
An external symbol dictionary (ESD)
entry is created for the PL/I library
module IHEM91, which is required only
when an object program is to be executed on a Model 91.
The module is
included when the object module is
link-edited, and it is called when an
imprecise
interrupt
is
detected.
Module IHEM91 provides the facilities
for:
a.
Detecting
mUltiple-exception
impreci.se interrupts.
b.
Setting the value that is returned
by the ONCOUNT built-in function.
c.
Raising the appropriate PL/I conditions.
The order of processing
is as follows:
the
exceptions
option is specified, the
The compiler inserts 'no-operation'
instructions at certain points in the
program to localize imprecise interrupts to a particular segment of the
program, thus ensuring that interrupt
processing results in the action specified in the source program.
(A
'non-operation' instruction
is
an
Assembler Language 'flush' instruction
of the form BCR x,O, where x is not
equal to zero.
This instruction is
implemented in the Model 91 in such a
way that its execution is delayed
until all previously decoded instructions have been executed.) The situations
in which the I no-operation'
instructions are generated are:
a.
2.
b.
Before an ON statement.
1.
PL/I conditions in the order:
UNDERFLOW
FIXEDOVERFLOW or SIZE
ERROR if system action is required for
either FIXEDOVERFLOW or SIZE
OVERFLOW
ERROR if system action is required for
OVERFLOW
ZERODIVIDE
ERROR if system action is required for
ZERODIVIDE
Note: The conditions FIXEDOVERFLOW and
SIZE cannot occur together since the
same hardware condition raises both of
them.
2.
Hardware exceptions in the order:
messages will be printed to indicate
the nature of the unprocessed exceptions. The exceptions themselves will
not be processed.
data
specification
addressing
protection
Conditions and exceptions are raised in
the above order until one of the following
situations occurs:
1.
A GO TO statement arising out of an
ON-unit is executed. All other exceptions will then be lost,.
2.
The ERROR condition is raised. If the
program is terminated as a result of
this action (i.e. " system action causing the ERROR condition to be raised"
followed by the FINISH condition> "
When an interrupt results from multiple exceptions"
only one of the PL/I
conditions is raised for each type of
exception that has occurred.
When a
multiple-exception
imprecise
interrupt occurs, the ONCOUNT
built-in
function provides a binary integer count of
the number of exception types" including
the current one. remaining to be processed.
(The count does not include PL/I ON conditions.)
If the ONCOUNT function is used
when only a single exception has occurred,
or if it is used outside an ON-unit, a
count value of zero is indicated,.
Programs compiled with the M91 option
can be executed on other System/360 models
supported by the system/360 Operating System.
Apendix I: Model 91
277
278
*
PROCESS statement •••••• '••• '..... '. • • • • •• 30
ABNORMAL attr ibute •• ~ ....... '....... '. • ••• 273
ADV, format of ••• ~ ••• : •••••••••••••••• 162
aggregate length table .~ ••••••••••••••• 35
ALIAS linkage editor statement ••• '•• '•••• 44
ALIGNED),UNALIGNED attributes ••••••• 14,103
See also structure mapping ••••• '. • •• 164
alignment
of FIXED and FLOAT BINARY variables 126
alignment attributes, use of •••••••••• 122
area data, format of •••••••••••••••••• 139
area dope vector '.'............. '••••••••• 161
AREA ON-unit, exit from ••••••••••••••• 112
AREA, size of .......................... 151
AREA storage allocation and release 174-175
arguments, method ofpr~senting ••••••• 161
array arithmetic - programming hints •• 111
array assignment .'.'•••••• '•••••••••••••• 109
array dope vector, format of •••••••••• 162
array expressions - nesting levels • '. •• 150
array or structure elements
matching with EDIT-directed format
lists •••••••••• '•• '••••••• ,. • • • • • • • •• 113
arrays
listed at~ributes .................... 33
order of transmission •••••••••••••• 113
arrays bounds permitted •• ,•• ,•• '.......... 149
arrays, format of ••••••••••••••••••••• 140
ASA carriage control character ••••••••• 68
assembler subroutine
variable-length argument list for ••• 82
assignment of variables ••••••••••••••• 107
aSS1Qnment, efficient multiple
assignments '•••• '............ ,•••• '. '. .. • • •• 117
assignment to VARYING string •••••••••• 111
assignments of variables
programming hints •••••••••••••• 109,126
ATTACH macro •••• '. '•••• '........ '.... ,•••••
186
ATRINOATR option ••••••••• '. • • • • • • • • • • • •• 26
attribute arid cross reference table • '••• 33
example ••••••••••••••••••••••••••••• 34
attribut~s, declaration of •• ~ ••••••••• 105
attributes, factoring of •••••••••••••• 149
AUTOMATIC variables, declaration •••• ,. 105
'O.
BACKWARDS attribute •• '. • • • •• • • • • • • • •• 51,70
based variables allocation •••••••••••• 115
based variables using REFER
forcing correct boundary alignment • 156
batched compilation .; ,. ,•••••••• '•••••••••• 30
programming example ••••••••••••••••• 31
batched compilation output data sets ••• 24
BCD/EBCDIC option •••• '....... '. '. '. • • • • • • • •• 27
BEGIN blocks, use of ••••••••••••• '••••. 115
binary data alignment ••••••••••••••••• 126
BIT data •••••••••••••••••••••••••••••• 137
BIT strings, efficient use of ••••••••• 117
BLKSIZE
for blocked INDEXED data sets ••••• '.. 71
BLKS I ZE DCB subparameter ••••• '. • • • .. .. • • •. 59
block initialization
prologues and epilogues •••••••••••• 159
block invocation
recursive invocation count
pseudo-register •• '........... '. • ..... • •• 36
block management at run-time •••••• 158-160
block nesting, limits ............... '. '. •• 149
block size for records .................. 61
block size, maximum ••• ,.................. 142
blocks in a compilation ••••••••••••••. 149
bounds permitted for arrays ••••••••••• 149
BUFFERS option
143-144
buffers, number of • '......... '••••••• ,. '•••• 65
BUFNO DCB sUbparameter ••••••••••••••••. 59
'O • • • • • • • • • • • • • • • • '• • •
CALL macro ••• '. '••• ,...........
186
calling sequence between modules •••••• 160
card reader/punch mode ••••••••••••••.•• 66
card reader/punch stacking .............. 66
cataloged data sets ..................... 19
definition of ......... '•••
17
cataloged procedures, use of ••••••••••• 48
PLl DFC •••••• '..... ,. • • • • • • • ... • .. •• 183 , 19, 49
PLl LFC ......... '. ... • •• • • • •• • • •• 183,19, 49
PL1LFCL •••••••••••••••••••••• 183,19,49
PL1LFCLG •••••••• oO • • • • • • • • • • • • 184,19,50
PLl L FLG '••• ,•••••• ,•• '. '...... ,. • • •• 18 4 , 19, 50
CELL attribute ............................ 273
chained scheduling ........................ 65
CHANGE linkage editor statement ......... 44
changes at Fourth version# Release 17 •• 13
channel programs, number of •••••••••••• 65
character code for object program ••••• 142
CHARAC'r ER data .......... '•••••••• '. • • • • •• 137
CHARACTER PICTURE data •••••••••••••••• 137
CHAR60lCHAR48 OPTION .................... 28
CHECK condition •• '..... '.'•• '••• '••••
154
for DATA-directed 1/0 •••••••••••••• 153
CHECK lists, maximum number of items •. 153
checkpoint/restart .................... 83-87
CM
See external symbol dictionary
COBOL option •••••••••••••••••••••••••• 144
COBOL structures length of ••••••••••••• 35
COBOL-PL/I data interchange •.••••••••. 103
CODE DCB subparameter for paper tape ••• 65
coded arithmetic data ••••••••••••••••. 135
collating sequence •••••••••••••••••••• 154
COLUMN, used for non-PRINT file ••••••• 142
communication between object modules ••• 81
COMP/NOCOMP option ...................... 29
compatibility
between versions of the compiler •••• 14
expression evaluation - concatenation 14
multitasking •••••••.• '••••••••••• '••••• 14
PACKED now removed from the language 14
RECURSIVE procedures ........ '•• '. • .. • • • •• 14
REENTRANT procedures •••••••••••••••. 14
structure mapping •••••••••••••••• 14-15
compilation job control •••••••••••••••• 30
compilation speed improvements • '. • •• • •• 115
compile-time facilities ••••••••••••••• 123
compile-time processor ............. 147-148
D
•
•
...
'D
•
•
•
•
...
'D
••
•
••
•
..
•
•
••
• • , . '• • •
Index
279
compile-time processor, listing of input 32
additional data in cols 73-80 of
output ••••••••••••••••••••••••••••• 33
compiler
compatibility between different
versions ••••••••••••••••••••••••••• 14
compiler completion codes ••••••••••• 30
features of different versions ••. 11-14
summary of Release 17 changes ••••••• 13
compiler ddnames ••••••••••••••••••••••. 20
compiler interface with the supervisor • 79
compiler options •••••••••••••••••••• 14,24
compiler options, listing of ••••••••••• 32
compiler output ••••••••••••••••••••• 31-40
aggregate length table •••••••• : ••••• 35
attribute and cross reference table • 33
external symbol dictionary ESD
listing •••••••••••••••••••••••••••. 36
source program listing •••••••••.•••• 32
STATIC I!~TERNAL storage map ••••••••• 37
compiler phases, language features
calling particular optional phases ••• 115
compiler processing ..................... 20
compiler storage requirements •••••••••. 23
compiler-generated names, number of ••• 150
compiler-input/output blocking ••••••••. 23
COMPLETION built-in function •••••••••• 153
COMPLETION pseudo-variable •••••••••••• 153
completion codes
for abnormal step termination •••••• 133
for batched compilation .•••••••••••• 31
for the compiler •••••••••••••••••••. 30
COMPLEX FIXED BINARY data ••••••••••••• 136
COMPLEX FIXED DECIMAL data ••••••••.••• 136
COMPLEX FLOAT BINARY data ••••••••••••• 136
COMPLEX FLOAT DECIMAL da ta .............. 136
compound source statement numbering •••• 32
concatenation of data sets •••••••••••• 155
concatenation, priority of ••••••••••••• 14
condition prefixes, scope of •••••••••• 127
conditional job step execution ••••••••. 83
CONSECUTIVE data set access •••••••••••• 70
CONSECUTIVE data set creation •••••••••. 70
CONSECUTIVE data set language features . 52
CONSECUTIVE data sets •••••••••••••••••. 51
CONSECUTIVE organization •••••••••••••• 143
constants returned by procedures •••••• 150
constants, floating-point, size of •••• 150
constants, precision and length •• ,••••• 150
constants, sterling ••••••.••••••••••••• 150
constants, string, size of •••••• '•••.•• 150
control program options •••••••••••••••• 78
control record for batched compilation • 31
control sections
procedure invoc,ation ••••••••••••••• 160
section definition for IHEMAIN •••••. 37
section definition for IHENTRY •.•••• 37
control variables in DO-groups •••••••• 127
CONVERSION ON condition ••••••••••••••• 154
CONVERSION ON-un its .................... 112
conversions
hints for efficient execution •• 116-117
programming hints •••••••••••••••••• 108
supported by in~line code •••••• 118-120
CSECTS
See control section
CTLASA option •••••••• '••••••.•••••••••••• 68
CTLASA record I/O control characters •• 144
280
CTL360 option •••••••••••••••••••••••••• 68
CTL360 record I/O control characters •• 144
cyclinder overflow area •••••.•••••••••• 67
CYLOFL subparameter ....................... 67
data aggregates - programming hints ••• 111
data attributes
for efficient execution •..•••••••••• 116
data control block DCB parame·ter ••••.•• 46
DATA directed I/O, CHECK condition •••• 153
data element descriptor DED •••••••••• 137
data interchange ............
103
data management access methods ••••••••• 78
data set creation and access ••••••••••• 70
data set definition ••••
58
data set, definition of •••••••• ..,....... 17
data set label, ordering sequence for
DCB ••••••••••••••••••• ., ••••••• ,••• ,•••• 141
data set names
generation data groups •••.•••••••••• lB
indexes of •••• ' ••••••
18
qualified or unqualified ............... 18
restriction •••• '.................. '. ... • •• 17
da ta set naming ••••
58
data set organization •••••••••••••••••• 67
types of ............................. 143
data set positioning, magnetic tape 143-144
DATA-directed I/O
maximum length of qualified name ••• 142
maximum n~mber of elements in list . 150
DATAFIELD built-in functions
DATAFIELD string length ................. 152
DATE function •••••••••••••••••• '. • • • • •. 117
DCB creation ............................. 141
DCB parameter ......................... 46,59
DCB subparameters ......................... 60
DCB, file opening order of completion • 141
DD statement .............................. 20
DD statement, ordering sequence for DCB 141
DD statements •••••••••••••••••••••• 19,184
modified in cataloged procedures
185
ddnames
for PL/I SORT •••.••••••••••••• ,. • ... • •• 96
debugging facilities (testing) •••• 129-134
DECK/NODECK option ........................ 27
declaration of external indentifiers •• 105
DED data element descriptor •••••••••• 137
DEFINED items
alignment attributes .......... '. .... •• 122
deleted records •• '. •• •• • • • • ... • • ... • .... • •• 66
SEQUENTIAL UPDATE of INDEXED data
sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
delimiter (/) statement co . . . . . . . . . ,. . . . . . . . 20
DEN DCB subparameter .................... 65
device cIa sses .................. '•••• '. • •. 21
devices
execution device choice ••••••••••••• 46
diagnostic messages
See messages
dictionary blocksize ••••••••••••••••••• 29
dictionary, reducing the size of •• 120-122
dimensions, maximum number of ••• ~ ••••. 149
DIRECT access ••.•••• '. • • • • • • • • • • •.• • • • • • •. 51
See also INDEXED and REGIONAL data
sets
DIRECT UPDATE files
use of NOWRITE option ............... 122
DISP parameter •.•••••••••••• '•••• '•••••••• 59
D.
•
••
•
•
...
••
0.................
0
D
•
•
...
.................
•
•
•
•
•
•
•
..
•
•
•
•
G
•
••
••
DISPLAY message length •••••••••••••••• 141
DISPLAY statement ........................ 132
division
FIXED division programming hints ••• 109
DO groups - programming hints ••••••••. 110
DO groups, use of ••••••••••••••••••••• 127
dope vector for string data ••••••••••• 136
dope vectors, creation of •••••••.•••••• 140
DSA dynamic storage area ••••••••••••• 159
DSNAME parameter ........ '. • • • • • • • • .• • • • • • •• 58
DSORG subparamet er ....................... 67
dummy records
in INDEXED data sets ••••••••.•••••••• 53
in REGIONAL data sets ••••••••••••••• 58
dumping storage in multitasking .•••••••• 89
dumps
See storage dumps
dynamic invocation of PL/I compiler ••• 186
dynamic storage area DSA ••••••••••••• 159
E format data, maximum size •••••.••••• 142
EBCDIC/BCD option ......................... 27
EDIT-directed I/O ••••••••••••••••••••• 154
maximum length of E format data •••• 142
EMPTY built-in function, use of ••••••• 112
END statement ............................ 32
entry names as arguments •••••••••••••• 154
entry parameter procedures, max number 154
entry points
declaration of attributes ••••••••.•• 105
ENVIRONMENT attribute •••••.•••••.••••• 142
ENVIRONMENT attribute, use of .........
124
epilogue subroutine
See dynamic storage area
ER
See external symbol dictionary
ERROR condition ••••••••••••••••••••••• 128
error messages
See messages
ESD (external symbol dictionary) ••.••••• 36
ESD listing .............................. 36
event data, format of ••••••••••••••••• 139
EVENT option ••••••••••••••••••••••. 57,146
ina DISPLAY statement •••.•••••••••• 272
in a multitasking environment ••••••• 88
in multi taski ng I/O •••••••.•••••••••• 91
with REGIONAL(3) data sets •••••••••. 57
EXEC s ta t erne n t •••
20
execution speed, improvements ••••••••• 116
EXIT statement
in a subtask ............................. 93
exponentation ............................ 154
expression evaluation ••••••••••••••••• 108
maximum number of temporary results 151
EXTDIC/NOEXTDIC option •••••.••.•••••• 29,148
extended search limit •••••••••••••••••• 67
external indentifiers
restrictions •••••••••••.•.•.••••.•.••. 105
external symbol dictionary listing •.••• 36
EXTREF/NOEXTREF option ••••••••••••••••• 26
file control block .".................... 81
file opening and closing space
requi r emen ts ........................... 82
files
for both input and output
(programming hint) ••.••••••••••••• 112
files and data sets..................... 51
FINISH can di tion ........................ 128
FIXED BINARY, maximum precision ••••••• 152
FIXED built-in function, default •••••• 152
FIXED data scale factor for ••••••••••• 152
FIXED DECIMAL data with even precision
FIXED DECIMAL variables ••••••••
126
FIXED DECIMAL, maximum precision •••••. 152
FLAG option •••••••••••••••••••••••••••• 28
FLOAT BINARY, maximum precision ••••••• 152
FLOAT built-in function, default •••••• 152
FLOAT DECIMAL variables ................ 126
FLOAT DECIMAL, maximum precision •••••• 152
floating-point constants, size of ••••• 150
floating-point variable, magnitude of . 152
FORTRAN-PL/I data interchange ••••••••. 103
function values returned •••••••••••••• 151
0
••••••
generation data groups ............... 18,19
GENERIC attribute
limit of family members and
arguments ••••••••••••••••••••••••• 149
GENKEY opt ion .................. ,. • • • • • • • .• 145
hardware for PL/I (F) Compiler ••••••••. 78
D.
0
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
••
F-format records •••••••••••••••••••••• 143
factoring of attributes ••••••••••••••• 149
FCB (file control block) ••••••••••••••• 81
file and ddname relationship •••••••••• 141
file attributes
use of UNBUFFERED v BUFFERED .•••••.•• 125
file attributes, specified in DD card •• 59
IDENT option .••••••••••••••••••••••••• 272
identif iers, length of ••••• co • • • • • • • • • • 153
IHEQERR
See external symbol dictionary
IHEQINV
See external symbol dictionary
IHEQTIC
See external symbol dictionary
IHESADA
See external symbol dictionary
IHESADB
See external symbol dictionary
in-line code for conve~sions and string
handling .............................. 118
INCLUDE STATEMENT
data set requirements •••
147
use of •••••••••••••••••••••••••••.• 123
INDEXAREA paramet er .................... 145
INDEXED data set access •••••••••••••••• 71
INDEXED data set creation ••••.••••••••• 71
INDEXED data set language features ...... 53
INDEXED data set, DIRECT access •••••••• 73
INDEXED data set, SEQUENTIAL access •••• 72
INDEXED data sets ....................... 51
KEY condition raised for lost record 113
maintenance ..................
125
records deleted by SEQUENTIAL UPDATE 72
secondary storage restriction •••••• 104
INDEXED organization ................... 143
indexes for INDEXED data sets •••••••••• 52
INITIAL attribute .................... 272-274
initialization of program variables ••. 107
initialization of variables, hints •••• 126
input/output .•••••••••••••••••••••••.•. 91
I/O bound programs ••••••••••••••••• 118
INDEXED data sets •.•••••••••.•••••••••••. 51
0
••••••••••
D
•
•
•
..
Index
••
281
synchronization in multiprocessing ••••. 94
input/output - programming hint ••• 112-115
input/output conventions •••••••••• 141-147
input/output error recovery ••••••••••• 126
INSERT statement ••••••••••••••••••••••. 43
instruction sets • '•••••••••••••••••••••• 78
interrupts
M91 option •.••••••••••••••••••••••. 277
interrupts, object time handling •• 16D,129
interval timing options ••••••••.••••••• 79
invocation of PL/I dynamically .••••••• 186
job control for linkage editor •••••••••
job control statements
example of compile, link and execute
procedure •.•••••••••••••••••••••••.
job priority •••••••••••••••••••••••••••
JOB statement ............................
job step
def ini tion of .........................
load module •••••••••••••••••••••••••••• 18
load module cross reference table •••••• 45
load module map ........... '••••••• '. • • • • • •• 45
load module, maximum size ................ 45
LOAD/NOLOAD opt ion ••••••••• ~ •••
27
locate mode 1/0 ••••
76
LOCATE mode 1/0 ON conditions ••
155
locate mode I/O, use of •.••••••••••••. 114
logical record length ................... 62
LRECL
for blocked INDEXED data sets ••••••• 71
LRECL DCB subparameter .................. 59
0
0
•
•
•
•
••
n
••••••
45
MACDCK data set ••••••••
20
MACDCK/NOMACDCK option .................. 30
MACRO option •••••••••••••••••••••••••. 123
macro processor
See compile-time processor
MACRO-NOMACRO option ••
29
magnetic tape conversion 7-track
66
MAIN option •••••••
81,148
MAP linkage editor option •••••••••••••• 44
mapping of structures •••••••.••••• 164-175
master index specification ••••••••••.•• 67
MAX function ........................... 152
messages
compiler diagnostic messages 39,188-260
execution error messages •.••••. 260-271
FLAG options •••••••••••••••••••••••• 28
linkage editor ...................... 45,46
to and from the operator •••••••••••• 48
MFT ....................................... 79
MIN function ...................... ,. • ... •• 152
MOD function ................. ,............ 152
MODE DCB s ubparameter ................... 66
model 91 ............ ~ ••••••••••• _ •••••. 277
modifying cataloged procedures ......... 184
move mode I/O •••••••••••••••••••••••••• 76
multiple assignments, limitations ••
151
multiple closure statement numbering ••• 32
multiple WAIT option ••••••••••••••••••• 79
multitasking .......................... 87-94
I/O synchronization ............... D" ••• 92
multitasking, Release 16 changes ••••••• 14
multiprocessing ........................... 94
multiprogramming, with a fixed number
of tasks .••.•••••••••••••••••••••••••• 79
multiprogramming, with a variable
number of tasks .............. '. • • ... • • • • • •• 79
MVT ....................................... 79
M91/NOM91 option •••••••••••• ~ • ... • • • • • •. 30
u
46
90
20
0
17
00
KEY condition
not detected using LOCATE statement 114
KEY option •••••••••.•••••••• '. .. • • • • • • • •. 56
key position, relative .................. 67
KEYLF.N DCB sUbparameter •••••••••••••••. 66
keys, for INDEXED data sets •••••••••••. 51
keys, for REGIONAL data sets ••••••••••. 55
LABEL attribute, maximum number ••••••. 152
label data, format of ••••••••••••••••• 138
LABEL parameter •••••••••••••••••••••••• 59
LABEL variables in structures
with INITIAL and LIKE attributes ••• 146
language not supported •••••••••••••••• 272
LD
See external symbol dictionary
LEAVE option ••••••••••••••.••••••• 143-144
length of compiled modules .............. 81
length of identifiers ••••••••••••••••• 153
length of structures and arrays
See aggregate length table
LET linkage editor option •.••••.••••••. 44
library module linkage conventions •••. 161
library opening and closing modules
storage requirements •••••••••••••••••. 82
LIMCT DCB subparameter ..•••••••.••••••• 67
LlNECNT option •••••••••••••••• '. • • • • • • •• 26
for object program listings ••••••••• 38
LlNECNT/NOLINECNT option ••.•••••••••••. 26
LlNESIZE .option •••••••••••••••••••••••• 68
LINESIZE, minimum and maximum ••••••••• 141
LlNESIZE, used for non-PRINT file ••••• 142
link editing into a private library •••• 41
link editing, module name priority .•••• 41
linkage editor ,••••••••••••••••••••••••• 18
updating private procedure libraries 18
linkage editor control statements •.•••• 44
linkage editor diagnostics •••••••••• 45,46
linkage editor options ••••••••••••••••. 44
linkage editor output •••••••••••••••••• 45
linkage editor overlay processing •.•••• 42
linkage editor processing •••••••••••••. 40
linkage editor, additional libraries ••• 41
linkage editor. ddnames •••• '............. 41
linkage editor, input and output ••.•••. 40
LIST linkage editor option .'•••• '•••••••• 44
LIST/NOLIST option ••••••••••••••••••••• 26
282
•
. . . . . . . . . '• • • • • • • • • • • •
'. . . . . . . . . '.
•
•
•
•
••
.................
•••••••••••••••
0
••
NAME linkage editor statement .••••••••• 44
names generated by the compiler ••••••• 150
NCAL linkage editor option •••••••• ~ •••• 43
NEST/NONEST option ........... ~ ........... 30
NTM DCB subparameter ••••••••••••••••••• 67
null (/1) statement ••••••••• '.•• '. • • • .. • •• 20
obj ect
object
object
object
object
object
object
object
object
deck data set ••••••••••••••••.•• 20
deck serialization •••••••••••••• 40
module ....................... '••••• 18
module data set •••••••.••••••.•• 20
module listing ...................... 38
module output. contents of •••••• 40
program initialization ••••••••• 160
program organization ••.•••• 158-175
program output
object time messages .••••••••••••••. 48
operator messages ••••••••••••••••.•. 48
record oriented ...................... 47
stream oriented •••• '••••••• '. • • • • • . • •. 47
object-time interface with the
supervisor ........................ '. . • • •• 79
OBJNM opt ion •
26
OFFSET function and attribute ••.•••••• 274
offset variable, format of ••••••••..•. 138
ON conditions
111
LOCATE mode I/O restrictions •••.••. 155
ON statements in recursive contexts ••• 155
ON-codes ••••••••••••••••••.••••••••••• 129
ON-unit entry with SIGNAL •••••.••••••. 111
ON-units
in multitasking •••
89
ON-units, limit to active number .••••• 154
ONCHAR pseudo-variable •••••••••••• 154,112
ONCODE built-in function, use of •••••• 128
ONCOUNT function ........................ 275
ONKEY built-in function ••••••••••••••• 125
ONSOURCE built-in function ••••.•••.••. 154
ONSOURCE pseudo-variable •••••••••• 154,112
ONSOURCE string length •.••••••.••••••. 152
operating system requirements •••••••••. 78
operator console •••••••.••. • '•• • '•••••••• 78
OPLIST/NOOPLIST option ••••••••••••••••• 26
OPT option .............................. 27
OPTCD=C DCB subparameter ••.•••••.•.•••. 65
OPTCD=L DCB subparameter ••.••••••••• ~ •• 66
OPTCD=M DCB subparameter .•.•••••• '. .• • •. 67
OPTCD=U DCB subparameter .•••••.•••••••. 66
OPTIONS attribute ...................... 148
overflow area, independent ••••••••••••• 67
OVERFLOW conr'lition in exponentiation •• 154
overlay program
linkage editor cross reference table 45
overlay programs, creation of •••••••••. 42
overlay techniques - examples ••••••• 42-44
overriding cataloged procedures ••••••. 124
overriding EXEC statement parameters •. 184
a
•••••••
0
••
•
•
•
•
•
•
•
•
•
•
•
•
•
••
n..........................
0
•
••
••
•
•
•
•
•
•
•
•
••
••
PACKED attribute ........................ 14
PAGESIZE, maximum ••••••••••••••••••••• 141
paper tape CODE subparameter ............ 65
parameter lists
declaration of attributes •••••••••. 105
parameters, maximum number of •.••••••• 149
parameters, method of passing ........... 161
PARM paramete~ option list format •.••• 104
PARM parameter override •••.••••••••••. 184
partitioned data set
definition •••••••••••••••.•••••••••• 19
PCP ..................................... 78
PDS (partitioned data set) .............. 19
PGMNAME
See external symbol dictionary
PGMNAMEA
See external symbol dictionary
PICTURE attribute
impact on execution speed •••••••••• 116
PICTURE attribute, maximum size ••••••• 152
picture checking (on assignment) •••••• 109
PICTURE declarations
with decimal points •••••••••••••••. 105
pictured data . . . . . . . . . . . . . . . . . . . . . . . . . . 137
PL/I language not supported ••••••••••• 272
PL/I library .... '•• '•••••••• '••• '. • • • • • • • • •. 83
PL/I modules combined with mojules from
other languages ......................... 82
PL/I preprocessor
See compile-time processor
PL/I SORT . . . . . . . . . . . . . . . . . . . . . . .
95-103
PL/I SORT - multitasking ••••..•••.•••. 103
PL1DFC •••••••• • '• ................. 183,19,49
PLl L FC •••.••••••••• '. .• • • • • • • • . •• 183, 19" 4 9
PL1LFCL ••••..•••..•••••••..••.•• 183,19,49
PL1LFCLG ••••. ,. •• • • • • •• ... • • .... • •• 184,19,50
PL1LFLG ••.•••••••••••••••••••••• 184,19,,50
POINTER function •••
275
pointer variable# format of ••••••••••. 137
pointer variable~ reuse of ............. 115
POSITION attribute, maximum value
152
PR
See external symbol dictionary
precision# specified for efficient
execution ............................. 116
primary control program •••.••••••.••.•. 78
primary string array dope vector •••••• 164
PRINT files .............................. 68
printed listings from compiler .......... 31
printer character sets for PL/I ••.••••• 78
printer spacing control . . . . . . . . . . . . . . . . . 66
priorities in PL/I ••••••...••.••••••... 90
PRIORITY pseudo-variable" function, or
option ••.•.•••
90
PROCESS card ........................ 0... 30
program control section in ESD .......... 36
program csects
See control sections
program size estimation
81
program testing ..................... 128-134
programming in a multitasking
environment ••. '...... .• ... . • .• • • ... • . • • • •. 88
programming techniques ••••.••••••. 104-127
common errors and pitfalls ••
104-115
efficient programming ........... 115-127
prologue and epilogue subroutines ••••• 159
PRTSP DCB subparameter .a . . . . . . . . . . . . . . . . 66
PRTY parameter ........................... 90
pseudo-register vector (PRV) •.••••. 95,158
PUT DATA statement limitations ......... 113
u
0
•
•
•
•
•
•
•
•
•
•
D
••••
•
•
•
•
•
•
••
•••••••••••••••••••••••
0
•••••••
0
•••••••
0
••
REAL FIXED BINARY data ••••.••••••.•••. 135
REAL FIXED DECIMAL data ................. 135
REAL FLOAT BINARY data ••.•.•..•••..••. 135
REAL FLOAT DECIMAL data ................ 135
REAL PICTURE data ...................... 137
RECFM DCB subDarameter ................ 59,62
record alignment •••
155
RECORD condition ........................ 125
record data sets for printing •••••••••• 68
record formats ................... 61,64,129
RECORD-oriented input/output ....
125
hints for efficient performance •••. 118
LOC?\TE mode .,.................... ~ ••.•• 76
printer, punch control characters •. 144
record format constraints •••••.•••.• 64
record length . . . • . . . . . . . o • • • • • • • 62,142
RECURSIVE attribute ••••••••••••••.••••. 14
recursive use of a procedure •••••••••. 105
REENTRANT attribute •.••
14
REENTRANT option ........................ 148
REFER attribute
forcing correct boundary alignment . 156
REGIONAL data set access ••.••••••••••.. 74
0
••• "
0
.................
•
•
...
•
•
•
0
••••••
•
•
•
•
•
Index
•••
283
DIRECT access ••••••••••••••••••••••. 75
replacement of records •••••••••••••• 75
SEQUENTIAL access •••••••••••••••••.•• 74
REGIONAL data set creation ••••••••••••. 73
DIRECT creation ••••••••••••.•••••••• 74
SFQUENTIAL creation ••••••••••.•••••• 74
REGIONAL data set language features .••. 54
REGIO~AL data set organization ••••••••• 55
REGIONAL data sets
source key last 8 bytes •••••••.••• 113
REGIONAL organization ••.•••••••••••••• 143
REGIONAL(l) data sets •••.•••••••••••••• 56
REGIONAL(2) data sets ••••••••
56
REGIONAL(3) data sets •••.•••••••••••••. 57
REGIONAL(3) files
in multitasking, with EVENT option •. 91
register usage ••• ., •••••••••••••••••••• 161
REPLACE linkage editor statement ••••••. 44
REPLY message length •••.•••••••••••••• 141
REPLY option ................. '........... 132
restarts
See checkpoint/restart
return code setting by PL/I •••••••••••. 83
return codes
in mul titasking ••••••••••••••••••••. 89
return values
declaration of attributes •••••••••• 105
REWIND option ...................... 143-144
REWRITE statement
in locate-mode I/O ••••••••••••••••. 114
RKP DCB subparameter ••••••••••••••••••. 67
run-time block management ••••••••• 158-160
0
..........
SADV ............................... •.• •• 163
scale factor for FIXED DATA ••••••••••• 152
scope of variables in multitasking .•••. 88
SD
See external symbol dictionary
SDV string dope vector ••••••••••••••• 136
SDV, format of •••••••••••••••••••••••• 161
SECONDARY attribute ••••.•••••••••••••. 273
sequential access I/O •••••••••••••••••• 51
SEQUENTIAL access of REGIONAL data sets 56
sequential data set
definition •••••••••••••••••••••••••. 19
SEQUENTIAL files
in multitasking I/O ••••••••••••••••• 91
SETS list, size of •••••••••••••••••••• 152
SIGNAL statement ........................ 129
SIZE CONDITION
for even precision FIXED DECIM~L
da ta •••• '. • • • • • • • • • • • • • • • • • • • • • • • •• 110
SIZE disabled ••••••••••••••••••••••••• 108
size of load module ....... '. '. • • • • • •• • • • •• 45
SI ZE opti on .......... '••••••••••••••••• '.. 25
SIZE requirements •••
23
SKIP, used for non-PRINT file ••••••••• 142
SNAP option, use of •••••••••••• '. '. • • •• 131
in multitasking ...................... 89
SNAP SySTEM ••••••••••••••••••••.••••••• 132
SORMGIN option ••••••••••••••••••••• 27,135
SORT, PL/I SORT •••••••••••••••••••• 95-103
source keys, REGIONAL data sets •••••••• 55
source program listing ••••••••••••••••• 32
source statement numbering ••.••••••••••• 32
source statement record format •••••••• 135
SOURCE/NOSOURCE option ................... 29
SOURCE2/NOSOURCE2 option ••••••••••••.••• 29
0..................
284
space allocation
for REGIONAL data sets ••..••••••••••• 73
SPACE parameter ......... co. • • • • • • • • • • • • • • 59
space requirements for compiler data
set s ••••.••••••••• '................. '. • •• 22
spanned VS-format or VBS-forrrat recor1s 61
spanned records .............
125
spanned records, use of •••••••••••••••• 64
STACK DCB subparameter ••••••••••.•••••. 66
standard file names ••••
113
SYSIN implicit use •••••••••• '•••••.• 113
statement numbering ..................... 32
listed in attribute table ••••••••••• 33
listed in cross reference table ••••• 33
statement size ..................... 148-149
statements, number in a procedure ••••• 148
STATIC INTERNAL control section
name in ESD listing .................. 36
STATIC INTERNAL storage map •••••••.•••• 37
STATIC variable in overlay segment ••.• 104
sterling constants ........................ 150
STERLING PICTURE data ........ ~ • •• • • •• •• 137
STMT option ................................ 48
STMT /NOSTMT option •••••••••••••.•••••••• 28
STOP statement
in a subtask .............. '•••••••••.•• 93
storage dumps
at execution time •• '....... ,~ • •• • • • • •• 132
storage dumps in multitasking ••••.••••. 89
storage for file opening and closing ••• 82
storage requirements
for PL/I SORT •••••• '••••••••••••••••• 95
storage requirements for object program 33
storage, h1nts for the use of ••••• 122-123
STREAM data set creation and access ..... 70
STREAH-oriented I/O .................... 125
record forma ts .............
63
access method ••••••• '" • • • • • • • • • • • .. • •• 78
based variable restriction ••••••••• 115
string array dope vector •••••••••••••• 163
STRING built-in function •••••••••••••• 153
string contants, size of •••••••••••••• 150
string data .....................
136
string dope vector SDV ••••••••••••••• 136
string dope vector, format of • '.
161
string functions
supported by in-line code ....... 120-122
string handling
in multitasking •••• '................... 92
string handling - programming hints
111
string handling, for improved speed ••• 117
strings
for GET LIST or DATA ••••••••••••••• 113
strings, VARYING
intermediate result string length •• 151
structure dope vector, format of •••••• 163
structure expressions - nesting level • 150
structure mapping ••••••••••••••••••••• 164
PACKED and UNALIGNED compared •••• 14-15
structures, format of .................. 140
subscript variables ...................... 117
subscripted identifiers, length of •••• 153
SUBSTR pseudo-variable •••••••••••••••• 111
switches. efficient use of •••••••••••• 117
SYSIN DO statement....................... 20
SYSLIB DO statement ••••••••••••••••• 18,20
SYSLIB DO, llse of ................ '.. • • .. • •• 123
SYS PRINT •• '.............. '............. '. '. .. .. • •• 20
n
0
•
•
••
•
•
•
•
••
••••••••••••••
A
•
•
•
0
..........
OJ
•
•
•
•
•
•
••
•
••
••
use in ST~EAM IIO in multitasking ••. 91
SYSPRINT implicit use .................... 113
SYSPU~CH/SYSLIN in batched compilation . 24
system requi rements ...................... 78
S YSUT 1 ................................... 20
SYSUT3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
SYS1.LINK modules ••••••..•••••.•••••••. 83
UNSPEC built-in function
length of bit-string returned •••••• 152
UNSPEC pseudo-variable, - programming
hint ••••••••••••••• ................... 111
UPDATE, INDEXED data sets •• ~ ............ 52
uti 1 it y da t a set s ....................... 2 0
tab controls for STREAM IIO •••••••••••• 69
task data, format of •••••••••••••••••• 138
TASK option •••.••••.••••••••••.••••.•• 148
,task priority ............................. 90
task termination ......................... 93
tasking
1?seudo-register for ................... 36
tasking
See multitasking
temporary results, maximum permitted •• 151
temporary workspace VDAs ............. '.. 159
testing programs ................ ".... 128-134
text b 1 0 c k s i z e .."....................... 2 9
TIME option .................... "......... 7 9
time taken for compilation •••••••••. 40,79
timer feature •.••••••••.••••••••••••• ,•• 78
TITLF option .................... 51,141,146
trace of active procedures •••••••••••. 131
TRANSMIT condition •••••••••••••••••.•. 129
TRTCH DCB subparameter .................. 66
V-format variable-length records ••. 61,143
validity check direct-access ••••••••••• 66
variable data area VDA. .................. 159
variable-length V-format records ••••.•• 61
variable-length recoris
use of spanned records ••••••••••••• 125
variables, maximum number of •••••••••• 148
VARYING string, assignment to ••••••••• 111
VBS-format spanned-blocked records • ~1,143
VDA
for temporary workspace .............. 159
volume
definition of ....
17
VOLUME parameter ......................... 59
VS-format spanned records ••
61,143
U-format records ......
143
UCS printer, suppress TRANSMIT .•••.•••. 66
UNALIGNED attribute ......... " ••••••••••• 14
effect on structure mapping .••••.•• 166
See also structure mapping •..•••••. 164
UNDEFINEDFILE condition
for a stream file "................. 113
possible caus es .... "................. 112
UNIT parameter .............................. 58
M
D
....................
n
•••••••
WAIT statement ........................... 146
in multitasking ................... 88-89
warning messages
See messages
WHILE clause, use of ............ " •••••. 127
••••••••••••••••
XC~L
linkage editor options ............. 44
XREF linkage editor option ••••••••••••• 44
XREF INOXREF option .............. co • • • .. • • • 26
48-character
semicolon
48-character
60-character
set
in DATA-directed 1/0 ••••• 113
set, use of reserved wor1s 142
set ......................... 28
Index
285
READER'S
COMME~IT
FORM
Form C28-6594-4
IBM System/360
PL/I (F) Programmer's Guide
• How did you use this publication?
As a reference source
As a classroom text
As a self-study text
............. 0
o
o
• Based on your own experience, rate this publication
As a reference source:
Very
Good
Good
Fair
Poor
Very
Poor
Very
Good
Good
Fair
Poor
Very
Poor
As a text:
• What is your occupation?
• We would appreciate your other comments; please give specific page and line references
where appropriate. If you wish a reply, be sure to include your name and address.
• Thank you for your cooperation. No postage necessary if mailed in the U.S.A.
C28-6594-4
YOUR COMMENTS PLEASE ....
This SRL bulletin is one of a series which serves as reference sources for systems analysts, programmers
and operators of IBM systems. Your answers to the questions on the back of this form, together with your
comments, will help us produce better publications for your use. Each reply will be carefully reviewed by
the persons responsible for writing and publishing this material. All comments and suggestions become
the property of IBM.
Please note: requests for copies of publications and for assistance in utilizing your IBM system should be
directed to your IBl\1 representative or to the IBM sales office serving your locality.
fold
fold
.........................................................................................................................
FIRST CLASS
PERMIT NO. 1359
WHITE PLAINS, N.Y.
BUSINESS REPLY MAIL
NO POSTAGE NECESSARY IF MAILED IN THE UNITED STATES
POSTAGE WILL BE PAID BY ...
IBM CORPORATION
112 EAST POST ROAD,
WHITE PLAINS, N.Y. 10601.
Attention: Department 813 (HP)
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 9 • • • • • • • • • • • • • • • • • t-t • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
fold
fold
International Business Machines Corporation
Data Processing Division
112 East Post Road, White Plains, N.Y.I060t
[USA Only]
IBM World Trade Corporation
821 United Nations Plaza, New York, New York 10017
[International]
:
C2&6594-4
OJ
s:
u:
<
l!l.
CD
3
t::
g
International Business Machines Corporation
Data Processing Division
112 East Post Road, White Plains, N.Y.I06ot
[USA OnlyJ
IBM World Trade Corporation
821 United Nations Plaza, New York, New York 10017
[International]
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 : 2012:06:12 20:40:39-08:00 Modify Date : 2012:06:12 20:54:40-07:00 Metadata Date : 2012:06:12 20:54:40-07:00 Producer : Adobe Acrobat 9.51 Paper Capture Plug-in Format : application/pdf Document ID : uuid:2064297c-b64e-4829-9874-be455e803476 Instance ID : uuid:7507cfd1-9669-4635-8ecb-4dd16b74df25 Page Layout : SinglePage Page Mode : UseOutlines Page Count : 288EXIF Metadata provided by EXIF.tools