*DECK DB$DDIF 
      PROC DB$DDIF; 
      BEGIN 
 #
* *   DB$DDIF - COMMAND DRIVER INTERFACE MODULE  PAGE  1
* *   C F RICHARDS                               DATE  11/20/78 
* 
* DC  PURPOSE 
* 
*     PROVIDE THE ITEMS AND ROUTINES NECESSARY FOR COMPLETING THE 
*     INTERFACES FOR THE USE OF SYNGEN SYNTAX ANALYSIS. THE SYNGEN LIST 
*     OF SUBROUTINES IS ALSO DECLARED HERE. THIS PROC IS ONLY FOR USE AS
*     A PACKAGING MODULE - ITS ENTRY POINT IS A DUMMY.
*     IT IS CALLED ONLY FOR THE PURPOSE OF LOCKING IN THE OVCAP CD2DDIF.
* 
*     EMBEDDED ROUTINES 
# 
      XDEF PROC DB$DDVR;           # CONSOLE COMMAND DRIVER            #
      XDEF PROC DB$MABT;           # SCANNER ABORT ROUTINE             #
      XDEF PROC DB$MRED;           # SCANNER INPUT ROUTINE             #
# 
* DC  NON-LOCAL VARIABLES 
# 
*CALL SACSTDCLS 
      XREF ITEM DB$MEOF I;         # EOF ON SCANNER INPUT IF NON-ZERO  #
      XREF ITEM DB$MIRL I;         # LENGTH OF OPERATOR COMMAND        #
# 
* DC  GLOBAL NON LOCAL VARIABLES
# 
      XREF ITEM DB$DSSB C(30);     # RETAIL/RETURN SUBSCHEMA NAME      #
# 
* DC  CALLED ROUTINES 
* 
*     THE FOLLOWING ROUTINES ARE REFERENCED AS THE LIST OF SEMANTIC 
*     ROUTINES SUPPLIED TO DB$STD.
# 
      XREF PROC DB$DS01;           # ADVANCE DISPLAYED PAGE            #
      XREF PROC DB$DS02;           # BACK UP ONE DISPLAYED PAGE        #
      XREF PROC DB$DS03;           # CONFIRMATION RESPONSE *NO*        #
      XREF PROC DB$DS04;           # CONFIRMATION RESPONSE *YES*       #
      XREF PROC DB$DS05;           # CYCLE TO NEXT COMMAND/OPTION LIST #
      XREF PROC DB$DS06;           # DOWN THE OBJECT                   #
      XREF PROC DB$DS07;           # IDLE THE OBJECT                   #
      XREF PROC DB$DS08;           # DB$YES IF IN *SUSPEND* MODE       #
      XREF PROC DB$DS09;           # COMMAND INITIALIZATION            #
      XREF PROC DB$DS10;           # FLAG *ALL* OPTION. DB$NO IF DUPL  #
      XREF PROC DB$DS11;           # FLAG *AR* OPTION. DB$NO IF DUPL   #
      XREF PROC DB$DS12;           # FLAG *CDCS* OPTION. DB$NO IF DUPL #
      XREF PROC DB$DS13;           # FLAG *JOBS* OPTION. DB$NO IF DUPL #
      XREF PROC DB$DS14;           # FLAG *SC* OPTION. DB$NO IF DUPL   #
      XREF PROC DB$DS15;           # SAVE AREA ID/NAME                 #
      XREF PROC DB$DS16;           # SAVE SCHEMA ID/NAME               #
      XREF PROC DB$DS17;           # SAVE AN ID VALUE                  #
      XREF PROC DB$DS18;           # SAVE A NAME VALUE                 #
      XREF PROC DB$DS19;           # DB$YES IF VALID SC, AR PARAMETERS #
      XREF PROC DB$DS20;           # UP THE OBJECT                     #
      XREF PROC DB$DS21;           # DB$YES IF NEXT TOKEN IS *=*       #
      XREF PROC DB$DS22;           # DB$YES IF VALID/EXISTING JOB NAME #
      XREF PROC DB$DS24;           # DB$YES IF A NAME-STYLE KEYWORD    #
      XREF PROC DB$DS26;           # LIST STATUS FOR A JOB             #
      XREF PROC DB$DS27;           # LIST STATUS LINES FOR SCHEMA, ETC.#
      XREF PROC DB$DS28;           # EXECUTION OF THE *TERM* COMMAND   #
      XREF PROC DB$DS29;           # DB$YES IF A COMMAND VERB          #
      XREF PROC DB$DS30;           # RETAIN AN OBJECT                  #
      XREF PROC DB$DS31;           # RETURN AN OBJECT                  #
      XREF PROC DB$DS32;           # SAVE SUBSCHEMA NAME               #
      XREF PROC DB$DS33;           # VALIDATE APPEARANCE OF SC PARAM   #
      XREF PROC DB$DS34;           # DUMP REQUEST HANDLER              #
      XREF PROC DB$DS35;           # FLAG *VN* OPTION.  DB$NO IF DUPL  #
      XREF PROC DB$DS36;           # VALIDATE 7 CHARACTER NAME         #
      XREF PROC DB$DS37;           # SAVE VERSION NAME                 #
      XREF PROC DB$DS38;           # SET *ROLLABLE* TRUE               #
      XREF PROC DB$DS39;           # SET *ROLLABLE* FALSE              #
      XREF PROC DB$STDR;           # RETURN TO CALLER OF DB$STD        #
