OpenVMS Source Code Demos
ENV_CHECK_101.com
$!===========================================================================
$! Program: ENV_CHECK.COM
$!
$! Purpose: Gathers and displays the state of the internal Fans/Temperature/
$! Thermal/Power Supplies of the system. Not all systems are capable of
$! reporting this information so the output will be different for each type.
$! Some systems can't report any.
$!
$! History:
$! Scott Belviso 02/07/03 - Original Creation
$! Neil Rieck 2007-06-26 - added alarm severity prefixes
$!
$! Paramaters:
$! none
$!
$! Run instructions:
$! @env_check
$!
$!===========================================================================
$ error_count = 0 ! init
$ warn_count = 0 ! init
$ say :== write sys$output
$ ask :== inquire/nopunct
$ bel[0,8]==7
$ say "============================================================"
$ say "-i-script: ",f$environment("PROCEDURE")
$ say "============================================================"
$ if f$integer(f$getsyi("HW_MODEL")) .lt. 1200
$ then
$ say "-w-ENV_CHECK.COM is not supported on this platform",bel
$ say "-w-environmental checks will not be performed"
$ ask junk "Hit <enter> to confirm then continue..."
$ exit
$ endif
$ set proc/priv=all
$ thermal_ctr = 0
$ thermal_size = 2
$ thermal_length = 32
$ fan_ctr = 0
$ fan_size = 2
$ fan_length = 32
$ temp_ctr = 0
$ temp_size = 2
$ temp_length = 32
$ power_ctr = 0
$ power_size = 2
$ power_length = 32
$ tv = f$getsyi("thermal_vector")
$ fv = f$getsyi("fan_vector")
$ temp_v = f$getsyi("temperature_vector")
$ pv = f$getsyi("power_vector")
$!
$! Main
$!
$main:
$ gosub thermal_loop
$ gosub fan_loop
$ gosub temp_loop
$ gosub power_loop
$ goto done
$!
$! Thermal subroutine
$!
$thermal_loop:
$ thermal_ctr = thermal_ctr + 1
$ if thermal_ctr * thermal_size .gt. thermal_length then return
$ thermal'thermal_ctr = f$extract(thermal_length - (thermal_size * thermal_ctr),thermal_size,tv)
$ if thermal'thermal_ctr .eqs. "01" then write sys$output "-i-Thermal ''thermal_ctr' is Good"
$ if thermal'thermal_ctr .eqs. "00"
$ then
$ write sys$output "-e-Thermal ''thermal_ctr' is BAD",bel
$ error_count = error_count + 1
$ endif
$! if thermal'thermal_ctr .eqs. "FF" -
$! then write sys$output "Thermal ''thermal_ctr' is Not Present"
$ goto thermal_loop
$!
$! Fan subroutine
$!
$fan_loop:
$ fan_ctr = fan_ctr + 1
$ if fan_ctr * fan_size .gt. fan_length then return
$ fan'fan_ctr = f$extract(fan_length - (fan_size * fan_ctr),fan_size,fv)
$ if fan'fan_ctr .eqs. "01" then write sys$output "-i-FAN ''fan_ctr' is Good"
$ if fan'fan_ctr .eqs. "00"
$ then
$ write sys$output "-e-FAN ''fan_ctr' is BAD",bel
$ error_count = error_count + 1
$ endif
$! if fan'fan_ctr .eqs. "FF" -
$! then write sys$output "FAN ''fan_ctr' is Not Present"
$ goto fan_loop
$!
$! temperature subroutine
$!
$temp_loop:
$ temp_ctr = temp_ctr + 1
$ if temp_ctr * temp_size .gt. temp_length then return
$ temp'temp_ctr = f$extract(temp_length - (temp_size * temp_ctr),temp_size,temp_v)
$ if temp'temp_ctr .nes. "FF" !
$ then !
$ actual_temp = temp'temp_ctr !
$ actual_temp = %x'actual_temp !
$ prefix = "-i-" ! default
$ if actual_temp .ge. 32 then prefix = "-w-" ! > 86 F (losing our A/C ?)
$ if actual_temp .ge. 35 then prefix = "-e-"+bel ! > 95 F (lost our A/C ?)
$ if actual_temp .le. 5 then prefix = "-e-"+bel ! < 41 F (faulty reading?)
$ write sys$output prefix,"Temp ''temp_ctr' is ''actual_temp' Celsius"
$ if prefix .eqs. "-e-" then error_count = error_count + 1
$ if prefix .eqs. "-w-" then warn_count = warn_count + 1
$ endif !
$ goto temp_loop !
$!
$power_loop:
$ power_ctr = power_ctr + 1
$ if power_ctr * power_size .gt. power_length then return
$ power'power_ctr = f$extract(power_length - (power_size * power_ctr),power_size,pv)
$ if power'power_ctr .eqs. "01" then write sys$output "-i-Power Supply ''power_ctr' is Good"
$ if power'power_ctr .eqs. "00" !
$ then !
$ write sys$output "-e-Power Supply ''power_ctr' is BAD",bel
$ error_count = error_count + 1 !
$ endif !
$! if power'power_ctr .eqs. "FF" -
$! then write sys$output "Power Supply ''power_ctr' is Not Present"
$ goto power_loop !
$!
$done:
$ if (error_count .gt. 0) .or. (warn_count .gt. 0)
$ then
$ say "-i-Problem statistics:"
$ if (error_count .gt. 0) then say "-i-total error count: ",error_count
$ if (warn_count .gt. 0) then say "-i-total warn count: ",warn_count
$ ask junk "Hit <enter> to confirm then continue..."
$ endif
$ say "-i-exiting ",f$environment("PROCEDURE")
$ exit !