COMPILATION LISTING OF SEGMENT gcos_user_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1119.98_Tue_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 /* ******************************************************************** 13* * * 14* * Modified by R.H. Morrison November 1974 * 15* * * 16* ******************************************************************** */ 17 18 19 gcos_user_: proc; 20 21 dcl gcos_daemon_stat_$root_dir char (168) aligned ext; /* directory containing gu table */ 22 dcl gcos_daemon_stat_$root_dir_len ext fixed bin; 23 dcl 24 (addr, index, null, substr) builtin, 25 (i, j) fixed bin, 26 (entry_gcos_account_id, insert_gcos_account_id) char (12), 27 proc_id char (10) init ("gcos_user_"), 28 bitcount fixed bin (24) init (0), 29 clock_ entry () returns (fixed bin (71)), 30 hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin (24), fixed bin (2), ptr, fixed bin (35)), 31 hcs_$set_bc_seg entry (ptr, fixed bin (24), fixed bin (35)), 32 person char (22), 33 project char (9), 34 (error_table_$segknown) fixed bin (35) external, 35 36 gut_index fixed bin, 37 gut_code fixed bin (35), 38 39 user_info_$whoami entry (char (*), char (*), char (*)), 40 buffer char (32); 41 42 dcl a_ptr ptr, 43 a_index fixed bin, 44 a_gaid char (12), 45 a_code fixed bin (35); 46 47 dcl fe_entry_sw bit (1) init ("0"b), 48 fe_user_no fixed bin; 49 50 dcl true bit (1) init ("1"b), 51 false bit (1) init ("0"b); 52 53 1 1 /* BEGIN INCLUDE FILE...gcos_user_table_.incl.pl1 */ 1 2 2 1 /* BEGIN INCLUDE FILE...gcos_user_table_hdr_.incl.pl1 */ 2 2 2 3 dcl gutp ptr internal static init (null), /* pointer to table origin */ 2 4 2 5 1 gcos_user_table_ based (gutp), 2 6 2 gut_version_no fixed bin, /* to identify table format */ 2 7 2 gut_hdr_len fixed bin,/* currently 128, includes global_ctl */ 2 8 2 9 2 gut_global_ctl_len fixed bin,/* currently 64 */ 2 10 2 gut_entry_len fixed bin,/* currently 32 */ 2 11 2 gut_last_update fixed bin (71), 2 12 2 gut_updater_id char (32), 2 13 2 gut_max_count fixed bin, 2 14 2 gut_active_count fixed bin, 2 15 2 gut_first_entry_index fixed bin, 2 16 2 gut_last_entry_index fixed bin, 2 17 2 gut_filler (46) fixed bin, /* rounds hdr to 64 words */ 2 18 2 19 2 gut_global_ctl,/* currently 64 words total */ 2 20 3 gut_global_ctl_filler (64) fixed bin, 2 21 2 22 2 gut_entry (gut_max_count), 2 23 3 gut_entry_status fixed bin, /* 0 => inactive, 1 => active */ 2 24 3 gut_entry_filler (31) fixed bin; 2 25 2 26 /* END INCLUDE FILE...gcos_user_table_hdr_.incl.pl1 */ 1 3 3 1 /* BEGIN INCLUDE FILE gcos_user_table_entry_.incl.pl1 November 1974 RHM */ 3 2 3 3 dcl gutep ptr, /* pointer to origin of based entry */ 3 4 3 5 1 gcos_user_table_entry_ based, 3 6 2 gute_status fixed bin, /* 0 => inactive, 1 => active */ 3 7 2 gute_filler_1 fixed bin, 3 8 2 gute_gcos_account_id char (12), /* probably 8 or fewer chars */ 3 9 2 gute_multics_person char (22), 3 10 2 gute_multics_project char (9), 3 11 2 gute_ctl, 3 12 3 gute_ctl_filler (18) fixed bin; 3 13 3 14 /* END INCLUDE FILE...gcos_user_table_entry_.incl.pl1 */ 1 4 1 5 1 6 /* END INCLUDE FILE...gcos_user_table_.incl.pl1 */ 54 55 56 /* argument processing */ 57 58 /* * * * * * * * * * * * * * * * * * * */ 59 60 add: entry (a_ptr, a_code); 61 62 if gutp = null then do; 63 call get_table_ (gutp, a_code); 64 if a_code ^= 0 then go to bad_gut_code; 65 end; 66 67 insert_gcos_account_id = a_ptr -> gute_gcos_account_id; 68 69 if gut_active_count = 0 then do; 70 append: gut_active_count = gut_active_count + 1; 71 addr (gut_entry (gut_active_count)) -> gcos_user_table_entry_ = 72 a_ptr -> gcos_user_table_entry_; 73 74 go to gu_ret; 75 end; 76 77 else do i = 1 to gut_active_count; 78 entry_gcos_account_id = addr (gut_entry (i)) -> gute_gcos_account_id; 79 if entry_gcos_account_id > insert_gcos_account_id then go to insert; 80 81 if entry_gcos_account_id = insert_gcos_account_id then do; 82 a_code = 5; 83 go to bad_gut_code; 84 end; 85 end; 86 87 if gut_active_count < gut_max_count then go to append; 88 else do; 89 a_code = 4; 90 go to bad_gut_code; 91 end; 92 93 insert: call move_entry_ (i, i+1, a_code); 94 if a_code ^= 0 then go to bad_gut_code; 95 96 addr (gut_entry (i)) -> gcos_user_table_entry_ = a_ptr -> gcos_user_table_entry_; 97 go to gu_ret; 98 99 /* * * * * * * * * * * * * * * * * * * */ 100 101 gu_ret: 102 bitcount = 36 * (gut_hdr_len + (gut_active_count * gut_entry_len)); 103 call hcs_$set_bc_seg (gutp, bitcount, a_code); 104 105 bad_gut_code: 106 gu_return: 107 108 return; 109 110 /* * * * * * * * * * * * * * * * * * * */ 111 112 move_entry_: proc (from_index, to_index, gut_code); 113 114 dcl (from_index, to_index) fixed bin, 115 gut_code fixed bin (35), 116 gut_index fixed bin, 117 delta fixed bin, 118 temp_count fixed bin; 119 120 temp_count = gut_active_count; 121 delta = to_index - from_index; 122 123 if from_index > to_index then do; 124 do gut_index = from_index to temp_count; 125 gut_entry (to_index) = gut_entry (gut_index); 126 to_index = to_index + 1; 127 end; 128 gut_code = 0; 129 end; 130 131 else do; 132 if gut_active_count + delta > gut_max_count then do; 133 gut_code = 4; 134 go to me_ret; 135 end; 136 137 do gut_index = (temp_count + delta) to to_index by -1; 138 /* to_index = from_index + delta */ 139 gut_entry (gut_index) = gut_entry (temp_count); 140 temp_count = temp_count - 1; 141 end; 142 143 gut_code = 0; 144 end; 145 146 gut_active_count = gut_active_count + delta; 147 148 me_ret: 149 return; 150 end move_entry_; 151 152 /* * * * * * * * * * * * * * * * * * * */ 153 154 get_table_: proc (gutp, gut_code); 155 156 dcl gutp ptr, 157 gut_code fixed bin (35); 158 159 gutp = null; 160 call hcs_$initiate_count (substr (gcos_daemon_stat_$root_dir, 1, gcos_daemon_stat_$root_dir_len), 161 "gcos_user_table_", "", 162 bitcount, 0, gutp, gut_code); 163 if (gut_code = 0 | gut_code = error_table_$segknown) then do; 164 if bitcount ^= 0 then do; 165 call validate_table_ (gut_code); 166 if gut_code ^= 0 then gutp = null; 167 end; 168 else gut_code = 0; 169 end; 170 171 gt_ret: 172 return; 173 end get_table_; 174 175 /* * * * * * * * * * * * * * * * * * * */ 176 177 validate_table_: proc (gut_code); 178 179 dcl gut_code fixed bin (35); 180 181 if bitcount = (gut_hdr_len + (gut_active_count * gut_entry_len)) * 36 then do; 182 gut_code = 0; 183 go to vt_ret; 184 end; 185 else gut_code = 3; 186 187 vt_ret: 188 return; 189 end validate_table_; 190 191 /* * * * * * * * * * * * * * * * * * * */ 192 193 init_table: entry (a_code); 194 195 call get_table_ (gutp, gut_code); /* force "get" for latest bitcount */ 196 if gut_code ^= 0 then do; 197 a_code = gut_code; 198 go to bad_gut_code; 199 end; 200 201 if bitcount ^= 0 then do; 202 a_code = 10; 203 go to bad_gut_code; 204 end; 205 206 gut_version_no = 1; 207 gut_hdr_len = 128; /* includes global_ctl_len */ 208 gut_global_ctl_len = 64; 209 gut_entry_len = 32; 210 gut_last_update = clock_ (); 211 212 call user_info_$whoami (person, project, buffer); 213 214 i = index (person, " "); 215 if i = 0 then i = 22; 216 else i = i - 1; 217 j = index (project, " "); 218 if j = 0 then j = 9; 219 else j = j - 1; 220 gut_updater_id = substr (person, 1, i) || "." || substr (project, 1, j); 221 222 gut_max_count = 1000; 223 gut_active_count = 0; 224 gut_first_entry_index = 0; 225 gut_last_entry_index = 0; 226 227 gut_filler = 0; 228 gut_global_ctl_filler = 0; 229 a_code = 0; 230 go to gu_ret; 231 232 /* * * * * * * * * * * * * * * * * * * */ 233 234 find_entry: entry (a_gaid, a_index, a_ptr, a_code); /* should be changed to eliminate parameter dependence */ 235 236 fe_entry_sw = true; 237 238 if gutp = null then do; 239 call get_table_ (gutp, gut_code); 240 if gut_code ^= 0 then do; 241 a_code = gut_code; 242 fe_not_found: 243 a_ptr = null; 244 a_index = 0; 245 go to fe_ret; 246 end; 247 end; 248 249 fe_local_entry: 250 a_code = 0; 251 do gut_index = 1 to gut_active_count; 252 a_ptr = addr (gut_entry (gut_index)); 253 if a_ptr -> gute_gcos_account_id = a_gaid then go to fe_ret; 254 end; 255 256 a_code = 1; 257 a_ptr = null; 258 gut_index = 0; 259 260 fe_ret: 261 if fe_entry_sw then do; 262 a_index = gut_index; 263 fe_entry_sw = false; 264 go to gu_return; 265 end; 266 267 else go to fe_user (fe_user_no); 268 269 /* * * * * * * * * * * * * * * * * * * */ 270 271 validate: entry (a_gaid, a_ptr, a_code); 272 273 if gutp = null then do; 274 call get_table_ (gutp, gut_code); 275 if gut_code ^= 0 then do; 276 a_code = gut_code; 277 go to bad_gut_code; 278 end; 279 end; 280 281 fe_user_no = 1; 282 go to fe_local_entry; 283 284 fe_user (1): 285 if a_code ^= 0 then go to vd_reject; 286 287 if a_gaid ^= a_ptr -> gute_gcos_account_id then do; 288 a_code = 2; 289 vd_reject: 290 a_ptr = null; 291 go to bad_gut_code; 292 end; 293 294 a_code = 0; 295 go to gu_ret; 296 297 /* * * * * * * * * * * * * * * * * * * */ 298 299 delete: entry (a_gaid, a_index, a_code); 300 301 if gutp = null then do; 302 call get_table_ (gutp, gut_code); 303 if gut_code ^= 0 then do; 304 a_code = gut_code; 305 go to bad_gut_code; 306 end; 307 end; 308 309 if gut_active_count = 0 then do; 310 a_code = 7; 311 go to bad_gut_code; 312 end; 313 314 if addr (gut_entry (a_index)) -> gute_gcos_account_id ^= a_gaid then do; 315 a_code = 1; 316 go to bad_gut_code; 317 end; 318 319 if a_index = gut_active_count then do; 320 gut_active_count = gut_active_count - 1; /* don't bother calling move_entry */ 321 go to gu_ret; 322 end; 323 324 call move_entry_ (a_index + 1, a_index, gut_code); 325 if gut_code ^= 0 then do; 326 a_code = gut_code; 327 go to bad_gut_code; 328 end; 329 330 go to gu_ret; 331 332 /* * * * * * * * * * * * * * * * * * * */ 333 334 get_table_ptr: entry (a_ptr, a_code); 335 336 if gutp = null then do; 337 call get_table_ (gutp, gut_code); 338 if gut_code ^= 0 then do; 339 a_ptr = null; 340 a_code = gut_code; 341 go to bad_gut_code; 342 end; 343 end; 344 345 a_ptr = gutp; 346 a_code = 0; 347 go to gu_return; 348 349 /* * * * * * * * * * * * * * * * * * * */ 350 351 end gcos_user_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1119.9 gcos_user_.pl1 >udd>sm>ds>w>ml>gcos_user_.pl1 54 1 03/27/82 0539.3 gcos_user_table_.incl.pl1 >ldd>incl>gcos_user_table_.incl.pl1 1-3 2 03/27/82 0539.3 gcos_user_table_hdr_.incl.pl1 >ldd>incl>gcos_user_table_hdr_.incl.pl1 1-4 3 03/27/82 0539.3 gcos_user_table_entry_.incl.pl1 >ldd>incl>gcos_user_table_entry_.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 42 set ref 60 63* 64 82* 89* 93* 94 103* 193 197* 202* 229* 234 241* 249* 256* 271 276* 284 288* 294* 299 304* 310* 315* 326* 334 340* 346* a_gaid parameter char(12) packed unaligned dcl 42 ref 234 253 271 287 299 314 a_index parameter fixed bin(17,0) dcl 42 set ref 234 244* 262* 299 314 319 324 324* a_ptr parameter pointer dcl 42 set ref 60 67 71 96 234 242* 252* 253 257* 271 287 289* 334 339* 345* addr builtin function dcl 23 ref 71 78 96 252 314 bitcount 000113 automatic fixed bin(24,0) initial dcl 23 set ref 23* 101* 103* 160* 164 181 201 buffer 000127 automatic char(32) packed unaligned dcl 23 set ref 212* clock_ 000016 constant entry external dcl 23 ref 210 delta 000163 automatic fixed bin(17,0) dcl 114 set ref 121* 132 137 146 entry_gcos_account_id 000102 automatic char(12) packed unaligned dcl 23 set ref 78* 79 81 error_table_$segknown 000024 external static fixed bin(35,0) dcl 23 ref 163 false 000142 automatic bit(1) initial packed unaligned dcl 50 set ref 50* 263 fe_entry_sw 000137 automatic bit(1) initial packed unaligned dcl 47 set ref 47* 236* 260 263* fe_user_no 000140 automatic fixed bin(17,0) dcl 47 set ref 260 281* from_index parameter fixed bin(17,0) dcl 114 ref 112 121 123 124 gcos_daemon_stat_$root_dir 000012 external static char(168) dcl 21 ref 160 160 gcos_daemon_stat_$root_dir_len 000014 external static fixed bin(17,0) dcl 22 ref 160 160 gcos_user_table_ based structure level 1 unaligned dcl 2-3 gcos_user_table_entry_ based structure level 1 unaligned dcl 3-3 set ref 71* 71 96* 96 gut_active_count 17 based fixed bin(17,0) level 2 dcl 2-3 set ref 69 70* 70 71 77 87 101 120 132 146* 146 181 223* 251 309 319 320* 320 gut_code parameter fixed bin(35,0) dcl 156 in procedure "get_table_" set ref 154 160* 163 163 165* 166 168* gut_code parameter fixed bin(35,0) dcl 114 in procedure "move_entry_" set ref 112 128* 133* 143* gut_code parameter fixed bin(35,0) dcl 179 in procedure "validate_table_" set ref 177 182* 185* gut_code 000126 automatic fixed bin(35,0) dcl 23 in procedure "gcos_user_" set ref 195* 196 197 239* 240 241 274* 275 276 302* 303 304 324* 325 326 337* 338 340 gut_entry 200 based structure array level 2 unaligned dcl 2-3 set ref 71 78 96 125* 125 139* 139 252 314 gut_entry_len 3 based fixed bin(17,0) level 2 dcl 2-3 set ref 101 181 209* gut_filler 22 based fixed bin(17,0) array level 2 dcl 2-3 set ref 227* gut_first_entry_index 20 based fixed bin(17,0) level 2 dcl 2-3 set ref 224* gut_global_ctl 100 based structure level 2 unaligned dcl 2-3 gut_global_ctl_filler 100 based fixed bin(17,0) array level 3 dcl 2-3 set ref 228* gut_global_ctl_len 2 based fixed bin(17,0) level 2 dcl 2-3 set ref 208* gut_hdr_len 1 based fixed bin(17,0) level 2 dcl 2-3 set ref 101 181 207* gut_index 000125 automatic fixed bin(17,0) dcl 23 in procedure "gcos_user_" set ref 251* 252* 258* 262 gut_index 000162 automatic fixed bin(17,0) dcl 114 in procedure "move_entry_" set ref 124* 125* 137* 139* gut_last_entry_index 21 based fixed bin(17,0) level 2 dcl 2-3 set ref 225* gut_last_update 4 based fixed bin(71,0) level 2 dcl 2-3 set ref 210* gut_max_count 16 based fixed bin(17,0) level 2 dcl 2-3 set ref 87 132 222* gut_updater_id 6 based char(32) level 2 packed packed unaligned dcl 2-3 set ref 220* gut_version_no based fixed bin(17,0) level 2 dcl 2-3 set ref 206* gute_gcos_account_id 2 based char(12) level 2 packed packed unaligned dcl 3-3 set ref 67 78 253 287 314 gutp 000010 internal static pointer initial dcl 2-3 in procedure "gcos_user_" set ref 62 63* 69 70 70 71 71 77 78 87 87 96 101 101 101 103* 120 125 125 132 132 139 139 146 146 181 181 181 195* 206 207 208 209 210 220 222 223 224 225 227 228 238 239* 251 252 273 274* 301 302* 309 314 319 320 320 336 337* 345 gutp parameter pointer dcl 156 in procedure "get_table_" set ref 154 159* 160* 166* hcs_$initiate_count 000020 constant entry external dcl 23 ref 160 hcs_$set_bc_seg 000022 constant entry external dcl 23 ref 103 i 000100 automatic fixed bin(17,0) dcl 23 set ref 77* 78* 93* 93 96 214* 215 215* 216* 216 220 index builtin function dcl 23 ref 214 217 insert_gcos_account_id 000105 automatic char(12) packed unaligned dcl 23 set ref 67* 79 81 j 000101 automatic fixed bin(17,0) dcl 23 set ref 217* 218 218* 219* 219 220 null builtin function dcl 23 ref 62 159 166 238 242 257 273 289 301 336 339 person 000114 automatic char(22) packed unaligned dcl 23 set ref 212* 214 220 proc_id 000110 automatic char(10) initial packed unaligned dcl 23 set ref 23* project 000122 automatic char(9) packed unaligned dcl 23 set ref 212* 217 220 substr builtin function dcl 23 ref 160 160 220 220 temp_count 000164 automatic fixed bin(17,0) dcl 114 set ref 120* 124 137 139 140* 140 to_index parameter fixed bin(17,0) dcl 114 set ref 112 121 123 125 126* 126 137 true 000141 automatic bit(1) initial packed unaligned dcl 50 set ref 50* 236 user_info_$whoami 000026 constant entry external dcl 23 ref 212 NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. gutep automatic pointer dcl 3-3 NAMES DECLARED BY EXPLICIT CONTEXT. add 000057 constant entry external dcl 60 append 000125 constant label dcl 70 ref 87 bad_gut_code 000265 constant label dcl 105 ref 64 83 90 94 198 203 277 291 305 311 316 327 341 delete 000715 constant entry external dcl 299 fe_local_entry 000557 constant label dcl 249 ref 282 fe_not_found 000552 constant label dcl 242 fe_ret 000613 constant label dcl 260 ref 245 253 fe_user 000000 constant label array(1) dcl 284 ref 260 find_entry 000515 constant entry external dcl 234 gcos_user_ 000044 constant entry external dcl 19 get_table_ 001207 constant entry internal dcl 154 ref 63 195 239 274 302 337 get_table_ptr 001024 constant entry external dcl 334 gt_ret 001322 constant label dcl 171 gu_ret 000236 constant label dcl 101 ref 74 97 230 295 321 330 gu_return 000265 constant label dcl 105 ref 264 347 init_table 000271 constant entry external dcl 193 insert 000204 constant label dcl 93 ref 79 me_ret 001206 constant label dcl 148 ref 134 move_entry_ 001070 constant entry internal dcl 112 ref 93 324 validate 000631 constant entry external dcl 271 validate_table_ 001323 constant entry internal dcl 177 ref 165 vd_reject 000704 constant label dcl 289 ref 284 vt_ret 001353 constant label dcl 187 ref 183 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1534 1564 1355 1544 Length 2044 1355 30 243 156 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gcos_user_ 214 external procedure is an external procedure. move_entry_ internal procedure shares stack frame of external procedure gcos_user_. get_table_ internal procedure shares stack frame of external procedure gcos_user_. validate_table_ internal procedure shares stack frame of external procedure gcos_user_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 gutp gcos_user_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gcos_user_ 000100 i gcos_user_ 000101 j gcos_user_ 000102 entry_gcos_account_id gcos_user_ 000105 insert_gcos_account_id gcos_user_ 000110 proc_id gcos_user_ 000113 bitcount gcos_user_ 000114 person gcos_user_ 000122 project gcos_user_ 000125 gut_index gcos_user_ 000126 gut_code gcos_user_ 000127 buffer gcos_user_ 000137 fe_entry_sw gcos_user_ 000140 fe_user_no gcos_user_ 000141 true gcos_user_ 000142 false gcos_user_ 000162 gut_index move_entry_ 000163 delta move_entry_ 000164 temp_count move_entry_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac mpfx2 shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ hcs_$initiate_count hcs_$set_bc_seg user_info_$whoami THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$segknown gcos_daemon_stat_$root_dir gcos_daemon_stat_$root_dir_len LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 23 000030 47 000035 50 000036 19 000043 60 000052 62 000072 63 000077 64 000107 67 000111 69 000121 70 000125 71 000130 74 000140 77 000141 78 000147 79 000160 81 000166 82 000167 83 000171 85 000172 87 000174 89 000201 90 000203 93 000204 94 000221 96 000223 97 000235 101 000236 103 000253 105 000265 193 000266 195 000302 196 000313 197 000315 198 000316 201 000317 202 000321 203 000323 206 000324 207 000327 208 000332 209 000334 210 000336 212 000344 214 000365 215 000376 216 000402 217 000404 218 000415 219 000421 220 000423 222 000454 223 000457 224 000460 225 000461 227 000462 228 000474 229 000506 230 000507 234 000510 236 000530 238 000532 239 000537 240 000547 241 000551 242 000552 244 000554 245 000556 249 000557 251 000560 252 000571 253 000576 254 000604 256 000606 257 000610 258 000612 260 000613 262 000617 263 000622 264 000624 271 000625 273 000644 274 000651 275 000661 276 000663 277 000664 281 000665 282 000667 284 000670 287 000672 288 000702 289 000704 291 000706 294 000707 295 000710 299 000711 301 000726 302 000733 303 000743 304 000745 305 000746 309 000747 310 000753 311 000755 314 000756 315 000770 316 000772 319 000773 320 000776 321 001000 324 001001 325 001015 326 001017 327 001020 330 001021 334 001022 336 001037 337 001044 338 001054 339 001056 340 001060 341 001062 345 001063 346 001066 347 001067 112 001070 120 001072 121 001076 123 001101 124 001104 125 001113 126 001131 127 001132 128 001134 129 001136 132 001137 133 001143 134 001145 137 001146 139 001157 140 001173 141 001175 143 001200 146 001202 148 001206 154 001207 159 001211 160 001213 163 001274 164 001303 165 001305 166 001313 167 001320 168 001321 171 001322 177 001323 181 001325 182 001345 183 001347 185 001350 187 001353 ----------------------------------------------------------- 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