COBOL2002 使用の手引 手引編


10.4 環境変数へのアクセス

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

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

〈この節の構成〉

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

DISPLAY文(環境変数名の設定)の形式
DISPLAY {一意名4|定数1} UPON 呼び名3※1
        〔END-DISPLAY〕
ACCEPT文(環境変数の値の取得)の形式
ACCEPT 一意名2 FROM 呼び名4※2
       〔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)を設定できます。