20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 1 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 Program RmDemo 0002 c 0003 c Author: Mark R. Vevle 0004 c X-Ray Crystallographic Core Facility 0005 c University of Alabama at Birmingham 0006 c SDB 13, 244B LHR 0007 c University Station 0008 c Birmingham, Alabama 35294 0009 c (205) 934 - 2212/2149 0010 c 0011 c Description: RmDemo - A dynamic, user information, display program. 0012 c 0013 c This program is terminal independent, but can use 0014 c special keys on the VT100 and VT200 series terminals. 0015 c Keys can be redefined/added by modifing the 0016 c Process_Input routine. 0017 c 0018 c Function: o To provide detailed information about users on 0019 c the system. 0020 c 0021 c Disclaimer/rights: This software is in the public domain and is 0022 c provided free though DECUS or other channels. The 0023 c information in this software is subject to change 0024 c without notice and should not be construed as a 0025 c commitment by the author or his employer. The author 0026 c and his employer assumes no responsibility for the 0027 c use, the correctness, or the reliability of this 0028 c software. THIS SOFTWARE IS PROVIDED AS IS. 0029 c 0030 c Environment: VAX/VMS V4.0 or later 0031 c 0032 c Privledges Needed: ALTPRI, CMKRNL, and WORLD 0033 c 0034 c ALTPRI - so it can boost it's own priority (not 0035 c required). 0036 c CMKRNL - to get the idle times from the UCB's. 0037 c WORLD - so it can do GETJPI's on all processes. 0038 c 0039 c Note: CMKRNL is required. If this program is run 0040 c without CMKRNL privledge it will bomb out. 0041 c 0042 c *** Note: SINCE THIS FUNCTION IS CURRENTLY BROKEN, 0043 c CMKRNL IS NOT REQUIRED. 0044 c 0045 c Modification History (VMS V4): 0046 c 0047 c Note: Modifications made to RMDEMO under VAX/VMS V3 0048 c can be found at the end of this file. 0049 c 0050 c V2.0 - Major modifications made to correct problems 0051 c caused by VAX/VMS V4. Some (not all) changes 0052 c are listed below. 0053 c 0054 c - Move all common blocks to seperate files and 0055 c INCLUDEd into program. 0056 c 0057 c - Use the NULL process to determine correct 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 2 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0058 c amount of idle time and total amount of idle 0059 c time since the system was booted. I assume 0060 c the first two processes returned by the 0061 c GETJPI are 1) NULL and 2) SWAPPER. 0062 c 0063 c - Comment out code used to get terminal idle 0064 c times. The macro routine is broken. Plans are 0065 c being made to correct the problems. 0066 c 0067 c - Schedule wakeups BEFORE assignning a channel 0068 c to get input. A bug was found when HELP was 0069 c requested before wakeups were scheduled. The 0070 c program would not return from hibernation. 0071 c 0072 c - MRV. May 15, 1985 0073 c RMDEMO 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 3 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0074 Include 'UsrTbl.For' 0080 Data User_Table / 384* 0 / 0081 c 0082 Include 'Hiber.For' 0088 c 0089 Include 'Disply.For' 0093 Data Screen / 128* ' ' / 0094 c 0095 Include 'JpiStr.For' 0102 Include 'JpiVal.For' 0118 Include 'JpiPrm.For' 0129 c 0130 Include 'SyiVal.For' 0135 Include 'SyiPrm.For' 0139 Data GetSyi_Flag / 2 / 0140 c 0141 Include 'CurPri.For' 0145 Data My_Current_Priority / 4 / 0146 Data My_Base_Priority / 4 / 0147 c 0148 Include 'Flags.For' 0161 Data Page_Number / 1 / 0162 Data Page_Index / 1 / 0163 c 0164 Include 'InQio.For' 0172 Data Input_Flag / 3 / 0173 c 0174 integer*4 ctrl_status 0175 c 0176 jbctl_flag = .false. 0177 c 0178 c *** Set up QIO for input. 0179 c 0180 call setup_qio 0181 c 0182 c *** Disable Control_Y 0183 c 0184 ctrl_status = Lib$Disable_Ctrl( '02000000'X ) 0185 if(.not.ctrl_status) then 0186 call errrec(ctrl_status) 0187 STOP '-RMD-F-DISABLEFAIL, disable ctrl_y failed.' 0188 end if 0189 c 0190 c *** Boost my priority by 2 0191 c 0192 Call Modify_Priority_By( 2 ) 0193 c 0194 c *** Schedual wakeups in 3 second intervals to begin with. 0195 c 0196 Sleeping = .True. 0197 Sleep_Time = 3 0198 Call Modify_Sleep 0199 Sleeping = .False. 0200 c 0201 c *** Setup the GETJPI request (a onetime call) 0202 c 0203 Call Setup_Getjpi RMDEMO 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 4 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0204 c 0205 c *** Get System information 0206 c 0207 Call Get_System_Info 0208 c 0209 c *** Go into the display loop 0210 c 0211 User_Flag = .True. 0212 c 0213 Call Display_Loop 0214 c 0215 c *** All Finished 0216 c 0217 Call Modify_Priority_By( -( My_Current_Priority - My_Base_Priority ) ) 0218 c 0219 Ctrl_Status = Lib$Enable_Ctrl( '02100000'X ) 0220 If ( .not. Ctrl_Status ) then 0221 Call ErrRec(ctrl_status) 0222 STOP '-RMD-W-ENABLEFAIL, enable ctrl_y failed.' 0223 End If 0224 End RMDEMO 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 5 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 184 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 94 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 68 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 USRTBL 3072 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 HIBER 2 PIC OVR REL GBL SHR NOEXE RD WRT LONG 5 DISPLY 9472 PIC OVR REL GBL SHR NOEXE RD WRT LONG 6 JPISTR 165 PIC OVR REL GBL SHR NOEXE RD WRT LONG 7 JPIVAL 56 PIC OVR REL GBL SHR NOEXE RD WRT LONG 8 JPIPRM 256 PIC OVR REL GBL SHR NOEXE RD WRT LONG 9 SYIVAL 11 PIC OVR REL GBL SHR NOEXE RD WRT LONG 10 SYIPRM 40 PIC OVR REL GBL SHR NOEXE RD WRT LONG 11 CURPRI 8 PIC OVR REL GBL SHR NOEXE RD WRT LONG 12 FLAGS 10 PIC OVR REL GBL SHR NOEXE RD WRT LONG 13 INQIO 38 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 13476 ENTRY POINTS Address Type Name 0-00000000 RMDEMO VARIABLES Address Type Name Address Type Name 7-00000018 I*4 BASE_PRIORITY 7-00000024 I*4 CPU_TIME 2-00000008 I*4 CTRL_STATUS 7-00000014 I*4 CURRENT_PRIORITY 12-00000000 L*1 DISPLAY_ALL_FLAG 12-00000001 L*1 EXIT_FLAG 7-00000004 I*4 FILE_QUOTA 2-00000004 R*4 FLAGS 7-00000030 I*4 GBL_PAGE_COUNT 8-00000000 I*4 GETJPI_FLAG 10-00000024 I*4 GETSYI_FLAG 12-00000005 L*1 HELP_FLAG 2-00000000 R*4 HIBER 8-000000E8 I*4 IMAGE_LENGTH 6-00000000 CHAR IMAGE_NAME 13-00000000 I*4 INPUT_CODE 13-00000004 I*4 INPUT_FLAG 12-00000007 L*1 JBCTL_FLAG 11-00000004 I*4 MY_BASE_PRIORITY 11-00000000 I*4 MY_CURRENT_PRIORITY 7-00000028 I*4 PAGE_COUNT 7-0000002C I*4 PAGE_FAULTS 12-00000009 L*1 PAGE_INDEX 12-00000008 L*1 PAGE_NUMBER 8-00000004 I*4 PID 12-00000003 L*1 PROCESS_FLAG 7-00000010 I*4 PROCESS_ID 7-00000034 I*4 PROCESS_INDEX 8-000000EC I*4 PROCESS_LENGTH 6-00000080 CHAR PROCESS_NAME 7-0000001C I*4 PROCESS_STATE 7-00000020 I*4 PROCESS_STATUS 12-00000004 L*1 REDRAW_FLAG 7-00000000 I*4 REMAINING_FILE_QUOTA 4-00000001 L*1 SLEEPING 4-00000000 L*1 SLEEP_TIME 9-00000008 CHAR SYSTEM_TYPE 9-00000000 CHAR SYSTEM_VERSION 6-0000008F CHAR TERMINAL 8-000000F0 I*4 TERMINAL_LENGTH 13-00000010 I*2 TT_CHANNEL 8-000000FC I*4 TYPE_VALUE 12-00000006 L*1 UNKNOWN_FLAG 12-00000002 L*1 USER_FLAG 8-000000F4 I*4 USER_LENGTH 6-00000096 CHAR USER_NAME 8-000000F8 I*4 VERSION_LENGTH RMDEMO 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 6 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 ARRAYS Address Type Name Bytes Dimensions 8-00000008 I*4 GETJPI_LIST 216 (54) 10-00000000 I*4 GETSYI_LIST 36 (9) 3-00000A00 I*4 IDLE_TABLE 512 (128) 13-00000012 L*1 INPUT_BUFFER 20 (20) 13-00000008 I*4 INPUT_IOSB 8 (2) 8-000000E0 I*4 IO_STATUS 8 (2) 7-00000008 I*4 LOGIN_TIME 8 (2) 3-00000800 I*4 PID_TABLE 512 (128) 5-00000000 CHAR SCREEN 9472 (128) 3-00000600 I*4 USER_INDEX 512 (128) 3-00000000 I*4 USER_TABLE 1536 (3, 128) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DISPLAY_LOOP ERRREC GET_SYSTEM_INFO I*4 LIB$DISABLE_CTRL I*4 LIB$ENABLE_CTRL MODIFY_PRIORITY_BY MODIFY_SLEEP SETUP_GETJPI SETUP_QIO 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 7 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 Subroutine Setup_Qio 0002 c 0003 Include '($IODef)' 0674 Include 'InQio.For' 0682 c 0683 Integer*4 IAssign_Stat, Sys$Assign, Sys$Qio 0684 Integer*4 Ctrly_Code, Ctrlc_Code, Qio_Stat 0685 c 0686 c *** Declare the AST routine 0687 c 0688 External Rmd_Ctrl_Exit 0689 c 0690 c *** Get a channel to the terminal 0691 c 0692 Iassign_Stat = Sys$Assign( 'TT', tt_channel, , ) 0693 If ( .not. Iassign_Stat ) then 0694 Call ErrRec( IAssign_Stat ) 0695 Stop 'RMD-F-ASSIGNFAIL, failed to assign channel to terminal' 0696 End If 0697 c 0698 c *** Setup the QIO function codes 0699 c 0700 input_code = jior( IO$_Readlblk, jior( IO$M_NoEcho, 0701 1 jior( IO$M_Cvtlow, 0702 1 jior( IO$M_Escape, 0703 1 jior( IO$M_TrmNoEcho, 0704 1 IO$M_NoFiltr ) ) ) ) ) 0705 ctrly_code = jior( IO$_SetMode, IO$M_CtrlyAst ) 0706 ctrlc_code = jior( IO$_SetMode, IO$M_CtrlcAst ) 0707 c 0708 c *** Specify Ast routines for Control_Y and Control_C 0709 c 0710 Qio_Stat = Sys$Qio( , %val( tt_channel ), %val( ctrly_code ), 0711 1 , , , rmd_ctrl_exit, , , , , ) 0712 Qio_Stat = Sys$Qio( , %val( tt_channel ), %val( ctrlc_code ), 0713 1 , , , rmd_ctrl_exit, , , , , ) 0714 c 0715 c *** Issue first (async) read 0716 c 0717 Call Get_Input 0718 c 0719 Return 0720 End SETUP_QIO 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 8 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 104 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 57 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 100 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 INQIO 38 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 299 ENTRY POINTS Address Type Name 0-00000000 SETUP_QIO VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name ** I*4 CTRLC_CODE ** I*4 CTRLY_CODE 2-00000000 I*4 IASSIGN_STAT 3-00000000 I*4 INPUT_CODE 3-00000004 I*4 INPUT_FLAG ** I*4 QIO_STAT 3-00000010 I*2 TT_CHANNEL ARRAYS Address Type Name Bytes Dimensions 3-00000012 L*1 INPUT_BUFFER 20 (20) 3-00000008 I*4 INPUT_IOSB 8 (2) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name Type Name Type Name ERRREC GET_INPUT RMD_CTRL_EXIT I*4 SYS$ASSIGN I*4 SYS$QIO 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 9 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 10 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0002 0003 Subroutine Rmd_Ctrl_Exit 0004 c 0005 Include 'CurPri.For' 0009 c 0010 Character*1 Esc 0011 c 0012 Integer*4 Ctrl_Status, Lib$Enable_Ctrl 0013 c 0014 c *** Restore Cursor 0015 c 0016 Esc = Char( 27 ) 0017 Call Lib$Put_Screen( Esc // '[?25h', 1, 1 ) 0018 Call Lib$Erase_Page( 1, 1 ) 0019 c 0020 Call Modify_Priority_By( -( My_Current_Priority - My_Base_Priority ) ) 0021 c 0022 Ctrl_Status = Lib$Enable_Ctrl( '02100000'X ) 0023 c 0024 If ( .not. Ctrl_Status ) then 0025 Call ErrRec( Ctrl_Status ) 0026 STOP '-RMD-W-ENABLEFAIL, enable ctrl_y failed.' 0027 End If 0028 c 0029 Stop 'Exit' 0030 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 130 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 57 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 84 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 CURPRI 8 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 279 ENTRY POINTS Address Type Name 0-00000000 RMD_CTRL_EXIT VARIABLES Address Type Name Address Type Name 2-00000004 I*4 CTRL_STATUS 2-00000000 CHAR ESC 3-00000004 I*4 MY_BASE_PRIORITY 3-00000000 I*4 MY_CURRENT_PRIORITY RMD_CTRL_EXIT 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 11 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name ERRREC I*4 LIB$ENABLE_CTRL LIB$ERASE_PAGE LIB$PUT_SCREEN MODIFY_PRIORITY_BY 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 12 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 13 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0002 0003 Subroutine Get_Input 0004 c 0005 Include 'InQio.For' 0013 c 0014 Integer*4 Qio_Stat, Sys$Qio 0015 c 0016 c *** Declare AST routine to handle input 0017 c 0018 External Process_Input 0019 c 0020 Qio_Stat = Sys$Qio( %val( input_flag ), %val( tt_channel ), 0021 1 %val( input_code ), input_iosb, 0022 1 process_input, , input_buffer, 0023 1 %val( 20 ), , , , ) 0024 c 0025 Return 0026 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 41 PIC CON REL LCL SHR EXE RD NOWRT LONG 2 $LOCAL 52 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 INQIO 38 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 131 ENTRY POINTS Address Type Name 0-00000000 GET_INPUT VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name 3-00000000 I*4 INPUT_CODE 3-00000004 I*4 INPUT_FLAG ** I*4 QIO_STAT 3-00000010 I*2 TT_CHANNEL ARRAYS Address Type Name Bytes Dimensions 3-00000012 L*1 INPUT_BUFFER 20 (20) 3-00000008 I*4 INPUT_IOSB 8 (2) GET_INPUT 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 14 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name PROCESS_INPUT I*4 SYS$QIO 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 15 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 16 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0002 0003 Subroutine Process_Input 0004 c 0005 Integer*4 input_code, input_flag 0006 Integer*2 tt_channel, Input_Iosb( 4 ) 0007 Logical*1 input_buffer( 20 ) 0008 c 0009 Common /InQio/ input_code, input_flag, input_iosb, 0010 1 tt_channel, input_buffer 0011 c 0012 Include 'Flags.For' 0025 Include 'Hiber.For' 0031 c 0032 Character*20 Command_Line 0033 Character*1 Esc / 27 / 0034 c 0035 Integer*2 Terminator 0036 c 0037 Equivalence( Command_Line, Input_Buffer ) 0038 c 0039 Terminator = Input_Iosb( 3 ) 0040 c 0041 If ( Exit_Flag ) Return 0042 c 0043 If ( ( Terminator .eq. 5 ) .or. ( Terminator .eq. 26 ) ) then 0044 Exit_Flag = .True. 0045 Sleep_Time = 1 0046 Sleeping = .True. 0047 Call Modify_Sleep 0048 Return 0049 Else If ( terminator .eq. 1 ) then 0050 display_all_flag = .not. display_all_flag 0051 Else If ( ( ( terminator .eq. 21 ) .and. 0052 1 ( process_flag ) ) .or. 0053 1 ( terminator .eq. 16 ) ) then 0054 process_flag = .not. process_flag 0055 Else If ( ( terminator .eq. 21 ) .or. 0056 1 ( index( command_line, esc // '[4~' ) .ne. 0 ) ) then 0057 user_flag = .not. user_flag 0058 process_flag = .false. 0059 Else If ( terminator .eq. 23 ) then 0060 redraw_flag = .true. 0061 Else If ( ( terminator .eq. 31 ) .or. 0062 1 ( index( command_line, esc // 'OQ' ) .ne. 0 ) .or. 0063 1 ( index( command_line, esc // '[28~' ) .ne. 0 ) ) then 0064 help_flag = .true. 0065 Else If ( index( command_line, esc // '[A' ) .ne. 0 ) then 0066 call modify_priority_by( 1 ) 0067 Else If ( index( command_line, esc // '[B' ) .ne. 0 ) then 0068 call modify_priority_by( -1 ) 0069 Else If ( index( command_line, esc // '[C' ) .ne. 0 ) then 0070 sleep_time = sleep_time + 1 0071 Call Modify_Sleep 0072 Else If ( index( command_line, esc // '[D' ) .ne. 0 ) then 0073 sleep_time = sleep_time - 1 0074 Call Modify_Sleep 0075 Else If ( index( command_line, esc // '[2~' ) .ne. 0 ) then PROCESS_INPUT 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 17 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0076 display_all_flag = .true. 0077 Else If ( index( command_line, esc // '[3~' ) .ne. 0 ) then 0078 display_all_flag = .false. 0079 Else If ( ( terminator .eq. 14 ) .or. 0080 1 ( index( command_line, esc // '[6~' ) .ne. 0 ) ) then 0081 If ( page_number .lt. 7 ) then 0082 page_number = page_number + 1 0083 page_index = 19 * ( page_number - 1 ) + 1 0084 Else 0085 page_number = 1 0086 page_index = 1 0087 End If 0088 Else If ( ( terminator .eq. 2 ) .or. 0089 1 ( index( command_line, esc // '[5~' ) .ne. 0 ) ) then 0090 If ( page_number .gt. 1 ) then 0091 page_number = page_number - 1 0092 page_index = 19 * ( page_number - 1 ) + 1 0093 Else 0094 page_number = 7 0095 page_index = 115 0096 End If 0097 Else 0098 unknown_flag = .true. 0099 End If 0100 c 0101 call get_input 0102 c 0103 Return 0104 End PROCESS_INPUT 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 18 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 752 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 23 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 76 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 INQIO 38 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 FLAGS 10 PIC OVR REL GBL SHR NOEXE RD WRT LONG 5 HIBER 2 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 901 ENTRY POINTS Address Type Name 0-00000000 PROCESS_INPUT VARIABLES Address Type Name Address Type Name 3-00000012 CHAR COMMAND_LINE 4-00000000 L*1 DISPLAY_ALL_FLAG 2-00000000 CHAR ESC 4-00000001 L*1 EXIT_FLAG 2-00000004 R*4 FLAGS 4-00000005 L*1 HELP_FLAG 2-00000008 R*4 HIBER 3-00000000 I*4 INPUT_CODE 3-00000004 I*4 INPUT_FLAG 4-00000007 L*1 JBCTL_FLAG 4-00000009 L*1 PAGE_INDEX 4-00000008 L*1 PAGE_NUMBER 4-00000003 L*1 PROCESS_FLAG 4-00000004 L*1 REDRAW_FLAG 5-00000001 L*1 SLEEPING 5-00000000 L*1 SLEEP_TIME ** I*2 TERMINATOR 3-00000010 I*2 TT_CHANNEL 4-00000006 L*1 UNKNOWN_FLAG 4-00000002 L*1 USER_FLAG ARRAYS Address Type Name Bytes Dimensions 3-00000012 L*1 INPUT_BUFFER 20 (20) 3-00000008 I*2 INPUT_IOSB 8 (4) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name GET_INPUT I*4 LIB$INDEX MODIFY_PRIORITY_BY MODIFY_SLEEP 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 19 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 20 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0002 0003 Subroutine Modify_Sleep 0004 c 0005 Include 'Hiber.For' 0011 Include 'Flags.For' 0024 c 0025 Integer*4 binary_time( 2 ), Sys$BinTim, Sys$SchdWk 0026 Integer*4 bin_stat, wakeup_stat, Sys$CanWak 0027 c 0028 Character*16 delta_time 0029 Character*2 sleep 0030 c 0031 10 format('0000 00:00:',i2,'.00') 0032 20 format( i2 ) 0033 c 0034 c *** Set up continous wakeups in delta_time intervals 0035 c 0036 If ( sleep_time .gt. 59 ) then 0037 sleep_time = 1 0038 Else If ( sleep_time .lt. 1 ) then 0039 sleep_time = 59 0040 End If 0041 c 0042 Write ( delta_time, 10 ) sleep_time 0043 c 0044 ican_stat = Sys$CanWak( , ) 0045 bin_stat = Sys$BinTim( delta_time, binary_time ) 0046 wakeup_stat = Sys$SchdWk( , , binary_time, binary_time ) 0047 If ( .not. wakeup_stat ) then 0048 call errrec( wakeup_stat ) 0049 stop ' ' 0050 End If 0051 c 0052 If ( ( .not. Exit_Flag ) .and. ( .not. Sleeping ) ) Then 0053 write( sleep, 20 ) sleep_time 0054 Call Lib$Put_Screen( sleep, 3, 18 ) 0055 Call Lib$Set_Cursor ( 23, 1 ) 0056 End If 0057 c 0058 Return 0059 End MODIFY_SLEEP 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 21 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 202 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 41 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 144 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 HIBER 2 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 FLAGS 10 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 399 ENTRY POINTS Address Type Name 0-00000000 MODIFY_SLEEP VARIABLES Address Type Name Address Type Name ** I*4 BIN_STAT 2-00000008 CHAR DELTA_TIME 4-00000000 L*1 DISPLAY_ALL_FLAG 4-00000001 L*1 EXIT_FLAG 2-00000020 R*4 FLAGS 4-00000005 L*1 HELP_FLAG 2-0000001C R*4 HIBER ** I*4 ICAN_STAT 4-00000007 L*1 JBCTL_FLAG 4-00000009 L*1 PAGE_INDEX 4-00000008 L*1 PAGE_NUMBER 4-00000003 L*1 PROCESS_FLAG 4-00000004 L*1 REDRAW_FLAG 2-00000018 CHAR SLEEP 3-00000001 L*1 SLEEPING 3-00000000 L*1 SLEEP_TIME 4-00000006 L*1 UNKNOWN_FLAG 4-00000002 L*1 USER_FLAG 2-00000024 I*4 WAKEUP_STAT ARRAYS Address Type Name Bytes Dimensions 2-00000000 I*4 BINARY_TIME 8 (2) LABELS Address Label Address Label 1-00000011 10' 1-00000026 20' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name ERRREC LIB$PUT_SCREEN LIB$SET_CURSOR I*4 SYS$BINTIM I*4 SYS$CANWAK I*4 SYS$SCHDWK 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 22 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 Subroutine Display_Loop 0002 c 0003 Include 'JpiStr.For' 0010 Include 'JpiVal.For' 0026 Include 'JpiPrm.For' 0037 Include 'Hiber.For' 0043 Include 'Disply.For' 0047 Include 'SyiVal.For' 0052 Include 'Flags.For' 0065 Include 'Base.For' 0069 Include 'UsrTbl.For' 0075 Include 'Idle.For' 0081 c 0082 Character*80 Stat_Line 0083 Character*23 current_date_time 0084 Character*9 day_of_week 0085 Character*5 get_idle 0086 Character*1 esc / 27 /, cr / 13 /, lf / 10 / 0087 Character*1 null / 0 / 0088 c 0089 Integer*4 Lib$Put_Screen, output_status, column 0090 Integer*4 Lib$Set_Scroll, Lib$Erase_Page, Sys$Hiber 0091 Integer*4 total_processes 0092 c 0093 10 Format ( 7x, I2, ' Sec', 3x, 0094 1 6x, I2, 5x, 0095 1 6x, I2, 5x, 0096 1 5x, I3, '%', 4x, 0097 1 2x, I4.2, ':', I2.2, ':', I2.2 ) 0098 c 0099 Do While ( .not. exit_flag ) 0100 c 0101 Call Lib$Date_Time( current_date_time ) 0102 Call get_weekday( day_of_week, 0, len ) 0103 c 0104 column = 49 + len 0105 c 0106 Call Lib$Erase_Page( 1, 1 ) 0107 Call Lib$Put_Screen( esc // '[?25l', 1, 1 ) 0108 Call Lib$Put_Screen( 'VAX 11/' // system_type // 0109 1 ', VMS ' // system_version( : 4 ) // '. ', 1, 1 ) 0110 Call Lib$Put_Screen ( ' RMDemo Version 2.0 ', 1, 24, 3 ) 0111 Call Lib$Put_Screen ( day_of_week( :len ) // ', ' // 0112 1 current_date_time // cr // lf, 1, 47 ) 0113 Call Lib$Put_Screen ( ' Up Time ' // 0114 1 ' Interval ' // 0115 1 ' Proc Cnt ' // 0116 1 ' Page ' // 0117 1 ' % Idle ' // 0118 1 ' Total Idle ' // 0119 1 cr // lf, 2, 1, 2 ) 0120 Call Lib$Put_Screen( 'Process_Name ' // 0121 1 'Image ' // 0122 1 'Term ' // 0123 1 'Prior ' // 0124 1 'State ' // 0125 1 'Log ' // DISPLAY_LOOP 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 23 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0126 1 'Fl ' // 0127 1 'Size ' // 0128 1 'Pg_Flt ' // 0129 1 ' Cpu_Time ' // 0130 1 '%Cpu ' // 0131 1 'Idle' // cr // lf, 4, 1, 2 ) 0132 Call Lib$Set_Scroll( 5, 24 ) 0133 c 0134 redraw_flag = .false. 0135 Stat_Line( 1: 1 ) = ' ' 0136 c 0137 Do While ( ( .not. exit_flag ) .and. ( .not. redraw_flag ) ) 0138 c 0139 call get_users( total_processes, icount ) 0140 c call get_idle_times 0141 call get_up_time( Stat_Line( : 10 ) ) 0142 c 0143 Write ( Stat_Line( 11: ), 10 ) 0144 1 sleep_time, total_processes, 0145 1 Page_Number, Percent_Idle, 0146 1 Idle_Hou, Idle_Min, 0147 1 Idle_Sec 0148 c 0149 Call Lib$Date_Time( current_date_time ) 0150 c 0151 Call Lib$Put_Screen ( current_date_time 0152 1 // cr // lf, 1, column ) 0153 Call Lib$Put_Screen ( Stat_Line // cr // lf, 3, 1 ) 0154 c 0155 j = 5 0156 i = page_index 0157 c 0158 Do While ( ( j .lt. 24 ) .and. ( i .le. icount ) ) 0159 output_status = Lib$Put_Screen( screen( i ) // ' ' // 0160 1 cr // lf, j, 1 ) 0161 c 1 get_idle( screen( i )( 24: 24 ), i ) // 0162 i = i + 1 0163 j = j + 1 0164 End Do 0165 c 0166 output_status = Lib$Erase_Page( j, 1 ) 0167 c 0168 If ( icount .ge. i ) 0169 1 output_status = Lib$Put_Screen( ' More ' // cr, 24, 37, 6 ) 0170 c 0171 if ( help_flag ) then 0172 call help( j ) 0173 help_flag = .false. 0174 unknown_flag = .false. 0175 else if ( unknown_flag ) then 0176 call alert( j ) 0177 unknown_flag = .false. 0178 end if 0179 c 0180 c *** wait for a wakeup call 0181 c 0182 Call Lib$Set_Cursor ( 23, 1 ) DISPLAY_LOOP 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 24 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0183 IRest_Stat = Sys$Hiber() 0184 End Do 0185 End Do 0186 c 0187 c *** restore cursor 0188 c 0189 output_status = Lib$Put_Screen( esc // '[?25h', j, 1 ) 0190 output_status = Lib$Erase_Page( j, 1 ) 0191 c 0192 return 0193 end DISPLAY_LOOP 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 25 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 1046 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 297 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 460 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 JPISTR 165 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 JPIVAL 56 PIC OVR REL GBL SHR NOEXE RD WRT LONG 5 JPIPRM 256 PIC OVR REL GBL SHR NOEXE RD WRT LONG 6 HIBER 2 PIC OVR REL GBL SHR NOEXE RD WRT LONG 7 DISPLY 9472 PIC OVR REL GBL SHR NOEXE RD WRT LONG 8 SYIVAL 11 PIC OVR REL GBL SHR NOEXE RD WRT LONG 9 FLAGS 10 PIC OVR REL GBL SHR NOEXE RD WRT LONG 10 BASE 8 PIC OVR REL GBL SHR NOEXE RD WRT LONG 11 USRTBL 3072 PIC OVR REL GBL SHR NOEXE RD WRT LONG 12 IDLE 16 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 14871 ENTRY POINTS Address Type Name 0-00000000 DISPLAY_LOOP VARIABLES Address Type Name Address Type Name 4-00000018 I*4 BASE_PRIORITY 2-0000007C I*4 COLUMN 4-00000024 I*4 CPU_TIME 2-00000071 CHAR CR 2-00000050 CHAR CURRENT_DATE_TIME 4-00000014 I*4 CURRENT_PRIORITY 2-00000067 CHAR DAY_OF_WEEK 9-00000000 L*1 DISPLAY_ALL_FLAG 2-00000070 CHAR ESC 9-00000001 L*1 EXIT_FLAG 4-00000004 I*4 FILE_QUOTA 2-00000078 R*4 FLAGS 4-00000030 I*4 GBL_PAGE_COUNT 5-00000000 I*4 GETJPI_FLAG ** CHAR GET_IDLE 9-00000005 L*1 HELP_FLAG 2-00000074 R*4 HIBER ** I*4 I 2-00000088 I*4 ICOUNT 12-00000008 I*4 IDLE_HOU 12-00000000 I*4 IDLE_MIN 12-00000004 I*4 IDLE_SEC 5-000000E8 I*4 IMAGE_LENGTH 3-00000000 CHAR IMAGE_NAME ** I*4 IREST_STAT 2-0000008C I*4 J 9-00000007 L*1 JBCTL_FLAG 2-00000084 I*4 LEN 2-00000072 CHAR LF ** CHAR NULL ** I*4 OUTPUT_STATUS 4-00000028 I*4 PAGE_COUNT 4-0000002C I*4 PAGE_FAULTS 9-00000009 L*1 PAGE_INDEX 9-00000008 L*1 PAGE_NUMBER 12-0000000C I*4 PERCENT_IDLE 5-00000004 I*4 PID 9-00000003 L*1 PROCESS_FLAG 4-00000010 I*4 PROCESS_ID 4-00000034 I*4 PROCESS_INDEX 5-000000EC I*4 PROCESS_LENGTH 3-00000080 CHAR PROCESS_NAME 4-0000001C I*4 PROCESS_STATE 4-00000020 I*4 PROCESS_STATUS 9-00000004 L*1 REDRAW_FLAG 4-00000000 I*4 REMAINING_FILE_QUOTA 6-00000001 L*1 SLEEPING 6-00000000 L*1 SLEEP_TIME 2-00000000 CHAR STAT_LINE 8-00000008 CHAR SYSTEM_TYPE DISPLAY_LOOP 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 26 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 8-00000000 CHAR SYSTEM_VERSION 3-0000008F CHAR TERMINAL 5-000000F0 I*4 TERMINAL_LENGTH 2-00000080 I*4 TOTAL_PROCESSES 5-000000FC I*4 TYPE_VALUE 9-00000006 L*1 UNKNOWN_FLAG 9-00000002 L*1 USER_FLAG 5-000000F4 I*4 USER_LENGTH 3-00000096 CHAR USER_NAME 5-000000F8 I*4 VERSION_LENGTH ARRAYS Address Type Name Bytes Dimensions 5-00000008 I*4 GETJPI_LIST 216 (54) 11-00000A00 I*4 IDLE_TABLE 512 (128) 5-000000E0 I*4 IO_STATUS 8 (2) 10-00000000 I*4 JOB_CONTROL_TIME 8 (2) 4-00000008 I*4 LOGIN_TIME 8 (2) 11-00000800 I*4 PID_TABLE 512 (128) 7-00000000 CHAR SCREEN 9472 (128) 11-00000600 I*4 USER_INDEX 512 (128) 11-00000000 I*4 USER_TABLE 1536 (3, 128) LABELS Address Label 1-00000041 10' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name ALERT GET_UP_TIME GET_USERS GET_WEEKDAY HELP LIB$DATE_TIME I*4 LIB$ERASE_PAGE I*4 LIB$PUT_SCREEN LIB$SET_CURSOR LIB$SET_SCROLL I*4 SYS$HIBER 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 27 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 Character*5 Function Get_Idle( terminal, Index ) 0002 0003 c Call a kernel mode routine which makes a table of idle times 0004 c for allocated terminals 0005 0006 Parameter max_units = 128 0007 Integer*4 I_Idle, I_hr, I_min 0008 Integer*4 PID, Index 0009 c 0010 Include 'Usrtbl.For' 0016 c 0017 Character*1 terminal 0018 c 0019 Get_Idle = ' ' 0020 c 0021 c *** The macro routine that gets terminal idle times is broken. 0022 c 0023 c If ( ( terminal .le. 'Q' ) .or. ( terminal .ge. 'U' ) ) Return 0024 c 0025 c PID = user_index( Index ) 0026 c 0027 c Get_Idle = ' ###' 0028 c 0029 c Do ii = 1, max_units 0030 c If ( pid_table( ii ) .eq. 0 ) Return 0031 c Type 50, PID, pid_Table( ii ) 0032 c If ( PID .eq. pid_table( ii ) ) then 0033 c I_Idle = idle_table( ii ) 0034 c Go to 200 0035 c End if 0036 c End do 0037 c 0038 c Get_Idle = ' &&&' 0039 c 0040 Return 0041 c 0042 c200 Continue 0043 c Get_Idle = ' ???' 0044 c If ( I_Idle .le. 0 ) Return 0045 c I_min = I_Idle / 60 0046 c I_hr = I_Min / 60 0047 c I_Min = I_Min - ( 60 * I_hr ) 0048 c Write ( Get_Idle, 1000, Err=300 ) I_hr, I_Min 0049 c If ( I_hr .eq. 0 ) then 0050 c Get_Idle( 1: 3 ) = ' ' 0051 c If ( I_Min .le. 0 ) Get_Idle = ' .' 0052 c Else 0053 c If ( Get_Idle( 4: 4 ) .eq. ' ' ) Get_Idle( 4: 4 ) = '0' 0054 c End if 0055 c300 Return 0056 c 0057 c1000 Format(I2,':',I2) 0058 c 0059 End GET_IDLE 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 28 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 35 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 5 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 16 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 USRTBL 3072 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 3128 ENTRY POINTS Address Type Name 0-00000000 CHAR GET_IDLE VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name AP-0000000C@ I*4 INDEX ** I*4 I_HR ** I*4 I_IDLE ** I*4 I_MIN ** I*4 PID AP-00000008@ CHAR TERMINAL ARRAYS Address Type Name Bytes Dimensions 3-00000A00 I*4 IDLE_TABLE 512 (128) 3-00000800 I*4 PID_TABLE 512 (128) 3-00000600 I*4 USER_INDEX 512 (128) 3-00000000 I*4 USER_TABLE 1536 (3, 128) 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 29 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 Subroutine Get_Idle_Times 0002 c 0003 c *** The Idle macro routine is broken. 0004 c 0005 c Call a kernel mode routine which makes a table of idle times 0006 c and PIDs for allocated terminals 0007 c 0008 c Parameter max_units = 128 0009 c 0010 c Include 'Usrtbl.For' 0011 c 0012 c IStatus = Idle( idle_table, pid_table, max_units ) 0013 c If ( .not. IStatus ) then 0014 c Call errrec( IStatus ) 0015 c stop ' Error in Routine: Get_Idle_Times ' 0016 c End if 0017 Return 0018 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 3 PIC CON REL LCL SHR EXE RD NOWRT LONG Total Space Allocated 3 ENTRY POINTS Address Type Name 0-00000000 GET_IDLE_TIMES 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 30 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 31 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0002 0003 Subroutine get_up_time( up_time ) 0004 c 0005 Include 'Base.For' 0009 c 0010 Character up_time*(*) 0011 c 0012 Integer*4 current_time( 2 ), tim_stat 0013 Integer*4 result( 2 ) 0014 c 0015 Call Sys$GetTim ( current_time ) 0016 Call Lib$Subx ( job_control_time, current_time, result ) 0017 Call Sys$AscTim ( , up_time, result ) 0018 c 0019 Return 0020 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 45 PIC CON REL LCL SHR EXE RD NOWRT LONG 2 $LOCAL 64 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 BASE 8 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 117 ENTRY POINTS Address Type Name 0-00000000 GET_UP_TIME VARIABLES Address Type Name Address Type Name ** I*4 TIM_STAT AP-00000004@ CHAR UP_TIME ARRAYS Address Type Name Bytes Dimensions 2-00000000 I*4 CURRENT_TIME 8 (2) 3-00000000 I*4 JOB_CONTROL_TIME 8 (2) 2-00000008 I*4 RESULT 8 (2) GET_UP_TIME 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 32 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name LIB$SUBX SYS$ASCTIM SYS$GETTIM 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 33 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 34 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0002 0003 Subroutine Help( start ) 0004 c 0005 character*10 sp / ' ' / 0006 character*1 cr / 13 /, lf / 10 / 0007 integer*4 start, out_stat, Sys$Hiber 0008 c 0009 i = start 0010 c 0011 out_stat = Lib$Put_Screen( ' Rmdemo Help ', i + 1, 33, 3 ) 0012 out_stat = Lib$Put_Screen( cr // lf // lf // sp ) 0013 out_stat = Lib$Put_Screen( ' ^A ', , 10, 2 ) 0014 out_stat = Lib$Put_Screen( ' Switch for adding/removing' // 0015 1 ' system processes to the display.' // 0016 1 cr // lf // sp ) 0017 out_stat = Lib$Put_Screen( ' or ', , 10, 2 ) 0018 out_stat = Lib$Put_Screen( ' use Insert and Remove ( VT220 only ).' 0019 1 // cr // lf // sp ) 0020 out_stat = Lib$Put_Screen( ' ^B ', , 10, 2 ) 0021 out_stat = Lib$Put_Screen( ' Previous screen' // 0022 1 cr // lf // sp ) 0023 out_stat = Lib$Put_Screen( ' or ', , 10, 2 ) 0024 out_stat = Lib$Put_Screen( ' use Prev_Screen Key ( VT220 only ).' 0025 1 // cr // lf // sp ) 0026 out_stat = Lib$Put_Screen( ' ^E ', , 10, 2 ) 0027 out_stat = Lib$Put_Screen( ' Exit.' // cr // lf // sp ) 0028 out_stat = Lib$Put_Screen( ' ^N ', , 10, 2 ) 0029 out_stat = Lib$Put_Screen( ' Next Screen' // 0030 1 cr // lf // sp ) 0031 out_stat = Lib$Put_Screen( ' or ', , 10, 2 ) 0032 out_stat = Lib$Put_Screen( ' use Next_Screen Key ( VT220 only ).' 0033 1 // cr // lf // sp ) 0034 out_stat = Lib$Put_Screen( ' ^P ', , 10, 2 ) 0035 out_stat = Lib$Put_Screen( ' Switch for showing/removing PIDs.' 0036 1 // cr // lf // sp ) 0037 out_stat = Lib$Put_Screen( ' ^U ', , 10, 2 ) 0038 out_stat = Lib$Put_Screen( ' Switch from username to process' // 0039 1 ' name and back.' // cr // lf // sp ) 0040 out_stat = Lib$Put_Screen( ' or ', , 10, 2 ) 0041 out_stat = Lib$Put_Screen( ' use the SELECT key ( VT220 only ).' 0042 1 // cr // lf // sp ) 0043 out_stat = Lib$Put_Screen( ' ^W ', , 10, 2 ) 0044 out_stat = Lib$Put_Screen( ' Redraw entire screen.' 0045 1 // cr // lf // sp ) 0046 out_stat = Lib$Put_Screen( ' ^Z ', , 10, 2 ) 0047 out_stat = Lib$Put_Screen( ' Exit.' // cr // lf // sp ) 0048 out_stat = Lib$Put_Screen( ' ^? ', , 10, 2 ) 0049 out_stat = Lib$Put_Screen( ' Help or use a keyboard HELP key (' // 0050 1 ' ie. HELP or PF2 ). ' 0051 1 // cr // lf // lf // sp ) 0052 out_stat = Lib$Put_Screen( ' Up Arrow ', , 10, 2 ) 0053 out_stat = Lib$Put_Screen( ' Increase your base priority. ' 0054 1 // cr // lf // sp ) 0055 out_stat = Lib$Put_Screen( ' Dn Arrow ', , 10, 2 ) 0056 out_stat = Lib$Put_Screen( ' Decrease your base priority. ' 0057 1 // cr // lf // sp ) 0058 out_stat = Lib$Put_Screen( ' Rg Arrow ', , 10, 2 ) HELP 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 35 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0059 out_stat = Lib$Put_Screen( ' Increase time between screen updates.' 0060 1 // cr // lf // sp ) 0061 out_stat = Lib$Put_Screen( ' Lf Arrow ', , 10, 2 ) 0062 out_stat = Lib$Put_Screen( ' Decrease time between screen updates.') 0063 c 0064 out_stat = Sys$Hiber() 0065 out_stat = Sys$Hiber() 0066 c 0067 return 0068 end HELP 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 36 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 1114 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 677 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 532 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 2323 ENTRY POINTS Address Type Name 0-00000000 HELP VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name 2-0000000A CHAR CR ** I*4 I 2-0000000B CHAR LF ** I*4 OUT_STAT 2-00000000 CHAR SP AP-00000004@ I*4 START FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name I*4 LIB$PUT_SCREEN I*4 SYS$HIBER 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 37 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 subroutine alert ( start ) 0002 c 0003 integer*4 start, out_stat, Sys$Hiber 0004 c 0005 i = start 0006 c 0007 out_stat = Lib$Put_Screen( 0008 1 ' -- Type ^? or any keyboard HELP key for Help -- ', 0009 1 i, 15, 6 ) 0010 c 0011 out_stat = Sys$Hiber() 0012 c 0013 Return 0014 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 30 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 58 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 40 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 128 ENTRY POINTS Address Type Name 0-00000000 ALERT VARIABLES Address Type Name Address Type Name Address Type Name 2-00000000 I*4 I ** I*4 OUT_STAT AP-00000004@ I*4 START FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name I*4 LIB$PUT_SCREEN I*4 SYS$HIBER 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 38 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 39 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0002 0003 Subroutine NULL_Process ( Jpi_Status ) 0004 c 0005 Include 'UsrTbl.For' 0011 Include 'Disply.For' 0015 Include 'JpiVal.For' 0031 Include 'JpiPrm.For' 0042 Include 'Idle.For' 0048 c 0049 Integer*4 Jpi_Status, User_Count, Sys$WaitFr 0050 Integer*4 Sys$GetJpi, Total_Processes 0051 c 0052 c *** Wait for the Getjpi request to complete 0053 c 0054 If ( Jpi_Status ) IWait_Stat = Sys$WaitFr( %Val( GetJpi_Flag ) ) 0055 c 0056 c *** Calculate amount of CPU time used 0057 c 0058 Call Cpu_Usage ( 0 ) 0059 c 0060 c *** Calculate the amount of accumulated idle time 0061 c 0062 Idle_Sec = Cpu_Time / 100 0063 Idle_Min = Idle_Sec / 60 0064 Idle_Sec = Idle_Sec - ( 60 * Idle_Min ) 0065 Idle_Hou = Idle_Min / 60.0 0066 Idle_Min = Idle_Min - ( 60 * Idle_Hou ) 0067 c 0068 c *** Get the next process (The SWAPPER process) 0069 c 0070 Jpi_status = Sys$Getjpi( %Val( GetJpi_Flag ), Pid, , 0071 1 GetJpi_List, Io_Status, , ) 0072 0073 Return 0074 End NULL_PROCESS 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 40 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 114 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 4 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 48 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 USRTBL 3072 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 DISPLY 9472 PIC OVR REL GBL SHR NOEXE RD WRT LONG 5 JPIVAL 56 PIC OVR REL GBL SHR NOEXE RD WRT LONG 6 JPIPRM 256 PIC OVR REL GBL SHR NOEXE RD WRT LONG 7 IDLE 16 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 13038 ENTRY POINTS Address Type Name 0-00000000 NULL_PROCESS VARIABLES Address Type Name Address Type Name 5-00000018 I*4 BASE_PRIORITY 5-00000024 I*4 CPU_TIME 5-00000014 I*4 CURRENT_PRIORITY 5-00000004 I*4 FILE_QUOTA 5-00000030 I*4 GBL_PAGE_COUNT 6-00000000 I*4 GETJPI_FLAG 7-00000008 I*4 IDLE_HOU 7-00000000 I*4 IDLE_MIN 7-00000004 I*4 IDLE_SEC 6-000000E8 I*4 IMAGE_LENGTH ** I*4 IWAIT_STAT AP-00000004@ I*4 JPI_STATUS 5-00000028 I*4 PAGE_COUNT 5-0000002C I*4 PAGE_FAULTS 7-0000000C I*4 PERCENT_IDLE 6-00000004 I*4 PID 5-00000010 I*4 PROCESS_ID 5-00000034 I*4 PROCESS_INDEX 6-000000EC I*4 PROCESS_LENGTH 5-0000001C I*4 PROCESS_STATE 5-00000020 I*4 PROCESS_STATUS 5-00000000 I*4 REMAINING_FILE_QUOTA 6-000000F0 I*4 TERMINAL_LENGTH ** I*4 TOTAL_PROCESSES 6-000000FC I*4 TYPE_VALUE ** I*4 USER_COUNT 6-000000F4 I*4 USER_LENGTH 6-000000F8 I*4 VERSION_LENGTH ARRAYS Address Type Name Bytes Dimensions 6-00000008 I*4 GETJPI_LIST 216 (54) 3-00000A00 I*4 IDLE_TABLE 512 (128) 6-000000E0 I*4 IO_STATUS 8 (2) 5-00000008 I*4 LOGIN_TIME 8 (2) 3-00000800 I*4 PID_TABLE 512 (128) 4-00000000 CHAR SCREEN 9472 (128) 3-00000600 I*4 USER_INDEX 512 (128) 3-00000000 I*4 USER_TABLE 1536 (3, 128) NULL_PROCESS 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 41 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name CPU_USAGE I*4 SYS$GETJPI I*4 SYS$WAITFR 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 42 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 43 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0002 Subroutine get_users( total_processes, user_count ) 0003 c 0004 c *** include system return codes 0005 c 0006 include '($ssdef)' 0686 c 0687 Include 'UsrTbl.For' 0693 Include 'Disply.For' 0697 c 0698 Include 'JpiStr.For' 0705 Include 'JpiVal.For' 0721 Include 'JpiPrm.For' 0732 c 0733 Include 'Flags.For' 0746 Include 'Base.For' 0750 c 0751 character*4 idle_time 0752 c 0753 integer*4 jpi_status, user_count, sys$waitfr 0754 integer*4 Sys$Getjpi, total_processes 0755 c 0756 10 format( i3,'%' ) 0757 c 0758 total_processes = 0 0759 pid = -1 0760 user_count = 0 0761 c 0762 c *** Get the first process (the NULL process) 0763 c 0764 jpi_status = Sys$Getjpi( %val( getjpi_flag ), pid, , 0765 1 getjpi_list, io_status, , ) 0766 c 0767 Call NULL_Process ( jpi_status ) 0768 c 0769 do while ( jpi_status .ne. SS$_NoMoreProc ) 0770 c 0771 total_processes = total_processes + 1 0772 user_count = user_count + 1 0773 c 0774 c *** Wait for the Getjpi request to complete 0775 c 0776 if ( jpi_status ) iwait_stat = sys$waitfr( %val( getjpi_flag ) ) 0777 c 0778 c *** Calculate amount of CPU time 0779 c 0780 call cpu_usage( user_count ) 0781 c 0782 If ( Process_Name( : 7 ) .eq. 'SWAPPER' ) Then 0783 User_Name = ' ' 0784 User_Length = 7 0785 End If 0786 If ( .not. jbctl_flag ) then 0787 If ( ( Process_name( 1: 11 ) .eq. 'JOB_CONTROL' ) .and. 0788 1 ( index( image_name, 'JOBCTL' ) .ne. 0 ) ) then 0789 job_control_time( 1 ) = login_time( 1 ) 0790 job_control_time( 2 ) = login_time( 2 ) 0791 jbctl_flag = .true. GET_USERS 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 44 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0792 End If 0793 End If 0794 c 0795 If ( ( .not. display_all_flag ) .and. 0796 1 ( ( ( user_name( 1: 6 ) .eq. 'SYSTEM' ) .and. 0797 1 ( terminal_length .eq. 0 ) .and. 0798 1 ( .not. bjtest( process_status, 14 ) ) ) .or. 0799 c 1 ( user_name( 1: 11 ) .eq. 'JOB_CONTROL' ) .or. 0800 1 ( user_name( 1: 7 ) .eq. ' ' ) .or. 0801 1 ( user_name( 1: 6 ) .eq. 'DECNET' ) ) ) then 0802 user_count = user_count - 1 0803 else 0804 c 0805 c *** Now process the strings 0806 c 0807 call process_strings( user_count ) 0808 c 0809 c *** Now process the numerics 0810 c 0811 call process_numbers( user_count ) 0812 c 0813 end if 0814 c 0815 c *** Get the next process 0816 c 0817 jpi_status = Sys$Getjpi( %val( getjpi_flag ), pid, , 0818 1 getjpi_list, io_status, , ) 0819 c 0820 c *** Keep going 0821 c 0822 End Do 0823 c 0824 Return 0825 End GET_USERS 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 45 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 329 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 48 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 96 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 USRTBL 3072 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 DISPLY 9472 PIC OVR REL GBL SHR NOEXE RD WRT LONG 5 JPISTR 165 PIC OVR REL GBL SHR NOEXE RD WRT LONG 6 JPIVAL 56 PIC OVR REL GBL SHR NOEXE RD WRT LONG 7 JPIPRM 256 PIC OVR REL GBL SHR NOEXE RD WRT LONG 8 FLAGS 10 PIC OVR REL GBL SHR NOEXE RD WRT LONG 9 BASE 8 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 13512 ENTRY POINTS Address Type Name 0-00000000 GET_USERS VARIABLES Address Type Name Address Type Name 6-00000018 I*4 BASE_PRIORITY 6-00000024 I*4 CPU_TIME 6-00000014 I*4 CURRENT_PRIORITY 8-00000000 L*1 DISPLAY_ALL_FLAG 8-00000001 L*1 EXIT_FLAG 6-00000004 I*4 FILE_QUOTA 2-00000000 R*4 FLAGS 6-00000030 I*4 GBL_PAGE_COUNT 7-00000000 I*4 GETJPI_FLAG 8-00000005 L*1 HELP_FLAG ** CHAR IDLE_TIME 7-000000E8 I*4 IMAGE_LENGTH 5-00000000 CHAR IMAGE_NAME ** I*4 IWAIT_STAT 8-00000007 L*1 JBCTL_FLAG 2-00000004 I*4 JPI_STATUS 6-00000028 I*4 PAGE_COUNT 6-0000002C I*4 PAGE_FAULTS 8-00000009 L*1 PAGE_INDEX 8-00000008 L*1 PAGE_NUMBER 7-00000004 I*4 PID 8-00000003 L*1 PROCESS_FLAG 6-00000010 I*4 PROCESS_ID 6-00000034 I*4 PROCESS_INDEX 7-000000EC I*4 PROCESS_LENGTH 5-00000080 CHAR PROCESS_NAME 6-0000001C I*4 PROCESS_STATE 6-00000020 I*4 PROCESS_STATUS 8-00000004 L*1 REDRAW_FLAG 6-00000000 I*4 REMAINING_FILE_QUOTA 5-0000008F CHAR TERMINAL 7-000000F0 I*4 TERMINAL_LENGTH AP-00000004@ I*4 TOTAL_PROCESSES 7-000000FC I*4 TYPE_VALUE 8-00000006 L*1 UNKNOWN_FLAG AP-00000008@ I*4 USER_COUNT 8-00000002 L*1 USER_FLAG 7-000000F4 I*4 USER_LENGTH 5-00000096 CHAR USER_NAME 7-000000F8 I*4 VERSION_LENGTH GET_USERS 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 46 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 ARRAYS Address Type Name Bytes Dimensions 7-00000008 I*4 GETJPI_LIST 216 (54) 3-00000A00 I*4 IDLE_TABLE 512 (128) 7-000000E0 I*4 IO_STATUS 8 (2) 9-00000000 I*4 JOB_CONTROL_TIME 8 (2) 6-00000008 I*4 LOGIN_TIME 8 (2) 3-00000800 I*4 PID_TABLE 512 (128) 4-00000000 CHAR SCREEN 9472 (128) 3-00000600 I*4 USER_INDEX 512 (128) 3-00000000 I*4 USER_TABLE 1536 (3, 128) LABELS Address Label ** 10' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name CPU_USAGE L*4 FOR$BJTEST I*4 LIB$INDEX NULL_PROCESS PROCESS_NUMBERS PROCESS_STRINGS I*4 SYS$GETJPI I*4 SYS$WAITFR 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 47 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 48 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0002 0003 Subroutine Process_numbers( row ) 0004 c 0005 Include 'Disply.For' 0009 c 0010 Include 'JpiPrm.For' 0021 Include 'JpiVal.For' 0037 c 0038 Integer*4 row, cpu_min, cpu_sec, cpu_hou 0039 Integer*4 Swapped_Out 0040 c 0041 c *** Process state table 0042 c 0043 character*5 Find_State( 14 ) 0044 c 0045 data Find_State /'colpg','MWAIT','cef ','pfw ','lef ','LEFO ', 0046 1 'hib ','HIBO ','SUSP ','SUSPO','fpg ','com ', 0047 1 'COMO ','cur ' / 0048 c 0049 10 format( i2, '/', i ) 0050 20 format( i2 ) 0051 30 format( i4 ) 0052 40 format( i6 ) 0053 50 format( i3,':',i2.2,':',i2.2 ) 0054 c 0055 Swapped_Out = .False. 0056 i = row 0057 j = 1 0058 if ( base_priority .gt. 9 ) j = 2 0059 c 0060 Screen( i )( 36: 40 ) = Find_State( process_state ) 0061 c 0062 If ( ( process_state .eq. 2 ) .or. 0063 1 ( process_state .eq. 6 ) .or. 0064 1 ( process_state .eq. 8 ) .or. 0065 1 ( process_state .eq. 10 ) .or. 0066 1 ( process_state .eq. 13 ) ) Then 0067 Swapped_Out = .True. 0068 screen( i )( 42: 44 ) = ' ' 0069 screen( i )( 14: 22 ) = ' ' 0070 screen( i )( 54: 74 ) = ' -- Swapped out -- ' 0071 Else If ( process_state .eq. 9 ) Then 0072 screen( i )( 14: 22 ) = ' ' 0073 screen( i )( 42: 44 ) = ' ' 0074 Else 0075 Call get_weekday( screen( i )( 42: 44 ), login_time, j ) 0076 End If 0077 c 0078 If ( .Not. Swapped_Out ) Then 0079 c 0080 write( screen( i )( 54: 59 ), 40, iostat=ios ) page_faults 0081 screen( i )( 60: 60 ) = ' ' 0082 c 0083 cpu_sec = cpu_time / 100 0084 cpu_min = cpu_sec / 60 0085 cpu_sec = cpu_sec - ( 60 * cpu_min ) 0086 cpu_hou = cpu_min / 60 PROCESS_NUMBERS 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 49 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0087 cpu_min = cpu_min - ( 60 * cpu_hou ) 0088 write( screen( i )( 61: 69 ), 50 ) cpu_hou, cpu_min, cpu_sec 0089 If ( cpu_hou .eq. 0 ) then 0090 screen( i )( 61: 64 ) = ' ' 0091 If ( cpu_min .lt. 10 ) screen( i )( 65: 65 ) = ' ' 0092 End if 0093 End If 0094 c 0095 Write( screen( i )( 30: 34 ), 10 ) current_priority, base_priority 0096 Write( screen( i )( 46: 47 ), 20 ) ( file_quota - 0097 1 remaining_file_quota ) 0098 Write( screen( i )( 49: 52 ), 30 ) page_count + Gbl_Page_Count 0099 c 0100 c *** Process status flags 0101 c 0102 if ( bjtest( process_status, 20 ) ) then 0103 screen( i )( 24: 28 ) = 'NoAth' 0104 else if ( bjtest( process_status, 15 ) ) then 0105 screen( i )( 24: 28 ) = 'NoAcnt' 0106 else if ( terminal_length .eq. 0 ) then 0107 if ( bjtest( process_status, 14 ) ) then 0108 screen( i )( 24: 28 ) = 'Batch' 0109 else if ( bjtest( process_status, 4 ) ) then 0110 screen( i )( 24: 28 ) = 'NoSwp' 0111 end if 0112 end if 0113 c 0114 return 0115 end PROCESS_NUMBERS 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 50 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 588 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 110 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 188 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 DISPLY 9472 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 JPIPRM 256 PIC OVR REL GBL SHR NOEXE RD WRT LONG 5 JPIVAL 56 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 10670 ENTRY POINTS Address Type Name 0-00000000 PROCESS_NUMBERS VARIABLES Address Type Name Address Type Name 5-00000018 I*4 BASE_PRIORITY ** I*4 CPU_HOU ** I*4 CPU_MIN ** I*4 CPU_SEC 5-00000024 I*4 CPU_TIME 5-00000014 I*4 CURRENT_PRIORITY 5-00000004 I*4 FILE_QUOTA 5-00000030 I*4 GBL_PAGE_COUNT 4-00000000 I*4 GETJPI_FLAG ** I*4 I 4-000000E8 I*4 IMAGE_LENGTH ** I*4 IOS 2-00000048 I*4 J 5-00000028 I*4 PAGE_COUNT 5-0000002C I*4 PAGE_FAULTS 4-00000004 I*4 PID 5-00000010 I*4 PROCESS_ID 5-00000034 I*4 PROCESS_INDEX 4-000000EC I*4 PROCESS_LENGTH 5-0000001C I*4 PROCESS_STATE 5-00000020 I*4 PROCESS_STATUS 5-00000000 I*4 REMAINING_FILE_QUOTA AP-00000004@ I*4 ROW ** I*4 SWAPPED_OUT 4-000000F0 I*4 TERMINAL_LENGTH 4-000000FC I*4 TYPE_VALUE 4-000000F4 I*4 USER_LENGTH 4-000000F8 I*4 VERSION_LENGTH ARRAYS Address Type Name Bytes Dimensions 2-00000000 CHAR FIND_STATE 70 (14) 4-00000008 I*4 GETJPI_LIST 216 (54) 4-000000E0 I*4 IO_STATUS 8 (2) 5-00000008 I*4 LOGIN_TIME 8 (2) 3-00000000 CHAR SCREEN 9472 (128) PROCESS_NUMBERS 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 51 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 LABELS Address Label Address Label Address Label Address Label Address Label 1-00000010 10' 1-0000001C 20' 1-0000001F 30' 1-00000022 40' 1-00000025 50' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name L*4 FOR$BJTEST GET_WEEKDAY 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 52 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 Subroutine Process_strings( row ) 0002 c 0003 Include 'Disply.For' 0007 c 0008 Include 'JpiStr.For' 0015 Include 'JpiVal.For' 0031 Include 'JpiPrm.For' 0042 Include 'Flags.For' 0055 c 0056 Integer*4 row 0057 c 0058 10 Format ( Z8.8,' ' ) 0059 c 0060 i = row 0061 c 0062 If ( process_flag ) then 0063 write( screen( i )( 1: 12 ), 10 ) process_id 0064 Else If ( user_flag ) then 0065 call convert( user_name( : user_length ), screen( i )( 1: 12 ) ) 0066 Else 0067 screen( i )( 1: 12 ) = process_name( : process_length ) 0068 end if 0069 c 0070 if ( terminal_length .gt. 0 ) then 0071 screen( i )( 24: 28 ) = terminal( : terminal_length ) 0072 else 0073 screen( i )( 24: 28 ) = ' ' 0074 end if 0075 c 0076 if ( image_length .ne. 0 ) then 0077 j = index( image_name, ']' ) + 1 0078 Do While ( j .gt. 1 ) 0079 image_name = image_name( j : ) 0080 j = index( image_name, ']' ) + 1 0081 End Do 0082 image_name = image_name( : index( image_name, '.' ) - 1 ) 0083 call convert( image_name( :9 ), screen( i )( 14: 22 ) ) 0084 else if ( process_state .ne. 2 ) then 0085 screen( i )( 14: 22 ) = ' ' 0086 end if 0087 c 0088 return 0089 end PROCESS_STRINGS 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 53 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 339 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 28 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 108 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 DISPLY 9472 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 JPISTR 165 PIC OVR REL GBL SHR NOEXE RD WRT LONG 5 JPIVAL 56 PIC OVR REL GBL SHR NOEXE RD WRT LONG 6 JPIPRM 256 PIC OVR REL GBL SHR NOEXE RD WRT LONG 7 FLAGS 10 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 10434 ENTRY POINTS Address Type Name 0-00000000 PROCESS_STRINGS VARIABLES Address Type Name Address Type Name 5-00000018 I*4 BASE_PRIORITY 5-00000024 I*4 CPU_TIME 5-00000014 I*4 CURRENT_PRIORITY 7-00000000 L*1 DISPLAY_ALL_FLAG 7-00000001 L*1 EXIT_FLAG 5-00000004 I*4 FILE_QUOTA 2-00000000 R*4 FLAGS 5-00000030 I*4 GBL_PAGE_COUNT 6-00000000 I*4 GETJPI_FLAG 7-00000005 L*1 HELP_FLAG ** I*4 I 6-000000E8 I*4 IMAGE_LENGTH 4-00000000 CHAR IMAGE_NAME ** I*4 J 7-00000007 L*1 JBCTL_FLAG 5-00000028 I*4 PAGE_COUNT 5-0000002C I*4 PAGE_FAULTS 7-00000009 L*1 PAGE_INDEX 7-00000008 L*1 PAGE_NUMBER 6-00000004 I*4 PID 7-00000003 L*1 PROCESS_FLAG 5-00000010 I*4 PROCESS_ID 5-00000034 I*4 PROCESS_INDEX 6-000000EC I*4 PROCESS_LENGTH 4-00000080 CHAR PROCESS_NAME 5-0000001C I*4 PROCESS_STATE 5-00000020 I*4 PROCESS_STATUS 7-00000004 L*1 REDRAW_FLAG 5-00000000 I*4 REMAINING_FILE_QUOTA AP-00000004@ I*4 ROW 4-0000008F CHAR TERMINAL 6-000000F0 I*4 TERMINAL_LENGTH 6-000000FC I*4 TYPE_VALUE 7-00000006 L*1 UNKNOWN_FLAG 7-00000002 L*1 USER_FLAG 6-000000F4 I*4 USER_LENGTH 4-00000096 CHAR USER_NAME 6-000000F8 I*4 VERSION_LENGTH ARRAYS Address Type Name Bytes Dimensions 6-00000008 I*4 GETJPI_LIST 216 (54) 6-000000E0 I*4 IO_STATUS 8 (2) 5-00000008 I*4 LOGIN_TIME 8 (2) 3-00000000 CHAR SCREEN 9472 (128) PROCESS_STRINGS 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 54 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 LABELS Address Label 1-00000004 10' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name CONVERT I*4 LIB$INDEX 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 55 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 Subroutine Cpu_Usage( Row ) 0002 c 0003 Include 'UsrTbl.For' 0009 Include 'Disply.For' 0013 Include 'JpiVal.For' 0029 Include 'Idle.For' 0035 c 0036 Integer*4 row, elapsed_time( 2 ), cpu_used 0037 Integer*4 old_cpu_time, percent_cpu 0038 c 0039 Integer*2 user_ptr 0040 c 0041 10 format( i3,'%') 0042 c 0043 user_ptr = Process_Index 0044 user_index( row ) = Process_id 0045 c 0046 c *** Get elapsed time 0047 c 0048 If ( user_table( 1, user_ptr ) .eq. 0 ) then 0049 itimer_stat = Lib$Init_Timer( user_table( 1, user_ptr ) ) 0050 if ( .not. itimer_stat ) call errrec( itimer_stat ) 0051 user_table( 3, user_ptr ) = cpu_time 0052 If ( Row .eq. 0 ) then 0053 Percent_Idle = 100 0054 Else 0055 Screen( row )( 71: 74 ) = ' 0%' 0056 End If 0057 Else 0058 itimer_stat = Lib$Stat_Timer( 1, elapsed_time, user_table( 1, 0059 1 user_ptr ) ) 0060 itimer_stat = Lib$Init_Timer( user_table( 1, user_ptr ) ) 0061 c 0062 If ( Process_State .ne. 2 ) then 0063 Old_Cpu_Time = User_Table( 3, User_Ptr ) 0064 User_Table( 3, User_Ptr ) = Cpu_Time 0065 Cpu_Used = ( Cpu_Time - Old_Cpu_Time ) * 100 0066 Percent_Cpu = NInt ( Float ( Elapsed_Time( 1 ) ) / 100000.0 ) 0067 If ( Percent_Cpu .gt. 0 ) 0068 1 Percent_Cpu = NInt ( Float ( Cpu_Used ) / 0069 1 Float ( Percent_Cpu ) ) 0070 If ( Row .eq. 0 ) then 0071 Percent_Idle = Percent_Cpu 0072 Else 0073 Write( Screen( Row )( 71: 74 ), 10 ) Percent_Cpu 0074 End If 0075 Else 0076 User_Table( 1, User_Ptr ) = 0 0077 Screen( Row )( 71: 74 ) = ' 0%' 0078 End If 0079 End If 0080 c 0081 Return 0082 End CPU_USAGE 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 56 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 319 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 14 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 52 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 USRTBL 3072 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 DISPLY 9472 PIC OVR REL GBL SHR NOEXE RD WRT LONG 5 JPIVAL 56 PIC OVR REL GBL SHR NOEXE RD WRT LONG 6 IDLE 16 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 13001 ENTRY POINTS Address Type Name 0-00000000 CPU_USAGE VARIABLES Address Type Name Address Type Name 5-00000018 I*4 BASE_PRIORITY 5-00000024 I*4 CPU_TIME ** I*4 CPU_USED 5-00000014 I*4 CURRENT_PRIORITY 5-00000004 I*4 FILE_QUOTA 5-00000030 I*4 GBL_PAGE_COUNT 6-00000008 I*4 IDLE_HOU 6-00000000 I*4 IDLE_MIN 6-00000004 I*4 IDLE_SEC 2-00000008 I*4 ITIMER_STAT ** I*4 OLD_CPU_TIME 5-00000028 I*4 PAGE_COUNT 5-0000002C I*4 PAGE_FAULTS ** I*4 PERCENT_CPU 6-0000000C I*4 PERCENT_IDLE 5-00000010 I*4 PROCESS_ID 5-00000034 I*4 PROCESS_INDEX 5-0000001C I*4 PROCESS_STATE 5-00000020 I*4 PROCESS_STATUS 5-00000000 I*4 REMAINING_FILE_QUOTA AP-00000004@ I*4 ROW ** I*2 USER_PTR ARRAYS Address Type Name Bytes Dimensions 2-00000000 I*4 ELAPSED_TIME 8 (2) 3-00000A00 I*4 IDLE_TABLE 512 (128) 5-00000008 I*4 LOGIN_TIME 8 (2) 3-00000800 I*4 PID_TABLE 512 (128) 4-00000000 CHAR SCREEN 9472 (128) 3-00000600 I*4 USER_INDEX 512 (128) 3-00000000 I*4 USER_TABLE 1536 (3, 128) CPU_USAGE 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 57 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 LABELS Address Label 1-00000004 10' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name ERRREC I*4 LIB$INIT_TIMER I*4 LIB$STAT_TIMER 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 58 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 59 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0002 0003 subroutine get_weekday( day, time, len ) 0004 c 0005 character day*(*) 0006 character*9 day_table( 0:6 ) 0007 c 0008 logical*1 size( 0:6 ) 0009 c 0010 integer*4 time( 2 ), len, ptr 0011 c 0012 data day_table / 'Wednesday', 'Thursday ', 'Friday ', 'Saturday ', 0013 1 'Sunday ', 'Monday ', 'Tuesday ' / 0014 data size / 9, 8, 6, 8, 6, 6, 7 / 0015 c 0016 if ( time( 1 ) .eq. 0 ) then 0017 iday_stat = Lib$Day( iday ) 0018 else 0019 iday_stat = Lib$Day( iday, time ) 0020 end if 0021 c 0022 ptr = Mth$Jmod( iday, 7 ) 0023 day = day_table( ptr ) 0024 len = size ( ptr ) 0025 c 0026 return 0027 end GET_WEEKDAY 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 60 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 97 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 4 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 136 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 237 ENTRY POINTS Address Type Name 0-00000000 GET_WEEKDAY VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name AP-00000004@ CHAR DAY 2-00000048 I*4 IDAY ** I*4 IDAY_STAT AP-0000000C@ I*4 LEN ** I*4 PTR ARRAYS Address Type Name Bytes Dimensions 2-00000000 CHAR DAY_TABLE 63 (0:6) 2-0000003F L*1 SIZE 7 (0:6) AP-00000008@ I*4 TIME 8 (2) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name I*4 LIB$DAY I*4 MTH$JMOD 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 61 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 subroutine get_system_info 0002 c 0003 Include 'JpiPrm.For' 0014 Include 'SyiVal.For' 0019 Include 'SyiPrm.For' 0023 c 0024 Integer*4 Sys$GetSyi, GetSyi_Status, Sys$WaitFr 0025 Integer*4 WaitFr_Status 0026 c 0027 Character*3 versions( 4 ) 0028 c 0029 Data versions / '780', '750', '730', '7VV' / 0030 c 0031 GetSyi_Status = sys$getsyi( %val( getsyi_flag ), , , 0032 1 getsyi_list, , , ) 0033 c 0034 If ( GetSyi_Status ) then 0035 WaitFr_Status = Sys$WaitFr( %val( GetSyi_Flag ) ) 0036 If( .not. WaitFr_Status ) Call ErrRec( WaitFr_Status ) 0037 Else 0038 Call ErrRec( GetSyi_Status ) 0039 End If 0040 c 0041 System_Type = Versions( Type_Value ) 0042 c 0043 Return 0044 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 95 PIC CON REL LCL SHR EXE RD NOWRT LONG 2 $LOCAL 76 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 JPIPRM 256 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 SYIVAL 11 PIC OVR REL GBL SHR NOEXE RD WRT LONG 5 SYIPRM 40 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 478 ENTRY POINTS Address Type Name 0-00000000 GET_SYSTEM_INFO GET_SYSTEM_INFO 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 62 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 VARIABLES Address Type Name Address Type Name 3-00000000 I*4 GETJPI_FLAG 5-00000024 I*4 GETSYI_FLAG 2-0000000C I*4 GETSYI_STATUS 3-000000E8 I*4 IMAGE_LENGTH 3-00000004 I*4 PID 3-000000EC I*4 PROCESS_LENGTH 4-00000008 CHAR SYSTEM_TYPE 4-00000000 CHAR SYSTEM_VERSION 3-000000F0 I*4 TERMINAL_LENGTH 3-000000FC I*4 TYPE_VALUE 3-000000F4 I*4 USER_LENGTH 3-000000F8 I*4 VERSION_LENGTH 2-00000010 I*4 WAITFR_STATUS ARRAYS Address Type Name Bytes Dimensions 3-00000008 I*4 GETJPI_LIST 216 (54) 5-00000000 I*4 GETSYI_LIST 36 (9) 3-000000E0 I*4 IO_STATUS 8 (2) 2-00000000 CHAR VERSIONS 12 (4) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name ERRREC I*4 SYS$GETSYI I*4 SYS$WAITFR 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 63 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 64 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0002 0003 Subroutine Modify_Priority_By( Amount ) 0004 c 0005 Include 'CurPri.For' 0009 c 0010 Integer*4 amount 0011 Integer*4 sys$setpri, return_status 0012 c 0013 my_current_priority = my_current_priority + amount 0014 c 0015 if ( my_current_priority .lt. 1 ) then 0016 my_current_priority = 31 0017 else if ( my_current_priority .gt. 31 ) then 0018 my_current_priority = 1 0019 end if 0020 c 0021 return_status = sys$setpri( , , %val( my_current_priority ), ) 0022 c 0023 if ( .not. return_status ) then 0024 call errrec( return_status ) 0025 end if 0026 c 0027 return 0028 end MODIFY_PRIORITY_BY 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 65 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 75 PIC CON REL LCL SHR EXE RD NOWRT LONG 2 $LOCAL 32 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 CURPRI 8 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 115 ENTRY POINTS Address Type Name 0-00000000 MODIFY_PRIORITY_BY VARIABLES Address Type Name Address Type Name AP-00000004@ I*4 AMOUNT 3-00000004 I*4 MY_BASE_PRIORITY 3-00000000 I*4 MY_CURRENT_PRIORITY 2-00000000 I*4 RETURN_STATUS FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name ERRREC I*4 SYS$SETPRI 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 66 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 subroutine convert( in, out ) 0002 c 0003 c *** routine to convert uppercase characters to lowercase 0004 c 0005 character in*(*), out*(*) 0006 character*26 upper, lower 0007 c 0008 integer*4 Str$Translate, iret_stat 0009 c 0010 upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 0011 lower = 'abcdefghijklmnopqrstuvwxyz' 0012 c 0013 out( 1:1 ) = in( 1:1 ) 0014 iret_stat = Str$Translate( out( 2: ), in( 2: ), lower, upper ) 0015 c 0016 10 return 0017 end CONVERT 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 67 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 101 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 52 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 120 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 273 ENTRY POINTS Address Type Name 0-00000000 CONVERT VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name AP-00000004@ CHAR IN ** I*4 IRET_STAT 2-0000001A CHAR LOWER AP-00000008@ CHAR OUT 2-00000000 CHAR UPPER LABELS Address Label ** 10 FUNCTIONS AND SUBROUTINES REFERENCED Type Name I*4 STR$TRANSLATE 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 68 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 subroutine setup_getjpi 0002 c 0003 c *** Job/Process information request type codes *** 0004 c 0005 Include '($JpiDef)' 0143 c 0144 Include 'JpiStr.For' 0151 Include 'JpiVal.For' 0167 Include 'JpiPrm.For' 0178 c 0179 Include 'SyiVal.For' 0184 Include 'SyiPrm.For' 0188 c 0189 Integer*2 short_list( 2, 54 ), sys_list( 2, 9 ) 0190 c 0191 Equivalence ( getjpi_list, short_list ) 0192 Equivalence ( getsyi_list, sys_list ) 0193 c 0194 c *** Set up the JPI request (never changes) *** 0195 c 0196 c *** Current Priority 0197 short_list( 1, 1 ) = 4 0198 short_list( 2, 1 ) = jpi$_pri 0199 getjpi_list( 2 ) = %loc( current_priority ) 0200 getjpi_list( 3 ) = 0 0201 c *** Base Priority 0202 short_list( 1, 4 ) = 4 0203 short_list( 2, 4 ) = jpi$_prib 0204 getjpi_list( 5 ) = %loc( base_priority ) 0205 getjpi_list( 6 ) = 0 0206 c *** Open file count 0207 short_list( 1, 7 ) = 4 0208 short_list( 2, 7 ) = jpi$_filcnt 0209 getjpi_list( 8 ) = %loc( remaining_file_quota ) 0210 getjpi_list( 9 ) = 0 0211 c *** Image Name 0212 short_list( 1, 10 ) = 128 0213 short_list( 2, 10 ) = jpi$_imagname 0214 getjpi_list( 11 ) = %loc( image_name ) 0215 getjpi_list( 12 ) = %loc( image_length ) 0216 c *** Login Time 0217 short_list( 1, 13 ) = 8 0218 short_list( 2, 13 ) = jpi$_logintim 0219 getjpi_list( 14 ) = %loc( login_time ) 0220 getjpi_list( 15 ) = 0 0221 c *** Process Name 0222 short_list( 1, 16 ) = 15 0223 short_list( 2, 16 ) = jpi$_prcnam 0224 getjpi_list( 17 ) = %loc( process_name ) 0225 getjpi_list( 18 ) = %loc( process_length ) 0226 c *** Current State 0227 short_list( 1, 19 ) = 4 0228 short_list( 2, 19 ) = jpi$_state 0229 getjpi_list( 20 ) = %loc( process_state ) 0230 getjpi_list( 21 ) = 0 0231 c *** Terminal 0232 short_list( 1, 22 ) = 7 SETUP_GETJPI 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 69 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0233 short_list( 2, 22 ) = jpi$_terminal 0234 getjpi_list( 23 ) = %loc( terminal ) 0235 getjpi_list( 24 ) = %loc( terminal_length ) 0236 c *** User name 0237 short_list( 1, 25 ) = 12 0238 short_list( 2, 25 ) = jpi$_username 0239 getjpi_list( 26 ) = %loc( user_name ) 0240 getjpi_list( 27 ) = %loc( user_length ) 0241 c *** File quota 0242 short_list( 1, 28 ) = 4 0243 short_list( 2, 28 ) = jpi$_fillm 0244 getjpi_list( 29 ) = %loc( file_quota ) 0245 getjpi_list( 30 ) = 0 0246 c *** Process status flags 0247 short_list( 1, 31 ) = 4 0248 short_list( 2, 31 ) = jpi$_sts 0249 getjpi_list( 32 ) = %loc( process_status ) 0250 getjpi_list( 33 ) = 0 0251 c *** Process identification 0252 short_list( 1, 34 ) = 4 0253 short_list( 2, 34 ) = jpi$_pid 0254 getjpi_list( 35 ) = %loc( process_id ) 0255 getjpi_list( 36 ) = 0 0256 c *** Cpu time 0257 short_list( 1, 37 ) = 4 0258 short_list( 2, 37 ) = jpi$_cputim 0259 getjpi_list( 38 ) = %loc( cpu_time ) 0260 getjpi_list( 39 ) = 0 0261 c *** Page count 0262 short_list( 1, 40 ) = 4 0263 short_list( 2, 40 ) = jpi$_ppgcnt 0264 getjpi_list( 41 ) = %loc( page_count ) 0265 getjpi_list( 42 ) = 0 0266 c *** Count of page faults 0267 short_list( 1, 43 ) = 4 0268 short_list( 2, 43 ) = jpi$_pageflts 0269 getjpi_list( 44 ) = %loc( page_faults ) 0270 getjpi_list( 45 ) = 0 0271 c *** Global Page Count 0272 short_list( 1, 46 ) = 4 0273 short_list( 2, 46 ) = jpi$_GpgCnt 0274 getjpi_list( 47 ) = %loc( Gbl_Page_Count ) 0275 getjpi_list( 48 ) = 0 0276 c *** Process Index 0277 short_list( 1, 49 ) = 4 0278 short_list( 2, 49 ) = Jpi$_Proc_Index 0279 getjpi_list( 50 ) = %loc( Process_Index ) 0280 getjpi_list( 51 ) = 0 0281 c *** Mark end of options 0282 getjpi_list( 52 ) = 0 0283 getjpi_list( 53 ) = 0 0284 getjpi_list( 54 ) = 0 0285 c 0286 c *** Define the getsyi item list for system version 0287 c 0288 sys_list( 1, 1 ) = 8 0289 sys_list( 2, 1 ) = 256 SETUP_GETJPI 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 70 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0290 getsyi_list( 2 ) = %loc( system_version ) 0291 getsyi_list( 3 ) = %loc( version_length ) 0292 c *** Mark end of options 0293 sys_list( 1, 4 ) = 4 0294 sys_list( 2, 4 ) = 512 0295 getsyi_list( 5 ) = %loc( type_value ) 0296 getsyi_list( 6 ) = 0 0297 c 0298 getsyi_list( 7 ) = 0 0299 getsyi_list( 8 ) = 0 0300 getsyi_list( 9 ) = 0 0301 c 0302 Return 0303 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 445 PIC CON REL LCL SHR EXE RD NOWRT LONG 3 JPISTR 165 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 JPIVAL 56 PIC OVR REL GBL SHR NOEXE RD WRT LONG 5 JPIPRM 256 PIC OVR REL GBL SHR NOEXE RD WRT LONG 6 SYIVAL 11 PIC OVR REL GBL SHR NOEXE RD WRT LONG 7 SYIPRM 40 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 973 ENTRY POINTS Address Type Name 0-00000000 SETUP_GETJPI VARIABLES Address Type Name Address Type Name 4-00000018 I*4 BASE_PRIORITY 4-00000024 I*4 CPU_TIME 4-00000014 I*4 CURRENT_PRIORITY 4-00000004 I*4 FILE_QUOTA 4-00000030 I*4 GBL_PAGE_COUNT 5-00000000 I*4 GETJPI_FLAG 7-00000024 I*4 GETSYI_FLAG 5-000000E8 I*4 IMAGE_LENGTH 3-00000000 CHAR IMAGE_NAME 4-00000028 I*4 PAGE_COUNT 4-0000002C I*4 PAGE_FAULTS 5-00000004 I*4 PID 4-00000010 I*4 PROCESS_ID 4-00000034 I*4 PROCESS_INDEX 5-000000EC I*4 PROCESS_LENGTH 3-00000080 CHAR PROCESS_NAME 4-0000001C I*4 PROCESS_STATE 4-00000020 I*4 PROCESS_STATUS 4-00000000 I*4 REMAINING_FILE_QUOTA 6-00000008 CHAR SYSTEM_TYPE 6-00000000 CHAR SYSTEM_VERSION 3-0000008F CHAR TERMINAL 5-000000F0 I*4 TERMINAL_LENGTH 5-000000FC I*4 TYPE_VALUE 5-000000F4 I*4 USER_LENGTH 3-00000096 CHAR USER_NAME 5-000000F8 I*4 VERSION_LENGTH SETUP_GETJPI 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 71 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 ARRAYS Address Type Name Bytes Dimensions 5-00000008 I*4 GETJPI_LIST 216 (54) 7-00000000 I*4 GETSYI_LIST 36 (9) 5-000000E0 I*4 IO_STATUS 8 (2) 4-00000008 I*4 LOGIN_TIME 8 (2) 5-00000008 I*2 SHORT_LIST 216 (2, 54) 7-00000000 I*2 SYS_LIST 36 (2, 9) 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 72 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0001 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 73 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 0002 c 0003 c Modification History under VAX/VMS V3 0004 c 0005 c V1.0 - The original version 0006 c 0007 c V1.1 - Added pages of display and increased number 0008 c of processes that can be displayed. The 0009 c maximum number of process that can be 0010 c displayed now is 128 ( 19 per page with 0011 c 6+ pages ). MRV. June 10, 1984 0012 c 0013 c V1.2 - Corrected overflow on internal reads for 0014 c the display of page faults in routine 0015 c Process_Numbers when the number of page 0016 c faults are larger than 999,999. The field 0017 c is filled with "*". MRV. August 24, 1984 0018 c 0019 c V1.3 - Corrected overflow on internal reads for 0020 c the display of CPU times. When the number 0021 c CPU hours is to large the field is filled 0022 c with "*". MRV. November 12, 1984 0023 c 0024 c V1.4 - Modified the rmd_ctrl_exit routine to force 0025 c an immediate exit on ^Y and on ^C. 0026 c 0027 c - Modified the modify_sleep_time routine so 0028 c that wake ups can be changed while 0029 c hibernating. This allows one to get out of 0030 c a long hibernation. 0031 c 0032 c - Modified the process_input routine so that 0033 c the sleep flag is set to 1 when the exit 0034 c flag is set. This allows for a faster exit 0035 c when the sleep time is large. 0036 c 0037 c - Added RMDEMO version number to the display. 0038 c 0039 c - MRV. December 27, 1984. 0040 c 0041 c V1.5 - Modified the Getjpi_Setup routine so that 0042 c the correct process size is reported. ie. 0043 c process size is Process_Page_Count + 0044 c Global_Page_Count. 0045 c 0046 c - MRV. January 16, 1985. 0047 c 20-May-1985 12:07:57 VAX FORTRAN V4.1-45 Page 74 20-May-1985 11:54:51 UD0:[VEVLE.SOURCE.UAB.RMDEMO]RMDEMO.FOR;36 COMMAND QUALIFIERS FOR/LIST/NOOBJ RMDEMO /CHECK=(NOBOUNDS,OVERFLOW,NOUNDERFLOW) /DEBUG=(NOSYMBOLS,TRACEBACK) /STANDARD=(NOSYNTAX,NOSOURCE_FORM) /SHOW=(NOPREPROCESSOR,NOINCLUDE,MAP,NODICTIONARY,SINGLE) /WARNINGS=(GENERAL,NODECLARATIONS) /CONTINUATIONS=19 /NOCROSS_REFERENCE /NOD_LINES /NOEXTEND_SOURCE /F77 /NOG_FLOATING /I4 /NOMACHINE_CODE /OPTIMIZE COMPILATION STATISTICS Run Time: 60.12 seconds Elapsed Time: 81.12 seconds Page Faults: 2939 Dynamic Memory: 603 pages