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
F$GETSYI argument MAIN_MEMORY
The argument MAIN_MEMORY to the F$GETSYI lexical function returns a string of numbers indicating the use of memory on the system. The following command procedure extracts and displays the information
$! memory.com
$ delete /symbol /all /local
$ a_mem = f$getsyi("main_memory")
$ modified = f$integer ("%x''f$extract(0, 8, a_mem)'")
$ inuse = f$integer ("%x''f$extract(8, 8, a_mem)'")
$ free = f$integer ("%x''f$extract(16, 8, a_mem)'")
$ total = f$integer ("%x''f$extract(24, 8, a_mem)'")
$ show symbol /all /local
$ show memory /physical
$ exit
$ @memory
A_MEM = "00000B1400012D160000C7D600020000"
FREE = 51158 Hex = 0000C7D6 Octal = 00000143726
INUSE = 77078 Hex = 00012D16 Octal = 00000226426
MODIFIED = 2836 Hex = 00000B14 Octal = 00000005424
TOTAL = 131072 Hex = 00020000 Octal = 00000400000
System Memory Resources on 7-MAR-2007 13:48:05.64
Physical Memory Usage (pages): Total Free In Use Modified
Main Memory (1024.00MB) 131072 51120 77123 2829
Of the physical pages in use, 5971 pages are permanently allocated to OpenVMS.
F$GETSYI arguments for checking hardware environment
There are four arguments to F$GETSYI that allow checking the hardware environment sensors that are available on a few of the Alpha systems. They are:
- FAN_VECTOR
- POWER_VECTOR
- THERMAL_VECTOR
- TEMPERATURE_VECTOR
FAN_VECTOR, POWER_VECTOR and THERMAL vector return an array of 16 two-character values indicating the status of each monitored system. The possible values are 00 - system failed, 01 - system OK, FF - sensor does not exist.
$ power = f$getsyi("power_vector")
$ show symbol power
POWER = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01"
$ pstatus = f$integer (f$extract (30, 2, power))
$ show symbol pstatus
PSTATUS = 1 Hex = 00000001 Octal = 00000000001
TEMPERATOR_VECTOR returns an array of 16 two-character values indicating the reading of each temperature in celsius. For each sensor which does not return a value, or does not exist, the value FF is returned.
$ temp = f$getsyi("temperature_vector")
$ show symbol temp
TEMP = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33"
$ atemp = f$extract(30,2,temp)
$ show symbol atemp
ATEMP = "33"
$ if atemp .nes. "FF" then write sys$output f$integer("%x''atemp'")
51
F$GETSYI arguments for paged and non-paged pool statistics
The arguments PAGED_POOL and NPAGED_POOL to F$GETSYI return a string indicating the status of paged and non-paged pool on the system. Each 8 characters in the string represents the number of bytes of pool.
- The left most 8 characters represents the size in bytes of the largest free segment
- The next 8 characters represent the number of bytes in use
- The next 8 characters represent the total number of bytes free
- The right most 8 characters represents the current size of the pool in bytes
$ npaged = f$getsyi("npaged_pool")
$ show symbol npaged
NPAGED = "0023DD40004836C0003B294000836000"
$ write sys$output f$integer("%x''f$extract(0,8,npaged)'")
2350400
$ write sys$output f$integer("%x''f$extract(8,8,npaged)'")
4732608
$ write sys$output f$integer("%x''f$extract(16,8,npaged)'")
3877184
$ write sys$output f$integer("%x''f$extract(24,8,npaged)'")
8609792
$ paged = f$getsyi("paged_pool")
$ show symbol paged
PAGED = "000F18A00015F020000F2FE000252000"
$ write sys$output f$integer("%x''f$extract(0,8,paged)'")
989344
$ write sys$output f$integer("%x''f$extract(8,8,paged)'")
1437728
$ write sys$output f$integer("%x''f$extract(16,8,paged)'")
995296
$ write sys$output f$integer("%x''f$extract(24,8,paged)'")
2433024
$ show memory /pool
System Memory Resources on 7-MAR-2007 21:25:29.39
Dynamic Memory Usage: Total Free In Use Largest
Nonpaged Dynamic Memory (MB) 8.21 3.69 4.51 2.24
Bus Addressable Memory (KB) 128.00 110.87 17.12 104.00
Paged Dynamic Memory (MB) 2.32 0.94 1.37 0.94
Lock Manager Dyn Memory (MB) 2.83 0.53 2.29
F$GETSYI process and balance slot usage
The arguments BAL_SLOTS and PROC_SLOTS each return a string of numbers indicating the status of balance set slots and process slots on the system.
- The left most 8 digits are 0
- The next 8 digits are the number of slots in use
- The next 8 digits are the number of slots free
- The right most 8 digits are the total number of slots
$ bal = f$getsyi("bal_slots")
$ show symbol bal
BAL = "000000000000001B0000004700000062"
$ write sys$output f$integer("%x''f$extract(8,8,bal)'")
27
$ write sys$output f$integer("%x''f$extract(16,8,bal)'")
71
$ write sys$output f$integer("%x''f$extract(24,8,bal)'")
98
$ prc = f$getsyi("proc_slots")
$ show symbol prc
PRC = "000000000000001D0000004700000064"
$ write sys$output f$integer("%x''f$extract(8,8,prc)'")
29
$ write sys$output f$integer("%x''f$extract(16,8,prc)'")
71
$ write sys$output f$integer("%x''f$extract(24,8,prc)'")
100
$ show memory /slot
System Memory Resources on 7-MAR-2007 21:05:54.60
Slot Usage (slots): Total Free Resident Swapped
Process Entry Slots 100 71 29 0
Balance Set Slots (50) 98 71 27 0
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.