*DECK NP$BFET
*IF DEF,XFR
USETEXT AIPDEF
USETEXT NX$CHAR
USETEXT NX$ACBX
PROC NP$BFET(FILENAME,CIO$SIZE,NET$SIZE) ;
# TITLE NP$BFET - BUILD FET. USE FOR FILE TRANSFER APPLICATION ONLY#
BEGIN # NP$BFET #
#
***
* PROC NAME: AUTHOR DATE
* NP$BFET L.T.NGUYEN 83/03/20
*
* NP$BFET CREATES THE LOCAL FILE FET AND THE
* RHF NETXFR REQUEST/REPLY PARAMETER BLOCK ASSOCIATED WITH THIS ACN.
*
* PROC NP$BFET(FILENAME)
*
* ENTRY FILENAME - FILE NAME OF LOCAL FILE.
* CIO$SIZE - SIZE OF CIRCULAR BUFFER.
* NET$SIZE - SIZE OF NETWORKING BUFFER.
* FTTINDEX - INDEX INTO FTT TABLE ( GLOBAL )
*
* EXIT LOCAL FILE FET SET UP.
*
* PROCESS BUILD LOCAL FILE FET.
* SET FIRST AND LIMIT POINTERS IN FET.
*
#
ITEM FILENAME C(7); # FILE NAME #
ITEM CIO$SIZE U ; # CIO BUFFER AREA #
ITEM NET$SIZE U ;
XREF
BEGIN
PROC NP$ZRBK ; # REPLACE TRAILING " " WITH ZEROS #
END
P<FET$CIO> = FTTFETADR[FTTINDEX] ;
#
* BUILD THE LOCAL FILE FET
#
#
CIRCULAR I/O BUFFER.
#
FETLFNC[0] = FILENAME;
FETCOMP = TRUE;
NP$ZRBK(LOC(FETWD[0]),1) ;
FETFETL[0] = LEN$FET - 5;
FETFIR = P<FET$CIO> + LEN$FET ;
FETIN[0] = FETFIR[0];
FETOUT[0] = FETFIR[0];
FETLIM[0] = FETFIR[0] + CIO$SIZE ;
P<FET$WORK> = FTTFETW[FTTINDEX] ;
FTTICKVAL[FTTINDEX] = 0; # INITIAL CHECKMARK VALUE TO ZERO #
IF P<FET$WORK> NQ 0
THEN
BEGIN # NON - PRU CONNECTION #
FETNAME[0] = FILENAME ;
FETWFIRST[0] = P<FET$WORK> + LEN$FETW ;
FETWIN[0] = FETWFIRST[0] ;
FETWOUT[0] = FETWFIRST[0] ;
FETWLIMIT[0] = FETWFIRST[0] + NET$SIZE ;
P<CMB> = FTTCMV$BLK[FTTINDEX]; # CONVERSION PARAMETER BLOCK #
CMB$DBUF[0] = 0;
CMB$NBUF[0] = 0;
CMB$NCOUNT[0] = TBH$LEN; # LENGTH OF TBH IN OCTETS #
CMB$BLKSZ[0] = FTTBSIZE[FTTINDEX]; # BLOCK SIZE #
CMB$NBYTE[0] = INITNBYTE; # INITIAL VALUE OF NBYTE #
IF FTTUDD[FTTINDEX] EQ C6 # IF C6 #
THEN
BEGIN
CMB$STEP[0] = 6;
END
ELSE
BEGIN
CMB$STEP[0] = 12;
END
IF FTTOPCODE[FTTINDEX] EQ SEND # IF SENDER #
THEN
BEGIN
CMB$DBIT[0] = CMB$STEP[0];
CMB$TBLADR[0] = LOC(CSET1) ; # ADDRESS OF CONVERSION TABLE #
END
ELSE # ELSE IF RECEIVER #
BEGIN
CMB$DBIT[0] = WORDLENGTH - CMB$STEP[0];
CMB$TBLADR[0] = LOC(CSET2) ; # ADDRESS OF CONVERSION TABLE #
END
P<CHK> = FTTCKTBL[FTTINDEX]; # PRESET CHECK MARK TABLE #
CHK$IDX[0] = 1; # AT LEAST ONE ENTRY #
CHK$DBIT[1] = CMB$DBIT[0]; # SET DBIT #
FTTCURPRU[FTTINDEX] = 0; # PRU 0 #
FTTDBIT[FTTINDEX] = CMB$DBIT; # DBIT #
END
RETURN ;
END # BUILDFT #
TERM
*ENDIF