*DECK DB$MABT                                                            MABT 
      PROC DB$MABT (ABRTCODE,ABRTPARM);                                  MABT 
 #                                                                       MABT 
  *   DB$MABT - ABORT DBMSTRD RUN                PAGE  1                 MABT 
  *   J. JAN JANIK                               DATE  10/20/75          MABT 
  
  DC  PURPOSE                                                            MABT 
                                                                         MABT 
      TO ABORT THE DBMSTRD RUN AFTER ISSUING MESSAGES TO OUTPUT AND      MABT 
      DAYFILE.                                                           MABT 
                                                                         MABT 
  DC  ENTRY CONDITIONS                                                   MABT 
                                                                         MABT 
      DB$MABT IS CALLED WITH TWO PARAMETERS, ABRTCODE AND ABRTPARM. 
      ABRTCODE INDICATES THE REASON WHY THE ABORT IS OCCURRING. 
      ABRTPARM IS AN OPTIONAL ONE WORD ITEM FOR VARIABLE MESSAGE INFO.
                                                                         MABT 
  DC  EXIT CONDITIONS                                                    MABT 
                                                                         MABT 
      ABORTS THE JOB.                                                    MABT 
                                                                         MABT 
  DC  CALLING ROUTINES                                                   MABT 
                                                                         MABT 
      DBMSTRD - MAIN ROUTINE, IF ERRORS DETECTED IN CONTROL CARD         MABT 
      DB$MDPR - CHANGE PFN TABLE ENTRY, SPECIFIED ENTRY CAN-T BE FOUND
      DB$MLDV - OVERLAY LOADER, IF WRONG OVERLAY REQ OR ERROR IN LOADING MABT 
      DB$UABN - HANDLE ABNORMALITIES IN MANAGED MEMORY BLOCK MODULES
      DB$OVCM - NON-CST-BUILDER COMMON MEMORY MANAGER OVERFLOW HANDLER
      DB$SR16 - SEMANTIC ROUTINE INITIALIZING FOR MOD RUN, ABORT IF 
                OLD MD NOT AT CP
                                                                         MABT 
  DC  CALLED ROUTINES                                                    MABT 
                                                                         MABT 
      DB$UOPF - OPEN INPUT AND OUTPUT FILES                              MABT 
      DB$EPRT - PRINT A STRING                                           JJJ1107
      DB$MSG  - ISSUE MESSAGE TO DAYFILES AND DISPLAYS                   MABT 
      DB$UCLF - CLOSE INPUT AND OUTPUT FILES                             MABT 
      DB$ABRT - ABORT JOB BY ISSUING SYSTEM ABT REQUEST.                 MABT 
      DB$CDIS - CONVERT A NUMBER TO DISPLAY CODE.                        MABT 
 #                                                                       MABT 
                                                                         JJJ1024
      BEGIN                                                              JJJ1024
                                                                         JJJ1024
*CALL MDABTDCLS                                                          MABT 
*CALL  CUGBADCLS                                                         JJJ1024
                                                                         MABT 
