*DECK,QFSRES
PROC QFSRES(OVERLAYED,NETSAVAIL,DBGAVAIL);
      BEGIN    # QFSRES # 
*CALL COMCBEGN
# 
**    QFSRES     QTF SERVER RESIDENT ROUTINE. 
* 
*     QFSRES IS THE QTFS RESIDENT ROUTINE.  ITS FUNCTION IS 
*     TO TRANSFER CONTROL BETWEEN QFSMAIN, THE MAIN QTFS
*     ROUTINE AND QTFXFR, THE FILE TRANSFER ROUTINE.
*     IN THE OVERLAY CONFIGURATION, QFSRES RESIDES IN THE (0,0) 
*     RESIDENT OVERLAY, QFSMAIN AND OTHER QTFS ROUTINES 
*     COMPRISE THE (1,0) OR (3,0) OVERLAY, WHILE QTFXFR AND 
*     AIP OR FIP NETXFR ROUTINES ARE IN THE (2,0) OR (4,0) OVERLAY. 
*     IN THE NON-OVERLAY CONFIGURATION, ALL ROUTINES ARE
*     CO-RESIDENT ALLOWING QTFS TO PROCESS SEVERAL
*     SIMULTANEOUS CONNECTIONS. 
*     (SEE COMMENTS AND DISCLAIMER IN QFIRES FOR MORE INFORMATION 
*     ABOUT SUPPORTED VARIANTS.)
# 
  
      ITEM OVERLAYED  B;             # TRUE IF QTFS IS OVERLAYED #
      ITEM NETSAVAIL  U;             # NETWORK INTERFACES AVAILABLE # 
      ITEM DBGAVAIL   B;             # TRUE IF DEBUG OPTIONS LOADED # 
  
# 
****  XREF
# 
      XREF
        BEGIN 
        PROC DUMMAIN;              # INTERFACE TO QFSMAIN # 
        PROC DUMXFR;               # INTERFACE TO QTFXFR #
        PROC NAME;
        END 
  
# 
****  XREF END
# 
  
      CONTROL PRESET;              # INITIALIZE COMMON BLOCKS # 
  
*CALL COMCAPR 
*CALL COMCCAE 
*CALL COMQCAF 
*CALL COMQCIO 
*CALL COMQCPM 
*CALL COMQDEF 
*CALL COMQDSP 
*CALL COMQFIL 
*CALL COMQKDS 
*CALL COMQNET 
*CALL COMQRMB 
*CALL COMQTXT 
  
      XDEF
        BEGIN                      # DECLARE STORAGE FOR FILE TABLE # 
        ARRAY AFT$QFS [1:1] S(FILENT); ;
        END 
  
      DEF NTBFS      #3#;          # NUMBER OF RESIDENT BUFFERS # 
      ARRAY TXTBUFS [1:NTBFS] S(LTXTBFW); ;  # RESIDENT SPACE # 
  
        $BEGIN
        NAME("QFSRES"); 
        $END
  
      NAM = B<59-NETWNAM,1>NETSAVAIL NE 0; # SET NETWORK INDICATOR #
      IF OVERLAYED
      THEN
        BEGIN 
        LACNMAX = 1;               # ONE CONNECTION IF OVERLAY #
        END 
  
      ELSE
        BEGIN 
        LACNMAX = ACNMAXC;         # USE MAXIMUM CONNECTS # 
        END 
  
      TXTBUF$RES = NTBFS;          # NUMBER OF RESIDENT TEXT BUFFERS #
      P<TXTBUF> = LOC(TXTBUFS);    # POINT TO FWA OF SPACE FOR TXTINI # 
      XFRACN = -1;                 # SIGNAL INITIALIZATION NEEDED # 
      DUMMAIN;                     # CALL QFSMAIN # 
      ASLONGAS XFRACN NE 0         # IF FILE TRANSFER REQUIRED #
      DO
        BEGIN 
        DUMXFR;                    # INITIATE FILE TRANSFER # 
        DUMMAIN;                   # RETURN TO MAIN ROUTINES #
        END 
  
      END  # QFSRES # 
    TERM
