COMPILATION LISTING OF SEGMENT forum_requests_ Compiled by: Multics PL/I Compiler, Release 33d, of April 24, 1992 Compiled at: ACTC Technologies Inc. Compiled on: 92-09-28_1715.07_Mon_mdt Options: optimize map 1 /****^ *************************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1992 * 4* * * 5* * Copyright (c) 1982 by Massachusetts Institute of Technology * 6* * * 7* *************************************************************** */ 8 9 10 11 12 13 /****^ HISTORY COMMENTS: 14* 1) change(91-09-05,Huen), approve(91-09-05,MCR8248), 15* audit(92-01-08,Zimmerman), install(92-04-27,MR12.5-1014): 16* Fix several TRs (phx21375, 21376, 21377) related to the current trans. 17* 2) change(92-09-10,Zimmerman), approve(92-09-10,MCR8258), 18* audit(92-09-22,WAAnderson), install(92-09-28,MR12.5-1020): 19* Problem with current being set to deleted txn., or being set to -1. 20* END HISTORY COMMENTS */ 21 22 23 24 /* This module contains the following forum requests: 25* 26* goto quit 27* 28*and the useful routine find_forum for turning a string into a forum path. 29* 30*Originally coded by J. Spencer Love and Jay Pattin 6/81 31*modified for ssu_ 8/21/81 Jay Pattin 32*changed search path searching to fix forum bug 7 6/27/82 Jay Pattin 33*new request table management 11/3/82 Jay Pattin 34*Make notifications work with multiple invocations. 11/15/84 Jay Pattin 35**/ 36 37 forum_requests_$set_forum: 38 procedure (P_passport_info_ptr, P_forum_spec, P_status); 39 40 declare P_passport_info_ptr ptr, 41 P_ssu_ptr ptr, 42 P_forum_spec char (*), 43 P_forum_idx fixed bin, 44 P_forum_dir char (*), 45 P_forum_name char (*), 46 P_forum_name_len fixed bin, 47 P_status fixed bin (35); 48 49 declare (addr, codeptr, length, min, null, rtrim, search, string, substr) 50 builtin; 51 52 declare cleanup condition; 53 54 declare answer char (8) varying, 55 arg_count fixed bin, 56 arg_idx fixed bin, 57 arg_len fixed bin (21), 58 arg_ptr ptr, 59 egress label variable, 60 force_switch bit (1) aligned, 61 forum_arg_count fixed bin, 62 forum_arg_len fixed bin (21), 63 forum_arg_ptr ptr, 64 forum_dir char (168), 65 forum_idx fixed bin, 66 full_forum_name char (32), /* has suffix on it */ 67 forum_name_len fixed bin, 68 message char (256), 69 return_switch bit (1) aligned, 70 ssu_ptr ptr, 71 user_name char (32), 72 status fixed bin (35), 73 want_forum bit (1) aligned; 74 75 declare static_event_channel fixed bin (71) static init (0), 76 static_passport_list_ptr pointer static init (null ()); 77 78 declare 1 event_call_info aligned based (event_info_ptr), 79 2 channel_id fixed bin (71), 80 2 forum_message, 81 3 forum_uid bit (36) aligned, /* what happened? */ 82 3 offset bit (18), /* who did it? */ 83 2 pad fixed bin (71), /* we don't care about this */ 84 2 data_ptr ptr; /* pointer to our passport */ 85 86 declare arg char (arg_len) based (arg_ptr), 87 forum_arg char (forum_arg_len) based (forum_arg_ptr), 88 forum_name char (forum_name_len) based (addr (full_forum_name)); 89 90 declare ( 91 forum_et_$blank_forum_name, 92 forum_et_$forum_deleted, 93 forum_et_$long_forum_name, 94 forum_et_$not_in_search_list, 95 forum_et_$no_such_forum, 96 forum_et_$old_format, 97 forum_request_tables_$chairman_requests, 98 forum_request_tables_$user_requests, 99 error_table_$badopt, 100 error_table_$entlong, 101 error_table_$noarg, 102 error_table_$noaccess, 103 error_table_$no_info, 104 error_table_$notadir) fixed bin (35) external; 105 106 declare iox_$user_output ptr external; 107 108 declare command_query_ entry () options (variable), 109 forum_trans_util_$clear_cache entry (ptr), 110 forum_$close_forum entry (fixed bin, fixed bin (35)), 111 forum_$convert_attendee_idx entry (fixed bin, bit (18), char (*), fixed bin (35)), 112 forum_$get_forum_path entry (char (*), char (*), char (*), char (*), fixed bin (35)), 113 forum_$get_message entry (fixed bin, char (*), fixed bin (35)), 114 forum_$forum_limits entry (fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, 115 bit (36) aligned, fixed bin (35)), 116 forum_$list_v1_forum_acl entry (char (*), char (*), ptr, ptr, fixed bin, fixed bin (35)), 117 forum_$list_forum_acl entry (char (*), char (*), ptr, ptr, ptr, fixed bin, fixed bin (35)), 118 forum_$open_forum entry (char (*), char (*), fixed bin, fixed bin (35)), 119 forum_$set_event_channel_idx 120 entry (fixed bin, fixed bin (71), fixed bin (35)), 121 forum_$set_switch_idx entry (fixed bin, char (*), char (*), bit (1) aligned, fixed bin (35)), 122 forum_$validate_uid entry (fixed bin, bit (36) aligned, fixed bin (35)), 123 convert_ipc_code_ entry (fixed bin (35)), 124 expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), fixed bin (35)), 125 get_system_free_area_ entry returns (ptr), 126 (ioa_, ioa_$nnl) entry options (variable), 127 iox_$control entry (ptr, char (*), ptr, fixed bin (35)), 128 ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)), 129 ipc_$decl_ev_call_chn entry (fixed bin (71), ptr, ptr, fixed bin, fixed bin (35)), 130 ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)), 131 search_paths_$get entry (char (*), bit (36), char (*), ptr, ptr, fixed bin, ptr, fixed bin (35)), 132 ssu_$abort_line entry options (variable), 133 ssu_$abort_subsystem entry options (variable), 134 ssu_$arg_count entry (ptr, fixed bin), 135 ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)), 136 ssu_$list_request_tables entry (ptr, ptr, fixed bin, ptr, fixed bin (35)), 137 ssu_$print_message entry options (variable), 138 ssu_$set_request_tables entry (ptr, ptr, fixed bin (35)); 139 1 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 1 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 1 3 /* version number changed to 4, 08/10/78 WOS */ 1 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 1 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 1 6 1 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 1 8 2 version fixed bin, /* version of this structure - must be set, see below */ 1 9 2 switches aligned, /* various bit switch values */ 1 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 1 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 1 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 1 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 1 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 1 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 1 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 1 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 1 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 1 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 1 20 1 21 /* Limit of data defined for version 2 */ 1 22 1 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 1 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 1 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 1 26 /* minimum of 30 seconds required for repeat */ 1 27 /* otherwise, no repeat will occur */ 1 28 /* Limit of data defined for version 4 */ 1 29 1 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 1 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 1 32 1 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 1 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 1 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 1 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 1 37 1 38 /* END INCLUDE FILE query_info.incl.pl1 */ 140 141 2 1 /* START OF: forum_passport.incl.pl1 * * * * * * * * * * * * * * * * */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(86-07-30,Pattin), approve(86-07-30,MCR7354), 2 7* audit(86-08-03,Margolin), install(86-08-16,MR12.0-1128): 2 8* Added trailer_format. 2 9* END HISTORY COMMENTS */ 2 10 2 11 2 12 declare passport_info_ptr ptr; 2 13 2 14 declare 1 passport aligned based (passport_info_ptr), 2 15 2 version fixed bin, /* 2 */ 2 16 2 forum_idx fixed bin, /* current forum */ 2 17 2 forum_dir char (168) unal, /* where forum lives */ 2 18 2 forum_name char (32) unal, /* Current forum I'm at */ 2 19 2 forum_name_len fixed bin, /* length of forum_name without suffix */ 2 20 2 flags unal, 2 21 3 brief_sw bit (1) unal, /* specified at invocation */ 2 22 3 talk_fill bit (1) unal, /* God knows */ 2 23 3 print_fill bit (1) unal, /* God doesn't know */ 2 24 3 read_only bit (1) unal, 2 25 3 print_message bit (1) unal, /* Print chairman message on talk/reply */ 2 26 3 auto_write bit (1) unal, 2 27 3 mbz bit (30) unal, /* Future expansion */ 2 28 2 current_trans fixed bin, /* current transaction number */ 2 29 2 input_fill_width fixed bin, /* line length used for input filling */ 2 30 2 output_fill_width fixed bin, /* line length used for output filling */ 2 31 2 public_channel fixed bin (71), /* My transaction wakeup channel. */ 2 32 2 area_ptr ptr, /* used for random temporary storage */ 2 33 2 first_trans_ptr ptr, /* ptrs to linked list of transactions copied to */ 2 34 2 last_trans_ptr ptr, /* user ring */ 2 35 2 unprocessed_trans_ptr ptr, /* If this isn't null, we got one pending. */ 2 36 2 unprocessed_reply_trans fixed bin, /* If nonzero, unprocessed trans is a reply. */ 2 37 2 unprocessed_forum_dir char (168), /* Directory containing meeting unproc is for. */ 2 38 2 unprocessed_forum_name char (32), /* Name of meeting unproc is for */ 2 39 2 unprocessed_name_len fixed bin, /* length (w/o suffix) of Name of meeting unproc is for */ 2 40 2 ssu_ptr ptr, /* Department of Redundancy Department. */ 2 41 2 next_passport_ptr ptr, /* list of all invocations */ 2 42 2 trailer_format fixed bin; 2 43 2 44 declare passport_version_2 fixed bin static options (constant) initial (2); 2 45 2 46 declare forum_area area based (passport.area_ptr), 2 47 no_suffix_name char (passport.forum_name_len) based (addr (passport.forum_name)); 2 48 2 49 declare forum_data_$version_string character (8) external, 2 50 forum_data_$central_directory 2 51 character (168) unaligned external, 2 52 forum_data_$info_directory character (168) unaligned external; 2 53 2 54 declare (TFMT_none init (0), 2 55 TFMT_number init (1), 2 56 TFMT_more init (2), 2 57 TFMT_reference init (3)) 2 58 fixed bin static options (constant); 2 59 2 60 /* END OF: forum_passport.incl.pl1 * * * * * * * * * * * * * * * * */ 142 143 3 1 /* ... BEGIN INCLUDE FILE forum_flags.incl.pl1 ... */ 3 2 3 3 /* Flags returned by forum_$forum_limits 3 4* Jay Pattin 5/5/82 */ 3 5 3 6 dcl forum_flags_word bit (36) aligned; 3 7 3 8 dcl 1 forum_flags aligned based (addr (forum_flags_word)), 3 9 2 chairman bit (1) unaligned, 3 10 2 read_only bit (1) unaligned, 3 11 2 print_cm_message bit (1) unaligned, 3 12 2 print_acl_message bit (1) unaligned, 3 13 2 acl_has_changed bit (1) unaligned, 3 14 2 adjourned bit (1) unaligned, 3 15 2 mbz bit (30) unaligned; 3 16 3 17 /* END INCLUDE FILE forum_flags.incl.pl1 */ 144 145 4 1 /* BEGIN INCLUDE FILE: forum_user_trans.incl.pl1 */ 4 2 4 3 dcl alloc_text_length fixed bin (21); /* length of text area to allocate */ 4 4 dcl alloc_subject_length fixed bin (21); /* length of subject area to allocate */ 4 5 dcl forum_user_trans_ptr ptr; /* pointer to below structure */ 4 6 4 7 dcl 1 forum_user_trans based (forum_user_trans_ptr) aligned, 4 8 2 type fixed bin, /* type of transaction */ 4 9 2 person_id char (22), /* person_id of author of this transaction */ 4 10 2 project_id char (9), /* project_id of author of this transaction */ 4 11 2 time fixed bin (71), /* time transaction was entered */ 4 12 2 trans_no fixed bin, /* number of this transaction */ 4 13 2 next_trans_ptr ptr, /* pointer (in user ring) of next transaction */ 4 14 2 prev_trans_ptr ptr, /* pointer (in user ring) of previous transaction */ 4 15 2 subject_length fixed bin (21), /* length of subject field of transaction */ 4 16 2 text_length fixed bin (21), /* length of text field of transaction */ 4 17 2 unfilled bit (1) aligned, /* set if transaction is NOT stored filled */ 4 18 2 subject char (alloc_subject_length refer (forum_user_trans.subject_length)) unaligned, /* subject of transaction */ 4 19 2 text char (alloc_text_length refer (forum_user_trans.text_length)) unaligned; /* text of transaction */ 4 20 4 21 declare user_trans_type fixed bin static options (constant) initial (1); 4 22 declare message_type fixed bin static options (constant) initial (2); 4 23 4 24 declare (ONLY_UNDELETED init (0), 4 25 INCLUDE_DELETED init (1), 4 26 ONLY_DELETED init (2)) 4 27 fixed bin static options (constant); 4 28 4 29 /* END INCLUDE FILE: forum_user_trans.incl.pl1 */ 146 147 5 1 /* BEGIN INCLUDE FILE ... ssu_request_tables_list.incl.pl1 */ 5 2 /* Created: 8 December 1981 by G. Palter */ 5 3 5 4 /* The list of request tables in use by a subsystem invocation */ 5 5 5 6 5 7 dcl 1 request_tables_list aligned based (rtl_ptr), 5 8 2 header, 5 9 3 version fixed binary, /* version of this structure */ 5 10 3 n_tables fixed binary, /* # of request tables in the list */ 5 11 2 tables (request_tables_list_n_tables refer (request_tables_list.n_tables)), 5 12 3 table_ptr pointer, /* -> this request table */ 5 13 3 flags, 5 14 4 table_valid bit (1) unaligned, /* "1"b => this request table is valid */ 5 15 4 pad bit (35) unaligned, 5 16 3 pad bit (36); 5 17 5 18 dcl rtl_ptr pointer; 5 19 5 20 dcl request_tables_list_n_tables fixed binary; /* for allocating the above structure */ 5 21 5 22 dcl REQUEST_TABLES_LIST_VERSION_1 fixed binary static options (constant) initial (1); 5 23 5 24 /* END INCLUDE FILE ... ssu_request_tables_list.incl.pl1 */ 148 149 6 1 /* BEGIN INCLUDE FILE . . . sl_info.incl.pl1 */ 6 2 6 3 6 4 6 5 /****^ HISTORY COMMENTS: 6 6* 1) change(87-11-16,Lippard), approve(87-12-21,MCR7822), 6 7* audit(88-02-09,Blair), install(88-02-16,MR12.2-1023): 6 8* Modified to add INITIATED_SEGS type. 6 9* 2) change(87-11-19,Lippard), approve(87-12-21,MCR7822), 6 10* audit(88-02-09,Blair), install(88-02-16,MR12.2-1023): 6 11* Added uid to sl_info structure. 6 12* END HISTORY COMMENTS */ 6 13 6 14 6 15 declare 1 sl_info aligned based (sl_info_p), 6 16 2 version fixed binary, /* Must be 1 */ 6 17 2 num_paths fixed binary, /* Number of search paths */ 6 18 2 change_index_p pointer, /* Pointer to search list's update count */ 6 19 2 change_index fixed binary (71), /* This search list's update count */ 6 20 2 pad1 (6) bit (36), /* Must be zero */ 6 21 2 paths (sl_info_num_paths refer (sl_info.num_paths)), 6 22 3 type fixed binary, /* Type of search path */ 6 23 3 code fixed binary (35), /* Standard status code of search path */ 6 24 3 uid bit (36), /* Unique ID */ 6 25 3 pathname char (168) unaligned; /* Search pathname */ 6 26 6 27 declare sl_info_num_paths fixed binary; 6 28 declare sl_info_p pointer; 6 29 declare sl_info_version_1 fixed binary internal static options (constant) initial (1); 6 30 6 31 /* Keyword Types */ 6 32 6 33 declare ABSOLUTE_PATH fixed binary internal static options (constant) initial (0); 6 34 declare UNEXPANDED_PATH fixed binary internal static options (constant) initial (1); 6 35 declare REFERENCING_DIR fixed binary internal static options (constant) initial (3); 6 36 declare WORKING_DIR fixed binary internal static options (constant) initial (4); 6 37 declare PROCESS_DIR fixed binary internal static options (constant) initial (5); 6 38 declare HOME_DIR fixed binary internal static options (constant) initial (6); 6 39 declare INITIATED_SEGS fixed binary internal static options (constant) initial (7); 6 40 6 41 /* END INCLUDE FILE . . . sl_info.incl.pl1 */ 150 7 1 /* BEGIN INCLUDE FILE . . . sl_control_s.incl.pl1 */ 7 2 7 3 declare 1 sl_control_s unaligned based (addr (sl_control)), 7 4 2 af_pathname bit (1), /* "1"b => expand active functions */ 7 5 2 pad1 bit (1), /* Must be zero */ 7 6 2 key_ref_dir bit (1), /* "1"b => expand -referencing_dir keyword */ 7 7 2 key_work_dir bit (1), /* "1"b => expand -working_dir keyword */ 7 8 2 key_proc_dir bit (1), /* "1"b => expand -process_dir keyword */ 7 9 2 key_home_dir bit (1), /* "1"b => expand -home_dir keyword */ 7 10 2 pad2 bit (30); /* Must be zero */ 7 11 7 12 declare sl_control bit (36); 7 13 declare sl_control_default bit (36) internal static options (constant) initial ("101111"b); 7 14 7 15 /* END INCLUDE FILE . . . sl_control_s.incl.pl1 */ 151 152 153 /* forum_requests_$set_forum: procedure (P_subsystem_info_ptr, P_forum_spec, P_status); */ 154 155 passport_info_ptr = P_passport_info_ptr; 156 ssu_ptr = passport.ssu_ptr; 157 158 forum_idx = 0; 159 egress = SET_MEETING_EXIT; 160 161 call find_forum_path (P_forum_spec); 162 163 on cleanup call clean_up_goto (passport.forum_idx); 164 165 call forum_$open_forum (forum_dir, full_forum_name, forum_idx, status); 166 if status ^= 0 then call error (status); 167 168 call make_forum_current (); 169 170 P_status = 0; 171 172 return; 173 174 SET_MEETING_EXIT: 175 call clean_up_goto (passport.forum_idx); 176 177 P_status = status; 178 179 return; 180 181 forum_requests_$open_forum: 182 entry (P_forum_spec, P_forum_idx, P_forum_dir, P_forum_name, P_status); 183 184 egress = OPEN_MEETING_EXIT; 185 forum_idx = 0; 186 passport_info_ptr = null (); 187 188 call find_forum_path (P_forum_spec); 189 190 on cleanup call clean_up_goto (P_forum_idx); 191 192 call forum_$open_forum (forum_dir, full_forum_name, forum_idx, status); 193 if status ^= 0 then call error (status); 194 195 P_forum_idx = forum_idx; 196 P_forum_dir = forum_dir; 197 P_forum_name = substr (full_forum_name, 1, forum_name_len); 198 P_status = 0; 199 200 return; 201 202 OPEN_MEETING_EXIT: 203 call clean_up_goto (P_forum_idx); 204 205 P_forum_dir = ""; 206 P_forum_name = ""; 207 P_status = status; 208 209 return; 210 211 forum_requests_$goto_request: 212 entry (P_ssu_ptr, P_passport_info_ptr); 213 214 ssu_ptr = P_ssu_ptr; 215 passport_info_ptr = P_passport_info_ptr; 216 217 call ssu_$arg_count (ssu_ptr, arg_count); 218 219 forum_arg_count = 0; 220 return_switch, want_forum = "0"b; 221 222 do arg_idx = 1 to arg_count; 223 224 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 225 226 if want_forum | substr (arg, 1, min (1, arg_len)) ^= "-" then do; 227 forum_arg_ptr = arg_ptr; 228 forum_arg_len = arg_len; 229 forum_arg_count = forum_arg_count + 1; 230 want_forum = "0"b; 231 end; 232 else do; 233 if arg = "-meeting" | arg = "-mtg" then do; 234 if arg_idx = arg_count then call ssu_$abort_line (ssu_ptr, error_table_$noarg, "Following ^a.", arg); 235 else want_forum = "1"b; 236 end; 237 else if arg = "-return_on_error" | arg = "-roe" then return_switch = "1"b; 238 else if arg = "-no_return_on_error" | arg = "-nroe" then return_switch = "0"b; 239 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, "^a", arg); 240 end; 241 end; 242 243 if forum_arg_count ^= 1 then call ssu_$abort_line (ssu_ptr, 0, "Usage: g meeting_name {-control_arg}"); 244 245 egress = GOTO_EXIT; 246 forum_idx = 0; 247 248 on cleanup call clean_up_goto (passport.forum_idx); 249 250 if ^return_switch then call close_old_forum (); 251 252 call find_forum_path (forum_arg); 253 254 call forum_$open_forum (forum_dir, full_forum_name, forum_idx, status); 255 if status ^= 0 then 256 call ssu_$abort_line (ssu_ptr, status, "^a^[>^]^a", forum_dir, forum_dir ^= ">", forum_name); 257 258 if return_switch then call close_old_forum (); 259 260 call make_forum_current (); 261 262 if passport.unprocessed_trans_ptr ^= null () then 263 if passport.forum_name ^= passport.unprocessed_forum_name then 264 call ssu_$print_message (ssu_ptr, 0, "Warning, there is an unprocessed transaction in the ^a meeting.", 265 substr (passport.unprocessed_forum_name, 1, passport.unprocessed_name_len)); 266 267 return; 268 269 GOTO_EXIT: 270 call ssu_$abort_line (ssu_ptr, status, "^a", forum_arg); 271 272 forum_requests_$find_forum: 273 entry (P_forum_spec, P_forum_dir, P_forum_name, P_forum_name_len, P_status); 274 275 egress = FIND_MEETING_EXIT; 276 277 call find_forum_path (P_forum_spec); 278 279 P_forum_dir = forum_dir; 280 P_forum_name = full_forum_name; 281 P_forum_name_len = forum_name_len; 282 283 P_status = 0; 284 return; 285 286 FIND_MEETING_EXIT: 287 P_status = status; 288 return; 289 290 find_forum_path: 291 procedure (arg); 292 293 declare (before, index, reverse) builtin; 294 declare arg char (*); 295 declare idx fixed bin, 296 old_path bit (1) aligned, 297 real_dir char (168), 298 real_entry char (32); 299 300 if search (arg, "<>") - 1 >= 0 then do; 301 if index (arg, ".") > 0 & before (reverse (rtrim (arg)), ".") = "lortnoc" then goto V1PATH; 302 call expand_pathname_$add_suffix (arg, "forum", forum_dir, full_forum_name, status); 303 if status ^= 0 then 304 PATHERR: if status = error_table_$entlong 305 then call error (forum_et_$long_forum_name); 306 else call error (status); 307 call forum_$get_forum_path (forum_dir, full_forum_name, real_dir, real_entry, status); 308 if status = 0 then 309 forum_name_len = length (rtrim (real_entry)) - length (".forum"); 310 else if status ^= forum_et_$no_such_forum & status ^= error_table_$noaccess & 311 status ^= error_table_$no_info then 312 call error (status); 313 else do; 314 V1PATH: call expand_pathname_$add_suffix (arg, "control", forum_dir, full_forum_name, status); 315 if status ^= 0 then goto PATHERR; 316 call forum_$get_forum_path (forum_dir, full_forum_name, real_dir, real_entry, status); 317 if status ^= 0 then call error (status); 318 forum_name_len = length (rtrim (real_entry)) - length (".control"); 319 end; 320 321 full_forum_name = real_entry; 322 forum_dir = real_dir; 323 return; 324 end; 325 326 forum_name_len = length (rtrim (arg)); 327 old_path = "0"b; 328 329 if forum_name_len > length (".forum") then 330 if substr (arg, forum_name_len - length (".forum") + 1) = ".forum" then 331 forum_name_len = forum_name_len - length (".forum"); 332 333 if forum_name_len > length (".control") then 334 if substr (arg, forum_name_len - length (".control") + 1) = ".control" then do; 335 forum_name_len = forum_name_len - length (".control"); 336 old_path = "1"b; 337 end; 338 339 if forum_name_len < 1 then call error (forum_et_$blank_forum_name); 340 if forum_name_len > 26 then call error (forum_et_$long_forum_name); 341 342 forum_name = substr (arg, 1, forum_name_len); /* Assign only the "interesting" part through the overlay. */ 343 if old_path then substr (full_forum_name, forum_name_len + 1) = ".control"; 344 else substr (full_forum_name, forum_name_len + 1) = ".forum"; 345 346 sl_info_p = null (); 347 on cleanup begin; 348 if sl_info_p ^= null () then free sl_info; 349 end; 350 351 call search_paths_$get ("forum", sl_control_default, "", null (), get_system_free_area_ (), sl_info_version_1, 352 sl_info_p, status); 353 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "Getting ""forum"" search path."); 354 355 forum_dir = ""; 356 if old_path then goto V1ENT; 357 358 status = 1; 359 do idx = 1 to sl_info.num_paths while (status ^= 0); 360 if sl_info.paths (idx).code = 0 then 361 call forum_$get_forum_path (sl_info.pathname (idx), full_forum_name, real_dir, real_entry, status); 362 if status ^= 0 then 363 if status ^= forum_et_$no_such_forum & status ^= error_table_$noaccess & 364 status ^= error_table_$no_info & status ^= error_table_$notadir then 365 call error (status); 366 end; 367 368 if status = 0 then 369 forum_name_len = length (rtrim (real_entry)) - length (".forum"); 370 else if status = forum_et_$no_such_forum | status = error_table_$notadir | status = error_table_$no_info | 371 status = error_table_$notadir then do; 372 full_forum_name = forum_name || ".control"; 373 V1ENT: status = 1; 374 do idx = 1 to sl_info.num_paths while (status ^= 0); 375 if sl_info.paths (idx).code = 0 then 376 call forum_$get_forum_path (sl_info.pathname (idx), full_forum_name, real_dir, 377 real_entry, status); 378 end; 379 if status ^= 0 then call error (forum_et_$not_in_search_list); 380 forum_name_len = length (rtrim (real_entry)) - length (".control"); 381 end; 382 else call error (status); 383 384 free sl_info; 385 forum_dir = real_dir; 386 full_forum_name = real_entry; 387 388 return; 389 390 end find_forum_path; 391 392 make_forum_current: 393 procedure (); 394 395 declare last_seen_trans fixed bin, /* highest seen only */ 396 first_trans fixed bin, 397 last_trans fixed bin, 398 new_trans fixed bin; 399 400 401 call forum_$forum_limits (forum_idx, ONLY_UNDELETED, last_seen_trans, first_trans, last_trans, new_trans, forum_flags_word, 402 status); 403 if status ^= 0 then call error (status); 404 405 passport.forum_idx = forum_idx; 406 passport.forum_dir = forum_dir; 407 passport.forum_name = full_forum_name; 408 passport.forum_name_len = forum_name_len; 409 passport.current_trans = last_seen_trans; 410 411 passport.read_only = forum_flags.read_only; 412 413 if passport.public_channel = 0 then 414 passport.public_channel = get_event_channel (); 415 416 call forum_$set_event_channel_idx (forum_idx, passport.public_channel, status); 417 if status ^= 0 then call error (status); 418 419 if forum_flags.chairman then call set_request_tables (addr (forum_request_tables_$chairman_requests)); 420 else call set_request_tables (addr (forum_request_tables_$user_requests)); 421 422 if ^passport.brief_sw then 423 call ioa_ ("^a meeting: ^d new, ^d last^[ (You are the chairman)^]^[ (Read-only)^].", forum_name, 424 new_trans, last_trans, forum_flags.chairman, forum_flags.read_only); 425 426 if forum_flags.adjourned then call ioa_ ("** The meeting has been adjourned. **"); 427 if forum_flags.print_acl_message then call print_acl_message (); 428 if forum_flags.print_cm_message then do; 429 call forum_$get_message (forum_idx, message, status); 430 if status = 0 then call ioa_$nnl ("^a", message); 431 call forum_$set_switch_idx (forum_idx, "", "message_seen", "1"b, (0)); 432 end; 433 passport.print_message = ^forum_flags.print_cm_message; 434 435 return; 436 437 end make_forum_current; 438 439 print_acl_message: 440 proc (); 441 442 declare acl_ptr ptr, 443 acl_count fixed bin, 444 (person, project) fixed bin, 445 1 acl (acl_count) aligned based (acl_ptr), 446 2 access_name char (32), 447 2 modes bit (36), 448 2 xmodes bit (36), 449 2 code fixed bin (35); 450 451 acl_ptr = null (); 452 on cleanup begin; 453 if acl_ptr ^= null () then free acl; 454 end; 455 456 call forum_$list_forum_acl (forum_dir, full_forum_name, passport.area_ptr, acl_ptr, null (), acl_count, status); 457 if status ^= 0 then 458 if status = forum_et_$old_format then do; 459 call forum_$list_v1_forum_acl (forum_dir, full_forum_name, passport.area_ptr, acl_ptr, acl_count, 460 status); 461 if status ^= 0 then goto PUNT; 462 463 do arg_idx = 1 to acl_count; 464 acl.xmodes (arg_idx) = acl.modes (arg_idx); 465 end; 466 end; 467 else do; 468 PUNT: call ssu_$print_message (ssu_ptr, status, "Listing ACL on meeting."); 469 return; 470 end; 471 472 if acl.access_name (acl_count) = "*.*.*" & acl.xmodes (acl_count) ^= ""b then 473 call ioa_ ("The meeting is public."); 474 else do; 475 person, project = 0; 476 do arg_idx = 1 to acl_count while (substr (acl.access_name (arg_idx), 1, 2) ^= "*."); 477 if acl.xmodes (arg_idx) ^= ""b then person = person + 1; 478 end; 479 do arg_idx = arg_idx to acl_count; 480 if acl.xmodes (arg_idx) ^= ""b & acl.access_name (arg_idx) ^= "*.SysDaemon.*" then project = project + 1; 481 end; 482 call ioa_ ("There are ^d user^[s^] and ^d project^[s^] eligible to attend.", person, person ^= 1, 483 project, project ^= 1); 484 end; 485 486 free acl; 487 488 if forum_flags.acl_has_changed then do; 489 call ioa_ ("Access to this meeting has changed, type ""list_users -eligible""."); 490 call forum_$set_switch_idx (forum_idx, "", "access_changed", "0"b, status); 491 if status ^= 0 then call ssu_$print_message (ssu_ptr, status, "Resetting access change switch."); 492 end; 493 494 return; 495 end print_acl_message; 496 497 clean_up_goto: 498 procedure (P_forum_idx); 499 500 declare P_forum_idx fixed bin; 501 502 if forum_idx = 0 then return; 503 504 if P_forum_idx = forum_idx then P_forum_idx = 0; 505 506 call forum_$close_forum (forum_idx, (0)); 507 508 if passport_info_ptr ^= null () then 509 if passport.forum_idx = 0 then call set_request_tables (addr (forum_request_tables_$user_requests)); 510 511 return; 512 513 end clean_up_goto; 514 515 forum_requests_$quit_request: 516 entry (P_ssu_ptr, P_passport_info_ptr); 517 518 ssu_ptr = P_ssu_ptr; 519 passport_info_ptr = P_passport_info_ptr; 520 force_switch = "0"b; 521 522 call ssu_$arg_count (ssu_ptr, arg_count); 523 524 do arg_idx = 1 to arg_count; 525 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 526 if substr (arg, 1, 1) ^= "-" then call ssu_$abort_line (ssu_ptr, 0, "Usage: quit {-control_arg}"); 527 if arg = "-force" | arg = "-fc" then force_switch = "1"b; 528 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, arg); 529 end; 530 531 if ^force_switch & passport.unprocessed_trans_ptr ^= null () then do; 532 query_info.version = query_info_version_5; 533 string (query_info.switches) = "0"b; 534 query_info.yes_or_no_sw = "1"b; 535 query_info.status_code, query_info.query_code = 0; 536 query_info.question_iocbp, query_info.answer_iocbp = null (); 537 query_info.repeat_time = 0; 538 call command_query_ (addr (query_info), answer, "forum (quit)", 539 "There is an unprocessed transaction.^/Do you still wish to quit?"); 540 if answer = "no" then return; 541 end; 542 543 call ssu_$abort_subsystem (ssu_ptr); 544 545 return; 546 547 close_old_forum: 548 procedure (); 549 550 if passport.forum_idx = 0 then return; 551 552 call forum_trans_util_$clear_cache (passport_info_ptr); 553 554 call forum_$close_forum (passport.forum_idx, status); 555 if status ^= 0 then 556 if status = forum_et_$forum_deleted then 557 call ssu_$print_message (ssu_ptr, status, "^a^[>^]^a", passport.forum_dir, passport.forum_dir ^= ">", 558 passport.forum_name); 559 else call ssu_$abort_line (ssu_ptr, status, "^a^[>^]^a", passport.forum_dir, passport.forum_dir ^= ">", 560 passport.forum_name); 561 562 call set_request_tables (addr (forum_request_tables_$user_requests)); 563 564 passport.forum_name = ""; 565 passport.forum_dir = ""; 566 567 return; 568 569 end close_old_forum; 570 571 set_request_tables: 572 proc (rqt_ptr); 573 574 declare rqt_ptr ptr; 575 576 rtl_ptr = null (); 577 on cleanup begin; 578 if rtl_ptr ^= null () then free request_tables_list; 579 end; 580 581 call ssu_$list_request_tables (ssu_ptr, passport.area_ptr, REQUEST_TABLES_LIST_VERSION_1, rtl_ptr, status); 582 if status = 0 then 583 if request_tables_list.table_ptr (1) = rqt_ptr then return; /* No change, save work */ 584 585 request_tables_list.table_ptr (1) = rqt_ptr; 586 587 call ssu_$set_request_tables (ssu_ptr, rtl_ptr, status); 588 if status ^= 0 then call error (status); 589 590 return; 591 end set_request_tables; 592 593 get_event_channel: 594 procedure () returns (fixed bin (71)); 595 596 declare event_channel fixed bin (71); 597 598 if static_event_channel ^= 0 then return (static_event_channel); 599 600 call ipc_$create_ev_chn (event_channel, status); 601 call convert_ipc_code_ (status); 602 if status ^= 0 then call error (status); 603 604 call ipc_$decl_ev_call_chn (event_channel, codeptr (forum_requests_$wakeup_handler), 605 null (), 0, status); 606 607 if status ^= 0 then do; 608 call ipc_$delete_ev_chn (event_channel, (0)); 609 call convert_ipc_code_ (status); 610 call error (status); 611 end; 612 613 static_event_channel = event_channel; 614 return (event_channel); 615 616 end get_event_channel; 617 618 /* This is the procedure that is called when ring 2 sends a wakeup */ 619 620 forum_requests_$wakeup_handler: 621 entry (event_info_ptr); 622 623 declare event_info_ptr ptr; 624 625 if event_call_info.offset = ""b then return; /* Yup, we are still here. */ 626 627 do passport_info_ptr = static_passport_list_ptr repeat passport.next_passport_ptr 628 while (passport_info_ptr ^= null ()); 629 630 call forum_$validate_uid (passport.forum_idx, event_call_info.forum_uid, 631 status); 632 if status = 0 then do; /* This is the right meeting */ 633 call forum_$convert_attendee_idx (passport.forum_idx, 634 (event_call_info.offset), user_name, status); 635 if status ^= 0 then user_name = ""; 636 call ioa_ ("A new transaction has been entered by ^a.", user_name); 637 call iox_$control (iox_$user_output, "start", null (), (0)); 638 return; 639 end; 640 end; 641 642 return; 643 644 forum_requests_$add_passport: 645 entry (P_passport_info_ptr); 646 647 passport_info_ptr = P_passport_info_ptr; 648 passport.next_passport_ptr = static_passport_list_ptr; 649 static_passport_list_ptr = passport_info_ptr; 650 return; 651 652 653 forum_requests_$remove_passport: 654 entry (P_passport_info_ptr); 655 656 declare old_pp_ptr pointer; 657 658 old_pp_ptr = null (); 659 do passport_info_ptr = static_passport_list_ptr repeat passport.next_passport_ptr 660 while (passport_info_ptr ^= null ()); 661 if passport_info_ptr = P_passport_info_ptr then do; 662 if old_pp_ptr = null () then static_passport_list_ptr = passport.next_passport_ptr; 663 else old_pp_ptr -> passport.next_passport_ptr = passport.next_passport_ptr; 664 return; 665 end; 666 end; 667 return; 668 669 670 error: 671 procedure (P_status); 672 673 declare P_status fixed bin (35); 674 675 status = P_status; 676 677 go to egress; 678 679 end error; 680 681 end forum_requests_$set_forum; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/28/92 1715.0 forum_requests_.pl1 >spec>inst>1020>forum_requests_.pl1 140 1 03/11/83 1304.3 query_info.incl.pl1 >ldd>incl>query_info.incl.pl1 142 2 08/16/86 1638.0 forum_passport.incl.pl1 >ldd>incl>forum_passport.incl.pl1 144 3 10/31/84 1215.3 forum_flags.incl.pl1 >ldd>incl>forum_flags.incl.pl1 146 4 10/31/84 1215.4 forum_user_trans.incl.pl1 >ldd>incl>forum_user_trans.incl.pl1 148 5 04/13/82 1720.2 ssu_request_tables_list.incl.pl1 >ldd>incl>ssu_request_tables_list.incl.pl1 150 6 02/18/88 2123.8 sl_info.incl.pl1 >ldd>incl>sl_info.incl.pl1 151 7 01/09/79 1717.9 sl_control_s.incl.pl1 >ldd>incl>sl_control_s.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ONLY_UNDELETED 000041 constant fixed bin(17,0) initial dcl 4-24 set ref 401* P_forum_dir parameter char packed unaligned dcl 40 set ref 181 196* 205* 272 279* P_forum_idx parameter fixed bin(17,0) dcl 40 in procedure "forum_requests_$set_forum" set ref 181 190* 195* 202* P_forum_idx parameter fixed bin(17,0) dcl 500 in procedure "clean_up_goto" set ref 497 504 504* P_forum_name parameter char packed unaligned dcl 40 set ref 181 197* 206* 272 280* P_forum_name_len parameter fixed bin(17,0) dcl 40 set ref 272 281* P_forum_spec parameter char packed unaligned dcl 40 set ref 37 161* 181 188* 272 277* P_passport_info_ptr parameter pointer dcl 40 ref 37 155 211 215 515 519 644 647 653 661 P_ssu_ptr parameter pointer dcl 40 ref 211 214 515 518 P_status parameter fixed bin(35,0) dcl 40 in procedure "forum_requests_$set_forum" set ref 37 170* 177* 181 198* 207* 272 283* 286* P_status parameter fixed bin(35,0) dcl 673 in procedure "error" ref 670 675 REQUEST_TABLES_LIST_VERSION_1 000046 constant fixed bin(17,0) initial dcl 5-22 set ref 581* access_name based char(32) array level 2 dcl 442 ref 472 476 480 acl based structure array level 1 dcl 442 set ref 453 486 acl_count 000102 automatic fixed bin(17,0) dcl 442 set ref 453 456* 459* 463 472 472 476 479 486 acl_has_changed 0(04) based bit(1) level 2 packed packed unaligned dcl 3-8 ref 488 acl_ptr 000100 automatic pointer dcl 442 set ref 451* 453 453 456* 459* 464 464 472 472 476 477 480 480 486 addr builtin function dcl 49 ref 255 342 372 411 419 419 419 420 420 422 422 422 426 427 428 433 488 508 508 538 538 562 562 adjourned 0(05) based bit(1) level 2 packed packed unaligned dcl 3-8 ref 426 answer 000106 automatic varying char(8) dcl 54 set ref 538* 540 answer_iocbp 6 000332 automatic pointer initial level 2 dcl 1-7 set ref 536* 1-7* area_ptr 74 based pointer level 2 dcl 2-14 set ref 456* 459* 581* arg parameter char packed unaligned dcl 294 in procedure "find_forum_path" set ref 290 300 301 301 302* 314* 326 329 333 342 arg based char packed unaligned dcl 86 in procedure "forum_requests_$set_forum" set ref 226 233 233 234* 237 237 238 238 239* 526 527 527 528* arg_count 000111 automatic fixed bin(17,0) dcl 54 set ref 217* 222 234 522* 524 arg_idx 000112 automatic fixed bin(17,0) dcl 54 set ref 222* 224* 234* 463* 464 464* 476* 476* 477* 479* 479* 480 480* 524* 525* arg_len 000113 automatic fixed bin(21,0) dcl 54 set ref 224* 226 226 228 233 233 234 234 237 237 238 238 239 239 525* 526 527 527 528 528 arg_ptr 000114 automatic pointer dcl 54 set ref 224* 226 227 233 233 234 237 237 238 238 239 525* 526 527 527 528 before builtin function dcl 293 ref 301 brief_sw 65 based bit(1) level 3 packed packed unaligned dcl 2-14 ref 422 chairman based bit(1) level 2 packed packed unaligned dcl 3-8 set ref 419 422* cleanup 000100 stack reference condition dcl 52 ref 163 190 248 347 452 577 code 15 based fixed bin(35,0) array level 3 dcl 6-15 ref 360 375 codeptr builtin function dcl 49 ref 604 604 command_query_ 000052 constant entry external dcl 108 ref 538 convert_ipc_code_ 000104 constant entry external dcl 108 ref 601 609 cp_escape_control 1(02) 000332 automatic bit(2) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* current_trans 66 based fixed bin(17,0) level 2 dcl 2-14 set ref 409* egress 000116 automatic label variable dcl 54 set ref 159* 184* 245* 275* 677 error_table_$badopt 000034 external static fixed bin(35,0) dcl 90 set ref 239* 528* error_table_$entlong 000036 external static fixed bin(35,0) dcl 90 ref 303 error_table_$no_info 000044 external static fixed bin(35,0) dcl 90 ref 310 362 370 error_table_$noaccess 000042 external static fixed bin(35,0) dcl 90 ref 310 362 error_table_$noarg 000040 external static fixed bin(35,0) dcl 90 set ref 234* error_table_$notadir 000046 external static fixed bin(35,0) dcl 90 ref 362 370 370 event_call_info based structure level 1 dcl 78 event_channel 000432 automatic fixed bin(71,0) dcl 596 set ref 600* 604* 608* 613 614 event_info_ptr parameter pointer dcl 623 ref 620 625 630 633 expand_pathname_$add_suffix 000106 constant entry external dcl 108 ref 302 314 explanation_len 14 000332 automatic fixed bin(21,0) initial level 2 dcl 1-7 set ref 1-7* explanation_ptr 12 000332 automatic pointer initial level 2 dcl 1-7 set ref 1-7* first_trans 000413 automatic fixed bin(17,0) dcl 395 set ref 401* flags 65 based structure level 2 packed packed unaligned dcl 2-14 force_switch 000122 automatic bit(1) dcl 54 set ref 520* 527* 531 forum_$close_forum 000056 constant entry external dcl 108 ref 506 554 forum_$convert_attendee_idx 000060 constant entry external dcl 108 ref 633 forum_$forum_limits 000066 constant entry external dcl 108 ref 401 forum_$get_forum_path 000062 constant entry external dcl 108 ref 307 316 360 375 forum_$get_message 000064 constant entry external dcl 108 ref 429 forum_$list_forum_acl 000072 constant entry external dcl 108 ref 456 forum_$list_v1_forum_acl 000070 constant entry external dcl 108 ref 459 forum_$open_forum 000074 constant entry external dcl 108 ref 165 192 254 forum_$set_event_channel_idx 000076 constant entry external dcl 108 ref 416 forum_$set_switch_idx 000100 constant entry external dcl 108 ref 431 490 forum_$validate_uid 000102 constant entry external dcl 108 ref 630 forum_arg based char packed unaligned dcl 86 set ref 252* 269* forum_arg_count 000123 automatic fixed bin(17,0) dcl 54 set ref 219* 229* 229 243 forum_arg_len 000124 automatic fixed bin(21,0) dcl 54 set ref 228* 252 252 269 269 forum_arg_ptr 000126 automatic pointer dcl 54 set ref 227* 252 269 forum_dir 000130 automatic char(168) packed unaligned dcl 54 in procedure "forum_requests_$set_forum" set ref 165* 192* 196 254* 255* 255 279 302* 307* 314* 316* 322* 355* 385* 406 456* 459* forum_dir 2 based char(168) level 2 in structure "passport" packed packed unaligned dcl 2-14 in procedure "forum_requests_$set_forum" set ref 406* 555* 555 559* 559 565* forum_et_$blank_forum_name 000014 external static fixed bin(35,0) dcl 90 set ref 339* forum_et_$forum_deleted 000016 external static fixed bin(35,0) dcl 90 ref 555 forum_et_$long_forum_name 000020 external static fixed bin(35,0) dcl 90 set ref 303* 340* forum_et_$no_such_forum 000024 external static fixed bin(35,0) dcl 90 ref 310 362 370 forum_et_$not_in_search_list 000022 external static fixed bin(35,0) dcl 90 set ref 379* forum_et_$old_format 000026 external static fixed bin(35,0) dcl 90 ref 457 forum_flags based structure level 1 dcl 3-8 forum_flags_word 000352 automatic bit(36) dcl 3-6 set ref 401* 411 419 422 422 426 427 428 433 488 forum_idx 1 based fixed bin(17,0) level 2 in structure "passport" dcl 2-14 in procedure "forum_requests_$set_forum" set ref 163* 174* 248* 405* 508 550 554* 630* 633* forum_idx 000202 automatic fixed bin(17,0) dcl 54 in procedure "forum_requests_$set_forum" set ref 158* 165* 185* 192* 195 246* 254* 401* 405 416* 429* 431* 490* 502 504 506* forum_message 2 based structure level 2 dcl 78 forum_name based char packed unaligned dcl 86 in procedure "forum_requests_$set_forum" set ref 255* 342* 372 422* forum_name 54 based char(32) level 2 in structure "passport" packed packed unaligned dcl 2-14 in procedure "forum_requests_$set_forum" set ref 262 407* 555* 559* 564* forum_name_len 64 based fixed bin(17,0) level 2 in structure "passport" dcl 2-14 in procedure "forum_requests_$set_forum" set ref 408* forum_name_len 000213 automatic fixed bin(17,0) dcl 54 in procedure "forum_requests_$set_forum" set ref 197 255 255 281 308* 318* 326* 329 329 329* 329 333 333 335* 335 339 340 342 342 343 344 368* 372 380* 408 422 422 forum_request_tables_$chairman_requests 000030 external static fixed bin(35,0) dcl 90 set ref 419 419 forum_request_tables_$user_requests 000032 external static fixed bin(35,0) dcl 90 set ref 420 420 508 508 562 562 forum_trans_util_$clear_cache 000054 constant entry external dcl 108 ref 552 forum_uid 2 based bit(36) level 3 dcl 78 set ref 630* full_forum_name 000203 automatic char(32) packed unaligned dcl 54 set ref 165* 192* 197 254* 255 280 302* 307* 314* 316* 321* 342 343* 344* 360* 372* 372 375* 386* 407 422 456* 459* get_system_free_area_ 000110 constant entry external dcl 108 ref 351 351 header based structure level 2 dcl 5-7 idx 000100 automatic fixed bin(17,0) dcl 295 set ref 359* 360 360* 374* 375 375* index builtin function dcl 293 ref 301 ioa_ 000112 constant entry external dcl 108 ref 422 426 472 482 489 636 ioa_$nnl 000114 constant entry external dcl 108 ref 430 iox_$control 000116 constant entry external dcl 108 ref 637 iox_$user_output 000050 external static pointer dcl 106 set ref 637* ipc_$create_ev_chn 000120 constant entry external dcl 108 ref 600 ipc_$decl_ev_call_chn 000122 constant entry external dcl 108 ref 604 ipc_$delete_ev_chn 000124 constant entry external dcl 108 ref 608 last_seen_trans 000412 automatic fixed bin(17,0) dcl 395 set ref 401* 409 last_trans 000414 automatic fixed bin(17,0) dcl 395 set ref 401* 422* length builtin function dcl 49 ref 308 308 318 318 326 329 329 329 333 333 335 368 368 380 380 literal_sw 1(05) 000332 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* message 000214 automatic char(256) packed unaligned dcl 54 set ref 429* 430* min builtin function dcl 49 ref 226 modes 10 based bit(36) array level 2 dcl 442 ref 464 n_tables 1 based fixed bin(17,0) level 3 dcl 5-7 ref 578 new_trans 000415 automatic fixed bin(17,0) dcl 395 set ref 401* 422* next_passport_ptr 172 based pointer level 2 dcl 2-14 set ref 640 648* 662 663* 663 666 null builtin function dcl 49 ref 186 262 531 536 627 637 637 658 659 662 1-7 1-7 1-7 346 348 351 351 451 453 456 456 508 576 578 604 604 num_paths 1 based fixed bin(17,0) level 2 dcl 6-15 ref 348 359 374 384 offset 3 based bit(18) level 3 dcl 78 ref 625 633 old_path 000101 automatic bit(1) dcl 295 set ref 327* 336* 343 356 old_pp_ptr 000360 automatic pointer dcl 656 set ref 658* 662 663 padding 1(07) 000332 automatic bit(29) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* passport based structure level 1 dcl 2-14 passport_info_ptr 000350 automatic pointer dcl 2-12 set ref 155* 156 163 174 186* 215* 248 262 262 262 262 262 262 262 405 406 407 408 409 411 413 413 416 422 433 456 459 508 508 519* 531 550 552* 554 555 555 555 559 559 559 564 565 581 627* 627* 630 633* 640 647* 648 649 659* 659* 661 662 663* 666 pathname 17 based char(168) array level 3 packed packed unaligned dcl 6-15 set ref 360* 375* paths 14 based structure array level 2 dcl 6-15 person 000103 automatic fixed bin(17,0) dcl 442 set ref 475* 477* 477 482* 482 print_acl_message 0(03) based bit(1) level 2 packed packed unaligned dcl 3-8 ref 427 print_cm_message 0(02) based bit(1) level 2 packed packed unaligned dcl 3-8 ref 428 433 print_message 65(04) based bit(1) level 3 packed packed unaligned dcl 2-14 set ref 433* project 000104 automatic fixed bin(17,0) dcl 442 set ref 475* 480* 480 482* 482 prompt_after_explanation 1(06) 000332 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* public_channel 72 based fixed bin(71,0) level 2 dcl 2-14 set ref 413 413* 416* query_code 3 000332 automatic fixed bin(35,0) initial level 2 dcl 1-7 set ref 535* 1-7* query_info 000332 automatic structure level 1 dcl 1-7 set ref 538 538 query_info_version_5 constant fixed bin(17,0) initial dcl 1-35 ref 532 question_iocbp 4 000332 automatic pointer initial level 2 dcl 1-7 set ref 536* 1-7* read_only 65(03) based bit(1) level 3 in structure "passport" packed packed unaligned dcl 2-14 in procedure "forum_requests_$set_forum" set ref 411* read_only 0(01) based bit(1) level 2 in structure "forum_flags" packed packed unaligned dcl 3-8 in procedure "forum_requests_$set_forum" set ref 411 422* real_dir 000102 automatic char(168) packed unaligned dcl 295 set ref 307* 316* 322 360* 375* 385 real_entry 000154 automatic char(32) packed unaligned dcl 295 set ref 307* 308 316* 318 321 360* 368 375* 380 386 repeat_time 10 000332 automatic fixed bin(71,0) initial level 2 dcl 1-7 set ref 537* 1-7* request_tables_list based structure level 1 dcl 5-7 set ref 578 return_switch 000314 automatic bit(1) dcl 54 set ref 220* 237* 238* 250 258 reverse builtin function dcl 293 ref 301 rqt_ptr parameter pointer dcl 574 ref 571 582 585 rtl_ptr 000354 automatic pointer dcl 5-18 set ref 576* 578 578 581* 582 585 587* rtrim builtin function dcl 49 ref 301 308 318 326 368 380 search builtin function dcl 49 ref 300 search_paths_$get 000126 constant entry external dcl 108 ref 351 sl_control_default 000000 constant bit(36) initial packed unaligned dcl 7-13 set ref 351* sl_info based structure level 1 dcl 6-15 set ref 348 384 sl_info_p 000356 automatic pointer dcl 6-28 set ref 346* 348 348 351* 359 360 360 374 375 375 384 sl_info_version_1 000046 constant fixed bin(17,0) initial dcl 6-29 set ref 351* ssu_$abort_line 000130 constant entry external dcl 108 ref 234 239 243 255 269 353 526 528 559 ssu_$abort_subsystem 000132 constant entry external dcl 108 ref 543 ssu_$arg_count 000134 constant entry external dcl 108 ref 217 522 ssu_$arg_ptr 000136 constant entry external dcl 108 ref 224 525 ssu_$list_request_tables 000140 constant entry external dcl 108 ref 581 ssu_$print_message 000142 constant entry external dcl 108 ref 262 468 491 555 ssu_$set_request_tables 000144 constant entry external dcl 108 ref 587 ssu_ptr 000316 automatic pointer dcl 54 in procedure "forum_requests_$set_forum" set ref 156* 214* 217* 224* 234* 239* 243* 255* 262* 269* 353* 468* 491* 518* 522* 525* 526* 528* 543* 555* 559* 581* 587* ssu_ptr 170 based pointer level 2 in structure "passport" dcl 2-14 in procedure "forum_requests_$set_forum" ref 156 static_event_channel 000010 internal static fixed bin(71,0) initial dcl 75 set ref 598 598 613* static_passport_list_ptr 000012 internal static pointer initial dcl 75 set ref 627 648 649* 659 662* status 000330 automatic fixed bin(35,0) dcl 54 set ref 165* 166 166* 177 192* 193 193* 207 254* 255 255* 269* 286 302* 303 303 306* 307* 308 310 310 310 310* 314* 315 316* 317 317* 351* 353 353* 358* 359 360* 362 362 362 362 362 362* 368 370 370 370 370 373* 374 375* 379 382* 401* 403 403* 416* 417 417* 429* 430 456* 457 457 459* 461 468* 490* 491 491* 554* 555 555 555* 559* 581* 582 587* 588 588* 600* 601* 602 602* 604* 607 609* 610* 630* 632 633* 635 675* status_code 2 000332 automatic fixed bin(35,0) initial level 2 dcl 1-7 set ref 535* 1-7* string builtin function dcl 49 set ref 533* substr builtin function dcl 49 set ref 197 226 262 262 329 333 342 343* 344* 476 526 suppress_name_sw 1(01) 000332 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* suppress_spacing 1(04) 000332 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* switches 1 000332 automatic structure level 2 dcl 1-7 set ref 533* table_ptr 2 based pointer array level 3 dcl 5-7 set ref 582 585* tables 2 based structure array level 2 dcl 5-7 unprocessed_forum_name 157 based char(32) level 2 dcl 2-14 ref 262 262 262 unprocessed_name_len 167 based fixed bin(17,0) level 2 dcl 2-14 ref 262 262 unprocessed_trans_ptr 102 based pointer level 2 dcl 2-14 ref 262 531 user_name 000320 automatic char(32) packed unaligned dcl 54 set ref 633* 635* 636* version 000332 automatic fixed bin(17,0) level 2 dcl 1-7 set ref 532* want_forum 000331 automatic bit(1) dcl 54 set ref 220* 226 230* 235* xmodes 11 based bit(36) array level 2 dcl 442 set ref 464* 472 477 480 yes_or_no_sw 1 000332 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 534* 1-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSOLUTE_PATH internal static fixed bin(17,0) initial dcl 6-33 HOME_DIR internal static fixed bin(17,0) initial dcl 6-38 INCLUDE_DELETED internal static fixed bin(17,0) initial dcl 4-24 INITIATED_SEGS internal static fixed bin(17,0) initial dcl 6-39 ONLY_DELETED internal static fixed bin(17,0) initial dcl 4-24 PROCESS_DIR internal static fixed bin(17,0) initial dcl 6-37 REFERENCING_DIR internal static fixed bin(17,0) initial dcl 6-35 TFMT_more internal static fixed bin(17,0) initial dcl 2-54 TFMT_none internal static fixed bin(17,0) initial dcl 2-54 TFMT_number internal static fixed bin(17,0) initial dcl 2-54 TFMT_reference internal static fixed bin(17,0) initial dcl 2-54 UNEXPANDED_PATH internal static fixed bin(17,0) initial dcl 6-34 WORKING_DIR internal static fixed bin(17,0) initial dcl 6-36 alloc_subject_length automatic fixed bin(21,0) dcl 4-4 alloc_text_length automatic fixed bin(21,0) dcl 4-3 forum_area based area(1024) dcl 2-46 forum_data_$central_directory external static char(168) packed unaligned dcl 2-49 forum_data_$info_directory external static char(168) packed unaligned dcl 2-49 forum_data_$version_string external static char(8) packed unaligned dcl 2-49 forum_user_trans based structure level 1 dcl 4-7 forum_user_trans_ptr automatic pointer dcl 4-5 message_type internal static fixed bin(17,0) initial dcl 4-22 no_suffix_name based char packed unaligned dcl 2-46 passport_version_2 internal static fixed bin(17,0) initial dcl 2-44 query_info_version_3 internal static fixed bin(17,0) initial dcl 1-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 1-34 query_info_version_6 internal static fixed bin(17,0) initial dcl 1-36 request_tables_list_n_tables automatic fixed bin(17,0) dcl 5-20 sl_control automatic bit(36) packed unaligned dcl 7-12 sl_control_s based structure level 1 packed packed unaligned dcl 7-3 sl_info_num_paths automatic fixed bin(17,0) dcl 6-27 user_trans_type internal static fixed bin(17,0) initial dcl 4-21 NAMES DECLARED BY EXPLICIT CONTEXT. FIND_MEETING_EXIT 001657 constant label dcl 286 ref 275 GOTO_EXIT 001530 constant label dcl 269 ref 245 OPEN_MEETING_EXIT 000751 constant label dcl 202 ref 184 PATHERR 002557 constant label dcl 303 ref 315 PUNT 004365 constant label dcl 468 ref 461 SET_MEETING_EXIT 000554 constant label dcl 174 ref 159 V1ENT 003462 constant label dcl 373 ref 356 V1PATH 002671 constant label dcl 314 ref 301 clean_up_goto 004700 constant entry internal dcl 497 ref 163 174 190 202 248 close_old_forum 004750 constant entry internal dcl 547 ref 250 258 error 005414 constant entry internal dcl 670 ref 166 193 303 306 310 317 339 340 362 379 382 403 417 588 602 610 find_forum_path 002424 constant entry internal dcl 290 ref 161 188 252 277 forum_requests_$add_passport 002326 constant entry external dcl 644 forum_requests_$find_forum 001570 constant entry external dcl 272 forum_requests_$goto_request 001007 constant entry external dcl 211 forum_requests_$open_forum 000573 constant entry external dcl 181 forum_requests_$quit_request 001664 constant entry external dcl 515 forum_requests_$remove_passport 002351 constant entry external dcl 653 forum_requests_$set_forum 000425 constant entry external dcl 37 forum_requests_$wakeup_handler 002142 constant entry external dcl 620 ref 604 604 get_event_channel 005272 constant entry internal dcl 593 ref 413 make_forum_current 003621 constant entry internal dcl 392 ref 168 260 print_acl_message 004200 constant entry internal dcl 439 ref 427 set_request_tables 005144 constant entry internal dcl 571 ref 419 420 508 562 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6710 7056 5640 6720 Length 7552 5640 146 460 1047 4 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME forum_requests_$set_forum 470 external procedure is an external procedure. on unit on line 163 70 on unit on unit on line 190 70 on unit on unit on line 248 70 on unit find_forum_path 192 internal procedure enables or reverts conditions. on unit on line 347 64 on unit make_forum_current internal procedure shares stack frame of external procedure forum_requests_$set_forum. print_acl_message 150 internal procedure enables or reverts conditions. on unit on line 452 64 on unit clean_up_goto 74 internal procedure is called by several nonquick procedures. close_old_forum internal procedure shares stack frame of external procedure forum_requests_$set_forum. set_request_tables 82 internal procedure enables or reverts conditions. on unit on line 577 64 on unit get_event_channel internal procedure shares stack frame of external procedure forum_requests_$set_forum. error 64 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 static_event_channel forum_requests_$set_forum 000012 static_passport_list_ptr forum_requests_$set_forum STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME find_forum_path 000100 idx find_forum_path 000101 old_path find_forum_path 000102 real_dir find_forum_path 000154 real_entry find_forum_path forum_requests_$set_forum 000106 answer forum_requests_$set_forum 000111 arg_count forum_requests_$set_forum 000112 arg_idx forum_requests_$set_forum 000113 arg_len forum_requests_$set_forum 000114 arg_ptr forum_requests_$set_forum 000116 egress forum_requests_$set_forum 000122 force_switch forum_requests_$set_forum 000123 forum_arg_count forum_requests_$set_forum 000124 forum_arg_len forum_requests_$set_forum 000126 forum_arg_ptr forum_requests_$set_forum 000130 forum_dir forum_requests_$set_forum 000202 forum_idx forum_requests_$set_forum 000203 full_forum_name forum_requests_$set_forum 000213 forum_name_len forum_requests_$set_forum 000214 message forum_requests_$set_forum 000314 return_switch forum_requests_$set_forum 000316 ssu_ptr forum_requests_$set_forum 000320 user_name forum_requests_$set_forum 000330 status forum_requests_$set_forum 000331 want_forum forum_requests_$set_forum 000332 query_info forum_requests_$set_forum 000350 passport_info_ptr forum_requests_$set_forum 000352 forum_flags_word forum_requests_$set_forum 000354 rtl_ptr forum_requests_$set_forum 000356 sl_info_p forum_requests_$set_forum 000360 old_pp_ptr forum_requests_$set_forum 000412 last_seen_trans make_forum_current 000413 first_trans make_forum_current 000414 last_trans make_forum_current 000415 new_trans make_forum_current 000432 event_channel get_event_channel print_acl_message 000100 acl_ptr print_acl_message 000102 acl_count print_acl_message 000103 person print_acl_message 000104 project print_acl_message THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return_mac tra_ext_2 enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc reverse_cs set_chars_eis op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. command_query_ convert_ipc_code_ expand_pathname_$add_suffix forum_$close_forum forum_$convert_attendee_idx forum_$forum_limits forum_$get_forum_path forum_$get_message forum_$list_forum_acl forum_$list_v1_forum_acl forum_$open_forum forum_$set_event_channel_idx forum_$set_switch_idx forum_$validate_uid forum_trans_util_$clear_cache get_system_free_area_ ioa_ ioa_$nnl iox_$control ipc_$create_ev_chn ipc_$decl_ev_call_chn ipc_$delete_ev_chn search_paths_$get ssu_$abort_line ssu_$abort_subsystem ssu_$arg_count ssu_$arg_ptr ssu_$list_request_tables ssu_$print_message ssu_$set_request_tables THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$entlong error_table_$no_info error_table_$noaccess error_table_$noarg error_table_$notadir forum_et_$blank_forum_name forum_et_$forum_deleted forum_et_$long_forum_name forum_et_$no_such_forum forum_et_$not_in_search_list forum_et_$old_format forum_request_tables_$chairman_requests forum_request_tables_$user_requests iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 7 000367 37 000421 155 000445 156 000450 158 000452 159 000453 161 000456 163 000466 165 000514 166 000541 168 000551 170 000552 172 000553 174 000554 177 000563 179 000565 181 000566 184 000622 185 000625 186 000626 188 000630 190 000640 192 000666 193 000713 195 000723 196 000726 197 000736 198 000747 200 000750 202 000751 205 000760 206 000770 207 001000 209 001002 211 001003 214 001020 215 001024 217 001027 219 001040 220 001041 222 001043 224 001053 226 001070 227 001104 228 001106 229 001110 230 001111 231 001112 233 001113 234 001124 235 001164 236 001166 237 001167 238 001202 239 001214 241 001246 243 001250 245 001300 246 001303 248 001304 250 001332 252 001335 254 001350 255 001375 258 001451 260 001454 262 001455 267 001526 269 001530 272 001562 275 001617 277 001622 279 001632 280 001642 281 001652 283 001655 284 001656 286 001657 288 001661 515 001662 518 001675 519 001701 520 001704 522 001705 524 001716 525 001725 526 001742 527 001774 528 002011 529 002035 531 002037 532 002046 533 002050 534 002051 535 002053 536 002055 537 002060 538 002062 540 002120 543 002125 545 002136 620 002137 625 002150 627 002155 630 002164 632 002203 633 002205 635 002240 636 002245 637 002265 638 002316 640 002317 642 002323 644 002324 647 002337 648 002342 649 002345 650 002346 653 002347 658 002362 659 002364 661 002374 662 002400 663 002411 664 002415 666 002416 667 002422 290 002423 300 002437 301 002452 302 002515 303 002554 306 002574 307 002603 308 002633 310 002652 314 002671 315 002726 316 002731 317 002760 318 002772 321 003006 322 003012 323 003015 326 003016 327 003032 329 003033 333 003050 335 003064 336 003066 339 003070 340 003102 342 003116 343 003125 344 003135 346 003142 347 003144 348 003160 349 003174 351 003175 353 003254 355 003303 356 003307 358 003311 359 003313 360 003326 362 003367 366 003412 368 003414 370 003433 372 003445 373 003462 374 003465 375 003500 378 003541 379 003543 380 003556 381 003572 382 003573 384 003602 385 003611 386 003615 388 003620 392 003621 401 003622 403 003647 405 003657 406 003662 407 003665 408 003670 409 003672 411 003674 413 003701 416 003711 417 003725 419 003735 420 003752 422 003763 426 004032 427 004051 428 004060 429 004063 430 004104 431 004125 433 004165 435 004176 439 004177 451 004205 452 004207 453 004223 454 004234 456 004235 457 004300 459 004306 461 004342 463 004345 464 004356 465 004362 466 004364 468 004365 469 004411 472 004412 475 004443 476 004445 477 004465 478 004471 479 004473 480 004504 481 004517 482 004521 486 004563 488 004567 489 004573 490 004607 491 004647 494 004676 497 004677 502 004705 504 004710 506 004714 508 004725 511 004747 547 004750 550 004751 552 004755 554 004764 555 004776 559 005053 562 005122 564 005133 565 005137 567 005142 571 005143 576 005151 577 005154 578 005170 579 005204 581 005205 582 005226 585 005237 587 005244 588 005257 590 005271 593 005272 598 005274 600 005301 601 005311 602 005320 604 005330 607 005354 608 005356 609 005370 610 005377 613 005405 614 005410 670 005413 675 005421 677 005425 ----------------------------------------------------------- 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