# THE FOLLOWING DEFS ARE THE LENGTHS OF THE VARIOUS MESSAGES           # MABT 
                                                                         MABT 
      DEF DFABTMLN #32#;     # LENGTH OF ABTMSG                        # MABT 
      DEF DFABT1LN #30#;     # LENGTH OF AB1MESS                       # MABT 
      DEF DFABT2LN #53#;     # LENGTH OF AB2MESS                       #
      DEF DFABT3LN #30#;     # LENGTH OF AB3MESS                       #
  
      DEF DFABT7LN #32#;     # LENGTH OF AB7MESS                       #
      DEF DFABT8LN  #40#;    # LENGTH OF AB8MESS                       #
      DEF DFABT9LN  #38#;    # LENGTH OF AB9MESS                       #
      DEF DFABT10LN #34#;    # LENGTH OF AB10MESS                      #
      DEF DFABT11LN #17#;    # LENGTH OF AB11MESS                      #
      DEF DFABT12LN #38#;    # LENGTH OF AB12MESS                      #
      DEF DFABT13LN #33#;    # LENGTH OF AB13MESS                      # JJJ1230
      DEF DFABT14LN #35#;    # LENGTH OF AB14MESS                      #
      DEF DFABT15LN #27#;    # LENGTH OF AB15MESS                      #
      DEF DFABT16LN #49#;    # LENGTH OF AB16MESS                      #
      DEF DFABT17LN #44#;    # LENGTH OF AB17MESS                      #
      DEF DFABT18LN #30#;    # LENGTH OF AB18MESS                      #
      DEF DFABT19LN #32#;    # LENGTH OF AB19MESS                      #
      DEF DFABT20LN #32#;    # LENGTH OF AB20MESS                      #
      DEF DFABT21LN #30#;    # LENGTH OF AB21MESS                      #
      DEF DFABTILN #31#;     # LENGTH OF INTERR                        # MABT 
      DEF DFABTLLN #37#;     # LENGTH OF ABLMESS                       # MABT 
                                                                         MABT 
      XREF                                                               JJ10247
        BEGIN                                                            JJ10247
        PROC DB$ABRT;        # ISSUE ABORT FUNCTION                    # JJ10247
        FUNC DB$CDEB C(10);  # CONVERT INTEGER TO DECIMAL WITH BLANKS  #
        FUNC DB$CFIL C(30);  # FILL WITH BLANKS                        #
        FUNC DB$COCB C(10);  # CONVERT INTEGER TO OCTAL WITH BLANK FILL#
        FUNC DB$COCT C(10);  # CONVERT INTEGER TO OCTAL WITH ZERO FILL #
        PROC DB$EPRT;        # FORCE PRINTING OF A STRING              # JJJ1107
        PROC DB$MSG;         # ISSUE MESSAGE TO THE DAYFILE            # JJ10247
        PROC DB$UCLF;        # CLOSE INPUT AND OUTPUT FILES            # JJ10247
        PROC DB$UOPF;        # OPEN  INPUT AND OUTPUT FILES            # JJ10247
        END                                                              JJ10247
                                                                         JJ10247
                                                                         JJ10237
