Upload
nguyendien
View
263
Download
13
Embed Size (px)
Citation preview
Enterprise PL/I for z/OSPL/I for AIXRational Developer for System z PL/I forWindows
4 4
SA88-4235-03(SC14-7285-03)
Enterprise PL/I for z/OSPL/I for AIXRational Developer for System z PL/I forWindows
4 4
SA88-4235-03(SC14-7285-03)
859
Enterprise PL/I for z/OS 4 4 (5655-W67)IBM PL/I for AIX 3 1 (5724-H45) Rational Developer for System z PL/I for Windows 8.5TNL
http://www.ibm.com/jp/manuals (URL )
SC14-7285-03Enterprise PL/I for z/OS
PL/I for AIX
Rational Developer for System z PL/I for Windows
Language Reference
Version 4 Release 4
41 2013.9
Copyright IBM Corporation 1999, 2013.
. . . . . . . . . . . . . . . . . xiii
. . . . . . . . . . . . . . . . . xv
. . . . . . . . . . . . xvii . . . . . . . . . xvii . . . . . . . . . . . . . xx . . . . . . . . . . . . . . . xxi . . . . . . . . . . . . . . xxi . . . . . . . xxiV4R3 . . . . . . . . . xxiiV4R2 . . . . . . . . . xxiiV4R1 . . . . . . . . . xxiiiV3R9 . . . . . . . . . xxiiiV3R8 . . . . . . . . . xxivV3R7 . . . . . . . . . xxivV3R6 . . . . . . . . . xxvV3R5 . . . . . . . . . xxvV3R4 . . . . . . . . . xxviV3R3 . . . . . . . . . xxviV3R2 . . . . . . . . . xxviV3R1 . . . . . . . . . xxvii
. . . . . . . . . . . . xxix . . . . . . . . . . . xxix . . . . . . . . . xxix . . . . . . . xxix . . . . . . . . xxixIBM . . . . . . . . xxx
1 . . . . 11 . . . . . . . . . . . . 1
10 . . . . . . . . . . . . . . . 32 . . . . . . . . . . . . . . . 316 . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . 4 . . . . . . . . . . . 5
SBCS . . . . . . . 5ID . . . . . . . . . . . . . . . . . 5 . . . . . . . . . . . 6
. . . . . . . . . . . . . 8 . . . . . . . . . . 10 . . . . . . . . . . 11
. . . . . . . . . . . . . . . 112 . . . . . . . . . . . 12
DBCS ID . . . . . . . . . . . . . . 12DBCS . . . . . 13DBCS . . . . . . . . . . . . 14
2 . . . . . . 15 . . . . . . . . . . . . . . 15
. . . . . . . . . . . . . . . . 16 . . . . . . . . . . . . . . . . 16 . . . . . . . . . . . . . 16 . . . . . . . . . . 16
. . . . . . . . . 17 . . . . . . . . . . . . . 18 . . . . . . . . . . . . . 18
. . . . . . . . 23 . . . . . . . 23 . . . . . . . 31
3 . . . . . . . . 53 . . . . . . . . . . . . . . 56 . . . . . . . . . . . . . . 56 . . . . . . . . . . . . . . . . 56 . . . . . . . . . . . . . . 56 . . . . . . . . . . . . . . 57
. . . . . . . . . . . . . . . . 57 . . . . . . . . . . . . . 58 . . . . . . . . . . . . 58 . . . . . . . . . . . . . . 59 . . . . . . . . . . . . . 67 . . . . . . . . . . . . . . 68 . . . . . . . . . . . . . . 70 . . . . . . . . . . 72
. . . . . . . . . . . . . . . . 74 . . . . . . . . . . . 74 . . . . . . . . . . . 74
. . . . . . . . . . . . . . . . 75 . . . . . . . . . . . . . . 76
4 . . . . . . . . . 79 . . . . . . . . 81 . . . . . . . . . . 81 . . . . . . . . . . . 82 . . . . . . . . . . . . . . 82 . . . . . . . . . 82 . . . . . . 84 . . . . . . . . . . . . . . . . . 93 DECIMAL FIXED BINARY FIXED . . . . . . 93 . . 93 . . . . . . . 93 . . . . . . . . . . . . . 94
5 . . . . . . . 95 . . . . . . . . . . . . . . 95 . . . . . . . . . . . . 95 . . . . . . . . . . 97 . . . . . . . . . . . 97
. . . . . . . . . . . . . . . 97
Copyright IBM Corp. 1999, 2013 iii
. . . . . . . . . . . 97 . . . . . . . . . . . . 98
. . . . . . . . . . . . . . 99 . . . . . . . . . . . . . 102
PROCEDURE ENTRY . . . . . . . . . . . . 103ENTRY . . . . . . . . . 104 . . . . . . . . . . . 106 . . . . . . . . . 109 . . . . . . . . . 110 . . . . . . . . . 111 . . . . . . 113
. . . . . . . . . . . . . 116 1 . . . . . . . . . . . . . . . 117 2 . . . . . . . . . . . . . . . 117
. . . . . . . . . . 118 . . . . . . . . . . . . . . . . 118 . . . . . . . . . . . . . . . . 119 . . . . . . . . . . . . 120
. . . . . . 120BYVALUE BYADDR . . . . 120INONLYINOUT OUTONLY 121 . . . . . . . . . . . . . . . 122MAIN . . 123
. . . . . . . . . . . . . 124BEGIN . . . . . . . . . 124 . . . . . . . . . 124 . . . . . . . . . . 125
. . . . . . . . . . . . . 125 . . . . . . . . . . . . . 126 . . . . . . . . . . . . . 126ENTRY . . . . . . . . . . . . 127OPTIONAL . . . . . . . . . . . 130LIST . . . . . . . . . . . . . 131LIMITED . . . . . . . . . . . . 135 . . . . . . . . . . . . . 136GENERIC . . . . . . . . . . . . 136
. . . . . . . 139CALL . . . . . . . . . . 139RETURN . . . . . . . . . 140 . . . . . . . . . 140 . . . . . . . . . . . . 140
OPTIONS . . . . . . . 141RETURNS . . . . . . . 151
6 . . . . . . . . . 153 () . . . . . . . . 153
DEFINE ALIAS . . . . . . 153 . . . . . . . . . . . . . . 154
DEFINE ORDINAL . . . . . 154 . . . . . . . 156
HANDLE . . . . . . . . . . . . 158 . . . . . . . . . . . . 158
TYPE . . . . . . . . . . . . . 159ORDINAL . . . . . . . . . . . . 160
. . . . . . . . . . 160
'.' . . . . . . . . . . . 161 . . . . . . . . . . . . . . . 161 . . . . . . . . . . . . 162
. . . . . . . . . . . . . . 162 . . . . . . . . . . . . . . . . 163
. . . . . . . . . . . . . 165
7 . . . . . . . . . 167 . . . . . . . . . . . . . . . 167
DECLARE . . . . . . . . 168 . . . . . . . . . . . . . . 170
. . . . . . . . . . . . . . . 170 . . . . . . . . . . . . . 171
INTERNAL EXTERNAL . . . . 175RESERVED . . . . . . . . . . . . 179SUPPRESS . . . . . . . . . . . . 180 . . . . . . . . . . . 181
ALIGNED UNALIGNED . . . . 181 . . . . . . . . . . . . 187 . . . . . . . . . 187DEFAULT . . . . . . . . 188 . . . . . . 193
. . . . . . . . . . . . . . . . 194 . . . . . . . . . . . . . . 194DIMACROSS . . . . . . . . . . . 195 . . . . . . . . . . . . . . 196 . . . . . . . . . . . . . . . 196 . . . . . . . . . 198
. . . . . . . . . . . 198 . . . . . . . . . . . . . . . 198 . . . . . . . . . . . . . . . 199 . . . . . . . . 201LIKE . . . . . . . . . . . . . 202NOINIT . . . . . . . . . . . . 204XMLATTR XMLOMIT . . . . . 204
. . . . . 205 . . . 205 207 . . . . . . . . 207 . . . . . . 207
8 . . . . . . . . . . . . . . . . 219ALLOCATE . . . . . . . . 220ASSERT . . . . . . . . . 220 . . 222
ASSIGNMENT . . . . . . 222 . . . . . . . . . 223 . . . . . . . . . . . . 224 . . . . . . . . . . 225 . . . . . . . . . . . . 227 . . . . . . . . . . . . . . . . 228
ATTACH . . . . . . . . . 229BEGIN . . . . . . . . . . 229CALL . . . . . . . . . . 229
iv Enterprise PL/I for z/OS
CANCEL THREAD . . . . . . 230CLOSE . . . . . . . . . . 230DECLARE . . . . . . . . . 230DEFINE ALIAS . . . . . . . 230DEFINE ORDINAL . . . . . . 230DEFINE STRUCTURE . . . . . 230DEFAULT . . . . . . . . . 230DELAY . . . . . . . . . . 230DELETE . . . . . . . . . 231DETACH . . . . . . . . . 231DISPLAY . . . . . . . . . 231DO . . . . . . . . . . . 232 1 . . . . . . . . . . . . . . 232 2 3 . . . . . . . . 232 4 . . . . . . . . . . . . . . 240 . . . . . . . . . 241WHILEUNTIL DO . . . . . . . . . . . . . . . 242UPTHRU DOWNTHRU DO 243REPEAT . . . . . . . . . . . . 244
END . . . . . . . . . . . 245ENTRY . . . . . . . . . . 246EXIT . . . . . . . . . . 246FETCH . . . . . . . . . . 246FLUSH . . . . . . . . . . 246FORMAT . . . . . . . . . 246FREE . . . . . . . . . . 246GET . . . . . . . . . . . 246GO TO . . . . . . . . . . 246IF . . . . . . . . . . . . 247 . . . . . . . . . . . . . . . . 249 . . . . . . . . . . . . . . 249
%INCLUDE . . . . . . . . 250ITERATE . . . . . . . . . 251LEAVE . . . . . . . . . . 251 . . . . . . . . . . . . . . . . 252
%LINE . . . . . . . . . . 252LOCATE . . . . . . . . . 253%NOPRINT . . . . . . . . 253%NOTE . . . . . . . . . . 253 . . . . . . . . . . 254ON . . . . . . . . . . . 254OPEN . . . . . . . . . . 254OTHERWISE . . . . . . . . 254PACKAGE . . . . . . . . . 254%PAGE . . . . . . . . . . 254%POP . . . . . . . . . . 255%PRINT . . . . . . . . . 255PROCEDURE . . . . . . . . 255%PROCESS . . . . . . . . 255*PROCESS . . . . . . . . . 256%PUSH . . . . . . . . . . 256PUT . . . . . . . . . . . 257READ . . . . . . . . . . 257RELEASE . . . . . . . . . 257RESIGNAL . . . . . . . . 257
RETURN . . . . . . . . . 257REVERT . . . . . . . . . 258REWRITE . . . . . . . . . 258SELECT . . . . . . . . . 258 . . . . . . . . . . . . . . . . 259
SIGNAL . . . . . . . . . 260%SKIP . . . . . . . . . . 260STOP . . . . . . . . . . 260WAIT . . . . . . . . . . 261WHEN . . . . . . . . . . 261WRITE . . . . . . . . . . 261%XINCLUDE . . . . . . . . 261
9 . . . . . . . 263 . . . . . . . . . . . . . . . . . 263 . . . . . . . . . 265 . . . . . . . . . 266 . . . . . . . . 267 ALLOCATE . . . . . . . . . . . . . . . . 268 FREE . . 270 . . . . . . . . . 270 . . . . . . . . . 271 . . . . . . . . . 271 . . . . . . 272
. . . . . . . 272BASED . . . . . 272BASED VARYING . . . . . . 273BASED . . . . . 274 . . . . . . . . . . . . 274DEFINED UNION . . . . . 275INITIAL . . . . . . . . . . . . 275 . . . . . . . . . . 275POINTER . . . . . . . . 278 . . . . . 278 ALLOCATE . . . . . . . . . . . . . . . 279 FREE 280REFER () . . . . 281
. . . . . . . . . . 283 . . . . . . 285LOCATES . . . . . . . . . . . . 286 . . . . . . 288 . . . . . . . . . . . . 288 . . . . . . . . . . . . 289
. . . . . . . . . . . . . . 289ASSIGNABLE NONASSIGNABLE 291NORMAL ABNORMAL . . . . 292BIGENDIAN LITTLEENDIAN . . 292HEXADEC IEEE . . . . . . . . 293CONNECTED NONCONNECTED . . 295DEFINED POSITION . . . . . 295 . . . . . . . . . . . 298 . . . . . . . . . . . . . . 298iSUB . . . . . . . . . . . . . 299
v
. . . . . . 300POSITION . . . . . . . . . . . . 301
INITIAL . . . . . . . . . . . . . 301 . . . . . . . . . . 305 . . . . . . . . . . . 306 . . . . . . . . . . 306 . . . . . . . . . . 307 . . . . 307 . . . . . . . . . . . . . . . . 307
10 . . . . . . . . . . 309 . . . . . . . . . . . . . 310 . . . . . . . . . . . . . . . 311 . . . . . . . . . . . . . . 311 . . . . . . . . . . . . . . . 311 . . . . . . . . . . . . . . . 311
. . . . . . . . . . . . . . . 311FILE . . . . . . . . . . . . . 311RECORD STREAM . . . . . . 315INPUTOUTPUT UPDATE . . . 315SEQUENTIAL DIRECT . . . . . 316BUFFERED UNBUFFERED 316ENVIRONMENT . . . . . . . . . 317KEYED . . . . . . . . . . . . 317PRINT . . . . . . . . . . . . . 317
. . . . . . . 317OPEN . . . . . . . . . 318 . . . . . . . . . . . . 320CLOSE . . . . . . . . . 322FLUSH . . . . . . . . . 323
SYSPRINT SYSIN . . . . . . . . . 323
11 . . . 325 . . . . . . . . . . . . . . 325 . . 325 . . . . . . . . . . . 326 . . . . . . . . . . . . . . 326
. . . . . . . . . 326READ . . . . . . . . . 327WRITE . . . . . . . . . 327REWRITE . . . . . . . . 328LOCATE . . . . . . . . 328DELETE . . . . . . . . 329
. . . . 329FILE . . . . . . . . . . . 329FROM . . . . . . . . . . . 329IGNORE . . . . . . . . . . 330INTO . . . . . . . . . . . 330KEY . . . . . . . . . . . 331KEYFROM . . . . . . . . . 331KEYTO . . . . . . . . . . 332SET . . . . . . . . . . . 332
. . . . . . . . . . . . . . 333 . . . . . . . . . . . . . 333 . . . . . . . . . . . . 333
12 335 . . . . . . . . . 336
GET . . . . . . . . . . 336PUT . . . . . . . . . . 337
. . . . 338COPY . . . . . . . . . . . 338 . . . . . . . . . 338FILE . . . . . . . . . . . 341LINE . . . . . . . . . . . 341PAGE . . . . . . . . . . . 341SKIP . . . . . . . . . . . 342STRING . . . . . . . . . . 342
. . . . . . . . . 344 . . . . . 345 . . . . 345 . . . 346GET . . . . . . . 346PUT . . . . . . . 348
. . . . . . . 349GET . . . . . . . . 351PUT . . . . . . . . 352FORMAT . . . . . . . . 353
. . . . . 354 . . . 354GET . . . . . . . 355PUT . . . . . . . 356
PRINT . . . . . . . . . . . . . . 357 DBCS . . . . . 359
13 . . . . . . . . . . . . . 361A . . . . . . . . . . . 361B . . . . . . . . . . . 362C . . . . . . . . . . . 363COLUMN . . . . . . . . 363E . . . . . . . . . . . 364F . . . . . . . . . . . 367G . . . . . . . . . . . 368L . . . . . . . . . . . 369LINE . . . . . . . . . . 369P . . . . . . . . . . . 370PAGE . . . . . . . . . 370R . . . . . . . . . . . 371 . . . . . . . . . . . . . . . . 371
SKIP . . . . . . . . . . 372V . . . . . . . . . . . 372X . . . . . . . . . . . 373
14 . . . . . 375 . . . . . . . . . . . 376 . . . . . . . 376 . . . . . . . 377 . . . . . . . . . . . . 379 . . . . . . . . . . . . . . 380 . . . . . . . . . . . . . . 381 . . . . . . . . . . . . 383
vi Enterprise PL/I for z/OS
. . . . . . . . . . . . 384 . . . . . . . . . . . . 387 . . . . . . . . . . . . . . 389 . . . . . . . . . . . . . 389
15 . . . . . . . . . 391 . . . . . . . . . . . . . . 391 . . . . . . . . . 393OPTIMIZATION . . . . 394
ON . . . . . . . . . . . . . 394ON . . . . . . . . . . 394 ON . . . . . . . . . . 395ON . . . . . . . . . 395 ON . . . . . . . 396 ON . . . . 396
REVERT . . . . . . . . . 398SIGNAL . . . . . . . . . 398RESIGNAL . . . . . . . . 399 . . . . . . . . . . . . . . . 399CONDITION . . . . . . . . . . . . 399
16 . . . . . . . . . . . 401ANYCONDITION . . . . . . . . . . 401AREA . . . . . . . . . . . . . . 403ATTENTION . . . . . . . . . . . . 404CONDITION . . . . . . . . . . . . 404CONVERSION . . . . . . . . . . . 405ENDFILE . . . . . . . . . . . . . 407ENDPAGE . . . . . . . . . . . . 408ERROR . . . . . . . . . . . . . 409FINISH . . . . . . . . . . . . . . 410FIXEDOVERFLOW . . . . . . . . . . 411INVALIDOP . . . . . . . . . . . . 412KEY . . . . . . . . . . . . . . 412NAME . . . . . . . . . . . . . . 413OVERFLOW . . . . . . . . . . . . 414RECORD . . . . . . . . . . . . . 415SIZE . . . . . . . . . . . . . . 415STORAGE . . . . . . . . . . . . 416STRINGRANGE . . . . . . . . . . . 417STRINGSIZE . . . . . . . . . . . . 418SUBSCRIPTRANGE . . . . . . . . . 419TRANSMIT . . . . . . . . . . . . 420UNDEFINEDFILE . . . . . . . . . . 421UNDERFLOW . . . . . . . . . . . 422ZERODIVIDE . . . . . . . . . . . 423
17 . . . . 425 . . . . . . . . . . . . . 426ATTACH . . . . . . . . . 426 . . . . . . . . . . . . . . . . 427
. . . . . . . . . . . . . 427 . . . . . . . . . . . 428 . . . . . . . . . . 428 . . . . . . . . . . . 429
. . . . . . . . . . . . . . . 429 . . . . . . . . 429
THREADID . . . . . . . . 430 . . . . . . . . . 430 . . . . . . . . 431
18 . . . . . . . . . . 433 . . . . . . . . . 437
BUILTIN . . . . . . . . . . . . 437 . . . 438 . . . . . . 438
. . . . . . . . . . . . 438 . . . . . . . . . . . . . 438 . . . . . . 439
. . . . . . . . . . . . . 439 . . . . . . . . . 439 . . . . . . . . . . . 440 . . . . . . . . . 440 . . . . . . . 441 . . . . . . . . . 442/ . . . . . . . . . 443 . . . . . . 446 . . . . . . . 446 . . . . . . . . . . 446 . . . . . . . . . 447 . . . . . . . . . . . 447 . . . . . . . . . 448 . . . . . . . . . 449 . . . . . . . . . 449 . . . . . . . . . . . . . . 450 . . . . . . . 451 . . . . . . . 452 . . . . . . . . . . . . 454
ABS . . . . . . . . . . . . . . . . 456ACOS . . . . . . . . . . . . . . . . 457ADD . . . . . . . . . . . . . . . . 458ADDR . . . . . . . . . . . . . . . . 459ADDRDATA . . . . . . . . . . . . . . 460ALL . . . . . . . . . . . . . . . . 461ALLCOMPARE . . . . . . . . . . . . . 462ALLOCATE . . . . . . . . . . . . . . 463ALLOCATION . . . . . . . . . . . . . 464ALLOCSIZE . . . . . . . . . . . . . . 465ANY . . . . . . . . . . . . . . . . 466ASIN . . . . . . . . . . . . . . . . 467ATAN . . . . . . . . . . . . . . . . 468ATAND . . . . . . . . . . . . . . . 469ATANH . . . . . . . . . . . . . . . 470AUTOMATIC . . . . . . . . . . . . . 471AVAILABLEAREA . . . . . . . . . . . 472 . . . . . . . . . . . . . . . . 472
BASE64DECODE8 . . . . . . . . . . . . 473BASE64DECODE16 . . . . . . . . . . . 474
vii
BASE64ENCODE8 . . . . . . . . . . . . 475BASE64ENCODE16 . . . . . . . . . . . 477BINARY . . . . . . . . . . . . . . . 479BINARYVALUE . . . . . . . . . . . . 480BIT . . . . . . . . . . . . . . . . . 481BITLOCATION . . . . . . . . . . . . . 482BOOL . . . . . . . . . . . . . . . . 483BYTE . . . . . . . . . . . . . . . . 484CDS . . . . . . . . . . . . . . . . 485CEIL . . . . . . . . . . . . . . . . 486CENTERLEFT . . . . . . . . . . . . . 487 . . . . . . . . . . . . . . . . 487
CENTRELEFT . . . . . . . . . . . . . 488CENTERRIGHT . . . . . . . . . . . . . 489 . . . . . . . . . . . . . . . . 489
CENTRERIGHT . . . . . . . . . . . . . 490CHARACTER . . . . . . . . . . . . . 491 . . . . . . . . . . . . . . . . 491
CHARGRAPHIC . . . . . . . . . . . . 492 1 . . . . . . . . . . . . . . . 492 2 . . . . . . . . . . . . . . . 492
CHARVAL . . . . . . . . . . . . . . 494CHECKSTG . . . . . . . . . . . . . . 495COLLATE . . . . . . . . . . . . . . 496COMPARE . . . . . . . . . . . . . . 497 . . . . . . . . . . . . . . . . 497
COMPLEX . . . . . . . . . . . . . . 498CONJG . . . . . . . . . . . . . . . 499COPY . . . . . . . . . . . . . . . . 500COS . . . . . . . . . . . . . . . . 501COSD . . . . . . . . . . . . . . . . 502COSH . . . . . . . . . . . . . . . . 503COUNT . . . . . . . . . . . . . . . 504CS . . . . . . . . . . . . . . . . . 505CURRENTSIZE . . . . . . . . . . . . . 507CURRENTSTORAGE . . . . . . . . . . . 509DATAFIELD . . . . . . . . . . . . . . 510DATE . . . . . . . . . . . . . . . . 511DATETIME . . . . . . . . . . . . . . 512DAYS . . . . . . . . . . . . . . . . 513 . . . . . . . . . . . . . . . . 513
DAYSTODATE . . . . . . . . . . . . . 515DAYSTOSECS . . . . . . . . . . . . . 516DECIMAL . . . . . . . . . . . . . . 517DIMENSION . . . . . . . . . . . . . . 518DIVIDE . . . . . . . . . . . . . . . 519EDIT . . . . . . . . . . . . . . . . 520 . . . . . . . . . . . . . . . . 520
EMPTY . . . . . . . . . . . . . . . 521ENDFILE . . . . . . . . . . . . . . . 522ENTRYADDR . . . . . . . . . . . . . 523ENTRYADDR . . . . . . . . . . 524EPSILON . . . . . . . . . . . . . . . 525ERF . . . . . . . . . . . . . . . . 526ERFC . . . . . . . . . . . . . . . . 527EXP . . . . . . . . . . . . . . . . 528
EXPONENT . . . . . . . . . . . . . . 529FILEDDINT . . . . . . . . . . . . . . 530FILEDDTEST . . . . . . . . . . . . . 531FILEDDWORD . . . . . . . . . . . . . 532FILEID . . . . . . . . . . . . . . . 533FILEOPEN . . . . . . . . . . . . . . 534FILEREAD . . . . . . . . . . . . . . 535FILESEEK . . . . . . . . . . . . . . 536FILETELL . . . . . . . . . . . . . . 537FILEWRITE . . . . . . . . . . . . . . 538FIXED . . . . . . . . . . . . . . . . 539FIXEDBIN . . . . . . . . . . . . . . 540FIXEDDEC . . . . . . . . . . . . . . 541FLOAT . . . . . . . . . . . . . . . 542FLOATBIN . . . . . . . . . . . . . . 543FLOATDEC . . . . . . . . . . . . . . 544FLOOR . . . . . . . . . . . . . . . 545GAMMA . . . . . . . . . . . . . . . 546GETENV . . . . . . . . . . . . . . . 547GRAPHIC. . . . . . . . . . . . . . . 548 1 . . . . . . . . . . . . . . . 548 2 . . . . . . . . . . . . . . . 549
HANDLE . . . . . . . . . . . . . . . 550HBOUND . . . . . . . . . . . . . . . 551HBOUNDACROSS . . . . . . . . . . . . 552HEX . . . . . . . . . . . . . . . . 553 1 . . . . . . . . . . . . . . . 553 2 . . . . . . . . . . . . . . . 553
HEXIMAGE . . . . . . . . . . . . . . 555HIGH . . . . . . . . . . . . . . . . 556HUGE . . . . . . . . . . . . . . . . 557IAND . . . . . . . . . . . . . . . . 558IEOR . . . . . . . . . . . . . . . . 559IMAG . . . . . . . . . . . . . . . . 560IMAG . . . . . . . . . . . . 561INDEX . . . . . . . . . . . . . . . 562 . . . . . . . . . . . . . . . . 562
INDEXR . . . . . . . . . . . . . . . 563INDICATORS . . . . . . . . . . . . . 564INOT . . . . . . . . . . . . . . . . 565 . . . . . . . . . . . . . . . . 565
IOR. . . . . . . . . . . . . . . . . 566ISFINITE . . . . . . . . . . . . . . . 567ISIGNED . . . . . . . . . . . . . . . 568 . . . . . . . . . . . . . . . . 568
ISINF . . . . . . . . . . . . . . . . 569ISLL . . . . . . . . . . . . . . . . 570 . . . . . . . . . . . . . . . . 570
ISMAIN . . . . . . . . . . . . . . . 571ISNAN. . . . . . . . . . . . . . . . 572ISNORMAL . . . . . . . . . . . . . . 573ISRL . . . . . . . . . . . . . . . . 574 . . . . . . . . . . . . . . . . 574
ISZERO . . . . . . . . . . . . . . . 575IUNSIGNED . . . . . . . . . . . . . . 576 . . . . . . . . . . . . . . . . 576
viii Enterprise PL/I for z/OS
LBOUND . . . . . . . . . . . . . . . 577LBOUNDACROSS . . . . . . . . . . . . 578LEFT . . . . . . . . . . . . . . . . 579 . . . . . . . . . . . . . . . . 579
LENGTH . . . . . . . . . . . . . . . 580LINENO . . . . . . . . . . . . . . . 581LOCATION . . . . . . . . . . . . . . 582 . . . . . . . . . . . . . . . . 582
LOCNEWSPACE . . . . . . . . . . . . 583LOCNEWVALUE . . . . . . . . . . . . 584LOCSTG . . . . . . . . . . . . . . . 585LOCVAL . . . . . . . . . . . . . . . 586LOG . . . . . . . . . . . . . . . . 587LOGGAMMA . . . . . . . . . . . . . 588LOG2 . . . . . . . . . . . . . . . . 589LOG10. . . . . . . . . . . . . . . . 590LOW . . . . . . . . . . . . . . . . 591LOWERCASE . . . . . . . . . . . . . 592LOWER2 . . . . . . . . . . . . . . . 593 . . . . . . . . . . . . . . . . 593
MAX . . . . . . . . . . . . . . . . 594MAXEXP . . . . . . . . . . . . . . . 595 (Intel ) . . . . . . . . . . . . 595 (AIX ) . . . . . . . . . . . . 595 (z/OS 16 ). . . . . . . . . . 595 (z/OS IEEE 2 ) . . . 595 (z/OS IEEE 10 ) . . . 595
MAXLENGTH . . . . . . . . . . . . . 596 . . . . . . . . . . . . . . . . 596
MEMCONVERT . . . . . . . . . . . . 597MEMCU12 . . . . . . . . . . . . . . 598MEMCU14 . . . . . . . . . . . . . . 599MEMCU21 . . . . . . . . . . . . . . 600MEMCU24 . . . . . . . . . . . . . . 601MEMCU41 . . . . . . . . . . . . . . 602MEMCU42 . . . . . . . . . . . . . . 603MEMINDEX . . . . . . . . . . . . . . 604 . . . . . . . . . . . . . . . . 604
MEMSEARCH . . . . . . . . . . . . . 605 . . . . . . . . . . . . . . . . 605
MEMSEARCHR. . . . . . . . . . . . . 606 . . . . . . . . . . . . . . . . 606
MEMVERIFY . . . . . . . . . . . . . 607 . . . . . . . . . . . . . . . . 607
MEMVERIFYR . . . . . . . . . . . . . 608 . . . . . . . . . . . . . . . . 608
MIN . . . . . . . . . . . . . . . . 609MINEXP . . . . . . . . . . . . . . . 610 (Intel ) . . . . . . . . . . . . 610 (AIX ) . . . . . . . . . . . . 610 (z/OS 16 ). . . . . . . . . . 610 (z/OS IEEE 2 ) . . . 610 (z/OS IEEE 10 ) . . . 610
MOD . . . . . . . . . . . . . . . . 611 . . . . . . . . . . . . . . . . 611
MPSTR . . . . . . . . . . . . . . . 613
MULTIPLY . . . . . . . . . . . . . . 614NULL . . . . . . . . . . . . . . . . 615OFFSET . . . . . . . . . . . . . . . 616OFFSETADD . . . . . . . . . . . . . 617OFFSETDIFF . . . . . . . . . . . . . 618OFFSETSUBTRACT . . . . . . . . . . . 619OFFSETVALUE. . . . . . . . . . . . . 620OMITTED . . . . . . . . . . . . . . 621ONAREA . . . . . . . . . . . . . . . 622ONCHAR . . . . . . . . . . . . . . . 623ONCHAR . . . . . . . . . . . 624ONCODE . . . . . . . . . . . . . . . 625ONCONDCOND . . . . . . . . . . . . 626ONCONDID . . . . . . . . . . . . . . 627ONCOUNT . . . . . . . . . . . . . . 628ONFILE . . . . . . . . . . . . . . . 629ONGSOURCE . . . . . . . . . . . . . 630ONGSOURCE . . . . . . . . . . 631ONKEY . . . . . . . . . . . . . . . 632ONLINE . . . . . . . . . . . . . . . 633ONLOC . . . . . . . . . . . . . . . 634ONOFFSET . . . . . . . . . . . . . . 635ONSOURCE . . . . . . . . . . . . . . 636ONSOURCE . . . . . . . . . . 637ONSUBCODE . . . . . . . . . . . . . 638ONWCHAR . . . . . . . . . . . . . . 639ONWCHAR . . . . . . . . . . . 640ONWSOURCE . . . . . . . . . . . . . 641ONWSOURCE . . . . . . . . . . 642ORDINALNAME . . . . . . . . . . . . 643ORDINALPRED. . . . . . . . . . . . . 644ORDINALSUCC . . . . . . . . . . . . 645PACKAGENAME . . . . . . . . . . . . 646PAGENO . . . . . . . . . . . . . . . 647PICSPEC . . . . . . . . . . . . . . . 648PLACES . . . . . . . . . . . . . . . 649 (Intel ) . . . . . . . . . . . . 649 (AIX ) . . . . . . . . . . . . 649 (z/OS 16 ). . . . . . . . . . 649 (z/OS IEEE 2 ) . . . 649 (z/OS IEEE 10 ) . . . 649
PLIASCII . . . . . . . . . . . . . . . 650PLICANC . . . . . . . . . . . . . . . 651PLICKPT . . . . . . . . . . . . . . . 652PLIDELETE . . . . . . . . . . . . . . 653PLIDUMP. . . . . . . . . . . . . . . 654PLIEBCDIC . . . . . . . . . . . . . . 655PLIFILL . . . . . . . . . . . . . . . 656 . . . . . . . . . . . . . . . . 656
PLIFREE . . . . . . . . . . . . . . . 657PLIMOVE . . . . . . . . . . . . . . 658 . . . . . . . . . . . . . . . . 658
PLIOVER . . . . . . . . . . . . . . . 659PLIREST . . . . . . . . . . . . . . . 660PLIRETC . . . . . . . . . . . . . . . 661PLIRETV . . . . . . . . . . . . . . . 662
ix
PLISAXA . . . . . . . . . . . . . . . 663PLISAXB . . . . . . . . . . . . . . . 664PLISAXC . . . . . . . . . . . . . . . 665PLISAXD . . . . . . . . . . . . . . . 666PLISRTA . . . . . . . . . . . . . . . 667PLISRTB . . . . . . . . . . . . . . . 668PLISRTC . . . . . . . . . . . . . . . 669PLISRTD . . . . . . . . . . . . . . . 670PLITRAN11 . . . . . . . . . . . . . . 671PLITRAN12 . . . . . . . . . . . . . . 672PLITRAN21 . . . . . . . . . . . . . . 673PLITRAN22 . . . . . . . . . . . . . . 674POINTER . . . . . . . . . . . . . . . 675POINTERADD . . . . . . . . . . . . . 676POINTERDIFF . . . . . . . . . . . . . 677POINTERSUBTRACT . . . . . . . . . . . 678POINTERVALUE . . . . . . . . . . . . 679POLY . . . . . . . . . . . . . . . . 680POPCNT . . . . . . . . . . . . . . . 681PRECISION . . . . . . . . . . . . . . 682PRED . . . . . . . . . . . . . . . . 683PRESENT. . . . . . . . . . . . . . . 684PROCEDURENAME . . . . . . . . . . . 685PROD . . . . . . . . . . . . . . . . 686PUTENV . . . . . . . . . . . . . . . 687RADIX . . . . . . . . . . . . . . . 688RAISE2 . . . . . . . . . . . . . . . 689 . . . . . . . . . . . . . . . . 689
RANDOM . . . . . . . . . . . . . . 690RANK . . . . . . . . . . . . . . . . 691REAL . . . . . . . . . . . . . . . . 692REAL . . . . . . . . . . . . 693REG12. . . . . . . . . . . . . . . . 694REM . . . . . . . . . . . . . . . . 695REPATTERN . . . . . . . . . . . . . 696REPEAT . . . . . . . . . . . . . . . 698REPLACEBY2 . . . . . . . . . . . . . 699REVERSE . . . . . . . . . . . . . . 700 . . . . . . . . . . . . . . . . 700
RIGHT. . . . . . . . . . . . . . . . 701 . . . . . . . . . . . . . . . . 701
ROUND . . . . . . . . . . . . . . . 702FIXED ROUND . . . . . . . . . . 702IEEE 10 ROUND . . . . . 702IEEE 2 ROUND . . . . . . 703IBM 16 ROUND . . . . . . 703
ROUNDDEC . . . . . . . . . . . . . . 704SAMEKEY . . . . . . . . . . . . . . 705SCALE . . . . . . . . . . . . . . . 706SEARCH . . . . . . . . . . . . . . . 707 1 . . . . . . . . . . . . . . . 707 2 . . . . . . . . . . . . . . . 707
SEARCHR . . . . . . . . . . . . . . 709 . . . . . . . . . . . . . . . . 709
SECS . . . . . . . . . . . . . . . . 710 . . . . . . . . . . . . . . . . 710
SECSTODATE . . . . . . . . . . . . . 711SECSTODAYS . . . . . . . . . . . . . 712SIGN . . . . . . . . . . . . . . . . 713SIGNED . . . . . . . . . . . . . . . 714SIN . . . . . . . . . . . . . . . . . 715SIND . . . . . . . . . . . . . . . . 716SINH . . . . . . . . . . . . . . . . 717SIZE . . . . . . . . . . . . . . . . 718 . . . . . . . . . . . . . . . . 719
SOURCEFILE . . . . . . . . . . . . . 720SOURCELINE . . . . . . . . . . . . . 721SQRT . . . . . . . . . . . . . . . . 722SQRTF . . . . . . . . . . . . . . . 723STACKADDR . . . . . . . . . . . . . 724STORAGE . . . . . . . . . . . . . . 725STRING . . . . . . . . . . . . . . . 726STRING . . . . . . . . . . . . 728SUBSTR . . . . . . . . . . . . . . . 729SUBSTR . . . . . . . . . . . . 730SUBTRACT . . . . . . . . . . . . . . 731SUCC . . . . . . . . . . . . . . . . 732SUM . . . . . . . . . . . . . . . . 733SYSNULL . . . . . . . . . . . . . . 734SYSTEM . . . . . . . . . . . . . . . 735TALLY . . . . . . . . . . . . . . . 736 . . . . . . . . . . . . . . . . 736
TAN . . . . . . . . . . . . . . . . 737TAND . . . . . . . . . . . . . . . . 738TANH . . . . . . . . . . . . . . . . 739THREADID . . . . . . . . . . . . . . 740TIME . . . . . . . . . . . . . . . . 741TINY . . . . . . . . . . . . . . . . 742TRANSLATE . . . . . . . . . . . . . 743 . . . . . . . . . . . . . . . . 743
TRIM . . . . . . . . . . . . . . . . 744 . . . . . . . . . . . . . . . . 744
TRUNC . . . . . . . . . . . . . . . 745TYPE . . . . . . . . . . . . . . . . 746TYPE . . . . . . . . . . . . . 747ULENGTH . . . . . . . . . . . . . . 748ULENGTH8 . . . . . . . . . . . . . . 749ULENGTH16. . . . . . . . . . . . . . 750UNALLOCATED . . . . . . . . . . . . 751UNSIGNED . . . . . . . . . . . . . . 752UNSPEC . . . . . . . . . . . . . . . 753UNSPEC . . . . . . . . . . . . 755 . . . . . . . . . . . . . . . . 755
UPOS . . . . . . . . . . . . . . . . 756UPPERCASE. . . . . . . . . . . . . . 757USUBSTR . . . . . . . . . . . . . . 758USUPPLEMENTARY . . . . . . . . . . . 759UTF8 . . . . . . . . . . . . . . . . 760UTF8TOCHAR . . . . . . . . . . . . . 761UTF8TOWCHAR . . . . . . . . . . . . 762UVALID . . . . . . . . . . . . . . . 763UWIDTH . . . . . . . . . . . . . . . 765
x Enterprise PL/I for z/OS
VALID . . . . . . . . . . . . . . . 766VALIDDATE . . . . . . . . . . . . . 767 . . . . . . . . . . . . . . . . 767
VARGLIST . . . . . . . . . . . . . . 768VARGSIZE . . . . . . . . . . . . . . 769VERIFY . . . . . . . . . . . . . . . 770 . . . . . . . . . . . . . . . . 770
VERIFYR . . . . . . . . . . . . . . . 771 . . . . . . . . . . . . . . . . 771
WCHARVAL . . . . . . . . . . . . . 772WEEKDAY . . . . . . . . . . . . . . 773WHIGH . . . . . . . . . . . . . . . 774WHITESPACECOLLAPSE . . . . . . . . . 775WHITESPACEREPLACE . . . . . . . . . . 776WIDECHAR . . . . . . . . . . . . . . 777WLOW . . . . . . . . . . . . . . . 778XMLCHAR . . . . . . . . . . . . . . 779
XMLCHAR . . . . . . . . . . 780XMLCLEAN . . . . . . . . . . . . . . 781Y4DATE . . . . . . . . . . . . . . . 782Y4JULIAN . . . . . . . . . . . . . . 783Y4YEAR . . . . . . . . . . . . . . . 784
19 . . . . . . . 785 . . . . . . . . . 785 . . . . . . . . 785 . . . . . . . . . . 785BIND . . . . . . . . . . . . . . . . 787CAST . . . . . . . . . . . . . . . . 788FIRST . . . . . . . . . . . . . . . . 789 . . . . . . . . . . . . . . . . 789
LAST . . . . . . . . . . . . . . . . 790 . . . . . . . . . . . . . . . . 790
NEW . . . . . . . . . . . . . . . . 791RESPEC . . . . . . . . . . . . . . . 792SIZE . . . . . . . . . . . . . . . . 793VALUE . . . . . . . . . . . . . . . 794
20 . . . 795 . . . . . . . 797 . . . . . . . . . . 798 . . . . . 798
. . . 800 . . . 801 . . . . . . . 802 . . . . . . 802 . . . . . . . . . . . . . . 803%PROCEDURE . . . . . . 804 RETURN . . 805 ANSWER 805 CALL . . . 808
. . . . . . . 808COLLATE . . . . . . . . . . . . . 810COMMENT . . . . . . . . . . . . . 811COMPILEDATE. . . . . . . . . . . . 812
COMPILETIME . . . . . . . . . . . . 813COPY . . . . . . . . . . . . . . . 814COUNTER . . . . . . . . . . . . . 815DIMENSION . . . . . . . . . . . . . 816HBOUND . . . . . . . . . . . . . . 817INDEX . . . . . . . . . . . . . . 818LBOUND . . . . . . . . . . . . . . 819LENGTH . . . . . . . . . . . . . . 820LOWERCASE . . . . . . . . . . . . 821MACCOL . . . . . . . . . . . . . . 822MACLMAR . . . . . . . . . . . . . 823MACNAME . . . . . . . . . . . . . 824MACRMAR . . . . . . . . . . . . . 825MAX . . . . . . . . . . . . . . . 826MIN . . . . . . . . . . . . . . . 827PARMSET . . . . . . . . . . . . . 828QUOTE . . . . . . . . . . . . . . 829REPEAT . . . . . . . . . . . . . . 830SUBSTR . . . . . . . . . . . . . . 831SYSPARM . . . . . . . . . . . . . 832SYSTEM . . . . . . . . . . . . . . 833SYSVERSION . . . . . . . . . . . . 834TRANSLATE . . . . . . . . . . . . 835TRIM . . . . . . . . . . . . . . . 836UPPERCASE. . . . . . . . . . . . . 837VERIFY . . . . . . . . . . . . . . 838
. . . . . . 838%ACTIVATE . . . . . . . 838%assignment . . . . . . . 839%DEACTIVATE . . . . . . 839%DECLARE . . . . . . . 840%DO . . . . . . . . . 843%END . . . . . . . . . 843%GO TO . . . . . . . . 844%IF . . . . . . . . . . 844%INCLUDE . . . . . . . 845%INSCAN . . . . . . . . 846%ITERATE . . . . . . . 846%LEAVE . . . . . . . . 847%NOTE . . . . . . . . . 847%null . . . . . . . . . 848%REPLACE . . . . . . . 848%SELECT . . . . . . . . 849%XINCLUDE . . . . . . . 849%XINSCAN . . . . . . . 849
. . . . . . . . . . 850 1 . . . . . . . . . . . . . . . 850 2 . . . . . . . . . . . . . . . 850 3 . . . . . . . . . . . . . . . 851 4 . . . . . . . . . . . . . . . 851 5 . . . . . . . . . . . . . . . 852 6 . . . . . . . . . . . . . . . 853
xi
. . . . . . . . . . . . . 855
. . . . . . . . . . . . . . 859 . . . . . . . . . . . . . . . . 860
. . . . . . . . . . . . . . 861PL/I . . . . . . . . . . . . . . . 861
Enterprise PL/I for z/OS . . . . . . . . . 861
PL/I for MVS & VM . . . . . . . . . . 861PL/I for AIX. . . . . . . . . . . . . 861
. . . . . . . . . . . . . . . 861
. . . . . . . . . . . . . . 865
. . . . . . . . . . . . . . . 885
xii Enterprise PL/I for z/OS
1. . . . . . . . . . . . 22. 10 . . . . . . . . . . 33. . . . . . . . . . . 34. . . . . . . . . . . . 45. . . . . . . . . . . . . . 66. . . . . . . . . . . . . . . 77. . . . . . . . 198. . . . . . . . 229. . . . . . 24
10. FIXED BINARY SIGNED . . . . . . . . . . . . . . 27
11. FIXED BINARY UNSIGNED . . . . . . . . . . . . . 27
12. . . . . . 3213. 1 FLOAT
. . . . . . . . . . . . . 6314. RULES(ANS) 2
FIXED . . . 6315. RULES(ANS) 2
FIXED . . . 6416. RULES(IBM) 2 FIXED
. . . . . . . . 6517. . . . . . . 6618. . . . . . . . . . . 6619. . . . . . . . . . . . . 6720. . . . . . . . . . . . 6821. . . . . . . 7322. CEIL (n*3.32) CEIL (n/3.32) 8323. . . . . . . . . 16224. . . . . . . . . . . . 16525.
. . . . . . . . 18126. . . . . . . . . . . . 18227. . . . . . . . . 18828. DEFAULT attribute-expression
. . . . . . . . . . . . . . 19229. . . . . . . . . . . . 22330. . . . . . . . . . . 31231. . . . . . 31232. PL/I . . . . 31333. 32034. 320
35. PRINT . . . . . . . . . . . . . . 358
36. . . . . . . . . 37737. . . . . . . . . 38038. . . . . . . . . . . 38039. . . . . . . . . . . . 38240. . . . . . . . . . 38641. TI R 38742.
. . . . . . . . 38843. . . . . . . . . . . . 38944. . . . . . . . . . 39045. . . . . . . . . . 39246.
. . . 43947. . . . . . . . . . . 44048. . . . . . . . . 44049. . . . . . . 44150. . . . . . . . . 44351. / . . . . . . . . 44452. / . . . . . . . . . 44553. . . . . . 44654. . . . . . . 44655. . . . . . . . . . 44656. . . . . . . . . 44757. . . . . . . . . . . 44758. . . . . . . . . 44859. . . . . . . . . 44960. . . . . . . . . 44961. . . . . . . . . . . 45062. . . . . . . 45163. . . . . . . 45264. . . . . . . . . 45465. UTF-8 Base64
. . . . . . . . . 47566. UTF-16 Base64
. . . . . . . . . 47767. UNSPEC
. . . . . . . . . . . . . 75368. . . . . . . . . . . . 78569. . . . . . . . . 85570. . . . . . . . . . . 857
Copyright IBM Corp. 1999, 2013 xiii
xiv Enterprise PL/I for z/OS
1. . . . . . . . . . . . . 482. PL/I . . . . . . . 963. PACKAGE . . . . . . . 1024. . . . . . 1085. . . . . . . . . 131
6. LIST 1337. . . . . . . . . 1738. . . . . 1749. . . . . . . . . 177
10. . . . . . . . . 211
11. G . . . . . . . 21212. E . . . . . . . 21213. N . . . . . . . 21314. S . . . . . . . 21315. C . . . . . . . 21416. M . . . . . . . 21517. A . . . . . . . 21618. A
. . . . . . . . . . . . . . 21719. . . . . . . . . 290
Copyright IBM Corp. 1999, 2013 xv
xvi Enterprise PL/I for z/OS
. . . . . . . . . xvii . . . . . . . . . . . . . xx . . . . . . . . . . . . . . . xxi . . . . . . . . . . . . . . xxi . . . . . . . xxiV4R3 . . . . . . . . . xxiiV4R2 . . . . . . . . . xxiiV4R1 . . . . . . . . . xxiiiV3R9 . . . . . . . . . xxiiiV3R8 . . . . . . . . . xxivV3R7 . . . . . . . . . xxivV3R6 . . . . . . . . . xxv
V3R5 . . . . . . . . . xxvV3R4 . . . . . . . . . xxviV3R3 . . . . . . . . . xxviV3R2 . . . . . . . . . xxviV3R1 . . . . . . . . . xxvii
. . . . . . . . . . . . xxix . . . . . . . . . . . xxix . . . . . . . . . xxix . . . . . . . xxix . . . . . . . . xxixIBM . . . . . . . . xxx
IBM IBM PL/I
v Enterprise PL/I for z/OS V4R4v PL/I for AIX V3R1v Rational Developer for System z PL/I for Windows 8.5
PL/I IBM PL/I
PL/I (AIX Windows)
Copyright IBM Corp. 1999, 2013 xvii
v MVS UNIX
v ( column-name)
v 1
v ()
v (1) v 1
()
REQUIRED_ITEM
REQUIRED_ITEMoptional_item
REQUIRED_ITEMoptional_item
1 1
REQUIRED_ITEM required_choice1required_choice2
xviii Enterprise PL/I for z/OS
REQUIRED_ITEMoptional_choice1optional_choice2
REQUIRED_ITEM repeatable_item
REQUIRED_ITEM
,
repeatable_item
IBM
REQUIRED_ITEMdefault_choice
optional_choiceoptional_choice
() | A |
STATEMENT item 1 item 2 A
A:
item 3item 4
KEYWORDitem 5
item 6
/VERB /VERB LINE 1/VERBEITHER LINE 1 /VERB OR LINE 1
xix
/VERB
LINE line#
EITHEROR
'#' 'name' '*'
/MSVERIFY MSNAME msnameSYSID sysid#
MSNAME SYSID
PL/I
v x x x x
v 2
v term expression () reference ()
v PL/I
v
v
v () b
xx Enterprise PL/I for z/OS
PL/I (1987 12 IBM )
v (ASCII)X3.4 - 1977v 1X3.77 - 1980 (1979 3 1 ISO )
v 1 dpANS X3.78 (1979 3 1 ISO )
v PL/I (ANSI X3.74-1987)
IBM PL/I
v LOCATES
v WIDEPIC WIDECHAR
v ALLOCATE AREA
v BASE64ENCODE8BASE64ENCODE16BASE64DECODE8BASE64DECODE16 Base64
v INDEXR INDEX
v LOCSTG LOCATES
v LOCVAL LOCATES description
v XMLCLEANWHITESPACEREPLACEWHITESPACECOLLAPSE XML
v LOCNEWSPACE LOCATES
v LOCNEWVALUE LOCATES
v CANCEL THREAD
v DEFAULT RANGE
xxi
v CALL MACRO MACRO
V4R3 IBM PL/I
v ASSERT
v
2
v WIDECHAR 32767 v LIKE v PROCEDURE SUPPRESS v OPTIONAL OPTIONAL ( OPTIONAL )
v INOUT OUTONLY BYADDR v ALLCOMPARE 2
v USURROGATE USUPPLEMENTARY v UTF8UTF8TOCHAR UTF8TOWCHAR
CODEPAGE CHAR UTF-8 UTF-8 UTF-16 UTF8 UTF-8 UTF-8
V4R2 IBM PL/I
v XMLCHAR XML XML
v REFER BASED
v POINTER ('' ''b)
v 2047 4095
v BY DIMACROSS SQL
xxii Enterprise PL/I for z/OS
v (EXEC SQL SQL )
v INDICATORS SQL
v POPCNT x 1 FIXED BIN
V4R1 IBM PL/I
v PLISAXD XML
v ONAREA AREA AREA
v VALUE
v INITIAL DEFINE STRUCTURE
V3R9 IBM PL/I
v MEMCU12MEMCU21MEMCU14MEMCU24MEMCU41MEMCU42 UTF-8UTF-16 UTF-32 z/OS
v PLITRAN11PLITRAN12PLITRAN21 PLITRAN22 1 2 z/OS
v USURROGATE CHAR WCHAR UTF
v ROUNDDEC DFP n (ROUNDn )
v INONLYINOUT OUTONLY ( INONLY OUTONLY )
v %DO SKIP;
xxiii
v 6 /
V3R8 IBM PL/I
v PLISAXC z/OS XML System ServicesSAX PLISAXC 2G
v ULENGTHULENGTH8ULENGTH16UPOSUSUBSTRUVALID UWIDTH UTF-8 UTF-16
v FIXEDBINFIXEDDECFLOATBIN FLOATDEC () ( DFP )
v ONLINE
v REG12 CAA Language Environment
v REPATTERN 3 DB2
v DIMACROSS DB2
v SUPPRESS
v OPTIONAL
v USAGE HEX HEX VARYING VARYINGZ
V3R7 IBM PL/I
v IEEE (DFP)
ISFINITE
ISINF
ISNAN
ISNORMAL
xxiv Enterprise PL/I for z/OS
ISZERO
DFP
EPSILON
EXPONENT
HUGE
MAXEXP
MINEXP
PLACES
PRED
RADIX
ROUND
SCALE
SUCC
TINY
v MEMCONVERT
v ONOFFSET
v STACKADDR (z/OS 13)
v (") QUOTE
v XML XMLCHAR /
V3R6 ()
v PICSPEC CHARACTER PICTURE
v THREADID z/OS ID
V3R5 ()
xxv
v LOCATION REFER
v DB2 YYYY-MM-DDMM/DD/YYYYDD.MM.YYYY
V3R4 ()
v DEFAULT
v ENTRY PROCEDURES BEGIN RETURN
v REPLACEBY2 v NOINIT v MACRO
LOWERCASE
MACNAME
TRIM
UPPERCASE
V3R3 Enterprise PL/I V3R3
v MEMINDEX
MEMSEARCH
MEMSEARCHR
MEMVERIFY
MEMVERIFYR
XMLCHAR
v GET EDIT V
V3R2 Enterprise PL/I V3R2
v OPTIONS(COBOL) PROC ENTRY NOMAPNOMAPIN NOMAP
v RETURNS ENTRY PROC
v OPTIONS(RETCODE) OPTIONS(COBOL) PROC ENTRY
xxvi Enterprise PL/I for z/OS
v SIZE ERROR v USAGE RULES(IBM|ANS) ROUND UNSPEC IBM ANS
v PUT LIST PUT EDIT POINTER 8 16
v ABNORMAL STATIC STATIC
V3R1 Enterprise PL/I V3R1
v z/OS v z/OS IEEE v ANSWER v PLISAXA PLISAXB SAX XML
v CS
CDS
ISMAIN
LOWERCASE
UPPERCASE
VisualAge PL/I V2R2
v WIDECHAR UTF-16
WIDECHAR
W
WIDECHAR
WIDECHAR WIDECHAR
endianness
WIDECHAR 2 endianness ('fe_ff'wx)
v DEFAULT DESCRIPTORS VALUE
v PUT DATA POINTEROFFSET 3 DO
v DEFINE
xxvii
CAST RESPEC
v CHARVAL
ISIGNED
IUNSIGNED
ONWCHAR
ONWSOURCE
WCHAR
WCHARVAL
WHIGH
WIDECHAR
WLOW
v
%DO WHILEUNTIL LOOP
%ITERATE
%LEAVE
%REPLACE
%SELECT
- COLLATE
- COMMENT
- COMPILEDATE
- COMPILETIME
- COPY
- COUNTER
- DIMENSION
- HBOUND
- INDEX
- LBOUND
- LENGTH
- MACCOL
- MACLMAR
- MACRMAR
- MAX
- MIN
- PARMSET
- QUOTE
- REPEAT
- SUBSTR
- SYSPARM
- SYSTEM
- SYSVERSION
- TRANSLATE
xxviii Enterprise PL/I for z/OS
- VERIFY
PL/I IBM Web (http://www.ibm.com/jp/manuals/) (URL )
z/OS Enterprise PL/I
z/OS :
v
v v ()
z/OS z/OS
TSO/E ISPF z/OS TSO/E ISPF
v z/OS TSO/E v z/OS TSO/E v z/OS TSO/E
(PF ) TSO/E ISPF PF
XHTML IBM System z Enterprise DevelopmentTools & Compilers (publib.boulder.ibm.com/infocenter/pdthelp/index.jsp)
xxix
http://publib.boulder.ibm.com/infocenter/pdthelp/index.jsphttp://publib.boulder.ibm.com/infocenter/pdthelp/index.jsp
PICTURE
IBM IBM IBM HumanAbility and Accessibility Center (www.ibm.com/able)
xxx Enterprise PL/I for z/OS
http://www.ibm.com/ablehttp://www.ibm.com/able
1 1 . . . . . . . . . . . . 1
10 . . . . . . . . . . . . . . . 32 . . . . . . . . . . . . . . . 316 . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . 4 . . . . . . . . . . . 5
SBCS . . . . . . . 5ID . . . . . . . . . . . . . . . . . 5
PL/I . . . . . . . . . . . 6 . . . . . . . . 6
. . . . . . . . . . . 6 . . . . . . . . . . . . . . 7
. . . . . . . . . . . . . . 8 . . . . . . . . . . . . . 8 . . . . . . . . . . 10 . . . . . . . . . . 11
. . . . . . . . . . . . . . . 112 . . . . . . . . . . . 12
DBCS ID . . . . . . . . . . . . . . 12DBCS 1 ID . . . . 122 DBCS ID . . . . . . 122 ID . . . . . . . . 13
DBCS . . . . . 13DBCS . . . . . . . . . . . . 14
PL/I ID
PL/I 1 (SBCS) 2 (DBCS)
PL/I 855
1 PL/I PC 0640 PC 256 1
PL/I 0640 PC PL/I CURRENCYNAMESOR NOT PC 0850
0850 10 SBCS PL/I ()
Copyright IBM Corp. 1999, 2013 1
PL/I
26 ASCII EBCDIC (16 ) 1
1.
EBCDIC 16 ()
EBCDIC 16 ()
ASCII 16 ()
ASCII 16 ()
A C1 81 41 61
B C2 82 42 62
C C3 83 43 63
D C4 84 44 64
E C5 85 45 65
F C6 86 46 66
G C7 87 47 67
H C8 88 48 68
I C9 89 49 69
J D1 91 4A 6A
K D2 92 4B 6B
L D3 93 4C 6C
M D4 94 4D 6D
N D5 95 4E 6E
O D6 96 4F 6F
P D7 97 50 70
Q D8 98 51 71
R D9 99 52 72
S E2 A2 53 73
T E3 A3 54 74
U E4 A4 55 75
V E5 A5 56 76
W E6 A6 57 77
X E7 A7 58 78
Y E8 A8 59 79
Z E9 A9 5A 7A
(#) (@) ($) 16 NAMES
2 Enterprise PL/I for z/OS
10 PL/I 0 9 10 10 10 10 16
2. 10
EBCDIC 16 ASCII 16
0 F0 30
1 F1 31
2 F2 32
3 F3 33
4 F4 34
5 F5 35
6 F6 36
7 F7 37
8 F8 38
9 F9 39
2 PL/I 0 1 2 2 2 2
16 PL/I 0 9 A F 16 16 A F 10 10 15 16 16 16 16
3 PL/I ASCII EBCDIC (16 )
3.
EBCDIC 16
ASCII 16
b 40 20
= 7E 3D
+ 4E 2B
- 60 2D
* 5C 2A
/ 61 2F
1 3
3. ()
EBCDIC 16
ASCII 16
( 4D 28
) 5D 29
, 6B 2C
. 4B 2E
' 7D 27
" 1 7F 22
% 6C 25
; 5E 3B
: 7A 3A
NOT OR 1 5F 5E
& AND 50 26
| OR 1 4F 7C
> 6E 3E
< 4C 3C
_ () 6D 5F
1:
OR (|)NOT () (") ORNOT QUOTE
4.
{
**
<
>
= 1 ; OR
=
/*
*/
> ()
=> ()
4 Enterprise PL/I for z/OS
4. ()
+=
-=
*=
/=
|= OR
&= AND
{=
**=
(:
:)
1. =
PL/I
ID DBCS
SBCS SBCS PL/I
PL/I ID 15 2
IDID PPICPICTURE ID (PPIC PICTURE ID )ID ID INTERNAL (_) (_) IBMPLICEE_IBM_PLI _CEE
ID PL/I ID PL/I ID PL/I
1 5
PL/I PL/I ID READDECIMAL ENDFILE
PL/I ID
Gross_Pay (_)
:
A Rate_of_pay
Record Loop_3
175INTERNAL EXTERNAL
(*) IDENTRY
ID 5 7 6
5.
, BY NAME
. 10 2
;
=
: DEFAULT RANGE
b
( ) (iteration factor)(repetition factor)
ID
6 Enterprise PL/I for z/OS
5. ()
>=>
() ()
% % %
:
6.
+-
*
/
**
==
=
&
|
NOT ORAND
{
( Weather.Temperature) 10 (3.14)
(b)
ID 1 ID PPIC PICTURE
ID ()
1 7
ab+bc Ab + BcTable(10) TABLEb(b10bbb)First,Second first,bsecondAtoB AbtobB
/*text
*/
/*
text */
*/
1
A = /* This comment is on one line */ 21;
/* This comment spanstwo lines */
()
A = /* This is a constant, not a comment */ ;
%DO SKIP:
ID PL/I
PL/I PL/I
8 Enterprise PL/I for z/OS
()
% () % PL/I % % 1
v ({)
v 1 v %
219 8 PL/I % %
PL/I
condition-prefix label-prefix statement
%
%statement
%
%label-prefix statement
1 9
label-prefix statement
condition-prefixcondition-prefix PL/I ( 391 15 )
label-prefixlabel-prefix 1 ( 48 LABEL ) ( 125) ( 50FORMAT )
DECLAREDEFAULTWHENOTHERWISE ON
identifier :
statement
READ DECLARE
read file(In) into(Input); /* keyword statement */%declare Text char; /* keyword %statement */
(=) 1 ID
10 Enterprise PL/I for z/OS
A = B + C; /* assignment statement */%Size = 15; /* % assignment statement */
1
; /* null statement */Label:; /* labeled null statement */
% ; /* % null statement */
1 4 IFONWHEN OTHERWISE
on conversiononchar() = 0;
if Text = stmt thendo;
select(Type);when(if) call If_stmt;when(do) call Do_stmt;when() /* do nothing */ ;otherwise
call Other_stmt;end;call Print;
end;end;
%if Type = AREA %then%Size = Size + 16;
%else;
DO SELECT DO DO END SELECT SELECT END WHEN OTHERWISE
DO 232DOSELECT 258SELECT
1 11
()
2 2 (DBCS) 2 GRAPHIC DBCS SBCS DBCS
v v ID v G M
INCLUDE FETCH TITLE SBCS
z/OS DBCS z/OS
DBCS IDDBCS ID DBCS 1 2
DBCS 1 ID1 DBCS ID PL/I DBCS 1 DBCS ID SBCS ID
:
1. . () SBCS 2
2. kk2
3. ('0F'X)
= 3; /* is the same as IBM=3; */
2 DBCS IDDBCS LIMITS
DBCS ID DBCS SBCS SBCS
12 Enterprise PL/I for z/OS
ABAB /* are all AB (SBCS-DBCS-SBCS) */
2 ID DBCS ID SBCS ID DBCS ID EXTERNAL %INCLUDE ID v EXTERNAL v OPEN TITLE
DBCS DBCS PL/I 5SBCS
DBCS
ID SBCSDBCS
dcl Eof /* in SBCS, is the same as */dcl /* this in DBCS. */
dcl X /* these are all the same, where */dcl /* kk is a valid */dcl x /* DBCS character */dcl /* */
SBCSDBCS
/* comment */ /* all SBCS *//* */ /* DBCS text */
SBCS
SBCSDBCS SBCS DBCS
SBCS M
DBCS SBCS
MMMIBMM
DBCS SBCS DBCS
G /* 6 byte graphic constant */G /* 10 byte graphic constant .I.B.M..S */
DBCS ID
1 13
G DBCS G DBCS
GG
DBCS ID SBCS DBCS
DBCS
14 Enterprise PL/I for z/OS
2 . . . . . . . . . . . . . . 15 . . . . . . . . . . . . . . . . 16 . . . . . . . . . . . . . . . . 16 . . . . . . . . . . . . . 16 . . . . . . . . . . 16
. . . . . . . . . 17 . . . . . . . . . . . . . 18 . . . . . . . . . . . . . 18
. . . . . . . . 23 . . . . . . . 23
BINARY DECIMAL . . . . . 25FIXED FLOAT . . . . . . . 25PRECISION . . . . . . . . . . 25REAL COMPLEX . . . . . . 25SIGNED UNSIGNED . . . . . 262 . . . . . . . . . 272 . . . . . . . . . 27XN (16 ) 2 . . . . . 28XU (16 ) 2 . . . . . 2810 . . . . . . . . 2810 . . . . . . . . . 292 . . . . . . . . . 292 . . . . . . . . . 3010 . . . . . . . . 3010 . . . . . . . . . 31
. . . . . . . 31BIT CHARACTER GRAPHIC WIDECHAR . . . . . . . 32VARYING VARYINGZ NONVARYING . . . . . . . . . 33PICTURE WIDEPIC . . . . 34 . . . . . . . . . . . . 35 . . . . . . . . . . . . . 35A (ASCII) . . . . . . . . . 36E (EBCDIC) . . . . . . . . . 36X (16 ) . . . . . . . . . 36 . . . . . . . . . . . 37 . . . . . . . . . . . . 37B4 (16 ) . . . . . . . . 38B3 (8 ) . . . . . . . . . 38 . . . . . . . . . 38 . . . . . . . . . . 38GX (16 ) . . . . . . 39 . . . . . . . . . . . 39M () . . . . . . . . . . 39 . . . . . . . . . . 40WX (16 ) . . . . . . . 41 . . . . . . . . . . . . 41 . . . . . . . . . . . . . 43 . . . . . . . . . . . . 46
PL/I
167 7
( )
194 198199 205
Copyright IBM Corp. 1999, 2013 15
1 NONASSIGNABLE ( 291ASSIGNABLE NONASSIGNABLE ) v v 1
( 53 3 )
DECLARE 46
16
v 1 2 ('' "")
v 1
:
Shakespeares "Hamlet" is identical to"Shakespeares ""Hamlet"""
PICTURE "99V9" is identical toPICTURE 99V9
:
16 (_)
1100_1010B 11001010B
16 Enterprise PL/I for z/OS
1100_1010B 11001010B C_AB4 cab4 C_AXN caXN 16_777_216 16777216
PL/I
(BINARY DECIMAL) (FLOAT FIXED) () (REAL COMPLEX)
41
Area = (Radius**2) * 3.1416;
Area Radius 2 3.1416
3.1416
dcl Pi FIXED DECIMAL (5,4) VALUE(3.1416);area = (radius**2) * Pi;
loop loop A=2*B;
loop: A=2*B;C=B+6;
2 17
PL/I
AREA
BINARY
BIT
CHARACTER
COMPLEX
DECIMAL
DIMENSION
ENTRY
FILE
FIXED
FLOAT
FORMAT
GRAPHIC
HANDLE
LABEL
LOCATES
NONVARYING
OFFSET
ORDINAL
PICTURE
POINTER
PRECISION
REAL
RETURNS
SIGNED
STRUCTURE
TASK
TYPE
UNSIGNED
UNION
VARYING
VARYINGZ
WIDECHAR
WIDEPIC
()
ABNORMAL
ALIGNED
ASSIGNABLE
AUTOMATIC
BASED
BIGENDIAN
BUFFERED
BUILTIN
BYADDR
BYVALUE
CONDITION
CONNECTED
CONTROLLED
DEFINED
DIMACROSS
DIRECT
ENVIRONMENT
EXCLUSIVE
EXTERNAL
GENERIC
HEXADEC
IEEE
INITIAL
INONLY
INOUT
INPUT
INTERMAL
KEYED
LIKE
LIST
LITTLEENDIAN
NONASSIGNABLE
NONCONNECTED
NORMAL
OPTIONAL
OPTIONS
OUTONLY
OUTPUT
PARAMETER
POSITION
RECORD
SEQUENTIAL
STATIC
STREAM
UNALIGNED
UNBUFFERED
UPDATE
VALUE
VARIABLE
XMLATTR
XMLOMIT
CHARACTER FILE INTERNAL
167 7 v DECLARE v PL/I v
18 Enterprise PL/I for z/OS
7 22 8 PL/I ( 7) ( 228)
Area = (Radius**2)*3.1416;
3.1416 v DECIMAL 2 v FIXED v PRECISION(5,4) (5 4 )
v REAL v INTERNAL ALIGNED
( 7 )
1.0 (10 ) 1 ( 1 10 )'1'B ()'1' ()1B (2 ) 1E0 (10 )
Pi 5 10 4 PRECISION FIXED DECIMAL
declare Pi fixed decimal(5,4) initial(3.1416);
DECLARE Pi PL/I v REALv ALIGNEDv INTERNALv AUTOMATICv SIGNED
( 22 8 )
7.
1 2
1 2
REAL | FLOAT | FIXED
BINARY | DECIMAL
PRECISION
SIGNED
2 19
7. ()
1 2
1 2
REAL | COMPLEX
FLOAT | FIXED
BINARY | DECIMAL
PRECISION
VALUE
SIGNED | UNSIGNED
BIT | CHARACTER |GRAPHIC | WIDECHAR
()
BIT | CHARACTER |GRAPHIC | WIDECHAR
[()]NONVARYING
VALUE
POINTER | OFFSET | HANDLEVALUE
LOCATES
PICTURE | WIDEPICREAL | COMPLEX
VALUE
3 FILE ENVIRONMENTSTREAM | RECORD
INPUT | OUTPUT | UPDATE
SEQUENTIAL | DIRECT
BUFFERED | UNBUFFERED 4
KEYED
INTERNAL | EXTERNAL
5 ENTRY [RETURNS] INTERNAL | EXTERNAL
5 FORMAT
5 LABEL
20 Enterprise PL/I for z/OS
7. ()
1 2
1 2
:
1.
2.
3. 309 10
4. BUFFERED SEQUENTIAL UNBUFFERED DIRECT
5. INTERNAL DECLARE
2 21
8.
AREA(size) ALIGNED |UNALIGNED
INTERNAL |
EXTERNAL
(INTERNAL :
AUTOMATIC
BASED
DEFINED
PARAMETER)
AUTOMATIC |
STATIC |
BASED |
CONTROLLED
(AUTOMATIC INTERNAL STATIC EXTERNAL )
:
DEFINED
[POSITION]
:PARAMETER
[CONNECTED |
NONCONNECTED]
[CONTROLLED]
[INITIAL
[CALL]]
[VARIABLE]
[NORMAL |
ABNORMAL]
ASSIGNABLE |
NONASSIGNABLE
1
REAL | COMPLEX
FLOAT | FIXED
BINARY | DECIMAL
PRECISION
[SIGNED |
UNSIGNED]
ALIGNED |
UNALIGNED
ENTRY [RETURNS][LIMITED]
FILE
FORMAT
LABEL
POINTER | HANDLE |{OFFSET
[(area-variable)]
LOCATES}
ORDINAL
PICTURE | WIDEPICREAL | COMPLEX
ALIGNED |
UNALIGNED
BIT | CHARACTER |GRAPHIC | WIDECHAR
[()][ VARYING |
VARYINGZ |
NONVARYING]
TASK ALIGNED |UNALIGNED
: DIMENSION 194
v : (INITIAL ) STRUCTURE UNION
LIKE v : STRUCTURE UNION LIKE
v INTERNAL
198 199
22 Enterprise PL/I for z/OS
8. ()
:
1. 187 IBM ANS FLOAT DECIMAL FIXED BINARY
2. POSITION
17
2 23
float sequence
fixed sequence
REAL precision specification
COMPLEX precision specification
float sequence:
FLOAT precision specification
DECIMAL precision specification
BINARY precision specification
fixed sequence:
FIXED precision specification
DECIMAL precision specification
SIGNEDBINARY precision specification
UNSIGNED
precision specification:
PRECISIONfloat precisionfixed precision
float precision:
(number-of-digits)
fixed precision:
(number-of-digits ),scaling-factor
9.
BINARY BINCOMPLEX CPLXDECIMAL DECPRECISION PREC
24 Enterprise PL/I for z/OS
BINARY DECIMAL 10 2 DECIMAL
FIXED FLOAT
10 2
PRECISION ()
()
10 /2 () 0
(p,q) p q
(-q) q (q) q
PRECISION (FIXED FLOAT) (DECIMAL BINARY) (REAL COMPLEX)
PRECISION
REAL COMPLEX ()
BINARY DECIMAL
2 25
2 ()
REAL
I
27I3.968E10I11011.01BI
real_constant+-
+ imaginary_constant-
38+27I
y z 2
y = complex(A,B);z = complex(C,D);
x=y/z
real(x) = (A*C + B*D)/(C**2 + D**2);imag(x) = (B*C - A*D)/(C**2 + D**2);
x=y*z
real(x) = A*C - B*D;imag(x) = B*C + A*D;
SIGNED UNSIGNED SIGNED UNSIGNED FIXED BINARY ORDINAL SIGNED UNSIGNED
UNSIGNED
v IANDIEORINOT IOR UNSIGNED UNSIGNED
v ISLL ISRL 1 UNSIGNED UNSIGNED
v REAL IMAG UNSIGNED UNSIGNED
REAL COMPLEX
26 Enterprise PL/I for z/OS
RULES(ANS) UNSIGNED
v UNSIGNED UNSIGNED
v MAX MIN UNSIGNED UNSIGNED
v REM MOD UNSIGNED UNSIGNED
10 11 SIGNED UNSIGNED
10. FIXED BINARY SIGNED
()
1011_0B (5,0)1111_1B (5,0)101B (3,0)1011.111B (7,3)
XN (16 ) 2 XN 16 SIGNED REAL FIXED BINARY 8 31 9 63
' hex-digit 'XN
100XN /* same as 00000100XN with value 256 */8000XN /* same as 00008000XN with value 32,768 */FFFFXN /* same as 0000FFFFXN with value 65,535 */"ffff_ffff"XN /* is the value -1 */
XN 16 16
XU (16 ) 2 XU 16 UNSIGNED REAL FIXED BINARY 8 32 9 64
' hex-digit 'XU
100XU /* same as 00000100XU with value 256 */8000XU /* same as 00008000XU with value 32,768 */FFFFXU /* same as 0000FFFFXU with value 65,535 */"ffff_ffff"XU /* is the value 2**32-1 */
XU 16 16
10 10 DECIMAL FIXED
declare A fixed decimal (5,4);
2
28 Enterprise PL/I for z/OS
A 5 10 5 4
2
declare B fixed (7,0) decimal;declare B fixed decimal(7);
B 7
declare C fixed (7,-2) decimal;
C -2 C 7 -9999999*100 9999999*100 ( 100)
declare D decimal fixed real(3,2);
D 3 ( 2 )
10 1 2 4 10 p
1 () SIZE
10 10 1 10 10 (p,q) p q
3.1416 (5,4)455.3 (4,1)732 (3,0)1_200_300 (7,0)003 (3,0)5280 (4,0).0012 (4,4)
2 2 BINARY FLOAT
declare S binary float (16);
10
2 29
S 2 16 2
5 10 (21) (21) (53) (53)
2 2 B 2 ESD Q 10 () 2 E (p) p 2 SD Q
101101E5B (6)101.101E2B (6)11101E-28B (5)11.01E+42B (4)1S0b (21)1D0b (53)1Q0b (64)(Windows)1Q0b (106)(AIX)1Q0b (109)(z/OS)
10 10 DECIMAL FLOAT
declare Light_years decimal float(5);
Light_years 5 10
IEEE 10
v 7
v 7 16
v 16
10
v 6
v 6 16
v 16
2
30 Enterprise PL/I for z/OS
10 10 10 ESD Q 4 10 () 10 E (p) p SD Q
15E-23 (2)15E23 (2)4E-3 (1)1.96E+07 (3)438E0 (3)3_141_593E-6 (7).003_141_593E3 (9)1s0 (6)1d0 (16)1q0 (18)(Windows)1q0 (32)(AIX)1q0 (33)(z/OS)
5 ()
IEEE 10 (DFP) 10 (3.1415E0 31415E-4 ) MINEXP-1 MAXEXP-PLACES
v -95
BIT CHARACTER GRAPHIC WIDECHARBIT
CHARACTER PICTURE
WIDECHAR UTF-16
GRAPHIC
BIT CHARACTER GRAPHIC WIDECHAR
BITCHARACTERGRAPHICWIDECHAR
(length )REFER(variable)
(*)
NONVARYING
VARYING
VARYINGZ
12.
CHARACTER CHARGRAPHIC GWIDECHAR WCHARNONVARYING NONVARVARYING VARVARYINGZ VARZ
lengthNONVARYING VARYING VARYINGZ (DBCS )
1
CONTROLLED
a FIXED BINARY(31,0)
STATIC
BASED 272BASED
BITCHARACTERGRAPHIC WIDECHAR
32 Enterprise PL/I for z/OS
REFERREFER 281REFER ()
User 15
declare User character (15);
declare Symptoms bit (64);
VARYING VARYINGZ NONVARYING VARYING VARYINGZ 0 NONVARYING
VARYING 2 2
VARYINGZ 1 00x
VARYINGZ GRAPHIC 2 0000gx
VARYINGZ WIDECHAR 2 0000wx
VARYINGZ BIT
DECLARE User Zuser 15 User Zuser NULL User 17 Zuser 16
declare User character (15) varying;declare Zuser character (15) varyingz;
User Zuser MAXLENGTH LENGTH
VARYINGZ NULL 16
declare A char(4) nonvarying init( (abc { 00x) );declare B char(3) varyingz init( abc );
Z C
BITCHARACTERGRAPHIC WIDECHAR
2 33
dcl Z char(3) nonvarying init(abc);dcl C char(3) varyingz init(abc);
VARYING VARYINGZ * NONASSIGNABLE
PICTURE WIDEPIC
PICTURE
WIDEPIC WIDECHAR
PICTUREWIDEPIC
' picture-specification '
PIC
picture-specification 376 377
PICTURE picture-specification
10 (K E ) () V F V F
10 1 COMPLEX
VARYING VARYINGZ NONVARYING
34 Enterprise PL/I for z/OS
WIDEPIC PICTURE WIDEPIC
v A X
v
WIDEPIC'9V.99' 3.14 CHAR WIDECHAR
41
CHARACTER 256 PICTURE 1
16 2 1
2
' 'character
Shakespeares "Hamlet" 22"Shakespeares ""Hamlet""" 22"Page 5" 6/* This is a comment */ 27 0(2)Walla 12
"Walla Walla "
PICTURE WIDEPIC
2 35
A (ASCII) A (ASCII) A A ASCII
' 'Acharacter
character
A UTF-8 1
'123'A 16 '313233'X
DEFAULT(ASCII | EBCDIC)
E (EBCDIC) E (EBCDIC) E E EBCDIC
' 'Echaracter
character
E UTF-8 1
'123'E 16 'F1F2F3'X
DEFAULT(ASCII | EBCDIC)
X (16 ) X 16 X 16 1
X 16
A
36 Enterprise PL/I for z/OS
X 2 X
' 'Xhex-digit hex-digit
X
"0d0A"x 2X 0
: X
BIT 1 8
2 B
' 'Bbinary-digit
2 B
1B 1"1100_1010_11"B 10(64)0B 64B 00B 1
3 64
X (16 )
2 37
( 84)
B4 (16 ) B4 16 B4 16 4 BX B4
' ' B4hex-digit BX
B4
CAB4 "1100_1010"B
80B4 1000_0000B 1B4 0001B (2)FB4 1111_1111B (2)FB4 FFBX B4 ""B
B3 (8 ) B3 8 B3 8 3
B3
22B3 "010_010"B
40B3 100_000B 1B3 001B (2)7B3 111_111B B3 ""B
GRAPHIC DBCS DBCS2
DBCS DBCS 2
38 Enterprise PL/I for z/OS
G DBCS G DBCS
'< >'Gkk
GRAPHIC GRAPHIC ENVIRONMENT STREAM CONVERSION
GX (16 ) GX 16 (4 ) GX 4 16 1 DBCS
' 'GXhex-digit hex-digit hex-digit hex-digit
:
81a1GX 1 DBCS ""gX g
: GX
SBCS DBCS CHARACTER CHARACTER
OPTIONS CHARGRAPHIC MPSTR CHARGRAPHIC 141OPTIONS MPSTR 613MPSTR
M () M () DBCS SBCS () M 16
2 39
M SBCS 2 1 DBCS 2
M 2 M
' 'Mcharacter
'IBM'M z/OS 7 5 ''M z/OS 8 6 ''M 0
GRAPHIC GRAPHIC ENVIRONMENT STREAM CONVERSION
z/OS
v /
v DBCS '0E'x '0F'x
v '0E'x '0F'x
: z/OS M
WIDECHAR UTF-16 2
v WIDECHAR v W v WIDECHAR v WIDECHAR WIDECHAR
v endianness
M ()
40 Enterprise PL/I for z/OS
WIDECHAR 2 endianness ('fe_ff'wx)
WX (16 ) WX 16 (4 ) WX 4 16 1 UTF-16
' 'WXhex-digit hex-digit hex-digit hex-digit
:
0031wx 1 UTF-16 ""wX w
: WX () '1' '0031'wx ('3100'wx )
: WX
PICTURE 10 10
declare Price picture 999V99;
Price 5 10 2 Price 10
10 10
2 41
declare Price picture $99V.99,Cost character (6),Amount fixed decimal (6,2);
Price = 12.28;Cost = $12.28;
PRICE ($) (.) Price Cost
Amount = Price;Cost = Price;Amount = Cost;Price = Cost;
2 Amount 0012.28 Cost '$12.28' Amount Price Price Price Cost Price
3 4 CONVERSION Cost Amount Cost Price
CONVERSION (+) (-)
() 375 14
42 Enterprise PL/I for z/OS
2 DATE DATE ()
DATE('pattern')
1 YYMMDD
DATE 1 v CHAR(n) NONVARYINGv PIC'(n)9' REALv FIXED DEC(n,0) REAL
n pattern
RESPECT ( )
v DATE v DATE DATE('YYMMDD')
DATE('YYMMDD') DATE() DATE() DATE
DATE :
DATE 2 DATE 1 DATE DATE ()
WINDOW window () 2
DATE 2 DISPLAY window 1900 window 1950
dcl a pic(6)9 date;dcl b pic(6)9 def(a);dcl c pic(6)9 date;dcl d pic(6)9 def(c);
2 43
b = 670101;d = 010101;
display( b || < || d || ? );display( a < c );
v IF SELECT v WHILE UNTIL v TO
:
v == v YYYYYYYYMMYYYYDDD YYYYMMDD
:
2
DATE :
1 DATE W
v DATE window
v DATE
dcl start_date char(6) date;if start_date >= then /* no windowing */...if start_date >= 851003 then /* windowed */...
DATE :
1 DATE E window
dcl start_date char(6) date;dcl non_date char (6);
if start_date >= non_date then /* windowed */...
44 Enterprise PL/I for z/OS
DATE :
2 DATE
v DATE DATE
v DATE
v DATE DATE E DATE
v DATE DATE () E DATE
v DATE DATE () W DATE
dcl start_date char(6) date;start_date = ;...
v 4 2 window ERROR
dcl x char(6) date;dcl y char(8) date(YYYYMMDD);
y = 20600101;
x = y; /* raises error if window is
v ()
v v BY ()v v BINARYDECIMALFIXEDFLOAT PRECISION
v SUMPROD POLY
DATE
ID VALUE
VALUE VALUE
v VALUE v v AUTOMATIC
:
Unit FIXED BINARY VALUE(1) FIXED BINARY(15) VALUE(1) 1 FIXED DECIMAL(1,0) 48 1
31
46 Enterprise PL/I for z/OS
23
VALUE :
VALUE(restricted-expression)
(restricted expression) 76
:
48 1
2 47
:
LABEL :
LABEL
,
( label-constant )
Dcl A4 value(148) fixed bin,C4 value(261) fixed bin,Whole value(800) fixed bin;
Dcl Notes (4) static,init(a4, (Whole/4), /* 148, 200 */
c4, (Whole*2)); /* 261, 1600 */
/* note that "Head" gets length equal to length of VALUE */
Dcl Head char VALUE(Feel the Power of PL/I); /* char(22) */Dcl Headsize fixed bin value(length(Head)); /* 22 */Dcl 1 Head1 static,
2 * char(Headsize) initial(Head), /* char(22) */2 * char(20) init(),2 * char(5) init(Page ),2 Page_number pic zz9,2 * char(0);
Dcl TwoHeads char(2*Headsize); /* char(44) */Dcl Page0 picture zz9 value(0);Dcl MyNullPtr ptr value(ptrvalue(ffff_ffffxn));
/* Differences in attributes/results ofnamed and unnamed constants */
Dcl Pi float bin value (3.1416); /* is FLOAT BINARY(21) but ... */3.1416 /* is FIXED DECIMAL(5,4) */
Dcl Unit fixed bin value(1); /* is FIXED BINARY(15) but ... */1 /* is FIXED DECIMAL(1,0) */1.0 /* is FIXED DECIMAL(2,1) */1B /* is FIXED BINARY(1) */0000_0000_0000_001B /* is FIXED BINARY(15) */
Dcl Title char(20) value(SCIDS); /* is CHAR(20) but ... */Dcl Title2 char value(SCIDS);/* is CHAR(5) */SCIDS /* is CHAR(5) */
1.
48 Enterprise PL/I for z/OS
LABEL
(PROCEDUREENTRYPACKAGEFORMAT ) ( 8) Abcde
Abcde: Miles = Speed*Hours;
GO TO
GO TO GO TO
declare Lbl_x label;Lbl_a: statement;
.
.
.Lbl_b: statement;
.
.
.Lbl_x = Lbl_a;
.
.
.go to Lbl_x;
Lbl_a Lbl_b Lbl_x Lbl_a Lbl_x GO TO Lbl_x Lbl_a Lbl_b Lbl_x Lbl_x Lbl_b Lbl_x
I Z
go to Z(I);...
Z(1): if X = Y then return;
2 49
.
.
.Z(2): A = A + B + C * D;
.
.
.Z(3): A = A + 10;
Z(2) I=2 GO TO Z(I) ERROR I < LBOUND(Z) I > HBOUND(Z) GO TO Z(I) SUBSCRIPTRANGE
FORMAT :
FORMAT
FORMAT
FORMAT
FORMAT
PL/I
Prntexe: format( column(20),A(15), column(40),A(15), column(60),A(15) );
Prntstf: format( column(20),A(10), column(35),A(10), column(50),A(10) );
Prntexe Prntstf
4 5 2 6 7 3
1 dcl Print format;2 put edit (X,Y,Z) (R(Prntexe) );3 put edit (X,Y,Z) (R(Prntstf) );4 Print = Prntexe;5 put edit (X,Y,Z) (R(Print) );6 Print = Prntstf;7 put edit (X,Y,Z) (R(Print) );
50 Enterprise PL/I for z/OS
VARIABLE :
VARIABLE ENTRYFILE LABEL
VARIABLE
VARIABLE DIMENSION
PARAMETER
INITIAL
Account1 Account2 File1 File2
declare Account1 file variable,Account2 file automatic,File1 file,File2 file;
File1 File2 Account1 Account2
VARIABLE
2 51
52 Enterprise PL/I for z/OS
3 . . . . . . . . . . . . . . 56 . . . . . . . . . . . . . . 56 . . . . . . . . . . . . . . . . 56 . . . . . . . . . . . . . . 56 . . . . . . . . . . . . . . 57
. . . . . . . . . . . . . . . . 57 . . . . . . . . . . . . . 58 . . . . . . . . . . . . 58 . . . . . . . . . . . . . . 59 . . . . . . 60 . . . . . . . . . . . 61 . . . . . . . . . . . 66
. . . . . . . . . . . . . 67BOOL . . . . . . . . . 68
. . . . . . . . . . . . . . 68 . . . . . . . . . . . . . . 70
RULES(IBM) . . . . . . 70RULES(ANS) . . . . . . 71
. . . . . . . . . . 72 . . . . . . . . . . 72
. . . . . . . . . . . . . . . . 74 . . . . . . . . . . . 74 . . . . . . . . . . . 74 . . . . . . . . 75 . . . . . . . . . . . 75
. . . . . . . . . . . . . . . . 75 . . . . . . . . . . . . . . 76
v v
57
unary-expression(1)
infix-operator unary-expression
unary-expression:
(1)prefix-operator
elementary-expression
elementary-expression:
(expression)reference
constant
Copyright IBM Corp. 1999, 2013 53
reference:
(2)locator-qualifier basic-reference
(3)( subscript-list )
(4)( argument-list )
locator-qualifier:
(2)reference ->
=>.
basic-reference:
(5) (6)qualified-reference identifier
subscript-list:
,(3)
expression*
argument-list:
,(4)
expression*
qualified-reference:
(5)basic-reference
( subscript-list ).
:
1 Operators are shown in 7 6.
2 Locator-qualifier is described under 276 and 160.
3 Subscripts are described under 194.
54 Enterprise PL/I for z/OS
4 Arguments are described in 120.
5 Qualified-reference is described under 201.
6 Identifiers are described under 5ID.
()
dcl A(10,10) bin fixed(31),B(10,10) bin fixed(31),1 Rate,
2 Primary dec fixed(4,2),2 Secondary dec fixed(4,2),
1 Cost(2),2 Primary dec fixed(4,2),2 Secondary dec fixed(4,2),
C bin fixed(15),D bin fixed(15);
dcl Pi bin float value(3.1416);
Pi27CC * DA(3,2) + B(4,8)Rate.Primary - Cost.Primary(1)A(4,4) * CRate.Secondary / 4A(4,6) * Cost.Secondary(2)sum(A)addr(Rate)
AA + BA * C - DB / 10B
PL/I term expression () reference() array expression ()
3 55
Rate = Rate*2
PL/I () ()
dcl (X,Y,Z) entry returns(float), (F,G,H) float;F = X( Y(G,H), Z(G,H) );
Y Z X
INC B(1,2) B(2,1)
dcl B(2,2);I = 0;put list ( B( INC(I), INC(I) ) );
A = B;
( A) DODISPLAY
declare A character(10),B character(30);
substr(A,6,5) = substr(B,20,5);
SUBSTR B 20 5 SUBSTR A A 5 B 20 24 A 5
56 Enterprise PL/I for z/OS
433 18
2 ()
declare A character(8),B fixed decimal(3,2),C fixed binary(10);
A = B + C;
B + C 4
1. B 2
2. 2
3. 2 10
4. A10
B 2 2
2 (C B)
3 (2 ) A DECIMAL 2 10
A DECLARE
1 () (2 ) 2
PL/I 79 4
3 57
1
v 2 v
x t n x+n xn t
x+n x t n
x-n x t n
+= =
v 2
x y t x-y x y t x-y (PTRVALUE(x)-PTRVALUE(y))/ SIZE(:t:)
2
v FIXED BINARY(31,0)
Ptr1 = Ptr1 - 16;Ptr2 = Ptr1 + (I*J);
POINTERADD POINTERADD
(Ptr1 + 16) -> Based_ptr is invalid
pointeradd(Ptr1,16) -> Based_ptr is valid
v FIXED BINARY(31,0)
58 Enterprise PL/I for z/OS
Bin31 = Ptr2 - Ptr1;
v if Ptr2 > Ptr1 then
Bin31 = Ptr2 - Ptr1;
v (' ' ' 'b) DEFAULT NULLSTRPTR NULL SYSNULL
NULLSTRPTR(SYSNULL) SYSNULL() header header SYSNULL()
dcl header pointer;
header = ;
...
if header = then...
v BINARYVALUE
Bin31 = Bin31 + binaryvalue(Ptr1);
v POINTERVALUE
dcl 1 Cvtprt pointer based(pointervalue(16));dcl 1 Cvt based(Cvtptr),
2 Cvt ...;
FIXED BINARY(31,0)
PL/I
+ - * / **
(+) (-) (ADDSUBTRACTDIVIDE MULTIPLY )
A*-B (-) A B -1
3 59
1 2 1
2 ( 62 13 )
: FIXED BINARY FIXEDDECIMAL
:
FIXED DECIMAL(N,0) FIXED BINARY(M,0) ( 855) DECIMAL
:
2 10 2
:
2 2 ()
:
()
:
2 1 2 ()
60 Enterprise PL/I for z/OS
(p,0)
1
v (p,0)
v 1
v 1
62 13 63 14
66 18 62 13 63 14
z/OS 2
v FLOAT(DFP) FLOAT DEC IEEE 10
FLOAT BIN DEFAULT HEXADEC IEEE
v FLOAT(NODFP) FLOAT DEFAULT
HEXADEC IEEE
FLOAT(NODFP) DEFAULT(HEXADEC) 16 IEEE HEXADEC FLOAT(NODFP) DEFAULT(IEEE)IEEE 2 HEXADEC IEEE
IEEE 2
3 61
RULES(ANS) FIXEDDECIMAL FIXED BINARY FIXED BINARY FIXED DECIMAL 64 15 RULES(ANS) RULES
13. 1 FLOAT
1
(p1,q1)
2
(p2,q2)
FLOAT
DECIMAL
(p1)
FLOAT
DECIMAL
(p2)
FLOAT
DECIMAL
(p)
p = MAX(p1,p2)
FLOAT
DECIMAL (p)
(C )p = MAX(p1,p2)
FLOAT
DECIMAL
(p1)
FLOAT
DECIMAL
(p2,q2)
FIXED
DECIMAL
(p1,q1)
FLOAT
DECIMAL
(p2)
FLOAT
BINARY
(p1)
FLOAT
BINARY
(p2)
FLOAT
BINARY
(p)
FLOAT
BINARY (p)
(C )p = MAX(p1,p2)
FLOAT
BINARY
(p1)
FIXED
BINARY
(p2,q2)
FIXED
BINARY
(p1,q1)
FLOAT
BINARY
(p2,q2)
FIXED
DECIMAL
(p1,q1)
FLOAT
BINARY
(p2)
FLOAT
BINARY
(p)
p = MAX(
CEIL(p1*3.32),p2)
FLOAT
BINARY (p)
(A C )p = MAX(
CEIL(p1*3.32),p2)
FLOAT
DECIMAL
(p1)
FLOAT
BINARY
(p1,q2)
FLOAT
DECIMAL
(p1)
FLOAT
BINARY
(p2)
FIXED
BINARY
(p1,q1)
FLOAT
DECIMAL
(p2)
FLOAT
BINARY
(p)
p = MAX(p1,CEIL(p2*3.32))
FLOAT
BINARY (p)
(B C )p = MAX(
p1,CEIL(p2*3.32))
FLOAT
BINARY
(p1)
FIXED
DECIMAL
(p2,q2)
FLOAT
BINARY
(p1)
FLOAT
DECIMAL
(p2)
62 Enterprise PL/I for z/OS
:
1. 66 18
2. CEIL(N*3.32) 83 22
14. RULES(ANS) 2 FIXED
1
(p1,q1)
2
(p2,q2)
FIXED
DECIMAL
(p1,0)
FIXED
DECIMAL
(p2,0)
FIXED
DECIMAL
(p,q)
p = 1
+MAX(p1,p2)
q = 0
p = 1
+p1+p2
q = 0
p = N
q = N-p1
FLOAT DECIMAL (p)
(A )p = MAX(p1,p2)
FIXED
BINARY
(p1,0)
FIXED
BINARY
(p2,0)
FIXED
BINARY
(p,0)
p = 1
+MAX(p1-q1,
p2-q2) +q
q = 0
p = 1+p1
+p2
q = 0
p = M
q = 0
FLOAT BINARY (p)
(B )p = MAX(p1,p2)
FIXED
DECIMAL
(p1,0)
FIXED
BINARY
(p2,0)
FIXED
BINARY
(p,0)
p = 1
+MAX(r,p2)
q = 0
p = 1
+r+p2
q = 0
p = M
q = 0
FLOAT BINARY (p)
(A )p = MAX(CEIL
(p1*3.32 ),p2)
FIXED
BINARY
(p1,0)
FIXED
DECIMAL
(p2,0)
FIXED
BINARY
(p,0)
p = 1
+MAX(p1,t)
q = 0
p = 1
+p1+t
q = 0
p = M
q = 0
FLOAT BINARY (p)
(B )p = MAX(CEIL
(p1*3.32 ),p2)
M FIXED BINARY N FIXED DECIMAL r = 1 + CEIL(p1*3.32)
s = CEIL(ABS(q1*3.32)) * SIGN(q1)
t = 1 + CEIL(p2*3.32)
u = CEIL(ABS(q2*3.32)) * SIGN(q2)
v = CEIL(p2/3.32)
w = CEIL(p1/3.32)
:
-128 +127
1. 66 18
2. CEIL(N*3.32) 83 22
3. RULES(ANS) FIXED FIXEDDECIMAL
3 63
15. RULES(ANS) 2 FIXED
1
(p1,q1)
2
(p2,q2)
FIXED
DECIMAL
(p1,q1)
FIXED
DECIMAL
(p2,q2)
FIXED
DECIMAL
(p,q)
p = 1 +
MAX(p1-q1,
p2-q2) +q
q =
MAX(q1,q2)
p = 1
+p1+p2
q =
q1+q2
p = N
q =
N-p1+q1-q2
FLOAT DECIMAL (p)
(A )p = MAX(p1,p2)
FIXED
DECIMAL
(p1,q1)
FIXED
BINARY
(p2,0)
FIXED
DECIMAL
(p,q)
p = 1
+MAX(p1-
q1,v) +q
q = q1
p = 1
+p2+v
q = q1
p = N
q = N-q1
FLOAT BINARY (p)
(A )p = MAX(CEIL
(p1*3.32 ),p2)
FIXED
BINARY
(p1,0)
FIXED
DECIMAL
(p2,q2)
FIXED
DECIMAL
(p,q)
p = 1
+MAX(p2-
q2,w) +q
q = q2
p = 1
+p2+w
q = q1
p = N
q = N-q2
FLOAT BINARY (p)
(B )p = MAX(CEIL
(p1*3.32 ),p2)
M FIXED BINARY N FIXED DECIMAL r = 1 + CEIL(p1*3.32)
s = CEIL(ABS(q1*3.32)) * SIGN(q1)
t = 1 + CEIL(p2*3.32)
u = CEIL(ABS(q2*3.32)) * SIGN(q2)
v = CEIL(p2/3.32)
w = CEIL(p1/3.32)
:
-128 +127
1. 66 18
2. CEIL(N*3.32) 83 22
3. RULES(ANS) FIXED BINARY
16. RULES(IBM) 2 FIXED
1
(p1,q1)
2
(p2,q2)
FIXED
DECIMAL
(p1,q1)
FIXED
DECIMAL
(p2,q2)
FIXED
DECIMAL
(p,q)
p = 1
+MAX(p1-q1,
p2-q2) +q
q =
MAX(q1,q2)
p = 1
+p1+p2
q =
q1+q2
p = N
q =
N-p1+q1-q2
FLOAT DECIMAL (p)
(A )p = MAX(p1,p2)
FIXED
BINARY
(p1,q1)
FIXED
BINARY
(p2,q2)
FIXED
BINARY
(p,q)
p = 1
+MAX(p1-q1,
p2-q2) +q
q =
MAX(q1,q2)
p = 1
+p1+p2
q = q1+q2
p = M
q = M-p1
+q1-q2
FLOAT BINARY (p)
(B )p = MAX(p1,p2)
64 Enterprise PL/I for z/OS
16. RULES(IBM) 2 FIXED ()
1
(p1,q1)
2
(p2,q2)
FIXED
DECIMAL
(p1,q1)
FIXED
BINARY
(p2,q2)
FIXED
BINARY
(p,q)
p = 1
+MAX(r-s,
p2-q2)+q
q =
MAX(s,q2)
p = 1+r
+p2
q = s+q2
p = M
q = M-r
+s-q2
FLOAT BINARY (p)
(A )p =MAX(
CEIL((p1*3.32 ),p2)
FIXED
BINARY
(p1,q1)
FIXED
DECIMAL
(p2,q2)
FIXED
BINARY
(p,q)
p = 1
+MAX(p1-
q1,t-u) +q
q =
MAX(s,q1,u)
p = 1
+p1+t
q = q1+u
p = M
q = M-p1
+q1-u
FLOAT BINARY (p)
(B )p = MAX(p1,
CEIL(p2*3.32))
M FIXED BINARY N FIXED DECIMAL r = 1 + CEIL(p1*3.32)
s = CEIL(ABS(q1*3.32)) * SIGN(q1)
t = 1 + CEIL(p2*3.32)
u = CEIL(ABS(q2*3.32)) * SIGN(q2)
v = CEIL(p2/3.32)
w = CEIL(p1/3.32)
:
-128 +127
1. 66 18
2. CEIL(N*3.32) 83 22
3. FIXED BINARY p LIMITS FIXEDBIN FIXED DECIMAL FIXEDDEC LIMITS q
A * B + C
A * B () + C
PL/I 2 () 56
ADDSUBTRACTMULTIPLY DIVIDE
FIXED :
25+1/3
3 65
FIXEDOVERFLOW
25+01/3
25.3333333333333 ( 15) 2 17
17.
1
3
1/3
25
25+1/3
(1,0)
(1,0)
(15,14)
(2,0)
(15,14)
1
3
0.33333333333333
25
(
15 FIXEDOVERFLOW )
01
3
01/3
25
25+01/3
(2,0)
(1,0)
(15,13)
(2,0)
(15,13)
01
3
00.3333333333333
25
25.3333333333333
PRECISION
25+prec(1/3,15,13)
:
PL/I
18.
1 2
A FIXED DECIMAL
(p1,q1)
n FIXED DECIMAL (p,q)(p
18. ()
1 2
x**y :
::
x=0 y>0 0x=0 y >0 y =0 0
x=0 y
20.
A = '010111'B
B = '111111'B
C = '110'B
D = 5
A '101000'B
C '001'B
C & B '110000'B
A | B '111111'B
A B ''101000''B
A C '100111'B
C | B '111111'B
A | (C) '011111'B
((C)|(B)) '110111'B
SUBSTR(A,1,1)|(D=5) '1'B
BOOL & | NOT ORAND OR 483BOOL BOOL
1
v
1 '1'B '0'B
2 ==
2
1 2
68 Enterprise PL/I for z/OS
1 DBCS DBCS 2
2 2 1
==
PROCEDURE ENTRY
FORMAT
2
2
(1) ()(2) (3) (4) (5) 10 2 10 2
3 69
2 v v '0'Bv (DBCS) v ('0020'wx)
IF
if A = Bthen action-if-true;else action-if-false;
A = B 1B 0B
X = A
v
v
v 2
v
dcl B bin(4) initial(4),C bit(1) initial(1b);
put skip list (B { C);
/* Produces 01001 not bbb41 */
RULES(ANS) RULES(ANS) v
v
v
v
dcl B bin(4) initial(4),C bit(1) initial(1b);
put skip list (B { C);
/* Produces bbb41, not 01001 */
2 () 2
A = '010111'B
B = '101'B
C = 'xy,Z'
D = 'aa/BB'
A { B '010111_101'B
A { A { B '010111_010111_101'B
C { D 'xy,Zaa/BB'
D { C 'aa/BBxy,Z'
B { D '101aa/BB'
'101'B '101'
3 71
1
declare Result bit(3),A fixed decimal(1),B fixed binary (3),C character(2), D bit(4);
Result = A + B < C & D;
v A 10 2 v A B 2 v 2 C 2 v D &
v & ( 4 ) Result
21
21.
1 **
+-
CHARACTER (PICTURE) 10 FIXED DECIMAL
(PICTURE) 10 FLOAT DECIMAL
BIT FIXEDBINARY
BIT BIT
2 *, /
3 +-
4 { 71RULES(ANS) 70RULES(IBM)
5
'1'B '0'B
72 Enterprise PL/I for z/OS
21. ()
6 & BIT BIT
7 BIT BIT
BIT BIT
:
1. 1 7 ** + - NOT
2. 1
A + B < C & D
(((A + B) < C) & D)
() 1
(A + B) < (C & D)
A 2 2 (result_1) C () AND
Result_1 < Result_2
result_2 2 1
()
A + (B < C) & (D { E ** F)
PL/I (D{E ** F) (A + (B < C))
() &
3 73
A + B < C & D
4
(A + B) < (C & D)
1
v v ALLANYPOLYPROD SUM v ()
v PUT LIST PUT EDIT
1
()
If A is the array 5 3 -91 2 76 3 -4
then -A is the array -5 -3 9-1 -2 -7-6 -3 4
74 Enterprise PL/I for z/OS
If A is the array 5 10 812 11 3
then A*3 is the array 15 30 2436 33 9
and 9 > A is the array of 1 0 1bit strings of length 1 0 0 1
A = A * A(1,2);
A A
50 100 8001200 1100 300
A(1,2)
2 2 2 2
If A is the array 2 4 36 1 74 8 2
and if B is the array 1 5 78 3 46 3 1
then A+B is the array 3 9 1014 4 1110 11 3
and A*B is the array 2 20 2148 3 2824 24 2
and A>B is the array of 1 0 0bit strings of length 1 0 0 1
0 1 1
()
3 75
v
v ()
v
PL/I () v v v
v
v ()
(RANDOM )
: DIMACROSS DIMENSION HBOUNDHBOUNDACROSS LBOUND LBOUNDACROSS
: BINARYVALUE LENGTH NULLOFFSETVALUE POINTERVALUE SIZE STORAGE SYSNULL
: BYTE CHARVAL COLLATE INDICATORSPACKAGENAME POPCNT PROCEDURENAME RANKSOURCEFILE SOURCELINE WCHARVAL
v : BINDCASTFIRSTLASTRESPECSIZE VALUE
dcl Max_names fixed bin value (1000),
Name_size fixed bin value (30),Addr_size fixed bin value (20),Addr_lines fixed bin value (4);
dcl 1 Name_addr(Max_names),2 Name char(Name_size),2 * union,
76 Enterprise PL/I for z/OS
3 Address char(Addr_lines*Addr_size), /* address */3 addr(Addr_lines) char(Addr_size),
2 * char(0);dcl One_Name_addr char(size(Name_addr(1))); /* 1 name/addr*/dcl Two_Name_addr char(length(One_Name_addr)
*2); /* 2 name/addrs */dcl Name_or_addr char(max(Name_size,Addr_size)) based;
dcl Ar(10) pointer;dcl Ex entry( dim(lbound(Ar):hbound(Ar)) pointer);dcl Identical_to_Ar( lbound(Ar):hbound(Ar) ) pointer;
3 77
78 Enterprise PL/I for z/OS
4 . . . . . . . . 81 . . . . . . . . . . 81 . . . . . . . . . . . 82 . . . . . . . . . . . . . . 82 . . . . . . . . . 82 . . . . . . 84
. . . . . . . . . . . . . . . . . 93 DECIMAL FIXED BINARY FIXED . . . . . . 93 . . 93 . . . . . . . 93 . . . . . . . . . . . . . 94
PL/I
275
()() ()
(GET ) (PUT )
PROCEDURE ENTRY INITIAL RETURN PROCEDURE
DO BYTO REPEAT
DISPLAY KEYFROMKEY
Copyright IBM Corp. 1999, 2013 79
OPEN TITLE
BINARY
//
DECLAREALLOCATEDEFAULT DELAY FORMAT ( GET PUT )
wdsp
OPEN LINESIZEPAGESIZEI/O SKIPLINEIGNORE
() 1 CONVERSIONOVERFLOWSIZESTRINGSIZE ( 401 16 )
v M FIXED BINARY LIMITS(FIXEDBIN(M1,M2)) M2
v N FIXED DECIMAL LIMITS(FIXEDDEC(N1,N2)) N2
1
dcl A fixed dec(3,2) init(1.23);dcl B fixed bin(15,5);B = A;
1.23 10 BINARY (11,7) 1.0011101B BINARY(15,5) 1.00111B
80 Enterprise PL/I for z/OS
GET PUT
BINARY
BIT
CHAR
COMPLEX
DECIMAL
FIXED
FLOAT
GRAPHIC
IMAG
PRECISION
REAL
SIGNED
UNSIGNED
WIDECHAR
433 18
COMPLEXGRAPHIC IMAG PL/I
STRINGSIZE STRINGSIZE ()
: SUBSTR STRINGRANGE
'0'B DBCS
declare Subject char(10);Subject = Transformations;
'Transformations' 15 PL/I Subject 5
Subject = Transforma;
4 81
2 Subject 2 Code
Subject = Physics;Subject = Physics ;declare Code bit(10);Code = 110011B;Code = 1100110000B;
2 Subject
Subject = 110011B;Subject = 1100110000B;
Subject = 110011bbbb;
2 2
Subject = 1100110000;
VARYING
()
10 2 () 2 10 SIZE
()
v
FIXED BINARY
82 Enterprise PL/I for z/OS
FIXED DECIMAL
FLOAT BINARY
FLOAT DECIMAL
v PICTUREv CHARACTERv BITv GRAPHICv WIDECHAR
10 2 2 10 3.32 v n 10 CEIL (n*3.32) 2 v n 2 CEIL (n/3.32) 10
22 CEIL
22. CEIL (n*3.32) CEIL (n/3.32)
n
CEIL
(n*3.32) n
CEIL
(n/3.32)
1 4 1-3 12 7 4-6 23 10 7-9 34 14 10-13 45 17 14-16 56 20 17-19 67 24 20-23 78 27 24-26 89 30 27-29 9
10 34 30-33 1011 37 34-36 1112 40 37-39 1213 44 40-43 1314 47 44-46 1415 50 47-49 1516 531 50-53 1617 57 54-56 1718 60 57-59 1819 64 60-63 1920 67 64-66 2021 70 67-69 2122 74 70-73 2223 77 74-76 2324 80 77-79 2425 83 80-83 2526 87 84-86 2627 90 87-89 2728 93 90-92 2829 97 93-96 2930 100 97-99 3031 103 100-102 3132 107 103-106 3233 110 107-109 33
110-112 34
4 83
22. CEIL (n*3.32) CEIL (n/3.32) ()
n
CEIL
(n*3.32) n
CEIL
(n/3.32)
113-116 35 1: ceil(16*3.32) = 54 53 10 (16) 2 ( 2 (54) )
3.32 1 (1