2

JZOS の下の IBM メインフレームでバッチ Java を実行しています。ジョブは、データベースで検出した内容に応じて、0 ~ 6 個の ".txt" 出力を作成します。次に、これらのファイルを Unix から MVS (ebcdic) に変換する必要があり、IKJEFT01 で実行されている OCOPY コマンドを使用しています。ただし、特定の出力が作成されなかった場合、JCL エラーが発生してジョブが終了します。各ファイル名の有無をチェックし、条件コードを設定して IKJEFT01 ステップを実行するかどうかを制御したいのですが、Unix ファイルのパス名にアクセスするために何を使用すればよいかわかりません。
変換された MVS ファイルをチェックし、後続の JCL ステップの実行を制御するリターン コードを設定する COBOL プログラムを作成することで、この問題を解決しました。完成したジョブは現在、ユーザー受け入れテストを受けています。おそらくそれはおかしなことのように聞こえるかもしれませんが、うまくいくので、この解決策を喜んで共有します.

4

1 に答える 1

2

JCL でこれを行う最も簡単な方法は、次のように BPXBATCH を使用することです。

//EXIST    EXEC PGM=BPXBATCH,
// PARM='pgm /bin/cat /full/path/to/USS/file.txt'
//*
//         IF  EXIST.RC = 0
//* do whatever you need to
//         ENDIF

ファイルが存在する場合、ステップは CC 0 で終了し、IF成功します。ファイルが存在しない場合、ゼロ以外の CC (256 だと思います) が返され、IF失敗します。

//STDOUT DDステートメントがないため、JES に書き込まれる出力はありません。

唯一の欠点は、これが別のジョブ ステップであることです。(コンパイル/アセンブル ジョブのように) 多くの proc がある場合、255 ステップの制限に達する可能性があります。

于 2012-01-22T05:50:24.500 に答える