*DECK DB$INVS 
USETEXT CDGDFTX 
      PROC DB$INVS (SBNAM,SCNAM,RUID,SBCKSM); 
*CALL COPYRDCLS 
      BEGIN 
 #
* *   DB$INVS                                    PAGE  1
* *   SUB-PROGRAM INVOKE OBJECT-TIME ROUTINE
* *   W P CEAGLIO                                DATE  8/20/76
* *   J J JANIK                                  DATE  11/07/78 
* *   A W ALLEN - DATABASE VERSIONS              DATE  01/30/81 
* 
* DC  PURPOSE 
* 
*     VERIFY A SUB-INVOKE REQUEST WITHOUT DATABASE VERSIONS.  DB$INVS 
*     IS CALLED WHEN THE DATABASE VERSION DOES NOT NEED TO BE CHECKED.
*     THAT IS, FOR COBOL SUB-INVOKE AND FOR OLD FDBF SUB-INVOKE.
* 
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
* 
# 
      ITEM SBNAM  C(30);           # SUBSCHEMA NAME                    #
      ITEM SCNAM  C(30);           # SCHEMA NAME                       #
      ITEM RUID   C(10);           # RUN-UNIT ID                       #
      ITEM SBCKSM     U;           # SUBSCHEMA CHECKSUM                #
# 
* 
*     ASSUMPTIONS 
* 
*     ARRAY DB$INVP CONTAINS PARAMETER VALUES SET BY THE ORIGINAL 
*     INVOKE. 
* 
* 
* DC  EXIT CONDITIONS 
* 
*     NORMAL--CONTROL RETURNED TO HOST-LANGUAGE 
*     ABNORMAL--RUN-UNIT IS ABORTED 
* 
* 
* DC  CALLING ROUTINES
* 
*     HOST LANGUAGE 
* 
* DC  CALLED ROUTINES 
* 
# 
      XDEF PROC DB$INVX;           # SUB-INVOKE WITH DATABASE VERSIONS #
                                   # IMBEDDED PROCEDURE, ALSO          #
                                   # EXTERNALLY CALLABLE               #
# 
* 
* DC  NON-LOCAL VARIABLES 
* 
# 
      XREF                         # INVOKE PARAMETERS                 #
*CALL     INPARDCLS 
# 
* 
* DC  DESCRIPTION 
* 
*     SET VERSION TO MIVENAM AND CALL DB$INVX TO DO SUB-INVOKE
*     VERIFICATION. 
* 
 #
# 
*     LOCAL VARIABLES 
# 
      ITEM VENAM  C(07);           # DUMMY VERSION NAME FOR DB$INVX.   #
      CONTROL EJECT;
  
  
#     S T A R T   O F   D B $ I N V S   E X E C U T A B L E   C O D E  #
  
  
      BEGIN 
      VENAM = MIVENAM[0];          # SO VERSION WILL BE THE SAME.      #
      DB$INVX(SBNAM,SCNAM,RUID,SBCKSM,VENAM); 
                                   # SUB-INVOKE WITH VERSION.          #
      RETURN; 
      END 
      CONTROL EJECT;
      PROC DB$INVX(SBNAM,SCNAM,RUID,SBCKSM,VENAM);
      BEGIN 
 #
* *   DB$INVS                                    PAGE  1
* *   DB$INVX--SUB-PROGRAM INVOKE WITH DATABASE VERSION 
* *   A W ALLEN - DATABASE VERSIONS              DATE  01/30/81 
* 
* DC  PURPOSE 
* 
*     VERIFY A SUB-INVOKE REQUEST WITH DATABASE VERSION INCLUDED. 
*     DB$INVX IS CALLED FROM FDBF 2.3 WHEN DATABASE VERSION MUST BE 
*     VERIFIED ALONG WITH THE OTHER PARAMETERS. 
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
* 
# 
      ITEM SBNAM  C(30);           # SUBSCHEMA NAME                    #
      ITEM SCNAM  C(30);           # SCHEMA NAME                       #
      ITEM RUID   C(10);           # RUN-UNIT ID                       #
      ITEM SBCKSM     U;           # SUBSCHEMA CHECKSUM                #
      ITEM VENAM  C(07);           # DATABASE VERSION NAME             #
# 
* 
*     ASSUMPTIONS 
* 
*     ARRAY DB$INVP CONTAINS PARAMETER VALUES SET BY THE ORIGINAL 
*     INVOKE AND MOST RECENT VERSION CHANGE.
* 
* DC  EXIT CONDITIONS 
* 
*     NORMAL--CONTROL RETURNED TO CALLER. 
* 
*     ABNORMAL--RUN UNIT IS ABORTED.
* 
* DC  CALLING ROUTINES
* 
*     DB$INVS                      SUB-INVOKE WITHOUT VERSIONS
*     DMLINV                       FDBF INVOKE ROUTINE
* 
* DC  CALLED ROUTINES 
* 
# 
      XREF PROC DB$ABRT;           # ABORT RUN-UNIT                    #
      XREF PROC DB$MSG;            # WRITE ERROR MESSAGE TO DAYFILE    #
      XREF PROC DB$WEF;            # WRITE ERROR MESSAGE TO ERROR FILE #
# 
* 
* DC  NON-LOCAL VARIABLES 
* 
# 
      XREF                         # INVOKE PARAMETERS                 #
*CALL     INPARDCLS 
# 
* 
* DC  DESCRIPTION 
* 
*     VERIFY THAT SUBSCHEMA NAME, SCHEMA NAME, SUBSCHEMA CHECKSUM AND 
*     DATABASE VERSION NAME IN THE SUB-INVOKE CALL ARE IDENTICAL TO THE 
*     MAIN PROGRAM INVOKE CALL (AND VERSION CHANGE, IF ANY) BY
*     EXAMINING THE PARAMETERS IN DB$INVP.  IF NOT, DIAGNOSE A FATAL
*     ERROR AND ABORT THE RUN-UNIT. 
* 
 #
  
# ERROR MESSAGES                                                       #
  
      ITEM ABTMSG C(40) =    "FATAL CDCS ERROR--RUN-UNIT ABORTED :";
      ITEM ERRMSG1 C(75) = " 614-SUBPROGRAM SCHEMA, SUBSCHEMA OR VERSION
 NOT IDENTICAL TO MAIN PROGRAM:"; 
  
      CONTROL EJECT;
  
  
#     S T A R T   O F   D B $ I N V X   E X C U T A B L E   C O D E    #
  
  
      IF SCNAM NQ MISCNAM [0] 
        OR SCNAM NQ MISCNAM[0]
        OR SBNAM NQ MISBNAM[0]
        OR VENAM NQ MIVENAM[0]
      THEN
        BEGIN 
        DB$WEF(ERRMSG1);
        DB$MSG(ERRMSG1);
        DB$MSG(ABTMSG); 
        DB$ABRT;
        END 
      END                          # END OF DB$INVX.                   #
      END                          # END OF DB$INVS MODULE.            #
      TERM
