*DECK PROTERR 
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMACBF 
USETEXT COMACBX 
USETEXT COMADFM 
USETEXT COMAMCB 
PROC PROTERR; 
# TITLE PROTERR - REPORT PROTOCAL ERROR.  # 
  
      BEGIN  # PROTERR #
  
# 
**    PROTERR - REPORT PROTOCOL ERROR.
* 
*     PROTERR SENDS A LEVEL 7 COMMAND TO THE REMOTE APPLICATION 
*     INFORMING THE APPLICATION THAT A PROTOCOL ERROR HAS BEEN DETECTED.
* 
*     PROC PROTERR
* 
*     ENTRY      <FTTENT> = FWA FTT ENTRY.
* 
*     EXIT       NONE.
* 
*     PROCESS    SET FTTERRFLG TO PROTOCOL ERROR. 
*                CALL DAYFMSG TO WRITE ERROR MESSAGE IN DAYFILE.
*                IF DATA TRANSFER IN PROGRESS 
*                THEN 
*                  IF  FTTDIRECN  IS  SEND
*                  THEN 
*                    IF CONVERT MODE IS ACTIVE
*                    THEN 
*                      SET INVALID TRANSFER STATE.
*                      CALL EXITCM TO TERMINATE THE CONVERT MODE. 
*                    ELSE 
*                      SEND ES WITH ERROR.
*                      CALL INITIME TO INITIALIZE FTTTIME.
*                      SET FTTSTATE TO INDICATE WAITING FOR FC/ACK/R REPLY
*                        TO END-OF-DATA COMMAND.
*                  ELSE 
*                    SEND QR WITH ERROR.
*                    CALL INITIME TO INITIALIZE FTTTIME.
*                    SET FTTQRSENT = TRUE (QUIT-COMMAND SENT).
*                    SET FTTSTATE TO INDICATE WAITING FOR FC/ACK/R REPLY
*                      TO QUIT COMMAND. 
*                ELSE 
*                  CALL XFRCOMP TO END TRANSFER.
* 
****  PROC PROTERR - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        PROC DAYFMSG;                #  WRITE DAYFILE MESSAGE # 
        PROC EXITCM;                 #  EXIT CONVERT MODE # 
        PROC INITIME;                #  INITIALIZE FTTTIME #
        PROC PUTLEV7;                # SEND LEVEL 7 COMMAND # 
        PROC XFRCOMP;                #  TERMINATE NETXFR CALL # 
        END 
  
# 
****  PROC PROTERR XREF LIST END. 
# 
                                               CONTROL EJECT; 
  
  
      FTTERRORD  =  PROTCL$ERR; 
      DAYFMSG(PROTCL$ERR);
  
      IF FTTSTATE EQ S"DATAXFRPRG"
        OR FTTSTATE EQ S"DATAXFRDLY"
      THEN
        BEGIN 
        IF  FTTDIRECN  EQ  SEND 
        THEN
          BEGIN  # FILE TRANSFER DIRECTION IS SEND #
          IF FTTCMA 
          THEN
            BEGIN 
            FTTDXPA = P$ES$ERR2A; 
            EXITCM; 
            END 
  
          ELSE
            BEGIN 
# 
*           FORM AN END-OF-DATA PROTOCOL ERROR COMMAND. 
*             <ES><01><23><S><004><002A>
# 
  
            PUTLEV7(AACMD$ES,P$ES$ERR2A); 
            INITIME;
            FTTSTATE  = S"ESISSWFACK";
            END 
  
          END 
  
        ELSE
          BEGIN  # FILE TRANSFER DIRECTION IS RECEIVE # 
  
# 
*         FORM A QUIT COMMAND (PROTOCOL ERROR). 
*           <QR><01><23><S><004><0022>
# 
  
          PUTLEV7(AACMD$QR,P$QR$ERR22); 
          INITIME;
          FTTSTATE  = S"QRISSWFACK";
          FTTQRSENT = TRUE; 
          END 
  
        END 
  
      ELSE
        BEGIN 
        XFRCOMP;
        END 
  
      END    # PROTERR #
  
      TERM
