       IDENTIFICATION   DIVISION.
       PROGRAM-ID.      EW25.
       AUTHOR.          DOE.
      *****************************************************************
      *                       A03. SATSY (INPUT)                      *
      *****************************************************************
      * DATE CREATED:  05/22/95                                       *
      *****************************************************************
      * CALL #  - MMDDYY - PURPOSE                                    *
      * FIX9714 - 042697 - RESET THE SMP KEY WITH EACH READ           *
      * 2004002 - 053105 - PREVENT UPDATES TO CHARTER SCHOOLS         *
      * 2006001 - 070505 - CORRECT RECORD LOCK PROBLEM                *
      *****************************************************************

       ENVIRONMENT      DIVISION.
       CONFIGURATION    SECTION.
       SOURCE-COMPUTER. AS-400.
       OBJECT-COMPUTER. AS-400.
       SPECIAL-NAMES.
           I-O-FEEDBACK                IS           DSP-FEEDBACK.

       INPUT-OUTPUT     SECTION.
       FILE-CONTROL.

           SELECT    SCR-DISPLAY       ASSIGN       WORKSTATION-MPEW25
                                       ORGANIZATION TRANSACTION
                                       CONTROL-AREA SCRCTL
                                       FILE STATUS  RETSCR.

           SELECT    SMP-DISK          ASSIGN       DATABASE-EWSMPB
                                       ORGANIZATION INDEXED
                                       ACCESS       DYNAMIC
                                       RECORD KEY   SMPDK
                                       FILE STATUS  RETSMP.

           SELECT    STS-DISK          ASSIGN       DATABASE-EWSTSB
                                       ORGANIZATION INDEXED
                                       ACCESS       DYNAMIC
                                       RECORD KEY   STSDK
                                       FILE STATUS  RETSTS.

           SELECT    STH-DISK          ASSIGN       DATABASE-EWSTHB
                                       ORGANIZATION INDEXED
                                       ACCESS       RANDOM
                                       RECORD KEY   STHDK
                                       FILE STATUS  RETSTH.

           SELECT    CRF-DISK          ASSIGN       DATABASE-EWCRFI
                                       ORGANIZATION INDEXED
                                       ACCESS       RANDOM
                                       RECORD KEY   CRFDK
                                       FILE STATUS  RETCRF.

      *****************************************************************
       DATA          DIVISION.
       FILE          SECTION.

       FD            SCR-DISPLAY.
       01            SCR.
           COPY      DDS-EW25-O        OF   MPEW25.
           05        R25   REDEFINES        EW25-O.
             10      FILLER            PIC  X(92).
             10      RLINES.
               15    RLINE OCCURS 005  TIMES INDEXED BY SCR1 SCR2 SCR3.
                 20  RSURV             PIC  X(01).
                 20  RMOD              PIC  X(02).
                 20  RPLIN OCCURS 003  TIMES INDEXED BY SCR4.
                   25  RPGM            PIC  X(03).
                   25  RSTDT           PIC  ZZZ.
                   25  RPCT.
                    30 RPCT9           PIC  ZZZ.Z.
                 20  RSPACE            PIC  ZZZZ.
                 20  RPMOD             PIC  ZZZ.

           COPY      EWSMPD            OF   CPYSRC.
           COPY      EWSTSD            OF   CPYSRC.
           COPY      EWSTHD            OF   CPYSRC.
           COPY      EWCRFD            OF   CPYSRC.

      *****************************************************************
       WORKING-STORAGE SECTION.

           COPY      EWSCRCTL          OF   CPYSRC.
           COPY      EWIND             OF   CPYSRC.
           COPY      EWMSG             OF   CPYSRC.
           COPY      EWNUMBW           OF   CPYSRC.

       01            RET.
           05        RETSCR            PIC  X(02).
           05        RETSMP            PIC  X(02).
           05        RETSTS            PIC  X(02).
           05        RETSTH            PIC  X(02).
           05        RETCRF            PIC  X(02).

           COPY      EWSMP             OF   CPYSRC.
           COPY      EWSTS             OF   CPYSRC.
           COPY      EWSTH             OF   CPYSRC.
           COPY      EWSCL             OF   CPYSRC.
           COPY      EWFPG             OF   CPYSRC.
           COPY      EWTBL             OF   CPYSRC.
           COPY      EWIOP             OF   CPYSRC.

       01            NEWKEY.
           05        NEWSCHL           PIC  X(04).
           05        NEWSSN.
             10      NEWSSN9           PIC  9(09).
             10      NEWSSN1           PIC  X(01).
           05        NEWJOB.
             10      NEWJOB9           PIC  9(02).
       01            NEWBYTES   REDEFINES   NEWKEY.
           05        NEWBYTE    OCCURS 016  TIMES INDEXED BY NEW1
                                       PIC  X(01).

       01            OLDKEY            PIC  X(16).
       01            OLDSURV           PIC  X(01).
       01            OLDMOD            PIC  X(02).
       01            OLDPMOD           PIC S9(01)V9(02).
       01            OLDPCT            PIC S9(02)V9(03).

       01            WRK.
           05        WRKERR            PIC  X(01).
           05        WRKERR2           PIC  X(01).
           05        WRKPF7            PIC  X(256).
           05        WRKPF8            PIC  X(256).
           05        WRKLINES          PIC  X(215).
           05        WRKIND            PIC  X(99).
           05        WRKNBR            PIC S9(3)    COMP-3 VALUE +016.
           05        WRKIDX            PIC S9(3)    COMP-3.
           05        WRKROW            PIC S9(3)    COMP-3.
           05        WRKCOL            PIC S9(3)    COMP-3.
           05        WRKLOW.
             10      FILLER            PIC  X(20).
             10      WRKLOWX           PIC  X(06).
           05        WRKHIGH.
             10      FILLER            PIC  X(20).
             10      WRKHIGHX          PIC  X(06).
           05        WRKKEY.
             10      WRKSCHL           PIC  X(04).
             10      WRKSSN            PIC  X(10).
             10      WRKJOB            PIC  X(02).
           05        WRKBYTES   REDEFINES   WRKKEY.
             10      WRKBYTE    OCCURS 016  TIMES INDEXED BY WRK1
                                       PIC  X(01).
           05        WRKPCT1           PIC S9(03)V9(02).
           05        WRKPCT2           PIC S9(03)V9(03).
           05        WRKACT            PIC  X(01).
           05        WRKBLNK           PIC  X(01).
           05        WRKHOURS          PIC S9(04)V9(03).
           05        WRKDAYS           PIC S9(04).
           05        WRKFTE            PIC S9(03)V9(04).
           05        WRKSALARY         PIC S9(08).
           05        WRKFIRST          PIC  X(01).
           05        WRKADDLN          PIC  X(01).
           05        WRKSMP.
             10      WRKSMP1           PIC  X(01).
             10      WRKSMP2           PIC  X(01).
             10      WRKSMP3           PIC  X(01).
             10      WRKSMP4           PIC  X(01).

       01            IDX.
           05        IDX1              PIC S9(3)    COMP-3.
           05        IDX4              PIC S9(3)    COMP-3.
           05        IDXCP             PIC S9(3)    COMP-3.
           05        IDXRP             PIC S9(3)    COMP-3.

       01            EDTTBL.
           05        EDTENTRY          OCCURS  4 TIMES INDEXED BY EDT1.
             10      EDTPMOD           PIC S9(01)V9(02).
             10      EDTEMPTY          PIC S9(02).
             10      EDTLASTMOD        PIC  X(02).
             10      EDTNBRMOD         PIC S9(03).
             10      EDTENTRY2         OCCURS 99 TIMES INDEXED BY EDT2.
               15    EDTMODUPD         PIC  X(01).
               15    EDTPCT            PIC S9(01)V9(03).
               15    EDTLASTPGM        PIC  X(03).

       01            UPDTBL.
           05        UPDENTRY          OCCURS  5 TIMES INDEXED BY UPD1.
             10      UPDSURVEY         PIC  X(01).
             10      UPDMOD            PIC  X(02).
             10      UPDSPACE          PIC S9(05)        COMP-3.
             10      UPDPMOD           PIC S9(01)V9(02)  COMP-3.

       01            SRCH.
           05        SRCHSURVEY        PIC  X(01).
           05        SRCHMOD           PIC  X(02).
           05        SRCHFND           PIC  X(01).
           05        SRCHIDX           PIC S9(03)        COMP-3.

       LINKAGE       SECTION.

           COPY      EWLNK              OF   CPYSRC.

       PROCEDURE     DIVISION           USING LNK.

      *****************************************************************

       DECLARATIVES.
       000-ERROR     SECTION.
           USE AFTER STANDARD ERROR PROCEDURE ON SCR-DISPLAY
                                                 SMP-DISK
                                                 STS-DISK
                                                 STH-DISK
                                                 CRF-DISK.
       000-ENCOUNTERED.
           CONTINUE.
       END DECLARATIVES.

      *****************************************************************
       000-MAINLINE  SECTION.

       000-CONTROL.
           PERFORM 490-HOUSEKEEPING    THRU 490-EXIT
           PERFORM 005-MAIN            THRU 005-EXIT
             UNTIL LNKTO               NOT  =   LNKFR
           PERFORM 990-HOUSEKEEPING    THRU 990-EXIT
           GOBACK.
       000-EXIT.
           EXIT.

       005-MAIN.
           PERFORM 006-SCREEN          THRU 006-EXIT
           WRITE   SCR          FORMAT IS   'EW25'
                   INDICATORS          ARE  IND
           READ    SCR-DISPLAY              RECORD
                   INDICATORS          ARE  IND
           SET     INDOFF         (15) TO   TRUE
           MOVE    ZEROS               TO   LINNBR
                                            POSNBR
           MOVE    MSCHL               TO   NEWSCHL
           MOVE    MSSN                TO   NEWSSN
           MOVE    MJOB                TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR20               TO   NEWJOB9
           MOVE    NEWJOB              TO   MJOB
           IF      INDOFF                  (VLDCMDKEY)              AND
                   MPNL                =    SPACES                  AND
                   NEWKEY              NOT  =   OLDKEY
             PERFORM 100-DISPLAY       THRU 100-EXIT
           ELSE
             IF      INDOFF                (VLDCMDKEY)              AND
                     MPNL              =    SPACES                  AND
                     NEWKEY            =    OLDKEY
               PERFORM 300-UPDATE      THRU 300-EXIT
             ELSE
               PERFORM 010-FUNCTION    THRU 010-EXIT.
       005-EXIT.
           EXIT.

       006-SCREEN.
           IF      MSALARY             <=   SPACES
             MOVE  '   ,   '           TO   MSALARY.
           IF      MHRLY               <=   SPACES
             MOVE  '   .     '         TO   MHRLY.
           SET     SCR3                TO   +1.
       006-LOOP1.
           MOVE    'Y'                 TO   WRKBLNK
           SET     SCR4                TO   +1.
       006-LOOP2.
           IF      RPCT    (SCR3 SCR4) <=   SPACES
             MOVE  '   . '             TO   RPCT      (SCR3 SCR4).
           IF      RPGM    (SCR3 SCR4) NOT  =  SPACES              OR
                   RSTDT   (SCR3 SCR4) NOT  =  SPACES              OR
                   RPCT    (SCR3 SCR4) NOT  =  '   . '
             MOVE  'N'                 TO   WRKBLNK.
           IF      SCR4                <    +3
             SET   SCR4                UP   BY  +1
             GO                        TO   006-LOOP2.
           IF      WRKBLNK             =    'Y'                    AND
                   RSPACE       (SCR3) =    SPACES                 AND
                   RPMOD        (SCR3) =    SPACES
             MOVE  SPACES              TO   RSURV          (SCR3)
                                            RMOD           (SCR3).
           IF      SCR3                <    +5
             SET   SCR3                UP   BY  +1
             GO                        TO   006-LOOP1.
       006-EXIT.
           EXIT.

       010-FUNCTION.
           IF      INDON                    (CF05)
             IF    RSURV          (05) NOT  =   SPACES             AND
                   RMOD           (05) NOT  =   SPACES
               MOVE  SPACES            TO   RLINES
               MOVE  ZEROS             TO   IND
               SET   INDON        (99) TO   TRUE
               MOVE  MSG34             TO   MMSG
             ELSE
               PERFORM  100-DISPLAY    THRU 100-EXIT
               SET      INDON     (14) TO   TRUE.
           COPY    EWFUNC2P            OF   CPYSRC.
           IF      INDON                    (CF03)                  AND
                   LNKXFPNL            =    'A01'
             MOVE  'A01'               TO   LNKTOPNL.
           IF      INDON                    (CF03)                  AND
                   LNKXFPNL            =    'A02'
             MOVE  'A02'               TO   LNKTOPNL.
       010-EXIT.
           EXIT.

       015-F4.
           ACCEPT  FDB                 FROM DSP-FEEDBACK
                                       FOR  SCR-DISPLAY
           DIVIDE  FDBCPOSN            BY   256
                   GIVING              LNKXFROW
                   REMAINDER           LNKXFCOL
           COMPUTE LNKXFLOC9           =   ((LNKXFROW - 1) * 80)
                                       +    (LNKXFCOL - 1)
           IF      LNKXFCOL            >=   +18                     AND
                   LNKXFCOL            <=   +20
             SET   SCR4                TO   +1.
           IF      LNKXFCOL            >=   +34                     AND
                   LNKXFCOL            <=   +36
             SET   SCR4                TO   +2.
           IF      LNKXFCOL            >=   +50                     AND
                   LNKXFCOL            <=   +52
             SET   SCR4                TO   +3.
           IF      LNKXFROW            >    +11                     AND
                   LNKXFROW            <    +17
             COMPUTE LNKXFLOC9         =    LNKXFCOL + 399.
           MOVE    LNKFRSER            TO   LNKXFSER
           MOVE    LNKFRMENU           TO   LNKXFMENU
           MOVE    LNKFRNBR            TO   LNKXFNBR
           MOVE    LNKXFROW            TO   LINNBR
           MOVE    LNKXFCOL            TO   POSNBR
           CALL    'EW85'              USING LNK
             ON OVERFLOW
               GO                      TO   015-EXIT.
           CANCEL    'EW85'
           IF      LINNBR              >=   +12                     AND
                   LINNBR              <=   +16
             SET   SCR3                TO   LINNBR
             SET   SCR3                DOWN BY  +11.
           IF      LNKXFPNL5           =    'PGM  '
             SET   IDXCP               TO   SCR3
             SET   IDXRP               TO   SCR4
             COMPUTE  IDXCP            =   (IDXCP - 1) * 3 + IDXRP + 78
             SET   IND1                TO   IDXCP
             IF    INDON                    (IND1)
               MOVE  SPACES            TO   LNKXFPROM.
           IF        LNKXFPROM         >    SPACES                  AND
                     LNKXFPNL5         >    SPACES
             EVALUATE  LNKXFPNL5
               WHEN   'SCHL '
                 MOVE  LNKXFPROM       TO   MSCHL
               WHEN   'TABLE'
                 MOVE  LNKXFPROM       TO   MTABLE
               WHEN    'PGM  '
                 MOVE  LNKXFPROM       TO   RPGM       (SCR3  SCR4)
               WHEN    OTHER
                 MOVE  MSG33           TO   MMSG
           ELSE
             IF      LNKXFPNL5         =    SPACES
               MOVE  MSG33             TO   MMSG.
       015-EXIT.
           EXIT.


       020-BACKWARD.
           MOVE    RLINES              TO   WRKLINES
           MOVE    IND                 TO   WRKIND
           SET     SCR2                TO   +05
           SET     SCR4                TO   +03
           MOVE    SPACES              TO   RLINES
           MOVE    ZEROS               TO   IND
           MOVE    WRKPF7              TO   SMPDK
           PERFORM 120-BACKWARD        THRU 120-EXIT
           MOVE    'N'                 TO   WRKERR
           PERFORM 340-SATSY-EDIT      THRU 340-EXIT
           IF      WRKERR              =    'Y'
             MOVE  MSG21               TO   MMSG.
           IF      RLINES              =    SPACES                  OR
                   RLINES              =    WRKLINES
             MOVE  WRKIND              TO   IND
             MOVE  WRKLINES            TO   RLINES.
       020-EXIT.
           EXIT.


       030-FORWARD.
           MOVE    RLINES              TO   WRKLINES
           MOVE    IND                 TO   WRKIND
           SET     SCR1  SCR4          TO   +1
           MOVE    SPACES              TO   RLINES
           MOVE    ZEROS               TO   IND
           MOVE    WRKPF8              TO   SMPDK
           MOVE    SPACES              TO   WRKFIRST
           PERFORM 110-FORWARD         THRU 110-EXIT
           MOVE    'N'                 TO   WRKERR
           PERFORM 340-SATSY-EDIT      THRU 340-EXIT
           IF      WRKERR              =    'Y'
             MOVE  MSG21               TO   MMSG.
           IF      RLINES              =    SPACES                  OR
                   RLINES              =    WRKLINES
             MOVE  WRKIND              TO   IND
             MOVE  WRKLINES            TO   RLINES.
       030-EXIT.
           EXIT.

       040-DELETE.
           IF      LNKFAYZ      (1 03) NOT  =   'U'
             PERFORM 100-DISPLAY       THRU 100-EXIT
             MOVE    MSG32             TO   MMSG
             GO                        TO   040-EXIT.
           MOVE    LNKDIST             TO   STHKEY
           MOVE    LNKFY               TO   STHFY
           MOVE    NEWSSN              TO   STHSSN
           MOVE    NEWJOB              TO   STHJOB
           MOVE    NEWSCHL             TO   STHSCHL
           MOVE    STHKEY              TO   STHDK
           READ    STH-DISK
           IF      RETSTH              =    '00'
             DELETE STH-DISK
             MOVE  ZEROS               TO   IND
             MOVE  SPACES              TO   SCR
             SET   INDON          (97) TO   TRUE
             MOVE  MSG37               TO   MMSG
           ELSE
             SET   INDON          (97) TO   TRUE
             MOVE  MSG16               TO   MMSG.
           MOVE    STHKEY              TO   STSKEY
           MOVE    LOW-VALUES          TO   STSSURVEY   STSMOD
           MOVE    STSKEY              TO   STSDK
           START   STS-DISK            KEY  >   STSDK.
       040-LOOP1.
           READ    STS-DISK                 NEXT
           MOVE    STSD                TO   STS
           IF      RETSTS              =    '00'                   AND
                   STSDIST             =    LNKDIST                AND
                   STSFY               =    LNKFY                  AND
                   STSSSN              =    NEWSSN                 AND
                   STSJOB              =    NEWJOB                 AND
                   STSSCHL             =    NEWSCHL
             DELETE  STS-DISK
             GO                        TO   040-LOOP1.
           MOVE    STHKEY              TO   SMPKEY
           MOVE    LOW-VALUES          TO   SMPSURVEY   SMPMOD
                                            SMPPGM
           MOVE    SMPKEY              TO   SMPDK
           START   SMP-DISK            KEY  >   SMPDK.
       040-LOOP2.
           READ    SMP-DISK                 NEXT
