PROCEDURE lsi_goto_dcl LOCAL subprocess_pid, command_str, previous_spot; previous_spot := MARK (NONE); IF GET_INFO (lsi_subprocess_ptr, 'type') <> PROCESS THEN MESSAGE ('Creating subprocess ...'); IF GET_INFO (lsi_subprocess_buffer, 'type') <> BUFFER THEN lsi_subprocess_buffer := CREATE_BUFFER ('Subprocess output'); SET (SYSTEM, lsi_subprocess_buffer); SET (NO_WRITE, lsi_subprocess_buffer, ON) ENDIF; lsi_subprocess_ptr := CREATE_PROCESS (lsi_subprocess_buffer) ENDIF; MAP (CURRENT_WINDOW, lsi_subprocess_buffer); LSE$SET_STATUS_LINE (CURRENT_WINDOW); LOOP command_str := READ_LINE ('_Command: '); EXITIF command_str = ''; POSITION (END_OF (lsi_subprocess_buffer)); COPY_TEXT ('$ ' + command_str); REFRESH; SEND (command_str, lsi_subprocess_ptr); POSITION (END_OF (lsi_subprocess_buffer)); REFRESH; ENDLOOP; POSITION (previous_spot); MAP (CURRENT_WINDOW, CURRENT_BUFFER); LSE$SET_STATUS_LINE (CURRENT_WINDOW) ENDPROCEDURE ! lsi_goto_dcl