*DECK NVFOPPC
USETEXT TEXTNVF
USETEXT TEXTSS
USETEXT TXTAPSS
PROC NVFOPPC;
# TITLE - PERFORM PROGRAM CONTROL. #
BEGIN
#
** NVFOPPC - PERFORM PROGRAM CONTROL.
*
* D.K. ENDO 82/05/20
*
* THIS PROCEDIRE ACTIONS DEBUG COMMANDS FROM THE HOP.
*
* PROC NVFOPPC
*
* ENTRY 1. ENTRIES IN THE HOP PROGRAM CONTROL QUEUE(HCQ).
*
* EXIT 1. APPROPRIATE ACTION TAKEN.
*
#
#
**** PROC NVFOPPC - XREF LIST BEGINS.
#
XREF
BEGIN
PROC NETDBG; # TURNS AIP TRACE ON OR OFF #
PROC NETDMB; # DUMPS APPLICATION-S FIELD LENGTH #
PROC NETREL; # RELEASES THE AIP TRACE FILE #
PROC NETSTC; # CLEARS AND/OR STARTS STATISTICS #
PROC NVFUMQE; # MAKE QUEUE ENTRY #
PROC SSBSBF; # STORE BITFIELD IN TABLE #
PROC SSSPSI; # PREPARE (SS) STATISTICS INFORMATION #
PROC SSTRQE; # REMOVE QUEUE ENTRY #
FUNC XCHD; # CONVERT INTEGER TO HEXIDECIMAL DISPLAY #
END
#
****
#
DEF LEVTMSG$ #40#; # LENGTH OF EVENT MESSAGES IN CHARACTERS #
DEF ALTMTYP$ #6#; # HOP ALERT MESSAGE TYPE FOR *NVFUMQE* #
ITEM I; # LOOP INDUCTION VARIABLE #
ITEM STATIS; # STATUS RETURNED FROM, NET PROC-S #
ITEM WP; # WORD POS FOR DISP CODE PFC/SFC IN EVENT #
ITEM BP; # BIT POS FOR DISP CODE PFC/SFC IN ENENT #
#
THIS ARRAY DEFINES THE FIELDS IN THE DUMP I.D. THIS IS SET WHEN
NVF RECEIVES A HOP/DU/U SM FROM NAM.
#
ARRAY DUMP$ID [00:00] S(1);
BEGIN
ITEM DID$NIN U(00,42,09); # NETWORK INVOCATION NUMBER #
ITEM DID$PID U(00,51,06); # PROCDUCT I.D.(FOR NVF) #
ITEM DID$DPN U(00,57,03); # DUMP NUMBER #
ITEM DID$WORD I(00,00,60) = [0];
END
#
* THIS ARRAY DEFINES THE LFN USED FOR THE NETREL CALL.
#
ARRAY NTRL$LFN [00:00] S(1);
BEGIN
ITEM NRL$NAM C(00,00,04) = ["NRF2"];
ITEM NRL$ZFIL U(00,24,36) = [0];
END
#
* THE FOLLOWING ARRAYS ARE EVENT MESSAGES FOR UNRECOGNIZED AND
* ERR/LGL SUPERVISORY MESSAGES.
#
ARRAY BADSM [00:00] S(4);
BEGIN
ITEM BS$TEXT C(00,00,30) = ["UNRECOGNIZED SM, PFC/SFC = "];
ITEM BS$ZERO U(03,00,60) = [0];
END
ARRAY LOGERR [00:00] S(4);
BEGIN
ITEM LE$TEXT C(00,00,30) = ["LOGICAL ERROR, PFC/SFC = "];
ITEM LE$ZERO U(03,00,60) = [0];
END
CONTROL EJECT;
# #
# NVFOPPC CODE BEGINS HERE #
# #
#
* FOR EACH ENTRY IN THE HOP PROGRAM CONTROL QUEUE (HCQ), EXTRACT THE
* ENTRY AND TAKE THE APPROPRIATE ACTION:
#
FOR I=0 WHILE HCQLNGTH GR 0
DO
BEGIN
SSTRQE(P<HCQ>,WCBUF[0],ABHBUF[0],MSGBUF[0]);
#
* IF THIS SM IS HOP/DU/U, THEN SET THE DUMP I.D. AND ISSUE THE DUMP
* REQUEST. IF THE DEMP I.D. IS GREATER THAN OR EQUAL TO SIX, THEN
* SET IT TO ZERO, ELSE INCREMENT IT BY ONE.
#
IF PFCSFC[0] EQ HOPDU
THEN
BEGIN
DID$NIN[0] = CRNT$NIN;
DID$PID[0] = NVFPID$;
DID$DPN[0] = CRNT$DPN;
NETDMB(DUMP$ID,FALSE);
IF CRNT$DPN GQ 6
THEN
BEGIN
CRNT$DPN = 0;
END
ELSE
BEGIN
CRNT$DPN = CRNT$DPN + 1;
END
END
#
* IF THIS SM IS HOP/TRCE/U, THEN CALL NETDBG TO TURN ALL TRACING
* ON.
#
ELSE IF PFCSFC[0] EQ HOPTRCE
THEN
BEGIN
NETDBG(FALSE,FALSE,STATIS);
END
#
* IF THIS SM IS HOP/NOTR/U, THEN CALL NETDBG TO TURN ALL TRACING
* OFF.
#
ELSE IF PFCSFC[0] EQ HOPNOTR
THEN
BEGIN
NETDBG(TRUE,TRUE,STATIS);
END
#
* IF THIS SM IS HOP/RS/U, THEN CALL NETSTC TO CLEAR THE CURRENT
* STATISTICS AND RESTART THE STATISTICS GATHERING.
#
ELSE IF PFCSFC[0] EQ HOPRS
THEN
BEGIN
$BEGIN
SSSPSI;
$END
NETSTC(TRUE,STATIS);
NETSTC(FALSE,STATIS);
END
#
* IF THIS SM IS HOP/REL/U, THEN CALL NETREL TO RELEASE THE CURRENT
* DEBUG LOG FILE.
#
ELSE IF PFCSFC[0] EQ HOPREL
THEN
BEGIN
IF MC NQ 0
THEN
BEGIN
NETREL(NTRL$LFN,0,FALSE);
END
END
#
* IF THIS SM IS HOP/DB/U,THEN SET THE DEBUG FLAG IN THE NVF CONTROL
* BLOCK.
#
ELSE IF PFCSFC[0] EQ HOPDB
THEN
BEGIN
DBGFLAG = TRUE;
END
#
* IF THIS SM IS HOP/DE/U, THEN CLEAR THE DEBUG FLAG IN THE NVF
* CONTROL BLOCK.
#
ELSE IF PFCSFC[0] EQ HOPDE
THEN
BEGIN
DBGFLAG = FALSE;
END
#
* IF THIS SM IS ERR/LGL/U, THEN ISSUE AN EVENT MESSAGE (WILL BE
* SENT TO THE HOP AND THE NETWORK LOG FILE). STORE DISPLAY CODED
* PFC/SFC IN MESSAGE TEXT. SET HOP ALERT.
#
ELSE IF PFCSFC[0] EQ ERRLGL
THEN
BEGIN
WP = 2; # SET POS OF DISP CODED PFC/SFC #
BP = 30;
SSBSBF (LOGERR, WP, BP, 24, XCHD(X"10000" + ERPSFC[0]));
NVFUMQE (P<USQ>, LOGERR, ALTMTYP$, 0, LEVTMSG$);
END
#
* AT THIS POINT THE SM MUST BE ONE THAT NVF (AT LEAST, OR PERHAPS
* THE WHOLE NETWORK) DOES NOT RECOGNIZE. ISSUE AN EVENT MESSAGE
* (WILL BE SENT TO THE HOP AND THE NETWORK LOG FILE). STORE
* DISPLAY CODED PFC/SFC IN MESSAGE TEXT. SET HOP ALERT.
#
ELSE # UNRECOGNEZED SUPERVISORY MESSAGE #
BEGIN
WP = 2; # SET POS OF DISP CODED PFC/SFC #
BP = 42;
SSBSBF (BADSM, WP, BP, 24, XCHD(X"10000" + PFCSFC[0]));
NVFUMQE (P<USQ>, BADSM, ALTMTYP$, 0, LEVTMSG$);
END
END
RETURN; # **** RETURN **** #
END # NVFOPPC #
TERM