COBOL2002 使用の手引 手引編


5.3.1 STRING文

STRING文は,幾つかのデータ項目の内容の一部または全部をつなぎ合わせて,一つのデータ項目に移します。

STRING文については,マニュアル「COBOL2002 言語 標準仕様編」 「10.8.47 STRING文」を参照してください。

STRING文の例を次に示します。

(例1)

受け取り開始位置を指定しない(POINTER指定のない)STRING文

  • 三つのデータ項目AA,BB,CCのデータの一部または全部を取り出して,文字列を作成します。

  • データ項目AAにはコンマ(,),BBにはセミコロン(;),CCには空白( )がデータの区切り文字として入っていて,区切り文字までのデータを取り出して文字列を作成します。

[図データ]

このSTRING文を実行すると,次のようにデータを転記します。なお,文中のかたかなは,半角かたかな文字を表します。

[図データ]

  1. AAのデータを,コンマ(,)の直前までMSG-01に転記します。

    '12345'

  2. 英数字定数''を,1.に続けて転記します。

    '12345'

  3. BBのデータを,セミコロン(;)の直前まで,2.に続けて転記します。

    '12345 CHECK OK'

  4. 英数字定数'デス。'を,3.に続けて転記する。

    '12345 CHECK OKデス。'

  5. CCのデータを,空白( )の直前まで,4.に続けて転記します(CCのデータの区切り文字は空白で,セミコロンはデータの一部です)。

    '12345 CHECK OKデス。 READY;'

    MSG-01の残りの部分の内容は変更されません。

(例2)

受け取り開始位置を指定する(POINTER指定のある)STRING文

  • データ項目D1,D2,D3,D4のデータの一部または全部を取り出し,MSG-02の領域がいっぱいになるまで転記して文字列を作成します。

  • MSG-02がいっぱいかどうかの判定には,OVERFLOW指定を使用します。

  • 送り出し側作用対象のデータ項目からは,先頭から最初の空白の直前までのデータを取り出します。

  • 受け取り開始位置は,POINTER項目の初期値で指定します。

       77 D1     PIC X(10).
       77 D2     PIC X(10).
       77 D3     PIC X(10).
       77 D4     PIC X(10).
       77 PTR-1  PIC 9(5) USAGE COMP.
       77 MSG-02 PIC X(25).
                       :
           MOVE 6     TO PTR-1.
           MOVE SPACE TO MSG-02.
           STRING D1 D2 D3 D4
             DELIMITED BY SPACE
             INTO MSG-02
             WITH POINTER PTR-1
             ON OVERFLOW
               DISPLAY  'OVERFLOW CONDITION;'
           END-STRING.

PTR-1の初期値が6の場合,このSTRING文を実行すると,次のようにデータを転記します。

[図データ]

  1. D1のデータを,最初の空白の直前までMSG-02に転記します。

    PTR-1の初期値は6なので,MSG-02の6文字目からデータを転記し,先頭の5文字の内容は変更しません。

    '_____123,45'

  2. D2のデータを続けて転記します。

    D2のデータには空白がないので,右端の文字Jまですべて転記します。

    '_____123,45ABCDEFGHIJ'

  3. D3のデータを続けて転記します。

    D3のデータを4文字転記すると受け取り側作用対象がいっぱいになるので,転記を終了して,OVERFLOW指定に書かれたDISPLAY文を実行します。D3の残りのデータとD4のデータは使用しません。

    PTR-1には,転記した文字数が加えられています(この場合,MSG-02のサイズ+1=26が設定されています)。