070505                                      NO LOCK
           MOVE    SMPD                TO   SMP
           IF      RETSMP              =    '00'                   AND
                   SMPDIST             =    LNKDIST                AND
                   SMPFY               =    LNKFY                  AND
                   SMPSSN              =    NEWSSN                 AND
                   SMPJOB              =    NEWJOB                 AND
                   SMPSCHL             =    NEWSCHL
             DELETE  SMP-DISK
             GO                        TO   040-LOOP2.
       040-EXIT.
           EXIT.

      *****************************************************************
       100-DISPLAY.
           MOVE    ZEROS               TO   IND
           MOVE    'N'                 TO   WRKERR
           MOVE    SPACES              TO   SCR
           INITIALIZE                       EDTTBL
           MOVE    LOW-VALUES          TO   OLDKEY
           MOVE    NEWSCHL             TO   MSCHL
           MOVE    NEWSSN              TO   MSSN
           IF      NEWJOB              IS   NUMERIC                AND
                   NEWJOB              NOT  =  '00'
             MOVE  NEWJOB              TO   MJOB.
       100-EDIT-KEY.
           IF      NEWSCHL             =    SPACES                  OR
                   NEWSSN              =    SPACES                  OR
                   NEWJOB              =    SPACES                  OR
                   NEWJOB              =    '00'
             SET   INDON          (97) TO   TRUE
             MOVE  MSG31               TO   MMSG
             GO                        TO   100-EXIT.
           MOVE    LNKDIST             TO   SCLKEY
           MOVE    'SCL'               TO   SCLPREF
           MOVE    LNKFY               TO   SCLFY
           MOVE    NEWSCHL             TO   SCLSCL
           MOVE    SCLKEY              TO   CRFDK
           READ    CRF-DISK
