PROCEDURE lsi_next_buffer (direction_str) LOCAL direction, curr_buff, next_buff; ! ! Find the direction to move. IF direction_str = "REVERSE" THEN direction := REVERSE ELSE direction := FORWARD ENDIF; ! ! Get a pointer to the current buffer. curr_buff := GET_INFO (BUFFERS, "current"); IF curr_buff <> 0 THEN IF direction = FORWARD THEN next_buff := GET_INFO (BUFFERS, "next") ELSE next_buff := GET_INFO (BUFFERS, "previous") ENDIF; IF next_buff = 0 THEN IF direction = FORWARD THEN next_buff := GET_INFO (BUFFERS, "first") ELSE next_buff := GET_INFO (BUFFERS, "last") ENDIF ENDIF; LOOP EXITIF (GET_INFO (next_buff, "system") = 0); IF direction = FORWARD THEN next_buff := GET_INFO (BUFFERS, "next") ELSE next_buff := GET_INFO (BUFFERS, "previous") ENDIF; EXITIF next_buff = curr_buff; IF next_buff = 0 THEN IF direction = FORWARD THEN next_buff := GET_INFO (BUFFERS, "first") ELSE next_buff := GET_INFO (BUFFERS, "last") ENDIF ENDIF ENDLOOP; IF (next_buff <> curr_buff) AND (next_buff <> 0) THEN POSITION (next_buff); MAP (CURRENT_WINDOW, CURRENT_BUFFER); LSE$SET_STATUS_LINE (CURRENT_WINDOW) ENDIF ENDIF ENDPROCEDURE