図 8 に示すカタログ式プロシージャー IBMZC には、 プロシージャー・ステップが 1 つだけあります。このステップでコンパイル用に 指定されているオプションは OBJECT と OPTIONS です。(IBMZPLI は、コンパイラーのシンボル名です。) コンパイル・プロシージャー・ステップの入ったその他のカタログ式プロシージャーと 同様に、IBMZC には入力データ・セット用の DD ステートメントは入っていません。 ユーザーが修飾 dd 名 PLI.SYSIN を付けて適切なステートメントを必ず 提供しなければなりません。
OBJECT コンパイル時オプションを指定すると、コンパイラーは、 リンケージ・エディターへの入力に適した構文のオブジェクト・モジュールを、SYSLIN という名前の DD ステートメントで定義された標準データ・セットに 入れます。 このステートメントは順次装置上で &&LOADSET という名前の 一時データ・セットを定義します。ジョブ終了後にオブジェクト・ モジュールを保持したい場合は、&&LOADSET を永続名 (すなわち、&& で始まらない名前) で置き換え、またそのデータ・セットを使用した最後のプロシージャー・ステップについては、 適切な DISP パラメーター に KEEP を指定しなければなりません。そのためには、下記のように、ユーザー独自の SYSLIN DD ステートメントを 提供します。 このステートメント上のデータ・セット名と後処理パラメーターにより、IBMZC プロシージャーの SYSLIN DD ステートメントの指定が変更されます。 この例では、コンパイル・ステップが唯一のジョブ・ステップです。
//PLICOMP EXEC IBMZC //PLI.SYSLIN DD DSN=MYPROG,DISP=(MOD,KEEP) //PLI.SYSIN DD ...
図 8 の DISP パラメーターにある MOD という項 により、コンパイラーはデータ・セットに複数のオブジェクト・モジュールを 入れることができます。また、PASS により、対応する DD ステートメントが ある限り、以降のプロシージャー・ステップでもそのデータ・セットを使用できます。
SYSLIN SPACE パラメーターを指定すると、1 シリンダーの初期割り振り を行うことができ、必要であればさらに 15 回の割り振りを行うことができます (合計 16 シリンダー)。
//IBMZC PROC LNGPRFX='IBMZ.V3R8M0',LIBPRFX='CEE', // SYSLBLK=3200 //* //******************************************************************** //* * //* 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 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 //* //* USER MUST SUPPLY //PLI.SYSIN DD STATEMENT THAT IDENTIFIES //* LOCATION OF COMPILER INPUT //* //********************************************************************* //* 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