Boost logo

Boost :

From: George A. Heintzelman (georgeh_at_[hidden])
Date: 2002-01-25 10:40:38


> > I don't want to further complicate matters, but I have to ask: Are there
> > any platforms that use more than a single character as the separator?
>
> VMS has really wierd filenames. (I expect they think MS-DOS has
> rather wierd ones, and UNIX rather primitive ones.) I wouldn't
> pretend to remember the exact details, but as I recall the volume
> name was written within square brackets, so I suppose that counts
> as a separator that is both multi-character and non-contiguous.

VMS is definitely really weird. A typical fully-specified VMS filename
might look something like this:

DISK$SCRATCH:[GEORGE.PROJECT1.DAT]BIG_DATA_FILE.NTP;5

The general format is:

Device:[directories.dot.separated]filename.extension;version_number

Generally, you can't cd 'up' from Device:[000000] (which is the name of
the root directory on a given device), but Device is allowed to be a
logical device, which may actually be a subdirectory of a physical
device. Only one layer of indirection is allowed here (at least, when I
last used VMS). The filename may not contain any '.' characters, and
there is only one extension, so f.tar.gz is tricky to make an
equivalent on. It's not case-sensitive (no VMS command is). The version
number is automatically incremented every time you save a new file. If
you don't specify it, you get the highest version number. You can also
specify ;-n as the version number, to get the nth previous version.

As one further twist, if you specify device1:filename.extension, when
your current directory is device2:[current.directory], you will get
device1:[current.directory]filename.extension, if device1 is a rooted
directory specification (what I called a logical device above). But
device1 is also allowed to be an 'ordinary' logical name, which might
be a fully-specified directory (eg Device:[some.directory], in which
case you just get that one. Clear? Thought not.

I have always thought that handling VMS, without losing the ability to
use a significant VMS-specific feature, would be a real challenge to
any pathname utility. Most of the ports of Unix programs that I have
seen ignore version numbers completely, and are rather clumsy around
extensive use of logical devices and logical names.

George Heintzelman
georgeh_at_[hidden]


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk