EXAMPLE PROGRAM 3 (Matching-Record Technique)

In this example, the TRWEEK file is defined as a secondary input file. The EMPREC and RCWEEK records are processed as matching records, with the ENUM field in both records assigned the match level value of M1. Record-identifying indicators 01 and 02 are assigned to the records to control the processing for the different record types.

Figure 1. Sequential-by-Key Processing, Example 3
      *****************************************************************
      *  PROGRAM NAME:  YTDRPT5                                       *
      * RELATED FILES:  EMPMST   (Physical File)                      *
      *                 TRWEEK   (Physical File)                      *
      *                 PRINT    (Printer File)                       *
      *   DESCRIPTION:  This program shows an example of processing   *
      *                 records using the matching record method.     *
      *                 This program prints out each employee's       *
      *                 information, weekly worked hours and amount   *
      *                 of overtime.                                  *
      *****************************************************************
     FPRINT     O    F   80        PRINTER
     FEMPMST    IP   E           K DISK
     FTRWEEK    IS   E           K DISK
     IEMPREC        01
     I                                          ENUM            M1
     IRCWEEK        02
     I                                          ENUM            M1
     C   01              Z-ADD     0             TOTHRS            5 1
     C   01              Z-ADD     0             TOTOVT            5 1
     C   01              SETOFF                                       12
     C*
     C   MR              IF        (*IN02='1')
     C                   ADD       EHWRK         TOTHRS
     C     EHWRK         SUB       ENHRS         OVTHRS            4 111
     C   11              ADD       OVTHRS        TOTOVT
     C                   SETON                                        12
     C                   ENDIF
     OPRINT     H    1P                     2  6
     O                                           50 'YTD PAYROLL SUMMARY'
     O          D    01                     1
     O                                           12 'EMPLOYEE: '
     O                       ENAME               32
     O          D    01                     1
     O                                           12 'SERIAL #: '
     O                       ENUM                17
     O                                           27 'DEPT: '
     O                       EDEPT               30
     O                                           40 'TYPE: '
     O                       ETYPE               41
     O          D    02 MR                  1
     O                                            8 'WEEK #'
     O                       WEEKNO              10
     O                                           32 'HOURS WORKED = '
     O                       EHWRK         3     38
      *  These 2 detail output lines are processed if *IN01 is on
      *  and no matching records found (that means no RCWEEK records
      *  for that employee found). Obviously, the total fields
      *  (TOTHRS and TOTOVT) are equal to zeros in this case.
     O          D    01NMR                  1
     O                                           70 'YTD HOURS WORKED = '
     O                       TOTHRS        3     78
     O          D    01NMR                  1
     O                                           70 'YTD OVERTIME HOURS = '
     O                       TOTHRS        3     78

      *  These 2 total output lines are processed before performing
      *  detail calcualations. Therefore, the total fields
      *  (TOTHRS and TOTOVT) for the employee in the last retrieved
      *  record will be printed out if the specified indicators are on.

     O          T    01 12                  1
     O         OR    LR 12
     O                                           70 'YTD HOURS WORKED = '
     O                       TOTHRS        3     78
     O          T    01 12                  1
     O         OR    LR 12
     O                                           70 'YTD OVERTIME HOURS = '
     O                       TOTOVT        3     78