# THE FOLLOWING ITEMS ARE THE FORMAL PARAMETERS                        # JJ10237
                                                                         JJ10237
      ITEM ABRTCODE I;       # ABORT CODE. INDICATES THE REASON FOR THE# JJ10237
                             # ABORT                                   # JJ10237
      ITEM ABRTPARM U;       # PARAMETER TO BE DISPLAYED WITH SOME OF  # JJ10237
                             # THE MESSAGES.                           # JJ10237
                                                                         JJ10237
      ARRAY ABTMSG S(4);
        BEGIN                                                            MABT 
        ITEM ABTMSGCC C(0,0,1)   = [" "];                                MABT 
        ITEM ABTMSGF   C(0,6,31)  = ["       **** PROGRAM ABORT ****"]; 
        ITEM ABTMSGT  U(3,12,48) = [0];                                  MABT 
        END                                                              MABT 
                                                                         MABT 
      ARRAY AB1MESS S(3); 
        BEGIN                                                            MABT 
        ITEM AB1MSGF  C(0,0,20) = [" BAD CC PARAMETER = "];              MABT 
        ITEM AB1MSGV  U(2,0,60);  # NO TRAILER NEEDED SINCE LAST 18    # MABT 
                                  # BITS OF PARAM ARE ALWAYS 0         # MABT 
        END                                                              MABT 
                                                                         MABT 
      ARRAY AB2MESS S(6); 
        BEGIN 
        ITEM AB2MSGF  C(0,00,46) = [" CANNOT FIND FOLLOWING PFN ENTRY IN
 PFN TABLE "];
        ITEM AB2MSGV  C(4,36,07); 
        ITEM AB2MSGT  U(5,18,42) = [0];  # MESSAGE TERMINATOR          #
        END 
                                                                         MABT 
      ARRAY AB3MESS S(4); 
        BEGIN                                                            MABT 
      ITEM AB3MSGF C(0,0,13) = [" OLD MD FILE "]; 
      ITEM AB3MSGV C(1,18,7); 
      ITEM AB3MSGT1 C(2,0,10)=[" NOT AT CP"]; 
      ITEM AB3MSGT2 U(3,0,60) = [0];
        END                                                              MABT 
                                                                         MABT 
      ARRAY AB7MESS S(4); 
        BEGIN                                                            MABT 
        ITEM AB7MSGF C(0,0,29)  = [" CRM ERR ON NEW MD, ERR CODE "];
        ITEM AB7MSGV C(2,54,3); 
        ITEM AB7MSGT U(3,12,48) = [0];
  
        END                                                              MABT 
                                                                         MABT 
      ARRAY AB8MESS S(5); 
        BEGIN 
        ITEM AB8MSGF C(0,0,30) = [" VARIABLE RANGE ERR/TBL ERR - "];
        ITEM AB8MSGV C(3,0,10); 
        ITEM AB8MSGT U(4,0,60) = [0]; 
        END 
  
      ARRAY AB9MESS S(4); 
        BEGIN 
        ITEM AB9MSGF C(0,0,31) = [" MANAGED MEMORY OVERFLOW, PROC "]; 
        ITEM AB9MSGV C(3,6,7);
        ITEM AB9MSGT U(3,48,12)= [0]; 
        END 
  
      ARRAY AB10MESS S(4);
        BEGIN 
        ITEM AB10MSGF C(0,0,23) = [" ERROR LIMIT EXCEEDED -"];
        ITEM AB10MSGV C(2,18,4);
        ITEM AB10MST1 C(2,42,7) = [" ERRORS"];
        ITEM AB10MST2 U(3,24,36) = [0]; 
        END 
  
      ARRAY AB11MESS S(2);
        BEGIN 
        ITEM AB11MSGF C(0,0,17) = [" EMPTY INPUT FILE"];
        ITEM AB11MSGT U(1,42,18) = [0]; 
        END 
  
      ARRAY AB12MESS S(4);
        BEGIN 
        ITEM AB12MCC  C(0,0,1) = [" "]; 
        ITEM AB12MSGV C(0,6,10);
        ITEM AB12MT1  C(1,6,27) = [" NOT LEGAL FIRST INPUT WORD"];
        ITEM AB12MT2  U(3,48,12) = [0]; 
        END 
  
      ARRAY AB13MESS S(4);                                               JJJ1230
        BEGIN                                                            JJJ1230
        ITEM AB13MSGF C(0,0,16) = [" SCHEMA/AREA ID "];                  JJJ1230
        ITEM AB13MSGV C(1,36,6);                                         JJJ1230
        ITEM AB13MT1 C(2,12,11) = [" TOO LARGE "];                       JJJ1230
        ITEM AB13MT2 U(3,18,42) = [0];                                   JJJ1230
        END                                                              JJJ1230
      ARRAY AB14MESS S(4);
        BEGIN 
        ITEM AB14MSGF C(0,0,35) = 
          [" FATAL ERROR ISSUED BY THE CST BLDR"];
        ITEM AB14MSGT U(3,30,30) = [0]; 
        END 
  
      ARRAY AB15MESS S(4);
        BEGIN 
        ITEM AB15MSGF C(0,0,28) = [" FATAL ERRORS, NO MD CREATED"]; 
        ITEM AB15MSGT U(2,48,12) = [0];          # MESSAGE TERMINATOR#
        END 
                                                                         JJJ1230
      ARRAY AB16MESS S(5);
        BEGIN 
        ITEM AB16MSGF C(0,0,8) = [" OLD MD "];
        ITEM AB16MSGV C(0,48,7);
        ITEM AB16MSGT1 C(1,30,34) = [" SPECIFIED WITH CREATION RUN INPUT
"]; 
        ITEM AB16MSGT2 U(4,54,6) = [0]; 
        END 
  
      ARRAY AB17MESS S(5);
        BEGIN 
          ITEM AB17MSGF C(0,0,44) = 
            [" OLD MD LFN CANNOT BE THE SAME AS NEW MD LFN"]; 
          ITEM AB17MSGT U(4,24,36) = [0];        # MESSAGE TERMINATOR#
        END 
  
      ARRAY AB18MESS S(4);
        BEGIN 
          ITEM AB18MSGF C(0,0,30) = [" BAD OLD MASTER DIRECTORY FILE"]; 
          ITEM AB18MSGT U(3,0,60) = [0];         # MESSAGE TERMINATOR#
        END 
  
      ARRAY AB19MESS S(4);
        BEGIN 
        ITEM AB19MSGF C(0,0,29) = [" CRM ERR ON SCHEMA, ERR CODE "];
        ITEM AB19MSGV C(2,54,3);
        ITEM AB19MSGT U(3,12,48) = [0]; 
        END 
  
      ARRAY AB20MESS S(4);
        BEGIN 
        ITEM AB20MSGF C(0,0,29) = [" CRM ERR ON OLD MD, ERR CODE "];
        ITEM AB20MSGV C(2,54,3);
        ITEM AB20MSGT U(3,12,48) = [0]; 
        END 
  
      ARRAY AB21MESS S(4);
        BEGIN 
        ITEM AB21MSGF C(0,00,30) = [" ILLEGAL FILE TYPE ENCOUNTERED"];
        ITEM AB21MSGT U(3,00,60) = [0]; 
        END 
  
      ARRAY ABLMESS S(4); 
        BEGIN                                                            MABT 
        ITEM ABLMSGF  C(0,0,30)  = [" ILLEGAL CALL TO DB$MABT FROM "];   MABT 
        ITEM ABLMSGV  C(3,0,6);                                          MABT 
        ITEM ABLMSGT1 C(3,36,1)  = ["B"];                                MABT 
        ITEM ABLMSGT2 U(3,42,18) = [0];                                  MABT 
        END                                                              MABT 
                                                                         MABT 
      ARRAY INTERR S(4);
        BEGIN                                                            MABT 
        ITEM INTERRF C(0,0,31) = ["         INTERNAL DBMSTRD ERROR"];    JJJ1024
        ITEM INTERRT U(3,6,54) = [0];                                    MABT 
        END                                                              MABT 
                                                                         MABT 
# ABORTSW IS USED TO JUMP TO THE PROPER PROCESSING ROUTINE FOR THE CODE# MABT 
                                                                         MABT 
      SWITCH ABORTSW ABORT1,  # BAD CC PARAM                           # MABT 
                     ABORT2,  # PFN TABLE ENTRY NOT FOUND              #
                     ABORT3,  # OLD MD NOT AT CP                       # MABT 
                     ABORTL,
                     ABORTL,
                     ABORTL,
                     ABORT7,  # FATAL CRM ERROR ON NEW MD              #
                     ABORT8,  # VARIABLE OUT OF RANGE OR TABLE ERR     #
                     ABORT9,  # MEM MANAGER ERR, OVERFLOW              #
                     ABORT10, # ERR LIMIT REACHED                      #
                     ABORT11, # EMPTY INPUT FILE                       #
                     ABORT12, # FIRST WORD ON INPUT NOT PROPER         #
                     ABORT13, # ID EXCEEDS MAX ALLOWED                 # JJJ1230
                     ABORT14, # FATAL ERROR IN THE CST BUILDER         #
                     ABORT15, # MD NOT CREATED                         #
                     ABORT16, #OLD MD SPECIFIED IN CREATION RUN        #
                     ABORT17,   #OLD MD IS NOT UNIQUE FROM NEW MD      #
                     ABORT18, #BAD MASTER DIRECTORY FILE               #
                    ABORT19, #FATAL CRM ERROR ON SCHEMA   # 
                     ABORT20, # FATAL CRM ERROR ON OLD MD              #
                     ABORT21, # ILLEGAL FILE TYPE ENCOUNTERED          #
                     ABORTL; #ERROR IN ABORT CODE INPUT TO DB$MABT     #
  
  
  
  
#     B E G I N   D B $ M A B T   E X E C U T A B L E   C O D E .      #
  
  
                                                                         MABT 
      DB$UOPF;               # MAKE SURE OUTPUT IS OPEN                # MABT 
                                                                         MABT 
                                                                         MABT 
      IF ABRTCODE LS 1 OR ABRTCODE GR DFNUMABCD                          MABT 
        THEN ABRTCODE = DFBDABTCD;  # BAD CODE TO DB$MABT              # MABT 
                                                                         MABT 
      GOTO ABORTSW [ABRTCODE-1];  # ACTS AS CASE.  ALL CODE            # JJJ1027
                                   # EXITS TO ENDPROC                  # JJJ1027
                                                                         MABT 
ABORT1:                      # BAD CC PARAM                            # MABT 
      AB1MSGV [0] = ABRTPARM;                                            MABT 
      DB$MSG (AB1MESS);                                                  MABT 
      DB$EPRT (AB1MESS,DFABT1LN);                                        JJJ1107
      GOTO ENDPROC;                                                      MABT 
                                                                         MABT 
ABORT2:                      # PFN TABLE ENTRY NOT FOUND               #
      AB2MSGV[0] = C<0,7> ABRTPARM; 
      DB$MSG(AB2MESS);
      DB$EPRT(AB2MESS,DFABT2LN);
      GOTO ENDPROC; 
  
ABORT3:                      # OLD MD NOT AT CP                        # MABT 
      AB3MSGV[0] = C<0,7>ABRTPARM;
      AB3MSGV[0] = DB$CFIL(AB3MSGV[0],7," "); 
      DB$MSG (AB3MESS);                                                  MABT 
      DB$EPRT (AB3MESS,DFABT3LN);                                        JJJ1107
      GOTO ENDPROC;                                                      MABT 
                                                                         MABT 
ABORT7:                      # FATAL CRM ERROR ON NEW MD               #
      AB7MSGV [0] = DB$COCT (ABRTPARM,3); 
      DB$MSG (AB7MESS);                                                  MABT 
      DB$EPRT (AB7MESS,DFABT7LN);                                        JJJ1107
      GOTO ENDPROC;                                                      MABT 
                                                                         MABT 
 ABORT8:                     # VARIABLE OUT OF RANGE OR TABLE ERR      #
      DB$MSG (INTERR);
      DB$EPRT (INTERR,DFABTILN);
      AB8MSGV [0] = C<0,7> ABRTPARM;
      DB$MSG (AB8MESS); 
      DB$EPRT (AB8MESS,DFABT8LN); 
      GOTO ENDPROC; 
  
ABORT9:                      # MEM MANAGER ERROR, OVERFLOW             #
      DB$MSG (INTERR);
      DB$EPRT (INTERR,DFABTILN);
      AB9MSGV [0] = C<0,7> ABRTPARM;
      DB$MSG (AB9MESS); 
      DB$EPRT (AB9MESS,DFABT9LN); 
      GOTO ENDPROC; 
  
ABORT10:                     # ERROR LIMIT REACHED                     #
      AB10MSGV [0] = DB$CDEB (ABRTPARM,4);
      DB$MSG (AB10MESS);
      DB$EPRT (AB10MESS,DFABT10LN); 
      GOTO ENDPROC; 
  
ABORT11:                     # EMPTY INPUT FILE                        #
      DB$MSG (AB11MESS);
      DB$EPRT (AB11MESS,DFABT11LN); 
      GOTO ENDPROC; 
  
ABORT12:                     # FIRST WORD ON INPUT NOT PROPER          #
      AB12MSGV [0] = C<0,10> ABRTPARM;
      DB$MSG (AB12MESS);
      DB$EPRT (AB12MESS,DFABT12LN); 
      GOTO ENDPROC; 
  
ABORT13:                     # SCHEMA/AREA ID TOO BIG                  # JJJ1230
      AB13MSGV [0] = DB$CDEB (ABRTPARM,6);
      DB$MSG (AB13MESS);                                                 JJJ1230
      DB$EPRT (AB13MESS,DFABT13LN);                                      JJJ1230
      GOTO ENDPROC;                                                      JJJ1230
ABORT14:                      # FATAL ERROR ENCOUNTERED BY THE CST BLDR#
      DB$MSG (AB14MESS);
      DB$EPRT (AB14MESS,DFABT14LN); 
      GOTO ENDPROC; 
ABORT15:                      # MD NOT CREATED                         #
      DB$MSG (AB15MESS);
      GOTO ENDPROC; 
ABORT16:           #OLD MD SPECIFIED IN CREATION RUN                   #
      AB16MSGV[0] = C<0,7>ABRTPARM; 
      AB16MSGV[0] = DB$CFIL(AB16MSGV[0],7," "); 
      DB$MSG(AB16MESS); 
      DB$EPRT(AB16MESS,DFABT16LN);
      GOTO ENDPROC; 
  
ABORT17:           #OLD MD CANNOT BE THE SAME AS NEW MD LFN # 
      DB$MSG(AB17MESS); 
      DB$EPRT(AB17MESS,DFABT17LN);
      GOTO ENDPROC; 
  
ABORT18:      #BAD OLD BASTER DIRECTORY FILE #
      DB$MSG(AB18MESS); 
      DB$EPRT(AB18MESS,DFABT18LN);
      GOTO ENDPROC; 
  
ABORT19:                     #FATAL CRM ERROR ON SCHEMA # 
      AB19MSGV [0] = DB$COCT (ABRTPARM,3);
       DB$MSG(AB19MESS);
      DB$EPRT(AB19MESS,DFABT19LN);
      GOTO ENDPROC; 
  
ABORT20:                     # FATAL CRM ERROR ON OLD MD               #
      AB20MSGV[0] = DB$COCT(ABRTPARM,3);
      DB$MSG(AB20MESS); 
      DB$EPRT(AB20MESS,DFABT20LN);
      GOTO ENDPROC; 
  
ABORT21:                     # ILLEGAL FILE TYPE                       #
      DB$MSG(AB21MESS); 
      DB$EPRT(AB21MESS,DFABT21LN);
      DB$MSG(INTERR); 
      DB$EPRT(INTERR,DFABTILN); 
      GOTO ENDPROC; 
  
ABORTL:                      # ERROR IN CALL TO DB$MABT (INT ERR)      # MABT 
      P<GETENTRY> = LOC(DB$MABT);                                        JJ10247
      ABLMSGV [0] = DB$COCB(B<12,18>GETUNSIG[0],6); 
      DB$MSG (INTERR);                                                   MABT 
      DB$EPRT (INTERR,DFABTILN);                                         JJJ1107
      DB$MSG (ABLMESS);                                                  MABT 
      DB$EPRT (ABLMESS,DFABTLLN);                                        JJJ1107
      GOTO ENDPROC;                                                      MABT 
                                                                         MABT 
ENDPROC:                                                                 MABT 
      DB$MSG (ABTMSG);       # ISSUE ABORT MESSAGE TO DAYFILE          # MABT 
      ABTMSGCC [0] = "-";    # TRIPLE SPACE IT                         # JJJ1024
      DB$EPRT (ABTMSG,DFABTMLN);                                         JJJ1107
      DB$UCLF;               #CLOSE INPUT AND OUTPUT FILES             # MABT 
      DB$ABRT;               #ABORT THE JOB                            # MABT 
                                                                         MABT 
      END                                                                JJ10247
      TERM                                                               MABT 
