Enterprise PL/I For Z/OS Programming Guide - IBM

Transcription

Enterprise PL/I for z/OSIBMProgramming GuideVersion 5 Release 1GI13-4536-00

Enterprise PL/I for z/OSIBMProgramming GuideVersion 5 Release 1GI13-4536-00

NoteBefore using this information and the product it supports, be sure to read the general information under “Notices” on page521.First Edition (August 2017)This edition applies to Version 5 Release 1 of Enterprise PL/I for z/OS and to any subsequent releases untilotherwise indicated in new editions or technical newsletters. Make sure you are using the correct edition for thelevel of the product.Order publications through your IBM representative or the IBM branch office serving your locality. Publications arenot stocked at the address below.A form for readers' comments is provided at the back of this publication. If the form has been removed, addressyour comments to:IBM Corporation, Department H150/090555 Bailey AveSan Jose, CA, 95141-1099United States of AmericaWhen you send information to IBM, you grant IBM a nonexclusive right to use or distribute the information in anyway it believes appropriate without incurring any obligation to you. Copyright IBM Corporation 1999, 2017.US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contractwith IBM Corp.

ContentsTables . . . . . . . . . . . . . . . ixFigures . . . . . . . . . . . . . . . xiIntroduction . . . . . . . . . . . . xiiiAbout this document . . . . . . . . . . . xiiiRuntime environment for Enterprise PL/I for z/OS xiiiUsing your documentation . . . . . . . . . xiiiNotation conventions used in this document . . . xivConventions used . . . . . . . . . . . xivHow to read the syntax notation . . . . . . xvHow to read the notational symbols . . . . xviiSummary of changes . . . . . . . . . . xviiiEnhancements in this release . . . . . . . xviiiEnhancements from V4R5 . . . . . . . . xxiEnhancements from V4R4 . . . . . . . . xxiiEnhancements from V4R3 . . . . . . . . xxiiiEnhancements from V4R2 . . . . . . . . xxivEnhancements from V4R1 . . . . . . . . xxvEnhancements from V3R9 . . . . . . . . xxviEnhancements from V3R8 . . . . . . . xxviiiEnhancements from V3R7 . . . . . . . . xxixEnhancements from V3R6 . . . . . . . . xxxEnhancements from V3R5 . . . . . . . . xxxiEnhancements from V3R4 . . . . . . . . xxxiiEnhancements from V3R3 . . . . . . . xxxivEnhancements from V3R2 . . . . . . . . xxxvEnhancements from V3R1 . . . . . . . xxxviEnhancements from VisualAge PL/I . . . . xxxviiHow to send your comments . . . . . . . xxxviiiAccessibility. . . . . . . . . . . . . xxxviiiPart 1. Compiling your program . . . 1Chapter 1. Using compiler options andfacilities. . . . . . . . . . . . . . . 3 Compile-time option descriptionsAGGREGATE . . . . . .ARCH . . . . . . . .ASSERT . . . . . . . .ATTRIBUTES . . . . . .BACKREG. . . . . . .BIFPREC . . . . . . .BLANK. . . . . . . .BLKOFF . . . . . . .BRACKETS . . . . . .CASE . . . . . . . .CASERULES . . . . . .CEESTART . . . . . .CHECK . . . . . . .CMPAT. . . . . . . .CODEPAGE . . . . . .COMMON . . . . . .COMPILE . . . . . . . Copyright IBM Corp. 1999, 2017. 3. 7. 8. 9. 9. 10. 10. 11. 12. 12. 12. 13. 13. 14. 15. 16. 16. 17COPYRIGHT . . .CSECT . . . . .CSECTCUT . . .CURRENCY . . .DBCS . . . . .DD . . . . . .DDSQL . . . . .DECIMAL . . . .DECOMP . . . .DEFAULT . . . .DEPRECATE . . .DEPRECATENEXT .DISPLAY . . . .DLLINIT . . . .EXIT. . . . . .EXPORTALL . . .EXTRN . . . . .FILEREF . . . .FLAG . . . . .FLOAT . . . . .FLOATINMATH. .GOFF . . . . .GONUMBER . . .GRAPHIC . . . .HEADER . . . .IGNORE . . . .INCAFTER . . .INCDIR . . . .INCLUDE . . . .INCPDS . . . .INITAUTO . . .INITBASED . . .INITCTL . . . .INITSTATIC . . .INSOURCE . . .INTERRUPT . . .JSON . . . . .LANGLVL. . . .LIMITS . . . . .LINECOUNT . . .LINEDIR . . . .LIST . . . . . .LISTVIEW . . . .LP . . . . . .MACRO . . . .MAP . . . . .MARGINI . . . .MARGINS. . . .MAXBRANCH . .MAXGEN . . . .MAXMEM. . . .MAXMSG . . . .MAXNEST . . .MAXSTMT . . .MAXTEMP . . .MDECK . . . 2525353545454iii

