2011-01-18 4 views
2

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

+0

私はちょうどこれを見つけた。私は、ソース・ファイルがソース・リポジトリーからチェックアウトされたコンパイル/アセンブル・ジョブ・ストリームのPGM = BPXBATCHを介してJCLでこれを行いました。リリースによっては、JCLエラーが必要な場所ではありません。 私はJCLを1日か2日後に掘り起こして、ここに投稿します。 – zarchasmpgmr

答えて

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ステップの制限に達することができるということです。

+1

ありがとうございます。 COBOLプログラムもステップを追加しますが、JESに書き込むことができます。後続のステップの調整に使用する戻りコードを選択できます。また、一度に複数のファイルをチェックすることもできます。 –

関連する問題