*DECK PSCMREP 
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMAFET 
USETEXT COMADFM 
USETEXT COMACBX 
PROC PSCMREP(TEXTAREA); 
# TITLE  PSCMREP - PROCESS SELECT CONVERT MODE REPLIES. # 
  
      BEGIN  # PSCMREP #
  
# 
**    PSCMREP - PROCESS SELECT CONVERT MODE REPLY.
* 
*     THIS ROUTINE PROCESSES THE CM/SEL/A AND CM/SEL/N REPLIES
*     FROM RHF. 
* 
*     PROC PSCMREP(TEXTAREA). 
* 
*     ENTRY      (TEXTAREA) = CM/SEL/A OR CM/SEL/N. 
*                <FTTENT>   = FWA FTT ENTRY.
* 
*     EXIT       STATUS AND STATE UPDATED.
*                TRANSFER STARTED IF POSSIBLE.
* 
*     PROCESS    SET XFROK = FALSE. 
*                THEN 
*                  RESET FTT AND FET FOR BINARY TRANSFER. 
*                  SET CONVERT MODE ACTIVE FLAG.
*                  SET CONVERT TYPE IN RHF CALL BLOCK.
*                  RESET DD IN FET. 
*                  SET XFROK = TRUE.
*                ELSE 
*                  IF CM/SEL/A RECEIVED 
*                    AND REASON CODE IS CONVERT MODE NOT AVAILABLE
*                  THEN 
*                    SET XFROK = TRUE.
*                  ELSE 
*                    IF FIRST SELECT ATTEMPT
*                    THEN 
*                      SET TIMEOUT TIMER. 
*                    SET STATE TO WAITING FOR CONVERT MODE RESOURCES. 
*                IF XFROK:  
*                  SET FTTSTATE = TRANSFER IN PROGRESS. 
*                  SET STATUS = TRANSFER IN PROGRESS. 
*                  CALL DODPR TO START TRANSFER.
# 
  
      ARRAY TEXTAREA [0:0] S(1);
        BEGIN 
        ITEM TXT$PFC    U(00,00,16); # SUPERVISORY FUNCTION CODE #
        ITEM TXT$RC     U(00,16,08); # REPLY CODE # 
        ITEM TXT$SCMTY  U(00,48,12); # SELECT CONVERT MODE TYPE # 
        END 
  
# 
****  PROC PSCMREP - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        PROC DAYFMSG;                # DAYFILE MESSAGE #
        PROC DODPR;                  # INITIATE FILE TRANSFER # 
        PROC INITIME;                # INITIALIZE TIMEOUT TIMER # 
        PROC RBLDFET;                # REBUILD FET #
        FUNC REPZERO C(7);           # ZERO FILL #
        END 
  
# 
****  PROC PSCMREP - XREF LIST END. 
# 
  
      ITEM XFROK      B;           # START-TRANSFER FLAG #
  
                                               CONTROL EJECT; 
  
      XFROK = FALSE;
      IF TXT$PFC EQ CM$SEL$N
      THEN
        BEGIN 
        RBLDFET;
        RHF$CMTYPE[0] = TXT$SCMTY;
        IF RHF$CMTYPE[0] EQ WRITEASC
          OR RHF$CMTYPE[0] EQ READASC 
        THEN
          BEGIN 
          RFETDD = ASCII; 
          END 
  
        ELSE
          BEGIN 
          RFETDD = DISCOD;
          END 
  
        XFROK = TRUE; 
        FTTCMA = TRUE;             # CONVERT-MODE ACTIVE #
        END 
  
      ELSE
        BEGIN 
        IF TXT$PFC EQ CM$SEL$A
          AND TXT$RC EQ CODCONNA
        THEN
          BEGIN 
          XFROK = TRUE; 
          END 
  
        ELSE
          BEGIN 
          IF NOT FTTCMSA
          THEN
            BEGIN 
            FTTDLYCTR = 0;
            FTTCMSA = TRUE; 
            INITIME;
            END 
  
          FTTSTATE = S"WFORCMRES";
          FTTDLYCTR = FTTDLYCTR + 1;
          END 
  
        END 
  
      IF XFROK
      THEN
        BEGIN 
        FTTCMSA = FALSE;
        FTTSTATE = S"DATAXFRPRG"; 
        FTTDLYCTR = 0;
        STATUSWD = IN$PROGRES;
        IDFM$LFN1[IN$PROGRES] = REPZERO(LFETLFNC);
        DAYFMSG(IN$PROGRES);
        DODPR;
        END 
  
      END  # PSCMREP #
  
      TERM
