[comp.os.vms] directory name in prompt string

dp@JASPER.Palladian.COM (Jeffrey Del Papa) (02/05/88)

if you blithely insert the directory name into your prompt string, you will
quickly exceed the limited prompt width. here is an solution.

------------- cut here --------
$ ! Set default and prompt with Unix like syntax (or, gag, Vms syntax).
$ ! Shane 8 September 1985
$ IF p1 .EQS. "" THEN GOTO home
$ IF F$TRNLNM("''p1'") .NES. "" THEN GOTO lgcl
$ IF F$LOCATE("[", p1) .LT. F$LENGTH(p1) THEN GOTO norm
$ IF F$LOCATE("<", p1) .LT. F$LENGTH(p1) THEN GOTO norm
$ IF p1 .EQS. ".." THEN GOTO up
$ IF F$LOCATE("..", p1) .EQ. 0 THEN GOTO side
$ spec = "[''p1']"
$ cd: 	device = F$PARSE(spec, "DEFAULT", ,"DEVICE", "SYNTAX_ONLY")
$	directory = F$PARSE(spec, "DEFAULT", , "DIRECTORY", "SYNTAX_ONLY")
$	IF F$PARSE(spec) .EQS. "" THEN GOTO barf
$	SET DEFAULT 'device''directory'
$       directory = F$EXTRACT(1, F$LENGTH(F$DIR()) - 2, F$DIR())
$	IF F$LENGTH(directory) + F$LENGTH(F$TRNLNM("SYS$NODE")) + F$LENGTH(F$TRNLNM("SYS$DISK")) .LT. 30 THEN GOTO set
$ trim:	dot = F$LOCATE(".", directory)
$	directory = F$EXTRACT(dot + 1, F$LENGTH(directory) - dot, directory)
$	IF F$LENGTH(directory) .GT. 26 THEN GOTO trim
$	directory = "...''directory'"
$ set: 	SET PROMPT = "''F$TRNLNM("SYS$NODE")'''F$TRNLNM("SYS$DISK")'''directory'> "
$ 	EXIT
$ up:	spec = "[-]"
$	GOTO cd
$ home:	spec = &F$LOG("SYS$LOGIN")
$	GOTO cd
$ side: spec = "[-''F$EXTRACT(1, F$LENGTH(p1), p1)']"
$	GOTO cd
$ lgcl: spec = F$TRNLNM("''p1'")
$	GOTO cd
$ norm: spec = p1 
$	GOTO cd	
$ barf:	WRITE sys$output "Nonexistent: ''p1'"
$	STOP