図 13 の IBMZCPG カタログ式プロシージャーでは、IBMZCPLG と 同じ結果が得られますが、リンケージ・エディターではなくローダー が使用されます。 また、プロシージャー・ステップの数は 4 つ (コンパイル、プリリンク、リンク・エディット、 実行) ではなく、3 つ (コンパイル、プリリンク、ロード/実行) しかありません。3 番目のプロシージャー・ステップはローダー・プログラムを実行します。 ローダー・プログラムは、コンパイラーが作成したオブジェクト・モジュール を処理し、結果の実行可能プログラムをすぐに実行します。 コンパイル・ステップ用の入力データは、修飾 dd 名 PLI.SYSIN を提供して ユーザーが提供する必要があります。
ローダーを使用すると、PL/I プログラムに対していくつかの制約が 課せられます。このカタログ式プロシージャーを使用する前に、 ローダーの使用方法を説明した「z/OS 言語環境プログラム プログラミング・ガイド」を参照してください。
//IBMZCPG PROC LNGPRFX='IBMZ.V3R8M0',LIBPRFX='CEE', // SYSLBLK=3200,PLANG=EDCPMSGE //* //******************************************************************** //* * //* 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, LOAD 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 //* //********************************************************************* //* 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=*
//********************************************************************* //* LOAD AND RUN STEP //********************************************************************* //GO EXEC PGM=LOADER,PARM='MAP,PRINT', // COND=((8,LT,PLI),(8,LE,PLKED)) //STEPLIB DD DSN=&LIBPRFX;.SCEERUN,DISP=SHR //SYSLIB DD DSN=&LIBPRFX..SCEELKED,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSLIN DD DSN=*.PLKED.SYSMOD,DISP=(OLD,DELETE) //SYSLOUT DD SYSOUT=* //CEEDUMP DD SYSOUT=* //SYSUDUMP DD SYSOUT=*
他のカタログ式プロシージャーの詳細について は、「z/OS 言語環境プログラム プログラミング・ガイド」を参照してください。