• 検索結果がありません。

単位ジョブ間で情報を引き継ぐ

ドキュメント内 <基本操作ガイド> (ページ 98-101)

4.2. 実行部品

4.2.3. 単位ジョブ間で情報を引き継ぐ

4.2.3.1. 後続ジョブへのパラメータ引き継ぎ(変数継承)

同一ルートジョブネットワーク内であれば、フロー上の任意の単位ジョブ、任意のサブジョブ ネットワーク内の単位ジョブの間で、変数継承機能により環境変数の値を引き継ぐことができま す。

引き継ぐ値は単位ジョブの「出力結果」または「エラー出力結果」に特定のフォーマットで出力 し、JobCenterに引き継ぐ値であることを認識させる必要があります。この値は後続のすべての単 位ジョブの環境変数に設定されます。

1. [単位ジョブパラメータの設定]ダイアログの[結果]タブで、変数継承を「STDOUT」また は「STDERR」に設定します。「STDOUT」を選択すると単位ジョブの「出力結果」タブの情報 を参照し、「STDERR」を選択すると単位ジョブの「エラー出力結果」タブの情報を参照しま す。

2. 単位ジョブの「出力結果」(または「エラー出力結果」)から、次の形式で出力されている部分 を選択して読み取ります。

EXPORTVAR VAR1=VAL1 VAR2=VAL2 VAR3=

VAR4VAR5:VAL5 EXPORTVAR

3. 上記の最初のEXPORTVAR行の次の行から再度EXPORTVARが現れるまでの間の行について、

「VAR=value」の形式の行を「環境変数VARにvalueを設定する」と解釈して後続の単位ジョブ に引き継ぎます。

上記の例ですと、後続の単位ジョブでは環境変数VAR1には「VAL1」という値が、VAR2には

「VAL2」という値が設定され、VAR3にはNULL値が設定されて引き継がれます。環境変数 VAR4は後続の単位ジョブでは削除されます。また、VAR5:VAL5の行は形式が異なるため解釈 されません。

4. 次のようにEXPORTVARが複数回出力されている場合、奇数個目のEXPORTVAR~偶数個目の EXPORTVARではさまれた行が解釈の対象になります。

EXPORTVAR VAR1=VAL1 EXPORTVAR VAR2=VAL2

EXPORTVAR VAR3=VAL3 EXPORTVAR

上記の場合、VAR1とVAR3について値が引き継がれ、VAR2については無視されます。

なお最後の偶数個目のEXPORTVARが無い場合は、最後の奇数個目のEXPORTVAR以下の行が全 て解釈の対象となります。

■使用例(UNIX)

JOB1のパラメータで[結果]タブの変数継承を「STDOUT」に設定し、後続のJOB2で参照す る。

▪ JOB1のスクリプト ...

echo EXPORTVAR echo VAR1=12345 echo VAR2=321 echo EXPORTVAR

▪ JOB1の「出力結果」タブ ...

EXPORTVAR VAR1=12345 VAR2=321 EXPORTVAR

▪ JOB2のスクリプト env | grep VAR

▪ JOB2の「出力結果」タブ ...VAR1=12345

VAR2=321 ...

■使用例(Windows)

JOB1のパラメータで[結果]タブの変数継承を「STDOUT」に設定し、後続のJOB2で参照す る。

VAR2=321 EXPORTVAR

▪ JOB2のスクリプト echo %VAR1%

echo %VAR2%

▪ JOB2の「出力結果」タブ 12345

321

4.2.3.2. ジョブ別パラメータ

変数継承機能により先行単位ジョブから環境変数の値を設定できますが、さらに環境変数 NSJNW_PARAMに関しては単位ジョブごとに異なる値を設定できます。この場合は引き継ぐ値を

「NSJNW_PARAM(ジョブ識別子)=値」の形式で指定します。

異なる複数の単位ジョブに異なる値を引き継ぐ指定は、複数行を使って指定します。ジョブ識別 子には単位ジョブ名、サブジョブネットワーク名、またはそれらを「: (コロン)」で連結したもの を指定します。これらの識別子に単位ジョブの階層パスの一部が一致した場合に、その単位ジョ ブのパラメータと認識されます。

複数の識別子が一致した場合にはEXPORTVAR出力中で最後に一致した値を使用します。

■使用例(UNIX)

▪ JOB1の「出力結果」タブ EXPORTVAR

NSJNW_PARAM(JOB2)=123 NSJNW_PARAM(SUBJNW1)=67 89

NSJNW_PARAM(SUBJNW1:JOB2)="aa bb"

EXPORTVAR

▪ 後続のJOB2に引き継がれた値 NSJNW_PARAM=123

▪ 後続のSUBJNW1のJOB1,JOB3,JOB4…に引き継がれた値 NSJNW_PARAM=67 89

▪ 後続のSUBJNW1のJOB2のみに引き継がれた値 NSJNW_PARAM="aa bb"

単位ジョブ間の変数継承の注意事項

■EXPORTVARを記述する先行単位ジョブは正常終了している必要があります。異常 終了した場合、変数継承は行なわれませんので注意してください。

■EXPORTVAR~EXPORTVARの間で処理が止まったりしないように単位ジョブスク リプトの処理を記述してください。もし不完全な形式で「出力結果」(または「エ ラー出力結果」)に出力されると正しく解釈できず、思わぬ値が引き継がれたり、引

特にdaemon.confでNQSDAEMON_OPTにtrkappend=ONが設定されている場合は 注意してください。(<環境構築ガイド>の「5.2.1 Windows/UNIX共通」(2) NQSDAEMON_OPT」を参照)

■EXPORTVAR~EXPORTVARの出力行は単位ジョブの「出力結果」(または「エラー 出力結果」)に最終的に記録されたものが解釈されるため、単位ジョブスクリプトに 直接echo文で記述するほか、ユーザコマンドやシェル/バッチスクリプトの出力で も解釈可能です。

■LANG, HOME, LOGNAME, USER, TZ, ENVIRONMENTQSUB, NSJNWで始まる変数名 は使用できません。ただし、NSJNW_PARAMは設定できます。

■「標準出力先」や「標準エラー出力先」を任意のファイルに変更した場合は値を引 き継げません。単位ジョブパラメータの「変数継承」を適切に設定し、出力先ファ イルを設定していない方の出力先に対して値を出力するようにしてください。

(「4.2.2.3 [結果]タブ」を参照)

■ジョブネットワークに親子関係がある場合、同一ルートジョブネットワークの範囲 内では、同じ変数名を使用できません。もし同一変数名を使用した場合は、後から 変数継承を設定した値で上書きされます。

■「出力先」「エラー出力先」に改行以外のコントロールコード、またはユーザ設定 と異なる漢字コードが含まれた場合には正常に動作しません。

■先行単位ジョブ内で設定した変数を後続単位ジョブ内で変更している場合、その中 間からトラッカを再実行しても変数は元に戻らず、後続単位ジョブが変更した値の ままとなります。

■Windows版で変数継承を行う場合は、不要なコマンド行が出力結果(またはエラー 出力結果)に出力されないよう、最初のecho EXPORTVAR行の前に必ずecho offを 設定してください。

■EXPORTVARで引き継ぐ環境変数名の長さは最大51バイトまでです。

■「変数名=値」の出力結果として許容される1行のサイズは最大1023バイトまでで す。

■環境変数の個数・合計サイズはOS環境によって制限があります。詳細は<環境構築 ガイド>の14章 「ジョブ実行時の環境変数の取り扱い」 を参照ください。

ドキュメント内 <基本操作ガイド> (ページ 98-101)