COMPILATION LISTING OF SEGMENT v1_forum_trans_mgr_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/30/84 1236.3 mst Tue Options: optimize map 1 /* *************************************************************** 2* * * 3* * Copyright (c) 1982 by Massachusetts Institute of Technology * 4* * * 5* *************************************************************** */ 6 7 8 /* 9* * v1_forum_trans_mgr_ Manager of forum transactions. We call v1_forum_mgr_ to initiate or otherwise 10* deal with forums as a whole */ 11 12 /* Original code By Mike Auerbach and Jeff Schiller 13* 1/82 Jay Pattin Many changes for forum and general reorganization 14* 2/16/82 Jay Pattin added list_acl 15* 3/29/82 Jay Pattin added privileged entries 16* 4/16/82 Jay Pattin added force_acl to make privileged entries work correctly 17* 5/05/82 Jay Pattin added support for read only participants 18* 8/20/82 Jay Pattin to check entry names and anonymous users 19* 10/9/82 Jay Pattin added trans_time_info, user deletion of own transactions 20* 11/14/82 Jay Pattin split off forum_space_mgr_. 21* 8/5/83 Jay Pattin new notifications */ 22 23 v1_forum_trans_mgr_$enter_trans: 24 procedure (a_forum_idx, a_input_string, a_previous_trans, a_subject, a_filled_sw, a_trans_no, a_code); 25 26 declare (a_attendee_idx fixed bin, 27 a_code fixed bin (35), /* returned status code */ 28 a_deleted_sw bit (1) aligned, 29 a_filled_sw bit (1) aligned, 30 a_first_trans_idx fixed bin, 31 a_flags_word bit (36) aligned, 32 a_forum_idx fixed bin, /* index in forum data of this forum */ 33 (a_high_time, a_low_time) fixed bin (71), 34 (a_high_trans, a_low_trans) fixed bin, 35 a_input_string char (*), 36 a_last_trans_idx fixed bin, 37 a_last_seen_trans_idx fixed bin, 38 a_new_trans_count fixed bin, 39 a_output_area ptr, /* pointer to area to allocate text in */ 40 a_output_ptr ptr, /* pointer to transaction structure (output) */ 41 (a_pref, a_nref) fixed bin, 42 a_previous_trans fixed bin, /* transaction to chain this one from, 0 if none */ 43 a_subject char (*), 44 a_trans_no fixed bin, 45 a_type fixed bin, 46 a_uid bit (36) aligned, 47 a_user_name char (*), 48 a_value_sw bit (1) aligned) parameter; 49 50 declare anon_sw bit (1) aligned, 51 attendee_idx fixed bin, /* index into attendee part of forum */ 52 chairman bit (1) aligned, 53 code fixed bin (35), 54 dir_name char (168), 55 done bit (1) aligned, 56 forum_idx fixed bin, 57 forum_name char (32), 58 input_len fixed bin, 59 (high_time, low_time) fixed bin (71), 60 (high_trans, low_trans) fixed bin, 61 i fixed bin, 62 message char (256), 63 new_trans_count fixed bin, 64 next_trans_ptr ptr, /* pointer to next transaction in proceedings segment */ 65 person_id char (22), 66 (nref, pref) fixed bin, 67 project_id char (9), 68 transx fixed bin, 69 trans_no fixed bin, 70 trans_ptr ptr, /* pointer to transaction in proceedings segment */ 71 type fixed bin, 72 uid bit (36) aligned, 73 user_name char (32), 74 value_sw bit (1) aligned, 75 (write_allowed, privileged) bit (1) aligned, 76 (any_other, area, out_of_bounds, record_quota_overflow, seg_fault_error, cleanup) 77 condition, 78 (addr, clock, rtrim, length, null, ptr, substr) 79 builtin; 80 81 declare v1_forum_mgr_$get_ptrs entry (fixed bin, ptr, ptr, fixed bin, bit (1) aligned, fixed bin (35)), 82 v1_forum_mgr_$unlock entry (ptr), 83 forum_notify_gate_$lookup entry (char (*), bit (1) aligned, fixed bin (35)), 84 hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)), 85 hcs_$force_write entry (ptr, bit (36), fixed bin (35)), 86 hcs_$get_uid_seg entry (ptr, bit (36) aligned, fixed bin (35)), 87 hcs_$wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)), 88 ioa_$rsnnl entry options (variable), 89 send_mail_ entry (char (*), char (*), ptr, fixed bin (35)), 90 user_info_$login_data entry (char (*), char (*), char (*), fixed bin, fixed bin, fixed bin, 91 fixed bin (71), char (*)); 92 93 declare (error_table_$noalloc, 94 error_table_$seg_busted) fixed bin (35) external; 95 96 declare (forum_error_table_$cant_notify, 97 forum_error_table_$no_message, 98 forum_error_table_$message_too_long, 99 forum_error_table_$incorrect_uid, 100 forum_error_table_$meeting_bloat, 101 forum_error_table_$invalid_trans_idx, 102 forum_error_table_$read_only, 103 forum_error_table_$rqo, 104 forum_error_table_$trans_deleted, 105 forum_error_table_$chairman_only, 106 forum_error_table_$trans_reaped, 107 forum_error_table_$invalid_att_idx, 108 forum_error_table_$unexpected_fault) 109 fixed bin (35) external; 110 111 declare (forum_data_$print_eligibility_messages, 112 forum_data_$chairman_override) 113 bit (1) aligned external; 114 115 declare egress label variable, 116 output_area area based (a_output_area), 117 proceeding_string char (alloc_text_length) based (trans_ptr), 118 transaction char (input_len) based; 119 1 1 /* START OF: forum_structures.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 1 2 1 3 declare forum_control_ptr ptr, 1 4 proceedings_ptr ptr; 1 5 1 6 declare 1 forum_control aligned based (forum_control_ptr), 1 7 2 forum_lock bit (36), /* Proceedings lock. */ 1 8 2 next_trans_loc fixed bin (35), /* Characters in proceedings. */ 1 9 2 flags unaligned, 1 10 3 mbz0 bit (3) unaligned, /* Already wasted on acl stuff at MIT */ 1 11 3 msg_init bit (1) unaligned, /* On if message info is valid */ 1 12 3 am_init bit (1) unaligned, /* next value is valid */ 1 13 3 am_print_acl_msg bit (1) unaligned, /* what administrator says */ 1 14 3 cm_init bit (1) unaligned, /* next value is valid */ 1 15 3 cm_print_acl_msg bit (1) unaligned, /* what chairman says */ 1 16 3 adjourned bit (1) unaligned, /* temporarily out of service, per chairman request */ 1 17 3 mbz1 bit (9) unaligned, /* Future expansion */ 1 18 2 no_transactions fixed bin unaligned,/* Transaction sequence number. */ 1 19 2 message_loc fixed bin unaligned,/* location of chairman message in proceedings seg */ 1 20 2 no_attendees fixed bin unaligned,/* Number of participants. */ 1 21 2 mbz2 bit (18) unaligned, 1 22 2 no_deleted fixed bin unaligned, 1 23 2 chairman unaligned, 1 24 3 person_id char (22), 1 25 3 project_id char (9), 1 26 2 attendee (500), /* Attendee data. */ 1 27 3 person_id char (22) unaligned, 1 28 3 project_id char (11) unaligned, 1 29 3 attending bit (1) unaligned, 1 30 3 deleted bit (1) unaligned, 1 31 3 interesting bit (1) unaligned, /* tentative, not used yet */ 1 32 3 notify bit (1) unaligned, 1 33 3 removed bit (1) unaligned, /* on if set_participate_off used */ 1 34 3 write_allowed bit (1) unaligned, 1 35 3 acl_change_pending bit (1) unaligned, 1 36 3 message_changed bit (1) unaligned, 1 37 3 unused_flags bit (1) unaligned, /* Spare flag. */ 1 38 3 last_time_attended fixed bin (71), /* date/time last attended */ 1 39 3 lock_id bit (36) aligned, /* Used to check validity of attending. */ 1 40 3 highest_trans_seen fixed bin, 1 41 3 process_id bit (36), 1 42 3 public_wakeup_chan fixed bin (71), /* Transaction channel. */ 1 43 2 transactions (0 refer (forum_control.no_transactions)) aligned like one_transaction; 1 44 1 45 declare 1 one_transaction aligned based, 1 46 2 person_id char (22) unaligned, 1 47 2 project_id char (11) unaligned, 1 48 2 deleted bit (1) unaligned, /* logically removed */ 1 49 2 gone bit (1) unaligned, /* physically removed via compaction */ 1 50 2 unfilled bit (1) unaligned, /* on if trans entered unfilled */ 1 51 2 deleted_by_author bit (1) unaligned, /* as opposed to deleted by chairman */ 1 52 2 unused bit (23) unaligned, 1 53 2 prior_ref_index fixed bin, /* index to trans I refer to */ 1 54 2 next_ref_index fixed bin, /* index to trans referring to me */ 1 55 2 subject char (72) unaligned, 1 56 2 time fixed bin (71), /* date-time of entry */ 1 57 2 offset fixed bin (35), /* Where text of transaction begins */ 1 58 2 length fixed bin (21); /* in bytes */ 1 59 1 60 declare ipc_message fixed bin (71) based (msg_ptr), /* message for inter-process calls */ 1 61 msg_ptr ptr static; 1 62 1 63 declare 1 forum_message aligned, /* what we're trying to tell other process(es) */ 1 64 2 forum_uid bit (36) aligned, /* what forum */ 1 65 2 index fixed bin; /* who did it? */ 1 66 1 67 /* END OF: forum_structures.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 120 121 2 1 /* ... BEGIN INCLUDE FILE forum_flags.incl.pl1 ... */ 2 2 2 3 /* Flags returned by forum_$forum_limits 2 4* Jay Pattin 5/5/82 */ 2 5 2 6 dcl forum_flags_word bit (36) aligned; 2 7 2 8 dcl 1 forum_flags aligned based (addr (forum_flags_word)), 2 9 2 chairman bit (1) unaligned, 2 10 2 read_only bit (1) unaligned, 2 11 2 print_cm_message bit (1) unaligned, 2 12 2 print_acl_message bit (1) unaligned, 2 13 2 acl_has_changed bit (1) unaligned, 2 14 2 adjourned bit (1) unaligned, 2 15 2 mbz bit (30) unaligned; 2 16 2 17 /* END INCLUDE FILE forum_flags.incl.pl1 */ 122 123 3 1 /* BEGIN INCLUDE FILE: forum_user_trans.incl.pl1 */ 3 2 3 3 dcl alloc_text_length fixed bin (21); /* length of text area to allocate */ 3 4 dcl alloc_subject_length fixed bin (21); /* length of subject area to allocate */ 3 5 dcl forum_user_trans_ptr ptr; /* pointer to below structure */ 3 6 3 7 dcl 1 forum_user_trans based (forum_user_trans_ptr) aligned, 3 8 2 type fixed bin, /* type of transaction */ 3 9 2 person_id char (22), /* person_id of author of this transaction */ 3 10 2 project_id char (9), /* project_id of author of this transaction */ 3 11 2 time fixed bin (71), /* time transaction was entered */ 3 12 2 trans_no fixed bin, /* number of this transaction */ 3 13 2 next_trans_ptr ptr, /* pointer (in user ring) of next transaction */ 3 14 2 prev_trans_ptr ptr, /* pointer (in user ring) of previous transaction */ 3 15 2 subject_length fixed bin (21), /* length of subject field of transaction */ 3 16 2 text_length fixed bin (21), /* length of text field of transaction */ 3 17 2 unfilled bit (1) aligned, /* set if transaction is NOT stored filled */ 3 18 2 subject char (alloc_subject_length refer (forum_user_trans.subject_length)) unaligned, /* subject of transaction */ 3 19 2 text char (alloc_text_length refer (forum_user_trans.text_length)) unaligned; /* text of transaction */ 3 20 3 21 declare user_trans_type fixed bin static options (constant) initial (1); 3 22 declare message_type fixed bin static options (constant) initial (2); 3 23 3 24 declare (ONLY_UNDELETED init (0), 3 25 INCLUDE_DELETED init (1), 3 26 ONLY_DELETED init (2)) 3 27 fixed bin static options (constant); 3 28 3 29 /* END INCLUDE FILE: forum_user_trans.incl.pl1 */ 124 125 4 1 /* BEGIN send_mail_info include file */ 4 2 4 3 dcl send_mail_info_version_2 fixed bin init(2); 4 4 4 5 dcl 1 send_mail_info aligned, 4 6 2 version fixed bin, /* = 2 */ 4 7 2 sent_from char(32) aligned, 4 8 2 switches, 4 9 3 wakeup bit(1) unal, 4 10 3 mbz1 bit(1) unal, 4 11 3 always_add bit(1) unal, 4 12 3 never_add bit(1) unal, 4 13 3 notify bit(1) unal, 4 14 3 acknowledge bit(1) unal, 4 15 3 mbz bit(30) unal; 4 16 4 17 /* END send_mail_info include file */ 126 127 128 /* v1_forum_trans_mgr_$enter_trans: 129* entry (a_forum_idx, a_input_string, a_previous_trans, a_subject, a_filled_sw, a_trans_no, a_code); */ 130 131 forum_idx = a_forum_idx; /* copy for safety against user ring */ 132 133 call initialize (ENTER_PUNT); 134 135 on cleanup call v1_forum_mgr_$unlock (forum_control_ptr); 136 on seg_fault_error call error (error_table_$seg_busted); 137 on any_other call error (forum_error_table_$unexpected_fault); 138 139 call v1_forum_mgr_$get_ptrs (forum_idx, forum_control_ptr, proceedings_ptr, attendee_idx, write_allowed, code); 140 if code ^= 0 then call error (code); 141 if ^write_allowed then call error (forum_error_table_$read_only); 142 143 next_trans_ptr = ptr (proceedings_ptr, forum_control.next_trans_loc); 144 on out_of_bounds call error (forum_error_table_$meeting_bloat); 145 on record_quota_overflow call error (forum_error_table_$rqo); 146 147 input_len = length (a_input_string); 148 149 next_trans_ptr -> transaction = a_input_string; 150 151 revert out_of_bounds; 152 153 call hcs_$force_write (proceedings_ptr, (""b), (0)); 154 155 transx = forum_control.no_transactions + 1; 156 157 forum_control.transactions (transx).offset = forum_control.next_trans_loc; 158 forum_control.transactions (transx).length = input_len; 159 160 forum_control.transactions (transx).person_id = forum_control.attendee (attendee_idx).person_id; 161 forum_control.transactions (transx).project_id = forum_control.attendee (attendee_idx).project_id; 162 forum_control.transactions (transx).time = clock (); 163 forum_control.transactions (transx).subject = a_subject; 164 forum_control.transactions (transx).prior_ref_index, 165 forum_control.transactions (transx).next_ref_index = 0; 166 forum_control.transactions (transx).unfilled = a_filled_sw; 167 forum_control.transactions (transx).deleted, 168 forum_control.transactions (transx).gone = "0"b; 169 170 pref = a_previous_trans; /* copy into lower ring */ 171 172 if pref ^= 0 then /* link this transaction into reply chain if apropriate */ 173 do; 174 do while (forum_control.transactions (pref).next_ref_index ^= 0); 175 pref = forum_control.transactions (pref).next_ref_index; 176 end; 177 forum_control.transactions (pref).next_ref_index = transx; 178 forum_control.transactions (transx).prior_ref_index = pref; 179 end; 180 181 forum_control.next_trans_loc = forum_control.next_trans_loc + (input_len + 3) / 4; 182 a_trans_no, forum_control.no_transactions = transx; /* atomic commit point */ 183 184 revert seg_fault_error; 185 revert record_quota_overflow; 186 on any_other call error (forum_error_table_$cant_notify); 187 188 call hcs_$get_uid_seg (forum_control_ptr, uid, code); 189 if code ^= 0 then call error (code); 190 191 msg_ptr = addr (forum_message); 192 forum_message.forum_uid = uid; /* for validation purposes */ 193 forum_message.index = attendee_idx; 194 195 call hcs_$fs_get_path_name (forum_control_ptr, dir_name, (0), forum_name, code); 196 if code ^= 0 then call error (code); 197 198 forum_name = substr (forum_name, 1, length (rtrim (forum_name)) - length (".control")); 199 call ioa_$rsnnl ("A new transaction has just been added to the ^a>^a meeting.", message, (0), 200 dir_name, forum_name); 201 202 send_mail_info.version = 2; 203 send_mail_info.sent_from = "forum"; 204 string (send_mail_info.switches) = ""b; 205 send_mail_info.wakeup, send_mail_info.always_add = "1"b; 206 207 do transx = 1 to forum_control.no_attendees; 208 if transx = attendee_idx then goto NEXT; 209 if forum_control.attendee (transx).attending & ^forum_control.attendee (transx).removed then 210 call hcs_$wakeup (forum_control.attendee (transx).process_id, 211 forum_control.attendee (transx).public_wakeup_chan, ipc_message, (0)); 212 else if forum_control.attendee (transx).notify & ^forum_control.attendee (transx).removed then do; 213 call forum_notify_gate_$lookup (forum_control.attendee (transx).person_id, done, code); 214 if done & code = 0 then 215 call send_mail_ (rtrim (forum_control.attendee (transx).person_id) || "." || 216 rtrim (forum_control.attendee (transx).project_id), 217 rtrim (message), addr (send_mail_info), (0)); 218 end; 219 NEXT: end; 220 code = 0; 221 222 ENTER_PUNT: 223 224 call v1_forum_mgr_$unlock (forum_control_ptr); 225 a_code = code; 226 return; 227 228 v1_forum_trans_mgr_$read_trans: 229 entry (a_forum_idx, a_trans_no, a_output_area, a_output_ptr, a_code); 230 231 trans_no = a_trans_no; /* copy trans_no to inner ring */ 232 233 call initialize (READ_PUNT); 234 235 on cleanup call v1_forum_mgr_$unlock (forum_control_ptr); 236 on seg_fault_error call error (error_table_$seg_busted); 237 on any_other call error (forum_error_table_$unexpected_fault); 238 239 call v1_forum_mgr_$get_ptrs (a_forum_idx, forum_control_ptr, proceedings_ptr, 240 attendee_idx, (""b), code); 241 if code ^= 0 then call error (code); 242 243 if trans_no < 1 | trans_no > forum_control.no_transactions then 244 call error (forum_error_table_$invalid_trans_idx); 245 246 if forum_control.transactions (trans_no).deleted then 247 if person_id ^= forum_control.chairman.person_id & person_id ^= forum_control.transactions (trans_no).person_id then 248 call error (forum_error_table_$trans_deleted); 249 else if forum_control.transactions (trans_no).gone then call error (forum_error_table_$trans_reaped); 250 251 alloc_subject_length = length (forum_control.transactions (trans_no).subject); 252 alloc_text_length = forum_control.transactions (trans_no).length; 253 254 on area call error (error_table_$noalloc); 255 allocate forum_user_trans in (output_area) set (forum_user_trans_ptr); /* allocate structure in desired area */ 256 revert area; 257 258 trans_ptr = ptr (proceedings_ptr, forum_control.transactions (trans_no).offset); 259 260 forum_user_trans.type = user_trans_type; 261 forum_user_trans.person_id = forum_control.transactions (trans_no).person_id; 262 forum_user_trans.project_id = forum_control.transactions (trans_no).project_id; 263 forum_user_trans.trans_no = trans_no; 264 forum_user_trans.time = forum_control.transactions (trans_no).time; 265 forum_user_trans.prev_trans_ptr, forum_user_trans.next_trans_ptr = null (); /* these are used by user ring code */ 266 forum_user_trans.subject = forum_control.transactions (trans_no).subject; 267 forum_user_trans.text = proceeding_string; 268 forum_user_trans.unfilled = forum_control.transactions (trans_no).unfilled; 269 270 if forum_control.transactions (trans_no).deleted then a_code = forum_error_table_$trans_deleted; 271 else a_code = 0; 272 273 a_output_ptr = forum_user_trans_ptr; 274 call v1_forum_mgr_$unlock (forum_control_ptr); 275 return; 276 277 READ_PUNT: 278 call v1_forum_mgr_$unlock (forum_control_ptr); 279 a_output_ptr = null (); 280 a_code = code; 281 return; 282 283 v1_forum_trans_mgr_$set_message: 284 entry (a_forum_idx, a_input_string, a_code); 285 286 forum_idx = a_forum_idx; 287 288 call initialize (SET_MESSAGE_EXIT); 289 290 on cleanup call v1_forum_mgr_$unlock (forum_control_ptr); 291 on any_other call error (forum_error_table_$unexpected_fault); 292 293 if length (a_input_string) > 256 then call error (forum_error_table_$message_too_long); 294 295 call v1_forum_mgr_$get_ptrs (forum_idx, forum_control_ptr, proceedings_ptr, attendee_idx, ("0"b), code); 296 if code ^= 0 then call error (code); 297 298 if anon_sw | forum_control.chairman.person_id ^= person_id then 299 call error (forum_error_table_$chairman_only); 300 301 input_len = 256; 302 303 if ^forum_control.flags.msg_init then do; 304 next_trans_ptr = ptr (proceedings_ptr, forum_control.next_trans_loc); 305 forum_control.message_loc = forum_control.next_trans_loc; 306 forum_control.next_trans_loc = forum_control.next_trans_loc + 64; 307 forum_control.flags.msg_init = "1"b; 308 next_trans_ptr -> transaction = ""; 309 end; 310 311 next_trans_ptr = ptr (proceedings_ptr, forum_control.message_loc); 312 313 on out_of_bounds call error (forum_error_table_$meeting_bloat); 314 next_trans_ptr -> transaction = a_input_string; 315 revert out_of_bounds; 316 317 do attendee_idx = 1 to forum_control.no_attendees; 318 forum_control.attendee (attendee_idx).message_changed = "1"b; 319 end; 320 321 code = 0; 322 323 SET_MESSAGE_EXIT: 324 call v1_forum_mgr_$unlock (forum_control_ptr); 325 a_code = code; 326 return; 327 328 v1_forum_trans_mgr_$get_message: 329 entry (a_forum_idx, a_input_string, a_code); 330 331 forum_idx = a_forum_idx; 332 call initialize (GET_MESSAGE_EXIT); 333 334 on cleanup call v1_forum_mgr_$unlock (forum_control_ptr); 335 on any_other call error (forum_error_table_$unexpected_fault); 336 337 call v1_forum_mgr_$get_ptrs (forum_idx, forum_control_ptr, proceedings_ptr, (0), ("0"b), code); 338 if code ^= 0 then call error (code); 339 340 if ^forum_control.flags.msg_init then call error (forum_error_table_$no_message); 341 342 trans_ptr = ptr (proceedings_ptr, forum_control.message_loc); 343 344 input_len = 256; 345 a_input_string = trans_ptr -> transaction; 346 347 GET_MESSAGE_EXIT: 348 call v1_forum_mgr_$unlock (forum_control_ptr); 349 a_code = code; 350 if code ^= 0 then a_input_string = ""; 351 return; 352 353 v1_forum_trans_mgr_$trans_time_info: 354 entry (a_forum_idx, a_low_time, a_high_time, a_low_trans, a_high_trans, a_code); 355 356 call initialize (TRANS_REF_PUNT); 357 358 on any_other call error (forum_error_table_$unexpected_fault); 359 on cleanup call v1_forum_mgr_$unlock (forum_control_ptr); 360 361 call v1_forum_mgr_$get_ptrs (a_forum_idx, forum_control_ptr, proceedings_ptr, attendee_idx, ("0"b), code); 362 if code ^= 0 then call error (code); 363 364 low_time = a_low_time; 365 high_time = a_high_time; 366 low_trans = 1; 367 high_trans = forum_control.no_transactions; 368 369 if high_time ^= 0 & high_time < forum_control.transactions (1).time then high_trans = 0; 370 else if low_time > forum_control.transactions (high_trans).time then low_trans = high_trans; 371 else do; 372 if low_time > forum_control.transactions (1).time then low_trans = find (low_time, 1, (high_trans)); 373 if high_time ^= 0 & high_time < forum_control.transactions (high_trans).time then 374 high_trans = find (high_time, (low_trans), (high_trans)) + 1; 375 end; 376 377 a_high_trans = high_trans; 378 a_low_trans = low_trans; 379 call v1_forum_mgr_$unlock (forum_control_ptr); 380 a_code = 0; 381 return; 382 383 384 find: proc (t, low, high) returns (fixed bin); 385 386 declare t fixed bin (71), 387 (idx, low, high, h, l) fixed bin; 388 389 do idx = (high + low) / 2 repeat idx; 390 if forum_control.transactions (idx).time = 0 then do; /* The garbage collector has been here */ 391 do h = idx to high while (forum_control.transactions (h).time = 0); 392 end; 393 do l = idx to low by -1 while (forum_control.transactions (l).time = 0); 394 end; 395 if t < forum_control.transactions (h).time then high = l; 396 else low = h; 397 end; 398 else if forum_control.transactions (idx).time < t then do; 399 if forum_control.transactions (idx + 1).time > t then return (idx); 400 else do; 401 low = idx; 402 idx = idx + (high - idx) / 2; 403 end; 404 end; 405 else if forum_control.transactions (idx - 1).time < t then return (idx - 1); 406 else do; 407 high = idx; 408 idx = idx - (idx - low) / 2; 409 end; 410 end; 411 end find; 412 413 v1_forum_trans_mgr_$real_trans_ref_info: 414 entry (a_forum_idx, a_trans_no, a_type, a_pref, a_nref, a_deleted_sw, a_code); 415 416 type = a_type; 417 goto TRANS_REF_COMMON; 418 419 v1_forum_trans_mgr_$trans_ref_info: 420 entry (a_forum_idx, a_trans_no, a_pref, a_nref, a_deleted_sw, a_code); 421 422 type = ONLY_UNDELETED; 423 424 TRANS_REF_COMMON: 425 call initialize (TRANS_REF_PUNT); 426 427 on any_other call error (forum_error_table_$unexpected_fault); 428 429 on cleanup call v1_forum_mgr_$unlock (forum_control_ptr); 430 431 call v1_forum_mgr_$get_ptrs (a_forum_idx, forum_control_ptr, proceedings_ptr, attendee_idx, ("0"b), code); 432 if code ^= 0 then call error (code); 433 434 trans_no = a_trans_no; /* copy this argument into the inner ring */ 435 436 if trans_no < 1 | trans_no > forum_control.no_transactions then 437 call error (forum_error_table_$invalid_trans_idx); 438 if forum_control.transactions (trans_no).gone then 439 call error (forum_error_table_$trans_reaped); 440 441 chairman = (person_id = forum_control.chairman.person_id); 442 pref, nref = -1; /* so loops work */ 443 444 done = "0"b; 445 do i = trans_no repeat pref while (^done & pref ^= 0); 446 pref = forum_control.transactions (i).prior_ref_index; 447 call check (pref); 448 end; 449 450 done = "0"b; 451 do i = trans_no repeat nref while (^done & nref ^= 0); 452 nref = forum_control.transactions (i).next_ref_index; 453 call check (nref); 454 end; 455 456 a_pref = pref; 457 a_nref = nref; 458 a_deleted_sw = forum_control.transactions (trans_no).deleted; 459 460 TRANS_REF_PUNT: 461 call v1_forum_mgr_$unlock (forum_control_ptr); 462 if code ^= 0 then do; 463 a_pref, a_nref = 0; 464 a_deleted_sw = "0"b; 465 end; 466 a_code = code; 467 return; 468 469 v1_forum_trans_mgr_$set_delete_sw: 470 entry (a_forum_idx, a_trans_no, a_value_sw, a_code); 471 472 call initialize (SET_DELETE_EXIT); 473 474 on any_other call error (forum_error_table_$unexpected_fault); 475 476 on cleanup call v1_forum_mgr_$unlock (forum_control_ptr); 477 478 value_sw = a_value_sw; /* copy into inner ring */ 479 480 call v1_forum_mgr_$get_ptrs (a_forum_idx, forum_control_ptr, proceedings_ptr, attendee_idx, ("0"b), code); 481 if code ^= 0 then call error (code); 482 483 trans_no = a_trans_no; /* copy this to inner ring */ 484 485 if trans_no < 1 | trans_no > forum_control.no_transactions then 486 call error (forum_error_table_$invalid_trans_idx); 487 488 if forum_control.transactions (trans_no).gone & ^value_sw then 489 call error (forum_error_table_$trans_reaped); /* transaction has been reaped by garbage collection */ 490 491 if person_id = forum_control.transactions (trans_no).person_id then privileged = "0"b; /* so chair can retrieve own */ 492 else if ^anon_sw & person_id = forum_control.chairman.person_id then privileged = "1"b; 493 else call error (forum_error_table_$chairman_only); 494 495 if ^value_sw & ^privileged & ^forum_control.transactions (trans_no).deleted_by_author then 496 call error (forum_error_table_$chairman_only); 497 498 forum_control.transactions (trans_no).deleted_by_author = value_sw & ^privileged & 499 (^forum_control.transactions (trans_no).deleted | value_sw); 500 501 if forum_control.transactions (trans_no).deleted & value_sw then goto SET_DELETE_EXIT; 502 if ^forum_control.transactions (trans_no).deleted & ^value_sw then goto SET_DELETE_EXIT; 503 504 forum_control.transactions (trans_no).deleted = value_sw; /* well one way or the other... */ 505 506 if value_sw then forum_control.no_deleted = forum_control.no_deleted + 1; 507 else forum_control.no_deleted = forum_control.no_deleted - 1; 508 509 SET_DELETE_EXIT: 510 511 call v1_forum_mgr_$unlock (forum_control_ptr); 512 a_code = code; 513 return; 514 515 v1_forum_trans_mgr_$forum_limits: 516 entry (a_forum_idx, a_last_seen_trans_idx, a_first_trans_idx, 517 a_last_trans_idx, a_new_trans_count, a_flags_word, a_code); 518 519 type = ONLY_UNDELETED; 520 goto LIMITS_COMMON; 521 522 v1_forum_trans_mgr_$real_forum_limits: 523 entry (a_forum_idx, a_type, a_last_seen_trans_idx, a_first_trans_idx, 524 a_last_trans_idx, a_new_trans_count, a_flags_word, a_code); 525 526 type = a_type; 527 528 LIMITS_COMMON: 529 call initialize (FORUM_LIMITS_PUNT); 530 531 on cleanup call v1_forum_mgr_$unlock (forum_control_ptr); 532 533 call v1_forum_mgr_$get_ptrs (a_forum_idx, forum_control_ptr, 534 proceedings_ptr, attendee_idx, ("0"b), code); 535 if code ^= 0 then call error (code); 536 537 chairman = (^anon_sw & forum_control.chairman.person_id = person_id); 538 forum_flags_word = ""b; 539 forum_flags.chairman = chairman; 540 forum_flags.adjourned = forum_control.flags.adjourned; 541 forum_flags.read_only = ^forum_control.attendee (attendee_idx).write_allowed; 542 forum_flags.print_cm_message = forum_control.attendee (attendee_idx).message_changed; 543 forum_flags.acl_has_changed = forum_control.attendee (attendee_idx).acl_change_pending; 544 545 /* The following statement is dedicated to IS-14 and HBD */ 546 547 forum_flags.print_acl_message = forum_control.cm_print_acl_msg | (forum_control.am_init & forum_control.am_print_acl_msg) | 548 (forum_data_$print_eligibility_messages & ^(forum_control.am_init & ^forum_control.am_print_acl_msg) & 549 ^(forum_data_$chairman_override & forum_control.cm_init & ^forum_control.cm_print_acl_msg)); 550 551 a_flags_word = forum_flags_word; 552 553 if forum_control.attendee (attendee_idx).highest_trans_seen < 0 | 554 forum_control.attendee (attendee_idx).highest_trans_seen > forum_control.no_transactions then 555 forum_control.attendee (attendee_idx).highest_trans_seen, a_last_seen_trans_idx = 0; 556 557 else a_last_seen_trans_idx = get_highest_seen ((forum_control.attendee (attendee_idx).highest_trans_seen)); 558 559 done = "0"b; 560 do i = 1 repeat i + 1 while (^done & i <= forum_control.no_transactions); 561 call check (i); 562 end; 563 if ^done then a_first_trans_idx = 0; 564 else a_first_trans_idx = i - 1; 565 566 done = "0"b; 567 do i = forum_control.no_transactions repeat i - 1 while (^done & i ^= 0); 568 call check (i); 569 end; 570 a_last_trans_idx = i + 1; 571 572 new_trans_count = 0; 573 do i = a_last_seen_trans_idx + 1 to forum_control.no_transactions; 574 if forum_control.transactions (i).person_id ^= person_id & 575 ^forum_control.transactions (i).deleted then 576 new_trans_count = new_trans_count + 1; 577 end; 578 579 a_new_trans_count = new_trans_count; 580 581 FORUM_LIMITS_PUNT: 582 call v1_forum_mgr_$unlock (forum_control_ptr); 583 a_code = code; 584 return; 585 586 check: proc (idx); 587 588 declare idx fixed bin, 589 del bit (1) aligned; 590 591 if forum_control.transactions (idx).gone then return; 592 del = forum_control.transactions (idx).deleted; 593 if type = ONLY_UNDELETED & del then return; 594 else if type = ONLY_DELETED & ^del then return; 595 else if del & ^chairman & forum_control.transactions (idx).person_id ^= person_id then return; 596 else done = "1"b; 597 598 return; 599 end check; 600 601 602 get_highest_seen: 603 procedure (start) returns (fixed bin); 604 605 declare start fixed bin; 606 607 done = "0"b; 608 do while ((start + 1) <= forum_control.no_transactions & ^done); 609 if forum_control.transactions (start + 1).person_id = person_id then start = start + 1; 610 else done = "1"b; 611 end; 612 613 done = "0"b; 614 do start = start repeat start - 1 while (^done & start ^= 0); 615 call check (start); 616 end; 617 618 return (start + 1); 619 end get_highest_seen; 620 621 v1_forum_trans_mgr_$check_user: 622 entry (a_forum_idx, a_user_name, a_trans_no, a_code); 623 624 call initialize (CHECK_USER_EXIT); 625 626 on any_other call error (forum_error_table_$unexpected_fault); 627 on cleanup call v1_forum_mgr_$unlock (forum_control_ptr); 628 call v1_forum_mgr_$get_ptrs (a_forum_idx, forum_control_ptr, proceedings_ptr, attendee_idx, ("0"b), code); 629 if code ^= 0 then call error (code); 630 631 user_name = a_user_name; /* copy into lower ring */ 632 a_trans_no = 0; /* to start with, none seen for this user */ 633 634 do i = forum_control.no_transactions by -1 to 1; 635 if forum_control.transactions (i).person_id = user_name then 636 a_trans_no = i; 637 end; 638 639 CHECK_USER_EXIT: 640 641 call v1_forum_mgr_$unlock (forum_control_ptr); 642 a_code = code; 643 return; 644 645 v1_forum_trans_mgr_$convert_attendee_idx: 646 entry (a_forum_idx, a_attendee_idx, a_user_name, a_code); 647 648 call initialize (CONV_ATT_EXIT); 649 650 on cleanup call v1_forum_mgr_$unlock (forum_control_ptr); 651 on any_other call error (forum_error_table_$unexpected_fault); 652 653 call v1_forum_mgr_$get_ptrs (a_forum_idx, forum_control_ptr, proceedings_ptr, (0), ("0"b), code); 654 if code ^= 0 then call error (code); 655 656 attendee_idx = a_attendee_idx; 657 if attendee_idx < 1 | attendee_idx > forum_control.no_attendees then 658 call error (forum_error_table_$invalid_att_idx); 659 660 user_name = rtrim (forum_control.attendee (attendee_idx).person_id) || "." || 661 rtrim (forum_control.attendee (attendee_idx).project_id); 662 663 a_user_name = user_name; /* copy to user ring storage */ 664 665 CONV_ATT_EXIT: 666 667 call v1_forum_mgr_$unlock (forum_control_ptr); 668 a_code = code; 669 return; 670 671 v1_forum_trans_mgr_$validate_uid: 672 entry (a_forum_idx, a_uid, a_code); 673 674 call initialize (VALIDATE_UID_EXIT); 675 676 on cleanup call v1_forum_mgr_$unlock (forum_control_ptr); 677 on any_other call error (forum_error_table_$unexpected_fault); 678 679 call v1_forum_mgr_$get_ptrs (a_forum_idx, forum_control_ptr, proceedings_ptr, attendee_idx, ("0"b), code); 680 if code ^= 0 then call error (code); 681 682 call hcs_$get_uid_seg (forum_control_ptr, uid, code); 683 if code ^= 0 then call error (code); 684 685 if uid ^= a_uid then call error (forum_error_table_$incorrect_uid); 686 687 VALIDATE_UID_EXIT: 688 call v1_forum_mgr_$unlock (forum_control_ptr); 689 a_code = code; 690 return; 691 692 initialize: 693 procedure (P_egress); 694 695 declare P_egress label variable, 696 anon fixed bin; 697 698 egress = P_egress; 699 call user_info_$login_data (person_id, project_id, (""), anon, 0, 0, 0, ("")); 700 anon_sw = (anon = 1); 701 if anon_sw then person_id = "*" || person_id; 702 forum_control_ptr, proceedings_ptr = null (); /* no forum initialized yet, this call */ 703 code = 0; /* no errors yet either */ 704 705 return; 706 end initialize; 707 708 error: 709 procedure (error_code); 710 711 declare error_code fixed bin (35); 712 713 code = error_code; 714 goto egress; /* let's PUNT */ 715 716 end error; 717 718 end v1_forum_trans_mgr_$enter_trans; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/30/84 0958.6 v1_forum_trans_mgr_.pl1 >special_ldd>online>6848-10/30/84>v1_forum_trans_mgr_.pl1 120 1 10/30/84 0939.2 v1_forum_structures.incl.pl1 >special_ldd>online>6848-10/30/84>v1_forum_structures.incl.pl1 122 2 10/30/84 0939.0 forum_flags.incl.pl1 >special_ldd>online>6848-10/30/84>forum_flags.incl.pl1 124 3 10/30/84 0939.2 forum_user_trans.incl.pl1 >special_ldd>online>6848-10/30/84>forum_user_trans.incl.pl1 126 4 04/27/78 1504.4 send_mail_info.incl.pl1 >ldd>include>send_mail_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. ONLY_DELETED constant fixed bin(17,0) initial dcl 3-24 ref 594 ONLY_UNDELETED constant fixed bin(17,0) initial dcl 3-24 ref 422 519 593 P_egress parameter label variable dcl 695 ref 692 698 a_attendee_idx parameter fixed bin(17,0) dcl 26 ref 645 656 a_code parameter fixed bin(35,0) dcl 26 set ref 23 225* 228 270* 271* 280* 283 325* 328 349* 353 380* 413 419 466* 469 512* 515 522 583* 621 642* 645 668* 671 689* a_deleted_sw parameter bit(1) dcl 26 set ref 413 419 458* 464* a_filled_sw parameter bit(1) dcl 26 ref 23 166 a_first_trans_idx parameter fixed bin(17,0) dcl 26 set ref 515 522 563* 564* a_flags_word parameter bit(36) dcl 26 set ref 515 522 551* a_forum_idx parameter fixed bin(17,0) dcl 26 set ref 23 131 228 239* 283 286 328 331 353 361* 413 419 431* 469 480* 515 522 533* 621 628* 645 653* 671 679* a_high_time parameter fixed bin(71,0) dcl 26 ref 353 365 a_high_trans parameter fixed bin(17,0) dcl 26 set ref 353 377* a_input_string parameter char unaligned dcl 26 set ref 23 147 149 283 293 314 328 345* 350* a_last_seen_trans_idx parameter fixed bin(17,0) dcl 26 set ref 515 522 553* 557* 573 a_last_trans_idx parameter fixed bin(17,0) dcl 26 set ref 515 522 570* a_low_time parameter fixed bin(71,0) dcl 26 ref 353 364 a_low_trans parameter fixed bin(17,0) dcl 26 set ref 353 378* a_new_trans_count parameter fixed bin(17,0) dcl 26 set ref 515 522 579* a_nref parameter fixed bin(17,0) dcl 26 set ref 413 419 457* 463* a_output_area parameter pointer dcl 26 ref 228 255 a_output_ptr parameter pointer dcl 26 set ref 228 273* 279* a_pref parameter fixed bin(17,0) dcl 26 set ref 413 419 456* 463* a_previous_trans parameter fixed bin(17,0) dcl 26 ref 23 170 a_subject parameter char unaligned dcl 26 ref 23 163 a_trans_no parameter fixed bin(17,0) dcl 26 set ref 23 182* 228 231 413 419 434 469 483 621 632* 635* a_type parameter fixed bin(17,0) dcl 26 ref 413 416 522 526 a_uid parameter bit(36) dcl 26 ref 671 685 a_user_name parameter char unaligned dcl 26 set ref 621 631 645 663* a_value_sw parameter bit(1) dcl 26 ref 469 478 acl_change_pending 26(15) based bit(1) array level 3 packed unaligned dcl 1-6 ref 543 acl_has_changed 0(04) based bit(1) level 2 packed unaligned dcl 2-8 set ref 543* addr builtin function dcl 50 ref 191 214 214 539 540 541 542 543 547 adjourned 0(05) based bit(1) level 2 in structure "forum_flags" packed unaligned dcl 2-8 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 540* adjourned 2(08) based bit(1) level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_trans_mgr_$enter_trans" ref 540 alloc_subject_length 000422 automatic fixed bin(21,0) dcl 3-4 set ref 251* 255 255 alloc_text_length 000421 automatic fixed bin(21,0) dcl 3-3 set ref 252* 255 255 267 always_add 11(02) 000427 automatic bit(1) level 3 packed unaligned dcl 4-5 set ref 205* am_init 2(04) based bit(1) level 3 packed unaligned dcl 1-6 ref 547 547 am_print_acl_msg 2(05) based bit(1) level 3 packed unaligned dcl 1-6 ref 547 547 anon 000622 automatic fixed bin(17,0) dcl 695 set ref 699* 700 anon_sw 000100 automatic bit(1) dcl 50 set ref 298 492 537 700* 701 any_other 000342 stack reference condition dcl 50 ref 137 186 237 291 335 358 427 474 626 651 677 area 000350 stack reference condition dcl 50 ref 254 256 attendee 16 based structure array level 2 dcl 1-6 attendee_idx 000101 automatic fixed bin(17,0) dcl 50 set ref 139* 160 161 193 208 239* 295* 317* 318* 361* 431* 480* 533* 541 542 543 553 553 553 557 628* 656* 657 657 660 660 679* attending 26(09) based bit(1) array level 3 packed unaligned dcl 1-6 ref 209 chairman 000102 automatic bit(1) dcl 50 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 441* 537* 539 595 chairman based bit(1) level 2 in structure "forum_flags" packed unaligned dcl 2-8 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 539* chairman 5 based structure level 2 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_trans_mgr_$enter_trans" cleanup 000400 stack reference condition dcl 50 ref 135 235 290 334 359 429 476 531 627 650 676 clock builtin function dcl 50 ref 162 cm_init 2(06) based bit(1) level 3 packed unaligned dcl 1-6 ref 547 cm_print_acl_msg 2(07) based bit(1) level 3 packed unaligned dcl 1-6 ref 547 547 code 000103 automatic fixed bin(35,0) dcl 50 set ref 139* 140 140* 188* 189 189* 195* 196 196* 213* 214 220* 225 239* 241 241* 280 295* 296 296* 321* 325 337* 338 338* 349 350 361* 362 362* 431* 432 432* 462 466 480* 481 481* 512 533* 535 535* 583 628* 629 629* 642 653* 654 654* 668 679* 680 680* 682* 683 683* 689 703* 713* del 000604 automatic bit(1) dcl 588 set ref 592* 593 594 595 deleted 21476(09) based bit(1) array level 3 packed unaligned dcl 1-6 set ref 167* 246 270 458 498 501 502 504* 574 592 deleted_by_author 21476(12) based bit(1) array level 3 packed unaligned dcl 1-6 set ref 495 498* dir_name 000104 automatic char(168) unaligned dcl 50 set ref 195* 199* done 000156 automatic bit(1) dcl 50 set ref 213* 214 444* 445 450* 451 559* 560 563 566* 567 596* 607* 608 610* 613* 614 egress 000406 automatic label variable dcl 115 set ref 698* 714 error_code parameter fixed bin(35,0) dcl 711 ref 708 713 error_table_$noalloc 000036 external static fixed bin(35,0) dcl 93 set ref 254* error_table_$seg_busted 000040 external static fixed bin(35,0) dcl 93 set ref 136* 236* flags 2 based structure level 2 packed unaligned dcl 1-6 forum_control based structure level 1 dcl 1-6 forum_control_ptr 000412 automatic pointer dcl 1-3 set ref 135* 139* 143 155 157 157 158 160 160 161 161 162 163 164 164 166 167 167 174 175 177 178 181 181 182 188* 195* 207 209 209 209 209 212 212 213 214 214 222* 235* 239* 243 246 246 246 249 251 252 258 261 262 264 266 268 270 274* 277* 290* 295* 298 303 304 305 305 306 306 307 311 317 318 323* 334* 337* 340 342 347* 359* 361* 367 369 370 372 373 379* 390 391 393 395 398 399 405 429* 431* 436 438 441 446 452 458 460* 476* 480* 485 488 491 492 495 498 498 501 502 504 506 506 507 507 509* 531* 533* 537 540 541 542 543 547 547 547 547 547 547 547 553 553 553 553 557 560 567 573 574 574 581* 591 592 595 608 609 627* 628* 634 635 639* 650* 653* 657 660 660 665* 676* 679* 682* 687* 702* forum_data_$chairman_override 000076 external static bit(1) dcl 111 ref 547 forum_data_$print_eligibility_messages 000074 external static bit(1) dcl 111 ref 547 forum_error_table_$cant_notify 000042 external static fixed bin(35,0) dcl 96 set ref 186* forum_error_table_$chairman_only 000064 external static fixed bin(35,0) dcl 96 set ref 298* 493* 495* forum_error_table_$incorrect_uid 000050 external static fixed bin(35,0) dcl 96 set ref 685* forum_error_table_$invalid_att_idx 000070 external static fixed bin(35,0) dcl 96 set ref 657* forum_error_table_$invalid_trans_idx 000054 external static fixed bin(35,0) dcl 96 set ref 243* 436* 485* forum_error_table_$meeting_bloat 000052 external static fixed bin(35,0) dcl 96 set ref 144* 313* forum_error_table_$message_too_long 000046 external static fixed bin(35,0) dcl 96 set ref 293* forum_error_table_$no_message 000044 external static fixed bin(35,0) dcl 96 set ref 340* forum_error_table_$read_only 000056 external static fixed bin(35,0) dcl 96 set ref 141* forum_error_table_$rqo 000060 external static fixed bin(35,0) dcl 96 set ref 145* forum_error_table_$trans_deleted 000062 external static fixed bin(35,0) dcl 96 set ref 246* 270 forum_error_table_$trans_reaped 000066 external static fixed bin(35,0) dcl 96 set ref 249* 438* 488* forum_error_table_$unexpected_fault 000072 external static fixed bin(35,0) dcl 96 set ref 137* 237* 291* 335* 358* 427* 474* 626* 651* 677* forum_flags based structure level 1 dcl 2-8 forum_flags_word 000420 automatic bit(36) dcl 2-6 set ref 538* 539 540 541 542 543 547 551 forum_idx 000157 automatic fixed bin(17,0) dcl 50 set ref 131* 139* 286* 295* 331* 337* forum_message 000416 automatic structure level 1 dcl 1-63 set ref 191 forum_name 000160 automatic char(32) unaligned dcl 50 set ref 195* 198* 198 198 199* forum_notify_gate_$lookup 000016 constant entry external dcl 81 ref 213 forum_uid 000416 automatic bit(36) level 2 dcl 1-63 set ref 192* forum_user_trans based structure level 1 dcl 3-7 set ref 255 forum_user_trans_ptr 000424 automatic pointer dcl 3-5 set ref 255* 260 261 262 263 264 265 265 266 267 268 273 gone 21476(10) based bit(1) array level 3 packed unaligned dcl 1-6 set ref 167* 249 438 488 591 h 000571 automatic fixed bin(17,0) dcl 386 set ref 391* 391* 395 396 hcs_$force_write 000022 constant entry external dcl 81 ref 153 hcs_$fs_get_path_name 000020 constant entry external dcl 81 ref 195 hcs_$get_uid_seg 000024 constant entry external dcl 81 ref 188 682 hcs_$wakeup 000026 constant entry external dcl 81 ref 209 high parameter fixed bin(17,0) dcl 386 set ref 384 389 391 395* 402 407* high_time 000172 automatic fixed bin(71,0) dcl 50 set ref 365* 369 369 373 373 373* high_trans 000176 automatic fixed bin(17,0) dcl 50 set ref 367* 369* 370 370 372 373 373* 373 377 highest_trans_seen 33 based fixed bin(17,0) array level 3 dcl 1-6 set ref 553 553 553* 557 i 000200 automatic fixed bin(17,0) dcl 50 set ref 445* 446* 451* 452* 560* 560* 561* 562 564 567* 567* 568* 569 570 573* 574 574* 634* 635 635* idx 000570 automatic fixed bin(17,0) dcl 386 in procedure "find" set ref 389* 390 391 393 398 399 399 401 402* 402 402 405 405 407 408* 408 408* 410* idx parameter fixed bin(17,0) dcl 588 in procedure "check" ref 586 591 592 595 index 1 000416 automatic fixed bin(17,0) level 2 dcl 1-63 set ref 193* input_len 000170 automatic fixed bin(17,0) dcl 50 set ref 147* 149 158 181 301* 308 314 344* 345 ioa_$rsnnl 000030 constant entry external dcl 81 ref 199 ipc_message based fixed bin(71,0) dcl 1-60 set ref 209* l 000572 automatic fixed bin(17,0) dcl 386 set ref 393* 393* 395 length 21527 based fixed bin(21,0) array level 3 in structure "forum_control" dcl 1-6 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 158* 252 length builtin function dcl 50 in procedure "v1_forum_trans_mgr_$enter_trans" ref 147 198 198 251 293 low parameter fixed bin(17,0) dcl 386 set ref 384 389 393 396* 401* 408 low_time 000174 automatic fixed bin(71,0) dcl 50 set ref 364* 370 372 372* low_trans 000177 automatic fixed bin(17,0) dcl 50 set ref 366* 370* 372* 373 378 message 000201 automatic char(256) unaligned dcl 50 set ref 199* 214 214 message_changed 26(16) based bit(1) array level 3 packed unaligned dcl 1-6 set ref 318* 542 message_loc 3 based fixed bin(17,0) level 2 packed unaligned dcl 1-6 set ref 305* 311 342 msg_init 2(03) based bit(1) level 3 packed unaligned dcl 1-6 set ref 303 307* 340 msg_ptr 000010 internal static pointer dcl 1-60 set ref 191* 209 new_trans_count 000301 automatic fixed bin(17,0) dcl 50 set ref 572* 574* 574 579 next_ref_index 21500 based fixed bin(17,0) array level 3 dcl 1-6 set ref 164* 174 175 177* 452 next_trans_loc 1 based fixed bin(35,0) level 2 dcl 1-6 set ref 143 157 181* 181 304 305 306* 306 next_trans_ptr 16 based pointer level 2 in structure "forum_user_trans" dcl 3-7 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 265* next_trans_ptr 000302 automatic pointer dcl 50 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 143* 149 304* 308 311* 314 no_attendees 3(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-6 ref 207 317 657 no_deleted 4(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-6 set ref 506* 506 507* 507 no_transactions 2(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-6 set ref 155 182* 243 367 436 485 553 560 567 573 608 634 notify 26(12) based bit(1) array level 3 packed unaligned dcl 1-6 ref 212 nref 000312 automatic fixed bin(17,0) dcl 50 set ref 442* 451 452* 453* 454 457 null builtin function dcl 50 ref 265 279 702 offset 21526 based fixed bin(35,0) array level 3 dcl 1-6 set ref 157* 258 one_transaction based structure level 1 dcl 1-45 out_of_bounds 000356 stack reference condition dcl 50 ref 144 151 313 315 output_area based area(1024) dcl 115 ref 255 person_id 1 based char(22) level 2 in structure "forum_user_trans" dcl 3-7 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 261* person_id 16 based char(22) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 160 213* 214 660 person_id 21466 based char(22) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 160* 246 261 491 574 595 609 635 person_id 000304 automatic char(22) unaligned dcl 50 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 246 246 298 441 491 492 537 574 595 609 699* 701* 701 person_id 5 based char(22) level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_trans_mgr_$enter_trans" ref 246 298 441 492 537 pref 000313 automatic fixed bin(17,0) dcl 50 set ref 170* 172 174 175* 175 177 178 442* 445 446* 447* 448 456 prev_trans_ptr 20 based pointer level 2 dcl 3-7 set ref 265* print_acl_message 0(03) based bit(1) level 2 packed unaligned dcl 2-8 set ref 547* print_cm_message 0(02) based bit(1) level 2 packed unaligned dcl 2-8 set ref 542* prior_ref_index 21477 based fixed bin(17,0) array level 3 dcl 1-6 set ref 164* 178* 446 privileged 000340 automatic bit(1) dcl 50 set ref 491* 492* 495 498 proceeding_string based char unaligned dcl 115 ref 267 proceedings_ptr 000414 automatic pointer dcl 1-3 set ref 139* 143 153* 239* 258 295* 304 311 337* 342 361* 431* 480* 533* 628* 653* 679* 702* process_id 34 based bit(36) array level 3 dcl 1-6 set ref 209* project_id 21473(18) based char(11) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 161* 262 project_id 23(18) based char(11) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_trans_mgr_$enter_trans" ref 161 214 660 project_id 000314 automatic char(9) unaligned dcl 50 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 699* project_id 7 based char(9) level 2 in structure "forum_user_trans" dcl 3-7 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 262* ptr builtin function dcl 50 ref 143 258 304 311 342 public_wakeup_chan 36 based fixed bin(71,0) array level 3 dcl 1-6 set ref 209* read_only 0(01) based bit(1) level 2 packed unaligned dcl 2-8 set ref 541* record_quota_overflow 000364 stack reference condition dcl 50 ref 145 185 removed 26(13) based bit(1) array level 3 packed unaligned dcl 1-6 ref 209 212 rtrim builtin function dcl 50 ref 198 214 214 214 214 660 660 seg_fault_error 000372 stack reference condition dcl 50 ref 136 184 236 send_mail_ 000032 constant entry external dcl 81 ref 214 send_mail_info 000427 automatic structure level 1 dcl 4-5 set ref 214 214 send_mail_info_version_2 000426 automatic fixed bin(17,0) initial dcl 4-3 set ref 4-3* sent_from 1 000427 automatic char(32) level 2 dcl 4-5 set ref 203* start parameter fixed bin(17,0) dcl 605 set ref 602 608 609 609* 609 614* 614 614* 615* 616 618 subject 25 based char level 2 in structure "forum_user_trans" packed unaligned dcl 3-7 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 266* subject 21501 based char(72) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 163* 251 266 subject_length 22 based fixed bin(21,0) level 2 dcl 3-7 set ref 255* 266 267 substr builtin function dcl 50 ref 198 switches 11 000427 automatic structure level 2 dcl 4-5 set ref 204* t parameter fixed bin(71,0) dcl 386 ref 384 395 398 399 405 text based char level 2 packed unaligned dcl 3-7 set ref 267* text_length 23 based fixed bin(21,0) level 2 dcl 3-7 set ref 255* 267 time 21524 based fixed bin(71,0) array level 3 in structure "forum_control" dcl 1-6 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 162* 264 369 370 372 373 390 391 393 395 398 399 405 time 12 based fixed bin(71,0) level 2 in structure "forum_user_trans" dcl 3-7 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 264* trans_no 14 based fixed bin(17,0) level 2 in structure "forum_user_trans" dcl 3-7 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 263* trans_no 000320 automatic fixed bin(17,0) dcl 50 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 231* 243 243 246 246 249 251 252 258 261 262 263 264 266 268 270 434* 436 436 438 445 451 458 483* 485 485 488 491 495 498 498 501 502 504 trans_ptr 000322 automatic pointer dcl 50 set ref 258* 267 342* 345 transaction based char unaligned dcl 115 set ref 149* 308* 314* 345 transactions 21466 based structure array level 2 dcl 1-6 transx 000317 automatic fixed bin(17,0) dcl 50 set ref 155* 157 158 160 161 162 163 164 164 166 167 167 177 178 182 207* 208 209 209 209 209 212 212 213 214 214* type based fixed bin(17,0) level 2 in structure "forum_user_trans" dcl 3-7 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 260* type 000324 automatic fixed bin(17,0) dcl 50 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 416* 422* 519* 526* 593 594 uid 000325 automatic bit(36) dcl 50 set ref 188* 192 682* 685 unfilled 24 based bit(1) level 2 in structure "forum_user_trans" dcl 3-7 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 268* unfilled 21476(11) based bit(1) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 166* 268 user_info_$login_data 000034 constant entry external dcl 81 ref 699 user_name 000326 automatic char(32) unaligned dcl 50 set ref 631* 635 660* 663 user_trans_type constant fixed bin(17,0) initial dcl 3-21 ref 260 v1_forum_mgr_$get_ptrs 000012 constant entry external dcl 81 ref 139 239 295 337 361 431 480 533 628 653 679 v1_forum_mgr_$unlock 000014 constant entry external dcl 81 ref 135 222 235 274 277 290 323 334 347 359 379 429 460 476 509 531 581 627 639 650 665 676 687 value_sw 000336 automatic bit(1) dcl 50 set ref 478* 488 495 498 498 501 502 504 506 version 000427 automatic fixed bin(17,0) level 2 dcl 4-5 set ref 202* wakeup 11 000427 automatic bit(1) level 3 packed unaligned dcl 4-5 set ref 205* write_allowed 26(14) based bit(1) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_trans_mgr_$enter_trans" ref 541 write_allowed 000337 automatic bit(1) dcl 50 in procedure "v1_forum_trans_mgr_$enter_trans" set ref 139* 141 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. INCLUDE_DELETED internal static fixed bin(17,0) initial dcl 3-24 message_type internal static fixed bin(17,0) initial dcl 3-22 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_USER_EXIT 004373 constant label dcl 639 ref 624 624 CONV_ATT_EXIT 004656 constant label dcl 665 ref 648 648 ENTER_PUNT 001213 constant label dcl 222 set ref 133 133 FORUM_LIMITS_PUNT 004166 constant label dcl 581 ref 528 528 GET_MESSAGE_EXIT 002352 constant label dcl 347 ref 332 332 LIMITS_COMMON 003624 constant label dcl 528 ref 520 NEXT 001210 constant label dcl 219 ref 208 READ_PUNT 001636 constant label dcl 277 ref 233 233 SET_DELETE_EXIT 003520 constant label dcl 509 ref 472 472 501 502 SET_MESSAGE_EXIT 002152 constant label dcl 323 ref 288 288 TRANS_REF_COMMON 002713 constant label dcl 424 ref 417 TRANS_REF_PUNT 003152 constant label dcl 460 ref 356 356 424 424 VALIDATE_UID_EXIT 005054 constant label dcl 687 ref 674 674 check 005247 constant entry internal dcl 586 ref 447 453 561 568 615 error 005506 constant entry internal dcl 708 ref 136 137 140 141 144 145 186 189 196 236 237 241 243 246 249 254 291 293 296 298 313 335 338 340 358 362 427 432 436 438 474 481 485 488 493 495 535 626 629 651 654 657 677 680 683 685 find 005066 constant entry internal dcl 384 ref 372 373 get_highest_seen 005315 constant entry internal dcl 602 ref 557 initialize 005401 constant entry internal dcl 692 ref 133 233 288 332 356 424 472 528 624 648 674 v1_forum_trans_mgr_$check_user 004205 constant entry external dcl 621 v1_forum_trans_mgr_$convert_attendee_idx 004412 constant entry external dcl 645 v1_forum_trans_mgr_$enter_trans 000121 constant entry external dcl 23 v1_forum_trans_mgr_$forum_limits 003540 constant entry external dcl 515 v1_forum_trans_mgr_$get_message 002166 constant entry external dcl 328 v1_forum_trans_mgr_$read_trans 001232 constant entry external dcl 228 v1_forum_trans_mgr_$real_forum_limits 003575 constant entry external dcl 522 v1_forum_trans_mgr_$real_trans_ref_info 002634 constant entry external dcl 413 v1_forum_trans_mgr_$set_delete_sw 003175 constant entry external dcl 469 v1_forum_trans_mgr_$set_message 001657 constant entry external dcl 283 v1_forum_trans_mgr_$trans_ref_info 002670 constant entry external dcl 419 v1_forum_trans_mgr_$trans_time_info 002401 constant entry external dcl 353 v1_forum_trans_mgr_$validate_uid 004674 constant entry external dcl 671 NAME DECLARED BY CONTEXT OR IMPLICATION. string builtin function ref 204 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7016 7116 5574 7026 Length 7630 5574 100 476 1221 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME v1_forum_trans_mgr_$enter_trans 534 external procedure is an external procedure. on unit on line 135 68 on unit on unit on line 136 70 on unit on unit on line 137 70 on unit on unit on line 144 70 on unit on unit on line 145 70 on unit on unit on line 186 70 on unit on unit on line 235 68 on unit on unit on line 236 70 on unit on unit on line 237 70 on unit on unit on line 254 70 on unit on unit on line 290 68 on unit on unit on line 291 70 on unit on unit on line 313 70 on unit on unit on line 334 68 on unit on unit on line 335 70 on unit on unit on line 358 70 on unit on unit on line 359 68 on unit find internal procedure shares stack frame of external procedure v1_forum_trans_mgr_$enter_tra on unit on line 427 70 on unit on unit on line 429 68 on unit on unit on line 474 70 on unit on unit on line 476 68 on unit on unit on line 531 68 on unit check internal procedure shares stack frame of external procedure v1_forum_trans_mgr_$enter_tra get_highest_seen internal procedure shares stack frame of external procedure v1_forum_trans_mgr_$enter_tra on unit on line 626 70 on unit on unit on line 627 68 on unit on unit on line 650 68 on unit on unit on line 651 70 on unit on unit on line 676 68 on unit on unit on line 677 70 on unit initialize internal procedure shares stack frame of external procedure v1_forum_trans_mgr_$enter_tra error 64 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 msg_ptr v1_forum_trans_mgr_$enter_trans STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME v1_forum_trans_mgr_$enter_trans 000100 anon_sw v1_forum_trans_mgr_$enter_trans 000101 attendee_idx v1_forum_trans_mgr_$enter_trans 000102 chairman v1_forum_trans_mgr_$enter_trans 000103 code v1_forum_trans_mgr_$enter_trans 000104 dir_name v1_forum_trans_mgr_$enter_trans 000156 done v1_forum_trans_mgr_$enter_trans 000157 forum_idx v1_forum_trans_mgr_$enter_trans 000160 forum_name v1_forum_trans_mgr_$enter_trans 000170 input_len v1_forum_trans_mgr_$enter_trans 000172 high_time v1_forum_trans_mgr_$enter_trans 000174 low_time v1_forum_trans_mgr_$enter_trans 000176 high_trans v1_forum_trans_mgr_$enter_trans 000177 low_trans v1_forum_trans_mgr_$enter_trans 000200 i v1_forum_trans_mgr_$enter_trans 000201 message v1_forum_trans_mgr_$enter_trans 000301 new_trans_count v1_forum_trans_mgr_$enter_trans 000302 next_trans_ptr v1_forum_trans_mgr_$enter_trans 000304 person_id v1_forum_trans_mgr_$enter_trans 000312 nref v1_forum_trans_mgr_$enter_trans 000313 pref v1_forum_trans_mgr_$enter_trans 000314 project_id v1_forum_trans_mgr_$enter_trans 000317 transx v1_forum_trans_mgr_$enter_trans 000320 trans_no v1_forum_trans_mgr_$enter_trans 000322 trans_ptr v1_forum_trans_mgr_$enter_trans 000324 type v1_forum_trans_mgr_$enter_trans 000325 uid v1_forum_trans_mgr_$enter_trans 000326 user_name v1_forum_trans_mgr_$enter_trans 000336 value_sw v1_forum_trans_mgr_$enter_trans 000337 write_allowed v1_forum_trans_mgr_$enter_trans 000340 privileged v1_forum_trans_mgr_$enter_trans 000406 egress v1_forum_trans_mgr_$enter_trans 000412 forum_control_ptr v1_forum_trans_mgr_$enter_trans 000414 proceedings_ptr v1_forum_trans_mgr_$enter_trans 000416 forum_message v1_forum_trans_mgr_$enter_trans 000420 forum_flags_word v1_forum_trans_mgr_$enter_trans 000421 alloc_text_length v1_forum_trans_mgr_$enter_trans 000422 alloc_subject_length v1_forum_trans_mgr_$enter_trans 000424 forum_user_trans_ptr v1_forum_trans_mgr_$enter_trans 000426 send_mail_info_version_2 v1_forum_trans_mgr_$enter_trans 000427 send_mail_info v1_forum_trans_mgr_$enter_trans 000570 idx find 000571 h find 000572 l find 000604 del check 000622 anon initialize THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return tra_label_var signal enable shorten_stack ext_entry ext_entry_desc int_entry trunc_fx2 divide_fx1 alloc_based clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. forum_notify_gate_$lookup hcs_$force_write hcs_$fs_get_path_name hcs_$get_uid_seg hcs_$wakeup ioa_$rsnnl send_mail_ user_info_$login_data v1_forum_mgr_$get_ptrs v1_forum_mgr_$unlock THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$noalloc error_table_$seg_busted forum_data_$chairman_override forum_data_$print_eligibility_messages forum_error_table_$cant_notify forum_error_table_$chairman_only forum_error_table_$incorrect_uid forum_error_table_$invalid_att_idx forum_error_table_$invalid_trans_idx forum_error_table_$meeting_bloat forum_error_table_$message_too_long forum_error_table_$no_message forum_error_table_$read_only forum_error_table_$rqo forum_error_table_$trans_deleted forum_error_table_$trans_reaped forum_error_table_$unexpected_fault LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 4 3 000107 23 000113 131 000147 133 000152 135 000157 136 000203 137 000227 139 000253 140 000274 141 000304 143 000316 144 000323 145 000347 147 000373 149 000375 151 000403 153 000404 155 000422 157 000430 158 000434 160 000436 161 000445 162 000460 163 000463 164 000472 166 000474 167 000501 170 000505 172 000507 174 000510 175 000516 176 000517 177 000520 178 000523 181 000527 182 000543 184 000546 185 000547 186 000550 188 000574 189 000607 191 000617 192 000622 193 000624 195 000626 196 000657 198 000667 199 000704 202 000741 203 000743 204 000746 205 000747 207 000753 208 000765 209 000767 212 001023 213 001031 214 001052 218 001207 219 001210 220 001212 222 001213 225 001222 226 001224 228 001225 231 001245 233 001247 235 001254 236 001300 237 001324 239 001350 241 001374 243 001404 246 001424 249 001454 251 001466 252 001470 254 001475 255 001521 256 001540 258 001541 260 001551 261 001553 262 001557 263 001565 264 001567 265 001571 266 001574 267 001601 268 001610 270 001614 271 001623 273 001624 274 001626 275 001635 277 001636 279 001645 280 001650 281 001652 283 001653 286 001676 288 001701 290 001706 291 001732 293 001756 295 001770 296 002013 298 002023 301 002041 303 002043 304 002047 305 002053 306 002055 307 002061 308 002063 311 002067 313 002074 314 002120 315 002130 317 002131 318 002143 319 002147 321 002151 323 002152 325 002161 326 002163 328 002164 331 002205 332 002210 334 002215 335 002241 337 002265 338 002311 340 002321 342 002334 344 002342 345 002344 347 002352 349 002361 350 002363 351 002372 353 002373 356 002412 358 002417 359 002443 361 002467 362 002513 364 002523 365 002526 366 002530 367 002532 369 002537 370 002545 372 002556 373 002566 377 002610 378 002613 379 002615 380 002624 381 002625 413 002626 416 002657 417 002661 419 002662 422 002711 424 002713 427 002720 429 002744 431 002770 432 003014 434 003024 436 003026 438 003045 441 003062 442 003070 444 003073 445 003074 446 003103 447 003110 448 003112 450 003115 451 003116 452 003125 453 003132 454 003134 456 003137 457 003141 458 003143 460 003152 462 003161 463 003163 464 003165 466 003166 467 003167 469 003170 472 003210 474 003215 476 003241 478 003265 480 003271 481 003314 483 003324 485 003326 488 003345 491 003364 492 003376 493 003410 495 003417 498 003440 501 003462 502 003472 504 003476 506 003503 507 003513 509 003520 512 003527 513 003531 515 003532 519 003563 520 003565 522 003566 526 003622 528 003624 531 003631 533 003655 535 003701 537 003711 538 003723 539 003724 540 003727 541 003734 542 003747 543 003754 547 003761 551 004026 553 004030 557 004043 559 004055 560 004056 561 004075 562 004077 563 004101 564 004105 566 004110 567 004111 568 004121 569 004123 570 004126 572 004131 573 004132 574 004145 577 004162 579 004164 581 004166 583 004175 584 004177 621 004200 624 004225 626 004232 627 004256 628 004302 629 004326 631 004336 632 004346 634 004347 635 004357 637 004370 639 004373 642 004402 643 004404 645 004405 648 004430 650 004435 651 004461 653 004505 654 004532 656 004542 657 004545 660 004564 663 004645 665 004656 668 004665 669 004667 671 004670 674 004705 676 004712 677 004736 679 004762 680 005006 682 005016 683 005031 685 005041 687 005054 689 005063 690 005065 384 005066 389 005070 390 005100 391 005106 392 005123 393 005125 394 005141 395 005144 396 005157 397 005161 398 005162 399 005165 401 005174 402 005176 404 005211 405 005212 407 005222 408 005224 410 005240 411 005243 586 005247 591 005251 592 005261 593 005265 594 005271 595 005277 596 005312 598 005314 602 005315 607 005317 608 005320 609 005335 610 005346 611 005350 613 005351 614 005352 615 005362 616 005370 618 005374 692 005401 698 005403 699 005411 700 005457 701 005463 702 005477 703 005503 705 005504 708 005505 713 005513 714 005517 ----------------------------------------------------------- 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