図 9 の IBMZCB カタログ式プロシージャーには、2 つのプロシージャー・ステップがあります。1 つは PLI で、これは カタログ式プロシージャー IBMZC と同じです。もう 1 つは BIND で、 これは最初のプロシージャー・ステップで作成されたオブジェクト・モジュールを バインドするためにプログラム管理バインダー (シンボル名 IEWBLINK) を 呼び出します。
コンパイル・プロシージャー・ステップ用の入力データには、修飾 dd 名の PLI.SYSIN が 必要です。EXEC ステートメント BIND の COND パラメーターは、 コンパイラーが生成した戻りコードが 8 より大きい場合 (つまり、 コンパイル中に重大エラーまたは回復不能エラーが起こった場合) に、 このプロシージャー・ステップをバイパスするよう指定します。
//IBMZCB PROC LNGPRFX='IBMZ.V3R8M0',LIBPRFX='CEE', // SYSLBLK=3200,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 AND BIND 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 //* GOPGM GO MEMBER NAME FOR PROGRAM OBJECT //* //********************************************************************* //* 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 //********************************************************************* //* BIND STEP //********************************************************************* //BIND EXEC PGM=IEWBLINK,COND=(8,LT,PLI), // PARM='XREF,COMPAT=PM3' //SYSLIB DD DSN=&LIBPRFX..SCEELKED,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSLIN DD DSN=*.PLI.SYSLIN,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DSN=&&GOSET(&GOPGM),DISP=(MOD,PASS),UNIT=SYSALLDA, // SPACE=(1024,(50,20,1)),DSNTYPE=LIBRARY //SYSDEFSD DD DUMMY //SYSIN DD DUMMY
プログラム管理バインダーは、常に、SYSLMOD という名前の DD ステートメント で定義された標準データ・セットに、作成した プログラム・オブジェクトを入れます。 カタログ式プロシージャーの中のこのステートメントは、 新しい一時ライブラリー &&GOSET を指定します。プログラム・オブジェクトは この一時ライブラリーに入れられ、GO というメンバー名を与えられます。一時ライブラリーを指定する際は、カタログ式プロシージャーは プログラム・オブジェクトが同じジョブ内で実行されることを想定します。 プログラム・オブジェクトを保持したい場合は、SYSLMOD という名前 の DD ステートメントをユーザー独自の名前に置き換えなければなりません。