999 18th Street, Denver, CO 80202.
Log in Contact Us Now! +1 888 472 7732

OpenVMS Undocumented Features


This is the most complete collection of undocumented features we can find for OpenVMS. Some of these have been around since the time when it was called VMS while others are more current and have been added to OpenVMS V8.n. These features:

  • Are NOT documented (if they were, they wouldn't belong here)
  • Are NOT supported by PARSEC Group or HP
  • Are NOT guaranteed to work
  • May NOT exist in all versions of OpenVMS; past, present and future
  • Are subject to change, removal, enhancement or being documented at the whim of OpenVMS engineering
  • May be fun to know the next time you play OpenVMS trivial pursuit
  • May help you get your job done easier and faster
  • May help you impress your boss with your knowledge of the obscure

Allowing multiple occurrances of the same qualifier

The SORT command allows the /KEY qualifier to be specified multiple times and honors each one of them. This is not normally allowed when using the CLI utility routines. An undocumented routine, CLI$NEXT_QUAL makes this possible. The arguments to this routine are:

  • qual_name - pointer to a descriptor with the name of the qualifier

This may be placed in a loop along with CLI$GET_VALUE to get the values of each occurrence of the qualifier.

Getting thread-specific CPU time

There is an unsupported function in the pthread library to get CPU time of a thread on OpenVMS V7.3-2 and later. The C prototype for the function is:

extern int pthread_getcputime_np( pthread_t, struct timespec * );

Status return values are:

  • 0 - Success
  • EINVAL - NULL cputime parameter
  • ESRCH - handle is not a thread
  • ENOTSUP - can't return CPU time for SCS thread (UNIX only)
  • -ESTALE - warning that value is out of date (target is running)

SEARCH /STATISTICS and DCL symbols

The SEARCH/STATISTICS command reports some statistics about the number of files, records and characters matched. It also creates some local DCL symbols that may be used by command procedures to test the results of the search.

$ search/statistics test.txt dcl


DCL_CTLFLAGS                    0          0         0         -1 Bitmask    D

Files searched:                 1       Buffered I/O count:         7
Records searched:             167       Direct I/O count:           1
Characters searched:        13003       Page faults:               22
Records matched:                1       Elapsed CPU time:  0 00:00:00.01
Lines printed:                  1       Elapsed time:      0 00:00:00.00
$ show symbol/all/local
  SEARCH$CHARACTERS_SEARCHED = "13003"
  SEARCH$FILES_SEARCHED = "1"
  SEARCH$LINES_PRINTED = "1"
  SEARCH$RECORDS_MATCHED = "1"
  SEARCH$RECORDS_SEARCHED = "167"

Thanks to Peter Weaver for bringing this one to our attention.

SYS$FAULT_PAGE System Service

The SYS$FAULT_PAGE system service may be used to pre-fault pages into the working set without placing the process in a page fault wait (PFW) state. The arguments are:

  • startva - starting virtual address
  • bytelength - number of bytes to fault
  • pfcbytesize - page fault cluster size

SYS$FORGE_WORD System Service

The SYS$FORGE_WORD system service generates a random "word". It is used by the SET PASSWORD /GENERATE command and can be used by any application needing a string of characters that is not in the password dictionary. The arguments are:

  • minlen - minimum number of characters to be returned
  • maxlen - maximum number of characters to be returned
  • mindata - minimum amount of data to be returned in decibits
  • flags - miscellaneous flags
  • retdata - longword to receive actual amount of information in word
  • outlen - word to receive length of returned word
  • outstr - address of buffer to receive returned word

SYS$GET_ENV_SENSORS System Service

The SYS$GET_ENV_SENSORS system service reads the specified sensors and returns the values of the sensors to the caller. Valid sensors are ESF$K_TEMP, ESF$K_POWER, and ESF$K_FAN. The arguments to the service are:

  • lasttime - pointer to a 64-bit system time of the last initialization
  • itemcode - the type of sensor to be read
  • buffersize - size of buffer to receive the data
  • buffer - address of data buffer

SYS$SETENV System Service

The SYS$SETENV system service can set selected environment variables on the console of the host system. The arguments to the service are:

  • itemlist - a zero terminated item list
    • itemcode - longword indicating console variable to set
    • bufferlen - length of data to be written
    • buffer - address of buffer to be written
    • retaddr - quadword address of variable to receive length of data actually written

First  Previous  Page 9 of 15  Next  Last

Please enjoy these features at your own risk. If you are aware of other features in OpenVMS which are currently undocumented, you may use our inquiry form to inform us. We may then add it to our list.