COMPILATION LISTING OF SEGMENT rdm_reply_request_ Compiled by: Multics PL/I Compiler, Release 32e, of September 22, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 10/02/89 0822.0 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(89-04-07,Lee), approve(89-05-10,MCR8104), 16* audit(89-07-18,LZimmerman), install(89-10-02,MR12.3-1079): 17* phx19099, phx15783, Mail 457 - added message_type parameter to call to 18* rdm_message_mark_mgr_$mark_current_message to catch use of "-odl" with the 19* current message. 20* 2) change(89-04-11,Lee), approve(89-05-10,MCR8104), 21* audit(89-07-18,LZimmerman), install(89-10-02,MR12.3-1079): 22* phx18564, phx17540, phx17353, Mail 446 - the new entry set_new_current_msg 23* in rdm_mailbox_interface_ is now called when the current message is 24* changed to guarantee that the new current message is never a deleted 25* message; reformatting. 26* END HISTORY COMMENTS */ 27 28 29 /* format: off */ 30 31 /* The read_mail reply request */ 32 33 /* Created: March 1979 by W. Olin Sibert */ 34 /* Modified: 25 December 1979 by W. Olin Sibert to update for new rdm_invocation, add new options, and fix bug in replying 35* to a message with only a Sender: field */ 36 /* Modified: 25 April 1980 by G. Palter to implement suggestion #084 -- Provide abbrev expansion of read_mail and 37* send_mail request lines; add the "-abbrev", "-no_abbrev", and "-profile" control arguments */ 38 /* Modified: 30 May 1980 by G. Palter to: 39* (1) fix bug #0156 -- the "reply" request does not work on headerless messages; 40* (2) implement suggestion #0309 -- the "reply" request should default the send_mail it creates to the same state of 41* abbrev processing and the same profile as the read_mail invocation in which "reply" is executed; 42* (3) implement suggestion #0263 -- the current message in read_mail should be set to the message being processed - 43* thus, if an error occurs, the current message will remain on which the error occured; 44* (4) implement suggestion #0184 -- when replying to a single address, the message should say "Replying to ADDRESS." - 45* actually, it will include as many addresses as possible */ 46 /* Modified: 31 May 1980 by G. Palter to: 47* (1) implement suggestion #0220 -- the "-include_original" control argument to "reply" should also cause the 48* inclusion of the From, Date and Subject fields; 49* (2) implement suggestion #0186 -- there should be a "print_original" request in send_mail which prints the message 50* being replied to when invoked by read_mail's "reply" request; 51* (3) implement suggestion #0196 -- replying to an interactive message should cause the text of the message to be 52* included (unless "-no_include_original" is given) */ 53 /* Modified: 3 June 1980 by G. Palter to implement suggestion #0286 -- add control arguments to the "reply" request to 54* suppress replying to yourself ("-no_include_self"). Make this argument the default */ 55 /* Modified: 4 June 1980 by G. Palter to implement suggestion #0287 -- if a reply is being created and the user exits 56* send_mail without sending the reply, the "-delete" control argument of the "reply" request should be ignored */ 57 /* Modified: 17 June 1980 by G. Palter to: 58* (1) fix bug #0326 -- Attempting to reply to a message sent by yourself when "-no_include_self" is in effect produces 59* an error message and then sets the current message to garbage, causing all sorts of subsequent bad behavior; 60* (2) partially implement suggestion #0327 -- The "reply" request should issue a warning when it detects that you 61* would have been a recipient to a reply if "-no_include_self" had not been used */ 62 /* Modified: 20 June 1980 by G. Palter to: 63* (1) fix bug #0328 -- the "Replying to ..." message is ungramatical. It includes commas in the wrong places and also 64* says "1 others" */ 65 /* Modified: 24 July 1980 by G. Palter to add "-prompt" and "-no_prompt" control arguments */ 66 /* Modified: 16 February 1982 by G. Palter for new calling sequences of ssu_$get_abbrev_info and ssu_$set_abbrev_info */ 67 /* Modified: 19 September 1982 by G. Palter for new send_mail filling, prompting, and request loop control and to 68* propogate the state of debug_mode to the created send_mail */ 69 /* Modified: 2 November 1982 by G. Palter to: 70* (1) insure that all foreign recipients have their host names validated; 71* (2) fix mail_system error #0301 -- if all recipients of the reply are deleted because of errors, an extra message 72* will be issued promising that the send_mail request loop will be entered; 73* (3) fix mail_system error #0372 -- use of "-refill" without "-include_original" should be an error; 74* (4) fix mail_system error #0330 -- the reply request doesn't count "-log" as a recipient causing improper rejection 75* of reply requests if only the logbox is the recipient; and 76* (5) implement mail_system suggestion #0327 -- the reply request should issue warnings when the reply would not be 77* sent to the user as a result of the use of -no_include_self */ 78 /* Modified: 7 November 1982 by G. Palter to: 79* (1) fix mail_system error #0407 -- the reply request takes a null_pointer fault if one of the header fields used to 80* determine the recipients of the reply (eg: From, To, cc) is empty; and 81* (2) not issue the -no_include_self warning if "-nis" is given explicitly on either the read_mail command line or the 82* reply request line */ 83 /* Modified: 20 December 1982 by G. Palter to fix mail_system error #0408 -- the reply request does not recognize 84* "-include_deleted", "-only_deleted", and "-only_non_deleted" */ 85 /* Modified: October 1983 by G. Palter as part of the conversion to the new mail system interface */ 86 /* Modified: March 1984 by G. Palter to fix the following mail system errors: 87* #0421 -- the warning issued by the reply request when the "-no_include_self" default causes a copy of the reply not 88* to be sent to the user is incorrect. It mistakenly claims that the default is "-include_self" 89* #0433 -- the send_mail command and all send_mail and read_mail requests which accept multiple addresses as arguments 90* do not properly parse "-log -at HOST" */ 91 92 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen */ 93 94 95 rdm_reply_request_: 96 procedure (P_sci_ptr, P_rdm_invocation_ptr); 97 98 return; /* not an entrypoint */ 99 100 101 dcl P_sci_ptr pointer parameter; 102 dcl P_rdm_invocation_ptr pointer parameter; 103 104 dcl argument character (argument_lth) based (argument_ptr); 105 dcl argument_lth fixed binary (21); 106 dcl argument_ptr pointer; 107 dcl (n_arguments, argument_idx) fixed binary; 108 109 dcl msg_spec_array (msg_spec_array_size) fixed binary based (msg_spec_array_ptr); 110 dcl msg_spec_array_ptr pointer; 111 dcl (msg_spec_array_size, msg_spec_count) fixed binary; 112 dcl msg_type fixed binary; /* type of messages to process (all/undeleted/deleted) */ 113 114 dcl input_filename character (input_filename_lth) unaligned based (input_filename_ptr); 115 dcl (input_filename_ptr, input_file_ptr) pointer; 116 dcl input_filename_lth fixed binary (21); 117 118 dcl profile_pathname character (profile_pathname_lth) unaligned based (profile_pathname_ptr); 119 dcl profile_dirname character (168); 120 dcl profile_ename character (32); 121 dcl (profile_pathname_ptr, profile_ptr) pointer; 122 dcl profile_pathname_lth fixed binary (21); 123 dcl (profile_pathname_given, abbrev_ca_given, abbrev_enabled) bit (1) aligned; 124 125 dcl recipients_lists_array (3) pointer based (addr (sdm_subsystem_info.to)); 126 127 dcl current_address_list_ptr pointer based (current_address_list_ptr_ptr); 128 dcl current_address_list_ptr_ptr pointer; 129 130 dcl sdm_invocation_ptr pointer; /* -> description of the send_mail invocation we created */ 131 132 dcl 1 local_pcao aligned like parse_ca_options; 133 134 dcl clear_original_message_chain bit (1) aligned; /* ON => we've marked the original messages */ 135 dcl saved_current_message fixed binary; /* current message number before invokeing send_mail */ 136 137 dcl include_authors_arg fixed binary (1); /* indicates if either -iat/-niat is on the request line */ 138 dcl include_authors bit (1) aligned; /* ON => include the authors as recipients of the reply */ 139 dcl to_arg_specified bit (1) aligned; /* ON => explicit primary recipients given: disable -iat */ 140 141 dcl include_recipients bit (1) aligned; /* ON => include original recipients as reply recipients */ 142 143 dcl include_self bit (1) aligned; /* ON => remove the user from implicit recipients */ 144 dcl dont_issue_nis_warning bit (1) aligned; /* ON => don't complain if user is excluded */ 145 dcl warning_given_for_this_message bit (1) aligned; /* ON => already complained for the current message */ 146 147 dcl abort bit (1) aligned; /* ON => abort request if invalid address on request line */ 148 dcl found_invalid_address bit (1) aligned; /* ... tracks invalid addresses */ 149 150 dcl delete_after_processing bit (1) aligned; /* ON => delete original messages after the reply */ 151 152 dcl address_ptr pointer; 153 154 dcl my_person_id character (32); 155 dcl compare_both_user_addresses bit (1) aligned; /* ON => mail table & default mailbox addresses differ */ 156 157 dcl (message_idx, message_number) fixed binary; 158 159 dcl recipient_count fixed binary; /* total # of recipients */ 160 161 dcl code fixed binary (35); 162 163 /* format: off */ 164 dcl (DEFAULT_INCLUDE_AUTHORS initial (0), /* include authors if no explicit primary recipients */ 165 INCLUDE_AUTHORS initial (1), /* include authors regardless */ 166 NO_INCLUDE_AUTHORS initial (-1)) /* never include authors */ 167 fixed binary (1) static options (constant); 168 169 dcl (emf_et_$send_mail_aborted, error_table_$bad_conversion, error_table_$badopt, error_table_$inconsistent, 170 error_table_$noarg, error_table_$smallarg, mlsys_et_$ca_parse_failed, mlsys_et_$no_recipients) 171 fixed binary (35) external; 172 /* format: on */ 173 174 dcl iox_$user_output pointer external; 175 176 dcl cu_$grow_stack_frame entry (fixed binary (19), pointer, fixed binary (35)); 177 dcl cv_dec_check_ entry (character (*), fixed binary (35)) returns (fixed binary (35)); 178 dcl expand_pathname_ entry (character (*), character (*), character (*), fixed binary (35)); 179 dcl expand_pathname_$add_suffix entry (character (*), character (*), character (*), character (*), fixed binary (35)); 180 dcl get_line_length_$switch entry (pointer, fixed binary (35)) returns (fixed binary); 181 dcl hcs_$fs_get_path_name entry (pointer, character (*), fixed binary, character (*), fixed binary (35)); 182 dcl initiate_file_ entry (character (*), character (*), bit (*), pointer, fixed binary (24), fixed binary (35)); 183 dcl mail_system_$add_address entry (pointer, pointer, character (8), fixed binary (35)); 184 dcl mail_system_$compare_addresses entry (pointer, pointer, fixed binary (35)) returns (bit (1) aligned); 185 dcl mail_system_$eliminate_duplicate_addresses entry ((*) pointer, fixed binary (35)); 186 dcl mail_system_$free_address entry (pointer, fixed binary (35)); 187 dcl mail_system_$free_address_list entry (pointer, fixed binary (35)); 188 dcl mail_system_$merge_address_lists entry (pointer, pointer, bit (1) aligned, pointer, fixed binary (35)); 189 dcl mail_system_$validate_address entry (pointer, bit (1) aligned, fixed binary (35)); 190 dcl mlsys_utils_$parse_address_control_args entry (pointer, fixed binary, pointer, pointer, fixed binary (35)); 191 dcl mlsys_utils_$parse_address_list_control_args 192 entry (pointer, fixed binary, pointer, character (8), pointer, pointer, fixed binary (35)); 193 dcl mlsys_utils_$print_validate_results entry (pointer, pointer, fixed binary (35)); 194 dcl mlsys_utils_$summarize_address entry (pointer, bit (1) aligned, character (*) varying, fixed binary (35)); 195 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 196 dcl rdm_mailbox_interface_$delete_messages entry (pointer, bit (1) aligned); 197 dcl rdm_mailbox_interface_$mark_processed_and_acknowledge entry (pointer, fixed binary); 198 dcl rdm_mailbox_interface_$read_message entry (pointer, fixed binary, pointer, fixed binary (35)); 199 dcl rdm_mailbox_interface_$set_new_current_msg entry (ptr, fixed binary, fixed binary); 200 dcl rdm_message_mark_mgr_$clear_marked_messages entry (pointer); 201 dcl rdm_message_mark_mgr_$clear_original_messages entry (pointer); 202 dcl rdm_message_mark_mgr_$mark_current_message entry (pointer, fixed binary); 203 dcl rdm_message_mark_mgr_$mark_messages 204 entry (pointer, pointer, fixed binary (21), fixed binary, bit (*), fixed binary (35)); 205 dcl rdm_message_mark_mgr_$mark_original_messages entry (pointer); 206 dcl sdm_subsystem_$create_invocation entry (character (8), pointer, pointer, fixed binary (35)); 207 dcl sdm_subsystem_$destroy_invocation entry (pointer, pointer); 208 dcl sdm_subsystem_$subsystem entry (pointer, pointer, fixed binary (35)); 209 dcl ssu_$abort_line entry () options (variable); 210 dcl ssu_$arg_count entry (pointer, fixed binary); 211 dcl ssu_$arg_ptr entry (pointer, fixed binary, pointer, fixed binary (21)); 212 dcl ssu_$get_abbrev_info entry (pointer, pointer, pointer, bit (1) aligned); 213 dcl ssu_$get_subsystem_and_request_name entry (pointer) returns (character (72) varying); 214 dcl ssu_$print_message entry () options (variable); 215 dcl terminate_file_ entry (pointer, fixed binary (24), bit (*), fixed binary (35)); 216 dcl user_info_ entry (character (*)); 217 218 dcl cleanup condition; 219 220 dcl (addr, convert, currentsize, hbound, index, length, ltrim, maxlength, min, null, substr, translate) builtin; 221 222 reply_request: 223 entry (P_sci_ptr, P_rdm_invocation_ptr); 224 225 rdm_invocation_ptr = P_rdm_invocation_ptr; 226 call ssu_$arg_count (P_sci_ptr, n_arguments); 227 228 sdm_invocation_ptr, /* for cleanup handler */ 229 sdm_subsystem_info_ptr, address_ptr, input_file_ptr, profile_ptr = null (); 230 clear_original_message_chain = "0"b; 231 232 on condition (cleanup) call cleanup_after_reply_request (); 233 234 235 /* Create the send_mail invocation: This must be done before argument processing as the address lists in the 236* sdm_subsystem_info structure are used directly */ 237 238 call sdm_subsystem_$create_invocation (SDM_SUBSYSTEM_INFO_VERSION_6, sdm_invocation_ptr, sdm_subsystem_info_ptr, 239 code); 240 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Creating a send_mail subsystem."); 241 242 sdm_subsystem_info.rdm_invocation_ptr = rdm_invocation_ptr; 243 244 call rdm_message_mark_mgr_$clear_marked_messages (rdm_invocation_ptr); 245 246 msg_spec_count = 0; 247 msg_type = NON_DELETED_MESSAGES; /* default value */ 248 msg_spec_array_size = n_arguments; 249 call cu_$grow_stack_frame (currentsize (msg_spec_array), msg_spec_array_ptr, code); 250 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, 0, "Too many message specifiers on the request line."); 251 252 253 /* Setup defaults: reading the user's profile will go here someday */ 254 255 abort = "1"b; /* abort if any invalid addresses are on the request line */ 256 found_invalid_address = "0"b; /* ... will need to know this later on */ 257 258 delete_after_processing = "0"b; /* do not delete them after the reply is sent */ 259 260 sdm_subsystem_info.debug = rdm_invocation.debug_mode; 261 262 sdm_subsystem_info.include_original_text = rdm_invocation.reply_options.include_original; 263 sdm_subsystem_info.original_text_indentation = -1;/* indicates "-indent" not seen */ 264 265 include_authors_arg = DEFAULT_INCLUDE_AUTHORS; /* default is dependent on use of "-to" */ 266 include_recipients = rdm_invocation.reply_options.include_recipients; 267 to_arg_specified = "0"b; /* haven't seen explicit primary recipients */ 268 269 if rdm_invocation.reply_options.include_self = DEFAULT_INCLUDE_SELF then 270 include_self, dont_issue_nis_warning = "0"b; 271 else if rdm_invocation.reply_options.include_self = INCLUDE_SELF then 272 include_self, dont_issue_nis_warning = "1"b; 273 else do; /* explicit -no_include_self on read_mail command line */ 274 include_self = "0"b; 275 dont_issue_nis_warning = "1"b; /* ... so suppress the warnings */ 276 end; 277 278 sdm_subsystem_info.fill_control = rdm_invocation.reply_options.fill_control; 279 sdm_subsystem_info.fill_width = rdm_invocation.reply_options.line_length; 280 281 abbrev_ca_given = "0"b; /* haven't seen -ab/-nab: use read_mail abbrev state */ 282 profile_pathname_given = "0"b; /* no -profile yet */ 283 284 local_pcao.version = PARSE_CA_OPTIONS_VERSION_1; 285 local_pcao.logbox_creation_mode = CREATE_AND_ANNOUNCE_MAILBOX; 286 local_pcao.savebox_creation_mode = QUERY_TO_CREATE_MAILBOX; 287 local_pcao.abort_on_errors = "0"b; /* can't abort in case -no_abort appears somewhere */ 288 local_pcao.validate_addresses = "1"b; /* always check validity of addresses */ 289 local_pcao.mbz = ""b; 290 291 argument_idx = 1; 292 293 current_address_list_ptr_ptr = null (); /* start out looking for msg-specs, rather than addresses */ 294 295 296 /* Process arguments */ 297 298 do while (argument_idx <= n_arguments); 299 300 if current_address_list_ptr_ptr ^= null () then do; 301 /*** Looking for addresses after "-from", "-to", ... */ 302 call mlsys_utils_$parse_address_list_control_args (P_sci_ptr, argument_idx, addr (local_pcao), 303 ADDRESS_LIST_VERSION_2, current_address_list_ptr, sdm_subsystem_info.bcc, code); 304 if (code ^= 0) & (code ^= mlsys_et_$ca_parse_failed) then 305 call ssu_$abort_line (P_sci_ptr, code, "Parsing control arguments."); 306 found_invalid_address = found_invalid_address | (code = mlsys_et_$ca_parse_failed); 307 end; 308 309 if argument_idx <= n_arguments then do; 310 311 /*** Either still looking for message specifiers or an argument not recognized by the mail system */ 312 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 313 314 if index (argument, "-") = 1 then /* a control argument */ 315 /*** reply request control arguments ... */ 316 if (argument = "-include_deleted") | (argument = "-idl") then msg_type = ALL_MESSAGES; 317 else if (argument = "-only_deleted") | (argument = "-odl") then msg_type = ONLY_DELETED_MESSAGES; 318 else if (argument = "-only_non_deleted") | (argument = "-ondl") then 319 msg_type = NON_DELETED_MESSAGES; 320 321 else if (argument = "-delete") | (argument = "-dl") then delete_after_processing = "1"b; 322 else if (argument = "-no_delete") | (argument = "-ndl") then delete_after_processing = "0"b; 323 324 else if (argument = "-message") | (argument = "-msg") then do; 325 call get_next_argument ("A message specifier"); 326 call process_arg_as_spec (); 327 end; 328 329 else if (argument = "-include_authors") | (argument = "-include_author") | (argument = "-iat") 330 then 331 include_authors_arg = INCLUDE_AUTHORS; 332 else if (argument = "-no_include_authors") | (argument = "-no_include_author") 333 | (argument = "-niat") then 334 include_authors_arg = NO_INCLUDE_AUTHORS; 335 336 else if (argument = "-include_recipients") | (argument = "-irc") then include_recipients = "1"b; 337 else if (argument = "-no_include_recipients") | (argument = "-nirc") then 338 include_recipients = "0"b; 339 340 else if (argument = "-include_self") | (argument = "-is") then 341 include_self, dont_issue_nis_warning = "1"b; 342 else if (argument = "-no_include_self") | (argument = "-nis") then do; 343 include_self = "0"b; 344 dont_issue_nis_warning = "1"b; 345 end; 346 347 else if (argument = "-include_original") | (argument = "-io") then 348 sdm_subsystem_info.include_original_text = "1"b; 349 else if (argument = "-no_include_original") | (argument = "-nio") then 350 sdm_subsystem_info.include_original_text = "0"b; 351 352 else if (argument = "-refill") | (argument = "-rfi") then 353 sdm_subsystem_info.fill_original_text = "1"b; 354 else if (argument = "-no_refill") | (argument = "-nrfi") then 355 sdm_subsystem_info.fill_original_text = "0"b; 356 357 else if (argument = "-indent") | (argument = "-ind") | (argument = "-in") then do; 358 call get_next_argument ("A number"); 359 sdm_subsystem_info.original_text_indentation = cv_dec_check_ (argument, code); 360 if code ^= 0 then 361 call ssu_$abort_line (P_sci_ptr, error_table_$bad_conversion, "-indent ^a", argument); 362 if (sdm_subsystem_info.original_text_indentation < 0) 363 | (sdm_subsystem_info.original_text_indentation > 30) then 364 call ssu_$abort_line (P_sci_ptr, code, 365 "Indentation must be between 0 and 30; not ""^a"".", argument); 366 end; 367 368 /*** Standard send_mail control arguments ... */ 369 else if (argument = "-terminal_input") | (argument = "-ti") then 370 sdm_subsystem_info.input_type = TERMINAL_INPUT; 371 else if (argument = "-input_file") | (argument = "-if") then do; 372 call get_next_argument ("A pathname"); 373 sdm_subsystem_info.input_type = FILE_INPUT; 374 input_filename_ptr = argument_ptr; 375 input_filename_lth = argument_lth; 376 end; /* save it for later processing */ 377 378 else if argument = "-from" then current_address_list_ptr_ptr = addr (sdm_subsystem_info.from); 379 else if (argument = "-reply_to") | (argument = "-rpt") then 380 current_address_list_ptr_ptr = addr (sdm_subsystem_info.reply_to); 381 else if argument = "-to" then do; 382 to_arg_specified = "1"b; /* ... turns off the -include_authors default */ 383 current_address_list_ptr_ptr = addr (sdm_subsystem_info.to); 384 end; 385 else if argument = "-cc" then current_address_list_ptr_ptr = addr (sdm_subsystem_info.cc); 386 else if argument = "-bcc" then current_address_list_ptr_ptr = addr (sdm_subsystem_info.bcc); 387 388 else if (argument = "-log") | (argument = "-save") | (argument = "-sv") then do; 389 /*** ... must recognize these arguments even before "-to", etc. */ 390 call mlsys_utils_$parse_address_control_args (P_sci_ptr, argument_idx, addr (local_pcao), 391 address_ptr, code); 392 if (code ^= 0) & (code ^= mlsys_et_$ca_parse_failed) then 393 call ssu_$abort_line (P_sci_ptr, code, "Parsing control arguments."); 394 found_invalid_address = found_invalid_address | (code = mlsys_et_$ca_parse_failed); 395 if address_ptr ^= null () then do; 396 call mail_system_$add_address (sdm_subsystem_info.bcc, address_ptr, 397 ADDRESS_LIST_VERSION_2, code); 398 if code ^= 0 then 399 call ssu_$abort_line (P_sci_ptr, code, 400 "Adding ^[logbox^;savebox^] address to bcc field.", (argument = "-log")); 401 address_ptr = null (); 402 end; 403 argument_idx = argument_idx - 1; 404 end; /* is incremented below */ 405 406 else if (argument = "-subject") | (argument = "-sj") then do; 407 call get_next_argument ("A string"); 408 sdm_subsystem_info.subject_given = "1"b; 409 sdm_subsystem_info.subject_ptr = argument_ptr; 410 sdm_subsystem_info.subject_lth = argument_lth; 411 end; 412 else if (argument = "-no_subject") | (argument = "-nsj") then do; 413 sdm_subsystem_info.subject_given = "1"b; 414 sdm_subsystem_info.subject_lth = 0; 415 end; 416 417 else if argument = "-abort" then abort = "1"b; 418 else if argument = "-no_abort" then abort = "0"b; 419 420 else if (argument = "-acknowledge") | (argument = "-ack") then 421 sdm_subsystem_info.acknowledge = "1"b; 422 else if (argument = "-no_acknowledge") | (argument = "-nack") then 423 sdm_subsystem_info.acknowledge = "0"b; 424 425 else if (argument = "-brief") | (argument = "-bf") then sdm_subsystem_info.brief = "1"b; 426 else if (argument = "-long") | (argument = "-lg") then sdm_subsystem_info.brief = "0"b; 427 428 else if (argument = "-fill") | (argument = "-fi") then sdm_subsystem_info.fill_control = FILL; 429 else if (argument = "-no_fill") | (argument = "-nfi") then 430 sdm_subsystem_info.fill_control = NO_FILL; 431 else if (argument = "-line_length") | (argument = "-ll") then do; 432 call get_next_argument ("A number"); 433 sdm_subsystem_info.fill_width = cv_dec_check_ (argument, code); 434 if code ^= 0 then 435 call ssu_$abort_line (P_sci_ptr, error_table_$bad_conversion, "-line_length ""^a""", 436 argument); 437 if sdm_subsystem_info.fill_width < 31 then 438 call ssu_$abort_line (P_sci_ptr, 0, "Line length must be greater than 30."); 439 end; 440 441 else if (argument = "-notify") | (argument = "-nt") then sdm_subsystem_info.notify = "1"b; 442 else if (argument = "-no_notify") | (argument = "-nnt") then sdm_subsystem_info.notify = "0"b; 443 444 /*** Control arguments required by the MCR boards despite the furious objections of the author */ 445 else if argument = "-auto_write" then sdm_subsystem_info.auto_write = "1"b; 446 else if argument = "-no_auto_write" then sdm_subsystem_info.auto_write = "0"b; 447 448 /*** Standard subsystem control arguments */ 449 else if (argument = "-abbrev") | (argument = "-ab") then 450 sdm_subsystem_info.abbrev, abbrev_ca_given = "1"b; 451 else if (argument = "-no_abbrev") | (argument = "-nab") then do; 452 sdm_subsystem_info.abbrev = "0"b; 453 abbrev_ca_given = "1"b; 454 end; 455 else if (argument = "-profile") | (argument = "-pf") then do; 456 call get_next_argument ("A pathname"); 457 profile_pathname_given = "1"b; 458 profile_pathname_ptr = argument_ptr; 459 profile_pathname_lth = argument_lth; 460 end; /* save for later processing */ 461 462 else if (argument = "-debug") | (argument = "-db") then sdm_subsystem_info.debug = "1"b; 463 else if (argument = "-no_debug") | (argument = "-ndb") then sdm_subsystem_info.debug = "0"b; 464 465 else if (argument = "-prompt") | (argument = "-pmt") then do; 466 call get_next_argument ("A string"); 467 if argument_lth = 0 then /* same as -no_prompt */ 468 sdm_subsystem_info.prompt_control.prompt_control = NO_PROMPT; 469 else do; 470 sdm_subsystem_info.prompt_control.prompt_control = USE_PROMPT_STRING; 471 sdm_subsystem_info.prompt_string = argument; 472 end; 473 end; 474 else if (argument = "-no_prompt") | (argument = "-npmt") then 475 sdm_subsystem_info.prompt_control.prompt_control = NO_PROMPT; 476 477 else if (argument = "-request") | (argument = "-rq") then do; 478 call get_next_argument ("A string"); 479 sdm_subsystem_info.initial_requests_ptr = argument_ptr; 480 sdm_subsystem_info.initial_requests_lth = argument_lth; 481 end; 482 483 else if (argument = "-request_loop") | (argument = "-rql") then 484 sdm_subsystem_info.request_loop_control = REQUEST_LOOP; 485 else if (argument = "-no_request_loop") | (argument = "-nrql") then 486 sdm_subsystem_info.request_loop_control = NO_REQUEST_LOOP; 487 488 /*** Control arguments which are now obsolete: delete in MR11 */ 489 else if (argument = "-all") | (argument = "-a") then msg_type = ALL_MESSAGES; 490 else if (argument = "-message_id") | (argument = "-mid") | (argument = "-no_message_id") 491 | (argument = "-nmid") then 492 ; 493 494 else call ssu_$abort_line (P_sci_ptr, error_table_$badopt, """^a""", argument); 495 496 else do; 497 /*** Non-control argument: a message specifier */ 498 if current_address_list_ptr_ptr ^= null () then 499 call ssu_$abort_line (P_sci_ptr, 0, 500 "No implicit message specifiers may follow the ""-from"", ""-reply_to"", ""-to"", ""-cc"", or ""-bcc"" control arguments" 501 ); 502 call process_arg_as_spec (); 503 end; 504 505 argument_idx = argument_idx + 1; /* skip past the argument we just processed */ 506 end; 507 end; 508 509 if sdm_subsystem_info.input_type = FILE_INPUT then do; 510 /*** Verify that the specified input file exists ... */ 511 call expand_pathname_ (input_filename, sdm_subsystem_info.input_file.dname, 512 sdm_subsystem_info.input_file.ename, code); 513 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "-input_file ""^a""", input_filename); 514 call initiate_file_ (sdm_subsystem_info.input_file.dname, sdm_subsystem_info.input_file.ename, R_ACCESS, 515 input_file_ptr, (0), code); 516 if code ^= 0 then 517 call ssu_$abort_line (P_sci_ptr, code, "-input_file ""^a""", 518 pathname_ (sdm_subsystem_info.input_file.dname, sdm_subsystem_info.input_file.ename)); 519 call terminate_file_ (input_file_ptr, 0, TERM_FILE_TERM, (0)); 520 end; 521 522 if profile_pathname_given then do; 523 /*** Initiate the subsystem profile requested by the user */ 524 call expand_pathname_$add_suffix (profile_pathname, "profile", profile_dirname, profile_ename, code); 525 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "-profile ""^a""", profile_pathname); 526 call initiate_file_ (profile_dirname, profile_ename, R_ACCESS, sdm_subsystem_info.default_profile_ptr, (0), 527 code); 528 if code ^= 0 then 529 call ssu_$abort_line (P_sci_ptr, code, "-profile ""^a""", pathname_ (profile_dirname, profile_ename)); 530 if ^abbrev_ca_given then /* -profile implies -abbrev unless explicit -ab/-nab given */ 531 sdm_subsystem_info.abbrev = "1"b; 532 abbrev_ca_given = "1"b; /* do not copy read_mail's abbreviation processing state */ 533 end; 534 535 536 /* Establish the remaining parameters for the send_mail invocation */ 537 538 if ^abbrev_ca_given then do; 539 /*** User did not give any abbrev control arguments: use read_mail's state of abbreviation processing */ 540 call ssu_$get_abbrev_info (P_sci_ptr, sdm_subsystem_info.default_profile_ptr, 541 sdm_subsystem_info.profile_ptr, abbrev_enabled); 542 sdm_subsystem_info.abbrev = abbrev_enabled; /* attributes don't match, sigh... */ 543 if sdm_subsystem_info.default_profile_ptr ^= null () then 544 call add_null_refname (sdm_subsystem_info.default_profile_ptr); 545 if (sdm_subsystem_info.profile_ptr ^= null ()) 546 & (sdm_subsystem_info.profile_ptr ^= sdm_subsystem_info.default_profile_ptr) then 547 call add_null_refname (sdm_subsystem_info.profile_ptr); 548 end; /* ssu_ never terminiates same profile twice */ 549 550 551 /* If invalid addresses were found on the request line and -abort (the default) was specified, abort the request here. 552* Otherwise (-no_abort specified), force the user to enter send_mail's request loop; a warning to this effect will be 553* issued later */ 554 555 if found_invalid_address then /* there are indeed invalid addresses ... */ 556 if abort then /* ... and the user doesn't want to continue */ 557 call ssu_$abort_line (P_sci_ptr, 0); 558 else sdm_subsystem_info.request_loop_control = REQUEST_LOOP; 559 /* ... force the user to fix the addresses */ 560 561 562 /* Check for inconsistencies and supply appropriate defaults where needed */ 563 564 if ^sdm_subsystem_info.include_original_text & (sdm_subsystem_info.original_text_indentation >= 0) then 565 call ssu_$abort_line (P_sci_ptr, error_table_$inconsistent, """-indent"" without ""-include_original""."); 566 567 if ^sdm_subsystem_info.include_original_text & sdm_subsystem_info.fill_original_text then 568 call ssu_$abort_line (P_sci_ptr, error_table_$inconsistent, """-refill"" without ""-include_original""."); 569 570 if sdm_subsystem_info.original_text_indentation < 0 then 571 sdm_subsystem_info.original_text_indentation = rdm_invocation.reply_options.indentation; 572 /* indent by default value if not otherwise specified */ 573 574 if include_authors_arg = DEFAULT_INCLUDE_AUTHORS then 575 if to_arg_specified then /* ... if explicit -to given do not include the authors */ 576 include_authors = "0"b; 577 else include_authors = rdm_invocation.include_authors; 578 else if include_authors_arg = NO_INCLUDE_AUTHORS then include_authors = "0"b; 579 else /*** if include_authors_arg = INCLUDE_AUTHORS then */ 580 include_authors = "1"b; 581 582 if msg_spec_count = 0 then /* defaults to the current message (if any) */ 583 call rdm_message_mark_mgr_$mark_current_message (rdm_invocation_ptr, msg_type); 584 /* phx19099 RL - use of "-odl" with the current message will be caught during marking */ 585 else call process_msg_specs (); /* mark the messages the caller asked for */ 586 587 588 /* Build the reply message */ 589 590 if ^include_self then do; /* will have to check addresses against ourselves */ 591 call user_info_ (my_person_id); /* ... may be needed for warnings */ 592 compare_both_user_addresses = 593 ^ 594 mail_system_$compare_addresses (mlsys_data_$user_default_mailbox_address, 595 mlsys_data_$user_mail_table_address, (0)); 596 if ^dont_issue_nis_warning then /* ... see if user explicitly sending himself a copy */ 597 call check_if_explicit_self (); 598 end; 599 600 original_messages_n_original_messages = marked_chain.n_messages; 601 602 allocate original_messages in (rdm_area) set (original_messages_ptr); 603 original_messages.version = ORIGINAL_MESSAGES_VERSION_1; 604 605 do message_idx = 1 to marked_chain.n_messages; 606 message_number = marked_chain.messages (message_idx); 607 608 call rdm_mailbox_interface_$read_message (rdm_invocation_ptr, message_number, message_ptr, code); 609 if code ^= 0 then 610 call ssu_$abort_line (P_sci_ptr, code, "Reading message #^d from ^a.", message_number, 611 rdm_invocation.mailbox_name); 612 613 original_messages.messages (message_idx).message_ptr = message_ptr; 614 original_messages.messages (message_idx).message_idx = message_number; 615 616 /* phx18564 RL - set current message to message_number and guarantee that it's not deleted */ 617 call rdm_mailbox_interface_$set_new_current_msg (rdm_invocation_ptr, message_number, 618 rdm_invocation.current_message); /* it's current while we're working on it */ 619 620 call process_message (); 621 622 call rdm_mailbox_interface_$mark_processed_and_acknowledge (rdm_invocation_ptr, message_number); 623 end; 624 625 sdm_subsystem_info.original_messages_ptr = original_messages_ptr; 626 627 if ^sdm_subsystem_info.subject_given then do; /* no subject in original messages ... */ 628 sdm_subsystem_info.subject_given = "1"b; /* ... force the reply to have no subject also */ 629 sdm_subsystem_info.subject_lth = 0; 630 end; 631 632 633 /* Eliminate duplicate recipients and, if not brief, list the recipients */ 634 635 call mail_system_$eliminate_duplicate_addresses (recipients_lists_array, code); 636 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Eliminating duplicate recipients."); 637 638 recipient_count = 0; /* just count top-level addresses */ 639 do address_list_ptr = sdm_subsystem_info.to, sdm_subsystem_info.cc, sdm_subsystem_info.bcc; 640 if ^is_empty_list (address_list_ptr) then recipient_count = recipient_count + address_list.n_addresses; 641 end; 642 643 if recipient_count = 0 then call ssu_$abort_line (P_sci_ptr, mlsys_et_$no_recipients); 644 645 if found_invalid_address then do; /* force the user into the request loop */ 646 sdm_subsystem_info.request_loop_control = REQUEST_LOOP; 647 call ssu_$print_message (P_sci_ptr, 0, 648 "Invalid addresses were detected. The send_mail request loop will be entered to permit corrections.") 649 ; 650 end; 651 652 if ^sdm_subsystem_info.brief then /* tell user who's getting it */ 653 call print_recipients_list (); 654 655 656 /* Invoke send_mail */ 657 658 call rdm_message_mark_mgr_$mark_original_messages (rdm_invocation_ptr); 659 saved_current_message = rdm_invocation.current_message; 660 clear_original_message_chain = "1"b; 661 662 call sdm_subsystem_$subsystem (sdm_invocation_ptr, sdm_subsystem_info_ptr, code); 663 664 clear_original_message_chain = "0"b; 665 rdm_invocation.current_message = saved_current_message; 666 /* in case some send_mail request changes it */ 667 call rdm_message_mark_mgr_$clear_original_messages (rdm_invocation_ptr); 668 669 if code ^= 0 then 670 if code = emf_et_$send_mail_aborted then /* message was modified/unprocessed on exit */ 671 if ^sdm_subsystem_info.brief & delete_after_processing then 672 call ssu_$abort_line (P_sci_ptr, 0, "Reply not sent. Message(s) will not be deleted."); 673 else call ssu_$abort_line (P_sci_ptr, 0); 674 else call ssu_$abort_line (P_sci_ptr, code, "Invoking send_mail subsystem."); 675 676 if delete_after_processing then /* delete messages after replying */ 677 call rdm_mailbox_interface_$delete_messages (rdm_invocation_ptr, "0"b); 678 679 call cleanup_after_reply_request (); 680 681 return; 682 683 /* Fetches the value expected after the given control argument */ 684 685 get_next_argument: 686 procedure (p_argument_type); 687 688 dcl p_argument_type character (*) parameter; 689 690 if argument_idx = n_arguments then 691 call ssu_$abort_line (P_sci_ptr, error_table_$noarg, "^a after ""^a"".", p_argument_type, argument); 692 693 argument_idx = argument_idx + 1; 694 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 695 696 return; 697 698 end get_next_argument; 699 700 /* Adds the current argument to the array of message specifies for this request */ 701 702 process_arg_as_spec: 703 procedure (); 704 705 if msg_spec_count >= hbound (msg_spec_array, 1) then 706 call ssu_$abort_line (P_sci_ptr, 0, "Too many message specifiers on the request line."); 707 /* can't ever happen */ 708 709 msg_spec_count = msg_spec_count + 1; 710 msg_spec_array (msg_spec_count) = argument_idx; 711 712 return; 713 714 end process_arg_as_spec; 715 716 717 718 /* Processes the message specifies to produce the chain of messages to be processed by this request */ 719 720 process_msg_specs: 721 procedure (); 722 723 dcl idx fixed bin; 724 725 do idx = 1 to msg_spec_count; 726 call ssu_$arg_ptr (P_sci_ptr, msg_spec_array (idx), argument_ptr, argument_lth); 727 728 call rdm_message_mark_mgr_$mark_messages (rdm_invocation_ptr, argument_ptr, argument_lth, msg_type, ""b, 729 code); 730 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code); 731 end; 732 733 return; 734 735 end process_msg_specs; 736 737 /* Cleans up after execution of the request */ 738 739 cleanup_after_reply_request: 740 procedure (); 741 742 if clear_original_message_chain then do; 743 call rdm_message_mark_mgr_$clear_original_messages (rdm_invocation_ptr); 744 rdm_invocation.current_message = saved_current_message; 745 end; 746 747 if input_file_ptr ^= null () then call terminate_file_ (input_file_ptr, 0, TERM_FILE_TERM, (0)); 748 749 if profile_ptr ^= null () then call terminate_file_ (profile_ptr, 0, TERM_FILE_TERM, (0)); 750 751 if address_ptr ^= null () then call mail_system_$free_address (address_ptr, (0)); 752 753 if (sdm_invocation_ptr ^= null ()) | (sdm_subsystem_info_ptr ^= null ()) then 754 call sdm_subsystem_$destroy_invocation (sdm_invocation_ptr, sdm_subsystem_info_ptr); 755 756 return; 757 758 end cleanup_after_reply_request; 759 760 /* Processes a single message: If this is the first message with a non-null subject, it's subject will be used as the 761* subject for the reply (with "Re:" prefixed to the subject if needed). The authors and recipients of the message will 762* be added to the reply's recipients as requested by the user */ 763 764 process_message: 765 procedure (); 766 767 if ^sdm_subsystem_info.subject_given then /* add the first non-null subject we can find */ 768 call set_reply_subject_if_ok (); 769 770 warning_given_for_this_message = "0"b; /* don't give -no_include_self warning twice */ 771 772 if include_authors then 773 if is_empty_list (message.reply_to) then /* no Reply-To: use the From field which is never empty */ 774 call add_recipients (message.from, sdm_subsystem_info.to); 775 else call add_recipients (message.reply_to, sdm_subsystem_info.to); 776 777 if include_recipients then do; 778 if ^is_empty_list (message.to) then call add_recipients (message.to, sdm_subsystem_info.cc); 779 if ^is_empty_list (message.cc) then call add_recipients (message.cc, sdm_subsystem_info.cc); 780 if ^is_empty_list (message.bcc) then call add_recipients (message.bcc, sdm_subsystem_info.bcc); 781 end; 782 783 return; 784 785 786 787 /* Internal to process_message: Sets the subject of the reply to this message's subject prefixed by "Re:" if this 788* message's subject is non-null */ 789 790 set_reply_subject_if_ok: 791 procedure (); 792 793 dcl reply_subject character (reply_subject_lth) unaligned based (reply_subject_ptr); 794 dcl reply_subject_ptr pointer; 795 dcl reply_subject_lth fixed binary (21); 796 797 if length (message_subject) = 0 then return; /* no subject */ 798 799 sdm_subsystem_info.subject_given = "1"b; /* only the first non-null subject is used */ 800 801 if translate (substr (message_subject, 1, min (3, length (message_subject))), "Re", "rE") = "Re:" then do; 802 reply_subject_lth = length (message_subject); 803 allocate reply_subject in (rdm_area) set (reply_subject_ptr); 804 reply_subject = message_subject; 805 substr (reply_subject, 1, 3) = "Re:"; 806 end; 807 else do; 808 reply_subject_lth = length (message_subject) + length ("Re: "); 809 allocate reply_subject in (rdm_area) set (reply_subject_ptr); 810 reply_subject = "Re: " || message_subject; 811 end; 812 813 sdm_subsystem_info.subject_ptr = reply_subject_ptr; 814 sdm_subsystem_info.subject_lth = reply_subject_lth; 815 816 return; 817 818 end set_reply_subject_if_ok; 819 820 /* Internal to process_message: Adds the addresses in the specified header field of an original message to one of the 821* recipient header fields (To, cc, bcc) of the reply message: Any addresses which refer to the user issuing the reply are 822* eliminated if so requested */ 823 824 add_recipients: 825 procedure (p_original_field, p_reply_recipient_field); 826 827 dcl p_original_field pointer parameter; 828 dcl p_reply_recipient_field pointer parameter; 829 830 dcl address_ptr pointer; 831 dcl code fixed binary (35); 832 dcl address_idx fixed binary; 833 834 835 address_list_ptr = p_original_field; /* guarenteed not empty by our caller */ 836 837 do address_idx = 1 to address_list.n_addresses; 838 address_ptr = address_list.addresses (address_idx); 839 840 call mail_system_$validate_address (address_ptr, "0"b /* don't expand mailing lists */, code); 841 842 if code = 0 then do; /* address is OK ... */ 843 if ^include_self then /* ... but we must check for self-references */ 844 if mail_system_$compare_addresses (mlsys_data_$user_default_mailbox_address, address_ptr, 845 (0)) then do; 846 IGNORE_ADDRESS: /* ... and it is our own address */ 847 if ^dont_issue_nis_warning then do; 848 if ^warning_given_for_this_message then 849 call ssu_$print_message (P_sci_ptr, 0, 850 "Message #^d -- no reply sent to ^a due to ""-no_include_self"" default.", 851 message_number, my_person_id); 852 warning_given_for_this_message = "1"b; 853 end; 854 go to PROCESS_NEXT_ADDRESS; 855 end; 856 else if compare_both_user_addresses then 857 if mail_system_$compare_addresses (mlsys_data_$user_mail_table_address, address_ptr, 858 (0)) then 859 go to IGNORE_ADDRESS; 860 call mail_system_$add_address (p_reply_recipient_field, address_ptr, ADDRESS_LIST_VERSION_2, 861 code); 862 if code ^= 0 then 863 call ssu_$abort_line (P_sci_ptr, code, 864 "Message #^d -- processing ""^[-include_authors^;-include_recipients^]"".", 865 message_number, (addr (p_reply_recipient_field) = addr (sdm_subsystem_info.to))); 866 end; 867 868 else do; /* invalid address ... */ 869 found_invalid_address = "1"b; /* ... force the request loop */ 870 call mlsys_utils_$print_validate_results (P_sci_ptr, address_ptr, code); 871 end; 872 873 PROCESS_NEXT_ADDRESS: 874 end; 875 876 return; 877 878 end add_recipients; 879 880 end process_message; 881 882 /* Checks if the user has explicitly included himself as a recipient of the reply: If so, and -no_include_self is 883* specified, the warning messages issued when excluding an implicit self reference will be suppressed */ 884 885 check_if_explicit_self: 886 procedure (); 887 888 if ^is_empty_list (sdm_subsystem_info.to) then call check_single_list (sdm_subsystem_info.to); 889 890 if ^is_empty_list (sdm_subsystem_info.cc) then call check_single_list (sdm_subsystem_info.cc); 891 892 if ^is_empty_list (sdm_subsystem_info.bcc) then call check_single_list (sdm_subsystem_info.bcc); 893 894 RETURN_FROM_CHECK_IF_EXPLICIT_SELF: 895 return; 896 897 898 899 /* Internal to check_if_explicit_self: actually performs the check */ 900 901 check_single_list: 902 procedure (p_address_list_ptr); 903 904 dcl p_address_list_ptr pointer parameter; 905 906 dcl address_ptr pointer; 907 dcl address_idx fixed binary; 908 909 address_list_ptr = p_address_list_ptr; 910 911 do address_idx = 1 to address_list.n_addresses; 912 address_ptr = address_list.addresses (address_idx); 913 914 if mail_system_$compare_addresses (mlsys_data_$user_default_mailbox_address, address_ptr, (0)) 915 then do; 916 dont_issue_nis_warning = "1"b; /* found an explicit match */ 917 go to RETURN_FROM_CHECK_IF_EXPLICIT_SELF; 918 end; 919 920 else if compare_both_user_addresses then 921 if mail_system_$compare_addresses (mlsys_data_$user_mail_table_address, address_ptr, (0)) 922 then do; 923 dont_issue_nis_warning = "1"b; 924 go to RETURN_FROM_CHECK_IF_EXPLICIT_SELF; 925 end; 926 end; 927 928 return; 929 930 end check_single_list; 931 932 end check_if_explicit_self; 933 934 /* Print the list of recipients of the message: as many recipients as will fit on one line are printed with an indication 935* of the total number in the list */ 936 937 print_recipients_list: 938 procedure (); 939 940 dcl (recipients_list_ptr, address_ptr) pointer; 941 dcl (n_recipients_left, address_idx) fixed binary; 942 dcl n_recipients_left_picture picture "(8)z9"; 943 dcl include_comma bit (1) aligned; 944 945 dcl recipients_list /* the "Replying to..." message */ 946 character (get_line_length_$switch (iox_$user_output, (0)) - line_prefix_length ()) varying; 947 948 dcl address_summary /* the text for one address */ 949 character (get_line_length_$switch (iox_$user_output, (0)) - line_prefix_length ()) varying; 950 951 952 recipients_list_ptr = null (); /* for cleanup handler */ 953 954 on condition (cleanup) 955 begin; 956 if recipients_list_ptr ^= null () then call mail_system_$free_address_list (recipients_list_ptr, (0)); 957 end; 958 959 do address_list_ptr = sdm_subsystem_info.to, sdm_subsystem_info.cc, sdm_subsystem_info.bcc; 960 if is_empty_list (address_list_ptr) then /* nothing in this one: however, at least one isn't empty */ 961 code = 0; 962 else call mail_system_$merge_address_lists (recipients_list_ptr, address_list_ptr, "0"b, 963 recipients_list_ptr, code); 964 if code ^= 0 then do; 965 CANT_GENERATE_RECIPIENTS_LIST: 966 call ssu_$print_message (P_sci_ptr, 0, "Replying to ^d total recipient^[s^].", recipient_count, 967 (recipient_count ^= 1)); 968 go to RETURN_FROM_PRINT_RECIPIENTS_LIST; 969 end; 970 end; 971 972 recipients_list = "Replying to "; /* prime the output */ 973 974 n_recipients_left = recipients_list_ptr -> address_list.n_addresses - 1; 975 /* at least the first address appears */ 976 977 call mlsys_utils_$summarize_address (recipients_list_ptr -> address_list.addresses (1), "0"b, address_summary, 978 code); 979 if code ^= 0 then go to CANT_GENERATE_RECIPIENTS_LIST; 980 if ^is_room_for_address () then go to CANT_GENERATE_RECIPIENTS_LIST; 981 982 recipients_list = recipients_list || address_summary; 983 include_comma = "0"b; 984 985 do address_idx = 2 to recipients_list_ptr -> address_list.n_addresses; 986 address_ptr = recipients_list_ptr -> address_list.addresses (address_idx); 987 988 n_recipients_left = n_recipients_left - 1; /* insures the test will be oK */ 989 call mlsys_utils_$summarize_address (address_ptr, "0"b, address_summary, code); 990 if (code ^= 0) & (code ^= error_table_$smallarg) then go to CANT_GENERATE_RECIPIENTS_LIST; 991 992 if code = 0 then /* got the summary */ 993 if is_room_for_address () then do; /* ... and it will fit */ 994 if ^include_comma & (n_recipients_left > 0) then include_comma = "1"b; 995 if include_comma then recipients_list = recipients_list || ","; 996 if n_recipients_left = 0 then 997 recipients_list = recipients_list || " and "; 998 else recipients_list = recipients_list || " "; 999 recipients_list = recipients_list || address_summary; 1000 end; 1001 else do; /* ... but it won't fit on the line */ 1002 n_recipients_left = n_recipients_left + 1; 1003 go to FINISH_AND_PRINT_RECIPIENTS_LIST; 1004 end; 1005 1006 else do; /* address summary is too long */ 1007 n_recipients_left = n_recipients_left + 1; 1008 go to FINISH_AND_PRINT_RECIPIENTS_LIST; 1009 end; 1010 1011 include_comma = "1"b; /* definitely need one now */ 1012 end; 1013 1014 FINISH_AND_PRINT_RECIPIENTS_LIST: 1015 if n_recipients_left > 0 then do; 1016 if include_comma then recipients_list = recipients_list || ","; 1017 recipients_list = recipients_list || " and "; 1018 recipients_list = recipients_list || ltrim (convert (n_recipients_left_picture, n_recipients_left)); 1019 if n_recipients_left = 1 then 1020 recipients_list = recipients_list || " other"; 1021 else recipients_list = recipients_list || " others"; 1022 end; 1023 1024 recipients_list = recipients_list || "."; 1025 1026 call ssu_$print_message (P_sci_ptr, 0, "^a", recipients_list); 1027 1028 RETURN_FROM_PRINT_RECIPIENTS_LIST: 1029 if recipients_list_ptr ^= null () then call mail_system_$free_address_list (recipients_list_ptr, (0)); 1030 1031 return; 1032 1033 1034 1035 /* Internal to print_recipients_list: determines the length of the prefix printed by ssu_$print_message */ 1036 1037 line_prefix_length: 1038 procedure () returns (fixed binary); 1039 1040 return (length (ssu_$get_subsystem_and_request_name (P_sci_ptr)) + length (": ")); 1041 1042 end line_prefix_length; 1043 1044 1045 1046 /* Internal to print_recipients_list: determines if this address will fit in the remainder of the line */ 1047 1048 is_room_for_address: 1049 procedure () returns (bit (1) aligned); 1050 1051 if n_recipients_left > 0 then 1052 return ((length (recipients_list) + length (address_summary) + length (", , and NNN others.")) 1053 <= maxlength (recipients_list)); 1054 1055 else return ((length (recipients_list) + length (address_summary) + length (", and .")) 1056 <= maxlength (recipients_list)); 1057 1058 end is_room_for_address; 1059 1060 end print_recipients_list; 1061 1062 /* Adds a null reference name to the supplied profile: ssu_ will terminate a null refname when the send_mail invocation is 1063* destroyed but read_mail will still try to reference the profile; adding an extra null refname here makes everything 1064* work properly */ 1065 1066 add_null_refname: 1067 procedure (p_profile_ptr); 1068 1069 dcl p_profile_ptr pointer parameter; 1070 dcl new_profile_ptr pointer; 1071 dcl profile_dirname character (168); 1072 dcl profile_ename character (32); 1073 1074 call hcs_$fs_get_path_name (p_profile_ptr, profile_dirname, (0), profile_ename, code); 1075 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Copying state of read_mail abbrev processing."); 1076 1077 call initiate_file_ (profile_dirname, profile_ename, R_ACCESS, new_profile_ptr, (0), code); 1078 if p_profile_ptr ^= new_profile_ptr then 1079 call ssu_$abort_line (P_sci_ptr, code, "Copying state of read_mail abbrev processing."); 1080 1081 return; 1082 1083 end add_null_refname; 1084 1085 1086 1087 /* Determines if the supplied address list is empty */ 1088 1089 is_empty_list: 1090 procedure (p_address_list_ptr) returns (bit (1) aligned); 1091 1092 dcl p_address_list_ptr pointer parameter; 1093 1094 if p_address_list_ptr = null () then /* nothing there at all */ 1095 return ("1"b); 1096 1097 else return ((p_address_list_ptr -> address_list.n_addresses = 0)); 1098 1099 end is_empty_list; 1100 1 1 /* BEGIN INCLUDE FILE ... rdm_invocation.incl.pl1 */ 1 2 /* Created: September 1983 by G. Palter from portions of emf_info.incl.pl1 */ 1 3 1 4 /* Definition of a single invocation of read_mail */ 1 5 1 6 dcl 1 rdm_invocation aligned based (rdm_invocation_ptr), 1 7 2 type character (8), /* defines this structure as a read_mail invocation */ 1 8 2 sci_ptr pointer, /* -> subsystem utilities invocation data */ 1 9 2 area_ptr pointer, /* -> area to be used by the subsystem */ 1 10 1 11 2 mailbox_info, 1 12 3 mailbox_ptr pointer, /* -> mailbox structure being examined by this invocation */ 1 13 3 message_list_ptr pointer, /* -> list of read_mail specific information retained for each 1 14* message (eg: the "processed" flag) */ 1 15 3 message_chains, /*the various message chains ... */ 1 16 4 all pointer, /* ... all unexpunged messages */ 1 17 4 undeleted pointer, /* ... all undeleted messages */ 1 18 4 deleted pointer, /* ... all deleted messages */ 1 19 4 marked pointer, /* ... messages to be processed by the current request */ 1 20 4 marked_as_original pointer, /* ... messages being processed by a reply/forward request */ 1 21 3 mailbox_name character (168) varying, /* name of the mailbox (your mailbox/logbox/pathname) */ 1 22 1 23 2 current_message fixed binary, /* index of the current message; 0 => no current message */ 1 24 1 25 2 last_search_buffer, /* describes the buffer where read_mail constructs the ... */ 1 26 3 buffer_ptr pointer, /* ... the printed representation of messages in order ... */ 1 27 3 buffer_used fixed binary (21), /* ... to speed up regular expression searching */ 1 28 1 29 2 global_options, /* command line options affecting all of read_mail ... */ 1 30 3 flags, 1 31 4 acknowledge bit (1) unaligned, /* ... ON => acknowledge messages after printing */ 1 32 4 brief bit (1) unaligned, /* ... ON => shorten some messages and omit others */ 1 33 4 debug_mode bit (1) unaligned, /* ... ON => enable debugging features */ 1 34 4 pad bit (33) unaligned, 1 35 1 36 2 print_options, /* command line options affecting the print request ... */ 1 37 3 formatting_mode fixed binary, /* ... output mode for the message header, etc. */ 1 38 1 39 2 reply_options, /* command line options affecting the reply request ... */ 1 40 3 line_length fixed binary, /* ... line length to be used by send_mail for filling */ 1 41 3 indentation fixed binary, /* ... amount to indent original text when included */ 1 42 3 flags, 1 43 4 include_original bit (1) unaligned, /* ... ON => include original message text in the reply */ 1 44 4 include_authors bit (1) unaligned, /* ... ON => include original authors as recipients */ 1 45 4 include_recipients bit (1) unaligned, /* ... ON => include original recipients as recipients */ 1 46 4 include_self bit (2) unaligned, /* ... ON => include this user as a recipient of the reply if 1 47* selected by include_authors/include_recipients */ 1 48 4 fill_control bit (2) unaligned, /* ... controls message filling by send_mail */ 1 49 4 pad bit (29) unaligned; 1 50 1 51 dcl RDM_INVOCATION character (8) static options (constant) initial ("rdm_0009"); 1 52 1 53 dcl rdm_invocation_ptr pointer; 1 54 1 55 dcl rdm_area area based (rdm_invocation.area_ptr); 1 56 1 57 1 58 /* Defined settings for reply_options.include_self */ 1 59 1 60 dcl (DEFAULT_INCLUDE_SELF initial ("00"b), /* neither -include_self nor -no_include_self given */ 1 61 NO_INCLUDE_SELF initial ("01"b), /* -no_include_self explicitly given */ 1 62 INCLUDE_SELF initial ("10"b)) /* -include_self explicitly given */ 1 63 bit (2) aligned static options (constant); 1 64 1 65 /* END INCLUDE FILE ... rdm_invocation.incl.pl1 */ 1101 1102 2 1 /* BEGIN INCLUDE FILE ... rdm_message_list.incl.pl1 */ 2 2 /* Created: September 1983 by G. Palter */ 2 3 2 4 /* Definition of per-message data maintained by read_mail: This list is maintined in parallel to the mailbox structure by 2 5* read_mail's interface to the mail_system_ mailbox manager (rdm_mailbox_interface_). It serves two purposes: 2 6* (1) It provides a place to store read_mail-specific per-message data (ie: the processed flag). 2 7* (2) It provides the ability to provide arbitrary mappings between read_mail message numbers and the actual indeces 2 8* within the mailbox structure. This mapping allows read_mail to preserve its message numbers for an invocation 2 9* even if messages are expunged which causes them to disappear from the mailbox structure (NB: the "expunge" 2 10* request is not yet implemented). This mapping also allows read_mail to present the messages in the mailbox to 2 11* the user in a different order than they actually appear in the mailbox (eg: sorted by date/time created) */ 2 12 2 13 dcl 1 message_list aligned based (rdm_invocation.message_list_ptr), 2 14 2 n_messages fixed binary, /* # of messages known to read_mail at present */ 2 15 2 pad bit (36), 2 16 2 messages (message_list_n_messages refer (message_list.n_messages)), 2 17 3 message_idx fixed binary, /* index of this message in the mailbox structure */ 2 18 3 flags, 2 19 4 processed bit (1) unaligned, /* ON => this message may be deleted without query */ 2 20 4 pad bit (35) unaligned, 2 21 3 search_text, /* describes copy of messages used for regexp searches */ 2 22 4 search_text_ptr pointer, /* ... -> the saved printed represetnation */ 2 23 4 search_text_lth fixed binary (21); /* ... length of said representation in characters */ 2 24 2 25 dcl message_list_n_messages fixed binary; 2 26 2 27 /* END INCLUDE FILE ... rdm_message_list.incl.pl1 */ 1103 1104 3 1 /* BEGIN INCLUDE FILE ... rdm_message_chains.incl.pl1 */ 3 2 /* Created: September 1983 by G. Palter */ 3 3 3 4 3 5 /* Definition of a read_mail message chain */ 3 6 3 7 dcl 1 message_chain aligned based (message_chain_ptr), 3 8 2 n_messages fixed binary, /* # of messages in the chain */ 3 9 2 messages (message_list.n_messages) fixed binary; /* read_mail message numbers of the messages in the chain */ 3 10 3 11 dcl message_chain_ptr pointer; 3 12 3 13 3 14 /* Message chains maintained by read_mail's interface to the mail_system_ mailbox manager (rdm_mailbox_interface_) -- 3 15* (1) The first chain is a list of all messages in the mailbox which have not yet been expunged and consists of all 3 16* messages whether or not they have been marked for deletion. 3 17* (2) The second chain is a list of all messages in the mailbox which have not been marked for later deletion. 3 18* (3) The third chain is a list of all messages which have been marked for later deletion. 3 19* The message specifier parser uses one of these three chains as the basis for selecting the messages to be processed by 3 20* a request based on the use of "-include_deleted", "-only_non_deleted", or "-only_deleted", respectively; in this way, 3 21* the amount of code in the parser which must distinguish between these three types of selections is minimized */ 3 22 3 23 dcl 1 all_chain aligned based (rdm_invocation.message_chains.all) like message_chain; 3 24 dcl 1 undeleted_chain aligned based (rdm_invocation.message_chains.undeleted) like message_chain; 3 25 dcl 1 deleted_chain aligned based (rdm_invocation.message_chains.deleted) like message_chain; 3 26 3 27 3 28 /* The marked chain is the list of messages that are to be processed by the current request */ 3 29 3 30 dcl 1 marked_chain aligned based (rdm_invocation.message_chains.marked) like message_chain; 3 31 3 32 3 33 /* The marked as original chain is the list of messages that are being processed by a reply or forward request: This 3 34* chain is used to define the default set of messages to be processed by the various send_mail "original" requests and 3 35* forward "original" sub-requests */ 3 36 3 37 dcl 1 marked_as_original_chain aligned based (rdm_invocation.message_chains.marked_as_original) like message_chain; 3 38 3 39 3 40 /* Definition of the acceptable message selection criteria */ 3 41 3 42 dcl (ALL_MESSAGES initial (1), /* all messages: -include_deleted */ 3 43 NON_DELETED_MESSAGES initial (2), /* only undeleted messages: -only_non_deleted (default) */ 3 44 ONLY_DELETED_MESSAGES initial (3)) /* only deleted messages: -only_deleted */ 3 45 fixed binary static options (constant); 3 46 3 47 /* END INCLUDE FILE ... rdm_message_chains.incl.pl1 */ 1105 1106 4 1 /* BEGIN INCLUDE FILE ... sdm_subsystem_info.incl.pl1 */ 4 2 /* Created: 28 December 1978 by G. Palter (version 1) */ 4 3 /* Modified: 23 January 1979 by G. Palter (version 2) */ 4 4 /* Modified: 31 May 1980 by G. Palter (version 3) -- support of the "print_original" request */ 4 5 /* Modified: 16 February 1982 by G. Palter (version 4) */ 4 6 /* Modified: 17 September 1982 by G. Palter (version 5) */ 4 7 /* Modified: August 1983 by G. Palter (version 6) -- support for the bcc field and the new definition of the 4 8* In-Reply-To field */ 4 9 4 10 4 11 /* Arguments to the send_mail subsystem */ 4 12 4 13 dcl 1 sdm_subsystem_info aligned based (sdm_subsystem_info_ptr), 4 14 2 version character (8) unaligned, 4 15 4 16 2 input_type fixed binary, /* source of message text (see below) */ 4 17 2 input_file, /* identifies file of input text when needed */ 4 18 3 dname character (168) unaligned, /* ... directory and entry name */ 4 19 3 ename character (32) unaligned, 4 20 4 21 2 address_lists, /* gives sources, destinations, etc. */ 4 22 3 from pointer, /* ... -> authors */ 4 23 3 reply_to pointer, /* ... -> destinations for a reply */ 4 24 3 to pointer, /* ... -> primary recipients */ 4 25 3 cc pointer, /* ... -> secondary recipients */ 4 26 3 bcc pointer, /* ... -> "blind" recipients */ 4 27 4 28 2 subject aligned, /* subject of message */ 4 29 3 subject_ptr pointer, /* ... -> text of subject */ 4 30 3 subject_lth fixed binary (21), /* ... its length */ 4 31 3 subject_given bit (1) aligned, /* ... ON => subject given even zero length */ 4 32 4 33 2 options like send_mail_options aligned, /* permanent options as modified by ctl args */ 4 34 4 35 2 initial_requests aligned, /* initial request line to execute */ 4 36 3 initial_requests_ptr pointer, 4 37 3 initial_requests_lth fixed binary (21), 4 38 4 39 2 rdm_invocation_ptr pointer, /* -> description of read_mail invocation which created this 4 40* send_mail invocation to construct a reply message */ 4 41 4 42 2 original_messages_ptr pointer; /* -> optional list of original messages from which the 4 43* In-Reply-To field is generated and the original text(s) 4 44* extracted (see sdm_original_messages.incl.pl1) */ 4 45 4 46 dcl sdm_subsystem_info_ptr pointer; 4 47 4 48 dcl SDM_SUBSYSTEM_INFO_VERSION_6 character (8) static options (constant) initial ("sdmssi06"); 4 49 4 50 4 51 /* Sources of input for message text */ 4 52 4 53 dcl (TERMINAL_INPUT initial (1), 4 54 FILE_INPUT initial (2)) 4 55 fixed binary static options (constant); 4 56 4 57 /* END INCLUDE FILE ... sdm_subsystem_info.incl.pl1 */ 1107 1108 5 1 /* BEGIN INCLUDE FILE ... send_mail_options.incl.pl1 */ 5 2 /* Created: 28 December 1978 by G. Palter */ 5 3 /* Modified: 25 April 1980 by G. Palter for version 2 -- abbrev processing */ 5 4 /* Modified: 27 January 1981 by G. Palter for version 3 -- increased prompt string length */ 5 5 /* Modified: 16 February 1982 by G. Palter for version 4 -- default profile in addition to current profile */ 5 6 /* Modified: 17 September 1982 by G. Palter for version 5 -- new definition of -fill, -debug, and making -fill/-rql 5 7* dependent on mode of message input (terminal/file) */ 5 8 /* Modified: August 1983 by G. Palter for version 6 -- elimination of -header and -message_id (always ON), elimination of 5 9* -no_abort as the command line -abort/-no_abort no longer sets the default for the send request control argument, 5 10* addition of -auto_write/-no_auto_write as required by the MCR boards, and addition of options pertaining to 5 11* treatment of the original message(s) text when invoked by a reply request */ 5 12 5 13 /* User settable options of the send_mail subsystem */ 5 14 5 15 dcl 1 send_mail_options aligned based (send_mail_options_ptr), 5 16 2 version character (8) unaligned, 5 17 5 18 2 fill_width fixed binary, /* default width for filling */ 5 19 5 20 2 prompt_control aligned, /* controls how send_mail prompts */ 5 21 3 prompt_string character (64) varying, /* ... user-supplied string */ 5 22 3 flags aligned, 5 23 4 prompt_control bit (2) unaligned, /* ... default prompt/use above string/don't prompt */ 5 24 4 pad bit (34) unaligned, 5 25 5 26 2 default_profile_ptr pointer, /* -> default profile to be used if flags.abbrev is ON */ 5 27 2 profile_ptr pointer, /* -> profile to be used if flags.abbrev is ON */ 5 28 5 29 2 original_text_control aligned, /* controls send_mail's treatment of original message text */ 5 30 3 original_text_indentation fixed binary, /* ... # of columns to indent the text if requested */ 5 31 3 flags, 5 32 4 include_original_text bit (1) unaligned, /* ... ON => text from message(s) being answered is to be 5 33* included in the reply before the actual answer */ 5 34 4 indent_original_text bit (1) unaligned, /* ... ON => the original text is to be indented */ 5 35 4 fill_original_text bit (1) unaligned, /* ... ON => the original text is to be re-filled */ 5 36 4 pad bit (33) unaligned, 5 37 5 38 2 flags aligned, 5 39 3 acknowledge bit (1) unaligned, /* ON => user wants acknowledgement from recipients */ 5 40 3 brief bit (1) unaligned, /* ON => suppress "Mail delivered..." messages */ 5 41 3 notify bit (1) unaligned, /* ON => send each recipient a wakeup */ 5 42 3 abbrev bit (1) unaligned, /* ON => use abbrev processing in this invocation */ 5 43 3 debug bit (1) unaligned, /* ON => enable debugging features */ 5 44 3 auto_write bit (1) unaligned, /* ON => qedx request automatically rewrites on quit (sigh) */ 5 45 3 fill_control bit (2) unaligned, /* default/explicit -fill/explicit -no_fill */ 5 46 3 request_loop_control bit (2) unaligned, /* default/explicit -rql/explicit -nrql */ 5 47 3 pad bit (26) unaligned; 5 48 5 49 dcl send_mail_options_ptr pointer; 5 50 5 51 dcl SEND_MAIL_OPTIONS_VERSION_6 character (8) static options (constant) initial ("sdmopt06"); 5 52 5 53 5 54 /* Prompt control options */ 5 55 5 56 dcl (DEFAULT_PROMPT initial ("00"b), /* use default subsystem prompt */ 5 57 USE_PROMPT_STRING initial ("01"b), /* use prompt string supplied by user (via -prompt STR) */ 5 58 NO_PROMPT initial ("10"b)) /* disable subsystem prompt */ 5 59 bit (2) static options (constant); 5 60 5 61 5 62 /* Fill control options */ 5 63 5 64 dcl (DEFAULT_FILL initial ("00"b), /* fill if terminal input; do not fill if file input */ 5 65 FILL initial ("01"b), /* user specified -fill */ 5 66 NO_FILL initial ("10"b)) /* user specified -no_fill */ 5 67 bit (2) static options (constant); 5 68 5 69 5 70 /* Request loop control options */ 5 71 5 72 dcl (DEFAULT_REQUEST_LOOP initial ("00"b), /* enter loop if file input; do not enter if terminal input */ 5 73 REQUEST_LOOP initial ("01"b), /* user specified -request_loop */ 5 74 NO_REQUEST_LOOP initial ("10"b)) /* user specified -no_request_loop */ 5 75 bit (2) static options (constant); 5 76 5 77 /* END INCLUDE FILE ... send_mail_options.incl.pl1 */ 1109 1110 6 1 /* BEGIN INCLUDE FILE ... sdm_original_messages.incl.pl1 */ 6 2 /* Created: August 1983 by G. Palter */ 6 3 6 4 /* Definition of the list of original messages for which this message is a reply: send_mail must keep track of this list 6 5* separately from the copy in the message itself as, when qedx/apply -header is used, the mail system can not convert the 6 6* printed representation of the In-Reply-To field back into its internal form; therefore, send_mail will delete the the 6 7* list of reply references from the message before allowing the user to edit the message and will restore the list on 6 8* return from the editor. This list is also used by callers of the send_mail subsystem (ie: read_mail's reply request) 6 9* to supply the initial content for the reply references of the message; if requested, send_mail will extract the message 6 10* body from these message(s) for inclusion in the body of the message being created by the user */ 6 11 6 12 dcl 1 original_messages aligned based (original_messages_ptr), 6 13 2 version character (8) unaligned, 6 14 2 pad bit (36), 6 15 2 n_original_messages fixed binary, /* # of original messages listed herein */ 6 16 2 messages (original_messages_n_original_messages refer (original_messages.n_original_messages)), 6 17 3 message_ptr pointer, /* ... -> the message */ 6 18 3 message_idx fixed binary, /* ... # assigned to the message by read_mail */ 6 19 3 pad bit (36); 6 20 6 21 dcl ORIGINAL_MESSAGES_VERSION_1 character (8) static options (constant) initial ("sdmoml01"); 6 22 6 23 dcl original_messages_n_original_messages fixed binary; /* required to allocate the above structure */ 6 24 6 25 dcl original_messages_ptr pointer; 6 26 6 27 6 28 /* END INCLUDE FILE ... sdm_original_messages.incl.pl1 */ 1111 1112 7 1 /* BEGIN INCLUDE FILE ... mlsys_data.incl.pl1 */ 7 2 /* Created: 20 Decembber 1978 by G. Palter */ 7 3 /* Modified: 1 July 1983 by G. Palter to merge with mlsys_internal_data_ */ 7 4 7 5 /* Constants defined by the Multics mail system for external use */ 7 6 7 7 dcl mlsys_data_$system_directory character (168) external; /* directory containing per-system data (mail table/queues) */ 7 8 7 9 7 10 /* Static data defined by the Multics mail system for external use */ 7 11 7 12 dcl mlsys_data_$user_default_mailbox_address pointer external; 7 13 /* -> the address of the user's default mailbox */ 7 14 dcl mlsys_data_$user_mail_table_address pointer external; /* -> the address of the user's entry in the mail table */ 7 15 dcl mlsys_data_$user_logbox_address pointer external; /* -> the address of the user's logbox */ 7 16 7 17 /* END INCLUDE FILE ... mlsys_data.incl.pl1 */ 1113 1114 8 1 /* BEGIN INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 8 2 /* Created: June 1983 by G. Palter */ 8 3 /* Modified: March 1984 by G. Palter to remove ignore_log_save option */ 8 4 8 5 /* Options for the mlsys_utils_$parse_address_control_arguments, mlsys_utils_$parse_address_list_control_arguments, and 8 6* mlsys_utils_$parse_mailbox_control_arguments entrypoints */ 8 7 8 8 dcl 1 parse_ca_options aligned based (parse_ca_options_ptr), 8 9 2 version character (8) unaligned, 8 10 2 logbox_creation_mode fixed binary, /* specifies the action to be taken if the address/mailbox is 8 11* the user's logbox, address/mailbox validation is requested, 8 12* and the logbox does not exist */ 8 13 2 savebox_creation_mode fixed binary, /* ... same as above but for any savebox */ 8 14 2 flags, 8 15 3 abort_on_errors bit (1) unaligned, /* ON => use ssu_$abort_line to report errors (ie: abort on 8 16* the first error); OFF => use ssu_$print_message */ 8 17 3 validate_addresses bit (1) unaligned, /* ON => validate the existence of the address/mailbox; 8 18* OFF => only validate the command/request line syntax */ 8 19 3 mbz bit (34) unaligned; /* must be set to ""b by the caller */ 8 20 8 21 dcl PARSE_CA_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlspca01"); 8 22 8 23 dcl parse_ca_options_ptr pointer; 8 24 8 25 8 26 /* Defined logbox/savebox creation modes */ 8 27 8 28 dcl (DONT_CREATE_MAILBOX initial (0), /* do not create the mailbox and issue an error message */ 8 29 QUERY_TO_CREATE_MAILBOX initial (1), /* ask the user for permission to create the mailbox */ 8 30 CREATE_AND_ANNOUNCE_MAILBOX initial (2), /* create the mailbox and inform the user of this action */ 8 31 SILENTLY_CREATE_MAILBOX initial (3)) /* create the mailbox but don't inform the user */ 8 32 fixed binary static options (constant); 8 33 8 34 /* END INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 1115 1116 9 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 9 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 9 7* Added seen switch to message. 9 8* END HISTORY COMMENTS */ 9 9 9 10 9 11 /* Created: June 1983 by G. Palter */ 9 12 9 13 /* Definition of a message as used by the Multics Mail System */ 9 14 9 15 dcl 1 message aligned based (message_ptr), 9 16 2 version character (8) unaligned, 9 17 2 reserved bit (144), /* for exclusive use of the mail system */ 9 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 9 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 9 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 9 21 2 n_body_sections fixed binary, /* # of sections in the body */ 9 22 2 flags, 9 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 9 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 9 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 9 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 9 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 9 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 9 29 2 pad bit (36), 9 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 9 31 2 header, 9 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 9 33 3 access_class bit (72), /* AIM access class of this message */ 9 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 9 35 3 from pointer, /* -> address list of author(s) of the message */ 9 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 9 37 3 to pointer, /* -> address list of primary recipients */ 9 38 3 cc pointer, /* -> address list of secondary recipients */ 9 39 3 bcc pointer, /* -> address list of blind recipients */ 9 40 3 subject like message_text_field, /* subject of the message */ 9 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 9 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 9 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 9 44 2 body, 9 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 9 46 3 pad bit (36), 9 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 9 48 9 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 9 50 9 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 9 52 9 53 dcl message_ptr pointer; 9 54 9 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 9 56 message_references_list_n_references) 9 57 fixed binary; /* for exclusive use of the mail system */ 9 58 9 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 9 60 9 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 9 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 9 63 2 sender pointer, /* -> address of entity that mailed the message */ 9 64 2 trace pointer, /* -> message_trace describing how it got here */ 9 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 9 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 9 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 9 68 9 69 dcl message_envelope_ptr pointer; 9 70 9 71 9 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 9 73 9 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 9 75 2 pad pointer, /* forces even word alignment */ 9 76 2 version character (8) unaligned, 9 77 2 envelope like message_envelope; 9 78 9 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 9 80 9 81 dcl message_envelope_parameter_ptr pointer; 9 82 9 83 9 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 9 85* networks to reach this recipient */ 9 86 9 87 dcl 1 message_trace aligned based (message_trace_ptr), 9 88 2 version character (8) unaligned, 9 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 9 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 9 91 2 pad bit (36), 9 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 9 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 9 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 9 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 9 96 3 receiving_host character (256) varying, /* ... the host which received it */ 9 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 9 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 9 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 9 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 9 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 9 102 9 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 9 104 9 105 dcl message_trace_ptr pointer; 9 106 9 107 /* Definition of a message's redistributions list */ 9 108 9 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 9 110 2 version character (8) unaligned, 9 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 9 112 2 pad bit (36), 9 113 2 n_redistributions fixed binary, /* # of redistributions */ 9 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 9 115 like message_redistribution; /* the redistributions: oldest first */ 9 116 9 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 9 118 9 119 9 120 /* Definition of a single redistribution (forwarding) of a message */ 9 121 9 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 9 123 2 envelope like message_envelope, 9 124 2 header, 9 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 9 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 9 127 3 from pointer, /* -> address list of authors of this redistribution */ 9 128 3 to pointer, /* -> address list of recipients of the redistribution */ 9 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 9 130 9 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 9 132 based (message_redistribution.comment.text_ptr); 9 133 9 134 dcl message_redistribution_ptr pointer; 9 135 9 136 9 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 9 138 9 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 9 140 2 pad pointer, /* forces even word alignment */ 9 141 2 version character (8) unaligned, 9 142 2 redistribution like message_redistribution; 9 143 9 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 9 145 9 146 dcl message_redistribution_parameter_ptr pointer; 9 147 9 148 /* Definition of the list of user-defined fields in a message */ 9 149 9 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 9 151 2 version character (8) unaligned, 9 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 9 153 2 pad bit (36), 9 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 9 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 9 156 like message_user_field; /* the actual user-defined fields */ 9 157 9 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 9 159 9 160 9 161 /* Definition of a user defined message header field */ 9 162 9 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 9 164 2 header, 9 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 9 166 3 field_type fixed binary, /* type of data contained in this field */ 9 167 2 field_type_variable bit (144); /* the actual data (see below) */ 9 168 9 169 dcl message_user_field_ptr pointer; 9 170 9 171 9 172 /* Defined types of user defined fields */ 9 173 9 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 9 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 9 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 9 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 9 178 fixed binary static options (constant); 9 179 9 180 9 181 /* Structures used to access the data for the different types of user defined fields */ 9 182 9 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 9 184 2 header like message_user_field.header, 9 185 2 text like message_text_field; /* the message text */ 9 186 9 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 9 188 based (message_text_user_field.text.text_ptr); 9 189 9 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 9 191 2 header like message_user_field.header, 9 192 2 address_list_ptr pointer, /* -> the address list */ 9 193 2 pad bit (72); 9 194 9 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 9 196 2 header like message_user_field.header, 9 197 2 date_time fixed binary (71), /* the clock reading */ 9 198 2 pad bit (72); 9 199 9 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 9 201 2 header like message_user_field.header, 9 202 2 value fixed binary (35), /* the integer value */ 9 203 2 pad bit (108); 9 204 9 205 9 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 9 207 9 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 9 209 2 pad pointer, /* forces even word alignment */ 9 210 2 version character (8) unaligned, 9 211 2 user_field like message_user_field; 9 212 9 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 9 214 9 215 dcl message_user_field_parameter_ptr pointer; 9 216 9 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 9 218 9 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 9 220 2 version character (8) unaligned, 9 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 9 222 2 pad bit (36), 9 223 2 n_references fixed binary, /* # of references in this list */ 9 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 9 225 like message_reference; /* the references themselves */ 9 226 9 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 9 228 9 229 dcl message_references_list_ptr pointer; 9 230 9 231 9 232 /* Definition of a reference to another message */ 9 233 9 234 dcl 1 message_reference aligned based (message_reference_ptr), 9 235 2 message_id bit (72), /* ID of the other message */ 9 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 9 237 2 from pointer, /* -> address list of authors of the other message */ 9 238 2 subject like message_text_field; /* subject of the other message */ 9 239 9 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 9 241 based (message_reference.subject.text_ptr); 9 242 9 243 dcl message_reference_ptr pointer; 9 244 9 245 9 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 9 247 9 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 9 249 2 pad pointer, /* forces even word alignment */ 9 250 2 version character (8) unaligned, 9 251 2 reference like message_reference; 9 252 9 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 9 254 9 255 dcl message_reference_parameter_ptr pointer; 9 256 9 257 9 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 9 259 9 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 9 261 2 text_ptr pointer, /* -> the actual text */ 9 262 2 text_lth fixed binary (21), /* length of said text */ 9 263 2 flags, 9 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 9 265* OFF => the text will always be a single line */ 9 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 9 267 9 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 9 269 9 270 dcl message_text_field_ptr pointer; 9 271 9 272 /* Definition of a section of the body of a message */ 9 273 9 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 9 275 2 header, 9 276 3 section_type fixed binary, /* type of "text" stored in this section */ 9 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 9 278 2 section_type_variable bit (144); /* the actual data (see below) */ 9 279 9 280 dcl message_body_section_ptr pointer; 9 281 9 282 9 283 /* Defined types of message body sections */ 9 284 9 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 9 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 9 287 fixed binary static options (constant); 9 288 9 289 9 290 /* Structures used to access the data for the different types of message body sections */ 9 291 9 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 9 293 2 header like message_body_section.header, 9 294 2 text_ptr pointer, /* -> the text */ 9 295 2 text_lth fixed binary (21), /* length of said text in characters */ 9 296 2 reserved bit (36); /* for exclusive use of the mail system */ 9 297 9 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 9 299 based (message_preformatted_body_section.text_ptr); 9 300 9 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 9 302 2 header like message_body_section.header, 9 303 2 bit_string_ptr pointer, /* -> the bit string */ 9 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 9 305 2 reserved bit (36); /* for exclusive use of the mail system */ 9 306 9 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 9 308 based (message_bit_string_body_section.bit_string_ptr); 9 309 9 310 9 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 9 312 9 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 9 314 2 pad pointer, /* forces even word alignment */ 9 315 2 version character (8) unaligned, 9 316 2 section like message_body_section; 9 317 9 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 9 319 9 320 dcl message_body_section_parameter_ptr pointer; 9 321 9 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 1117 1118 10 1 /* BEGIN INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 10 2 /* Created: June 1983 by G. Palter */ 10 3 10 4 /* Definition of an address list -- a collection of addresses used as the value of certain message fields, etc. */ 10 5 10 6 dcl 1 address_list aligned based (address_list_ptr), 10 7 2 version character (8) unaligned, 10 8 2 reserved bit (144), /* ... exclusively for use by the mail system */ 10 9 2 n_addresses fixed binary, /* # of address in this list */ 10 10 2 addresses (address_list_n_addresses refer (address_list.n_addresses)) pointer; 10 11 10 12 dcl ADDRESS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsals02"); 10 13 10 14 dcl address_list_ptr pointer; 10 15 10 16 dcl address_list_n_addresses fixed binary; /* reserved exclusively for use by the mail system */ 10 17 10 18 /* END INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 1119 1120 11 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 11 2* 11 3* Values for the "access mode" argument so often used in hardcore 11 4* James R. Davis 26 Jan 81 MCR 4844 11 5* Added constants for SM access 4/28/82 Jay Pattin 11 6* Added text strings 03/19/85 Chris Jones 11 7**/ 11 8 11 9 11 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 11 11 dcl ( 11 12 N_ACCESS init ("000"b), 11 13 R_ACCESS init ("100"b), 11 14 E_ACCESS init ("010"b), 11 15 W_ACCESS init ("001"b), 11 16 RE_ACCESS init ("110"b), 11 17 REW_ACCESS init ("111"b), 11 18 RW_ACCESS init ("101"b), 11 19 S_ACCESS init ("100"b), 11 20 M_ACCESS init ("010"b), 11 21 A_ACCESS init ("001"b), 11 22 SA_ACCESS init ("101"b), 11 23 SM_ACCESS init ("110"b), 11 24 SMA_ACCESS init ("111"b) 11 25 ) bit (3) internal static options (constant); 11 26 11 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 11 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 11 29 11 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 11 31 static options (constant); 11 32 11 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 11 34 static options (constant); 11 35 11 36 dcl ( 11 37 N_ACCESS_BIN init (00000b), 11 38 R_ACCESS_BIN init (01000b), 11 39 E_ACCESS_BIN init (00100b), 11 40 W_ACCESS_BIN init (00010b), 11 41 RW_ACCESS_BIN init (01010b), 11 42 RE_ACCESS_BIN init (01100b), 11 43 REW_ACCESS_BIN init (01110b), 11 44 S_ACCESS_BIN init (01000b), 11 45 M_ACCESS_BIN init (00010b), 11 46 A_ACCESS_BIN init (00001b), 11 47 SA_ACCESS_BIN init (01001b), 11 48 SM_ACCESS_BIN init (01010b), 11 49 SMA_ACCESS_BIN init (01011b) 11 50 ) fixed bin (5) internal static options (constant); 11 51 11 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 1121 1122 12 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 12 2 /* format: style2,^inddcls,idind32 */ 12 3 12 4 declare 1 terminate_file_switches based, 12 5 2 truncate bit (1) unaligned, 12 6 2 set_bc bit (1) unaligned, 12 7 2 terminate bit (1) unaligned, 12 8 2 force_write bit (1) unaligned, 12 9 2 delete bit (1) unaligned; 12 10 12 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 12 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 12 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 12 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 12 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 12 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 12 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 12 18 12 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 1123 1124 1125 end rdm_reply_request_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/02/89 0815.0 rdm_reply_request_.pl1 >spec>install>1079>rdm_reply_request_.pl1 1101 1 10/27/83 2104.3 rdm_invocation.incl.pl1 >ldd>include>rdm_invocation.incl.pl1 1103 2 10/27/83 2104.3 rdm_message_list.incl.pl1 >ldd>include>rdm_message_list.incl.pl1 1105 3 10/27/83 2104.3 rdm_message_chains.incl.pl1 >ldd>include>rdm_message_chains.incl.pl1 1107 4 10/27/83 2104.3 sdm_subsystem_info.incl.pl1 >ldd>include>sdm_subsystem_info.incl.pl1 1109 5 10/27/83 2104.2 send_mail_options.incl.pl1 >ldd>include>send_mail_options.incl.pl1 1111 6 10/27/83 2104.3 sdm_original_messages.incl.pl1 >ldd>include>sdm_original_messages.incl.pl1 1113 7 10/27/83 2104.2 mlsys_data.incl.pl1 >ldd>include>mlsys_data.incl.pl1 1115 8 06/18/84 1324.1 mlsys_parse_ca_options.incl.pl1 >ldd>include>mlsys_parse_ca_options.incl.pl1 1117 9 05/22/86 1225.8 mlsys_message.incl.pl1 >ldd>include>mlsys_message.incl.pl1 1119 10 10/27/83 2104.2 mlsys_address_list.incl.pl1 >ldd>include>mlsys_address_list.incl.pl1 1121 11 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 1123 12 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.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. ADDRESS_LIST_VERSION_2 000002 constant char(8) initial packed unaligned dcl 10-12 set ref 302* 396* 860* ALL_MESSAGES constant fixed bin(17,0) initial dcl 3-42 ref 314 489 CREATE_AND_ANNOUNCE_MAILBOX constant fixed bin(17,0) initial dcl 8-28 ref 285 DEFAULT_INCLUDE_AUTHORS constant fixed bin(1,0) initial dcl 164 ref 265 574 DEFAULT_INCLUDE_SELF constant bit(2) initial dcl 1-60 ref 269 FILE_INPUT constant fixed bin(17,0) initial dcl 4-53 ref 373 509 FILL constant bit(2) initial packed unaligned dcl 5-64 ref 428 INCLUDE_AUTHORS constant fixed bin(1,0) initial dcl 164 ref 329 INCLUDE_SELF constant bit(2) initial dcl 1-60 ref 271 NON_DELETED_MESSAGES constant fixed bin(17,0) initial dcl 3-42 ref 247 318 NO_FILL constant bit(2) initial packed unaligned dcl 5-64 ref 429 NO_INCLUDE_AUTHORS 010305 constant fixed bin(1,0) initial dcl 164 ref 332 578 NO_PROMPT constant bit(2) initial packed unaligned dcl 5-56 ref 467 474 NO_REQUEST_LOOP constant bit(2) initial packed unaligned dcl 5-72 ref 485 ONLY_DELETED_MESSAGES constant fixed bin(17,0) initial dcl 3-42 ref 317 ORIGINAL_MESSAGES_VERSION_1 000006 constant char(8) initial packed unaligned dcl 6-21 ref 603 PARSE_CA_OPTIONS_VERSION_1 000004 constant char(8) initial packed unaligned dcl 8-21 ref 284 P_rdm_invocation_ptr parameter pointer dcl 102 ref 95 222 225 P_sci_ptr parameter pointer dcl 101 set ref 95 222 226* 240* 250* 302* 304* 312* 360* 362* 390* 392* 398* 434* 437* 494* 498* 513* 516* 525* 528* 540* 555* 564* 567* 609* 636* 643* 647* 669* 673* 674* 690* 694* 705* 726* 730* 848* 862* 870* 965* 1026* 1040* 1075* 1078* QUERY_TO_CREATE_MAILBOX constant fixed bin(17,0) initial dcl 8-28 ref 286 REQUEST_LOOP constant bit(2) initial packed unaligned dcl 5-72 ref 483 558 646 R_ACCESS 000126 constant bit(3) initial packed unaligned dcl 11-11 set ref 514* 526* 1077* SDM_SUBSYSTEM_INFO_VERSION_6 000010 constant char(8) initial packed unaligned dcl 4-48 set ref 238* TERMINAL_INPUT constant fixed bin(17,0) initial dcl 4-53 ref 369 TERM_FILE_TERM 000000 constant bit(3) initial packed unaligned dcl 12-14 set ref 519* 747* 749* USE_PROMPT_STRING constant bit(2) initial packed unaligned dcl 5-56 ref 470 abbrev 140(03) based bit(1) level 4 packed packed unaligned dcl 4-13 set ref 449* 452* 530* 542* abbrev_ca_given 000212 automatic bit(1) dcl 123 set ref 281* 449* 453* 530 532* 538 abbrev_enabled 000213 automatic bit(1) dcl 123 set ref 540* 542 abort 000236 automatic bit(1) dcl 147 set ref 255* 417* 418* 555 abort_on_errors 4 000220 automatic bit(1) level 3 packed packed unaligned dcl 132 set ref 287* acknowledge 140 based bit(1) level 4 packed packed unaligned dcl 4-13 set ref 420* 422* addr builtin function dcl 220 ref 302 302 378 379 383 385 386 390 390 635 862 862 address_idx 000365 automatic fixed bin(17,0) dcl 832 in procedure "add_recipients" set ref 837* 838* address_idx 000105 automatic fixed bin(17,0) dcl 941 in procedure "print_recipients_list" set ref 985* 986* address_idx 000406 automatic fixed bin(17,0) dcl 907 in procedure "check_single_list" set ref 911* 912* address_list based structure level 1 dcl 10-6 address_list_ptr 000302 automatic pointer dcl 10-14 set ref 639* 640* 640* 835* 837 838 909* 911 912 959* 960* 962* address_lists 66 based structure level 2 dcl 4-13 address_ptr 000242 automatic pointer dcl 152 in procedure "rdm_reply_request_" set ref 228* 390* 395 396* 401* 751 751* address_ptr 000362 automatic pointer dcl 830 in procedure "add_recipients" set ref 838* 840* 843* 856* 860* 870* address_ptr 000102 automatic pointer dcl 940 in procedure "print_recipients_list" set ref 986* 989* address_ptr 000404 automatic pointer dcl 906 in procedure "check_single_list" set ref 912* 914* 920* address_summary 000107 automatic varying char dcl 948 set ref 977* 982 989* 999 1051 1055 addresses 10 based pointer array level 2 dcl 10-6 set ref 838 912 977* 986 area_ptr 4 based pointer level 2 dcl 1-6 ref 602 803 809 argument based char packed unaligned dcl 104 set ref 314 314 314 317 317 318 318 321 321 322 322 324 324 329 329 329 332 332 332 336 336 337 337 340 340 342 342 347 347 349 349 352 352 354 354 357 357 357 359* 360* 362* 369 369 371 371 378 379 379 381 385 386 388 388 388 398 406 406 412 412 417 418 420 420 422 422 425 425 426 426 428 428 429 429 431 431 433* 434* 441 441 442 442 445 446 449 449 451 451 455 455 462 462 463 463 465 465 471 474 474 477 477 483 483 485 485 489 489 490 490 490 490 494* 690* argument_idx 000105 automatic fixed bin(17,0) dcl 107 set ref 291* 298 302* 309 312* 390* 403* 403 505* 505 690 693* 693 694* 710 argument_lth 000100 automatic fixed bin(21,0) dcl 105 set ref 312* 314 314 314 317 317 318 318 321 321 322 322 324 324 329 329 329 332 332 332 336 336 337 337 340 340 342 342 347 347 349 349 352 352 354 354 357 357 357 359 359 360 360 362 362 369 369 371 371 375 378 379 379 381 385 386 388 388 388 398 406 406 410 412 412 417 418 420 420 422 422 425 425 426 426 428 428 429 429 431 431 433 433 434 434 441 441 442 442 445 446 449 449 451 451 455 455 459 462 462 463 463 465 465 467 471 474 474 477 477 480 483 483 485 485 489 489 490 490 490 490 494 494 690 690 694* 726* 728* argument_ptr 000102 automatic pointer dcl 106 set ref 312* 314 314 314 317 317 318 318 321 321 322 322 324 324 329 329 329 332 332 332 336 336 337 337 340 340 342 342 347 347 349 349 352 352 354 354 357 357 357 359 360 362 369 369 371 371 374 378 379 379 381 385 386 388 388 388 398 406 406 409 412 412 417 418 420 420 422 422 425 425 426 426 428 428 429 429 431 431 433 434 441 441 442 442 445 446 449 449 451 451 455 455 458 462 462 463 463 465 465 471 474 474 477 477 479 483 483 485 485 489 489 490 490 490 490 494 690 694* 726* 728* auto_write 140(05) based bit(1) level 4 packed packed unaligned dcl 4-13 set ref 445* 446* bcc 46 based pointer level 3 in structure "message" dcl 9-15 in procedure "rdm_reply_request_" set ref 780* 780* bcc 76 based pointer level 3 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" set ref 302* 386 396* 639 780* 892* 892* 959 brief 140(01) based bit(1) level 4 packed packed unaligned dcl 4-13 set ref 425* 426* 652 669 cc 74 based pointer level 3 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" set ref 385 639 778* 779* 890* 890* 959 cc 44 based pointer level 3 in structure "message" dcl 9-15 in procedure "rdm_reply_request_" set ref 779* 779* cleanup 000262 stack reference condition dcl 218 ref 232 954 clear_original_message_chain 000225 automatic bit(1) dcl 134 set ref 230* 660* 664* 742 code 000364 automatic fixed bin(35,0) dcl 831 in procedure "add_recipients" set ref 840* 842 860* 862 862* 870* code 000260 automatic fixed bin(35,0) dcl 161 in procedure "rdm_reply_request_" set ref 238* 240 240* 249* 250 302* 304 304 304* 306 359* 360 362* 390* 392 392 392* 394 396* 398 398* 433* 434 511* 513 513* 514* 516 516* 524* 525 525* 526* 528 528* 608* 609 609* 635* 636 636* 662* 669 669 674* 728* 730 730* 960* 962* 964 977* 979 989* 990 990 992 1074* 1075 1075* 1077* 1078* compare_both_user_addresses 000254 automatic bit(1) dcl 155 set ref 592* 856 920 convert builtin function dcl 220 ref 1018 cu_$grow_stack_frame 000032 constant entry external dcl 176 ref 249 current_address_list_ptr based pointer dcl 127 set ref 302* current_address_list_ptr_ptr 000214 automatic pointer dcl 128 set ref 293* 300 302 378* 379* 383* 385* 386* 498 current_message 77 based fixed bin(17,0) level 2 dcl 1-6 set ref 617* 659 665* 744* currentsize builtin function dcl 220 ref 249 249 cv_dec_check_ 000034 constant entry external dcl 177 ref 359 433 debug 140(04) based bit(1) level 4 packed packed unaligned dcl 4-13 set ref 260* 462* 463* debug_mode 103(02) based bit(1) level 4 packed packed unaligned dcl 1-6 ref 260 default_profile_ptr 132 based pointer level 3 dcl 4-13 set ref 526* 540* 543 543* 545 delete_after_processing 000240 automatic bit(1) dcl 150 set ref 258* 321* 322* 669 676 dname 3 based char(168) level 3 packed packed unaligned dcl 4-13 set ref 511* 514* 516* 516* dont_issue_nis_warning 000234 automatic bit(1) dcl 144 set ref 269* 271* 275* 340* 344* 596 846 916* 923* emf_et_$send_mail_aborted 000010 external static fixed bin(35,0) dcl 169 ref 669 ename 55 based char(32) level 3 packed packed unaligned dcl 4-13 set ref 511* 514* 516* 516* error_table_$bad_conversion 000012 external static fixed bin(35,0) dcl 169 set ref 360* 434* error_table_$badopt 000014 external static fixed bin(35,0) dcl 169 set ref 494* error_table_$inconsistent 000016 external static fixed bin(35,0) dcl 169 set ref 564* 567* error_table_$noarg 000020 external static fixed bin(35,0) dcl 169 set ref 690* error_table_$smallarg 000022 external static fixed bin(35,0) dcl 169 ref 990 expand_pathname_ 000036 constant entry external dcl 178 ref 511 expand_pathname_$add_suffix 000040 constant entry external dcl 179 ref 524 fill_control 107(05) based bit(2) level 4 in structure "rdm_invocation" packed packed unaligned dcl 1-6 in procedure "rdm_reply_request_" ref 278 fill_control 140(06) based bit(2) level 4 in structure "sdm_subsystem_info" packed packed unaligned dcl 4-13 in procedure "rdm_reply_request_" set ref 278* 428* 429* fill_original_text 137(02) based bit(1) level 5 packed packed unaligned dcl 4-13 set ref 352* 354* 567 fill_width 106 based fixed bin(17,0) level 3 dcl 4-13 set ref 279* 433* 437 flags 103 based structure level 3 in structure "rdm_invocation" dcl 1-6 in procedure "rdm_reply_request_" flags 130 based structure level 4 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" flags 140 based structure level 3 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" flags 4 000220 automatic structure level 2 in structure "local_pcao" dcl 132 in procedure "rdm_reply_request_" flags 107 based structure level 3 in structure "rdm_invocation" dcl 1-6 in procedure "rdm_reply_request_" flags 137 based structure level 4 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" found_invalid_address 000237 automatic bit(1) dcl 148 set ref 256* 306* 306 394* 394 555 645 869* from 66 based pointer level 3 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" set ref 378 from 36 based pointer level 3 in structure "message" dcl 9-15 in procedure "rdm_reply_request_" set ref 772* get_line_length_$switch 000042 constant entry external dcl 180 ref 945 948 global_options 103 based structure level 2 dcl 1-6 hbound builtin function dcl 220 ref 705 hcs_$fs_get_path_name 000044 constant entry external dcl 181 ref 1074 header based structure level 2 in structure "message_user_field" dcl 9-163 in procedure "rdm_reply_request_" header based structure level 2 in structure "message_body_section" dcl 9-274 in procedure "rdm_reply_request_" header 64 based structure array level 4 in structure "message" dcl 9-15 in procedure "rdm_reply_request_" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 9-313 in procedure "rdm_reply_request_" header 10 based structure array level 3 in structure "message_user_fields_list" dcl 9-150 in procedure "rdm_reply_request_" header 30 based structure level 2 in structure "message" dcl 9-15 in procedure "rdm_reply_request_" header 4 based structure level 3 in structure "message_user_field_parameter" dcl 9-208 in procedure "rdm_reply_request_" idx 000332 automatic fixed bin(17,0) dcl 723 set ref 725* 726* include_authors 000230 automatic bit(1) dcl 138 in procedure "rdm_reply_request_" set ref 574* 577* 578* 579* 772 include_authors 107(01) based bit(1) level 4 in structure "rdm_invocation" packed packed unaligned dcl 1-6 in procedure "rdm_reply_request_" ref 577 include_authors_arg 000227 automatic fixed bin(1,0) dcl 137 set ref 265* 329* 332* 574 578 include_comma 000106 automatic bit(1) dcl 943 set ref 983* 994 994* 995 1011* 1016 include_original 107 based bit(1) level 4 packed packed unaligned dcl 1-6 ref 262 include_original_text 137 based bit(1) level 5 packed packed unaligned dcl 4-13 set ref 262* 347* 349* 564 567 include_recipients 000232 automatic bit(1) dcl 141 in procedure "rdm_reply_request_" set ref 266* 336* 337* 777 include_recipients 107(02) based bit(1) level 4 in structure "rdm_invocation" packed packed unaligned dcl 1-6 in procedure "rdm_reply_request_" ref 266 include_self 107(03) based bit(2) level 4 in structure "rdm_invocation" packed packed unaligned dcl 1-6 in procedure "rdm_reply_request_" ref 269 271 include_self 000233 automatic bit(1) dcl 143 in procedure "rdm_reply_request_" set ref 269* 271* 274* 340* 343* 590 843 indentation 106 based fixed bin(17,0) level 3 dcl 1-6 ref 570 index builtin function dcl 220 ref 314 initial_requests 142 based structure level 2 dcl 4-13 initial_requests_lth 144 based fixed bin(21,0) level 3 dcl 4-13 set ref 480* initial_requests_ptr 142 based pointer level 3 dcl 4-13 set ref 479* initiate_file_ 000046 constant entry external dcl 182 ref 514 526 1077 input_file 3 based structure level 2 dcl 4-13 input_file_ptr 000116 automatic pointer dcl 115 set ref 228* 514* 519* 747 747* input_filename based char packed unaligned dcl 114 set ref 511* 513* input_filename_lth 000120 automatic fixed bin(21,0) dcl 116 set ref 375* 511 511 513 513 input_filename_ptr 000114 automatic pointer dcl 115 set ref 374* 511 513 input_type 2 based fixed bin(17,0) level 2 dcl 4-13 set ref 369* 373* 509 iox_$user_output 000030 external static pointer dcl 174 set ref 945* 948* length builtin function dcl 220 ref 797 801 802 808 808 1040 1040 1051 1051 1051 1055 1055 1055 line_length 105 based fixed bin(17,0) level 3 dcl 1-6 ref 279 local_pcao 000220 automatic structure level 1 dcl 132 set ref 302 302 390 390 logbox_creation_mode 2 000220 automatic fixed bin(17,0) level 2 dcl 132 set ref 285* ltrim builtin function dcl 220 ref 1018 mail_system_$add_address 000050 constant entry external dcl 183 ref 396 860 mail_system_$compare_addresses 000052 constant entry external dcl 184 ref 592 843 856 914 920 mail_system_$eliminate_duplicate_addresses 000054 constant entry external dcl 185 ref 635 mail_system_$free_address 000056 constant entry external dcl 186 ref 751 mail_system_$free_address_list 000060 constant entry external dcl 187 ref 956 1028 mail_system_$merge_address_lists 000062 constant entry external dcl 188 ref 962 mail_system_$validate_address 000064 constant entry external dcl 189 ref 840 mailbox_info 6 based structure level 2 dcl 1-6 mailbox_name 24 based varying char(168) level 3 dcl 1-6 set ref 609* marked 20 based pointer level 4 dcl 1-6 ref 600 605 606 marked_chain based structure level 1 dcl 3-30 maxlength builtin function dcl 220 ref 1051 1055 mbz 4(02) 000220 automatic bit(34) level 3 packed packed unaligned dcl 132 set ref 289* message based structure level 1 dcl 9-15 message_body_section based structure level 1 dcl 9-274 message_chain based structure level 1 dcl 3-7 message_chains 12 based structure level 3 dcl 1-6 message_envelope based structure level 1 dcl 9-61 message_idx 6 based fixed bin(17,0) array level 3 in structure "original_messages" dcl 6-12 in procedure "rdm_reply_request_" set ref 614* message_idx 000255 automatic fixed bin(17,0) dcl 157 in procedure "rdm_reply_request_" set ref 605* 606 613 614* message_number 000256 automatic fixed bin(17,0) dcl 157 set ref 606* 608* 609* 614 617* 622* 848* 862* message_ptr 4 based pointer array level 3 in structure "original_messages" dcl 6-12 in procedure "rdm_reply_request_" set ref 613* message_ptr 000300 automatic pointer dcl 9-53 in procedure "rdm_reply_request_" set ref 608* 613 772 772 775 778 778 779 779 780 780 797 797 801 801 801 801 802 802 804 804 808 808 810 810 message_redistribution based structure level 1 dcl 9-122 message_reference based structure level 1 dcl 9-234 message_subject based char packed unaligned dcl 9-51 ref 797 801 801 802 804 808 810 message_text_field based structure level 1 dcl 9-260 message_user_field based structure level 1 dcl 9-163 messages 4 based structure array level 2 in structure "original_messages" dcl 6-12 in procedure "rdm_reply_request_" messages 1 based fixed bin(17,0) array level 2 in structure "marked_chain" dcl 3-30 in procedure "rdm_reply_request_" ref 606 min builtin function dcl 220 ref 801 mlsys_data_$user_default_mailbox_address 000150 external static pointer dcl 7-12 set ref 592* 843* 914* mlsys_data_$user_mail_table_address 000152 external static pointer dcl 7-14 set ref 592* 856* 920* mlsys_et_$ca_parse_failed 000024 external static fixed bin(35,0) dcl 169 ref 304 306 392 394 mlsys_et_$no_recipients 000026 external static fixed bin(35,0) dcl 169 set ref 643* mlsys_utils_$parse_address_control_args 000066 constant entry external dcl 190 ref 390 mlsys_utils_$parse_address_list_control_args 000070 constant entry external dcl 191 ref 302 mlsys_utils_$print_validate_results 000072 constant entry external dcl 193 ref 870 mlsys_utils_$summarize_address 000074 constant entry external dcl 194 ref 977 989 msg_spec_array based fixed bin(17,0) array dcl 109 set ref 249 249 705 710* 726* msg_spec_array_ptr 000106 automatic pointer dcl 110 set ref 249 249 249* 705 710 726 msg_spec_array_size 000110 automatic fixed bin(17,0) dcl 111 set ref 248* 249 249 705 msg_spec_count 000111 automatic fixed bin(17,0) dcl 111 set ref 246* 582 705 709* 709 710 725 msg_type 000112 automatic fixed bin(17,0) dcl 112 set ref 247* 314* 317* 318* 489* 582* 728* my_person_id 000244 automatic char(32) packed unaligned dcl 154 set ref 591* 848* n_addresses 6 based fixed bin(17,0) level 2 dcl 10-6 ref 640 837 911 974 985 1097 n_arguments 000104 automatic fixed bin(17,0) dcl 107 set ref 226* 248 298 309 690 n_messages based fixed bin(17,0) level 2 dcl 3-30 ref 600 605 n_original_messages 3 based fixed bin(17,0) level 2 dcl 6-12 set ref 602* n_recipients_left 000104 automatic fixed bin(17,0) dcl 941 set ref 974* 988* 988 994 996 1002* 1002 1007* 1007 1014 1018 1019 1051 n_recipients_left_picture automatic picture(9) packed unaligned dcl 942 ref 1018 new_profile_ptr 000416 automatic pointer dcl 1070 set ref 1077* 1078 notify 140(02) based bit(1) level 4 packed packed unaligned dcl 4-13 set ref 441* 442* null builtin function dcl 220 ref 228 293 300 395 401 498 543 545 747 749 751 753 753 952 956 1028 1094 options 104 based structure level 2 dcl 4-13 original_messages based structure level 1 dcl 6-12 set ref 602 original_messages_n_original_messages 000274 automatic fixed bin(17,0) dcl 6-23 set ref 600* 602 602 original_messages_ptr 150 based pointer level 2 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" set ref 625* original_messages_ptr 000276 automatic pointer dcl 6-25 in procedure "rdm_reply_request_" set ref 602* 603 613 614 625 original_text_control 136 based structure level 3 dcl 4-13 original_text_indentation 136 based fixed bin(17,0) level 4 dcl 4-13 set ref 263* 359* 362 362 564 570 570* p_address_list_ptr parameter pointer dcl 1092 in procedure "is_empty_list" ref 1089 1094 1097 p_address_list_ptr parameter pointer dcl 904 in procedure "check_single_list" ref 901 909 p_argument_type parameter char packed unaligned dcl 688 set ref 685 690* p_original_field parameter pointer dcl 827 ref 824 835 p_profile_ptr parameter pointer dcl 1069 set ref 1066 1074* 1078 p_reply_recipient_field parameter pointer dcl 828 set ref 824 860* 862 parse_ca_options based structure level 1 dcl 8-8 pathname_ 000076 constant entry external dcl 195 ref 516 516 528 528 profile_dirname 000121 automatic char(168) packed unaligned dcl 119 in procedure "rdm_reply_request_" set ref 524* 526* 528* 528* profile_dirname 000420 automatic char(168) packed unaligned dcl 1071 in procedure "add_null_refname" set ref 1074* 1077* profile_ename 000173 automatic char(32) packed unaligned dcl 120 in procedure "rdm_reply_request_" set ref 524* 526* 528* 528* profile_ename 000472 automatic char(32) packed unaligned dcl 1072 in procedure "add_null_refname" set ref 1074* 1077* profile_pathname based char packed unaligned dcl 118 set ref 524* 525* profile_pathname_given 000211 automatic bit(1) dcl 123 set ref 282* 457* 522 profile_pathname_lth 000210 automatic fixed bin(21,0) dcl 122 set ref 459* 524 524 525 525 profile_pathname_ptr 000204 automatic pointer dcl 121 set ref 458* 524 525 profile_ptr 134 based pointer level 3 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" set ref 540* 545 545 545* profile_ptr 000206 automatic pointer dcl 121 in procedure "rdm_reply_request_" set ref 228* 749 749* prompt_control 130 based bit(2) level 5 in structure "sdm_subsystem_info" packed packed unaligned dcl 4-13 in procedure "rdm_reply_request_" set ref 467* 470* 474* prompt_control 107 based structure level 3 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" prompt_string 107 based varying char(64) level 4 dcl 4-13 set ref 471* rdm_area based area(1024) dcl 1-55 ref 602 803 809 rdm_invocation based structure level 1 dcl 1-6 rdm_invocation_ptr 000270 automatic pointer dcl 1-53 in procedure "rdm_reply_request_" set ref 225* 242 244* 260 262 266 269 271 278 279 570 577 582* 600 602 605 606 608* 609 617* 617 622* 658* 659 665 667* 676* 728* 743* 744 803 809 rdm_invocation_ptr 146 based pointer level 2 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" set ref 242* rdm_mailbox_interface_$delete_messages 000100 constant entry external dcl 196 ref 676 rdm_mailbox_interface_$mark_processed_and_acknowledge 000102 constant entry external dcl 197 ref 622 rdm_mailbox_interface_$read_message 000104 constant entry external dcl 198 ref 608 rdm_mailbox_interface_$set_new_current_msg 000106 constant entry external dcl 199 ref 617 rdm_message_mark_mgr_$clear_marked_messages 000110 constant entry external dcl 200 ref 244 rdm_message_mark_mgr_$clear_original_messages 000112 constant entry external dcl 201 ref 667 743 rdm_message_mark_mgr_$mark_current_message 000114 constant entry external dcl 202 ref 582 rdm_message_mark_mgr_$mark_messages 000116 constant entry external dcl 203 ref 728 rdm_message_mark_mgr_$mark_original_messages 000120 constant entry external dcl 205 ref 658 recipient_count 000257 automatic fixed bin(17,0) dcl 159 set ref 638* 640* 640 643 965* 965 recipients_list 000107 automatic varying char dcl 945 set ref 972* 982* 982 995* 995 996* 996 998* 998 999* 999 1016* 1016 1017* 1017 1018* 1018 1019* 1019 1021* 1021 1024* 1024 1026* 1051 1051 1055 1055 recipients_list_ptr 000100 automatic pointer dcl 940 set ref 952* 956 956* 962* 962* 974 977 985 986 1028 1028* recipients_lists_array based pointer array dcl 125 set ref 635* reply_options 105 based structure level 2 dcl 1-6 reply_subject based char packed unaligned dcl 793 set ref 803 804* 805* 809 810* reply_subject_lth 000352 automatic fixed bin(21,0) dcl 795 set ref 802* 803 803 804 805 808* 809 809 810 814 reply_subject_ptr 000350 automatic pointer dcl 794 set ref 803* 804 805 809* 810 813 reply_to 40 based pointer level 3 in structure "message" dcl 9-15 in procedure "rdm_reply_request_" set ref 772* 775* reply_to 70 based pointer level 3 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" set ref 379 request_loop_control 140(08) based bit(2) level 4 packed packed unaligned dcl 4-13 set ref 483* 485* 558* 646* savebox_creation_mode 3 000220 automatic fixed bin(17,0) level 2 dcl 132 set ref 286* saved_current_message 000226 automatic fixed bin(17,0) dcl 135 set ref 659* 665 744 sdm_invocation_ptr 000216 automatic pointer dcl 130 set ref 228* 238* 662* 753 753* sdm_subsystem_$create_invocation 000122 constant entry external dcl 206 ref 238 sdm_subsystem_$destroy_invocation 000124 constant entry external dcl 207 ref 753 sdm_subsystem_$subsystem 000126 constant entry external dcl 208 ref 662 sdm_subsystem_info based structure level 1 dcl 4-13 sdm_subsystem_info_ptr 000272 automatic pointer dcl 4-46 set ref 228* 238* 242 260 262 263 278 279 302 347 349 352 354 359 362 362 369 373 378 379 383 385 386 396 408 409 410 413 414 420 422 425 426 428 429 433 437 441 442 445 446 449 452 462 463 467 470 471 474 479 480 483 485 509 511 511 514 514 516 516 516 516 526 530 540 540 542 543 543 545 545 545 545 558 564 564 567 567 570 570 625 627 628 629 635 639 639 639 646 652 662* 669 753 753* 767 772 775 778 779 780 799 813 814 862 888 888 890 890 892 892 959 959 959 send_mail_options based structure level 1 dcl 5-15 ssu_$abort_line 000130 constant entry external dcl 209 ref 240 250 304 360 362 392 398 434 437 494 498 513 516 525 528 555 564 567 609 636 643 669 673 674 690 705 730 862 1075 1078 ssu_$arg_count 000132 constant entry external dcl 210 ref 226 ssu_$arg_ptr 000134 constant entry external dcl 211 ref 312 694 726 ssu_$get_abbrev_info 000136 constant entry external dcl 212 ref 540 ssu_$get_subsystem_and_request_name 000140 constant entry external dcl 213 ref 1040 ssu_$print_message 000142 constant entry external dcl 214 ref 647 848 965 1026 subject 100 based structure level 2 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" subject 50 based structure level 3 in structure "message" dcl 9-15 in procedure "rdm_reply_request_" subject_given 103 based bit(1) level 3 dcl 4-13 set ref 408* 413* 627 628* 767 799* subject_lth 102 based fixed bin(21,0) level 3 dcl 4-13 set ref 410* 414* 629* 814* subject_ptr 100 based pointer level 3 dcl 4-13 set ref 409* 813* substr builtin function dcl 220 set ref 801 805* terminate_file_ 000144 constant entry external dcl 215 ref 519 747 749 text_lth 52 based fixed bin(21,0) level 4 dcl 9-15 ref 797 801 801 802 804 808 810 text_ptr 50 based pointer level 4 dcl 9-15 ref 797 801 801 802 804 808 810 to 42 based pointer level 3 in structure "message" dcl 9-15 in procedure "rdm_reply_request_" set ref 778* 778* to 72 based pointer level 3 in structure "sdm_subsystem_info" dcl 4-13 in procedure "rdm_reply_request_" set ref 383 635 639 772* 775* 862 888* 888* 959 to_arg_specified 000231 automatic bit(1) dcl 139 set ref 267* 382* 574 translate builtin function dcl 220 ref 801 user_info_ 000146 constant entry external dcl 216 ref 591 validate_addresses 4(01) 000220 automatic bit(1) level 3 packed packed unaligned dcl 132 set ref 288* version based char(8) level 2 in structure "original_messages" packed packed unaligned dcl 6-12 in procedure "rdm_reply_request_" set ref 603* version 000220 automatic char(8) level 2 in structure "local_pcao" packed packed unaligned dcl 132 in procedure "rdm_reply_request_" set ref 284* warning_given_for_this_message 000235 automatic bit(1) dcl 145 set ref 770* 848 852* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial packed unaligned dcl 11-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 DEFAULT_FILL internal static bit(2) initial packed unaligned dcl 5-64 DEFAULT_PROMPT internal static bit(2) initial packed unaligned dcl 5-56 DEFAULT_REQUEST_LOOP internal static bit(2) initial packed unaligned dcl 5-72 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 11-33 DONT_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 8-28 E_ACCESS internal static bit(3) initial packed unaligned dcl 11-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 MESSAGE_ADDRESS_LIST_USER_FIELD internal static fixed bin(17,0) initial dcl 9-174 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 9-285 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 9-318 MESSAGE_DATE_USER_FIELD internal static fixed bin(17,0) initial dcl 9-174 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 9-79 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 9-174 MESSAGE_PREFORMATTED_BODY_SECTION internal static fixed bin(17,0) initial dcl 9-285 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 9-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 9-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 9-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 9-253 MESSAGE_TEXT_USER_FIELD internal static fixed bin(17,0) initial dcl 9-174 MESSAGE_TRACE_VERSION_2 internal static char(8) initial packed unaligned dcl 9-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 9-158 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 9-213 MESSAGE_VERSION_2 internal static char(8) initial packed unaligned dcl 9-49 M_ACCESS internal static bit(3) initial packed unaligned dcl 11-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 NO_INCLUDE_SELF internal static bit(2) initial dcl 1-60 N_ACCESS internal static bit(3) initial packed unaligned dcl 11-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 RDM_INVOCATION internal static char(8) initial packed unaligned dcl 1-51 REW_ACCESS internal static bit(3) initial packed unaligned dcl 11-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 11-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 11-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 11-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 11-30 SEND_MAIL_OPTIONS_VERSION_6 internal static char(8) initial packed unaligned dcl 5-51 SILENTLY_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 8-28 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 11-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 11-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 11-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 TERM_FILE_BC internal static bit(2) initial packed unaligned dcl 12-12 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 12-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 12-16 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 12-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 12-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial packed unaligned dcl 12-15 W_ACCESS internal static bit(3) initial packed unaligned dcl 11-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 11-36 address_list_n_addresses automatic fixed bin(17,0) dcl 10-16 all_chain based structure level 1 dcl 3-23 deleted_chain based structure level 1 dcl 3-25 marked_as_original_chain based structure level 1 dcl 3-37 message_address_list_user_field based structure level 1 dcl 9-190 message_bit_string_body_section based structure level 1 dcl 9-301 message_bit_string_body_section_bit_string based bit packed unaligned dcl 9-307 message_body_section_parameter based structure level 1 dcl 9-313 message_body_section_parameter_ptr automatic pointer dcl 9-320 message_body_section_ptr automatic pointer dcl 9-280 message_chain_ptr automatic pointer dcl 3-11 message_date_user_field based structure level 1 dcl 9-195 message_envelope_parameter based structure level 1 dcl 9-74 message_envelope_parameter_ptr automatic pointer dcl 9-81 message_envelope_ptr automatic pointer dcl 9-69 message_integer_user_field based structure level 1 dcl 9-200 message_list based structure level 1 dcl 2-13 message_list_n_messages automatic fixed bin(17,0) dcl 2-25 message_n_body_sections automatic fixed bin(17,0) dcl 9-55 message_n_redistributions automatic fixed bin(17,0) dcl 9-55 message_n_user_fields automatic fixed bin(17,0) dcl 9-55 message_preformatted_body_section based structure level 1 dcl 9-292 message_preformatted_body_section_text based char packed unaligned dcl 9-298 message_redistribution_comment based char packed unaligned dcl 9-131 message_redistribution_parameter based structure level 1 dcl 9-139 message_redistribution_parameter_ptr automatic pointer dcl 9-146 message_redistribution_ptr automatic pointer dcl 9-134 message_redistributions_list based structure level 1 dcl 9-109 message_reference_parameter based structure level 1 dcl 9-248 message_reference_parameter_ptr automatic pointer dcl 9-255 message_reference_ptr automatic pointer dcl 9-243 message_reference_subject based char packed unaligned dcl 9-240 message_references_list based structure level 1 dcl 9-219 message_references_list_n_references automatic fixed bin(17,0) dcl 9-55 message_references_list_ptr automatic pointer dcl 9-229 message_text_field_ptr automatic pointer dcl 9-270 message_text_field_text based char packed unaligned dcl 9-268 message_text_user_field based structure level 1 dcl 9-183 message_text_user_field_text based char packed unaligned dcl 9-187 message_trace based structure level 1 dcl 9-87 message_trace_n_relays automatic fixed bin(17,0) dcl 9-55 message_trace_ptr automatic pointer dcl 9-105 message_user_field_parameter based structure level 1 dcl 9-208 message_user_field_parameter_ptr automatic pointer dcl 9-215 message_user_field_ptr automatic pointer dcl 9-169 message_user_fields_list based structure level 1 dcl 9-150 mlsys_data_$system_directory external static char(168) packed unaligned dcl 7-7 mlsys_data_$user_logbox_address external static pointer dcl 7-15 parse_ca_options_ptr automatic pointer dcl 8-23 send_mail_options_ptr automatic pointer dcl 5-49 terminate_file_switches based structure level 1 packed packed unaligned dcl 12-4 undeleted_chain based structure level 1 dcl 3-24 NAMES DECLARED BY EXPLICIT CONTEXT. CANT_GENERATE_RECIPIENTS_LIST 007036 constant label dcl 965 ref 979 980 990 FINISH_AND_PRINT_RECIPIENTS_LIST 007400 constant label dcl 1014 ref 1003 1008 IGNORE_ADDRESS 006235 constant label dcl 846 ref 856 PROCESS_NEXT_ADDRESS 006434 constant label dcl 873 ref 854 RETURN_FROM_CHECK_IF_EXPLICIT_SELF 006531 constant label dcl 894 ref 917 924 RETURN_FROM_PRINT_RECIPIENTS_LIST 007557 constant label dcl 1028 ref 968 add_null_refname 007642 constant entry internal dcl 1066 ref 543 545 add_recipients 006152 constant entry internal dcl 824 ref 772 775 778 779 780 check_if_explicit_self 006437 constant entry internal dcl 885 ref 596 check_single_list 006532 constant entry internal dcl 901 ref 888 890 892 cleanup_after_reply_request 005502 constant entry internal dcl 739 ref 232 679 get_next_argument 005233 constant entry internal dcl 685 ref 325 358 372 407 432 456 466 478 is_empty_list 010017 constant entry internal dcl 1089 ref 640 772 778 779 780 888 890 892 960 is_room_for_address 007620 constant entry internal dcl 1048 ref 980 992 line_prefix_length 007576 constant entry internal dcl 1037 ref 945 948 print_recipients_list 006631 constant entry internal dcl 937 ref 652 process_arg_as_spec 005332 constant entry internal dcl 702 ref 326 502 process_message 005655 constant entry internal dcl 764 ref 620 process_msg_specs 005372 constant entry internal dcl 720 ref 585 rdm_reply_request_ 001057 constant entry external dcl 95 reply_request 001067 constant entry external dcl 222 set_reply_subject_if_ok 006033 constant entry internal dcl 790 ref 767 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 11272 11446 10312 11302 Length 12256 10312 154 574 757 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rdm_reply_request_ 728 external procedure is an external procedure. on unit on line 232 64 on unit get_next_argument internal procedure shares stack frame of external procedure rdm_reply_request_. process_arg_as_spec internal procedure shares stack frame of external procedure rdm_reply_request_. process_msg_specs internal procedure shares stack frame of external procedure rdm_reply_request_. cleanup_after_reply_request 88 internal procedure is called by several nonquick procedures. process_message internal procedure shares stack frame of external procedure rdm_reply_request_. set_reply_subject_if_ok internal procedure shares stack frame of external procedure rdm_reply_request_. add_recipients internal procedure shares stack frame of external procedure rdm_reply_request_. check_if_explicit_self internal procedure shares stack frame of external procedure rdm_reply_request_. check_single_list internal procedure shares stack frame of external procedure rdm_reply_request_. print_recipients_list 176 internal procedure uses auto adjustable storage, and enables or reverts conditions. on unit on line 954 72 on unit line_prefix_length internal procedure shares stack frame of internal procedure print_recipients_list. is_room_for_address internal procedure shares stack frame of internal procedure print_recipients_list. add_null_refname internal procedure shares stack frame of external procedure rdm_reply_request_. is_empty_list 64 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME print_recipients_list 000100 recipients_list_ptr print_recipients_list 000102 address_ptr print_recipients_list 000104 n_recipients_left print_recipients_list 000105 address_idx print_recipients_list 000106 include_comma print_recipients_list 000107 address_summary print_recipients_list 000107 recipients_list print_recipients_list rdm_reply_request_ 000100 argument_lth rdm_reply_request_ 000102 argument_ptr rdm_reply_request_ 000104 n_arguments rdm_reply_request_ 000105 argument_idx rdm_reply_request_ 000106 msg_spec_array_ptr rdm_reply_request_ 000110 msg_spec_array_size rdm_reply_request_ 000111 msg_spec_count rdm_reply_request_ 000112 msg_type rdm_reply_request_ 000114 input_filename_ptr rdm_reply_request_ 000116 input_file_ptr rdm_reply_request_ 000120 input_filename_lth rdm_reply_request_ 000121 profile_dirname rdm_reply_request_ 000173 profile_ename rdm_reply_request_ 000204 profile_pathname_ptr rdm_reply_request_ 000206 profile_ptr rdm_reply_request_ 000210 profile_pathname_lth rdm_reply_request_ 000211 profile_pathname_given rdm_reply_request_ 000212 abbrev_ca_given rdm_reply_request_ 000213 abbrev_enabled rdm_reply_request_ 000214 current_address_list_ptr_ptr rdm_reply_request_ 000216 sdm_invocation_ptr rdm_reply_request_ 000220 local_pcao rdm_reply_request_ 000225 clear_original_message_chain rdm_reply_request_ 000226 saved_current_message rdm_reply_request_ 000227 include_authors_arg rdm_reply_request_ 000230 include_authors rdm_reply_request_ 000231 to_arg_specified rdm_reply_request_ 000232 include_recipients rdm_reply_request_ 000233 include_self rdm_reply_request_ 000234 dont_issue_nis_warning rdm_reply_request_ 000235 warning_given_for_this_message rdm_reply_request_ 000236 abort rdm_reply_request_ 000237 found_invalid_address rdm_reply_request_ 000240 delete_after_processing rdm_reply_request_ 000242 address_ptr rdm_reply_request_ 000244 my_person_id rdm_reply_request_ 000254 compare_both_user_addresses rdm_reply_request_ 000255 message_idx rdm_reply_request_ 000256 message_number rdm_reply_request_ 000257 recipient_count rdm_reply_request_ 000260 code rdm_reply_request_ 000270 rdm_invocation_ptr rdm_reply_request_ 000272 sdm_subsystem_info_ptr rdm_reply_request_ 000274 original_messages_n_original_messages rdm_reply_request_ 000276 original_messages_ptr rdm_reply_request_ 000300 message_ptr rdm_reply_request_ 000302 address_list_ptr rdm_reply_request_ 000332 idx process_msg_specs 000350 reply_subject_ptr set_reply_subject_if_ok 000352 reply_subject_lth set_reply_subject_if_ok 000362 address_ptr add_recipients 000364 code add_recipients 000365 address_idx add_recipients 000404 address_ptr check_single_list 000406 address_idx check_single_list 000416 new_profile_ptr add_null_refname 000420 profile_dirname add_null_refname 000472 profile_ename add_null_refname THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as r_le_a alloc_char_temp call_ext_out_desc call_ext_out call_int_this call_int_other return_mac alloc_auto_adj enable_op shorten_stack ext_entry int_entry op_alloc_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$grow_stack_frame cv_dec_check_ expand_pathname_ expand_pathname_$add_suffix get_line_length_$switch hcs_$fs_get_path_name initiate_file_ mail_system_$add_address mail_system_$compare_addresses mail_system_$eliminate_duplicate_addresses mail_system_$free_address mail_system_$free_address_list mail_system_$merge_address_lists mail_system_$validate_address mlsys_utils_$parse_address_control_args mlsys_utils_$parse_address_list_control_args mlsys_utils_$print_validate_results mlsys_utils_$summarize_address pathname_ rdm_mailbox_interface_$delete_messages rdm_mailbox_interface_$mark_processed_and_acknowledge rdm_mailbox_interface_$read_message rdm_mailbox_interface_$set_new_current_msg rdm_message_mark_mgr_$clear_marked_messages rdm_message_mark_mgr_$clear_original_messages rdm_message_mark_mgr_$mark_current_message rdm_message_mark_mgr_$mark_messages rdm_message_mark_mgr_$mark_original_messages sdm_subsystem_$create_invocation sdm_subsystem_$destroy_invocation sdm_subsystem_$subsystem ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$get_abbrev_info ssu_$get_subsystem_and_request_name ssu_$print_message terminate_file_ user_info_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. emf_et_$send_mail_aborted error_table_$bad_conversion error_table_$badopt error_table_$inconsistent error_table_$noarg error_table_$smallarg iox_$user_output mlsys_data_$user_default_mailbox_address mlsys_data_$user_mail_table_address mlsys_et_$ca_parse_failed mlsys_et_$no_recipients LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 95 001053 98 001064 222 001065 225 001074 226 001100 228 001111 230 001117 232 001120 238 001142 240 001157 242 001206 244 001211 246 001220 247 001221 248 001223 249 001225 250 001241 255 001271 256 001273 258 001274 260 001275 262 001304 263 001310 265 001312 266 001314 267 001320 269 001321 271 001331 274 001337 275 001340 278 001342 279 001347 281 001351 282 001352 284 001353 285 001355 286 001357 287 001361 288 001363 289 001365 291 001367 293 001371 298 001373 300 001377 302 001403 304 001432 306 001463 309 001470 312 001473 314 001511 317 001540 318 001553 321 001566 322 001601 324 001613 325 001623 326 001631 327 001632 329 001633 332 001652 336 001671 337 001704 340 001716 342 001732 343 001742 344 001743 345 001745 347 001746 349 001762 352 001776 354 002012 357 002026 358 002042 359 002047 360 002075 362 002135 366 002176 369 002177 371 002213 372 002223 373 002233 374 002236 375 002240 376 002242 378 002243 379 002253 381 002267 382 002273 383 002275 384 002300 385 002301 386 002311 388 002321 390 002335 392 002357 394 002410 395 002415 396 002421 398 002436 401 002500 403 002502 404 002504 406 002505 407 002515 408 002522 409 002525 410 002527 411 002531 412 002532 413 002542 414 002545 415 002546 417 002547 418 002556 420 002564 422 002600 425 002614 426 002630 428 002644 429 002662 431 002700 432 002710 433 002715 434 002743 437 003001 439 003033 441 003034 442 003050 445 003064 446 003074 449 003104 451 003122 452 003132 453 003135 454 003137 455 003140 456 003150 457 003160 458 003162 459 003164 460 003166 462 003167 463 003203 465 003217 466 003227 467 003234 470 003244 471 003251 473 003261 474 003262 477 003300 478 003310 479 003315 480 003320 481 003322 483 003323 485 003341 489 003357 490 003372 494 003413 498 003447 502 003501 505 003502 507 003503 509 003504 511 003510 513 003540 514 003577 516 003636 519 003713 522 003742 524 003744 525 004002 526 004041 528 004100 530 004154 532 004161 538 004163 540 004165 542 004204 543 004212 545 004224 555 004243 558 004267 564 004274 567 004327 570 004363 574 004371 577 004377 578 004405 579 004411 582 004413 585 004427 590 004430 591 004432 592 004443 596 004465 600 004470 602 004473 603 004505 605 004510 606 004521 608 004524 609 004541 613 004601 614 004605 617 004611 620 004625 622 004626 623 004637 625 004641 627 004644 628 004646 629 004650 635 004651 636 004666 638 004715 639 004716 640 004723 641 004741 643 004756 645 004776 646 005000 647 005005 652 005033 658 005043 659 005052 660 005055 662 005057 664 005072 665 005073 667 005076 669 005105 673 005146 674 005165 676 005211 679 005226 681 005232 685 005233 690 005244 693 005312 694 005313 696 005331 702 005332 705 005333 709 005364 710 005365 712 005371 720 005372 725 005373 726 005403 728 005422 730 005456 731 005476 733 005500 739 005501 742 005507 743 005512 744 005520 747 005524 749 005557 751 005613 753 005632 756 005654 764 005655 767 005656 770 005662 772 005663 775 005714 777 005726 778 005730 779 005756 780 006004 783 006032 790 006033 797 006034 799 006040 801 006043 802 006060 803 006063 804 006073 805 006102 806 006105 808 006106 809 006111 810 006121 811 006142 813 006143 814 006146 816 006151 824 006152 835 006154 837 006157 838 006167 840 006173 842 006210 843 006212 846 006235 848 006237 852 006277 854 006301 856 006302 860 006325 862 006343 866 006415 869 006416 870 006420 873 006434 876 006436 885 006437 888 006440 890 006463 892 006506 894 006531 901 006532 909 006534 911 006537 912 006547 914 006553 916 006574 917 006576 920 006577 923 006622 924 006624 926 006625 928 006627 937 006630 945 006636 948 006665 977 006714 989 006717 1026 006722 952 006725 954 006727 956 006743 957 006761 959 006762 960 006771 962 007011 964 007033 965 007036 968 007101 970 007102 972 007123 974 007134 977 007140 979 007173 980 007176 982 007203 983 007217 985 007220 986 007231 988 007235 989 007237 990 007270 992 007276 994 007305 995 007313 996 007325 998 007343 999 007353 1000 007366 1002 007367 1003 007370 1004 007371 1007 007372 1008 007373 1011 007374 1012 007376 1014 007400 1016 007402 1017 007414 1018 007427 1019 007465 1021 007503 1024 007515 1026 007525 1028 007557 1031 007575 1037 007576 1040 007600 1048 007620 1051 007622 1055 007633 1066 007642 1074 007644 1075 007676 1077 007725 1078 007763 1081 010015 1089 010016 1094 010024 1097 010034 ----------------------------------------------------------- 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