%PCDSN 拡張は、JCL および IDCAMS の両方で使用できます。この拡張は、新しいデータ セットの作成時に使用します。これは、MVS データ セット名に関連付けられる物理 PC ファイル名を指定します。この拡張を使用しない場合、PC ファイル名は自動的に生成されます。
たとえば、JCL を使用して作成するデータ セットに PC 物理ファイル名を割り当てるには、次の操作を行います。
//SYSUT2 DD DSN=MFIDSA.NONVSAM.WITH.SPECIFIC.PCNAME, // DISP=(NEW,CATLG),SPACE=(TRK,1) //*MFE: %PCDSN='<CATALOGFOLDER>\MYFILE.NONVSAM.DAT'
拡張は「//*」の後に続くため、メインフレームではコメントとして表示されます。これは 1 行で単独に存在し、この拡張が適用される DD 文の行の最後に続きます。文字列「<CATALOGFOLDER>」はカタログを含むフォルダーで、表示されているように正確に記述されます。値を囲む引用符 (注:一重引用符) は、名前が JCL のルールに準拠しない場合 (スペースや小文字が含まれる場合など) に必要です。
//DD1 DD DSN='TEST.DYN1',DISP=(NEW,CATLG), // DCB=(RECFM=FB,LRECL=123,DSORG=PO) //*MFE: %PCDSN=C:\DPDS\*.DAT
これにより、TEST.DYN1 は動的 PDS として作成され、そのメンバーは C:\DPDS ディレクトリ内の拡張子 .DAT の付いたファイルになります。データ セットの編成は PO になります。
同様に、IDCAMS を使用して作成するデータ セットに物理 PC ファイル名を割り当てるには、次の操作を行います。
DEFINE CLUSTER( - NAME(DSA.LIB.VSAMSRC2 ) - CONTROLINTERVALSIZE (4096) - RECORDSIZE(4088 4088) - REUSE - NUMBERED - SHAREOPTION (4 4) - CYLINDERS (2 1) - ) - ;MFE:%PCDSN(E:\MYDIR\MYFILE.DAT)
拡張はセミコロンの後に続くため、メインフレームではコメントとして表示されます。この拡張が 1 行で単独に存在するようにします。JCL の場合と同様に、カタログを含むフォルダーを表す「<CATALOGFOLDER>」を使用できます。名前が IDCAMS のルールに準拠しない場合は、値を囲む一重引用符が必要になります。
複数行にわたって %PCDSN パラメーターを続けるには、JCL の継続のルールに従う必要があります。
//SYSUT2 DD DSN=MFIDSA.TEST.NONVSAM.WITH.LONG.PCNAME, // DISP=(NEW,CATLG),SPACE=(TRK,1),LRECL=80,RECFM=F,DSORG=PS //*MFE: %PCDSN='<CatalogFolder>/DATA/pcname_long_name.node_name3.node_n //*MFE: ame4.node_name5.node_name6.node_name7.node_name8.node_na //*MFE: me9.with.long.pcname.for.nonvsam.dataset'
この場合、名前は「=」の直後に始まり、71 桁目まで続き (72 桁目には何もない)、次の行の 16 桁目で再開し、最後の引用符で終わります。すべてのレコードの 1 から 7 桁目に //*MFE: があることを確認してください。
名前がちょうど 71 桁目で終わる場合、次の行の 16 桁目には最後の引用符のみが置かれます。
//SYSUT2 DD DSN=MFIDSA.TEST.NONVSAM.WITH.LONG.PCNAME, // DISP=(NEW,CATLG),SPACE=(TRK,1),LRECL=80,RECFM=F,DSORG=PS //*MFE: %PCDSN='<CATALOGFOLDER>/DATA/PCNAME_LONG_NAME.NODE_NAME3.FL.DAT //*MFE: '
IDCAMS で複数行にわたる %PCDSN パラメーターを使用する場合は、IDCAMS ルールに従います (最後は + になるなど。16/71 桁目の件は関係ない)。次に例を示します。
DEFINE CLUSTER(NAME(MFIDSA.TEST.VSAMKSDS.WITH.LONG.PCNAME ) - TRK(1 1) - RECSZ(80 80) KEYS(9 0) ) - ;MFE:%PCDSN - ('<CatalogFolder>/DATA/pcname_long_name.node_name3.node_t+ ame4.node_name5.node_name6.node_name7.node_name8.node_nam+ e9.with.long.pcname.for.vsamksds.dataset')
%PCDSN 拡張を使用して、GDG の場所を設定できます。この場合、PCDSN の場所はディレクトリにする必要があります。次の例のように、オプションで環境変数を使用できます。ここで、GDG3DIR はジョブを実行するリージョンで設定されています。
DEFINE GENERATIONDATAGROUP - (NAME(MFI03.GDGTEST.GDG2) - EMPTY - NOSCRATCH - LIMIT(3) ) - ;MFE:%PCDSN('$GDG3DIR[\]GDG2[\]MFIGDG[\]')
ディレクトリの区切り文字の定義に [\] を使用していることに注目してください。 [\] は、オペレーティング システムに適したディレクトリの区切り文字に置き換えられます (Windows では「\」、UNIX および Linux システムでは「/」)。