$ INFOMON022.A٦ INFOMON022.ABACKUP/NOASSIST/NODISMOUNT/COMMENT=OpenVMS AXP SPKITBLD Procedure/INTER/LOG/VERIFY DISK$ANDERSON:[ANDERSON.INFOMON.V22]*.*;0 DISK$ANDERSON:[ANDERSON]INFOMON022.A/LABEL=(INFOMON)/SAVE/BLOCK=9000/GROUP=25OpenVMS AXP SPKITBLD Procedure ANDERSON @7zV7.1 _FUNYET::  _FUNYET$DKB200: V6.2 $0*[ANDERSON.INFOMON.V22]INFOMON022.RELEASE_NOTES;8+, +W. /@ 4N -q0123KPWO 56-^7ʚ74z89G@HJ H ____________________________________________________B InfoServer Monitor for OpenVMS (Alpha and VAX)! Release Notes! December 1996; These release notes describe changes to= InfoServer Monitor V2.1 and V2.2 software; These release notes supersede all other" documentation.1 Operating System and Version:? OpenVMS Alpha, Version 6.1 = OpenVMS VAX, Version 5.5-2 or higher% Software Version:C InfoServer Monitor for OpenVMS, Version V2.21 Digital Equipment Corporation* Maynard, Massachusetts  N ________________________________________________________________ December 1996D Digital Equipment Corporation makes no representationsE that the use of its products in the manner described inF this publication will not infringe on existing or futureF patent rights, nor do the descriptions contained in thisF publication imply the granting of licenses to make, use,B or sell equipment or software in accordance with the description.C Possession, use, or copying of the software describedB in this publication is authorized only pursuant to aA valid written license from Digital or an authorized sublicensor.H Digital Equipment Corporation 1996. All Rights Reserved.? The following are trademarks of Digital EquipmentB Corporation: ALL-IN-1, DEC, DECnet, DECprint, LN03Q,D PATHWORKS, PrintServer, ReGIS, VAX, VAX DOCUMENT, VMS,C OpenVMS, OpenVMS AXP, OpenVMS VAX, Alpha AXP, and the DIGITAL logo.D All other trademarks and registered trademarks are the3 property of their respective holders.  F _________________________________________________________________F Contents? 1 Problems Resolved in InfoServer Monitor V2.2.. 1? 2 New Features in InfoServer Monitor V2.2....... 1? 3 Problems Resolved in InfoServer Monitor V2.1.. 2? 4 New Features in InfoServer Monitor V2.1....... 2< 5 ISO9660 disk restrictions..................... 2  I _________________________________________________________________0 1 Problems Resolved in InfoServer Monitor V2.2G InfoServer Monitor V2.1 will not mount disks when running on OpenVMS V7.1 systems.; This is because OpenVMS now enforces a MOUNT calling@ standard to which previous versions of InfoServer Monitor did not adhere.+ 2 New Features in InfoServer Monitor V2.2< InfoServer Monitor now displays error messages when a disk cannot be mounted.% Common error messages include:+ - %MOUNT-F-MEDOFL, medium is offline= This might indicate a problem with the InfoServer or the CD drive.5 - %MOUNT-F-NOSUCHDEV, no such device available? This indicates the InfoServer service is not available" on your network for some reason.= Error messages are displayed in the InfoServer Monitor; log file (SYS$MANAGER:INFOSERVER_MONITOR.LOG) in the following format:/ 4-NOV-1996 15:00:19 Error mounting _DAD203:, %MOUNT-F-MEDOFL, medium is offline/ 4-NOV-1996 15:00:37 Error mounting _DAD226:, %MOUNT-F-NOSUCHDEV, no such device 1  I _________________________________________________________________7 3 Problems Resolved in InfoServer Monitor V2.1 > Two problems, sometimes seen on fast systems, have been resolved.> - The disk dismount requested by the InfoServer Monitor@ might not complete before the subsequent mount request.? This could cause the system to crash. Timing has been= changed to allow the dismount to complete before the disk is mounted again. = - When restarting the InfoServer Monitor, the deletion8 of the old InfoServer Monitor process might not6 complete before the new one was started. This could/ cause the new process creation to fail with a6 duplicate process name error. The command procedure6 SYS$MANAGER:INFOSERVER_MONITOR_STARTUP.COM now waits2 before starting the new process to allow the old process to be deleted.? The log file now correctly displays the current software version.+ 4 New Features in InfoServer Monitor V2.1: The log file SYS$MANAGER:INFOSERVER_MONITOR.LOG now< displays the InfoServer Monitor's process ID (PID) at the top of the file. 5 ISO9660 disk restrictions@ InfoServer Monitor does not correctly mount ISO9660 disks> on systems running OpenVMS VAX V5.5 and F11CD software.@ This functionality may be included in a future release of InfoServer Monitor.; Since ISO9660 disks are supported in versions of the> OpenVMS operating system starting with OpenVMS VAX V6.0@ and OpenVMS Alpha V6.1, InfoServer Monitor V2.0 correctly> handles ISO9660 disks when running under these versions of OpenVMS. 20*[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR.BAS;130+,Y6.$/@ 4K$#N-q0123KPWO%56%^ʚ7c;z89G@HJ%TITLE "InfoServer Monitor"=%IDENT "V2.2" ! Also change variable SOFTWARE_VERSION belowPROGRAM infoserver_monitor!+ ! FACILITY:! ! InfoServer Monitor! ! PROGRAM DESCRIPTION:! D! The InfoServer Monitor monitors all mounted InfoServer disks andK! dismounts and remounts them if they are offline due to a previous write! access to the disk.! ! AUTHORS:! ! Paul Anderson! "! CREATION DATE: February 19, 1991! ! MODIFICATION HISTORY:! ,! 02/19/91 V1.0 PRA Original version)! 03/02/91 V1.1 PRA Enhancements:%! Dismount disks without unloading! Remove ESS$LADCP commands0! Do not delete logical name DAD$service_name)! 03/07/91 V1.2 PRA Enhancements:+! Checks all DAD devices, mounted or not3! Remounts disks that have changed volume labels)! 05/21/91 V1.3 PRA Enhancements:!! Don't mount writable devices"! Change BYTE variables to LONGD! 04/01/92 V1.3A PRA Change to KITINSTAL.COM to not send mail$! 08/05/92 V1.3B PRA Bug fix:3! Correctly translate INFO_INTERVAL logical nameF! 10/04/94 V2.0 PRA Changes to KITINSTAL.COM for OpenVMS Alpha&! 06/21/95 V2.1 PRA Bug fixes:0! Wait after DISMOUNT to allow it to complete5! Wait after stopping old process to allow new one! Enhancement:#! Display process ID in log file&! 11/03/96 V2.2 PRA Bug fixes:5! Change device length for MOUNT96 in OpenVMS V7.1! Enhancement:.! Display $ INFOMON022.AY6q0[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR.BAS;130K$+" mount and dismount error messages!- OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include" RECORD zero VARIANT CASE basic$quadword context CASE LONG zero_long (2) END VARIANT END RECORD zero+ DIMENSION STRING writable_device (100)6 DECLARE LONG CONSTANT wrong_volume = 74713728 DECLARE STRING CONSTANT software_version = "V2.2"+ DECLARE LONG device_allocated, & device_information, & device_mounted, & i, && number_of_writable_devices, & STRING device_name, & volume_label, & zero z FOR i = 1 TO 2 z::zero_long (i) = 0 NEXT i1 PRINT "InfoServer Monitor "; software_version PRINT CALL print_current_time/ PRINT "started in process "; get_process_id PRINT WHILE 1. CALL initialize (no_more_devices, z::context)< no_more_devices = get_device_name (device_name, z::context)< no_more_devices = get_device_name (device_name, z::context) UNTIL no_more_devices8 device_writable = device_check (device_name, &# writable_device (), &$ number_of_writable_devices) IF NOT device_writable> THEN CALL get_device_mount_status (device_name, & device_allocated, & device_mounted) IF NOT device_allocated THEN IF device_mounted' THEN device_offline = &+ get_device_online_status (device_name) IF device_offline1 THEN mount_status = remount_device & (device_name, & volume_label, & system, & writable_device (), &" number_of_writable_devices)' IF mount_status = wrong_volume' THEN remount_status = & reset_device & (device_name, & volume_label, &# writable_device (), && number_of_writable_devices) END IF END IF2 ELSE remount_status = reset_device & (device_name, & volume_label, &# writable_device (), && number_of_writable_devices) END IF END IF END IF@ no_more_devices = get_device_name (device_name, z::context) NEXT CALL go_to_sleep NEXT END PROGRAM8FUNCTION LONG device_check (STRING device_name, &# writable_device (), &* LONG number_of_writable_devices) OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include" DECLARE LONG i device_writable = false+ FOR i = 1 TO number_of_writable_devices% IF device_name = writable_device (i) THEN device_writable = true END IF NEXT iEND FUNCTION device_writable2FUNCTION LONG dismount_device (STRING device_name) OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include"A %INCLUDE "$dmtdef" %FROM %LIBRARY "sys$library:basic$starlet"A %INCLUDE "$ssdef" %FROM %LIBRARY "sys$library:basic$starlet" DECLARE LONG dismount_flags1 dismount_flags = dmt$m_abort OR &# dmt$m_ovr_checks OR & dmt$m_nounload9 cond_value = sys$dismou (device_name, dismount_flags) IF cond_value <> ss$_normal# THEN CALL print_current_time, PRINT "Error dismounting "; device_name* CALL print_error_message (cond_value) END IF SLEEP 10END FUNCTION cond_value:FUNCTION LONG get_device_name (STRING device_name, &! basic$quadword context) OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include"A %INCLUDE "$ssdef" %FROM %LIBRARY "sys$library:basic$starlet"% DECLARE STRING device_name_search device_name_search = "_DAD*"? cond_value = sys$device_scan (c::device_name_fixed, &! device_name_length, &! device_name_search, & , & context) SELECT cond_value CASE ss$_normal2 device_name = EDIT$ (c::device_name_fixed, 6) no_more_devices = false CASE ss$_nomoredev, & ss$_nosuchdev no_more_devices = true CASE ELSE# CALL stop_program (cond_value) END SELECTEND FUNCTION no_more_devices;FUNCTION LONG get_device_online_status (STRING device_name) OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include" device_offline = false WHEN ERROR IN? OPEN device_name + "[000000]000000.dir" FOR INPUT AS 1, &$ ORGANIZATION VIRTUAL, & ACCESS READ GET #1 USE SELECT ERR( CASE 1 ! bad directory for device device_offline = true" CASE 162 ! Cannot open file device_offline = true" CASE 252 ! file ACP failure device_offline = true END SELECT END WHEN CLOSE 1END FUNCTION device_offline:FUNCTION LONG get_device_write_status (STRING device_name) OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include"* DECLARE LONG file_opened, & STRING file_name> file_name = device_name + "[000000]infoserver_monitor.tmp" device_writable = true file_opened = true WHEN ERROR IN* OPEN file_name FOR OUTPUT AS 1, & ACCESS WRITE GET #1 USE file_opened = false+ IF ERR = 14 ! Device hung or write-locked THEN device_writable = false END IF END WHEN IF file_opened THEN KILL file_name CLOSE 1 END IFEND FUNCTION device_writableFUNCTION STRING get_process_id OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include"E %INCLUDE "$jpidef" %FROM %LIBRARY "sys$library:basic$starlet"D %INCLUDE "$ssdef" %FROM %LIBRARY "sys$library:basic$starlet" DECLARE STRING process_id0 cond_value = lib$getjpi (jpi$_pid, & , & , & , & process_id)END FUNCTION process_id;FUNCTION LONG get_volume_label (STRING device_name, & volume_label) OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include"E %INCLUDE "$dvidef" %FROM %LIBRARY "sys$library:basic$starlet"D %INCLUDE "$ssdef" %FROM %LIBRARY "sys$library:basic$starlet"% DECLARE STRING device_information2 cond_value = lib$getdvi (dvi$_volnam, & , & device_name, & , &# device_information, & ) SELECT cond_value CASE ss$_normal& volume_label = device_information CASE ELSE CALL print_current_time9 PRINT "Error getting volume label for "; device_name* CALL print_error_message (cond_value) END SELECTEND FUNCTION cond_value8FUNCTION LONG mount_device (STRING device_name, & volume_label, &# LONG mount_type, &* STRING writable_device (), &* LONG number_of_writable_devices) OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include"A %INCLUDE "$dmtdef" %FROM %LIBRARY "sys$library:basic$starlet"A %INCLUDE "$mntdef" %FROM %LIBRARY "sys$library:basic$starlet"A %INCLUDE "$ssdef" %FROM %LIBRARY "sys$library:basic$starlet"3 DECLARE item_list item_list_mount (3), & LONG mount_flags, item_list_mount(0)::itmcod = mnt$_devnam; item_list_mount(0)::buflen = LEN (c::device_name_fixed); item_list_mount(0)::bufadr = LOC (c::device_name_fixed)" item_list_mount(0)::lenadr = 0+ item_list_mount(1)::itmcod = mnt$_flags" item_list_mount(1)::buflen = 42 item_list_mount(1)::bufadr = LOC (mount_flags)" item_list_mount(1)::lenadr = 0& c::device_name_fixed = device_name SELECT mount_type CASE process. mount_flags = mnt$m_noassist OR & mnt$m_ovr_ident OR & mnt$m_nomntver OR & mnt$m_nowrite# item_list_mount(2)::trmntr = 0 CASE system- mount_flags = mnt$m_noassist OR & mnt$m_nomntver OR & mnt$m_system OR & mnt$m_nowrite) c::volume_label_fixed = volume_label- item_list_mount(2)::itmcod = mnt$_volnam= item_list_mount(2)::buflen = LEN (c::volume_label_fixed)= item_list_mount(2)::bufadr = LOC (c::volume_label_fixed)# item_list_mount(2)::lenadr = 0# item_list_mount(3)::trmntr = 0 END SELECT0 cond_value = sys$mount (item_list_mount (0)) IF cond_value = ss$_normalC$ INFOMON022.AY6q0[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR.BAS;130K$ THEN device_writable = get_device_write_status (device_name) IF device_writable< THEN dismount_status = dismount_device (device_name)A number_of_writable_devices = number_of_writable_devices + 1@ writable_device (number_of_writable_devices) = device_name END IF# ELSE CALL print_current_time) PRINT "Error mounting "; device_name* CALL print_error_message (cond_value) END IFEND FUNCTION cond_value9FUNCTION LONG remount_device (STRING device_name, & volume_label, &! LONG mount_type, &* STRING writable_device (), &) LONG number_of_writable_devices) OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include"@ %INCLUDE "$ssdef" %FROM %LIBRARY "sys$library:basic$starlet" DECLARE LONG volume_status remount_status = ss$_normal@ volume_status = get_volume_label (device_name, volume_label) SELECT volume_status CASE ss$_normal4 dismount_status = dismount_device (device_name) SELECT dismount_status CASE ss$_normal IF mount_type = system% THEN CALL print_current_time) PRINT TRM$ (volume_label); && " dismounted from "; device_name END IF mount_status = &% mount_device (device_name, & volume_label, & system, &$ writable_device (), &% number_of_writable_devices) SELECT mount_status CASE ss$_normal CALL print_current_time3 PRINT TRM$ (volume_label); " mounted on "; & device_name CASE ELSE$ remount_status = mount_status END SELECT CASE ELSE& remount_status = dismount_status END SELECT CASE ELSE# remount_status = volume_status END SELECTEND FUNCTION remount_status8FUNCTION LONG reset_device (STRING device_name, & volume_label, &# writable_device (), &* LONG number_of_writable_devices) OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include"@ %INCLUDE "$ssdef" %FROM %LIBRARY "sys$library:basic$starlet" DECLARE LONG reset_status reset_status = ss$_normal6 mount_status = mount_device (device_name, & , & process, & writable_device (), & number_of_writable_devices) IF mount_status = ss$_normal@ THEN remount_status = remount_device (device_name, & volume_label, & process, &# writable_device (), &% number_of_writable_devices)$ IF remount_status <> ss$_normal* THEN reset_status = remount_status END IF END IFEND FUNCTION reset_status8SUB get_device_mount_status (STRING device_name, &( LONG device_allocated, & device_mounted) OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include"E %INCLUDE "$devdef" %FROM %LIBRARY "sys$library:basic$starlet"E %INCLUDE "$dvidef" %FROM %LIBRARY "sys$library:basic$starlet"D %INCLUDE "$ssdef" %FROM %LIBRARY "sys$library:basic$starlet"# DECLARE LONG device_information& c::device_name_fixed = device_name3 cond_value = lib$getdvi (dvi$_devchar, & , &% c::device_name_fixed, &# device_information, & , & ) IF cond_value <> ss$_normal* THEN CALL stop_program (cond_value) END IF' IF device_information AND dev$m_all# THEN device_allocated = true$ ELSE device_allocated = false END IF' IF device_information AND dev$m_mnt! THEN device_mounted = true" ELSE device_mounted = false END IFEND SUBSUB go_to_sleep OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include"A %INCLUDE "$lnmdef" %FROM %LIBRARY "sys$library:basic$starlet"A %INCLUDE "$ssdef" %FROM %LIBRARY "sys$library:basic$starlet" RECORD var_logical! STRING logical_name_value = 255 END RECORDA DECLARE LONG CONSTANT logical_name_length = 255, &$ sleep_interval_default = 10C DECLARE STRING CONSTANT logical_name_table = "LNM$SYSTEM_TABLE"7 DECLARE item_list item_list_trnlnm (1), &0 LONG logical_name_value_length, & sleep_interval, && STRING logical_name, & var_logical l" logical_name = "INFO_INTERVAL"5 item_list_trnlnm(0)::buflen = logical_name_length- item_list_trnlnm(0)::itmcod = lnm$_string= item_list_trnlnm(0)::bufadr = LOC (l::logical_name_value)A item_list_trnlnm(0)::lenadr = LOC (logical_name_value_length)# item_list_trnlnm(1)::trmntr = 0) cond_value = sys$trnlnm (, &# logical_name_table, & logical_name, & , & item_list_trnlnm (0)) SELECT cond_value CASE ss$_normal WHEN ERROR IN sleep_interval = &3 INTEGER (EDIT$ (l::logical_name_value, 6), LONG) USE CALL print_current_time- PRINT "Error in time interval of "; &6 TRM$ (logical_name); "; using "; & 1 STR$ (sleep_interval_default); " minutes") sleep_interval = sleep_interval_default END WHEN CASE ss$_nolognam, sleep_interval = sleep_interval_default CASE ELSE# CALL stop_program (cond_value) END SELECT WHEN ERROR IN SLEEP sleep_interval * 60 USE" SLEEP sleep_interval_default * 60 END WHENEND SUB"SUB initialize (LONG n, & basic$quadword k) OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include" RECORD zero_rec VARIANT CASE basic$quadword context CASE LONG zero_long (2) END VARIANT END RECORD zero_rec DECLARE LONG i, & zero_rec z n = false FOR i = 1 TO 2 z::zero_long (i) = 0 NEXT i k = z::contextEND SUBSUB print_current_time OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include" A %INCLUDE "$ssdef" %FROM %LIBRARY "sys$library:basic$starlet"2 DECLARE LONG CONSTANT current_time_length = 20 RECORD var_time * STRING current_time = current_time_length END RECORD DECLARE var_time t9 cond_value = sys$asctim (current_time_length, &R! t::current_time, & , & )2 SELECT cond_value  CASE ss$_normal, & ss$_bufferovfc' PRINT t::current_time; SPACE$ (2);o CASE ELSE# CALL stop_program (cond_value)o END SELECTEND SUBe+SUB print_error_message (LONG error_number)n OPTION TYPE = EXPLICIT) %INCLUDE "infoserver_monitor.include"t! DECLARE STRING error_message/6 CALL lib$sys_getmsg (error_number,, error_message)! PRINT TAB (22); error_messageaEND SUBG"SUB stop_program (LONG cond_value) OPTION TYPE = EXPLICIT) CALL lib$signal (cond_value BY VALUE)C STOPEND SUBFINTERVAL logical nameF! 10/04/94 V2.0 PRA Changes to KITINSTAL.COM for OpenVMS Alpha&! 06/21/95 V2.1 PRA Bug fixes:0! Wait after DISMOUNT to allow it to complete5! Wait after stopping old process to allow new one! Enhancement:#! Display process ID in log file&! 11/03/96 V2.2 PRA Bug fixes:5! Change device length for MOUNT96 in OpenVMS V7.1! Enhancement:.! Display.*[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR.COM;1+,l-;./@ 4%(-q0123KPWO5@6A'y7M@z89G@HJ%$ run sys$manager:infoserver_monitor3*[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR.INCLUDE;52+,D4./@ 4M-q0123KPWO56YI7Kz89G@HJ$ INFOMON022.AD4q3[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR.INCLUDE;52MȎ +%IF %DECLARED(%BASIC$QUADWORD_DECLARED) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL(2) END RECORD$ %LET %BASIC$QUADWORD_DECLARED = 1%END %IFMEXTERNAL LONG FUNCTION device_check (STRING, STRING DIM (), LONG), &( dismount_device (STRING), &6 get_device_name (STRING, basic$quadword), &0 get_device_online_status (STRING), &/ get_device_write_status (STRING), &0 get_volume_label (STRING, STRING), & mount_device &8 (STRING, STRING, LONG, STRING DIM (), LONG), & remount_device &8 (STRING, STRING, LONG, STRING DIM (), LONG), & reset_device &/ (STRING, STRING, STRING DIM (), LONG)*EXTERNAL STRING FUNCTION get_process_id.EXTERNAL LONG FUNCTION lib$getdvi & (LONG BY REF, &" OPTIONAL WORD BY REF, & STRING BY DESC, & LONG BY REF, & STRING BY DESC, & WORD BY REF), & lib$getjpi & (LONG BY REF, &# OPTIONAL LONG BY REF, & STRING BY DESC, & ANY BY REF, & STRING BY DESC, & WORD BY REF), & lib$sys_getmsg & (LONG BY REF, & WORD BY REF, & STRING BY DESC, &# OPTIONAL LONG BY REF, & ANY BY REF), & sys$asctim & (WORD BY REF, & STRING BY DESC, &# basic$quadword BY REF, & BYTE BY VALUE), & sys$device_scan & (STRING BY DESC, & WORD BY REF, & STRING BY DESC, & ANY BY REF, &# basic$quadword BY REF), & sys$dismou & (STRING BY DESC, & LONG BY VALUE), & sys$mount & (ANY BY REF), & sys$trnlnm & (LONG BY REF, & STRING BY DESC, & STRING BY DESC, & BYTE BY REF, & ANY BY REF)+DECLARE LONG CONSTANT false = 0, & process = 0, & system = 1, & true = -1/DECLARE WORD CONSTANT device_name_length = 64RECORD item_list VARIANT CASE WORD buflen WORD itmcod LONG bufadr LONG lenadr CASE LONG trmntr END VARIANT END RECORDRECORD var_common1 STRING device_name_fixed = device_name_length" STRING volume_label_fixed = 12 END RECORD'DECLARE LONG cond_value, & device_offline, & device_writable, & dismount_status, & mount_status, & no_more_devices, & remount_status, & var_common c4*[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR_ALPHA.OBJ;2+,3'.{/@ 4{{-q0123KPWO|56?mʚ7Qz89G@HJNNINFOSERVER_MONITORV2.210-DEC-1996 11:48DEC BASIC V1.2-000 i#$CODE$8$LINK$ $READ_ONLY$ $LITERAL$$ARRAY$DESC8JINFOSERVER_MONITORDBASIC$HANDLER DBASIC$INIT DBASIC$PRINT DBASIC$OUT_T_DX_S DBASIC$OUT_T_DX_B DBASIC$IO_END STR$COPY_DX DBASIC$END0J DEVICE_CHECKDBASIC$HANDLER(DBASIC$CHECK_SIMPLE_ARRAY0JDISMOUNT_DEVICEDBASIC$HANDLER DBASIC$SLEEP0JhGET_DEVICE_NAMEDBASIC$HANDLER DBASIC$EDIT@JGET_DEVICE_ONLINE_STATUSDBASIC$HANDLERDBASIC$HANDLER STR$CONCAT DBASIC$OPEN DBASIC$GET DBASIC$ERR DBASIC$CONTINUE_TARGET DBASIC$CLOSE8J GET_DEVICE_WRITE_STATUSDBASIC$HANDLERDBASIC$HANDLER DBASIC$KILL0J(GET_PROCESS_IDDBASIC$HANDLER8JGET_VOLUME_LABELDBASIC$HANDLER0J  MOUNT_DEVICEDBASIC$HANDLER0JREMOUNT_DEVICEDBASIC$HANDLERSTR$TRIM0Jp RESET_DEVICEDBASIC$HANDLER8JGET_DEVICE_MOUNT_STATUSDBASIC$HANDLER0J GO_TO_SLEEPDBASIC$HANDLERDBASIC$HANDLERDBASIC$HANDLER DBASIC$VAL_L DBASIC$STR_L0Jp INITIALIZEDBASIC$HANDLER8Jh PRINT_CURRENT_TIMEDBASIC$HANDLER STR$DUPL_CHAR8J"PRINT_ERROR_MESSAGEDBASIC$HANDLER DBASIC$TAB0Jp(# STOP_PROGRAMDBASIC$HANDLER DBASIC$STOPOTS$ZEROOTS$JUMP_TO_BPV OTS$MOVEMOTS$FILLOTS$STRCMP_EQLP GO_TO_SLEEP GET_DEVICE_MOUNT_STATUS INITIALIZE PRINT_CURRENT_TIME SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE PRINT_ERROR_MESSAGE PRINT_CURRENT_TIME SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAME DEVICE_CHECK STOP_PROGRAM SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE  GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSDISMOUNT_DEVICE DEVICE_CHECK SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL(GET_DEVICE_ONLINE$ INFOMON022.A3'q4[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR_ALPHA.OBJ;2{" _STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK PRINT_ERROR_MESSAGE PRINT_CURRENT_TIME SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK PRINT_ERROR_MESSAGE PRINT_CURRENT_TIME SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK PRINT_CURRENT_TIME SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_IDREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK STOP_PROGRAM SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK STOP_PROGRAM PRINT_CURRENT_TIME SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI  LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK STOP_PROGRAM SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS(GET_DEVICE_ONLINE_STATUSGET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECK LIB$SIGNAL =#TG~^^~cG[#p;G{"@Zk0B"G8bTG@ZkB$c b@}"4G@ZkPB&" J@Xb"4G@ZkB"b4G@Zk0B8b"GTG@ZkBb"4G@ZkBGbc@Zk0B8b"GTG@ZkB"b4G}@ZkBb"c4G@ZkpBxb"="TG@ZkPBXb"4G@ZkB"b4G@Zk0B8b"GTG@ZkBb"4G@ZkB"b="cTG@Zk@BHb"c="TG@Zk"@B="HbTGc@ZkCD G`B"hb="c]"tG@ZkG/B"b="c]"tG@Zk}G#`Bb"c4G@Zk4G}B"b="c]"}""G@Zkr$ c D G`B"hb="c]"}"G@Zk@BHb"c="TG@ZkC?BbGc@ZkGB"b4Gc@ZkcG]4G]}#kG#?G~^^~޴>^cGGGGy CG} C; ["({TG1"@ZkBG?"b]"tG@ZkƠG]4G-%%'!J8vK(HC BG BN @ C} ]GG`.`J%0B2JGGG8B@Zk8D?" B GD79B=@B"Hb4Gc@ZkcG]}ݤ]=]#k.P JF #?G~^^~cG9 CG= CX;"h[TGp{D1"@ZkGG8BGTG@bc@ZkC8F&BbGc@ZkB" bGTG@Zk&B""@b4G@Zk8B4G@b@ZkB"b4G@ZkBb"c4G@ZkBbTG4G@Zk}"B4Gbc@ZkcG]]G}#k#?G~ ^(^0~8@cG#Y CG=&] C';["{TG1"@ZkGG! @@?B_&I@R"bG"="]TG@ZkG= 8B"c$@ =="]"@bGG@ZkC8FB C]"b="GtG@ZkB="TGb@ZkG è "B"b4Gc@ZkG }B"b4Gc@ZkcG ](]0}8@P#k#?G~^^cG#9 CG= C ;"0[TG8{\1"@ZkC0=04JFc 4G $B ="hb]"UC]`BtG@ZkPB&Xb"="4GtG@ZkB"b4GGGG@ZkcTG "B4GbTG@Zk"PB4GXbc@ZkcG]]#kG #"~TG^^~cG;G[G{1"@ZkcTG B"b4G@ZkGH"WT c _"Cc 0B T@c " c 4b Tc #TGc =B"bTG8"@ZkcG]]}#kG#?G~^^~cG#9 CG= C;["{TG1"@ZkCP=4JFc ?'`9#@B"=]"B=HbtG@Zk 4Gc =0B &8b"="4GtG@ZkB"b4GGGG@ZkcTG }"=4GpBxb @Zk`B"hb4GTG@Zkc }==0B"8b4Gc@ZkcG]]}#kG0#"~TG^^~cGp;[G{G81"@ZkcTG "0B4G8b@ZkG@"WTTGc  B"(bTGH"@ZkcG]]}#k0#?G~^^cG#9 CGa= Cb@;"P[TGX{1"@Zk@B="HbTG@Zk "0BG8bGc$ INFOMON022.A3'q4[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR_ALPHA.OBJ;2{E"G"G@Zk@B="HbTG@ZkpBxb"c4G@ZkcG]]#k #?G~^^~cG#Y C=G#] C$p;"[TG{T1"@ZkGTGGB"]GbGc"GG@ZkC8FpB=" =xbTG@Zk&BGbc@Zk0B8b"GTG@ZkB&"b @"4G@ZkPB4GXb@ZkBb"4G@ZkB"b4Gc@Zk}"B4Gbc@ZkcG]]G}#k`#?G~P^X^`~hpx޴cGGGGGG CG C;["{TG1"@ZkGG!"@@?GG_1 BB?BG?"b]"tG@Zk=&_& vH!v H@2@1H=4?H(B"=BCC]"Gd&$D"(BƠ3v`J2!H@Zk0BG@Zkݲ8D=&eG9v K%(B@#5C0?K3v`JB2!H@"@Zk0BG$@Zk=CݲD@ "@B4GHbc@ZkC8D50B8bGc4G@ZkSBGb4Gc@Zk_WP T%W&_G'G @ @R`"PL'G!!HG%@C} GBbGGTG@Zk%@BGHbc@ZkBb"GTG@Zk`BN@hb$ "4G@ZkBbG4G@ZkpB"xb4G@Zk`Bhb"c4G@Zkݠݰ" B4G(bc@ZkcGX]`}hP]pxݤ#k&"#?G~^^~޴cG#GGGGG CG CP;"`[TGh{p1"@ZkBGb?"]"tG@Zk4G0B8bGcGTG@Zk8Dp @BGHb4Gc@Zk8Dh 8D+BbGc@ZkB"bGTG@ZkB"bGTG@ZkB"b4G@ZkB?$! b@="4G@Zk0BG8b4G@ZkBb"4G@Zk4GBGbGc]"GGG@Zk8D,BGbc@ZkBb"GTG@ZkBb"GTG@ZkBb"4G@ZkBJ@$b ݰ"4G@Zk0BG8b4G@ZkBb"4G@ZkGGB"b4Gc@ZkcG]}]ݤ#k#?G~^^~cGG> C~G C;"[TG{1"@Zk@BGHb?"]"tG@Zk4G0BG]"G8bGc@Zk8D]"BGG=bc@Zk8D4GDGB"b4Gc@ZkcG]]}#k#?G~ ^(^0~8cGG>G^y C} C;"[TG{1"@ZkGG_! @@?"TG#c0B2!J3v`JG@Zk8BG@Zkݲ?'HB@9#cC="PbG]"}"GGG@ZkC8 D 8B@b"c4G@Zk$? D`0ø=_&D"t(B"0b4Gc@ZkcG ]4G(]0}8@#kG#?G~^^cG#GI K (;8["@{TG1"@ZkGC@BC"@Zk0ݲ<89'K!G=c (B_&0B@ R"0b]"="TG@ZkG0b`H0JTGFrS@JG_'Z# 4vJCFC]8E@(B"=="]TG@ZkBbGc="]"G"G@ZkG8F c4G ]"hB&Cpb"ݲ"="GtG@ZkXB"`b4G@ZkGcTG =D" =TGc ="hB4Gpb@ZkctG 4GBb_WH@ T%W&_G@ZkcG XB"`b4G@ZkcG]]4G #kG #"~TG^^~cG;[G{G8 1"@ZkcTG GBb@ZkpBxb"GTG@Zk B&"@(b"4G@ZkPB Xb#"GTG@Zk B(bG4G@Zk BH@$ (b"4G@Zk0B 8bGTGTG@Zk B(bG4G@ZkBO@b"4G@Zk0B"8b4G@ZkTG"`BTGhbp"c@ZkcG]]}#k@#"~TG^^cG0;G@[H{1"@ZkcG X"B4Gb@ZkB"bTG0"c@ZkcG]]#k #?G~ =TL^^cGY C>G] C;"[TG{ 1"@Zk]G}Uu"B4Gbc@ZkcG]]4G#kG#?G~^^~cG#G ;"[TG{\ 1"@ZkG=]"0B"c$]c 8b="}GGG@ZkC8F "@BHb"c4G@Zk#B"bGTG@ZkpBCxb"}4G@ZkPBTGGXb}"=="]"tG@ZkpBxb"4G@ZkB"b4G@Zk0B8b"c4G@ZkcG]]4G}#k0#?G~^^cG#9 CGi= CjP;"`[TGh{ 1"@Zk@BGHb]"ctG@ZkBb"GTG@Zk0B8b"GTG@ZkBb"4G@Zk0B"8b4G@ZkBb"4G@ZkB"b4Gc@ZkcG]4G]#k0#?G~^^cG9 CG"= C#;["{TG| 1"@Zk4G@BcHb@Zk0B8bG@ZkBb"c4G@ZkcG]]4G#k& "&̂"4(GD DBASIC$INIT48b# DBASIC$INIT4@@D DBASIC$INIT4DG| DBASIC$PRINT4Xb# DBASIC$PRINT4x@| DBASIC$PRINT< GDBASIC$OUT_T_DX_S<b#DBASIC$OUT_T_DX_S< @DBASIC$OUT_T_DX_S<GDBASIC$OUT_T_DX_B<b#DBASIC$OUT_T_DX_B<@DBASIC$OUT_T_DX_B4G DBASIC$IO_END4b# DBASIC$IO_END4@ DBASIC$IO_END4G DBASIC$PRINT4b# DBASIC$PRINT4@ DBASIC$PRINT4G DBASIC$IO_END4b# DBASIC$IO_END4 @ DBASIC$IO_END< G$PRINT_CURRENT_TIME< b#PRINT_CURRENT_TIME< @$PRINT_CURRENT_TIME4$G< DBASIC$PRINT4(b# DBASIC$PRINT48@< DBASIC$PRINT< <G\DBASIC$OUT_T_DX_S<Hb#DBASIC$OUT_T_DX_S< X@\DBASIC$OUT_T_DX_S4 \GtGET_PROCESS_ID4 `b#GET_PROCESS_ID4 p@tGET_PROCESS_ID4tG STR$COPY_DX4xb# STR$COPY_DX4@ STR$COPY_DX<GDBASIC$OUT_T_DX_B<b#DBASIC$OUT_T_DX_B<@DBASIC$OUT_T_DX_B4G DBASIC$IO_END4b# DBASIC$IO_END4@ DBASIC$IO_END4G DBASIC$PRINT4b# DBASIC$PRINT4@ DBASIC$PRINT4G DBASIC$IO_END4b# DBASIC$IO_END4@ DBASIC$IO_END4G INITIALIZE4 b# INITIALIZE4@ INITIALIZE4GGET_DEVICE_NAME4b#GET_DEVICE_NAME4@GET_DEVICE_NAME 4 G8GET_DEVICE_NAME4(b#GET_DEVICE_NAME44@8GET_DEVICE_NAME4HGh DEVICE_CHECK4Pb# DEVICE_CHECK4$ INFOMON022.A3'q4[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR_ALPHA.OBJ;2{&"-d@h DEVICE_CHECK<!pGGET_DEVICE_MOUNT_STATUS<"xb#GET_DEVICE_MOUNT_STATUS<!@GET_DEVICE_MOUNT_STATUSDGGET_DEVICE_ONLINE_STATUSDb#GET_DEVICE_ONLINE_STATUSD@GET_DEVICE_ONLINE_STATUS4GREMOUNT_DEVICE4b#REMOUNT_DEVICE4@REMOUNT_DEVICE4G, RESET_DEVICE4b# RESET_DEVICE4(@, RESET_DEVICE4,GHGET_DEVICE_NAME40b#GET_DEVICE_NAME4D@HGET_DEVICE_NAME4TGh GO_TO_SLEEP4Xb# GO_TO_SLEEP4d@h GO_TO_SLEEP4pG DBASIC$END4xb# DBASIC$END4@ DBASIC$END4G0 DBASIC$INIT4 b# DBASIC$INIT4,@0 DBASIC$INITDK0GTDBASIC$CHECK_SIMPLE_ARRAYDL@b#DBASIC$CHECK_SIMPLE_ARRAYDKP@TDBASIC$CHECK_SIMPLE_ARRAY4iGOTS$STRCMP_EQLP4i@OTS$STRCMP_EQLP4 G8 DBASIC$END4(b# DBASIC$END44@8 DBASIC$END4G DBASIC$INIT4b# DBASIC$INIT4@ DBASIC$INIT4gG  SYS$DISMOU4hb# SYS$DISMOU4g@  SYS$DISMOU< G0PRINT_CURRENT_TIME< b#PRINT_CURRENT_TIME< ,@0PRINT_CURRENT_TIME40GH DBASIC$PRINT48b# DBASIC$PRINT4D@H DBASIC$PRINT< PGtDBASIC$OUT_T_DX_S<db#DBASIC$OUT_T_DX_S< p@tDBASIC$OUT_T_DX_S<tGDBASIC$OUT_T_DX_B<b#DBASIC$OUT_T_DX_B<@DBASIC$OUT_T_DX_B4G DBASIC$IO_END4b# DBASIC$IO_END4@ DBASIC$IO_END<UGPRINT_ERROR_MESSAGE<Vb#PRINT_ERROR_MESSAGE<U@PRINT_ERROR_MESSAGE43G DBASIC$SLEEP44b# DBASIC$SLEEP43@ DBASIC$SLEEP4G DBASIC$END4b# DBASIC$END4@ DBASIC$END4XGp DBASIC$INIT4`b#h DBASIC$INIT4l@p DBASIC$INIT4G STR$COPY_DX4b#h STR$COPY_DX4@ STR$COPY_DX 4eGSYS$DEVICE_SCAN4fb#hSYS$DEVICE_SCAN4e@SYS$DEVICE_SCAN4;G@ DBASIC$EDIT4<(b#h DBASIC$EDIT4;<@@ DBASIC$EDIT4@GX STR$COPY_DX4Pb#h STR$COPY_DX4T@X STR$COPY_DX4-pG STOP_PROGRAM4.xb#h STOP_PROGRAM4-@ STOP_PROGRAM4G DBASIC$END4b#h DBASIC$END4@ DBASIC$END4 G4 DBASIC$INIT4( b# DBASIC$INIT40 @4 DBASIC$INIT4\ b# STR$CONCAT4[ G STR$CONCAT4[ @ STR$CONCAT4Y G DBASIC$OPEN4Z b# DBASIC$OPEN4Y @ DBASIC$OPEN4a G DBASIC$GET4b b# DBASIC$GET4a @ DBASIC$GET4] G DBASIC$CLOSE4^ b# DBASIC$CLOSE4] @ DBASIC$CLOSE4( G< DBASIC$END40 b# DBASIC$END48 @< DBASIC$END4 G DBASIC$INIT4 b#( DBASIC$INIT4 @ DBASIC$INIT4c G DBASIC$ERR4d b#( DBASIC$ERR4c @ DBASIC$ERR<AX Gp DBASIC$CONTINUE_TARGET<B` b#(DBASIC$CONTINUE_TARGET<Al @p DBASIC$CONTINUE_TARGET4 G DBASIC$INIT4 b# DBASIC$INIT4 @ DBASIC$INIT4[H Gp STR$CONCAT4\` b# STR$CONCAT4[l @p STR$CONCAT4Y G DBASIC$OPEN4Z b# DBASIC$OPEN4Y @ DBASIC$OPEN4a G DBASIC$GET4b b# DBASIC$GET4a @ DBASIC$GET4_ G DBASIC$KILL4` b# DBASIC$KILL4_ @ DBASIC$KILL4] G DBASIC$CLOSE4^ b# DBASIC$CLOSE4] @ DBASIC$CLOSE4 G0 DBASIC$END4 b# DBASIC$END4, @0 DBASIC$END4 G DBASIC$INIT4 b# DBASIC$INIT4 @ DBASIC$INIT4c G DBASIC$ERR4d b# DBASIC$ERR4c @ DBASIC$ERR<A GDBASIC$CONTINUE_TARGET<B b#DBASIC$CONTINUE_TARGET<A@DBASIC$CONTINUE_TARGET4pG DBASIC$INIT4xb# DBASIC$INIT4@ DBASIC$INIT4G STR$COPY_DX4b# STR$COPY_DX 4@ STR$COPY_DX4WG LIB$GETJPI4Xb# LIB$GETJPI4W@ LIB$GETJPI4G STR$COPY_DX4b# STR$COPY_DX4@ STR$COPY_DX4G DBASIC$END4b# DBASIC$END4@ DBASIC$END4hG| DBASIC$INIT4pb# DBASIC$INIT4x@| DBASIC$INIT4GG LIB$GETDVI4Hb# LIB$GETDVI4G@ LIB$GETDVI4$ INFOMON022.A3'q4[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR_ALPHA.OBJ;2{\">G STR$COPY_DX4b# STR$COPY_DX4@ STR$COPY_DX< GPRINT_CURRENT_TIME< b#PRINT_CURRENT_TIME< @PRINT_CURRENT_TIME4G DBASIC$PRINT4b# DBASIC$PRINT4@ DBASIC$PRINT< G@DBASIC$OUT_T_DX_S<$b#DBASIC$OUT_T_DX_S< <@@DBASIC$OUT_T_DX_S<@GTDBASIC$OUT_T_DX_B<Lb#DBASIC$OUT_T_DX_B<P@TDBASIC$OUT_T_DX_B4TGh DBASIC$IO_END4Xb# DBASIC$IO_END4d@h DBASIC$IO_END<UhGPRINT_ERROR_MESSAGE<Vpb#PRINT_ERROR_MESSAGE<U|@PRINT_ERROR_MESSAGE4G DBASIC$END4b# DBASIC$END4@ DBASIC$END4(G@ DBASIC$INIT40b#  DBASIC$INIT4<@@ DBASIC$INITDKxGDBASIC$CHECK_SIMPLE_ARRAYDLb# DBASIC$CHECK_SIMPLE_ARRAYDK@DBASIC$CHECK_SIMPLE_ARRAY4CG, OTS$MOVEM4C(@, OTS$MOVEM4E,G8OTS$FILL4E4@8OTS$FILL4ChG OTS$MOVEM4C@ OTS$MOVEM4EGOTS$FILL4E@OTS$FILL4SG SYS$MOUNT4Tb#  SYS$MOUNT4S@ SYS$MOUNT<QGGET_DEVICE_WRITE_STATUS<Rb# GET_DEVICE_WRITE_STATUS<Q@GET_DEVICE_WRITE_STATUS4OGDISMOUNT_DEVICE4Pb# DISMOUNT_DEVICE4O@DISMOUNT_DEVICE4G STR$COPY_DX4b#  STR$COPY_DX4@ STR$COPY_DX< GPRINT_CURRENT_TIME< b# PRINT_CURRENT_TIME< @PRINT_CURRENT_TIME4G DBASIC$PRINT4b#  DBASIC$PRINT4@ DBASIC$PRINT< G DBASIC$OUT_T_DX_S<b# DBASIC$OUT_T_DX_S < @ DBASIC$OUT_T_DX_S< G DBASIC$OUT_T_DX_B<b# DBASIC$OUT_T_DX_B<@ DBASIC$OUT_T_DX_B4 G4 DBASIC$IO_END4(b#  DBASIC$IO_END40@4 DBASIC$IO_END<U4GLPRINT_ERROR_MESSAGE<V8b# PRINT_ERROR_MESSAGE<UH@LPRINT_ERROR_MESSAGE4XGl DBASIC$END4`b#  DBASIC$END4h@l DBASIC$END4 G4 DBASIC$INIT4(b# DBASIC$INIT40@4 DBASIC$INITDK4GXDBASIC$CHECK_SIMPLE_ARRAYDL@b#DBASIC$CHECK_SIMPLE_ARRAYDKT@XDBASIC$CHECK_SIMPLE_ARRAY<M\GxGET_VOLUME_LABEL<N`b#GET_VOLUME_LABEL<Mt@xGET_VOLUME_LABEL4OGDISMOUNT_DEVICE4Pb#DISMOUNT_DEVICE4O@DISMOUNT_DEVICE< GPRINT_CURRENT_TIME< b#PRINT_CURRENT_TIME< @PRINT_CURRENT_TIME4G DBASIC$PRINT4b# DBASIC$PRINT4@ DBASIC$PRINT4?GSTR$TRIM4@b#STR$TRIM4?@STR$TRIM< GDBASIC$OUT_T_DX_S<b#DBASIC$OUT_T_DX_S< @DBASIC$OUT_T_DX_S< G0DBASIC$OUT_T_DX_S<b#DBASIC$OUT_T_DX_S< ,@0DBASIC$OUT_T_DX_S<0GDDBASIC$OUT_T_DX_B<8b#DBASIC$OUT_T_DX_B<@@DDBASIC$OUT_T_DX_B4DGX DBASIC$IO_END4Hb# DBASIC$IO_END4T@X DBASIC$IO_END4I`G MOUNT_DEVICE4Jhb# MOUNT_DEVICE4I@ MOUNT_DEVICE< GPRINT_CURRENT_TIME< b#PRINT_CURRENT_TIME< @PRINT_CURRENT_TIME4G DBASIC$PRINT4b# DBASIC$PRINT4@ DBASIC$PRINT4?GSTR$TRIM4@b#STR$TRIM4?@STR$TRIM< GDBASIC$OUT_T_DX_S<b#DBASIC$OUT_T_DX_S< @DBASIC$OUT_T_DX_S< GDBASIC$OUT_T_DX_S<b#DBASIC$OUT_T_DX_S< @DBASIC$OUT_T_DX_S<G$DBASIC$OUT_T_DX_B<b#DBASIC$OUT_T_DX_B< @$DBASIC$OUT_T_DX_B4$G8 DBASIC$IO_END4(b# DBASIC$IO_END44@8 DBASIC$IO_END4HG` DBASIC$END4Pb# DBASIC$END 4\@` DBASIC$END4G DBASIC$INIT4b#p DBASIC$INIT4@ DBASIC$INITDKG(DBASIC$CHECK_SIMPLE_ARRAYDLb#pDBASIC$CHECK_SIMPLE_ARRAYDK$@(DBASIC$CHECK_SIMPLE_ARRAY4I0GX MOUNT_DEVICE4JHb#p MOUNT_DEVICE4IT@X MOUNT_DEVICE4hGREMOUNT_DEVICE4b#pREMOUNT_DEVICE4@REMOUNT_DEVICE4G DBASIC$END4b#p DBASIC$END4@ DBASIC$END40GD DBASIC$INIT48b# DBASIC$INIT4@@D DBASIC$INIT4CxG OTS$MOVEM4C@ OTS$MOVEM4EGOTS$FILL4E@OTS$FILL4GG LIB$GETDVI4Hb# LIB$GETDVI4G@ LIB$GETDVI4- $ INFOMON022.A3'q4[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR_ALPHA.OBJ;2{"OG STOP_PROGRAM4.b# STOP_PROGRAM4-@ STOP_PROGRAM4PGh DBASIC$END4Xb# DBASIC$END4d@h DBASIC$END4G DBASIC$INIT4b# DBASIC$INIT4@ DBASIC$INIT47GOTS$ZERO47@OTS$ZERO4HGt STR$COPY_DX4\b# STR$COPY_DX4p@t STR$COPY_DX4|b# STR$COPY_DX4G STR$COPY_DX4@ STR$COPY_DX41G SYS$TRNLNM42b# SYS$TRNLNM41@ SYS$TRNLNM4;8Gh DBASIC$EDIT4<Db# DBASIC$EDIT4;d@h DBASIC$EDIT49hG| DBASIC$VAL_L4:pb# DBASIC$VAL_L49x@| DBASIC$VAL_L4-G STOP_PROGRAM4.b# STOP_PROGRAM4-@ STOP_PROGRAM43G  DBASIC$SLEEP44b# DBASIC$SLEEP43@  DBASIC$SLEEP4G, DBASIC$END4 b# DBASIC$END4(@, DBASIC$END4G DBASIC$INIT4b#` DBASIC$INIT4@ DBASIC$INIT< GPRINT_CURRENT_TIME< b#`PRINT_CURRENT_TIME< @PRINT_CURRENT_TIME4G DBASIC$PRINT4b#` DBASIC$PRINT4@ DBASIC$PRINT< GDBASIC$OUT_T_DX_S<b#`DBASIC$OUT_T_DX_S< @DBASIC$OUT_T_DX_S4?GSTR$TRIM4@b#`STR$TRIM4?@STR$TRIM < G0DBASIC$OUT_T_DX_S< b#`DBASIC$OUT_T_DX_S< ,@0DBASIC$OUT_T_DX_S< 0GXDBASIC$OUT_T_DX_S<Db#`DBASIC$OUT_T_DX_S< T@XDBASIC$OUT_T_DX_S4=XGt DBASIC$STR_L4>`b#` DBASIC$STR_L4=p@t DBASIC$STR_L< tGDBASIC$OUT_T_DX_S<xb#`DBASIC$OUT_T_DX_S< @DBASIC$OUT_T_DX_S<GDBASIC$OUT_T_DX_B<b#`DBASIC$OUT_T_DX_B<@DBASIC$OUT_T_DX_B4G DBASIC$IO_END4b#` DBASIC$IO_END4@ DBASIC$IO_END<AGDBASIC$CONTINUE_TARGET<Bb#`DBASIC$CONTINUE_TARGET<A@DBASIC$CONTINUE_TARGET48GH DBASIC$INIT4<b# DBASIC$INIT4D@H DBASIC$INIT43XGh DBASIC$SLEEP44`b# DBASIC$SLEEP43d@h DBASIC$SLEEP<AhGDBASIC$CONTINUE_TARGET<Bpb#DBASIC$CONTINUE_TARGET<A@DBASIC$CONTINUE_TARGET4G DBASIC$INIT4b#p DBASIC$INIT4@ DBASIC$INIT40 GD DBASIC$END48 b#p DBASIC$END4@ @D DBASIC$END4 G DBASIC$INIT4 b# DBASIC$INIT4 @ DBASIC$INIT4+ G ! SYS$ASCTIM4, b# SYS$ASCTIM4+!@ ! SYS$ASCTIM4-$!GD$ $= H4: := 4=  = %44=&GET_DEVICE_ONLINE_STATUS4=7/. Dh   D$ $=  4 = ` 4(4=_handler` 4=#  L$ $=  4: := p 4= 8: := @ 4=  = $ 44=%GET_DEVICE_WRITE_STATUS 4=B:9 k 0 0 9 9P$ $=  4 = X 44=_handlerX 4=  3 4D$ $=  4: := 4= : := 4 4=  = (44=GET_PROCESS_ID(4=3+* ? # # #L$ $= \4: := 4=  = 44=GET_VOLUME_LABEL4=VNM * *          @$ $= T4: := 4= q q= 4 4= MOUNT_DEVICE4=  #  ( ( ( ( ( ( !( "( &( '( '( '( -( /( 4( 4( 5( 4( 4( 3( 6( 3( 3( ;(ԐX A( $ $= 4: := p4=  = 44=REMOUNT_DEVICE4=LDC I( / / /T#$ $=  4: := d4=  = 4p4= RESET_DEVICE4=^VU -/ 5 5 5 5 5 5 5DD$ $= 4: := 4= H = $44=%GET_DEVICE_MOUNT_STATUS4=won 6 6 > > > > > > > >@$ $= 4: := x4=  = 44= GO_TO_SLEEP4=~} >/ E E E E E E E E E E8$ $= 4w w= 44=_handler4= F8$ $= 84: := 4= { {= P4`4=_handlerP4= E𼨜D$ $= 4: := 4= : := @4=  = 4p4= INITIALIZE4=0(' Fu Fw F<$ $= 4: := X 4=  = h 44= PRINT_CURRENT_TIMEh 4=SKJ F F LM LM LM LM SM<$ $=  4: := !4=  =  "44=!PRINT_ERROR_MESSAGE"4= YMj8U$ $= <"4: := #4=   = (#4p4= STOP_PROGRAM(#4= M8 M$ $= X#4: := #4=  =  54X"b# DBASIC$INIT4`"@d" DBASIC$INIT4)d"G"LIB$SYS_GETMSG4*p"b#LIB$SYS_GETMSG4)"@"LIB$SYS_GETMSG4"G" DBASIC$PRINT4"b# DBASIC$PRINT4"@" DBASIC$PRINT4'"G" DBASIC$TAB4("b#6*[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR_STARTUP.COM;7+,-(./@ 4:-q0123KPWO56E_|#7|Wz89G@HJ!$! INFOSERVER_MONITOR_STARTUP.COM$! InfoServer Monitor V2.1$!$ on control_y then goto exit$ on warning then goto exit-$ old_privileges = f$setprv ("sysnam,world"))$ if .not. f$privileges ("sysnam,world")"$ then write sys$output -: "InfoServer Monitor requires SYSNAM and WORLD privileges" $ exit$ endif$ write sys$output ""4$ write sys$output "Starting InfoServer Monitor..."$ find_process:$ pid = f$pid (context)&$ if pid .eqs. "" then goto run_image$$ prcnam = f$getjpi (pid, "prcnam")4$ if f$edit (prcnam, "trim") .eqs. "InfoServer Mon"%$ then stop /identification='pid'$ wait 00:00:10$ endif$ goto find_process $ run_image:!$ run sys$system:loginout - /detached -. /input=sys$manager:infoserver_monitor.com -/ /output=sys$manager:infoserver_monitor.log - /privileges=sysnam - /process_name="InfoServer Mon"$ exit:-$ old_privileges = f$setprv (old_privileges)$ exit2*[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR_VAX.OBJ;3+,+l.*/@ 4**-q0123KPWO+56Iwʚ7G^z89G@HJ?INFOSERVER_MONITORV2.211-DEC-1996 14:57 VAX BASIC V3.8-0007INFOSERVER_MONITORINFOSERVER_MONITOR;$PDATA$CODE$ARRAY$DESC INFOSERVER_MONITOR OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8 BAS$PRINT BAS$IO_ENDBAS$OUT_T_DX_SBAS$OUT_T_DX_BSTR$COPY_DX_R8 GO_TO_SLEEPGET_DEVICE_MOUNT_STATUS INITIALIZEPRINT_CURRENT_TIME SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVIGET_PROCESS_ID RESET_DEVICEREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUSWGET_DEVICE_ONLINE_STATUSGET_DEVICE_NAME DISMOUNT_DEVICE DEVICE_CHECKP\X kgkkINFOSERVER_MONITOR(ed'3 started in process InfoServer Monitor V2.2#PPϞRPPQ BAS$INIT_R8ʞ_g\ _XX\J_׫_ BAS$PRINTBAS$OUT_T_DX_SBAS$OUT_T_DX_B BAS$IO_END BAS$PRINT BAS$IO_ENDPRINT_CURRENT_TIME BAS$PRINTBAS$OUT_T_DX_SGET_PROCESS_ID~Q~PSTR$COPY_DX_R8BAS$OUT_T_DX_B BAS$IO_END BAS$PRINT BAS$IO_END㞯S1#g\߫O INITIALIZEg\GET_DEVICE_NAMEP $ INFOMON022.A+lq2[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR_VAX.OBJ;3*V"Og\GET_DEVICE_NAMEPOtիO1߫c# DEVICE_CHECKPGҫG\\1߫[߫WGET_DEVICE_MOUNT_STATUSҫW\\1pի[TGET_DEVICE_ONLINE_STATUSPCիC?߫c#ߩREMOUNT_DEVICEPKѫK r߫c# RESET_DEVICEPS߫c# RESET_DEVICEPSg\GET_DEVICE_NAMEPO1, GO_TO_SLEEP1P BAS$END_R8Pyv 9 DEVICE_CHECKV2.211-DEC-1996 14:57 VAX BASIC V3.8-000+ DEVICE_CHECK DEVICE_CHECK;n$PDATA$CODE$ARRAY$DESC  DEVICE_CHECK OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8 BAS$FETCH_BFA SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI GET_PROCESS_ID RESET_DEVICE REMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS GET_DEVICE_ONLINE_STATUS GET_DEVICE_NAME DISMOUNT_DEVICEtPe\Xeeejjf DEVICE_CHECK PϞRPPQ BAS$INIT_R8Ԟcл_kgkg5ݫg[ BAS$FETCH_BFA~W\-l Џckg׫gЫcoP BAS$END_R8ЫoPj <DISMOUNT_DEVICEV2.211-DEC-1996 14:57 VAX BASIC V3.8-0001DISMOUNT_DEVICEDISMOUNT_DEVICE;$PDATA$CODE$ARRAY$DESC DISMOUNT_DEVICE OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8 BAS$SLEEP BAS$PRINT BAS$IO_ENDBAS$OUT_T_DX_SBAS$OUT_T_DX_BPRINT_ERROR_MESSAGEPRINT_CURRENT_TIME SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI GET_PROCESS_ID RESET_DEVICE REMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS GET_DEVICE_ONLINE_STATUS GET_DEVICE_NAME DEVICE_CHECKPh\Xhhh{DISMOUNT_DEVICE Error dismounting PmPϞRPPQ BAS$INIT_R8%kݫkc SYS$DISMOUPgѫg8PRINT_CURRENT_TIME BAS$PRINTBAS$OUT_T_DX_ScBAS$OUT_T_DX_B BAS$IO_END߫gPRINT_ERROR_MESSAGE  BAS$SLEEPЫgoP BAS$END_R8ЫoP\ <GET_DEVICE_NAMEV2.211-DEC-1996 14:57 VAX BASIC V3.8-0001GET_DEVICE_NAMEGET_DEVICE_NAME;v$PDATA$CODE$ARRAY$DESC GET_DEVICE_NAME OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8BAS$EDIT STR$COPY_R_R8STR$COPY_DX_R8 STOP_PROGRAM SYS$TRNLNM SYS$MOUNT SYS$DISMOUSYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI GET_PROCESS_ID RESET_DEVICE REMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS GET_DEVICE_ONLINE_STATUS DISMOUNT_DEVICE DEVICE_CHECK|Ph\X hhhrrnGET_DEVICE_NAME _DAD*BPϞRPPQ BAS$INIT_R82QmR~P STR$COPY_R_R8ٟ@?#\Џ@SYS$DEVICE_SCANPЫѫ6#\ЯΩBAS$EDIT~Q~PSTR$COPY_DX_R84ѫX  ѫ Џ߫ STOP_PROGRAMЫoP BAS$END_R8ЫoP0- R Q P O EGET_DEVICE_ONLINE_STATUSV2.211-DEC-1996 14:57 VAX BASIC V3.8-000CGET_DEVICE_ONLINE_STATUSGET_DEVICE_ONLINE_STATUS;$PDATA$CODE$ARRAY$DESC% GET_DEVICE_ONLINE_STATUS OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8 STR$CONCATBAS$ERR BAS$RESUMEBAS$OPEN BAS$CLOSEBAS$GET SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI GET_PROCESS_ID RESET_DEVICE REMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS GET_DEVICE_NAME DISMOUNT_DEVICE DEVICE_CHECKPq\XqqqGET_DEVICE_ONLINE_STATUS [000000]000000.dirPv7PϞRPPQ BAS$INIT_R81gBAS$ERRP\\kNk\Q\Џg2Nk\Q\"D ЯgNk\Q\|D ЯʫgS BAS$RESUMEgc STR$CONCAT+^,n+nݏ ݏ7~,^BAS$OPEN7^BAS$GET BAS$CLOSEЫgoP BAS$END_R8ЫoP)&bl bf  DGET_DEVICE_WRITE_STATUSV2.211-DEC-1996 14:57 VAX BASIC V3.8-000AGET_DEVICE_WRITE_STATUSGET_DEVICE_WRITE_STATUS;$PDATA$CODE$ARRAY$DESC$ GET_DEVICE_WRITE_STATUS OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8BAS$KILL STR$CONCATBAS$ERR BAS$RESUMEBAS$OPEN BAS$CLOSEBAS$GET SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI GET_PROCESS_ID RESET_DEVICE REMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_ONLINE_STATUS GET_DEVICE_NAME DISMOUNT_DEVICE DEVICE_CHECKPp\XpppGET_DEVICE_WRITE_STATUS [000000]infoserver_monitor.tmp^PuPϞRPPQ BAS$INIT_R8!kBAS$ERRNP\Q\&g\ BAS$RESUMEc[ STR$CONCATЏgЯk+^,n+nݏݏ7~[,^BAS$OPEN7^BAS$GETիk[BAS$KILL BAS$CLOSEЫgoP BAS$END_R8ЫoP(%p i ;GET_PROCESS_IDV2.211-DEC-1996 14:57 VAX BASIC V3.8-000/GET_PROCESS_IDGET_PROCESS_ID;p$PDATAV$CODE$ARRAY$DESC GET_PROCESS_ID OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8STR$COPY_DX_R8 SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI RESET_DEVICE REMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS GET_DEVICE_ONLINE_STATUS GET_DEVICE_NAME DISMOUNT_DEVICE DEVICE_CHECKvPg\GET_DEVICE_WRITE_STATUSPի)DISMOUNT_DEVICEPN \@\J\ ݻ  BAS$STORE_BFA8PRINT_CURRENT_TIME BAS$PRINTBAS$OUT_T_DX_SBAS$OUT_T_DX_BK BAS$IO_END߫PRINT_ERROR_MESSAGEЫoP BAS$END_R8ЫoP52=  ;REMOUNT_DEVICEV2.211-DEC-1996 14:57 VAX BASIC V3.8-000/REMOUNT_DEVICEREMOUNT_DEVICE;$PDATAr$CODE$ARRAY$DESC REMOUNT_DEVICE OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8STR$TRIM BAS$PRINT BAS$IO_ENDBAS$OUT_T_DX_SBAS$OUT_T_DX_BPRINT_CURRENT_TIME SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI GET_PROCESS_ID RESET_DEVICE MOUNT_DEVICEGET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS GET_DEVICE_ONLINE_STATUS GET_DEVICE_NAMEDISMOUNT_DEVICE DEVICE_CHECKPg\XgggREMOUNT_DEVICE mounted on dismounted from Px lPϞRPPQ BAS$INIT_R8[C?GET_VOLUME_LABELP_Ы_cѫc1 ?DISMOUNT_DEVICEPSЫSgѫg1ѻGEPRINT_CURRENT_TIME BAS$PRINTCSTR$TRIMBAS$OUT_T_DX_SBAS$OUT_T_DX_S?BAS$OUT_T_DX_B BAS$IO_END߻OKߩC? MOUNT_DEVICEPWЫWkѫkLPRINT_CURRENT_TIME BAS$PRINTCSTR$TRIMBAS$OUT_T_DX_SBAS$OUT_T_DX_S?BAS$OUT_T_DX_B BAS$IO_END VƭЫW[ ЫS[ Ы_[Ы[oP BAS$END_R8ЫoPA>h( I/ H/ G/ F/ r9 RESET_DEVICEV2.211-DEC-1996 14:57 VAX BASIC V3.8-000+ RESET_DEVICE RESET_DEVICE;n$PDATA$CODE$ARRAY$DESC  RESET_DEVICE~ OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8 SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI GET_PROCESS_IDREMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS GET_DEVICE_ONLINE_STATUS GET_DEVICE_NAME DISMOUNT_DEVICE DEVICE_CHECKtPe\Xeeejjf RESET_DEVICE PϞRPPQ BAS$INIT_R8㞯k߻_[ߩS MOUNT_DEVICEPcѫc)߻_[ߩWSREMOUNT_DEVICEPgѫgЫgkЫkoP BAS$END_R8ЫoPA>]/ 16 06 /6 .6 76 66 56 46 DGET_DEVICE_MOUNT_STATUSV2.211-DEC-1996 14:57 VAX BASIC V3.8-000AGET_DEVICE_MOUNT_STATUSGET_DEVICE_MOUNT_STATUS;y$PDATA$CODE$ARRAY$DESC$ GET_DEVICE_MOUNT_STATUS OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8 STOP_PROGRAM SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI GET_PROCESS_ID RESET_DEVICE REMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS GET_DEVICE_ONLINE_STATUS GET_DEVICE_NAME DISMOUNT_DEVICE DEVICE_CHECKPp\X pppuuqGET_DEVICE_MOUNT_STATUS PϞRPPQ BAS$INIT_R8Þ'\~X,h @߫#'\Џ@ߩ LIB$GETDVIPѫ ߫ STOP_PROGRAMˏ#\\ Џˏ#\\ЯP BAS$END_R8P52A6 > > > > > 8 GO_TO_SLEEPV2.211-DEC-1996 14:57 VAX BASIC V3.8-000) GO_TO_SLEEP GO_TO_SLEEP;$PDATA$CODE$ARRAY$DESC  GO_TO_SLEEP OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8 BAS$SLEEPSTR$TRIMBAS$EDIT BAS$STR_L BAS$VAL_L BAS$RESUME BAS$PRINT BAS$IO_ENDBAS$OUT_T_DX_SBAS$OUT_T_DX_B STR$COPY_R_R8 STOP_PROGRAMPRINT_CURRENT_TIME SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI GET_PROCESS_ID RESET_DEVICE REMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABELs GET_DEVICE_WRITE_STATUS GET_DEVICE_ONLINE_STATUS GET_DEVICE_NAME DISMOUNT_DEVICE DEVICE_CHECKPd\XDddd GO_TO_SLEEP minutes; using Error in time interval of INFO_INTERVALLNM$SYSTEM_TABLEFv6R PyqiPϞRPPQ BAS$INIT_R81ݏX BAS$SLEEPϋ BAS$RESUMEPRINT_CURRENT_TIME BAS$PRINTBAS$OUT_T_DX_S[STR$TRIMBAS$OUT_T_DX_SBAS$OUT_T_DX_S  BAS$STR_LBAS$OUT_T_DX_SBAS$OUT_T_DX_B BAS$IO_END k BAS$RESUME2 QR~[P STR$COPY_R_R8C\C\C\tXC\gO\JC[2QR~P STR$COPY_R_R8 SYS$TRNLNMPccooO7t\ЏBAS$EDIT BAS$VAL_LPk)o kc STOP_PROGRAMNk\D7\J\\\ BAS$SLEEPP BAS$END_R8PPM>V GF >8 @F ?F >F =F (7 INITIALIZEV2.211-DEC-1996 14:57 VVAX BASIC V3.8-000' INITIALIZE INITIALIZE;l$PDATAg$CODE$ARRAY$DESC  INITIALIZE OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8 SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI GET_PROCESS_ID RESET_DEVICE REMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS GET_DEVICE_ONLINE_STATUS GET_DEVICE_NAME DISMOUNT_DEVICE DEVICE_CHECKPrPc\Xccchhd INITIALIZE PϞRPPQ BAS$INIT_R8[cg\ cXX\Jc׫cg\(_P BAS$END_R8P\Fs g?PRINT_CURRENT_TIMEV2.211-DEC-1996 14:57 VAX BASIC V3.8-0007PRINT_CURRENT_TIMEPRINT_CURRENT_TIME;t$PDATA$CODE$ARRAY$DESC PRINT_CURRENT_TIME OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8 BAS$STRING BAS$PRINT BAS$IO_ENDBAS$OUT_T_DX_S STOP_PROGRAM SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIM LIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI GET_PROCESS_ID RESET_DEVICE REMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS GET_DEVICE_ONLINE_STATUS GET_DEVICE_NAME DISMOUN$ INFOMON022.A+lq2[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR_VAX.OBJ;3*% &T_DEVICE DEVICE_CHECK zPk\X kkkpplPRINT_CURRENT_TIME 'PϞRPPQ BAS$INIT_R8ڞ_\Џ? SYS$ASCTIMPWЫW[ѫ[ ѫ[E BAS$PRINT힫_\ЯBAS$OUT_T_DX_S BAS$STRINGBAS$OUT_T_DX_S BAS$IO_END߫W STOP_PROGRAMP BAS$END_R8P(%F M M M M@PRINT_ERROR_MESSAGEV2.211-DEC-1996 14:57 VAX BASIC V3.8-0009PRINT_ERROR_MESSAGEPRINT_ERROR_MESSAGE;u$PDATAk$CODE$ARRAY$DESC  PRINT_ERROR_MESSAGE OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8BAS$TAB BAS$PRINT BAS$IO_ENDBAS$OUT_T_DX_SBAS$OUT_T_DX_B SYS$TRNLNM SYS$MOUNT SYS$DISMOU SYS$DEVICE_SCAN SYS$ASCTIMLIB$SYS_GETMSG LIB$GETJPI LIB$GETDVI GET_PROCESS_ID RESET_DEVICE REMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS GET_DEVICE_ONLINE_STATUS GET_DEVICE_NAME DISMOUNT_DEVICE DEVICE_CHECK{Pl\XlllqqmPRINT_ERROR_MESSAGE iPϞRPPQ BAS$INIT_R8g߻oLIB$SYS_GETMSG BAS$PRINTBAS$TABBAS$OUT_T_DX_SgBAS$OUT_T_DX_B BAS$IO_ENDP BAS$END_R8P Mh kO9 STOP_PROGRAMV2.211-DEC-1996 14:57 VAX BASIC V3.8-000+ STOP_PROGRAM STOP_PROGRAM2;n$PDATA=$CODE$ARRAY$DESC  STOP_PROGRAM\ OTS$LINKAGE BAS$LINKAGE BAS$INIT_R8 BAS$END_R8BAS$STOP LIB$SIGNALtPe\Xeeejjf STOP_PROGRAM fPϞRPPQ BAS$INIT_R8ݻo LIB$SIGNALBAS$STOPP BAS$END_R8P *N =I LIB$GETDVI GET_PROCESS_ID RESET_DEVICE REMOUNT_DEVICE MOUNT_DEVICE GET_VOLUME_LABEL GET_DEVICE_WRITE_STATUS GET_DEVICE_ONLINE_STATUS DISMOUNT_DEVICE DEVICE_CHECK|Ph\X hhhrrnGET_DEVICE_NAME _DAD*BPϞRPPQ BAS$INIT_R82QmR~&*[ANDERSON.INFOMON.V22]KITINSTAL.COM;62+,. . /@ 4[ -q0123KPWO 56fz7gez89G@HJ$ ! KITINSTAL.COM$ ! $ ! Product: InfoServer Monitor$ ! Version: V2.2$ ! Author : Paul Anderson'$ ! Digital Equipment Corporation$$ ! Marlborough, Massachusetts%$ ! anderson@funyet.mro.dec.com$$ !$ ! set error handlingH$ ! *$ on control_y then vmi$callback control_y#$ on warning then goto error_exit$$ !$ ! check parameter$ !;$ if p1 .nes. "VMI$_INSTALL" then exit vmi$_unsupported$ blocks_needed = 24$$ !5$ ! check hardware type and minimum software version$ !;$ current_vms_version = f$element (1, ",", vmi$vms_version)'$ architecture = f$getsyi ("arch_name")$ if architecture .eqs. "Alpha"%$ then minimum_vms_version = "061"%$ else if architecture .eqs. "VAX"&$ then minimum_vms_version = "052"$ else goto error_hardware$ endif$ endifE$ vmi$callback check_vms_version vms_version_ok 'minimum_vms_version'5$ if .not. vms_version_ok then goto error_vms_version$$ !$ ! set safety$ !7$ vmi$callback set safety conditional 'blocks_needed'$$ !B$ ! verify that enough space exists on the system disk to install$ !A$ vmi$callback check_net_utilization enough_space 'blocks_needed'-$ if .not. enough_space then goto error_space$$ !$ ! begin installation$ !$ write sys$output ""$ vmi$callback set purge ask$$ all_questions_asked:$ type sys$input- All questions necessary for the installation<$ write sys$output " of ", vmi$pretty, " have been answered"$$ !$ ! link images$ !$ write sys$output ""C$ vmi$callback message i link "Linking InfoServer Monitor image..."[$ link /executable=vmi$kwd:infoserver_monitor.exe vmi$kwd:infoserver_monitor_'architecture'$$ !$ ! provide files$ !9$ vmi$callback set startup infoserver_monitor_startup.com[$ vmi$callback provide_image infomon_image infoserver_monitor.exe vmi$root:[sysmgr][$ vmi$callback provide_file infomon_start infoserver_monitor_startup.com vmi$root:[sysmgr][$ vmi$callback provide_file infomon_proce infoserver_monitor.com vmi$root:[sysmgr]$ type sys$input? The following command should be inserted in the system startupC command procedure SYS$MANAGER:SYSTARTUP_VMS.COM or the appropriate! command procedure for your site:) @SYS$MANAGER:INFOSERVER_MONITOR_STARTUP8 Or, you may use SYSMAN to start the InfoServer Monitor: $ RUN SYS$SYSTEM:SYSMAN9 SYSMAN> STARTUP ADD FILE INFOSERVER_MONITOR_STARTUP.COM SYSMAN> EXIT$$ normal_exit:$ !$ ! normal exit$ !$ exit vmi$_success$ !P$ !-----------------------------------------------------------------------------$ ! $ ! error routines$ !$$ error_hardware:7$ message = "InfoServer Monitor not supported on " + -' f$getsyi ("arch_name"), " hardware"3$ vmi$callback message f wronghardware "''message'"$ goto error_exit$$ error_space:#$ disk = f$trnlnm ("sys$sysdevice"),$ freeblocks = f$getdvi (disk, "freeblocks")2$ message1 = "Device " + disk + " has only " + -0 f$string (freeblocks) + " blocks available",$ message2 = f$string (blocks_needed) + -4 " blocks are required to install " + vmi$pretty=$ vmi$callback message f noblocks "''message1'" "''message2'"$ goto error_exit$$ error_vms_version:B$ version_pretty = f$extract (1, 1, minimum_vms_version) + "." + -) f$extract (2, 1, minimum_vms_version)B$ current_pretty = f$extract (1, 1, current_vms_version) + "." + -) f$extract (2, 1, current_vms_version)7$ message = "InfoServer Monitor requires OpenVMS " + -) architecture + " V" + version_pretty"2$ vmi$callback message f wrongversion "''message'"@$ message = "This system is running OpenVMS " + architecture + - " V" + current_pretty1$ vmi$callback message f currversion "''message'"$ goto error_exit$ $ error_exit:$ exit vmi$_failure@,Yq5[ANDERSON.INFOMON.V22]INFOSERVER_MONITOR.^CK*[(@BL 2JWQm-}9'KU Ո-D%2'4Hqw qZvܰfy*<f%ΜH&:'<=>qO~/v=ϩ'-{u#yγ_Qvn {} 07q $:*x}B|]`l1Vv38/E/fܬU pfȠwB˃,M|gDPgaC;6rXD#UIσsvH[BaF}` }V1>94e mq[nkG{:6~&t'ESNR@"qi"<=@(t(fo[E2,p`gߗ'[ #C7WAXՏ m&m@^uJ ğjX&Q/3rnobߴގ5A% AY0$h<\u!Z4(` 5e`r_kͷH\PtD"y*[ItE|\~'GjhY͢(DMg5@'oȒc="SV!F&-ު {>ԱiDL$qAgz]ZZKh~L0aºWiKowr\)w@"QI[jTa o'ҴN2fXْB rǕ;-/e4ied47羴V: QX u f@oiYrOID.L\\*q) V^}QF}whGCN/0@s?&VXVTi܌rzND w\fgl)3:F70NOϰZYm{zGE?;_OF N$pyLi{ߖ>soMˏ%#x!CO8{x]fUe` nTN'ܑ9bк|阧88%f ##R0a+;84/`q4;oH`BAWT0Ih' .K#ƲfJK!#E֚ǽi}viZ(AL:} lAj%2NAίl-qkv% vt{ 6PYRYHoSVSxZ&!Qal4Y+"TLTOԨ$^AL y|}bGPSai$~pzay/3$n.=Tmeh@>@Z,:w}&%C:K5 9;Q%[Ig#1I*d4D4BIQ+;JOV"}k^R%LuMEҢU8\r'7a3!1i5q#)z3iM_fY13)\9 ȹ%Z]3w%dVŻn*3ٳWo=7տʁR՗xoz_{3Na4B®O[@s&jEK+:8x29Kfe@0&AFj3nfښJ`sCoN7_h,oDRLbq %*l!mHoE MmE.%, ȗzg%[rl@Eujn}q*Cmdi3X|ddPҞo"`!!>?Ag*4yL^CiDml}^af/aqҊ :tUQl5;cjV4Z1IH7r_Hʘeڍt"2THǷLcr x1-K.PƗ~G"ƗG^Vh')R{6 vT| 8Pk?kFkj&w8qU~V+3!`鈘& DbHV;Tq;q/ZFsf=,Z;jg/ NOg,!Ǚ.ۙi:v +JQ2.SSZQ$[@RWsz7 ͘nZXQsb9'F z س|\5(W9px|^zg~|doާ78"ogX;T"I+/({OznTAyp'*,N$W?J+yw8[Ȇ m,}k04 ViZ[I5- @jNow>ٵMѮa/+s:T%kUHM1 p,#iYN}&bRL_RR[Hb#tu7:g7KdiW?lC656vAe1yĞ1tTWeTXEQFa$@ R;kB8I -/oZH+xI߿F:^rESekY2z:qeLe U4vر Av'BƄ ^X1aQIτYe=E,J]#=aEYb -:N -?R d}Q@-pN]@'~L8F6c+N$Hf%/qӍgQ'I kVJnvAࠪq]N "v8H>&w=KK`|G,j.SJ`(3@_dB9 uXo\6I(FANMVx~emⱁCYuռw[ZoF|j:Mh4$FU`Ӕ70`9΀4LQeұdZ{_ꄯ>a1fv=ieM g.na*j/Kի>T)mMV8޲%y ٓ8 r=m?%V5`*Ka"/:ʂIժlTэH+l*c약Ѝ) ƒ \˜=L]U)\ؖ%CP*xE"B[I`;.C֑Њ5yC;؃pYx?5mKY6h;wY; {(:`;-u|Egd/˺S6 xK a˶ˈ[J!%o2p @ū!{#4.P"uzVԸR~!_A,4C~l㋎%gs؅TbA$1YF{Ȕ^nxd {öQDy_CΪc5DFX8ձ N~:#]nb&2&r(zp˧R's\ d0F(6d(zZZr\7ྒྷ^ [ o^3_g&{jhM<&"DPT*|fsaBkZ8+8`Y}Nblz}g+(Dd+t~тq&wh,0_"4~Xs8'(Qq~ bX K73b6. 5!W6PEVC?TJD=_8h'Ec*J+d,8)6YZG \>]!>E:h;X m A0*+N7@bzHvÕwY1h*M=M]P +VG5qi)!IutvqMh\ |I3w8Dx=jp6r>W(Sַp`P{.Sl$Ybn]Z)B6"QVxjVZK1 9vd(TumZzp J,&wi Y@'MC x2$iDb0!GOM7P_:`Kgu,㻾!yEUWJF:P陝%|bA>:76+d57ByJad4z6⨒q?=w={l4*Ae$*AW]QUj5 |_e$Gb&o3U0 <+LK7r '}p$L6׍KL!ޑVU)6Ip_xgOqeD#/:|4iG%yԬ>[.btiJ , ɭ32s z}E쎲!1Dds'iQq~E.JTj BairC.?PwoExMWTKk`[L&Ŗö7Ԝ/J3I@^-\ Jˎs{c'%4z> ^{bDA:f$j|o(qn7m(jt-n }^(D)`UV@s.X6E~xcXCŞ^HU/>^`ɁdlO8m6Qaw*QRΣAW2k<@|xqb?/obLK*-qHU?f !tҮ5V.㡔vH')13^?h+1ŤF=y7u/;L8Yڢmq,-cnc6 LR+X..ÀIm6]J |3 ='(y%BDzKkkd_alH_tf񧏈C2 Z'-ߙTl|3Jp"]L \\,{;~ao.cV q R"kL7=QK;` Ӧ\n@] q/J4HO)FtYK٭:"HUMl7;8.OKS42AC5rRmHT,stO4DGKlP ;d zh'<߽ sѽOV\^ϣ >BNwϿ@"'[Wˣ1}XpLiSթKo`~wEBڔkP(wUzgG_(.1ZC;- ,1XD1ug aWwJK{5&!o6w J_c /*Թ``]51{UtA7t/w5cQ'ĪSwf/X*.M&>pI3[,R@9Xز ˌ#`yW'/FmF.~#FL!1Rn"wɗerO}B~/z:PPT+ ׎SHp !t ^Iw]UH*6<`x-X@DURc(Dt^3}OBq/FoJ\Nx𤪲x_У']KҒ,%^bx_,"OCYc);hxG]A DJd Y"T,$)J xd Af*gzE8Zwv%'F\3{ p5MUPzQjd- Bo SJN@^Ԭػ64b_XPMFlve};41^Ǿv.2+w'U8*xJK] \^qOgV,*~֌WM8Ca#x(T 6΂FFET S&DW oh11Dqm"9הXRy'SU> B舙XIFvԂ@0$ݗHa+"n \)0tchŢ b~])EQndΑM@W{ SrPbDnOl{4ZǨ C݃w6ZZ'9 W52lb\1)#wm?unr+\ 8z_)Ն"+#V[n0ILJ6iPǰ$]| eVu dPeN= ,.A% _:0u[J Ff+TX*}Hݨ}+) !+Chk,V_)V6XzOA&iqH]X'}Z~m`8uߌ$VhߡƑiU#Dz-8%Mpt)}jqN[Oi:fltf'!ͺJ2P^٩w^iӆFiVJs|R^ݘKByS$IO_END랖S1#ޫe\׬eOuINITIALIZE\GET_DEVICE_NAMEP