COMPILATION LISTING OF SEGMENT forum Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1144.10_Tue_mdt Options: optimize map 1 /****^ *************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1986 * 4* * * 5* * Copyright (c) 1982 by Massachusetts Institute of Technology * 6* * * 7* *************************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(86-07-29,Pattin), approve(86-07-29,MCR7354), 13* audit(86-08-07,Margolin), install(86-08-16,MR12.0-1128): 14* Added -tfmt control argument, changed handling of area to make it 15* non-extensible. Use goto request to enter initial meeting. 16* END HISTORY COMMENTS */ 17 18 19 forum: 20 procedure (); 21 22 /* Jay Pattin modified from continuum 1/82 23* Jay Pattin 03/07/82 added enter_first_trans 24* Jay Pattin 9/29/82 added -start_up */ 25 26 dcl (substr, addr, codeptr, null, maxlength, min, string) 27 builtin; 28 29 declare cleanup condition; 30 31 declare abbrev_switch bit (1) aligned, 32 arg_count fixed bin, 33 arg_idx fixed bin, 34 arg_len fixed bin (21), 35 arg_ptr ptr, 36 argmap_ptr ptr, 37 first_trans bit (1) aligned, 38 list bit (1) aligned, 39 list_arg fixed bin, 40 profile_dir char (168), 41 profile_entry char (32), 42 profile_ptr ptr, 43 prompt char (64) varying, 44 quit_switch bit (1) aligned, 45 request char (256), 46 request_arg fixed bin, 47 saved_state fixed bin, 48 start_up_switch bit (1) aligned, 49 state fixed bin, 50 status fixed bin (35); 51 52 declare PROMPT_ fixed bin static options (constant) initial (1), /* avoid name conflict with ssu_prompt_modes */ 53 REQUEST_LINE fixed bin static options (constant) initial (2), 54 LINE_LENGTH fixed bin static options (constant) initial (3), 55 MEETING fixed bin static options (constant) initial (4), 56 DONE fixed bin static options (constant) initial (5), 57 PROFILE fixed bin static options (constant) initial (6), 58 LIST fixed bin static options (constant) initial (7), 59 INPUT_LENGTH fixed bin static options (constant) initial (8), 60 OUTPUT_LENGTH fixed bin static options (constant) initial (9), 61 TRAILER_FORMAT fixed bin static options (constant) init (10), 62 whoami char (32) static options (constant) initial ("forum"); 63 64 declare 1 auto_area_info aligned like area_info; 65 declare arg char (arg_len) based (arg_ptr), 66 argmap bit (arg_count) based (argmap_ptr), 67 system_free_area area based (get_system_free_area_ ()); 68 69 declare iox_$user_input ptr external; 70 71 declare ( 72 forum_request_tables_$user_requests, 73 error_table_$bad_arg, 74 error_table_$badopt, 75 error_table_$bad_conversion, 76 error_table_$noarg, 77 error_table_$noentry, 78 ssu_request_tables_$standard_requests, 79 ssu_et_$exec_com_aborted, 80 ssu_et_$program_interrupt, 81 ssu_et_$request_line_aborted, 82 ssu_et_$subsystem_aborted 83 ) fixed binary (35) external; 84 85 declare com_err_ entry () options (variable), 86 com_err_$suppress_name entry () options (variable), 87 forum_requests_$add_passport entry (ptr), 88 forum_requests_$remove_passport 89 entry (ptr), 90 forum_requests_$set_forum 91 entry (ptr, char (*), fixed bin (35)), 92 forum_$close_forum entry (fixed bin, fixed bin (35)), 93 cu_$arg_count entry (fixed bin, fixed bin (35)), 94 cu_$arg_list_ptr entry () returns (ptr), 95 cu_$arg_ptr entry (fixed bin, pointer, fixed bin (21), fixed binary (35)), 96 cu_$generate_call entry (entry, ptr), 97 cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)), 98 expand_pathname_$add_suffix entry (char(*), char(*), char(*), char(*), fixed bin(35)), 99 get_system_free_area_ entry () returns (ptr), 100 hcs_$initiate entry (char(*), char(*), char(*), fixed bin(1), fixed bin(2), ptr, fixed bin(35)), 101 requote_string_ entry (char (*)) returns (char (*)), 102 ssu_$add_request_table entry (ptr, ptr, fixed bin, fixed bin (35)), 103 ssu_$create_invocation entry (char (*), char (*), ptr, ptr, char (*), ptr, fixed binary (35)), 104 ssu_$destroy_invocation entry (ptr), 105 ssu_$execute_line entry (ptr, ptr, fixed bin (21), fixed bin (35)), 106 ssu_$execute_start_up entry options (variable), 107 ssu_$execute_string entry (ptr, char (*), fixed bin (35)), 108 ssu_$get_area entry (ptr, ptr, char (*), ptr), 109 ssu_$listen entry (ptr, ptr, fixed bin (35)), 110 ssu_$print_message entry options (variable), 111 ssu_$record_usage entry (ptr, ptr, fixed bin (35)), 112 ssu_$set_abbrev_info entry (ptr, ptr, ptr, bit (1) aligned), 113 ssu_$set_ec_search_list entry (ptr, char (32)), 114 ssu_$set_ec_suffix entry (ptr, char (32)), 115 ssu_$set_prompt entry (ptr, char (64) varying), 116 ssu_$set_prompt_mode entry (ptr, bit (*)); 117 1 1 /* START OF: forum_passport.incl.pl1 * * * * * * * * * * * * * * * * */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-07-30,Pattin), approve(86-07-30,MCR7354), 1 7* audit(86-08-03,Margolin), install(86-08-16,MR12.0-1128): 1 8* Added trailer_format. 1 9* END HISTORY COMMENTS */ 1 10 1 11 1 12 declare passport_info_ptr ptr; 1 13 1 14 declare 1 passport aligned based (passport_info_ptr), 1 15 2 version fixed bin, /* 2 */ 1 16 2 forum_idx fixed bin, /* current forum */ 1 17 2 forum_dir char (168) unal, /* where forum lives */ 1 18 2 forum_name char (32) unal, /* Current forum I'm at */ 1 19 2 forum_name_len fixed bin, /* length of forum_name without suffix */ 1 20 2 flags unal, 1 21 3 brief_sw bit (1) unal, /* specified at invocation */ 1 22 3 talk_fill bit (1) unal, /* God knows */ 1 23 3 print_fill bit (1) unal, /* God doesn't know */ 1 24 3 read_only bit (1) unal, 1 25 3 print_message bit (1) unal, /* Print chairman message on talk/reply */ 1 26 3 auto_write bit (1) unal, 1 27 3 mbz bit (30) unal, /* Future expansion */ 1 28 2 current_trans fixed bin, /* current transaction number */ 1 29 2 input_fill_width fixed bin, /* line length used for input filling */ 1 30 2 output_fill_width fixed bin, /* line length used for output filling */ 1 31 2 public_channel fixed bin (71), /* My transaction wakeup channel. */ 1 32 2 area_ptr ptr, /* used for random temporary storage */ 1 33 2 first_trans_ptr ptr, /* ptrs to linked list of transactions copied to */ 1 34 2 last_trans_ptr ptr, /* user ring */ 1 35 2 unprocessed_trans_ptr ptr, /* If this isn't null, we got one pending. */ 1 36 2 unprocessed_reply_trans fixed bin, /* If nonzero, unprocessed trans is a reply. */ 1 37 2 unprocessed_forum_dir char (168), /* Directory containing meeting unproc is for. */ 1 38 2 unprocessed_forum_name char (32), /* Name of meeting unproc is for */ 1 39 2 unprocessed_name_len fixed bin, /* length (w/o suffix) of Name of meeting unproc is for */ 1 40 2 ssu_ptr ptr, /* Department of Redundancy Department. */ 1 41 2 next_passport_ptr ptr, /* list of all invocations */ 1 42 2 trailer_format fixed bin; 1 43 1 44 declare passport_version_2 fixed bin static options (constant) initial (2); 1 45 1 46 declare forum_area area based (passport.area_ptr), 1 47 no_suffix_name char (passport.forum_name_len) based (addr (passport.forum_name)); 1 48 1 49 declare forum_data_$version_string character (8) external, 1 50 forum_data_$central_directory 1 51 character (168) unaligned external, 1 52 forum_data_$info_directory character (168) unaligned external; 1 53 1 54 declare (TFMT_none init (0), 1 55 TFMT_number init (1), 1 56 TFMT_more init (2), 1 57 TFMT_reference init (3)) 1 58 fixed bin static options (constant); 1 59 1 60 /* END OF: forum_passport.incl.pl1 * * * * * * * * * * * * * * * * */ 118 119 2 1 /* BEGIN INCLUDE FILE ... ssu_prompt_modes.incl.pl1 */ 2 2 /* Created: 15 February 1982 by G. Palter */ 2 3 2 4 /* Values for use in calls to ssu_$set_prompt_mode to control prompting by the subsystem listener */ 2 5 2 6 dcl PROMPT bit (1) static options (constant) initial ("0"b); 2 7 dcl DONT_PROMPT bit (1) static options (constant) initial ("1"b); 2 8 2 9 dcl PROMPT_AFTER_NULL_LINES bit (2) static options (constant) initial ("01"b); 2 10 dcl DONT_PROMPT_AFTER_NULL_LINES bit (2) static options (constant) initial ("00"b); 2 11 2 12 dcl PROMPT_IF_TYPEAHEAD bit (3) static options (constant) initial ("000"b); 2 13 dcl DONT_PROMPT_IF_TYPEAHEAD bit (3) static options (constant) initial ("001"b); 2 14 2 15 /* For example: 2 16* call ssu_$set_prompt_mode (sci_ptr, PROMPT | DONT_PROMPT_AFTER_NULL_LINES | DONT_PROMPT_IF_TYPEAHEAD); */ 2 17 2 18 /* END INCLUDE FILE ... ssu_prompt_modes.incl.pl1 */ 120 121 3 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 3 2 3 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 3 4 3 5 dcl area_infop ptr; 3 6 3 7 dcl 1 area_info aligned based (area_infop), 3 8 2 version fixed bin, /* version number for this structure is 1 */ 3 9 2 control aligned like area_control, /* control bits for the area */ 3 10 2 owner char (32) unal, /* creator of the area */ 3 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 3 12 2 size fixed bin (18), /* size of the area in words */ 3 13 2 version_of_area fixed bin, /* version of area (returned only) */ 3 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 3 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 3 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 3 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 3 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 3 19 3 20 dcl 1 area_control aligned based, 3 21 2 extend bit (1) unal, /* says area is extensible */ 3 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 3 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 3 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 3 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 3 26 2 system bit (1) unal, /* says area is managed by system */ 3 27 2 pad bit (30) unal; 3 28 3 29 /* END INCLUDE FILE area_info.incl.pl1 */ 122 123 124 passport_info_ptr = null (); 125 on cleanup call clean_things_up (); 126 127 first_trans = "0"b; 128 start_up_switch = "1"b; 129 call allocate_passport (); 130 131 call cu_$arg_count (arg_count, status); 132 if status ^= 0 then do; 133 call com_err_ (status, whoami); 134 return; 135 end; 136 137 allocate argmap in (system_free_area); 138 139 state = MEETING; 140 do arg_idx = 1 to arg_count; 141 call cu_$arg_ptr (arg_idx, arg_ptr, arg_len, status); 142 143 if state = LIST then do; 144 if substr (arg, 1, 1) = "-" then goto CTL_ARG; 145 list_arg = arg_idx; 146 state = saved_state; 147 end; 148 149 else if state = PROMPT_ 150 then do; 151 if arg_len > maxlength (prompt) 152 then call error (0, whoami, "The prompt may be a maximum of ^d characters.", 153 maxlength (prompt)); 154 prompt = arg; 155 state = saved_state; 156 end; 157 158 else if state = PROFILE then do; 159 call get_profile (arg); 160 abbrev_switch = "1"b; 161 state = saved_state; 162 end; 163 164 else if state = REQUEST_LINE then do; 165 request_arg = arg_idx; 166 state = saved_state; 167 end; 168 169 else if state = LINE_LENGTH 170 then do; 171 passport.input_fill_width, passport.output_fill_width = cv_dec_check_ (arg, status); 172 if status ^= 0 then call error (error_table_$bad_conversion, whoami, "^a", arg); 173 state = saved_state; 174 end; 175 176 else if state = INPUT_LENGTH 177 then do; 178 passport.input_fill_width = cv_dec_check_ (arg, status); 179 if status ^= 0 then call error (error_table_$bad_conversion, whoami, "^a", arg); 180 state = saved_state; 181 end; 182 183 else if state = OUTPUT_LENGTH 184 then do; 185 passport.output_fill_width = cv_dec_check_ (arg, status); 186 if status ^= 0 then call error (error_table_$bad_conversion, whoami, "^a", arg); 187 state = saved_state; 188 end; 189 190 else if state = TRAILER_FORMAT then do; 191 if arg = "none" then passport.trailer_format = TFMT_none; 192 else if arg = "number" | arg = "nb" then passport.trailer_format = TFMT_number; 193 else if arg = "more" then passport.trailer_format = TFMT_more; 194 else if arg = "references" | arg = "refs" then passport.trailer_format = TFMT_reference; 195 else call error (error_table_$bad_arg, whoami, "Invalid trailer format: ^a.", arg); 196 state = saved_state; 197 end; 198 199 else if substr (arg, 1, min (1, arg_count)) = "-" then 200 CTL_ARG: if arg = "-abbrev" | arg = "-ab" then abbrev_switch = "1"b; 201 else if arg = "-no_abbrev" | arg = "-nab" then abbrev_switch = "0"b; 202 else if arg = "-auto_write" then passport.auto_write = "1"b; 203 else if arg = "-no_auto_write" then passport.auto_write = "0"b; 204 else if arg = "-brief" | arg = "-bf" then passport.brief_sw = "1"b; 205 else if arg = "-list" | arg = "-ls" then do; 206 call want_arg (LIST); 207 list = "1"b; 208 end; 209 else if arg = "-long" | arg = "-lg" then passport.brief_sw = "0"b; 210 else if arg = "-meeting" | arg = "-mtg" then do; 211 if argmap ^= ""b then call error (0, whoami, "Only one meeting may be specified."); 212 call want_arg (MEETING); 213 end; 214 else if arg = "-no_start_up" | arg = "-ns" | arg = "-nsu" then start_up_switch = "0"b; 215 else if arg = "-start_up" | arg = "-su" then start_up_switch = "1"b; 216 else if arg = "-profile" | arg = "-pf" then call want_arg (PROFILE); 217 else if arg = "-prompt" then call want_arg (PROMPT_); 218 else if arg = "-no_prompt" then prompt = ""; 219 else if arg = "-quit" then quit_switch = "1"b; 220 else if arg = "-rq" | arg = "-request" then call want_arg (REQUEST_LINE); 221 else if arg = "-ll" | arg = "-line_length" then call want_arg (LINE_LENGTH); 222 else if arg = "-ill" | arg = "-input_line_length" then call want_arg (INPUT_LENGTH); 223 else if arg = "-oll" | arg = "-output_line_length" then call want_arg (OUTPUT_LENGTH); 224 else if arg = "-output_fill" | arg = "-ofi" then passport.print_fill = "1"b; 225 else if arg = "-no_output_fill" | arg = "-nof" then passport.print_fill = "0"b; 226 else if arg = "-input_fill" | arg = "-ifi" then passport.talk_fill = "1"b; 227 else if arg = "-no_input_fill" | arg = "-nif" then passport.talk_fill = "0"b; 228 else if arg = "-trailer_format" | arg = "-tfmt" then call want_arg (TRAILER_FORMAT); 229 230 else call error (error_table_$badopt, whoami, "^a", arg); 231 232 else if state = MEETING 233 then do; 234 substr (argmap, arg_idx, 1) = "1"b; 235 state = DONE; 236 end; 237 238 else do; 239 call com_err_$suppress_name (0, whoami, "Usage: forum {meeting_name} {-control_args}"); 240 return; 241 end; 242 end; 243 244 if state ^= LIST & state ^= MEETING & state ^= DONE then 245 call error (error_table_$noarg, whoami, "Following ""^a"".", arg); 246 247 if argmap = ""b & list then call error (0, whoami, "-list may not be specified if no meeting_name is given."); 248 goto CREATE_SUBSYSTEM; 249 250 forum$enter_first_trans: 251 entry (P_forum); 252 253 declare P_forum char (*); 254 255 first_trans = "1"b; 256 start_up_switch = "0"b; 257 258 passport_info_ptr = null (); 259 on cleanup call clean_things_up (); 260 261 call allocate_passport (); 262 263 CREATE_SUBSYSTEM: 264 call ssu_$create_invocation (whoami, forum_data_$version_string, passport_info_ptr, 265 addr (forum_request_tables_$user_requests), forum_data_$info_directory, passport.ssu_ptr, status); 266 if status ^= 0 then call error (status, whoami, "Creating subsystem invocation."); 267 268 call ssu_$add_request_table (passport.ssu_ptr, addr (ssu_request_tables_$standard_requests), 2, status); 269 if status ^= 0 then call error (status, whoami, "Adding standard request table."); 270 271 call ssu_$record_usage (passport.ssu_ptr, codeptr (forum), (0)); 272 273 call ssu_$set_prompt (passport.ssu_ptr, prompt); 274 275 call ssu_$set_prompt_mode (passport.ssu_ptr, PROMPT); 276 call ssu_$set_abbrev_info (passport.ssu_ptr, profile_ptr, profile_ptr, abbrev_switch); 277 call ssu_$set_ec_suffix (passport.ssu_ptr, "fmec"); 278 call ssu_$set_ec_search_list (passport.ssu_ptr, "exec_com"); 279 280 unspec (auto_area_info) = ""b; 281 auto_area_info.version = area_info_version_1; 282 auto_area_info.zero_on_free = "1"b; 283 284 call ssu_$get_area (passport.ssu_ptr, addr (auto_area_info), "forum_area", passport.area_ptr); 285 286 if start_up_switch then do; 287 call ssu_$execute_start_up (passport.ssu_ptr, status); 288 if status ^= 0 then 289 if status ^= error_table_$noentry & status ^= ssu_et_$exec_com_aborted then do; 290 if status = ssu_et_$subsystem_aborted then goto MAIN_RETURN; 291 else call ssu_$print_message (ssu_ptr, status, "Executing start_up."); 292 end; 293 end; 294 295 if ^first_trans then do; 296 do arg_idx = 1 to arg_count; 297 if substr (argmap, arg_idx, 1) then do; 298 call cu_$arg_ptr (arg_idx, arg_ptr, arg_len, (0)); 299 request = "goto " || requote_string_ (arg); 300 call ssu_$execute_line (ssu_ptr, addr (request), length (rtrim (request)), status); 301 if status = ssu_et_$request_line_aborted | status = ssu_et_$subsystem_aborted then goto MAIN_RETURN; 302 else if status ^= 0 & status ^= ssu_et_$program_interrupt then 303 call error (status, whoami, "Going to the ^a meeting.", arg); 304 end; 305 end; 306 free argmap; 307 308 if list then do; 309 if list_arg > 0 then do; 310 call cu_$arg_ptr (list_arg, arg_ptr, arg_len, (0)); 311 call ssu_$execute_string (passport.ssu_ptr, "list " || arg, status); 312 end; 313 else call ssu_$execute_string (passport.ssu_ptr, "list", status); 314 if status ^= 0 then 315 if status ^= ssu_et_$request_line_aborted & status ^= ssu_et_$program_interrupt then 316 call error (status, whoami, "Listing transactions."); 317 end; 318 319 if request_arg > 0 then do; 320 call cu_$arg_ptr (request_arg, arg_ptr, arg_len, (0)); 321 call ssu_$execute_string (passport.ssu_ptr, arg, status); 322 if status = ssu_et_$subsystem_aborted then goto MAIN_RETURN; 323 if status = ssu_et_$request_line_aborted | status = ssu_et_$program_interrupt then; 324 else if status ^= 0 then 325 call error (status, whoami, "Executing initial request."); 326 end; 327 end; 328 329 else do; 330 passport.brief_sw = "1"b; 331 call forum_requests_$set_forum (passport_info_ptr, P_forum, status); 332 if status ^= 0 then call error (status, whoami, "Unable to access the ""^a"" meeting.", P_forum); 333 passport.print_message = "0"b; 334 call ssu_$execute_string (passport.ssu_ptr, "talk -sj ""Reason for this meeting""", (0)); 335 if passport.unprocessed_trans_ptr = null () then goto MAIN_RETURN; 336 end; 337 338 339 if ^quit_switch then do; 340 call ssu_$listen (passport.ssu_ptr, iox_$user_input, status); 341 if status ^= 0 & status ^= ssu_et_$subsystem_aborted then 342 call error (status, whoami, "Unable to call listener."); 343 end; 344 345 MAIN_RETURN: 346 call clean_things_up (); 347 348 return; 349 350 want_arg: 351 procedure (new_state); 352 353 declare new_state fixed bin; 354 355 saved_state = state; 356 state = new_state; 357 358 return; 359 360 end want_arg; 361 362 get_profile: 363 procedure (path); 364 365 dcl path char (*); 366 367 call expand_pathname_$add_suffix (path, "profile", profile_dir, profile_entry, status); 368 if status ^= 0 then do; 369 BAD_PROFILE: 370 call com_err_ (status, whoami, "^a", path); 371 goto MAIN_RETURN; 372 end; 373 374 call hcs_$initiate (profile_dir, profile_entry, "", 0, 0, profile_ptr, status); 375 if profile_ptr = null () then do; 376 if status = error_table_$noentry then do; 377 call com_err_ (status, whoami, "^a>^a does not exist.", profile_dir, profile_entry); 378 goto MAIN_RETURN; 379 end; 380 else goto BAD_PROFILE; 381 end; 382 return; 383 end get_profile; 384 385 allocate_passport: 386 procedure (); 387 388 abbrev_switch, list, quit_switch = "0"b; 389 request_arg, list_arg = 0; 390 prompt = "^/forum^[ (^d)^]:^2x"; 391 argmap_ptr, profile_ptr = null (); 392 393 allocate passport in (system_free_area); 394 passport.version = passport_version_2; 395 passport.forum_dir = ""; 396 passport.forum_name = ""; 397 passport.input_fill_width = 0; 398 passport.output_fill_width = 0; 399 string (passport.flags) = "0"b; 400 passport.talk_fill = "1"b; 401 passport.public_channel = 0; 402 passport.first_trans_ptr, passport.last_trans_ptr = null (); 403 passport.unprocessed_trans_ptr = null (); 404 passport.ssu_ptr = null (); 405 passport.trailer_format = TFMT_reference; 406 407 call forum_requests_$add_passport (passport_info_ptr); 408 return; 409 end allocate_passport; 410 411 clean_things_up: 412 procedure (); 413 414 if argmap_ptr ^= null () then free argmap; 415 416 if passport_info_ptr ^= null () then do; 417 if passport.forum_idx ^= 0 then call forum_$close_forum (passport.forum_idx, (0)); 418 call forum_requests_$remove_passport (passport_info_ptr); 419 420 if passport.ssu_ptr ^= null () then call ssu_$destroy_invocation (passport.ssu_ptr); 421 free passport; 422 end; 423 424 return; 425 426 end clean_things_up; 427 428 429 error: 430 procedure () options (variable); 431 432 call cu_$generate_call (com_err_, cu_$arg_list_ptr ()); 433 434 go to MAIN_RETURN; 435 436 end error; 437 438 end forum; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1144.1 forum.pl1 >udd>sm>ds>w>ml>forum.pl1 118 1 08/16/86 1638.0 forum_passport.incl.pl1 >ldd>incl>forum_passport.incl.pl1 120 2 04/13/82 1720.2 ssu_prompt_modes.incl.pl1 >ldd>incl>ssu_prompt_modes.incl.pl1 122 3 06/11/76 1143.4 area_info.incl.pl1 >ldd>incl>area_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. DONE constant fixed bin(17,0) initial dcl 52 ref 235 244 INPUT_LENGTH 000011 constant fixed bin(17,0) initial dcl 52 set ref 176 222* LINE_LENGTH 000015 constant fixed bin(17,0) initial dcl 52 set ref 169 221* LIST 000012 constant fixed bin(17,0) initial dcl 52 set ref 143 206* 244 MEETING 000014 constant fixed bin(17,0) initial dcl 52 set ref 139 212* 232 244 OUTPUT_LENGTH constant fixed bin(17,0) initial dcl 52 set ref 183 223* PROFILE 000013 constant fixed bin(17,0) initial dcl 52 set ref 158 216* PROMPT 000077 constant bit(1) initial packed unaligned dcl 2-6 set ref 275* PROMPT_ constant fixed bin(17,0) initial dcl 52 set ref 149 217* P_forum parameter char packed unaligned dcl 253 set ref 250 331* 332* REQUEST_LINE constant fixed bin(17,0) initial dcl 52 set ref 164 220* TFMT_more constant fixed bin(17,0) initial dcl 1-54 ref 193 TFMT_none constant fixed bin(17,0) initial dcl 1-54 ref 191 TFMT_number constant fixed bin(17,0) initial dcl 1-54 ref 192 TFMT_reference constant fixed bin(17,0) initial dcl 1-54 ref 194 405 TRAILER_FORMAT 000010 constant fixed bin(17,0) initial dcl 52 set ref 190 228* abbrev_switch 000106 automatic bit(1) dcl 31 set ref 160* 199* 201* 276* 388* addr builtin function dcl 26 ref 263 263 268 268 284 284 300 300 area_control based structure level 1 dcl 3-20 area_info based structure level 1 dcl 3-7 area_info_version_1 constant fixed bin(17,0) initial dcl 3-3 ref 281 area_ptr 74 based pointer level 2 dcl 1-14 set ref 284* arg based char packed unaligned dcl 65 set ref 144 154 159* 171* 172* 178* 179* 185* 186* 191 192 192 193 194 194 195* 199 199 199 201 201 202 203 204 204 205 205 209 209 210 210 214 214 214 215 215 216 216 217 218 219 220 220 221 221 222 222 223 223 224 224 225 225 226 226 227 227 228 228 230* 244* 299* 302* 311 321* arg_count 000107 automatic fixed bin(17,0) dcl 31 set ref 131* 137 137 140 199 211 234 247 296 297 306 306 414 414 arg_idx 000110 automatic fixed bin(17,0) dcl 31 set ref 140* 141* 145 165 234* 296* 297 298* arg_len 000111 automatic fixed bin(21,0) dcl 31 set ref 141* 144 151 154 159 159 171 171 172 172 178 178 179 179 185 185 186 186 191 192 192 193 194 194 195 195 199 199 199 201 201 202 203 204 204 205 205 209 209 210 210 214 214 214 215 215 216 216 217 218 219 220 220 221 221 222 222 223 223 224 224 225 225 226 226 227 227 228 228 230 230 244 244 298* 299 299 302 302 310* 311 320* 321 321 arg_ptr 000112 automatic pointer dcl 31 set ref 141* 144 154 159 171 172 178 179 185 186 191 192 192 193 194 194 195 199 199 199 201 201 202 203 204 204 205 205 209 209 210 210 214 214 214 215 215 216 216 217 218 219 220 220 221 221 222 222 223 223 224 224 225 225 226 226 227 227 228 228 230 244 298* 299 302 310* 311 320* 321 argmap based bit packed unaligned dcl 65 set ref 137 211 234* 247 297 306 414 argmap_ptr 000114 automatic pointer dcl 31 set ref 137* 211 234 247 297 306 391* 414 414 auto_area_info 000336 automatic structure level 1 dcl 64 set ref 280* 284 284 auto_write 65(05) based bit(1) level 3 packed packed unaligned dcl 1-14 set ref 202* 203* brief_sw 65 based bit(1) level 3 packed packed unaligned dcl 1-14 set ref 204* 209* 330* cleanup 000100 stack reference condition dcl 29 ref 125 259 codeptr builtin function dcl 26 ref 271 271 com_err_ 000040 constant entry external dcl 85 ref 133 369 377 432 432 com_err_$suppress_name 000042 constant entry external dcl 85 ref 239 control 1 000336 automatic structure level 2 dcl 64 cu_$arg_count 000054 constant entry external dcl 85 ref 131 cu_$arg_list_ptr 000056 constant entry external dcl 85 ref 432 432 cu_$arg_ptr 000060 constant entry external dcl 85 ref 141 298 310 320 cu_$generate_call 000062 constant entry external dcl 85 ref 432 cv_dec_check_ 000064 constant entry external dcl 85 ref 171 178 185 error_table_$bad_arg 000014 external static fixed bin(35,0) dcl 71 set ref 195* error_table_$bad_conversion 000020 external static fixed bin(35,0) dcl 71 set ref 172* 179* 186* error_table_$badopt 000016 external static fixed bin(35,0) dcl 71 set ref 230* error_table_$noarg 000022 external static fixed bin(35,0) dcl 71 set ref 244* error_table_$noentry 000024 external static fixed bin(35,0) dcl 71 ref 288 376 expand_pathname_$add_suffix 000066 constant entry external dcl 85 ref 367 first_trans 000116 automatic bit(1) dcl 31 set ref 127* 255* 295 first_trans_ptr 76 based pointer level 2 dcl 1-14 set ref 402* flags 65 based structure level 2 packed packed unaligned dcl 1-14 set ref 399* forum_$close_forum 000052 constant entry external dcl 85 ref 417 forum_data_$info_directory 000136 external static char(168) packed unaligned dcl 1-49 set ref 263* forum_data_$version_string 000134 external static char(8) packed unaligned dcl 1-49 set ref 263* forum_dir 2 based char(168) level 2 packed packed unaligned dcl 1-14 set ref 395* forum_idx 1 based fixed bin(17,0) level 2 dcl 1-14 set ref 417 417* forum_name 54 based char(32) level 2 packed packed unaligned dcl 1-14 set ref 396* forum_request_tables_$user_requests 000012 external static fixed bin(35,0) dcl 71 set ref 263 263 forum_requests_$add_passport 000044 constant entry external dcl 85 ref 407 forum_requests_$remove_passport 000046 constant entry external dcl 85 ref 418 forum_requests_$set_forum 000050 constant entry external dcl 85 ref 331 get_system_free_area_ 000070 constant entry external dcl 85 ref 137 393 hcs_$initiate 000072 constant entry external dcl 85 ref 374 input_fill_width 67 based fixed bin(17,0) level 2 dcl 1-14 set ref 171* 178* 397* iox_$user_input 000010 external static pointer dcl 69 set ref 340* last_trans_ptr 100 based pointer level 2 dcl 1-14 set ref 402* list 000117 automatic bit(1) dcl 31 set ref 207* 247 308 388* list_arg 000120 automatic fixed bin(17,0) dcl 31 set ref 145* 309 310* 389* maxlength builtin function dcl 26 ref 151 151 151 min builtin function dcl 26 ref 199 new_state parameter fixed bin(17,0) dcl 353 ref 350 356 null builtin function dcl 26 ref 124 258 335 375 391 402 403 404 414 416 420 output_fill_width 70 based fixed bin(17,0) level 2 dcl 1-14 set ref 171* 185* 398* passport based structure level 1 dcl 1-14 set ref 393 421 passport_info_ptr 000362 automatic pointer dcl 1-12 set ref 124* 171 171 178 185 191 192 193 194 202 203 204 209 224 225 226 227 258* 263* 263 268 271 273 275 276 277 278 284 284 287 291 300 311 313 321 330 331* 333 334 335 340 393* 394 395 396 397 398 399 400 401 402 402 403 404 405 407* 416 417 417 418* 420 420 421 passport_version_2 constant fixed bin(17,0) initial dcl 1-44 ref 394 path parameter char packed unaligned dcl 365 set ref 362 367* 369* print_fill 65(02) based bit(1) level 3 packed packed unaligned dcl 1-14 set ref 224* 225* print_message 65(04) based bit(1) level 3 packed packed unaligned dcl 1-14 set ref 333* profile_dir 000121 automatic char(168) packed unaligned dcl 31 set ref 367* 374* 377* profile_entry 000173 automatic char(32) packed unaligned dcl 31 set ref 367* 374* 377* profile_ptr 000204 automatic pointer dcl 31 set ref 276* 276* 374* 375 391* prompt 000206 automatic varying char(64) dcl 31 set ref 151 151 151 154* 218* 273* 390* public_channel 72 based fixed bin(71,0) level 2 dcl 1-14 set ref 401* quit_switch 000227 automatic bit(1) dcl 31 set ref 219* 339 388* request 000230 automatic char(256) packed unaligned dcl 31 set ref 299* 300 300 300 300 request_arg 000330 automatic fixed bin(17,0) dcl 31 set ref 165* 319 320* 389* requote_string_ 000074 constant entry external dcl 85 ref 299 saved_state 000331 automatic fixed bin(17,0) dcl 31 set ref 146 155 161 166 173 180 187 196 355* ssu_$add_request_table 000076 constant entry external dcl 85 ref 268 ssu_$create_invocation 000100 constant entry external dcl 85 ref 263 ssu_$destroy_invocation 000102 constant entry external dcl 85 ref 420 ssu_$execute_line 000104 constant entry external dcl 85 ref 300 ssu_$execute_start_up 000106 constant entry external dcl 85 ref 287 ssu_$execute_string 000110 constant entry external dcl 85 ref 311 313 321 334 ssu_$get_area 000112 constant entry external dcl 85 ref 284 ssu_$listen 000114 constant entry external dcl 85 ref 340 ssu_$print_message 000116 constant entry external dcl 85 ref 291 ssu_$record_usage 000120 constant entry external dcl 85 ref 271 ssu_$set_abbrev_info 000122 constant entry external dcl 85 ref 276 ssu_$set_ec_search_list 000124 constant entry external dcl 85 ref 278 ssu_$set_ec_suffix 000126 constant entry external dcl 85 ref 277 ssu_$set_prompt 000130 constant entry external dcl 85 ref 273 ssu_$set_prompt_mode 000132 constant entry external dcl 85 ref 275 ssu_et_$exec_com_aborted 000030 external static fixed bin(35,0) dcl 71 ref 288 ssu_et_$program_interrupt 000032 external static fixed bin(35,0) dcl 71 ref 302 314 323 ssu_et_$request_line_aborted 000034 external static fixed bin(35,0) dcl 71 ref 301 314 323 ssu_et_$subsystem_aborted 000036 external static fixed bin(35,0) dcl 71 ref 290 301 322 341 ssu_ptr 170 based pointer level 2 dcl 1-14 set ref 263* 268* 271* 273* 275* 276* 277* 278* 284* 287* 291* 300* 311* 313* 321* 334* 340* 404* 420 420* ssu_request_tables_$standard_requests 000026 external static fixed bin(35,0) dcl 71 set ref 268 268 start_up_switch 000332 automatic bit(1) dcl 31 set ref 128* 214* 215* 256* 286 state 000333 automatic fixed bin(17,0) dcl 31 set ref 139* 143 146* 149 155* 158 161* 164 166* 169 173* 176 180* 183 187* 190 196* 232 235* 244 244 244 355 356* status 000334 automatic fixed bin(35,0) dcl 31 set ref 131* 132 133* 141* 171* 172 178* 179 185* 186 263* 266 266* 268* 269 269* 287* 288 288 288 290 291* 300* 301 301 302 302 302* 311* 313* 314 314 314 314* 321* 322 323 323 324 324* 331* 332 332* 340* 341 341 341* 367* 368 369* 374* 376 377* string builtin function dcl 26 set ref 399* substr builtin function dcl 26 set ref 144 199 234* 297 system_free_area based area(1024) dcl 65 ref 137 393 talk_fill 65(01) based bit(1) level 3 packed packed unaligned dcl 1-14 set ref 226* 227* 400* trailer_format 174 based fixed bin(17,0) level 2 dcl 1-14 set ref 191* 192* 193* 194* 405* unprocessed_trans_ptr 102 based pointer level 2 dcl 1-14 set ref 335 403* version 000336 automatic fixed bin(17,0) level 2 in structure "auto_area_info" dcl 64 in procedure "forum" set ref 281* version based fixed bin(17,0) level 2 in structure "passport" dcl 1-14 in procedure "forum" set ref 394* whoami 000000 constant char(32) initial packed unaligned dcl 52 set ref 133* 151* 172* 179* 186* 195* 211* 230* 239* 244* 247* 263* 266* 269* 302* 314* 324* 332* 341* 369* 377* zero_on_free 1(02) 000336 automatic bit(1) level 3 packed packed unaligned dcl 64 set ref 282* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DONT_PROMPT internal static bit(1) initial packed unaligned dcl 2-7 DONT_PROMPT_AFTER_NULL_LINES internal static bit(2) initial packed unaligned dcl 2-10 DONT_PROMPT_IF_TYPEAHEAD internal static bit(3) initial packed unaligned dcl 2-13 PROMPT_AFTER_NULL_LINES internal static bit(2) initial packed unaligned dcl 2-9 PROMPT_IF_TYPEAHEAD internal static bit(3) initial packed unaligned dcl 2-12 area_infop automatic pointer dcl 3-5 forum_area based area(1024) dcl 1-46 forum_data_$central_directory external static char(168) packed unaligned dcl 1-49 no_suffix_name based char packed unaligned dcl 1-46 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_PROFILE 003525 constant label dcl 369 ref 376 CREATE_SUBSYSTEM 002200 constant label dcl 263 set ref 248 CTL_ARG 001315 constant label dcl 199 ref 144 MAIN_RETURN 003441 constant label dcl 345 ref 290 301 322 335 371 378 434 allocate_passport 003671 constant entry internal dcl 385 ref 129 261 clean_things_up 003767 constant entry internal dcl 411 ref 125 259 345 error 004062 constant entry internal dcl 429 ref 151 172 179 186 195 211 230 244 247 266 269 302 314 324 332 341 forum 000447 constant entry external dcl 19 ref 271 271 forum$enter_first_trans 002135 constant entry external dcl 250 get_profile 003455 constant entry internal dcl 362 ref 159 want_arg 003446 constant entry internal dcl 350 ref 206 212 216 217 220 221 222 223 228 NAMES DECLARED BY CONTEXT OR IMPLICATION. length builtin function ref 300 300 rtrim builtin function ref 300 300 unspec builtin function ref 280 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5014 5154 4175 5024 Length 5512 4175 140 321 616 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME forum 428 external procedure is an external procedure. on unit on line 125 64 on unit on unit on line 259 64 on unit want_arg internal procedure shares stack frame of external procedure forum. get_profile internal procedure shares stack frame of external procedure forum. allocate_passport internal procedure shares stack frame of external procedure forum. clean_things_up 72 internal procedure is called by several nonquick procedures. error 80 internal procedure is declared options(variable). STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME forum 000106 abbrev_switch forum 000107 arg_count forum 000110 arg_idx forum 000111 arg_len forum 000112 arg_ptr forum 000114 argmap_ptr forum 000116 first_trans forum 000117 list forum 000120 list_arg forum 000121 profile_dir forum 000173 profile_entry forum 000204 profile_ptr forum 000206 prompt forum 000227 quit_switch forum 000230 request forum 000330 request_arg forum 000331 saved_state forum 000332 start_up_switch forum 000333 state forum 000334 status forum 000336 auto_area_info forum 000362 passport_info_ptr forum THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return_mac tra_ext_1 enable_op shorten_stack ext_entry ext_entry_desc int_entry op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ com_err_$suppress_name cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr cu_$generate_call cv_dec_check_ expand_pathname_$add_suffix forum_$close_forum forum_requests_$add_passport forum_requests_$remove_passport forum_requests_$set_forum get_system_free_area_ hcs_$initiate requote_string_ ssu_$add_request_table ssu_$create_invocation ssu_$destroy_invocation ssu_$execute_line ssu_$execute_start_up ssu_$execute_string ssu_$get_area ssu_$listen ssu_$print_message ssu_$record_usage ssu_$set_abbrev_info ssu_$set_ec_search_list ssu_$set_ec_suffix ssu_$set_prompt ssu_$set_prompt_mode THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_conversion error_table_$badopt error_table_$noarg error_table_$noentry forum_data_$info_directory forum_data_$version_string forum_request_tables_$user_requests iox_$user_input ssu_et_$exec_com_aborted ssu_et_$program_interrupt ssu_et_$request_line_aborted ssu_et_$subsystem_aborted ssu_request_tables_$standard_requests LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 000446 124 000454 125 000456 127 000500 128 000501 129 000503 131 000504 132 000515 133 000517 134 000534 137 000535 139 000553 140 000555 141 000565 143 000602 144 000605 145 000612 146 000614 147 000616 149 000617 151 000621 154 000656 155 000667 156 000671 158 000672 159 000674 160 000707 161 000711 162 000713 164 000714 165 000716 166 000720 167 000722 169 000723 171 000725 172 000754 173 001010 174 001012 176 001013 178 001015 179 001043 180 001077 181 001101 183 001102 185 001104 186 001132 187 001166 188 001170 190 001171 191 001173 192 001205 193 001221 194 001231 195 001245 196 001300 197 001302 199 001303 201 001331 202 001343 203 001353 204 001363 205 001377 206 001407 207 001411 208 001413 209 001414 210 001430 211 001440 212 001472 213 001474 214 001475 215 001513 216 001526 217 001541 218 001550 219 001556 220 001565 221 001600 222 001613 223 001626 224 001641 225 001655 226 001671 227 001705 228 001721 230 001734 232 001767 234 001772 235 001777 236 002001 239 002002 240 002027 242 002030 244 002032 247 002075 248 002131 250 002132 255 002150 256 002152 258 002153 259 002155 261 002177 263 002200 266 002242 268 002267 269 002311 271 002336 273 002355 275 002367 276 002405 277 002422 278 002437 280 002454 281 002457 282 002461 284 002463 286 002515 287 002517 288 002535 290 002544 291 002546 295 002572 296 002574 297 002603 298 002610 299 002626 300 002670 301 002723 302 002731 305 002772 306 002774 308 003001 309 003003 310 003005 311 003023 312 003063 313 003065 314 003111 319 003146 320 003150 321 003166 322 003213 323 003217 324 003224 327 003251 330 003252 331 003255 332 003300 333 003333 334 003336 335 003363 339 003370 340 003372 341 003406 345 003441 348 003445 350 003446 355 003450 356 003452 358 003454 362 003455 367 003466 368 003523 369 003525 371 003556 374 003557 375 003622 376 003626 377 003632 378 003667 382 003670 385 003671 388 003672 389 003675 390 003677 391 003704 393 003707 394 003723 395 003725 396 003730 397 003733 398 003734 399 003735 400 003736 401 003740 402 003742 403 003746 404 003751 405 003753 407 003756 408 003765 411 003766 414 003774 416 004006 417 004013 418 004030 420 004040 421 004055 424 004060 429 004061 432 004067 434 004112 ----------------------------------------------------------- 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