MSGSUMMARY. . . . . . . . . . . . 55NAME . . . . . . . . . . . . . . . 55NAMES . . . . . . . . . . . . . . 56NATLANG . . . . . . . . . . . . . 56NEST . . . . . . . . . . . . . . . 56NOT. . . . . . . . . . . . . . . . 56NULLDATE . . . . . . . . . . . . . 57NUMBER . . . . . . . . . . . . . . 57OBJECT . . . . . . . . . . . . . . 58OFFSET . . . . . . . . . . . . . . 58OFFSETSIZE . . . . . . . . . . . . . 58ONSNAP . . . . . . . . . . . . . . 59OPTIMIZE. . . . . . . . . . . . . . 59OPTIONS . . . . . . . . . . . . . . 60OR . . . . . . . . . . . . . . . . 61PP . . . . . . . . . . . . . . . . 61PPCICS. . . . . . . . . . . . . . . 62PPINCLUDE . . . . . . . . . . . . . 63PPLIST . . . . . . . . . . . . . . . 63PPMACRO . . . . . . . . . . . . . 64PPSQL . . . . . . . . . . . . . . . 64PPTRACE . . . . . . . . . . . . . . 65PRECTYPE . . . . . . . . . . . . . 65PREFIX . . . . . . . . . . . . . . . 65PROCEED . . . . . . . . . . . . . . 66PROCESS . . . . . . . . . . . . . . 66QUOTE. . . . . . . . . . . . . . . 67REDUCE . . . . . . . . . . . . . . 67RENT . . . . . . . . . . . . . . . 68RESEXP . . . . . . . . . . . . . . 69RESPECT . . . . . . . . . . . . . . 70RTCHECK. . . . . . . . . . . . . . 70RULES . . . . . . . . . . . . . . . 70SEMANTIC . . . . . . . . . . . . . 83SERVICE . . . . . . . . . . . . . . 84SOURCE . . . . . . . . . . . . . . 84SPILL . . . . . . . . . . . . . . . 85STATIC . . . . . . . . . . . . . . . 85STDSYS . . . . . . . . . . . . . . 85STMT . . . . . . . . . . . . . . . 86STORAGE . . . . . . . . . . . . . . 86STRINGOFGRAPHIC . . . . . . . . . . 86SYNTAX . . . . . . . . . . . . . . 87SYSPARM . . . . . . . . . . . . . . 87SYSTEM . . . . . . . . . . . . . . 88TERMINAL . . . . . . . . . . . . . 89TEST . . . . . . . . . . . . . . . 89UNROLL . . . . . . . . . . . . . . 92USAGE . . . . . . . . . . . . . . . 92WIDECHAR . . . . . . . . . . . . . 93WINDOW . . . . . . . . . . . . . . 94WRITABLE . . . . . . . . . . . . . 94XINFO . . . . . . . . . . . . . . . 95XML. . . . . . . . . . . . . . . . 98XREF . . . . . . . . . . . . . . . 98Blanks, comments and strings in options . . . . 99Changing the default options . . . . . . . . 99Specifying options in the %PROCESS or *PROCESSstatements . . . . . . . . . . . . . . 100Using % statements . . . . . . . . . . . 101Using the %INCLUDE statement . . . . . . . 101ivEnterprise PL/I for z/OS Programming GuideUsing the compiler listing . . . . .Heading information . . . . . .Options used for compilation . . .Preprocessor input . . . . . .SOURCE program . . . . . . .Statement nesting level . . . . .ATTRIBUTE and cross-reference tableAggregate length table . . . . .Statement offset addresses . . . .Storage offset listing . . . . . .Expressions and attributes listing . .File reference table. . . . . . .Messages and return codes . . . .Example . . . . . . . . . .103103104104104105105106106109110110111112Chapter 2. PL/I preprocessors . . . . 117Include preprocessor . . . . . . . . . .Macro preprocessor . . . . . . . . . .Macro preprocessor options . . . . . .Macro preprocessor example . . . . . .SQL preprocessor . . . . . . . . . . .Programming and compilation considerationsSQL preprocessor options . . . . . . .Coding SQL statements in PL/I applicationsManipulating LOB data . . . . . . . .Suppressing SQL preprocessor messages . .CICS preprocessor . . . . . . . . . . .Programming and compilation considerationsCICS preprocessor options . . . . . . .Coding CICS statements in PL/I applicationsWriting CICS transactions in PL/I . . . .Error-handling . . . . . . . . . . hapter 3. Using PL/I catalogedprocedures . . . . . . . . . . . . 147IBM-supplied cataloged procedures . .Compile only (IBMZC) . . . . .Compile and bind (IBMZCB) . . .Compile, bind, and run (IBMZCBG) .Invoking a cataloged procedure . . .Specifying multiple cataloged procedureinvocations . . . . . . . . . .Modifying the PL/I cataloged proceduresEXEC statement . . . . . . .DD statement . . . . . . . .147148149151153.153154154155Chapter 4. Compiling your program157Invoking the compiler under z/OS UNIX . . .Input files . . . . . . . . . . . .Specifying compile-time options under z/OSUNIX . . . . . . . . . . . . . .-qoption keyword . . . . . . . . . .Single and multiletter flags . . . . . . .Invoking the compiler under z/OS using JCL .EXEC statement . . . . . . . . . .DD statements for the standard data sets . .Listing (SYSPRINT) . . . . . . . . .Source Statement Library (SYSLIB) . . . .Specifying options . . . . . . . . . .Specifying options in the EXEC statement . . 157. 157.158158159159160160162162163163

