*DECK SPIDSTAT
USETEXT COMCBEG 
USETEXT COMRNET 
PROC SPIDSTAT(PIDSTATUS,UPDLIDT); 
# TITLE  SPIDSTAT - SET PID NETWORK STATUS IN LIDT  # 
  
      BEGIN  # SPIDSTAT # 
  
# 
**    SPIDSTAT - SET PID NETWORK STATUS IN LIDT 
* 
*     SPIDSTAT ISSUES A SETPIDA LID MANAGEMENT REQUEST TO UPDATE
*     RHF NETWORK STATUS FOR THE SPECIFIED PID
* 
*     PROC    SPIDSTAT(PIDSTATUS,UPDLIDT) 
* 
*     ENTRY   - NET$HEADER - BASED ARRAY CONTAINING CURRENT NDT ENTRY 
*               PIDSTATUS  - NEW NETWORK STATUS FOR CURRENT PID 
*                            (IF NONZERO, SET UP PARAMETER BUFFER.) 
*               UPDLIDT    - UPDATE LID TABLE 
*                            (IF TRUE, ISSUE LID MANAGEMENT REQUEST.) 
* 
*     EXIT    LID TABLE UPDATED 
* 
*     PROCESS - IF NECESSARY, INITIALIZE POINTERS.
*               IF PID STATUS SPECIFIED 
*                 MOVE PARAMETERS TO BUFFER AREA. 
*               IF UPDATE FLAG SPECIFIED
*                 ISSUE SETPIDA REQUEST.
*                 RESET FLAG TO INITIALIZE POINTERS.
*               RETURN. 
# 
      ITEM    PIDSTATUS  I;          # NEW NETWORK STATUS  #
      ITEM    UPDLIDT    B;          # UPDATE LIDT FLAG  #
# 
****  PROC SPIDSTAT XREF LIST BEGIN.
# 
      XREF
        BEGIN 
        PROC SETPIDA;                # SET PID ATTRIBUTE  # 
        END 
# 
****  PROC SPIDSTAT XREF LIST END.
# 
  
  
    CONTROL  IFEQ OS$NOS; 
      ITEM  BARRAY  B = TRUE;        # BASED ARRAY FLAG  #
      ITEM  INITPTR B = TRUE;        # INITIALIZE POINTER FLAG  # 
  
      BASED ARRAY  SPAHDR [0:0] S(1); 
        BEGIN 
        ITEM  SPAHDRWD    I(00,00,60);
        ITEM  SPAHDR$FC   I(00,00,12);  # FUNCTION CODE#
        ITEM  SPAHDR$PC   U(00,12,12);  # NUMBER OF PIDS  # 
        ITEM  SPAHDR$NET  U(00,24,12);  # NETWORK SELECTION FIELD  #
        ITEM  SPAHDR$RHF  B(00,34,01);  # RHF NETWORK  #
        ITEM  SPAHDR$RC   I(00,42,08);  # RETURN CODE  #
        ITEM  SPAHDR$CMP  B(00,59,01);  # COMPLETION BIT  # 
        END 
  
      BASED ARRAY  SPAPARM [0:0] S(1);
        BEGIN  # SETPIDA PARAMTER  #
        ITEM  SPAWD      I(00,00,60); 
        ITEM  SPAPID     C(00,00,03);   # SETPIDA PID  #
        ITEM  SPASTAT    U(00,56,04);  # NUMBER OF PIDS  #
  
        END    # SETPIDA PARMETER  #
    CONTROL EJECT;
      IF INITPTR
      THEN
        BEGIN 
        INITPTR = FALSE;
        P<SPAHDR> = LDT$BPTR; 
        SPAHDRWD = 0; 
        SPAHDR$FC = SPA$SNSF; 
        SPAHDR$RHF = TRUE;
        SPAHDR$CMP = TRUE;
        P<SPAPARM> = P<SPAHDR> + 1; 
        END 
  
      IF PIDSTATUS NE 0 
      THEN
        BEGIN 
        SPAWD = 0;
        SPAPID = NET$PID; 
        SPASTAT = PIDSTATUS;
        SPAHDR$PC = SPAHDR$PC + 1;
        P<SPAPARM> = P<SPAPARM> + 1;
        END 
  
      IF UPDLIDT
      THEN
        BEGIN 
        INITPTR = TRUE; 
        IF SPAHDR$PC NE 0 
        THEN
          BEGIN 
          SETPIDA(P<SPAHDR>,BARRAY);
          END 
  
        END 
  
    CONTROL ENDIF;
  
      RETURN; 
      END   # SPIDSTAT #
      TERM