053105*    IF      RETCRF              NOT  =  '00'
053105     MOVE    CRFD                TO   SCL
053105     IF     (RETCRF              NOT  =   '00')               OR
053105            (SCLCHRTR            =    'Y')
             MOVE  'Y'                 TO   WRKERR
             SET   INDON          (16) TO   TRUE.
           IF      NEWSSN9             NOT  NUMERIC
             MOVE  'Y'                 TO   WRKERR
             SET   INDON          (17) TO   TRUE.
           IF      NEWJOB9             NOT  NUMERIC                 OR
                   NEWJOB9             NOT  >  ZEROS
             MOVE  'Y'                 TO   WRKERR
             SET   INDON          (18) TO   TRUE.

           IF      WRKERR              =    'Y'
             MOVE  MSG17               TO   MMSG
             GO                        TO   100-EXIT.
       100-READ.
           MOVE    LNKDIST             TO   STHKEY
           MOVE    LNKFY               TO   STHFY
           MOVE    NEWSSN              TO   STHSSN
           MOVE    NEWJOB              TO   STHJOB
           MOVE    NEWSCHL             TO   STHSCHL
           MOVE    STHKEY              TO   STHDK
           READ    STH-DISK            WITH NO LOCK
           IF      RETSTH              NOT  =  '00'
             IF    LNKFAYZ      (1 03) =    'U'
               MOVE  NEWKEY            TO   OLDKEY
               SET   INDON        (98) TO   TRUE
               MOVE  MSG18             TO   MMSG
             ELSE
               SET   INDON        (97) TO   TRUE
               MOVE  LOW-VALUES        TO   OLDKEY
               MOVE  MSG19             TO   MMSG
           ELSE
             SET     INDON        (97) TO   TRUE
             MOVE    MSG20             TO   MMSG
             MOVE    STHD              TO   STH
             MOVE    STHLAST           TO   MLAST
             MOVE    STHFIRST          TO   MFIRST
             MOVE    STHMINIT          TO   MMINIT
             MOVE    STHTABLE          TO   MTABLE
             MOVE    STHFUND           TO   MFUND
             MOVE    STHSALARY         TO   NBRZ2
             MOVE    NBRZ2             TO   MSALARY
             MOVE    STHHRLY           TO   NBRZ3
             MOVE    NBRZ3             TO   MHRLY
             MOVE    STHPSCHL          TO   WRKPCT1
             COMPUTE WRKPCT1           =    WRKPCT1 *  100
             MOVE    WRKPCT1           TO   NBRZZ9
             MOVE    NBRZZ9            TO   MPSCHL
             MOVE    STHDAYS1          TO   NBRZZZ
             MOVE    NBRZZZ            TO   MDAYS1
             MOVE    STHDAYS2          TO   NBRZZZ
             MOVE    NBRZZZ            TO   MDAYS2
             MOVE    STHDAYS3          TO   NBRZZZ
             MOVE    NBRZZZ            TO   MDAYS3
             MOVE    STHDAYS4          TO   NBRZZZ
             MOVE    NBRZZZ            TO   MDAYS4
             MOVE    NEWKEY            TO   OLDKEY
             SET     SCR1  SCR4        TO   +1
             MOVE    LNKDIST           TO   SMPKEY
             MOVE    LNKFY             TO   SMPFY
             MOVE    NEWSSN            TO   SMPSSN
             MOVE    NEWJOB            TO   SMPJOB
             MOVE    NEWSCHL           TO   SMPSCHL
             MOVE    SMPKEY            TO   WRKHIGH
                                            WRKLOW
             INSPECT WRKLOWX      REPLACING ALL ' ' BY LOW-VALUES
             INSPECT WRKHIGHX     REPLACING ALL ' ' BY HIGH-VALUES
             MOVE    WRKLOW            TO   SMPDK
             MOVE    'Y'               TO   WRKFIRST
             PERFORM 110-FORWARD       THRU 110-EXIT
             PERFORM 105-BUILD-EDT     THRU 105-EXIT
             MOVE    'N'               TO   WRKERR
             PERFORM 340-SATSY-EDIT    THRU 340-EXIT
             IF      WRKERR            =    'Y'
               MOVE  MSG21             TO   MMSG.
       100-EXIT.
           EXIT.

       105-BUILD-EDT.
      ***************************************************************
      ***  THIS PROCEDURE WILL SCAN THE STS AND SMP TO BUILD THE  ***
      ***  EDIT TABLE (EDTTBL) NEEDED TO EDIT THE SATSY RECORDS.  ***
      ***  THIS PROCEDURE IS ONLY CALLED IN 100-DISPLAY AND WILL  ***
      ***  READ ANY RECORDS NOT DISPLAYED ON THE 1ST PAGE.  ONCE  ***
      ***  THE EDIT TABLE IS BUILT IT IS MAINTAINED IN 300-UPDATE.***
      ***************************************************************
           MOVE    SPACES              TO   WRKFIRST
           MOVE    LOW-VALUES          TO   STSDK
           IF      WRKPF8              <    WRKLOW
             GO                        TO   105-EXIT.
           MOVE    WRKPF8              TO   SMPDK
           START   SMP-DISK            KEY  >    SMPDK.
       105-READ-LOOP.
           READ    SMP-DISK                 NEXT
070505                                      NO LOCK
           IF      RETSMP              =    '00'                    AND
                   SMPDK               <    WRKHIGH
             MOVE  SMPD                TO   SMP
             PERFORM 130-SELECT        THRU 130-EXIT
             IF    WRKKEY              =    NEWKEY
               SET   EDT1              TO   SMPSURVEY9
               SET   EDT2              TO   SMPMOD9
               ADD   SMPPCT            TO   EDTPCT        (EDT1  EDT2)
               MOVE  SMPPGM            TO   EDTLASTPGM    (EDT1  EDT2)
               MOVE  SMPKEY            TO   STSKEY
               IF    STSKEY            NOT  =  STSDK
                 MOVE  STSKEY          TO   STSDK
                 READ  STS-DISK        NO   LOCK
                 IF    RETSTS          NOT  =    '00'
                   INITIALIZE               STSDATA
                   MOVE  STS           TO   STSD
                 ELSE
                   MOVE  STSD          TO   STS
                 END-IF
                 SET   EDT1            TO   STSSURVEY9
                 SET   EDT2            TO   STSMOD9
                 IF    EDTMODUPD (EDT1 EDT2)  NOT  =  'Y'
                   MOVE  'Y'           TO   EDTMODUPD  (EDT1  EDT2)
                   ADD   +1            TO   EDTNBRMOD  (EDT1)
                   ADD   STSPMOD       TO   EDTPMOD    (EDT1)
                   MOVE  STSMOD        TO   EDTLASTMOD (EDT1)
                   IF    STSPMOD       =    ZERO
                     ADD  +1           TO   EDTEMPTY   (EDT1)
                   END-IF
                 END-IF
               END-IF
             END-IF
             GO                        TO   105-READ-LOOP.
       105-EXIT.
           EXIT.

       110-FORWARD.
           MOVE    LOW-VALUES          TO   STSDK
           START   SMP-DISK            KEY  >    SMPDK.
       110-READ-LOOP.
           READ    SMP-DISK                 NEXT
