*DECK RHFXFRC 
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMACBF 
USETEXT COMACBX 
USETEXT COMADFM 
USETEXT COMAFET 
USETEXT COMAMCB 
PROC RHFXFRC; 
# TITLE RHFXFRC - CONTINUE NETWORK TRANSFER.  # 
  
      BEGIN  # RHFXFRC #
  
# 
**    RHFXFRC - CONTINUE NETWORK TRANSFER.
* 
*     RHFXFRC CONTINUES THE PROCESSING OF EACH ACTIVE FILE-TRANSFER-IN- 
*     PROGRESS ONE MORE STEP, IF POSSIBLE.
* 
*     PROC RHFXFRC
* 
*     ENTRY      NONE.
* 
*     EXIT       NONE.
* 
*     PROCESS    SAVE FTTINDEX. 
*                SET FTTINDEX = 0.
*                WHILE FTTINDEX .LT. MAX: 
*                  SET <FTTENT> = FWA OF FTT ENTRY. 
*                  IF FTT ENTRY INACTIVE (ACN = 0): 
*                    CYCLE (FTTINDEX).
*                  IF FTTSTATE INVALID: 
*                    CALL DAYFMSG TO SEND MESSAGE AND ABORT JOB.
*                  CALL SETFTTA TO SET ADDRESSES. 
*                  FTTCOUNT -1. 
*                  IF FTTCOUNT = 0: 
*                    CALL CHKTIME TO CHECK IF TIMED OUT IN THIS CURRENT 
*                      STATE. 
*                  IF NOT TIMED OUT.
*                    DEPENDING ON THE STATE OF THE FILE TRANSFER: 
*                      CASE (WAITING FOR CIO OPEN REQ. COMPLETION)
*                        CALL VALLOCF TO VALIDATE LOCAL FILE. 
*                      CASE (SS ISSUED, WAITING FOR FC/ACK/R MSG.)
*                        RETURN.
*                      CASE (WAITING FOR SS COMMAND)
*                        CALL GETLEV7 TO FETCH POSSIBLE LEVEL 7 
*                          COMMAND. 
*                      CASE (WAITING FOR SELECT CONVERT MODE REPLY) 
*                        RETURN.
*                      CASE (WAITING FOR CONVERT MODE RESOURCES)
*                        RETURN. (CHKTIME WILL RE-ISSUE REQUEST)
*                      CASE (DATA-TRANSFER-IN-PROGRESS) 
*                        CALL DODPR TO DECIDE ON DEVICE PROCESSING
*                      CASE (WAITING FOR EXIT CONVERT MODE REPLY) 
*                        RETURN.
*                      CASE (CLOSE RHF FILE ISSUED, WAITING FOR ACK)
*                        RETURN. (WAITING FOR FC/ACK/R REPLY MESSAGE).
*                      CASE (ES COMMAND ISSUED, WAITING FOR ACK)
*                        RETURN. (WAITING FOR FC/ACK/REPLY MESSAGE.)
*                      CASE (EOI RECEIVED, WAITING FOR ES COMMAND)
*                        CALL GETLEV7 TO CHECK FOR EXPECTED END OF
*                          DATA COMMAND.
*                      CASE (ER COMMAND ISSUED, WAITING FOR ACK)
*                        RETURN. (WAITING FOR FC/ACK/R REPLY MESSAGE).
*                      CASE (WAITING FOR ER COMMAND)
*                        CALL GETLEV7 TO CHECK FOR EXPECTED END 
*                          ACKNOWLEDGE COMMAND. 
*                      CASE (QR COMMAND ISSUED, WAITING FOR ACK)
*                        RETURN. (WAITING FOR FC/ACK/R REPLY MESSAGE).
*                  INCREMENT FTTINDEX.
*                  CYCLE (FTTINDEX).
*                RESTORE FTTINDEX AND <FTTENT>. 
* 
* 
****  PROC RHFXFRC - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        PROC CHKTIME;                #  CHECK IF TUNED OUT #
        PROC DAYFMSG;                #  WRITE DAYFILE MESSAGE # 
        PROC DODPR;                  #  DECIDE ON DEVICE ROUTINE PROC. #
        PROC GETLEV7;                #  GET LEVEL 7 MESSAGE # 
        FUNC OCTCHF     C(10);       #  OCTAL TO DISPLAY CODE # 
        PROC PRNAKM;                 #  PROCESS FC/NAK/R RCVD STATE # 
        PROC SETFTTA;                #  SET FTT ADDRESSES # 
        PROC VALLOCF;                #  VALIDATE LOCAL FILE # 
        END 
  
