固定長レコードのデータセットであれば、そのままファイル転送することができますが、可変長や不定長レコードの場合は、相手側転送ソフトが、MVS(z/OS)のレコード形式に対応していないと正しく転送できません。
TSOのTRANSMIT/RECEIVEコマンドを使うと、順次または区分データセットであれば、レコード形式に関係なくデータセットをRECFM=FB、BLKSIZE=3120、LRECL=80の形式に変換して、元の形式に復元することができます。TRANSMITで変換してから転送し、転送先にてRECEIVEで復元すれば、あらゆるデータセットを転送することができます。VSAMデータセットも、一旦REPROで順次データセットにアンロードすれば、TRANSMITに掛けることができます。
TRANSMITコマンド自体はデータの変換に過ぎませんが、NJEで接続されたz/OS同士、転送先がVSEやVMなどのIBMシステムであれば、同時に転送を行うこともできます。(※転送処理自体は、NJEによって行われる)NJEで接続されていない場合や、転送先がIBMシステムでない場合は、FTPや3270エミュレーターのファイル転送機能などを利用して、転送可能形式に変換されたファイルを転送します。
TSO/TRANSMITコマンド
TSO/TRANSMITコマンド実行JCLサンプル①
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// JOB Statement //********************************************************************* //* Sample JCL - TSO BATCH SESSION //* ============================== //********************************************************************* //TRANSMIT EXEC PGM=IKJEFT01 //SYSTSPRT DD SYSOUT=* //SYSUT2 DD DISP=(,CATLG),DSN=TEMP.XMITFILE, // UNIT=SYSDA,VOL=SER=WRKVOL,SPACE=(CYL,(10,10),RLSE) //SYSTSIN DD * TRANSMIT ZOS.XMITUSER NOLOG + DATASET('MY.JCL') OUTDD(SYSUT2) //* //XMIT EXEC PGM=IKJEFT01 //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=USR1.JCL //SYSUT2 DD DISP=SHR,DSN=USR1.XMIT(USR1JCL) //SYSTSIN DD * XMIT OS390.XMITUSER NOLOG + DDNAME(SYSUT1) OUTDD(SYSUT2) // // |
データセットを転送可能形式に変換します。TRANSMITコマンドは、XMITと略せます。DATASETパラメーターで変換する入力データセットを、OUTDDパラメーターで変換されたデータを格納する出力データセットを定義したDD名を指定します。
2番目の例は、入出力対象のデータセットを共にDDステートメントで指定するものです。変換されたデータは、既存の区分データセットにメンバーとして登録されます。出力先区分データセットは、あらかじめRECFM=FB、BLKSIZE=3120、LRECL=80で作成してあります。
TSO/TRANSMITコマンド実行JCLサンプル②
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// JOB Statement //********************************************************************* //* Sample JCL - TSO BATCH SESSION //* ============================== //********************************************************************* //RECEIVE EXEC PGM=IKJEFT01 //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=TEMP.XMITFILE //SYSTSIN DD * RECEIVE INDD(SYSUT1) LOGDS('NULLFILE') NONAMES RESTORE DSNAME('MY.JCL') VOL(TMPVOL) //* //RECEIVE EXEC PGM=IKJEFT01 //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=USR1.XMIT(USR1JCL) //SYSTSIN DD * RECEIVE INDD(SYSUT1) LOGDS('NULLFILE') NONAMES RESTORE DSNAME('USR1.JCL') VOL(TMPVOL) + CYL SPACE(20 10) DIR(100) // // |
データセットを転送可能形式から元の形式に復元します。RECEIVEとRESTOREコマンドを組み合わせます。INDDパラメーターで復元するXMITデータセットを定義したDD名を、DSNAMEとVOLパラメーターで復元されたデータを格納する出力先データセット名とVOLUME名を指定します。出力先データセットのRECFM、BLKSIZE、LRECLは、XMITファイル内に登録されている元のデータセット情報に基づき設定されます。スペース量は、データの大きさに合わせて必要なサイズが設定されます。
2番目の例は、スペース量を追加設定したものです。パラメーターでスペース量を指定すれば、そちらが優先されます。
IEHMOVEユーティリティー
IEHMOVEユーティリティーUNLOAD機能実行JCLサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// JOB Statement //********************************************************************* //* Sample JCL - IEHMOVE //* ==================== //********************************************************************* //UNLOAD EXEC PGM=IEHMOVE|JSGMOVE|JSFMOVE //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=OLD,UNIT=SYSDA,VOL=SER=WRKVOL //FROM DD DISP=OLD,UNIT=SYSDA,VOL=SER=VOL001 //TO DD DISP=OLD,UNIT=SYSDA,VOL=SER=VOL002 //SYSIN DD * COPY PDS=MY.JCL,FROM=SYSDA=VOL001,TO=SYSDA=VOL002, X RENAME=MY.JCL.UNLOAD,UNLOAD,CATLG //* //RESTORE EXEC PGM=IEHMOVE|JSGMOVE|JSFMOVE //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=OLD,UNIT=SYSDA,VOL=SER=WRKVOL //FROM DD DISP=OLD,UNIT=SYSDA,VOL=SER=VOL002 //TO DD DISP=OLD,UNIT=SYSDA,VOL=SER=VOL001 //SYSIN DD * COPY PDS=MY.JCL.UNLOAD,RENAME=MY.JCL2, X FROM=SYSDA=VOL002,TO=SYSDA=VOL001,CATLG // // |
TRANSMIT、RECEIVEが使用できないMSPとVOS3では、代替としてIEHMOVEユーティリティを利用できます。アンロードされたデータセットは、RECFM=FB、BLKSIZE=800、LRECL=80の形式に変換されます。IEHMOVEは古典的なユーティリティーで、MVS(z/OS)、MSP、VOS3間で同じ形式を持ちます。