070505                                      NO LOCK
           IF      RETSMP              =    '00'                    AND
                   SMPDK               <    WRKHIGH
             MOVE  SMPD                TO   SMP
             IF    SCR4                >    +1                      AND
                  (SMPSURVEY           NOT  =  RSURV      (SCR1) OR
                   SMPMOD              NOT  =  RMOD       (SCR1))
               IF  SCR1                <    +5
                 SET SCR1              UP   BY  +1
                 SET SCR4              TO   +1
               ELSE
                 GO                    TO   110-CONT
               END-IF
             END-IF
             MOVE  SMP                 TO   WRKPF8
             PERFORM 130-SELECT        THRU 130-EXIT
             IF    WRKKEY              =    NEWKEY
               SET   IDXCP             TO   SCR1
               SET   IDXRP             TO   SCR4
               COMPUTE  IDXCP          =   (IDXCP - 1) * 3 + IDXRP + 78
               SET   IND1              TO   IDXCP
               SET   INDON      (IND1) TO   TRUE
               MOVE  SMPSURVEY         TO   RSURV         (SCR1)
               MOVE  SMPMOD            TO   RMOD          (SCR1)
               MOVE  SMPPGM            TO   RPGM          (SCR1  SCR4)
               MOVE  SMPSTDT           TO   RSTDT         (SCR1  SCR4)
               MOVE  SMPPCT            TO   WRKPCT2
               COMPUTE  WRKPCT2        =    WRKPCT2  *  100
               MOVE  WRKPCT2           TO   RPCT9         (SCR1  SCR4)
               IF    WRKFIRST          =    'Y'
                 SET   EDT1            TO   SMPSURVEY9
                 SET   EDT2            TO   SMPMOD9
                 ADD   SMPPCT          TO   EDTPCT        (EDT1  EDT2)
                 MOVE  SMPPGM          TO   EDTLASTPGM    (EDT1  EDT2)
               END-IF
               IF    SCR1              =    +1                     AND
                     SCR4              =    +1
                 MOVE  SMPKEY          TO   WRKPF7
               END-IF
               IF    SCR4              =    +1
                 MOVE  SMPKEY          TO   STSKEY
                 IF    STSKEY          NOT  =  STSDK
                   MOVE  STSKEY        TO   STSDK
                   READ  STS-DISK      NO   LOCK
                   IF    RETSTS        NOT  =    '00'
                     INITIALIZE             STSDATA
                     MOVE  STS         TO   STSD
                   ELSE
                     MOVE  STSD        TO   STS
                   END-IF
                 END-IF
                 MOVE  STSSPACE        TO   RSPACE     (SCR1)
                 MOVE  STSPMOD         TO   WRKPCT1
                 COMPUTE  WRKPCT1      =    WRKPCT1 *  100
                 MOVE  WRKPCT1         TO   RPMOD      (SCR1)
                 IF    WRKFIRST        =    'Y'
                   SET   EDT1          TO   STSSURVEY9
                   SET   EDT2          TO   STSMOD9
                   IF    EDTMODUPD (EDT1 EDT2)  NOT  =  'Y'
                     MOVE  'Y'         TO   EDTMODUPD  (EDT1  EDT2)
                     ADD   +1          TO   EDTNBRMOD  (EDT1)
                     ADD   STSPMOD     TO   EDTPMOD    (EDT1)
                     MOVE  STSMOD      TO   EDTLASTMOD (EDT1)
                     IF    STSPMOD     =    ZERO
                       ADD  +1         TO   EDTEMPTY   (EDT1)
                     END-IF
                   END-IF
                 END-IF
               END-IF
               IF    SCR4              >    +2
                 SET SCR1              UP   BY  +1
                 SET SCR4              TO   +1
               ELSE
                 SET SCR4              UP   BY  +1
               END-IF
             END-IF
             IF    SCR1                <    +06
               GO                      TO   110-READ-LOOP.
       110-CONT.
           SET     INDON          (97) TO   TRUE
           IF      LNKFAYZ      (1 03) =    'U'                     AND
                   SCR1                =    +1                      AND
                   SCR4                =    +1
             MOVE  MSG14               TO   MMSG
             SET   INDOFF         (97) TO   TRUE
             SET   INDON          (98) TO   TRUE
           ELSE
             IF      SCR1              >    04
               MOVE  MSG28             TO   MMSG
             ELSE
               MOVE  MSG14             TO   MMSG.
       110-EXIT.
           EXIT.

       120-BACKWARD.
           MOVE    LOW-VALUES          TO   STSDK
           START   SMP-DISK            KEY  >=   SMPDK.
       120-READ-LOOP.
           READ    SMP-DISK                 PRIOR
