Systems Reference Library
IBM System/360 Time Sharing System PL/I Language Reference Manual
File No. S360-29 Order GC28-2045-1
This publication is a companion volume t.o IBM System/360 Time Sharing System: PL/I Programmer's Guide, Order GC28-2049. Together the two books form a guide to the writing and execution of PL/I programs under the control of an IBM System/360 'rime Sharing System that includes the PL/I compiler.
TSS
This publication is planned for use as a reference book by the PL/I user. It is not intended to be a tutorial publication, but is designed for the reader who already has a knowledge of the language and who
requires a source of reference material.
It is divided into two ~arts. Part I contains discussions of concepts of the language. Part II contains detailed rules and syntactic desc.riptions.
Although implementation information is included, the book is not a complete description of any implementation environment. In general, i t contains
information needed in writing a program; i t does not contain all of the information required to execute a Frogram. For further information on executing a program refer to the publication: IBM System/360 Time
Sharing System: PL/I Progranlmer's Guide.
Form GC28-201.19.
The features discussed in this
publication correspond to thOSE implemented in tne fifth version of the PL/I (F)
Compiler in Release 18 of IBM System/360 Operating System.
PREFACE
RECOMMENtED PUBLICATIONS
The following publications contain other information that might be valuable to the PL/I user or to a user who is learning PL/I:
IBM SYGtem/360 Time Sharing System:
PL/I Programmer's Guide, Form
GC28-2049 ~
A pL/r Primer, Form GC28-680B A Guide to PL/I for Commercial
Programmers, Forn. GC20-1651
A Guide tc PL/I for FORTRAN Users, Form GC20-1637
The following publication contains a description of the IBM System/360 Time Sharing System:
IBM System/360 Time Sharing system:
Concerts and Facilities, Form GC28-2003
i i i
INTRODUCTION
PART I: CONCEPTS OF PL/I
SECTION 1: BASIC CHARACTERISTICS OF PL/I Machine Independence
Program Structure
Data Types and Data Description Default Assumptions
Storage Allocation Expressions
Data collections Input and Output
Compile-Time Operations Interruption Activities Multitasking
SECTION 2: PROGRAM ELE~ENTS
Character Sets 60-Character Set 48- Character Set
Using the Chara,cter Set Identifiers
The Use of Blanks Conunents
Basic Program Structure
Simple and compound Statements Stat€ment Prefixes
Groups and Blocks SECTION 3: DATA ELEMENTS Data Types
Problem Lata Arithmetic Data
Decimal Fixed-Point Data Sterling Fixed-Point Data Binary Fixed-Point Data Decimal Floating-Point Data Binary Floating-Point Data ccmplex Arithmetic Data Numeric Character Data
Precision cf Arithmetic Constants String Data
Character-String Data Bit-string Data
Program Control Data L3bel Data
Event Data Task Data Locator Data Area Data
Data Organization Arrays
Expressions as Subscripts Cross Sections of Arrays Structures
Qualified Names Arrays of stru~tures
Other Attributes
The DEFl"I::D Attribute The LIK~ Attricute
'fhe ALIGNED and UNALIGNED Attributes
CONTENTS
1 3 5 5 5 5 5 6 6 6 6 7 7 7 8 8 8 8 8 9 10 10 10 10 11 11 13 13 13 13 14 15 15 15 16 16 17 18 18 18 20 20 20 21 21 21 21 21 22 23 23 23 24 25 25 25 26 26 v
The INITIAL Attribute. • 27 SECT ION 4: EXrRE~;:oaONS AND DATA CONVERSION • • • • • 29
Use of Expressions • • • • • 29
Data. CorNers iOll in orerational Expressions • • • • • 30
Problem Lata ConvPI.sion • • • • • 30
Hit-string to Character-String 30
Charact.er-Strinq to Bit-string • • • • • 30
Character-String to Arithmetic 30
Arithmetic to c~aracter-String 30
IHt-·string to Arithmetic • • • • • • • • • 30 Arithmetic to Bit-string • • • • • • • 30
Ari thmetic Mode Conversion • • • • 30
Arit~hnHot ic8a~;e and Scale Conversion • • • • • • • • • • 30
Locator Ddta Conversion. • • • • • • • 31
Offset tu Pointer . 31
Pointer to Offset . . • • 31
Conversion by Assignment • • • • • • 31
Exprt:s,;ion Opera. tions . • • • • • • • • • 31
Arithmetic o~erations . • • • • • • 31
Data Conversion in ArithJT1etic Operations • 0 • • 31
Results of Arithmetic operations • 32
Bit-string vlJerations . • • • • 34
Co~rariscn Operations 0 • • • • 34
COLcatenation Cperations 0 • • • • 35
('cli<lcinat.i.ons of Operations • • • • • 36
}'riority cf Cperat.crs • 36
luray Expres,;icns . • • • • • 37
Prefix Operators and Arrays : • • • • • • • 38 lliflx Operator:; and Arrays • • • • • • • • • • 38
Arri:lY and Element Cperations • • • • 38
Array and Array OpErations 38
Array and structure operations 39
Data Conver~i0n in Array Expressions • 39
Structure Expressions . • 39
Prefix Or~rators and Structures . • • • • • 39 Intix OceraLors and Structures • • • • • • • • • • • 39 Struct.ure and Element Operations • • • • 39 Structlrre and Structure operations • • • • • • • • 40 Structure Assignment BY NAME • • • • • • • • • 40
Operands of Expressions . 0 40
Function rteference Orerands • • • • • 0 40
Concepts of Data Conversion • • • 41
Tar~et Attributes for Type Conversion 0 • • • • 42 Bit to Character and Character to Eit • • • • • 42
Arithmetic to String • • • • • 43
Str ing to Arithmetic • • • • 43
Target Attributes for Arithmetic Expression Operands 43 Precision and Length of Expression Orerand 'rargets • • • • • • '0 44 Precision for Arithmetic Conversions • • • • • • • • • • 44 Lengths of Character-String Targets • • • • • • • • 45 Lengths of Bit-string Targets • • • • • 45 Conversion of the Value of an Ex[ressicn • • • • 45
Conversion Operations • • • • • 45
The CONVERSION, SIZE, FIXEDOVERFLOW, and OVERFLOW Conditions 46 SEC'l'ION 5: STATE~;ENT CLASSIFICATION •
Classes of Statements . • • Descriptive Statements
The DECLARE Statement • Other Descriptive Statements Input/Output Statements •
RECORD I/O Transfer Statements STREAM I/O Transfer Statements Input/Output Control Statements • The DISPLAY Statement • . • • • • Data Movement and computational Statements
The Assignment Statement • • • •
48 48 48
• 48
• 48
• 48
• • • 49 49
• 49
• 50
• 50
• 50
The STRING O~tion . . • . . Program structure Statements
The PROCECURE Statement . The ENTRY Statement The BEGIN Statement •
fhe END Statement . . •
The ALLOCATE and FREE Statements Preprocessor Statements •
Control Statements
The GO TO Sta tement • . The IF Staten,ent
The DO St_a terrent
Noniterative DO statements
The CALL, "ETURN, anti E[~D Statements The STOP and EXIT Statements
Exception control Statements The ON ~;t at eITEnt
The REVERT Statement The SIGNAL St aternent
St-CTION 6: LlLOCKS, l'LOW OF CONTROL, AND S'IORAGE ALLOCATION
Blocks . • • •
Procedure Blocks • • • . Degin Blocks . . . . Internal and External Blocks
Use of the END sta ternent With Nested Blocks and DO-Groups
(~ultiple Clcsure)
Activation and Termination of Blocks Activation . . . .
TERMINATION . . • . • . . Begin Block Termination Procedure Termination Program Ter~ination
Storage Allocation Static Storage Automatic Storage • Controlled Storage
BaSed Stora~e . • • • • . • Reactivation of an Active Procedure (RECURSION)
Effect of Recursion on Storage Classes Prologues and Epilogues • •
Prologues
E~i~ogues . . . . .
SECTION 7: RECOGNITION OF NAMES Explicit Declardtion
Scope of an bxrlicit Declaration Contextual Declaration • • . • • • •
Scope of a Contextual Declaration • Implicit Declaration . . . • • Examples of Ceclarations . . • • . Application of Default Attributes • The INTE~NAL and EXTERNAL Attributes
Scope of Member Names of External Structures Multiple Declarations and Amtiguous Heferences SECTION 8: INPUT AND OUTPUT
Data sets . .
¥iles • . . . . The File Attritute Alternative Attributes
The STR£AM and FECORD Attributes
The INPUT, OUTPIT, and UPDATE Attributes The SEQUENTIAL and .:JIRECT Attributes The BUFFERED and UNBUFFERED Attributes Additive Attritut~s . • •
The PRINT At ribute . • The BACKWAkU3 Attribute
• 50
• 51
· 51
• 51 51 52 52 52
• 52 52 53 53 54
• • 54 55 55
• • 55 55 55
• 56
• • 56 56 56 57
• 57 58 58
• • 60
· 60 60 61 61 61
• • 62 62 62 62 63
· 64 64
• 64 65 65 66 66 66 67 67
• 68
• 68 70 70 71
· 71 72
• 72
• • 73
• • 73
• 73
• • 73
• • 73 74 74
• • 74
vii
The KEYED Attribute The EXCLUSIVE Attribute The ENVIRONMENT Attribute • Opening and Closing Files
The OPEN Stateme:lt Irr,plicit Orening
Merging of Attributes •
Associating Cata Sets With Files The CLOSE Statenlent
Standard Files
SECTION 9: STRl:AM-ORIENTED TRANSMISSION • List-Directed Transmission
Da ta-Di:e<.:ted 'l'l:ansmission Edit-Directed Transmission
~ata Transmission Statements
Options of Transmission Statements The FILE and STRING Options The COpy OFtion
Ti,e SKIP Opt'.,; on 'l'he PAGE Of'ti on The LINE Option Date! ,s}?ecifi;;atiorls
Data Lists
List-Directed Data specification List-Dir~~tpd Data in the Stream
L~st-Directed Input Format List-!)irect,'.:d Output Format Datd-Di.cecte,l Ddta specification
Data-'Directed Data in the Stream Data-DirectAd Ir!f,ut Format
Data-DlrecteG Output Format
Length of Data-Directed Output Fields Edit-Direcb .. 'c1 Lata c,pecification
Format Lists Print Files
Standard Fil€ SYSPRINT The EnviLonment Attritute
Record Format Blocking
Line Size and Record Format Buffer Allocation
Data Set Organization Volume Dispositiun
SECTION 10: RECORD-ORIENTED TRANSMISSION Introduction
Data Trans~ission Statements The READ Statement
The WRITE Statement The REWRITE Statement The LOCATE Statement The DELETE Statement The UNLOCK Statement
Options of Transrr,ission Statements The FILE option
The INTO Option The FROM OFt ion The SET Option The IGNORE Option The KEY Option
The KEYFROM and KEYTO Options The EVENT Gfltion
The NOLOCK OFtion Processing Modes
Move Mode Locate Mode
The Environment Attri~ute
74 74 74 74 74 75 75 76 77 77 79 79 79 80 80 80 80 81 81 81 81 81 81 83 83 83 84 84 85 85 86 86 87 88 91 92 92 92 93 93 94 94 94 96 96 96 96 96 96 96 96 97 97 97 97 97 97 97 98 98 98 99 99 99 .100 .101
Record Format . . Blocking
Buffer Allocation • Data set Organization Volume Disposition
Printer/punch Control • • • •
• .101
• .101 .102
• .102 Interchange of Data Between COBOL and PL/I Programs • •
• .103 . • • . 103 .103 Asynchronous Operations Limit • • • • • • • • 103
Track Overflew • • • . • • • • • • .104
.104 consecutive organization • • • •
Sequential UFdate . Indexed Organization
Keys . . . • • Creating A Data Set • Sequential Access •
Direct Access . . . • • • • •
SUJr,mary of Record-Oriented Transmission • Examples of Declarations for Record Files •
• • • 104
• .104
• .106
• .108 .108
• .108
• .108 .109 SECTION 11. EDITING AND STRING HANDLING • • • • • .110
Editing By Assignment . • • • • .110
Altering The Length Cf String Data • • • • • • • .110
Other Ferms of Assignment . • • .111
Input and output OFerations • • • • • .111 The STRING OFtion in GeT and PUT Statements • • • • .111 The picture Specification. . • • • • • • • • • • • • • • • 112 Numeric Character Specifications . • • . • • • • • .112 The '9' Picture'Character in Numeric Character Sfecifications • • 113 The Z and
*
Picture Characters • • • • • .113 The V Picture Character . • • • • • • .113 The Insertion Picture Characters: E. / • • • • • .114The $ Picture Character. . • .114
Sign Specification in Numeric Character Specifications • • • • • 114 overpunched Sign-SFecification Characters: T, I, and R • . 115 Other Numeric-Cnaracter Facilities • • • • • • .115 Character-string Picture Specifications . • • • • • • • • • 115 Bit-string Handling. . • . • . • • • • • . • • • .116 Character-String and Bit-string Built-In Functions .117 SECTION 12: SUBROUTINES AND FUNCTIONS •
Arguments and Parameters
Subroutines • . . . • . • . • • Functions • . • • • . • • •
Attributes of Returned Values • Built-In Functions
Relationship of Arguments and Pararreters Dummy Arguments • • . •
The ENTRY httribute . . • • • • Entry Names as Arguments Allocation of Parameters
Parameter Bounds and Lengths
Simple Parameter Bounds and Lengths controlled Parameter Bounds and lengths Argument and Parameter Types . . . • • Generic Names and References • • • • Passing an Argument to the Main Procedure
.118
• .118 .119
• .120 .121
• • 122
• .123
• • • • • • . 123 .124 .125
• • • • • • • 126
• .127
• .127 .127
• • • • • • • 128
• • • • • .129
• .130 SECTION 13: EXCEPTIONAL CONDITION HANDLING AND PROGRAM CHECKOUT • • .131 .131 .131 .131 .132 .132 Enabled Conditions and Established Action • • • • • • •
Condition Prefixes . • . • . • • • • • Scope of the Co ldition Prefix • • • • • The ON staternens . . • • • • • •
The Null On-Unit • • • . Scope of the ON Statement • The REVERT Statement
The SIGNAL tate~ent
The CONDITION Condition
The CHEC¥ condition • • • • • •
• .133
• .133 .133
• .133 .134
ix
The !O~UK;CRIPTRANGE Condition The S'l'RINGI<ANGE Condition •
Condition Built-In Functions and Condition Codes Examr;le of U~;e of ON-Conditions •
SECTlON 14: BASEL VARIABLES AND LIST PROCESSING • Introduction
Based Variables and Pointer Variables
Point~l Qualification.
Rules and Restrictions Pointer Defining Self-Defining Data The PEF~R Option
Point_er Sett,ln'i, Based Storage Allocation, and Input/Output RPiirl with :;€t
L[)CdU-; wi t,1l and wi thout Set • .''11 locdt,e with ':And without Set Puint.-:! A";,~i,]mrent
The ADD~ BuiL~-in FUnction The NULL Built-in Function Free; ng Based ;;1-(;rage •
The Fr~e ~lritnrnent
lrnF-: l i c; it F U"(c_l n':J
Ar~ab n~d Offs0t~ . l\rca Varia'-,l''':.;
Rul,'s ar.(~ Re:-'trictions
Oftset Variatles
Rule~ and ~est£lctions Al~ocdtion within an Area
~3~i:tin9 Offset. Values.
Thf'; NULL< Built-in Function.
AL ea Assignmt'nt and Input/output The EMPTY Built-in Function • Tne AREA ON-Condition.
1 nrut and Output
Area imd uffset Defining
CorrmunicaLion tetween Procedures Argwllf::r'ts dnd F'arclT,eters
Pointer to Pcinter offset to Point~r • Offset to Offset Pointer to Offset Area to l'.rea
F,eturns fLom Entry Points • Locator Returns •
Area Returns
Var iaille Length Pa rameter Lists • Examples of List Processing Technique SEC'I'lON 15: COMPILf.-TIME FACILITIES.
Introduction
Preprocessor Input and Output • Prefrocessor Scan •
Rescanning and Replacement Preproc('ssor Var iables
Preprocessor Expressions Preprocessor Procedures •
Invccation of Preprocessor Procedures •
Arguments and Parameters for Preprocessor Functions • Returned Value
Examples of Pre~rocessor Functions Use of the SUBSTR Built-In Function • The Preprocessor DO-Group •
Inclusion Of External Text Preprocessor Statements •
SECTION 16: OPTI/'IIZATICN AND EFt'ICIENT PERFORMANCE Introduction
.134 .134
• .134 .134 .138 .138 .139 .139
• .139 .140 .140 .140 .141 .141 .142 .142 .142 .142
• .143 .143 .143 .144 .144 .144 .145 .145 .145
• .145 .146 .146 .146 .146 .147 .147 .147 .147 .147 .147 .148 .148 .148 .148 .148 .148 .149 .149 .150 .153 .153 .153 .153 .154 .155 .156 .156 .156 .157 .157 .158 .159 .159 .159 .160 .161 .161
Effect of Compilation on O~ject Program Efficiency PL/I Options: ORDER and REORDER •
The OReER option • • • • • • • • • • • • . • • • The REORDER option • • • • . • • • • • • • • • • Effect of ORDER and REORDER Options -- Example Compiler option: OPT=N
Loop and SubscriJ;t Optimization Assignment Handling •
INLINE OPERATIONS • Data Conversion • • String Handling • Programming Techniques
Improving Speed of Execution
Methods of Improvement When OPT=O or 1 Methods of Improvement When OPT=2 Avoiding Common Errors
Source Progrdm and General Syntax Program Control . . . • • • • • Declarations and Attributes • • • Assignments and Initialization Arithmetic and Logical operations
DO-groups . . • • • • • • • • • Data Aggregates • • • • . • • • •
Strings . . • . . • • • • • • • • • Functions and pseudo-Variables
On-Conditions and On-Units • • • • • Input/Output • • • • • • •
PART II: Rules and Syntactic Descriptions • SECTION 1: SYNTAX NOTATION
.161
• • • • • • • .161
• .162
• • • 162 .162 .162
• .163
• .163 .164
• • • 164
• .166
• • • • • • • .166
• • • • 166
• • • . 166
• .170 .170
• .170
• • .171 .171 .173
• .174
• • • • • • • .176
• • • 177
• • • 177
• .177 .177 .178
• .181
• .183 SECTION 2: CHARACTER SETS WITH EBCDIC AND CARD-PUNCH CODES1 • .185
60-Character Set 48-Character Set
SECTION 3: KEYWORDS AND KEYWORD ABBREVIATIONS • SECTION 4: PICTURE SPECIFICATION CHARACTERS.
Picture Characters for Character-String Data Picture Characters For Numeric Character Data •
Digit and Decimal-Point Specifiers Zerc Suppression Characters .
Insertion Characters • . • . • • • Signs And Currency Symbol • • • • • credit, Debit, And Overpunched Signs Exponent Specifiers •
Scaling Factor • • • •
?terling Pictures •
SECTION 5: EDIT-DIHECTED FORMAT ITEMS Data Format Items • .
Control Format Items
Remote Format Item • • • • • Use of Format Items • • •
ALPHABETIC LIST OF FORMAT ITEMS • The A Format Item •
The B Format Item The C Format Item The COLUMN Format Item The E Format Item The F Format item The LINE Format Item The P Format Item • • • The PAGE Formit Item The R For~lt Item • .
• .185
• .186 .187 .192 .192
• • • • 193 .194 .194
• • • • 196
• • . 197
• .199 .200 .200
• .201
• • .203 .203
• .203 .204
• .204
• • • 204
• .204 .204 .205
• • • • • • • 205
• • .206 .207 .208
• • • • • • • 208 .208
• • • • • • • • . 208 xi
'I'hp ~;KIP Fonriat Item The X Fonn,'l ItEm, •
SECT ION b; PHOl!Ll:t-1 LATA CONVERSION Aritrunetic Conver~ion
Floa t i Il'l" F '-,i nL Ccnversion l>lod,c COllv,i~.r,~ion .
Precision c~:)nvt2.r:~:~ion
Base Con~c.rsion .
Cuded At ithmpti(; r(o Numeric Charact,er N\:Jl'e.r ie "hdL<lcter \ 0 Coded A1-ithrretic • • Data Ty~p ~onver~ion
(,ha.r de L,-,r-"t 1 i n'l to Arithmetic
p·,d t,nJ[let Lf": 1.i~ Charactez.-String • • • • Ct;,nJ.cl:eL-:;tring to Bit -string
Pi +-sr_ri IFl t C Chardcter-String 1,1: L tIllEr"' 1 (. 1.0 13,;"1_ -., t l i ng
n.Lt-~:t,r:L;:q '-0 Arithnlet',lC
T~blc of Ccillng Values. • • • • • • • • • •
'Idb;'('~_' for k"';111t~; of Arithmet_ic Operations SECT 1.:N "/; [,'HL'!'
n·;
H1NcTJONS AND PSEUDO-VARIABLES Co.: p<1 Ld t JJ)Jl i 1 "'LL 1 t - [ TI l'cnct ionsSt>:inq HaJji.,ll::q Dll.ilt-in Funct,ions
~Jl'~' Str11'(, HU..Llt-in Function t'SC1C·l ;-... tLl~I'~ ::-'flilL -in Function.
"':IL\.~-\ ~·-;t 1.'. ;,~_, .\; l}1 " .. ~r~ ?unctiun HIC}! ::;'.("J:1" 2:1j,.LI:··Jn Function.
lNflE:<, ST ~-u,,~ SHiH-in Function o'.ririU Built--lIl Function
:~(.W ;etri.ng built-· ill Funct_ion id:::U.,\T St'l;/~ Fl<l1.1.t:-in Yunction •
S'I'RI~)G ;;, .inS hd __ l,~-il1 f'unction
;,I)H,;Ti( ~i'.Lin<1 i:m::'lt--iTl Function.
The TkAl-...,;' V'i'. :3L r ,L"J Buil t-in Function
UN~;P:t:C S ' r i ;,q EUl Jt -in Functior, • '7'JJe V1:.'i.l. F Y :_,: -' l i l g buil t- ir. Function • Ar i thIT'E-L i,c' "'Ji t t "In F UIh.::ti ons • • • • • • •
AI'S Arit:,;h(ci.J,C Built-in Function ADD Arit~netic duilt-in Function
bINARY Arjrhmetic Built-in Function.
eEl L Ar i. t L:l:etic Sui 1 t -ill Function • • COMPLEX IULt hW€i:1C Built-in Function CON.)(; A.ut.tltl,etj.c Guilt-in Function DECIMAL A.ril~netic Built-in Function DIVIDE Arl t lmet_lc Built-in Function FIXED l\riLullet.ic; Built-in Function FLOAT ALithmetic Built-in Function ,FLOOk Ar i t lII1,et ic Bui 1 t- in Function lMA,; Ari thmetic Built-in Function MAX ArithwFlic Built-in Function MIN Arithmetic Built-in FUnction MOD Ari~hmptic Built-in FUnction
MULTIPLY Arithmetic Built-in Function.
PRECISION Arithmetic Built-in Function hEAL Arithmetic Built-in Function •
ROUND AritIluletic Built-in FUnction • • • • SIGN Arit_hmetic Built-in Function.
TRUNe Arithmetic Built-in Function Mathematical Built-in Functions.
ATAN Mathematical Built-in Function • ATAND lVJathemati.cal Built-in Furcticn
ATA~H Mathematical Built-in Function COS Mathematical Built-in Function COSD Mathematical Built-in FUnction • COSH Mathematical Built-in ~unction
ERF Mathemat ical Built-in Function
ERFC Mathematical Built-in Function • • • • • •
• • • 209 .209
• .210
• • • • 210
• .210 .210 .210
• .211 .211
• .211 .211 .211
• • • • • .212 .213
• • • .213 .214 .214
• .214
• .214
• .220 .221 .221
• .221
• .221
• • • • • • .222
• .222 .222
• • • • • • .223
• .223
• .223
• .224 .224
• .224
• .225
• .226 .226
• .227
· .227
• • • .227
• .227 .227 .228 .228 .2,28 .228
• .228 .229
• • • • 229 .229
• .229 .229 .230
• .230
• .230
• .230 .231
• • • 231 .231
• .231 .233
• .233 .234
• .234
• .234
• .234
• .234
{
• .234 EXP Mathematical Built-in Function
LOG l-lathematical Built-in Function LOGlO Matfl'2matical Built-in Function LOG2 Mathematical Built-in Function SIN Matnematical Built-in Function SIND Mathematical Built-in Function SINH Mathematical Built-in Function
• • • • • .234 .235 .235
• • • • • • 235
SQRT Mathematical Built-in Function •
TAN Mathematical Built-in Function • • • • TAND Mathematical 9uilt-in Functions
TANH Mathematical Built-in Function • • Summary of Mathematical Functions • •
Array Manipulation Built-in FUnctions • • • • •
ALL Array :tJanilo;ulation Function. • • • • • • • • • • • ANY !,rray Mani[ulation Function . • • • • • • • • • DIM Array ~anipulation Function • • • • • • HEOUND Array Hanipulation FUnction • • • • • • • • • LBOUND Array Manipulation Function • • • • PCl.LY Array Manipulation Function • • • • • • • • • PROD Array t-lanipulation Function • • • •
• .235 .235 .235
• .235 .235
• .236
• .236 .236 .236
• • • 236 .236
• .237
• .237 .237
• .237 SUM Array Manipulation Function . • • • • • • • • • 237 Condition Built-in Functions . • . •
DATAFIELD Condition Built-in Function . ONCHAR CondiTion Built-in Function ONCODE Condition Built-in Function ONCOUNT Condition Built-In Function • ONFILE Condition Built-in Function ONKEY Condition Built-in Function • • ONLOC Condition Built-in Function • • ONSOURCE Condition Built-in Function Based Storage Built-in Functions . • . .
ADDR Based Storage Built-in Function EMPTY Based Storage Built-in Function NULL Based Storage Built-in Function NULLO Based ::~torage Built-in Function Multitasking Built-in Functions • •
• .238 .238 .238 .238
• • • 238 .238
• .239 .239 .239
• .239 .239
• .239
• .240 .240
• .240 COMPLETION Multi tasking Built-in Function • • • • • • .240 .240 .240 STATUS Multit_asking Built-in Function • • • •
Miscellaneous Built-In Functions • • • • • • • ALWCATION Built-in Function
COUNT Built-in Function • • DATE Built-in FUnction LINENO Built-in Function TIME. Built-in FUnction Pseudo-Variables • . . • • • •
COMPLETION Pseudo-variable COMPLEX Pseudo-variable
IMAG Pseudo-variable ONCHAR pseudo-variable ONSOURCE Pseudo-variable REAL Pseudo-variable STATUS Pseudo-variable STRING Pseudo-variable SUBSTR Pseudo-variable UNSPEC Pseudo-variable SECTION 8: ON-CONDITIONS Introduction . • • . . • •
Condition Codes (ON-codes) Multiple InterrJptions Section OrganizatiGn . . • . • Computational Conditions
The CONVERSION ;ondition The FIXEOOVFHFLOW Condition The OVERFLC. Condition The SIZE Condition . • • •
The UNDERFLOW Condition • • The ZERODIVIDE Condition
• .240
• .241
• • • • .241 .241 .241 .241 .241
• .242
• • • 242
• .242 .242
• .242
• • • • • • 242 .242
• .243
• .243
• .244
• .244
• • • • .244 .246 .246
• • .247 .247
• .248
• .248
• .248
• .248 .249
xiii
• .249
• .249
• .249 Input/Output Conditions • •
The ENDFILE Condition The ENDPAGE Condition The KEY Condition • . The NAME condition
• • • • • • • 250 The PENDING Condition •
The RECORD Conditien The TRANSMIT Condition
The UNDEFINEDFILE Condition •
• .250
• .250
• • • 250 .251
• .251
• .252 Program-Checkout Conditions • • •
The CHECK Condition • • • • • • • • • • • • • .252 The ~TRINGRANGE Condition • • • • • •
The SUBSCRIl''IHANGE condition
List Processing Condition • • • • • The AT<EA Condition • • • •
System Action Conditions • • • • The ERROR Condition • •
The FINISH Condition • • • • • • • • User-Named Condition
The CONDITION Condition
• .254 .254
• • • • 254
• .254
• .255
• .255
• .255
• .255
• • • 255 BECTIGN 'J: A'J."TPIBUTES . • . • • • • • • • • • • • .256
Specification cf Attril:utes • • • • • .256
Fact.oring of At:tributes • • • • • • .256
Data Attributes . • • • • • • • • • • • • • .256 Prohlem D~ta . . . • . . . • . • • • • • • • • • • • 256 Program Cord:.rol Data • • • • • • • • • • • • .257
Entry Name Attributes. • • .257
File Description AttribJtes • • • • • .257
Scope Attributes • . . . • • • • 257
Storage Class At Lributes • • • • • • • .258 Alphabetic I,ist of Attributes • • • • • • • • • 258 ll,LIGNED dnd UNALIGNED (Data Attributes) • • • • • • • .258 AREA (Pro9ram Control Data Attribute). • • • • • .259 AUTOMATIC, STATIC, CONTROLLED and BASED (Storage Class
Attributt.~~s) • • • • . . • • • • • • • • •
BACK~1ARfk; (File Description Attribute) • • • • • • • • • BASED (storage Class Attibute) • • • • • • • • • • • • BINARY and DECIMAL (Arithmetic Data Attributes) • • • • • BIT and CHARAC'I'ER (string Attributes) • •
BU:FF'ERED and UNBUFFERED (File Description Attributes) • BUILTIN (Entry Attribute) • • • • • • • • • •
CHARACTER (string Attribute) • • • • • • • • COMPLEX and REAL (Arithmetic Data Attributes) CONTROLLED (Storage Class Attribute)
DECIMAL (Arithmetic Data Attribute) • DEFINED (Data Attribute) • • • • • • Dimension (Array Attribute) • • • • •
DIRECT and SEQUENTIAL (File Description Attributes) • • ENTRY Attribute • . • . • • • • • . • •
ENVIRONMENT (File rescription Attribute)
EVENT (Program Control Data Attribute) • • • • • • • • • EXCLUSIVE (File Description Attribute)
EXTERNAL and INTERNAL (Scope Attributes) FILE (File Description Attribute) • • • • • • FIXED and FLOAT (Arithmetic Data Attributes)
FLOAT (Arithmetic Data Attribute) • • • • • • • • • • GENERIC (Entry Name Attribute) . • • • • • • • • • • •
INITIAL (Data Attribute) • • • • • •
INPUT, OUTPUT, and UPDATE (Fil~ r:escriFtion Attributes) • IN'fERNAL (Scope At tr ibute) • • • •
IRREDUCIBLE and REDUCIBLE • • • • • • • KEYED (File Description Attribute)
LABEL (Program Control Dat? Attribute) Length (String Attribute) • • • • •
• .260
• .261 .261
• .261
• .262
• .262
• .262 .263
• .263 .263
• .263
• • • • 263
• • • 265
• .266 .266
• .267
• .261 .268 .269
• .269 .269
• .269
• .269 .271
• .273
• • .273
• .273
• .273
• .273 .274 LIKE (Structure Attribute) • • • •
OFFSET and POINTER (Program Control Data Attributes) OUTPUT (File Description Attribute) • • • • • • • • •
• • • • 274
• • • • • • 275
• • • • • • 215
PICTURE (Data Attribute) • • • • • • POINTER (Program Control Data Attribute) POSITION (Data Attribute) • . • . . • Precision (Arithmetic Data Attribute) PRINT (File Description Attribute) REAL (Arithmetic Data Attribute)
.275
• .278 .278
• • .278 .279 .279 RECORD and STREAM (File Description Attributes) . • .279 Reducible . . • • • • • • • • • • •
RETURNS (Entry Name Attribute)
SEQUENTIAL (File Description Attritute)
• • • 279
• • • .279 STATIC (st.crage Class Attribute) • • • • • .280 .280 STREAM (File Description Att.ribute) .
TASK (Prograrr Control Data Attribute) UNALIGNED (Data Attribute) • • • • • UNBUFFERED (File Description Attribute) • UPDATE (File Description Attribute)
VARYING <String Attribute}
10: STATEMENTS ALLOCATE Statement
Assignment Statement BEGIN Statement CALL Statement CLOSE Statement DECLARE Statement • DELAY Statement • • DELETE Statement DISPLAY Statement • DO Statement • • • • END Statement •
ENTRY Statement • EXIT Statement FORl".AT Statement FREE Statement
• .280 .280 .280 .280 .280 .280
• .281
• .281
• .283 .286
• .287
• .288
• • • • • • • • • • • 288
• .289 .289 .290
• .290 .292 .293 .293
• .294
• • • • 294 SECTION
The The The The The The The The The The The The The The The The The 'l'he The The The The The The The The The The The The The The The
GET Statement • • • GO TO Statement • • IF Statement
LOCATE Statement Null Statement
• • • • • • • • • • • • • • 295
ON Statement OPEN Statement PROCEDURE Statement PUT Statement • • READ Sta tement RETURN Statement REVERT Statement REWRITE Statement • SIGNAL Stat.ement STOP Statement UNLOCK Statement WAIT statement WRITE Statement • • Preprocessor Statements •
The %ACTIVATE Statement
The % Assignment Statement • • • • The %DEACTIVATE Statement •
The %DECLARE Statement The %00 Statement • •
The %END Statemlnt • • • • • • • • The %GO TO Stah:ment
The %IF statement • • • The %INCLUDE Statement The % Null st: at:';ment The %PROCED', :E Statement
The Preprocessor RETURN Statement
• .296
• • • • 296
• .297
• .297
• • • • • ..297
• • • • • .299
• • • • 300
• JOl
• • • • • • 303 .305
• .305
• .306
• • • 307
• .307
• .307
• .307
• .308
• • • 309
• .309 .310 .310
• .310 .311
• .311 .312 .312
• • • .312
• • • • 313
• .313
• .314
xv
SECTION 11: DATA MAPPING Structure Mapping •
• • • • • .315 .315 Ru les • • . • . . • • • • • • • • • • • 315
Rules for Orcler of Pairing Rules for Mapping One Pair Effect of UNALIGNED Attribute Example of Structure Mapping Record Alignment • . . • . SECTION 12: DEFINITIONS OF TERMS INDEX •
FIGURES - - - - -
Figure 1. Some Functions of Special Characters Figure 2. Target Types for Expression Operands Figure 3. Precision for Arithmetic Conversion.
Figure 4. Lengths of Character-String Targets • • • • • • Figure 5. Lengths of Bit-String Targets • • • •
Figure 6. Circumstances that can Cause Conversion.
Figure 7. Scopes of Data Declarations • • • • • • Figure 8. Scopes of Entry and Lahel Declarations
figure 9. General Format for Repetitive Specifications
.315
• . 316 .316 .318
• • • 326 .329 .336
9 42
• 43 45 45 46 67 68
• 82 Fiqure 10. Examrle of Data-Directed Transmission (Both Input and
Output) . • . . • . . • . • • . . . • . • • • • • • • • • 87 Fiyure 11. Options and Format IteJ11s for Controlling Layout of
PRINT Files . . . • . • • . • • • . • • • • • • • • • • • • 91 Figure 12. Relationship Between Line Size and Record Size
Figure 13. Inrut and Output: Move Mode • • . • • • • Figure 14. Locate Mode Input, Move Mode Output • • •
Figure 15. 3taterr'ents and Options Permitted for Creating and
• 94
• 99
• • • • 100 Accessing CONSECUTIVE Data Sets . . . • . • • • • • • .105 F'igure 16. Relationship Between RKP Suboperand and Record Format • • 106 Figure 17. Statements and Options Permitted for Creating and
Accessing INLEXEI: Data Sets • . . . • . . • •
Figure 18. A Program Checkout Routine • . • . • • • • • Figure 19. Exarnfle of TWO-Directional Chain • • • • •
.107
• • • 135 .150 2} 164 Figure 20. Implicit Data Conversions Performed Inline (Part 1 of
Figure 21. Conditions Under Which the String Operations are
Handled Inline . . • • . . • • . • • • • • . • • • • • • .167 Figure 22. Conditions Under Which the String Functions are Handled - Inline • • • • • . . • • • • • . • • • • • .168 Figure 23. Pictured Character-String Examples .193 Figure 24. Pictured Numeric Character Examples • • 194 Figure 25. Examples of Zero Suppression . • • • .195 Figure 26. Examples of Insertion Characters • • 196 Figure 27. Examples of Drifting Picture Characters • . 198 Figure 28. Examples of CR, DB, T, I, and R Picture Characters • • 199 Figure 29. Examples of Floating-Point Picture Specifications .200 Figure 30. EXaJ11ples of Scaling Factor Picture Characters • • • • 201 Figure 31. Examples of Sterling Picture Specifications .201 Figure 32. Examples of Conversion From Fixed-Point to
Character-String • • • • • • • • • • • • • • • • .214 Figure 33. Bxamples of Conversion FroIT Arithmetic to Bit-string • • 215 Figure 34. Data Type of Result of Bit-string Operation • • • • • • • 215 Figure 35. Data Type of Result of Concatenation Operation • • 215 Figure 36. Data Type of Result of Comparison Operation. • • • .215 Figure 37. Data Type of Intermediate Operands of comparison
OpeIa tion • . • • • • • • • • • • • • • . • • • • • • • •
Figure 38. Data Type of Result of Arithrr,etic Operation • • • • Figure 39. Precision for Ari th; letic Conversions • • • • • •
• .216 .216
• • 216 Figure 40. Lengths of Converted Character strings (Arithmetic to
Character-String) • • • . • • • • • . • • • • • • • • • . • • • • • • 217
Page of GC28-2045-1, Issued September 30, 1971 by TNL GN28-3185
Figure 41. Lengths of converted Bit Strings (Arithmetic to Bit-String) • • • • • • • • • • • • • • • . • • • • • • • • • • Figure 42. Ceiling Values • • • • • • . • • • • • • • • • • Figure 43. Attributes of Result in Addition and Subtraction Operations . • . • • • • • • • • . . . • . . • • • . • . Figure 44. Attributes of Result in Multiplication OFerations Figure 45. Attributes of Result in Division operations • • . • Figure 46. Attributes of Result in Exponentiation Operations • Figure 41. Mathematical Built-In Functions (Part 1 of 2)
Figure 48. Permissible Items for Overlay Defining • • • • Figure 48A. Summary of Attributes • • • • . • • • •
Figure 49. General Formats of the Assignment Statement Figure 50. General Format of the 00 staterrent
Figure 51. Format of Option List for READ Statement
Figure 52. General Format of the IDECLARE Statement • • • • Figure 53. Summary of Alignment Requirements for ALIGNED Data Figure 54. Summary of Alignment Requirements for UNALIGNED Data
• • .217
• • • 217 .218
• .218 .219
• • . 219 .232
• .259
• .280 .284 .290 .303
• .310
• • .317
• .318 .319 Figure 55. Mapping of Minor Structure G
FigUre 56. MaFPing of Minor Structure E Figure 51. MaFPing of Minor Strucrure N
Figure 58. Mar-ping of Minor Structure S Figure 59. Mapping of Minor Structure C Figure 60. Mapping of Minor Structure M
• • • • • • • • 320
• • • • • • • • 321
• • • • • • • • 322
Figure 61. MaFping of Major Structure A
FigUre 62. Offsets in Final Mapping of Structure A Figure 63. Format of Structure S • • • • • Figure 64. Block Created from Structure S
Figure 65. Block created by Structure S With Correct Alignment Figure 66. Alignment of Data in a Buffer in Locate ~ode
Input/Output, for Different Formats and Data Set organizat.ions
• .323 .324 .325
• .326
• .326
· . .326 .327
• • 328
x vi. i
An expLanation of the syntax Language used in this publication to describe ele- ments of PL/I is contained in Part II. Sec- tion 1, "Syntax Notation."
IMPLEMENTATION CONSIDERATIONS
This publication reflects features of Ithe TSS/360 version of the PL/I compiler.
No attempt is made to provide complete implementation information. Discussion of implementation is limited to those features That are required for a full expLanation of
the language. For example, references to certain parameters of the DDEF conmand are essential to an expLanation of record- oriented input and output fiLe
organization.
Implementation features identified by the phrase "for System/360 implementa- tions ... apply to all impLementations for IBM System/360 computers. Features identi- , fied by the phrase "for the TSS/360 PL/I
compiler ••• • appLy specifically to the PL/I compiLer under the IBM System/360 Time Sharing System.
PART I: CONCEPTS OF PL/I
Introduction 3
The modularity of PL/I, the ease with which subsets can be defined to meet dif- ferent needs, becomes apparent when one examines the different features of the lan- guage. Such modularity is one of the most important characteristics of PL/I.
This chapter contains brief discussions of most of the basic features to provide an overall description of the language. Each is treated in more detail in subsequent sections.
~~CHINE INDEPENDENCE
No language can be completely machine independent, but PL/I is much less machine dependent than most commonly used program- ming languages. The methods used to achieve this show in the form of restric- tions in the language. The most obvious example is that data with different 'charac- teristics cannot in general share the same storage; to equate a floating-point number with a certain number of alphabetic charac- ters would be to make assumptions about the representation of these data items which would not be true for all machines.
It is recognized that the price entailed by machine independence may sometimes be too high. In the interest of efficiency, certain features such as the UNSPEC built- in function and record-oriented data tranS- mission, do permit a degree of machine dependence.
PROGRAM STRUCTURE
A PL/I program consists of one or more blocks of statements called procedures. A procedure may be thought of as a subrou- tine. Procedures may invoke other proce- dures, and these procedures or subroutines may either be compiled separately, or may be nested within the calling procedure and compiled with it. Each procedure may con- tain declarations that define names and control allocation of storage.
The rules defining the use of proce- dures, communication between procedlres, the meaning of names, and allocaticn of storage are fundamental to the proper un- derstanding of PL/I at any level bu·, the most elementary. These rules give the user considerable control over the .C'. gree of interaction between subroutines. They per- mit flexible communication and storage allocation, at the same time allowing the
SECTION 1: BASIC CHARACTERISTICS OF PL/I
definition of narres and allocation of
storage for private use within a procedure.
By giving the user freedom to determine the degree to which a subroutine is self- contained, PLiI makes it possible to write procedures which can freely be used in ether environments, while still allowing interaction in procedures where interaction is desirable.
DATA TYPES AND DATA DESCRIPTION
The characteristic of PL/I that most contributes to the range of applications for which i t can be used is the variety of data types that can be represented and manipulated. PL/I deals with arithmetic
data, string data (bit and character), and program control data, such as labels.
Arithmetic data may be represented in a variety of ways; i t can be binary or deci-
~al, fixed-point or floating-point, real or complex, and its precision may be
specified.
PI/I frovides features to perform arith- metic operations. operations for corrpari- sons, logical manipulation of bit strings, and operations and functions for assero- cling, scanning, and subdividing character s1:rings.
The compiler must be able to determine, for eVEry name used in a program, the com- plete set of attributes associated with that name. The user may specify these attributes explicitly by means of a DECLARE statement, the compiler may determine all or some of the attributes by context, or the attributes may be assumed by default.
CEFAULT ASSUMPTIONS
An imFortant feature of PL/I is its default philosophy. If all the attributes associated with a name, or all the options permitted in a statement. are not sFecified ty the user, attributes or options may be assigned by the compiler. This default action has two main consequences. First, i t reduces the amount of declaration and ether program writing required; second, i t makes i t possible to teach and use subsets of the language for which the user need not know all possible alternatives. or even that alternatives exist.
Since defaults are based on assumptions about the intent of the user, errors or Section 1: Basic Characteristics of PL/I 5
omissions may be overlooked, and incorrect attributes may be assigned by default. To reduce the chance of this, the compiler optionally provides an attribute listing, which can be used to check the names in the program and the attributes associated with them •
STORAGE ALLOCATION
PL/I goes beyond most other languages in the flexibility of storage allocation that i t provides. Dynamic storage allocation is comparatively difficult for an assembler- language user to handle for himself; yet i t is automatically provided in PI/I. There are four different storage classes: AUTO- lilA TIC, STATIC, CON'rROLIED, a nd BASED. In general, the default storage class in PL/I is AUTOMATIC. This class of storage is allocated whenever the block in which the variables are declared is activated. At that time the bounds of arrays and the lengths of strings are calculated. AUTO- MATIC storage is freed and is available for reuse whenever control leaves the block in which the storage is allocated.
Storage also may be declared STATIC, in which case i t is allocated when the program is loaded; i t may be declared CONTROLLED, in which case i t is explicitly controlled
by the user with ALLOCATE and FREE state- ments, independent of the invocation of blocks; or i t may be declared BASED, which gives the user an even higher degree of control.
The existence of several storage classes enables the user to determine for himself the speed, storage space, or programming economy that he needs for each application.
The cost of a particular facility will depend upon the implementation, but i t will usually be true that the more dynamic the storage allocation, the greater the over- head in execution time.
EXPRESSIONS
Calculations in PL/I are specified by expressions. An expression has a meaning in PL/I that is similar to that of elemen- tary algebra. For example:
A + B
*
CThis specifies multiplication of th~ value of B by the value of C and adding the value of A to the result. PI/I places few re- strictions on the kinds of data tha~ can be used in an expression. For example, i t is conceivable, though unlikely, that A could be a floating-point number, B a fixed-point number, and C a character string.
When such mixed expressions are speci- fied, the operands will be converted so that the operation can be evaluated mean- ingfully. Note, however, that the rules for conversion must be considered careful- ly; converted data may not have the same value as the original. And, of course, any conversion requires additional com~iler
generated coding, which increases execution time.
The results of the evaluation of expres- sions are assigned to variables by IIeans of the assignment statement. An example of an assignment statement is:
x
= A + B*
C;This means: evaluate the expression on the right and store the result in X. If the attributes of X differ from the attributes cf the result of the expression, conversion will again be ~erformed.
LATA COLl.ECTIONS
PL/I permits the user many ways of describing and operating on collections of data, or data aggregates. Arrays are collections of data elements, all of the same type, collected into lists or tables of one or more dimensions. Structures are hierarchical collections of data, not necessarily all of the same type. Each level of the hierarchy may contain other structures of deeper levels. The deepest levels of the hierarchy represent elemen- tary data items or arrays.
An element of an array may be a struc- ture; similarly, any level of a structure may be an array. Operations can be speci- fied for arrays, structures, or parts of arrays or structures. For example:
A
=
B + C:In this assignment statement, A, B, and C could be arrays or structures.
INPUT I,ND OUTPUT
Facilities for input and output allow the user to choose between factors such as Simplicity. machine independence, and effi- ciency. There are two broad classes of input/output in PL/I: stream-oriented and record-oriented.
Stream-oriented input/output is almost completely machine independent. On input, data items are selected one by one from what is assumed to be a continuous stream of characters that are converted to inter- nal form and assigned to variables speci- fied in a list. Similarly, on output, data
items are converted one by one "Lo external character form and are added to a conceptu- ally continuous stream of characters.
Within the class of stream input/output, the user can choose different levels of control over the way data .items are edited and selected fronl or added t.o the stream.
For printing. the output stream may be considered to be divided into lines and pages. An output stream file may be declared to be a print file with a speci- fied line size and page size. The user has facilities to detect the end of a page and to specify the beginning of a line or a page. These facilities may be used in sub- routines that can be developed into a report generating system suitable for a particular installation or application.
Record-oriented input/output is machine dependent. I t deals with collections of data. called records, and transmits these a record at a time without any data conver'- sion; the external representation is an exact copy of the internal representation.
Because the aggregate is treated as a whole, and because no conversion is per- formed, this form of input/output is poten- tially more efficient than stream-oriented input/output, although the actual efficien- cy of each class will, of course, depend on the implementation.
Stream-oriented input and output usually sacrifices efficiency for ease of handling.
Each data item is transmitted separately and is examined to determine if data con- version is required. Record-oriented input and output, on the other hand, provides faster transmission by transmitting data as entire records, without conversion.
COMPILE-TIME OPERATIONS
Most programming is concerned only with operations upon da'ta. PL/l permits a compile-time level of operation, in which preprocessor statements specify operations upon the text of the source program itself.
The simplest, and perhaps the commonest preprocessor statement is %INCLUDE (in gen- eral, preprocessor statements are preceded ty a percent sign). This statement causes text to be inserted into the program,
replacing the %INCLUDE statement itself. A typical use could be to copy declarations from an installation's standard set of definitions into the program.
Another function provided by compile- time facil ities is the selective cO'.Ipi la-
tion of program text. For example, i t might specify the inclusion or deletion of debugging statements.
Since a simple but powerful part of the PL/I language is available for compile-time act,ivity, the generat.ion, or replacement and deletion, of text can become more elab- orate, and more subtle transformations can be performed. Such transformations might then be considered to be installation- defined extensions to the language.
INTERRUPTION ACTIVITIES
computing systems provide facilities for interrupting the execution of a program whenever an exceptional condition arises.
Further, they allow the program to deal with the exceptional condition and to return to the point at which the interrup- tion occurred.
PI/I provides facilities for detecting a Variety of exceptional conditions. It allows the user to specify, by means of a condition prefix, whether certain interrup- tions will or will not occur if the condi- tion should arise. And, by use of an ON statement, he can specify the action to be taken when an interruption does occur.
MULTITASKING
In TSS/360, the concept of multitasking is inherent in the structure of the system;
there are extensive multitasking facilities in the TSS/360 command system. In this implementation of the corr'piler, no initia- tion of tasks will be permitted from within a PL/I execut..able program. The user can start an independent task in TSS/360 by several different methods. There is no way for these tasks to communicate within the PL/l code. (Refer to IBM System/360 Time
Sharin~?tem: Command System User's Guide, Order No. GC28-2001.)
'T'h(; effect, then, is that although mul- titasking statements are accepted by the compiler, the current implementation cannot honor them and upon encountering a tasking st.atement will terminate execution.
Note: If a Frogram contains a CALL state- ment with a multitasking option (TASK, EVENT, or PRIORITY), the entire program is unacceFtable for TSS/360 execution.
Section 1: Basic Characteristics of PL/I 7