*DECK     DB$VERS 
USETEXT RQPARTX 
      PROC DB$VERS(VENAME,ES);
      BEGIN 
 #
* *   DB$VERS - VERSION CHANGE OBJECT-TIME       PAGE  1
* *   A W ALLEN                                  DATE  01/30/81 
* 
* DC  PURPOSE 
* 
*     FORMAT THE REQUEST PACKET FOR THE DATABASE VERSION CHANGE COMMAND.
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
* 
# 
      ITEM VENAME  C(07);          # VERSION NAME TO CHANGE TO (INPUT) #
      ITEM ES          U;          # ERROR STATUS (OUTPUT)             #
                                   # ZERO IF NO ERROR                  #
# 
* 
* DC  EXIT CONDITIONS 
* 
*     NORMAL EXIT-- 
*       IF ES = 0 THEN
*         VERSION CHANGE IS COMPLETED AND NEW VERSION IS IN USE.
*         VERSION NAME IN DB$INVP IS SET TO THE NEW VERSION.
* 
*       IF ES NOT = ZERO THEN 
*         VERSION CHANGE WAS NOT MADE BECAUSE OF A NON-FATAL ERROR. 
*         CDCS HAS RETURNED FILES FOR THE OLD VERSION, BUT NOT
*           TERMINATED THE UCP CONNECTION.
*         VERSION NAME PARAMETER IN DB$INVP IS CLEARED. 
*         (USER MUST REQUEST VERSION CHANGE AGAIN BEFORE CONTINUING 
*         WITH I/O ON THE DATABASE.)
* 
*     ABNORMAL EXIT-- 
*       RUN-UNIT ABORTS MAY OCCUR IN DB$RQST (AT UCP) OR BE INITIATED 
*       FROM CDCS VIA THE UCP-SCP INTERFACE.
*       CONTROL IS NOT RETURNED TO THE CALLER OF DB$VERS. 
* 
* DC  CALLING ROUTINES
* 
*     COBOL USER VIA AN "ENTER" STATEMENT.
*     DMLVERS--FDBF INTERFACE ROUTINE.
*     QU CANNOT CALL DB$VERS. 
* 
* DC  CALLED ROUTINES 
* 
# 
      XREF PROC DB$RA0; 
      XREF PROC DB$RQST;           # ISSUE "CALLSS" REQUEST            #
# 
* 
* DC  NON-LOCAL VARIABLES 
* 
# 
      XREF                         # INVOKE PARAMETERS                 #
*CALL     INPARDCLS 
# 
* 
* DC  DESCRIPTION 
* 
*     PUT VERSION NAME INTO REQUEST PACKET. 
*     ISSUE "CALLSS" REQUEST (DB$RQST). 
*     IF NON-FATAL ERROR
*     THEN
*       SET ES PARAMETER FROM ERROR STATUS IN REQUEST PACKET. 
*       CLEAR VERSION NAME IN DB$INVP.
*     ELSE
*       SET NEW VERSION NAME IN DB$INVP.
*     RETURN. 
* 
 #
      CONTROL EJECT;
  
  
#     S T A R T   O F   D B $ V E R S   E X E C U T A B L E   C O D E  #
  
  
      RQPVENAM[0] = VENAME;        # PUT VERSION NAME INTO REQUEST     #
                                   # PACKET.                           #
#     FOR VERSION CHANGE REQUEST PACKET, CLEAR OUT PARAMETERS          #
#     THAT ARE USED ONLY IN AN INVOKE REQUEST.                         #
      RQPINID[0] = " "; 
      RQPINSC[0] = " "; 
      RQPINSB[0] = " "; 
      RQPINSBCK[0] = 0; 
      DB$RQST(DFVER,DFWCVER,DB$RA0);  #COMPLETE REQUEST PACKET AND     #
                                      #ISSUE "CALLSS" REQUEST.         #
  
      IF RQPKERR[0] NQ 0           # IF VERSION CHANGE WAS UNSUCCESSFUL#
      THEN                         # (NON-FATAL ERROR)...              #
        BEGIN 
        MIVENAM[0] = DFCLRVENM;    # SET "NO VERSION ACTIVE"           #
        END 
      ELSE                         # VERSION CHANGE SUCCESSFUL...      #
        BEGIN 
        MIVENAM[0] = VENAME;       # SET NEW VERSION NAME.             #
        END 
      ES = RQPKERR[0];             # RETURN CDCS EXTERNAL ERROR NUMBER #
                                   # TO CALLER.                        #
      RETURN; 
      END 
      TERM
