STRING Statement Example
The following example illustrates some of the considerations that apply to the STRING statement.
In the Data Division, the programmer has defined the following fields:
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 ".".
In the File Section, he or she has defined the following input record:
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).
The programmer wants to construct an output line consisting of portions of the information from RCD-01. The line is to consist of a line number, customer name and address, invoice number, date due, and balance due, truncated to the dollar figure shown.
The record as read in contains the following information:
J.B.␢SMITH␢␢␢␢␢
444␢SPRING␢ST.,␢CHICAGO,␢ILL.␢␢␢␢␢
A14275
$4,736.85
$2,400.00
09/22/76
$2,336.85
09/09/94
In the Procedure Division, the programmer initializes RPT-LINE to SPACES
and sets LINE-POS (which is to be used as the pointer field) to 4. Then he
issues this STRING statement:
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.
When the statement is executed, the following actions take place:
- The field LINE-NO is moved into positions 4 through 8 of RPT-LINE.
- A space is moved into position 9.
- The group item CUST-INFO is moved into positions 10 through 58.
- A space is moved into position 59.
- INV-NO is moved into positions 60 through 65.
- A space is moved into position 66.
- DATE-DUE is moved into positions 67 through 74.
- A space is moved into position 75.
- The portion of BAL-DUE that precedes the decimal point is moved into positions 76 through 81.
After the STRING statement has been executed:
- RPT-LINE appears as shown in Figure 1.
- LINE-POS contains the value 82.
Note: One STRING statement can be written instead of a series
of MOVE statements.
Figure 1. STRING Statement Example Output Data
