*DECK DB$DDGN 
USETEXT SCANTXT 
      PROC DB$DDGN; 
      BEGIN 
 #
* *   DB$DDGN - DIAGNOSTICS FOR CONSOLE COMMANDS PAGE  1
* *   C F RICHARDS                               DATE  12/07/78 
* 
* DC  PURPOSE 
* 
*     CONTAIN A COPY OF DB$DIAG THAT INTERFACES WITH THE CDCS CONSOLE 
*     OPERATOR COMMAND PROCESSING AND THE CONSOLE DISPLAY MANAGER.
* 
* DC  CONTAINED ROUTINES
# 
      XDEF PROC DB$DIAG;           # ISSUE DIAGNOSTIC TO CONSOLE       #
 #                                                                     #
      CONTROL EJECT;
      PROC DB$DIAG((DIAGNUM));
      BEGIN 
 #
* *   DB$DDGN                                    PAGE  1
* *   DB$DIAG - ISSUE DIAGNOSTIC TO CONSOLE 
* *   C F RICHARDS                               DATE  12/07/78 
* 
* DC  PURPOSE 
* 
*     WRITE A LINE OF DIAGNOSTIC TEXT TO THE RESERVED DIAGNOSTIC LINE ON
*     THE OPERATOR CONSOLE. 
* 
* DC  ENTRY CONDITIONS
# 
      ITEM DIAGNUM I;              # THE NUMBER IDENTIFYING THE TEXT   #
                                   # TO BE ISSUED. THERE ARE TWO RANGES#
                                   # OF ERRORS:                        #
                                   #    1 TO 199 - A LINE OF TEXT IS   #
                                   #               SENT TO THE CONSOLE.#
                                   #  201 TO 399 - A LINE OF TEXT      #
                                   #               PRECEDED BY THE     #
                                   #               STRING IN DB$CWRD IS#
                                   #               SENT TO THE CONSOLE.#
# 
* DC  EXIT CONDITIONS 
* 
*     NORMAL CASE - THE MESSAGE IS DISPLAYED ON THE CONSOLE.
* 
*     ABNORMAL CASE - IF THE DIAGNUM HAS NO ASSOCIATED TEXT, A MESSAGE
*                     DISPLAYING THAT NUMBER IS WRITTEN TO THE CONSOLE. 
* 
* DC  CALLING ROUTINES
* 
*     DB$STD - SYNGEN SYNTAX TABLE DRIVER 
* 
* DC  CALLED ROUTINES 
# 
      XREF FUNC DB$CDEB C(10);     # INTEGER TO DECIMAL WITH BLANK FILL#
      XREF PROC DB$DEDL;           # ENTER CONSOLE DIAGNOSTIC LINE     #
# 
* DC  DESCRIPTION 
* 
*     IF THE DIAGNOSTIC WILL NOT BE PRECEDED BY CURWORD, INSERT THE TEXT
*     INTO THE MESSAGE LINE.
*     IF THE DIAGNOSTIC REQUIRES CURWORD TO PRECEDE IT, INSERT CURWORD
*     INTO THE MESSAGE LINE, THEN INSERT THE DIAGNOSTIC TEXT. 
*     IF THE DIAGNOSTIC NUMBER DOES NOT FALL IN THE RANGE OF DEFINED
*     DIAGNOSTICS, SELECT A MESSAGE IDENTIFYING THE INCORRECT NUMBER. 
*     ISSUE THE MESSAGE TO THE OPERATOR CONSOLE DIAGNOSTIC LINE.
*     RETURN TO THE CALLER. 
 #
  
#     LOCAL DEFS                                                       #
  
      DEF DFLIDIAG     #  7 #;     # LAST INSERT DIAGNOSTIC (200 BIAS) #
      DEF DFLNIDIAG    #  9 #;     # LAST NON-INSERT DIAGNOSTIC        #
  
  
