/** $VER: CmdShell.dmcs 1.1 (10.11.91) ** ** Deluxe Music's command shell ** ** Original by David N. Junod ** Modified by Bill Hawes ** Modified by Martin Taillefer ** Modified by Talin **/ OPTIONS RESULTS OPTIONS FAILAT 100 OPTIONS PROMPT "Cmd> " /* Display instructions */ SAY 'Enter commands, or press CTRL-\ to exit.' /* Get input until the user closes the Command Shell */ DO FOREVER /* Wait until the user types a command followed by RETURN */ PARSE PULL cmdString SELECT WHEN (cmdString = "") | (UPPER(cmdString) = "Q") | (UPPER(cmdString) = "QUIT") THEN DO LEAVE END WHEN (cmdString = "?") | (UPPER(cmdString) = "HELP") THEN DO SAY 'Enter "HELP " to obtain a command''s template.' SAY 'Enter CTRL-\ to close this window.' END; OTHERWISE DO CALL HandleCmd(cmdString) END; END END RETURN HandleCmd: PROCEDURE PARSE ARG cmdString /* Execute the command */ cmdString /* See if the command succeeded */ IF RC = 0 THEN DO IF symbol('RESULT') == "VAR" THEN DO SAY RESULT END RETURN END /* Wasn't a host command, try running it as an ARexx script */ IF DMUSIC.LastError = 515 THEN DO ADDRESS REXX cmdString /* Wasn't an ARexx script, try running it as a CLI command */ IF RC > 0 THEN DO ADDRESS COMMAND cmdString END END; ELSE DO IF RC > 0 THEN DO last = DMUSIC.LastError GetErrorInfo DMUSIC.LastError IF RC = 0 THEN msg = RESULT ELSE DO msg = "" END SAY '*** Error #'last': 'msg END END RETURN /* end of HandleCmd() */