10.4 環境変数へのアクセス

ACCEPT文,DISPLAY文を使用して,環境変数の値を取得・設定する方法について説明します。

環境変数のアクセスについては,マニュアル「COBOL2002 言語 拡張仕様編 10. コマンド行のアクセス」を参照してください。

<この節の構成>
(1) 環境変数の値の読み込み
(2) 環境変数への値の書き出し
(3) 環境変数へのアクセスに関する規則
(4) 使用例

(1) 環境変数の値の読み込み

DISPLAY文(環境変数名の設定)の形式

DISPLAY {一意名4|定数1} UPON 呼び名3※1
       〔END-DISPLAY〕

ACCEPT文(環境変数の値の取得)の形式

ACCEPT 一意名2 FROM 呼び名42
      〔ON EXCEPTION 無条件文3〕
      〔NOT ON EXCEPTION 無条件文2〕
      〔END-ACCEPT〕

注※1
呼び名3は,環境部の特殊名段落で,ENVIRONMENT-NAMEに関連づけておく必要があります。
注※2
呼び名4は,環境部の特殊名段落で,ENVIRONMENT-VALUEに関連づけておく必要があります。

(2) 環境変数への値の書き出し

DISPLAY文(環境変数名の設定)の形式

DISPLAY {一意名4|定数1} UPON 呼び名3※1
       〔END-DISPLAY〕

DISPLAY文(環境変数の値の書き出し)の形式

DISPLAY {一意名2|定数2} UPON 呼び名4※2
       〔ON EXCEPTION 無条件文1〕
       〔NOT ON EXCEPTION 無条件文2〕
       〔END-DISPLAY〕

注※1
呼び名3は,環境部の特殊名段落で,ENVIRONMENT-NAMEに関連づけておく必要があります。
注※2
呼び名4は,環境部の特殊名段落で,ENVIRONMENT-VALUEに関連づけておく必要があります。

(3) 環境変数へのアクセスに関する規則

(4) 使用例

実行時の環境変数指定

CBLABNLST=/tmp/abnlst
CBLDDUMP=/tmp/dumplst

プログラム例1
環境変数へのアクセス例を次に示します。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. SAMPLE1.
      ENVIRONMENT DIVISION.
      CONFIGURATION SECTION.
      SPECIAL-NAMES.
      ENVIRONMENT-NAME IS ENVNAM
      ENVIRONMENT-VALUE IS ENVVAL.
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      01 ENVNAME1 PIC X(9).
      01 ENVNAME2 PIC X(8).
      01 ENVDATA PIC X(20).
      PROCEDURE DIVISION.
          :
          MOVE 'CBLABNLST' TO ENVNAME1.
          DISPLAY ENVNAME1 UPON ENVNAM.  …1.
          ACCEPT ENVDATA FROM ENVVAL     …2.
              ON EXCEPTION ~
              :
              NOT ON EXCEPTION ~
              :
          END-ACCEPT.
          :
          MOVE 'CBLDDUMP' TO ENVNAME2.
          MOVE '/tmp/dumplst2' TO ENVDATA.
          DISPLAY ENVNAME2 UPON ENVNAM.  …3.
          DISPLAY ENVDATA UPON ENVVAL    …4.
              ON EXCEPTION ~
              :
              NOT ON EXCEPTION ~
              :
          END-DISPLAY.
          :

  1. 値を取得したい環境変数名(CBLABNLST)を指定します。
  2. 1.で指定した環境変数(CBLABNLST)の値(/tmp/abnlst)を取得します。
  3. 値を設定したい環境変数名(CBLDDUMP)を指定します。
  4. 3.で指定した環境変数(CBLDDUMP)に値(/tmp/dumplst2)を設定します。
プログラム例2
環境変数へのアクセスがプログラム間にわたる場合の,環境変数の値の取得例を次に示します。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. SAMPLE1.
      ENVIRONMENT DIVISION.
      CONFIGURATION SECTION.
      SPECIAL-NAMES.
      ENVIRONMENT-NAME IS ENVNM.
                 :                
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      01 ENVNAME PIC X(9).
      PROCEDURE DIVISION.
                 :
          MOVE 'CBLABNLST' TO ENVNAME.
          DISPLAY ENVNAME UPON ENVNM.   …1.
                 :
          CALL 'SAMPLE2'.
                 :


      IDENTIFICATION DIVISION.
      PROGRAM-ID. SAMPLE2.
      ENVIRONMENT DIVISION.
      CONFIGURATION SECTION.
      SPECIAL-NAMES.
      ENVIRONMENT-VALUE IS ENVVAL.
          :        
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      01 ENVDATA PIC X(20).
      PROCEDURE DIVISION.
          :
          ACCEPT ENVDATA FROM ENVVAL  …2.
                 ON EXCEPTION ~
                 :                
                 NOT ON EXCEPTION ~
                 :
          END-ACCEPT.
          :

  1. 値を取得したい環境変数名(CBLABNLST)を指定します。
  2. 1.で指定した環境変数(CBLABNLST)の値(/tmp/abnlst)を取得できます。
プログラム例3
環境変数へのアクセスがプログラム間にわたる場合の,環境変数の値の設定例を次に示します。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. SAMPLE1.
      ENVIRONMENT DIVISION.
      CONFIGURATION SECTION.
      SPECIAL-NAMES.
      ENVIRONMENT-NAME IS ENVNM.
                 :
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      01 ENVNAME PIC X(9).
      PROCEDURE DIVISION.
                 :
          MOVE 'CBLABNLST' TO ENVNAME.
          DISPLAY ENVNAME UPON ENVNM.  …1.
                 :
          CALL 'SAMPLE2'.
                 :


      IDENTIFICATION DIVISION.
      PROGRAM-ID. SAMPLE2.
      ENVIRONMENT DIVISION.
      CONFIGURATION SECTION.
      SPECIAL-NAMES.
      ENVIRONMENT-VALUE IS ENVVAL.
          :
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      01 ENVDATA PIC X(20).
      PROCEDURE DIVISION.
          :
          MOVE '/tmp/abnlst' TO ENVDATA.
          DISPLAY ENVDATA UPON ENVVAL  …2.
                  ON EXCEPTION ~
                  :
                  NOT ON EXCEPTION ~
                  :
          END-DISPLAY.
          :

  1. 値を設定したい環境変数名(CBLABNLST)を指定します。
  2. 1.で指定した環境変数(CBLABNLST)に(/tmp/abnlst)を設定できます。