プロシージャー内のSYSINデータを記号パラメーターで変更する

By 神居 - Posted: 2019/05/01 Last updated: 2019/05/01 - Leave a Comment

z/OS V1R13からは、プロシージャー内に直接ストリーム内データセット(SYSINデータ)を定義できるようになっています。さらに、z/OS V2R1からは、ストリーム内データセット(SYSINデータ)内でも記号パラメーターによるデータの置換ができるようになっています。これらは、昔からみんなが「出来たらとても便利なのに…」という機能の代表的なものと言えます。
元々のMVSとJES2の組み合わせでは出来なかったことなので、現在でも、プロシージャー内であるが故にDD * としたい数行のデータを別メンバーとして登録したり、SYSINデータをプロシージャー内ではなく呼び出すJCL側で定義して、データの一部をエディターで変更してからサブミットしたり、といったことを行っているかも知れません。
しかし、新しくサポートされた(と言っても5年くらいは前ですが)これらの機能はJCLの作成や運用をとても便利にします。ぜひとも覚えて、実務に応用していただければ、と思います。


サンプルJCLとプロシージャー

プロシージャー化しているのは、AMSのREPROによるVSAMデータセットのアンロード処理です。プロシージャーVSAMUNLDの呼び出し時に、入力データセット名を記号パラメーター(JCLシンボル)&DSで渡しています。プロシージャー内では記号パラメーター&DSを、SYSUT2 DDステートメントのDSNパラメーターとSYSIN DD *で定義しているストリーム内データの中にあるIDS(&DS)の部分で使っています。ここの&DSの箇所も実際のDSNに置き換えることができます。
従来であれば、ストリーム内データの中で記号パラメーターを使っても、このサンプルであれば、ただの文字「&DS」としてしかユーティリティーには渡りませんでした。しかし、このサンプルのようにEXPORTステートメントとDD *ステートメントのSYMBOLSパラメーターを指定することで、&DSの部分が「TRU1.CUSTOMER」のように実際のDSNに置き換えることができるようになっています。

サンプルではストリーム内プロシージャーを使用していますが、カタログ式プロシージャーでも勿論使用することができます。

Posted in ありがたいサンプルJCL • • Top Of Page