COMPILATION LISTING OF SEGMENT v1_forum_gc_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/30/84 1234.5 mst Tue Options: optimize map 1 /* *************************************************************** 2* * * 3* * Copyright (c) 1982 by Massachusetts Institute of Technology * 4* * * 5* *************************************************************** */ 6 7 8 v1_forum_gc_$expunge: 9 proc (P_forum_idx, P_switches_word, P_participants_deleted, P_trans_deleted, P_participants_damaged, 10 P_trans_damaged, P_status); 11 12 /* Garbage collector for forum meetings 13* 6/23/82 Jay Pattin */ 14 15 declare (P_forum_idx, P_participants_deleted, P_trans_deleted, P_participants_damaged, P_trans_damaged) 16 fixed bin parameter, 17 P_switches_word bit (36) aligned, 18 P_status fixed bin (35) parameter; 19 20 declare attendee_count fixed bin, 21 current_loc fixed bin (19), 22 deleted_count fixed bin, 23 forum_idx fixed bin, 24 idx fixed bin, 25 inner_ring fixed bin (3), 26 new_control_ptr ptr, 27 new_proc_len fixed bin (19), 28 new_proc_ptr ptr, 29 new_trans_ptr ptr, 30 project char (9), 31 trans_deleted fixed bin, 32 users_deleted fixed bin, 33 users_damaged fixed bin, 34 trans_damaged fixed bin, 35 old_trans_ptr ptr, 36 seg_len fixed bin (21), 37 seg (seg_len) fixed bin based, 38 status fixed bin (35), 39 trans_len fixed bin (21), 40 trans char (trans_len) based, 41 user_name char (22), 42 user_ring fixed bin (3); 43 44 declare 1 new_control aligned like forum_control based (new_control_ptr), 45 1 damaged_transaction aligned like one_transaction; 46 47 declare 1 switches based (addr (P_switches_word)), 48 2 transactions bit (1) unaligned, 49 2 users bit (1) unaligned; 50 51 declare (any_other, cleanup, out_of_bounds) 52 condition, 53 (addr, clock, collate, currentsize, min, null, ptr, string, substr, unspec, verify) 54 builtin; 55 56 declare me char (12) static options (constant) init ("v1_forum_gc_"); 57 58 declare (error_table_$out_of_bounds, 59 forum_error_table_$chairman_only, 60 forum_error_table_$unexpected_fault) 61 fixed bin (35) external; 62 63 declare v1_forum_mgr_$get_ptrs entry (fixed bin, ptr, ptr, fixed bin, bit (1) aligned, fixed bin (35)), 64 v1_forum_mgr_$unlock entry (ptr), 65 get_lock_id_ entry returns (bit (36) aligned), 66 get_ring_ entry returns (fixed bin (3)), 67 get_temp_segment_ entry (char (*), ptr, fixed bin (35)), 68 hcs_$level_get entry returns (fixed bin (3)), 69 hcs_$level_set entry (fixed bin (3)), 70 hcs_$truncate_seg entry (ptr, fixed bin (19), fixed bin (35)), 71 release_temp_segment_ entry (char (*), ptr, fixed bin (35)), 72 user_info_$whoami entry (char(*), char(*), char(*)); 73 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 * * * * * * * * * * * * * * * * * * * */ 74 75 76 forum_idx = P_forum_idx; 77 trans_deleted, users_deleted, trans_damaged, users_damaged = 0; 78 attendee_count, deleted_count, current_loc, new_proc_len = 0; 79 status = 0; 80 forum_control_ptr, new_proc_ptr, new_control_ptr = null (); 81 inner_ring = get_ring_ (); 82 user_ring = hcs_$level_get (); 83 84 on any_other call error (forum_error_table_$unexpected_fault); 85 on out_of_bounds call error (error_table_$out_of_bounds); 86 on cleanup begin; 87 call v1_forum_mgr_$unlock (forum_control_ptr); 88 call release_temp_segment_ (me, new_control_ptr, (0)); 89 call release_temp_segment_ (me, new_proc_ptr, (0)); 90 call hcs_$level_set (user_ring); 91 end; 92 93 call v1_forum_mgr_$get_ptrs (forum_idx, forum_control_ptr, proceedings_ptr, (0), ("0"b), status); 94 if status ^= 0 then call error (status); 95 96 call user_info_$whoami (user_name, project, ""); 97 if forum_control.chairman.person_id ^= user_name then call error (forum_error_table_$chairman_only); 98 99 call hcs_$level_set (inner_ring); 100 101 call get_temp_segment_ (me, new_control_ptr, status); 102 if status ^= 0 then call error (status); 103 104 call get_temp_segment_ (me, new_proc_ptr, status); 105 if status ^= 0 then call error (status); 106 107 /* First build the control header */ 108 109 new_control.forum_lock = get_lock_id_ (); /* just to be safe */ 110 new_control.no_deleted, new_control.no_attendees, new_control.next_trans_loc = 0; /* yet to be determined */ 111 new_control.flags = forum_control.flags; 112 string (new_control.flags.mbz0) = ""b; 113 string (new_control.flags.mbz1) = ""b; 114 new_control.no_transactions = forum_control.no_transactions; /* this won't change */ 115 new_control.mbz2 = ""b; 116 new_control.chairman = forum_control.chairman; 117 118 if forum_control.msg_init then do; /* put cmsg at front of proceedings */ 119 new_control.message_loc = 0; 120 new_proc_len = 64; 121 trans_len = 256; 122 old_trans_ptr = ptr (proceedings_ptr, forum_control.message_loc); 123 new_proc_ptr -> trans = old_trans_ptr -> trans; 124 end; 125 126 /* now let's gc the participants */ 127 128 do idx = 1 to forum_control.no_attendees; 129 if damaged_user (idx) then users_damaged = users_damaged + 1; 130 else if ^switches.users | ^forum_control.attendee (idx).deleted then do; 131 attendee_count = attendee_count + 1; 132 unspec (new_control.attendee (attendee_count)) = unspec (forum_control.attendee (idx)); 133 new_control.attendee (attendee_count).unused_flags = "0"b; 134 135 if forum_control.attendee (idx).highest_trans_seen < 0 then 136 new_control.attendee (attendee_count).highest_trans_seen = forum_control.no_transactions; 137 else new_control.attendee (attendee_count).highest_trans_seen = 138 min (forum_control.attendee (idx).highest_trans_seen, forum_control.no_transactions); 139 end; 140 else users_deleted = users_deleted + 1; 141 end; 142 143 new_control.no_attendees = attendee_count; 144 145 146 /* and now the proceedings */ 147 148 unspec (damaged_transaction) = ""b; 149 damaged_transaction.gone, damaged_transaction.deleted = "1"b; 150 151 do idx = 1 to forum_control.no_transactions; 152 if unspec (forum_control.transactions (idx)) = unspec (damaged_transaction) then 153 unspec (new_control.transactions (idx)) = unspec (damaged_transaction); 154 else if damaged (idx) then do; 155 trans_damaged = trans_damaged + 1; 156 unspec (new_control.transactions (idx)) = ""b; 157 new_control.transactions (idx).gone, new_control.transactions (idx).deleted = "1"b; 158 end; 159 else do; 160 unspec (new_control.transactions (idx)) = unspec (forum_control.transactions (idx)); 161 if switches.transactions & forum_control.transactions (idx).deleted then do; 162 deleted_count = deleted_count + 1; 163 if ^forum_control.transactions (idx).gone then do; 164 trans_deleted = trans_deleted + 1; 165 if forum_control.transactions (idx).prior_ref_index > 0 then 166 new_control.transactions (forum_control.transactions (idx).prior_ref_index).next_ref_index = 167 forum_control.transactions (idx).next_ref_index; 168 if forum_control.transactions (idx).next_ref_index > 0 then 169 forum_control.transactions (forum_control.transactions (idx).next_ref_index).prior_ref_index = 170 forum_control.transactions (idx).prior_ref_index; 171 end; 172 new_control.transactions (idx).gone = "1"b; 173 new_control.transactions (idx).offset, new_control.transactions (idx).length = 0; 174 end; 175 else do; 176 new_control.transactions (idx).offset = new_proc_len; 177 trans_len = forum_control.transactions (idx).length; 178 new_trans_ptr = ptr (new_proc_ptr, new_proc_len); 179 current_loc = forum_control.transactions (idx).offset; 180 old_trans_ptr = ptr (proceedings_ptr, current_loc); 181 182 new_trans_ptr -> trans = old_trans_ptr -> trans; 183 new_proc_len = new_proc_len + (trans_len + 3)/4; 184 end; 185 end; 186 end; 187 188 new_control.no_deleted = deleted_count; 189 new_control.next_trans_loc = new_proc_len; 190 191 /* COPY THE MEETING BACK HERE */ 192 193 seg_len = currentsize (new_control); 194 forum_control_ptr -> seg = new_control_ptr -> seg; 195 seg_len = new_proc_len; 196 proceedings_ptr -> seg = new_proc_ptr -> seg; 197 198 /* Now truncate proceedings segment and clean up */ 199 200 call hcs_$truncate_seg (proceedings_ptr, new_proc_len, status); 201 if status ^= 0 then call error (status); 202 203 call v1_forum_mgr_$unlock (forum_control_ptr); 204 205 call release_temp_segment_ (me, new_proc_ptr, status); 206 if status ^= 0 then call error (status); 207 208 call release_temp_segment_ (me, new_control_ptr, status); 209 if status ^= 0 then call error (status); 210 211 call hcs_$level_set (user_ring); 212 213 P_participants_deleted = users_deleted; 214 P_trans_deleted = trans_deleted; 215 P_participants_damaged = users_damaged; 216 P_trans_damaged = trans_damaged; 217 P_status = 0; 218 return; 219 220 221 PUNT: P_status = status; 222 call hcs_$level_set (user_ring); 223 P_participants_deleted, P_trans_deleted, P_participants_damaged, P_trans_damaged = 0; 224 return; 225 226 damaged_user: 227 proc (idx) returns (bit (1) aligned); 228 229 declare idx fixed bin; 230 231 if verify (forum_control.attendee (idx).project_id, substr (collate (), 9)) ^= 0 then return ("1"b); 232 233 if verify (forum_control.attendee (idx).project_id, substr (collate (), 9)) ^= 0 then return ("1"b); 234 235 if forum_control.attendee (idx).project_id = "" | forum_control.attendee (idx).person_id = "" then 236 return ("1"b); 237 238 return ("0"b); 239 end damaged_user; 240 241 242 /* Check to see if a transaction looks like a transaction */ 243 244 damaged: 245 proc (idx) returns (bit (1) aligned); 246 247 declare idx fixed bin; 248 249 if verify (forum_control.transactions (idx).person_id, substr (collate (), 9)) ^= 0 then return ("1"b); 250 251 if verify (forum_control.transactions (idx).project_id, substr (collate (), 9)) ^= 0 then return ("1"b); 252 253 if forum_control.transactions (idx).prior_ref_index < 0 | 254 forum_control.transactions (idx).prior_ref_index >= idx then return ("1"b); 255 256 if (forum_control.transactions (idx).next_ref_index <= idx & forum_control.transactions (idx).next_ref_index > 0) | 257 forum_control.transactions (idx).next_ref_index > forum_control.no_transactions then return ("1"b); 258 259 if forum_control.transactions (idx).offset >= 1044480 then return ("1"b); 260 if forum_control.transactions (idx).offset < current_loc & 261 ^(forum_control.transactions (idx).offset = 0 & forum_control.transactions (idx).gone) then return ("1"b); 262 if forum_control.transactions (idx).length >= 1044480 then return ("1"b); 263 264 if forum_control.transactions (idx).time > clock () then return ("1"b); 265 return ("0"b); 266 end damaged; 267 268 269 error: 270 proc (P_status); 271 272 declare P_status fixed bin (35); 273 274 call v1_forum_mgr_$unlock (forum_control_ptr); 275 status = P_status; 276 goto PUNT; 277 end error; 278 279 end v1_forum_gc_$expunge; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/30/84 0958.5 v1_forum_gc_.pl1 >special_ldd>online>6848-10/30/84>v1_forum_gc_.pl1 74 1 10/30/84 0939.2 v1_forum_structures.incl.pl1 >special_ldd>online>6848-10/30/84>v1_forum_structures.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. P_forum_idx parameter fixed bin(17,0) dcl 15 ref 8 76 P_participants_damaged parameter fixed bin(17,0) dcl 15 set ref 8 215* 223* P_participants_deleted parameter fixed bin(17,0) dcl 15 set ref 8 213* 223* P_status parameter fixed bin(35,0) dcl 272 in procedure "error" ref 269 275 P_status parameter fixed bin(35,0) dcl 15 in procedure "v1_forum_gc_$expunge" set ref 8 217* 221* P_switches_word parameter bit(36) dcl 15 set ref 8 130 161 P_trans_damaged parameter fixed bin(17,0) dcl 15 set ref 8 216* 223* P_trans_deleted parameter fixed bin(17,0) dcl 15 set ref 8 214* 223* addr builtin function dcl 51 ref 130 161 any_other 000204 stack reference condition dcl 51 ref 84 attendee 16 based structure array level 2 in structure "forum_control" dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 132 attendee 16 based structure array level 2 in structure "new_control" dcl 44 in procedure "v1_forum_gc_$expunge" set ref 132* attendee_count 000100 automatic fixed bin(17,0) dcl 20 set ref 78* 131* 131 132 133 135 137 143 chairman 5 based structure level 2 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 116 chairman 5 based structure level 2 in structure "new_control" packed unaligned dcl 44 in procedure "v1_forum_gc_$expunge" set ref 116* cleanup 000212 stack reference condition dcl 51 ref 86 clock builtin function dcl 51 ref 264 collate builtin function dcl 51 ref 231 233 249 251 current_loc 000101 automatic fixed bin(19,0) dcl 20 set ref 78* 179* 180 260 currentsize builtin function dcl 51 ref 193 damaged_transaction 000142 automatic structure level 1 dcl 44 set ref 148* 152 152 deleted 26(10) based bit(1) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 130 deleted 10(09) 000142 automatic bit(1) level 2 in structure "damaged_transaction" packed unaligned dcl 44 in procedure "v1_forum_gc_$expunge" set ref 149* deleted 21476(09) based bit(1) array level 3 in structure "new_control" packed unaligned dcl 44 in procedure "v1_forum_gc_$expunge" set ref 157* deleted 21476(09) based bit(1) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 161 deleted_count 000102 automatic fixed bin(17,0) dcl 20 set ref 78* 162* 162 188 error_table_$out_of_bounds 000010 external static fixed bin(35,0) dcl 58 set ref 85* flags 2 based structure level 2 in structure "new_control" packed unaligned dcl 44 in procedure "v1_forum_gc_$expunge" set ref 111* flags 2 based structure level 2 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 111 forum_control based structure level 1 dcl 1-6 forum_control_ptr 000226 automatic pointer dcl 1-3 set ref 80* 87* 93* 97 111 114 116 118 122 128 130 132 135 135 137 137 151 152 160 161 163 165 165 165 168 168 168 168 177 179 194 203* 231 233 235 235 249 251 253 253 256 256 256 256 259 260 260 260 262 264 274* forum_error_table_$chairman_only 000012 external static fixed bin(35,0) dcl 58 set ref 97* forum_error_table_$unexpected_fault 000014 external static fixed bin(35,0) dcl 58 set ref 84* forum_idx 000103 automatic fixed bin(17,0) dcl 20 set ref 76* 93* forum_lock based bit(36) level 2 dcl 44 set ref 109* get_lock_id_ 000022 constant entry external dcl 63 ref 109 get_ring_ 000024 constant entry external dcl 63 ref 81 get_temp_segment_ 000026 constant entry external dcl 63 ref 101 104 gone 10(10) 000142 automatic bit(1) level 2 in structure "damaged_transaction" packed unaligned dcl 44 in procedure "v1_forum_gc_$expunge" set ref 149* gone 21476(10) based bit(1) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 163 260 gone 21476(10) based bit(1) array level 3 in structure "new_control" packed unaligned dcl 44 in procedure "v1_forum_gc_$expunge" set ref 157* 172* hcs_$level_get 000030 constant entry external dcl 63 ref 82 hcs_$level_set 000032 constant entry external dcl 63 ref 90 99 211 222 hcs_$truncate_seg 000034 constant entry external dcl 63 ref 200 highest_trans_seen 33 based fixed bin(17,0) array level 3 in structure "forum_control" dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 135 137 highest_trans_seen 33 based fixed bin(17,0) array level 3 in structure "new_control" dcl 44 in procedure "v1_forum_gc_$expunge" set ref 135* 137* idx parameter fixed bin(17,0) dcl 229 in procedure "damaged_user" ref 226 231 233 235 235 idx 000104 automatic fixed bin(17,0) dcl 20 in procedure "v1_forum_gc_$expunge" set ref 128* 129* 130 132 135 137* 151* 152 152 154* 156 157 157 160 160 161 163 165 165 165 168 168 168 172 173 173 176 177 179* idx parameter fixed bin(17,0) dcl 247 in procedure "damaged" ref 244 249 251 253 253 253 256 256 256 256 259 260 260 260 262 264 inner_ring 000105 automatic fixed bin(3,0) dcl 20 set ref 81* 99* length 21527 based fixed bin(21,0) array level 3 in structure "new_control" dcl 44 in procedure "v1_forum_gc_$expunge" set ref 173* length 21527 based fixed bin(21,0) array level 3 in structure "forum_control" dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 177 262 mbz0 2 based bit(3) level 3 packed unaligned dcl 44 set ref 112* mbz1 2(09) based bit(9) level 3 packed unaligned dcl 44 set ref 113* mbz2 4 based bit(18) level 2 packed unaligned dcl 44 set ref 115* me 000000 constant char(12) initial unaligned dcl 56 set ref 88* 89* 101* 104* 205* 208* message_loc 3 based fixed bin(17,0) level 2 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 122 message_loc 3 based fixed bin(17,0) level 2 in structure "new_control" packed unaligned dcl 44 in procedure "v1_forum_gc_$expunge" set ref 119* min builtin function dcl 51 ref 137 msg_init 2(03) based bit(1) level 3 packed unaligned dcl 1-6 ref 118 new_control based structure level 1 dcl 44 set ref 193 new_control_ptr 000106 automatic pointer dcl 20 set ref 80* 88* 101* 109 110 110 110 111 112 113 114 115 116 119 132 133 135 137 143 152 156 157 157 160 165 172 173 173 176 188 189 193 194 208* new_proc_len 000110 automatic fixed bin(19,0) dcl 20 set ref 78* 120* 176 178 183* 183 189 195 200* new_proc_ptr 000112 automatic pointer dcl 20 set ref 80* 89* 104* 123 178 196 205* new_trans_ptr 000114 automatic pointer dcl 20 set ref 178* 182 next_ref_index 21500 based fixed bin(17,0) array level 3 in structure "new_control" dcl 44 in procedure "v1_forum_gc_$expunge" set ref 165* next_ref_index 21500 based fixed bin(17,0) array level 3 in structure "forum_control" dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 165 168 168 256 256 256 next_trans_loc 1 based fixed bin(35,0) level 2 dcl 44 set ref 110* 189* no_attendees 3(18) based fixed bin(17,0) level 2 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 128 no_attendees 3(18) based fixed bin(17,0) level 2 in structure "new_control" packed unaligned dcl 44 in procedure "v1_forum_gc_$expunge" set ref 110* 143* no_deleted 4(18) based fixed bin(17,0) level 2 packed unaligned dcl 44 set ref 110* 188* no_transactions 2(18) based fixed bin(17,0) level 2 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 114 135 137 151 193 256 no_transactions 2(18) based fixed bin(17,0) level 2 in structure "new_control" packed unaligned dcl 44 in procedure "v1_forum_gc_$expunge" set ref 114* null builtin function dcl 51 ref 80 offset 21526 based fixed bin(35,0) array level 3 in structure "forum_control" dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 179 259 260 260 offset 21526 based fixed bin(35,0) array level 3 in structure "new_control" dcl 44 in procedure "v1_forum_gc_$expunge" set ref 173* 176* old_trans_ptr 000126 automatic pointer dcl 20 set ref 122* 123 180* 182 one_transaction based structure level 1 dcl 1-45 out_of_bounds 000220 stack reference condition dcl 51 ref 85 person_id 5 based char(22) level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 97 person_id 16 based char(22) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 235 person_id 21466 based char(22) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 249 prior_ref_index 21477 based fixed bin(17,0) array level 3 dcl 1-6 set ref 165 165 168* 168 253 253 proceedings_ptr 000230 automatic pointer dcl 1-3 set ref 93* 122 180 196 200* project 000116 automatic char(9) unaligned dcl 20 set ref 96* project_id 21473(18) based char(11) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 251 project_id 23(18) based char(11) array level 3 in structure "forum_control" packed unaligned dcl 1-6 in procedure "v1_forum_gc_$expunge" ref 231 233 235 ptr builtin function dcl 51 ref 122 178 180 release_temp_segment_ 000036 constant entry external dcl 63 ref 88 89 205 208 seg based fixed bin(17,0) array dcl 20 set ref 194* 194 196* 196 seg_len 000130 automatic fixed bin(21,0) dcl 20 set ref 193* 194 195* 196 status 000131 automatic fixed bin(35,0) dcl 20 set ref 79* 93* 94 94* 101* 102 102* 104* 105 105* 200* 201 201* 205* 206 206* 208* 209 209* 221 275* string builtin function dcl 51 set ref 112* 113* substr builtin function dcl 51 ref 231 233 249 251 switches based structure level 1 packed unaligned dcl 47 time 21524 based fixed bin(71,0) array level 3 dcl 1-6 ref 264 trans based char unaligned dcl 20 set ref 123* 123 182* 182 trans_damaged 000124 automatic fixed bin(17,0) dcl 20 set ref 77* 155* 155 216 trans_deleted 000121 automatic fixed bin(17,0) dcl 20 set ref 77* 164* 164 214 trans_len 000132 automatic fixed bin(21,0) dcl 20 set ref 121* 123 123 177* 182 182 183 transactions based bit(1) level 2 in structure "switches" packed unaligned dcl 47 in procedure "v1_forum_gc_$expunge" ref 161 transactions 21466 based structure array level 2 in structure "new_control" dcl 44 in procedure "v1_forum_gc_$expunge" set ref 152* 156* 160* transactions 21466 based structure array level 2 in structure "forum_control" dcl 1-6 in procedure "v1_forum_gc_$expunge" set ref 152 160 unspec builtin function dcl 51 set ref 132* 132 148* 152 152 152* 152 156* 160* 160 unused_flags 26(17) based bit(1) array level 3 packed unaligned dcl 44 set ref 133* user_info_$whoami 000040 constant entry external dcl 63 ref 96 user_name 000133 automatic char(22) unaligned dcl 20 set ref 96* 97 user_ring 000141 automatic fixed bin(3,0) dcl 20 set ref 82* 90* 211* 222* users 0(01) based bit(1) level 2 packed unaligned dcl 47 ref 130 users_damaged 000123 automatic fixed bin(17,0) dcl 20 set ref 77* 129* 129 215 users_deleted 000122 automatic fixed bin(17,0) dcl 20 set ref 77* 140* 140 213 v1_forum_mgr_$get_ptrs 000016 constant entry external dcl 63 ref 93 v1_forum_mgr_$unlock 000020 constant entry external dcl 63 ref 87 203 274 verify builtin function dcl 51 ref 231 233 249 251 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. forum_message automatic structure level 1 dcl 1-63 ipc_message based fixed bin(71,0) dcl 1-60 msg_ptr internal static pointer dcl 1-60 NAMES DECLARED BY EXPLICIT CONTEXT. PUNT 001257 constant label dcl 221 ref 276 damaged 001352 constant entry internal dcl 244 ref 154 damaged_user 001277 constant entry internal dcl 226 ref 129 error 001476 constant entry internal dcl 269 ref 84 85 94 97 102 105 201 206 209 v1_forum_gc_$expunge 000101 constant entry external dcl 8 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2004 2046 1543 2014 Length 2300 1543 42 215 241 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME v1_forum_gc_$expunge 229 external procedure is an external procedure. on unit on line 84 70 on unit on unit on line 85 70 on unit on unit on line 86 84 on unit damaged_user internal procedure shares stack frame of external procedure v1_forum_gc_$expunge. damaged internal procedure shares stack frame of external procedure v1_forum_gc_$expunge. error 68 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME v1_forum_gc_$expunge 000100 attendee_count v1_forum_gc_$expunge 000101 current_loc v1_forum_gc_$expunge 000102 deleted_count v1_forum_gc_$expunge 000103 forum_idx v1_forum_gc_$expunge 000104 idx v1_forum_gc_$expunge 000105 inner_ring v1_forum_gc_$expunge 000106 new_control_ptr v1_forum_gc_$expunge 000110 new_proc_len v1_forum_gc_$expunge 000112 new_proc_ptr v1_forum_gc_$expunge 000114 new_trans_ptr v1_forum_gc_$expunge 000116 project v1_forum_gc_$expunge 000121 trans_deleted v1_forum_gc_$expunge 000122 users_deleted v1_forum_gc_$expunge 000123 users_damaged v1_forum_gc_$expunge 000124 trans_damaged v1_forum_gc_$expunge 000126 old_trans_ptr v1_forum_gc_$expunge 000130 seg_len v1_forum_gc_$expunge 000131 status v1_forum_gc_$expunge 000132 trans_len v1_forum_gc_$expunge 000133 user_name v1_forum_gc_$expunge 000141 user_ring v1_forum_gc_$expunge 000142 damaged_transaction v1_forum_gc_$expunge 000226 forum_control_ptr v1_forum_gc_$expunge 000230 proceedings_ptr v1_forum_gc_$expunge THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return tra_ext enable ext_entry int_entry trunc_fx2 verify_eis divide_fx1 clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_lock_id_ get_ring_ get_temp_segment_ hcs_$level_get hcs_$level_set hcs_$truncate_seg release_temp_segment_ user_info_$whoami v1_forum_mgr_$get_ptrs v1_forum_mgr_$unlock THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$out_of_bounds forum_error_table_$chairman_only forum_error_table_$unexpected_fault LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 8 000073 76 000106 77 000111 78 000115 79 000121 80 000122 81 000126 82 000134 84 000143 85 000167 86 000213 87 000227 88 000236 89 000261 90 000304 91 000314 93 000315 94 000341 96 000351 97 000372 99 000406 101 000415 102 000436 104 000446 105 000467 109 000477 110 000506 111 000514 112 000524 113 000526 114 000530 115 000532 116 000534 118 000543 119 000546 120 000550 121 000552 122 000554 123 000561 128 000566 129 000577 130 000606 131 000621 132 000622 133 000634 135 000637 137 000651 139 000661 140 000662 141 000663 143 000665 148 000670 149 000673 151 000677 152 000711 154 000727 155 000734 156 000735 157 000744 158 000751 160 000752 161 000763 162 000774 163 000775 164 001000 165 001001 168 001011 172 001020 173 001024 174 001026 176 001027 177 001033 178 001036 179 001042 180 001044 182 001047 183 001053 186 001067 188 001071 189 001074 193 001076 194 001104 195 001111 196 001113 200 001121 201 001134 203 001144 205 001153 206 001174 208 001204 209 001225 211 001235 213 001244 214 001247 215 001251 216 001253 217 001255 218 001256 221 001257 222 001262 223 001271 224 001276 226 001277 231 001301 233 001324 235 001331 238 001347 244 001352 249 001354 251 001372 253 001411 256 001421 259 001436 260 001444 262 001456 264 001464 265 001473 269 001475 274 001503 275 001512 276 001516 ----------------------------------------------------------- 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