*DECK SSIPSQR 
USETEXT TEXTATS 
USETEXT TEXTRPC 
USETEXT TEXTXDR 
      PROC SSIPSQR (POSITION, LENGTH, RETCODE); 
*CALL COPYRITE
# TITLE SSIPSQR - PROCESS SERVER QUERY REPLY.                          #
  
      BEGIN                            # SSIPSQR                       #
# 
****  SSIPSQR - PROCESS SERVER QUERY REPLY. 
* 
*     THIS PROCEDURE PROCESSES A REPLY TO A QUERY SERVER REQUEST. 
* 
*     PROC SSIPSQR
* 
*     ENTRY    POSITION = CURRENT POSITION IN INDATABUF 
*              LENGTH   = REMAINING BYTES IN INDATABUF
* 
*     EXIT     POSITION = CURRENT POSITION IN INDATABUF 
*              LENGTH   = REMAINING BYTES IN INDATABUF
*              RETCODE  = COMPLETION STATUS OF QUERY
*              ACSLM$READY = TRUE OF SERVER RUNNING 
* 
*     METHOD   VERIFY THE PROPER NUMBER OF BYTES ARE AVAILABLE IN THE 
*              REQUEST.  DECODE THE REPLY.  VERIFY THE RESPONSE STATUS
*              AND SET ACSLM$READY TO TRUE IF THE SERVER INDICATES
*              THAT IT IS UP AND RUNNING. 
* 
# 
  
# 
****  PROC SSIPSQR - XREF LIST. 
# 
  
      XREF
        BEGIN 
        PROC XDRINT;     # CONVERT INTEGER TO XDR FORMAT.              #
        END 
  
# 
**
# 
  
      ITEM RETCODE             I;      # ERROR STATUS                  #
      ITEM LENGTH              I;      # REMAINING REPLY LNGTH IN BYTES#
      ITEM POSITION            I;      # CURRENT BYTE LOCATION IN BUF  #
CONTROL EJECT;
  
# 
****  START MAIN PROCEDURE
# 
  
      LENGTH = LENGTH - (QRSIZE$ * 4);
  
      IF LENGTH GQ 0
      THEN
        BEGIN 
        XDRINT (INDATABUF [0], POSITION, CMD$HDR [REPLY$],
                QRSIZE$, XDROPER"READ");
        IF (CMD$TYPE [REPLY$] EQ SERVER$) AND 
           (RSP$STATUS [REPLY$] EQ STATSUCCESS$)
        THEN
          ACSLM$READY = CMD$STATE [REPLY$] EQ STATERUN$;
        ELSE
          RETCODE = INVALIDREQ$;
        END 
  
      END                              # SSIPSQR                       #
  
      TERM