070505                                      NO LOCK
           IF      RETSMP              =    '00'                    AND
                   SMPDK               >    WRKLOW
             MOVE  SMPD                TO   SMP
             IF    SCR4                <    +3                     AND
                  (SMPSURVEY           NOT  =  RSURV     (SCR2) OR
                   SMPMOD              NOT  =  RMOD      (SCR2))
               IF  SCR2                >    +1
                 SET  SCR2             DOWN BY  +1
                 SET  SCR4             TO   +3
               ELSE
                 GO                    TO   120-CONT
               END-IF
             END-IF
             MOVE  SMP                 TO   WRKPF7
             PERFORM 130-SELECT        THRU 130-EXIT
             IF    WRKKEY              =    NEWKEY
               MOVE  SMPSURVEY         TO   RSURV         (SCR2)
               MOVE  SMPMOD            TO   RMOD          (SCR2)
               MOVE  SMPPGM            TO   RPGM          (SCR2  SCR4)
               MOVE  SMPSTDT           TO   RSTDT         (SCR2  SCR4)
               MOVE  SMPPCT            TO   WRKPCT2
               COMPUTE  WRKPCT2        =    WRKPCT2  *  100
               MOVE  WRKPCT2           TO   RPCT9         (SCR2  SCR4)
               IF    SCR2              =    +05                    AND
                     SCR4              =    +03
                 MOVE  SMPKEY          TO   WRKPF8
               END-IF
               IF    SCR4              =    +3
                 MOVE  SMPKEY          TO   STSKEY
                 IF    STSKEY          NOT  =  STSDK
                   MOVE  STSKEY        TO   STSDK
                   READ  STS-DISK      NO   LOCK
                   IF    RETSTS        NOT  =    '00'
                     INITIALIZE             STSDATA
                     MOVE  STS         TO   STSD
                   ELSE
                     MOVE  STSD        TO   STS
                   END-IF
                 END-IF
                 MOVE  STSSPACE        TO   RSPACE     (SCR2)
                 MOVE  STSPMOD         TO   WRKPCT1
                 COMPUTE  WRKPCT1      =    WRKPCT1 *  100
                 MOVE  WRKPCT1         TO   RPMOD      (SCR2)
               END-IF
               IF    SCR4              <    +02
                 SET SCR2              DOWN  BY  +1
                 SET SCR4              TO   +03
               ELSE
                 SET SCR4              DOWN  BY  +1
               END-IF
             END-IF
             IF    SCR2                >    +0
               GO                      TO   120-READ-LOOP.
           IF      SCR2                =    +0
             MOVE  MSG28               TO   MMSG
           ELSE
             MOVE  MSG13               TO   MMSG.
       120-CONT.
           PERFORM 140-SHIFT           THRU 140-EXIT
           SET     INDON          (97) TO   TRUE.
       120-EXIT.
           EXIT.

       130-SELECT.
           MOVE    SMPSCHL             TO   WRKSCHL
           MOVE    SMPSSN              TO   WRKSSN
           MOVE    SMPJOB              TO   WRKJOB.
       130-EXIT.
           EXIT.

       140-SHIFT.
      ***************************************************************
      ***  THIS PROCEDURE WILL SHIFT PROGRAM RECORDS (SMP) FROM   ***
      ***  RIGHT TO LEFT.  THIS PROCEDURE IS CALLED BY            ***
      ***  120-BACKWARD.  WHEN ON-LINE PROGS. PAGE BACKWARDS THEY ***
      ***  FILL THE SCREEN FROM THE BOTTOM UP, OR IN THIS CASE    ***
      ***  THE BOTTOM RIGHT HAND CORNER OF THE SCREEN TO THE      ***
      ***  UPPER LEFT.  WITH OUT THE SHIFT PROGRAM, BLANK PROGRAM ***
      ***  FIELDS WOULD APPEAR IN FRONT OF COMPLETED PROGRAM      ***
      ***  FIELDS INSTEAD OF AFTER.                               ***
      ***************************************************************
           SET     SCR1  SCR4          TO   +1
           SET     IDX1                TO   SCR1
           SET     IDX4                TO   SCR4
           MOVE    ALL  'X'            TO   OLDSURV    OLDMOD.
       140-LOOP.
           IF      OLDSURV             NOT  =  RSURV    (SCR1)     OR
                   OLDMOD              NOT  =  RMOD     (SCR1)
             MOVE  RSURV       (SCR1)  TO   OLDSURV
             MOVE  RMOD        (SCR1)  TO   OLDMOD
             SET   IDX1                TO   SCR1
             SET   IDX4                TO   SCR4.
           IF     (RPGM  (SCR1  SCR4)  >    SPACES                 OR
                   RSTDT (SCR1  SCR4)  >    SPACES                 OR
                  (RPCT  (SCR1  SCR4)  >    SPACES              AND
                   RPCT  (SCR1  SCR4)  NOT  =  '   . '))
             IF   (IDX1                NOT  =  SCR1                OR
                   IDX4                NOT  =  SCR4)
               MOVE  RPGM  (SCR1  SCR4) TO  RPGM  (IDX1  IDX4)
               MOVE  RSTDT (SCR1  SCR4) TO  RSTDT (IDX1  IDX4)
               MOVE  RPCT  (SCR1  SCR4) TO  RPCT  (IDX1  IDX4)
               MOVE  SPACES            TO   RPGM  (SCR1  SCR4)
               MOVE  ZEROS             TO   RSTDT (SCR1  SCR4)
                                            RPCT9 (SCR1  SCR4)
               MOVE  IDX1              TO   IDXCP
               MOVE  IDX4              TO   IDXRP
             ELSE
               SET   IDXCP             TO   SCR1
               SET   IDXRP             TO   SCR4
             END-IF
             COMPUTE  IDXCP            =   (IDXCP - 1) * 3 + IDXRP + 78
             SET   IND1                TO   IDXCP
             SET   INDON        (IND1) TO   TRUE
             IF    IDX4                >    +2
               ADD   +1                TO   IDX1
               MOVE  +1                TO   IDX4
             ELSE
               ADD   +1                TO   IDX4.
           IF      SCR1                <    +5
             IF    SCR4                <    +3
               SET  SCR4               UP   BY  +1
               GO                      TO   140-LOOP
             ELSE
               SET  SCR1               UP   BY +1
               SET  SCR4               TO   +1
               GO                      TO   140-LOOP
           ELSE
             IF    SCR4                <    +3
               SET  SCR4               UP   BY  +1
               GO                      TO   140-LOOP.
       140-EXIT.
           EXIT.

      *****************************************************************
       300-UPDATE.
           IF      LNKFAYZ      (1 03) NOT  =   'U'
             PERFORM 100-DISPLAY       THRU 100-EXIT
             MOVE    MSG32             TO   MMSG
             GO                        TO   300-EXIT.
           MOVE    ZEROS               TO   IND              WRKROW
           MOVE    HIGH-VALUES         TO   UPDTBL
           MOVE    'N'                 TO   WRKERR
           MOVE    LNKDIST             TO   STHKEY
           MOVE    LNKFY               TO   STHFY
           MOVE    NEWSSN              TO   STHSSN
           MOVE    NEWJOB              TO   STHJOB
           MOVE    NEWSCHL             TO   STHSCHL
           MOVE    STHKEY              TO   STHDK
           READ    STH-DISK            WITH NO LOCK
           IF      RETSTH              NOT  =   '00'
             INITIALIZE                     STHDATA
             MOVE  STH                 TO   STHD
           ELSE
             MOVE  STHD                TO   STH.
       300-MOVE.
           MOVE    MLAST               TO   STHLAST
           MOVE    MFIRST              TO   STHFIRST
           MOVE    MMINIT              TO   STHMINIT
           MOVE    MTABLE              TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR50               TO   STHTABLE9
                                            MTABLE
           MOVE    MFUND               TO   STHFUND
           MOVE    MSALARY             TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR60               TO   STHSALARY    NBRZ2
           MOVE    NBRZ2               TO   MSALARY
           MOVE    MHRLY               TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR35               TO   STHHRLY      NBRZ3
           MOVE    NBRZ3               TO   MHRLY
           MOVE    MPSCHL              TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   WRKPCT1      NBRZZ9
           MOVE    NBRZZ9              TO   MPSCHL
           COMPUTE WRKPCT1             =    WRKPCT1 / 100
           MOVE    WRKPCT1             TO   STHPSCHL
           MOVE    MDAYS1              TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   STHDAYS1     NBRZZZ
           MOVE    NBRZZZ              TO   MDAYS1
           MOVE    MDAYS2              TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   STHDAYS2     NBRZZZ
           MOVE    NBRZZZ              TO   MDAYS2
           MOVE    MDAYS3              TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   STHDAYS3     NBRZZZ
           MOVE    NBRZZZ              TO   MDAYS3
           MOVE    MDAYS4              TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   STHDAYS4     NBRZZZ
           MOVE    NBRZZZ              TO   MDAYS4.
       300-EDIT.
           IF      WRKERR              =    'N'                    AND
                   STH                 NOT  =    STHD
             MOVE  'U'                 TO   WRKERR
             MOVE  STH                 TO   STHD
             IF    RETSTH              NOT  =   '00'
               WRITE STHD
             ELSE
               REWRITE STHD.


           MOVE    LNKDIST             TO   SMPKEY      STSKEY
           MOVE    LNKFY               TO   SMPFY       STSFY
           MOVE    NEWSSN              TO   SMPSSN      STSSSN
           MOVE    NEWJOB              TO   SMPJOB      STSJOB
           MOVE    NEWSCHL             TO   SMPSCHL     STSSCHL
           PERFORM 310-LINE            THRU 310-EXIT
             VARYING SCR3              FROM +1 BY +1
               UNTIL                   SCR3 >  +05
           IF      UPDTBL              NOT  =  HIGH-VALUES
             PERFORM 330-COPY          THRU 330-EXIT
               VARYING SCR3            FROM +1 BY +1
                 UNTIL                 SCR3 >  +05.
           PERFORM   340-SATSY-EDIT    THRU 340-EXIT
           IF        WRKERR            =    'Y'
             MOVE    MSG21             TO   MMSG
           ELSE
             SET     INDON       (97)  TO   TRUE
             IF      WRKERR            =    'U'
               MOVE  MSG24             TO   MMSG
             ELSE
               MOVE  MSG22             TO   MMSG.
       300-EXIT.
           EXIT.

       310-LINE.
           ADD     +1                  TO   WRKROW
           MOVE    +1                  TO   WRKCOL
           SET     SCR4                TO   +1
           MOVE    SPACES              TO   WRKADDLN
           MOVE    RSURV        (SCR3) TO   STSSURVEY
           MOVE    RMOD         (SCR3) TO   STSMOD
      **************************************************************
      ***  TIME/SPACE (STS) CONTENT EDITS.                       ***
      **************************************************************
           IF      STSSURVEY           <    '1'                    OR
                   STSSURVEY           >    '4'
             MOVE  SPACES              TO   RSURV       (SCR3).
           IF      STSMOD9             NOT  NUMERIC                OR
                   STSMOD9             NOT  >  ZERO
             MOVE  SPACES              TO   RMOD        (SCR3).

           IF      RSURV        (SCR3) =    SPACES                 OR
                   RMOD         (SCR3) =    SPACES
             MOVE  SPACES              TO   RLINE           (SCR3)
             GO                        TO   310-EXIT.

       310-LOOP.
           IF      RPGM    (SCR3 SCR4) =    SPACES
             MOVE  ZEROS               TO   RSTDT     (SCR3  SCR4)
                                            RPCT9     (SCR3  SCR4)
             IF    SCR4                <    +3
               ADD  +1                 TO   WRKCOL
               SET  SCR4               UP   BY  +1
               GO                      TO   310-LOOP
             ELSE
               GO                      TO   310-CONT.
           MOVE    'N'                 TO   WRKERR2
042697     MOVE    LNKDIST             TO   SMPKEY
042697     MOVE    LNKFY               TO   SMPFY
042697     MOVE    NEWSSN              TO   SMPSSN
042697     MOVE    NEWJOB              TO   SMPJOB
042697     MOVE    NEWSCHL             TO   SMPSCHL
           MOVE    RSURV        (SCR3) TO   SMPSURVEY
           MOVE    RMOD         (SCR3) TO   SMPMOD
           MOVE    RPGM    (SCR3 SCR4) TO   SMPPGM
           MOVE    SMPKEY              TO   SMPDK
           READ    SMP-DISK            NO   LOCK
           IF      RETSMP              NOT  =    '00'
             INITIALIZE                     SMPDATA
             MOVE  SMP                 TO   SMPD
           ELSE
             MOVE  'N'                 TO   WRKADDLN
             MOVE  SMPD                TO   SMP
             SET   IDXCP               TO   SCR3
             SET   IDXRP               TO   SCR4
             COMPUTE  IDXCP            =   (IDXCP - 1) * 3 + IDXRP + 78
             SET   IND1                TO   IDXCP
             SET   INDON        (IND1) TO   TRUE.
           MOVE    SMPPCT              TO   OLDPCT
           MOVE    SMPSURVEY           TO   OLDSURV
           MOVE    SMPMOD              TO   OLDMOD.
       310-MOVE.
           MOVE    RSTDT   (SCR3 SCR4) TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   SMPSTDT
                                            RSTDT          (SCR3 SCR4)
           MOVE    RPCT    (SCR3 SCR4) TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR31               TO   WRKPCT2
                                            RPCT9          (SCR3 SCR4)
           COMPUTE WRKPCT2             =    WRKPCT2 / 100
           MOVE    WRKPCT2             TO   SMPPCT.
       310-EDIT-ACTION.
           IF      RETSMP              NOT  =  '00'
             MOVE  'A'                 TO   WRKACT
             IF    SMPSTDT             =    ZEROS                 AND
                   SMPPCT              =    ZEROS
               MOVE  SPACES            TO   RPGM      (SCR3 SCR4)
             END-IF
           ELSE
             IF    SMPSTDT             >    ZERO                  OR
                   SMPPCT              >    ZERO
               MOVE  'C'               TO   WRKACT
             ELSE
               MOVE  'D'               TO   WRKACT.
       310-WRITE.
           SET     EDT1                TO   SMPSURVEY9
           SET     EDT2                TO   SMPMOD9
           COMPUTE  EDTPCT (EDT1 EDT2) =    EDTPCT (EDT1 EDT2) -
                                              OLDPCT + SMPPCT
           IF      WRKACT              =    'D'
             MOVE  'U'                 TO   WRKERR2
             MOVE  SPACES              TO   RPLIN           (SCR3 SCR4)
             SET   IDXCP               TO   SCR3
             SET   IDXRP               TO   SCR4
             COMPUTE  IDXCP            =   (IDXCP - 1) * 3 + IDXRP + 78
             SET   IND1                TO   IDXCP
             SET   INDOFF       (IND1) TO   TRUE
             DELETE SMP-DISK
             IF    SMPPGM              =    EDTLASTPGM   (EDT1 EDT2)
               MOVE  SPACES            TO   EDTLASTPGM   (EDT1 EDT2)
               MOVE  SMPKEY            TO   SMPDK
               START SMP-DISK          KEY  >=  SMPDK
               READ  SMP-DISK               PRIOR