Specifying options in the EXEC statement usingan options file . . . . . . . . . . . . 164Chapter 5. Link-editing and runningfor 31-bit programs . . . . . . . . . 165Link-edit considerations for 31-bit programs . .Using the binder in 31-bit programs . . . .Using the ENTRY card . . . . . . . .Runtime considerations for 31-bit programs . .Formatting conventions for PRINT files . .Changing the format on PRINT files for 31-bitprograms . . . . . . . . . . . . .Automatic prompting . . . . . . . .Overriding automatic prompting . . . . .Punctuating long input lines . . . . . .Punctuating GET LIST and GET DATAstatements . . . . . . . . . . . .Automatic padding for GET EDIT . . . .Use of SKIP for terminal input . . . . .ENDFILE. . . . . . . . . . . . .SYSPRINT considerations for 31-bit programs .Using MSGFILE(SYSPRINT) . . . . . .Using FETCH in your routines in 31-bitapplications . . . . . . . . . . . . .Fetching Enterprise PL/I routines in 31-bitapplications . . . . . . . . . . . .Fetching PL/I MAIN routines in 31-bitapplications . . . . . . . . . . . .Fetching z/OS C routines in 31-bit applicationsFetching assembler routines in 31-bitapplications . . . . . . . . . . . .Invoking MAIN under TSO/E. . . . . . .Invoking MAIN under z/OS UNIX . . . . .165165165165166.166167168168.169169169169170171. 171. 172. 180181. 181. 181. 182Chapter 6. Link-editing and runningfor 64-bit programs . . . . . . . . . 185Link-edit considerations for 64-bit programs .Using the binder in 64-bit programs . . .Using the ENTRY card in 64-bit programs .Runtime considerations for 64-bit programs .SYSPRINT considerations for 64-bit programsUsing FETCH in your routines in 64-bitapplications . . . . . . . . . . . .Fetching Enterprise PL/I routines in 64-bitapplications . . . . . . . . . . .Fetching PL/I MAIN routines in 64-bitapplications . . . . . . . . . . .Fetching assembler routines in 64-bitapplications . . . . . . . . . . .Invoking MAIN under TSO/E. . . . . .Invoking MAIN under z/OS UNIX . . . .185185185185186. 186. 186. 186. 186. 187. 188Chapter 7. Considerations fordeveloping 64-bit applications . . . . 191Using compiler options to build 64-bit applicationsUsing attributes HANDLE and POINTER underLP(64) . . . . . . . . . . . . . . . .HANDLE attribute . . . . . . . . . .POINTER attribute . . . . . . . . . .Using ENTRY variables under LP(64) . . . . .191192192192193Using built-in functions under LP(64) .Considerations for SQL programs . .Communicating with 31-bit routines. . 193. 194. 196Part 2. Using I/O facilities . . . . . 199Chapter 8. Using data sets and files201Allocating files . . . . . . . . . . . . .Associating data sets with files under z/OS . . .Associating several files with one data set . . .Associating several data sets with one file . . .Concatenating several data sets . . . . . .Accessing HFS files under z/OS . . . . . .Associating data sets with files under z/OS UNIXUsing environment variables . . . . . . .Using the TITLE option of the OPEN statementAttempting to use files not associated with datasets. . . . . . . . . . . . . . . .How PL/I finds data sets . . . . . . . .Specifying characteristics using DD DDNAMEenvironment variables . . . . . . . . .Establishing data set characteristics . . . . . .Blocks and records . . . . . . . . . .Information interchange codes. . . . . . .Record formats . . . . . . . . . . . .Data set organization . . . . . . . . . .Labels . . . . . . . . . . . . . . .Data Definition (DD) statement . . . . . .Using the TITLE option of the OPEN statementAssociating PL/I files with data sets . . . .Specifying characteristics in theENVIRONMENT attribute . . . . . . . 19220220221222224Chapter 9. Using libraries . . . . . . 235Types of libraries . . . . . . . . . . .Using a library . . . . . . . . . . . .Creating a library . . . . . . . . . . .SPACE parameter . . . . . . . . . .Creating and updating a library member . . .Example: Creating new libraries for compiledobject modules . . . . . . . . . . .Example: Placing a load module in an existinglibrary . . . . . . . . . . . . . .Example: Updating a library member . . .Extracting information from a library directory .235235236236237. 237. 238. 238. 239Chapter 10. Defining and usingconsecutive data sets. . . . . . . . 241Using stream-oriented data transmission . .Defining files using stream I/O . . . .Defining stream files using PL/I dynamicallocation . . . . . . . . . . . .Specifying ENVIRONMENT options . .Creating a data set with stream I/O . . .Accessing a data set with stream I/O . .Using PRINT files with stream I/O . . .Using SYSIN and SYSPRINT files for 31-bitprograms . . . . . . . . . . . . 241. 241. 255Contents242242245249250v

