COBOL2002 言語 拡張仕様編


22.9.3 COBOLのプログラム内で使用する例

        IDENTIFICATION DIVISION.
        PROGRAM-ID. TESTPROG.
        ENVIRONMENT DIVISION.
          CONFIGURATION SECTION.
            SPECIAL-NAMES.
             DYNAMIC LENGTH STRUCTURE C-STRING IS C-STATIC-STRUCTURE.
        DATA  DIVISION.
          WORKING-STORAGE SECTION.
            01  FIXDATA   PIC  X(20).
            01  DYNADATA    PIC  X  DYNAMIC LENGTH  C-STRING  LIMIT  20.
            01  DYNADATA-N  PIC  N  DYNAMIC LENGTH  C-STRING  LIMIT  5.
        PROCEDURE DIVISION .
          MOVE 'error 01' TO DYNADATA.  *> 空白詰めは行わない
          DISPLAY  DYNADATA.   *>  長さ8のメッセージを表示する。
 
          MOVE 'err 02' TO DYNADATA.
          DISPLAY  DYNADATA.   *>  長さ6のメッセージを表示する。DYNADATAのサイズが変わる
 
          INITIALIZE  DYNADATA.   *> INITIALIZE文を実行すると動的長基本項目の長さは0になる
 
          MOVE 'error 0003' TO DYNADATA.
          DISPLAY  DYNADATA.   *>  長さ10のメッセージを表示する
 
          MOVE DYNADATA  TO FIXDATA.  *> 動的長基本項目が送り出し側となる例
          *> DYNADATAは長さ10であるため,長さ10の固定項目を転記する場合と同等
 
          MOVE 'error 0003' TO FIXDATA .
          DISPLAY  FIXDATA.    *>  長さ10+空白10のメッセージを表示する
 
          IF DYNADATA = FIXDATA THEN  *> DYNADATAは'error 0003'を格納した長さ10の固定項目と
              DISPLAY 'MATCH'         *> 同等のため,'MATCH'となる
          END-IF.
 
          MOVE FIXDATA  TO DYNADATA.  *> 埋字の空白も転記され,DYNADATAは長さ20となる
          MOVE  FUNCTION TRIM(FIXDATA) TO DYNADATA. *> 空白を取る場合はTRIM関数を併用する
 
          MOVE '12345678901234567890ABC' TO DYNADATA.  *> LIMIT 20のため送り出し側の
                                                       *> 先頭20バイトしか格納されない
 
          MOVE  N'あいう'  TO  DYNADATA-N.             *>  空白詰めは行わない
          MOVE  N'あいうえおかきく'  TO  DYNADATA-N.   *>  N'あいうえお' が格納される
          INITIALIZE  DYNADATA-N.                      *>  初期化され,長さは0になる