*DECK NS$END
USETEXT COM$NS
USETEXT ERR$NS
  
      PROC NS$END(ERRCODE);  # PROCESS HOP/END                         #
# TITLE NS$END - PROCESS HOP/END.      #
  
      BEGIN    # NS$END # 
# 
**    NS$END - PROCESS HOP/END. 
* 
*     J.C. LEE    1981
* 
*     THIS ROUTINE PROCESS HOP/END. 
* 
*     PROC NS$END(ERRCODE)
* 
*     ENTRY:  
*       NONE. 
* 
*     EXIT: 
*       ERRCODE - SET IF ERROR IS FOUND.
* 
*     METHOD: 
*       IF K-DISPLAY IS ASSIGNED: 
*         RELEASE TSB FOR PAGE-WAIT BUFFER. 
*         RELEASE TSB FOR K-DISPLAY BUFFER. 
*         CLEAN UP DISPLAY CONTROL WORD.
*       IF K-DISPLAY NOT ASSIGNED:  
*         SET ERROR CODE TO "ILLEGAL HOP SM". 
* 
# 
  
      ITEM ERRCODE    U;     # ERROR CODE                              #
  
      $BEGIN
      XREF
        BEGIN 
        PROC NS$DBG;         # TRACE PROC CALL                         #
        END 
      $END
  
      XREF
        BEGIN 
        FUNC NS$FEC U;       # FORMAT ERROR CODE                       #
        PROC RETTSB;         # RELEAE TSB                              #
        END 
      CONTROL EJECT;
  
      $BEGIN
      NS$DBG("END");         # TRACE CALL                              #
      $END
  
      IF DCW$F$ASS[0] 
      THEN                   # K-DISPLAY ASSIGNED                      #
        BEGIN 
        RETTSB(DCW$PWBTSB[0]); # RELEASE TSB FOR PAGE WAIT BUFFER      #
        RETTSB(DCW$KDBTSB[0]);      # RELEASE TSB FOR K-DISPLAY BUFFER #
        DCW$WORD[0] = 0;     # CLEAN-UP DISPLAY CONTROL WORD           #
        END 
  
      ELSE
        BEGIN 
        ERRCODE = NS$FEC(EC"ERR$SM", SMEC"HSM$HOPSM");
        END 
  
      RETURN; 
      END   # NS$END PROC # 
  
      TERM
