図 12の IBMZCPLG カタログ式プロシージャーには、PLI、PLKED、 LKED、および GO の 4 つのプロシージャー・ステップがあります。PLI、PLKED、および LKED は IBMZCPL の 3 つの プロシージャー・ステップと同じです。GO は LKED ステップで作成されたロード・モジュールを実行します。GO ステップは、前のプロシージャー・ステップで重大エラーまたは回復不能エラーが起こらなかった場合だけ実行されます。
コンパイル・プロシージャー・ステップ用の入力データは、PLI.SYSIN という名前 の DD ステートメントで指定しなければならず、また、GO ステップ用のものは、GO.SYSIN という名前の DD ステートメントで指定しなければなりません。
//IBMZCPLG PROC LNGPRFX='IBMZ.V3R8M0',LIBPRFX='CEE', // SYSLBLK=3200,PLANG=EDCPMSGE,GOPGM=GO //* //******************************************************************** //* * //* LICENSED MATERIALS - PROPERTY OF IBM * //* * //* 5655-H31 (C) COPYRIGHT IBM CORP. 1999, 2008 * //* ALL RIGHTS RESERVED. * //* * //* US GOVERNMENT USERS RESTRICTED RIGHTS - USE, * //* DUPLICATION OR DISCLOSURE RESTRICTED BY GSA * //* ADP SCHEDULE CONTRACT WITH IBM CORP. * //* * //******************************************************************** //* //* IBM ENTERPRISE PL/I FOR Z/OS //* VERSION 3 RELEASE 8 MODIFICATION 0 //* //* COMPILE, PRELINK, LINK-EDIT AND RUN A PL/I PROGRAM //* //* PARAMETER DEFAULT VALUE USAGE //* LNGPRFX IBMZ.V3R8M0 PREFIX FOR LANGUAGE DATA SET NAMES //* LIBPRFX CEE PREFIX FOR LIBRARY DATA SET NAMES //* SYSLBLK 3200 BLKSIZE FOR OBJECT DATA SET //* PLANG EDCPMSGE PRELINKER MESSAGES MEMBER NAME //* GOPGM GO MEMBER NAME FOR LOAD MODULE //* //********************************************************************* //* COMPILE STEP //********************************************************************* //PLI EXEC PGM=IBMZPLI,PARM='OBJECT,OPTIONS' //STEPLIB DD DSN=&LNGPRFX;.SIBMZCMP,DISP=SHR // DD DSN=&LIBPRFX;.SCEERUN,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=SYSALLDA, // SPACE=(CYL,(1,1)),DCB=(LRECL=80,BLKSIZE=&SYSLBLK) //SYSUT1 DD DSN=&&SYSUT1,UNIT=SYSALLDA, // SPACE=(1024,(200,50),,CONTIG,ROUND),DCB=BLKSIZE=1024 //********************************************************************* //* PRE-LINK-EDIT STEP //********************************************************************* //PLKED EXEC PGM=EDCPRLK,COND=(8,LT,PLI) //STEPLIB DD DSN=&LIBPRFX;.SCEERUN,DISP=SHR //SYSMSGS DD DSN=&LIBPRFX..SCEEMSGP(&PLANG),DISP=SHR //SYSLIB DD DUMMY //SYSMOD DD DSN=&&PLNK,DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(1,1)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=&SYSLBLK) //SYSIN DD DSN=*.PLI.SYSLIN,DISP=(OLD,DELETE) //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=*
//********************************************************************* //* LINK-EDIT STEP //********************************************************************* //LKED EXEC PGM=IEWL,PARM='XREF',COND=((8,LT,PLI),(8,LE,PLKED)) //SYSLIB DD DSN=&LIBPRFX..SCEELKED,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSLIN DD DSN=*.PLKED.SYSMOD,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DSN=&&GOSET(&GOPGM),DISP=(MOD,PASS),UNIT=SYSALLDA, // SPACE=(1024,(50,20,1)) //SYSUT1 DD DSN=&&SYSUT1,UNIT=SYSALLDA,SPACE=(1024,(200,20)), // DCB=BLKSIZE=1024 //SYSIN DD DUMMY //********************************************************************* //* RUN STEP //********************************************************************* //GO EXEC PGM=*.LKED.SYSLMOD, // COND=((8,LT,PLI),(8,LE,PLKED),(8,LE,LKED)) //STEPLIB DD DSN=&LIBPRFX;.SCEERUN,DISP=SHR //SYSPRINT DD SYSOUT=* //CEEDUMP DD SYSOUT=* //SYSUDUMP DD SYSOUT=*