*DECK BLDTRT
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMAFET 
USETEXT COMACBX 
PROC BLDTRT((DATADEC)); 
# TITLE  BLDTRT - BUILD TRANSFER TABLE. # 
  
      BEGIN  # BLDTRT # 
  
# 
**    BLDTRT - BUILD TRANSFER TABLE.
* 
*     THIS ROUTINE BUILDS THE *XFRHOLD* TRANSFER TABLE FOR THE
*     GIVEN ACN.
* 
*     PROC BLDTRT((DATADEC)). 
* 
*     ENTRY      DATADEC = DATA DECLARATION.
*                <FTTENT> = FWA FTT ENTRY.
*                <XFRHOLD> = FWA TRANSFER STATUS TABLE. 
* 
*     EXIT       XFRHOLD TABLE IS READY FOR USE IN A FILE TRANSFER. 
* 
*     PROCESS    DETERMINE INDICES INTO TRANSFER TABLE DEFINITIONS. 
*                PLUG INITIALIZATION PARAMETERS INTO XFRHOLD. 
*                SET DD TYPE. 
*                SET RHF BUFFER POINTERS. 
*                SET BUFFER SIZES.
# 
  
      ITEM DATADEC    I;             # DATA DECLARATION # 
  
# 
****  PROC BLDTRT - XREF LIST BEGIN.
# 
  
      XREF
        BEGIN 
        FUNC REPBLNK C(7);           # BLANK FILL # 
        END 
  
# 
****  PROC BLDTRT - XREF LIST END.
# 
  
  
      CONTROL IFEQ OS$NOS;
        DEF DEFDEVTYPS #O"40"#;      # DEFAULT DEVICE TYPE #
        DEF DEFWDSIZES #0#;          # DEFAULT WORD SIZE #
        DEF DEFNUMCWS  #2#;          # DEFAULT NUMBER OF CWS #
      CONTROL ENDIF;
  
      CONTROL IFEQ OS$NOSBE;
        DEF DEFDEVTYPS #O"20"#;      # DEFAULT DEVICE TYPE #
        DEF DEFWDSIZES #65#;         # DEFAULT WORD SIZE #
        DEF DEFNUMCWS  #1#;          # DEFAULT NUMBER OF CWS #
      CONTROL ENDIF;
  
      ITEM INDEX1     I;             # INDEX INTO INIT. TABLES #
      ITEM INDEX2     I;             # INDEX INTO INIT. TABLES #
  
                                               CONTROL EJECT; 
  
      INDEX1 = XFRINDX1[DATADEC] * 2; 
      INDEX2 = XFRINDX2[DATADEC] * 2; 
      IF FTTDIRECN EQ SEND
      THEN
        BEGIN 
      CONTROL IFEQ OS$NOSBE;
        IF   LFETDEVTP[0] EQ MT  # IF 7-TRACK TAPE #
          OR LFETDEVTP[0] EQ NT  # OR 9-TRACK TAPE #
        THEN
          BEGIN 
          INTAPE = TRUE;     # SET TAPE READ FLAG # 
          INTAPERTRY = FALSE;  # CLEAR RETRY FLAG # 
          END 
  
      CONTROL ENDIF;
        END 
  
      ELSE
        BEGIN 
        INDEX1 = INDEX1 + 1;
        INDEX2 = INDEX2 + 1;
        END 
  
      INDEX1 = INDEX1 * 2;
      IF LFETDEVTP GT DEFDEVTYPS
      THEN
        BEGIN 
        INDEX1 = INDEX1 + 1;
        END 
  
    CONTROL IFEQ OS$NOS;
      LFETUP[0] = TRUE;            # SET USER PROCESSING FLAG # 
    CONTROL ENDIF;
  
      FTTCVTMODE = XFRCVTMODE[INDEX1];
      INFUNC = XFRINFUNC[INDEX1]; 
      OTFUNC = XFROTFUNC[INDEX1]; 
      INCWS = XFRINCWS[INDEX1]; 
      OTCWS = XFROTCWS[INDEX1]; 
      FTTUSCWS = XFRUSCWS[INDEX1];
      INMINSPACE = XFRINSPACE[INDEX1];
      OTMINDATA = XFROTDATA[INDEX1];
  
    CONTROL IFEQ OS$NOSBE;
      OTPUTRNDA = XFRPUTRNDA[INDEX1]; 
      OTGETRNDA = XFRGETRNDA[INDEX1]; 
    CONTROL ENDIF;
  
      CVTTYPE = XFRCVTTYPE[INDEX2]; 
      INCHARPWD = XFRINCHPWD[INDEX2]; 
      INBITSBYT = XFRINBITBT[INDEX2]; 
      INBITSCHR = XFRINBITCH[INDEX2]; 
      OTCHARPWD = XFROTCHPWD[INDEX2]; 
      OTBITSBYT = XFROTBITBT[INDEX2]; 
      OTBITSCHR = XFROTBITCH[INDEX2]; 
      CVTTBLPTR = XFRCVTPTR[INDEX2];
      INWRAP = FALSE; 
      OTWRAP = FALSE; 
      INWDSIZE = DEFWDSIZES;
      IF INCWS
      THEN
        BEGIN 
        INNUMCWS = DEFNUMCWS; 
        END 
  
      IF OTCWS
      THEN
        BEGIN 
        OTNUMCWS = DEFNUMCWS; 
        END 
  
      OTWDSIZE = 64 + OTNUMCWS; 
      OTBLKBITS = 64 * OTBITSCHR * OTCHARPWD; 
      OTFULLBYT = 64 * OTCHARPWD; 
      OTBUFSIZE = PFETLIM - PFETFIR;
      P<CW> = LOC(OTFULLCW);
      CWPRU = 64; 
      CWBYTC = 5 * 64;
      IF CVTTYPE NE 0 
      THEN
        BEGIN 
        RFETDD = ASCII; 
        END 
  
      ELSE
        BEGIN 
        RFETDD = BINARY;
        END 
  
      IF NOT FTTCVTMODE            # IF 1-BUFFER I/O #
      THEN
        BEGIN 
        RFETFIR = LFETFIR;
        LFETLIM = RFETLIM;
        PREVCWPTR = RFETFIR;
        END 
  
      ELSE
        BEGIN 
        PREVINFULL = FALSE; 
        END 
  
      RFETIN = RFETFIR; 
      RFETOUT = RFETFIR;
      RFETLFN = REPBLNK("ZQZQRFN"); 
      INBUFSIZE = GFETLIM - GFETFIR;
      OTBUFSIZE = PFETLIM - PFETFIR;
  
      END  # BLDTRT # 
  
      TERM
