順次データセットのコピー(IEBGENER)
By 神居 - Posted: 2008/10/15 Last updated: 2009/12/01
- Leave a Comment
順次データセットをそのままコピーする
// 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を指定してもよい。ICEGENERはDFSORTによって提供されるユーティリティ。従来のGENERに比べてI/O効率が良くコピー処理のパフォーマンスが高い。ただしICEGENERは単純にコピーするとDASD特性に合わせてコピー先データセットのブロックサイズが最適値に変更されてしまう。元のブロックサイズを保持したければIEBGENERの方がよい。
コピー元データセットのレコード内容を編集してコピーする例
// 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メンバーをコピーする、あるいは印刷する
// 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を使うのは特定のメンバー内容を印刷したいような時が多い。もちろん順次データセットの内容をそのまま印刷する目的にも使える。
Posted in ありがたいサンプルJCL • • Top Of Page