*DECK SSIDSSR 
USETEXT TEXTATS 
USETEXT TEXTIPL 
USETEXT TEXTXDR 
      PROC SSIDSSR (ERRCODE); 
*CALL COPYRITE
# TITLE SSIDSSR - DELIVER SERVER SYSTEM RESPONSE.                      #
  
      BEGIN                            # SSIDSSR                       #
# 
****  SSIDSSR - DELIVER SERVER SYSTEM RESPONSE. 
* 
*     THIS PROCEDURE RETURNS A REPLY FOR THE SERVER SYSTEM BACK TO THE
*     REQUESTING NOS SUBSYSTEM. 
* 
*     PROC SSIDSSR
* 
*     ENTRY 
* 
*     EXIT     ERRCODE = *SSNORESP$* IF AN ERROR IS OBTAINED WHILE
*              ATTEMPTING TO GIVE THE RESPONSE TO THE NOS SUBSYSTEM.
* 
*     METHOD   DETERMINE IF A RESPONSE IS WAITING TO BE DELIVERED TO
*              THE NOS SUBSYSTEM (I.E. MAGNET).  IF THERE IS, GIVE
*              THE RESPONSE TO THE SUBSYSTEM USING A *CPUMTR* *SIC* 
*              CALL.  RETURN AN ERROR CONDITION IF THE *SIC* CALL 
*              RESULT WAS AN ERROR. 
# 
  
# 
****  PROC SSIDSSR - XREF LIST. 
# 
  
      XREF
        BEGIN 
        PROC SSIDDIS;    # DEBUG DISPLAY                               #
        FUNC SSIWSSR I;  # WRITE SUBSYSTEM RESPONSE                    #
        END 
  
# 
**
# 
  
      ITEM ERRCODE             I;      # ERROR ENCOUNTERED             #
CONTROL EJECT;
  
# 
****  START MAIN PROCEDURE
# 
  
      IF REP$WORD0 [NEXTREAD] NQ 0
      THEN
        BEGIN                          # RESPONSE OUTSTANDING          #
        IF SSIWSSR (REPBUF [NEXTREAD]) EQ COMPLETE$ 
        THEN
          BEGIN                        # ACCEPTED BY NOS SUBSYSTEM     #
  
          IF DFLAG
          THEN
            SSIDDIS (INTERNMSG$, DEBUGSND$);
  
          REP$WORD0 [NEXTREAD] = 0;    # CLEAR RESPONSE                #
          NEXTREAD = XDRMODU ((NEXTREAD + 1), NUMBREP$);
  
          IF (NOT MAGNETCONN) AND 
             (ERRCODE EQ NOERROR$)
          THEN
            BEGIN                      # SUBSYSTEM RESPONDING          #
            ERRCODE = SSRESP$;
            MAGNETCONN = TRUE;
            END                        # SUBSYSTEM RESPONDING          #
  
          END                          # ACCEPTED BY NOS SUBSYSTEM     #
        ELSE
          BEGIN                        # SUBSYSTEM NOT RESPONDING      #
          IF DFLAG
          THEN
            SSIDDIS (INTERNMSG$, DEBUGNRSP$); 
          IF (MAGNETCONN) AND 
             (ERRCODE EQ NOERROR$)
          THEN
            BEGIN                      # NO RESPONSE                   #
            ERRCODE = SSNORESP$;
            MAGNETCONN = FALSE; 
            END                        # NO RESPONSE                   #
          END                          # SUBSYSTEM NOT RESPONDING      #
  
        END                            # RESPONSE OUTSTANDING          #
  
      END                              # SSIDSSR                       #
  
      TERM
