EXAMPLE PROGRAM 3 (Matching-Record Technique)

Dans cet exemple, le fichier TRWEEK est défini en tant que fichier d'entrée secondaire. Les enregistrements EMPREC et RCWEEK sont traités comme des enregistrements correspondants, la zone ENUM des deux enregistrements étant affectée de la valeur de niveau de correspondance M1. Les indicateurs d'identification des enregistrements 01 et 02 sont affectés aux enregistrements pour contrôler le traitement des différents types d'enregistrement.

Figure 1 : Traitement séquentiel par clé, exemple 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