070505                                      NO LOCK
               MOVE  SMPD              TO   SMP
               IF    RETSMP            =    '00'                   AND
                     SMPDIST           =    LNKDIST                AND
                     SMPFY             =    LNKFY                  AND
                     SMPSSN            =    NEWSSN                 AND
                     SMPJOB            =    NEWJOB                 AND
                     SMPSCHL           =    NEWSCHL                AND
                     SMPSURVEY         =    OLDSURV                AND
                     SMPMOD            =    OLDMOD
                 MOVE  SMPPGM          TO   EDTLASTPGM   (EDT1 EDT2)
               ELSE
                 MOVE  SPACES          TO   EDTMODUPD    (EDT1 EDT2)
                 SUBTRACT  +1          FROM EDTNBRMOD    (EDT1)
                                            EDTEMPTY     (EDT1)
                 IF    OLDMOD          =    EDTLASTMOD   (EDT1)
                   MOVE  SPACES        TO   EDTLASTMOD   (EDT1)
                   IF  SMPSURVEY       =    OLDSURV
                     MOVE  SMPMOD      TO   EDTLASTMOD   (EDT1)
                   END-IF
                 END-IF
               END-IF
             END-IF
           ELSE
             IF      WRKERR2           =    'N'
               IF    SMP               NOT  =   SMPD
                 IF    SMPPGM          >    EDTLASTPGM    (EDT1 EDT2)
                   MOVE  SMPPGM        TO   EDTLASTPGM    (EDT1 EDT2)
                 END-IF
                 MOVE  'U'             TO   WRKERR2
                 MOVE  SMP             TO   SMPD
                 IF    RETSMP          =    '00'
                   REWRITE SMPD
                 ELSE
                   IF    WRKADDLN      =    SPACES
                     MOVE  'Y'         TO   WRKADDLN
                   END-IF
                   IF EDTMODUPD (EDT1 EDT2) NOT  =  'Y'
                     MOVE  'Y'         TO   EDTMODUPD     (EDT1 EDT2)
                     ADD   +1          TO   EDTNBRMOD     (EDT1)
                                            EDTEMPTY      (EDT1)
                     IF    SMPMOD      >    EDTLASTMOD    (EDT1)
                       MOVE  SMPMOD    TO   EDTLASTMOD    (EDT1)
                     END-IF
                   END-IF
                   SET     IDXCP       TO   SCR3
                   SET     IDXRP       TO   SCR4
                   COMPUTE IDXCP       =   (IDXCP - 1) * 3 + IDXRP + 78
                   SET     IND1        TO   IDXCP
                   SET     INDON (IND1) TO  TRUE
                   WRITE   SMPD.
           IF      WRKERR2             =    'Y'
             MOVE  WRKERR2             TO   WRKERR
           ELSE
             IF      WRKERR2           =    'U'                     AND
                     WRKERR            =    'N'
               MOVE  WRKERR2           TO   WRKERR.
           IF      SCR4                <    +3
             ADD   +1                  TO   WRKCOL
             SET   SCR4                UP   BY  +1
             GO                        TO   310-LOOP.
       310-CONT.
           SET     EDT1                TO   STSSURVEY9
           SET     EDT2                TO   STSMOD9
           IF      RPGM       (SCR3 1) =    SPACES                 AND
                   RPGM       (SCR3 2) =    SPACES                 AND
                   RPGM       (SCR3 3) =    SPACES
             MOVE  ZEROS               TO   RSPACE          (SCR3)
                                            RPMOD           (SCR3)
             IF    EDTMODUPD (EDT1 EDT2) =  'Y'
               GO                      TO   310-EXIT.
           MOVE    STSSURVEY           TO   SRCHSURVEY
           MOVE    STSMOD              TO   SRCHMOD
           PERFORM 320-SRCH-UPD        THRU 320-EXIT
           IF      SRCHFND             =    'Y'
             GO                        TO   310-EXIT.
           MOVE    'N'                 TO   WRKERR2
           MOVE    STSKEY              TO   STSDK
           READ    STS-DISK            NO   LOCK
           IF      RETSTS              NOT  =    '00'
             INITIALIZE                     STSDATA
             MOVE  STS                 TO   STSD
           ELSE
             MOVE  STSD                TO   STS
             SET   IDXCP               TO   SCR3
             COMPUTE  IDXCP            =   (IDXCP - 1) * 10 + 30
             SET   IND1                TO   IDXCP
             SET   INDON        (IND1) TO   TRUE
             IF    WRKADDLN            =    'Y'
               MOVE  STSSPACE          TO   RSPACE            (SCR3)
               MOVE  STSPMOD           TO   WRKPCT1
               COMPUTE  WRKPCT1        =    WRKPCT1  *  100
               MOVE  WRKPCT1           TO   RPMOD             (SCR3).
           MOVE    STSPMOD             TO   OLDPMOD
           MOVE    RSPACE       (SCR3) TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR40               TO   STSSPACE
                                            RSPACE            (SCR3)
           MOVE    RPMOD        (SCR3) TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   WRKPCT1
                                            RPMOD             (SCR3)
           COMPUTE WRKPCT1             =    WRKPCT1 / 100
           MOVE    WRKPCT1             TO   STSPMOD


           COMPUTE EDTPMOD (EDT1)      =    EDTPMOD (EDT1) - OLDPMOD +
                                              STSPMOD
           IF      RETSTS              =    '00'                   AND
                   STSSPACE            =    ZEROS                  AND
                   STSPMOD             =    ZEROS
             IF    OLDPMOD             >    ZEROS
               ADD  +1                 TO   EDTEMPTY    (EDT1)
             END-IF
             SET   UPD1                TO   SRCHIDX
             MOVE  STSSURVEY           TO   UPDSURVEY  (UPD1)
             MOVE  STSMOD              TO   UPDMOD     (UPD1)
             MOVE  STSSPACE            TO   UPDSPACE   (UPD1)
             MOVE  STSPMOD             TO   UPDPMOD    (UPD1)
             MOVE  'U'                 TO   WRKERR2
             SET   IDXCP               TO   SCR3
             COMPUTE  IDXCP            =   (IDXCP - 1) * 10 + 30
             SET   IND1                TO   IDXCP
             SET   INDOFF       (IND1) TO   TRUE
             DELETE STS-DISK
           ELSE
             IF     (WRKERR2           =    'N')                   AND
                    (STSSPACE          >    0                   OR
                     STSPMOD           >    0)
               IF    STS               NOT  =   STSD
                 SET   UPD1            TO   SRCHIDX
                 MOVE  STSSURVEY       TO   UPDSURVEY  (UPD1)
                 MOVE  STSMOD          TO   UPDMOD     (UPD1)
                 MOVE  STSSPACE        TO   UPDSPACE   (UPD1)
                 MOVE  STSPMOD         TO   UPDPMOD    (UPD1)
                 MOVE  'U'             TO   WRKERR2
                 MOVE  STS             TO   STSD
                 IF    RETSTS          =    '00'
                   IF  OLDPMOD         =    ZEROS                  AND
                       STSPMOD         >    ZEROS
                     SUBTRACT  +1      FROM EDTEMPTY   (EDT1)
                   END-IF
                   IF  OLDPMOD         >    ZEROS                  AND
                       STSPMOD         =    ZEROS
                     ADD  +1           TO   EDTEMPTY   (EDT1)
                   END-IF
                   REWRITE STSD
                 ELSE
                   IF      STSPMOD     >    ZEROS
                     SUBTRACT +1       FROM EDTEMPTY   (EDT1)
                   END-IF
                   SET     IDXCP       TO   SCR3
                   COMPUTE IDXCP       =   (IDXCP - 1) * 10 + 30
                   SET     IND1        TO   IDXCP
                   SET     INDON (IND1) TO  TRUE
                   WRITE   STSD.
           IF      WRKERR2             =    'Y'
             MOVE  WRKERR2             TO   WRKERR
           ELSE
             IF      WRKERR2           =    'U'                     AND
                     WRKERR            =    'N'
               MOVE  WRKERR2           TO   WRKERR.
       310-EXIT.
           EXIT.

       320-SRCH-UPD.
      ****************************************************************
      ***  THIS PROCEDURE SEARCHS THE UPDTBL (UPDATE TABLE) TO     ***
      ***  SEE IF THE TIME/SPACES (STS) RECORD FOR THIS SURVEY/MOD ***
      ***  HAS ALREADY BEEN UPDATED IN THE DATABASE FOR THIS PAGE. ***
      ***  INPUT:  SRCHSURVEY - SURVEY                             ***
      ***          SRCHMOD    - MOD                                ***
      ***  OUTUPT: SRCHFND    - FOUND, 'Y':YES  ' ':NO             ***
      ***          SRCHIDX    - THE INDEX NUMBER IN THE UPDTBL     ***
      ***                       IF THE SURVEY/MOD IS FOUND OR THE  ***
      ***                       NEXT EMPTY OCCURANCE IN THE TABLE  ***
      ***                       IF THE SURVEY/MOD IS NOT FOUND     ***
      ****************************************************************
           MOVE    SPACES              TO   SRCHFND
           SET     UPD1                TO   +1.
       320-LOOP.
           IF      UPDSURVEY    (UPD1) =    HIGH-VALUES            OR
                   UPDMOD       (UPD1) =    HIGH-VALUES
             SET   SRCHIDX             TO   UPD1
           ELSE
             IF    UPDSURVEY    (UPD1) =    SRCHSURVEY             AND
                   UPDMOD       (UPD1) =    SRCHMOD
               MOVE  'Y'               TO   SRCHFND
               SET   SRCHIDX           TO   UPD1
             ELSE
               IF  UPD1                <    +5
                 SET  UPD1             UP   BY  +1
                 GO                    TO   320-LOOP
               ELSE
                 SET  SRCHIDX          TO   UPD1.
       320-EXIT.
           EXIT.

       330-COPY.
      ***************************************************************
      ***  DUE TO THE FACT THAT A SINGLE TIME/SPACE (STS) RECORD  ***
      ***  MAY APPEAR ON THE SCREEN MULTIPLE TIMES, A TABLE IS    ***
      ***  BUILT (UPDTBL) TO RECORD THE FIRST CHANGE MAY TO THE   ***
      ***  TIME/SPACE RECORD.  THE 330-COPY PROC. WILL COPY THE   ***
      ***  FIRST CHANGE OF THE STS RECORD TO THE OTHER OCCURACES  ***
      ***  OF THE SAME RECORD.                                    ***
      ***************************************************************
           MOVE    RSURV        (SCR3) TO   SRCHSURVEY
           MOVE    RMOD         (SCR3) TO   SRCHMOD
           PERFORM 320-SRCH-UPD        THRU 320-EXIT
           IF      SRCHFND             =    'Y'
             SET   UPD1                TO   SRCHIDX
             MOVE  UPDSPACE     (UPD1) TO   RSPACE         (SCR3)
             MOVE  UPDPMOD      (UPD1) TO   WRKPCT1
             COMPUTE  WRKPCT1          =    WRKPCT1 *  100
             MOVE  WRKPCT1             TO   RPMOD          (SCR3).
       330-EXIT.
           EXIT.

       340-SATSY-EDIT.
      ***************************************************************
      ***  THE EDIT OF RECORDS IS BEING DONE IN A SEPERATE PASS   ***
      ***  THRU THE SCREEN.  IN ORDER TO DO RELATIONAL EDITS THE  ***
      ***  ENTIRE SCREEN MUST BE SCANNED TO UPDATE THE EDTTBL     ***
      ***  (THIS IS BEING DONE IN 310-LINE), THEN EACH FIELD CAN  ***
      ***  BE EDITED AGAINST THE NEW EDTTBL.                      ***
      ***************************************************************
           MOVE    SPACES              TO   WRKERR2
           INITIALIZE                       STHDATA
           MOVE    MLAST               TO   STHLAST
           MOVE    MFIRST              TO   STHFIRST
           MOVE    MMINIT              TO   STHMINIT
           MOVE    MTABLE              TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR50               TO   STHTABLE9
           MOVE    MFUND               TO   STHFUND
           MOVE    MSALARY             TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR60               TO   STHSALARY
           MOVE    MHRLY               TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR35               TO   STHHRLY
           MOVE    MPSCHL              TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   WRKPCT1
           COMPUTE WRKPCT1             =    WRKPCT1 / 100
           MOVE    WRKPCT1             TO   STHPSCHL
           MOVE    MDAYS1              TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   STHDAYS1
           MOVE    MDAYS2              TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   STHDAYS2
           MOVE    MDAYS3              TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   STHDAYS3
           MOVE    MDAYS4              TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   STHDAYS4
      **************************************************************
      ***  TEACHER HEADER (STH) CONTENT EDITS.                   ***
      **************************************************************
           IF      STHLAST             NOT  >   SPACES
             SET   INDON          (19) TO   TRUE
             MOVE  'Y'                 TO   WRKERR.
           MOVE    LNKDIST             TO   TBLKEY
           MOVE    LNKFY               TO   TBLFY
           MOVE    'TBL'               TO   TBLPREF
           MOVE    STHTABLE            TO   TBLTBL
           MOVE    TBLKEY              TO   CRFDK
           READ    CRF-DISK
           IF      RETCRF              NOT  =   '00'
             INITIALIZE                     TBLDATA
             SET   INDON          (20) TO   TRUE
             MOVE  'Y'                 TO   WRKERR
           ELSE
             MOVE  CRFD                TO   TBL.
           IF      STHFUND             NOT  =  TBLFTYPE
             SET   INDON          (21) TO   TRUE
             MOVE  'Y'                 TO   WRKERR.
           IF      STHSALARY           NOT  >  ZERO
             SET   INDON          (22) TO   TRUE
             MOVE  'Y'                 TO   WRKERR.
           IF      STHPSCHL            <    0.01                   OR
                   STHPSCHL            >    1.00
             SET   INDON          (24) TO   TRUE
             MOVE  'Y'                 TO   WRKERR.

      **************************************************************
      ***  TEACHER HEADER (STH) RELATIONAL EDITS.                ***
      **************************************************************
           MOVE    SPACES              TO   WRKSMP
           IF      EDTNBRMOD      (01) >    ZERO
             MOVE  'Y'                 TO   WRKSMP1.
           IF      EDTNBRMOD      (02) >    ZERO
             MOVE  'Y'                 TO   WRKSMP2.
           IF      EDTNBRMOD      (03) >    ZERO
             MOVE  'Y'                 TO   WRKSMP3.
           IF      EDTNBRMOD      (04) >    ZERO
             MOVE  'Y'                 TO   WRKSMP4.
           IF      WRKSMP              =    SPACES
             SET   INDON          (29) TO   TRUE
             SET   INDON          (31) TO   TRUE
             SET   INDON          (32) TO   TRUE
             MOVE  'Y'                 TO   WRKERR.
           IF      STHHRLY             >    ZERO
             COMPUTE  WRKHOURS ROUNDED =    STHSALARY / STHHRLY
             COMPUTE  WRKDAYS  ROUNDED =    WRKHOURS / IOPSEHRS
             COMPUTE  WRKFTE   ROUNDED =    WRKDAYS / IOPSEHDAYS
           ELSE
             COMPUTE  WRKFTE   ROUNDED =   (STHDAYS1 + STHDAYS2 +
                                            STHDAYS3 + STHDAYS4) /
                                            IOPSECDAYS.
           IF         WRKFTE           >    ZERO
             COMPUTE  WRKSALARY        =    STHSALARY / WRKFTE
           ELSE
             MOVE     ZEROS            TO   WRKSALARY.
           IF      WRKSALARY           <    IOPSEFSAL              OR
                   WRKSALARY           >    IOPSETSAL
             SET   INDON          (22) TO   TRUE
             MOVE  'Y'                 TO   WRKERR.
           COMPUTE WRKDAYS             =   (STHDAYS1 + STHDAYS2 +
                                            STHDAYS3 + STHDAYS4)
           IF      WRKDAYS             >    IOPSEDAYS
             SET   INDON          (25) TO   TRUE
             SET   INDON          (26) TO   TRUE
             SET   INDON          (27) TO   TRUE
             SET   INDON          (28) TO   TRUE
             MOVE  'Y'                 TO   WRKERR.
           IF      WRKDAYS             =    ZEROS                  AND
                   STHHRLY             =    ZEROS
             SET   INDON          (23) TO   TRUE
             SET   INDON          (25) TO   TRUE
             SET   INDON          (26) TO   TRUE
             SET   INDON          (27) TO   TRUE
             SET   INDON          (28) TO   TRUE
             MOVE  'Y'                 TO   WRKERR.
           IF      WRKDAYS             >    ZEROS                  AND
                   STHHRLY             >    ZEROS
             SET   INDON          (23) TO   TRUE
             IF    STHDAYS1            >    ZERO
               SET INDON          (25) TO   TRUE
             END-IF
             IF    STHDAYS2            >    ZERO
               SET INDON          (26) TO   TRUE
             END-IF
             IF    STHDAYS3            >    ZERO
               SET INDON          (27) TO   TRUE
             END-IF
             IF    STHDAYS4            >    ZERO
               SET INDON          (28) TO   TRUE
             END-IF
             MOVE  'Y'                 TO   WRKERR.
           IF     (STHDAYS1            >    ZEROS               AND
                   WRKSMP1             NOT  =  'Y')                OR
                  (STHDAYS1            =    ZEROS               AND
                   STHHRLY             =    ZEROS               AND
                   WRKSMP1             =    'Y')
             SET   INDON          (25) TO   TRUE
             MOVE  'Y'                 TO   WRKERR.
           IF     (STHDAYS2            >    ZEROS               AND
                   WRKSMP2             NOT  =  'Y')                OR
                  (STHDAYS2            =    ZEROS               AND
                   STHHRLY             =    ZEROS               AND
                   WRKSMP2             =    'Y')
             SET   INDON          (26) TO   TRUE
             MOVE  'Y'                 TO   WRKERR.
           IF     (STHDAYS3            >    ZEROS               AND
                   WRKSMP3             NOT  =  'Y')                OR
                  (STHDAYS3            =    ZEROS               AND
                   STHHRLY             =    ZEROS               AND
                   WRKSMP3             =    'Y')
             SET   INDON          (27) TO   TRUE
             MOVE  'Y'                 TO   WRKERR.
           IF     (STHDAYS4            >    ZEROS               AND
                   WRKSMP4             NOT  =  'Y')                OR
                  (STHDAYS4            =    ZEROS               AND
                   STHHRLY             =    ZEROS               AND
                   WRKSMP4             =    'Y')
             SET   INDON          (28) TO   TRUE
             MOVE  'Y'                 TO   WRKERR.

           SET     SCR3                TO   +1
           MOVE    +1                  TO   WRKROW.
       340-ROW-LOOP.
           IF      RSURV        (SCR3) =    SPACES                 OR
                   RMOD         (SCR3) =    SPACES
             IF      SCR3              <    +5
               SET   SCR3              UP   BY  +1
               ADD   +1                TO   WRKROW
               GO                      TO   340-ROW-LOOP
             ELSE
               GO                      TO   340-TEST.
           MOVE    RSURV        (SCR3) TO   STSSURVEY
           MOVE    RMOD         (SCR3) TO   STSMOD
           SET     EDT1                TO   STSSURVEY9
           SET     EDT2                TO   STSMOD9
           MOVE    RPMOD        (SCR3) TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   WRKPCT1
           COMPUTE WRKPCT1             =    WRKPCT1 / 100
           MOVE    WRKPCT1             TO   STSPMOD
      **************************************************************
      ***  TIME/SPACE (STS) CONTENT EDITS.                       ***
      ***  BECAUSE SURVEY AND MOD ARE PART OF THE STS AND SMP    ***
      ***  KEY, THE EDIT OF THOSE TWO FIELDS IS BEING DONE IN    ***
      ***  310-LINE.
      **************************************************************
           IF      STSPMOD             >    1
             MOVE  'Y'                 TO   WRKERR
             COMPUTE WRKIDX            =   (((WRKROW - 1) * 10) + 38)
             SET     INDON    (WRKIDX) TO   TRUE.

      **************************************************************
      ***  TIME/SPACE (STS) RELATIONAL EDITS.                    ***
      **************************************************************
           IF      STSMOD              =    EDTLASTMOD   (EDT1)    AND
                   EDTNBRMOD  (EDT1)   >    IOPSEMOD
             MOVE  'Y'                 TO   WRKERR2
             COMPUTE WRKIDX            =   (((WRKROW - 1) * 10) + 29)
             SET     INDON    (WRKIDX) TO   TRUE.
           IF      STSMOD              =    EDTLASTMOD   (EDT1)    AND
                   EDTPMOD    (EDT1)   >    1
             MOVE  'Y'                 TO   WRKERR
             COMPUTE WRKIDX            =   (((WRKROW - 1) * 10) + 38)
             SET     INDON    (WRKIDX) TO   TRUE.
           IF      STSMOD              =    EDTLASTMOD   (EDT1)    AND
                   EDTPMOD    (EDT1)   NOT  =  1                   AND
                   EDTEMPTY   (EDT1)   =    ZERO
             MOVE  'Y'                 TO   WRKERR
             COMPUTE WRKIDX            =   (((WRKROW - 1) * 10) + 38)
             SET     INDON    (WRKIDX) TO   TRUE.
           IF      STSMOD              =    EDTLASTMOD   (EDT1)    AND
                   EDTPMOD    (EDT1)   =    1                      AND
                   EDTEMPTY   (EDT1)   >    ZERO
             MOVE  'Y'                 TO   WRKERR
             COMPUTE WRKIDX            =   (((WRKROW - 1) * 10) + 38)
             SET     INDON    (WRKIDX) TO   TRUE.

           SET     SCR4                TO   +1
           MOVE    +1                  TO   WRKCOL.
       340-COL-LOOP.
           IF      RPGM    (SCR3 SCR4) =    SPACES
             IF    SCR4                <    +3
               SET SCR4                UP   BY  +1
               ADD +1                  TO   WRKCOL
               GO                      TO   340-COL-LOOP
             ELSE
               GO                      TO   340-CONT.
           MOVE    RSURV        (SCR3) TO   SMPSURVEY
           MOVE    RMOD         (SCR3) TO   SMPMOD
           SET     EDT1                TO   SMPSURVEY9
           SET     EDT2                TO   SMPMOD9
           MOVE    RPGM    (SCR3 SCR4) TO   SMPPGM
           MOVE    RSTDT   (SCR3 SCR4) TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR30               TO   SMPSTDT
           MOVE    RPCT    (SCR3 SCR4) TO   NBRIN
           PERFORM 600-CONVERT         THRU 600-EXIT
           MOVE    NBR31               TO   WRKPCT2
           COMPUTE WRKPCT2             =    WRKPCT2 / 100
           MOVE    WRKPCT2             TO   SMPPCT
      **************************************************************
      ***  MOD/PROGRAM (SMP) CONTENT EDITS.                      ***
      **************************************************************
           MOVE    LNKDIST             TO   FPGKEY
           MOVE    LNKFY               TO   FPGFY
           MOVE    'FPG'               TO   FPGPREF
           MOVE    SMPPGM              TO   FPGFPG
           MOVE    FPGKEY              TO   CRFDK
           READ    CRF-DISK
           IF      RETCRF              NOT  =   '00'
             MOVE  'Y'                 TO   WRKERR2
             COMPUTE WRKIDX            =   ((WRKROW - 1) * 10) + 31 +
                                           ((WRKCOL - 1) * 2)
             SET     INDON    (WRKIDX) TO   TRUE.

      **************************************************************
      ***  MOD/PROGRAM (SMP) RELATIONAL EDITS.                   ***
      **************************************************************
           IF      SMPSTDT             >    ZERO                   AND
                   SMPPCT              >    ZERO
             MOVE  'Y'                 TO   WRKERR
             COMPUTE WRKIDX            =   ((WRKROW - 1) * 10) + 32 +
                                           ((WRKCOL - 1) * 2)
             SET     INDON    (WRKIDX) TO   TRUE.
           IF      SMPSTDT             >    ZERO                   AND
                   EDTPCT  (EDT1 EDT2) >    ZERO
             MOVE  'Y'                 TO   WRKERR
             COMPUTE WRKIDX            =   ((WRKROW - 1) * 10) + 32 +
                                           ((WRKCOL - 1) * 2)
             SET     INDON    (WRKIDX) TO   TRUE.
           IF      SMPPGM              =    EDTLASTPGM (EDT1 EDT2) AND
                   EDTPCT  (EDT1 EDT2) NOT  =  1                   AND
                   EDTPCT  (EDT1 EDT2) NOT  =  ZERO
             MOVE  'Y'                 TO   WRKERR
             COMPUTE WRKIDX            =   ((WRKROW - 1) * 10) + 32 +
                                           ((WRKCOL - 1) * 2)
             SET     INDON    (WRKIDX) TO   TRUE.
           IF      SCR4                <    +3
             SET   SCR4                UP   BY  +1
             ADD   +1                  TO   WRKCOL
             GO                        TO   340-COL-LOOP.
       340-CONT.
           IF      SCR3                <    +5
             SET   SCR3                UP   BY  +1
             ADD   +1                  TO   WRKROW
             GO                        TO   340-ROW-LOOP.
       340-TEST.
      ****************************************************************
      ***  THE FOLLOWING TEST FOR THE CONDITION WHEN THE ONLY      ***
      ***  FIELDS IN ERROR ARE THE PROTECTED FIELDS, I.E. FEFP     ***
      ***  PROGRAM AND MOD NUMBER.                                 ***
      ****************************************************************
           IF      WRKERR2             =    'Y'                    AND
                   WRKERR              NOT  =  'Y'
             MOVE  WRKERR2             TO   WRKERR
             SET   INDON          (97) TO   TRUE
           ELSE
             IF    WRKERR              =    'Y'
               SET INDOFF         (97) TO   TRUE.
       340-EXIT.
           EXIT.

      *****************************************************************
       490-HOUSEKEEPING.
           OPEN    I-O                      SCR-DISPLAY
                                            SMP-DISK
                                            STS-DISK
                                            STH-DISK
                   INPUT                    CRF-DISK
           IF      RETSCR              NOT  =   '00' AND '41'        OR
                   RETCRF              NOT  =   '00' AND '41'        OR
                   RETSMP              NOT  =   '00' AND '41'        OR
                   RETSTS              NOT  =   '00' AND '41'        OR
                   RETSTH              NOT  =   '00' AND '41'
             CALL   'EWCLP03'
               ON OVERFLOW
                 CONTINUE
             END-CALL
             MOVE  LNKFR               TO   LNKTO
             MOVE  SPACES              TO   LNKFR
           ELSE
             MOVE  LNKDIST             TO   IOPKEY
             MOVE  LNKFY               TO   IOPFY
             MOVE  'IOP'               TO   IOPPREF
             MOVE  IOPKEY              TO   CRFDK
             READ  CRF-DISK
             IF    RETCRF              NOT  =   '00'
               INITIALIZE                   IOPDATA
             ELSE
               MOVE  CRFD              TO   IOP
             END-IF
             MOVE  LNKTO               TO   LNKFR
             EVALUATE LNKSTAT
             WHEN '0'
               MOVE    LNKDBSCHL       TO   NEWSCHL
               MOVE    LNKDBSSN        TO   NEWSSN
               MOVE    LNKDBJOB        TO   NEWJOB
               PERFORM 100-DISPLAY     THRU 100-EXIT
             WHEN '1'
               MOVE  MSG04             TO   MMSG
             WHEN '2'
               MOVE  MSG05             TO   MMSG
             WHEN '3'
               MOVE  MSG06             TO   MMSG
             WHEN '4' THRU '5'
               MOVE  MSG07             TO   MMSG.
           IF      LNKSTAT             NOT  =   '0'
             SET   INDON          (15) TO   TRUE
             MOVE  ZEROS               TO   LINNBR
                                            POSNBR.
       490-EXIT.
           EXIT.

      *****************************************************************
           COPY      EWNUMBP           OF   CPYSRC.
      *****************************************************************
       990-HOUSEKEEPING.
           COPY    EWXFERP             OF   CPYSRC.
           MOVE    NEWSCHL             TO   LNKDBSCHL
           MOVE    NEWSSN              TO   LNKDBSSN
           MOVE    NEWJOB              TO   LNKDBJOB.
       990-EXIT.
           EXIT.

