COMPILATION LISTING OF SEGMENT forum_open_mgr_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 08/16/86 1403.9 mst Sat Options: optimize map 1 /****^ ************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1984 * 4* * * 5* ************************************************************** */ 6 7 8 9 /****^ HISTORY COMMENTS: 10* 1) change(86-07-29,Pattin), approve(86-07-29,MCR7354), 11* audit(86-08-07,Margolin), install(86-08-16,MR12.0-1128): 12* Bug fixes to set_switch including TR19352, use real get_highest_seen 13* END HISTORY COMMENTS */ 14 15 16 /* format: style3,ifthen,ifthendo,ifthenstmt,^indnoniterdo,^inditerdo,idind30 */ 17 18 forum_open_mgr_$open: 19 proc (P_directory, P_name, P_forum_idx, P_status); 20 21 /* Version 2 Forum - 22* This module opens and closes meetings, and contains utility 23* information-retrieving routines not associated with individual 24* transactions. 25* 26* Jay Pattin 1/1/83 27* Modified 09/13/83 Jeffrey I. Schiller so forum_info correctly handles 28* expunged transactions 29* Audit changes, J. Spencer Love 10/05/84 */ 30 31 declare ( 32 P_access_name char (*), 33 P_access_time fixed bin (71), 34 P_area_ptr ptr, 35 P_chairman char (*), 36 P_directory char (*), 37 P_event_channel fixed bin (71), 38 P_forum_idx fixed bin, 39 P_forum_info_ptr ptr, 40 P_name char (*), 41 P_open_data_ptr ptr, 42 P_status fixed bin (35), 43 P_switch_name char (*), 44 P_switch_setting bit (1) aligned, 45 P_user_list_ptr ptr, 46 P_user_name char (*), 47 P_xacl bit (36) aligned 48 ) parameter; 49 50 declare attendee_offset bit (18) aligned, 51 directory char (168), 52 egress label variable, 53 forum_idx fixed bin, 54 idx fixed bin, 55 MAX_ATTENDEES fixed bin static options (constant) initial (6000), 56 me char (16) static options (constant) init ("forum_open_mgr_"), 57 name char (32), 58 privileged bit (1) aligned, 59 P_area area based (P_area_ptr), 60 status fixed bin (35), 61 switch fixed bin, 62 switch_name char (32), 63 switch_setting bit (1) aligned, 64 system_free_area area based (get_system_free_area_ ()), 65 uid bit (36) aligned, 66 unseen_ptr ptr, 67 user_ring fixed bin (3), 68 xacl bit (36) aligned; 69 70 declare static_init bit (1) aligned static init ("0"b), 71 first_open_data_ptr ptr static init (null ()), 72 person_id char (22) static, 73 project_id char (9) static, 74 process_id bit (36) aligned static, 75 inner_ring fixed bin (3) static, 76 lock_id bit (36) aligned static; 77 78 declare 1 fmi aligned like forum_info, 79 1 one_acl aligned, 80 2 access_name char (32), 81 2 modes bit (36), 82 2 xmodes bit (36), 83 2 code fixed bin (35); 84 85 declare expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)), 86 forum_logger_ entry options (variable), 87 forum_logger_$any_other entry options (variable), 88 forum_seg_mgr_$initiate entry (char (*), char (*), bit (1) aligned, ptr, ptr, bit (36) aligned, 89 fixed bin (35)), 90 forum_seg_mgr_$lock entry (ptr, fixed bin (35)), 91 forum_seg_mgr_$terminate entry (ptr, ptr), 92 forum_seg_mgr_$terminate_all entry (ptr), 93 forum_seg_mgr_$unlock entry (ptr), 94 forum_space_mgr_$allocate_bit_map 95 entry (ptr, ptr, fixed bin, ptr, fixed bin (35)), 96 forum_space_mgr_$find_attendee 97 entry (ptr, char (*), ptr, fixed bin (35)), 98 forum_space_mgr_$get_attendee_slot 99 entry (ptr, char (*), ptr, fixed bin (35)), 100 forum_space_mgr_$get_highest_seen 101 entry (ptr, ptr, bit (1) aligned, fixed bin, ptr, fixed bin (35)), 102 get_lock_id_ entry returns (bit (36) aligned), 103 get_process_id_ entry returns (bit (36) aligned), 104 get_ring_ entry returns (fixed bin (3)), 105 get_system_free_area_ entry returns (ptr), 106 hcs_$add_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)), 107 hcs_$fs_get_access_modes entry (ptr, bit (36) aligned, bit (36) aligned, fixed bin (35)), 108 hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)), 109 hcs_$get_safety_sw_seg entry (ptr, bit (1) aligned, fixed bin (35)), 110 hcs_$set_safety_sw_seg entry (ptr, bit (1) aligned, fixed bin (35)), 111 hcs_$get_uid_seg entry (ptr, bit (36) aligned, fixed bin (35)), 112 hcs_$get_user_access_modes entry (char (*), char (*), char (*), fixed bin, bit (36) aligned, 113 bit (36) aligned, fixed bin (35)), 114 hcs_$level_get entry (fixed bin (3)), 115 hcs_$level_set entry (fixed bin (3)), 116 pathname_ entry (char (*), char (*)) returns (char (168)), 117 set_lock_$lock entry (bit (36) aligned, fixed bin, fixed bin (35)), 118 user_info_$login_data entry (char (*), char (*), char (*), fixed bin, fixed bin, fixed bin, 119 fixed bin (71), char (*)); 120 121 declare ( 122 error_table_$bad_arg, 123 error_table_$incorrect_access, 124 error_table_$invalidsegno, 125 error_table_$lock_wait_time_exceeded, 126 error_table_$locked_by_this_process, 127 error_table_$moderr, 128 error_table_$noalloc, 129 error_table_$null_info_ptr, 130 error_table_$unimplemented_version, 131 forum_et_$anon_chairman, 132 forum_et_$cant_stop_msg_admin, 133 forum_et_$cant_stop_msg_site, 134 forum_et_$chairman_only, 135 forum_et_$forum_deleted, 136 forum_et_$invalid_forum_idx, 137 forum_et_$invalid_switch_name, 138 forum_et_$meeting_adjourned, 139 forum_et_$not_eligible, 140 forum_et_$not_user_switch, 141 forum_et_$switch_not_changed, 142 forum_et_$unexpected_fault, 143 forum_et_$you_twit 144 ) fixed bin (35) external static; 145 146 declare ( 147 forum_data_$print_eligibility_messages, 148 forum_data_$chairman_override 149 ) bit (1) aligned external; 150 151 declare (addr, after, before, clock, index, length, maxlength, null, ptr, rtrim, unspec) 152 builtin, 153 (any_other, area, cleanup, no_write_permission) 154 condition; 155 156 declare ( 157 SAFETY_SWITCH init (1), 158 MAX_STORAGE_SWITCH init (1), 159 ADJ_SWITCH init (2), 160 EMSG_SWITCH init (3), 161 DELETED_SWITCH init (4), 162 MAX_CM_SWITCH init (4), 163 PART_SWITCH init (5), 164 NOTIFY_SWITCH init (6), 165 CMSG_SWITCH init (7), 166 ACCESS_SWITCH init (8) 167 ) fixed bin internal static options (constant); 168 1 1 /* BEGIN INCLUDE FILE: forum_structures.incl.pl1 */ 1 2 1 3 /* This include file contains the declarations for all of the structures 1 4* used in a version 2 Forum meeting. 1 5* 1 6* Jay Pattin 12/28/82 */ 1 7 1 8 declare attendee_seg_ptr ptr, 1 9 transaction_seg_ptr ptr, 1 10 attendee_ptr ptr, 1 11 transaction_ptr ptr, 1 12 transaction_block_ptr ptr, 1 13 bit_map_ptr ptr; 1 14 1 15 /* This structure is for the segment "Attendees", it contains the participant 1 16* records and the bit-maps of transactions that have been seen. */ 1 17 1 18 declare 1 attendee_seg aligned based (attendee_seg_ptr), 1 19 2 header like attendee_seg_header, 1 20 2 attendee_area area; /* where attendee and bit map nodes go */ 1 21 1 22 declare 1 attendee_seg_header aligned based, 1 23 2 version char (8), 1 24 2 lock bit (36) aligned, 1 25 2 flags, 1 26 3 adjourned bit (1) unaligned, 1 27 3 am_init bit (1) unaligned, /* on if next value valid */ 1 28 3 am_print_acl_msg bit (1) unaligned, /* on if Sysadmin wants them printed */ 1 29 3 cm_init bit (1) unaligned, /* on if next vaue valid */ 1 30 3 cm_print_acl_msg bit (1) unaligned, /* on if chair wants messages printed */ 1 31 3 salvaging bit (1) unaligned, 1 32 3 mbz1 bit (30) unaligned, 1 33 2 attendee_count fixed bin, /* current number of attendees */ 1 34 2 chairman, 1 35 3 person_id char (22), 1 36 3 project_id char (9), 1 37 2 chairman_message char (256), 1 38 2 first_attendee_offset bit (18), 1 39 2 last_attendee_offset bit (18), 1 40 2 mbz2 (16) fixed bin (35); 1 41 1 42 declare 1 attendee aligned based (attendee_ptr), 1 43 2 version fixed bin, 1 44 2 attendee_uid fixed bin, /* Unique for this meeting only */ 1 45 2 person_id char (22), 1 46 2 project_id char (9), /* of project on when last opened */ 1 47 2 flags, 1 48 3 attending bit (1) unaligned, 1 49 3 participating bit (1) unaligned, 1 50 3 deleted bit (1) unaligned, /* by chairman - dlpt request */ 1 51 3 notify bit (1) unaligned, 1 52 3 acl_change_pending bit (1) unaligned, 1 53 3 message_change_pending bit (1) unaligned, 1 54 3 mbz1 bit (30) unaligned, 1 55 2 xacl bit (36) aligned, /* extended acl - see modes below */ 1 56 2 lock_id bit (36) aligned, 1 57 2 process_id bit (36) aligned, 1 58 2 event_channel fixed bin (71), /* For "A new transaction ..." messages */ 1 59 2 last_time_attended fixed bin (71), 1 60 2 bit_map_first_trans fixed bin, 1 61 2 bit_map_offset bit (18), 1 62 2 bit_map_length fixed bin, 1 63 2 left_son_offset bit (18), /* attendees are in a tree */ 1 64 2 right_son_offset bit (18), 1 65 2 next_offset bit (18); /* For sequential searching */ 1 66 1 67 declare 1 bit_map aligned based (bit_map_ptr), 1 68 2 attendee_uid fixed bin, /* For checking */ 1 69 2 length fixed bin, 1 70 2 map bit (alloc_bit_map_length refer (bit_map.length)); 1 71 1 72 declare alloc_bit_map_length fixed bin; 1 73 1 74 /* This structure is for the segment "Transactions" which contains all 1 75* information about transactions except the subject and text. */ 1 76 1 77 declare 1 transaction_seg aligned based (transaction_seg_ptr), 1 78 2 version char (8), 1 79 2 transaction_count fixed bin, 1 80 2 deleted_count fixed bin, 1 81 2 first_trans_offset bit (18), 1 82 2 last_trans_offset bit (18), 1 83 2 first_block_offset bit (18), 1 84 2 current_block_offset bit (18), /* location of block containing pointer to last trans */ 1 85 2 last_trans_in_block fixed bin, /* When we need to allocate new block */ 1 86 2 current_segno fixed bin, /* Where transactions are being allocated */ 1 87 2 next_trans_offset bit (18), /* offset within that seg */ 1 88 2 free_space_offset bit (18), /* first unused word in this seg */ 1 89 2 first_free_word fixed bin; /* only used to find initial value of previous */ 1 90 1 91 declare 1 transaction based (transaction_ptr), 1 92 2 version fixed bin, 1 93 2 trans_idx fixed bin, 1 94 2 author, 1 95 3 person_id char (22), 1 96 3 project_id char (9), 1 97 2 flags, 1 98 3 deleted bit (1) unaligned, 1 99 3 deleted_by_author bit (1) unaligned, /* As opposed to deleted by chairman */ 1 100 3 unfilled bit (1) unaligned, /* And it should stay that way */ 1 101 3 mbz1 bit (33) unaligned, 1 102 2 pref_offset bit (18), 1 103 2 nref_offset bit (18), 1 104 2 time fixed bin (71), 1 105 2 segno fixed bin, /* What proceeding segment this is in */ 1 106 2 subject_offset bit (18), 1 107 2 subject_length fixed bin (21), 1 108 2 text_offset bit (18), 1 109 2 text_length fixed bin (21), 1 110 2 next_offset bit (18), 1 111 2 prev_offset bit (18); 1 112 1 113 1 114 declare 1 transaction_block based (transaction_block_ptr), 1 115 2 first_trans_idx fixed bin, /* In this block */ 1 116 2 last_trans_idx fixed bin, 1 117 2 time fixed bin (71), /* of first trans in this block */ 1 118 2 prev_block_offset bit (18), 1 119 2 next_block_offset bit (18), 1 120 2 transactions (1014), 1 121 3 offset bit (18); /* -1 if expunged */ 1 122 1 123 declare (ATTENDEE_SEG_VERSION_1 init ("FMCTL_1"), 1 124 TRANS_SEG_VERSION_1 init ("FMTR_1")) 1 125 char (8) static options (constant); 1 126 1 127 declare (ATTENDEE_SEG_NAME init ("Attendees"), 1 128 TRANSACTION_SEG_NAME init ("Transactions"), 1 129 PROCEEDINGS_SEG_NAME init ("Proceedings.")) /* numeric suffix is added */ 1 130 char (32) static options (constant); 1 131 1 132 declare (ATTENDEE_VERSION_1, 1 133 TRANSACTION_VERSION_1) fixed bin static options (constant) init (-42); 1 134 1 135 declare EXPUNGED bit (18) static options (constant) init ("111111111111111111"b); 1 136 1 137 declare (RWC_XACL init ("111"b), 1 138 RW_XACL init ("110"b), 1 139 R_XACL init ("100"b)) 1 140 bit (3) static options (constant); 1 141 1 142 /* END INCLUDE FILE: forum_structures.incl.pl1 */ 169 170 2 1 /* BEGIN INCLUDE FILE: forum_open_data.incl.pl1 */ 2 2 2 3 declare open_data_ptr ptr; 2 4 2 5 declare 1 open_data aligned based (open_data_ptr), 2 6 2 next_open_data_ptr ptr, 2 7 2 prev_open_data_ptr ptr, 2 8 2 forum_name char (168), 2 9 2 forum_idx fixed bin, 2 10 2 forum_uid bit (36), /* UID of attendee seg */ 2 11 2 attendee_seg_ptr ptr, 2 12 2 transaction_seg_ptr ptr, 2 13 2 proceedings_ptrs (16) ptr, 2 14 2 attendee_ptr ptr, /* -> attendee slot for this user */ 2 15 2 bit_map_ptr ptr, /* -> bit_map for this user */ 2 16 2 open_count fixed bin, 2 17 2 invalid bit (1) aligned; 2 18 2 19 /* END INCLUDE FILE: forum_open_data.incl.pl1 */ 171 172 3 1 /* START OF: forum_info.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(86-07-30,Pattin), approve(86-07-30,MCR7354), 3 7* audit(86-08-03,Margolin), install(86-08-16,MR12.0-1128): 3 8* Changed to version 2, speed up call by not calculating remove count. 3 9* END HISTORY COMMENTS */ 3 10 3 11 3 12 declare forum_info_ptr ptr; 3 13 3 14 declare 1 forum_info aligned based (forum_info_ptr), 3 15 2 version fixed bin, /* Must be 1 or 2 */ 3 16 2 forum_uid bit (36), 3 17 2 chairman unaligned, 3 18 3 username char (20), 3 19 3 project char (9), 3 20 3 pad char (3), 3 21 2 attendee_count fixed bin, 3 22 2 removal_count fixed bin, /* always 0 in version 2 */ 3 23 2 transaction_count fixed bin, 3 24 2 deletion_count fixed bin, 3 25 2 last_seen_trans_idx fixed bin, 3 26 2 last_time_changed fixed bin (71), 3 27 2 last_time_attended fixed bin (71), 3 28 2 changes_count fixed bin, 3 29 2 flags unaligned, 3 30 3 eligible bit (1), 3 31 3 mbz1 bit (1), 3 32 3 removed bit (1), 3 33 3 notify bit (1), 3 34 3 attending bit (1), 3 35 3 mbz2 bit (2), 3 36 3 read_only bit (1), 3 37 3 adjourned bit (1), 3 38 3 mbz3 bit (27); 3 39 3 40 declare forum_info_version_1 fixed bin static options (constant) initial (1), 3 41 forum_info_version_2 fixed bin static options (constant) initial (2); 3 42 3 43 /* END OF: forum_info.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 173 174 4 1 /* BEGIN INCLUDE FILE: forum_user_list.incl.pl1 */ 4 2 4 3 declare user_list_no_attendees fixed bin, 4 4 user_list_ptr ptr; 4 5 4 6 declare 1 user_list aligned based (user_list_ptr), 4 7 2 version fixed bin, 4 8 2 chairman aligned, 4 9 3 person_id char (22) unaligned, 4 10 3 project_id char (9) unaligned, 4 11 2 transaction_count fixed bin, 4 12 2 no_attendees fixed bin, 4 13 2 attendees (user_list_no_attendees refer (user_list.no_attendees)), 4 14 3 person_id char (22) unaligned, 4 15 3 project_id char (11) unaligned, 4 16 3 attending bit (1) unaligned, 4 17 3 mbz1 bit (2) unaligned, /* version 1 compatibility */ 4 18 3 notify bit (1) unaligned, 4 19 3 removed bit (1) unaligned, 4 20 3 read_only bit (1) unaligned, 4 21 3 deleted bit (1) unaligned, 4 22 3 unused_flags bit (2) unaligned, 4 23 3 last_time_attended fixed bin (71), 4 24 3 highest_trans_seen fixed bin; 4 25 4 26 declare user_list_version_2 fixed bin static init (2) options (constant); 4 27 4 28 /* END INCLUDE FILE: forum_user_list.incl.pl1 */ 175 176 5 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 5 2* 5 3* Values for the "access mode" argument so often used in hardcore 5 4* James R. Davis 26 Jan 81 MCR 4844 5 5* Added constants for SM access 4/28/82 Jay Pattin 5 6* Added text strings 03/19/85 Chris Jones 5 7**/ 5 8 5 9 5 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 5 11 dcl ( 5 12 N_ACCESS init ("000"b), 5 13 R_ACCESS init ("100"b), 5 14 E_ACCESS init ("010"b), 5 15 W_ACCESS init ("001"b), 5 16 RE_ACCESS init ("110"b), 5 17 REW_ACCESS init ("111"b), 5 18 RW_ACCESS init ("101"b), 5 19 S_ACCESS init ("100"b), 5 20 M_ACCESS init ("010"b), 5 21 A_ACCESS init ("001"b), 5 22 SA_ACCESS init ("101"b), 5 23 SM_ACCESS init ("110"b), 5 24 SMA_ACCESS init ("111"b) 5 25 ) bit (3) internal static options (constant); 5 26 5 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 5 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 5 29 5 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 5 31 static options (constant); 5 32 5 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 5 34 static options (constant); 5 35 5 36 dcl ( 5 37 N_ACCESS_BIN init (00000b), 5 38 R_ACCESS_BIN init (01000b), 5 39 E_ACCESS_BIN init (00100b), 5 40 W_ACCESS_BIN init (00010b), 5 41 RW_ACCESS_BIN init (01010b), 5 42 RE_ACCESS_BIN init (01100b), 5 43 REW_ACCESS_BIN init (01110b), 5 44 S_ACCESS_BIN init (01000b), 5 45 M_ACCESS_BIN init (00010b), 5 46 A_ACCESS_BIN init (00001b), 5 47 SA_ACCESS_BIN init (01001b), 5 48 SM_ACCESS_BIN init (01010b), 5 49 SMA_ACCESS_BIN init (01011b) 5 50 ) fixed bin (5) internal static options (constant); 5 51 5 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 177 178 179 /* forum_open_mgr_$open: 180* proc (P_directory, P_name, P_forum_idx, P_status); */ 181 182 call initialize (OPEN_EXIT); 183 184 directory = P_directory; 185 name = P_name; 186 187 on cleanup call close_meeting (); 188 on any_other 189 begin; 190 revert any_other; 191 call forum_logger_$any_other (0, me, "Opening ^a>^a.", directory, name); 192 call error (forum_et_$unexpected_fault); 193 end; 194 195 call forum_seg_mgr_$initiate (directory, name, "1"b, attendee_seg_ptr, transaction_seg_ptr, xacl, status); 196 if status ^= 0 then call error (status); 197 if xacl = N_ACCESS then call error (forum_et_$not_eligible); 198 199 call open_meeting (); 200 201 if attendee_seg.adjourned & xacl ^= RWC_XACL then call error (forum_et_$meeting_adjourned); 202 203 call forum_space_mgr_$get_attendee_slot (attendee_seg_ptr, person_id, attendee_ptr, status); 204 if status ^= 0 then call error (status); 205 206 open_data.attendee_ptr = attendee_ptr; 207 open_data.bit_map_ptr = ptr (attendee_seg_ptr, attendee.bit_map_offset); 208 209 call fill_attendee_slot (); 210 attendee.participating = "1"b; /* only set these on opens */ 211 attendee.deleted = "0"b; 212 213 call forum_seg_mgr_$unlock (attendee_seg_ptr); 214 P_forum_idx = open_data.forum_idx; 215 P_status = 0; 216 return; 217 218 OPEN_EXIT: 219 call close_meeting (); 220 P_forum_idx = 0; 221 P_status = status; 222 return; 223 224 open_meeting: 225 proc (); 226 227 call hcs_$get_uid_seg (attendee_seg_ptr, uid, status); 228 if status ^= 0 then call error (status); 229 230 do open_data_ptr = first_open_data_ptr repeat open_data.next_open_data_ptr while (open_data_ptr ^= null ()); 231 if open_data.forum_uid = uid then do; 232 call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 233 attendee_seg_ptr = open_data.attendee_seg_ptr; 234 transaction_seg_ptr = open_data.transaction_seg_ptr; 235 open_data.open_count = open_data.open_count + 1; 236 return; 237 end; 238 end; 239 240 on area call error (error_table_$noalloc); 241 allocate open_data in (system_free_area); 242 revert area; 243 244 open_data.forum_name = rtrim (directory) || ">" || name; 245 open_data.forum_uid = uid; 246 open_data.attendee_seg_ptr = attendee_seg_ptr; 247 open_data.transaction_seg_ptr = transaction_seg_ptr; 248 open_data.proceedings_ptrs (*) = null (); 249 open_data.attendee_ptr = null (); 250 open_data.bit_map_ptr = null (); 251 open_data.open_count = 1; 252 open_data.invalid = ""b; 253 254 open_data.prev_open_data_ptr = null (); 255 open_data.next_open_data_ptr = first_open_data_ptr; 256 257 if first_open_data_ptr = null () then 258 open_data.forum_idx = -1; 259 else do; 260 open_data.forum_idx = first_open_data_ptr -> open_data.forum_idx - 1; 261 first_open_data_ptr -> open_data.prev_open_data_ptr = open_data_ptr; 262 end; 263 264 first_open_data_ptr = open_data_ptr; 265 266 return; 267 end open_meeting; 268 269 fill_attendee_slot: 270 proc (); 271 272 if attendee.person_id ^= person_id then do; 273 call forum_space_mgr_$find_attendee (attendee_seg_ptr, person_id, attendee_ptr, status); 274 if status ^= 0 then call error (status); 275 open_data.attendee_ptr = attendee_ptr; 276 end; 277 278 if attendee.bit_map_offset = ""b then do; 279 call forum_space_mgr_$allocate_bit_map (open_data_ptr, attendee_ptr, 1, bit_map_ptr, status); 280 if status ^= 0 then call error (status); 281 open_data.bit_map_ptr = bit_map_ptr; 282 end; 283 284 bit_map_ptr = open_data.bit_map_ptr; 285 if bit_map.attendee_uid ^= attendee.attendee_uid then 286 /* In case it moved on us */ 287 bit_map_ptr, open_data.bit_map_ptr = ptr (attendee_seg_ptr, attendee.bit_map_offset); 288 289 attendee.last_time_attended = clock (); 290 attendee.project_id = project_id; 291 attendee.attending = "1"b; 292 attendee.process_id = process_id; 293 attendee.lock_id = lock_id; 294 attendee.xacl = xacl; 295 296 return; 297 end fill_attendee_slot; 298 299 forum_open_mgr_$close: 300 entry (P_forum_idx, P_status); 301 302 call initialize (CLOSE_EXIT); 303 304 call lookup_forum_idx ("1"b); 305 306 call fill_attendee_slot (); 307 308 P_forum_idx = 0; 309 call close_meeting (); 310 311 P_status = 0; 312 return; 313 314 CLOSE_EXIT: 315 call forum_seg_mgr_$unlock (attendee_seg_ptr); 316 P_status = status; 317 return; 318 319 close_meeting: 320 proc (); 321 322 if open_data_ptr ^= null () then do; 323 open_data.open_count = open_data.open_count - 1; 324 if open_data.open_count > 0 then do; 325 call forum_seg_mgr_$unlock (attendee_seg_ptr); 326 return; 327 end; 328 329 if attendee_ptr ^= null () then do; 330 attendee.attending = "0"b; 331 attendee.event_channel = 0; 332 end; 333 334 if first_open_data_ptr = open_data_ptr then first_open_data_ptr = open_data.next_open_data_ptr; 335 336 if open_data.prev_open_data_ptr ^= null () then 337 open_data.prev_open_data_ptr -> open_data.next_open_data_ptr = open_data.next_open_data_ptr; 338 if open_data.next_open_data_ptr ^= null () then 339 open_data.next_open_data_ptr -> open_data.prev_open_data_ptr = open_data.prev_open_data_ptr; 340 341 call forum_seg_mgr_$unlock (attendee_seg_ptr); 342 343 call forum_seg_mgr_$terminate_all (open_data_ptr); 344 345 free open_data; 346 end; 347 else call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 348 349 end close_meeting; 350 351 forum_open_mgr_$lookup_forum_idx: 352 entry (P_forum_idx, P_open_data_ptr, P_xacl, P_status); 353 354 call initialize (LOOKUP_EXIT); 355 356 call lookup_forum_idx ("0"b); 357 358 call fill_attendee_slot (); 359 360 P_open_data_ptr = open_data_ptr; 361 P_xacl = xacl; 362 P_status = 0; 363 return; 364 365 LOOKUP_EXIT: 366 P_open_data_ptr = null (); 367 P_xacl = ""b; 368 P_status = status; 369 return; 370 371 lookup_forum_idx: 372 proc (null_access_ok); 373 374 declare null_access_ok bit (1) aligned; 375 376 forum_idx = P_forum_idx; 377 378 if forum_idx > -1 then call error (forum_et_$invalid_forum_idx); 379 380 on cleanup call hcs_$level_set (user_ring); 381 call hcs_$level_set (inner_ring); 382 383 do open_data_ptr = first_open_data_ptr repeat (open_data.next_open_data_ptr) while (open_data_ptr ^= null ()); 384 if open_data.forum_idx = forum_idx then do; 385 call hcs_$get_uid_seg (open_data.attendee_seg_ptr, uid, status); 386 if status ^= 0 then 387 if status = error_table_$invalidsegno then 388 call error (forum_et_$forum_deleted); 389 else call error (status); 390 391 if uid ^= open_data.forum_uid then call error (forum_et_$forum_deleted); 392 393 attendee_seg_ptr = open_data.attendee_seg_ptr; 394 transaction_seg_ptr = open_data.transaction_seg_ptr; 395 attendee_ptr = open_data.attendee_ptr; 396 397 call hcs_$fs_get_access_modes (attendee_seg_ptr, ""b, xacl, status); 398 if status ^= 0 then call error (status); 399 400 if xacl = N_ACCESS & ^null_access_ok then 401 /* Somebody stole our access */ 402 call error (forum_et_$not_eligible); 403 404 call forum_seg_mgr_$lock (attendee_seg_ptr, status); 405 if status ^= 0 then call error (status); 406 407 call hcs_$level_set (user_ring); 408 return; 409 end; 410 end; 411 412 call error (forum_et_$invalid_forum_idx); 413 414 return; 415 end lookup_forum_idx; 416 417 forum_open_mgr_$get_switch: 418 entry (P_directory, P_name, P_user_name, P_switch_name, P_switch_setting, P_status); 419 420 call initialize (SET_SWITCH_EXIT); 421 422 on cleanup call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 423 424 directory = P_directory; 425 name = P_name; 426 call forum_seg_mgr_$initiate (directory, name, "1"b, attendee_seg_ptr, transaction_seg_ptr, xacl, status); 427 if status ^= 0 then call error (status); 428 if xacl = N_ACCESS then call error (forum_et_$not_eligible); 429 430 switch_name = P_switch_name; 431 call lookup_switch (); 432 433 if switch = ADJ_SWITCH then P_switch_setting = attendee_seg.adjourned; 434 else if switch = EMSG_SWITCH then 435 P_switch_setting = attendee_seg.am_print_acl_msg | attendee_seg.cm_print_acl_msg; 436 else if switch = SAFETY_SWITCH then do; 437 call hcs_$get_safety_sw_seg (attendee_seg_ptr, P_switch_setting, status); 438 if status ^= 0 then call error (status); 439 end; 440 else do; /* need attendee record */ 441 call forum_space_mgr_$find_attendee (attendee_seg_ptr, person_id, attendee_ptr, status); 442 if status ^= 0 then call error (status); 443 444 if switch = PART_SWITCH then P_switch_setting = attendee.participating; 445 else if switch = NOTIFY_SWITCH then P_switch_setting = attendee.notify; 446 else if switch = CMSG_SWITCH then P_switch_setting = ^attendee.message_change_pending; 447 else if switch = ACCESS_SWITCH then P_switch_setting = attendee.acl_change_pending; 448 else if switch = DELETED_SWITCH then P_switch_setting = attendee.deleted; 449 end; 450 451 call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 452 P_status = status; 453 return; 454 455 456 lookup_switch: 457 proc (); 458 459 if switch_name = "safety" then switch = SAFETY_SWITCH; 460 else if switch_name = "adjourned" | switch_name = "adj" then switch = ADJ_SWITCH; 461 else if switch_name = "meeting_eligibility_messages" | switch_name = "mtg_emsg" then switch = EMSG_SWITCH; 462 else if switch_name = "participating" | switch_name = "part" then switch = PART_SWITCH; 463 else if switch_name = "notify" | switch_name = "nt" then switch = NOTIFY_SWITCH; 464 else if switch_name = "message_seen" then switch = CMSG_SWITCH; 465 else if switch_name = "access_changed" then switch = ACCESS_SWITCH; 466 else if switch_name = "deleted" then switch = DELETED_SWITCH; 467 else call error (forum_et_$invalid_switch_name); 468 end lookup_switch; 469 470 forum_open_mgr_$priv_set_switch: 471 entry (P_directory, P_name, P_user_name, P_switch_name, P_switch_setting, P_status); 472 473 privileged = "1"b; 474 goto SS_COMMON; 475 476 forum_open_mgr_$set_switch: 477 entry (P_directory, P_name, P_user_name, P_switch_name, P_switch_setting, P_status); 478 479 privileged = "0"b; 480 SS_COMMON: 481 call initialize (SET_SWITCH_EXIT); 482 483 on cleanup call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 484 485 directory = P_directory; 486 name = P_name; 487 call forum_seg_mgr_$initiate (directory, name, "1"b, attendee_seg_ptr, transaction_seg_ptr, xacl, status); 488 if status ^= 0 then call error (status); 489 490 if ^privileged & xacl = N_ACCESS then call error (forum_et_$not_eligible); 491 492 call set_switch (); 493 494 call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 495 P_status = status; 496 return; 497 498 SET_SWITCH_EXIT: 499 call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 500 P_status = status; 501 return; 502 503 forum_open_mgr_$set_switch_idx: 504 entry (P_forum_idx, P_user_name, P_switch_name, P_switch_setting, P_status); 505 506 call initialize (SET_SWITCH_IDX_EXIT); 507 508 call lookup_forum_idx ("0"b); 509 510 call fill_attendee_slot (); 511 512 privileged = "0"b; 513 call set_switch (); 514 515 call forum_seg_mgr_$unlock (attendee_seg_ptr); 516 P_status = status; 517 518 return; 519 520 SET_SWITCH_IDX_EXIT: 521 call forum_seg_mgr_$unlock (attendee_seg_ptr); 522 P_status = status; 523 524 return; 525 526 /* Do all the work of setting a switch. We have to copy and check all the arguments from the user ring, and 527* decide whether to permit the operation. Only the chairman can mess with other people's switches. */ 528 529 set_switch: 530 procedure (); 531 532 declare person_name char (20); 533 534 if length (rtrim (P_user_name)) > maxlength (person_name) then 535 call error (error_table_$bad_arg); 536 else person_name = P_user_name; 537 538 if person_name = "" then person_name = person_id; 539 else if person_name ^= person_id then do; 540 if ^privileged & xacl ^= RWC_XACL then call error (forum_et_$chairman_only); 541 attendee_ptr = null (); 542 end; 543 544 if length (rtrim (P_switch_name)) > maxlength (switch_name) then 545 call error (forum_et_$invalid_switch_name); 546 else switch_name = P_switch_name; 547 548 call lookup_switch (); 549 switch_setting = P_switch_setting; 550 551 if switch <= MAX_CM_SWITCH then do; 552 if ^privileged & xacl ^= RWC_XACL then 553 if switch <= MAX_STORAGE_SWITCH then 554 call check_access (); 555 else call error (forum_et_$chairman_only); 556 557 if switch ^= DELETED_SWITCH & person_name ^= person_id then call error (forum_et_$not_user_switch); 558 end; 559 560 if switch = ADJ_SWITCH then call set_the_switch (attendee_seg.adjourned, switch_setting); 561 else if switch = EMSG_SWITCH then do; 562 if ^privileged then do; 563 if ^switch_setting then do; 564 if ^forum_data_$chairman_override & forum_data_$print_eligibility_messages then 565 call error (forum_et_$cant_stop_msg_site); 566 if attendee_seg.am_init & attendee_seg.am_print_acl_msg then 567 call error (forum_et_$cant_stop_msg_admin); 568 end; 569 call set_the_switch (attendee_seg.cm_print_acl_msg, switch_setting); 570 if ^attendee_seg.cm_init & status = forum_et_$switch_not_changed then status = 0; 571 attendee_seg.cm_init = "1"b; 572 end; 573 else do; 574 call set_the_switch (attendee_seg.am_print_acl_msg, switch_setting); 575 if ^attendee_seg.am_init & status = forum_et_$switch_not_changed then status = 0; 576 attendee_seg.am_init = "1"b; 577 end; 578 end; 579 else if switch = SAFETY_SWITCH then do; 580 on cleanup call hcs_$level_set (user_ring); 581 call hcs_$level_set (inner_ring); 582 583 call hcs_$set_safety_sw_seg (attendee_seg_ptr, switch_setting, status); 584 if status ^= 0 then call error (status); 585 call hcs_$level_set (user_ring); 586 end; 587 else do; 588 if attendee_ptr = null () then do; 589 call forum_space_mgr_$find_attendee (attendee_seg_ptr, person_name, attendee_ptr, status); 590 if status ^= 0 then call error (status); 591 end; 592 593 if switch = PART_SWITCH then call set_the_switch (attendee.participating, switch_setting); 594 else if switch = NOTIFY_SWITCH then call set_the_switch (attendee.notify, switch_setting); 595 else if switch = CMSG_SWITCH then call set_the_switch (attendee.message_change_pending, ^switch_setting); 596 else if switch = ACCESS_SWITCH then call set_the_switch (attendee.acl_change_pending, switch_setting); 597 598 else if switch = DELETED_SWITCH then do; 599 if person_id = person_name then call error (forum_et_$you_twit); 600 /* chairman can't delete himself */ 601 call set_the_switch (attendee.deleted, switch_setting); 602 attendee.participating = "0"b; 603 end; 604 end; 605 606 return; 607 608 set_the_switch: 609 proc (switch, value); 610 611 declare switch bit (1) unaligned; 612 declare value bit (1) aligned; 613 614 if switch = value then 615 status = forum_et_$switch_not_changed; 616 else switch = value; 617 618 return; 619 end set_the_switch; 620 621 check_access: 622 proc (); 623 624 declare modes bit (36) aligned; 625 626 /* for set_switch, dir & name already correct, this is for _idx */ 627 if open_data_ptr ^= null () then call expand_pathname_ ((open_data.forum_name), directory, name, status); 628 if status ^= 0 then call error (status); 629 630 call expand_pathname_ (directory, directory, name, status); 631 if status ^= 0 then call error (status); 632 633 call hcs_$get_user_access_modes (directory, name, "", -1, modes, ""b, status); 634 if status ^= 0 then call error (status); 635 if modes & M_ACCESS = ""b then call error (error_table_$incorrect_access); 636 end check_access; 637 638 end set_switch; 639 640 forum_open_mgr_$set_global_switch: 641 entry (P_switch_name, P_switch_setting, P_status); 642 643 call initialize (SET_GLOBAL_EXIT); 644 645 if length (rtrim (P_switch_name)) > maxlength (switch_name) then 646 call error (forum_et_$invalid_switch_name); 647 else switch_name = P_switch_name; 648 649 switch_setting = P_switch_setting; 650 651 on no_write_permission call error (error_table_$moderr); 652 653 if switch_name = "print_eligibility_messages" | switch_name = "pemsg" then 654 forum_data_$print_eligibility_messages = switch_setting; 655 else if switch_name = "chairman_set_eligibility_msg" | switch_name = "cm_set_emsg" then 656 forum_data_$chairman_override = switch_setting; 657 else call error (forum_et_$invalid_switch_name); 658 659 P_status = 0; 660 return; 661 662 SET_GLOBAL_EXIT: 663 P_status = status; 664 return; 665 666 forum_open_mgr_$set_event_channel_idx: 667 entry (P_forum_idx, P_event_channel, P_status); 668 669 call initialize (SET_EVENT_CHANNEL_IDX_EXIT); 670 671 call lookup_forum_idx ("0"b); 672 673 call fill_attendee_slot (); 674 675 attendee.event_channel = P_event_channel; 676 677 call forum_seg_mgr_$unlock (attendee_seg_ptr); 678 P_status = 0; 679 680 return; 681 682 SET_EVENT_CHANNEL_IDX_EXIT: 683 call forum_seg_mgr_$unlock (attendee_seg_ptr); 684 P_status = status; 685 686 return; 687 688 forum_open_mgr_$forum_info: 689 entry (P_directory, P_name, P_access_name, P_access_time, P_forum_info_ptr, P_status); 690 691 call initialize (FORUM_INFO_EXIT); 692 693 on cleanup call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 694 695 directory = P_directory; 696 name = P_name; 697 call forum_seg_mgr_$initiate (directory, name, "1"b, attendee_seg_ptr, transaction_seg_ptr, xacl, status); 698 if status ^= 0 then call error (status); 699 700 directory = pathname_ (directory, name); 701 call get_forum_info (); 702 call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 703 704 forum_info = fmi; 705 if xacl = N_ACCESS then call error (forum_et_$not_eligible); 706 707 P_status = status; 708 return; 709 710 FORUM_INFO_EXIT: 711 call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 712 P_status = status; 713 714 return; 715 716 forum_open_mgr_$forum_info_idx: 717 entry (P_forum_idx, P_access_name, P_access_time, P_forum_info_ptr, P_status); 718 719 call initialize (MEETING_INFO_IDX_EXIT); 720 721 call lookup_forum_idx ("1"b); 722 723 call fill_attendee_slot (); 724 725 directory = open_data.forum_name; 726 call get_forum_info (); 727 728 call forum_seg_mgr_$unlock (attendee_seg_ptr); 729 730 forum_info = fmi; 731 P_status = 0; 732 return; 733 734 MEETING_INFO_IDX_EXIT: 735 call forum_seg_mgr_$unlock (attendee_seg_ptr); 736 P_status = status; 737 738 return; 739 740 get_forum_info: 741 procedure (); 742 743 declare access_name char (32), 744 access_time fixed bin (71), 745 done bit (1) aligned, 746 person_name char (22); 747 748 if length (rtrim (P_access_name)) > maxlength (access_name) then 749 call error (error_table_$bad_arg); 750 else access_name = P_access_name; 751 752 access_time = P_access_time; 753 754 forum_info_ptr = P_forum_info_ptr; 755 if forum_info_ptr = null () then call error (error_table_$null_info_ptr); 756 757 if forum_info.version ^= forum_info_version_1 & forum_info.version ^= forum_info_version_2 then 758 call error (error_table_$unimplemented_version); 759 unspec (fmi) = ""b; 760 fmi.version = forum_info.version; 761 762 fmi.chairman.username = attendee_seg.chairman.person_id; 763 fmi.chairman.project = attendee_seg.chairman.project_id; 764 fmi.chairman.pad = ""; 765 766 if fmi.version = forum_info_version_2 then do; 767 fmi.attendee_count = attendee_seg.attendee_count; 768 fmi.removal_count = 0; 769 end; 770 else do; 771 fmi.attendee_count = 0; 772 do attendee_offset = attendee_seg.first_attendee_offset repeat (attendee.next_offset) 773 while (attendee_offset ^= ""b); 774 fmi.attendee_count = fmi.attendee_count + 1; 775 if fmi.attendee_count > MAX_ATTENDEES then do; 776 fmi.attendee_count = attendee_seg.attendee_count; 777 call hcs_$fs_get_path_name (attendee_seg_ptr, directory, (0), (""), (0)); 778 call forum_logger_ (0, me, "Looping attendee list in ^a", directory); 779 go to COUNT_CONTINUE; 780 end; 781 attendee_ptr = ptr (attendee_seg_ptr, attendee_offset); 782 if ^attendee.participating then fmi.removal_count = fmi.removal_count + 1; 783 end; 784 785 if fmi.attendee_count ^= attendee_seg.attendee_count then do; 786 call hcs_$fs_get_path_name (attendee_seg_ptr, directory, (0), (""), (0)); 787 call forum_logger_ (0, me, "Attendee count in ^a claimed to be ^d, was ^d.", directory, 788 attendee_seg.attendee_count, fmi.attendee_count); 789 end; 790 end; 791 792 COUNT_CONTINUE: 793 call hcs_$get_uid_seg (attendee_seg_ptr, fmi.forum_uid, status); 794 if status ^= 0 then call error (status); 795 796 if access_name = "" then 797 person_name = person_id; 798 else do; 799 person_name = before (access_name, "."); 800 if length (rtrim (person_name)) > 1 & substr (person_name, 1, 1) = "*" then 801 access_name = "anonymous." || after (access_name, "."); 802 call hcs_$get_user_access_modes (directory, ATTENDEE_SEG_NAME, access_name, -1, ""b, xacl, status); 803 if status ^= 0 then call error (status); 804 end; 805 fmi.eligible = (xacl ^= N_ACCESS); 806 807 call forum_space_mgr_$find_attendee (attendee_seg_ptr, person_name, attendee_ptr, (0)); 808 if attendee_ptr = null () then return; 809 810 fmi.removed = ^attendee.participating; 811 fmi.last_time_attended = attendee.last_time_attended; 812 813 call forum_space_mgr_$get_highest_seen (attendee_ptr, transaction_seg_ptr, "1"b, 814 fmi.last_seen_trans_idx, unseen_ptr, status); 815 if status ^= 0 then call error (status); 816 817 if ^fmi.removed then do; 818 fmi.notify = attendee.notify; 819 fmi.attending = attendee.attending; 820 end; 821 fmi.adjourned = attendee_seg.adjourned; 822 823 if xacl = N_ACCESS then return; 824 fmi.read_only = (xacl = R_XACL); 825 826 transaction_ptr = ptr (transaction_seg_ptr, transaction_seg.last_trans_offset); 827 done = "0"b; 828 do while (^done); 829 if transaction.time <= access_time | transaction.prev_offset = ""b then 830 done = "1"b; 831 else transaction_ptr = ptr (transaction_seg_ptr, transaction.prev_offset); 832 end; 833 834 fmi.transaction_count = transaction.trans_idx; 835 fmi.deletion_count = transaction_seg.deleted_count; 836 837 if fmi.last_seen_trans_idx <= fmi.transaction_count then 838 transaction_ptr = unseen_ptr; 839 else if transaction.next_offset = ""b then transaction_ptr = null (); 840 else transaction_ptr = ptr (transaction_seg_ptr, transaction.next_offset); 841 842 do while (transaction_ptr ^= null ()); 843 if transaction.person_id ^= person_name & ^transaction.deleted then 844 fmi.changes_count = fmi.changes_count + 1; 845 if transaction.next_offset = ""b then 846 transaction_ptr = null (); 847 else transaction_ptr = ptr (transaction_seg_ptr, transaction.next_offset); 848 end; 849 850 idx = transaction_seg.transaction_count; 851 if idx < 1 then return; 852 853 transaction_ptr = ptr (transaction_seg_ptr, transaction_seg.last_trans_offset); 854 do while (transaction.deleted | transaction.time > access_time); 855 if transaction.prev_offset = ""b then 856 return; 857 else transaction_ptr = ptr (transaction_seg_ptr, transaction.prev_offset); 858 end; 859 fmi.last_time_changed = transaction.time; 860 861 status = 0; 862 return; 863 864 end get_forum_info; 865 866 forum_open_mgr_$list_users: 867 entry (P_directory, P_name, P_area_ptr, P_user_list_ptr, P_status); 868 869 call initialize (LIST_USERS_EXIT); 870 871 on cleanup call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 872 873 directory = P_directory; 874 name = P_name; 875 call forum_seg_mgr_$initiate (directory, name, "1"b, attendee_seg_ptr, transaction_seg_ptr, xacl, status); 876 if status ^= 0 then call error (status); 877 if xacl = N_ACCESS then call error (forum_et_$not_eligible); 878 879 call get_user_list (); 880 881 call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 882 P_status = 0; 883 return; 884 885 LIST_USERS_EXIT: 886 call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 887 888 P_status = status; 889 return; 890 891 forum_open_mgr_$list_users_idx: 892 entry (P_forum_idx, P_area_ptr, P_user_list_ptr, P_status); 893 894 call initialize (LIST_USERS_IDX_EXIT); 895 896 call lookup_forum_idx ("0"b); 897 898 call fill_attendee_slot (); 899 900 call get_user_list (); 901 902 call forum_seg_mgr_$unlock (attendee_seg_ptr); 903 P_status = 0; 904 return; 905 906 LIST_USERS_IDX_EXIT: 907 call forum_seg_mgr_$unlock (attendee_seg_ptr); 908 P_status = status; 909 return; 910 911 get_user_list: 912 procedure; 913 914 declare jdx fixed bin; 915 916 user_list_no_attendees = attendee_seg.attendee_count; 917 allocate user_list in (P_area); 918 919 user_list.version = user_list_version_2; 920 user_list.chairman.person_id = attendee_seg.chairman.person_id; 921 user_list.chairman.project_id = attendee_seg.chairman.project_id; 922 user_list.transaction_count = transaction_seg.transaction_count; 923 924 jdx = 0; 925 do attendee_ptr = ptr (attendee_seg_ptr, attendee_seg.first_attendee_offset) repeat attendee_ptr 926 while (attendee_ptr ^= null ()); 927 928 if ^attendee.deleted | xacl = RWC_XACL | attendee.person_id = person_id then do; 929 jdx = jdx + 1; 930 if jdx > user_list_no_attendees then call error (forum_et_$unexpected_fault); 931 if attendee.attending then do; /* check if he's really there */ 932 call set_lock_$lock ((attendee.lock_id), 0, status); 933 if status ^= error_table_$lock_wait_time_exceeded & status ^= error_table_$locked_by_this_process 934 then do; 935 attendee.attending = "0"b; 936 attendee.lock_id = "0"b; 937 end; 938 end; 939 940 user_list.attendees (jdx).person_id = attendee.person_id; 941 user_list.attendees (jdx).project_id = attendee.project_id; 942 user_list.attendees (jdx).attending = attendee.attending; 943 user_list.attendees (jdx).notify = attendee.notify; 944 user_list.attendees (jdx).removed = ^attendee.participating; 945 user_list.attendees (jdx).deleted = attendee.deleted; 946 user_list.attendees (jdx).read_only = (attendee.xacl = R_XACL); 947 user_list.attendees (jdx).last_time_attended = attendee.last_time_attended; 948 call forum_space_mgr_$get_highest_seen (attendee_ptr, transaction_seg_ptr, "0"b, 949 user_list.attendees (jdx).highest_trans_seen, (null ()), status); 950 if status ^= 0 then call error (status); 951 end; 952 if attendee.next_offset = ""b then 953 attendee_ptr = null (); 954 else attendee_ptr = ptr (attendee_seg_ptr, attendee.next_offset); 955 end; 956 957 user_list.no_attendees = jdx; 958 P_user_list_ptr = user_list_ptr; 959 return; 960 961 end get_user_list; 962 963 forum_open_mgr_$change_chairman_idx: 964 entry (P_forum_idx, P_chairman, P_status); 965 966 call initialize (CHANGE_CHAIRMAN_IDX_EXIT); 967 968 call lookup_forum_idx ("0"b); 969 970 directory = open_data.forum_name; 971 privileged = "0"b; 972 call change_the_chairman (); 973 974 call forum_seg_mgr_$unlock (attendee_seg_ptr); 975 976 P_status = 0; 977 return; 978 979 CHANGE_CHAIRMAN_IDX_EXIT: 980 call forum_seg_mgr_$unlock (attendee_seg_ptr); 981 982 P_status = status; 983 return; 984 985 forum_open_mgr_$priv_change_chairman: 986 entry (P_directory, P_name, P_chairman, P_status); 987 988 privileged = "1"b; 989 goto CC_COMMON; 990 991 forum_open_mgr_$change_chairman: 992 entry (P_directory, P_name, P_chairman, P_status); 993 994 privileged = "0"b; 995 CC_COMMON: 996 call initialize (CHANGE_CHAIRMAN_EXIT); 997 998 directory = P_directory; 999 name = P_name; 1000 call forum_seg_mgr_$initiate (directory, name, "1"b, attendee_seg_ptr, transaction_seg_ptr, xacl, status); 1001 if status ^= 0 then call error (status); 1002 if ^privileged & xacl = N_ACCESS then call error (forum_et_$not_eligible); 1003 1004 directory = rtrim (directory) || ">" || name; 1005 call change_the_chairman (); 1006 1007 call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 1008 1009 P_status = 0; 1010 return; 1011 1012 CHANGE_CHAIRMAN_EXIT: 1013 call forum_seg_mgr_$terminate (attendee_seg_ptr, transaction_seg_ptr); 1014 1015 P_status = status; 1016 return; 1017 1018 change_the_chairman: 1019 procedure (); 1020 1021 declare chairman_name char (32), 1022 chairman_personid char (22), 1023 chairman_projectid char (10); 1024 1025 if ^privileged & xacl ^= RWC_XACL then call error (forum_et_$chairman_only); 1026 1027 if length (rtrim (P_chairman)) > maxlength (chairman_name) then 1028 call error (error_table_$bad_arg); 1029 else chairman_name = P_chairman; 1030 1031 if index (chairman_name, ".") = 0 | index (chairman_name, ".") > maxlength (chairman_personid) + 1 then 1032 call error (error_table_$bad_arg); 1033 1034 chairman_personid = before (chairman_name, "."); 1035 chairman_projectid = rtrim (after (chairman_name, ".")); 1036 1037 if substr (chairman_personid, 1, 1) = "*" then call error (forum_et_$anon_chairman); 1038 1039 call forum_space_mgr_$find_attendee (attendee_seg_ptr, chairman_personid, attendee_ptr, status); 1040 if status ^= 0 then call error (status); 1041 1042 one_acl.access_name = rtrim (chairman_name) || ".*"; 1043 one_acl.modes = RW_ACCESS; 1044 one_acl.xmodes = RWC_XACL; 1045 1046 on cleanup call hcs_$level_set (user_ring); 1047 call hcs_$level_set (inner_ring); 1048 1049 call hcs_$add_acl_entries (directory, ATTENDEE_SEG_NAME, addr (one_acl), 1, status); 1050 if status ^= 0 then call error (status); 1051 1052 call hcs_$level_set (user_ring); 1053 attendee_seg.chairman.person_id = chairman_personid; 1054 attendee_seg.chairman.project_id = chairman_projectid; 1055 1056 return; 1057 end change_the_chairman; 1058 1059 initialize: 1060 proc (P_egress); 1061 1062 declare P_egress label variable, 1063 anon fixed bin; 1064 1065 egress = P_egress; 1066 attendee_seg_ptr, transaction_seg_ptr, open_data_ptr = null (); 1067 attendee_ptr, bit_map_ptr = null (); 1068 1069 if ^static_init then do; 1070 inner_ring = get_ring_ (); 1071 process_id = get_process_id_ (); 1072 lock_id = get_lock_id_ (); 1073 call user_info_$login_data (person_id, project_id, (""), anon, 0, 0, 0, ("")); 1074 if anon = 1 then person_id = "*" || person_id; 1075 static_init = "1"b; 1076 end; 1077 1078 call hcs_$level_get (user_ring); 1079 1080 return; 1081 end initialize; 1082 1083 error: 1084 proc (P_status); 1085 1086 declare P_status fixed bin (35); 1087 1088 status = P_status; 1089 goto egress; 1090 1091 end error; 1092 1093 end forum_open_mgr_$open; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/16/86 1354.5 forum_open_mgr_.pl1 >spec>install>1128>forum_open_mgr_.pl1 169 1 10/31/84 1115.3 forum_structures.incl.pl1 >ldd>include>forum_structures.incl.pl1 171 2 10/31/84 1115.3 forum_open_data.incl.pl1 >ldd>include>forum_open_data.incl.pl1 173 3 08/16/86 1354.4 forum_info.incl.pl1 >spec>install>1128>forum_info.incl.pl1 175 4 10/31/84 1115.4 forum_user_list.incl.pl1 >ldd>include>forum_user_list.incl.pl1 177 5 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.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. ACCESS_SWITCH constant fixed bin(17,0) initial dcl 156 ref 447 465 596 ADJ_SWITCH constant fixed bin(17,0) initial dcl 156 ref 433 460 560 ATTENDEE_SEG_NAME 000000 constant char(32) initial unaligned dcl 1-127 set ref 802* 1049* CMSG_SWITCH constant fixed bin(17,0) initial dcl 156 ref 446 464 595 DELETED_SWITCH constant fixed bin(17,0) initial dcl 156 ref 448 466 557 598 EMSG_SWITCH constant fixed bin(17,0) initial dcl 156 ref 434 461 561 MAX_ATTENDEES constant fixed bin(17,0) initial dcl 50 ref 775 MAX_CM_SWITCH constant fixed bin(17,0) initial dcl 156 ref 551 MAX_STORAGE_SWITCH constant fixed bin(17,0) initial dcl 156 ref 552 M_ACCESS constant bit(3) initial unaligned dcl 5-11 ref 635 NOTIFY_SWITCH constant fixed bin(17,0) initial dcl 156 ref 445 463 594 N_ACCESS constant bit(3) initial unaligned dcl 5-11 ref 197 400 428 490 705 805 823 877 1002 PART_SWITCH constant fixed bin(17,0) initial dcl 156 ref 444 462 593 P_access_name parameter char unaligned dcl 31 ref 688 716 748 750 P_access_time parameter fixed bin(71,0) dcl 31 ref 688 716 752 P_area based area(1024) dcl 50 ref 917 P_area_ptr parameter pointer dcl 31 ref 866 891 917 P_chairman parameter char unaligned dcl 31 ref 963 985 991 1027 1029 P_directory parameter char unaligned dcl 31 ref 18 184 417 424 470 476 485 688 695 866 873 985 991 998 P_egress parameter label variable dcl 1062 ref 1059 1065 P_event_channel parameter fixed bin(71,0) dcl 31 ref 666 675 P_forum_idx parameter fixed bin(17,0) dcl 31 set ref 18 214* 220* 299 308* 351 376 503 666 716 891 963 P_forum_info_ptr parameter pointer dcl 31 ref 688 716 754 P_name parameter char unaligned dcl 31 ref 18 185 417 425 470 476 486 688 696 866 874 985 991 999 P_open_data_ptr parameter pointer dcl 31 set ref 351 360* 365* P_status parameter fixed bin(35,0) dcl 1086 in procedure "error" ref 1083 1088 P_status parameter fixed bin(35,0) dcl 31 in procedure "forum_open_mgr_$open" set ref 18 215* 221* 299 311* 316* 351 362* 368* 417 452* 470 476 495* 500* 503 516* 522* 640 659* 662* 666 678* 684* 688 707* 712* 716 731* 736* 866 882* 888* 891 903* 908* 963 976* 982* 985 991 1009* 1015* P_switch_name parameter char unaligned dcl 31 ref 417 430 470 476 503 544 546 640 645 647 P_switch_setting parameter bit(1) dcl 31 set ref 417 433* 434* 437* 444* 445* 446* 447* 448* 470 476 503 549 640 649 P_user_list_ptr parameter pointer dcl 31 set ref 866 891 958* P_user_name parameter char unaligned dcl 31 ref 417 470 476 503 534 536 P_xacl parameter bit(36) dcl 31 set ref 351 361* 367* RWC_XACL constant bit(3) initial unaligned dcl 1-137 ref 201 540 552 928 1025 1044 RW_ACCESS constant bit(3) initial unaligned dcl 5-11 ref 1043 R_XACL constant bit(3) initial unaligned dcl 1-137 ref 824 946 SAFETY_SWITCH constant fixed bin(17,0) initial dcl 156 ref 436 459 579 access_name 000242 automatic char(32) level 2 in structure "one_acl" dcl 78 in procedure "forum_open_mgr_$open" set ref 1042* access_name 000374 automatic char(32) unaligned dcl 743 in procedure "get_forum_info" set ref 748 750* 796 799 800* 800 802* access_time 000404 automatic fixed bin(71,0) dcl 743 set ref 752* 829 854 acl_change_pending 13(04) based bit(1) level 3 packed unaligned dcl 1-42 set ref 447 596* addr builtin function dcl 151 ref 1049 1049 adjourned 3 based bit(1) level 4 in structure "attendee_seg" packed unaligned dcl 1-18 in procedure "forum_open_mgr_$open" set ref 201 433 560* 821 adjourned 25(08) 000214 automatic bit(1) level 3 in structure "fmi" packed unaligned dcl 78 in procedure "forum_open_mgr_$open" set ref 821* after builtin function dcl 151 ref 800 1035 am_init 3(01) based bit(1) level 4 packed unaligned dcl 1-18 set ref 566 575 576* am_print_acl_msg 3(02) based bit(1) level 4 packed unaligned dcl 1-18 set ref 434 566 574* anon 000434 automatic fixed bin(17,0) dcl 1062 set ref 1073* 1074 any_other 000256 stack reference condition dcl 151 ref 188 190 area 000000 stack reference condition dcl 151 ref 240 242 attendee based structure level 1 dcl 1-42 attendee_count 12 000214 automatic fixed bin(17,0) level 2 in structure "fmi" dcl 78 in procedure "forum_open_mgr_$open" set ref 767* 771* 774* 774 775 776* 785 787* attendee_count 4 based fixed bin(17,0) level 3 in structure "attendee_seg" dcl 1-18 in procedure "forum_open_mgr_$open" set ref 767 776 785 787* 916 attendee_offset 000100 automatic bit(18) dcl 50 set ref 772* 772* 781* attendee_ptr 124 based pointer level 2 in structure "open_data" dcl 2-5 in procedure "forum_open_mgr_$open" set ref 206* 249* 275* 395 attendee_ptr 000304 automatic pointer dcl 1-8 in procedure "forum_open_mgr_$open" set ref 203* 206 207 210 211 272 273* 275 278 279* 285 285 289 290 291 292 293 294 329 330 331 395* 441* 444 445 446 447 448 541* 588 589* 593 594 595 596 601 602 675 781* 782 783 807* 808 810 811 813* 818 819 925* 925* 928 928 931 932 935 936 940 941 942 943 944 945 946 947 948* 952 952* 954* 954* 955 1039* 1067* attendee_seg based structure level 1 dcl 1-18 attendee_seg_header based structure level 1 dcl 1-22 attendee_seg_ptr 000300 automatic pointer dcl 1-8 in procedure "forum_open_mgr_$open" set ref 195* 201 203* 207 213* 227* 232* 233* 246 273* 285 314* 325* 341* 347* 393* 397* 404* 422* 426* 433 434 434 437* 441* 451* 483* 487* 494* 498* 515* 520* 560 566 566 569 570 571 574 575 576 583* 589* 677* 682* 693* 697* 702* 710* 728* 734* 762 763 767 772 776 777* 781 785 786* 787 792* 807* 821 871* 875* 881* 885* 902* 906* 916 920 921 925 925 954 974* 979* 1000* 1007* 1012* 1039* 1053 1054 1066* attendee_seg_ptr 60 based pointer level 2 in structure "open_data" dcl 2-5 in procedure "forum_open_mgr_$open" set ref 233 246* 385* 393 attendee_uid based fixed bin(17,0) level 2 in structure "bit_map" dcl 1-67 in procedure "forum_open_mgr_$open" ref 285 attendee_uid 1 based fixed bin(17,0) level 2 in structure "attendee" dcl 1-42 in procedure "forum_open_mgr_$open" ref 285 attendees 14 based structure array level 2 dcl 4-6 attending 25(04) 000214 automatic bit(1) level 3 in structure "fmi" packed unaligned dcl 78 in procedure "forum_open_mgr_$open" set ref 819* attending 24(09) based bit(1) array level 3 in structure "user_list" packed unaligned dcl 4-6 in procedure "forum_open_mgr_$open" set ref 942* attending 13 based bit(1) level 3 in structure "attendee" packed unaligned dcl 1-42 in procedure "forum_open_mgr_$open" set ref 291* 330* 819 931 935* 942 author 2 based structure level 2 packed unaligned dcl 1-91 before builtin function dcl 151 ref 799 1034 bit_map based structure level 1 dcl 1-67 bit_map_offset 25 based bit(18) level 2 dcl 1-42 ref 207 278 285 bit_map_ptr 000310 automatic pointer dcl 1-8 in procedure "forum_open_mgr_$open" set ref 279* 281 284* 285 285* 1067* bit_map_ptr 126 based pointer level 2 in structure "open_data" dcl 2-5 in procedure "forum_open_mgr_$open" set ref 207* 250* 281* 284 285* chairman 5 based structure level 3 in structure "attendee_seg" dcl 1-18 in procedure "forum_open_mgr_$open" chairman 2 000214 automatic structure level 2 in structure "fmi" packed unaligned dcl 78 in procedure "forum_open_mgr_$open" chairman 1 based structure level 2 in structure "user_list" dcl 4-6 in procedure "forum_open_mgr_$open" chairman_name 000100 automatic char(32) unaligned dcl 1021 set ref 1027 1029* 1031 1031 1034 1035 1042 chairman_personid 000110 automatic char(22) unaligned dcl 1021 set ref 1031 1034* 1037 1039* 1053 chairman_projectid 000116 automatic char(10) unaligned dcl 1021 set ref 1035* 1054 changes_count 24 000214 automatic fixed bin(17,0) level 2 dcl 78 set ref 843* 843 cleanup 000264 stack reference condition dcl 151 ref 187 380 422 483 580 693 871 1046 clock builtin function dcl 151 ref 289 cm_init 3(03) based bit(1) level 4 packed unaligned dcl 1-18 set ref 570 571* cm_print_acl_msg 3(04) based bit(1) level 4 packed unaligned dcl 1-18 set ref 434 569* deleted 11(27) based bit(1) level 3 in structure "transaction" packed unaligned dcl 1-91 in procedure "forum_open_mgr_$open" ref 843 854 deleted 13(02) based bit(1) level 3 in structure "attendee" packed unaligned dcl 1-42 in procedure "forum_open_mgr_$open" set ref 211* 448 601* 928 945 deleted 24(15) based bit(1) array level 3 in structure "user_list" packed unaligned dcl 4-6 in procedure "forum_open_mgr_$open" set ref 945* deleted_count 3 based fixed bin(17,0) level 2 dcl 1-77 ref 835 deletion_count 15 000214 automatic fixed bin(17,0) level 2 dcl 78 set ref 835* directory 000101 automatic char(168) unaligned dcl 50 set ref 184* 191* 195* 244 424* 426* 485* 487* 627* 630* 630* 633* 695* 697* 700* 700* 725* 777* 778* 786* 787* 802* 873* 875* 970* 998* 1000* 1004* 1004 1049* done 000406 automatic bit(1) dcl 743 set ref 827* 828 829* egress 000154 automatic label variable dcl 50 set ref 1065* 1089 eligible 25 000214 automatic bit(1) level 3 packed unaligned dcl 78 set ref 805* error_table_$bad_arg 000120 external static fixed bin(35,0) dcl 121 set ref 534* 748* 1027* 1031* error_table_$incorrect_access 000122 external static fixed bin(35,0) dcl 121 set ref 635* error_table_$invalidsegno 000124 external static fixed bin(35,0) dcl 121 ref 386 error_table_$lock_wait_time_exceeded 000126 external static fixed bin(35,0) dcl 121 ref 933 error_table_$locked_by_this_process 000130 external static fixed bin(35,0) dcl 121 ref 933 error_table_$moderr 000132 external static fixed bin(35,0) dcl 121 set ref 651* error_table_$noalloc 000134 external static fixed bin(35,0) dcl 121 set ref 240* error_table_$null_info_ptr 000136 external static fixed bin(35,0) dcl 121 set ref 755* error_table_$unimplemented_version 000140 external static fixed bin(35,0) dcl 121 set ref 757* event_channel 20 based fixed bin(71,0) level 2 dcl 1-42 set ref 331* 675* expand_pathname_ 000030 constant entry external dcl 85 ref 627 630 first_attendee_offset 116 based bit(18) level 3 dcl 1-18 ref 772 925 first_open_data_ptr 000012 internal static pointer initial dcl 70 set ref 230 255 257 260 261 264* 334 334* 383 flags 13 based structure level 2 in structure "attendee" dcl 1-42 in procedure "forum_open_mgr_$open" flags 3 based structure level 3 in structure "attendee_seg" dcl 1-18 in procedure "forum_open_mgr_$open" flags 25 000214 automatic structure level 2 in structure "fmi" packed unaligned dcl 78 in procedure "forum_open_mgr_$open" flags 11(27) based structure level 2 in structure "transaction" packed unaligned dcl 1-91 in procedure "forum_open_mgr_$open" fmi 000214 automatic structure level 1 dcl 78 set ref 704 730 759* forum_data_$chairman_override 000176 external static bit(1) dcl 146 set ref 564 655* forum_data_$print_eligibility_messages 000174 external static bit(1) dcl 146 set ref 564 653* forum_et_$anon_chairman 000142 external static fixed bin(35,0) dcl 121 set ref 1037* forum_et_$cant_stop_msg_admin 000144 external static fixed bin(35,0) dcl 121 set ref 566* forum_et_$cant_stop_msg_site 000146 external static fixed bin(35,0) dcl 121 set ref 564* forum_et_$chairman_only 000150 external static fixed bin(35,0) dcl 121 set ref 540* 555* 1025* forum_et_$forum_deleted 000152 external static fixed bin(35,0) dcl 121 set ref 386* 391* forum_et_$invalid_forum_idx 000154 external static fixed bin(35,0) dcl 121 set ref 378* 412* forum_et_$invalid_switch_name 000156 external static fixed bin(35,0) dcl 121 set ref 467* 544* 645* 657* forum_et_$meeting_adjourned 000160 external static fixed bin(35,0) dcl 121 set ref 201* forum_et_$not_eligible 000162 external static fixed bin(35,0) dcl 121 set ref 197* 400* 428* 490* 705* 877* 1002* forum_et_$not_user_switch 000164 external static fixed bin(35,0) dcl 121 set ref 557* forum_et_$switch_not_changed 000166 external static fixed bin(35,0) dcl 121 ref 570 575 614 forum_et_$unexpected_fault 000170 external static fixed bin(35,0) dcl 121 set ref 192* 930* forum_et_$you_twit 000172 external static fixed bin(35,0) dcl 121 set ref 599* forum_idx 56 based fixed bin(17,0) level 2 in structure "open_data" dcl 2-5 in procedure "forum_open_mgr_$open" set ref 214 257* 260* 260 384 forum_idx 000160 automatic fixed bin(17,0) dcl 50 in procedure "forum_open_mgr_$open" set ref 376* 378 384 forum_info based structure level 1 dcl 3-14 set ref 704* 730* forum_info_ptr 000314 automatic pointer dcl 3-12 set ref 704 730 754* 755 757 757 760 forum_info_version_1 constant fixed bin(17,0) initial dcl 3-40 ref 757 forum_info_version_2 constant fixed bin(17,0) initial dcl 3-40 ref 757 766 forum_logger_ 000032 constant entry external dcl 85 ref 778 787 forum_logger_$any_other 000034 constant entry external dcl 85 ref 191 forum_name 4 based char(168) level 2 dcl 2-5 set ref 244* 627 725 970 forum_seg_mgr_$initiate 000036 constant entry external dcl 85 ref 195 426 487 697 875 1000 forum_seg_mgr_$lock 000040 constant entry external dcl 85 ref 404 forum_seg_mgr_$terminate 000042 constant entry external dcl 85 ref 232 347 422 451 483 494 498 693 702 710 871 881 885 1007 1012 forum_seg_mgr_$terminate_all 000044 constant entry external dcl 85 ref 343 forum_seg_mgr_$unlock 000046 constant entry external dcl 85 ref 213 314 325 341 515 520 677 682 728 734 902 906 974 979 forum_space_mgr_$allocate_bit_map 000050 constant entry external dcl 85 ref 279 forum_space_mgr_$find_attendee 000052 constant entry external dcl 85 ref 273 441 589 807 1039 forum_space_mgr_$get_attendee_slot 000054 constant entry external dcl 85 ref 203 forum_space_mgr_$get_highest_seen 000056 constant entry external dcl 85 ref 813 948 forum_uid 57 based bit(36) level 2 in structure "open_data" dcl 2-5 in procedure "forum_open_mgr_$open" set ref 231 245* 391 forum_uid 1 000214 automatic bit(36) level 2 in structure "fmi" dcl 78 in procedure "forum_open_mgr_$open" set ref 792* get_lock_id_ 000060 constant entry external dcl 85 ref 1072 get_process_id_ 000062 constant entry external dcl 85 ref 1071 get_ring_ 000064 constant entry external dcl 85 ref 1070 get_system_free_area_ 000066 constant entry external dcl 85 ref 241 hcs_$add_acl_entries 000070 constant entry external dcl 85 ref 1049 hcs_$fs_get_access_modes 000072 constant entry external dcl 85 ref 397 hcs_$fs_get_path_name 000074 constant entry external dcl 85 ref 777 786 hcs_$get_safety_sw_seg 000076 constant entry external dcl 85 ref 437 hcs_$get_uid_seg 000102 constant entry external dcl 85 ref 227 385 792 hcs_$get_user_access_modes 000104 constant entry external dcl 85 ref 633 802 hcs_$level_get 000106 constant entry external dcl 85 ref 1078 hcs_$level_set 000110 constant entry external dcl 85 ref 380 381 407 580 581 585 1046 1047 1052 hcs_$set_safety_sw_seg 000100 constant entry external dcl 85 ref 583 header based structure level 2 dcl 1-18 highest_trans_seen 30 based fixed bin(17,0) array level 3 dcl 4-6 set ref 948* idx 000161 automatic fixed bin(17,0) dcl 50 set ref 850* 851 index builtin function dcl 151 ref 1031 1031 inner_ring 000026 internal static fixed bin(3,0) dcl 70 set ref 381* 581* 1047* 1070* invalid 131 based bit(1) level 2 dcl 2-5 set ref 252* jdx 000424 automatic fixed bin(17,0) dcl 914 set ref 924* 929* 929 930 940 941 942 943 944 945 946 947 948 957 last_seen_trans_idx 16 000214 automatic fixed bin(17,0) level 2 dcl 78 set ref 813* 837 last_time_attended 26 based fixed bin(71,0) array level 3 in structure "user_list" dcl 4-6 in procedure "forum_open_mgr_$open" set ref 947* last_time_attended 22 based fixed bin(71,0) level 2 in structure "attendee" dcl 1-42 in procedure "forum_open_mgr_$open" set ref 289* 811 947 last_time_attended 22 000214 automatic fixed bin(71,0) level 2 in structure "fmi" dcl 78 in procedure "forum_open_mgr_$open" set ref 811* last_time_changed 20 000214 automatic fixed bin(71,0) level 2 dcl 78 set ref 859* last_trans_offset 5 based bit(18) level 2 dcl 1-77 ref 826 853 length builtin function dcl 151 ref 534 544 645 748 800 1027 lock_id 15 based bit(36) level 2 in structure "attendee" dcl 1-42 in procedure "forum_open_mgr_$open" set ref 293* 932 936* lock_id 000027 internal static bit(36) dcl 70 in procedure "forum_open_mgr_$open" set ref 293 1072* maxlength builtin function dcl 151 ref 534 544 645 748 1027 1031 me 000010 constant char(16) initial unaligned dcl 50 set ref 191* 778* 787* message_change_pending 13(05) based bit(1) level 3 packed unaligned dcl 1-42 set ref 446 595* modes 000130 automatic bit(36) dcl 624 in procedure "check_access" set ref 633* 635 modes 10 000242 automatic bit(36) level 2 in structure "one_acl" dcl 78 in procedure "forum_open_mgr_$open" set ref 1043* name 000162 automatic char(32) unaligned dcl 50 set ref 185* 191* 195* 244 425* 426* 486* 487* 627* 630* 633* 696* 697* 700* 874* 875* 999* 1000* 1004 next_offset 23 based bit(18) level 2 in structure "transaction" packed unaligned dcl 1-91 in procedure "forum_open_mgr_$open" ref 839 840 845 847 next_offset 31 based bit(18) level 2 in structure "attendee" dcl 1-42 in procedure "forum_open_mgr_$open" ref 783 952 954 next_open_data_ptr based pointer level 2 dcl 2-5 set ref 238 255* 334 336* 336 338 338 410 no_attendees 12 based fixed bin(17,0) level 2 dcl 4-6 set ref 917* 957* no_write_permission 000272 stack reference condition dcl 151 ref 651 notify 24(12) based bit(1) array level 3 in structure "user_list" packed unaligned dcl 4-6 in procedure "forum_open_mgr_$open" set ref 943* notify 13(03) based bit(1) level 3 in structure "attendee" packed unaligned dcl 1-42 in procedure "forum_open_mgr_$open" set ref 445 594* 818 943 notify 25(03) 000214 automatic bit(1) level 3 in structure "fmi" packed unaligned dcl 78 in procedure "forum_open_mgr_$open" set ref 818* null builtin function dcl 151 ref 230 248 249 250 254 257 322 329 336 338 365 383 541 588 627 755 808 839 842 845 925 948 952 1066 1067 null_access_ok parameter bit(1) dcl 374 ref 371 400 one_acl 000242 automatic structure level 1 dcl 78 set ref 1049 1049 open_count 130 based fixed bin(17,0) level 2 dcl 2-5 set ref 235* 235 251* 323* 323 324 open_data based structure level 1 dcl 2-5 set ref 241 345 open_data_ptr 000312 automatic pointer dcl 2-3 set ref 206 207 214 230* 230* 231 233 234 235 235* 238 241* 244 245 246 247 248 249 250 251 252 254 255 257 260 261 264 275 279* 281 284 285 322 323 323 324 334 334 336 336 336 338 338 338 343* 345 360 383* 383* 384 385 391 393 394 395* 410 627 627 725 970 1066* pad 11(09) 000214 automatic char(3) level 3 packed unaligned dcl 78 set ref 764* participating 13(01) based bit(1) level 3 packed unaligned dcl 1-42 set ref 210* 444 593* 602* 782 810 944 pathname_ 000112 constant entry external dcl 85 ref 700 person_id 1 based char(22) level 3 in structure "user_list" packed unaligned dcl 4-6 in procedure "forum_open_mgr_$open" set ref 920* person_id 5 based char(22) level 4 in structure "attendee_seg" dcl 1-18 in procedure "forum_open_mgr_$open" set ref 762 920 1053* person_id 2 based char(22) level 3 in structure "transaction" packed unaligned dcl 1-91 in procedure "forum_open_mgr_$open" ref 843 person_id 000014 internal static char(22) unaligned dcl 70 in procedure "forum_open_mgr_$open" set ref 203* 272 273* 441* 538 539 557 599 796 928 1073* 1074* 1074 person_id 2 based char(22) level 2 in structure "attendee" dcl 1-42 in procedure "forum_open_mgr_$open" ref 272 928 940 person_id 14 based char(22) array level 3 in structure "user_list" packed unaligned dcl 4-6 in procedure "forum_open_mgr_$open" set ref 940* person_name 000100 automatic char(20) unaligned dcl 532 in procedure "set_switch" set ref 534 536* 538 538* 539 557 589* 599 person_name 000407 automatic char(22) unaligned dcl 743 in procedure "get_forum_info" set ref 796* 799* 800 800 807* 843 prev_offset 23(18) based bit(18) level 2 packed unaligned dcl 1-91 ref 829 831 855 857 prev_open_data_ptr 2 based pointer level 2 dcl 2-5 set ref 254* 261* 336 336 338* 338 privileged 000172 automatic bit(1) dcl 50 set ref 473* 479* 490 512* 540 552 562 971* 988* 994* 1002 1025 proceedings_ptrs 64 based pointer array level 2 dcl 2-5 set ref 248* process_id 000025 internal static bit(36) dcl 70 in procedure "forum_open_mgr_$open" set ref 292 1071* process_id 16 based bit(36) level 2 in structure "attendee" dcl 1-42 in procedure "forum_open_mgr_$open" set ref 292* project 7 000214 automatic char(9) level 3 packed unaligned dcl 78 set ref 763* project_id 10 based char(9) level 2 in structure "attendee" dcl 1-42 in procedure "forum_open_mgr_$open" set ref 290* 941 project_id 6(18) based char(9) level 3 in structure "user_list" packed unaligned dcl 4-6 in procedure "forum_open_mgr_$open" set ref 921* project_id 13 based char(9) level 4 in structure "attendee_seg" dcl 1-18 in procedure "forum_open_mgr_$open" set ref 763 921 1054* project_id 21(18) based char(11) array level 3 in structure "user_list" packed unaligned dcl 4-6 in procedure "forum_open_mgr_$open" set ref 941* project_id 000022 internal static char(9) unaligned dcl 70 in procedure "forum_open_mgr_$open" set ref 290 1073* ptr builtin function dcl 151 ref 207 285 781 826 831 840 847 853 857 925 954 read_only 24(14) based bit(1) array level 3 in structure "user_list" packed unaligned dcl 4-6 in procedure "forum_open_mgr_$open" set ref 946* read_only 25(07) 000214 automatic bit(1) level 3 in structure "fmi" packed unaligned dcl 78 in procedure "forum_open_mgr_$open" set ref 824* removal_count 13 000214 automatic fixed bin(17,0) level 2 dcl 78 set ref 768* 782* 782 removed 25(02) 000214 automatic bit(1) level 3 in structure "fmi" packed unaligned dcl 78 in procedure "forum_open_mgr_$open" set ref 810* 817 removed 24(13) based bit(1) array level 3 in structure "user_list" packed unaligned dcl 4-6 in procedure "forum_open_mgr_$open" set ref 944* rtrim builtin function dcl 151 ref 244 534 544 645 748 800 1004 1027 1035 1042 set_lock_$lock 000114 constant entry external dcl 85 ref 932 static_init 000010 internal static bit(1) initial dcl 70 set ref 1069 1075* status 000173 automatic fixed bin(35,0) dcl 50 set ref 195* 196 196* 203* 204 204* 221 227* 228 228* 273* 274 274* 279* 280 280* 316 368 385* 386 386 389* 397* 398 398* 404* 405 405* 426* 427 427* 437* 438 438* 441* 442 442* 452 487* 488 488* 495 500 516 522 570 570* 575 575* 583* 584 584* 589* 590 590* 614* 627* 628 628* 630* 631 631* 633* 634 634* 662 684 697* 698 698* 707 712 736 792* 794 794* 802* 803 803* 813* 815 815* 861* 875* 876 876* 888 908 932* 933 933 948* 950 950* 982 1000* 1001 1001* 1015 1039* 1040 1040* 1049* 1050 1050* 1088* switch 000174 automatic fixed bin(17,0) dcl 50 in procedure "forum_open_mgr_$open" set ref 433 434 436 444 445 446 447 448 459* 460* 461* 462* 463* 464* 465* 466* 551 552 557 560 561 579 593 594 595 596 598 switch parameter bit(1) unaligned dcl 611 in procedure "set_the_switch" set ref 608 614 616* switch_name 000175 automatic char(32) unaligned dcl 50 set ref 430* 459 460 460 461 461 462 462 463 463 464 465 466 544 546* 645 647* 653 653 655 655 switch_setting 000205 automatic bit(1) dcl 50 set ref 549* 560* 563 569* 574* 583* 593* 594* 595 596* 601* 649* 653 655 system_free_area based area(1024) dcl 50 ref 241 time 14 based fixed bin(71,0) level 2 dcl 1-91 ref 829 854 859 trans_idx 1 based fixed bin(17,0) level 2 dcl 1-91 ref 834 transaction based structure level 1 unaligned dcl 1-91 transaction_count 2 based fixed bin(17,0) level 2 in structure "transaction_seg" dcl 1-77 in procedure "forum_open_mgr_$open" ref 850 922 transaction_count 11 based fixed bin(17,0) level 2 in structure "user_list" dcl 4-6 in procedure "forum_open_mgr_$open" set ref 922* transaction_count 14 000214 automatic fixed bin(17,0) level 2 in structure "fmi" dcl 78 in procedure "forum_open_mgr_$open" set ref 834* 837 transaction_ptr 000306 automatic pointer dcl 1-8 set ref 826* 829 829 831* 831 834 837* 839 839* 840* 840 842 843 843 845 845* 847* 847 853* 854 854 855 857* 857 859 transaction_seg based structure level 1 dcl 1-77 transaction_seg_ptr 000302 automatic pointer dcl 1-8 in procedure "forum_open_mgr_$open" set ref 195* 232* 234* 247 347* 394* 422* 426* 451* 483* 487* 494* 498* 693* 697* 702* 710* 813* 826 826 831 835 840 847 850 853 853 857 871* 875* 881* 885* 922 948* 1000* 1007* 1012* 1066* transaction_seg_ptr 62 based pointer level 2 in structure "open_data" dcl 2-5 in procedure "forum_open_mgr_$open" set ref 234 247* 394 uid 000206 automatic bit(36) dcl 50 set ref 227* 231 245 385* 391 unseen_ptr 000210 automatic pointer dcl 50 set ref 813* 837 unspec builtin function dcl 151 set ref 759* user_info_$login_data 000116 constant entry external dcl 85 ref 1073 user_list based structure level 1 dcl 4-6 set ref 917 user_list_no_attendees 000316 automatic fixed bin(17,0) dcl 4-3 set ref 916* 917 917 930 user_list_ptr 000320 automatic pointer dcl 4-3 set ref 917* 919 920 921 922 940 941 942 943 944 945 946 947 948 957 958 user_list_version_2 constant fixed bin(17,0) initial dcl 4-26 ref 919 user_ring 000212 automatic fixed bin(3,0) dcl 50 set ref 380* 407* 580* 585* 1046* 1052* 1078* username 2 000214 automatic char(20) level 3 packed unaligned dcl 78 set ref 762* value parameter bit(1) dcl 612 ref 608 614 616 version based fixed bin(17,0) level 2 in structure "forum_info" dcl 3-14 in procedure "forum_open_mgr_$open" set ref 757 757 760 version based fixed bin(17,0) level 2 in structure "user_list" dcl 4-6 in procedure "forum_open_mgr_$open" set ref 919* version 000214 automatic fixed bin(17,0) level 2 in structure "fmi" dcl 78 in procedure "forum_open_mgr_$open" set ref 760* 766 xacl 14 based bit(36) level 2 in structure "attendee" dcl 1-42 in procedure "forum_open_mgr_$open" set ref 294* 946 xacl 000213 automatic bit(36) dcl 50 in procedure "forum_open_mgr_$open" set ref 195* 197 201 294 361 397* 400 426* 428 487* 490 540 552 697* 705 802* 805 823 824 875* 877 928 1000* 1002 1025 xmodes 11 000242 automatic bit(36) level 2 dcl 78 set ref 1044* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ATTENDEE_SEG_VERSION_1 internal static char(8) initial unaligned dcl 1-123 ATTENDEE_VERSION_1 internal static fixed bin(17,0) initial dcl 1-132 A_ACCESS internal static bit(3) initial unaligned dcl 5-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 5-33 EXPUNGED internal static bit(18) initial unaligned dcl 1-135 E_ACCESS internal static bit(3) initial unaligned dcl 5-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 PROCEEDINGS_SEG_NAME internal static char(32) initial unaligned dcl 1-127 REW_ACCESS internal static bit(3) initial unaligned dcl 5-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 RE_ACCESS internal static bit(3) initial unaligned dcl 5-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 RW_XACL internal static bit(3) initial unaligned dcl 1-137 R_ACCESS internal static bit(3) initial unaligned dcl 5-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SA_ACCESS internal static bit(3) initial unaligned dcl 5-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 5-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 5-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SM_ACCESS internal static bit(3) initial unaligned dcl 5-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 S_ACCESS internal static bit(3) initial unaligned dcl 5-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 TRANSACTION_SEG_NAME internal static char(32) initial unaligned dcl 1-127 TRANSACTION_VERSION_1 internal static fixed bin(17,0) initial dcl 1-132 TRANS_SEG_VERSION_1 internal static char(8) initial unaligned dcl 1-123 W_ACCESS internal static bit(3) initial unaligned dcl 5-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 alloc_bit_map_length automatic fixed bin(17,0) dcl 1-72 transaction_block based structure level 1 unaligned dcl 1-114 transaction_block_ptr automatic pointer dcl 1-8 NAMES DECLARED BY EXPLICIT CONTEXT. CC_COMMON 003215 constant label dcl 995 ref 989 CHANGE_CHAIRMAN_EXIT 003401 constant label dcl 1012 ref 995 995 CHANGE_CHAIRMAN_IDX_EXIT 003112 constant label dcl 979 ref 966 966 CLOSE_EXIT 000625 constant label dcl 314 ref 302 302 COUNT_CONTINUE 006254 constant label dcl 792 ref 779 FORUM_INFO_EXIT 002410 constant label dcl 710 ref 691 691 LIST_USERS_EXIT 002727 constant label dcl 885 ref 869 869 LIST_USERS_IDX_EXIT 003016 constant label dcl 906 ref 894 894 LOOKUP_EXIT 000703 constant label dcl 365 ref 354 354 MEETING_INFO_IDX_EXIT 002514 constant label dcl 734 ref 719 719 OPEN_EXIT 000552 constant label dcl 218 ref 182 182 SET_EVENT_CHANNEL_IDX_EXIT 002143 constant label dcl 682 ref 669 669 SET_GLOBAL_EXIT 002067 constant label dcl 662 ref 643 643 SET_SWITCH_EXIT 001573 constant label dcl 498 ref 420 420 480 480 SET_SWITCH_IDX_EXIT 001676 constant label dcl 520 ref 506 506 SS_COMMON 001420 constant label dcl 480 ref 474 change_the_chairman 007236 constant entry internal dcl 1018 ref 972 1005 check_access 005517 constant entry internal dcl 621 ref 552 close_meeting 004045 constant entry internal dcl 319 ref 187 218 309 error 010012 constant entry internal dcl 1083 ref 192 196 197 201 204 228 240 274 280 378 386 389 391 398 400 405 412 427 428 438 442 467 488 490 534 540 544 555 557 564 566 584 590 599 628 631 634 635 645 651 657 698 705 748 755 757 794 803 815 876 877 930 950 1001 1002 1025 1027 1031 1037 1040 1050 fill_attendee_slot 003700 constant entry internal dcl 269 ref 209 306 358 510 673 723 898 forum_open_mgr_$change_chairman 003165 constant entry external dcl 991 forum_open_mgr_$change_chairman_idx 003034 constant entry external dcl 963 forum_open_mgr_$close 000566 constant entry external dcl 299 forum_open_mgr_$forum_info 002163 constant entry external dcl 688 forum_open_mgr_$forum_info_idx 002431 constant entry external dcl 716 forum_open_mgr_$get_switch 000720 constant entry external dcl 417 forum_open_mgr_$list_users 002533 constant entry external dcl 866 forum_open_mgr_$list_users_idx 002750 constant entry external dcl 891 forum_open_mgr_$lookup_forum_idx 000644 constant entry external dcl 351 forum_open_mgr_$open 000203 constant entry external dcl 18 forum_open_mgr_$priv_change_chairman 003131 constant entry external dcl 985 forum_open_mgr_$priv_set_switch 001320 constant entry external dcl 470 forum_open_mgr_$set_event_channel_idx 002076 constant entry external dcl 666 forum_open_mgr_$set_global_switch 001714 constant entry external dcl 640 forum_open_mgr_$set_switch 001362 constant entry external dcl 476 forum_open_mgr_$set_switch_idx 001614 constant entry external dcl 503 get_forum_info 005722 constant entry internal dcl 740 ref 701 726 get_user_list 006751 constant entry internal dcl 911 ref 879 900 initialize 007643 constant entry internal dcl 1059 ref 182 302 354 420 480 506 643 669 691 719 869 894 966 995 lookup_forum_idx 004165 constant entry internal dcl 371 ref 304 356 508 671 721 896 968 lookup_switch 004471 constant entry internal dcl 456 ref 431 548 open_meeting 003416 constant entry internal dcl 224 ref 199 set_switch 004620 constant entry internal dcl 529 ref 492 513 set_the_switch 005474 constant entry internal dcl 608 ref 560 569 574 593 594 595 596 601 NAME DECLARED BY CONTEXT OR IMPLICATION. substr builtin function ref 800 1037 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 11514 11714 10043 11524 Length 12504 10043 200 554 1451 20 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME forum_open_mgr_$open 526 external procedure is an external procedure. on unit on line 187 64 on unit on unit on line 188 98 on unit enables or reverts conditions. open_meeting 83 internal procedure enables or reverts conditions. on unit on line 240 70 on unit fill_attendee_slot internal procedure shares stack frame of external procedure forum_open_mgr_$open. close_meeting 74 internal procedure is called by several nonquick procedures. lookup_forum_idx 96 internal procedure enables or reverts conditions. on unit on line 380 68 on unit on unit on line 422 70 on unit lookup_switch 70 internal procedure is called by several nonquick procedures. on unit on line 483 70 on unit set_switch 188 internal procedure enables or reverts conditions. on unit on line 580 68 on unit set_the_switch internal procedure shares stack frame of internal procedure set_switch. check_access internal procedure shares stack frame of internal procedure set_switch. on unit on line 651 70 on unit on unit on line 693 70 on unit get_forum_info internal procedure shares stack frame of external procedure forum_open_mgr_$open. on unit on line 871 70 on unit get_user_list internal procedure shares stack frame of external procedure forum_open_mgr_$open. change_the_chairman 140 internal procedure enables or reverts conditions. on unit on line 1046 68 on unit initialize internal procedure shares stack frame of external procedure forum_open_mgr_$open. error 64 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 static_init forum_open_mgr_$open 000012 first_open_data_ptr forum_open_mgr_$open 000014 person_id forum_open_mgr_$open 000022 project_id forum_open_mgr_$open 000025 process_id forum_open_mgr_$open 000026 inner_ring forum_open_mgr_$open 000027 lock_id forum_open_mgr_$open STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME change_the_chairman 000100 chairman_name change_the_chairman 000110 chairman_personid change_the_chairman 000116 chairman_projectid change_the_chairman forum_open_mgr_$open 000100 attendee_offset forum_open_mgr_$open 000101 directory forum_open_mgr_$open 000154 egress forum_open_mgr_$open 000160 forum_idx forum_open_mgr_$open 000161 idx forum_open_mgr_$open 000162 name forum_open_mgr_$open 000172 privileged forum_open_mgr_$open 000173 status forum_open_mgr_$open 000174 switch forum_open_mgr_$open 000175 switch_name forum_open_mgr_$open 000205 switch_setting forum_open_mgr_$open 000206 uid forum_open_mgr_$open 000210 unseen_ptr forum_open_mgr_$open 000212 user_ring forum_open_mgr_$open 000213 xacl forum_open_mgr_$open 000214 fmi forum_open_mgr_$open 000242 one_acl forum_open_mgr_$open 000300 attendee_seg_ptr forum_open_mgr_$open 000302 transaction_seg_ptr forum_open_mgr_$open 000304 attendee_ptr forum_open_mgr_$open 000306 transaction_ptr forum_open_mgr_$open 000310 bit_map_ptr forum_open_mgr_$open 000312 open_data_ptr forum_open_mgr_$open 000314 forum_info_ptr forum_open_mgr_$open 000316 user_list_no_attendees forum_open_mgr_$open 000320 user_list_ptr forum_open_mgr_$open 000374 access_name get_forum_info 000404 access_time get_forum_info 000406 done get_forum_info 000407 person_name get_forum_info 000424 jdx get_user_list 000434 anon initialize set_switch 000100 person_name set_switch 000130 modes check_access THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_2 enable_op shorten_stack ext_entry ext_entry_desc int_entry op_alloc_ op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. expand_pathname_ forum_logger_ forum_logger_$any_other forum_seg_mgr_$initiate forum_seg_mgr_$lock forum_seg_mgr_$terminate forum_seg_mgr_$terminate_all forum_seg_mgr_$unlock forum_space_mgr_$allocate_bit_map forum_space_mgr_$find_attendee forum_space_mgr_$get_attendee_slot forum_space_mgr_$get_highest_seen get_lock_id_ get_process_id_ get_ring_ get_system_free_area_ hcs_$add_acl_entries hcs_$fs_get_access_modes hcs_$fs_get_path_name hcs_$get_safety_sw_seg hcs_$get_uid_seg hcs_$get_user_access_modes hcs_$level_get hcs_$level_set hcs_$set_safety_sw_seg pathname_ set_lock_$lock user_info_$login_data THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$incorrect_access error_table_$invalidsegno error_table_$lock_wait_time_exceeded error_table_$locked_by_this_process error_table_$moderr error_table_$noalloc error_table_$null_info_ptr error_table_$unimplemented_version forum_data_$chairman_override forum_data_$print_eligibility_messages forum_et_$anon_chairman forum_et_$cant_stop_msg_admin forum_et_$cant_stop_msg_site forum_et_$chairman_only forum_et_$forum_deleted forum_et_$invalid_forum_idx forum_et_$invalid_switch_name forum_et_$meeting_adjourned forum_et_$not_eligible forum_et_$not_user_switch forum_et_$switch_not_changed forum_et_$unexpected_fault forum_et_$you_twit LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000176 182 000230 184 000235 185 000243 187 000250 188 000272 190 000306 191 000307 192 000347 193 000357 195 000360 196 000422 197 000432 199 000443 201 000447 203 000465 204 000511 206 000521 207 000524 209 000530 210 000531 211 000534 213 000536 214 000545 215 000550 216 000551 218 000552 220 000556 221 000557 222 000561 299 000562 302 000600 304 000605 306 000615 308 000616 309 000617 311 000623 312 000624 314 000625 316 000634 317 000636 351 000637 354 000656 356 000663 358 000673 360 000674 361 000677 362 000701 363 000702 365 000703 367 000706 368 000707 369 000711 417 000712 420 000755 422 000762 424 001010 425 001016 426 001023 427 001065 428 001075 430 001106 431 001116 433 001122 434 001132 436 001147 437 001151 438 001164 439 001174 441 001175 442 001221 444 001231 445 001242 446 001252 447 001263 448 001273 451 001302 452 001313 453 001315 470 001316 473 001355 474 001357 476 001360 479 001417 480 001420 483 001425 485 001453 486 001461 487 001466 488 001530 490 001540 492 001553 494 001557 495 001570 496 001572 498 001573 500 001604 501 001606 503 001607 506 001641 508 001646 510 001656 512 001657 513 001660 515 001664 516 001673 518 001675 520 001676 522 001705 524 001707 640 001710 643 001733 645 001740 647 001771 649 001775 651 002000 653 002024 655 002041 657 002056 659 002065 660 002066 662 002067 664 002071 666 002072 669 002110 671 002115 673 002125 675 002126 677 002132 678 002141 680 002142 682 002143 684 002152 686 002154 688 002155 691 002216 693 002223 695 002251 696 002257 697 002264 698 002326 700 002336 701 002356 702 002357 704 002370 705 002374 707 002405 708 002407 710 002410 712 002421 714 002423 716 002424 719 002454 721 002461 723 002471 725 002472 726 002476 728 002477 730 002506 731 002512 732 002513 734 002514 736 002523 738 002525 866 002526 869 002562 871 002567 873 002615 874 002623 875 002630 876 002672 877 002702 879 002713 881 002714 882 002725 883 002726 885 002727 888 002740 889 002742 891 002743 894 002766 896 002773 898 003003 900 003004 902 003005 903 003014 904 003015 906 003016 908 003025 909 003027 963 003030 966 003053 968 003060 970 003070 971 003074 972 003075 974 003101 976 003110 977 003111 979 003112 982 003121 983 003123 985 003124 988 003160 989 003162 991 003163 994 003214 995 003215 998 003222 999 003230 1000 003235 1001 003277 1002 003307 1004 003322 1005 003361 1007 003366 1009 003377 1010 003400 1012 003401 1015 003412 1016 003414 224 003415 227 003423 228 003436 230 003450 231 003461 232 003465 233 003476 234 003503 235 003506 236 003510 238 003511 240 003514 241 003540 242 003555 244 003556 245 003616 246 003621 247 003623 248 003626 249 003643 250 003646 251 003650 252 003653 254 003654 255 003656 257 003661 260 003670 261 003674 264 003675 266 003677 269 003700 272 003701 273 003707 274 003732 275 003742 278 003745 279 003750 280 003771 281 004001 284 004004 285 004007 289 004022 290 004025 291 004033 292 004035 293 004037 294 004041 296 004043 319 004044 322 004052 323 004057 324 004062 325 004064 326 004072 329 004073 330 004077 331 004102 334 004104 336 004112 338 004120 341 004131 343 004137 345 004147 346 004152 347 004153 349 004163 371 004164 376 004172 378 004175 380 004206 381 004233 383 004242 384 004253 385 004257 386 004272 389 004310 391 004317 393 004334 394 004341 395 004344 397 004347 398 004366 400 004400 404 004417 405 004431 407 004443 408 004453 410 004454 412 004457 414 004467 456 004470 459 004476 460 004506 461 004521 462 004534 463 004547 464 004562 465 004571 466 004600 467 004607 468 004616 529 004617 534 004625 536 004657 538 004663 539 004677 540 004704 541 004721 544 004724 546 004757 548 004763 549 004770 551 004774 552 004777 555 005010 557 005020 560 005040 561 005056 562 005060 563 005062 564 005065 566 005101 569 005117 570 005133 571 005145 572 005147 574 005150 575 005163 576 005175 578 005177 579 005200 580 005202 581 005227 583 005236 584 005252 585 005264 586 005274 588 005275 589 005301 590 005325 593 005337 594 005357 595 005375 596 005417 598 005435 599 005437 601 005453 602 005467 606 005473 608 005474 614 005476 616 005513 618 005516 621 005517 627 005520 628 005556 630 005570 631 005614 633 005626 634 005673 635 005705 636 005721 740 005722 748 005723 750 005754 752 005760 754 005762 755 005765 757 006000 759 006014 760 006017 762 006021 763 006025 764 006030 766 006032 767 006035 768 006037 769 006040 771 006041 772 006042 774 006046 775 006047 776 006052 777 006055 778 006110 779 006141 781 006142 782 006145 783 006151 785 006154 786 006160 787 006213 792 006254 794 006267 796 006277 799 006310 800 006320 802 006371 803 006435 805 006445 807 006452 808 006477 810 006504 811 006515 813 006517 815 006542 817 006552 818 006555 819 006562 821 006567 823 006575 824 006600 826 006606 827 006613 828 006614 829 006616 831 006632 832 006635 834 006636 835 006641 837 006644 839 006652 840 006661 842 006664 843 006670 845 006701 847 006710 848 006713 850 006714 851 006717 853 006722 854 006726 855 006735 857 006742 858 006745 859 006746 861 006747 862 006750 911 006751 916 006752 917 006755 919 006767 920 006771 921 006775 922 007000 924 007003 925 007004 928 007014 929 007030 930 007031 931 007043 932 007047 933 007065 935 007073 936 007076 940 007077 941 007107 942 007117 943 007124 944 007131 945 007141 946 007146 947 007155 948 007157 950 007204 952 007214 954 007222 955 007225 957 007230 958 007233 959 007234 1018 007235 1025 007243 1027 007260 1029 007313 1031 007317 1034 007344 1035 007354 1037 007404 1039 007420 1040 007445 1042 007457 1043 007506 1044 007511 1046 007513 1047 007540 1049 007547 1050 007606 1052 007620 1053 007630 1054 007635 1056 007642 1059 007643 1065 007645 1066 007653 1067 007657 1069 007662 1070 007665 1071 007673 1072 007702 1073 007711 1074 007757 1075 007776 1078 010002 1080 010010 1083 010011 1088 010017 1089 010023 ----------------------------------------------------------- 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