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 more recent versions. These features:

  • Are NOT documented (if they were, they wouldn't belong here)
  • Are NOT supported by PARSEC Group or the OEM (DEC, Compaq, HP, HPE, VSI)
  • 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 arguments

The following arguments to the F$GETSYI lexical function are not documented.

Undocumented Arguments to F$GETSYI
Argument Description
ACTIVE_CORE_CNT Count of cores in hard partition with at least one active LP
ACTIVE_CPU_BITMAP CBB bitmap data of active CPUs
AVAIL_CPU_BITMAP CBB bitmap data of available CPUs
AVAIL_PAGES Available physical pages
AWSMIN_SYS AWSMIN for the system working set
AWSTIME_SYS AWSTIME for the system working set
BAP_MAX_PA_REG Bus addressable pool (BAP) maximum PA registered (megabytes)
BAP_MAX_REQ_SZ Bus addressable pool (BAP) maximum size requested (bytes)
BAP_MIN_PA_REG Bus addressable pool (BAP) minimum PA registered (megabytes)
BAP_MIN_REQ_SZ Bus addressable pool (BAP) minimum size requested (bytes)
CLUSTER_NTIME Cluster New time
CLUSTER_NTIME_REF Cluster New time - local reference
COMPLEX_ID Complex Profile ID
CPUCONF CPU Configuration bitmask: 0 through 31
CPU_SOCKETS Returns number of cpu sockets
DAY_OVERRIDE UAF day classifications are overridden
DAY_SECONDARY UAF day override is to Secondary
DBGTK_LOADED Remote system debugger target kernel is loaded
DEF_PRIO_MAX MAX priority for default policy
DEF_PRIO_MIN MIN priority for default policy
FT_ACTIVE CIRRUS system is fully active
FT_FLAGS Fault Tolerance Flags field
GLX_INCARNATION galaxy incarnation count
GLX_MBR_INCARNATION galaxy member incarnation number
GLX_MBR_JOINED galaxy member join time
GLX_SW_VERSION Galaxy software version
GLX_TERMINATION systime galaxy died
HP_CORE_CNT Count of unique cores in hard partition
H_FLOAT_EMULATED H floating instructions emulated
MAX_PFN Returns contents of MMG$GL_MAXPFN
MAX_PFN_64 Returns contents of MMG$GQ_MAXPFN
MIN_CPU_FEATURE_MASK AMASK value of all CPUs ANDed together
PFN_MEMORY_MAP Returns a physical memory map
PFN_MEMORY_MAP_64 Returns a 64 bit physical memory map
PFRATH_SYS PFRATH for the system working set
PFRATL_SYS PFRATL for the system working set
PMD_COUNT Returns count of phys. mem. desc. in HWRPB
POTENTIAL_CPU_BITMAP CBB bitmap data of potential CPUs
POWERED_CPU_BITMAP CBB bitmap data of powered on CPUs
PRESENT_CPU_BITMAP CBB bitmap data of present CPUs
PROCESS_SPACE_LIMIT Highest process private VA
PSXFIFO_PRIO_MAX MAX priority for POSIX FIFO policy
PSXFIFO_PRIO_MIN MIN priority for POSIX FIFO policy
PSXRR_PRIO_MAX MAX priority for POSIX Rnd-Robbin policy
PSXRR_PRIO_MIN MIN priority for POSIX Rnd-Robbin policy
PTES_PER_PAGE Page Table Entries per Page
PT_BASE Base VA of PT_space
QUORUM Connection manager cluster QUORUM
REALTIME_SPTS SPT entries for CONINTERR processes
RMS_GBLBUFQUO RMS global buffer quota
SERIAL_NUMBER System Serial Number
SHARED_VA_PTES Boundary between process and system space PTEs
SWPALLOCINC Swap file allocation increment value
WSDEC_SYS WSDEC for the system working set
WSINC_SYS WSINC for the system working set
WS_OPA0 Workstation using QVSS for OPA0
XCPU CPU subtype (Extended SID info)
XSID Extended System Identification Register

F$GETSYI SERIAL_NUMBER argument

The SERIAL_NUMBER argument to F$GETSYI lexical function normally returns a formatted serial number in ASCII readable text as in the example below.

$ write sys$output f$getsyi("serial_number")
NI643047NT

On some systems, it may return a string of 32 characters representing the binary value of the serial number. This may be translated to the ASCII text using the procedure below.

$ say := write sys$output
$ snum = f$gets("SERIAL_NUMBER")
$ if f$len( snum ) .eq. 32 then -
$ gosub decode_snum
$ node = f$getsyi("nodename" )
$ hdwe_name = F$GETSYI("HW_NAME")
$ say f$fao( " Node !AS (!AS), serial nbr !AS", node, hdwe_name, snum )
$ exit
$!
$decode_snum:
$ tsnum :=
$ ptr = 0
$decode_loop:
$ disp = 32 - (ptr * 2)
$ hex = f$extr( disp - 2, 2, snum )
$ stbit = ptr * 8
$ if %X'hex' .ne. 0 then -
$ tsnum['stbit',8]=%X'hex'
$ ptr = ptr + 1
$ if ptr .lt. 16 then -
$ goto decode_loop
$ snum = tsnum
$ return

Thanks to David Dachtera at DJE Systems for providing this tip.

Introduction to DECnet FAL Logging

INTRODUCTION TO FAL LOGGING

The following describes the format and use of the FAL logging options which  are specified via the logical names FAL$LOG and FAL$OUTPUT. These are normally defined in the user's LOGIN.COM file, but they can be placed in a group or system logical name table to affect a larger class of remote file accesses. FAL$LOG conveys logging and control directives to FAL and FAL$OUTPUT is used to specify the name of the log file to create (in place of SYS$OUTPUT).

NOTE:    Use of the logical names FAL$LOG and FAL$OUTPUT by FAL is an  UNSUPPORTED feature intended as a diagnostic, debugging, and performance monitoring tool for use by Digital. The format and function of these logical names may change at any time, or perhaps not be used in the future.

NOTE:    Logging of information other than file name and statistics (parameter bits 0, 1, and 5) can severly reduce data throughput!!!

SYNTAX RULES

The primary function of the logical name FAL$LOG is to request the logging of various types of information about the file operations performed by FAL. This includes identifying each file accessed, displaying the Data Access Protocol (DAP) messages exchanged, computing data throughput statistics, and logging the logical link and mailbox QIO calls and the subsequent delivery of ASTs. Logging operations are requested via the parameter bitmask value. A secondary use of the logical name is to specify qualifiers that control various aspects of FAL's operation such as determining buffer sizes or disabling features.

Currently, the format of the FAL$LOG options string is:

    [parameter][/qualifier-1,...,qualifier-n]

 where each qualifier is of the form keyword=value (e.g., /BPM=20).

The parameter and qualifiers are optional. However, the parameter if present must precede any qualifiers. In addition, only the first three characters of a qualifier keyword are examined to determine a match. Thus,/DISABLE=xx can be addreviated to /DIS=xx. Spaces and tabs are ignored and keywords can be be entered using either uppercase or lowercase characters.

PARAMETER VALUES

The parameter is a hexadecimal bitmask used to specify FAL logging options. If this parameter is non-zero (indicating that FAL logging output will be generated), then an attempt is made to translate the logical name SYS$OUTPUT prior to opening the log file. If FAL$OUTPUT is defined, then its equivalence string is used as the file specification of the log file otherwise logging output is directed to SYS$OUTPUT which normally points to the default network log file named SYS$LOGIN:NETSERVER.LOG. The bitmask definitions for the parameter are as follows:

    bit0 -- enable logging of file name and type of file access requested.
    bit1 -- enable logging of data throughput and other performance statistics.
    bit2 -- enable logging of individual DAP messages as they are processed from the input buffer or assembled in the output buffer
    bit3 -- enable logging of DAP message packet and mailbox AST routine completions.
    bit4 -- enable logging of DAP message packet and mailbox QIO requests.
    bit5 -- enable logging of internal counters.

QUALIFIER VALUES

 The following qualifiers are recognized where 'd' denotes a decimal digit and 'x' denotes a hexadecimal digit:

 /DISABLE=xx (Disable FAL Options) where the bitmask value denotes:

    bit0 -- disable DAP level CRC checksum generation and comparison. (Note that CRC checking will be automatically disabled if the initiating node does not support DAP level CRC computation.)
    bit1 -- disable DAP message blocking in both directions (i.e., transmit each DAP message in a separate QIO system service call).
    bit2 -- disable RMS multi-block caching to/from disk when block I/O file transfer mode is in effect. This restores the pre-VMS V3.4 block I/O processing behavior of FAL where each DAP DATA message resulted in one RMS $READ or $WRITE call to be executed. Note also that selection of this option elimimates one MOVC3 copy of the data in memory at the expense of greatly increasing the number of RMS I/O operations performed during a file transfer.
    bit3 -- disable poor-man's (or manual) routing (i.e., have FAL reject any file specification it receives that contains a node name).
    bits4-7 are undefined.

 /ENABLE=xx (Enable FAL Options) where the bitmask value denotes:
    bits0-7 are undefined.

 /BPM=ddddd (Bytes per Message) this is the maximum number of bytes per DAP message to display (used only if parameter bit2 is set). The default value is 20 bytes per message.

/BPL=dd (Bytes per Line) this is the maximum number of bytes per line to display when dumping a DAP message (used only if parameter bit2 is set). The default value is 20 bytes per line.

/RBK_CACHE=ddd (RMS Multi-block Cache Size) this controls the number of disk blocks per RMS $READ or $WRITE call to transfer when block I/O file transfer mode is selected (if bit2 of the /DISABLE option is set, this option is ignored). The number can be from 1 to 127. The default is 64.

/DBS=ddddd (DAP Buffer Size) requests FAL to send this value in the DAP Configuration message for the <BUFSIZ> field.

/SYSTEM_ID=xxxx (System Identification) requests FAL to send this value in the DAP Configuration message for the <FILESYS><OSTYPE> fields (the OSTYPE field is the low order byte of the value).

/VERSION=xxxxxxxx (DAP Version Number) requests FAL to send this value in the DAP Configuration message for the <DECVER><USRNUM><ECONUM><VERNUM> fields (the VERNUM field is the low order byte of the value).

/SC1=xxxxxxxx (System Capabilities Part 1) requests FAL to send this value in the DAP Configuration message for bits <31-00> of the <SYSCAP> field.

/SC2=xxxxxxxx (System Capabilities Part 2) requests FAL to send this value in the DAP Configuration message for bits <63-32> of the <SYSCAP> field.

Note that any qualifier that cannot be interpreted or that contains an invalid value is ignored and a parse error message is written to the log file.

EXAMPLES

The following DCL commands illustrate how FAL logging options may be setup in one's LOGIN.COM file.

    $ DEFINE FAL$LOG 1

The above command enables the logging of file name and type of access in the default network log file NETSERVER.LOG.

    $ DEFINE FAL$LOG 3
    $ DEFINE FAL$OUTPUT FAL.LOG

This requests the logging of file name, type of acesss, and data throughput statistics in SYS$LOGIN:FAL.LOG.

    $ DEFINE FAL$LOG "3/RBK_CACHE=16/DBS=1056"
    $ DEFINE FAL$OUTPUT work_disk:[testing]statistics.star_to_galaxy

The above definitions are used to gather data throughput statistics in the specified log file while altering buffer sizes.

    $ DEFINE FAL$LOG "7/bpm=80

This definition causes the first 80 bytes of each DAP message to dumped and file identification and statistics to be displayed in the log file.

    $ DEFINE FAL$LOG 7_50

Same as the previous example, except the VMS V3.n parameter format of xx_yyyy is used where yyyy is the number of bytes per DAP message to display expressed as a hexadecimal value.

    $ DEFINE FAL$LOG "/DISABLE=8"

This disables poor-man's routing which prevents users from using FAL as a pass-through object on this node.

    $DEFINE FAL$LOG 2F

This enables all FAL logging options excluding qualifier control options.

Thanks to Ian Miller of DXC Technology for reminding us of this one.


First  Previous  Page 15 of 15  

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.

Cookie Manager

We use cookies to enhance the features of our web site. We don't set optional cookies unless you enable them. Using this tool sets a cookie on your device to remember your preferences. For more detailed information about the cookies we use, see our Cookies page.


Necessary Cookies

Necessary cookies enable core functionality such as security, network management, and accessibility. You may disable these by changing your browser settings, but this may affect how the website functions.


Preference Cookies

Preference cookies enable this site to remember information that changes the way the website behaves or looks.


Statistics Cookies

Statistic cookies help us to understand how visitors interact with the site by collecting and reporting information anonymously.


Marketing Cookies

Marketing cookies are used to track visitors across websites. The intention is to display ads that are relevant and engaging for the individual user and thereby more valuable for publishers and third party advertisers.


Cookies