#     LOCAL ITEMS                                                      #
  
      ITEM MSGLINE C(48);          # DIAGNOSTIC LINE. UP TO 48 CHARS   #
      ITEM MSGSIZE I;              # SIZE OF TEXT IN MSGLINE           #
  
      ARRAY IDIAG [1:DFLIDIAG] S(4);  # TEXT FOR INSERT DIAGNOSTICS    #
        BEGIN 
        ITEM IDIAGC   C(00,00,38) = [DFLIDIAG(" ")];
        ITEM IDIAGLIN C(00,00,38) = 
                  ["UNKNOWN COMMAND/OPTION"                  #  201    #
                  ,"*=* AND VALUE MUST FOLLOW THIS OPTION"   #  202    #
                  ,"INVALID LFN"                             #  203    #
                  ,"INVALID ID/NAME"                         #  204    #
                  ,"DUPLICATE OPTION"                        #  205    #
                  ,"INVALID JOB NAME"                        #  206    #
                  ,"INVALID VERSION NAME"                    #  207    #
                  ];
        END 
  
      ARRAY NIDIAG [1:DFLNIDIAG] S(5);
        BEGIN 
        ITEM NIDIAGC   C(00,00,48) = [DFLNIDIAG(" ")];
        ITEM NIDIAGLIN C(00,00,48) =
                  ["AWAITING YES/NO RESPONSE"                #    1    #
                  ," "  # RESEVED FOR FUTURE USE   #         #    2    #
                  ,"INVALID COMBINATION OF OPTIONS"          #    3    #
                  ,"*TERM* COMMAND ALLOWS NO OPTIONS"        #    4    #
                  ,"TEXT IGNORED AFTER TERMINATOR (.)"       #    5    #
                  ,"*CDCS* OPTION MUST APPEAR ALONE"         #    6    #
                  ,"*JOB* OPTION MUST APPEAR ALONE"          #    7    #
                  ,"*DMPFL* MUST APPEAR ALONE"               #    8    #
                  ,"*SC* PARAMETER MISSING"                  #    9    #
                  ];
        END 
  
      CONTROL EJECT;
  
  
#     E X E C U T A B L E   C O D E   F O R   D B $ D I A G            #
  
  
      MSGLINE = " ";               # PRESET TEXT LINE                  #
      MSGSIZE = 0;                 # PRESET TEXT SIZE                  #
      IF DIAGNUM GQ 1              # IF ONE OF THE NON-INSERT LINES    #
        AND DIAGNUM LQ DFLNIDIAG
      THEN
        BEGIN 
        MSGLINE = NIDIAGLIN[DIAGNUM];  # FETCH THE NON-INSERT LINE     #
        MSGSIZE = 48; 
        END 
  
      IF DIAGNUM GQ 200 + 1        # IF ONE OF THE INSERT LINES        #
        AND DIAGNUM LQ 200 + DFLIDIAG 
      THEN
        BEGIN 
      MSGLINE = CURWORDC[0];       # PRECEDE THE TEXT WITH CURWORD     #
        IF DB$CLNG GR 10           # IF CURWORD TOO LONG TO USE ALL    #
        THEN
          BEGIN 
          MSGSIZE = 10;            # USE UP TO TEN CHARS OF CURWORD    #
          END 
  
        ELSE
          BEGIN 
          MSGSIZE = DB$CLNG;
          END 
  
        C<MSGSIZE,2>MSGLINE = "--";  # INSERT HYPHENS TO OFFSET CURWORD#
        MSGSIZE = MSGSIZE + 2;
        C<MSGSIZE,48-MSGSIZE>MSGLINE = IDIAGLIN[DIAGNUM - 200]; 
        MSGSIZE = 48; 
        END 
  
      IF MSGSIZE EQ 0              # IF NOT A RECOGNIZED DIAGNOSTIC    #
      THEN
        BEGIN 
        MSGLINE = DB$CDEB(DIAGNUM, 4);  # DIAGNOSTIC NUMBER            #
        C<4,44>MSGLINE = " -- INTERNAL ERROR, UNKNOWN DIAGNOSTIC";
        MSGSIZE = 48; 
        END 
  
      DB$DEDL(MSGLINE, MSGSIZE);
      RETURN; 
  
      END 
  
      END 
  
      TERM
