*DECK PENDXFR 
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMACBF 
USETEXT COMACBX 
USETEXT COMADFM 
USETEXT COMAMCB 
PROC PENDXFR; 
# TITLE PENDXFR - PROCESS END-OF-TRANSFER COMMAND.  # 
  
      BEGIN  # PENDXFR #
  
# 
**    PENDXFR - PROCESS END-OF-TRANSFER COMMAND.
* 
*     PENDXFR MUST DECIDE WHAT TO DO WITH AN END-DATA-TRANSFER
*     LEVEL 7 COMMAND THAT HAS BEEN RECEIVED. 
* 
*     PROC PENDXFR
* 
*     ENTRY      COMMAND IS IN ARRAY TAI7MSG. 
*                <FTTENT> = FWA FTT ENTRY.
* 
*     EXIT       NONE.
* 
*     PROCESS    IF RECEIVING FILE
*                  AND  FTT-STATE = WAITING-FOR-ES OR 
*                                   DATA-XFR-IN-PROGRESS OR 
*                                   QUIT-SENT 
*                  AND  ES-COMMAND ATTR IS VALID: 
*                  IF ES-COMMAND ATTR .GE. CURRENT STATE-OF-XFR:  
*                    CALL PUTLEV7 TO SEND END-ACKNOWLEDGE (ER)
*                    IF ES-COMMAND ATTR .NE. OK:  
*                      SET ERROR = PREMATURE-TERMINATION RECEIVED 
*                      SEND DAYFILE MESSAGE 
*                    CALL INITIME TO RESET TIMER
*                    SET FTT-STATE = ER-SENT
*                    SET CURRENT STATE-OF-XFR = ES COMMAND ATTR.
*                  ELSE:  (ES-COMMAND ATTR .LT. CURRENT STATE-OF-XFR) 
*                    RETURN (WAIT FOR NEXT ES-COMMAND). 
*                ELSE 
*                  CALL PROTERR 
* 
****  PROC PENDXFR - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        FUNC APFETCH I;              # FETCH APPLIC. CMD. PARAMETER # 
        PROC DAYFMSG;                # WRITE DAYFILE MESSAGE #
        FUNC DECCHF     C(10);       # DECIMAL DISPLAY CODE # 
        PROC INITIME;                # INITIALIZE FTTTIME # 
        PROC PROTERR;                # PROCESS PROTOCOL ERROR # 
        PROC PUTLEV7;              # SEND LEVEL 7 COMMAND # 
        END 
  
# 
****  PROC PENDXFR - XREF LIST END. 
# 
                                               CONTROL EJECT; 
      RTNFLAG = APFETCH (TAIHW7MSG,ATTR,QUAL,TEXTL,TEXTACP);
      IF RTNFLAG EQ ATR$DXFRP              # ATTR IS STATE-OF-XFR (23) #
        AND FTTDIRECN EQ RECEIVE   # RECEIVING FILE # 
        AND   (FTTSTATE EQ S"EOIRCVWFES"
            OR FTTSTATE EQ S"DATAXFRPRG"
            OR FTTSTATE EQ S"DATAXFRDLY"
            OR FTTSTATE EQ S"QRISSWFACK") 
        AND   (TEXTSTRING[0] EQ P$ES$OK          # ATTR VALUE IS VALID #
            OR TEXTSTRING[0] EQ P$ER$ERR21
            OR TEXTSTRING[0] EQ P$ER$ERR22
            OR TEXTSTRING[0] EQ P$ER$ERR29
            OR TEXTSTRING[0] EQ P$ER$ERR2A) 
      THEN
        BEGIN 
        IF TEXTSTRING[0] GE FTTDXPA 
        THEN
          BEGIN 
          PUTLEV7 (AACMD$ER,TEXTSTRING[0]);  # SEND ER-COMMAND #
          IF TEXTSTRING[0] NE P$ES$OK        # IF ES-ATTR NOT OK #
          THEN
            BEGIN 
            FTTERRORD = PRETERMRCV;  # SET ERROR FLAG # 
            IDFM$ACN2B[PRETERMRCV] = DECCHF(FTTACN,4);
            DAYFMSG (PRETERMRCV);        # SEND DAYFILE MESSAGE # 
            END 
  
          INITIME;                 # RESET FTT TIMER #
          FTTSTATE = S"ERISSWFACK"; 
          FTTDXPA = TEXTSTRING[0];
          END 
        END 
  
      ELSE
        BEGIN 
        PROTERR;                     # REPORT PROTOCAL ERROR #
        END 
  
      END    # PENDXFR #
  
      TERM
