2016-06-19 29 views
0

JCLのDD名と一緒に指定された物理DSN名が、ZOSのファイルを処理する通常の方法です。JCLの環境変数の指定

しかし、FILE CONTROLに変数DD名を指定し、SETENVを使用してプログラム内でDSNを設定することもできます。例: How to set environment variables and dynamic file declaration

JCLを使用して環境変数を設定し、GETENVを使用してプログラム内の外部変数にアクセスする方法はありますか(LinuxのEXPORTまたはWindowsのSETと同様)。

+0

私があなたが尋ねていると思っていることを尋ねているのであれば、いいえ、あなたが尋ねていると思っていることを聞いていないなら、質問を明確にしてください。覚えておいてください、あなたはあなたが何を意味しているかを知っています。あなたが質問していると思うことは、 "SETENV(または何か他のもの)を使ってJCLシンボルを変更できますか?その**があなたの質問であれば答えはいいえです。JCLストリーム全体が"変換/解釈 "(CI)処理の準備の一環として、処理の一部ではなく、あなたのJOBが始まるまでにJCLはもはや存在しないので、何も変更することはできません。 –

+0

これはタイプミスでした。 、 – cobp

+2

ああ、私はGETENVを使って、すでに議論されているPARMの代わりにJCLシンボルの解決された値を自分のプログラムに入れることはできますか? –

答えて

1

環境変数_CEE_ENVFILEを使用して、環境変数を設定するためのDDまたはデータ・セット名を指定できます。私は、CLEランタイム関数であるGETENVを使用することは、SETENVを使用するのと同じように簡単だと仮定します。

PARM=('ENVAR("_CEE_ENVFILE=DD:STDENV")/') 
+0

しかし、GETENVがCOBOLプログラムで正しく動作するかどうかは疑問です。文字のポインタを返すときにCラッパーが必要ですか? – cobp

+0

CEEENVは、COBOL https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.ceea300/clcenv.htmから環境変数を取得/設定するためのより優れたインターフェースです。 –

+0

私たちのサイトのZosバージョンはずっと古いので、CEEENVは利用できません。しかし、GETENVへのCラッパー(2つのパラメーター付き)は適切に動作します。 – cobp

1

あなたがEXPORT編JCLシンボルの値を取得するためにCEEGTJS言語環境(LE)呼び出し可能サービスを使用することができます。

私はz/OSでプログラミングする人には、Language Environment (LE) Callable Servicesに慣れ親しむことをお勧めします。 LE呼び出し可能サービスは、z/OSの一部であり、C、C++、COBOL、PL/I、およびアセンブラで書かれたすべてのアプリケーションで使用可能で、documented restrictionsに従います。

+0

私が使用しているZosのバージョンが古すぎるので、このソリューションは私には適していません。ありがとう。 – cobp