942
Enterprise PL/I for z/OS PL/I for AIX Rational Developer for System z PL/I for Windows 言語解説書 バージョン 4 リリース 4 SA88-4235-03 (英文原典:SC14-7285-03)

言語解説書 - IBM · Enterprise PL/I for z/OS PL/I for AIX Rational Developer for System z PL/I for Windows 言語解説書 バージョン4 リリース4 SA88-4235-03 (英文原典:SC14-7285-03)

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

    PRINT

    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

    PRINT

    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