COBOL2002 言語 拡張仕様編


22.1 動的長基本項目とは

動的長基本項目(dynamic-length elementary item)は,DYNAMIC LENGTH句の定義により,英数字項目または日本語項目の長さを実行時に変えることができるデータ項目である。

動的長基本項目を記述したプログラム例を次に示す。

IDENTIFICATION  DIVISION.
  PROGRAM-ID.   SAMPLE00.
ENVIRONMENT DIVISION.
  CONFIGURATION SECTION.
    SPECIAL-NAMES.
      DYNAMIC LENGTH STRUCTURE C-STRING IS C-STATIC-STRUCTURE.
        *> 動的長構造名を"C-STRING"として定義する。
DATA DIVISION.
  WORKING-STORAGE  SECTION.
    01  DYNAMICDATA  PIC X DYNAMIC LENGTH C-STRING  LIMIT 20.
      *> 格納できる文字列の最大長を20とした,英数字の動的長基本項目を定義する。
PROCEDURE     DIVISION.
  MOVE 'abc' TO DYNAMICDATA.
    *> DYNAMICDATAに文字列'abc'が格納され,そのデータ長は3バイトとなる。
    *> 文字列'abc'の後ろに終端文字(X'00')が設定される。
  MOVE 'abcdef' TO DYNAMICDATA.
    *> DYNAMICDATAに文字列'abcdef'が格納され,そのデータ長は6バイトとなる。
    *> 文字列'abcdef'の後ろに終端文字(X'00')が設定される。
    *> DYNAMICDATAは,C言語など他言語へ渡す文字列として使用できる。

動的長基本項目は格納する値によって長さが変わるため,データ項目の長さが非常に長くなるおそれがある。そのため,LIMIT指定により,動的長基本項目の最大長を定義できる。また,動的長基本項目に新しい値が格納されたとき,項目の長さは自動的に調整される。

なお,動的長基本項目は,動的長基本項目に新しい値が格納された時点での同じ長さを持つ固定長のデータ項目と同様に扱う。

ここでは,動的長基本項目が指定できる構文や規則について説明する。

なお,この章で記載のない構文規則および一般規則については,特に断り書きがない限り,マニュアル「COBOL2002 言語 標準仕様編」を参照のこと。