# 
****  PROC RHFXFRC - XREF LIST END. 
# 
  
      ITEM SAVEINDEX  I;             # SAVES VALUE OF FTTINDEX #
  
      SWITCH PSTATE:SFTTSTATE 
                           NETXFRCCON:INIT$STATE, 
                           NETXFRC0:WAITFOROPC, 
                           NETXFRC1:SSISSWFACK, 
                           NETXFRC2:WTFRSSCMD,
                           NETXFRC1:WFORSCMR, 
                           NETXFRC5:WFORCMRES,
                           NETXFRC3:DATAXFRPRG, 
                           NETXFRC1:WFORECMR, 
                           NETXFRC1:ESISSWFACK, 
                           NETXFRC2:EOIRCVWFES, 
                           NETXFRC1:ERISSWFACK, 
                           NETXFRC2:WTFRERCMD,
                           NETXFRC1:QRISSWFACK, 
                           NETXFRC4:FCNAKRCVD,
                           NETXFRC5:DATAXFRDLY; 
                                               CONTROL EJECT; 
      DBGXFRC = DBGXFRC + 1;
      SAVEINDEX = FTTINDEX; 
      FTTINDEX = 0; 
      ASLONGAS  FTTINDEX  LT  MAXFILEXFR  DO
        BEGIN 
        P<FTTENT> = LOC(FTT$WD0[FTTINDEX]);  # SET FTT ENTRY POINTER #
        IF FTTACN NE 0
        THEN
          BEGIN 
          IF FTTSTATE GE S"ALL$OTHERS"
          THEN
            BEGIN 
            FDFM$VALU2[BADXFR$ERR] = OCTCHF (FTTSTATE,2); 
            DAYFMSG (BADXFR$ERR);  # SEND MESSAGE AND ABORT CP #
            END 
  
          SETFTTA;                 # SET FTT ADDRESSES #
          FTTCOUNT = FTTCOUNT - 1;
          IF FTTCOUNT EQ 0
          THEN
            BEGIN 
            CHKTIME;
            END 
  
          IF FTTACN NE 0           # IF NOT TIMED OUT # 
          THEN
            BEGIN 
            GOTO PSTATE[FTTSTATE];
  
  
NETXFRC0: 
  
# 
*         WAITING FOR OPEN REQUEST COMPLETION.
# 
  
          VALLOCF;               # CHK IF OPEN CMPL, VALIDATE FILE #
          GOTO NETXFRCCON;
  
NETXFRC1: 
  
# 
*         WAITING FOR AN ASYNCHRONOUS MESSAGE TO ARRIVE.
# 
  
          GOTO NETXFRCCON;
  
NETXFRC2: 
  
# 
*         WAITING FOR A LEVEL 7 COMMAND TO ARRIVE.
# 
  
          GETLEV7;               # GET LEVEL 7 MESSAGE #
          GOTO  NETXFRCCON; 
  
NETXFRC3: 
  
# 
*         DATA TRANSFER IN PROGRESS.
# 
  
          DODPR;                    # DECIDE ON DEV. PROCESS. ROUTINE # 
          GOTO NETXFRCCON;
  
NETXFRC4: 
  
# 
*       FC/NAK/R RECEIVED.  DELAY FOR AWHILE TO ALLOW NAD BUFFERS TO
*       BECOME FREE.  THEN RETRY SENDING LAST LEVEL 7 COMMAND.
# 
  
        PRNAKM;                      # PROCESS FC/NAK/R RECEIVED STATE #
        GOTO NETXFRCCON;
  
NETXFRC5: 
  
# 
*         WAIT FOR CONVERT MODE RESOURCES.
# 
  
          GOTO NETXFRCCON;
  
# 
*     CONTINUE PROCESSING AFTER END OF SIMULATED CASE STATEMENTS. 
# 
  
            END 
  
NETXFRCCON: 
  
          END 
  
        FTTINDEX = FTTINDEX + 1;
        END 
  
      FTTINDEX = SAVEINDEX; 
      P<FTTENT> = LOC(FTT$WD0[FTTINDEX]);  # RESET FTT ENTRY POINTER #
      END  # RHFXFRC #
  
      TERM
