*DECK NP$ITMG
*IF DEF,XFR
USETEXT AIPDEF
USETEXT HEADER
USETEXT NX$ACBF
USETEXT NP$NWL
USETEXT NX$ACBX
PROC NP$ITMG;
#
*1DC NP$ITMG
* PROC NAME AUTHOR DATE
* NP$ITMG L.T.NGUYEN 83/03/21
* (* USE FOR FILE TRANSFER APPLICATION ONLY *)
*
* FUNCTIONAL DESCRIPTION:
* INTERCEPT ASYN SUPERVISORY MESSAGE FOR FILE TRANSFER
* CONNECTION.
*
* INPUT PARAMS:
* LOC$HA - APPLICATION HEADER ADDRESS.
* LOC$TA - ADDRESS OF TEXT.
* MSGFORAP - MSG FOR APPLICATION FLAG.
*
* EXIT PARAMS:
* MSGFORAP - TRUE IF THIS MSG IS FOR APPLICATION.
* FALSE IF MSG WAS FOR FILE TRANSFER CONN. AND
* ALREADY GOT PROCESSED.
*
* TEXTS USED:
* HEADER, NX$ACBF.
*
*
*
*
#
BEGIN
XREF
BEGIN
PROC NP$SMSG ;
PROC NP$STPR ;
END
ITEM ACN ;
ITEM I I ; # INDEX CONTROL #
ITEM FOUND B ; # FOUND FTT ENTRY WITH MATCHING ACN #
ITEM TRIGGER U ;
BEGIN # NP$ITMG #
FOUND = FALSE ; # CLEAR FLAG #
P<SUPMSG> = LOC$TA ; # TEXT MESSAGE ITSELF #
ACN = SPACN[0] ;
IF PFCSFC[0] EQ ERRLGL
THEN
BEGIN # ERROR/LOGICAL RECEIVED #
P<HEADER> = LOC$TA + 1 ; # ABHERR OF MS #
IF ABHADR[0] EQ 0
THEN
BEGIN # ERROR LOGICAL ON ASYN SM #
P<SUPMSG> = LOC$TA + 2 ;
ACN = SPACN[0] ;
END
ELSE
ACN = ABHADR[0] ;
END
FOR I = 0 STEP 1 WHILE I LS MAXFILEXFR
AND NOT FOUND
DO
IF FTTACN[I] EQ ACN
AND FTTACN[I] NQ 0
THEN
BEGIN
FTTINDEX = I ; # REMEMBER THIS ENTRY #
FOUND = TRUE ; # FOUND THE ENTRY IN FTT #
END
IF NOT FOUND
THEN # MSG IS NOT FOR FILE XFR CONN. #
BEGIN
MSGFORAP = TRUE ; # IT IS FOR THE APPLICATION #
IF PFCSFC[0] EQ SHUINS
THEN
BEGIN # SHUT DOWN WARNING RECEIVED #
IF NOT SPSHUT[0]
THEN # NO A FORCED SHUT DOWN #
TRIGGER = NRSTHSD ; # SET FLAG #
ELSE
TRIGGER = NRSTNSL ;
FOR I = 0 STEP 1 WHILE I LS MAXFILEXFR
DO
BEGIN # CALL STATE TBL FOR SHUTDOWN ACTION#
IF FTTACN[I] NQ 0
THEN
BEGIN # ACTIVE ENTRY #
FTTINDEX = I ;
NP$STPR(FTTINDEX,TRIGGER,0) ;
END
END
END
END
ELSE
NP$SMSG ; # MSG IS FOR FILE XFR CONN. #
# CALL TO PROCESS IT APPROPRIATELY #
END
RETURN;
END
TERM
*ENDIF