Using SYSIN and SYSPRINT files for 64-bitprograms . . . . . . . . . . . .Controlling input from the terminal . . . .Format of data . . . . . . . . . . .Stream and record files . . . . . . . .Defining QSAM files using PL/I dynamicallocation . . . . . . . . . . . . .Capital and lowercase letters . . . . . .End-of-file . . . . . . . . . . . .COPY option of GET statement . . . . .255255257257.258258258259Chapter 11. Controlling output to theterminal . . . . . . . . . . . . . . 261Format of PRINT files . . . . . .Stream and record files . . . . . .Output from the PUT EDIT command . 261. 261. 262Chapter 12. Using record-orienteddata transmission . . . . . . . . . 263Specifying record format . . . . . . .Defining files using record I/O . . . . .Specifying ENVIRONMENT options . . .CONSECUTIVE . . . . . . . . .ORGANIZATION(CONSECUTIVE) . . .CTLASA CTL360 . . . . . . . . .LEAVE REREAD . . . . . . . . .Creating a data set with record I/O . . . .Essential information . . . . . . . .Accessing and updating a data set with recordEssential information . . . . . . . .Example of consecutive data sets . . . . . . . . . . . . .I/O. . .264264264265265266267268268269270270Chapter 13. Defining and usingregional data sets . . . . . . . . . 275Defining REGIONAL(1) data sets using PL/Idynamic allocation . . . . . . . . . .Defining files for a regional data set . . . . .Specifying ENVIRONMENT options . . .Using keys with REGIONAL data sets . . .Using REGIONAL(1) data sets . . . . . .Dummy Records . . . . . . . . . .Creating a REGIONAL(1) data set . . . .Accessing and updating a REGIONAL(1) dataset . . . . . . . . . . . . . . .Essential information for creating and accessingregional data sets . . . . . . . . . . .277277277278278279279. 280. 283Chapter 14. Defining and using VSAMdata sets . . . . . . . . . . . . . 287Defining VSAM file using PL/I dynamic allocationUsing VSAM data sets . . . . . . . . . .Running a program with VSAM data sets . . .Pairing an alternate index path with a file . . .VSAM organization . . . . . . . . . . .Keys for VSAM data sets . . . . . . . .Choosing a data set type . . . . . . . .Defining files for VSAM data sets . . . . . .Specifying ENVIRONMENT options . . . .Performance options . . . . . . . . . .viEnterprise PL/I for z/OS Programming Guide287287287288288290291293294297Defining files for alternate index paths . . . .Defining VSAM data sets . . . . . . . .Entry-sequenced data sets . . . . . . . .Loading an ESDS . . . . . . . . . .Using a SEQUENTIAL file to access an ESDSKey-sequenced and indexed entry-sequenced datasets. . . . . . . . . . . . . . . .Loading a KSDS or indexed ESDS . . . .Using a SEQUENTIAL file to access a KSDS orindexed ESDS . . . . . . . . . . .Using a DIRECT file to access a KSDS orindexed ESDS . . . . . . . . . . .Updating a KSDS . . . . . . . . . .Alternate indexes for KSDSs or indexed ESDSsRelative-record data sets. . . . . . . . .Loading an RRDS . . . . . . . . . .Using a SEQUENTIAL file to access an RRDSUsing a DIRECT file to access an RRDS . .Using files defined for non-VSAM data sets . .Using shared data sets . . . . . . . .297298298299299. 302. 304. 306. 306. 308309. 316. 317320. 320. 322. 322Part 3. Improving your program323Chapter 15. Improving performance325Selecting compiler options for optimal performanceOPTIMIZE . . . . . . . . . . . . .GONUMBER . . . . . . . . . . . .ARCH. . . . . . . . . . . . . . .REDUCE . . . . . . . . . . . . . .RULES . . . . . . . . . . . . . .PREFIX . . . . . . . . . . . . . .CONVERSION . . . . . . . . . . . .FIXEDOVERFLOW . . . . . . . . . .DEFAULT . . . . . . . . . . . . .Summary of compiler options that improveperformance . . . . . . . . . . . . .Coding for better performance . . . . . . .DATA-directed input and output . . . . . .Input-only parameters . . . . . . . . .GOTO statements . . . . . . . . . . .String assignments . . . . . . . . . .Loop control variables . . . . . . . . .PACKAGEs versus nested PROCEDUREs . . .REDUCIBLE functions . . . . . . . . .DESCLOCATOR or DESCLIST . . . . . .DEFINED versus UNION . . . . . . . .Named constants versus static variables . . .Avoiding calls to library routines . . . . . .Preloading library routines . . . . . . . 33334334335335336337338Part 4. Using interfaces to otherproducts . . . . . . . . . . . . . 339Chapter 16. Using the Sort programPreparing to use Sort . . . . . . .Choosing the type of Sort . . . .Specifying the sorting field . . . .Specifying the records to be sorted .Determining storage needed for Sort.341.341342345346347

