[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Directory separators



>
> >
> > I have been using the following function to select the appropriate OS
> > specific directory separator.  I have two questions about it: (1) what
> > is the correct directory separator in VMS?, and (2) is there a built-in
> > means of getting the same information?
> >
> > Thanks,
> >
> > Ben
> >
> > ;------START
> > FUNCTION SYSSEP
> >
> > Case StrLowCase(!Version.OS_Family) of
> >  'unix':  Return, '/'
> >  'win':    Return,'\'
> >  'macos':  Return,':'
> >  'vms': Return, ''
> >  Else: Return, ''
> > EndCase
> >
> > End
> > ;---------END
>
> Paul van Delst is correct that "." separates subdirectories in VMS.
> However, the most frequent use that I've seen for a case statement like
> the above is to separate the directory specification from a file name.
> In that case you'd want "]".  To complete Paul's example:
>
>   DISK$NAME1:[PAULV.DIR.SUBDIR.SUBSUBDIR]filename.ext
>

In VMS you may also get a file path define via a logical such as:

$ DEFINE DIR_PATH   DISK$NAME1:[PAULV.DIR.SUBDIR.SUBSUBDIR]

in which case the above file spec becomes DIR_PATH:filename.ext

So you also need to search for ":" as well as "]".  To do this you can
use a regular expression as show below.

;-------------------------------------------------------------

Function ExtrFileName, FullFileSpec

; Given the full file spec extract the file name. (vms case)

f= StrSplit(FullFileSpec,'^*:|^*\]',/Extract)
f = f[N_Elements(f)-1]
f= StrSplit(f,';*$',/Extract)

Return, f[0]

End

;--------------------------------------------------------------
Regards,

George Constantinides
Manly Hydraulics Laboratory
email:  GeorgeC@mhl.nsw.gov.au
URL   http://www.mhl.nsw.gov.au