*DECK NVFTBRK
USETEXT TEXTNVF
USETEXT TXTANVF
USETEXT TXTAPSS
USETEXT TEXTSS
PROC NVFTBRK;
# TITLE NVFTBRK - PROCESS BREAK OCCURRED CONDITION (FC/BRK SM) #
BEGIN # NVFTBRK #
#
** NVFTBRK - PROCESS BREAK OCCURRED CONDITION (FC/BRK SM).
*
* E. THAVIKULWAT 81/09/21
*
* THIS PROCEDURE PROCESSES THE BREAK CONDITION. IT IS CALLED INTO
* EXECUTION BY PROCEDURE *NVFTDQE*.
*
* PROC NVFTBRK
*
* ENTRY:
* ABH IN *ABHBUF*
* INTR/USR SM IN *MSGBUF*
*
* EXIT:
* APPROPRIATE LOGIN PROMPT REISSUED IF NECESSARY.
*
* NOTES:
* 1) IF CTRL/RTC REQUEST FOR TERMINAL CLASS AND ECHOPLEX IS
* OUTSTANDING WHEN A BREAK IS RECEIVED, THE REQUEST MIGHT
* HAVE BEEN DISCARDED. IN THIS CASE, THE REQUEST MUST BE
* REISSUED.
*
* METHOD:
* SEARCH PTAC TABLE FOR ENTRY THAT MATCHES THIS TERMINAL'S ACN.
* IF ENTRY FOUND AND TERMINAL IS WAITING FOR A RESPONSE TO ONE OF
* IT'S LOGIN PROMPT, THEN REISSUE FAMILY OR APPLICATION PROMPT.
* OTHERWISE, IGNORE THE BREAK.
#
#
**** PROC NVFTBRK - XREF LIST.
#
XREF
BEGIN
PROC NVFTILP; # ISSUE LOGIN PROMPT #
PROC NVFUMQE; # TRANSFER PROTOCOL RESPONSE TO QUEUE #
END
#
****
#
ITEM ADDR I; # ADDRESSING INFORMATION FOR ABH #
ITEM MATCH B; # EXIT LOOP VARIABLE #
ITEM NENTRY I; # NUMBER OF ENTRIES IN TABLE #
ITEM PT I; # SUBSCRIPT FOR ARRAY PTAC #
#
* SEARCH PTAC TABLE FOR ENTRY THAT MATCHES THIS TERMINAL'S ACN.
* IF NO MATCH, IGNORE SM.
#
MATCH = FALSE;
NENTRY = PTALNGTH / PTACSIZ$; # CALCULATE NUMBER OF ENTRIES #
FOR PT = 0 STEP 1 WHILE (NOT MATCH AND PT LS NENTRY)
DO
BEGIN
IF PTA$ACN[PT] EQ INTRACN[0]
THEN
BEGIN # PTAC ENTRY FOUND #
#
* BUILD FC/RST PROTOCOL RESPONSE.
#
SPMSG0[1] = 0;
PFCSFC[1] = FCRST;
FCACN[1] = FCACN[0];
ADDR = ABHADR[0];
NVFUMQE(P<CTQ>,APSM[1],APPPR$,ADDR,LFC); # TRNSFR RSP TO Q #
ADDR = PTA$ACN[PT];
#
* DETERMINE PROMPT TO REISSUE. IF BREAK OCCURRED WHILE
* TERMINAL WAS WAITING FOR RESPONSE TO A FAMILY, USER, PASSWORD
* OR PERSONAL ID PROMPT, THE FAMILY PROMPT WILL BE REISSUED. IF
* WAITING FOR PID RESPONSE, BEFORE REISSUE FAMILY PROMPT, MAKE
* SURE TO DECREMENT FAMILY COUNT. IF WAITING FOR RESPONSE TO
* APPLICATION PROMPT, THE APPLICATION PROMPT WILL BE REISSUED.
#
IF PTA$STATE[PT] EQ PTACST"AWTRSP"
THEN # AWAITING RESPONSE TO PROMPT #
BEGIN
IF PTA$PROMPT[PT] NQ AWTAPP$
THEN
BEGIN # REISSUE FAMILY PROMPT #
IF (PTA$PROMPT[PT] EQ AWTPID$) AND (PTA$SCINV[PT] EQ 0)
THEN # ISSUE CMP73 REQUEST TO #
BEGIN # DECREMENT FAMILY COUNT #
P<CRQBUF> = LOC(MSGBUF[0])+((NMSGBUF$+1)/2);
CRQ$FCWORD[0] = 0;
CRQ$FWORD[0] = 0;
CRQ$FC[0] = CPM73B$; # DECREMENT FAMILY COUNT #
CRQ$ACN[0] = 0;
CRQ$FNAM[0] = PTA$FNAM[PT];
NVFUMQE(P<CPMRQ>,CRQBUF[0],APPTTX$,0,CRQDSIZ$ * 10);
END
PTA$PROMPT[PT] = AWTFAM$; # AWAIT FAMILY PROMPT #
END
NVFTILP(PT); # ISSUE NEXT PROMPT #
END
MATCH = TRUE;
END
END
END # END NVFTBRK #
TERM