Calling the Sort program . . . . . . . .Example 1 . . . . . . . . . . . .Example 2 . . . . . . . . . . . .Example 3 . . . . . . . . . . . .Example 4 . . . . . . . . . . . .Example 5 . . . . . . . . . . . .Determining whether the Sort was successfulEstablishing data sets for Sort . . . . . .Sort data input and output . . . . . . . .Data input and output handling routines . . .E15—Input handling routine (Sort Exit E15) .E35—Output handling routine (Sort Exit E35)Calling PLISRTA example . . . . . . .Calling PLISRTB example . . . . . . .Calling PLISRTC example . . . . . . .Calling PLISRTD example . . . . . . .Sorting variable-length records example . 61Chapter 17. ILC with C . . . . . . . 363Equivalent data types . . . . .Simple type equivalence . . . .Struct type equivalence . . . .Enum type equivalence . . . .File type equivalence . . . . .Using C functions . . . . . . .Matching simple parameter typesMatching string parameter types .Functions returning ENTRYs . .Linkages . . . . . . . . . .Sharing output and input . . . .Sharing output . . . . . . .Sharing input . . . . . . .Using the ATTACH statement . .Redirecting C standard streams .Summary. . . . . . . . . hapter 18. Interfacing with Java . . . 377Java Native Interface (JNI) . . . . . . . . .Calling PL/I program from Java . . . . . . .JNI sample program #1 - 'Hello World' . . . . .Step 1: Writing the Java program . . . . . .Step 2: Compiling the Java program . . . . .Step 3: Writing the PL/I Program . . . . .Step 4: Compiling and linking the PL/I programStep 5: Running the sample program . . . .JNI sample program #2 - Passing a string . . . .Step 1: Writing the Java program . . . . . .Step 2: Compiling the Java program . . . . .Step 3: Writing the PL/I program . . . . .Step 4: Compiling and linking the PL/I programStep 5: Running the sample program . . . .JNI sample program #3 - Passing an integer . . .Step 1: Writing the Java program . . . . . .Step 2: Compiling the Java program . . . . .Step 3: Writing the PL/I program . . . . .Step 4: Compiling and linking the PL/I programStep 5: Running the sample program . . . .JNI sample program #4 - Java invocation API . .Step 1: Writing the Java program . . . . . .Step 2: Compiling the Java program . . . . 89389390391391391392Step 3: Writing the PL/I program . . . . .Step 4: Compiling and linking the PL/I programStep 5: Running the sample program . . . .Attaching programs to an existing Java VM . . .Determining equivalent Java and PL/I data types392395395395396Part 5. Specialized programmingtasks . . . . . . . . . . . . . . 397Chapter 19. Using the PLISAXA andPLISAXB XML parsers . . . . . . . 399Overview. . . . . . . . . . .The PLISAXA built-in subroutine . . .The PLISAXB built-in subroutine . . .The SAX event structure. . . . . .start of document. . . . . . .version information . . . . . .encoding declaration . . . . . .standalone declaration . . . . .document type declaration. . . .end of document . . . . . . .start of element . . . . . . .attribute name . . . . . . . .attribute characters . . . . . .attribute predefined reference. . .attribute character reference . . .end of element. . . . . . . .start of CDATA section . . . . .end of CDATA section . . . . .content characters . . . . . . .content predefined reference . . .content character reference. . . .processing instruction . . . . .comment . . . . . . . . . .unknown attribute reference . . .unknown content reference . . .start of prefix mapping . . . . .end of prefix mapping . . . . .exception . . . . . . . . . .Parameters to the event functions .Coded character sets for XML documentsSupported EBCDIC code pages . .Supported ASCII code pages . . .Specifying the code page . . . .Exceptions . . . . . . . . . .Example . . . . . . . . . . .Continuable exception codes . . . .Terminating exception codes . . . 407408420424Chapter 20. Using the PLISAXC andPLISAXD XML parsers . . . . . . . 429Overview. . . . . . . . .The PLISAXC built-in subroutine .The PLISAXD built-in subroutine.The SAX event structure. . . .start of document. . . . .version information . . . .encoding declaration . . . .standalone declaration . . .Contents.429430430431432432432432vii

