COMPILATION LISTING OF SEGMENT kermit_log_mgr_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/05/88 1401.8 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 7 kermit_log_mgr_: proc; 8 9 /********************************************************************/ 10 /* */ 11 /*n kermit_log_mgr_ */ 12 /* */ 13 /*d The kermit log manager controls the enabling and disabling */ 14 /*d of the logging function from both the subroutine and */ 15 /*d request levels, as well as the printing of statistics that */ 16 /*d are derived from the logged info and the logging itself. */ 17 /* */ 18 /*l Written: 84-10-31 by Dean Elhard */ 19 /* */ 20 /********************************************************************/ 21 22 /* constants */ 23 24 dcl true bit (1) static options (constant) init ("1"b); 25 dcl false bit (1) static options (constant) init ("0"b); 26 27 dcl Unused bit (1) aligned static options (constant) 28 init ("0"b); 29 dcl Default_log char (10) static options (constant) 30 init ("kermit.log"); 31 32 /* arguments */ 33 34 dcl A_code fixed bin (35) parameter; 35 dcl A_filename char (*) varying; 36 dcl A_infop ptr parameter; 37 dcl A_sci_ptr ptr parameter; 38 dcl A_statisticsp ptr parameter; 39 40 /* procedures */ 41 42 dcl get_shortest_path_ entry (char(*)) returns(char(168)); 43 dcl ioa_ entry() options(variable); 44 dcl ioa_$ioa_switch entry() options(variable); 45 dcl iox_$attach_name entry (char(*), ptr, char(*), ptr, 46 fixed bin(35)); 47 dcl iox_$close entry (ptr, fixed bin(35)); 48 dcl iox_$detach_iocb entry (ptr, fixed bin(35)); 49 dcl iox_$open entry (ptr, fixed bin, bit(1) aligned, 50 fixed bin(35)); 51 dcl convert_status_code_ entry (fixed bin(35), char(8) aligned, 52 char(100) aligned); 53 dcl date_time_$format entry (char(*), fixed bin(71), char(*), char(*)) 54 returns (char (250) varying); 55 dcl expand_pathname_$component 56 entry (char(*), char(*), char(*), char(*), 57 fixed bin(35)); 58 dcl pathname_$component entry (char(*), char(*), char(*)) 59 returns(char(194)); 60 dcl ssu_$abort_line entry() options(variable); 61 dcl ssu_$arg_count entry (ptr, fixed bin); 62 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin(21)); 63 64 /* external */ 65 66 dcl error_table_$badopt external fixed bin (35); 67 dcl error_table_$noarg external fixed bin (35); 68 dcl error_table_$too_many_args 69 external fixed bin (35); 70 dcl kermit_et_$log_not_disabled 71 external fixed bin (35); 72 dcl kermit_et_$log_open external fixed bin (35); 73 dcl kermit_et_$no_log external fixed bin (35); 74 dcl kermit_et_$no_valid_stats 75 external fixed bin (35); 76 77 /* based */ 78 79 dcl arg char (argl) based (argp); 80 dcl 01 info aligned like kermit_info based (A_infop); 81 dcl 01 log_info aligned like kermit_log_info 82 based (info.log_infop); 83 dcl 01 stats aligned like kermit_stats_info 8Herbst ~process_overseer_ >user_dir_dir>Fortran>Herbst  €öá÷öá÷öá÷öá÷öá÷öá÷öá÷öá÷öá÷Jõ{kÔLi¥w11 L[<öá÷X–É¦Ô @ @DRobinson ~process_overseer_ >user_dir_dir>Fortran>DRobinson  €öá÷öá÷öá÷öá÷öá÷öá÷öá÷öá÷öá÷M{oÍM3—‘ none M4TšÂ>¥öá÷…ýëX–É¦Ô @ @JJht02ø € € € €Mabey  € €Westcott Gray  € € € € € € €DRobinson € € € €Hoover  €Oke  */ 2 40 fixed bin (35)); /* error code */ 2 41 2 42 dcl kermit_log_mgr_$disable entry 2 43 (ptr, /* kermit info ptr */ 2 44 fixed bin (35)); /* error code */ 2 45 2 46 dcl kermit_log_mgr_$display_stats 2 47 entry /* statistics command */ 2 48 (ptr, /* sci ptr */ 2 49 ptr); /* kermit info ptr */ 2 50 2 51 dcl kermit_log_mgr_$enable entry 2 52 (ptr, /* kermit info ptr */ 2 53 fixed bin (35)); /* error code */ 2 54 2 55 dcl kermit_log_mgr_$log_message 2 56 entry 2 57 (ptr, /* kermit info ptr */ 2 58 ptr); /* log info ptr */ 2 59 2 60 dcl kermit_log_mgr_$open_log 2 61 entry 2 62 (ptr, /* kermit info ptr */ 2 63 char (*) varying, /* log file name */ 2 64 fixed bin (35)); /* error code */ 2 65 2 66 dcl kermit_log_mgr_$start entry /* start log command */ 2 67 (ptr, /* sci ptr */ 2 68 ptr); /* kermit info ptr */ 2 69 2 70 dcl kermit_log_mgr_$stop entry /* stop log command */ 2 71 (ptr, /* sci ptr */ 2 72 ptr); /* kermit info ptr */ 2 73 2 74 dcl kermit_mode_mgr_$get entry /* get modes command */ 2 75 (ptr, /* sci ptr */ 2 76 ptr); /* kermit info ptr */ 2 77 2 78 dcl kermit_mode_mgr_$retrieve 2 79 entry 2 80 (ptr, /* kermit info ptr */ 2 81 fixed bin, /* permanent/temporary select */ 2 82 (*) fixed bin, /* mode selector array */ 2 83 ptr, /* mode value ptr */ 2 84 fixed bin (35)); /* error code */ 2 85 2 86 dcl kermit_mode_mgr_$set entry /* set modes command */ 2 87 (ptr, /* sci ptr */ 2 88 ptr); /* kermit info ptr */ 2 89 2 90 dcl kermit_mode_mgr_$store entry 2 91 (ptr, /* kermit info ptr */ 2 92 fixed bin, /* permanent/temporary select */ 2 93 (*) fixed bin, /* mode selector array */ 2 94 ptr, /* mode value ptr */ 2 95 fixed bin (35)); /* error code */ 2 96 2 97 dcl kermit_pad_$receive entry 2 98 (ptr, /* kermit info ptr */ 2 99 char (1), /* packet type */ 2 100 ptr, /* buffer pointer */ 2 101 fixed bin (21), /* buffer length */ 2 102 fixed bin, /* sequence number */ 2 103 fixed bin (21), /* chars received */ 2 104 fixed bin (21), /* packet size */ 2 105 bit (1), /* CR/NL split flag */ 2 106 fixed bin (35)); /* error code */ 2 107 2 108 dcl kermit_pad_$send entry 2 109 (ptr, /* kermit info ptr */ 2 110 char (1), /* packet type */ 2 111 ptr, /* data ptr */ 2 112 fixed bin (21), /* data length */ 2 113 fixed bin, /* sequence number */ 2 114 fixed bin (21), /* chars transmitted */ 2 115 fixed bin (21), /* packet length */ 2 116 fixed bin (35)); /* error code */ 2 117 2 118 dcl kermit_receive_$receive_from_remote 2 119 entry 2 120 (ptr, /* kermit info ptr */ 2 121 fixed bin, /* initial state */ 2 122 fixed bin, /* initial sequence number */ 2 123 char (*), /* user filename (first file) */ 2 124 bit (1), /* =1 if user gave filename */ 2 125 fixed bin, /* number of files received */ 2 126 fixed bin (35)); /* error code */ 2 127 2 128 dcl kermit_send_$send_to_remote 2 129 entry 2 130 (ptr, /* kermit info ptr */ 2 131 ptr, /* filenames area ptr */ 2 132 char (*), /* user filename (first file) */ 2 133 bit (1), /* =1 if user gave filename */ 2 134 fixed bin, /* number of files sent */ 2 135 fixed bin (35)); /* error code */ 2 136 2 137 2 138 dcl kermit_server_ 2 139 entry 2 140 (ptr, /* kermit info ptr */ 2 141 ptr); /* filenames area ptr */ 2 142 2 143 2 144 dcl kermit_xfer_modes_$check_params 2 145 entry 2 146 (ptr, /* kermit info ptr */ 2 147 ptr, /* remote parameters */ 2 148 fixed bin (21), /* remote parameters length */ 2 149 ptr, /* local parameters */ 2 150 fixed bin (35)); /* error code */ 2 151 2 152 dcl kermit_xfer_modes_$init 2 153 entry 2 154 (ptr, /* ptr to kermit info */ 2 155 fixed bin (35)); /* error code */ 2 156 2 157 dcl kermit_xfer_modes_$get_local_params 2 158 entry 2 159 (ptr, /* kermit info ptr */ 2 160 ptr, /* local parameters */ 2 161 fixed bin (21), /* local parameters length */ 2 162 ptr, /* encoded parameters */ 2 163 fixed bin (21), /* encoded parameters length */ 2 164 fixed bin (35)); /* error code */ 2 165 2 166 dcl kermit_xfer_modes_$process_params 2 167 entry 2 168 (ptr, /* kermit info ptr */ 2 169 ptr, /* remote parameters */ 2 170 fixed bin (21), /* remote parameters length */ 2 171 ptr, /* local parameters */ 2 172 fixed bin (35)); /* error code */ 2 173 2 174 /* END OF: kermit_dcls.incl.pl1 * * * * * */ 119 120 3 1 /* START OF: kermit_info.incl.pl1 * * * * * */ 3 2 3 3 3 4 3 5 3 6 /****^ HISTORY COMMENTS: 3 7* 1) change(88-05-16,Huen), approve(88-05-16,MCR7841), audit(88-05-25,RWaters), 3 8* install(88-07-05,MR12.2-1054): 3 9* Fix kermit 15, 16, 17, and 18. 3 10* END HISTORY COMMENTS */ 3 11 3 12 3 13 /********************************************************************/ 3 14 /* */ 3 15 /*n kermit_constants */ 3 16 /* */ 3 17 /*d This structure contains the constant definitions of CR, */ 3 18 /*d and NL characters which are coded as bit strings with */ 3 19 /*d overlays. */ 3 20 /* */ 3 21 /*l Written: 87-06-19 by Don Kozlowski */ 3 22 /*l Modified: 87-06-19 by Don Kozlowski - CR and NL are coded */ 3 23 /*l as bit strings with overlays (kermit 15)*/ 3 24 /* */ 3 25 /********************************************************************/ 3 26 3 27 dcl 01 kermit_bit_constants internal static options (constant), 3 28 02 CR_bit bit (9) unaligned init ("015"b3), 3 29 02 NL_bit bit (9) unaligned init ("012"b3); 3 30 3 31 dcl 01 kermit_char_constants based (addr (kermit_bit_constants)), 3 32 02 CR char (1) unaligned, 3 33 02 NL char (1) unaligned; 3 34 3 35 dcl 01 kermit_fixed_constants based (addr (kermit_bit_constants)), 3 36 02 CR_fixed fixed bin (9) unsigned unaligned, 3 37 02 NL_fixed fixed bin (9) unsigned unaligned; 3 38 3 39 3 40 /********************************************************************/ 3 41 /* */ 3 42 /*n kermit_info */ 3 43 /* */ 3 44 /*d This data structure is the subsystem info structure used */ 3 45 /*d when creating a kermit invocation. It is used to find the */ 3 46 /*d three kermit databases. */ 3 47 /* */ 3 48 /*l Written: 84-10-11 by Dean Elhard */ 3 49 /* */ 3 50 /********************************************************************/ 3 51 3 52 dcl 01 kermit_info aligned based (kermit_infop), 3 53 02 version char (8), 3 54 02 sci_ptr ptr, /* ssu_ sci_ptr */ 3 55 02 perm_modesp ptr, /* ptr to permanent modes db */ 3 56 02 temp_modesp ptr, /* ptr to temporary modes db */ 3 57 02 log_infop ptr, /* ptr to log info db */ 3 58 02 comm_infop ptr; /* ptr to comm info db */ 3 59 3 60 dcl kermit_infop ptr; 3 61 dcl kermit_info_version char (8) static options (constant) 3 62 init ("ki 1.0"); 3 63 3 64 /********************************************************************/ 3 65 /* */ 3 66 /*n kermit_perm_modes */ 3 67 /* */ 3 68 /*d This data structure contains the array of 9-bit values that */ 3 69 /*d represent the permanent kermit modes. */ 3 70 /* */ 3 71 /*l Written: 84-10-11 by Dean Elhard */ 3 72 /*l Modified: 87-06-12 by Don Kozlowski - Increase mode_counts */ 3 73 /*l (kermit 16) */ 3 74 /* */ 3 75 /********************************************************************/ 3 76 3 77 dcl 01 kermit_perm_modes aligned based (kermit_perm_modesp), 3 78 02 version char (8), 3 79 02 mode (1:kermit_perm_mode_count) 3 80 bit (9) unaligned; 3 81 3 82 dcl kermit_perm_modesp ptr; 3 83 dcl kermit_perm_mode_count fixed bin static options (constant) init (20); 3 84 dcl kermit_perm_modes_version 3 85 char (8) static options (constant) 3 86 init ("kpm 1.1"); 3 87 3 88 /********************************************************************/ 3 89 /* */ 3 90 /*n kermit_temp_modes */ 3 91 /* */ 3 92 /*d This data structure contains the array of 9-bit values that */ 3 93 /*d represent the temporary kermit modes. */ 3 94 /* */ 3 95 /*l Written: 84-10-11 by Dean Elhard */ 3 96 /* */ 3 97 /********************************************************************/ 3 98 3 99 dcl 01 kermit_temp_modes aligned based (kermit_temp_modesp), 3 100 02 version char (8), 3 101 02 mode (1:kermit_temp_mode_count) 3 102 bit (9) unaligned; 3 103 3 104 dcl kermit_temp_modesp ptr; 3 105 dcl kermit_temp_mode_count fixed bin static options (constant) init (23); 3 106 dcl kermit_temp_modes_version 3 107 char (8) static options (constant) 3 108 init ("ktm 1.1"); 3 109 3 110 /********************************************************************/ 3 111 /* */ 3 112 /*n kermit_log_info */ 3 113 /* */ 3 114 /*d This data structure contains 2 types of logging info: */ 3 115 /*d - data concerning the logging state and log_file */ 3 116 /*d - statistics on the last completed file-transfer */ 3 117 /* */ 3 118 /*l Written: 84-10-11 by Dean Elhard */ 3 119 /* */ 3 120 /********************************************************************/ 3 121 3 122 dcl 01 kermit_log_info aligned based (kermit_log_infop), 3 123 02 version char (8), 3 124 02 log_file aligned, /* log_file info */ 3 125 03 iocbp ptr, /* iocb ptr */ 3 126 03 flags aligned, 3 127 04 enabled bit (1) unaligned, /* enabled flag */ 3 128 04 stats_valid bit (1) unaligned, /* stats are set */ 3 129 04 mbz bit (34) unaligned, 3 130 02 statistics aligned like kermit_stats_info; 3 131 3 132 dcl kermit_log_infop ptr; 3 133 dcl kermit_log_info_version char (8) static options (constant) 3 134 init ("kli 1.0"); 3 135 3 136 /********************************************************************/ 3 137 /* */ 3 138 /*n kermit_stats_info */ 3 139 /* */ 3 140 /*d This structure is the statistics information passed to the */ 3 141 /*d log manager and stored as the statistics. */ 3 142 /* */ 3 143 /*l Written: 84-10-25 by Dean Elhard */ 3 144 /* */ 3 145 /********************************************************************/ 3 146 3 147 dcl 01 kermit_stats_info aligned based (kermit_stats_infop), 3 148 02 caller char (32), /* send or receive */ 3 149 02 status fixed bin (35), /* status of F-T */ 3 150 02 filename char (194) unal, /* name of file */ 3 151 02 file_len fixed bin (21), /* len in chars */ 3 152 02 char_count fixed bin (21), /* number sent */ 3 153 02 packet_chars fixed bin (21), /* after encoding */ 3 154 02 packet_count fixed bin (21), /* num of packets */ 3 155 02 packet_retries fixed bin (21), /* retries done */ 3 156 02 start_time fixed bin (71), /* time F-T started */ 3 157 02 end_time fixed bin (71), /* time F-T done */ 3 158 02 error_message char (94); /* rcvd error msg */ 3 159 3 160 dcl kermit_stats_infop ptr; 3 161 3 162 /********************************************************************/ 3 163 /* */ 3 164 /*n kermit_comm_info */ 3 165 /* */ 3 166 /*d This data structure contains information regarding the */ 3 167 /*d communications channel over which the file transfer takes */ 3 168 /*d place. */ 3 169 /* */ 3 170 /*l Written: 84-10-12 by Dean Elhard */ 3 171 /*l Modified: 86-10-09 by Don Kozlowski Add transfer_modes_set */ 3 172 /*l and server indicators. (kermit 13) */ 3 173 /* */ 3 174 /********************************************************************/ 3 175 3 176 dcl 01 kermit_comm_info aligned based (kermit_comm_infop), 3 177 02 version char (8), 3 178 02 ft_iocbp ptr, /* transfer iocbp */ 3 179 02 debug_segp ptr, /* debug segment */ 3 180 02 debug_segl fixed bin (21), 3 181 02 input_buffer aligned, /* input buffer */ 3 182 03 bufferp ptr, 3 183 03 bufferl fixed bin (21), 3 184 02 old_modes char (512) unal, /* ft switch modes */ 3 185 02 old_framing_chars aligned, /* saved frm chars */ 3 186 03 start_char char (1) unaligned, 3 187 03 end_char char (1) unaligned, 3 188 03 server bit (1) unaligned, /* In server mode */ 3 189 03 transfer_modes_set bit (1) unaligned, 3 190 03 pad bit (16) unaligned, 3 191 02 old_wake_table aligned, /* saved wake table */ 3 192 03 breaks (0:127) bit (1) unaligned, 3 193 03 mbz bit (16) unaligned, 3 194 02 old_delays aligned, /* saved delay info */ 3 195 03 version fixed bin, 3 196 03 default fixed bin, 3 197 03 delay, 3 198 04 vert_nl fixed bin, 3 199 04 horz_nl fixed bin, 3 200 04 const_tab float bin, 3 201 04 var_tab fixed bin, 3 202 04 backspace fixed bin, 3 203 04 vt_ff fixed bin; 3 204 3 205 dcl kermit_comm_infop ptr; 3 206 dcl kermit_comm_info_version 3 207 char (8) static options (constant) 3 208 init ("kci 1.0"); 3 209 3 210 /* END OF: kermit_info.incl.pl1 * * * * * */ 121 122 123 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 124 125 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 126 127 128 close_log: entry (A_infop, A_code); 129 130 /********************************************************************/ 131 /* */ 132 /*n Name: kermit_log_mgr_$close_log external */ 133 /*i Input: info_ptr */ 134 /*f Function: checks if there is currently a log_file open and */ 135 /*f closes it if there is. */ 136 /*o Output: error_code */ 137 /* */ 138 /*l Written: 84-10-31 by Dean Elhard */ 139 /* */ 140 /********************************************************************/ 141 142 A_code = 0; 143 144 /* make sure there is a log_file open first */ 145 146 if log_info.log_file.iocbp = null 147 then A_code = kermit_et_$no_log; 148 149 /* make sure logging is disabled on the file before closing it */ 150 151 else if log_info.enabled 152 then A_code = kermit_et_$log_not_disabled; 153 else do; 154 call iox_$close (log_info.log_file.iocbp, A_code); 155 if A_code = 0 156 then call iox_$detach_iocb (log_info.log_file.iocbp, A_code); 157 log_info.log_file.iocbp = null; 158 end; 159 160 return; 161 162 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 163 164 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 165 166 167 disable: entry (A_infop, A_code); 168 169 /********************************************************************/ 170 /* */ 171 /*n Name: kermit_log_mgr_$suspend_logging external */ 172 /*i Input: info_ptr */ 173 /*f Function: clears the logging_enabled switch in the log_info */ 174 /*f database. */ 175 /*o Output: none */ 176 /* */ 177 /*l Written: 84-10-31 by Dean Elhard */ 178 /* */ 179 /********************************************************************/ 180 181 /* make sure we have a log file attached */ 182 183 if log_info.log_file.iocbp = null 184 then A_code = kermit_et_$no_log; 185 else log_info.flags.enabled = false; 186 187 return; 188 189 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 190 191 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 192 193 194 display_statistics: entry (A_sci_ptr, A_infop); 195 196 /********************************************************************/ 197 /* */ 198 /*n Name: kermit_log_mgr_$display_statistics external */ 199 /*i Input: sci_ptr, info_ptr */ 200 /*f Function: extracts the statistics info from the log_info */ 201 /*f database, calculates the derived values, then */ 202 /*f formats and displays the resulting statistics. */ 203 /*o Output: none */ 204 /* */ 205 /*l Written: 84-11-02 by Dean Elhard */ 206 /* */ 207 /********************************************************************/ 208 209 /* abort if thewre are no valid statistics avaliable */ 210 211 if ^log_info.flags.stats_valid 212 then call ssu_$abort_line (A_sci_ptr, kermit_et_$no_valid_stats); 213 214 /* see if the caller was send */ 215 216 last_send = (log_info.statistics.caller = "send"); 217 218 /* header line */ 219 220 call ioa_ ("Statistics for ^[un^]successful ^[send^;receive^] of file", 221 (log_info.statistics.status ^= 0), last_send); 222 223 /* pathname of the transferred file */ 224 225 call expand_pathname_$component (log_info.statistics.filename, 226 dnm, enm, cnm, ec); 227 log_info.statistics.filename = pathname_$component (dnm, enm, cnm); 228 229 call ioa_ (" ^a", get_shortest_path_ (log_info.statistics.filename)); 230 231 /* converted status code message if non-zero */ 232 233 if log_info.statistics.status ^= 0 234 then do; 235 call convert_status_code_ (log_info.statistics.status, (""), message); 236 call ioa_ (" Reason:^17t^a", message); 237 end; 238 239 /* error message from remote, (if one was supplied) */ 240 241 if log_info.statistics.error_message ^= "" 242 then call ioa_ (" Error message:^17t^a", 243 log_info.statistics.error_message); 244 245 /* calculate start and finish times */ 246 247 started = date_time_$format ("date_time", 248 log_info.statistics.start_time, "", ""); 249 finished = date_time_$format ("date_time", 250 log_info.statistics.end_time, "", ""); 251 252 call ioa_ (" Started:^30t^a", started); 253 call ioa_ (" Finished:^30t^a", finished); 254 255 /* print out statistics */ 256 257 call ioa_ (" Length of file:^30t^d characters", 258 log_info.statistics.file_len); 259 call ioa_ (" File characters ^[sent^;received^]:^30t^d characters", 260 last_send, log_info.statistics.char_count); 261 call ioa_ (" Packets ^[sent^;received^]:^30t^d packets", last_send, 262 log_info.statistics.packet_count); 263 call ioa_ (" Characters ^[sent^;received^]:^30t^d characters", 264 last_send, log_info.statistics.packet_chars); 265 call ioa_ (" Retries:^30t^d packets", log_info.statistics.packet_retries); 266 267 /* calculate effective transmission rate */ 268 269 interval = log_info.statistics.end_time - log_info.statistics.start_time; 270 271 /* convert time to seconds from microseconds */ 272 273 time = float (interval) / 1000000.0; 274 if time = 0.0 275 then cps = 0; 276 else cps = log_info.statistics.char_count / time; 277 278 call ioa_ (" Transmission rate:^30t^d characters/second", cps); 279 280 return; 281 282 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 283 284 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 285 286 287 enable: entry (A_infop, A_code); 288 289 /********************************************************************/ 290 /* */ 291 /*n Name: kermit_log_mgr_$enable external */ 292 /*i Input: info_ptr */ 293 /*f Function: sets the logging_enabled switch in the log_info */ 294 /*f database */ 295 /*o Output: error_code */ 296 /* */ 297 /*l Written: 84-10-31 by Dean Elhard */ 298 /* */ 299 /********************************************************************/ 300 301 A_code = 0; 302 303 /* make sure there is a log_file open first */ 304 305 if log_info.log_file.iocbp = null 306 then A_code = kermit_et_$no_log; 307 else log_info.flags.enabled = true; 308 309 return; 310 311 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 312 313 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 314 315 316 end_log: entry (A_sci_ptr, A_infop); 317 318 /********************************************************************/ 319 /* */ 320 /*n Name: kermit_log_mgr_$end_log external */ 321 /*i Input: sci_ptr, info_ptr */ 322 /*f Function: calls kermit_log_mgr_$disable to terminate the */ 323 /*f logging operation, then calls */ 324 /*f kermit_log_mgr_$close_log to close the log file. */ 325 /*o Output: none */ 326 /* */ 327 /*l Written: 84-10-31 by Dean Elhard */ 328 /* */ 329 /********************************************************************/ 330 331 /* disable logging and close the log */ 332 333 call kermit_log_mgr_$disable (A_infop, ec); 334 call kermit_log_mgr_$close_log (A_infop, ec); 335 336 /* print a message if it didn't work */ 337 338 if ec ^= 0 339 then call ssu_$abort_line (A_sci_ptr, ec); 340 341 return; 342 343 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 344 345 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 346 347 348 log_message: entry (A_infop, A_statisticsp); 349 350 /********************************************************************/ 351 /* */ 352 /*n Name: kermit_log_mgr_$log_message external */ 353 /*i Input: info_ptr, statistics_ptr */ 354 /*f Function: writes the statistics info into the log_info */ 355 /*f database. Then checks the logging_enabled switch */ 356 /*f and formats the statistics and writes them to the */ 357 /*f log_file if logging_enabled is on. */ 358 /*o Output: none */ 359 /* */ 360 /*l Written: 84-10-31 by Dean Elhard */ 361 /* */ 362 /********************************************************************/ 363 364 /* copy the stats info and mark it as valid */ 365 366 log_info.statistics = stats; 367 log_info.stats_valid = true; 368 369 iocbp = log_info.log_file.iocbp; 370 371 /* if we have a log open, format a message */ 372 373 if log_info.enabled 374 then do; 375 376 /* format the initial log message line */ 377 378 if stats.status = 0 379 then call ioa_$ioa_switch (iocbp, 380 "^a:^10tFile ^[sent^;received^] successfully", 381 stats.caller, (stats.caller = "send")); 382 else do; 383 call convert_status_code_ (stats.status, (""), message); 384 call ioa_$ioa_switch (iocbp, "^a:^10t^a", stats.caller, message); 385 end; 386 387 /* format the pathname of the segment */ 388 389 call expand_pathname_$component (stats.filename, dnm, enm, cnm, ec); 390 path = pathname_$component (dnm, enm, cnm); 391 path = get_shortest_path_ (path); 392 393 call ioa_$ioa_switch (iocbp, "^5t^a", path); 394 395 /* format the statistics info */ 396 397 call ioa_$ioa_switch (iocbp, 398 "^5tFile contains ^d chars, ^d chars ^[sent^;received^]", 399 stats.file_len, stats.char_count, (stats.caller = "send")); 400 call ioa_$ioa_switch (iocbp, 401 "^5t^d packets ^[sent^;received^] totalling ^d chars, ^d retries", 402 stats.packet_count, (stats.caller = "send"), 403 stats.packet_chars, stats.packet_retries); 404 405 /* format the start and end times */ 406 407 started = date_time_$format ("date_time", stats.start_time, "", ""); 408 finished = date_time_$format ("date_time", stats.end_time, "", ""); 409 call ioa_$ioa_switch (iocbp, "^5tStarted: ^a, Finished: ^a", 410 started, finished); 411 412 /* format the remote error message if supplied */ 413 414 if stats.status ^= 0 415 then call ioa_$ioa_switch (iocbp, "^5t^a", stats.error_message); 416 end; 417 418 return; 419 420 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 421 422 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 423 424 425 open_log: entry (A_infop, A_filename, A_code); 426 427 /********************************************************************/ 428 /* */ 429 /*n Name: kermit_log_mgr_$open_log external */ 430 /*i Input: info_ptr, log_file_name */ 431 /*f Function: attempts to open the named file for output */ 432 /*f and stores the iocbp in the log_info database. */ 433 /*o Output: error_code */ 434 /* */ 435 /*l Written: 84-10-31 by Dean Elhard */ 436 /* */ 437 /********************************************************************/ 438 439 /* make sure there is not already a log_file open */ 440 441 if log_info.log_file.iocbp ^= null 442 then A_code = kermit_et_$log_open; 443 else do; 444 atd = "vfile_ " || A_filename; 445 call iox_$attach_name ("kermit_log", log_info.log_file.iocbp, 446 (atd), null, A_code); 447 if A_code = 0 448 then call iox_$open (log_info.log_file.iocbp, Stream_output, Unused, 449 A_code); 450 end; 451 452 return; 453 454 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 455 456 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 457 458 459 start_log: entry (A_sci_ptr, A_infop); 460 461 /********************************************************************/ 462 /* */ 463 /*n Name: kermit_log_mgr_$start_log external */ 464 /*i Input: sci_ptr, info_ptr */ 465 /*f Function: opens the file specified by log path if given or */ 466 /*f the default log file if no log_file_path was */ 467 /*f specified. Then call kermit_log_mgr_$enable to */ 468 /*f enable logging operation. */ 469 /*o Output: none */ 470 /* */ 471 /*l Written: 84-10-31 by Dean Elhard */ 472 /* */ 473 /********************************************************************/ 474 475 /* get the arg count */ 476 477 call ssu_$arg_count (A_sci_ptr, nargs); 478 479 extend = true; 480 atd = ""; 481 482 /* parse the arguments */ 483 484 do i = 1 to nargs; 485 call ssu_$arg_ptr (A_sci_ptr, i, argp, argl); 486 487 if index (arg, "-") ^= 1 488 then atd = arg; 489 else if arg = "-truncate" | arg = "-tc" 490 then extend = false; 491 else if arg = "-extend" 492 then extend = true; 493 else call ssu_$abort_line (A_sci_ptr, error_table_$badopt, arg); 494 end; 495 496 if atd = "" 497 then atd = Default_log; 498 499 /* setup the atd for truncation/extension */ 500 501 if extend 502 then atd = atd || " -extend"; 503 504 /* open the log file and enable logging */ 505 506 call kermit_log_mgr_$open_log (A_infop, atd, ec); 507 508 if ec ^= 0 509 then call ssu_$abort_line (A_sci_ptr, ec); 510 511 call kermit_log_mgr_$enable (A_infop, ec); 512 513 return; 514 515 end kermit_log_mgr_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/05/88 1400.0 kermit_log_mgr_.pl1 >special_ldd>install>MR12.2-1054>kermit_log_mgr_.pl1 117 1 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 119 2 11/20/84 1351.4 kermit_dcls.incl.pl1 >ldd>include>kermit_dcls.incl.pl1 121 3 07/05/88 1357.8 kermit_info.incl.pl1 >special_ldd>install>MR12.2-1054>kermit_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. A_code parameter fixed bin(35,0) dcl 34 set ref 128 142* 146* 151* 154* 155 155* 167 183* 287 301* 305* 425 441* 445* 447 447* A_filename parameter varying char dcl 35 ref 425 444 A_infop parameter pointer dcl 36 set ref 128 146 151 154 155 157 167 183 185 194 211 216 220 225 227 229 229 233 235 241 241 247 249 257 259 261 263 265 269 269 276 287 305 307 316 333* 334* 348 366 367 369 373 425 441 445 447 459 506* 511* A_sci_ptr parameter pointer dcl 37 set ref 194 211* 316 338* 459 477* 485* 493* 508* A_statisticsp parameter pointer dcl 38 ref 348 366 378 378 378 383 384 389 397 397 397 400 400 400 400 407 408 414 414 Default_log 000000 constant char(10) initial packed unaligned dcl 29 ref 496 Stream_output 000052 constant fixed bin(17,0) initial dcl 1-15 set ref 447* Unused 000044 constant bit(1) initial dcl 27 set ref 447* arg based char packed unaligned dcl 79 set ref 487 487 489 489 491 493* argl 000100 automatic fixed bin(21,0) dcl 88 set ref 485* 487 487 489 489 491 493 493 argp 000102 automatic pointer dcl 89 set ref 485* 487 487 489 489 491 493 atd 000104 automatic varying char(256) dcl 90 set ref 444* 445 480* 487* 496 496* 501* 501 506* caller 6 based char(32) level 3 in structure "log_info" dcl 81 in procedure "kermit_log_mgr_" set ref 216 caller based char(32) level 2 in structure "stats" dcl 83 in procedure "kermit_log_mgr_" set ref 378* 378 384* 397 400 char_count 73 based fixed bin(21,0) level 2 in structure "stats" dcl 83 in procedure "kermit_log_mgr_" set ref 397* char_count 101 based fixed bin(21,0) level 3 in structure "log_info" dcl 81 in procedure "kermit_log_mgr_" set ref 259* 276 cnm 000206 automatic char(32) packed unaligned dcl 92 set ref 225* 227* 389* 390* convert_status_code_ 000026 constant entry external dcl 51 ref 235 383 cps 000205 automatic fixed bin(21,0) dcl 91 set ref 274* 276* 278* date_time_$format 000030 constant entry external dcl 53 ref 247 249 407 408 dnm 000216 automatic char(168) packed unaligned dcl 93 set ref 225* 227* 389* 390* ec 000270 automatic fixed bin(35,0) dcl 94 set ref 225* 333* 334* 338 338* 389* 506* 508 508* 511* enabled 4 based bit(1) level 4 packed packed unaligned dcl 81 set ref 151 185* 307* 373 end_time 102 based fixed bin(71,0) level 2 in structure "stats" dcl 83 in procedure "kermit_log_mgr_" set ref 408* end_time 110 based fixed bin(71,0) level 3 in structure "log_info" dcl 81 in procedure "kermit_log_mgr_" set ref 249* 269 enm 000271 automatic char(32) packed unaligned dcl 95 set ref 225* 227* 389* 390* error_message 112 based char(94) level 3 in structure "log_info" dcl 81 in procedure "kermit_log_mgr_" set ref 241 241* error_message 104 based char(94) level 2 in structure "stats" dcl 83 in procedure "kermit_log_mgr_" set ref 414* error_table_$badopt 000044 external static fixed bin(35,0) dcl 66 set ref 493* expand_pathname_$component 000032 constant entry external dcl 55 ref 225 389 extend 000301 automatic bit(1) packed unaligned dcl 96 set ref 479* 489* 491* 501 false constant bit(1) initial packed unaligned dcl 25 ref 185 489 file_len 100 based fixed bin(21,0) level 3 in structure "log_info" dcl 81 in procedure "kermit_log_mgr_" set ref 257* file_len 72 based fixed bin(21,0) level 2 in structure "stats" dcl 83 in procedure "kermit_log_mgr_" set ref 397* filename 11 based char(194) level 2 in structure "stats" packed packed unaligned dcl 83 in procedure "kermit_log_mgr_" set ref 389* filename 17 based char(194) level 3 in structure "log_info" packed packed unaligned dcl 81 in procedure "kermit_log_mgr_" set ref 225* 227* 229* 229* finished 000302 automatic varying char(250) dcl 97 set ref 249* 253* 408* 409* flags 4 based structure level 3 dcl 81 get_shortest_path_ 000010 constant entry external dcl 42 ref 229 229 391 i 000402 automatic fixed bin(17,0) dcl 98 set ref 484* 485* info based structure level 1 dcl 80 interval 000404 automatic fixed bin(71,0) dcl 99 set ref 269* 273 ioa_ 000012 constant entry external dcl 43 ref 220 229 236 241 252 253 257 259 261 263 265 278 ioa_$ioa_switch 000014 constant entry external dcl 44 ref 378 384 393 397 400 409 414 iocbp 000406 automatic pointer dcl 100 in procedure "kermit_log_mgr_" set ref 369* 378* 384* 393* 397* 400* 409* 414* iocbp 2 based pointer level 3 in structure "log_info" dcl 81 in procedure "kermit_log_mgr_" set ref 146 154* 155* 157* 183 305 369 441 445* 447* iox_$attach_name 000016 constant entry external dcl 45 ref 445 iox_$close 000020 constant entry external dcl 47 ref 154 iox_$detach_iocb 000022 constant entry external dcl 48 ref 155 iox_$open 000024 constant entry external dcl 49 ref 447 kermit_et_$log_not_disabled 000046 external static fixed bin(35,0) dcl 70 ref 151 kermit_et_$log_open 000050 external static fixed bin(35,0) dcl 72 ref 441 kermit_et_$no_log 000052 external static fixed bin(35,0) dcl 73 ref 146 183 305 kermit_et_$no_valid_stats 000054 external static fixed bin(35,0) dcl 74 set ref 211* kermit_info based structure level 1 dcl 3-52 kermit_log_info based structure level 1 dcl 3-122 kermit_log_mgr_$close_log 000056 constant entry external dcl 2-37 ref 334 kermit_log_mgr_$disable 000060 constant entry external dcl 2-42 ref 333 kermit_log_mgr_$enable 000062 constant entry external dcl 2-51 ref 511 kermit_log_mgr_$open_log 000064 constant entry external dcl 2-60 ref 506 kermit_stats_info based structure level 1 dcl 3-147 last_send 000410 automatic bit(1) packed unaligned dcl 101 set ref 216* 220* 259* 261* 263* log_file 2 based structure level 2 dcl 81 log_info based structure level 1 dcl 81 log_infop 10 based pointer level 2 dcl 80 ref 146 151 154 155 157 183 185 211 216 220 225 227 229 229 233 235 241 241 247 249 257 259 261 263 265 269 269 276 305 307 366 367 369 373 441 445 447 message 000411 automatic char(100) dcl 102 set ref 235* 236* 383* 384* nargs 000442 automatic fixed bin(17,0) dcl 103 set ref 477* 484 null builtin function dcl 112 ref 146 157 183 305 441 445 445 packet_chars 102 based fixed bin(21,0) level 3 in structure "log_info" dcl 81 in procedure "kermit_log_mgr_" set ref 263* packet_chars 74 based fixed bin(21,0) level 2 in structure "stats" dcl 83 in procedure "kermit_log_mgr_" set ref 400* packet_count 103 based fixed bin(21,0) level 3 in structure "log_info" dcl 81 in procedure "kermit_log_mgr_" set ref 261* packet_count 75 based fixed bin(21,0) level 2 in structure "stats" dcl 83 in procedure "kermit_log_mgr_" set ref 400* packet_retries 76 based fixed bin(21,0) level 2 in structure "stats" dcl 83 in procedure "kermit_log_mgr_" set ref 400* packet_retries 104 based fixed bin(21,0) level 3 in structure "log_info" dcl 81 in procedure "kermit_log_mgr_" set ref 265* path 000443 automatic char(194) packed unaligned dcl 104 set ref 390* 391* 391* 393* pathname_$component 000034 constant entry external dcl 58 ref 227 390 ssu_$abort_line 000036 constant entry external dcl 60 ref 211 338 493 508 ssu_$arg_count 000040 constant entry external dcl 61 ref 477 ssu_$arg_ptr 000042 constant entry external dcl 62 ref 485 start_time 106 based fixed bin(71,0) level 3 in structure "log_info" dcl 81 in procedure "kermit_log_mgr_" set ref 247* 269 start_time 100 based fixed bin(71,0) level 2 in structure "stats" dcl 83 in procedure "kermit_log_mgr_" set ref 407* started 000524 automatic varying char(250) dcl 105 set ref 247* 252* 407* 409* statistics 6 based structure level 2 dcl 81 set ref 366* stats based structure level 1 dcl 83 set ref 366 stats_valid 4(01) based bit(1) level 4 packed packed unaligned dcl 81 set ref 211 367* status 16 based fixed bin(35,0) level 3 in structure "log_info" dcl 81 in procedure "kermit_log_mgr_" set ref 220 233 235* status 10 based fixed bin(35,0) level 2 in structure "stats" dcl 83 in procedure "kermit_log_mgr_" set ref 378 383* 414 time 000624 automatic float bin(63) dcl 106 set ref 273* 274 276 true constant bit(1) initial packed unaligned dcl 24 ref 307 367 479 491 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Direct_input internal static fixed bin(17,0) initial dcl 1-15 Direct_output internal static fixed bin(17,0) initial dcl 1-15 Direct_update internal static fixed bin(17,0) initial dcl 1-15 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 1-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 1-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 1-15 Sequential_input internal static fixed bin(17,0) initial dcl 1-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 1-15 Sequential_output internal static fixed bin(17,0) initial dcl 1-15 Sequential_update internal static fixed bin(17,0) initial dcl 1-15 Stream_input internal static fixed bin(17,0) initial dcl 1-15 Stream_input_output internal static fixed bin(17,0) initial dcl 1-15 error_table_$noarg external static fixed bin(35,0) dcl 67 error_table_$too_many_args external static fixed bin(35,0) dcl 68 iox_modes internal static char(24) initial array dcl 1-6 kermit_bit_constants internal static structure level 1 packed packed unaligned dcl 3-27 kermit_char_constants based structure level 1 packed packed unaligned dcl 3-31 kermit_comm_info based structure level 1 dcl 3-176 kermit_comm_info_version internal static char(8) initial packed unaligned dcl 3-206 kermit_comm_infop automatic pointer dcl 3-205 kermit_comm_mgr_$flush_input 000000 constant entry external dcl 2-15 kermit_comm_mgr_$reset_line_modes 000000 constant entry external dcl 2-20 kermit_comm_mgr_$set_line_modes 000000 constant entry external dcl 2-25 kermit_fixed_constants based structure level 1 packed packed unaligned dcl 3-35 kermit_get_filenames_ 000000 constant entry external dcl 2-30 kermit_info_version internal static char(8) initial packed unaligned dcl 3-61 kermit_infop automatic pointer dcl 3-60 kermit_log_info_version internal static char(8) initial packed unaligned dcl 3-133 kermit_log_infop automatic pointer dcl 3-132 kermit_log_mgr_$display_stats 000000 constant entry external dcl 2-46 kermit_log_mgr_$log_message 000000 constant entry external dcl 2-55 kermit_log_mgr_$start 000000 constant entry external dcl 2-66 kermit_log_mgr_$stop 000000 constant entry external dcl 2-70 kermit_mode_mgr_$get 000000 constant entry external dcl 2-74 kermit_mode_mgr_$retrieve 000000 constant entry external dcl 2-78 kermit_mode_mgr_$set 000000 constant entry external dcl 2-86 kermit_mode_mgr_$store 000000 constant entry external dcl 2-90 kermit_pad_$receive 000000 constant entry external dcl 2-97 kermit_pad_$send 000000 constant entry external dcl 2-108 kermit_perm_mode_count internal static fixed bin(17,0) initial dcl 3-83 kermit_perm_modes based structure level 1 dcl 3-77 kermit_perm_modes_version internal static char(8) initial packed unaligned dcl 3-84 kermit_perm_modesp automatic pointer dcl 3-82 kermit_receive_$receive_from_remote 000000 constant entry external dcl 2-118 kermit_send_$send_to_remote 000000 constant entry external dcl 2-128 kermit_server_ 000000 constant entry external dcl 2-138 kermit_stats_infop automatic pointer dcl 3-160 kermit_temp_mode_count internal static fixed bin(17,0) initial dcl 3-105 kermit_temp_modes based structure level 1 dcl 3-99 kermit_temp_modes_version internal static char(8) initial packed unaligned dcl 3-106 kermit_temp_modesp automatic pointer dcl 3-104 kermit_xfer_modes_$check_params 000000 constant entry external dcl 2-144 kermit_xfer_modes_$get_local_params 000000 constant entry external dcl 2-157 kermit_xfer_modes_$init 000000 constant entry external dcl 2-152 kermit_xfer_modes_$process_params 000000 constant entry external dcl 2-166 short_iox_modes internal static char(4) initial array dcl 1-12 NAMES DECLARED BY EXPLICIT CONTEXT. close_log 000342 constant entry external dcl 128 disable 000433 constant entry external dcl 167 display_statistics 000467 constant entry external dcl 194 enable 001364 constant entry external dcl 287 end_log 001417 constant entry external dcl 316 kermit_log_mgr_ 000330 constant entry external dcl 7 log_message 001474 constant entry external dcl 348 open_log 002253 constant entry external dcl 425 start_log 002427 constant entry external dcl 459 NAMES DECLARED BY CONTEXT OR IMPLICATION. float builtin function ref 273 index builtin function ref 487 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3226 3314 2700 3236 Length 3634 2700 66 304 326 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME kermit_log_mgr_ 528 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME kermit_log_mgr_ 000100 argl kermit_log_mgr_ 000102 argp kermit_log_mgr_ 000104 atd kermit_log_mgr_ 000205 cps kermit_log_mgr_ 000206 cnm kermit_log_mgr_ 000216 dnm kermit_log_mgr_ 000270 ec kermit_log_mgr_ 000271 enm kermit_log_mgr_ 000301 extend kermit_log_mgr_ 000302 finished kermit_log_mgr_ 000402 i kermit_log_mgr_ 000404 interval kermit_log_mgr_ 000406 iocbp kermit_log_mgr_ 000410 last_send kermit_log_mgr_ 000411 message kermit_log_mgr_ 000442 nargs kermit_log_mgr_ 000443 path kermit_log_mgr_ 000524 started kermit_log_mgr_ 000624 time kermit_log_mgr_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_e_as r_ne_as alloc_char_temp call_ext_out_desc call_ext_out return_mac fl2_to_fx1 shorten_stack ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_status_code_ date_time_$format expand_pathname_$component get_shortest_path_ ioa_ ioa_$ioa_switch iox_$attach_name iox_$close iox_$detach_iocb iox_$open kermit_log_mgr_$close_log kermit_log_mgr_$disable kermit_log_mgr_$enable kermit_log_mgr_$open_log pathname_$component ssu_$abort_line ssu_$arg_count ssu_$arg_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt kermit_et_$log_not_disabled kermit_et_$log_open kermit_et_$no_log kermit_et_$no_valid_stats LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 7 000327 128 000335 142 000354 146 000355 151 000367 154 000375 155 000405 157 000423 160 000430 167 000431 183 000445 185 000460 187 000462 194 000463 211 000477 216 000523 220 000533 225 000562 227 000615 229 000644 233 000703 235 000710 236 000725 241 000746 247 000775 249 001035 252 001075 253 001116 257 001141 259 001164 261 001213 263 001242 265 001271 269 001314 273 001322 274 001331 276 001334 278 001341 280 001361 287 001362 301 001376 305 001377 307 001412 309 001414 316 001415 333 001427 334 001440 338 001451 341 001471 348 001472 366 001504 367 001515 369 001517 373 001521 378 001524 383 001564 384 001601 389 001634 390 001667 391 001713 393 001733 397 001756 400 002021 407 002067 408 002127 409 002167 414 002216 418 002246 425 002247 441 002273 444 002306 445 002331 447 002401 452 002424 459 002425 477 002437 479 002451 480 002453 484 002454 485 002463 487 002501 489 002526 491 002540 493 002547 494 002574 496 002576 501 002610 506 002624 508 002645 511 002665 513 002676 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved