*DECK DB$INQ
      PROC DB$INQ(SBNAM,SCNAM,RUID,SBCKSM,RQSTAT);
*CALL     COPYRDCLS 
      BEGIN 
 #
* *   DB$INQ -- INTERACTIVE QU INVOKE            PAGE  1
* *   INTERACTIVE QU INVOKE OBJECT-TIME ROUTINE 
* *   W P CEAGLIO                                DATE  04/01/79 
* *   A W ALLEN - DATABASE VERSIONS              DATE  01/30/81 
* * 
* 
* DC  PURPOSE 
* 
*     FORMAT THE REQUEST PACKET FOR THE QU INTERACTIVE INVOKE REQUEST 
*     WITHOUT DATABASE VERSION.  THE DB$INQ PROCEDURE IS PRIMARILY TO 
*     MAINTAIN COMPATIBILITY WITH QU 3.3 RELOCATABLES THAT WERE DESIGNED
*     TO CALL CDCS 2.2 INVOKE WITH NO DATABASE VERSION PARAMETER. 
*     QU 3.4 CALLS DB$INQV (WITH DATABASE VERSION SPECIFIED). 
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
* 
# 
      ITEM SBNAM   C(30);    # 30-CHARACTER SUBSCHEMA NAME             #
      ITEM SCNAM   C(30);    # 30-CHARACTER SCHEMA NAME                #
      ITEM RUID    C(10);    # 10-CHARACTER RUN-UNIT ID                #
      ITEM SBCKSM      I;    # SUBSCHEMA CHECKSUM                      #
      ITEM RQSTAT      I;    # REQUEST STATUS BLOCK (OUTPUT)           #
# 
* 
* DC  EXIT CONDITIONS 
* 
*     THE INTERACTIVE QU REQUEST (WITH DATABASE VERSION = MASTER) HAS 
*     BEEN ISSUED BY QU AND PROCESSED BY CDCS.  SEE THE IMBEDDED
*     PROCEDURE, DB$INQV FOR DETAILS. 
* 
* DC  CALLING ROUTINES
* 
*     INTERACTIVE QUERY UPDATE (ESPECIALLY QU 3.3)
* 
* DC  CALLED ROUTINES 
* 
# 
      XDEF PROC DB$INQV;           # INTERACTIVE QU INVOKE WITH        #
                                   # VERSION.  IMBEDDED PROCEDURE,     #
                                   # ALSO EXTERNALLY CALLABLE.         #
# 
* 
* DC  DESCRIPTION 
* 
*     SET DATABASE VERSION TO MASTER AND CALL DB$INQV FOR INTERACTIVE 
*     QU INVOKE WITH DATABASE VERSION.
* 
 #
#     LOCAL VARIABLES                                                  #
  
      ITEM VENAME C(07);           # FOR DEFAULT VERSION NAME          #
                                   # IN DB$INQV CALL.                  #
  
      ITEM XPAR1      I;           # UNUSED PARAMETER FOR DB$INQV CALL #
      CONTROL NOLIST;              # VERDFDCLS - DATABASE VERSIONS DEFS#
*CALL     VERDFDCLS 
      CONTROL LIST; 
  
  
#     S T A R T   O F   D B $ I N Q   E X E C U T A B L E   C O D E    #
  
  
      BEGIN 
      VENAME = DFMASTER;
      XPAR1 = 0;
      DB$INQV(SBNAM,SCNAM,RUID,SBCKSM,RQSTAT,VENAME,XPAR1); 
      RETURN; 
      END 
      CONTROL EJECT;
      PROC DB$INQV(SBNAM,SCNAM,RUID,SBCKSM,RQSTAT,VENAME,XPAR1);
      BEGIN 
 #
* *   DB$INQ                                     PAGE  1
* *   DB$INQV--INTERACTIVE QU INVOKE WITH DATABASE VERSION
* *   W P CEAGLIO                                DATE  04/01/79 
* *   A W ALLEN - DATABASE VERSIONS              DATE  01/30/81 
* 
* DC  PURPOSE 
* 
*     FORMAT THE REQUEST PACKET FOR THE INTERACTIVE QU INVOKE REQUEST 
*     WITH DATABASE VERSION.
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
* 
# 
      ITEM SBNAM   C(30);    # 30-CHARACTER SUBSCHEMA NAME             #
      ITEM SCNAM   C(30);    # 30-CHARACTER SCHEMA NAME                #
      ITEM RUID    C(10);    # 10-CHARACTER RUN-UNIT ID                #
      ITEM SBCKSM      I;    # SUBSCHEMA CHECKSUM                      #
      ITEM RQSTAT      I;    # REQUEST STATUS BLOCK (OUTPUT)           #
      ITEM VENAME  C(07);    # 7-CHARACTER DATABASE VERSION NAME       #
      ITEM XPAR1       I;    # EXTRA UNUSED PARAMETER                  #
