d$!{DO} TREE {? or name or .name or [dir.sub...]} $! Moves user around is sub-directory structure. ,$! $! Enter $ {DO} TREE ? Show the next levels $! Enter $ {DO} TREE (RET) Remove an entry X$! Enter $ {DO} TREE name Add an entry $! Enter $ {DO} TREE .name Replace lowest entry $! Enter $ {DO} TREE {DRxx:}{[...{]}} SET DEF ... $! $!-end.of.info- L$ ~$ sds := 'f$logical("SYS$DISK") $ old := 'f$directory() $ leng = 'f$length(old)-1 x$ if( p1.nes."?" ) then goto notnxt $ do dir *.dir . @$ exit $ $notnxt: l$ if( 'f$locate(":",p1).eq.'f$lenght(p1) ) then goto notdrxx $ if( 'f$locate("[",p1).eq.'f$length(p1)) then p1:= 'p1''old' 4$ goto setdir $ $notdrxx: ` $ if( 'f$locate("[",p1).eq.'f$length(p1) ) then goto notset $setdir: ( $ if( 'f$locate("]",p1).eq.'f$length(p1) ) then p1 := 'p1'] $ newdir := 'p1 $ goto nowdo T $ $notset:  $ if( p1 .nes. "" ) then goto notup $ $up: H $ if( "''f$extract( leng,1,old )'".eqs."." ) then goto gotit $ leng = leng-1 $ if( leng.gt.1 ) then goto up t$ newdir := 'old' $ goto nowdo <$gotit: $ newdir := 'f$extract(0,leng,old)'] $ goto nowdo h$notup: $ if( "''f$extract( 0,1,p1)'".nes."." ) then goto down 0$ p1 := 'f$extract(1,100,p1) $notyet: $ if( "''f$extract( leng,1,old )'".eqs."." ) then goto down \$ leng = leng-1 $ if( leng.gt.1 ) then goto notyet $$ newdir := 'old' $ goto nowdo $down: P$ newdir := 'f$extract(0,leng,old)'.'p1'] $ $nowdo: |$ write sys$output "$ set def ",newdir," ,from ",sds,old $ set def 'newdir'