MicroVAX I VMS Stuff

When i was a student back in the eighties i had the pleasure of using VMS on the uni’s VAX systems. We were very much constrained in our usage though so my expertise was very limited. I remember the versioning of files, and having to purge old versions to get under the quota requirements, but that’s about all that i remember. I now find myself with a little VAX/VMS system and system privileges – and i have no skills at all.

I started with the VAX/VMS primer which describes things like how to use the command line, how to use the editor, EDT, how filenames work, directories including the default directory, and few commands. It’s a gentle start but leaves a lot unsaid.

I don’t have a full manual set for MicroVMS 4.4. Instead i have found a mix of resources for various versions with OpenVMS probably having the most comprehensive documentation. I have spent a lot of time googling to discover things that are probably very obvious to a regular VMS user.

The rest of this page is really a set of adhoc notes. Don’t take them too seriously.

Built-in commands are described in the VAX/VMS Command Language User’s Guide

Hard disk: dua0

First floppy disk drive: dua1

Second floppy disk drive: dua2

Change to a specific directory: $ SET DEFAULT DISK$USER:[USERNAME.SUBDIRECTORY]
Move to a higher-level directory (Parent): $ SET DEFAULT [-.SUBDIRECTORY]
Move up two levels: $ SET DEFAULT [--]
Return to user login directory: $ SET DEFAULT SYS$LOGIN
Change to a new disk: $ SET DEFAULT DISK2:[000000]
$ show default
  SYS$SYSROOT:[SYSMGR]

shows the current directory.

The root directory on a drive is 000000.

To see what is in the root directory:

$ dir dua0:[000000]

Directory DUA0:[000000]

000000.DIR;1        BACKUP.SYS;1        BADBLK.SYS;1        BADLOG.SYS;1
BITMAP.SYS;1        CONTIN.SYS;1        CORIMG.SYS;1        INDEXF.SYS;1
SYS0.DIR;1          SYSEXE.DIR;1        SYSMAINT.DIR;1      USER.DIR;1
VOLSET.SYS;1

Total of 13 files.
$

Subdirectories appear as files with a .DIR extension.

For the first level the 000000 is not required eg with the subdirectory sys0 and its subdirectory tmp:

$ dir dua0:[sys0]

Directory DUA0:[SYS0]

SYSCBI.DIR;1        SYSERR.DIR;1        SYSEXE.DIR;1        SYSHLP.DIR;1
SYSLIB.DIR;1        SYSMAINT.DIR;1      SYSMGR.DIR;1        SYSMSG.DIR;1
SYSTEST.DIR;1       SYSUPD.DIR;1

Total of 10 files.
$ dir dua0:[sys0.syshlp]

Directory DUA0:[SYS0.SYSHLP]

EDTHELP.HLB;1       EXAMPLES.DIR;1      HELPLIB.HLB;1       UAFHELP.HLB;1

Total of 4 files.
$

Console output can be redirected with /output=filename

Subdirectories are included with …

$ dir dua0:[000000...]*.dir

Directory DUA0:[000000]

000000.DIR;1        SYS0.DIR;1          SYSEXE.DIR;1        SYSMAINT.DIR;1
USER.DIR;1

Total of 5 files.

Directory DUA0:[SYS0]

SYSCBI.DIR;1        SYSERR.DIR;1        SYSEXE.DIR;1        SYSHLP.DIR;1
SYSLIB.DIR;1        SYSMAINT.DIR;1      SYSMGR.DIR;1        SYSMSG.DIR;1
SYSTEST.DIR;1       SYSUPD.DIR;1

Total of 10 files.

Directory DUA0:[SYS0.SYSHLP]

EXAMPLES.DIR;1

Total of 1 file.

Grand total of 3 directories, 16 files.

Size can be shown with /size (block =512B):

$ dir dua0:[000000] /size

Directory DUA0:[000000]

000000.DIR;1              1
BACKUP.SYS;1              0
BADBLK.SYS;1              0
BADLOG.SYS;1              0
BITMAP.SYS;1             16
CONTIN.SYS;1              0
CORIMG.SYS;1              0
INDEXF.SYS;1           1024
SYS0.DIR;1                1
SYSEXE.DIR;1              1
SYSMAINT.DIR;1            1
USER.DIR;1                1
VOLSET.SYS;1              0

Total of 13 files, 1045 blocks.
$

Total size of directories can be shown with grand_total.

$ dir dua0:[000000...]*.*   /size /grand_total

