*DECK DB$ODMP 
USETEXT CDCSCTX;
      PROC DB$ODMP; 
      BEGIN 
 #
* *   DB$ODMP - OPERATOR DUMP ROUTINES           PAGE  1
* *   LG WHITE                                   DATE  01/03/80 
* 
* DC  PURPOSE 
* 
*     CONTAIN ROUTINES TO EXECUTE OPERATOR *DUMP* COMMAND 
* 
* DC  CONTAINED ROUTINES
# 
      XDEF PROC DB$DS34;           # DUMP REQUEST HANDLER              #
      XREF ITEM FLOWPR B;          # FLOW POINT REQUEST SWITCH         #
# 
* DC  NON-LOCAL VARIABLES 
# 
      XREF ITEM DB$DMPF B;         # FLAG INDICATING PREVIOUS DUMP     #
# 
 #
  
  
  
      PROC DB$DS34; 
      BEGIN 
 #
* *   DB$ODMP 
* *   DB$DS34 - PROCESS DUMP COMMAND             PAGE  1
* *   LG WHITE                                   DATE  01/03/80 
* 
* DC  PURPOSE 
* 
*     EXECUTE OPERATOR DUMP COMMAND 
* 
* DC  ENTRY CONDITIONS
* 
*     ASSUMPTIONS 
* 
*     DB$DMPF IS TRUE IF PREVIOUS DUMP TAKEN
* 
* DC  EXIT CONDITIONS 
* 
*     EXIT THROUGH DB$NO IF OPERATOR REFUSED ANOTHER DUMP.
*     EXIT THROUGH DB$YES IF FIRST FIELD LENGTH DUMP TAKEN
*     OR CONFIRMATION WAS YES.
*     NOTE:  SINCE THERE IS A CALL TO DB$DSCF IN THIS PROC, ALL DB$YES
*     AND DB$NO CALLS DO NOT RETURN TO THE *DUMP* SYNTAX SECTION..
*     IT RETURNS TO THE SUCCESS/FAIL SIDES OF THE *YES* OR *NO* SYNTAX
*     SECTIONS.  SEE DB$DSCF FOR COMPLETE DESCRIPTION 
* 
* DC  CALLED ROUTINES 
# 
      XREF PROC DB$DSCF;           # REQUEST OPERATOR CONFIRMATION     #
      XREF PROC DB$DERL;           # ENTER RESPONSE LINE TO CONSOLE    #
      XREF PROC DB$DEDL;           # ENTER DIAGNOSTIC LINE TO CONSOLE  #
      XREF PROC DB$DCRL;           # CLEAR CONSOLE RESPONSE LINE       #
      XREF PROC DB$DUMP;           # DUMP FIELD LENGTH                 #
      XREF PROC DB$NO;             # NEGATIVE RETURN TO SCANNER        #
      XREF PROC DB$PROF;           # PRINT THE OUTPUT FILE             #
      XREF PROC DB$RCVR;           # GO THROUGH DB$RCVR TO DB$FLRP     #
      XREF PROC DB$YES;            # YES RESPONSE TO SCANNER           #
# 
* DC  CALLING ROUTINES
* 
*     DB$DSTX  (THROUGH SYNGEN) 
* 
* DC  NON-LOCAL VARIABLES MODIFIED
# 
      XREF ITEM DB$DMPF B;         # FLAG FOR PREVIOUS OPERATOR DUMP   #
      XREF ITEM DB$DSCY B;         # TRUE IF YES RESPONSE FROM OPERATOR#
# 
* DC  DESCRIPTION 
* 
*     IF DB$DMPF IS NOT SET, SET FLAG, DUMP FIELD LENGTH, AND EXIT. 
*     IF NOT SET, REQUEST CONFIRMATION.  IF *YES* RESPONSE, DUMP
*     AGAIN AND RETURN.  ELSE IF *NO* RESPONSE ISSUE *COMMAND IGNORED*
*     AND RETURN. 
*     AFTER DUMPING THE FIELD LENGTH, OUTPUT THE FLOW POINTS, 
*     ROUTE THE OUTPUT FILE TO A PRINTER. 
* 
 #
#     LOCAL VARIABLES                                                  #
      DEF DFLGWARN #41#;
      DEF DFLGIGNR #15#;
      ITEM WARNMSG C(DFLGWARN) =
       "PREVIOUS DUMP TAKEN - CARE TO CONTINUE..."; 
      ITEM IGNRMSG C(DFLGIGNR) =
       "COMMAND IGNORED"; 
  
  
  
#     E X E C U T A B L E   C O D E   D B $ D S 3 4                    #
  
  
      IF NOT DB$DMPF THEN          # IF NO PREVIOUS DUMP               #
        BEGIN 
        DB$DMPF = TRUE;            # FLAG THIS DUMP                    #
        DB$DUMP (0,O"377777");     # DUMP FIELD LENGTH                 #
  
        CONTROL IFGR DFFLOP,0;
          FLOWPR = TRUE;
          DB$RCVR;                 # DB$RCVR WILL PRINT FLOW POINTS    #
        CONTROL ENDIF;
  
        DB$PROF;                   # PRINT OUTPUT FILE                 #
        DB$YES; 
  
        END 
      ELSE
        BEGIN 
        DB$DEDL(WARNMSG,DFLGWARN); # TELL OF PREVIOUS DUMP             #
        DB$DSCF;                   # REQUEST CONFIRMATION              #
        DB$DCRL;                   # CLEAR RESPONSE LINES              #
        IF DB$DSCY THEN            # IF POSITIVE REPLY                 #
          BEGIN 
          DB$DUMP (0,O"377777");   # DUMP FIELD LENGTH                 #
  
          CONTROL IFGR DFFLOP,0;
            FLOWPR = TRUE;
            DB$RCVR;               # DB$RCVR WILL PRINT FLOW POINTS    #
          CONTROL ENDIF;
  
          DB$PROF;                 # PRINT OUTPUT FILE                 #
          DB$YES; 
  
          END 
        ELSE
          BEGIN 
          DB$DEDL(IGNRMSG,DFLGIGNR); # ISSUE *COMMAND IGNORED*         #
          DB$NO;                   # RETURN TO SCANNER                 #
  
          END 
        END 
      END                          # END DB$DS34                       #
      END                          # END DB$ODMP                       #
      TERM
