COBOL2002 言語 拡張仕様編


22.4.2 DYNAMIC LENGTH STRUCTURE句

一般形式
DYNAMIC LENGTH STRUCTURE 動的長構造名1 IS 物理構造名1

構文規則

  1. 物理構造名1は,動的長基本項目に対する物理的な構造を指定する。

    このシステムでは物理構造名1はC-STATIC-STRUCTUREとする。それ以外の名前は指定できない。

    C-STATIC-STRUCTUREによって定義される構造は次のとおりである。

    • データが終端文字で終わる。内部的には最大長+1文字の領域を確保する。なお,終端文字は,英数字項目の場合X'00',日本語項目の場合X'0000'となる。

    • DYNAMIC LENGTH句のLIMIT指定の値,または最初に格納されたデータの長さを上限として動作する。LIMIT指定がある場合はLIMIT指定の値が優先される。上限以上の長さのデータを転記しても動的に拡張されず,転記時に切り捨てられる。

(例)

DYNAMIC LENGTH句のLIMIT指定が4の場合,4+1文字の領域が確保される。この領域に3バイト文字が格納されると残りの領域に終端文字が入る。

[図データ]

最初に格納されたデータには次の二つのケースがある。

  • 作業場所節で動的長基本項目が定義され,かつVALUE句で初期値を与えた場合は,VALUE句に指定した定数の長さが上限となる。

  • ほかの言語から終端文字(X'00')で終わる文字列が渡された場合は,ほかの言語で渡された領域に格納されているデータの長さを上限とする。

VALUE句の指定がない作業場所節の動的長基本項目は,最左端から最大長+1の領域を終端文字で初期化する。

一般規則

  1. C-STATIC-STRUCTUREに指定した動的長構造名1で定義されるデータの終わりには終端文字が入る。

    英数字項目の終端文字はX'00',日本語項目の終端文字はX'0000'となる。

    英数字項目または日本語項目の終端文字は,このシステムが設定する。

    なお,C言語から字類が日本語の動的長基本項目に文字列を渡す場合も,データの終わりがX'0000'でなければならない。また,字類が日本語の動的長基本項目では文字列の先頭から2バイトずつX'0000'を探すため,C言語から渡すデータに1バイト文字が混在してはならない。

  2. DYNAMIC LENGTH STRUCTURE句を指定したプログラムに-H8Switchオプションは指定できない。