*DECK NVFIIPS
USETEXT TEXTNVF
USETEXT TEXTSS
USETEXT TXTANVF
USETEXT TXTAPSS
PROC NVFIIPS;
# TITLE NVFIIPS - INITIALIZE PID STATUS. #
BEGIN
#
** NVFIIPS - INITIALIZE PID STATUS.
*
* C. J. BRION 83/12/12.
* P. A. MURRAY 84/03/19.
*
* THIS ROUTINE IS PART OF THE INITIALIZATION PROCESS FOR NVF.
* ITS JOB IS TO ISSUE A MACREL SPIDA CALL IN ORDER TO INSURE
* THAT ALL INTERHOST NHP PID ACCESS IS UNAVAILABLE UNTIL THE
* APPROPRIATE LOGICAL LINK STATUS MESSAGES ARE RECEIVED. ADDITIONAL
* SPIDA CALLS MAY BE ISSUED TO INSURE THAT ANY INTRAHOST LOGICAL
* LINKS ARE AVAILABLE.
*
* PROC NVFIIPS
*
* ENTRY NONE.
*
* EXIT ONE OR MORE SPIDA CALLS HAVE BEEN ISSUED.
*
#
#
**** PROC NVFUPRP - XREF LIST.
#
XREF
BEGIN
PROC NVFUMQE; # MAKE QUEUE ENTRY #
PROC SPIDA; # MACREL SETPIDA I/F ROUTINE #
PROC MACHID; # MACREL GET MACHID ROUTINE #
END
ARRAY HOSTPIDB[00:00] S(1);
BEGIN
ITEM HOSTPRE C(00,42,01); # FIELD FOR HOST PREFIX #
ITEM HOSTID U(00,48,12); # FIELD FOR MACHINE ID #
ITEM HOSTPID C(00,42,03); # ACTUAL HOST PID #
END
#
** PIDMSG - PID NHP LOG FILE MESSAGE ARRAY.
#
ARRAY PIDMSG [00:00] S(5);
BEGIN
ITEM PUM$PFCSFC U(00,00,16) = [HOPLG];
ITEM PUM$MSG1 C(01,00,05) = ["PID: "];
ITEM PUM$PID C(01,30,03);
ITEM PUM$MSG2 C(01,48,22) = [", NHP PATH - AVAILABLE"];
ITEM PUM$ZBYT U(04,00,60) = [0];
END
#
** SPIDBLK - SETPIDA PARAMETER BLOCK.
*
* THIS PARAMETER BLOCK DEFINES THE SETPIDA FUNCTION PARAMETERS
* FOR SETTING ALL NHP CONNECTED PIDS UNAVAILABLE.
#
ARRAY SPIDBLK [00:00] S(2);
BEGIN
ITEM SPI$FC U(00,00,12) = [1]; # SET NW STATUS FC #
ITEM SPI$NP U(00,12,12) = [1]; # NUMBER PIDS = 1 #
ITEM SPI$NW U(00,24,12) = [1]; # NHP NW ID #
ITEM SPI$RES1 U(00,36,23) = [0]; # RESERVED #
ITEM SPI$CBIT B(00,59,01) = [TRUE]; # COMPLETE BIT #
ITEM SPI$PID C(01,00,03); # PID NAME, *** = ALL PIDS #
ITEM SPI$RES2 U(01,18,38) = [0]; # RESERVED #
ITEM SPI$ST U(01,56,04); # NETWORK STATUS #
END
ITEM BLKADDR I; # SPIDA PARM BLK ADDR CELL #
ITEM LLORD I; # LLINK ORDINAL IN A PID ENTRY#
ITEM NUMLL I; # NUMBER OF LLINKS FOR A PID #
ITEM PORD I; # PID ORDINAL IN PATHPID TABLE#
CONTROL EJECT;
#
* ISSUE SPIDA CALL TO SET ALL NHP PIDS TO UNAVAILABLE.
#
BLKADDR = LOC(SPIDBLK[0]);
SPI$PID[0] = "***";
SPI$ST[0] = 0;
SPIDA(BLKADDR);
#
* CONSTRUCT PID NAME OF HOST FROM MACHINE ID.
#
MACHID(HOSTPIDB);
HOSTPRE="M";
#
* CHECK FOR PID WITH HOST PID NAME. IF FOUND, SET 1 ACTIVE LLINK
#
IF LLPIDL NQ 0
THEN
BEGIN
FOR PORD = 0 STEP ((LLP$LLCNT[PORD] * PIDLLSIZ$) + 1) WHILE
PORD LS LLPIDL
DO
IF HOSTPID EQ LLP$PNAME[PORD] THEN
BEGIN
LLP$ACLL[PORD] = LLP$ACLL[PORD] + 1;
PUM$PID[0] = LLP$PNAME[PORD];
SPI$PID[0] = LLP$PNAME[PORD];
SPI$ST[0] = PIDOPST$;
SPIDA(BLKADDR);
NVFUMQE(P<OTQ>,PIDMSG[0],APPCMD,0,5);
END
END
END # NVFIIPS #
TERM