%PCDSN 拡張

%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 のルールに準拠しない場合 (スペースや小文字が含まれる場合など) に必要です。

注: 次の例に示すように、この拡張構文を使用すると、動的 PDS を作成できます。
//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 システムでは「/」)。