次の例は、レコードから出力行に、情報の選択およびフォーマット設定を行う STRING ステートメントを示しています。
FILE SECTION は以下のレコードを定義します。
01 RCD-01.
05 CUST-INFO.
10 CUST-NAME PIC X(15).
10 CUST-ADDR PIC X(35).
05 BILL-INFO.
10 INV-NO PIC X(6).
10 INV-AMT PIC $$,$$$.99.
10 AMT-PAID PIC $$,$$$.99.
10 DATE-PAID PIC X(8).
10 BAL-DUE PIC $$,$$$.99.
10 DATE-DUE PIC X(8).
WORKING-STORAGE SECTION は以下の各フィールドを定義します。
77 RPT-LINE PIC X(120). 77 LINE-POS PIC S9(3). 77 LINE-NO PIC 9(5) VALUE 1. 77 DEC-POINT PIC X VALUE “.”.
レコード RCD-01 には、以下の情報が含まれています (記号 b はブランク・スペースを示します)。
J.B.bSMITHbbbbb 444bSPRINGbST.,bCHICAGO,bILL.bbbbbb A14275 $4,736.85 $2,400.00 09/22/76 $2,336.85 10/22/76
PROCEDURE DIVISION では、以下の設定値は STRING ステートメントの前にきます。
STRING ステートメントを以下に示します。
STRING
LINE-NO SPACE CUST-INFO INV-NO SPACE DATE-DUE SPACE
DELIMITED BY SIZE
BAL-DUE
DELIMITED BY DEC-POINT
INTO RPT-LINE
WITH POINTER LINE-POS.
STRING ステートメントが実行される前、POINTER フィールドの LINE-POS は値 4 を持っているので、データは 受信フィールド RPT-LINE に移動されるとき、文字位置 4 から開始されます。位置 1 から 3 の文字は未変更のままです。
DELIMITED BY SIZE を指定している送信項目は、その全体が受信フィールドに移動されます。 BAL-DUE は DEC-POINT で区切られているので、受信フィールドへの BAL-DUE の移動は、小数点 (DEC-POINT の値) が検出されると停止します。
STRING ステートメントが実行されると、次の表に示されるように、項目は RPT-LINE に移動されます。
| 項目 | 位置 |
|---|---|
| LINE-NO | 4 - 8 |
| スペース | 9 |
| CUST-INFO | 10 - 59 |
| INV-NO | 60 - 65 |
| スペース | 66 |
| DATE-DUE | 67 - 74 |
| スペース | 75 |
| BAL-DUE の小数点より前の部分 | 76 - 81 |
STRING ステートメントの実行後、LINE-POS の値は 82 であり、RPT-LINE は以下に示す値を持ちます。
