*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 
