*DECK SSIQSWR 
USETEXT TEXTATS 
USETEXT TEXTRPC 
      PROC SSIQSWR (RETCODE); 
*CALL COPYRITE
# TITLE SSIQSWR - QUERY SERVER WORKSTATION READY.                      #
  
      BEGIN                            # SSIQSWR                       #
# 
****  SSIQSWR - QUERY SERVER WORKSTATION READY. 
* 
*     THIS PROCEDURE SENDS A QUERY TO THE LIBRARY SERVER TO DETERMINE 
*     IF IT IS IN A STATE TO RECEIVE REQUESTS.
* 
*     PROC SSIQSWR
* 
*     ENTRY 
* 
*     EXIT     RETCODE = COMPLETION STATUS OF QUERY 
* 
*     METHOD   ISSUE A DAYFILE STATING THAT THE SERVER SYSTEM IS BEING
*              QUERIED TO DETERMINE ITS CURRENT STATE.  INITIALIZE THE
*              CURRENT SERVER CONDITION TO DOWN.  SEND THE QUERY SERVER 
*              COMMAND TO THE SERVER SYSTEM OVER THE CLIENT HANDLE. 
*              PROCESS ANY OUTSTANDING RESPONSES WHILE WAITING FOR THE
*              SERVER RESPONSE.  IF THE STATE IS NOT RUN, LOOP
*              REISSUEING THE QUERY EVERY TWO MINUTES.  AN ERROR OF 
*              REMOTE UNAVAILALE IS THE ONLY "NORMAL" ERROR ACCEPTED
*              FROM RPC.  ANY OTHERS WILL CAUSE THE PROCEDURE TO
*              TERMINATE. 
* 
# 
  
# 
****  PROC SSIQSWR - XREF LIST. 
# 
  
      XREF
        BEGIN 
        PROC MESSAGE;    # ISSUE DAYFILE MESSAGE                       #
        PROC SSISACR;    # SEND ATS CLIENT REQUEST                     #
        PROC SSIRASR;    # RECEIVE ATS SERVER RESPONSE                 #
        END 
  
# 
**
# 
  
      ITEM RETCODE             I;      # ERROR STATUS                  #
      ITEM LOOP1               I;      # LOOP COUNTER                  #
      ITEM LOOP2               I;      # LOOP COUNTER                  #
      ITEM RPCSTATUS   S:RPCSTAT;      # RPC STATUS                    #
  
  
# 
****  THIS ARRAY DEFINES THE MESSAGE FOR QUERYING THE SERVER STATION. 
# 
      ARRAY QUEMSG [00:00] S(3);
        BEGIN 
        ITEM QUE$TEXT    C(00,00,23) = [
          "ATF-QUERY ACSLM SERVER."]; 
        ITEM QUE$ZBYTE   U(02,18,42) = [0]; 
        END 
CONTROL EJECT;
  
# 
****  START MAIN PROCEDURE
# 
  
      MESSAGE (QUEMSG, 0);             # ISSUE I'M HERE DAYFILE MESSAGE#
  
      ACSLM$READY = FALSE;
  
      FOR LOOP1 = 0 
      WHILE (NOT ACSLM$READY) 
      DO
        BEGIN                          # WAIT FOR SUCCESS              #
        SSISACR ((SERVERQUERY$), RETCODE);# ISSUE SERVER QUERY         #
        IF (RETCODE NQ REMUNAVA$) AND 
           (RETCODE NQ NOERROR$)
        THEN
          RETURN; 
  
        RETCODE = NOERROR$; 
        MSG$COMMAND [REPLY$] = 0; 
        FOR LOOP2 = 0 
        WHILE (RETCODE EQ NOERROR$) AND 
              (NOT ACSLM$READY) 
        DO
          SSIRASR ((WAITTIME$), RETCODE);# RECEIVE ANY REPLIES         #
  
        IF (RETCODE NQ REMUNAVA$) AND 
           (RETCODE NQ NOERROR$)
        THEN
          RETURN; 
  
        END                            # WAIT FOR SUCCESS              #
  
      END                              # SSIQSWR                       #
  
      TERM
