//TVALOAD JOB (USERID,T208),
//    USERID,REGION=2M,TIME=(,05)
/*JOBPARM FETCH
//*
//************************************************************
//*  COBOL PLEX COMPILE, LOAD AND GO
//************************************************************
//*
//S2KCLGC  PROC OUT=A,FCP=1,FCS=1,COBNAME=TVALOAD,
//             WRKUNIT=RIO,
//             PARMS=NLPARM
//PRECOM   EXEC PGM=PRCOMC
//STEPLIB  DD   DSN=SASDWP.R116.LOAD,DISP=SHR
//SYSPRINT DD   SYSOUT=&OUT
//SYSIN    DD   DSN=SASDWP.R116.TEST(&COBNAME),
//             DISP=SHR
//SYSGO    DD   DSN=&&CSOURCE,DISP=(MOD,PASS),UNIT=RIO,
//             DCB=(BLKSIZE=800,LRECL=80,RECFM=FB),
//             SPACE=(CYL,(1,1))
//SYSUT1   DD   UNIT=&WRKUNIT,SPACE=(TRK,(20,20))
//SYSUT2   DD   UNIT=&WRKUNIT,SPACE=(TRK,(20,20))
//S2KSNAP  DD   SYSOUT=&OUT
//COB      EXEC PGM=IKFCBL00,
//             PARM=('SIZE=307200',NONUM,LOAD,APOST,NODMAP,
//             NOPMAP,NODYNAM,NORES,NOOPT),COND=(4,LT,PRECOM)
//STEPLIB  DD   DSN=SYS1.VSCOLIB,DISP=SHR
//SYSPRINT DD   SYSOUT=&OUT
//SYSUT1   DD   SPACE=(460,(700,100)),UNIT=&WRKUNIT
//SYSUT2   DD   SPACE=(460,(700,100)),UNIT=&WRKUNIT
//SYSUT3   DD   SPACE=(460,(700,100)),UNIT=&WRKUNIT
//SYSUT4   DD   SPACE=(460,(700,100)),UNIT=&WRKUNIT
//SYSUT5   DD   SPACE=(460,(700,100)),UNIT=&WRKUNIT
//SYSLIB   DD   DSN=SASDWP.R116.TEST,DISP=SHR
//SYSIN    DD   DSN=&&CSOURCE,DISP=(OLD,DELETE)
//SYSLIN   DD   DSN=&&COBOBJ,DISP=(NEW,PASS),
//             SPACE=(80,(900,100)),UNIT=&WRKUNIT
//LKED     EXEC PGM=IEWL,
//             PARM='MAP,XREF,LIST,LET,SIZE=(492K,24K)',
//             COND=((4,LT,PRECOM),(8,LT,COB))
//SYSLIN   DD   DSN=&&COBOBJ,DISP=(OLD,DELETE)
//SYSLIB   DD   DSN=SYS1.VSCLLIB,DISP=SHR
//         DD   DSN=SASDWP.R116.LOAD,DISP=SHR
//SYSLMOD  DD   DSN=SASCCT.R116.LOAD(&COBNAME),
//             DISP=SHR
//SYSPRINT DD   SYSOUT=&OUT
//SYSUT1   DD   SPACE=(1024,(400,20)),UNIT=&WRKUNIT
//*
//*  PARM WILL BE THE PASSWORD OF THE DATABASE THAT IS BEING UNLOADED.
//GO       EXEC PGM=*.LKED.SYSLMOD,PARM='TIVR',
//             COND=((4,LT,PRECOM),(8,LT,COB),(8,LT,LKED))
//STEPLIB  DD   DSN=SYS1.VSCLLIB,DISP=SHR
//         DD   DSN=SASCCT.R116.LOAD,DISP=SHR
//S2KPARMS DD   DSN=SASDWP.R116.TEST(&PARMS),DISP=SHR
//SF01     DD   UNIT=&WRKUNIT,SPACE=(TRK,(&FCP,&FCS))
//SF02     DD   UNIT=&WRKUNIT,SPACE=(TRK,(&FCP,&FCS))
//SF03     DD   UNIT=&WRKUNIT,SPACE=(TRK,(&FCP,&FCS))
//SF04     DD   UNIT=&WRKUNIT,SPACE=(TRK,(&FCP,&FCS))
//SF05     DD   UNIT=&WRKUNIT,SPACE=(TRK,(&FCP,&FCS))
//SF06     DD   UNIT=&WRKUNIT,SPACE=(TRK,(&FCP,&FCS))
//S2KPAD00 DD   DSN=&&PAD00,UNIT=&WRKUNIT,SPACE=(CYL,(2,5))
//SYSOUT   DD   SYSOUT=&OUT
//S2KMSG   DD   DCB=(BLKSIZE=1320,LRECL=132,RECFM=FB),
//             SYSOUT=&OUT
//S2KSNAP  DD   SYSOUT=&OUT,DCB=BLKSIZE=882
//SYSUDUMP DD   SYSOUT=&OUT
//S2KCOMD  DD   DUMMY
//TIMEIO   DD   SYSOUT=&OUT
//IVR94TR1 DD   DSN=SASBWC.JAN.IVR94TR1,DISP=OLD
//IVR94TR2 DD   DSN=SASBWC.JAN.IVR94TR2,DISP=OLD
//IVR94TR3 DD   DSN=SASBWC.JAN.IVR94TR3,DISP=OLD
//IVR94TR4 DD   DSN=SASBWC.JAN.IVR94TR4,DISP=OLD
//IVR94TR5 DD   DSN=SASBWC.JAN.IVR94TR5,DISP=OLD
//IVR94TR6 DD   DSN=SASBWC.JAN.IVR94TR6,DISP=OLD
//*IVR94TR7 DD   DSN=SASBWC.JAN.IVR94TR7,DISP=OLD
//*CHANGE INFL TO POINT TO THE DSN OF YOUR UNLOADED DATA FROM TVAUNLD RUN.
//INFL     DD   DSN=SASCCT.TVA.FEBOUTCT,DISP=SHR
//*
//         PEND
//*
//     EXEC S2KCLGC
//PRECOM.SYSIN DD *
       IDENTIFICATION DIVISION.
       PROGRAM-ID. TVALOAD.
       REMARKS. MODIFIED COBOL LOAD PROGRAM FOR TVA TO
      *         DO AN INCREMENTAL LOAD INTO
      *         EXISTING DATABASE IVR9RTRA.
      *
      *         THE PROGRAM CHECKS TO INSURE THAT HIGHER
      *         LEVEL RECORDS ARE NOT DUPLICATED.
      *
      *         DISPLAYS OF WHERE CLAUSES AND INSERTED RECORDS
      *         HAVE BEEN COMMENTED OUT BUT CAN BE USED AT A
      *         LATER TIME FOR DEBUGGING PURPOSES IF NEEDED.
      *
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SOURCE-COMPUTER. IBM-370.
       OBJECT-COMPUTER. IBM-370.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT IN-FILE ASSIGN TO UT-S-INFL.
      *
       DATA DIVISION.
       FILE SECTION.
       FD  IN-FILE
           RECORDING MODE IS V
           LABEL RECORDS ARE STANDARD
           BLOCK CONTAINS 6216 CHARACTERS
           RECORD CONTAINS 17 TO 346 CHARACTERS.
       01  GENERAL.
           02  HEADER PIC X(4).
           02  FILL1 PIC X(342).
       01  REC-0000.
           02  HDER PIC X(4).
           02  C0000-IO PIC X(56).
       01  REC-0200.
           02  HDER PIC X(4).
           02  C0200-IO PIC X(20).
       01  REC-0800.
           02  HDER PIC X(4).
           02  C0800-IO PIC X(13).
       01  REC-0900.
           02  HDER PIC X(4).
           02  C0900-IO PIC X(48).
       01  REC-1000.
           02  HDER PIC X(4).
           02  C1000-IO PIC X(342).
      *
       WORKING-STORAGE SECTION.
      *
       77  EOF-FLAG PIC X VALUE '0'.
       77  ERR-FLAG PIC X VALUE '0'.
       77  INSERT-MODE PIC X VALUE '0'.
       01  STACK-ZERO  PIC S9(9) COMP VALUE ZERO.
       01  CTR-0 PIC 9(8) VALUE ZERO.
       01  CTR-200 PIC 9(8) VALUE ZERO.
       01  CTR-800 PIC 9(8) VALUE ZERO.
       01  CTR-900 PIC 9(8) VALUE ZERO.
       01  CTR-1000 PIC 9(8) VALUE ZERO.
       01  DUP-CTR-0 PIC 9(8) VALUE ZERO.
       01  DUP-CTR-200 PIC 9(8) VALUE ZERO.
       01  DUP-CTR-800 PIC 9(8) VALUE ZERO.
       01  DUP-CTR-900 PIC 9(8) VALUE ZERO.
      *
      *
      *
      COMMBLOCK OF IVR94TRA.
       01  IVR94TRA.
           05  SCHEMA-NAME.
           05  DB-RETURN-CODE.
           05  FILLER.
           05  DB-LAST-DS.
           05  DB-PASSWORD.
           05  DB-NBR-OF-DS.
           05  DB-DS-POSITION.
           05  DB-LEVEL.
           05  DB-TIME.
           05  DB-DATE.
           05  DB-CYCLE.
           05  DB-SEP-SYM.
           05  DB-END-TERMINATOR.
           05  DB-STATUS.
      *
      SCHEMA C0000 OF IVR94TRA.
       01  C0000.
           05  C0100 PIC IS X(5).
           05  C0105 PIC IS X(5).
           05  C0110 PIC IS X(5).
           05  C0115 PIC IS X(5).
           05  C0120 PIC IS X(5).
           05  C0125 PIC IS X(5).
           05  C0130 PIC IS X(5).
           05  C0135 PIC IS X(5).
           05  C0198 PIC IS X(8).
           05  C0199 PIC IS X(8).
      *
      SCHEMA C0200 OF IVR94TRA.
       01  C0200.
           05  C0210 PIC IS X(4).
           05  C0215 PIC IS X(4).
           05  C0220 PIC IS X(4).
           05  C0225 PIC IS X(4).
           05  C0230 PIC IS X(4).
      *
      SCHEMA C0800 OF IVR94TRA.
       01  C0800.
           05  C0805 PIC IS X(6).
           05  C0810 PIC IS X(6).
           05  C0815 PIC IS X(1).
      *
      SCHEMA C0900 OF IVR94TRA.
       01  C0900.
           05  C0905 PIC IS X(12).
           05  C0910 PIC IS X(12).
           05  C0915 PIC IS X(12).
           05  C0920 PIC IS X(12).
      *
      SCHEMA C1000 OF IVR94TRA.
       01  C1000.
           05  C1035 PIC IS X(8).
             FORM YYYYMMDD.
           05  C1040 PIC IS X(8).
             FORM YYYYMMDD.
           05  C1180 PIC IS X(8).
             FORM YYYYMMDD.
           05  C1005 PIC IS X(3).
           05  C1010 PIC IS X(4).
           05  C1015 PIC IS X(1).
           05  C1025 PIC IS X(6).
           05  C1030 PIC IS X(7).
           05  C1045 PIC IS X(119).
           05  C1050 PIC IS X(5).
           05  C1055 PIC IS X(5).
           05  C1060 PIC IS X(5).
           05  C1065 PIC IS X(5).
           05  C1070 PIC IS X(5).
           05  C1075 PIC IS X(5).
           05  C1080 PIC IS X(5).
           05  C1085 PIC IS X(5).
           05  C1090 PIC IS X(5).
           05  C1095 PIC IS X(5).
           05  C1100 PIC IS X(5).
           05  C1105 PIC IS X(5).
           05  C1110 PIC IS X(5).
           05  C1115 PIC IS X(5).
           05  C1120 PIC IS X(3).
           05  C1125 PIC IS X(3).
           05  C1130 PIC IS X(3).
           05  C1135 PIC IS X(3).
           05  C1140 PIC IS X(3).
           05  C1155 PIC IS X(12).
           05  C1160 PIC IS X(12).
           05  C1165 PIC IS X(12).
           05  C1170 PIC IS X(3).
           05  C1175 PIC IS X(1).
           05  C1185 PIC IS X(6).
           05  C1190 PIC IS X(6).
           05  C1195 PIC IS X(6).
           05  C1200 PIC IS X(6).
           05  C1205 PIC IS X(6).
           05  C1210 PIC IS X(4).
           05  C1215 PIC IS X(4).
           05  C1220 PIC IS X(1).
           05  C1225 PIC IS X(1).
           05  C1150 PIC IS S9(8)V9(1) COMP-3.
           05  C1145 PIC IS S9(12)V9(2) COMP-3.
      *
      END SCHEMAS.
       01  C0-WHERE.
           03 FILLER         PIC X(6) VALUE 'C0100 '.
           03 C100-EQ        PIC XXX  VALUE 'EQ '.
           03 C100-VAL       PIC X(5) VALUE '     '.
           03 FILLER         PIC X(5) VALUE ' AND '.
           03 FILLER         PIC X(6) VALUE 'C0105 '.
           03 C105-EQ        PIC XXX  VALUE 'EQ '.
           03 C105-VAL       PIC X(5) VALUE '     '.
           03 FILLER         PIC X(5) VALUE ' AND '.
           03 FILLER         PIC X(6) VALUE 'C0110 '.
           03 C110-EQ        PIC XXX  VALUE 'EQ '.
           03 C110-VAL       PIC X(5) VALUE '     '.
           03 FILLER         PIC X(5) VALUE ' AND '.
           03 FILLER         PIC X(6) VALUE 'C0115 '.
           03 C115-EQ        PIC XXX  VALUE 'EQ '.
           03 C115-VAL       PIC X(5) VALUE '     '.
           03 FILLER         PIC X(5) VALUE ' AND '.
           03 FILLER         PIC X(6) VALUE 'C0120 '.
           03 C120-EQ        PIC XXX  VALUE 'EQ '.
           03 C120-VAL       PIC X(5) VALUE '     '.
           03 FILLER         PIC X(5) VALUE ' AND '.
           03 FILLER         PIC X(6) VALUE 'C0125 '.
           03 C125-EQ        PIC XXX  VALUE 'EQ '.
           03 C125-VAL       PIC X(5) VALUE '     '.
           03 FILLER         PIC X(5) VALUE ' AND '.
           03 FILLER         PIC X(6) VALUE 'C0130 '.
           03 C130-EQ        PIC XXX  VALUE 'EQ '.
           03 C130-VAL       PIC X(5) VALUE '     '.
           03 FILLER         PIC X(5) VALUE ' AND '.
           03 FILLER         PIC X(6) VALUE 'C0135 '.
           03 C135-EQ        PIC XXX  VALUE 'EQ '.
           03 C135-VAL       PIC X(5) VALUE '     '.
           03 C100-CONT      PIC X(5) VALUE ':AND '.
           03  C200-WHERE.
               05 FILLER         PIC X(6) VALUE 'C0210 '.
               05 C210-EQ        PIC XXX  VALUE 'EQ '.
               05 C210-VAL       PIC X(5) VALUE '     '.
               05 FILLER         PIC X(5) VALUE ' AND '.
               05 FILLER         PIC X(6) VALUE 'C0215 '.
               05 C215-EQ        PIC XXX  VALUE 'EQ '.
               05 C215-VAL       PIC X(5) VALUE '     '.
               05 FILLER         PIC X(5) VALUE ' AND '.
               05 FILLER         PIC X(6) VALUE 'C0220 '.
               05 C220-EQ        PIC XXX  VALUE 'EQ '.
               05 C220-VAL       PIC X(5) VALUE '     '.
               05 FILLER         PIC X(5) VALUE ' AND '.
               05 FILLER         PIC X(6) VALUE 'C0225 '.
               05 C225-EQ        PIC XXX  VALUE 'EQ '.
               05 C225-VAL       PIC X(5) VALUE '     '.
               05 FILLER         PIC X    VALUE ':'.
      *
       LINKAGE SECTION.
       01  JCL-PARMS.
           02  LNGTH PIC S9(4) COMP.
           02  JCL-PSWD PIC X(4).
      *
           EJECT
      *
      *
       PROCEDURE DIVISION USING JCL-PARMS.
      START S2K.
           MOVE JCL-PSWD TO DB-PASSWORD.
           OPEN INPUT IN-FILE.
      OPEN  IVR94TRA.
           CALL 'QASTAT'.
           IF DB-RETURN-CODE NOT = 0 GO TO S2K-ERROR.
           DISPLAY 'COMMBLOCK = ' IVR94TRA.
      *LOAD  IVR94TRA.
      QUEUE.
           IF DB-RETURN-CODE NOT = 0 GO TO S2K-ERROR.
           READ IN-FILE AT END MOVE '1' TO EOF-FLAG.
           PERFORM EXTRACT THRU EXTRACT-EXIT UNTIL EOF-FLAG = '1'
              OR ERR-FLAG NOT = '0'.
           IF ERR-FLAG NOT = '0' PERFORM ERROR-RTN THRU ERROR-RTN-EXIT.
      TERMINATE.
       EOJ.
           CALL 'QASTAT'.
           MOVE 0 TO RETURN-CODE.
           DISPLAY 'COUNT OF INSERTED C0 RECORDS = ', CTR-0.
           DISPLAY 'COUNT OF INSERTED C200 RECORDS = ', CTR-200.
           DISPLAY 'COUNT OF INSERTED C800 RECORDS = ', CTR-800.
           DISPLAY 'COUNT OF INSERTED C900 RECORDS = ', CTR-900.
           DISPLAY 'COUNT OF INSERTED C1000 RECORDS = ', CTR-1000.
           DISPLAY 'COUNT OF MATCHING C0 RECORDS = ', DUP-CTR-0.
           DISPLAY 'COUNT OF MATCHING C200 RECORDS = ', DUP-CTR-200.
           DISPLAY 'COUNT OF MATCHING C800 RECORDS = ', DUP-CTR-800.
           DISPLAY 'COUNT OF MATCHING C900 RECORDS = ', DUP-CTR-900.
      CLOSE IVR94TRA.
           IF DB-RETURN-CODE NOT = 0
              DISPLAY 'DB CLOSE FAILED.'.
           CLOSE IN-FILE.
           GOBACK.
       S2K-ERROR.
           DISPLAY 'S2K ERROR ENCOUNTERED.'.
           DISPLAY 'COMMBLOCK = ' IVR94TRA.
           GO TO EOJ.
      *
           EJECT
      *
       EXTRACT.
           IF HEADER = '0000'
               PERFORM C0000-PARA THRU C0000-EXIT
           ELSE IF HEADER = '0200'
               PERFORM C0200-PARA THRU C0200-EXIT
           ELSE IF HEADER = '0800'
               PERFORM C0800-PARA THRU C0800-EXIT
           ELSE IF HEADER = '0900'
               PERFORM C0900-PARA THRU C0900-EXIT
           ELSE IF HEADER = '1000'
               PERFORM C1000-PARA THRU C1000-EXIT
           ELSE MOVE '1' TO ERR-FLAG.
           READ IN-FILE AT END MOVE '1' TO EOF-FLAG.
       EXTRACT-EXIT. EXIT.
           EJECT
      *
       C0000-PARA.
           MOVE C0000-IO TO C0000.
      *BUILD WHERE-CLAUSE TO CHECK FOR EXISTING C0 RECORD.
           IF C0100 = LOW-VALUES
               MOVE '   ' TO C100-EQ
               MOVE 'FAILS' TO C100-VAL
           ELSE
               MOVE 'EQ ' TO C100-EQ
               MOVE C0100 TO C100-VAL.
           IF C0105 = LOW-VALUES
               MOVE '   ' TO C105-EQ
               MOVE 'FAILS' TO C105-VAL
           ELSE
               MOVE 'EQ ' TO C105-EQ
               MOVE C0105 TO C105-VAL.
           IF C0110 = LOW-VALUES
               MOVE '   ' TO C110-EQ
               MOVE 'FAILS' TO C110-VAL
           ELSE
               MOVE 'EQ ' TO C110-EQ
               MOVE C0110 TO C110-VAL.
           IF C0115 = LOW-VALUES
               MOVE '   ' TO C115-EQ
               MOVE 'FAILS' TO C115-VAL
           ELSE
               MOVE 'EQ ' TO C115-EQ
               MOVE C0115 TO C115-VAL.
           IF C0120 = LOW-VALUES
               MOVE '   ' TO C120-EQ
               MOVE 'FAILS' TO C120-VAL
           ELSE
               MOVE 'EQ ' TO C120-EQ
               MOVE C0120 TO C120-VAL.
           IF C0125 = LOW-VALUES
               MOVE '   ' TO C125-EQ
               MOVE 'FAILS' TO C125-VAL
           ELSE
               MOVE 'EQ ' TO C125-EQ
               MOVE C0125 TO C125-VAL.
           IF C0130 = LOW-VALUES
               MOVE '   ' TO C130-EQ
               MOVE 'FAILS' TO C130-VAL
           ELSE
               MOVE 'EQ ' TO C130-EQ
               MOVE C0130 TO C130-VAL.
           IF C0135 = LOW-VALUES
               MOVE '   ' TO C135-EQ
               MOVE 'FAILS' TO C135-VAL
           ELSE
               MOVE 'EQ ' TO C135-EQ
               MOVE C0135 TO C135-VAL.
           MOVE ':    ' TO C100-CONT.
      *    DISPLAY 'C0-WHERE = ' C0-WHERE.
      GET1 C0000 DYNAM C0-WHERE.
           IF S2KRTC = ZERO
               MOVE '0' TO INSERT-MODE
               ADD 1 TO DUP-CTR-0
               GO TO C0000-EXIT
           ELSE
               IF S2KRTC NOT = 4
                   GO TO S2K-ERROR.
      *INSERT IS DONE ONLY IF NOT A DUPLICATE C0 RECORD.
       INSERT-C0000.
      INSERT C0000.
           IF DB-RETURN-CODE NOT = 0 GO TO S2K-ERROR.
           ADD 1 TO CTR-0.
      TERMINATE.
           IF S2KRTC NOT = 0
               GO TO S2K-ERROR.
      QUEUE.
           IF S2KRTC NOT = 0
               GO TO S2K-ERROR.
      *    DISPLAY 'NEW C0 RECORD ADDED, C0 = ' C0000.
           MOVE '1' TO INSERT-MODE.
      *    RE-ESTABLISH NEWLY INSERTED C0 POSITION.
      GET1 C0000 DYNAM C0-WHERE.
           IF S2KRTC NOT = ZERO
               DISPLAY 'GET1 C0 FAILED AFTER INSERT'
               GO TO S2K-ERROR.
       C0000-EXIT.
           EXIT.
      *
       C0200-PARA.
           MOVE C0200-IO TO C0200.
      *IF INSERT-MODE ='1' WE HAVE A NEW LEVEL 0 RECORD AND
      * INSERT OF C200 IS DONE. IF INSERT-MODE= '0' WE BUILD
      * A WHERE CLAUSE TO TEST FOR DUPLICATE C200 RECORD.
           IF INSERT-MODE = '1'
               GO TO C0200-INSERT.
           IF C0210 = LOW-VALUES
               MOVE '   ' TO C210-EQ
               MOVE 'FAILS' TO C210-VAL
           ELSE
               MOVE 'EQ ' TO C210-EQ
               MOVE C0210 TO C210-VAL.
           IF C0215 = LOW-VALUES
               MOVE '   ' TO C215-EQ
               MOVE 'FAILS' TO C215-VAL
           ELSE
               MOVE 'EQ ' TO C215-EQ
               MOVE C0215 TO C215-VAL.
           IF C0220 = LOW-VALUES
               MOVE '   ' TO C220-EQ
               MOVE 'FAILS' TO C220-VAL
           ELSE
               MOVE 'EQ ' TO C220-EQ
               MOVE C0220 TO C220-VAL.
           IF C0225 = LOW-VALUES
               MOVE '   ' TO C225-EQ
               MOVE 'FAILS' TO C225-VAL
           ELSE
               MOVE 'EQ ' TO C225-EQ
               MOVE C0220 TO C225-VAL.
           MOVE ' AND ' TO C100-CONT.
      *    DISPLAY 'C0-WHERE = ' C0-WHERE.
      GET1 C0200 DYNAM C0-WHERE.
           IF S2KRTC = ZERO
               ADD 1 TO DUP-CTR-200
               GO TO C0200-EXIT
           ELSE
               IF S2KRTC NOT = 4
                   GO TO S2K-ERROR.
       C0200-INSERT.
           MOVE '1' TO INSERT-MODE.
      *INSERT IS DONE ONLY IF NOT A DUPLICATE C200 RECORD.
      INSERT C0200.
           IF DB-RETURN-CODE NOT = 0 GO TO S2K-ERROR.
           ADD 1 TO CTR-200.
      *    DISPLAY 'NEW C200 RECORD ADDED, C200 = ' C0200.
       C0200-EXIT.
      *
       C0800-PARA.
           MOVE C0800-IO TO C0800.
      *IF INSERT-MODE = '1' WE HAVE INSERTED A HIGHER LEVEL RECORD.
      *IF INSERT-MODE = '0' CHECK FOR DUPLICATE C800 RECORD.
           IF INSERT-MODE = '1'
               GO TO C0800-INSERT.
           IF C0805 = LOW-VALUES
      GET1 C0800 WH         C0805 FAILS AND
                    SAME STACK(STACK-ZERO);
           ELSE
      GET1 C0800 WH NON-KEY C0805 EQ AND
                    SAME STACK(STACK-ZERO).
           IF S2KRTC = ZERO
               ADD 1 TO DUP-CTR-800
               GO TO C0800-EXIT
           ELSE
               IF S2KRTC NOT = 4
                   GO TO S2K-ERROR.
       C0800-INSERT.
           MOVE '1' TO INSERT-MODE
      *INSERT IS DONE ONLY IF C800 IS NOT A DUPLICATE RECORD.
      INSERT C0800.
           IF DB-RETURN-CODE NOT = 0 GO TO S2K-ERROR.
           ADD 1 TO CTR-800.
      *    DISPLAY 'NEW C800 RECORD ADDED, C800 = ' C0800.
       C0800-EXIT.
      *
       C0900-PARA.
           MOVE C0900-IO TO C0900.
      *IF INSERT-MODE = '1' WE HAVE INSERTED A HIGHER LEVEL RECORD.
      *IF INSERT-MODE = '0' CHECK FOR DUPLICATE C900 RECORD.
           IF INSERT-MODE = '1'
               GO TO C0900-INSERT.
           IF C0905 = LOW-VALUES
      GET1 C0900 WH         C0905 FAILS AND
                    SAME STACK(STACK-ZERO);
           ELSE
      GET1 C0900 WH NON-KEY C0905 EQ AND
                    SAME STACK(STACK-ZERO).
           IF S2KRTC = ZERO
               ADD 1 TO DUP-CTR-900
               GO TO C0900-EXIT
           ELSE
               IF S2KRTC NOT = 4
                   GO TO S2K-ERROR.
       C0900-INSERT.
           MOVE '1' TO INSERT-MODE
      *INSERT IS DONE ONLY IF NOT A DUPLICATE C900 RECORD.
      INSERT C0900.
           IF DB-RETURN-CODE NOT = 0 GO TO S2K-ERROR.
           ADD 1 TO CTR-900.
      *    DISPLAY 'NEW C900 RECORD ADDED, C900 = ' C0900.
       C0900-EXIT.
      *
       C1000-PARA.
           MOVE C1000-IO TO C1000.
      INSERT C1000.
           IF DB-RETURN-CODE NOT = 0
               DISPLAY 'INSERT FAILED, C1000 = ' C1000
           GO TO S2K-ERROR.
           ADD 1 TO CTR-1000.
      *    DISPLAY 'NEW C1000 RECORD ADDED, C1000 = ' C1000.
       C1000-EXIT.
      *
       ERROR-RTN.
           IF ERR-FLAG = '1'
               DISPLAY 'INVALID COMP-NBR READ.'
               ELSE DISPLAY 'NO VALUES FOR SCHEMA ', HEADER.
       ERROR-RTN-EXIT. EXIT.
      END PROCEDURE.
//*
//*
//GO.CBPARM DD   *
SWITCH=0
//*