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