*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,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, 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, BADSM, ALTMTYP$, 0, LEVTMSG$); END END RETURN; # **** RETURN **** # END # NVFOPPC # TERM