*DECK IMFINVC 
USETEXT TCMMDEF 
USETEXT TENVIRN 
USETEXT TIMF
USETEXT TIMFDEF 
      PROC IMFINVC; 
      BEGIN 
#----------------------------------------------------------------------#
#     S T A R T    O F    X R E F S                                    #
  
      XREF PROC DB$END;            # CDCS TERMINATE                    #
      XREF PROC LOADOVL;           # LOAD NEW OVERLAY                  #
      XREF FUNC MOVEDOWN I;        # MOVE A CMM BLOCK CLOSER TO HHA    #
      XREF PROC RTNSSCM;           # RETURN CRM/CDCS SUBSCHEMA AND CM  #
  
      XREF ITEM AREATBLPTR I;      # POINTER TO FIRST AREA TABLE       #
      XREF ITEM CDCSDBM B;         # TRUE IF CDCS USE/CREATE/INVOKE    #
  
#----------------------------------------------------------------------#
#     S T A R T    O F    L O C A L    I T E M S                       #
  
      ITEM K I;                    # SCRATCH VARIABLE                  #
CONTROL EJECT;
#----------------------------------------------------------------------#
#                                                                      #
#     I N V $ M O V                                                    #
#                                                                      #
#     TRY TO MOVE CLOSER TO HHA THE SCHEMA, SUBSCHEMA, AND             #
#     SYMBOLIC SUBSCHEMA TABLES                                        #
#                                                                      #
#----------------------------------------------------------------------#
  
      PROC INV$MOV; 
      BEGIN 
          USERSCHT = MOVEDOWN(USERSCHT, USERSCHL);
          USERSSCT = MOVEDOWN(USERSSCT, USERSSCL);
          USERSSST = MOVEDOWN(USERSSST, USERSSSL);
  
          P<   SST$> = USERSSCT+USERSSCL-SSTENL;  # POINT SST$ TO THE  #
                                                 #LAST 4 WORDS OF      #
                                                 #SYMBOLIC SCHEMA TABLE#
          P<SYMSST$> = USERSSST+USERSSSL-SSSTENL; #POINT SYMSST$ TO THE#
                                                 #LAST 2 WORDS OF SYMBO#
                                                 #LIC SUBSCHEMA TABLE  #
        P<RECORDS> = CMM$ALF ( (SICRCTN + 2) * 3, FIXED$LWA, 0);
          P<SRAT> = USERSSST + SICRCTD; 
          FOR K = 1 STEP 1
          UNTIL SICRCTN  DO 
          BEGIN 
             RECORDSYMBOL [K] = P<SRAT>;   # NOTE ADDRESS OF SYMBOL TBL#
             RECORDLGW [K] = RECLNGW;      # NOTE RECORD LENGTH        #
             FIRSTPATH [K] = RECFSAP;      # NOTE FIRST PATH ORDINAL   #
             P<SRAT> = P<SRAT> + SRCTENL;  # POSITION TO NEXT ENTRY    #
          END 
          RETURN; 
     END
CONTROL EJECT;
#----------------------------------------------------------------------#
#                                                                      #
#     I M F I N V C                                                    #
#                                                                      #
#     NORMAL COMPLETION OF IMF INVOKE PROCESSING.  IF THERE WAS A      #
#     PREVIOUS CDCS INVOKE, CALL DB$END TO TERMINATE CDCS.             #
#     IF THERE ARE CRM OR CDCS AREA TABLES OR RELATION TABLES, CALL    #
#     RTNSSCM TO RELEASE ALL CENTRAL MEMORY ALLOCATED FOR THESE        #
#     TABLES AND TO RETURN THE CRM OR CDCS SUBSCHEMA.                  #
#     CALL INV$MOV TO MOVE IMF TABLES CLOSER TO HHA                    #
#                                                                      #
#----------------------------------------------------------------------#
  
      IF CDCSDBM                   # IF CDCS INVOKED                   #
      THEN
        BEGIN 
        DB$END;                    # TERMINATE CDCS                    #
        END 
  
      IF AREATBLPTR NQ 0           # IF CRM OR CDCS AREA TABLES        #
      THEN
        BEGIN 
        RTNSSCM;                   # RELEASE CM, RETURN SUBSCHEMA      #
        END 
  
      INV$MOV;                     # MOVE IMF TABLES CLOSER TO HHA     #
      LOADOVL (BASEX0, 1, 0);      # LOAD (1,0)                        #
      END 
      TERM
