COBOL2002 ユーザーズガイド

[目次][用語][索引][前へ][次へ]

28.7.2 スレッドごとに環境変数を設定する機能

マルチスレッド対応COBOLプログラムでは,環境変数へのアクセス機能を使えば,スレッドごとに環境変数の値を設定・取得できます。環境変数へのアクセス機能の詳細については,「10.4 環境変数へのアクセス」を参照してください。

規則
  • 環境変数の値を設定・変更した場合,その値は実行スレッド内だけで有効となります。
  • 同一の環境変数に対して,スレッドごとに別々の値を設定できます。
  • 設定した環境変数は,COBOL以外のプログラムで使用できません。また,PATHなどのシステム環境変数や,COBOL2002以外が管理する環境変数の値を設定・変更しても有効になりません。
  • この機能を使って,「28.7.1 スレッドごとに固有の出力ファイル名称を付ける機能」で示した環境変数を設定した場合,この機能が優先され,出力ファイル名にスレッド識別子は付けられません。
    マルチスレッド対応COBOLプログラムで環境変数へのアクセスを使用した場合,内部的に環境変数名にスレッド識別子の値を付けた環境変数名で値を登録および取得します。
    スレッド識別子が1000で環境変数CBLABNLSTを設定する例を次に示します。
(例)
マルチスレッド対応COBOLプログラムで,CBLABNLST=a.txtを設定したとき,次のように環境変数を登録および取得します。
  1. スレッド識別子を付けた環境変数名を使用して,「CBLABNLST_1000=a.txt」を値に登録します。
  2. マルチスレッド対応COBOLプログラムで,環境変数を取得する場合,次の順序で環境変数名をアクセスし,取得した値を返します。
    1. スレッド識別子を付けた環境変数名(CBLABNLST_1000)
    2. スレッド識別子を付けない環境変数名(CBLABNLST)
このため,環境変数の値をクリアせずにCOBOLプログラムの実行を終了し,あとで同じスレッド識別子のスレッドでCOBOLプログラムが動作した場合,そのスレッドで環境変数を設定していなくても,以前のスレッドで設定した環境変数の値が取得されます。
 
注※
 COBOLの環境変数へのアクセスのDISPLAY文でNULL値を設定することで,環境変数の設定を取り消せます。この場合,取り消せる環境変数は,スレッド識別子を付けた環境変数(CBLABNLST_1000)となります。そのあとで環境変数へのアクセス機能で環境変数の値の読み込みを行った場合,COBOLはスレッド識別子を付けない環境変数名(CBLABNLST)にアクセスし,取得した値を返します。