# 
* 
*     LOCAL ITEMS 
* 
*     USED IN COMMON BY ALL EMBEDDED ROUTINES.
# 
      ITEM CMDLENG I;              # LENGTH OF OPERATOR COMMAND LEFT   #
 #                                                                     #
  
  
  
      PROC DB$DDVR(COMMLENG); 
      BEGIN 
 #
* *   DB$DDIF                                    PAGE  1
* *   DB$DDVR - OPERATOR DISPLAY COMMAND DRIVER 
* *   C F RICHARDS                               DATE  11/20/78 
* 
* DC  PURPOSE 
* 
*     INITIATE PROCESSING FOR AN OPERATOR COMMAND.
* 
* DC  ENTRY CONDITIONS
* 
*     ITEM COMMLENG CONTAINS THE LENGTH OF THE OPERATOR COMMAND DETECTED
*     BY DB$DDFE. 
* 
* DC  EXIT CONDITIONS 
* 
*     COMMAND PROCESSING COMPLETE.
* 
* DC  CALLING ROUTINES
* 
*     DB$DDFE - FRONT END OF THE *L* DISPLAY DRIVER 
* 
* DC  CALLED ROUTINES 
# 
      XREF PROC DB$MINI;           # INITIALIZE LEXICAL SCANNER        #
      XREF PROC DB$STD;            # SYNTAX TABLE DRIVER               #
# 
* DC  DESCRIPTION 
* 
*     TRY TO GET AN OPERATOR COMMAND. IF A COMMAND EXISTED, INITIALIZE
*     THE SCANNER AND CALL DB$STD TO ANALYZE AND PROCESS THE COMMAND. 
 #
      ITEM COMMLENG;               # INPUT PARAM - COMMAND LENGTH    #
  
  
#     E X E C U T A B L E   C O D E   F O R   D B $ D D V R            #
  
  
      CMDLENG = COMMLENG;          # STORE PARAM INTO GLOBAL VARIABLE  #
      DB$MINI;                     # INITIALIZE THE SCANNER            #
      DB$STD(SEMRTNS);             # ANALYZE AND PROCESS COMMAND       #
  
      RETURN; 
  
      END 
  
  
  
      PROC DB$MABT; 
      BEGIN 
 #
* *   DB$DDIF                                    PAGE  1
* *   DB$MABT - HANDLE ABORT FROM DB$STD
* *   C F RICHARDS                               DATE  11/20/78 
* 
* DC  PURPOSE 
* 
*     HANDLE INTERNAL ABORTS FOR DB$STD. SINCE THE SCP SHOULD NOT BE
*     ABORTED FOR SUCH AN ERROR, CONTROL IS RETURNED TO THE CALLER OF 
*     DB$STD. THIS ROUTINE IS **NOT** FOR GENERAL ABORTS. 
* 
* DC  ENTRY CONDITIONS
* 
*     ASSUMPTIONS 
* 
*     THIS ROUTINE WAS CALLED BY DB$STD AS A DIRECT CONSEQUENCE OF
*     PROCESSING AN OPERATOR COMMAND. IT IS **NOT** A GENERAL ABORT 
*     ROUTINE.
* 
* DC  EXIT CONDITIONS 
* 
*     DB$DMSF - (SUSPEND FLAG). CLEARED.
* 
* DC  CALLING ROUTINES
* 
*     DB$STD - SYNTAX TABLE DRIVER
* 
* DC  CALLED ROUTINES 
# 
      XREF PROC DB$DEDL;           # ENTER DIAGNOSTIC LINE ON DISPLAY  #
      XREF PROC DB$LINE;           # WRITE LINE TO CDCS OUTPUT FILE    #
      XREF PROC DB$MSG;            # ISSUE DAYFILE MESSAGE             #
      XREF PROC DB$STDR;           # RETURN TO CALLER OF DB$STD        #
# 
* DC  NON-LOCAL VARIABLES 
# 
      XREF ITEM DB$DMSF B;         # TRUE IF DISPLAY IS SUSPENDED      #
                                   # PENDING OPERATOR CONFIRMATION.    #
