1 DCLSHELL
 DCLSHELL is a "history shell" for DCL which remembers the commands you
 have typed in and lets you edit and/or re-issue them. It saves your
 old commands in a history file which is kept on the system disk (not
 charged against your disk quota). New commands are placed in a command
 procedure (temporarily stored on the system disk) which DCLSHELL invokes 
 for you. No subprocesses are used.
	You start the DCLSHELL by typing "dsh". It will give you a prompt
 of the form "999 $" where 999 is the history number of the command. Type in
 commands as you normally would directly to DCL. One caveat - command line 
 prompting does not work, e.g. if you type in "copy <CR>", it will not prompt 
 you with "$_From:" but will return an "insufficient parameters" error 
 message.
	You may exit DCLSHELL by typing "stop" or "!exit". Typing "dsh" will 
 re-invoke DCLSHELL at the point you left it. The history file is kept alive 
 as long as you stay logged in.
2 History recall
 A command consisting of a single exclamation point (!) will list the last
 22 commands typed along with their history numbers. A command consisting
 of a single exclamation point followed by a period (!.) will list all of 
 the commands typed in the current session along with their history numbers.
 History recall commands are not listed in the history file.
2 Command recall
 A previous command may be reissued by typing
	!<history-spec>
 where <history-spec> is one of 4 things:

 1) A history number. This causes the command with that command number
    to be re-executed. For example "!12" causes command 12 to be re-issued.

 2) Another exclamation point (i.e. "!!"). This causes the last command
    to be repeated.

 3) A string delimited by the character "\". This causes the last command
    in the history file beginning with the string to be re-issued. For
    example "!\show\" will cause the last SHOW command to be re-issued.

 4) A string delimited by the character "/". This causes the first command
    in the history file beginning with the string to be re-issued. For
    example "!/show/" will cause the first SHOW command to be re-issued.
2 Editing
 Previous commands may be edited before re-issueing. The general form of
 an editing command is
	!<history-spec><d><from-string><d><to-string><d>[g]
 where the delimiter <d> is any character that makes the syntax
 unambiguous. Trailing delimiters may be omitted. If the optional [g] is 
 included, the <from-string> is globally replaced with the <to-string>. 
 If the [g] is not included, only the first instance of the <from-string> 
 is replaced with the <to-string>. 
	The special characters "%" (beginning of line) and "$" (end of line) 
 are supported. They may be escaped by preceding them with an "!". 
 A null string is synonymous with "%" and a string of several blanks is 
 synonymous with "$". 
	The special syntax
	?<command-number><d><from-string><d><to-string><d>[g]
 will allow you to edit a command and place the edited command in the
 history file without re-issueing it. This is useful for two part edits
 but it may be simpler to re-enter the command.
3 Examples

 !\dir\ .lis .exe
 will change the string ".lis" to ".exe" in the last DIR command before
 re-issueing it (the delimiter is a space).

 !!/   /.*/      or     !!/$/.*/
 will append the string ".*" to the end of the last command.

 !17;dat;txt;g
 will substitute all instances of the string "dat" with the string "txt"
 in the 17th command.
2 Multiple commands
 DCLSHELL will allow you to place multiple commands on a single line
 by separating them with a "#" character. For example
	17 $ for abc#link abc,def#run abc
 is equivalent to issueing the three commands
	$ for abc
	$ link abc,def
	$ run abc
 Multiple commands are stored in the history file in unexpanded form.
 Thus "!17" will cause re-execution of the three commands.

	Command recall commands may be included in multiple commands.
 They are expanded before placing them in the history file. Thus 
	set def [.test] # !17
 is stored in the history file as
	set def [.test] # for abc#link abc,def#run abc
 Note that the total length of an expanded command may not exceed 132 
 characters.
2 I/O redirection
 DCLSHELL permits redirection of input and output by reassigning the
 logical names SYS$INPUT and SYS$OUTPUT. The string syntax "<filespec"
 is used to redirect input and the string syntax ">filespec" is used
 to redirect output. For example

	dir *.lis >mydir.lis
 is equivalent to
	assign/user mydir.lis sys$output
	dir *.lis

	run test <indata.dat >outdata.dat
 is equivalent to
	assign/user indata.dat sys$input
	assign/user outdata.dat sys$output
	run test
2 Pipes
 DCLSHELL supports software pipes through the redirection of input
 and output to temporary files. The symbol "|" is used to denote a
 pipe. Pipes are most convenient with "Software Tools" as described
 in the book "Software Tools" by Kernighan and Plauger. For example

	dir *.abc | crt
 is equivalent to
	assign/user tempfile.dat sys$output
	dir *.abc
	assign/user tempfile.dat sys$input
	crt
