Figure 1 shows an example of a COBOL E35
routine for a data set with variable-length records up to 200 bytes.
It examines the department field in each passed record (records are
assumed to be sorted by the department field) and takes the following
action:
- It inserts a record for department K22 in the proper sequence.
- It accepts all passed records unchanged.
Figure 1. COBOL E35 Routine Example (VLR) IDENTIFICATION DIVISION.
PROGRAM-ID.
CE35.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 INSERT-DONE PIC 9(1) VALUE 0.
01 K22-REC.
05 K22-MANAGER PIC X(20) VALUE "J. DOE".
05 K22-DEPT PIC X(3) VALUE "K22".
05 K22-FUNC PIC X(20) VALUE "ACCOUNTING".
05 K22-LATER PIC X(30) VALUE SPACES.
01 LEAVING-VAR-LEN PIC 9(8) BINARY.
LINKAGE SECTION.
01 RECORD-FLAGS PIC 9(8) BINARY.
88 FIRST-REC VALUE 00.
88 MIDDLE-REC VALUE 04.
88 END-REC VALUE 08.
01 LEAVING-REC.
05 LREC-MANAGER PIC X(20).
05 LREC-DEPT PIC X(3).
05 LREC-FUNC PIC X(20).
05 LREC-LATER OCCURS 1 TO 157 TIMES
DEPENDING ON LEAVING-VAR-LEN PIC X.
01 RETURN-REC.
05 RREC OCCURS 1 TO 200 TIMES
DEPENDING ON RETURN-REC-LEN PIC X.
01 OUTPUT-REC.
05 OREC OCCURS 1 TO 200 TIMES
DEPENDING ON OUTPUT-REC-LEN PIC X.
01 UNUSED1 PIC 9(8) BINARY.
01 LEAVING-REC-LEN PIC 9(8) BINARY.
01 RETURN-REC-LEN PIC 9(8) BINARY.
01 OUTPUT-REC-LEN PIC 9(8) BINARY.
PROCEDURE DIVISION USING RECORD-FLAGS, LEAVING-REC,
RETURN-REC, OUTPUT-REC, UNUSED1, LEAVING-REC-LEN,
RETURN-REC-LEN, OUTPUT-REC-LEN.
IF END-REC
MOVE 8 TO RETURN-CODE
ELSE
IF INSERT-DONE EQUAL TO 1
MOVE 0 TO RETURN-CODE
ELSE
SUBTRACT 43 FROM LEAVING-REC-LEN
GIVING LEAVING-VAR-LEN.
IF LREC-DEPT GREATER THAN K22-DEPT
MOVE 1 TO INSERT-DONE
MOVE 43 TO RETURN-REC-LEN
MOVE K22-REC TO RETURN-REC
MOVE 12 TO RETURN-CODE
ELSE
MOVE 0 TO RETURN-CODE
END-IF
END-IF
GOBACK.