# 
* DC  DESCRIPTION 
* 
*     CLEAR DB$DMSF TO ENSURE OUR NEXT ENTRY TO COMMAND PROCESSING WILL 
*     NOT GET STUCK TRYING TO CONFIRM AN ABORTED COMMAND. ISSUE A 
*     MESSAGE IDENTIFYING AN ABORT FROM DB$STD. THIS WILL BE SENT TO
*     THE CONSOLE DISPLAY, THE CDCS DAYFILE, AND THE CDCS OUTPUT
*     LISTING. THEN ABORT THE CURRENT COMMAND PROCESSING BY RETURNING 
*     TO THE CALLER OF DB$STD.
 #
  
  
#     E X E C U T A B L E   C O D E   F O R   D B $ M A B T            #
  
  
      DB$DMSF = FALSE;             # INSURE NOT LEFT SUSPENDED         #
      DB$MSG("INTERNAL ERROR - DB$MABT:");  # DAYFILE ABORT MESSAGE    #
      DB$LINE(" INTERNAL ERROR - DB$MABT", 25);  # LINE FOR OUTPUT FILE#
      DB$DEDL(" INTERNAL ERROR - DB$MABT - COMMAND ABORTED", 43); 
      DB$STDR;                     # NO RETURN FROM THIS PROC CALL     #
      END 
  
  
  
      PROC DB$MRED; 
      BEGIN 
 #
* *   DB$DDIF                                    PAGE  1
* *   DB$MRED - READ A LINE FOR THE SYNTAX SCANNER
* *   C F RICHARDS                               DATE  11/20/78 
* 
* DC  PURPOSE 
* 
*     SUPPLY LINES FOR DB$MSCN TO SCAN AND ANALYZE. SET FLAG WHEN NO
*     MORE INPUT LINES ARE AVAILABLE. THIS ROUTINE IS A SPECIAL CASE FOR
*     THE CONSOLE DISPLAY INTERFACE.
* 
* DC  ENTRY CONDITIONS
* 
*     ASSUMPTIONS 
* 
*     CMDLENG - INDICATES LENGTH OF COMMAND IN DB$MWSA (FROM DB$DGOC) 
* 
* DC  EXIT CONDITIONS 
* 
*     CMDLENG - SET TO ZERO 
*     DB$MEOF - SET ONE IF LENGTH OF COMMAND WAS ZERO 
*     DB$MIRL - SET TO LENGTH OF COMMAND IN DB$MWSA(ZERO IF SECOND CALL)
* 
* DC  CALLING ROUTINES
* 
*     DB$MSCN - LEXICAL SCANNER 
* 
* DC  CALLED ROUTINES 
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     THIS ROUTINE IS A SPECIAL CASE FOR THE OPERATOR CONSOLE INTERFACE.
*     A SINGLE COMMAND IS ASSUMED TO BE IN DB$MWSA WITH ITS LENGTH IN 
*     CMDLENG. SINCE INPUT CAN CONSIST ONLY OF A SINGLE LINE, THE FIRST 
*     CALL TO THIS ROUTINE WILL INDICATE A COMMAND IN DB$MWSA, AND THE
*     SECOND (OR SUBSEQUENT) CALL WILL INDICATE AN EOF. 
 #
  
  
#     E X E C U T A B L E   C O D E   F O R   D B $ M R E D            #
  
  
      DB$MIRL = CMDLENG;           # GIVE AS MUCH COMMAND AS EXISTS    #
      CMDLENG = 0;                 # NO MORE COMMAND LEFT              #
      IF DB$MIRL EQ 0              # IF NO COMMAND EXISTED             #
      THEN
        BEGIN 
        DB$MEOF = 1;               # SET EOF TO ALLOW EOT RECOGNITION  #
        END 
  
      RETURN; 
  
      END 
  
  
  
#     E X E C U T A B L E   C O D E   F O R   D B $ D D I F            #
  
#     THE FOLLOWING CODE IS ONLY FOR USE AS DATA BY DB$STD. THE LABEL  #
#     IDENTIFIES THE FWA OF A SERIES OF CALLS TO THE SEMANTIC ROUTINES.#
#     THE *RETURN* PRECEDING THE LABEL PROTECTS AGAINST AN ACCIDENTAL  #
#     EXECUTION OF THIS CODE.                                          #
  
#     IT IS USED AS A NULL PROCEDURE TO LOCK IN THE OVCAP.             #
  
      RETURN; 
  
SEMRTNS:                           # FWA OF LIST OF SEMANTIC ROUTINE   #
                                   # PROC CALLS.                       #
  
*CALL DSMJPDCLS 
  
      END 
  
      TERM
