dポイントプレゼントキャンペーン実施中!

OS390でJCLを組んでいますが。
JCLでのプロシージャの変数設定について質問です。

//PRC PROC AFT=
//*-----------------------------------------------
//S01 EXEC PGM=ICEGENER
//SYSUT1 DD DSN=TEST,DISP=SHR
//SYSUT2 DD DSN=TEST.&AFT,DISP=(,CATLG)・・・・
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
// PEND
//*===============================================
//S002 EXEC PRC,AFT=01

この例ですと&AFTが'01'に置き換えられると思いますが、
&AFTのパラメータにデータセット内の値を設定することは
可能でしょうか?例えばS002以前のステップである
データセットをカタログしているとして
置き換えパラメータをカタログしたデータセットの
1レコード目と指定したいのです。
そこに'01'と入っていれば'01'に
'02'と入っていれば'02'に置き換えてくれるプロシージャを
作成したいのですが、上手くいかずに悩んでいます。

ご存知の方がいらっしゃいましたら、ご教授お願い致します。

A 回答 (2件)

出来ないです。


普通は動的にJCLを生成して実行することになります。
ユーティリティだけでJCLを生成することも出来ますが、非常に複雑になるので、COBOLやPL/Iなどでデータセットを読んでJCLを書き出す処理をつくるのがいいでしょう。JCLを、SYSOUT=(,INTRDR)に書き出すと実行されます。

別のやり方として、一旦、固定のデータセット名で作っておいて、アクセスメソッドユーティリティ(PGM=IDCAMS)のリネーム機能で望みのデータセット名に付け替えるというのも考えられます。これだとJCLを動的に作る必要が無くて、COBOLやPL/IでIDCAMSのSYSINを作ればいいです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
大変参考になりました。
IDCAMSのリネームを試してみたいと思います。

お礼日時:2008/06/04 01:20

こんにちわ。



JCLなんてもうずいぶん前のことなので不確実ですが、私が知る限り、JCLのEXITルーチンを作成していた頃の記憶によると、無理かな~。

ご質問の内容から解釈すると、「以前に作成されたデータセットを読み、そのデータセットの1レコード目の値を、JCLで参照したい」ということになりますが、この解釈方法だと無理だと思います。

もし、このようにされたいのであれば、プログラム(作成要)でデータセットを読み込み、1レコード目の値を参照たJCLをプログラムで作成し、インターナルリーダーに送る必要があるかと思います。
さもなければ、OSのリーダーEXITルーチンを作成し、リーダーキューにスタックされる前に、前記の処理を行いJCLを加工する必要があるかと思います。

(「カタログプロシージャのあるステートメント全体(SYSUT1など)を変更したい」ということなら可能ですが)

■補足■
とにかくマニュアルやドキュメントがなく、記憶だけの返答となっていますので・・・「と思う」になってしまい申し訳ありません。
    • good
    • 0
この回答へのお礼

助かります。
マニュアル等は読み漁ってみたのですが、やはり無理ですか。
プログラム作成は案としてあったのですが、
工数の兼ね合いで何か良い方法があればと質問させていただきました。
ご回答ありがとうございました。

お礼日時:2008/06/04 01:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!