The item codes:
POWER_VECTOR, TEMPERATURE_VECTOR, THERMAL_VECTOR, and FAN_VECTOR
are defined in syidef.h for recent VMS and C versions. However, that
doesn't mean the underlying hardware and supporting cpu routines know how to
serve up this info. Unfortunately, $getsyi will fail if even one of the
item codes you give it is not implemented by the executive, and when
VMS::System tries to give you all system items it's an all-or-nothing
proposition; it only looks to see if the item codes are defined and does not
check to see if the implied operations can be performed on the hardware in
question. For example, on an EV45 system at 7.2-1, I see:
$ perl -e "use VMS::System; print $^E unless
defined(VMS::System::get_all_sys_info_items());"
%SYSTEM-E-NOT_LOADED, system service or exec routine is not loaded
Does anyone know what the specific requirements are on the availability of
these item codes? Is it simply EV6* and later processors? Also, are there
any C macros that reveal the underlying processor? If not, how else could a
C program/perl extension determine this?
Similar issues are apparent in DCL, with older OS's being immune. On an
AlphaServer 2100 (EV5 processor) running OpenVMS Alpha V7.1:
$ write sys$output f$getsyi("thermal_vector")
%DCL-W-IVKEYW, unrecognized keyword - check validity and spelling
\THERMAL_VECTOR\
On an AlphaServer 300 (EV45 processor) running OpenVMS Alpha V7.2-1:
$ write sys$output f$getsyi("thermal_vector")
%SYSTEM-E-NOT_LOADED, system service or exec routine is not loaded
\THERMAL_VECTOR\