document type declaration. . . . .end of document . . . . . . . .start of element . . . . . . . .attribute name . . . . . . . . .attribute characters . . . . . . .end of element. . . . . . . . .start of CDATA section . . . . . .end of CDATA section . . . . . .content characters . . . . . . . .processing instruction . . . . . .comment . . . . . . . . . . .namespace declare . . . . . . .end of input . . . . . . . . .unresolved reference . . . . . . .exception . . . . . . . . . . .Parameters to the event functions . .Differences in the events . . . . .Coded character sets for XML documents .Supported code pages . . . . . .Specifying the code page . . . . .Exceptions . . . . . . . . . . .Parsing XML documents with validation .XML schema . . . . . . . . .Creating an OSR . . . . . . . .Example with a simple document . . .Example of using the PLISAXC built-insubroutine . . . . . . . . . .Example of using the PLISAXD built-insubroutine . . . . . . . . . 36437438438439439440441441. 441. 451Chapter 21. Using PLIDUMP . . . . . 463PLIDUMP usage notes . . . . . . . .Locating variables in the PLIDUMP output .Locating AUTOMATIC variables . . . .Locating STATIC variables . . . . . .Locating CONTROLLED variables . . .Saved compilation data . . . . . . . .Copyright . . . . . . . . . . .Timestamp . . . . . . . . . . .Saved options string . . . . . . . .464465465466467471471471472Chapter 22. Interrupts and attentionprocessing . . . . . . . . . . . . 473Structure of global control blocks . . . .The IBM-supplied compiler exit, IBMUEXITActivating the compiler user exit . . . .Customizing the compiler user exit . . .Modifying SYSUEXIT . . . . . .Writing your own compiler exit . . .Writing the initialization procedure . .Writing the message filtering procedureWriting the termination procedure . .Example of suppressing SQL messages . .480481482482482483483483485486Chapter 25. PL/I descriptors . . . . . 493 Passing an argument . . . . . . . .Argument passing by descriptor list . .Argument passing by locator/descriptorCMPAT(V*) descriptors . . . . . . .String descriptors . . . . . . . .Array descriptors . . . . . . . .CMPAT(LE) descriptors . . . . . . .String descriptors . . . . . . . .Array descriptors . . . . . . . .493493494494494496496497497Part 6. Appendixes . . . . . . . . 499Appendix. SYSADATA messageinformation . . . . . . . . . . . . 501Understanding the SYSADATA file . . . . .Summary record . . . . . . . . . .Options record . . . . . . . . . . .Counter records . . . . . . . . . .Literal records . . . . . . . . . . .File records . . . . . . . . . . . .Message records . . . . . . . . . .Understanding SYSADATA symbol informationOrdinal type records . . . . . . . . .Ordinal element records . . . . . . . .Symbol records . . . . . . . . . . .Understanding SYSADATA syntax information .Source records . . . . . . . . . . .Token records . . . . . . . . . . .Syntax records . . . . . . . . . . .501502503503503504504505505506507510510511512. 474. 474Notices . . . . . . . . . . . . . . 521Chapter 23. Using theCheckpoint/Restart facility . . . . . . 475Bibliography . . . . . . . . . . . . 523Using ATTENTION ON-units . .Interaction with a debugging tool.Requesting a checkpoint record . . . .Defining the checkpoint data set . . . .Requesting a restart . . . . . . . .Automatic restart after a system failure.Automatic restart within a program . .Getting a deferred restart . . . . .Modifying checkpoint/restart activity .475476477477477477478Chapter 24. Using user exits . . . . . 479Procedures performed by the compiler user exitviiiEnterprise PL/I for z/OS Programming Guide479Trademarks .PL/I publications . .Related publications . 522. 523. 523Glossary . . . . . . . . . . . . . 525Index . . . . . . . . . . . . . . . 543

