順次データセットをそのままコピーする
1 2 3 4 5 6 7 8 9 10 11 |
// JOB Statement //********************************************************************* //* Sample JCL - IEBGENER //* ===================== //********************************************************************* //IEBGENER EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=input dsname //SYSUT2 DD DISP=SHR,DSN=output dsname //SYSIN DD DUMMY // |
プログラム名として、IEBGENERの代わりにICEGENERを指定してもよいです(※z/OSのみ)。ICEGENERは、DFSORTによって提供されるユーティリティーです。従来のIEBGENERに比べてI/O効率が良く、コピー処理のパフォーマンスが高いです。ただし、ICEGENERでは単純にコピーすると、DASD特性に合わせてコピー先データセットのブロックサイズが最適値に変更されてしまいます。元のブロックサイズを保持したければIEBGENERの方がいいでしょう。
コピー元データセットのレコード内容を編集してコピーする
1 2 3 4 5 6 7 8 9 10 |
// JOB Statement //IEBGENER EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=input dsname //SYSUT2 DD DISP=SHR,DSN=output dsname //SYSIN DD * GENERATE MAXFLDS=10 RECORD FIELD=(30,1,,1), FIELD=(40,40,,31) // |
入力レコードの、1桁目からの30バイトと40桁目からの40バイトを合わせて、30+40=70バイトとして出力先データセットにコピーします。
区分データセットの1メンバーをコピーする、あるいは印刷する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// JOB Statement //IEBGENER EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=input dsname(member) //SYSUT2 DD DISP=SHR,DSN=output dsname(member) //SYSIN DD DUMMY // //IEBGENER EXEC PGM=IEBGENER //SYSPRINT DD DUMMY //SYSUT1 DD DISP=SHR,DSN=input dsname(member) //SYSUT2 DD SYSOUT=P //SYSIN DD DUMMY // |
区分データセット内の1つのメンバーは、順次データセットとして処理することができます。このように、データセット名に()でメンバー名も指定すれば、そのメンバーを1つの順次データセットとして処理することができます。ただし、メンバー・ディレクトリーの内容まではコピーされないので、ロード・モジュールやISPFで編集したメンバーなど、メンバー・ディレクトリーにも制御データが登録されるものには向きません。区分データセットの場合、通常はIEBCOPYを使う方がいいです。GENERを使うのは、特定のメンバー内容を印刷したいような時が多いです。もちろん、順次データセットの内容をそのまま印刷する目的にも使えます。