*DECK DUPLICATE 
USETEXT TCLFN 
USETEXT TCRMDEF 
USETEXT TFIT
USETEXT TXSTD 
      PROC DUPLICATE; 
  
#----------------------------------------------------------------------#
#                                                                      #
#  THE FOLLOWING PROCS ARE XDEF"D WITHIN THIS DECK:                    #
#                                                                      #
#     DIRID                        STORE DIRECTIVE ID (FIRST OR SECOND)#
#     DUPEMALL                     PERFORM THE DUPLICATION             #
#     SAVID                        SAVE THE NEW STARTING DIRECTIVE ID  #
#     SAVNAM                       SAVE REPORT NAME                    #
#     SAVSES                       SAVE NEW NAME FOR REPORT/SESSION    #
#     SESNAM                       SAVE SESSION NAME                   #
#     SETDEF                       SET *UPON DEFAULT* OPTION           #
#     VERCHK                       INITIALIZATION FOR DUPLICATE        #
#                                                                      #
#----------------------------------------------------------------------#
  
      BEGIN 
  
      XREF BEGIN
      PROC EXIT10;
      PROC RETURNM; 
      PROC REWINDM; 
      PROC CMOVE; 
      PROC GET; 
      PROC GETN;
      PROC OPENM; 
      PROC PUT; 
      PROC OPNCAT;
      PROC DIAG;
      PROC CLOSEM;
      FUNC INCRDIS C(10); 
      ITEM FORWHICHDIR; 
      ARRAY AINCREMENT [0:1]; 
      ITEM INCREMENT C(0,0,10); 
      ITEM RA0; 
           END
      XREF PROC CATCHK;            # CALL PROPER CATALOG-ACCESSING PROC#
      XREF ITEM DUMMY;
      XREF ITEM BYINCR B;          # IF TRUE, TRANS-ID BEGINS WITH     #
                                   # THE INCREMENT SIZE NUMBER.        #
  
      XREF ITEM ASIS B;            # IF TRUE, THE ORIGINAL TRANS-IDS   #
                                   # ARE DUPLICATED AS IS.             #
                                   # OLD TRANS-IDS AS IS.              #
      ITEM SAVENAM; 
      ITEM SESSLENGTH;
      XREF ARRAY DUPFIT; ;
      BASED ARRAY FROMCAT;
        BEGIN 
        ITEM FRMCATFITES  U(13,33,09); #ERROR STATUS                   #
        ITEM FRMCATFITKA  U(24,42,18);   # KEY ADDRESS                 #
        ITEM FRMCATFITKP  U(31,16,04);   # KEY POSITION                #
        ITEM FRMCATFITMKL U(16,33,09);   # MAJOR KEY LENGTH            #
        ITEM FRMCATFITMRL U(12,00,24); #MAXIMUM RECORD LENGTH          #
        ITEM FRMCATFITWSA U(15,42,18);   # WORKING STORAGE AREA        #
        END 
      BASED ARRAY TOCAT;
        BEGIN 
        ITEM TOCATFITES   U(13,33,09); #ERROR STATUS                   #
        ITEM TOCATFITKA   U(24,42,18);   # KEY ADDRESS                 #
        ITEM TOCATFITKP   U(31,16,04);   # KEY POSITION                #
        ITEM TOCATFITMKL  U(16,33,09);   # MAJOR KEY LENGTH            #
        ITEM TOCATFITMRL  U(12,00,24); #MAXIMUM RECORD LENGTH          #
        ITEM TOCATFITRL   U(11,00,24);   # RECORD LENGTH               #
        ITEM TOCATFITWSA  U(15,42,18);   # WORKING STORAGE AREA        #
        END 
  
  
      ITEM IDSES C(10); 
      ITEM IDNUM C(10); 
      ITEM SESSFLAG;
      ITEM HOWMUCHKEY;
      XREF ITEM MODCAT       B;    # TRUE IF CATALOG FILE WAS MODIFIED #
                                   # SINCE LAST CLOSE                  #
      XREF ITEM MXTRNLG;
      ITEM LASTID C(10);
      ITEM TEMPID C(10);
      ITEM PERMITDUP B;            # TRUE IF HAVE WRITE PERM ON -TOCAT-#
      XREF ITEM DEFCAT       B;    # TRUE IF DEFAULT CATALOG EXISTS    #
      ITEM RC           I;         # RETURN CODE                       #
      ARRAY SESSIDS[1:2];          # STORAGE OF SESSION IDS FOR DUP.   #
        BEGIN 
        ITEM SESSID       C(00,00,10);
        END 
      XREF ITEM CDCSCAT  B;        # TRUE IF IN CDCS CATALOG MODE      #
      ITEM FROMCDCS  B;            # TRUE IF *FROM* FILE IS CDCS       #
      ITEM TOCDCS  B;              # TRUE IF *TO* FILE IS CDCS         #
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
      PROC CLOSENO; 
      BEGIN 
      P<FIT> = LOC(DUPFIT); 
      IF FITOC EQ OC$OPEN          # IF DUPFIT WAS OPENED              #
      THEN
        BEGIN 
        CLOSEM(DUPFIT, RA0);       # CLOSE DUPFIT BEFORE EXIT          #
        END 
  
      STDNO;
      END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
      PROC CLOSEYES;
      BEGIN 
      P<FIT> = LOC(DUPFIT); 
      IF FITOC EQ OC$OPEN          # IF DUPFIT WAS OPENED              #
      THEN
        BEGIN 
        CLOSEM(DUPFIT, RA0);       # CLOSE DUPFIT BEFORE EXIT          #
        END 
  
      STDYES; 
      END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
      XDEF PROC DIRID;
        PROC DIRID; 
          BEGIN 
          IF CURLENG GR 3 OR ICWI[5] LS 1 THEN STDNO; 
          SESSLENGTH = SESSLENGTH + 1;
          HOWMUCHKEY = 10;   # INDICATES START AT SPECIFIC KEY         #
          C<10-CURLENG,CURLENG>SESSID[SESSLENGTH] = C<0,CURLENG>ICW[0]; 
          IF SESSLENGTH EQ 1 THEN 
            BEGIN 
            SESSID[2] = SESSID[1];
            C<7,3>IDSES = C<7,3>SESSID[1];       # DUP AS SAME ID      #
            C<7,3>IDNUM = C<7,3>SESSID[1];
            END 
          STDYES; 
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
      #*************************************************************# 
      #                                                             # 
      #                  D  U  P  E  M  A  L  L                     # 
      #                                                             # 
      #*************************************************************# 
      #   PROC DUPEMALL DOES ALL THE WORK OF DUPLICATING AFTER THE  # 
      # OTHER ROUTINES SET UP ITS SYSTEM OF DEFAULTS. IT TRANSFERS  # 
      # DIRECTIVES FROM THE -FROMCAT- FILE TO THE -TOCAT- FILE.     # 
      # THE DIRECTIVE IDENTIFIED BY -SESSID[1]- IS THE FIRST        # 
      # DIRECTIVE WRITTEN TO -TOCAT-. DUPLICATION CONTINUES         # 
      # THROUGH -SESSID[2]-. THE NEW SESSION BEGINS WITH -IDSES-.   # 
      # IDSES AND SESSID[1] ARE USED FOR TEMPORARY STORAGE FOR THE  # 
      # DUPLICATION AFTER THE FIRST DIRECTIVE IS TRANSFERRED.       # 
      #*************************************************************# 
  
      XDEF PROC DUPEMALL; 
      PROC DUPEMALL;
        BEGIN 
        P<FIT> = LOC(DUPFIT); 
        FITMRL = MXTRNLG + 10;     #TRANSMISSION LENT + 10 CHAR KEY    #
        IF NOT PERMITDUP THEN      # IF NO WRITE PERM ON -TOCAT-       #
          BEGIN 
          DIAG(87);                # PRIVACY VIOLATION...NO WRITE PERM.#
          STDNO;                   #RETURN BEFORE -DUPFIT- OPENED      #
          END 
        IF P<FROMCAT> EQ LOC(DUPFIT)  # IF READING FROM DEFAULT        #
          AND NOT DEFCAT              # AND DEFAULT DOES NOT EXIST     #
        THEN
          BEGIN 
          IF SESSFLAG EQ 1         # IF *DUPLICATE SESSION*            #
          THEN
            BEGIN 
            DIAG(119);             # DIAGNOSE UNKNOWN SESSION          #
            STDNO;                 # BAD RETURN                        #
            END 
  
          ELSE
            BEGIN 
            ICW[0] = SESSID[1];    # CURWORD GETS REPORT NAME          #
            CURLENG = 7;           # CURLENG GETS MX REPORT NAME LNGTH #
            DIAG(103);             # DIAGNOSE UNKNOWN REPORT           #
            STDNO;                 # BAD RETURN                        #
            END 
          END 
  
        P<FIT> = LOC(CATAFIT);
        IF FITOC EQ OC$OPEN        # IF PF CATALOG OPEN                #
          AND FITPD EQ PD$INPUT    # AND ONLY READING                  #
        THEN
          BEGIN 
          CATCHK (CLOSE, P<FIT>, CDCSCAT);   # RELEASE RO MODULES      #
          END 
  
        OPNCAT(FROMCAT, PD$IO, RC);  # OPEN FOR I/O EVEN THO INPUT IS  #
                                     # ALL THAT IS NEEDED. WE NEED TO  #
                                     # CHECK THE FROM FILE FOR THE EXIS#
                                     # TENCE OF THE STUFF TO DUPLICATE #
                                     # IF OPENED WITH INPUT, WOULD GET #
                                     # READ-ONLY...  INCOMPATIBLE WITH #
                                     # UPDATE VERSION OF *IS*          #
  
        IF RC NQ 0                 # IF CATALOG NOT OPENED             #
        THEN
          BEGIN 
          CLOSENO;                 # EXIT THROUGH CLOSENO              #
          END 
  
        P<FIT> = LOC(FROMCAT);
        FITREL = RELEQ;            # RELATIONAL OP - KEY EQ            #
        FITMKL = HOWMUCHKEY;       # MAJOR KEY LENGTH                  #
        FRMCATFITKA = LOC(SESSID[1]); 
        CATCHK (STARTT, P<FROMCAT>, FROMCDCS);  # START AT FIRST KEY   #
        IF FRMCATFITES EQ UNKNOWNKEY  # IF SOURCE SESSION/REPORT UNKNWN#
        THEN
          BEGIN 
          IF SESSFLAG EQ 1         # IF DUPLICATING A SESSION          #
          THEN
            BEGIN 
            DIAG(119);             # DIAGNOSE UNKNOWN SESSION          #
            END 
  
          ELSE
            BEGIN 
            ICW[0] = SESSID[1];    # CURWORD GETS REPORT NAME FOR DIAG #
            CURLENG = 7;           # CURLENG GETS MX REPORT NAME LNGTH #
            DIAG(103);             # DIAGNOSE UNKNOWN REPORT NAME      #
            END 
  
          CLOSENO;                 # EXIT THROUGH CLOSENO              #
          END 
  
        IF FRMCATFITES NQ 0        # IF SOME OTHER CRM ERROR           #
        THEN
          BEGIN 
          DIAG(903, FITES, C<0,7>FITLFN);  # DIAGNOSE CRM ERROR        #
          CLOSENO;                 # EXIT THROUGH CLOSENO              #
          END 
  
        OPNCAT(TOCAT, PD$IO, RC);  # TRY TO OPEN FOR I/O               #
        IF RC NQ 0                 # IF CATALOG NOT OPENED             #
        THEN
          BEGIN 
          CLOSENO;                 # EXIT THROUGH CLOSENO              #
          END 
  
        IF FRMCATFITMRL GR TOCATFITMRL
        THEN                       #IF TRANSMISSION MIGHT NOT FIT      #
          BEGIN 
          DIAG(311);               #DIAGNOSE CAN-T DUP TO SMALLER TL   #
          CLOSENO;                 #INDIRECT RETURN TO STDNO           #
          END 
  
        IF P<TOCAT> EQ LOC(CATAFIT)  # IF CATALOG TO BE MODIFIED IS    #
                                     # THE CURRENT CATALOG             #
        THEN
          BEGIN 
          MODCAT = TRUE;           # CATALOG FILE HAS BEEN (WILL BE)   #
                                   # MODIFIED SINCE LAST CLOSED        #
          END 
  
        TOCATFITES = 0; 
        FRMCATFITES = 0;
        IF SESSFLAG EQ 1 THEN 
          BEGIN 
          TEMPID = IDSES; 
  
                             # IS THIS SESSION NAME KNOWN IN THE     #
                             # -TOCAT- FILE...                       #
          TOCATFITWSA = P<KEYWSA>;
          TOCATFITKA = LOC(TEMPID); 
          TOCATFITKP = 0; 
          TOCATFITMKL = 7;
          CATCHK (CGET, P<TOCAT>, TOCDCS);
          IF TOCATFITES NQ UNKNOWNKEY 
          THEN
            BEGIN 
  
                             # THE SESSION NAME IS KNOWN.  POSITION  #
                             # WHERE THAT KEY( THE FIRST TO          #
                             # BE WRITTEN) SHOULD BE. -GETN- WILL    #
                             # TELL US THE NEXT TRANSMISSION OF THAT #
                             # SESSION. WE TAKE THIS AS LASTID- THE  #
                             # POINT AT OR PAST WHICH WE WILL NOT    #
                             # CONTINUE TO DUPLICATE. LASTID MADE    #
                             # LARGE IF NO NEXT TRANSMISSION FOR THIS#
                             # SESSION...                            #
            TEMPID = IDSES; 
            P<FIT> = LOC(TOCAT);   # POSITION FIT FOR ACCESSING TOCAT  #
            FITREL = RELGT;        # SET TO POSITION AFTER THE KEY     #
            FITMKL = 10;           # POSITION ON FULL 10 CHAR KEY      #
            TOCATFITKA = LOC(TEMPID); 
            CATCHK (STARTT, P<TOCAT>, TOCDCS);  # POSN TO FIRST RECORD #
                                         # WHOSE KEY < (TEMPID)        #
            TOCATFITWSA = P<KEYWSA>;
            CATCHK (CGETN, P<TOCAT>, TOCDCS); 
            IF B<6,36>KEYAREA[0] NQ B<6,36>IDSES THEN 
              LASTID = "0      999";
            ELSE LASTID = KEYAREA[0]; 
            END 
  
                             # SESSION NAME IS NOT KNOWN...LASTID IS #
                             # MADE LARGE.                           #
          ELSE LASTID = "0      999"; 
          END 
  
                             # TEST (WITH HOWMUCHKEY=10) FOR THE     #
                             # SPECIFIED DIRECTIVE EXISTING. WITH    #
                             # HOWMUCHKEY=7, TEST IS FOR ANY         #
                             # DIRECTIVE WITH THAT NAME.             #
        FRMCATFITWSA = P<KEYWSA>; 
        FRMCATFITKA = LOC(SESSID[1]); 
        FRMCATFITKP = 0;
        FRMCATFITMKL = HOWMUCHKEY;
        CATCHK (CGET, P<FROMCAT>, FROMCDCS);
  
                             # TEST FOR TERMINATION OF REPORT DUP    #
  
        IF BYINCR                  # IF (BY) IS GIVEN, THE FIRST T-ID  #
                                   # IS THE INCREMENT SIZE NUMBER.     #
        THEN
          BEGIN 
          B<42,18>IDSES = B<42,18>INCREMENT[1]; 
          IDNUM = INCREMENT[1]; 
          END 
  
        FOR DUMMY=0 
          WHILE FRMCATFITES NQ ENDOFILE 
        DO
          BEGIN 
  
          IF SESSFLAG EQ 1
            AND NOT ASIS           # IF TRANS-ID3 OR (BY) IS GIVEN,    #
                                   # GET NEW TRANS-ID.  ELSE, COPY THE #
                                   # OLD TRANSMISSION-ID AS IS.        #
          THEN
            BEGIN 
            SESSID[1] = KEYAREA[0]; 
            KEYAREA[0] = IDSES; 
            END 
          ELSE C<0,7>KEYAREA[0] = C<0,7>IDSES;
  
        TOCATFITES = 0; 
  
                             # -PUT- RECORD OUT TO THE -TOCAT- FILE. #
          P<FIT> = LOC(FROMCAT);
          TOCATFITWSA = P<KEYWSA>;
          TOCATFITRL = FITRL; 
          TOCATFITKA = TOCATFITWSA; 
          CATCHK (CPUT, P<TOCAT>, TOCDCS);
          IF SESSFLAG EQ 1 THEN 
            BEGIN 
  
                             # IN CASE OF KEY ALREADY EXISTING,      #
                             # DIAGNOSE WHICH DIRECTIVE WOULD BE THE #
                             # CLOBBERER...ALSO WHICH WOULD BE       #
                             # CLOBBERED.                            #
            IF TOCATFITES EQ DUPLICATEKEY 
            THEN
              BEGIN 
              DIAG(221,C<1,6>SESSID[1],C<7,3>SESSID[1], 
                       C<1,6>IDSES,C<7,3>IDSES);
              CLOSENO;
              END 
  
                             # USE THE INCREMENT PREVIOUSLY SET UP.  #
  
            IF NOT ASIS            # IF TRANS-IDS ARE NOT DUPLICATED   #
                                   # AS IS, CALCULATE THE NEXT T-ID.   #
            THEN
              BEGIN 
              IDNUM = INCRDIS(INCREMENT[1], IDNUM); 
              B<42,18>IDSES = B<42,18>IDNUM;
              END 
  
            END 
          ELSE
            IF TOCATFITES EQ DUPLICATEKEY 
            THEN
              BEGIN 
              DIAG(102);
              CLOSENO;
              END 
          FRMCATFITWSA = P<KEYWSA>; 
          CATCHK (CGETN, P<FROMCAT>, FROMCDCS); 
  
                             # NAME SHOULD BE SAME, IF NOT THEN DONE #
          IF B<0,42>KEYAREA[0] NQ B<0,42>SESSID[2]
          THEN
            BEGIN 
            CLOSEYES; 
            END 
  
                             # TEST FOR A REPORT.                    #
                             # IF IT IS, CONTINUE DUPLICATION.       #
          IF SESSFLAG NQ 1 THEN TEST; 
  
                             # SEE IF ALL THOSE TO BE DUPLICATED     #
                             # HAVE BEEN DUPLICATED. IF YES--DONE    #
          IF KEYAREA[0] GR SESSID[2]
          THEN
            BEGIN 
            CLOSEYES; 
            END 
  
                             # CHECK FOR THE ID-NUMBER NOT EXCEEDING #
                             # 999 (SINCE WE ONLY USE LAST 3 CHARS)  #
          IF B<36,24>IDNUM GR O"33444444" 
            THEN
              BEGIN 
              DIAG(222, C<1,6>KEYAREA[0], C<7,3>KEYAREA[0], 
                C<6,4>IDNUM); 
              CLOSENO;
              END 
  
                             # TEST IF THIS DIRECTIVE WOULD FALL     #
                             # INSIDE THE AVAILABLE GAP. IF SO-      #
                             # CONTINUE DUPLICATING.                 #
          IF B<42,18>IDSES LS B<42,18>LASTID THEN TEST; 
  
                             # ONLY OTHER POSSIBLE LEGAL CASE IS IF  #
                             # IT IS NOT A TRUE LASTID (A DEFAULT,NOT#
                             # A KEY). THIS IMPLIES ID=999. LEGAL.   #
                             # CONTINUE DUPLICATING IF THIS IS SO.   #
          IF B<6,6>LASTID GR O"44" THEN TEST; 
  
                             # IF WE GET DOWN HERE, IT IS NOT ALLOWED#
                             # TO CONTINUE DUPLICATION. A DIAGNOSTIC #
                             # IS ISSUED TO SPECIFY WHERE IT STOPPED #
          DIAG(221, C<1,6>KEYAREA[0], C<7,3>KEYAREA[0], 
            C<1,6>LASTID, C<7,3>LASTID);
          CLOSENO;
          END 
  
        CLOSEYES;            # NORMAL TERMINATION FROM TEST OF FOR   #
                             # LOOP.                                 #
        END 
  
