z/OS DFSORT Application Programming Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


COBOL E35 user exit: inserting records

z/OS DFSORT Application Programming Guide
SC23-6878-00

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.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014