• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VOS3のJCLで外部パラメータは可能か)

VOS3のJCLで外部パラメータは可能か

このQ&Aのポイント
  • VOS3のJSS3 JCLを使用して、外部パラメータを利用する方法について知りたいです。現在、キーを指定してデータを抽出するJCLがありますが、1000件以上のキーを処理する必要があります。1000個のJCLを作成するのは現実的ではないため、1つのJCLでパラメータを書き換えて実行する方法を探しています。しかし、マニュアルにはそのような使い方についての情報がありません。JSS3ではUNIXのシェルのような方法は使えないのでしょうか?
  • VOS3のJSS3 JCLを使用して、外部パラメータを利用する方法を知りたいです。現在、1つのJCLでキーを指定してデータを抽出していますが、1000件以上のキーを処理する必要があります。1000個のJCLを作成することは非現実的であり、1つのJCLでパラメータを書き換えて実行する方法を探しています。しかし、マニュアルにはそのような使い方についての情報がありません。JSS3ではUNIXのシェルのような方法は使用できないのでしょうか?
  • VOS3のJSS3 JCLで外部パラメータを使用する方法について教えてください。1つのJCLでキーを指定してデータを抽出する処理がありますが、1000件以上のキーを処理する必要があります。このような場合、1つのJCLでパラメータを書き換えて実行する方法を探していますが、マニュアルにはそのような情報がないようです。JSS3ではUNIXのシェルのような方法は使用できないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.3

>大変失礼ですが、もう少しお付き合い願います。 いいですよ。メインフレームの情報をネットで得るのは難しいですからね。もし、mixiをおやりなら「汎用機」というコミュニティーがあります。 //P PROC から // PEND までが普通の言語で言う関数定義・サブルーチン定義にあたります。// EXEC P が関数・サブルーチン呼び出し。その次の行が//SYSIN DD * の実引数に当たります。全部あわせてJCLです。 実行は、#SUB です。 >もし具体的な手法をお持ちでしたら、こちらもご教示願えれば幸いです。 例えば、COBOL(じゃなくてもいいですが)でJCLをSYSOUTに書き出すプログラムを書いて、 // EXEC PGM=MAKEJCL //STEPLIB DD DSN=MYLIB.LOAD,DISP=SHR //SYSIN DD * キー1 キー2 キー3 ・・・ //SYSOUT DD SYSOUT=(*,INTRDR) (,INTRDR)というのがSUBMIT機能に当たります。まあ、一旦ファイルに書いて、ASPENで開いて確認後に#SUBしたほうがいいかも。 プログラムとしては、 0.ファイルオープン 1.SYSINから1行読む EOF なら4へ 2.DISPLAYかWRITEで1ジョブ分のJCLをSYSOUTに書き出す。途中に1で読んだデータを挿入 3.1へもどる 4.ファイルクローズ 私は、unixだとawkやperlを使うようなケースではPL/Iを使ってました。

a_pa558523
質問者

お礼

回答ありがとうございます!。 ご教示いただいたサブルーチン方式で行ってみます。 大変勉強になりました。ご助力、有難うございます。 ##ちなみに・・。 JCLを作るJCLって発想は好きです(私もUnix、Windows系では awkを活用しています)。ところが、本番環境では簡単にプログラムを つくるわけにもいかず、公共のユーティリティを駆使する必要があります。 (INTRDRの使用も厳禁なんですよ・・これが使えれば、awkで作って ftpで直接実行!なんて荒業も使えるんですけどねぇ。)

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.2

コマンドプロシジャーじゃなくて、カタログドプロシジャ、ないし、ジョブストリームプロシジャです。 //P PROC // EXEC PGM=ppppp //STEPLIB DD DSN=qqqqqq,DISP=SHR //OTHERDD DD DSN=rrrrrr,DISP=SHR //SYSPRINT DD SYSOUT=* //PARAM DD DDNAME=SYSIN // PEND //S001 EXEC P hogehoge //S002 EXEC P sogesoge //S003 EXEC P horehore こんな感じでできませんか?1JOBの最大STEP数には制限があったはずなので、1JOB1000STEPは確かだめなんでジョブはいくつかに分割する必要があります。 >JCLを起動するJCLっていうのがあればいいのかなぁ。 そういう手も良く使いますね。

a_pa558523
質問者

補足

回答ありがとうございます。 しばらく、マニュアル等で調べてみましたが、まだ理解しきれていません。 マシン上でのテストはできていませんが、追加質問させてください。 1.上記の例では「//P PROC 」から「P END」までがJCL部分。 以降の //S001 EXEC P hogehoge がJCL名Pを個別に実行する部分と理解しました。また、hogehogeは、DDNAME=SYSIN でJCLに渡されると認識してよいのでしょうか?。 たしかに、これでも対応は可能と考えます。(ちなみに、当該テキストイメージは JCL格納用のLIMEに、JCLと同じように保存されていれば、これを開いて #SUB で実行できると思って良いでしょうか?(#EXECじゃないですよね) >そういう手も良く使いますね。 もし具体的な手法をお持ちでしたら、こちらもご教示願えれば幸いです。 大変失礼ですが、もう少しお付き合い願います。

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.1

「パラメータでキーを与える」とは、EXECのPARMですか? それなら、プロシジャーにして、 // EXEC P,PARM='ABC001' // EXEC P,PARM='ABC002' のようにすればいいと思います。プロシジャーの意味がわからなければ、その「データを1件抽出するJCL」をここに書いてみてください。

a_pa558523
質問者

補足

早速の回答ありがとうございます。 パラメータはDD文で与えます。 イメージ的には、 //EXCEC ABC //PARAM DD * hogehogehogehoge /* で、hogehoge...の部分がキーを記述する部分になります。 ##該当のツールが複数行のキーを受け付けてくれればいいのですが ##ここが、1行しか記述できないんですよ。 ちなみに、使用している環境では「コマンドプロシジャ」は確か 許していなかったと思います。 JCLを起動するJCLっていうのがあればいいのかなぁ。