# 
*     ASSUMPTIONS 
* 
*     PARAMETER XPAR1 IS SET TO ZERO BY CALLER. 
*     THIS PARAMETER IS RESERVED FOR FUTURE AND IS CURRENTLU UNUSED.
* 
* DC  EXIT CONDITIONS 
* 
*     THE "CALLSS" REQUEST TO CDCS IS MADE VIA DB$RQST
* 
*     IF THE REQUEST WAS PROCESSED WITHOUT ERROR, BOTH THE FIRST AND
*     THE LAST WORDS OF THE DATABASE STATUS BLOCK WILL BE SET TO ZERO.
*     (*RQSTAT* IS THE FIRST WORD OF THE STATUS BLOCK.)  OTHERWISE, THE 
*     FIRST WORD WILL CONTAIN 605 (OCTAL) IF CDCS IS NOT ACTIVE, OR 
*     PERHAPS ANOTHER ERROR, IN WHICH CASE THE LAST WORD IS SET 
*     AS FOLLOWS--
*         HIGH-ORDER 06 BITS - 00 = NON-FATAL ERROR 
*                              22 = FATAL ERROR (OCTAL) 
* 
*         LOW-ORDER 18 BITS  - ADDRESS OF BUFFER WITH ERROR TEXT
* 
* DC  CALLING ROUTINES
* 
*     DB$INQ                       INTERACTIVE QU INVOKE WITHOUT VERSION
*     INTERACTIVE QUERY UPDATE     QU 3.4 (WITH VERSIONS) 
* 
* DC  CALLED ROUTINES 
* 
# 
      XREF PROC DB$RQST;           # ISSUE "CALLSS" REQUEST            #
      XREF PROC DB$RA0;            # PARAMETER LIST TERMINATOR         #
# 
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     REQUEST PACKET (DB$RQBUF) 
* 
# 
      XREF ARRAY DB$DBS;           # STATUS BLOCK                      #
        BEGIN 
        ITEM DBSTLW  U(00,36,06);  # LENGTH OF STATUS BLOCK (WORDS)    #
        ITEM DBSTADR U(00,42,18);  # ADDRESS OF STATUS BLOCK           #
        END 
      XREF ITEM DB$TSKN;     # REQUEST PACKET TASK NUMBER              #
# 
* 
* DC  DESCRIPTION 
* 
*     -  THE PARAMETERS FROM THE CALL (EXCEPT THE STATUS PARAMETER) 
*        ARE STORED IN THE REQUEST PACKET.
* 
*     -  AN (ARBITRARY) TASK SEQUENCE NUMBER IS ASSIGNED FOR USE ON 
*        ALL SUBSEQUENT CALLS FROM INTERACTIVE QU.
* 
*     -  THE STATUS BLOCK PARAMETER IS INITIALIZED. 
* 
*     -  DB$RQST IS CALLED TO COMPLETE THE REQUEST AND TO ISSUE THE 
*        "CALLSS" REQUEST.
* 
*     -  CONTROL IS RETURNED TO INTERACTIVE QU
* 
 #
      CONTROL EJECT;
  
#     COMDECKS DBSTDCLS, CDGDFDCLS, RQPARDCLS, AND VERDFDCLS ARE USED  #
  
      CONTROL NOLIST; 
*CALL VERDFDCLS 
*CALL DBSTDCLS
*CALL CDGDFDCLS 
      XREF
        BEGIN 
*CALL RQPARDCLS 
        END 
      CONTROL LIST; 
  
      CONTROL EJECT;
  
  
#     S T A R T   O F   D B $ I N Q V   E X E C U T A B L E   C O D E  #
  
  
#     FILL IN ENTRIES IN THE REQUEST PACKET                            #
  
      RQPINSC  [0] = SCNAM; 
      RQPINSB  [0] = SBNAM; 
      RQPINID  [0] = RUID;
      RQPINSBCK[0] = SBCKSM;
      RQPVENAM [0] = VENAME;
  
#     ASSIGN NON-ZERO TASK SEQUENCE NUMBER                             #
  
      DB$TSKN = 1;
  
#     INITIALIZE STATUS BLOCK                                          #
  
      DBSTLW [0] = DFDBSTSIZE + 1;
      DBSTADR[0] = LOC(RQSTAT); 
  
#     ISSUE "CALLSS" REQUEST                                           #
  
      DB$RQST(DFINV,DFWCINV,DB$RA0);
  
 #     IF AN ERROR OCCURED                                             #
 #     THEN SET THE ERROR CODE IN THE DBST.                            #
  
       IF RQPKERR [0] NQ 0
       THEN 
         BEGIN
         P<DBST> = DBSTADR [0]; 
         DBERRCODE [0] = RQPKERR [0]; 
         END
  
      END 
      END 
      TERM
