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が設定されています)。