*DECK INREQ 
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMACBF 
USETEXT COMACBX 
USETEXT COMAFET 
    PROC INREQ; 
# TITLE INREQ - ISSUE REQUIRED INPUT I/O.  #
  
      BEGIN  # INREQ #
  
# 
**    INREQ - ISSUE REQUIRED INPUT I/O. 
* 
*     INREQ ISSUES ANY REQUIRED INPUT I/O.
* 
*     PROC INREQ
* 
*     ENTRY      <FTTENT> = FWA FTT ENTRY.
* 
*     EXIT
* 
* 
* 
* 
* 
*     PROCESS    IF INPUT I/O IS COMPLETE IN FET
*                  IF ERROR AND INPUT NOT ENDED:  
*                    CALL QUITXFR TO STOP DATA TRANSFER.
*                  IF ERROR CODE IS SET (NOT EOI) 
*                    IF SENDING FILE
*                      IF 1ST TRY READING TAPE
*                        RESET INFUNC TO OPPOSITE MODE
*                        SET 1ST-TAPE-READ FLAG 
*                        IF PARITY ERROR
*                          RESTORE IN-POINTER.
*                        CALL CIO TO BACKSPACE 1 PRU. 
*                      ELSE 
*                        CALL CIOERRC.
*                    ELSE (RECEIVING FILE)
*                      CALL RHFERRC.
*                  ELSE 
*                    IF READING TAPE
*                      IF AT LEAST 1 PRU READ SUCCESSFULLY
*                        CLEAR READING-TAPE FLAG
*                    IF NOT EOI 
*                      AND (NOT EOR 
*                      OR I/O STATE IS NORMAL REQUEST)
*                      AND MINIMUM REQUIRED SPACE IS IN INPUT BUFFER
*                    THEN 
*                      SET I/O IN PROCESS STATE.
*                      ISSUE NORMAL READ REQUEST. 
*                RETURN.
* 
****  PROC INREQ - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        PROC CALLCIO;                # ISSUE CIO I/O REQUEST #
        PROC CALLRHF;                # ISSUE RHF I/O REQUEST #
        PROC CIOERRC;                # PROCESS CIO READ ERROR # 
        FUNC DATAWDS U;              # INPUT DATA WORDS IN BUFFER # 
        PROC QUITXFR;                # QUIT DATA TRANSFER # 
        PROC RHFERRC;                # PROCESS RHF READ ERROR # 
        END 
  
# 
****  PROC INREQ - XREF LIST END. 
# 
  
  
      BASED ARRAY PREVIN [0:0] S(1);
        BEGIN 
        ITEM PREVINPTR  U(00,42,18);  # PREVIOUS (GOOD) IN POINTER #
        END 
  
      ITEM BKSPFUNC   U;
  
CONTROL EJECT;
  
      IF GFETCOMPL
      THEN
        BEGIN 
        IF FTTTSTATIS GE SYSTEM$ER  # IF ERROR #
          AND GFETEC LT EOI         # AND INPUT NOT ENDED # 
        THEN
          BEGIN 
          QUITXFR;                 # QUIT DATA TRANSFER # 
          END 
  
        IF GFETEC GR EOI
        THEN
          BEGIN 
          IF FTTDIRECN EQ SEND     # IF SENDING FILE #
          THEN
            BEGIN 
            IF INTAPE AND NOT INTAPERTRY  # IF 1ST TRY READING TAPE # 
            THEN
              BEGIN 
              IF GFETEC EQ CIO$PERRC  # IF TAPE PARITY ERROR #
              THEN
                BEGIN 
                P<PREVIN> = GFETIN; 
                GFETIN = PREVINPTR;  # RESTORE PREVIOUS IN POINTER #
                END 
  
              INFUNC = INFUNC LXR CIO$BMODE;  # CHANGE READ MODE #
              INTAPERTRY = TRUE;   # SET RETRY FLAG # 
              BKSPFUNC = CIO$BKSPRU LOR (INFUNC LAN CIO$BMODE); 
              CALLCIO(BKSPFUNC);   # BACKSPACE 1 PRU #
              END 
  
            ELSE
              BEGIN 
              CIOERRC;             # PROCESS CIO ERROR #
              END 
            END 
  
          ELSE
            BEGIN 
            RHFERRC;
            END 
          END 
  
        ELSE
          BEGIN 
          IF INTAPE                # IF READING TAPE #
          THEN
            BEGIN 
            IF INTOTBITS GE (LFETPRUSZ * 60)  # IF 1 PRU READ # 
            THEN
              BEGIN 
              INTAPE = FALSE;      # CLEAR TAPE-READING FLAG #
              END 
            END 
  
          IF GFETEC NE EOI
            AND (INCWS OR NOT GFET$EOR OR INIOSTATE EQ IOREQNRML) 
            AND INMINSPACE LE (INBUFSIZE - DATAWDS) 
          THEN
            BEGIN 
            INIOSTATE = IOINPROG; 
            IF FTTDIRECN EQ SEND   # IF SENDING FILE #
            THEN
              BEGIN 
              CALLCIO(INFUNC);
              END 
  
            ELSE
              BEGIN 
              CALLRHF(INFUNC);
              END 
            END 
          END 
        END 
  
      RETURN; 
  
      END  # INREQ #
  
    TERM