.19.How to use Enterprise PL/I publicationsxiiiHow to use z/OS Language Environmentpublications . . . . . . . . . . . . xivCompile-time options, abbreviations, andIBM-supplied defaults . . . . . . . . . 4Supported CCSIDs . . . . . . . . . . 16SYSTEM option table . . . . . . . . . 88Using the FLAG option to select the lowestmessage severity listed . . . . . . . . 111Description of PL/I error codes and returncodes . . . . . . . . . . . . . . 112SQL preprocessor options and IBM-supplieddefaults . . . . . . . . . . . . . 125SQL data types generated from PL/Ideclarations . . . . . . . . . . . . 136SQL data types generated from SQL TYPEdeclarations . . . . . . . . . . . . 136SQL data types mapped to PL/I declarations 136SQL data types mapped to SQL TYPEdeclarations . . . . . . . . . . . . 137Compile-time option flags supported byEnterprise PL/I under z/OS UNIX . . . . 159Compiler standard data sets . . . . . . 160Attributes of PL/I file declarations . . . . 224A comparison of data set types available toPL/I record I/O . . . . . . . . . . 232Information required when you create alibrary . . . . . . . . . . . . . . 236Statements and options allowed for creatingand accessing consecutive data sets . . . . 263IBM machine code print control characters(CTL360) . . . . . . . . . . . . . 267 Copyright IBM Corp. 1999, 5.36.37.38.Effect of LEAVE and REREAD OptionsCreating a consecutive data set with recordI/O: essential parameters of the DD statementAccessing a consecutive data set with recordI/O: essential parameters of the DD statementStatements and options allowed for creatingand accessing regional data sets . . . . .Creating a regional data set: essentialparameters of the DD statement . . . . .DCB subparameters for a regional data setAccessing a regional data set: essentialparameters of the DD statement . . . . .Types of VSAM data sets and correspondingPL/I data set organization . . . . . . .Types and advantages of VSAM data setsVSAM data sets and allowed file attributesProcessing allowed on alternate index pathsStatements and options allowed for loadingand accessing VSAM entry-sequenced datasets . . . . . . . . . . . . . . .Statements and options allowed for loadingand accessing VSAM indexed data sets .

SQL pr epr ocessor . . 122 Pr ogramming and compilation considerations 123 SQL pr epr ocessor options . . 125 Coding SQL statements in PL/I applications 129 Manipulating LOB data . . 140 Suppr essing SQL pr epr ocessor messages . . 143 CICS pr epr ocessor . . 144 Pr ogramming and compilation considerations 144