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

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に置き換えることができるようになっています。

    EXPORTステートメント

    EXPORTステートメントは、JCL シンボルをジョブ・ステップのプログラムで使用できるようにします。SYMLISTパラメーターで、どのJCLシンボルをEXPORTするか指定します。SYMLIST=*は、全てのJCLシンボルをEXPORTすることを意味します。

    SYMBOLSパラメーター

    DD * ステートメントのSYMBOLSパラメーターは、JES2に対してストリーム内データ内のJCLシンボルの置換をするよう指示するものです。SYMBOLS=JCLONLYは、EXPORTステートメントによって使用可能にされたJCLシンボルを置換することを意味します。

    EXPORTステートメント、DD * ステートメントの詳細は、マニュアル「z/OS MVS JCL解説書」(SA88-7091)を参照して下さい。

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