Grand total of 10 directories, 176 files, 13800 blocks.
$

To mount a floppy disk:

$ mount dua1: <label>

to dismount a floppy disk:

$ dismount dua1:

Logical names are used extensively as a shorthand for things. They are revealed by show logical *

$ show logical *

(LNM$PROCESS_TABLE)

  "SYS$COMMAND" = "_SALONE$OPA0:"
  "SYS$DISK" = "SYS$SYSROOT:"
  "SYS$ERROR" = "_SALONE$OPA0:"
  "SYS$INPUT" = "_SALONE$OPA0:"
  "SYS$OUTPUT" [super] = "_SALONE$OPA0:"
  "SYS$OUTPUT" [exec] = "_SALONE$OPA0:"
  "TT" = "OPA0:"

(LNM$JOB_800E4610)

  "SYS$LOGIN" = "SYS$SYSROOT:[SYSMGR]"
  "SYS$LOGIN_DEVICE" = "SYS$SYSROOT:"
  "SYS$SCRATCH" = "SYS$SYSROOT:[SYSMGR]"

(LNM$GROUP_000001)

(LNM$SYSTEM_TABLE)

  "$CONSOLE" = "_OPA0:"
  "$DISK1" = "_DUA0:"
  "$FLOPPY1" = "_DUA1:"
  "$FLOPPY2" = "_DUA2:"
  "$TERMINAL0" = "_TTA0:"
  "$TERMINAL1" = "_TTA1:"
  "$TERMINAL2" = "_TTA2:"
  "$TERMINAL3" = "_TTA3:"
  "ACP$BADBLOCK_MBX" = "MBA3:"
  "DBG$INPUT" = "SYS$INPUT:"
  "DBG$OUTPUT" = "SYS$OUTPUT:"
  "DISK$MICROVMS" = "SALONE$DUA0:"
  "LNK$LIBRARY" = "SYS$LIBRARY:IMAGELIB.OLB"
  "LNK$LIBRARY_1" = "SYS$LIBRARY:STARLET.OLB"
  "MTHRTL" = "SYS$SHARE:UVMTHRTL.EXE"
  "SYS$ANNOUNCE" = ".Welcome to MicroVMS V4.0"
  "SYS$COMMON" = "SALONE$DUA0:[SYS0.]"
  "SYS$DISK" = "SALONE$DUA0:"
  "SYS$ERRORLOG" = "SYS$SYSROOT:[SYSERR]"
  "SYS$EXAMPLES" = "SYS$SYSROOT:[SYSHLP.EXAMPLES]"
  "SYS$HELP" = "SYS$SYSROOT:[SYSHLP]"
  "SYS$INSTRUCTION" = "SYS$SYSROOT:[SYSCBI]"
  "SYS$LIBRARY" = "SYS$SYSROOT:[SYSLIB]"
  "SYS$MAINTENANCE" = "SYS$SYSROOT:[SYSMAINT]"
  "SYS$MANAGER" = "SYS$SYSROOT:[SYSMGR]"
  "SYS$MESSAGE" = "SYS$SYSROOT:[SYSMSG]"
  "SYS$SHARE" = "SYS$SYSROOT:[SYSLIB]"
  "SYS$SPECIFIC" = "SALONE$DUA0:[SYS0.]"
  "SYS$SYLOGIN" = "SYS$MANAGER:SYLOGIN.COM"
  "SYS$SYSDEVICE" = "SALONE$DUA0:"
  "SYS$SYSDISK" = "SYS$SYSROOT:"
  "SYS$SYSROOT" = "SALONE$DUA0:[SYS0.]"
  "SYS$SYSTEM" = "SYS$SYSROOT:[SYSEXE]"
  "SYS$TEST" = "SYS$SYSROOT:[SYSTEST]"
  "SYS$TOPSYS" = "SYS0"
  "SYS$UPDATE" = "SYS$SYSROOT:[SYSUPD]"
  "SYS$WELCOME" = "@SYS$MANAGER:WELCOME.TXT"
$

A logical can have more than one directory path so the command processor could search multiple directories for a file.

There are also symbols which seem to be effectively string variables.

EXE files are run using a run command.

Scripts are run with @ prefix.

$ @SYS$UPDATE:STABACKIT makes a standalone backup kit

There is a whole manual on backup and restore: VMS Backup Utility Manual.

A lot of other things are described by role in the System Manager’s Guide and the Operator’s Guide.

Leave a Reply

Your email address will not be published. Required fields are marked *