5.3.1 STRING文
STRING文は,幾つかのデータ項目の内容の一部または全部をつなぎ合わせて,一つのデータ項目に移します。
STRING文については,マニュアル「COBOL2002 言語 標準仕様編」 「10.8.47 STRING文」を参照してください。
STRING文の例を次に示します。
- (例1)
-
受け取り開始位置を指定しない(POINTER指定のない)STRING文
-
三つのデータ項目AA,BB,CCのデータの一部または全部を取り出して,文字列を作成します。
-
データ項目AAにはコンマ(,),BBにはセミコロン(;),CCには空白( )がデータの区切り文字として入っていて,区切り文字までのデータを取り出して文字列を作成します。
このSTRING文を実行すると,次のようにデータを転記します。なお,文中のかたかなは,半角かたかな文字を表します。
-
AAのデータを,コンマ(,)の直前までMSG-01に転記します。
'12345'
-
英数字定数'ハ'を,1.に続けて転記します。
'12345ハ'
-
BBのデータを,セミコロン(;)の直前まで,2.に続けて転記します。
'12345ハ CHECK OK'
-
英数字定数'デス。'を,3.に続けて転記する。
'12345ハ CHECK OKデス。'
-
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文を実行すると,次のようにデータを転記します。
-
D1のデータを,最初の空白の直前までMSG-02に転記します。
PTR-1の初期値は6なので,MSG-02の6文字目からデータを転記し,先頭の5文字の内容は変更しません。
'_____123,45'
-
D2のデータを続けて転記します。
D2のデータには空白がないので,右端の文字Jまですべて転記します。
'_____123,45ABCDEFGHIJ'
-
D3のデータを続けて転記します。
D3のデータを4文字転記すると受け取り側作用対象がいっぱいになるので,転記を終了して,OVERFLOW指定に書かれたDISPLAY文を実行します。D3の残りのデータとD4のデータは使用しません。
PTR-1には,転記した文字数が加えられています(この場合,MSG-02のサイズ+1=26が設定されています)。
-