Enterprise PL/I For Z/OS Programming Guide

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 page525.Second Edition (April 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 . . . . . . . . . . . . . . . xiFigures . . . . . . . . . . . . . . xiiiIntroduction . . . . . . . . . . . . xvAbout this document . . . . . . . . . . . xvRuntime environment for Enterprise PL/I for z/OS xvUsing your documentation . . . . . . . . . xvNotation conventions used in this document . . . xviConventions used . . . . . . . . . . . xviHow to read the syntax notation . . . . . . xviiHow to read the notational symbols . . . . . xixSummary of changes . . . . . . . . . . . xxEnhancements in this release . . . . . . . xxEnhancements from V4R5 . . . . . . . . xxiiiEnhancements from V4R4 . . . . . . . . xxivEnhancements from V4R3 . . . . . . . . xxvEnhancements from V4R2 . . . . . . . . xxviEnhancements from V4R1. . . . . . . . xxviiEnhancements from V3R9 . . . . . . . xxviiiEnhancements from V3R8 . . . . . . . . xxxEnhancements from V3R7 . . . . . . . . xxxiEnhancements from V3R6 . . . . . . . . xxxiiEnhancements from V3R5 . . . . . . . xxxiiiEnhancements from V3R4 . . . . . . . xxxivEnhancements from V3R3 . . . . . . . xxxviEnhancements from V3R2 . . . . . . . xxxviiEnhancements from V3R1 . . . . . . . xxxviiiEnhancements from VisualAge PL/I . . . . xxxixHow to send your comments . . . . . . . . xlAccessibility . . . . . . . . . . . . . . xlPart 1. Compiling your program . . . 1Chapter 1. Using compiler options andfacilities. . . . . . . . . . . . . . . 3Compile-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 . . . . . . . . . . . . . . 83SOURCE . . . . . . . . . . . . . . 84SPILL . . . . . . . . . . . . . . . 84STATIC . . . . . . . . . . . . . . . 84STDSYS . . . . . . . . . . . . . . 84STMT . . . . . . . . . . . . . . . 85STORAGE . . . . . . . . . . . . . . 85STRINGOFGRAPHIC . . . . . . . . . . 86SYNTAX . . . . . . . . . . . . . . 86SYSPARM . . . . . . . . . . . . . . 87SYSTEM . . . . . . . . . . . . . . 87TERMINAL . . . . . . . . . . . . . 88TEST . . . . . . . . . . . . . . . 88UNROLL . . . . . . . . . . . . . . 91USAGE . . . . . . . . . . . . . . . 92WIDECHAR . . . . . . . . . . . . . 93WINDOW . . . . . . . . . . . . . . 93WRITABLE . . . . . . . . . . . . . 93XINFO . . . . . . . . . . . . . . . 95XML. . . . . . . . . . . . . . . . 97XREF . . . . . . . . . . . . . . . 97Blanks, comments and strings in options . . . . 98Changing the default options . . . . . . . . 99Specifying options in the %PROCESS or *PROCESSstatements . . . . . . . . . . . . . . . 99Using % statements . . . . . . . . . . . 100Using 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 . . . . . . . . . .102102103103103104104105105108109109110111Chapter 2. PL/I preprocessors . . . . 117Include preprocessor . . . . . . . . . . .Include preprocessor options in theconfiguration file . . . . . . . . . . .Include preprocessor options environmentvariable . . . . . . . . . . . . . .Macro preprocessor . . . . . . . . . . .Macro preprocessor options . . . . . . .Macro preprocessor options in the configurationfile . . . . . . . . . . . . . . . .Macro preprocessor options environmentvariables . . . . . . . . . . . . . .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 . . . . . . . . . . . 46146147147Chapter 3. Using PL/I catalogedprocedures . . . . . . . . . . . . 149IBM-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 . . . . . . . .149150151153155.155156156157Chapter 4. Compiling your program159Invoking the compiler under z/OS UNIX . . .Input files . . . . . . . . . . . .Specifying compile-time options under z/OSUNIX . . . . . . . . . . . . . .-qoption keyword . . . . . . . . . . 159. 159. 160. 160

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 . . .Specifying options in the EXEC statement usingan options file . . . . . . . . . . . .161161162162164164165165166Using 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 . . . . 190. 190. 191. 191. 191. 192Chapter 5. Link-editing and runningfor 31-bit programs . . . . . . . . . 167Chapter 7. Considerations fordeveloping 64-bit applications . . . . 195Link-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 . . . . .Using compiler options to build 64-bit applicationsUsing attributes HANDLE and POINTER underLP(64) . . . . . . . . . . . . . . . .HANDLE attribute . . . . . . . . . .POINTER attribute . . . . . . . . . .Using ENTRY variables under LP(64) . . . . .Using built-in functions under LP(64) . . . . .Considerations for SQL programs . . . . . .Communicating with 31-bit routines. . . . . .167167167167168.168169170170.171171171171172173. 173. 174. 182183. 183. 183. 184Chapter 6. Link-editing and runningfor 64-bit programs . . . . . . . . . 187Link-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 .Formatting conventions for PRINT files for64-bit programs . . . . . . . . .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 64-bit 195196196196197197198200Part 2. Using I/O facilities . . . . . 203Chapter 8. Using data sets and files205Allocating files . . . . . . . . . . . . .Associating data sets with files under z/OS . . .Associating several files with one data set . . .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 . . . . . . . 21223224224226226228Chapter 9. Using libraries . . . . . . 239Types of libraries . .Using a library . . .Creating a library . .SPACE parameter .Creating and updating. . . . .a library. . . . . . . . .member.239239240240241Contentsv

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 . 241. 242. 242. 243Dummy Records . . . . . . . . . .Creating a REGIONAL(1) data set . . . .Accessing and updating a REGIONAL(1) dataset . . . . . . . . . . . . . . .Essential information for creating and accessingregional data sets . . . . . . . . . . . 283. 283. 284. 287Chapter 10. Defining and usingconsecutive data sets. . . . . . . . 245Chapter 14. Defining and using VSAMdata sets . . . . . . . . . . . . . 291Using 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 . . . . . . . . . . . .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 . . . . .Defining 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 . . . . . . . . . .Defining 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 . . . . . . . . . 245. 245. r 11. Controlling output to theterminal . . . . . . . . . . . . . . 265Format of PRINT files . . . . . .Stream and record files . . . . . .Output from the PUT EDIT command . 265. 265. 266Chapter 12. Using record-orienteddata transmission . . . . . . . . . 267Specifying 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. . .268268268269269270271272272273274274Chapter 13. Defining and usingregional data sets . . . . . . . . . 279Defining 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 . . . . .viEnterprise PL/I for z/OS Programming 26Part 3. Improving your program327Chapter 15. Improving performance329Selecting 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 . . . . . . . . . .329329329330330330331332332332335335336336336337

Loop control variables . . . . . .PACKAGEs versus nested PROCEDUREsREDUCIBLE functions . . . . . .DESCLOCATOR or DESCLIST . . .DEFINED versus UNION . . . . .Named constants versus static variablesAvoiding calls to library routines . . .Preloading library routines . . . . .337338338339339340341342Part 4. Using interfaces to otherproducts . . . . . . . . . . . . . 343Chapter 16. Using the Sort program345Preparing to use Sort . . . . . . . . . .Choosing the type of Sort . . . . . . .Specifying the sorting field . . . . . . .Specifying the records to be sorted . . . .Determining storage needed for Sort . . .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 . 60361361362363365Chapter 17. ILC with C . . . . . . . 367Equivalent 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 . . . 381Java Native Interface (JNI) . . . . .Calling PL/I program from Java . . .JNI sample program #1 - 'Hello World' .Step 1: Writing the Java program . .381382382382Step 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 . . . . .Step 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 395395395396396399399399400Part 5. Specialized programmingtasks . . . . . . . . . . . . . . 401Chapter 19. Using the PLISAXA andPLISAXB XML parsers . . . . . . . 403Overview. . . . . . . . . . .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 408409409vii

Supported EBCDIC code pagesSupported ASCII code pages .Specifying the code page . .Exceptions . . . . . . . .Example . . . . . . . . .Continuable exception codes . .Terminating exception codes . .410410410411412424428Chapter 20. Using the PLISAXC andPLISAXD XML parsers . . . . . . . 433Overview. . . . . . . . . . . .The PLISAXC built-in subroutine . . . .The PLISAXD 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 . . . . . . .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 . . . . . . . . . . 445. 455Chapter 21. Using PLIDUMP . . . . . 467PLIDUMP 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 . . . . . . . .viii.Enterprise PL/I for z/OS Programming Guide.468469469470471475475475476Chapter 22. Interrupts and attentionprocessing . . . . . . . . . . . . 477Using ATTENTION ON-units . .Interaction with a debugging tool. 478. 478Chapter 23. Using theCheckpoint/Restart facility . . . . . . 479Requesting 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 .479480481481481481482Chapter 24. Using user exits . . . . . 483Procedures performed by the compiler user exitStructure of global control blocks . . . . . .The IBM-supplied compiler exit, IBMUEXIT . .Activating the compiler user exit . . . . . .Customizing the compiler user exit . . . . .Modifying SYSUEXIT . . . . . . . .Writing your own compiler exit . . . . .Writing the initialization procedure . . . .Writing the message filtering procedure . .Writing the termination procedure . . . .Example of suppressing SQL messages . . . .483484485486486486487487487489490Chapter 25. PL/I descriptors . . . . . 497Passing 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 . . . . . . . .497497498498498500500501501Part 6. Appendixes . . . . . . . . 503Appendix. SYSADATA messageinformation . . . . . . . . . . . . 505Understanding 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 . . . . . . . . . . .505506507507507508508509509510511514514515516

Notices . . . . . . . . . . . . . . 525Trademarks .Related publications . 527. 526Glossary . . . . . . . . . . . . . 529Bibliography . . . . . . . . . . . . 527PL/I publications . 527Index . . . . . . . . . . . . . . . 547Contentsix

xEnterprise PL/I for z/OS Programming Guide

.19.How to use Enterprise PL/I publicationsxvHow to use z/OS Language Environmentpublications . . . . . . . . . . . . xviCompile-time options, abbreviations, andIBM-supplied defaults . . . . . . . . . 4Supported CCSIDs . . . . . . . . . . 16SYSTEM option table . . . . . . . . . 87Using the FLAG option to select the lowestmessage severity listed . . . . . . . . 110Description of PL/I error codes and returncodes . . . . . . . . . . . . . . 111SQL preprocessor options and IBM-supplieddefaults . . . . . . . . . . . . . 126SQL data types generated from PL/Ideclarations . . . . . . . . . . . . 136SQL data types generated from SQL TYPEdeclarations . . . . . . . . . . . . 137SQL data types mapped to PL/I declarations 137SQL data types mapped to SQL TYPEdeclarations . . . . . . . . . . . . 138Compile-time option flags supported byEnterprise PL/I under z/OS UNIX . . . . 161Compiler standard data sets . . . . . . 162Attributes of PL/I file declarations . . . . 228A comparison of data set types available toPL/I record I/O . . . . . . . . . . 236Information required when you create alibrary . . . . . . . . . . . . . . 240Statements and options allowed for creatingand accessing consecutive data sets . . . . 267IBM machine code print control characters(CTL360) . . . . . . . . . . . . . 271 Copyright IBM Corp. 1999, 5.36.37.38.Effect of LEAVE and REREAD OptionsCreating a consecutive data set with recordI/

SQL pr epr ocessor . . 123 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 . . 144 CICS pr epr ocessor . . 145 Pr ogramming and compilation considerations 145