#*    E N D   O F   D U P E M A L L     ******************************# 
#*********************************************************************# 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
      XDEF PROC SAVID;
        PROC SAVID;          #STORES THE TRANSMISSION ID SPECIFIED AT  #
          BEGIN              # WHICH THE NEW SESSION SHALL START BEING #
          IF CURLENG GR 3 OR ICWI[5] LS 1 THEN STDNO; # NUMBERED       #
  
          ASIS = FALSE;            # TRANS-ID3 IS GIVEN, DO NOT COPY   #
                                   # THE OLD TRANS-IDS.                #
          C<10-CURLENG,CURLENG>IDSES = C<0,CURLENG>ICW[0];
          C<7,3>IDNUM = C<7,3>IDSES;
          STDYES; 
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
      XDEF PROC SAVNAM; 
        PROC SAVNAM;
          BEGIN              # THIS IS A REPORT... KILL THE SESSION    #
          SESSFLAG = 0;      # FLAG AND GO PROCESS THE NAME THE SAME   #
          SESNAM;            # WAY AS FOR A SESSION                    #
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
      XDEF PROC SAVSES; 
        PROC SAVSES;         # STORE AWAY THE NEW NAME                 #
          BEGIN 
          IF SESSFLAG EQ 1 AND CURLENG GR 6 THEN STDNO; 
          IDSES = "0      001";        # START THE ID NUMBERS OVER...  #
          IDNUM = "0000000001";    #  START NEW SESSION AT 001         #
          C<SESSFLAG,CURLENG>IDSES = C<0,CURLENG>ICW[0];
          STDYES; 
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
      XDEF PROC SESNAM; 
        PROC SESNAM;         # SET THE OTHER DEFAULTS FROM THE NAME    #
          BEGIN              # GIVEN                                   #
          IF SESSFLAG EQ 1 AND CURLENG GR 6 THEN STDNO; 
          SESSLENGTH = 0; 
          SESSID[1] = "0      001"; 
          C<SESSFLAG,CURLENG> SESSID[1] = C<0,CURLENG>ICW[0]; 
          HOWMUCHKEY = 7; 
          SESSID[2] = SESSID[1];
          IDSES = SESSID[1];
          C<7,3> SESSID[2] = "999"; 
          STDYES; 
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
      XDEF PROC SETDEF; 
        PROC SETDEF;
          BEGIN              # A SIMPLE REVERSAL OF DIRECTION WHEN     #
          P<FROMCAT> = LOC(CATAFIT);   # -UPON DEFAULT- SPECIFIED.     #
          P<TOCAT> = LOC(DUPFIT); 
  
          IF CDCSCAT               # IF IN CDCS CATALOG MODE           #
          THEN
            BEGIN 
            FROMCDCS = TRUE;       # *FROMCAT* TO BE ACCESSED BY CDCS  #
            END 
          ELSE                     # IN CRM CATALOG MODE               #
            BEGIN 
            FROMCDCS = FALSE;      # *FROMCAT* TO BE ACCESSED BY CRM   #
            END 
          TOCDCS = FALSE;          # EITHER WAY, *TOCAT* IS CRM FILE   #
  
          PERMITDUP = TRUE;        # ALWAYS ALLOW DUP -UPON DEFAULT-   #
          STDYES; 
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
      XDEF PROC VERCHK; 
        PROC VERCHK;         # INITIALIZATION FOR DUPLICATE            #
          BEGIN 
          IF NOT PFCATAL THEN STDNO;   # WE NEED A P.F.                #
          PERMITDUP = PERMI;       # DUP PERMITTED IF HAVE WRITE PERM. #
          P<FROMCAT> = LOC(DUPFIT);    # SET UP THE DEFAULT FOR        #
          P<TOCAT> = LOC(CATAFIT);     # DIRECTION OF DUPLICATION      #
  
          IF CDCSCAT               # IF IN CDCS CATALOG MODE           #
          THEN
            BEGIN 
            TOCDCS = TRUE;         # *TOCAT* TO BE ACCESSED BY CDCS    #
            END 
          ELSE                     # IN CRM CATALOG MODE               #
            BEGIN 
            TOCDCS = FALSE;        # *TOCAT* TO BE ACCESSED BY CRM     #
            END 
          FROMCDCS = FALSE;        # EITHER WAY, *FROMCAT* IS CRM FILE #
  
          SESSFLAG = 1;      # ASSUME WE WILL HAVE A SESSION TO DUP    #
  
                             # INITIALIZE THE INCREMENT AND THE      #
                             # ID NUMBER TO DEFAULT VALUES. ALSO     #
                             # INDICATE TO PROC INCREM               #
                             # FORWHICHDIR-ECTIVE IT IS PROCESSING   #
                             # AN INCREMENT.                         #
  
          ASIS = TRUE;             # INITIALIZE COPY T-ID AS IS FLAG.  #
                                   # TRUE IN ALL CASES.  EXCEPT WHEN   #
                                   # (BY) OR TRANS-ID3 IS GIVEN.       #
  
          BYINCR = FALSE;          # INITIALIZE (BY) IS GIVEN FLAG.    #
                                   # TRUE IN ALL CASES.  EXCEPT WHEN   #
                                   # (BY) IS GIVEN AND NOT TRANS-ID3.  #
  
          INCREMENT[1] = "0000000001";
          IDNUM = "0000000001"; 
          FORWHICHDIR = 1;
          STDYES; 
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
      END 
      TERM
