EXAMPLE PROGRAM 2 (Sequential-by-Key Using READ)

This example is the same as the previous example except that the EMPL1 file is defined as a full-procedural file, and the reading of the file is done by the READ operation code.

Figure 1. Sequential-by-Key Processing, Example 2
      *****************************************************************
      *  PROGRAM NAME:  YTDRPT2                                       *
      * RELATED FILES:  EMPL1    (Logical File)                       *
      *                 PRINT    (Printer File)                       *
      *   DESCRIPTION:  This program shows an example of processing   *
      *                 records using the read operation code.        *
      *                 This program prints out each employee's       *
      *                 information and weekly hours worked.          *
      *****************************************************************
     FPRINT     O    F   80        PRINTER
     FEMPL1     IF   E           K DISK
      *  The two records (EMPREC and RCWEEK) are contained in the same
      *  file, and a record-identifying indicator is assigned to each
      *  record.  The record-identifying indicators are used to control
      *  processing for the different record types.  No control levels
      *  or match fields can be specified for a full-procedural file.
     IEMPREC        01
     I*
     IRCWEEK        02
     I*

      *  The READ operation code reads a record from the EMPL1 file. An
      *  end-of-file indicator is specified in positions 58 and 59.  If
      *  the end-of-file indicator 99 is set on by the READ operation,
      *  the program branches to the EOFEND tag and processes the end-of-
      *  file routine.

     C                   SETOFF                                       12
     C                   READ      EMPL1                                  99
     C   99              GOTO      EOFEND
     C*
     C   01              MOVE      ENUM          EMPNO             5 0
     C*
     C                   IF        (*IN02='1') AND (ENUM=EMPNO)
     C                   SETON                                        12
     C                   ENDIF

      *  Since EMPL1 is defined as a full-procedural file, indicator
      *  *INLR has to be seton to terminate the program after processing
      *  the last record.

     C     EOFEND        TAG
     C   99              SETON                                        LR
     OPRINT     H    1P                     2  6
     O                                           40 'EMPLOYEE WEEKLY WORKING '
     O                                           52 'HOURS REPORT'
     O          H    01                     1
     O                                           12 'EMPLOYEE: '
     O                       ENAME               32
     O          H    01                     1
     O                                           12 'SERIAL #: '
     O                       ENUM                17
     O                                           27 'DEPT: '
     O                       EDEPT               30
     O                                           40 'TYPE: '
     O                       ETYPE               41
     O          H    01                     1
     O                                           20 'WEEK #'
     O                                           50 'HOURS WORKED'
     O          D    12                     1
     O                       WEEKNO              18
     O                       EHWRK         3     45