STRING ステートメントの例
次の例では、STRING ステートメントに適用されるいくつかの考慮事項を示します。
データ部で、プログラマーは次のフィールドを定義したものとします。
01 RPT-LINE PICTURE X(120).
01 LINE-POS PICTURE 99.
01 LINE-NO PICTURE 9(5) VALUE 1.
01 DEC-POINT PICTURE X VALUE ".".
また、FILE セクションで、次の入力レコードを定義したものとします。
01 RCD-01.
05 CUST-INFO.
10 CUST-NAME PICTURE X(15).
10 CUST-ADDR PICTURE X(34).
05 BILL-INFO.
10 INV-NO PICTURE X(6).
10 INV-AMT PICTURE $$,$$$.99.
10 AMT-PAID PICTURE $$,$$$.99.
10 DATE-PAID PICTURE X(8).
10 BAL-DUE PICTURE $$,$$$.99.
10 DATE-DUE PICTURE X(8).
プログラマーが、RCD-01 の情報の一部から成る出力行を作成したいとします。 この行は、行番号、顧客の名前と住所、請求書番号、支払期日、および支払金額 (示された円の桁数に切り捨てられた) で構成されます。
読み取られるレコードには次の情報が入っています。
J.B.␢SMITH␢␢␢␢␢
444␢SPRING␢ST.,␢CHICAGO,␢ILL.␢␢␢␢␢
A14275
\4,736.85
\2,400.00
09/22/76
\2,336.85
09/09/94
手続き部で、プログラマーは RPT-LINE を SPACES に初期設定し、LINE-POS (ポインター・フィールドとして使用される) を 4 に設定します。
その後で、次の STRING ステートメントを出します。
STRING LINE-NO SPACE
CUST-INFO SPACE
INV-NO SPACE
DATE-DUE SPACE
DELIMITED BY SIZE,
BAL-DUE
DELIMITED BY DEC-POINT
INTO RPT-LINE
WITH POINTER LINE-POS.
ステートメントの実行時には、次の処理が行われます。
- フィールド LINE-NO が RPT-LINE の桁 4 ~ 8 に移動されます。
- スペースが桁 9 に移動されます。
- グループ項目 CUST-INFO が桁 10 ~ 58 に移動されます。
- スペースが桁 59 に移動されます。
- INV-NO が桁 60 ~ 65 に移動されます。
- スペースが桁 66 に移動されます。
- DATE-DUE が桁 67 ~ 74 に移動されます。
- スペースが桁 75 に移動されます。
- BAL-DUE の小数点の前にある部分が桁 76 ~ 81 に移動されます。
STRING ステートメントの実行後は、次のようになります。
- RPT-LINE は 図 1 で示されているようになります。
- LINE-POS には値 82 が入ります。
注: 一連の MOVE ステートメントの代わりに、1 つの STRING ステートメントを書くことができます。
図 1. STRING ステートメントの例の出力データ
