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