*DECK SYMABT                                                             NEWDECK
#----------------------------------------------------------------------# NEWDECK
#                                                                      # NEWDECK
#     P R O C   S Y M A B T                                            #
#                                                                      #
#     PURPOSE - ISSUE ERROR MESSAGE, THEN ABORT JOB STEP               # NEWDECK
#                                                                      # NEWDECK
#     CALLING SEQUENCE -                                               # NEWDECK
#               SYMABT(NUM,MES,NCHR)                                   # NEWDECK
#               WHERE NUM  = ERROR NUMBER                              # NEWDECK
#                     MES  = MESSAGE TEXT                              # NEWDECK
#                     NCHR = EXACT NUMBER OF CHARACTERS IN TEXT        # NEWDECK
#                                                                      # NEWDECK
#     MESSAGE FORMAT -                                                 # NEWDECK
#               ****** SYMPL COMPILER ERROR  XXXX --  TEXT             # NEWDECK
#               WHERE XXXX IS ERROR NUMBER                             # NEWDECK
#                     TEXT IS MESSAGE TEXT                             # NEWDECK
#                                                                      # NEWDECK
#     MISCELLANEOUS -                                                  # NEWDECK
#               IF SYMABT IS COMPILED WITH E OPTION THEN A CALL TO     # NEWDECK
#               SYMABT WITH A NEGATIVE ERROR NUMBER WILL CAUSE         # NEWDECK
#               SYMABT TO ISSUE THE USUAL ERROR MESSAGE AND THEN       # NEWDECK
#               RETURN RATHER THAN ABORT.                              # NEWDECK
#                                                                      # NEWDECK
#----------------------------------------------------------------------# NEWDECK
      PROC SYMABT(NUM,MES,NCHR);                                         NEWDECK
      BEGIN  # SYMABT #                                                  NEWDECK
                                                                         NEWDECK
      XREF PROC ABT;                                                     NEWDECK
      XREF PROC PTLSTV;                                                  NEWDECK
      XREF PROC BINDEC;                                                  NEWDECK
                                                                         NEWDECK
      DEF BYTWD # 10 #;                                                  NEWDECK
      DEF OVER  # 3 #;             # NUMBER OF PRESET WORDS IN TEXT    # NEWDECK
                                                                         NEWDECK
      ARRAY MES[0] S(1);           # ERROR MESSAGE                     # NEWDECK
        BEGIN                                                            NEWDECK
        ITEM MESS           C(00,00,BYTWD);                              NEWDECK
        END                                                              NEWDECK
      ARRAY TEXT[0:11] S(1);                                             NEWDECK
        BEGIN                                                            NEWDECK
        ITEM INFO           C(00,00,BYTWD) =["0****** SY","MPL COMPIL",  NEWDECK
                                             "ER ERROR  ","XXXX  --  "]; NEWDECK
        END                                                              NEWDECK
                                                                         NEWDECK
      ITEM I              I;                                             NEWDECK
      ITEM L              I;                                             NEWDECK
      ITEM NCHR           I;       # NUMBER OF CHARACTERS IN MESSAGE   # NEWDECK
      ITEM NUM            I;       # ERROR MESSAGE NUMBER              # NEWDECK
      L = OVER + (NCHR + BYTWD - 1)/BYTWD;                               NEWDECK
                                                                         NEWDECK
      FOR I=4 STEP 1                                                     NEWDECK
        UNTIL L                                                          NEWDECK
      DO                                                                 NEWDECK
        BEGIN                                                            NEWDECK
        INFO[I] = MESS[I-4];                                             NEWDECK
        END                                                              NEWDECK
                                                                         NEWDECK
      IF NUM LS 0                                                        NEWDECK
      THEN                                                               NEWDECK
        BEGIN                                                            NEWDECK
        I = -NUM;                                                        NEWDECK
        END                                                              NEWDECK
      ELSE                                                               NEWDECK
        BEGIN                                                            NEWDECK
        I = NUM;                                                         NEWDECK
        END                                                              NEWDECK
                                                                         NEWDECK
      BINDEC(TEXT,30,I,4);         # CONVERT ERROR NUMBER TO BCD       # NEWDECK
      PTLSTV(TEXT,L+1);            # PRINT DIAGNOSTIC ON L= FILE       # NEWDECK
                                                                         NEWDECK
      $BEGIN                                                             NEWDECK
      IF NUM LS 0                                                        NEWDECK
      THEN                                                               NEWDECK
        BEGIN                                                            NEWDECK
        RETURN;                                                          NEWDECK
        END                                                              NEWDECK
      $END                                                               NEWDECK
                                                                         NEWDECK
      ABT;                                                               NEWDECK
      END    # SYMABT #                                                  NEWDECK
      TERM                                                               NEWDECK
