The IBMZCPL cataloged procedure, shown in Figure 11, includes three procedure steps: PLI, which is identical to cataloged procedure IBMZC; PLKED, which invokes the Language Environment prelinker; and LKED, which invokes the linkage editor (symbolic name IEWL) to link-edit the object module produced in the first procedure step.
Input data for the compilation procedure step requires the qualified ddname PLI.SYSIN. The COND parameter in the EXEC statement LKED specifies that this procedure step should be bypassed if the return code produced by the compiler is greater than 8 (that is, if a severe or unrecoverable error occurs during compilation).
//IBMZCPL 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 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=&&LOADSET,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
The linkage editor always places the load modules it creates in the standard data set defined by the DD statement with the name SYSLMOD. This statement in the cataloged procedure specifies a new temporary library &&GOSET, in which the load module will be placed and given the member name GO. In specifying a temporary library, the cataloged procedure assumes that you will run the load module in the same job; if you want to retain the module, you must substitute your own statement for the DD statement with the name SYSLMOD.
The SYSLIN DD statement in Figure 11 shows how to concatenate a data set defined by a DD statement named SYSIN with the primary input (SYSLIN) to the linkage editor. You could place linkage editor control statements in the input stream by this means, as described in the z/OS Language Environment Programming Guide.