1、INTERNATIONAL STANDARD ISO/IEC 6522 Second edition 1992-l 1-l 5 Information technology - Programming languages - PL/l general purpose subset Technologies de /information - Langages de programmation - Sous-ensemble FL/l pour usage g&al Reference number ISO/IEC 6522:1992(E) ISO/lEC 6522:1992 (E) Conte
2、nts 1. Scope and Overviews . 1 1.1 Scope 1 1.2 Referenced Publications . 1 1.3 GoalsandRationale . 2 1.4 An Informal Guide to the PL/I Definition 3 1.4.1 ASummaryofPL/I . 3 1.4.2 The Form of the Definition . 4 1.4.3 Summary of Chapter Structure . 6 1.4.4 Introduction to the Metalanguage 10 1.4.4.1 T
3、ree Concepts . 10 1.4.4.2 Syntaxes . 11 1.4.4.3 AlgorithmConcepts 12 1.5 Relationships between an Implementation and this Definition 14 1.5.1 Flexibilities of Interpretation . 15 1.5.1.1 Rejection of Programs . 15 1.5.1.2 Quantitative Restrictions . 15 1.5.1.3 Addressing Restrictions 15 1.5.1.4 Oper
4、ating Environment 16 1.5.1.5 Character Sets . 16 1.5.1.6 Expression Evaluation . 16 1.5.1.7 Interrupts and Assignment . 17 1.5.1.8 Input/Output . 17 1.5.1.9 On-units . 17 1.5.2 Implementation-defined Features 18 1.6 TheMetalanguage . 20 1.6.1 Trees . 21 1.6.1.1 Tree Definitions . 21 1.6.1.2 Node Obj
5、ects . 22 1.6.1.2.1 Unique-names . 23 1.6.1.2.2 Types 23 1.6.1.3 Node Notation 23 1.6.1.4 Tree Notation . 24 1.6.1.4.1 Enumerated-Trees 24 1.6.1.4.2 Forms . 25 1.6.1.5 Tree Copies . 25 1.6.2 Production Rules 25 1.6.2.1 Production Rules and Syntaxes 25 1.6.2.2 Complete and Partial Trees . 26 1.6.2.3
6、Syntactic-expressions and Syntactic-units 28 1.6.2.4 Use of the Production Rules 28 1.6.2.4.1 Subnode-type Sequence with respect to a Syntax and Category-name 29 1.6.2.4.2 Subnode-type Sequence with respect to a Syntactic-expression 29 1.6.3 Operations . 30 1.6.3.1 Nature of an Operation 30 0 ISO/IE
7、C 1992 All rights reserved. No part of this publication may be reproduced or utilized in any form or by any means, electronic or mechanical, including photocopying and microfilm, without permission in writing from the publisher. International Organization for Standardization Case postale 56 - CH-121
8、 I Geneve 20 - Switzerland Printed in Switzerland ii ISO/IEC 6522:1992 (E) 1.6.3.2 Nondeterministic Operations 3 1 1.6.3.3 Format of an Operation . 31 1.6.3.4 Instructions . 32 1.6.3.5 Convert 34 1.6.3.6 Additional Notational Conventions . 34 1.6.3.7 Arithmetic 34 1.6.3.7.1 Properties of Arithmetic
9、in the Metalanguage . 34 1.6.3.7.2 Properties of Arithmetic in PL/I . 35 1.6.4 TheProcessor . 36 1.6.5 Mechanization of the Metalanguage 37 1.7 Initialization of the Machine-state . 39 1.7.1 The Machine-state . 39 1.7.2 Initialization 39 1.7.3 The Top-level Operations 39 1.7.3.1 Define-program 39 1.
10、7.3.2 Translation-phase 40 1.7.3.3 Interpretation-phase 40 2. Concrete Syntax 41 2.1 Introduction 41 2.2 The Intent of this Definition . 41 2.2.1 Concrete and Abstract Syntaxes . 41 2.3 Organization of the Concrete Syntax . 41 2.4 The High-level Syntax of PL/I . 42 2.4.1 TranslationUnit . 42 2.4.2 P
11、ackage . 42 2.4.3 Procedure 42 2.4.4 Unit 42 2.4.5 Executable Units 42 2.4.6 If Statement 43 2.4.7 Do Group 43 2.4.8 Select Group 43 2.4.9 BeginBlock 43 2.4.10 OnUnit 44 2.4.10.1 Condition Prefixes 44 2.4.10.2 Statement Name Prefixes . 44 2.4.11 Data Declaration . 44 2.4.11.1 Dimension Attribute and
12、 Dimension Suffix 44 2.4.11.2 Attributes . 45 2.4.11.3 Data Attributes . 45 2.4.11.4 Environment and Options . 46 2.4.11.5 Initial . 46 2.4.12 The Package Statement 46 2.4.13 The Procedure Statement . 46 2.4.14 The Begin Statement 47 2.4.15 The Do Statement 47 2.4.16 The Select Statement 47 2.4.17 T
13、he End Statement 47 2.4.18 Flow of Control Statements . 48 2.4.18.1 The CaIl and Return Statements 48 2.4.18.2 The Go To Statement 48 2.4.18.3 The Leave Statement 48 2.4.18.4 The Null Statement 48 2.4.18.5 The Revert and Signal Statements . 48 . . . 111 ISO/IEC 6522:1992 (E) 2.4.18.6 The Stop Statem
14、ent 48 2.4.19 Storage Control Statements . 48 2.4.20 Input/Output Statements . 49 2.4.20.1 The Open and Close Statements 49 2.4.20.2 RecordI/O 49 2.4.20.3 StreamI/O 50 2.4.20.3.1 Stream Input Specification . 50 2.4.20.3.2 Stream Output Specification . 50 2.4.20.3.3 Format Specification Lists and the
15、 Format Statement 50 2.4.21 Expressions 51 2.4.22 Enquiry Functions 52 2.5 The Low-level Syntax of PL/I 57 2.5.1 PL/IText 57 2.5.2 Comment 57 2.5.3 Identifier . 57 2.5.4 Arithmetic Constant 57 2.5.5 String Constants and Pictures . 58 2.5.6 Include 58 2.6 Character Sets 59 2.6.1 Language Character Se
16、t . 60 2.6.1.1 Letters and Digits 60 2.6.1.2 Special Characters 6 1 2.6.2 Data Character Set . 61 2.6.3 Secondary Case Characters in Numeric and Bit Values . 6 1 2.7 Abbreviations 62 3. Abstract Syntax 63 3.1 Introduction 63 3.2 Abstract Syntax Rules 63 3.2.1 Program . 63 3.2.2 Package . 63 3.2.3 Pr
17、ocedure 63 3.2.4 Declaration . 64 3.2.5 Variable . 64 3.2.6 Data-description . 64 3.2.7 Data-type 65 3.2.8 Named-constant . 66 3.2.9 Entry-point . 66 3.2.10 Executable-unit 66 3.2.11 Begin-block . 67 3.2.12 Groups . 67 3.2.13 Selections . 67 3.2.14 OnStatement 68 3.2.15 If Statement . 68 3.2.16 Flow
18、 of Control Statements . 68 3.2.17 Storage Statements 69 3.2.18 I/O Statements . 69 3.2.19 Record I/O Statements 69 3.2.20 Stream I/O Statements . 70 3.2.21 Expression 71 3.2.22 Types of Reference . 72 3.2.23 Constant 73 3.2.24 Typesof Value . 73 3.2.25 Types of Picture 73 iv ISO/IEC 6522:1992 (E) 4
19、. The Translator . 75 4.1 Introduction 75 4.2 Translate 75 4.3 Forming the Translation Unit 76 4.3.1 Low-level-parse . 77 4.3.2 High-level-parse . 78 4.4 Validation of the Translation Unit . 80 4.5 Completion of the External Unit 80 4.5.1 Reorganize . 81 4.5.1.1 Complete-options 8 1 4.5.1.2 Complete
20、-attribute-implications . 8 1 4.5.1.3 Defactor-declarations . 82 4.5.2 Construct-explicit-declarations 83 4.5.2.1 Declare-parameters . 83 4.5.2.2 Declare-statement-names 84 4.5.2.3 Construct-statement-name-declarations . 85 4.5.3 Complete-structure-declarations . 87 4.5.3.1 Determine-structure 87 4.
21、5.3.2 Convert-to-logical-levels . 88 4.5.3.3 Propagate-alignment 88 4.5.3.4 Find-applicable-declaration . 89 4.5.3.5 Find-fully-qualified-name 90 4.5.4 Construct-contextual-declarations . 9 1 4.5.5 Complete-declarations 93 4.5.5.1 Test-attribute-consistency 94 4.5.5.2 Test-invalid-duplicates 96 4.5.
22、5.3 Apply-defaults . 96 4.5.5.4 Apply-attribute 98 4.5.5.5 Complete-constructed-entry-declaration . 98 4.5.5.6 Test-name-in-description . 101 4.5.6 Validate-concrete-declarations . 101 4.5.6.1 Check-attribute-completeness-and-delete-attributes . 102 4.6 Create-abstract-equivalent-tree 103 4.6.1 Crea
23、tion of Blocks and Groups 104 4.6.1.1 Create-package . 104 4.6.1.2 Create-procedure . 105 4.6.1.3 Create-begin-block 106 4.6.1.4 Create-block . 106 4.6.1.5 Replace-concrete-designators 107 4.6.1.6 Replace-concrete-precision-designators 107 4.6.1.7 Replace-concrete-named-constant-designators . 108 4.
24、6.1.8 Create-group . 108 4.6.1.9 Create-selection 109 4.6.1.10 Create-executable-unit-list . 110 4.6.1.11 Create-executable-unit 110 4.6.1.12 Create-entry-point . 110 4.6.1.13 Create-statement-name 111 4.6.1.14 Create-condition-prefix-list . 112 4.6.1.15 Create-condition . 112 4.6.1.16 Test-descript
25、or-extent-expressions . 113 4.6.2 Creation of Statements . 113 4.6.2.1 Create-assignment-statement 113 4.6.2.2 Data-descriptions Proper for Assignment . 114 V ISOlIEC 6522:1992 (E) 4.6.2.3 Create-allocation 114 4.6.2.4 Create-format-statement 114 4.6.2.5 Create-remote-format 115 4.6.2.6 Create-forma
26、t-iteration . 115 4.6.2.7 Create-freeing 115 4.6.2.8 Create-if-statement 116 4.6.2.9 Create-balanced-unit 116 4.6.2.10 Create-leave-statement 117 4.6.2.11 Create-on-statement 118 4.6.2.12 Create-open-statement 119 4.6.3 Create-declaration 119 4.6.3.1 Create-named-constant . 120 4.6.3.2 Create-variab
27、le . 120 4.6.3.3 Create-bound-pair-list 121 4.6.3.4 Create-data-description . 122 4.6.3.5 Create-data-type 124 4.6.3.6 Create-entry . 125 4.6.3.7 Create-refer-option 126 4.6.3.8 Create-identifier 126 4.6.3.9 Create-initial . 126 4.6.3.10 Create-array-it& . 127 4.6.3.11 Create-initial-element . 127 4
28、.6.3.12 Create-integer . 128 4.6.3.13 Convert-named-literal . 128 4.6.3.14 Check-arithmetic-type 130 4.6.3.15 Create-precision . 130 4.6.3.16 Create-number-of-digits . 130 4.6.3.17 Create-scale-factor . 131 4.6.4 Create-expression . 13 1 4.6.5 Create-reference 134 4.6.5.1 Collect-subscripts . 137 4.
29、6.5.2 Apply-subscripts 138 4.6.5.3 Create-value-reference . 139 4.6.5.4 Trim-dd . 139 4.6.5.5 Create-named-constant-reference . 139 4.6.5.6 Create-argument-list . 140 4.6.5.7 Create-builtin-function-reference . 14 1 4.6.5.8 Create-pseudo-variable-reference . 142 4.6.5.9 Create-entry-reference . 143
30、4.6.5.10 Test-matching . 144 4.6.6 Create-picture . 144 4.6.6.1 Create-numeric-picture . 145 4.6.7 Create-constant 147 4.6.8 Create-enquiry-reference . 149 4.6.8.1 Create-arithmetic-enquiry-reference . 15 1 4.7 Validation of the External Unit 152 4.7.1 Validate-declaration . 152 4.7.2 Validate-autom
31、atic-declaration 152 4.7.3 Validate-based-declaration 153 4.7.4 Validate-defined-declaration 154 4.7.5 Validate-parameter-declaration 154 4.7.6 Validate-static-declaration 154 4.7.7 Validate-descriptor 155 4.7.8 Evaluate-restricted-expression . 155 4.7.9 Apply-constraints . 156 vi ISO/IEC 6522:1992
32、(E) 4.7.10 Test-constraints . 157 4.7.11 Validate-leave-statements . 158 4.8 Validate-program . 159 4.8.1 Validate-external-declaration 159 4.8.2 Environment-names . 160 5. The PL/I Interpreter . 161 5.1 Introduction . 161 5.2 The Interpretation-state 16 1 5.2.1 Directories 161 5.2.2 BlockState 161
33、5.2.3 FileInformation 163 5.2.4 Storage and Values 164 5.2.5 Generations, Evaluated Data Descriptions, and Evaluated Targets . 165 5.2.6 Dataset . 165 5.3 Terminology and Definitions 166 5.3.1 Current . 166 5.3.2 Block 166 5.4 The Interpret Operation and Interpretation State Initialization 166 5.4.1
34、 Interpret 166 5.4.2 Initialize-interpretation-state 167 5.4.3 Build-file-directory-and-informations 167 5.4.4 Build-fdi 168 5.4.5 Allocate-static-storage-and-build-static-directory 168 5.4.6 Program-epilogue . 169 6. Flow Of Control . 171 6.1 Introduction . 171 6.2 Program Activation and Terminatio
35、n 17 1 6.2.1 Program Termination 171 6.2.1.1 Execute-stop-statement . 172 6.2.1.2 Stop-program 172 6.3 Block Activation and Termination 172 6.3.1 Activate-procedure 172 6.3.1.1 Install-arguments 173 6.3.2 Activate-begin-block 173 6.3.3 Prologue 174 6.3.4 Epilogue 175 6.4 ControlwithinaBlock . 175 6.
36、4.1 Normal-sequence . 176 6.4.1.1 Advance-execution 176 6.4.2 Execute-executable-unit 176 6.4.3 Execute-begin-block . 177 6.4.4 Execute-group . 177 6.4.4.1 Establish-controlled-group 178 6.4.4.2 Initialize-spec-options 178 6.4.4.3 Test-spec 180 6.4.4.4 Advance-controlled-group 180 6.4.5 Execute-sele
37、ction . 182 6.4.5.1 Test-when-enablement . 182 6.4.5.2 Test-when-matching . 183 6.4.6 Execute-if-statement 184 6.4.6.1 Establish-truth-value . 184 6.4.7 Execute-call-statement . 185 vii ISO/IEC 6522:1992 (E) 6.4.7.1 Entry-references 185 6.4.7.1.1 Evaluate-entry-reference 185 6.4.7.1.2 Establish-argu
38、ment 186 6.4.8 Execute-goto-statement 187 6.4.8.1 Local-got0 . 188 6.4.8.2 Trim-group-control 188 6.4.9 Execute-null-statement . 189 6.4.10 Execute-return-statement 189 6.4.11 Execute-end-statement 190 6.4.12 Execute-leave-statement . 19 1 6.5 Conditions and Interrupts 19 1 6.5.1 Conditions 192 6.5.
39、1.1 Raise-condition . 192 6.5.1.2 Test-enablement 192 6.5.1.3 Execute-signal-statement . 193 6.5.1.4 Evaluate-named-io-condition 194 6.5.2 Interrupts . 194 6.5.2.1 Execute-on-statement 194 6.5.2.2 Execute-revert-statement . 195 6.5.3 Interrupt 196 6.5.4 System-action 197 6.5.4.1 Comment . 197 7. Sto
40、rage and Assignment . 199 7.1 Introduction . 199 7.2 The Generation 200 7.2.1 The Number of Elements in the Storage-index-list of a Generation . 200 7.2.2 Correspondence between an Item-data-description and a Basic-value . 201 7.2.3 Value of a Generation . 202 7.2.4 Value of Storage Index . 202 7.3
41、The Allocation of Storage 203 7.3.1 Execute-allocate-statement 203 7.3.2 Allocate-based-storage . 204 7.3.3 Evaluate-in-option 206 7.3.4 Allocate 206 7.3.5 Evaluate-data-description-for-allocation . 208 7.3.6 Find-directory-entry . 208 7.3.7 Make-allocation-unit 209 7.3.8 Initialize-refer-options .
42、2 10 7.3.9 Find-block-state-of-declaration 2 11 7.3.10 Construct-union-list 211 7.4 Initialization . 213 7.4.1 Initialize-generation . 2 13 7.4.2 Initialize-scalar-element 214 7.4.3 Initialize-array . 214 7.5 The Freeing of Storage 216 7.5.1 Execute-free-statement 216 7.5.2 Free-based-storage 216 7.
43、5.3 Deduce-in-option . 218 7.5.4 Free . 218 7.6 Assignment . 219 7.6.1 The Assignment Statement 219 7.6.2 Target References 220 7.6.2.1 Evaluated Targets . 221 7.6.3 The Assignment Operation 222 Vlll ISO/IEC 6522:1992 (E) 7.6.3.1 Promote-and-convert 222 7.6.3.2 The Set-storage Operation 223 7.6.3.3
44、Area-conversion 224 7.6.3.4 Test-union-matching . 225 7.6.3.5 Set-union 225 7.6.4 Pseudo-variables 226 7.6.4.1 Exponent-pv . 226 7.6.4.2 Onsource-pv . 227 7.6.4.3 Pageno-pv . 228 7.6.4.4 String-pv . 228 7.6.4.5 Substr-pv 229 7.6.4.6 Unspec-pv . 230 7.7 Variable-reference 231 7.7.1 Evaluate-variable-
45、reference . 23 1 7.7.1.1 Test Connectedness . 232 7.7.1.2 Test String Class 233 7.7.2 Select-based-generation 234 7.7.3 Check-based-reference . 234 7.7.4 Overlay-strings . 236 7.7.5 Evaluate-data-description-for-reference 237 7.7.6 Select-qualified-reference . 238 7.7.7 Select-subscripted-reference
46、. 239 7.7.8 Evaluate-defined-reference . 24 1 7.7.9 Evaluate-simply-defined-reference 241 7.7.10 Evaluate-string-overlay-defined-reference . 242 7.7.11 Check-simply-defined-reference . 242 7.7.12 Extract-slice-of-array . 243 7.8 Reference to Named Constant . 244 7.8.1 Evaluate-named-constant-referen
47、ce . 244 8. Input/Output . 247 8.1 Introduction . 247 8.2 Datasets 247 8.2.1 Record Datasets 247 8.2.2 Stream Datasets 247 8.3 Files . 248 8.3.1 RecordFiles . 248 8.3.2 StreamFiles . 248 8.4 I/OConditions 248 8.4.1 Raise-io-condition 249 8.5 Evaluate-file-option . 249 8.6 File Opening and Closing 25
48、0 8.6.1 The Open Statement . 250 8.6.1.1 Execute-open-statement 250 8.6.1.2 Execute-single-opening . 250 8.6.1.3 Open . 251 8.6.1.4 Evaluate-title-option . 253 8.6.1.5 Evaluate-filename . 253 8.6.2 The Close Statement 254 8.6.2.1 Execute-close-statement 254 8.6.2.2 Execute-single-closing . 254 8.6.2
49、.3 Close . 254 8.7 The Record I/O Statements . 255 8.7.1 The Read Statement . 255 ix ISO/IEC 6522:1992 (E) 8.7.1.1 Execute-read-statement 255 8.7.1.2 Read . 256 8.7.2 The Write Statement 258 8.7.2.1 Execute-write-statement 258 8.7.2.2 Write . 259 8.7.3 The Rewrite Statement 259 8.7.3.1 Execute-rewrite-statement 259 8.7.3.2 Rewrite . 260 8.7.4 The Delete Statement 261 8.7.4.1 Execute-delete-statement . 26 1 8.7.4.2 Delete 262 8.7.5 Operations Applicable to Record I/O . 263 8.7.5.1 Evaluate-from-option 263 8.7.5.2 Evaluate-into-option . 263 8.7.5.3 Evaluate-pointer-set-option . 263 8.7.5.4 Eva