*DECK PTERXF
USETEXT COMCBEG 
    PROC PTERXF (PROGNAME,XFRA,STATFLG,MSGLOC); 
      BEGIN    # PTERXF # 
# 
**    PTERXF     PROCESS NETXFR STATUS FOR MFLINK/PTFS. 
* 
*     PTERXF (PROGNAME,XFRA,STATFLG,MSGLOC) 
* 
*     ENTRY      PROGNAME = PROGRAM NAME FOR MESSAGE. 
*                XFRA = NETXFR STATUS.
* 
*     EXIT       STATFLG = 6/BISMRC, 54/. 
*                          B = 1, IF CONNECTION BREAK NEEDED. 
*                          I = 1, IF IDLE-DOWN REQUESTED. 
*                          S = 1, IF SHUT-DOWN REQUIRED.
*                          M = 1, IF NETXFR MESSAGE IN C.P. AREA. 
*                          R = 1, IF NO RETRY.
*                          C = 1, IF CONNECTION BROKEN. 
*                MSGLOC = ADDRESS OF MESSAGE, 
*                       = 0, IF NO MESSAGE. 
* 
*     PROCESS    LOOK UP PARAMETER IN TABLE.
# 
  
      ITEM PROGNAME   C(10);       # PROGRAM NAME # 
      ITEM XFRA       I;           # NETXFR STATUS #
      ARRAY STATFLG    [0:0] S(1);  # NETXFR STATUS FLAGS # 
        BEGIN 
        ITEM STATFLG$FG U(00,00,06);
        END 
  
      ITEM MSGLOC     U;           # ADDRESS OF MESSAGE OR ZERO # 
  
# 
****  XREF
# 
      XREF
        BEGIN 
        FUNC YCDZ       C(10);     # CONVERT BINARY TO DPC #
        END 
  
# 
****  XREF END
# 
  
*CALL COMDXFR 
  
      ITEM I          I;           # SCRATCH #
  
      DEF LEMSGXFR   #47#;
      ARRAY EMSGXFR    S(5);
        BEGIN 
        ITEM EMSGXFRNAM C(00,00,10);
        ITEM $DXFRA     C(01,00,18) = ["NETXFR ERROR NN - "]; 
        ITEM EMSGXFRORD C(02,18,02);
        ITEM EMSGXFRMSG C(02,48,19);
        ITEM $DXFRB     U(04,42,18) = [0];
        END 
  
  
      I = XFRA; 
      IF (I LT 1) OR (I GT MAXXFRERR) 
      THEN
        BEGIN 
        I = 0;                     # UNDEFINED NETXFR STATUS CODE # 
        END 
  
      STATFLG$FG = XFR$FLAGS[I];   # RETURN NETXFR STATUS FLAGS # 
      IF XFR$ERRFLG[I] NE " " 
      THEN
        BEGIN 
        EMSGXFRNAM = PROGNAME;
        EMSGXFRORD = YCDZ(XFRA, 2); 
        EMSGXFRMSG = XFR$ERRMSG[I]; 
        MSGLOC = LOC(EMSGXFR);
        END 
  
      ELSE
        BEGIN 
        MSGLOC = 0;                # NO MESSAGE # 
        END 
  
      END  # PTERXF # 
    TERM
