COMPILATION LISTING OF SEGMENT mlsys_misc_utils_ 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 0823.6 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* *********************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 13* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 14* Changed $print_message_summary to include "S" column for seen messages. 15* 2) change(89-03-16,Vu), approve(89-03-16,MCR8071), audit(89-03-31,Flegel), 16* install(89-04-24,MR12.3-1032): 17* Changed $print_message_summary to display proper line counter for a 18* piece of mail containing more than 9999 lines. 19* 3) change(89-06-26,Lee), approve(89-07-11,MCR8119), 20* audit(89-08-03,LZimmerman), install(89-10-02,MR12.3-1079): 21* phx19187 (Mail 458) - modified print_message_summary/ 22* print_message_summary_header to drop subject and lines fields if 23* necessary to properly handle short lines; it fixes out_of_bounds 24* condition for line_lengths less than 15. 25* END HISTORY COMMENTS */ 26 27 28 /* format: off */ 29 30 /* Miscellaneous Mail System Utilities */ 31 32 /* Created: July 1983 by G. Palter */ 33 /* Modified: March 1984 by G. Palter to fix the following mail system errors: 34* #0435 -- the error message displayed by send_mail when the target address of a mail table entry is invalid only 35* includes the name of the mail table entry. The actual invalid address (eg: mailbox pathname) is not included 36* #0436 -- if a forum meeting is not found in the "forum" search list, the mail system will treat it as a version 1 37* forum in the working directory 38* #0438 -- the primitives which allow a user to replace the address list portions of a message 39* (eg: mail_system_$replace_from, mail_system_$replace_user_field) should not make the user's copy of the address 40* list read-only. Instead, they should copy the user's list to allow the user to continue to modify the list if 41* desired for later additional use */ 42 43 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen,^indcomtxt */ 44 45 46 mlsys_misc_utils_: 47 procedure (); 48 49 return; 50 51 52 /* Parameters */ 53 54 dcl P_code fixed binary (35) parameter; 55 56 dcl P_message_ptr pointer parameter; /* print_message_summary, search_message: -> the message; 57* create_reply_message: set -> the newly created message */ 58 59 dcl P_address_ptr pointer parameter; /* get_best_address_name, summarize_address, 60* print_validate_results: -> the address */ 61 62 dcl P_address_string character (*) varying parameter; /* get_best_address_name: set to the best possible name; 63* summarize_address: set to the address summary suitable for 64* use in sentences */ 65 66 dcl P_is_start_of_sentence bit (1) aligned parameter; /* summarize_address: ON => format the output assuming it will 67* be at the beginning of a sentence */ 68 69 dcl P_line_length fixed binary parameter; /* print_message_summary_*: line length used for truncation */ 70 dcl P_output_switch pointer parameter; /* print_message_summary_*: the I/O switch for printing */ 71 72 dcl P_message_number fixed binary parameter; /* print_message_summary: # to be printed for this message */ 73 dcl P_is_current_message bit (1) aligned parameter; /* print_message_summary: ON => mark as the current message */ 74 75 dcl P_recipients_info_ptr pointer parameter; /* print_delivery_results, free_delivery_recipients: -> the 76* recipients_info structure to be printed/freed */ 77 78 dcl P_sci_ptr pointer parameter; /* print_delivery_results, print_validate_results: 79* -> description of subsystem on whose behalf we are 80* printing the results */ 81 82 dcl P_errors_only bit (1) aligned parameter; /* print_delivery_results: ON => print only error messages */ 83 84 dcl P_original_message_ptr pointer parameter; /* create_reply_message: -> message for which a reply message 85* is to be constructed */ 86 dcl P_reply_options_ptr pointer parameter; /* create_reply_message: -> options describing how the message 87* is to be created */ 88 89 dcl P_search_string character (*) parameter; /* search_message: the text to look for in the message */ 90 dcl P_search_options_ptr pointer parameter; /* search_message: -> structure defining what/how to search */ 91 92 dcl P_author_name character (*) parameter; /* send_message_to_recipient: optional name to be given to the 93* author of the message instead of the default (if any) */ 94 dcl P_recipient character (*) parameter; /* send_message_to_recipient: printed representation of the 95* single recipient's address */ 96 dcl P_delivery_mode fixed binary parameter; /* send_message_to_recipient: ordinary/interactive/express */ 97 dcl P_message_subject character (*) parameter; /* send_message_to_recipient: optional subject */ 98 dcl P_message_body character (*) parameter; /* send_message_to_recipient: the text of the message body */ 99 dcl P_message_access_class bit (72) aligned parameter; /* send_message_to_recipient: AIM access class of message */ 100 dcl P_explanation character (*) varying parameter; /* send_message_to_recipient: set to any explanation returned 101* by the mail system */ 102 /**** format: indcomtxt */ 103 104 105 /* Local copies of parameters */ 106 107 dcl code fixed binary (35); 108 109 dcl address_ptr pointer; 110 111 dcl line_length fixed binary; 112 dcl output_switch pointer; 113 114 dcl sci_ptr pointer; 115 116 dcl original_message_ptr pointer; 117 118 119 /* Remaining declarations */ 120 121 dcl 1 result aligned based (result_ptr) like recipients_result_list.results; 122 dcl 1 other_result aligned based (other_result_ptr) like recipients_result_list.results; 123 dcl 1 expanded_result aligned based (expanded_result_ptr) like expanded_recipients_result_list.entries; 124 dcl (result_ptr, other_result_ptr, expanded_result_ptr) pointer; 125 126 dcl original_subject character (original_subject_lth) unaligned based (original_subject_ptr); 127 dcl original_subject_ptr pointer; 128 dcl original_subject_lth fixed binary (21); 129 130 dcl the_subject character (the_subject_lth) unaligned based (the_subject_ptr); 131 dcl the_subject_ptr pointer; 132 dcl the_subject_lth fixed binary (21); 133 134 dcl buffer character (buffer_max_lth) unaligned based (buffer_ptr); 135 dcl (buffer_ptr, stack_buffer_ptr, segment_buffer_ptr) pointer; 136 dcl (buffer_max_lth, stack_buffer_max_lth, segment_buffer_max_lth, buffer_used, buffer_printed) fixed binary (21); 137 138 dcl address_local_variable character (256) varying; 139 dcl address_variable character (address_variable_max_lth) varying based (address_variable_ptr); 140 dcl address_variable_ptr pointer; 141 dcl address_variable_max_lth fixed binary (21); 142 143 dcl users_area area aligned based (users_area_ptr); 144 dcl users_area_ptr pointer; 145 146 dcl message_text character (message_lth) unaligned based (message_buffer_ptr); 147 dcl message_lth fixed binary (21); 148 dcl message_lth_in_words fixed binary (18); 149 dcl (message_buffer_ptr, message_canonical_text_ptr, stack_truncation_ptr) pointer; 150 151 dcl search_string character (length (P_search_string)) unaligned based (search_string_ptr); 152 dcl (search_string_ptr, translated_search_string_ptr) pointer; 153 154 dcl 1 reply_lists aligned, /* local address lists used to construct the reply message */ 155 2 to pointer, 156 2 cc pointer, 157 2 bcc pointer; 158 dcl reply_lists_array (3) pointer aligned based (addr (reply_lists)); 159 160 dcl 1 local_fmo aligned like format_message_options; 161 162 dcl 1 local_mbsp aligned like message_body_section_parameter; 163 dcl 1 local_do aligned like deliver_options; 164 165 dcl 1 local_ri aligned, /* describes one list for send_message_to_recipient */ 166 2 header like recipients_info.header, 167 2 list like recipients_info.lists; 168 169 dcl foreign_system_name character (256) varying; 170 dcl address_pathname character (194); 171 dcl address_pathname_varying character (194) varying; 172 dcl address_dirname character (168); 173 dcl (address_ename, address_component) character (32); 174 dcl address_type fixed binary; 175 176 dcl (include_author, include_date, include_time, include_subject, include_lines) bit (1) aligned; 177 178 dcl (month, day_of_month, year, hour, minute) fixed binary; 179 dcl ten_digits_picture picture "zzzzzzzzz9"; 180 dcl two_digits_picture picture "99"; 181 182 dcl (address_name_max_lth, subject_string_lth) fixed binary (21); 183 184 dcl author_string character (17) varying; 185 dcl date_string character (8); 186 dcl n_lines_string character (10) varying; 187 dcl time_string character (5); 188 dcl (ack_flag, current_message_flag, delete_flag, forwarded_flag, seen_flag) character (1); 189 190 dcl use_original_subject bit (1) aligned; 191 dcl (list_idx, address_idx, n_duplicates, n_duplicates_processed, expanded_idx, idx) fixed binary; 192 193 dcl compare_against_both bit (1) aligned; 194 195 dcl translation_table character (512) aligned; 196 dcl search_succeeds bit (1) aligned; 197 198 dcl person_id character (32); 199 dcl anonymous_flag fixed binary; 200 201 dcl MAIL_SYSTEM_ character (32) static options (constant) initial ("mail_system_"); 202 203 /* format: off */ 204 dcl (SPACE initial (" "), 205 COMMA initial (","), 206 PERIOD initial ("."), 207 NL initial (" 208 ")) 209 character (1) static options (constant); 210 /* format: on */ 211 212 dcl NULL_STRING character (1) static options (constant) initial (""); 213 214 dcl THREE_SPACES character (3) static options (constant) initial (" "); 215 dcl AND_SPACE character (4) static options (constant) initial ("and "); 216 dcl ET_AL character (6) static options (constant) initial (" et al"); 217 218 dcl REPLY_SUBJECT_PREFIX character (4) static options (constant) initial ("Re: "); 219 220 dcl STACK_EXTENSION fixed binary (18) static options (constant) initial (128); 221 dcl BUFFER_STACK_EXTENSION fixed binary (18) static options (constant) initial (1024); 222 223 /* format: off */ 224 dcl (LOWERCASE initial ("abcdefghijklmnopqrstuvwxyz"), 225 UPPERCASE initial ("ABCDEFGHIJKLMNOPQRSTUVWXYZ")) 226 character (26) static options (constant); 227 /* format: on */ 228 229 dcl sys_info$max_seg_size fixed binary (19) external; 230 231 dcl iox_$error_output pointer external; 232 dcl iox_$user_output pointer external; 233 234 /* format: off */ 235 dcl (error_table_$area_too_small, error_table_$bad_subr_arg, error_table_$inconsistent, error_table_$nomatch, 236 error_table_$null_info_ptr, error_table_$smallarg, error_table_$unimplemented_version, 237 forum_error_table_$no_such_forum, forum_error_table_$not_eligible, forum_error_table_$read_only, 238 mlsys_et_$duplicate_address, mlsys_et_$errors_in_list_address, mlsys_et_$invalid_address, 239 mlsys_et_$list_address_is_all_duplicates, mlsys_et_$message_delivered, mlsys_et_$message_not_sent, 240 mlsys_et_$message_partially_sent, mlsys_et_$message_queued, mlsys_et_$message_queued_and_delivered, 241 mlsys_et_$message_too_large, mlsys_et_$mte_not_found, mlsys_et_$no_mailbox, mlsys_et_$no_mailing_list, 242 mlsys_et_$no_message_canonical_form, mlsys_et_$not_in_mailbox_message, mlsys_et_$not_message, 243 mlsys_et_$null_search_string, mlsys_et_$rejected_by_foreign_system) 244 fixed binary (35) external; 245 /* format: on */ 246 247 dcl aim_check_$equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 248 dcl assign_ entry (pointer, fixed binary, fixed binary (35), pointer, fixed binary, fixed binary (35)); 249 dcl convert_status_code_ entry (fixed binary (35), character (8) aligned, character (100) aligned); 250 dcl cu_$arg_list_ptr entry () returns (pointer); 251 dcl cu_$arg_ptr entry (fixed binary, pointer, fixed binary (21), fixed binary (35)); 252 dcl cu_$grow_stack_frame entry (fixed binary (18), pointer, fixed binary (35)); 253 dcl cu_$shrink_stack_frame entry (pointer, fixed binary (35)); 254 dcl decode_clock_value_$date_time 255 entry (fixed binary (71), fixed binary, fixed binary, fixed binary, fixed binary, fixed binary, fixed binary, 256 fixed binary (71), fixed binary, character (3), fixed binary (35)); 257 dcl decode_descriptor_ 258 entry (pointer, fixed binary, fixed binary, bit (1) aligned, fixed binary, fixed binary, fixed binary); 259 dcl find_condition_info_ entry (pointer, pointer, fixed binary (35)); 260 dcl get_authorization_ entry () returns (bit (72) aligned); 261 dcl get_line_length_$switch entry (pointer, fixed binary (35)) returns (fixed binary); 262 dcl get_system_free_area_ entry () returns (pointer); 263 dcl get_temp_segment_ entry (character (*), pointer, fixed binary (35)); 264 dcl ioa_$general_rs 265 entry (pointer, fixed binary, fixed binary, character (*), fixed binary (21), bit (1) aligned, bit (1) aligned); 266 dcl ioa_$ioa_switch entry () options (variable); 267 dcl iox_$put_chars entry (pointer, pointer, fixed binary (21), fixed binary (35)); 268 dcl mail_system_$add_address entry (pointer, pointer, character (8), fixed binary (35)); 269 dcl mail_system_$add_reply_reference entry (pointer, pointer, fixed binary, fixed binary (35)); 270 dcl mail_system_$compare_addresses entry (pointer, pointer, fixed binary (35)) returns (bit (1) aligned); 271 dcl mail_system_$create_mail_table_address 272 entry (character (*) varying, character (*) varying, character (*) varying, pointer, fixed binary (35)); 273 dcl mail_system_$create_message entry (character (8), pointer, fixed binary (35)); 274 dcl mail_system_$delete_address entry (pointer, fixed binary, fixed binary (35)); 275 dcl mail_system_$deliver_message entry (pointer, pointer, pointer, fixed binary (35)); 276 dcl mail_system_$eliminate_duplicate_addresses entry ((*) pointer, fixed binary (35)); 277 dcl mail_system_$free_address entry (pointer, fixed binary (35)); 278 dcl mail_system_$free_address_list entry (pointer, fixed binary (35)); 279 dcl mail_system_$free_message entry (pointer, fixed binary (35)); 280 dcl mail_system_$get_address_name entry (pointer, character (*) varying, fixed binary (35)); 281 dcl mail_system_$get_address_pathname entry (pointer, character (*), character (*), character (*), fixed binary (35)); 282 dcl mail_system_$get_address_string entry (pointer, character (*) varying, fixed binary (35)); 283 dcl mail_system_$get_address_system entry (pointer, character (256) varying, fixed binary (35)); 284 dcl mail_system_$get_address_type entry (pointer, fixed binary, fixed binary (35)); 285 dcl mail_system_$get_mail_table_address entry (pointer, pointer, fixed binary (35)); 286 dcl mail_system_$merge_address_lists entry (pointer, pointer, bit (1) aligned, pointer, fixed binary (35)); 287 dcl mail_system_$read_message_canonical_form_p entry (pointer, pointer, fixed binary (21), fixed binary (35)); 288 dcl mail_system_$replace_bcc entry (pointer, pointer, fixed binary (35)); 289 dcl mail_system_$replace_body entry (pointer, pointer, fixed binary (35)); 290 dcl mail_system_$replace_cc entry (pointer, pointer, fixed binary (35)); 291 dcl mail_system_$replace_from entry (pointer, pointer, fixed binary (35)); 292 dcl mail_system_$replace_subject entry (pointer, character (*), fixed binary (35)); 293 dcl mail_system_$replace_to entry (pointer, pointer, fixed binary (35)); 294 dcl mail_system_$set_access_class entry (pointer, bit (72) aligned, fixed binary (35)); 295 dcl mlsys_psp_$forum_not_available entry () returns (bit (1) aligned); 296 dcl mlsys_utils_$format_address_field 297 entry (character (*) varying, pointer, fixed binary, pointer, fixed binary (21), fixed binary (21), 298 fixed binary (35)); 299 dcl mlsys_utils_$format_message_canonical_form 300 entry (pointer, pointer, pointer, fixed binary (21), fixed binary (21), fixed binary (35)); 301 dcl mlsys_utils_$parse_address_text entry (character (*), pointer, fixed binary (35)); 302 dcl mvt_ entry (pointer, pointer, fixed binary (21), character (512) aligned); 303 dcl mvt_$make_translation_table entry (character (*), character (*), character (512) aligned); 304 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 305 dcl pathname_$component entry (character (*), character (*), character (*)) returns (character (194)); 306 dcl release_temp_segment_ entry (character (*), pointer, fixed binary (35)); 307 dcl requote_string_ entry (character (*)) returns (character (*)); 308 dcl search_file_$silent 309 entry (pointer, fixed binary (21), fixed binary (21), pointer, fixed binary (21), fixed binary (21), 310 fixed binary (21), fixed binary (21), fixed binary (35)); 311 dcl ssu_$print_message entry () options (variable); 312 dcl sub_err_ entry () options (variable); 313 dcl user_info_$login_data entry (character (*), character (*), character (*), fixed binary); 314 315 dcl (cleanup, io_error) condition; 316 317 dcl (addr, addwordno, after, baseno, binary, convert, copy, divide, index, length, ltrim, maxlength, min, mod, null, 318 reverse, rtrim, stackframeptr, string, substr, translate, verify) builtin; 319 320 /* Obtain the address name or the best possible substitute: If there is no address name, use the printed representation 321* of the address. If whatever is to be returned is too long for the caller's buffer, indicate this by changing the last 322* three characters of the text into an ellipsis */ 323 324 get_best_address_name: 325 entry (P_address_ptr, P_address_string, P_code); 326 327 address_ptr = P_address_ptr; 328 address_name_max_lth = maxlength (P_address_string); 329 330 begin; /* need a local copy (sigh) */ 331 332 dcl local_address_name character (address_name_max_lth) varying; 333 334 dcl address_name character (address_name_max_lth) varying based (address_name_ptr); 335 dcl address_name_ptr pointer; 336 337 dcl 1 fixed_address_name aligned based (address_name_ptr), 338 2 lth fixed binary (21), 339 2 string character (address_name_max_lth) unaligned; 340 341 address_name_ptr = addr (local_address_name); 342 343 call mail_system_$get_address_name (address_ptr, address_name, code); 344 if (code ^= 0) & (code ^= error_table_$smallarg) then do; 345 P_code = code; /* not an address? */ 346 return; 347 end; 348 349 if code = error_table_$smallarg then do; /* too large for the preallocated space ... */ 350 call cu_$grow_stack_frame (STACK_EXTENSION, address_name_ptr, (0)); 351 address_name_max_lth = 4 * (STACK_EXTENSION - 1); 352 353 call mail_system_$get_address_name (address_ptr, address_name, code); 354 /* try again using space at the end of the stack ... */ 355 356 do while (code = error_table_$smallarg);/* ... and keep trying 'till it fits */ 357 call cu_$grow_stack_frame (STACK_EXTENSION, (null ()), (0)); 358 address_name_max_lth = address_name_max_lth + (4 * STACK_EXTENSION); 359 call mail_system_$get_address_name (address_ptr, address_name, code); 360 end; 361 end; 362 363 if length (address_name) = 0 then do; /* no name: use printed representation */ 364 fixed_address_name.lth = 0; 365 call mlsys_utils_$format_address_field ("", address_ptr, -1, addr (fixed_address_name.string), 366 address_name_max_lth, fixed_address_name.lth, code); 367 if code = error_table_$smallarg then do;/* ... as much as would is actually there */ 368 fixed_address_name.lth = address_name_max_lth; 369 substr (fixed_address_name.string, (address_name_max_lth - 2), 3) = "..."; 370 end; 371 end; 372 373 if length (address_name) > maxlength (P_address_string) then 374 P_address_string = substr (address_name, 1, (maxlength (P_address_string) - 3)) || "..."; 375 else P_address_string = address_name; 376 end; 377 378 P_code = 0; /* success */ 379 380 return; 381 382 /**** format: ^indcomtxt */ 383 /* Returns a description of the given address suitable for use in error messages, etc: Examples of the output produced by 384* this entrypoint include: 385* Palter.Multics 386* your logbox 387* the mailing list >udd>m>gmp>mail_project 388* the group named Mail System Maintainers */ 389 /**** format: indcomtxt */ 390 391 summarize_address: 392 entry (P_address_ptr, P_is_start_of_sentence, P_address_string, P_code); 393 394 address_ptr = P_address_ptr; 395 396 call mail_system_$get_address_type (address_ptr, address_type, code); 397 if code ^= 0 then do; /* not an address? */ 398 P_code = code; 399 return; 400 end; 401 402 begin; /* temporary is 1 larger than caller's to detect truncation */ 403 404 dcl address_string character (maxlength (P_address_string) + 1) varying; 405 406 go to SUMMARIZE_ADDRESS (address_type); 407 408 SUMMARIZE_ADDRESS (0): /* invalid address */ 409 call get_address_variable (mail_system_$get_address_string); 410 if P_is_start_of_sentence then 411 address_string = "The invalid address "; 412 else address_string = "the invalid address "; 413 address_string = address_string || requote_string_ ((address_variable)); 414 go to END_SUMMARIZE_ADDRESS_CASE; 415 416 417 SUMMARIZE_ADDRESS (1): /* user mailbox address */ 418 call get_address_variable (mail_system_$get_address_string); 419 address_string = address_variable; 420 go to END_SUMMARIZE_ADDRESS_CASE; 421 422 423 SUMMARIZE_ADDRESS (2): /* logbox address */ 424 if mail_system_$compare_addresses (address_ptr, mlsys_data_$user_logbox_address, (0)) then do; 425 if P_is_start_of_sentence then 426 address_string = "Your logbox"; 427 else address_string = "your logbox"; 428 go to END_SUMMARIZE_ADDRESS_CASE; 429 end; 430 /*** Not the user's logbox: treat it as a random savebox */ 431 432 433 SUMMARIZE_ADDRESS (3): /* savebox address */ 434 call mail_system_$get_address_pathname (address_ptr, address_dirname, address_ename, ((32)" "), (0)); 435 address_pathname = pathname_ (address_dirname, address_ename); 436 if P_is_start_of_sentence then 437 address_string = "The savebox "; 438 else address_string = "the savebox "; 439 address_string = address_string || reverse (after (reverse (address_pathname), reverse (".sv.mbx"))); 440 go to END_SUMMARIZE_ADDRESS_CASE; 441 442 443 SUMMARIZE_ADDRESS (4): /* mailbox address */ 444 call mail_system_$get_address_pathname (address_ptr, address_dirname, address_ename, ((32)" "), (0)); 445 address_pathname = pathname_ (address_dirname, address_ename); 446 if P_is_start_of_sentence then 447 address_string = "The mailbox "; 448 else address_string = "the mailbox "; 449 address_string = address_string || reverse (after (reverse (address_pathname), reverse (".mbx"))); 450 go to END_SUMMARIZE_ADDRESS_CASE; 451 452 453 SUMMARIZE_ADDRESS (5): /* forum address */ 454 if P_is_start_of_sentence then 455 address_string = "The forum meeting "; 456 else address_string = "the forum meeting "; 457 call mail_system_$get_address_pathname (address_ptr, address_dirname, address_ename, ((32)" "), (0)); 458 if address_dirname = "" then /* ... a meeting which couldn't be found by search list */ 459 address_pathname_varying = rtrim (address_ename); 460 else address_pathname_varying = rtrim (pathname_ (address_dirname, address_ename)); 461 if index (reverse (address_pathname_varying), reverse (".forum")) = 1 then 462 address_pathname_varying = 463 substr (address_pathname_varying, 1, (length (address_pathname_varying) - length (".forum"))); 464 else if index (reverse (address_pathname_varying), reverse (".control")) = 1 then 465 address_pathname_varying = 466 substr (address_pathname_varying, 1, (length (address_pathname_varying) - length (".control"))); 467 address_string = address_string || address_pathname_varying; 468 go to END_SUMMARIZE_ADDRESS_CASE; 469 470 471 SUMMARIZE_ADDRESS (6): /* foreign address */ 472 call get_address_variable (mail_system_$get_address_string); 473 call mail_system_$get_address_system (address_ptr, foreign_system_name, (0)); 474 address_string = address_variable; 475 address_string = address_string || " at "; 476 address_string = address_string || foreign_system_name; 477 go to END_SUMMARIZE_ADDRESS_CASE; 478 479 480 SUMMARIZE_ADDRESS (7): /* mail table address */ 481 call get_address_variable (mail_system_$get_address_string); 482 address_string = address_variable; 483 go to END_SUMMARIZE_ADDRESS_CASE; 484 485 486 SUMMARIZE_ADDRESS (8): /* mailing list address */ 487 call mail_system_$get_address_pathname (address_ptr, address_dirname, address_ename, address_component, 488 (0)); 489 address_pathname = pathname_$component (address_dirname, address_ename, address_component); 490 if P_is_start_of_sentence then 491 address_string = "The mailing list "; 492 else address_string = "the mailing list "; 493 address_string = address_string || reverse (after (reverse (address_pathname), reverse (".mls"))); 494 go to END_SUMMARIZE_ADDRESS_CASE; 495 496 497 SUMMARIZE_ADDRESS (9): /* named group address */ 498 call get_address_variable (mail_system_$get_address_name); 499 if P_is_start_of_sentence then 500 address_string = "The group named "; 501 else address_string = "the group named "; 502 address_string = address_string || address_variable; 503 go to END_SUMMARIZE_ADDRESS_CASE; 504 505 506 END_SUMMARIZE_ADDRESS_CASE: 507 if length (address_string) <= maxlength (P_address_string) then do; 508 P_address_string = address_string; 509 P_code = 0; 510 end; 511 else P_code = error_table_$smallarg; 512 513 return; 514 515 516 517 /* Internal to summarize_address begin block: gets one of the variables (string, name, comment) associated with an 518* address; it will grow the begin block's stack frame as necessary */ 519 520 get_address_variable: 521 procedure (p_get_primitive) /* options (quick) */; 522 523 dcl p_get_primitive entry (pointer, character (*) varying, fixed binary (35)); 524 dcl code fixed binary (35); 525 526 address_variable_ptr = addr (address_local_variable); 527 address_variable_max_lth = maxlength (address_local_variable); 528 /* assume it will fit in the local copy */ 529 530 call p_get_primitive (address_ptr, address_variable, code); 531 532 if code = error_table_$smallarg then do; /* too large for the preallocated space ... */ 533 call cu_$grow_stack_frame (STACK_EXTENSION, address_variable_ptr, (0)); 534 address_variable_max_lth = 4 * (STACK_EXTENSION - 1); 535 536 call p_get_primitive (address_ptr, address_variable, code); 537 /* try again using space at the end of the stack ... */ 538 539 do while (code = error_table_$smallarg); /* ... and keep trying 'till it fits */ 540 call cu_$grow_stack_frame (STACK_EXTENSION, (null ()), (0)); 541 address_variable_max_lth = address_variable_max_lth + (4 * STACK_EXTENSION); 542 call p_get_primitive (address_ptr, address_variable, code); 543 end; 544 end; 545 546 return; 547 548 end get_address_variable; 549 550 end; 551 552 /* Print the header line for a subsequent message summary */ 553 554 print_message_summary_header: 555 entry (P_line_length, P_output_switch, P_code); 556 557 line_length = P_line_length; 558 if (line_length < -1) | ((line_length > 0) & (line_length ^> 30)) then do; 559 P_code = error_table_$bad_subr_arg; 560 return; 561 end; 562 563 if P_output_switch = null () then /* default to the terminal if not specified */ 564 output_switch = iox_$user_output; 565 else output_switch = P_output_switch; 566 567 if line_length = 0 then /* default to line length of switch if not specified */ 568 line_length = get_line_length_$switch (output_switch, (0)); 569 570 include_author, include_date, include_time, include_subject, include_lines = "1"b; /* assume nothing is truncated */ 571 572 if line_length > 0 then do; /* only if we're asked to truncate if necessary */ 573 if line_length < 72 then include_time = "0"b;/* not enough room to insure 22 characters of subject */ 574 if line_length < 66 then include_date = "0"b; 575 if line_length < 56 then include_author = "0"b; 576 if line_length < 22 then include_subject = "0"b; 577 if line_length < 14 then include_lines = "0"b; 578 /* phx19187 RL: handle line lengths < 22 as well */ 579 end; 580 581 on condition (io_error) 582 begin; /* I/O failed for some reason */ 583 call get_ioa_error_code (P_code); 584 go to RETURN_FROM_PRINT_MESSAGE_SUMMARY_HEADER; 585 end; 586 587 call ioa_$ioa_switch (output_switch, 588 "^/Msg#^[^5xLines^2x^]^[^2xDate^[^3x^;^4x^]^;^s^]^[Time^3x^]^[From^15x^]^[Subject^]", include_lines, include_date, include_time, 589 include_time, include_author, include_subject); 590 591 P_code = 0; 592 593 RETURN_FROM_PRINT_MESSAGE_SUMMARY_HEADER: 594 return; 595 596 /* Print a one/two line summary of a message */ 597 598 print_message_summary: 599 entry (P_message_ptr, P_message_number, P_is_current_message, P_line_length, P_output_switch, P_code); 600 601 message_ptr = P_message_ptr; 602 if message.version ^= MESSAGE_VERSION_2 then do; 603 P_code = mlsys_et_$not_message; 604 return; 605 end; 606 607 line_length = P_line_length; 608 if (line_length < -1) | ((line_length > 0) & (line_length ^> 30)) then do; 609 P_code = error_table_$bad_subr_arg; 610 return; 611 end; 612 613 if P_output_switch = null () then /* default to the terminal if not specified */ 614 output_switch = iox_$user_output; 615 else output_switch = P_output_switch; 616 617 if line_length = 0 then /* default to line length of switch if not specified */ 618 line_length = get_line_length_$switch (output_switch, (0)); 619 620 include_author, include_date, include_time, include_subject, include_lines = "1"b; /* until we're told otherwise */ 621 622 if line_length > 0 then do; /* only if we're asked to truncate if necessary */ 623 if line_length < 72 then include_time = "0"b;/* not enough room to insure 22 characters of subject */ 624 if line_length < 66 then include_date = "0"b; 625 if line_length < 56 then include_author = "0"b; 626 if line_length < 22 then include_subject = "0"b; 627 if line_length < 14 then include_lines = "0"b; 628 end; 629 630 if P_is_current_message then current_message_flag = "*"; 631 else if message.marked_for_deletion then current_message_flag = "!"; 632 else current_message_flag = " "; 633 634 if message.seen then 635 seen_flag = "S"; 636 else seen_flag = " "; 637 638 if message.must_be_acknowledged then 639 ack_flag = "A"; 640 else ack_flag = " "; 641 642 if message.can_be_deleted then /* it can be deleted */ 643 delete_flag = " "; 644 else if ^aim_check_$equal (message.access_class, get_authorization_ ()) then delete_flag = "&"; 645 /* can't be deleted because of AIM (at least) */ 646 else delete_flag = " "; /* can't be deleted but cause isn't AIM */ 647 648 if message.total_lines = -1 then /* can't say how long this message will be when printed now */ 649 n_lines_string = " (?)"; 650 651 /**** vp: phx21245, changed four_digits_picture to ten_digits_picture 652* and changed n_lines_string from char(6) to char(10) ****/ 653 else do; 654 n_lines_string = "(" || ltrim (convert (ten_digits_picture, message.total_lines)) || ")"; 655 if length (n_lines_string) < 6 then /* padded blanks to make up six characters */ 656 n_lines_string = copy (SPACE, (6 - length (n_lines_string))) || n_lines_string; 657 end; 658 659 if message.n_redistributions > 0 then 660 forwarded_flag = "F"; 661 else forwarded_flag = " "; 662 663 if include_date then do; /* won't include time unless the date is also */ 664 call decode_clock_value_$date_time (message.date_time_created, month, day_of_month, year, hour, minute, 665 (0), (0), (0), ((3)" "), (0)); 666 date_string = 667 convert (two_digits_picture, month) || "/" || convert (two_digits_picture, day_of_month) || "/" 668 || convert (two_digits_picture, (year - 1900)); 669 time_string = convert (two_digits_picture, hour) || ":" || convert (two_digits_picture, minute); 670 end; 671 672 call get_best_address_name (message.from -> address_list.addresses (1), author_string, (0)); 673 /* guarenteed to have at least one author */ 674 675 if message.from -> address_list.n_addresses > 1 then 676 if length (author_string) < (maxlength (author_string) - length (ET_AL)) then 677 author_string = author_string || ET_AL; 678 679 the_subject_ptr = addr (SPACE); /* assume no subject 'till proven otherwise */ 680 the_subject_lth = 0; 681 682 if length (message_subject) > 0 then do; /* there's a subject all right */ 683 the_subject_ptr = message.subject.text_ptr; 684 the_subject_lth = message.subject.text_lth; 685 end; 686 687 else /* check for interactive message */ 688 if message.interactive & (message.total_lines > 0) then 689 if message.body_sections (1).section_type = MESSAGE_PREFORMATTED_BODY_SECTION then do; 690 message_body_section_ptr = addr (message.body_sections (1)); 691 the_subject_ptr = addr (message_preformatted_body_section_text); 692 the_subject_lth = index (message_preformatted_body_section_text, NL) - 1; 693 if the_subject_lth = -1 then the_subject_lth = length (message_preformatted_body_section_text); 694 end; 695 696 if line_length = -1 then /* want the entire subject no matter what ... */ 697 subject_string_lth = the_subject_lth; 698 699 else if include_time then /* all other fields are present */ 700 subject_string_lth = min (the_subject_lth, (line_length - 51)); 701 else if include_date then subject_string_lth = min (the_subject_lth, (line_length - 45)); 702 else if include_author then subject_string_lth = min (the_subject_lth, (line_length - 35)); 703 else do; 704 if line_length < 17 then 705 subject_string_lth = 0; 706 else 707 subject_string_lth = min (the_subject_lth, (line_length - 16)); 708 /* phx19187 RL: no subject field if line short enough */ 709 end; 710 711 begin; 712 dcl subject_string character (subject_string_lth); 713 714 subject_string = substr (the_subject, 1, length (subject_string)); 715 if subject_string_lth < the_subject_lth then /* subject was truncated ... */ 716 substr (subject_string, (subject_string_lth - 5), 6) = ""; 717 718 on condition (io_error) 719 begin; /* in case the I/O fails */ 720 call get_ioa_error_code (P_code); 721 go to RETURN_FROM_PRINT_MESSAGE_SUMMARY; 722 end; 723 724 call ioa_$ioa_switch (output_switch, 725 "^4d^1a^1a^1a^1a^[^a^1a^x^;^2s^]^[^a^[^x^;^2x^]^;^2s^]^[^a^2x^;^s^]^[^17a^2x^;^s^]^[^a^]", 726 P_message_number, current_message_flag, seen_flag, ack_flag, delete_flag, 727 include_lines, n_lines_string, forwarded_flag, include_date, date_string, 728 include_time, include_time, time_string, include_author, author_string, 729 include_subject, subject_string); 730 731 end; 732 733 P_code = 0; /* success */ 734 735 RETURN_FROM_PRINT_MESSAGE_SUMMARY: 736 return; 737 738 /* Display the results of a message transmission operation as described by the data structures created by 739* mail_system_$deliver_message or mail_system_$redistribute_message */ 740 741 print_delivery_results: 742 entry (P_sci_ptr, P_errors_only, P_recipients_info_ptr, P_code); 743 744 sci_ptr = P_sci_ptr; 745 746 recipients_info_ptr = P_recipients_info_ptr; 747 if recipients_info.version ^= RECIPIENTS_INFO_VERSION_2 then do; 748 P_code = error_table_$unimplemented_version; 749 return; 750 end; 751 752 call cu_$grow_stack_frame (BUFFER_STACK_EXTENSION, stack_buffer_ptr, (0)); 753 stack_buffer_max_lth = 4 * BUFFER_STACK_EXTENSION; 754 755 segment_buffer_ptr = null (); /* for cleanup handler */ 756 757 on condition (cleanup) call cleanup_print_delivery_results (); 758 759 760 /* Print a list of all duplicated recipients and mailing lists/named groups whose entire content is duplicate addresses 761* with an indication that said recipients received only a single copy of the message */ 762 763 n_duplicates = 0; 764 765 do list_idx = 1 to recipients_info.n_lists; 766 recipients_result_list_ptr = recipients_info.lists (list_idx).recipients_result_list_ptr; 767 if recipients_result_list_ptr ^= null () then do; 768 do address_idx = 1 to recipients_result_list.n_addresses; 769 result_ptr = addr (recipients_result_list.results (address_idx)); 770 if result.code = mlsys_et_$duplicate_address then do; 771 other_result_ptr = 772 addr (recipients_info.lists (result.list_idx).recipients_result_list_ptr 773 -> recipients_result_list.results (result.address_idx)); 774 if other_result.list_idx = 0 then do; 775 n_duplicates = n_duplicates + 1; 776 other_result.list_idx = recipients_info.n_lists + 1; 777 end; 778 end; 779 else if result.code = mlsys_et_$list_address_is_all_duplicates then 780 n_duplicates = n_duplicates + 1; 781 end; 782 end; 783 end; 784 785 if n_duplicates ^= 0 then do; /* there are duplicates ... */ 786 call start_new_output (); /* initialize the output buffer */ 787 call add_to_buffer_fixed (THREE_SPACES); 788 789 n_duplicates_processed = 0; 790 791 do list_idx = 1 to recipients_info.n_lists; 792 address_list_ptr = recipients_info.lists (list_idx).address_list_ptr; 793 recipients_result_list_ptr = recipients_info.lists (list_idx).recipients_result_list_ptr; 794 if recipients_result_list_ptr ^= null () then do; 795 do address_idx = 1 to recipients_result_list.n_addresses; 796 result_ptr = addr (recipients_result_list.results (address_idx)); 797 if (result.list_idx = (recipients_info.n_lists + 1)) 798 | (result.code = mlsys_et_$list_address_is_all_duplicates) then do; 799 n_duplicates_processed = n_duplicates_processed + 1; 800 if (n_duplicates > 2) & (n_duplicates_processed > 1) then 801 call add_to_buffer_fixed (COMMA); 802 call add_to_buffer_fixed (SPACE); 803 if (n_duplicates > 1) & (n_duplicates_processed = n_duplicates) then 804 call add_to_buffer_fixed (AND_SPACE); 805 call get_address_summary (address_list.addresses (address_idx), "0"b); 806 call add_to_buffer_varying (address_variable); 807 end; 808 end; 809 end; 810 end; 811 call add_to_buffer_fixed (PERIOD); 812 call add_to_buffer_fixed (NL); 813 814 call ssu_$print_message (sci_ptr, mlsys_et_$duplicate_address, 815 "Only one copy of this message was sent to the following address^[es^]:", (n_duplicates > 1)); 816 call print_the_buffer (); /* print it neatly */ 817 end; 818 819 820 /* Print appropriate error messages for all recipients for which delivery failed or for which transient errors caused the 821* message to be queued */ 822 823 expanded_recipients_result_list_ptr = recipients_info.expanded_recipients_result_list_ptr; 824 825 do list_idx = 1 to recipients_info.n_lists; 826 address_list_ptr = recipients_info.lists (list_idx).address_list_ptr; 827 recipients_result_list_ptr = recipients_info (list_idx).recipients_result_list_ptr; 828 829 if recipients_result_list_ptr ^= null () then do; 830 831 do address_idx = 1 to recipients_result_list.n_addresses; 832 address_ptr = address_list.addresses (address_idx); 833 result_ptr = addr (recipients_result_list.results (address_idx)); 834 835 if (result.code = mlsys_et_$duplicate_address) 836 | (result.code = mlsys_et_$list_address_is_all_duplicates) | (result.code = 0) 837 | (result.code = mlsys_et_$message_delivered) 838 | ((result.code = mlsys_et_$message_queued) & (length (result.explanation) = 0) 839 & (result.first_entry_idx = 0)) 840 | ((result.code = mlsys_et_$message_queued_and_delivered) & (result.first_entry_idx = 0)) 841 then 842 ; /* delivery was OK or already described for this recipient */ 843 844 else if (result.code = mlsys_et_$errors_in_list_address) 845 | 846 (((result.code = mlsys_et_$message_queued) 847 | (result.code = mlsys_et_$message_queued_and_delivered)) & (result.first_entry_idx ^= 0)) 848 then do; 849 /*** Mailing list/named group which experienced some form of problems */ 850 call get_true_address_summary (address_ptr, "0"b); 851 if result.code = mlsys_et_$errors_in_list_address then 852 call ssu_$print_message (sci_ptr, 0, "Mail not delivered to all addresses in ^a:", 853 address_variable); 854 else call ssu_$print_message (sci_ptr, 0, 855 "Mail could not be delivered immediately to some addresses in ^a:", 856 address_variable); 857 if address_variable_ptr ^= addr (address_local_variable) then 858 call cu_$shrink_stack_frame (address_variable_ptr, (0)); 859 do expanded_idx = result.first_entry_idx to (result.first_entry_idx + result.n_entries - 1); 860 expanded_result_ptr = addr (expanded_recipients_result_list.entries (expanded_idx)); 861 call print_single_recipient_error (expanded_result.address_ptr, expanded_result.code, 862 expanded_result.explanation, print_expansion_error); 863 end; 864 end; 865 866 else call print_single_recipient_error (address_ptr, result.code, result.explanation, 867 ssu_$print_message); 868 end; 869 end; 870 end; 871 872 if P_errors_only then go to RETURN_FROM_PRINT_DELIVERY_RESULTS; 873 874 875 /* Print the list of recipients to whom the mail was delivered, for whom the mail was queued on explicit request, and the 876* mailing lists/named groups for whom the mail was both delivered and queued */ 877 878 if is_a_recipient_with_code (mlsys_et_$message_delivered) then 879 call print_recipient_list (mlsys_et_$message_delivered, "Mail delivered to"); 880 881 if is_a_recipient_with_code (mlsys_et_$message_queued) then 882 call print_recipient_list (mlsys_et_$message_queued, "Mail queued for"); 883 884 if is_a_recipient_with_code (mlsys_et_$message_queued_and_delivered) then 885 call print_recipient_list (mlsys_et_$message_queued_and_delivered, 886 "Mail delivered to or queued for all recipients in"); 887 888 889 /* Clean up */ 890 891 P_code = 0; /* success */ 892 893 RETURN_FROM_PRINT_DELIVERY_RESULTS: 894 call cleanup_print_delivery_results (); 895 896 return; 897 898 899 ERROR_RETURN_FROM_PRINT_DELIVERY_RESULTS: 900 P_code = code; 901 go to RETURN_FROM_PRINT_DELIVERY_RESULTS; 902 903 904 905 /* Release temporary buffers and restore the recipients_info data structures to their original state */ 906 907 cleanup_print_delivery_results: 908 procedure (); 909 910 dcl (list_idx, address_idx) fixed binary; 911 912 if segment_buffer_ptr ^= null () then call release_temp_segment_ (MAIL_SYSTEM_, segment_buffer_ptr, (0)); 913 segment_buffer_ptr = null (); 914 915 do list_idx = 1 to recipients_info.n_lists; 916 recipients_result_list_ptr = recipients_info.lists (list_idx).recipients_result_list_ptr; 917 if recipients_result_list_ptr ^= null () then do; 918 do address_idx = 1 to recipients_result_list.n_addresses; 919 result_ptr = addr (recipients_result_list.results (address_idx)); 920 if result.list_idx = (recipients_info.n_lists + 1) then result.list_idx = 0; 921 end; 922 end; 923 end; 924 925 return; 926 927 end cleanup_print_delivery_results; 928 929 /* Free the data structures created by mail_system_$deliver_message or mail_system_$redistribute_message to describe the 930* results of the transmission */ 931 932 free_delivery_results: 933 entry (P_recipients_info_ptr, P_code); 934 935 recipients_info_ptr = P_recipients_info_ptr; 936 937 if recipients_info_ptr = null () then do; /* allow a null recipients_info for cleanup handlers */ 938 P_code = 0; 939 return; 940 end; 941 942 if recipients_info.version ^= RECIPIENTS_INFO_VERSION_2 then do; 943 P_code = error_table_$unimplemented_version; 944 return; 945 end; 946 947 users_area_ptr = recipients_info.area_ptr; 948 949 if recipients_info.expanded_recipients_result_list_ptr ^= null () then do; 950 expanded_recipients_result_list_ptr = recipients_info.expanded_recipients_result_list_ptr; 951 do idx = 1 to expanded_recipients_result_list.n_entries; 952 if expanded_recipients_result_list.entries (idx).address_ptr ^= null () then 953 call mail_system_$free_address (expanded_recipients_result_list.entries (idx).address_ptr, (0)); 954 end; 955 free expanded_recipients_result_list in (users_area); 956 recipients_info.expanded_recipients_result_list_ptr = null (); 957 end; 958 959 do idx = 1 to recipients_info.n_lists; 960 if recipients_info.lists (idx).recipients_result_list_ptr ^= null () then do; 961 recipients_result_list_ptr = recipients_info.lists (idx).recipients_result_list_ptr; 962 free recipients_result_list in (users_area); 963 recipients_info.lists (idx).recipients_result_list_ptr = null (); 964 end; 965 end; 966 967 P_code = 0; /* success */ 968 969 return; 970 971 /* Display an appropriate error message for a failing call to mail_system_$validate_address */ 972 973 print_validate_results: 974 entry (P_sci_ptr, P_address_ptr, P_code); 975 976 if P_code = 0 then return; /* validation was OK */ 977 978 call mail_system_$get_address_type (P_address_ptr, (0), code); 979 if code ^= 0 then do; /* invalid input? */ 980 RESIGNAL_NOT_AN_ADDRESS: 981 call sub_err_ (code, MAIL_SYSTEM_, ACTION_CANT_RESTART, null (), (0), "^p", P_address_ptr); 982 go to RESIGNAL_NOT_AN_ADDRESS; 983 end; 984 985 sci_ptr = P_sci_ptr; 986 call print_single_recipient_error (P_address_ptr, P_code, "", ssu_$print_message); 987 988 return; 989 990 /* Create a new message which is to be a reply to the supplied in-mailbox message */ 991 992 create_reply_message: 993 entry (P_original_message_ptr, P_reply_options_ptr, P_message_ptr, P_code); 994 995 original_message_ptr = P_original_message_ptr; 996 reply_options_ptr = P_reply_options_ptr; 997 998 if reply_options.version ^= REPLY_OPTIONS_VERSION_2 then do; 999 P_code = error_table_$unimplemented_version; 1000 return; 1001 end; 1002 if reply_options.mbz ^= ""b then do; /* must-be-zero */ 1003 P_code = error_table_$bad_subr_arg; 1004 return; 1005 end; 1006 1007 1008 /* Create the message and setup its reference to the original message */ 1009 1010 message_ptr, /* for cleanup handler */ 1011 reply_lists, segment_buffer_ptr = null (); 1012 1013 on condition (cleanup) call cleanup_create_reply_message ("1"b); 1014 1015 call mail_system_$create_message (original_message_ptr -> message.version, message_ptr, code); 1016 if code ^= 0 then call abort_create_reply_message (code); 1017 1018 call mail_system_$add_reply_reference (message_ptr, original_message_ptr, (1), code); 1019 if code ^= 0 then call abort_create_reply_message (code); 1020 1021 1022 /* Create the subject for the reply by prefixing the original subject (or body for interactive messages) with the prefix 1023* "Re:" if it isn't already present */ 1024 1025 original_subject_ptr = addr (SPACE); /* assume no original subject 'till proven otherwise */ 1026 original_subject_lth = 0; 1027 1028 if original_message_ptr -> message.subject.text_lth > 0 then do; 1029 original_subject_ptr = original_message_ptr -> message.subject.text_ptr; 1030 original_subject_lth = original_message_ptr -> message.subject.text_lth; 1031 end; /* there's a subject */ 1032 1033 else /* check for interactive message ... */ 1034 if original_message_ptr -> message.interactive & (original_message_ptr -> message.total_lines > 0) then 1035 if original_message_ptr -> message.body_sections (1).section_type = MESSAGE_PREFORMATTED_BODY_SECTION 1036 then do; /* ... which starts with a piece of text */ 1037 message_body_section_ptr = addr (original_message_ptr -> message.body_sections (1)); 1038 original_subject_ptr = addr (message_preformatted_body_section_text); 1039 original_subject_lth = index (message_preformatted_body_section_text, NL) - 1; 1040 if original_subject_lth = -1 then 1041 original_subject_lth = length (message_preformatted_body_section_text); 1042 end; 1043 1044 if original_subject_lth > 0 then do; /* there's something from which we can construct a subject */ 1045 use_original_subject = "0"b; /* ... assume we will have to add the "Re: " */ 1046 if (original_subject_lth > length (REPLY_SUBJECT_PREFIX)) then 1047 if (translate (substr (original_subject, 1, length (REPLY_SUBJECT_PREFIX)), LOWERCASE, UPPERCASE) 1048 = translate (REPLY_SUBJECT_PREFIX, LOWERCASE, UPPERCASE)) then 1049 use_original_subject = "1"b; /* subject is already OK */ 1050 if use_original_subject then 1051 call mail_system_$replace_subject (message_ptr, original_subject, code); 1052 else do; /* ... necessary to add the "Re: " */ 1053 if (original_subject_lth + length (REPLY_SUBJECT_PREFIX)) <= (4 * BUFFER_STACK_EXTENSION) then 1054 begin; /* ... it'll fit on the stack */ 1055 dcl new_subject character (original_subject_lth + length (REPLY_SUBJECT_PREFIX)); 1056 new_subject = REPLY_SUBJECT_PREFIX || original_subject; 1057 call mail_system_$replace_subject (message_ptr, new_subject, code); 1058 end; 1059 else if (original_subject_lth + length (REPLY_SUBJECT_PREFIX)) <= (4 * sys_info$max_seg_size) then do; 1060 /* ... too long: use a temporary segment */ 1061 call get_temp_segment_ (MAIL_SYSTEM_, segment_buffer_ptr, code); 1062 if code ^= 0 then call abort_create_reply_message (code); 1063 the_subject_ptr = segment_buffer_ptr; 1064 the_subject_lth = original_subject_lth + length (REPLY_SUBJECT_PREFIX); 1065 the_subject = REPLY_SUBJECT_PREFIX || original_subject; 1066 call mail_system_$replace_subject (message_ptr, the_subject, code); 1067 end; 1068 else code = mlsys_et_$message_too_large;/* ... how'd it ever get this large? */ 1069 end; 1070 if code ^= 0 then call abort_create_reply_message (code); 1071 end; 1072 1073 1074 /* Include the authors and recipients of the message as recipients of the reply if requested; remove any occurences of the 1075* user from these lists if the user does not want to receive a copy of the reply except by explicit request in one of the 1076* address lists passed to this entrypoint */ 1077 1078 if reply_options.include_authors then do; /* authors are to be primary recipients */ 1079 if ^is_empty_list (original_message_ptr -> message.reply_to) then 1080 call mail_system_$merge_address_lists (reply_lists.to, original_message_ptr -> message.reply_to, "0"b, 1081 reply_lists.to, code); 1082 else call mail_system_$merge_address_lists (reply_lists.to, original_message_ptr -> message.from, "0"b, 1083 reply_lists.to, code); 1084 if code ^= 0 then call abort_create_reply_message (code); 1085 end; 1086 1087 if reply_options.include_recipients then do; /* original message's recipients should see this */ 1088 if ^is_empty_list (original_message_ptr -> message.to) then do; 1089 call mail_system_$merge_address_lists (reply_lists.cc, original_message_ptr -> message.to, "0"b, 1090 reply_lists.cc, code); 1091 if code ^= 0 then call abort_create_reply_message (code); 1092 end; 1093 if ^is_empty_list (original_message_ptr -> message.cc) then do; 1094 call mail_system_$merge_address_lists (reply_lists.cc, original_message_ptr -> message.cc, "0"b, 1095 reply_lists.cc, code); 1096 if code ^= 0 then call abort_create_reply_message (code); 1097 end; 1098 if ^is_empty_list (original_message_ptr -> message.bcc) then do; 1099 call mail_system_$merge_address_lists (reply_lists.bcc, original_message_ptr -> message.bcc, "0"b, 1100 reply_lists.bcc, code); 1101 if code ^= 0 then call abort_create_reply_message (code); 1102 end; 1103 end; 1104 1105 if ^reply_options.include_self then do; /* remove the user from the "automatic" recipients */ 1106 compare_against_both = /* ... if they're equal we only need to compare against one */ 1107 ^ 1108 mail_system_$compare_addresses (mlsys_data_$user_default_mailbox_address, 1109 mlsys_data_$user_mail_table_address, (0)); 1110 do address_list_ptr = reply_lists.to, reply_lists.cc, reply_lists.bcc; 1111 if ^is_empty_list (address_list_ptr) then do; 1112 /*** ... checking backwards allows us to use an indexed do-loop */ 1113 do address_idx = address_list.n_addresses to 1 by -1; 1114 code = 0; /* ... we check the code only once so it needs to be set */ 1115 if mail_system_$compare_addresses (address_list.addresses (address_idx), 1116 mlsys_data_$user_default_mailbox_address, (0)) then 1117 call mail_system_$delete_address (address_list_ptr, address_idx, code); 1118 else if compare_against_both then 1119 if mail_system_$compare_addresses (address_list.addresses (address_idx), 1120 mlsys_data_$user_mail_table_address, (0)) then 1121 call mail_system_$delete_address (address_list_ptr, address_idx, code); 1122 if code ^= 0 then call abort_create_reply_message (code); 1123 end; 1124 end; 1125 end; 1126 end; 1127 1128 1129 /* Add any recipients explicitly requested by the caller */ 1130 1131 if ^is_empty_list (reply_options.to) then do; 1132 call mail_system_$merge_address_lists (reply_lists.to, reply_options.to, "0"b, reply_lists.to, code); 1133 if code ^= 0 then call abort_create_reply_message (code); 1134 end; 1135 1136 if ^is_empty_list (reply_options.cc) then do; 1137 call mail_system_$merge_address_lists (reply_lists.cc, reply_options.cc, "0"b, reply_lists.cc, code); 1138 if code ^= 0 then call abort_create_reply_message (code); 1139 end; 1140 1141 if ^is_empty_list (reply_options.bcc) then do; 1142 call mail_system_$merge_address_lists (reply_lists.bcc, reply_options.bcc, "0"b, reply_lists.bcc, code); 1143 if code ^= 0 then call abort_create_reply_message (code); 1144 end; 1145 1146 1147 /* Eliminate any duplicate addresses from the lists: when done, only one copy of each unique address will remain in the 1148* lists of recipients */ 1149 1150 call mail_system_$eliminate_duplicate_addresses (reply_lists_array, code); 1151 if code ^= 0 then call abort_create_reply_message (code); 1152 1153 1154 /* Finally, place the just constructed lists of recipients into the message */ 1155 1156 if ^is_empty_list (reply_lists.to) then do; 1157 call mail_system_$replace_to (message_ptr, reply_lists.to, code); 1158 if code ^= 0 then call abort_create_reply_message (code); 1159 end; 1160 1161 if ^is_empty_list (reply_lists.cc) then do; 1162 call mail_system_$replace_cc (message_ptr, reply_lists.cc, code); 1163 if code ^= 0 then call abort_create_reply_message (code); 1164 end; 1165 1166 if ^is_empty_list (reply_lists.bcc) then do; 1167 call mail_system_$replace_bcc (message_ptr, reply_lists.bcc, code); 1168 if code ^= 0 then call abort_create_reply_message (code); 1169 end; 1170 1171 1172 /* Control arrives here iff we have succesfully created the reply message */ 1173 1174 call cleanup_create_reply_message ("0"b); /* keep the message */ 1175 1176 P_message_ptr = message_ptr; 1177 P_code = 0; 1178 1179 return; 1180 1181 1182 1183 /* Aborts an invocation of the create_reply_message entrypoint after an error */ 1184 1185 abort_create_reply_message: 1186 procedure (p_code); 1187 1188 dcl p_code fixed binary (35) parameter; 1189 1190 P_code = p_code; 1191 go to ERROR_RETURN_FROM_CREATE_REPLY_MESSAGE; 1192 1193 end abort_create_reply_message; 1194 1195 ERROR_RETURN_FROM_CREATE_REPLY_MESSAGE: 1196 call cleanup_create_reply_message ("1"b); 1197 return; 1198 1199 1200 1201 /* Releases temporary buffers and address lists used by create_reply_message */ 1202 1203 cleanup_create_reply_message: 1204 procedure (p_free_message); 1205 1206 dcl p_free_message bit (1) aligned parameter; 1207 1208 if reply_lists.to ^= null () then call mail_system_$free_address_list (reply_lists.to, (0)); 1209 if reply_lists.cc ^= null () then call mail_system_$free_address_list (reply_lists.cc, (0)); 1210 if reply_lists.bcc ^= null () then call mail_system_$free_address_list (reply_lists.bcc, (0)); 1211 1212 if segment_buffer_ptr ^= null () then do; 1213 call release_temp_segment_ (MAIL_SYSTEM_, segment_buffer_ptr, (0)); 1214 segment_buffer_ptr = null (); 1215 end; 1216 1217 if p_free_message then call mail_system_$free_message (message_ptr, (0)); 1218 1219 return; 1220 1221 end cleanup_create_reply_message; 1222 1223 /* Searches the canonical form of a message for the given character string which may be a qedx regular expression: The 1224* canonical form of a message is the text used by the mail system when it stores the message in a mailbox */ 1225 1226 search_message: 1227 entry (P_message_ptr, P_search_string, P_search_options_ptr, P_code) returns (bit (1) aligned); 1228 1229 message_ptr = P_message_ptr; 1230 search_options_ptr = P_search_options_ptr; 1231 1232 message_canonical_text_ptr, /* for cleanup handler */ 1233 message_buffer_ptr, translated_search_string_ptr = null (); 1234 1235 on condition (cleanup) call cleanup_search_message (); 1236 1237 if message.version ^= MESSAGE_VERSION_2 then /* perform a simple validity check */ 1238 call abort_search_message (mlsys_et_$not_message); 1239 1240 if search_options.version ^= SEARCH_OPTIONS_VERSION_2 then 1241 call abort_search_message (error_table_$unimplemented_version); 1242 1243 if ^(search_options.search_envelope | search_options.search_header 1244 | search_options.search_redistributions_list | search_options.search_body) then 1245 call abort_search_message (error_table_$inconsistent); 1246 /* asked us to not search anything */ 1247 1248 if search_options.mbz ^= ""b then /* mbz => must be zero */ 1249 call abort_search_message (error_table_$bad_subr_arg); 1250 1251 if verify (P_search_string, WHITESPACE) = 0 then /* can't search for just whitespace */ 1252 call abort_search_message (mlsys_et_$null_search_string); 1253 1254 if search_options.regexp_search then do; /* check the string for syntactic validity */ 1255 call search_file_$silent (addr (P_search_string), 1, length (P_search_string), addr (NULL_STRING), 1, 0, 1256 (0), (0), code); 1257 if code = error_table_$nomatch then /* ... only happens if the string has valid syntax */ 1258 code = 0; 1259 if code ^= 0 then call abort_search_message (code); 1260 end; /* ... something's wrong with the string */ 1261 1262 1263 /* Create the canonical form of the message */ 1264 1265 local_fmo.version = FORMAT_MESSAGE_OPTIONS_VERSION_1; 1266 local_fmo.line_length = -1; /* no folding */ 1267 1268 if search_options.search_envelope then 1269 local_fmo.envelope_formatting_mode = DEFAULT_FORMATTING_MODE; 1270 else local_fmo.envelope_formatting_mode = NONE_FORMATTING_MODE; 1271 1272 if search_options.search_header then 1273 local_fmo.header_formatting_mode = DEFAULT_FORMATTING_MODE; 1274 else local_fmo.header_formatting_mode = NONE_FORMATTING_MODE; 1275 1276 if search_options.search_redistributions_list then 1277 local_fmo.redistributions_list_formatting_mode = DEFAULT_FORMATTING_MODE; 1278 else local_fmo.redistributions_list_formatting_mode = NONE_FORMATTING_MODE; 1279 1280 local_fmo.include_body = search_options.search_body; 1281 1282 if ^(search_options.search_envelope & search_options.search_header 1283 & search_options.search_redistributions_list & search_options.search_body) then 1284 go to MUST_FORMAT_THE_MESSAGE; /* don't search entire message: can't use ring-2's help */ 1285 1286 /*** First check with ring-2 to see if it already has the canonical form available */ 1287 call mail_system_$read_message_canonical_form_p (message_ptr, message_canonical_text_ptr, message_lth, code); 1288 if code = 0 then /* ... ring-2 has the canonical form already */ 1289 message_buffer_ptr = message_canonical_text_ptr; 1290 1291 else if (code = mlsys_et_$not_in_mailbox_message) | (code = mlsys_et_$no_message_canonical_form) then do; 1292 /*** Ring-2 has no canonical form so we must create it here: Try the stack first ... */ 1293 MUST_FORMAT_THE_MESSAGE: 1294 call cu_$grow_stack_frame (BUFFER_STACK_EXTENSION, message_buffer_ptr, (0)); 1295 message_lth = 0; 1296 call mlsys_utils_$format_message_canonical_form (message_ptr, addr (local_fmo), message_buffer_ptr, 1297 (4 * BUFFER_STACK_EXTENSION), message_lth, code); 1298 if code = 0 then do; /* ... the message fits: cleanup unused portion ... */ 1299 message_lth_in_words = divide ((message_lth + 3), 4, 18, 0); 1300 stack_truncation_ptr = 1301 addwordno (message_buffer_ptr, (message_lth_in_words + 16 - mod (message_lth_in_words, 16))); 1302 call cu_$shrink_stack_frame (stack_truncation_ptr, (0)); 1303 end; 1304 1305 else if code = error_table_$smallarg then do; 1306 /*** Won't fit on the stack: try a temporary segment */ 1307 call cu_$shrink_stack_frame (message_buffer_ptr, (0)); 1308 call get_temp_segment_ (MAIL_SYSTEM_, message_buffer_ptr, code); 1309 if code ^= 0 then call abort_search_message (code); 1310 message_lth = 0; /* just to be sure */ 1311 call mlsys_utils_$format_message_canonical_form (message_ptr, addr (local_fmo), message_buffer_ptr, 1312 (4 * sys_info$max_seg_size), message_lth, code); 1313 if code = error_table_$smallarg then code = mlsys_et_$message_too_large; 1314 if code ^= 0 then call abort_search_message (code); 1315 end; 1316 1317 else call abort_search_message (code); /* fatal error from the formatter */ 1318 end; 1319 1320 else call abort_search_message (code); /* fatal error from ring-2 */ 1321 1322 1323 /* Translate the message and search string to uppercase if the caller has requested a case-insensitive search: We'll use 1324* mvt_ to perform the translation as the PL/I compiler may generate temporaries which could overflow the stack */ 1325 1326 if search_options.case_insensitive then do; 1327 call mvt_$make_translation_table (UPPERCASE, LOWERCASE, translation_table); 1328 1329 if message_buffer_ptr = message_canonical_text_ptr then do; 1330 /*** Text is in ring-2: we'll have to copy it */ 1331 if message_lth <= (4 * BUFFER_STACK_EXTENSION) then 1332 call cu_$grow_stack_frame (divide ((message_lth + 3), 4, 18, 0), message_buffer_ptr, (0)); 1333 else do; 1334 call get_temp_segment_ (MAIL_SYSTEM_, message_buffer_ptr, code); 1335 if code ^= 0 then call abort_search_message (code); 1336 end; 1337 call mvt_ (message_canonical_text_ptr, message_buffer_ptr, message_lth, translation_table); 1338 end; 1339 else call mvt_ (message_buffer_ptr, message_buffer_ptr, message_lth, translation_table); 1340 1341 if length (P_search_string) <= (4 * BUFFER_STACK_EXTENSION) then 1342 call cu_$grow_stack_frame (divide ((length (P_search_string) + 3), 4, 18, 0), 1343 translated_search_string_ptr, (0)); 1344 else do; 1345 call get_temp_segment_ (MAIL_SYSTEM_, translated_search_string_ptr, code); 1346 if code ^= 0 then call abort_search_message (code); 1347 end; 1348 call mvt_ (addr (P_search_string), translated_search_string_ptr, length (P_search_string), 1349 translation_table); 1350 end; 1351 1352 1353 /* Perform the search */ 1354 1355 if search_options.case_insensitive then 1356 search_string_ptr = translated_search_string_ptr; 1357 else search_string_ptr = addr (P_search_string); 1358 1359 if search_options.regexp_search then do; 1360 call search_file_$silent (search_string_ptr, 1, length (P_search_string), message_buffer_ptr, 1, 1361 message_lth, (0), (0), code); 1362 search_succeeds = (code = 0); 1363 end; 1364 1365 else search_succeeds = (index (message_text, search_string) ^= 0); 1366 1367 P_code = 0; /* success */ 1368 1369 1370 /* Cleanup and return the result */ 1371 1372 RETURN_FROM_SEARCH_MESSAGE: 1373 call cleanup_search_message (); 1374 1375 return (search_succeeds); 1376 1377 1378 1379 /* Aborts the current search_message operation after a fatal error */ 1380 1381 abort_search_message: 1382 procedure (p_code); 1383 1384 dcl p_code fixed binary (35) parameter; 1385 1386 P_code = p_code; /* reflect the results to our caller */ 1387 search_succeeds = "0"b; /* the search fials by definition */ 1388 1389 go to RETURN_FROM_SEARCH_MESSAGE; 1390 1391 end abort_search_message; 1392 1393 1394 1395 /* Releases temporary buffers used by the search_message entrypoint */ 1396 1397 cleanup_search_message: 1398 procedure (); 1399 1400 if message_buffer_ptr ^= null () then 1401 if (message_buffer_ptr ^= message_canonical_text_ptr) 1402 & (baseno (message_buffer_ptr) ^= baseno (stackframeptr ())) then 1403 call release_temp_segment_ (MAIL_SYSTEM_, message_buffer_ptr, (0)); 1404 message_buffer_ptr = null (); 1405 1406 if translated_search_string_ptr ^= null () then 1407 if baseno (translated_search_string_ptr) ^= baseno (stackframeptr ()) then 1408 call release_temp_segment_ (MAIL_SYSTEM_, translated_search_string_ptr, (0)); 1409 translated_search_string_ptr = null (); 1410 1411 return; 1412 1413 end cleanup_search_message; 1414 1415 /* Sends the given message to the address whose printed representation is supplied by the caller */ 1416 1417 send_message_to_recipient: 1418 entry (P_author_name, P_recipient, P_delivery_mode, P_message_subject, P_message_body, P_message_access_class, 1419 P_explanation, P_code); 1420 1421 message_ptr, /* for cleanup handler */ 1422 address_ptr, address_list_ptr = null (); 1423 local_ri.version = ""; /* invalid version will stop free_delivery_results */ 1424 1425 on condition (cleanup) call cleanup_send_message (); 1426 1427 1428 /* Create the message: sets the subject, access class, and body to the values supplied by the caller */ 1429 1430 call mail_system_$create_message (MESSAGE_VERSION_2, message_ptr, code); 1431 if code ^= 0 then call abort_send_message (code); 1432 1433 if verify (P_message_subject, WHITESPACE) ^= 0 then do; 1434 call mail_system_$replace_subject (message_ptr, P_message_subject, code); 1435 if code ^= 0 then call abort_send_message (code); 1436 end; 1437 1438 if ^aim_check_$equal (P_message_access_class, get_authorization_ ()) then do; 1439 call mail_system_$set_access_class (message_ptr, P_message_access_class, code); 1440 if code ^= 0 then call abort_send_message (code); 1441 end; 1442 1443 local_mbsp.version = MESSAGE_BODY_SECTION_PARAMETER_VERSION_2; 1444 message_body_section_ptr = addr (local_mbsp.section); 1445 message_body_section.section_type = MESSAGE_PREFORMATTED_BODY_SECTION; 1446 message_preformatted_body_section.text_ptr = addr (P_message_body); 1447 message_preformatted_body_section.text_lth = length (P_message_body); 1448 call mail_system_$replace_body (message_ptr, addr (local_mbsp), code); 1449 if code ^= 0 then call abort_send_message (code); 1450 1451 1452 /* Setup a non-default From field using the supplied address name */ 1453 1454 if verify (P_author_name, WHITESPACE) ^= 0 then do; 1455 1456 call user_info_$login_data (person_id, ((32)" "), ((32)" "), anonymous_flag); 1457 if anonymous_flag = 0 then do; /* can only do this if not an anonymous user, however */ 1458 1459 call mail_system_$create_mail_table_address (rtrim (person_id), rtrim (P_author_name), "", 1460 address_ptr, code); 1461 if code ^= 0 then call abort_send_message (code); 1462 1463 address_list_ptr = null (); 1464 call mail_system_$add_address (address_list_ptr, address_ptr, ADDRESS_LIST_VERSION_2, code); 1465 if code ^= 0 then call abort_send_message (code); 1466 address_ptr = null (); /* the address is now safely in the list */ 1467 1468 call mail_system_$replace_from (message_ptr, address_list_ptr, code); 1469 if code ^= 0 then call abort_send_message (code); 1470 call mail_system_$free_address_list (address_list_ptr, (0)); 1471 end; 1472 end; 1473 1474 1475 /* Setup the To field to be the supplied recipient */ 1476 1477 call mlsys_utils_$parse_address_text (P_recipient, address_ptr, code); 1478 if code ^= 0 then call abort_send_message (code); 1479 1480 address_list_ptr = null (); 1481 call mail_system_$add_address (address_list_ptr, address_ptr, ADDRESS_LIST_VERSION_2, code); 1482 if code ^= 0 then call abort_send_message (code); 1483 address_ptr = null (); /* the address is now safely in the list */ 1484 1485 call mail_system_$replace_to (message_ptr, address_list_ptr, code); 1486 if code ^= 0 then call abort_send_message (code); 1487 call mail_system_$free_address_list (address_list_ptr, (0)); 1488 1489 1490 /* Deliver the message */ 1491 1492 local_do.version = DELIVER_OPTIONS_VERSION_2; 1493 local_do.delivery_mode = P_delivery_mode; 1494 local_do.queueing_mode = ALWAYS_QUEUE_FOREIGN; 1495 local_do.queued_notification_mode = NOTIFY_ON_ERROR; 1496 string (local_do.flags) = ""b; 1497 local_do.recipient_notification = "1"b; /* notify if not interactive or express */ 1498 1499 local_ri.area_ptr = get_system_free_area_ (); 1500 local_ri.n_lists = 1; 1501 local_ri.list.address_list_ptr = message.to; /* the recipient was added to the To field */ 1502 local_ri.expanded_recipients_result_list_ptr, local_ri.list.recipients_result_list_ptr = null (); 1503 local_ri.version = RECIPIENTS_INFO_VERSION_2; 1504 1505 call mail_system_$deliver_message (message_ptr, addr (local_ri), addr (local_do), code); 1506 1507 1508 /* Determine the appropriate return code */ 1509 1510 P_explanation = ""; /* until proven otherwise */ 1511 1512 if (code = 0) | (code = mlsys_et_$message_not_sent) | (code = mlsys_et_$message_partially_sent) then do; 1513 recipients_result_list_ptr = local_ri.list.recipients_result_list_ptr; 1514 code = recipients_result_list.results (1).code; 1515 P_explanation = recipients_result_list.results (1).explanation; 1516 end; 1517 1518 else ; /* anything other global code is serious */ 1519 1520 P_code = code; /* set the return code */ 1521 1522 1523 /* Cleanup */ 1524 1525 RETURN_FROM_SEND_MESSAGE_TO_RECIPIENT: 1526 call cleanup_send_message (); 1527 1528 return; 1529 1530 1531 1532 /* Aborts the send_message_to_recipient operation */ 1533 1534 abort_send_message: 1535 procedure (p_code); 1536 1537 dcl p_code fixed binary (35) parameter; 1538 1539 P_code = p_code; /* reflect results to our caller */ 1540 1541 go to RETURN_FROM_SEND_MESSAGE_TO_RECIPIENT; 1542 1543 end abort_send_message; 1544 1545 1546 1547 /* Releases all temporary data used by this entrypoint */ 1548 1549 cleanup_send_message: 1550 procedure (); 1551 1552 call free_delivery_results (addr (local_ri), (0)); 1553 1554 if address_list_ptr ^= null () then call mail_system_$free_address_list (address_list_ptr, (0)); 1555 1556 if address_ptr ^= null () then call mail_system_$free_address (address_ptr, (0)); 1557 1558 if message_ptr ^= null () then call mail_system_$free_message (message_ptr, (0)); 1559 1560 return; 1561 1562 end cleanup_send_message; 1563 1564 /* Obtains the error code associated with a failed attempt to do I/O through ioa_ */ 1565 1566 get_ioa_error_code: 1567 procedure (p_code); 1568 1569 dcl p_code fixed binary (35) parameter; 1570 1571 dcl 1 local_ci aligned like condition_info; 1572 1573 local_ci.version = condition_info_version_1; 1574 1575 call find_condition_info_ (null (), addr (local_ci), p_code); 1576 if p_code ^= 0 then return; 1577 1578 if local_ci.info_ptr ^= null () then /* there's a status code out there */ 1579 p_code = local_ci.info_ptr -> io_error_info.status.code; 1580 else p_code = error_table_$null_info_ptr; /* have to return something ... */ 1581 1582 return; 1583 1584 end get_ioa_error_code; 1585 1586 /* Gets the address summary of the specified address (see summarize_address, above); it will grow the caller's stack frame 1587* as necessary */ 1588 1589 get_address_summary: 1590 procedure (p_address_ptr, p_is_start_of_sentence) /* options (quick) */; 1591 1592 dcl p_address_ptr pointer parameter; 1593 dcl p_is_start_of_sentence bit (1) aligned parameter; 1594 dcl code fixed binary (35); 1595 1596 address_variable_ptr = addr (address_local_variable); 1597 address_variable_max_lth = maxlength (address_local_variable); 1598 /* assume it will fit in the local copy */ 1599 1600 call summarize_address (p_address_ptr, p_is_start_of_sentence, address_variable, code); 1601 1602 if code = error_table_$smallarg then do; /* too large for the preallocated space ... */ 1603 call cu_$grow_stack_frame (STACK_EXTENSION, address_variable_ptr, (0)); 1604 address_variable_max_lth = 4 * (STACK_EXTENSION - 1); 1605 1606 call summarize_address (p_address_ptr, p_is_start_of_sentence, address_variable, code); 1607 /* try again using space at the end of the stack ... */ 1608 1609 do while (code = error_table_$smallarg); /* ... and keep trying 'till it fits */ 1610 call cu_$grow_stack_frame (STACK_EXTENSION, (null ()), (0)); 1611 address_variable_max_lth = address_variable_max_lth + (4 * STACK_EXTENSION); 1612 call summarize_address (p_address_ptr, p_is_start_of_sentence, address_variable, code); 1613 end; 1614 end; 1615 1616 return; 1617 1618 end get_address_summary; 1619 1620 /**** format: ^indcomtxt */ 1621 /* Gets the "true" description of the specified address. The true description of all addresses expect mail table 1622* addresses is returned by the summarize_address entrypoint; for mail table addresses it is: 1623* for the address NAME 1624* where "" is the description of the address actually in the mail table and "NAME" is the name of the 1625* entry in the mail table */ 1626 /**** format: indcomtxt */ 1627 1628 get_true_address_summary: 1629 procedure (p_address_ptr, p_is_start_of_sentence) /* options (quick) */; 1630 1631 dcl p_address_ptr pointer parameter; 1632 dcl p_is_start_of_sentence bit (1) aligned parameter; 1633 1634 dcl address_ptr pointer; 1635 dcl address_pathname character (194); 1636 dcl address_dirname character (168); 1637 dcl address_ename character (32); 1638 dcl mte_name character (32) varying; 1639 dcl code fixed binary (35); 1640 dcl address_type fixed binary; 1641 1642 call mail_system_$get_address_type (p_address_ptr, address_type, (0)); 1643 if address_type = MAIL_TABLE_ADDRESS then do; 1644 call mail_system_$get_mail_table_address (p_address_ptr, address_ptr, code); 1645 if code ^= 0 then /* lookup failed: stick with the original address */ 1646 address_ptr = p_address_ptr; 1647 end; 1648 else address_ptr = p_address_ptr; 1649 1650 call get_address_summary (address_ptr, p_is_start_of_sentence); 1651 1652 if address_ptr ^= p_address_ptr then do; /* picked up an expansion from the mail table ... */ 1653 call mail_system_$get_address_string (p_address_ptr, mte_name, (0)); 1654 call mail_system_$get_address_type (address_ptr, address_type, (0)); 1655 if address_type = USER_MAILBOX_ADDRESS then do; 1656 call mail_system_$get_address_pathname (address_ptr, address_dirname, address_ename, ((32)" "), (0)); 1657 address_pathname = pathname_ (address_dirname, address_ename); 1658 if p_is_start_of_sentence then 1659 address_variable = "The mailbox "; 1660 else address_variable = "the mailbox "; 1661 address_variable = address_variable || reverse (after (reverse (address_pathname), reverse (".mbx"))); 1662 end; 1663 if (length (address_variable) + length (mte_name) + length (" for the address ")) 1664 > maxlength (address_variable) then 1665 if addr (address_variable) = addr (address_local_variable) then do; 1666 call cu_$grow_stack_frame (STACK_EXTENSION, address_variable_ptr, (0)); 1667 address_variable_max_lth = 4 * (STACK_EXTENSION - 1); 1668 address_variable = address_local_variable; 1669 end; 1670 else do; 1671 call cu_$grow_stack_frame (STACK_EXTENSION, (null ()), (0)); 1672 address_variable_max_lth = address_variable_max_lth + (4 * STACK_EXTENSION); 1673 end; 1674 address_variable = address_variable || " for the address "; 1675 address_variable = address_variable || mte_name; 1676 call mail_system_$free_address (address_ptr, (0)); 1677 end; 1678 1679 return; 1680 1681 end get_true_address_summary; 1682 1683 /* Displays the reason why the message could not be transmitted to the given address or had to be queued instead of 1684* delivered immediately */ 1685 1686 print_single_recipient_error: 1687 procedure (p_address_ptr, p_code, p_explanation, p_display_message); 1688 1689 dcl p_address_ptr pointer parameter; 1690 dcl p_code fixed binary (35) parameter; 1691 dcl p_explanation character (128) varying parameter; 1692 dcl p_display_message entry () options (variable) variable parameter; 1693 1694 dcl (address_pathname, address_dirname) character (168); 1695 dcl user_name character (64) varying; 1696 dcl address_ename character (32); 1697 dcl address_type fixed binary; 1698 1699 address_variable_ptr = addr (address_local_variable); 1700 address_variable_max_lth = maxlength (address_local_variable); 1701 address_variable = ""; /* insures everything will work OK */ 1702 1703 call mail_system_$get_address_type (p_address_ptr, address_type, (0)); 1704 1705 if p_code = mlsys_et_$message_queued then do; /* only if it was a transient error that caused queueing */ 1706 call get_true_address_summary (p_address_ptr, "0"b); 1707 call p_display_message (sci_ptr, 0, "Mail queued for ^a because ^a.", address_variable, p_explanation); 1708 end; 1709 1710 else if p_code = mlsys_et_$rejected_by_foreign_system then do; 1711 call get_true_address_summary (p_address_ptr, "0"b); 1712 call p_display_message (sci_ptr, 0, "Mail for ^a was rejected by a foreign system. ^a", address_variable, 1713 p_explanation); 1714 end; 1715 1716 else if p_code = mlsys_et_$invalid_address then do; 1717 call get_true_address_summary (p_address_ptr, "0"b); 1718 call p_display_message (sci_ptr, p_code, "^a", after (address_variable, "the invalid address ")); 1719 end; 1720 1721 else if p_code = mlsys_et_$no_mailbox then do; 1722 call get_true_address_summary (p_address_ptr, "1"b); 1723 call p_display_message (sci_ptr, 0, "^a does not exist.", address_variable); 1724 end; 1725 1726 else if mlsys_psp_$forum_not_available () then go to FORUM_NOT_ON_SYSTEM; 1727 1728 else if p_code = forum_error_table_$no_such_forum then do; 1729 call get_true_address_summary (p_address_ptr, "1"b); 1730 call p_display_message (sci_ptr, 0, "^a does not exist.", address_variable); 1731 end; 1732 1733 else if p_code = forum_error_table_$not_eligible then do; 1734 call get_true_address_summary (p_address_ptr, "0"b); 1735 call p_display_message (sci_ptr, 0, "You are not a participant of ^a.", address_variable); 1736 end; 1737 1738 else if p_code = forum_error_table_$read_only then do; 1739 call get_true_address_summary (p_address_ptr, "0"b); 1740 call p_display_message (sci_ptr, 0, "You may not enter transactions into ^a.", address_variable); 1741 end; 1742 1743 else 1744 FORUM_NOT_ON_SYSTEM: 1745 if p_code = mlsys_et_$mte_not_found then do; 1746 call get_address_summary (p_address_ptr, "1"b); 1747 call p_display_message (sci_ptr, p_code, "^a", address_variable); 1748 end; 1749 1750 else if p_code = mlsys_et_$no_mailing_list then do; 1751 call get_true_address_summary (p_address_ptr, "1"b); 1752 call p_display_message (sci_ptr, 0, "^a does not exist.", address_variable); 1753 end; 1754 1755 else do; /* everything else */ 1756 if address_type = USER_MAILBOX_ADDRESS then do; 1757 call mail_system_$get_address_string (p_address_ptr, user_name, (0)); 1758 call mail_system_$get_address_pathname (p_address_ptr, address_dirname, address_ename, ((32)" "), (0)) 1759 ; 1760 address_pathname = pathname_ (address_dirname, address_ename); 1761 address_variable = "The mailbox "; 1762 address_variable = address_variable || reverse (after (reverse (address_pathname), reverse (".mbx"))); 1763 address_variable = address_variable || " for the address "; 1764 address_variable = address_variable || user_name; 1765 end; 1766 else call get_true_address_summary (p_address_ptr, "1"b); 1767 call p_display_message (sci_ptr, p_code, "^a", address_variable); 1768 end; 1769 1770 if address_variable_ptr ^= addr (address_local_variable) then 1771 call cu_$shrink_stack_frame (address_variable_ptr, (0)); 1772 1773 return; 1774 1775 end print_single_recipient_error; 1776 1777 /* Formats and prints an error message for a recipient which is part of the expansion of a mailing list or named group */ 1778 1779 print_expansion_error: 1780 procedure () options (variable) options (non_quick); 1781 1782 dcl based_fb35 fixed binary (35) based; 1783 dcl arg_ptr pointer; 1784 1785 dcl error_message character (100) aligned; 1786 dcl arg_packed bit (1) aligned; 1787 dcl (error_code, from_size, to_size) fixed binary (35); 1788 dcl output_message_lth fixed binary (21); 1789 dcl (arg_type, arg_ndims, arg_size, arg_scale) fixed binary; 1790 1791 buffer_ptr = stack_buffer_ptr; /* always use the in-stack buffer */ 1792 buffer_max_lth = stack_buffer_max_lth; 1793 1794 call cu_$arg_ptr (2, arg_ptr, (0), (0)); 1795 call decode_descriptor_ (cu_$arg_list_ptr (), 2, arg_type, arg_packed, arg_ndims, arg_size, arg_scale); 1796 1797 if (arg_type = real_fix_bin_1_dtype) & (arg_packed = "0"b) then 1798 error_code = arg_ptr -> based_fb35; /* caller's code is a single-word fixed binary value */ 1799 1800 else do; /* caller's code is something else: try to convert it */ 1801 if (arg_type >= bit_dtype) & (arg_type <= varying_char_dtype) then 1802 from_size = arg_size; 1803 else from_size = (262144 * arg_scale) + arg_size; 1804 to_size = 35; /* target is fixed binary (35) */ 1805 call assign_ (addr (error_code), (2 * real_fix_bin_1_dtype), to_size, arg_ptr, 1806 (2 * arg_type + binary (arg_packed, 1)), from_size); 1807 end; 1808 1809 buffer_used = 3; /* we indent these messages 3 space s */ 1810 substr (buffer, 1, buffer_used) = ""; 1811 1812 if error_code ^= 0 then do; /* get the error message */ 1813 call convert_status_code_ (error_code, (""), error_message); 1814 substr (buffer, (buffer_used + 1), (length (rtrim (error_message)) + 1)) = rtrim (error_message); 1815 buffer_used = buffer_used + length (rtrim (error_message)) + 1; 1816 end; 1817 1818 begin; /* always have more than just the code */ 1819 dcl output_message character (buffer_max_lth - buffer_used) unaligned defined (buffer) position (buffer_used + 1); 1820 call ioa_$general_rs (cu_$arg_list_ptr (), 3, 4, output_message, output_message_lth, "0"b, "1"b); 1821 buffer_used = buffer_used + output_message_lth; 1822 end; 1823 1824 call iox_$put_chars (iox_$error_output, buffer_ptr, buffer_used, (0)); 1825 1826 return; 1827 1828 end print_expansion_error; 1829 1830 /* Determine if there is at least one address in the list of recipients whose result code is the specified value and which 1831* was not earlier reported as an error */ 1832 1833 is_a_recipient_with_code: 1834 procedure (p_code) returns (bit (1) aligned); 1835 1836 dcl p_code fixed binary (35) parameter; 1837 dcl (list_idx, address_idx) fixed binary; 1838 1839 do list_idx = 1 to recipients_info.n_lists; 1840 recipients_result_list_ptr = recipients_info.lists (list_idx).recipients_result_list_ptr; 1841 1842 if recipients_result_list_ptr ^= null () then do; 1843 1844 do address_idx = 1 to recipients_result_list.n_addresses; 1845 result_ptr = addr (recipients_result_list.results (address_idx)); 1846 1847 if (result.code = p_code) & (length (result.explanation) = 0) & (result.first_entry_idx = 0) then 1848 return ("1"b); 1849 end; 1850 end; 1851 end; 1852 1853 /*** Control arrives here iff there are no recipients with the indicated result code */ 1854 return ("0"b); 1855 1856 end is_a_recipient_with_code; 1857 1858 /* Print the list of recipients with the indicated result code */ 1859 1860 print_recipient_list: 1861 procedure (p_code, p_prefix); 1862 1863 dcl p_code fixed binary (35) parameter; 1864 dcl p_prefix character (*) parameter; 1865 1866 dcl (n_recipients, n_recipients_processed, list_idx, address_idx) fixed binary; 1867 1868 call start_new_output (); /* initialize the output buffer */ 1869 call add_to_buffer_fixed (p_prefix); 1870 1871 n_recipients = 0; /* count the number of interesting recipients first */ 1872 1873 do list_idx = 1 to recipients_info.n_lists; 1874 recipients_result_list_ptr = recipients_info.lists (list_idx).recipients_result_list_ptr; 1875 if recipients_result_list_ptr ^= null () then do; 1876 do address_idx = 1 to recipients_result_list.n_addresses; 1877 result_ptr = addr (recipients_result_list.results (address_idx)); 1878 if (result.code = p_code) & (length (result.explanation) = 0) & (result.first_entry_idx = 0) then 1879 n_recipients = n_recipients + 1; 1880 end; 1881 end; 1882 end; 1883 1884 n_recipients_processed = 0; 1885 1886 do list_idx = 1 to recipients_info.n_lists; 1887 address_list_ptr = recipients_info.lists (list_idx).address_list_ptr; 1888 recipients_result_list_ptr = recipients_info.lists (list_idx).recipients_result_list_ptr; 1889 if recipients_result_list_ptr ^= null () then do; 1890 do address_idx = 1 to recipients_result_list.n_addresses; 1891 result_ptr = addr (recipients_result_list.results (address_idx)); 1892 if (result.code = p_code) & (length (result.explanation) = 0) & (result.first_entry_idx = 0) 1893 then do; 1894 n_recipients_processed = n_recipients_processed + 1; 1895 if (n_recipients > 2) & (n_recipients_processed > 1) then call add_to_buffer_fixed (COMMA); 1896 call add_to_buffer_fixed (SPACE); 1897 if (n_recipients > 1) & (n_recipients_processed = n_recipients) then 1898 call add_to_buffer_fixed (AND_SPACE); 1899 call get_address_summary (address_list.addresses (address_idx), "0"b); 1900 call add_to_buffer_varying (address_variable); 1901 end; 1902 end; 1903 end; 1904 end; 1905 1906 call add_to_buffer_fixed (PERIOD); 1907 call add_to_buffer_fixed (NL); 1908 1909 call print_the_buffer (); /* print it neatly */ 1910 1911 return; 1912 1913 end print_recipient_list; 1914 1915 /* Prepare to format a new recipient list in the output buffer */ 1916 1917 start_new_output: 1918 procedure (); 1919 1920 buffer_ptr = stack_buffer_ptr; /* start over in the stack */ 1921 buffer_max_lth = stack_buffer_max_lth; 1922 buffer_used = 0; 1923 1924 return; 1925 1926 end start_new_output; 1927 1928 1929 1930 /* Prints the recipient list previously constructed: The list is folded to the line length of the terminal whenever 1931* possible */ 1932 1933 print_the_buffer: 1934 procedure (); 1935 1936 dcl (last_comma, next_comma) fixed binary (21); 1937 dcl offset fixed binary; 1938 1939 line_length = get_line_length_$switch (iox_$user_output, (0)); 1940 1941 buffer_printed = 0; 1942 offset = 0; 1943 1944 do while (buffer_printed < buffer_used); /* while there's something left to print */ 1945 begin; 1946 dcl rest_of_buffer character (buffer_used - buffer_printed) unaligned defined (buffer) position (buffer_printed + 1); 1947 1948 last_comma = 0; 1949 next_comma = index (rest_of_buffer, COMMA); 1950 if next_comma = 0 then next_comma = length (rest_of_buffer); 1951 1952 do while (((next_comma + offset) < line_length) & (next_comma < length (rest_of_buffer))); 1953 last_comma = next_comma; 1954 begin; 1955 dcl rest_of_rest_of_buffer character (buffer_used - buffer_printed - last_comma) unaligned defined (buffer) 1956 position (buffer_printed + last_comma + 1); 1957 next_comma = index (rest_of_rest_of_buffer, COMMA); 1958 if next_comma = 0 then next_comma = length (rest_of_rest_of_buffer); 1959 next_comma = last_comma + next_comma; 1960 end; 1961 end; 1962 1963 if (last_comma ^= 0) & ((next_comma + offset) > line_length) then next_comma = last_comma; 1964 1965 begin; 1966 dcl section_to_print character (next_comma) unaligned defined (buffer) position (buffer_printed + 1); 1967 call iox_$put_chars (iox_$user_output, addr (section_to_print), length (section_to_print), (0)); 1968 end; 1969 1970 if next_comma < length (rest_of_buffer) then do; 1971 call iox_$put_chars (iox_$user_output, addr (NL), length (NL), (0)); 1972 call iox_$put_chars (iox_$user_output, addr (THREE_SPACES), length (THREE_SPACES), (0)); 1973 offset = 3; 1974 end; 1975 1976 buffer_printed = buffer_printed + next_comma + 1; 1977 end; /* past the comma and the space after it */ 1978 end; 1979 1980 return; 1981 1982 end print_the_buffer; 1983 1984 /* Add a string to the output buffer: switches to a temporary segment if necessary */ 1985 1986 add_to_buffer: 1987 procedure (); 1988 1989 dcl p_text character (*) parameter; 1990 dcl p_varying_text character (*) varying parameter; 1991 1992 dcl text character (text_lth) unaligned based (text_ptr); 1993 dcl text_ptr pointer; 1994 dcl text_lth fixed binary (21); 1995 1996 dcl buffer_in_use character (buffer_used) unaligned based; 1997 1998 1999 add_to_buffer_fixed: /* ... from a fixed length string */ 2000 entry (p_text); 2001 2002 text_ptr = addr (p_text); 2003 text_lth = length (p_text); 2004 go to ADD_TO_BUFFER_COMMON; 2005 2006 2007 add_to_buffer_varying: /* ... from a varying string */ 2008 entry (p_varying_text); 2009 2010 text_ptr = addwordno (addr (p_varying_text), 1); 2011 text_lth = length (p_varying_text); 2012 2013 2014 ADD_TO_BUFFER_COMMON: 2015 if (buffer_used + text_lth) > buffer_max_lth then 2016 if buffer_ptr = stack_buffer_ptr then do; /* switch to a temporary segment */ 2017 if segment_buffer_ptr = null () then do;/* ... haven't gotten one already */ 2018 call get_temp_segment_ (MAIL_SYSTEM_, segment_buffer_ptr, code); 2019 if code ^= 0 then go to ERROR_RETURN_FROM_PRINT_DELIVERY_RESULTS; 2020 segment_buffer_max_lth = 4 * sys_info$max_seg_size; 2021 end; 2022 segment_buffer_ptr -> buffer_in_use = stack_buffer_ptr -> buffer_in_use; 2023 buffer_ptr = segment_buffer_ptr; 2024 buffer_max_lth = segment_buffer_max_lth; 2025 end; 2026 else do; /* overflowed the temporary segment */ 2027 code = error_table_$area_too_small; 2028 go to ERROR_RETURN_FROM_PRINT_DELIVERY_RESULTS; 2029 end; 2030 2031 begin; 2032 dcl new_part character (text_lth) unaligned defined (buffer) position (buffer_used + 1); 2033 new_part = text; 2034 end; 2035 2036 buffer_used = buffer_used + text_lth; 2037 2038 return; 2039 2040 end add_to_buffer; 2041 2042 /* Tests if an address list is empty */ 2043 2044 is_empty_list: 2045 procedure (p_address_list_ptr) returns (bit (1) aligned); 2046 2047 dcl p_address_list_ptr pointer parameter; 2048 2049 if p_address_list_ptr = null () then /* nothing there at all */ 2050 return ("1"b); 2051 2052 else return (p_address_list_ptr -> address_list.n_addresses = 0); 2053 2054 end is_empty_list; 2055 1 1 /* BEGIN INCLUDE FILE ... mlsys_data.incl.pl1 */ 1 2 /* Created: 20 Decembber 1978 by G. Palter */ 1 3 /* Modified: 1 July 1983 by G. Palter to merge with mlsys_internal_data_ */ 1 4 1 5 /* Constants defined by the Multics mail system for external use */ 1 6 1 7 dcl mlsys_data_$system_directory character (168) external; /* directory containing per-system data (mail table/queues) */ 1 8 1 9 1 10 /* Static data defined by the Multics mail system for external use */ 1 11 1 12 dcl mlsys_data_$user_default_mailbox_address pointer external; 1 13 /* -> the address of the user's default mailbox */ 1 14 dcl mlsys_data_$user_mail_table_address pointer external; /* -> the address of the user's entry in the mail table */ 1 15 dcl mlsys_data_$user_logbox_address pointer external; /* -> the address of the user's logbox */ 1 16 1 17 /* END INCLUDE FILE ... mlsys_data.incl.pl1 */ 2056 2057 2 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 2 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 2 7* Added seen switch to message. 2 8* END HISTORY COMMENTS */ 2 9 2 10 2 11 /* Created: June 1983 by G. Palter */ 2 12 2 13 /* Definition of a message as used by the Multics Mail System */ 2 14 2 15 dcl 1 message aligned based (message_ptr), 2 16 2 version character (8) unaligned, 2 17 2 reserved bit (144), /* for exclusive use of the mail system */ 2 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 2 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 2 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 2 21 2 n_body_sections fixed binary, /* # of sections in the body */ 2 22 2 flags, 2 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 2 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 2 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 2 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 2 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 2 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 2 29 2 pad bit (36), 2 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 2 31 2 header, 2 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 2 33 3 access_class bit (72), /* AIM access class of this message */ 2 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 2 35 3 from pointer, /* -> address list of author(s) of the message */ 2 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 2 37 3 to pointer, /* -> address list of primary recipients */ 2 38 3 cc pointer, /* -> address list of secondary recipients */ 2 39 3 bcc pointer, /* -> address list of blind recipients */ 2 40 3 subject like message_text_field, /* subject of the message */ 2 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 2 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 2 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 2 44 2 body, 2 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 2 46 3 pad bit (36), 2 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 2 48 2 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 2 50 2 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 2 52 2 53 dcl message_ptr pointer; 2 54 2 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 2 56 message_references_list_n_references) 2 57 fixed binary; /* for exclusive use of the mail system */ 2 58 2 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 2 60 2 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 2 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 2 63 2 sender pointer, /* -> address of entity that mailed the message */ 2 64 2 trace pointer, /* -> message_trace describing how it got here */ 2 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 2 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 2 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 2 68 2 69 dcl message_envelope_ptr pointer; 2 70 2 71 2 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 2 73 2 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 2 75 2 pad pointer, /* forces even word alignment */ 2 76 2 version character (8) unaligned, 2 77 2 envelope like message_envelope; 2 78 2 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 2 80 2 81 dcl message_envelope_parameter_ptr pointer; 2 82 2 83 2 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 2 85* networks to reach this recipient */ 2 86 2 87 dcl 1 message_trace aligned based (message_trace_ptr), 2 88 2 version character (8) unaligned, 2 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 2 91 2 pad bit (36), 2 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 2 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 2 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 2 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 2 96 3 receiving_host character (256) varying, /* ... the host which received it */ 2 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 2 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 2 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 2 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 2 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 2 102 2 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 2 104 2 105 dcl message_trace_ptr pointer; 2 106 2 107 /* Definition of a message's redistributions list */ 2 108 2 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 2 110 2 version character (8) unaligned, 2 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 112 2 pad bit (36), 2 113 2 n_redistributions fixed binary, /* # of redistributions */ 2 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 2 115 like message_redistribution; /* the redistributions: oldest first */ 2 116 2 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 2 118 2 119 2 120 /* Definition of a single redistribution (forwarding) of a message */ 2 121 2 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 2 123 2 envelope like message_envelope, 2 124 2 header, 2 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 2 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 2 127 3 from pointer, /* -> address list of authors of this redistribution */ 2 128 3 to pointer, /* -> address list of recipients of the redistribution */ 2 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 2 130 2 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 2 132 based (message_redistribution.comment.text_ptr); 2 133 2 134 dcl message_redistribution_ptr pointer; 2 135 2 136 2 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 2 138 2 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 2 140 2 pad pointer, /* forces even word alignment */ 2 141 2 version character (8) unaligned, 2 142 2 redistribution like message_redistribution; 2 143 2 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 2 145 2 146 dcl message_redistribution_parameter_ptr pointer; 2 147 2 148 /* Definition of the list of user-defined fields in a message */ 2 149 2 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 2 151 2 version character (8) unaligned, 2 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 153 2 pad bit (36), 2 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 2 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 2 156 like message_user_field; /* the actual user-defined fields */ 2 157 2 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 2 159 2 160 2 161 /* Definition of a user defined message header field */ 2 162 2 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 2 164 2 header, 2 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 2 166 3 field_type fixed binary, /* type of data contained in this field */ 2 167 2 field_type_variable bit (144); /* the actual data (see below) */ 2 168 2 169 dcl message_user_field_ptr pointer; 2 170 2 171 2 172 /* Defined types of user defined fields */ 2 173 2 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 2 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 2 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 2 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 2 178 fixed binary static options (constant); 2 179 2 180 2 181 /* Structures used to access the data for the different types of user defined fields */ 2 182 2 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 2 184 2 header like message_user_field.header, 2 185 2 text like message_text_field; /* the message text */ 2 186 2 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 2 188 based (message_text_user_field.text.text_ptr); 2 189 2 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 2 191 2 header like message_user_field.header, 2 192 2 address_list_ptr pointer, /* -> the address list */ 2 193 2 pad bit (72); 2 194 2 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 2 196 2 header like message_user_field.header, 2 197 2 date_time fixed binary (71), /* the clock reading */ 2 198 2 pad bit (72); 2 199 2 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 2 201 2 header like message_user_field.header, 2 202 2 value fixed binary (35), /* the integer value */ 2 203 2 pad bit (108); 2 204 2 205 2 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 2 207 2 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 2 209 2 pad pointer, /* forces even word alignment */ 2 210 2 version character (8) unaligned, 2 211 2 user_field like message_user_field; 2 212 2 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 2 214 2 215 dcl message_user_field_parameter_ptr pointer; 2 216 2 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 2 218 2 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 2 220 2 version character (8) unaligned, 2 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 222 2 pad bit (36), 2 223 2 n_references fixed binary, /* # of references in this list */ 2 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 2 225 like message_reference; /* the references themselves */ 2 226 2 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 2 228 2 229 dcl message_references_list_ptr pointer; 2 230 2 231 2 232 /* Definition of a reference to another message */ 2 233 2 234 dcl 1 message_reference aligned based (message_reference_ptr), 2 235 2 message_id bit (72), /* ID of the other message */ 2 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 2 237 2 from pointer, /* -> address list of authors of the other message */ 2 238 2 subject like message_text_field; /* subject of the other message */ 2 239 2 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 2 241 based (message_reference.subject.text_ptr); 2 242 2 243 dcl message_reference_ptr pointer; 2 244 2 245 2 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 2 247 2 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 2 249 2 pad pointer, /* forces even word alignment */ 2 250 2 version character (8) unaligned, 2 251 2 reference like message_reference; 2 252 2 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 2 254 2 255 dcl message_reference_parameter_ptr pointer; 2 256 2 257 2 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 2 259 2 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 2 261 2 text_ptr pointer, /* -> the actual text */ 2 262 2 text_lth fixed binary (21), /* length of said text */ 2 263 2 flags, 2 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 2 265* OFF => the text will always be a single line */ 2 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 2 267 2 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 2 269 2 270 dcl message_text_field_ptr pointer; 2 271 2 272 /* Definition of a section of the body of a message */ 2 273 2 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 2 275 2 header, 2 276 3 section_type fixed binary, /* type of "text" stored in this section */ 2 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 2 278 2 section_type_variable bit (144); /* the actual data (see below) */ 2 279 2 280 dcl message_body_section_ptr pointer; 2 281 2 282 2 283 /* Defined types of message body sections */ 2 284 2 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 2 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 2 287 fixed binary static options (constant); 2 288 2 289 2 290 /* Structures used to access the data for the different types of message body sections */ 2 291 2 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 2 293 2 header like message_body_section.header, 2 294 2 text_ptr pointer, /* -> the text */ 2 295 2 text_lth fixed binary (21), /* length of said text in characters */ 2 296 2 reserved bit (36); /* for exclusive use of the mail system */ 2 297 2 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 2 299 based (message_preformatted_body_section.text_ptr); 2 300 2 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 2 302 2 header like message_body_section.header, 2 303 2 bit_string_ptr pointer, /* -> the bit string */ 2 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 2 305 2 reserved bit (36); /* for exclusive use of the mail system */ 2 306 2 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 2 308 based (message_bit_string_body_section.bit_string_ptr); 2 309 2 310 2 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 2 312 2 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 2 314 2 pad pointer, /* forces even word alignment */ 2 315 2 version character (8) unaligned, 2 316 2 section like message_body_section; 2 317 2 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 2 319 2 320 dcl message_body_section_parameter_ptr pointer; 2 321 2 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 2058 2059 3 1 /* BEGIN INCLUDE FILE ... mlsys_address_types.incl.pl1 */ 3 2 /* Created: June 1983 by G. Palter */ 3 3 3 4 /* Types of addresses supported by the Multics Mail System */ 3 5 3 6 dcl (INVALID_ADDRESS initial (0), /* a syntactically invalid address: used as a place holder 3 7* when parsing printed representations */ 3 8 USER_MAILBOX_ADDRESS initial (1), /* identifies a user's default mailbox */ 3 9 LOGBOX_ADDRESS initial (2), /* identifies a user's logbox */ 3 10 SAVEBOX_ADDRESS initial (3), /* identifies one of a user's saveboxes by pathname */ 3 11 MAILBOX_ADDRESS initial (4), /* identifies some other mailbox by pathname */ 3 12 FORUM_ADDRESS initial (5), /* identifies a forum meeting by pathname */ 3 13 FOREIGN_ADDRESS initial (6), /* identifies a user (or group) on another compute system */ 3 14 MAIL_TABLE_ADDRESS initial (7), /* identifies an entry in the system's mail table */ 3 15 MAILING_LIST_ADDRESS initial (8), /* identifies a mailing list by pathname */ 3 16 NAMED_GROUP_ADDRESS initial (9)) /* identifies a named group of addresses */ 3 17 fixed binary static options (constant); 3 18 3 19 /* END INCLUDE FILE ... mlsys_address_types.incl.pl1 */ 2060 2061 4 1 /* BEGIN INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 4 2 /* Created: June 1983 by G. Palter */ 4 3 4 4 /* Definition of an address list -- a collection of addresses used as the value of certain message fields, etc. */ 4 5 4 6 dcl 1 address_list aligned based (address_list_ptr), 4 7 2 version character (8) unaligned, 4 8 2 reserved bit (144), /* ... exclusively for use by the mail system */ 4 9 2 n_addresses fixed binary, /* # of address in this list */ 4 10 2 addresses (address_list_n_addresses refer (address_list.n_addresses)) pointer; 4 11 4 12 dcl ADDRESS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsals02"); 4 13 4 14 dcl address_list_ptr pointer; 4 15 4 16 dcl address_list_n_addresses fixed binary; /* reserved exclusively for use by the mail system */ 4 17 4 18 /* END INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 2062 2063 5 1 /* BEGIN INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 5 2 /* Created: June 1983 by G. Palter */ 5 3 5 4 /* Options for the mail_system_$deliver_message and mail_system_$redistribute_message entrypoints */ 5 5 5 6 dcl 1 deliver_options aligned based (deliver_options_ptr), 5 7 2 version character (8) unaligned, 5 8 2 delivery_mode fixed binary, /* deliver as an ordinary/interactive/express message */ 5 9 2 queueing_mode fixed binary, /* when to queue the message */ 5 10 2 queued_notification_mode fixed binary, /* when to notify sender about queued mail success/failure */ 5 11 2 flags, 5 12 3 abort bit (1) unaligned, /* ON => don't send it if any fatal errors are detected */ 5 13 3 send_if_empty bit (1) unaligned, /* ON => send the message even if its body is empty */ 5 14 3 recipient_notification bit (1) unaligned, /* ON => send "You have mail." notification */ 5 15 3 acknowledge bit (1) unaligned, /* ON => request ACK message when recipients read it */ 5 16 3 queue_mailing_lists bit (1) unaligned, /* ON => always queue the message for mailing lists */ 5 17 3 mbz bit (31) unaligned; /* must be set to ""b by the caller */ 5 18 5 19 dcl DELIVER_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsdlo02"); 5 20 5 21 dcl deliver_options_ptr pointer; 5 22 5 23 /* Defined modes of delivery */ 5 24 5 25 dcl (ORDINARY_DELIVERY initial (1), /* send as an ordinary message */ 5 26 INTERACTIVE_DELIVERY initial (2), /* send as an interactive message */ 5 27 EXPRESS_DELIVERY initial (3)) /* send as an express interactive message; ie: deliver the 5 28* message only if the user is logged in */ 5 29 fixed binary static options (constant); 5 30 5 31 /* Defined modes for queuing mail on transient errors */ 5 32 5 33 dcl (NEVER_QUEUE initial (1), /* never queue: convert into a fatal error */ 5 34 QUEUE_FOREIGN_WHEN_NEEDED initial (2), /* never queue local mail; queue foreign mail on error */ 5 35 QUEUE_WHEN_NEEDED initial (3), /* queue all mail on any transient error */ 5 36 ALWAYS_QUEUE_FOREIGN initial (4), /* queue local mail on error; always queue foreign mail */ 5 37 ALWAYS_QUEUE initial (5)) /* always queue all mail */ 5 38 fixed binary static options (constant); 5 39 5 40 /* Defined modes of notification of success/failure to deliver queued mail */ 5 41 5 42 dcl (NEVER_NOTIFY initial (1), /* never notify the sender */ 5 43 NOTIFY_ON_ERROR initial (2), /* notify the sender only if it can not be delivered */ 5 44 ALWAYS_NOTIFY initial (3)) /* always notify the sender */ 5 45 fixed binary static options (constant); 5 46 5 47 /* Definition of the recipients of a message and the results of the attempted transmission */ 5 48 5 49 dcl 1 recipients_info aligned based (recipients_info_ptr), 5 50 2 header, 5 51 3 version character (8) unaligned, 5 52 3 area_ptr pointer, /* -> area for following structures; null => system free */ 5 53 3 expanded_recipients_result_list_ptr pointer, /* set -> expanded_recipients_result_list (if any) */ 5 54 3 n_recipients fixed binary, /* set to total # of recipients after expanding lists */ 5 55 3 n_unique_recipients fixed binary, /* set to total # of unique recipients */ 5 56 3 n_failed_recipients fixed binary, /* set to # of recipients that failed or would fail */ 5 57 3 n_lists fixed binary, /* # of address lists of recipients */ 5 58 2 lists (recipients_info_n_lists refer (recipients_info.n_lists)), 5 59 3 address_list_ptr pointer, /* -> an address list containing recipients */ 5 60 3 recipients_result_list_ptr pointer; /* set -> recipients_result_list for this address list */ 5 61 5 62 dcl RECIPIENTS_INFO_VERSION_2 character (8) static options (constant) initial ("mlsrcpt2"); 5 63 5 64 dcl (recipients_info_ptr, recipients_result_list_ptr, expanded_recipients_result_list_ptr) pointer; 5 65 5 66 dcl (recipients_info_n_lists, recipients_result_list_n_addresses, expanded_recipients_result_list_n_entries) 5 67 fixed binary; /* used to allocate these structures */ 5 68 5 69 5 70 /* Data structure returned by the mail system recording the results of the mailing for one of the input address lists */ 5 71 5 72 dcl 1 recipients_result_list aligned based (recipients_result_list_ptr), 5 73 2 n_addresses fixed binary, /* set to # of address in corresponding address list */ 5 74 2 pad bit (36), 5 75 2 results (recipients_result_list_n_addresses refer (recipients_result_list.n_addresses)), 5 76 3 code fixed binary (35), /* set to describe results of attempted delivery */ 5 77 3 expanded_list_info, /* set to identify any failing addresses found in the 5 78* expansion of this address ... */ 5 79 4 first_entry_idx fixed binary (18) unaligned unsigned, 5 80 /* ... index of first such address in structure below ... */ 5 81 4 n_entries fixed binary (18) unaligned unsigned,/* ... # of such addresses there for this address */ 5 82 3 duplicate_info, /* set to identify the prior address (if any) for which this 5 83* is a duplicate ... */ 5 84 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 5 85 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 5 86 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 5 87* being queued due to a transient error */ 5 88 5 89 5 90 /* Describes fatal or transient errors for those recipients which are part of mailing lists of named groups in one of the 5 91* caller's address lists */ 5 92 5 93 dcl 1 expanded_recipients_result_list aligned based (expanded_recipients_result_list_ptr), 5 94 2 n_entries fixed binary, /* set to # of failing expanded recipients */ 5 95 2 pad bit (36), 5 96 2 entries (expanded_recipients_result_list_n_entries refer (expanded_recipients_result_list.n_entries)), 5 97 3 address_ptr pointer, /* -> the failing address from the list/group */ 5 98 3 code fixed binary (35), /* set to describe why delivery failed */ 5 99 3 parent_address, /* set to identify the original recipient of whose expansion 5 100* this address is a part ... */ 5 101 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 5 102 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 5 103 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 5 104* being queued due to a transient error */ 5 105 5 106 /* END INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 2064 2065 6 1 /* BEGIN INCLUDE FILE ... mlsys_reply_options.incl.pl1 */ 6 2 /* Created: June 1983 by G. Palter */ 6 3 6 4 /* Options for the mlsys_utils_$create_reply_message entrypoint */ 6 5 6 6 dcl 1 reply_options aligned based (reply_options_ptr), 6 7 2 version character (8) unaligned, 6 8 2 to pointer, /* -> address list of additional primary recipients */ 6 9 2 cc pointer, /* -> address list of additional secondary recipients */ 6 10 2 bcc pointer, /* -> address list of additional blind recipients */ 6 11 2 flags, 6 12 3 include_authors bit (1) unaligned, /* ON => include the authors of the message in the reply */ 6 13 3 include_recipients bit (1) unaligned, /* ON => include the recipients in the reply */ 6 14 3 include_self bit (1) unaligned, /* ON => include yourself in an author or recipient of the 6 15* original and the approrpriate flag above is on */ 6 16 3 mbz bit (33) unaligned; /* must be set to ""b by the caller */ 6 17 6 18 dcl REPLY_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsrp002"); 6 19 6 20 dcl reply_options_ptr pointer; 6 21 6 22 /* END INCLUDE FILE ... mlsys_reply_options.incl.pl1 */ 2066 2067 7 1 /* BEGIN INCLUDE FILE ... mlsys_search_options.incl.pl1 */ 7 2 /* Created: June 1983 by G. Palter */ 7 3 7 4 /* Options for the mlsys_utils_$search_message entrypoint */ 7 5 7 6 dcl 1 search_options aligned based (search_options_ptr), 7 7 2 version character (8) unaligned, 7 8 2 flags, 7 9 3 regexp_search bit (1) unaligned, /* ON => perform a qedx regular expression search; 7 10* OFF => perform an ordinary string search */ 7 11 3 case_insensitive bit (1) unaligned, /* ON => perform the search without regard to case */ 7 12 3 search_envelope bit (1) unaligned, /* ON => search the message envelope */ 7 13 3 search_header bit (1) unaligned, /* ON => search the message header */ 7 14 3 search_redistributions_list bit (1) unaligned, /* ON => search the redistributions list */ 7 15 3 search_body bit (1) unaligned, /* ON => search the message body */ 7 16 3 mbz bit (30) unaligned; /* must be set to ""b by the caller */ 7 17 7 18 dcl SEARCH_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlssrch2"); 7 19 7 20 dcl search_options_ptr pointer; 7 21 7 22 /* END INCLUDE FILE ... mlsys_search_options.incl.pl1 */ 2068 2069 8 1 /* BEGIN INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 8 2 /* Created: June 1983 by G. Palter */ 8 3 8 4 /* Options for the mlsys_utils_$format_message and mlsys_utils_$print_message entrypoints */ 8 5 8 6 dcl 1 format_message_options aligned based (format_message_options_ptr), 8 7 2 version character (8) unaligned, 8 8 2 line_length fixed binary, /* line length to be used to format/print the message */ 8 9 2 envelope_formatting_mode fixed binary, /* level of detail to be displayed for the envelope ... */ 8 10 2 header_formatting_mode fixed binary, /* ... for the message ... */ 8 11 2 redistributions_list_formatting_mode fixed binary, /* ... and for the redistributions list ... */ 8 12 2 include_body bit (1) aligned; /* ON => include message body when formatting/printing; 8 13* OFF => exclude the message body */ 8 14 8 15 dcl FORMAT_MESSAGE_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsfmo01"); 8 16 8 17 dcl format_message_options_ptr pointer; 8 18 8 19 8 20 /* Defined formatting modes */ 8 21 8 22 dcl (NONE_FORMATTING_MODE initial (0), /* exclude this part of the message */ 8 23 BRIEF_FORMATTING_MODE initial (1), /* include only minimal information from this part of the 8 24* message; not valid for the envelope */ 8 25 DEFAULT_FORMATTING_MODE initial (2), /* include default amount of information from this part */ 8 26 LONG_FORMATTING_MODE initial (3)) /* include all information from this part of the message */ 8 27 fixed binary static options (constant); 8 28 8 29 /* END INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 2070 2071 9 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 9 2 9 3 /* Structure for find_condition_info_. 9 4* 9 5* Written 1-Mar-79 by M. N. Davidoff. 9 6**/ 9 7 9 8 /* automatic */ 9 9 9 10 declare condition_info_ptr pointer; 9 11 9 12 /* based */ 9 13 9 14 declare 1 condition_info aligned based (condition_info_ptr), 9 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 9 16 2 version fixed binary, /* Must be 1 */ 9 17 2 condition_name char (32) varying, /* name of condition */ 9 18 2 info_ptr pointer, /* pointer to the condition data structure */ 9 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 9 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 9 21 2 flags unaligned, 9 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 9 23 3 pad1 bit (35), 9 24 2 pad2 bit (36), 9 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 9 26 2 pad3 (4) bit (36); 9 27 9 28 /* internal static */ 9 29 9 30 declare condition_info_version_1 9 31 fixed binary internal static options (constant) initial (1); 9 32 9 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 2072 2073 10 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 10 2 /* format: style2 */ 10 3 10 4 declare condition_info_header_ptr 10 5 pointer; 10 6 declare 1 condition_info_header 10 7 aligned based (condition_info_header_ptr), 10 8 2 length fixed bin, /* length in words of this structure */ 10 9 2 version fixed bin, /* version number of this structure */ 10 10 2 action_flags aligned, /* tell handler how to proceed */ 10 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 10 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 10 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 10 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 10 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 10 16 3 pad bit (32) unaligned, 10 17 2 info_string char (256) varying, /* may contain printable message */ 10 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 10 19 10 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 2074 2075 11 1 /* Begin include file: io_error_info.incl.pl1 BIM April 1981 */ 11 2 /* This depends on condition_info_header.incl.pl1 */ 11 3 /* format: style2 */ 11 4 11 5 declare io_error_info_ptr pointer; 11 6 declare 1 io_error_info aligned based (io_error_info_ptr), 11 7 2 header aligned like condition_info_header, 11 8 2 switch_name char (32), 11 9 2 status, 11 10 3 code fixed bin (35), 11 11 3 IOS_status_bits bit (36); /* for compatability */ 11 12 11 13 /* end include file, io_error_info.incl.pl1 */ 2076 2077 12 1 /* BEGIN INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 12 2 12 3 12 4 /****^ HISTORY COMMENTS: 12 5* 1) change(86-09-05,JMAthane), approve(86-09-05,MCR7525), 12 6* audit(86-09-11,Martinson), install(86-11-12,MR12.0-1208): 12 7* Added pascal_string_type_dtype descriptor type. Its number is 87. 12 8* Objects of this type are PASCAL string types. 12 9* 2) change(88-09-20,WAAnderson), approve(88-09-20,MCR7952), 12 10* audit(88-09-30,JRGray), install(88-10-24,MR12.2-1184): 12 11* Added the new C types. 12 12* END HISTORY COMMENTS */ 12 13 12 14 /* This include file defines mnemonic names for the Multics 12 15* standard descriptor types, using both pl1 and cobol terminology. 12 16* PG 780613 12 17* JRD 790530 12 18* JRD 791016 12 19* MBW 810731 12 20* TGO 830614 Add hex types. 12 21* Modified June 83 JMAthane to add PASCAL data types 12 22* TGO 840120 Add float dec extended and generic, float binary generic 12 23**/ 12 24 12 25 dcl (real_fix_bin_1_dtype init (1), 12 26 real_fix_bin_2_dtype init (2), 12 27 real_flt_bin_1_dtype init (3), 12 28 real_flt_bin_2_dtype init (4), 12 29 cplx_fix_bin_1_dtype init (5), 12 30 cplx_fix_bin_2_dtype init (6), 12 31 cplx_flt_bin_1_dtype init (7), 12 32 cplx_flt_bin_2_dtype init (8), 12 33 real_fix_dec_9bit_ls_dtype init (9), 12 34 real_flt_dec_9bit_dtype init (10), 12 35 cplx_fix_dec_9bit_ls_dtype init (11), 12 36 cplx_flt_dec_9bit_dtype init (12), 12 37 pointer_dtype init (13), 12 38 offset_dtype init (14), 12 39 label_dtype init (15), 12 40 entry_dtype init (16), 12 41 structure_dtype init (17), 12 42 area_dtype init (18), 12 43 bit_dtype init (19), 12 44 varying_bit_dtype init (20), 12 45 char_dtype init (21), 12 46 varying_char_dtype init (22), 12 47 file_dtype init (23), 12 48 real_fix_dec_9bit_ls_overp_dtype init (29), 12 49 real_fix_dec_9bit_ts_overp_dtype init (30), 12 50 real_fix_bin_1_uns_dtype init (33), 12 51 real_fix_bin_2_uns_dtype init (34), 12 52 real_fix_dec_9bit_uns_dtype init (35), 12 53 real_fix_dec_9bit_ts_dtype init (36), 12 54 real_fix_dec_4bit_uns_dtype init (38), /* digit-aligned */ 12 55 real_fix_dec_4bit_ts_dtype init (39), /* byte-aligned */ 12 56 real_fix_dec_4bit_bytealigned_uns_dtype init (40), /* COBOL */ 12 57 real_fix_dec_4bit_ls_dtype init (41), /* digit-aligned */ 12 58 real_flt_dec_4bit_dtype init (42), /* digit-aligned */ 12 59 real_fix_dec_4bit_bytealigned_ls_dtype init (43), 12 60 real_flt_dec_4bit_bytealigned_dtype init (44), 12 61 cplx_fix_dec_4bit_bytealigned_ls_dtype init (45), 12 62 cplx_flt_dec_4bit_bytealigned_dtype init (46), 12 63 real_flt_hex_1_dtype init (47), 12 64 real_flt_hex_2_dtype init (48), 12 65 cplx_flt_hex_1_dtype init (49), 12 66 cplx_flt_hex_2_dtype init (50), 12 67 c_typeref_dtype init (54), 12 68 c_enum_dtype init (55), 12 69 c_enum_const_dtype init (56), 12 70 c_union_dtype init (57), 12 71 algol68_straight_dtype init (59), 12 72 algol68_format_dtype init (60), 12 73 algol68_array_descriptor_dtype init (61), 12 74 algol68_union_dtype init (62), 12 75 12 76 cobol_comp_6_dtype init (1), 12 77 cobol_comp_7_dtype init (1), 12 78 cobol_display_ls_dtype init (9), 12 79 cobol_structure_dtype init (17), 12 80 cobol_char_string_dtype init (21), 12 81 cobol_display_ls_overp_dtype init (29), 12 82 cobol_display_ts_overp_dtype init (30), 12 83 cobol_display_uns_dtype init (35), 12 84 cobol_display_ts_dtype init (36), 12 85 cobol_comp_8_uns_dtype init (38), /* digit aligned */ 12 86 cobol_comp_5_ts_dtype init (39), /* byte aligned */ 12 87 cobol_comp_5_uns_dtype init (40), 12 88 cobol_comp_8_ls_dtype init (41), /* digit aligned */ 12 89 real_flt_dec_extended_dtype init (81), /* 9-bit exponent */ 12 90 cplx_flt_dec_extended_dtype init (82), /* 9-bit exponent */ 12 91 real_flt_dec_generic_dtype init (83), /* generic float decimal */ 12 92 cplx_flt_dec_generic_dtype init (84), 12 93 real_flt_bin_generic_dtype init (85), /* generic float binary */ 12 94 cplx_flt_bin_generic_dtype init (86)) fixed bin internal static options (constant); 12 95 12 96 dcl (ft_integer_dtype init (1), 12 97 ft_real_dtype init (3), 12 98 ft_double_dtype init (4), 12 99 ft_complex_dtype init (7), 12 100 ft_complex_double_dtype init (8), 12 101 ft_external_dtype init (16), 12 102 ft_logical_dtype init (19), 12 103 ft_char_dtype init (21), 12 104 ft_hex_real_dtype init (47), 12 105 ft_hex_double_dtype init (48), 12 106 ft_hex_complex_dtype init (49), 12 107 ft_hex_complex_double_dtype init (50) 12 108 ) fixed bin internal static options (constant); 12 109 12 110 dcl (algol68_short_int_dtype init (1), 12 111 algol68_int_dtype init (1), 12 112 algol68_long_int_dtype init (2), 12 113 algol68_real_dtype init (3), 12 114 algol68_long_real_dtype init (4), 12 115 algol68_compl_dtype init (7), 12 116 algol68_long_compl_dtype init (8), 12 117 algol68_bits_dtype init (19), 12 118 algol68_bool_dtype init (19), 12 119 algol68_char_dtype init (21), 12 120 algol68_byte_dtype init (21), 12 121 algol68_struct_struct_char_dtype init (22), 12 122 algol68_struct_struct_bool_dtype init (20) 12 123 ) fixed bin internal static options (constant); 12 124 12 125 dcl (label_constant_runtime_dtype init (24), 12 126 int_entry_runtime_dtype init (25), 12 127 ext_entry_runtime_dtype init (26), 12 128 ext_procedure_runtime_dtype init (27), 12 129 picture_runtime_dtype init (63) 12 130 ) fixed bin internal static options (constant); 12 131 12 132 dcl (pascal_integer_dtype init (1), 12 133 pascal_real_dtype init (4), 12 134 pascal_label_dtype init (24), 12 135 pascal_internal_procedure_dtype init (25), 12 136 pascal_exportable_procedure_dtype init (26), 12 137 pascal_imported_procedure_dtype init (27), 12 138 pascal_typed_pointer_type_dtype init (64), 12 139 pascal_char_dtype init (65), 12 140 pascal_boolean_dtype init (66), 12 141 pascal_record_file_type_dtype init (67), 12 142 pascal_record_type_dtype init (68), 12 143 pascal_set_dtype init (69), 12 144 pascal_enumerated_type_dtype init (70), 12 145 pascal_enumerated_type_element_dtype init (71), 12 146 pascal_enumerated_type_instance_dtype init (72), 12 147 pascal_user_defined_type_dtype init (73), 12 148 pascal_user_defined_type_instance_dtype init (74), 12 149 pascal_text_file_dtype init (75), 12 150 pascal_procedure_type_dtype init (76), 12 151 pascal_variable_formal_parameter_dtype init (77), 12 152 pascal_value_formal_parameter_dtype init (78), 12 153 pascal_entry_formal_parameter_dtype init (79), 12 154 pascal_parameter_procedure_dtype init (80), 12 155 pascal_string_type_dtype init (87)) fixed bin int static options (constant); 12 156 12 157 12 158 /* END INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 2078 2079 13 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 13 2 /* format: style3 */ 13 3 13 4 /* These constants are to be used for the flags argument of sub_err_ */ 13 5 /* They are just "string (condition_info_header.action_flags)" */ 13 6 13 7 declare ( 13 8 ACTION_CAN_RESTART init (""b), 13 9 ACTION_CANT_RESTART init ("1"b), 13 10 ACTION_DEFAULT_RESTART 13 11 init ("01"b), 13 12 ACTION_QUIET_RESTART 13 13 init ("001"b), 13 14 ACTION_SUPPORT_SIGNAL 13 15 init ("0001"b) 13 16 ) bit (36) aligned internal static options (constant); 13 17 13 18 /* End include file */ 2080 2081 2082 /* Definition of whitespace is given here as it generates several blank pages in the listing */ 2083 2084 dcl WHITESPACE character (5) static options (constant) initial (" 2085 "); /* HT NL VT FF SP */ 2086 2087 end mlsys_misc_utils_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/02/89 0815.0 mlsys_misc_utils_.pl1 >spec>install>1079>mlsys_misc_utils_.pl1 2056 1 10/27/83 2104.2 mlsys_data.incl.pl1 >ldd>include>mlsys_data.incl.pl1 2058 2 05/22/86 1225.8 mlsys_message.incl.pl1 >ldd>include>mlsys_message.incl.pl1 2060 3 10/27/83 2104.2 mlsys_address_types.incl.pl1 >ldd>include>mlsys_address_types.incl.pl1 2062 4 10/27/83 2104.2 mlsys_address_list.incl.pl1 >ldd>include>mlsys_address_list.incl.pl1 2064 5 10/27/83 2104.2 mlsys_deliver_info.incl.pl1 >ldd>include>mlsys_deliver_info.incl.pl1 2066 6 10/27/83 2104.2 mlsys_reply_options.incl.pl1 >ldd>include>mlsys_reply_options.incl.pl1 2068 7 10/27/83 2104.2 mlsys_search_options.incl.pl1 >ldd>include>mlsys_search_options.incl.pl1 2070 8 10/27/83 2104.2 mlsys_format_options.incl.pl1 >ldd>include>mlsys_format_options.incl.pl1 2072 9 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 2074 10 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 2076 11 01/06/82 2206.2 io_error_info.incl.pl1 >ldd>include>io_error_info.incl.pl1 2078 12 10/26/88 1255.5 std_descriptor_types.incl.pl1 >ldd>include>std_descriptor_types.incl.pl1 2080 13 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.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. ACTION_CANT_RESTART 000143 constant bit(36) initial dcl 13-7 set ref 980* ADDRESS_LIST_VERSION_2 000026 constant char(8) initial packed unaligned dcl 4-12 set ref 1464* 1481* ALWAYS_QUEUE_FOREIGN constant fixed bin(17,0) initial dcl 5-33 ref 1494 AND_SPACE 000056 constant char(4) initial packed unaligned dcl 215 set ref 803* 1897* BUFFER_STACK_EXTENSION 000052 constant fixed bin(18,0) initial dcl 221 set ref 752* 753 1053 1293* 1296 1331 1341 COMMA 000061 constant char(1) initial packed unaligned dcl 204 set ref 800* 1895* 1949 1957 DEFAULT_FORMATTING_MODE constant fixed bin(17,0) initial dcl 8-22 ref 1268 1272 1276 DELIVER_OPTIONS_VERSION_2 000024 constant char(8) initial packed unaligned dcl 5-19 ref 1492 ET_AL 000054 constant char(6) initial packed unaligned dcl 216 ref 675 675 FORMAT_MESSAGE_OPTIONS_VERSION_1 000014 constant char(8) initial packed unaligned dcl 8-15 ref 1265 LOWERCASE 000043 constant char(26) initial packed unaligned dcl 224 set ref 1046 1046 1327* MAIL_SYSTEM_ 000062 constant char(32) initial packed unaligned dcl 201 set ref 912* 980* 1061* 1213* 1308* 1334* 1345* 1400* 1406* 2018* MAIL_TABLE_ADDRESS constant fixed bin(17,0) initial dcl 3-6 ref 1643 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 000030 constant char(8) initial packed unaligned dcl 2-318 ref 1443 MESSAGE_PREFORMATTED_BODY_SECTION constant fixed bin(17,0) initial dcl 2-285 ref 687 1033 1445 MESSAGE_VERSION_2 000032 constant char(8) initial packed unaligned dcl 2-49 set ref 602 1237 1430* NL 000057 constant char(1) initial packed unaligned dcl 204 set ref 692 812* 1039 1907* 1971 1971 1971 1971 NONE_FORMATTING_MODE constant fixed bin(17,0) initial dcl 8-22 ref 1270 1274 1278 NOTIFY_ON_ERROR constant fixed bin(17,0) initial dcl 5-42 ref 1495 NULL_STRING 000141 constant char(1) initial packed unaligned dcl 212 set ref 1255 1255 PERIOD 000060 constant char(1) initial packed unaligned dcl 204 set ref 811* 1906* P_address_ptr parameter pointer dcl 59 set ref 324 327 391 394 973 978* 980* 986* P_address_string parameter varying char dcl 62 set ref 324 328 373 373* 373 375* 391 404 506 508* P_author_name parameter char packed unaligned dcl 92 ref 1417 1454 1459 1459 P_code parameter fixed bin(35,0) dcl 54 set ref 324 345* 378* 391 398* 509* 511* 554 559* 583* 591* 598 603* 609* 720* 733* 741 748* 891* 899* 932 938* 943* 967* 973 976 986* 992 999* 1003* 1177* 1190* 1226 1367* 1386* 1417 1520* 1539* P_delivery_mode parameter fixed bin(17,0) dcl 96 ref 1417 1493 P_errors_only parameter bit(1) dcl 82 ref 741 872 P_explanation parameter varying char dcl 100 set ref 1417 1510* 1515* P_is_current_message parameter bit(1) dcl 73 ref 598 630 P_is_start_of_sentence parameter bit(1) dcl 66 ref 391 410 425 436 446 453 490 499 P_line_length parameter fixed bin(17,0) dcl 69 ref 554 557 598 607 P_message_access_class parameter bit(72) dcl 99 set ref 1417 1438* 1439* P_message_body parameter char packed unaligned dcl 98 set ref 1417 1446 1447 P_message_number parameter fixed bin(17,0) dcl 72 set ref 598 724* P_message_ptr parameter pointer dcl 56 set ref 598 601 992 1176* 1226 1229 P_message_subject parameter char packed unaligned dcl 97 set ref 1417 1433 1434* P_original_message_ptr parameter pointer dcl 84 ref 992 995 P_output_switch parameter pointer dcl 70 ref 554 563 565 598 613 615 P_recipient parameter char packed unaligned dcl 94 set ref 1417 1477* P_recipients_info_ptr parameter pointer dcl 75 ref 741 746 932 935 P_reply_options_ptr parameter pointer dcl 86 ref 992 996 P_sci_ptr parameter pointer dcl 78 ref 741 744 973 985 P_search_options_ptr parameter pointer dcl 90 ref 1226 1230 P_search_string parameter char packed unaligned dcl 89 set ref 1226 1251 1255 1255 1255 1255 1341 1341 1341 1348 1348 1348 1348 1357 1360 1360 1365 RECIPIENTS_INFO_VERSION_2 000022 constant char(8) initial packed unaligned dcl 5-62 ref 747 942 1503 REPLY_OPTIONS_VERSION_2 000020 constant char(8) initial packed unaligned dcl 6-18 ref 998 REPLY_SUBJECT_PREFIX 000100 constant char(4) initial packed unaligned dcl 218 ref 1046 1046 1046 1053 1055 1056 1059 1064 1065 SEARCH_OPTIONS_VERSION_2 000016 constant char(8) initial packed unaligned dcl 7-18 ref 1240 SPACE 000141 constant char(1) initial packed unaligned dcl 204 set ref 655 679 802* 1025 1896* STACK_EXTENSION 000053 constant fixed bin(18,0) initial dcl 220 set ref 350* 351 357* 358 533* 534 540* 541 1603* 1604 1610* 1611 1666* 1667 1671* 1672 THREE_SPACES 000140 constant char(3) initial packed unaligned dcl 214 set ref 787* 1972 1972 1972 1972 UPPERCASE 000034 constant char(26) initial packed unaligned dcl 224 set ref 1046 1046 1327* USER_MAILBOX_ADDRESS constant fixed bin(17,0) initial dcl 3-6 ref 1655 1756 WHITESPACE 000012 constant char(5) initial packed unaligned dcl 2084 ref 1251 1433 1454 access_class 32 based bit(72) level 3 dcl 2-15 set ref 644* ack_flag 000736 automatic char(1) packed unaligned dcl 188 set ref 638* 640* 724* addr builtin function dcl 317 ref 341 365 365 526 679 690 691 769 771 796 833 857 860 919 1025 1037 1038 1150 1255 1255 1255 1255 1296 1296 1311 1311 1348 1348 1357 1444 1446 1448 1448 1505 1505 1505 1505 1552 1552 1575 1575 1596 1663 1663 1699 1770 1805 1805 1845 1877 1891 1967 1967 1971 1971 1972 1972 2002 2010 address_component 000672 automatic char(32) packed unaligned dcl 173 set ref 486* 489* address_dirname 000610 automatic char(168) packed unaligned dcl 172 in procedure "mlsys_misc_utils_" set ref 433* 435* 443* 445* 457* 458 460* 486* 489* address_dirname 001560 automatic char(168) packed unaligned dcl 1694 in procedure "print_single_recipient_error" set ref 1758* 1760* address_dirname 001403 automatic char(168) packed unaligned dcl 1636 in procedure "get_true_address_summary" set ref 1656* 1657* address_ename 001455 automatic char(32) packed unaligned dcl 1637 in procedure "get_true_address_summary" set ref 1656* 1657* address_ename 000662 automatic char(32) packed unaligned dcl 173 in procedure "mlsys_misc_utils_" set ref 433* 435* 443* 445* 457* 458 460* 486* 489* address_ename 001653 automatic char(32) packed unaligned dcl 1696 in procedure "print_single_recipient_error" set ref 1758* 1760* address_idx 000101 automatic fixed bin(17,0) dcl 910 in procedure "cleanup_print_delivery_results" set ref 918* 919* address_idx 000745 automatic fixed bin(17,0) dcl 191 in procedure "mlsys_misc_utils_" set ref 768* 769* 795* 796 805* 831* 832 833* 1113* 1115 1115* 1118 1118* address_idx 001707 automatic fixed bin(17,0) dcl 1866 in procedure "print_recipient_list" set ref 1876* 1877* 1890* 1891 1899* address_idx 2(18) based fixed bin(18,0) level 3 in structure "result" packed packed unsigned unaligned dcl 121 in procedure "mlsys_misc_utils_" ref 771 address_idx 001673 automatic fixed bin(17,0) dcl 1837 in procedure "is_a_recipient_with_code" set ref 1844* 1845* address_list based structure level 1 dcl 4-6 address_list_ptr 12 000326 automatic pointer level 3 in structure "local_ri" dcl 165 in procedure "mlsys_misc_utils_" set ref 1501* address_list_ptr 001206 automatic pointer dcl 4-14 in procedure "mlsys_misc_utils_" set ref 792* 805 826* 832 1110* 1111* 1113 1115 1115* 1118 1118* 1421* 1463* 1464* 1468* 1470* 1480* 1481* 1485* 1487* 1554 1554* 1887* 1899 address_list_ptr 12 based pointer array level 3 in structure "recipients_info" dcl 5-49 in procedure "mlsys_misc_utils_" ref 792 826 1887 address_local_variable 000145 automatic varying char(256) dcl 138 set ref 526 527 857 1596 1597 1663 1668 1699 1700 1770 address_name based varying char dcl 334 set ref 343* 353* 359* 363 373 373 375 address_name_max_lth 000715 automatic fixed bin(21,0) dcl 182 set ref 328* 332 343 351* 353 358* 358 359 365 365 365* 368 369 369 address_name_ptr 000100 automatic pointer dcl 335 set ref 341* 343 350* 353 359 363 364 365 365 365 368 369 373 373 375 address_pathname 001322 automatic char(194) packed unaligned dcl 1635 in procedure "get_true_address_summary" set ref 1657* 1661 address_pathname 001506 automatic char(168) packed unaligned dcl 1694 in procedure "print_single_recipient_error" set ref 1760* 1762 address_pathname 000445 automatic char(194) packed unaligned dcl 170 in procedure "mlsys_misc_utils_" set ref 435* 439 445* 449 489* 493 address_pathname_varying 000526 automatic varying char(194) dcl 171 set ref 458* 460* 461 461* 461 461 464 464* 464 464 467 address_ptr based pointer level 2 in structure "expanded_result" dcl 123 in procedure "mlsys_misc_utils_" set ref 861* address_ptr 2 based pointer array level 3 in structure "expanded_recipients_result_list" dcl 5-93 in procedure "mlsys_misc_utils_" set ref 952 952* address_ptr 001320 automatic pointer dcl 1634 in procedure "get_true_address_summary" set ref 1644* 1645* 1648* 1650* 1652 1654* 1656* 1676* address_ptr 000102 automatic pointer dcl 109 in procedure "mlsys_misc_utils_" set ref 327* 343* 353* 359* 365* 394* 396* 423* 433* 443* 457* 473* 486* 530* 536* 542* 832* 850* 866* 1421* 1459* 1464* 1466* 1477* 1481* 1483* 1556 1556* address_string 000100 automatic varying char dcl 404 set ref 410* 412* 413* 413 419* 425* 427* 436* 438* 439* 439 446* 448* 449* 449 453* 456* 467* 467 474* 475* 475 476* 476 482* 490* 492* 493* 493 499* 501* 502* 502 506 508 address_type 001663 automatic fixed bin(17,0) dcl 1697 in procedure "print_single_recipient_error" set ref 1703* 1756 address_type 000702 automatic fixed bin(17,0) dcl 174 in procedure "mlsys_misc_utils_" set ref 396* 406 address_type 001477 automatic fixed bin(17,0) dcl 1640 in procedure "get_true_address_summary" set ref 1642* 1643 1654* 1655 address_variable based varying char dcl 139 set ref 413 419 474 482 502 530* 536* 542* 806* 851* 854* 1600* 1606* 1612* 1658* 1660* 1661* 1661 1663 1663 1663 1668* 1674* 1674 1675* 1675 1701* 1707* 1712* 1718 1718 1723* 1730* 1735* 1740* 1747* 1752* 1761* 1762* 1762 1763* 1763 1764* 1764 1767* 1900* address_variable_max_lth 000250 automatic fixed bin(21,0) dcl 141 set ref 527* 530 534* 536 541* 541 542 806 851 854 1597* 1600 1604* 1606 1611* 1611 1612 1658 1660 1661 1663 1667* 1668 1672* 1672 1674 1675 1700* 1701 1707 1712 1723 1730 1735 1740 1747 1752 1761 1762 1763 1764 1767 1900 address_variable_ptr 000246 automatic pointer dcl 140 set ref 413 419 474 482 502 526* 530 533* 536 542 806 851 854 857 857* 1596* 1600 1603* 1606 1612 1658 1660 1661 1661 1663 1663 1663 1666* 1668 1674 1674 1675 1675 1699* 1701 1707 1712 1718 1718 1723 1730 1735 1740 1747 1752 1761 1762 1762 1763 1763 1764 1764 1767 1770 1770* 1900 addresses 10 based pointer array level 2 dcl 4-6 set ref 672* 805* 832 1115* 1118* 1899* addwordno builtin function dcl 317 ref 1300 2010 after builtin function dcl 317 ref 439 449 493 1661 1718 1718 1762 aim_check_$equal 000106 constant entry external dcl 247 ref 644 1438 anonymous_flag 001164 automatic fixed bin(17,0) dcl 199 set ref 1456* 1457 area_ptr 2 based pointer level 3 in structure "recipients_info" dcl 5-49 in procedure "mlsys_misc_utils_" ref 947 area_ptr 2 000326 automatic pointer level 3 in structure "local_ri" dcl 165 in procedure "mlsys_misc_utils_" set ref 1499* arg_ndims 000141 automatic fixed bin(17,0) dcl 1789 set ref 1795* arg_packed 000133 automatic bit(1) dcl 1786 set ref 1795* 1797 1805 arg_ptr 000100 automatic pointer dcl 1783 set ref 1794* 1797 1805* arg_scale 000143 automatic fixed bin(17,0) dcl 1789 set ref 1795* 1803 arg_size 000142 automatic fixed bin(17,0) dcl 1789 set ref 1795* 1801 1803 arg_type 000140 automatic fixed bin(17,0) dcl 1789 set ref 1795* 1797 1801 1801 1805 assign_ 000110 constant entry external dcl 248 ref 1805 author_string 000717 automatic varying char(17) dcl 184 set ref 672* 675 675 675* 675 724* based_fb35 based fixed bin(35,0) dcl 1782 ref 1797 baseno builtin function dcl 317 ref 1400 1400 1406 1406 bcc 6 based pointer level 2 in structure "reply_options" dcl 6-6 in procedure "mlsys_misc_utils_" set ref 1141* 1142* bcc 46 based pointer level 3 in structure "message" dcl 2-15 in procedure "mlsys_misc_utils_" set ref 1098* 1099* bcc 4 000270 automatic pointer level 2 in structure "reply_lists" dcl 154 in procedure "mlsys_misc_utils_" set ref 1099* 1099* 1110 1142* 1142* 1166* 1167* 1210 1210* binary builtin function dcl 317 ref 1805 bit_dtype constant fixed bin(17,0) initial dcl 12-25 ref 1801 body 62 based structure level 2 dcl 2-15 body_sections 64 based structure array level 3 dcl 2-15 set ref 690 1037 buffer based char packed unaligned dcl 134 set ref 1810* 1814* 1820 1820 1949 1949 1950 1950 1952 1952 1957 1957 1958 1958 1967 1967 1967 1967 1967 1967 1967 1967 1970 1970 2033* 2033 buffer_in_use based char packed unaligned dcl 1996 set ref 2022* 2022 buffer_max_lth 000140 automatic fixed bin(21,0) dcl 136 set ref 1792* 1810 1814 1819 1820 1921* 1949 1950 1952 1957 1958 1967 1967 1967 1967 1970 2014 2024* 2033 buffer_printed 000144 automatic fixed bin(21,0) dcl 136 set ref 1941* 1944 1946 1949 1950 1952 1955 1957 1958 1967 1967 1967 1967 1970 1976* 1976 buffer_ptr 000132 automatic pointer dcl 135 set ref 1791* 1810 1814 1820 1824* 1920* 1949 1950 1952 1957 1958 1967 1967 1967 1967 1970 2014 2023* 2033 buffer_used 000143 automatic fixed bin(21,0) dcl 136 set ref 1809* 1810 1814 1815* 1815 1819 1820 1821* 1821 1824* 1922* 1944 1946 1955 2014 2022 2022 2033 2036* 2036 can_be_deleted 12(01) based bit(1) level 3 packed packed unaligned dcl 2-15 ref 642 case_insensitive 2(01) based bit(1) level 3 packed packed unaligned dcl 7-6 ref 1326 1355 cc 44 based pointer level 3 in structure "message" dcl 2-15 in procedure "mlsys_misc_utils_" set ref 1093* 1094* cc 2 000270 automatic pointer level 2 in structure "reply_lists" dcl 154 in procedure "mlsys_misc_utils_" set ref 1089* 1089* 1094* 1094* 1110 1137* 1137* 1161* 1162* 1209 1209* cc 4 based pointer level 2 in structure "reply_options" dcl 6-6 in procedure "mlsys_misc_utils_" set ref 1136* 1137* cleanup 001166 stack reference condition dcl 315 ref 757 1013 1235 1425 code 001476 automatic fixed bin(35,0) dcl 1639 in procedure "get_true_address_summary" set ref 1644* 1645 code 000112 automatic fixed bin(35,0) dcl 524 in procedure "get_address_variable" set ref 530* 532 536* 539 542* code 2 based fixed bin(35,0) level 2 in structure "expanded_result" dcl 123 in procedure "mlsys_misc_utils_" set ref 861* code 001310 automatic fixed bin(35,0) dcl 1594 in procedure "get_address_summary" set ref 1600* 1602 1606* 1609 1612* code 115 based fixed bin(35,0) level 3 in structure "io_error_info" dcl 11-6 in procedure "mlsys_misc_utils_" ref 1578 code based fixed bin(35,0) level 2 in structure "result" dcl 121 in procedure "mlsys_misc_utils_" set ref 770 779 797 835 835 835 835 835 835 844 844 844 851 866* 1847 1878 1892 code 2 based fixed bin(35,0) array level 3 in structure "recipients_result_list" dcl 5-72 in procedure "mlsys_misc_utils_" set ref 1514 code 000100 automatic fixed bin(35,0) dcl 107 in procedure "mlsys_misc_utils_" set ref 343* 344 344 345 349 353* 356 359* 365* 367 396* 397 398 899 978* 979 980* 1015* 1016 1016* 1018* 1019 1019* 1050* 1057* 1061* 1062 1062* 1066* 1068* 1070 1070* 1079* 1082* 1084 1084* 1089* 1091 1091* 1094* 1096 1096* 1099* 1101 1101* 1114* 1115* 1118* 1122 1122* 1132* 1133 1133* 1137* 1138 1138* 1142* 1143 1143* 1150* 1151 1151* 1157* 1158 1158* 1162* 1163 1163* 1167* 1168 1168* 1255* 1257 1257* 1259 1259* 1287* 1288 1291 1291 1296* 1298 1305 1308* 1309 1309* 1311* 1313 1313* 1314 1314* 1317* 1320* 1334* 1335 1335* 1345* 1346 1346* 1360* 1362 1430* 1431 1431* 1434* 1435 1435* 1439* 1440 1440* 1448* 1449 1449* 1459* 1461 1461* 1464* 1465 1465* 1468* 1469 1469* 1477* 1478 1478* 1481* 1482 1482* 1485* 1486 1486* 1505* 1512 1512 1512 1514* 1520 2018* 2019 2027* compare_against_both 000752 automatic bit(1) dcl 193 set ref 1106* 1118 condition_info based structure level 1 dcl 9-14 condition_info_header based structure level 1 dcl 10-6 condition_info_version_1 constant fixed bin(17,0) initial dcl 9-30 ref 1573 convert builtin function dcl 317 ref 654 666 666 666 669 669 convert_status_code_ 000112 constant entry external dcl 249 ref 1813 copy builtin function dcl 317 ref 655 cu_$arg_list_ptr 000114 constant entry external dcl 250 ref 1795 1795 1820 1820 cu_$arg_ptr 000116 constant entry external dcl 251 ref 1794 cu_$grow_stack_frame 000120 constant entry external dcl 252 ref 350 357 533 540 752 1293 1331 1341 1603 1610 1666 1671 cu_$shrink_stack_frame 000122 constant entry external dcl 253 ref 857 1302 1307 1770 current_message_flag 000737 automatic char(1) packed unaligned dcl 188 set ref 630* 631* 632* 724* date_string 000726 automatic char(8) packed unaligned dcl 185 set ref 666* 724* date_time_created 34 based fixed bin(71,0) level 3 dcl 2-15 set ref 664* day_of_month 000711 automatic fixed bin(17,0) dcl 178 set ref 664* 666 decode_clock_value_$date_time 000124 constant entry external dcl 254 ref 664 decode_descriptor_ 000126 constant entry external dcl 257 ref 1795 delete_flag 000740 automatic char(1) packed unaligned dcl 188 set ref 642* 644* 646* 724* deliver_options based structure level 1 dcl 5-6 delivery_mode 2 000320 automatic fixed bin(17,0) level 2 dcl 163 set ref 1493* divide builtin function dcl 317 ref 1299 1331 1331 1341 1341 duplicate_info 2 based structure level 2 in structure "other_result" dcl 122 in procedure "mlsys_misc_utils_" duplicate_info 2 based structure level 2 in structure "result" dcl 121 in procedure "mlsys_misc_utils_" entries 2 based structure array level 2 dcl 5-93 set ref 860 envelope_formatting_mode 3 000276 automatic fixed bin(17,0) level 2 dcl 160 set ref 1268* 1270* error_code 000134 automatic fixed bin(35,0) dcl 1787 set ref 1797* 1805 1805 1812 1813* error_message 000102 automatic char(100) dcl 1785 set ref 1813* 1814 1814 1815 error_table_$area_too_small 000016 external static fixed bin(35,0) dcl 235 ref 2027 error_table_$bad_subr_arg 000020 external static fixed bin(35,0) dcl 235 set ref 559 609 1003 1248* error_table_$inconsistent 000022 external static fixed bin(35,0) dcl 235 set ref 1243* error_table_$nomatch 000024 external static fixed bin(35,0) dcl 235 ref 1257 error_table_$null_info_ptr 000026 external static fixed bin(35,0) dcl 235 ref 1580 error_table_$smallarg 000030 external static fixed bin(35,0) dcl 235 ref 344 349 356 367 511 532 539 1305 1313 1602 1609 error_table_$unimplemented_version 000032 external static fixed bin(35,0) dcl 235 set ref 748 943 999 1240* expanded_idx 000750 automatic fixed bin(17,0) dcl 191 set ref 859* 860* expanded_list_info 1 based structure level 2 dcl 121 expanded_recipients_result_list based structure level 1 dcl 5-93 set ref 955 expanded_recipients_result_list_ptr 4 000326 automatic pointer level 3 in structure "local_ri" dcl 165 in procedure "mlsys_misc_utils_" set ref 1502* expanded_recipients_result_list_ptr 001214 automatic pointer dcl 5-64 in procedure "mlsys_misc_utils_" set ref 823* 860 950* 951 952 952 955 expanded_recipients_result_list_ptr 4 based pointer level 3 in structure "recipients_info" dcl 5-49 in procedure "mlsys_misc_utils_" set ref 823 949 950 956* expanded_result based structure level 1 dcl 123 expanded_result_ptr 000120 automatic pointer dcl 124 set ref 860* 861 861 861 explanation 3 based varying char(128) level 2 in structure "result" dcl 121 in procedure "mlsys_misc_utils_" set ref 835 866* 1847 1878 1892 explanation 5 based varying char(128) array level 3 in structure "recipients_result_list" dcl 5-72 in procedure "mlsys_misc_utils_" set ref 1515 explanation 4 based varying char(128) level 2 in structure "expanded_result" dcl 123 in procedure "mlsys_misc_utils_" set ref 861* find_condition_info_ 000130 constant entry external dcl 259 ref 1575 first_entry_idx 1 based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 121 ref 835 835 844 859 859 1847 1878 1892 fixed_address_name based structure level 1 dcl 337 flags 10 based structure level 2 in structure "reply_options" dcl 6-6 in procedure "mlsys_misc_utils_" flags 2 based structure level 2 in structure "search_options" dcl 7-6 in procedure "mlsys_misc_utils_" flags 5 000320 automatic structure level 2 in structure "local_do" dcl 163 in procedure "mlsys_misc_utils_" set ref 1496* flags 12 based structure level 2 in structure "message" dcl 2-15 in procedure "mlsys_misc_utils_" foreign_system_name 000344 automatic varying char(256) dcl 169 set ref 473* 476 format_message_options based structure level 1 dcl 8-6 forum_error_table_$no_such_forum 000034 external static fixed bin(35,0) dcl 235 ref 1728 forum_error_table_$not_eligible 000036 external static fixed bin(35,0) dcl 235 ref 1733 forum_error_table_$read_only 000040 external static fixed bin(35,0) dcl 235 ref 1738 forwarded_flag 000741 automatic char(1) packed unaligned dcl 188 set ref 659* 661* 724* from 36 based pointer level 3 dcl 2-15 set ref 672 675 1082* from_size 000135 automatic fixed bin(35,0) dcl 1787 set ref 1801* 1803* 1805* get_authorization_ 000132 constant entry external dcl 260 ref 644 644 1438 1438 get_line_length_$switch 000134 constant entry external dcl 261 ref 567 617 1939 get_system_free_area_ 000136 constant entry external dcl 262 ref 1499 get_temp_segment_ 000140 constant entry external dcl 263 ref 1061 1308 1334 1345 2018 header based structure level 2 in structure "recipients_info" dcl 5-49 in procedure "mlsys_misc_utils_" header 64 based structure array level 4 in structure "message" dcl 2-15 in procedure "mlsys_misc_utils_" header based structure level 2 in structure "message_body_section" dcl 2-274 in procedure "mlsys_misc_utils_" header 30 based structure level 2 in structure "message" dcl 2-15 in procedure "mlsys_misc_utils_" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 2-313 in procedure "mlsys_misc_utils_" header 4 based structure level 3 in structure "message_user_field_parameter" dcl 2-208 in procedure "mlsys_misc_utils_" header 4 000306 automatic structure level 3 in structure "local_mbsp" dcl 162 in procedure "mlsys_misc_utils_" header based structure level 2 in structure "message_user_field" dcl 2-163 in procedure "mlsys_misc_utils_" header 000326 automatic structure level 2 in structure "local_ri" dcl 165 in procedure "mlsys_misc_utils_" header 10 based structure array level 3 in structure "message_user_fields_list" dcl 2-150 in procedure "mlsys_misc_utils_" header_formatting_mode 4 000276 automatic fixed bin(17,0) level 2 dcl 160 set ref 1272* 1274* hour 000713 automatic fixed bin(17,0) dcl 178 set ref 664* 669 idx 000751 automatic fixed bin(17,0) dcl 191 set ref 951* 952 952* 959* 960 961 963* include_author 000703 automatic bit(1) dcl 176 set ref 570* 575* 587* 620* 625* 702 724* include_authors 10 based bit(1) level 3 packed packed unaligned dcl 6-6 ref 1078 include_body 6 000276 automatic bit(1) level 2 dcl 160 set ref 1280* include_date 000704 automatic bit(1) dcl 176 set ref 570* 574* 587* 620* 624* 663 701 724* include_lines 000707 automatic bit(1) dcl 176 set ref 570* 577* 587* 620* 627* 724* include_recipients 10(01) based bit(1) level 3 packed packed unaligned dcl 6-6 ref 1087 include_self 10(02) based bit(1) level 3 packed packed unaligned dcl 6-6 ref 1105 include_subject 000706 automatic bit(1) dcl 176 set ref 570* 576* 587* 620* 626* 724* include_time 000705 automatic bit(1) dcl 176 set ref 570* 573* 587* 587* 620* 623* 699 724* 724* index builtin function dcl 317 ref 461 464 692 1039 1365 1949 1957 info_ptr 14 000100 automatic pointer level 2 dcl 1571 set ref 1578 1578 interactive 12 based bit(1) level 3 packed packed unaligned dcl 2-15 ref 687 1033 io_error 001174 stack reference condition dcl 315 ref 581 718 io_error_info based structure level 1 dcl 11-6 ioa_$general_rs 000142 constant entry external dcl 264 ref 1820 ioa_$ioa_switch 000144 constant entry external dcl 266 ref 587 724 iox_$error_output 000012 external static pointer dcl 231 set ref 1824* iox_$put_chars 000146 constant entry external dcl 267 ref 1824 1967 1971 1972 iox_$user_output 000014 external static pointer dcl 232 set ref 563 613 1939* 1967* 1971* 1972* last_comma 001730 automatic fixed bin(21,0) dcl 1936 set ref 1948* 1953* 1955 1957 1958 1959 1963 1963 length builtin function dcl 317 ref 363 373 461 461 464 464 506 655 655 675 675 682 693 714 835 1040 1046 1046 1053 1055 1059 1064 1255 1255 1341 1341 1341 1348 1348 1360 1360 1365 1447 1663 1663 1663 1814 1815 1847 1878 1892 1950 1952 1958 1967 1967 1970 1971 1971 1972 1972 2003 2011 line_length 2 000276 automatic fixed bin(17,0) level 2 in structure "local_fmo" dcl 160 in procedure "mlsys_misc_utils_" set ref 1266* line_length 000104 automatic fixed bin(17,0) dcl 111 in procedure "mlsys_misc_utils_" set ref 557* 558 558 558 567 567* 572 573 574 575 576 577 607* 608 608 608 617 617* 622 623 624 625 626 627 696 699 701 702 704 706 1939* 1952 1963 list 12 000326 automatic structure level 2 dcl 165 list_idx 000100 automatic fixed bin(17,0) dcl 910 in procedure "cleanup_print_delivery_results" set ref 915* 916* list_idx 001672 automatic fixed bin(17,0) dcl 1837 in procedure "is_a_recipient_with_code" set ref 1839* 1840* list_idx 2 based fixed bin(18,0) level 3 in structure "other_result" packed packed unsigned unaligned dcl 122 in procedure "mlsys_misc_utils_" set ref 774 776* list_idx 001706 automatic fixed bin(17,0) dcl 1866 in procedure "print_recipient_list" set ref 1873* 1874* 1886* 1887 1888* list_idx 000744 automatic fixed bin(17,0) dcl 191 in procedure "mlsys_misc_utils_" set ref 765* 766* 791* 792 793* 825* 826 827* list_idx 2 based fixed bin(18,0) level 3 in structure "result" packed packed unsigned unaligned dcl 121 in procedure "mlsys_misc_utils_" set ref 771 797 920 920* lists 12 based structure array level 2 dcl 5-49 local_address_name 000100 automatic varying char dcl 332 set ref 341 local_ci 000100 automatic structure level 1 dcl 1571 set ref 1575 1575 local_do 000320 automatic structure level 1 dcl 163 set ref 1505 1505 local_fmo 000276 automatic structure level 1 dcl 160 set ref 1296 1296 1311 1311 local_mbsp 000306 automatic structure level 1 dcl 162 set ref 1448 1448 local_ri 000326 automatic structure level 1 dcl 165 set ref 1505 1505 1552 1552 lth based fixed bin(21,0) level 2 dcl 337 set ref 364* 365* 368* ltrim builtin function dcl 317 ref 654 mail_system_$add_address 000150 constant entry external dcl 268 ref 1464 1481 mail_system_$add_reply_reference 000152 constant entry external dcl 269 ref 1018 mail_system_$compare_addresses 000154 constant entry external dcl 270 ref 423 1106 1115 1118 mail_system_$create_mail_table_address 000156 constant entry external dcl 271 ref 1459 mail_system_$create_message 000160 constant entry external dcl 273 ref 1015 1430 mail_system_$delete_address 000162 constant entry external dcl 274 ref 1115 1118 mail_system_$deliver_message 000164 constant entry external dcl 275 ref 1505 mail_system_$eliminate_duplicate_addresses 000166 constant entry external dcl 276 ref 1150 mail_system_$free_address 000170 constant entry external dcl 277 ref 952 1556 1676 mail_system_$free_address_list 000172 constant entry external dcl 278 ref 1208 1209 1210 1470 1487 1554 mail_system_$free_message 000174 constant entry external dcl 279 ref 1217 1558 mail_system_$get_address_name 000176 constant entry external dcl 280 ref 343 353 359 497 497 mail_system_$get_address_pathname 000200 constant entry external dcl 281 ref 433 443 457 486 1656 1758 mail_system_$get_address_string 000202 constant entry external dcl 282 ref 408 408 417 417 471 471 480 480 1653 1757 mail_system_$get_address_system 000204 constant entry external dcl 283 ref 473 mail_system_$get_address_type 000206 constant entry external dcl 284 ref 396 978 1642 1654 1703 mail_system_$get_mail_table_address 000210 constant entry external dcl 285 ref 1644 mail_system_$merge_address_lists 000212 constant entry external dcl 286 ref 1079 1082 1089 1094 1099 1132 1137 1142 mail_system_$read_message_canonical_form_p 000214 constant entry external dcl 287 ref 1287 mail_system_$replace_bcc 000216 constant entry external dcl 288 ref 1167 mail_system_$replace_body 000220 constant entry external dcl 289 ref 1448 mail_system_$replace_cc 000222 constant entry external dcl 290 ref 1162 mail_system_$replace_from 000224 constant entry external dcl 291 ref 1468 mail_system_$replace_subject 000226 constant entry external dcl 292 ref 1050 1057 1066 1434 mail_system_$replace_to 000230 constant entry external dcl 293 ref 1157 1485 mail_system_$set_access_class 000232 constant entry external dcl 294 ref 1439 marked_for_deletion 12(02) based bit(1) level 3 packed packed unaligned dcl 2-15 ref 631 maxlength builtin function dcl 317 ref 328 373 373 404 506 527 675 1597 1663 1700 mbz 2(06) based bit(30) level 3 in structure "search_options" packed packed unaligned dcl 7-6 in procedure "mlsys_misc_utils_" ref 1248 mbz 10(03) based bit(33) level 3 in structure "reply_options" packed packed unaligned dcl 6-6 in procedure "mlsys_misc_utils_" ref 1002 message based structure level 1 dcl 2-15 message_body_section based structure level 1 dcl 2-274 message_body_section_parameter based structure level 1 dcl 2-313 message_body_section_ptr 001204 automatic pointer dcl 2-280 set ref 690* 691 691 692 692 693 693 1037* 1038 1038 1039 1039 1040 1040 1444* 1445 1446 1447 message_buffer_ptr 000256 automatic pointer dcl 149 set ref 1232* 1288* 1293* 1296* 1300 1307* 1308* 1311* 1329 1331* 1334* 1337* 1339* 1339* 1360* 1365 1400 1400 1400 1400* 1404* message_canonical_text_ptr 000260 automatic pointer dcl 149 set ref 1232* 1287* 1288 1329 1337* 1400 message_envelope based structure level 1 dcl 2-61 message_lth 000254 automatic fixed bin(21,0) dcl 147 set ref 1287* 1295* 1296* 1299 1310* 1311* 1331 1331 1331 1337* 1339* 1360* 1365 message_lth_in_words 000255 automatic fixed bin(18,0) dcl 148 set ref 1299* 1300 1300 message_preformatted_body_section based structure level 1 dcl 2-292 message_preformatted_body_section_text based char packed unaligned dcl 2-298 set ref 691 692 693 1038 1039 1040 message_ptr 001202 automatic pointer dcl 2-53 set ref 601* 602 631 634 638 642 644 648 654 659 664 672 675 682 682 683 684 687 687 687 690 1010* 1015* 1018* 1050* 1057* 1066* 1157* 1162* 1167* 1176 1217* 1229* 1237 1287* 1296* 1311* 1421* 1430* 1434* 1439* 1448* 1468* 1485* 1501 1505* 1558 1558* message_redistribution based structure level 1 dcl 2-122 message_reference based structure level 1 dcl 2-234 message_subject based char packed unaligned dcl 2-51 ref 682 message_text based char packed unaligned dcl 146 ref 1365 message_text_field based structure level 1 dcl 2-260 message_user_field based structure level 1 dcl 2-163 min builtin function dcl 317 ref 699 701 702 706 minute 000714 automatic fixed bin(17,0) dcl 178 set ref 664* 669 mlsys_data_$user_default_mailbox_address 000270 external static pointer dcl 1-12 set ref 1106* 1115* mlsys_data_$user_logbox_address 000274 external static pointer dcl 1-15 set ref 423* mlsys_data_$user_mail_table_address 000272 external static pointer dcl 1-14 set ref 1106* 1118* mlsys_et_$duplicate_address 000042 external static fixed bin(35,0) dcl 235 set ref 770 814* 835 mlsys_et_$errors_in_list_address 000044 external static fixed bin(35,0) dcl 235 ref 844 851 mlsys_et_$invalid_address 000046 external static fixed bin(35,0) dcl 235 ref 1716 mlsys_et_$list_address_is_all_duplicates 000050 external static fixed bin(35,0) dcl 235 ref 779 797 835 mlsys_et_$message_delivered 000052 external static fixed bin(35,0) dcl 235 set ref 835 878* 878* mlsys_et_$message_not_sent 000054 external static fixed bin(35,0) dcl 235 ref 1512 mlsys_et_$message_partially_sent 000056 external static fixed bin(35,0) dcl 235 ref 1512 mlsys_et_$message_queued 000060 external static fixed bin(35,0) dcl 235 set ref 835 844 881* 881* 1705 mlsys_et_$message_queued_and_delivered 000062 external static fixed bin(35,0) dcl 235 set ref 835 844 884* 884* mlsys_et_$message_too_large 000064 external static fixed bin(35,0) dcl 235 ref 1068 1313 mlsys_et_$mte_not_found 000066 external static fixed bin(35,0) dcl 235 ref 1743 mlsys_et_$no_mailbox 000070 external static fixed bin(35,0) dcl 235 ref 1721 mlsys_et_$no_mailing_list 000072 external static fixed bin(35,0) dcl 235 ref 1750 mlsys_et_$no_message_canonical_form 000074 external static fixed bin(35,0) dcl 235 ref 1291 mlsys_et_$not_in_mailbox_message 000076 external static fixed bin(35,0) dcl 235 ref 1291 mlsys_et_$not_message 000100 external static fixed bin(35,0) dcl 235 set ref 603 1237* mlsys_et_$null_search_string 000102 external static fixed bin(35,0) dcl 235 set ref 1251* mlsys_et_$rejected_by_foreign_system 000104 external static fixed bin(35,0) dcl 235 ref 1710 mlsys_psp_$forum_not_available 000234 constant entry external dcl 295 ref 1726 mlsys_utils_$format_address_field 000236 constant entry external dcl 296 ref 365 mlsys_utils_$format_message_canonical_form 000240 constant entry external dcl 299 ref 1296 1311 mlsys_utils_$parse_address_text 000242 constant entry external dcl 301 ref 1477 mod builtin function dcl 317 ref 1300 month 000710 automatic fixed bin(17,0) dcl 178 set ref 664* 666 mte_name 001465 automatic varying char(32) dcl 1638 set ref 1653* 1663 1675 must_be_acknowledged 12(03) based bit(1) level 3 packed packed unaligned dcl 2-15 ref 638 mvt_ 000244 constant entry external dcl 302 ref 1337 1339 1348 mvt_$make_translation_table 000246 constant entry external dcl 303 ref 1327 n_addresses based fixed bin(17,0) level 2 in structure "recipients_result_list" dcl 5-72 in procedure "mlsys_misc_utils_" ref 768 795 831 918 962 1844 1876 1890 n_addresses 6 based fixed bin(17,0) level 2 in structure "address_list" dcl 4-6 in procedure "mlsys_misc_utils_" ref 675 1113 2052 n_duplicates 000746 automatic fixed bin(17,0) dcl 191 set ref 763* 775* 775 779* 779 785 800 803 803 814 n_duplicates_processed 000747 automatic fixed bin(17,0) dcl 191 set ref 789* 799* 799 800 803 n_entries 1(18) based fixed bin(18,0) level 3 in structure "result" packed packed unsigned unaligned dcl 121 in procedure "mlsys_misc_utils_" ref 859 n_entries based fixed bin(17,0) level 2 in structure "expanded_recipients_result_list" dcl 5-93 in procedure "mlsys_misc_utils_" ref 951 955 n_lines_string 000730 automatic varying char(10) dcl 186 set ref 648* 654* 655 655* 655 655 724* n_lists 11 000326 automatic fixed bin(17,0) level 3 in structure "local_ri" dcl 165 in procedure "mlsys_misc_utils_" set ref 1500* n_lists 11 based fixed bin(17,0) level 3 in structure "recipients_info" dcl 5-49 in procedure "mlsys_misc_utils_" ref 765 776 791 797 825 915 920 959 1839 1873 1886 n_recipients 001704 automatic fixed bin(17,0) dcl 1866 set ref 1871* 1878* 1878 1895 1897 1897 n_recipients_processed 001705 automatic fixed bin(17,0) dcl 1866 set ref 1884* 1894* 1894 1895 1897 n_redistributions 10 based fixed bin(17,0) level 2 dcl 2-15 ref 659 new_part defined char packed unaligned dcl 2032 set ref 2033* new_subject 000100 automatic char packed unaligned dcl 1055 set ref 1056* 1057* next_comma 001731 automatic fixed bin(21,0) dcl 1936 set ref 1949* 1950 1950* 1952 1952 1953 1957* 1958 1958* 1959* 1959 1963 1963* 1966 1970 1976 null builtin function dcl 317 ref 357 540 563 613 755 767 794 829 912 913 917 937 949 952 956 960 963 980 980 1010 1208 1209 1210 1212 1214 1232 1400 1404 1406 1409 1421 1463 1466 1480 1483 1502 1554 1556 1558 1575 1575 1578 1610 1671 1842 1875 1889 2017 2049 offset 001732 automatic fixed bin(17,0) dcl 1937 set ref 1942* 1952 1963 1973* original_message_ptr 000112 automatic pointer dcl 116 set ref 995* 1015 1018* 1028 1029 1030 1033 1033 1033 1037 1079 1079 1082 1088 1089 1093 1094 1098 1099 original_subject based char packed unaligned dcl 126 set ref 1046 1050* 1056 1065 original_subject_lth 000124 automatic fixed bin(21,0) dcl 128 set ref 1026* 1030* 1039* 1040 1040* 1044 1046 1046 1050 1050 1053 1055 1056 1059 1064 1065 original_subject_ptr 000122 automatic pointer dcl 127 set ref 1025* 1029* 1038* 1046 1050 1056 1065 other_result based structure level 1 dcl 122 other_result_ptr 000116 automatic pointer dcl 124 set ref 771* 774 776 output_message defined char packed unaligned dcl 1819 set ref 1820* output_message_lth 000137 automatic fixed bin(21,0) dcl 1788 set ref 1820* 1821 output_switch 000106 automatic pointer dcl 112 set ref 563* 565* 567* 587* 613* 615* 617* 724* p_address_list_ptr parameter pointer dcl 2047 ref 2044 2049 2052 p_address_ptr parameter pointer dcl 1592 in procedure "get_address_summary" set ref 1589 1600* 1606* 1612* p_address_ptr parameter pointer dcl 1689 in procedure "print_single_recipient_error" set ref 1686 1703* 1706* 1711* 1717* 1722* 1729* 1734* 1739* 1746* 1751* 1757* 1758* 1766* p_address_ptr parameter pointer dcl 1631 in procedure "get_true_address_summary" set ref 1628 1642* 1644* 1645 1648 1652 1653* p_code parameter fixed bin(35,0) dcl 1863 in procedure "print_recipient_list" ref 1860 1878 1892 p_code parameter fixed bin(35,0) dcl 1537 in procedure "abort_send_message" ref 1534 1539 p_code parameter fixed bin(35,0) dcl 1690 in procedure "print_single_recipient_error" set ref 1686 1705 1710 1716 1718* 1721 1728 1733 1738 1743 1747* 1750 1767* p_code parameter fixed bin(35,0) dcl 1836 in procedure "is_a_recipient_with_code" ref 1833 1847 p_code parameter fixed bin(35,0) dcl 1569 in procedure "get_ioa_error_code" set ref 1566 1575* 1576 1578* 1580* p_code parameter fixed bin(35,0) dcl 1188 in procedure "abort_create_reply_message" ref 1185 1190 p_code parameter fixed bin(35,0) dcl 1384 in procedure "abort_search_message" ref 1381 1386 p_display_message parameter entry variable dcl 1692 ref 1686 1707 1712 1718 1723 1730 1735 1740 1747 1752 1767 p_explanation parameter varying char(128) dcl 1691 set ref 1686 1707* 1712* p_free_message parameter bit(1) dcl 1206 ref 1203 1217 p_get_primitive parameter entry variable dcl 523 ref 520 530 536 542 p_is_start_of_sentence parameter bit(1) dcl 1632 in procedure "get_true_address_summary" set ref 1628 1650* 1658 p_is_start_of_sentence parameter bit(1) dcl 1593 in procedure "get_address_summary" set ref 1589 1600* 1606* 1612* p_prefix parameter char packed unaligned dcl 1864 set ref 1860 1869* p_text parameter char packed unaligned dcl 1989 set ref 1999 2002 2003 p_varying_text parameter varying char dcl 1990 set ref 2007 2010 2011 pathname_ 000250 constant entry external dcl 304 ref 435 445 460 1657 1760 pathname_$component 000252 constant entry external dcl 305 ref 489 person_id 001154 automatic char(32) packed unaligned dcl 198 set ref 1456* 1459 1459 queued_notification_mode 4 000320 automatic fixed bin(17,0) level 2 dcl 163 set ref 1495* queueing_mode 3 000320 automatic fixed bin(17,0) level 2 dcl 163 set ref 1494* real_fix_bin_1_dtype constant fixed bin(17,0) initial dcl 12-25 ref 1797 1805 recipient_notification 5(02) 000320 automatic bit(1) level 3 packed packed unaligned dcl 163 set ref 1497* recipients_info based structure level 1 dcl 5-49 recipients_info_ptr 001210 automatic pointer dcl 5-64 set ref 746* 747 765 766 771 776 791 792 793 797 823 825 826 827 915 916 920 935* 937 942 947 949 950 956 959 960 961 963 1839 1840 1873 1874 1886 1887 1888 recipients_result_list based structure level 1 dcl 5-72 set ref 962 recipients_result_list_ptr 14 000326 automatic pointer level 3 in structure "local_ri" dcl 165 in procedure "mlsys_misc_utils_" set ref 1502* 1513 recipients_result_list_ptr 001212 automatic pointer dcl 5-64 in procedure "mlsys_misc_utils_" set ref 766* 767 768 769 793* 794 795 796 827* 829 831 833 916* 917 918 919 961* 962 1513* 1514 1515 1840* 1842 1844 1845 1874* 1875 1876 1877 1888* 1889 1890 1891 recipients_result_list_ptr 14 based pointer array level 3 in structure "recipients_info" dcl 5-49 in procedure "mlsys_misc_utils_" set ref 766 771 793 827 916 960 961 963* 1840 1874 1888 redistributions_list_formatting_mode 5 000276 automatic fixed bin(17,0) level 2 dcl 160 set ref 1276* 1278* regexp_search 2 based bit(1) level 3 packed packed unaligned dcl 7-6 ref 1254 1359 release_temp_segment_ 000254 constant entry external dcl 306 ref 912 1213 1400 1406 reply_lists 000270 automatic structure level 1 dcl 154 set ref 1010* 1150 reply_lists_array based pointer array dcl 158 set ref 1150* reply_options based structure level 1 dcl 6-6 reply_options_ptr 001216 automatic pointer dcl 6-20 set ref 996* 998 1002 1078 1087 1105 1131 1132 1136 1137 1141 1142 reply_to 40 based pointer level 3 dcl 2-15 set ref 1079* 1079* requote_string_ 000256 constant entry external dcl 307 ref 413 rest_of_buffer defined char packed unaligned dcl 1946 ref 1949 1950 1952 1970 rest_of_rest_of_buffer defined char packed unaligned dcl 1955 ref 1957 1958 result based structure level 1 dcl 121 result_ptr 000114 automatic pointer dcl 124 set ref 769* 770 771 771 779 796* 797 797 833* 835 835 835 835 835 835 835 835 835 844 844 844 844 851 859 859 859 866 866 919* 920 920 1845* 1847 1847 1847 1877* 1878 1878 1878 1891* 1892 1892 1892 results 2 based structure array level 2 dcl 5-72 set ref 769 771 796 833 919 1845 1877 1891 reverse builtin function dcl 317 ref 439 439 439 449 449 449 461 461 464 464 493 493 493 1661 1661 1661 1762 1762 1762 rtrim builtin function dcl 317 ref 458 460 1459 1459 1459 1459 1814 1814 1815 sci_ptr 000110 automatic pointer dcl 114 set ref 744* 814* 851* 854* 985* 1707* 1712* 1718* 1723* 1730* 1735* 1740* 1747* 1752* 1767* search_body 2(05) based bit(1) level 3 packed packed unaligned dcl 7-6 ref 1243 1280 1282 search_envelope 2(02) based bit(1) level 3 packed packed unaligned dcl 7-6 ref 1243 1268 1282 search_file_$silent 000260 constant entry external dcl 308 ref 1255 1360 search_header 2(03) based bit(1) level 3 packed packed unaligned dcl 7-6 ref 1243 1272 1282 search_options based structure level 1 dcl 7-6 search_options_ptr 001220 automatic pointer dcl 7-20 set ref 1230* 1240 1243 1243 1243 1243 1248 1254 1268 1272 1276 1280 1282 1282 1282 1282 1326 1355 1359 search_redistributions_list 2(04) based bit(1) level 3 packed packed unaligned dcl 7-6 ref 1243 1276 1282 search_string based char packed unaligned dcl 151 ref 1365 search_string_ptr 000264 automatic pointer dcl 152 set ref 1355* 1357* 1360* 1365 search_succeeds 001153 automatic bit(1) dcl 196 set ref 1362* 1365* 1375 1387* section 4 000306 automatic structure level 2 dcl 162 set ref 1444 section_to_print defined char packed unaligned dcl 1966 set ref 1967 1967 1967 1967 section_type 64 based fixed bin(17,0) array level 5 in structure "message" dcl 2-15 in procedure "mlsys_misc_utils_" set ref 687 1033 section_type based fixed bin(17,0) level 3 in structure "message_body_section" dcl 2-274 in procedure "mlsys_misc_utils_" set ref 1445* seen 12(04) based bit(1) level 3 packed packed unaligned dcl 2-15 ref 634 seen_flag 000742 automatic char(1) packed unaligned dcl 188 set ref 634* 636* 724* segment_buffer_max_lth 000142 automatic fixed bin(21,0) dcl 136 set ref 2020* 2024 segment_buffer_ptr 000136 automatic pointer dcl 135 set ref 755* 912 912* 913* 1010* 1061* 1063 1212 1213* 1214* 2017 2018* 2022 2023 ssu_$print_message 000262 constant entry external dcl 311 ref 814 851 854 866 866 986 986 stack_buffer_max_lth 000141 automatic fixed bin(21,0) dcl 136 set ref 753* 1792 1921 stack_buffer_ptr 000134 automatic pointer dcl 135 set ref 752* 1791 1920 2014 2022 stack_truncation_ptr 000262 automatic pointer dcl 149 set ref 1300* 1302* stackframeptr builtin function dcl 317 ref 1400 1406 status 115 based structure level 2 dcl 11-6 string builtin function dcl 317 in procedure "mlsys_misc_utils_" set ref 1496* string 1 based char level 2 in structure "fixed_address_name" packed packed unaligned dcl 337 in begin block on line 330 set ref 365 365 369* sub_err_ 000264 constant entry external dcl 312 ref 980 subject 50 based structure level 3 dcl 2-15 subject_string 000100 automatic char packed unaligned dcl 712 set ref 714* 714 715* 724* subject_string_lth 000716 automatic fixed bin(21,0) dcl 182 set ref 696* 699* 701* 702* 704* 706* 712 715 715 substr builtin function dcl 317 set ref 369* 373 461 464 714 715* 1046 1810* 1814* sys_info$max_seg_size 000010 external static fixed bin(19,0) dcl 229 ref 1059 1311 2020 ten_digits_picture automatic picture(10) packed unaligned dcl 179 ref 654 text based char packed unaligned dcl 1992 ref 2033 text_lth 001746 automatic fixed bin(21,0) dcl 1994 in procedure "add_to_buffer" set ref 2003* 2011* 2014 2032 2033 2036 text_lth 52 based fixed bin(21,0) level 4 in structure "message" dcl 2-15 in procedure "mlsys_misc_utils_" ref 682 684 1028 1030 text_lth 4 based fixed bin(21,0) level 2 in structure "message_preformatted_body_section" dcl 2-292 in procedure "mlsys_misc_utils_" set ref 691 692 693 1038 1039 1040 1447* text_ptr 2 based pointer level 2 in structure "message_preformatted_body_section" dcl 2-292 in procedure "mlsys_misc_utils_" set ref 691 692 693 1038 1039 1040 1446* text_ptr 50 based pointer level 4 in structure "message" dcl 2-15 in procedure "mlsys_misc_utils_" ref 682 683 1029 text_ptr 001744 automatic pointer dcl 1993 in procedure "add_to_buffer" set ref 2002* 2010* 2033 the_subject based char packed unaligned dcl 130 set ref 714 1065* 1066* the_subject_lth 000130 automatic fixed bin(21,0) dcl 132 set ref 680* 684* 692* 693 693* 696 699 701 702 706 714 715 1064* 1065 1066 1066 the_subject_ptr 000126 automatic pointer dcl 131 set ref 679* 683* 691* 714 1063* 1065 1066 time_string 000734 automatic char(5) packed unaligned dcl 187 set ref 669* 724* to 000270 automatic pointer level 2 in structure "reply_lists" dcl 154 in procedure "mlsys_misc_utils_" set ref 1079* 1079* 1082* 1082* 1110 1132* 1132* 1156* 1157* 1208 1208* to 2 based pointer level 2 in structure "reply_options" dcl 6-6 in procedure "mlsys_misc_utils_" set ref 1131* 1132* to 42 based pointer level 3 in structure "message" dcl 2-15 in procedure "mlsys_misc_utils_" set ref 1088* 1089* 1501 to_size 000136 automatic fixed bin(35,0) dcl 1787 set ref 1804* 1805* total_lines 62 based fixed bin(21,0) level 3 dcl 2-15 ref 648 654 687 1033 translate builtin function dcl 317 ref 1046 1046 translated_search_string_ptr 000266 automatic pointer dcl 152 set ref 1232* 1341* 1345* 1348* 1355 1406 1406 1406* 1409* translation_table 000753 automatic char(512) dcl 195 set ref 1327* 1337* 1339* 1348* two_digits_picture automatic picture(2) packed unaligned dcl 180 ref 666 666 666 669 669 use_original_subject 000743 automatic bit(1) dcl 190 set ref 1045* 1046* 1050 user_info_$login_data 000266 constant entry external dcl 313 ref 1456 user_name 001632 automatic varying char(64) dcl 1695 set ref 1757* 1764 users_area based area(1024) dcl 143 ref 955 962 users_area_ptr 000252 automatic pointer dcl 144 set ref 947* 955 962 varying_char_dtype constant fixed bin(17,0) initial dcl 12-25 ref 1801 verify builtin function dcl 317 ref 1251 1433 1454 version based char(8) level 2 in structure "search_options" packed packed unaligned dcl 7-6 in procedure "mlsys_misc_utils_" ref 1240 version based char(8) level 2 in structure "reply_options" packed packed unaligned dcl 6-6 in procedure "mlsys_misc_utils_" ref 998 version 000320 automatic char(8) level 2 in structure "local_do" packed packed unaligned dcl 163 in procedure "mlsys_misc_utils_" set ref 1492* version 000276 automatic char(8) level 2 in structure "local_fmo" packed packed unaligned dcl 160 in procedure "mlsys_misc_utils_" set ref 1265* version 000326 automatic char(8) level 3 in structure "local_ri" packed packed unaligned dcl 165 in procedure "mlsys_misc_utils_" set ref 1423* 1503* version based char(8) level 3 in structure "recipients_info" packed packed unaligned dcl 5-49 in procedure "mlsys_misc_utils_" ref 747 942 version 2 000306 automatic char(8) level 2 in structure "local_mbsp" packed packed unaligned dcl 162 in procedure "mlsys_misc_utils_" set ref 1443* version 2 000100 automatic fixed bin(17,0) level 2 in structure "local_ci" dcl 1571 in procedure "get_ioa_error_code" set ref 1573* version based char(8) level 2 in structure "message" packed packed unaligned dcl 2-15 in procedure "mlsys_misc_utils_" set ref 602 1015* 1237 year 000712 automatic fixed bin(17,0) dcl 178 set ref 664* 666 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 13-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 13-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 13-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 13-7 ALWAYS_NOTIFY internal static fixed bin(17,0) initial dcl 5-42 ALWAYS_QUEUE internal static fixed bin(17,0) initial dcl 5-33 BRIEF_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 8-22 EXPRESS_DELIVERY internal static fixed bin(17,0) initial dcl 5-25 FOREIGN_ADDRESS internal static fixed bin(17,0) initial dcl 3-6 FORUM_ADDRESS internal static fixed bin(17,0) initial dcl 3-6 INTERACTIVE_DELIVERY internal static fixed bin(17,0) initial dcl 5-25 INVALID_ADDRESS internal static fixed bin(17,0) initial dcl 3-6 LOGBOX_ADDRESS internal static fixed bin(17,0) initial dcl 3-6 LONG_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 8-22 MAILBOX_ADDRESS internal static fixed bin(17,0) initial dcl 3-6 MAILING_LIST_ADDRESS internal static fixed bin(17,0) initial dcl 3-6 MESSAGE_ADDRESS_LIST_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 2-285 MESSAGE_DATE_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-79 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 2-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 2-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-253 MESSAGE_TEXT_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_TRACE_VERSION_2 internal static char(8) initial packed unaligned dcl 2-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 2-158 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-213 NAMED_GROUP_ADDRESS internal static fixed bin(17,0) initial dcl 3-6 NEVER_NOTIFY internal static fixed bin(17,0) initial dcl 5-42 NEVER_QUEUE internal static fixed bin(17,0) initial dcl 5-33 ORDINARY_DELIVERY internal static fixed bin(17,0) initial dcl 5-25 QUEUE_FOREIGN_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 5-33 QUEUE_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 5-33 SAVEBOX_ADDRESS internal static fixed bin(17,0) initial dcl 3-6 address_list_n_addresses automatic fixed bin(17,0) dcl 4-16 algol68_array_descriptor_dtype internal static fixed bin(17,0) initial dcl 12-25 algol68_bits_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_bool_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_byte_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_char_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_compl_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_format_dtype internal static fixed bin(17,0) initial dcl 12-25 algol68_int_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_long_compl_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_long_int_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_long_real_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_real_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_short_int_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_straight_dtype internal static fixed bin(17,0) initial dcl 12-25 algol68_struct_struct_bool_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_struct_struct_char_dtype internal static fixed bin(17,0) initial dcl 12-110 algol68_union_dtype internal static fixed bin(17,0) initial dcl 12-25 area_dtype internal static fixed bin(17,0) initial dcl 12-25 c_enum_const_dtype internal static fixed bin(17,0) initial dcl 12-25 c_enum_dtype internal static fixed bin(17,0) initial dcl 12-25 c_typeref_dtype internal static fixed bin(17,0) initial dcl 12-25 c_union_dtype internal static fixed bin(17,0) initial dcl 12-25 char_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_char_string_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_comp_5_ts_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_comp_5_uns_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_comp_6_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_comp_7_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_comp_8_ls_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_comp_8_uns_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_display_ls_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_display_ls_overp_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_display_ts_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_display_ts_overp_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_display_uns_dtype internal static fixed bin(17,0) initial dcl 12-25 cobol_structure_dtype internal static fixed bin(17,0) initial dcl 12-25 condition_info_header_ptr automatic pointer dcl 10-4 condition_info_ptr automatic pointer dcl 9-10 cplx_fix_bin_1_dtype internal static fixed bin(17,0) initial dcl 12-25 cplx_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 12-25 cplx_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 12-25 cplx_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 12-25 cplx_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 12-25 cplx_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 12-25 cplx_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 12-25 cplx_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 12-25 cplx_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 12-25 cplx_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 12-25 cplx_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 12-25 cplx_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 12-25 cplx_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 12-25 deliver_options_ptr automatic pointer dcl 5-21 entry_dtype internal static fixed bin(17,0) initial dcl 12-25 expanded_recipients_result_list_n_entries automatic fixed bin(17,0) dcl 5-66 ext_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 12-125 ext_procedure_runtime_dtype internal static fixed bin(17,0) initial dcl 12-125 file_dtype internal static fixed bin(17,0) initial dcl 12-25 format_message_options_ptr automatic pointer dcl 8-17 ft_char_dtype internal static fixed bin(17,0) initial dcl 12-96 ft_complex_double_dtype internal static fixed bin(17,0) initial dcl 12-96 ft_complex_dtype internal static fixed bin(17,0) initial dcl 12-96 ft_double_dtype internal static fixed bin(17,0) initial dcl 12-96 ft_external_dtype internal static fixed bin(17,0) initial dcl 12-96 ft_hex_complex_double_dtype internal static fixed bin(17,0) initial dcl 12-96 ft_hex_complex_dtype internal static fixed bin(17,0) initial dcl 12-96 ft_hex_double_dtype internal static fixed bin(17,0) initial dcl 12-96 ft_hex_real_dtype internal static fixed bin(17,0) initial dcl 12-96 ft_integer_dtype internal static fixed bin(17,0) initial dcl 12-96 ft_logical_dtype internal static fixed bin(17,0) initial dcl 12-96 ft_real_dtype internal static fixed bin(17,0) initial dcl 12-96 int_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 12-125 io_error_info_ptr automatic pointer dcl 11-5 label_constant_runtime_dtype internal static fixed bin(17,0) initial dcl 12-125 label_dtype internal static fixed bin(17,0) initial dcl 12-25 message_address_list_user_field based structure level 1 dcl 2-190 message_bit_string_body_section based structure level 1 dcl 2-301 message_bit_string_body_section_bit_string based bit packed unaligned dcl 2-307 message_body_section_parameter_ptr automatic pointer dcl 2-320 message_date_user_field based structure level 1 dcl 2-195 message_envelope_parameter based structure level 1 dcl 2-74 message_envelope_parameter_ptr automatic pointer dcl 2-81 message_envelope_ptr automatic pointer dcl 2-69 message_integer_user_field based structure level 1 dcl 2-200 message_n_body_sections automatic fixed bin(17,0) dcl 2-55 message_n_redistributions automatic fixed bin(17,0) dcl 2-55 message_n_user_fields automatic fixed bin(17,0) dcl 2-55 message_redistribution_comment based char packed unaligned dcl 2-131 message_redistribution_parameter based structure level 1 dcl 2-139 message_redistribution_parameter_ptr automatic pointer dcl 2-146 message_redistribution_ptr automatic pointer dcl 2-134 message_redistributions_list based structure level 1 dcl 2-109 message_reference_parameter based structure level 1 dcl 2-248 message_reference_parameter_ptr automatic pointer dcl 2-255 message_reference_ptr automatic pointer dcl 2-243 message_reference_subject based char packed unaligned dcl 2-240 message_references_list based structure level 1 dcl 2-219 message_references_list_n_references automatic fixed bin(17,0) dcl 2-55 message_references_list_ptr automatic pointer dcl 2-229 message_text_field_ptr automatic pointer dcl 2-270 message_text_field_text based char packed unaligned dcl 2-268 message_text_user_field based structure level 1 dcl 2-183 message_text_user_field_text based char packed unaligned dcl 2-187 message_trace based structure level 1 dcl 2-87 message_trace_n_relays automatic fixed bin(17,0) dcl 2-55 message_trace_ptr automatic pointer dcl 2-105 message_user_field_parameter based structure level 1 dcl 2-208 message_user_field_parameter_ptr automatic pointer dcl 2-215 message_user_field_ptr automatic pointer dcl 2-169 message_user_fields_list based structure level 1 dcl 2-150 mlsys_data_$system_directory external static char(168) packed unaligned dcl 1-7 offset_dtype internal static fixed bin(17,0) initial dcl 12-25 pascal_boolean_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_char_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_entry_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_enumerated_type_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_enumerated_type_element_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_enumerated_type_instance_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_exportable_procedure_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_imported_procedure_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_integer_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_internal_procedure_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_label_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_parameter_procedure_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_procedure_type_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_real_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_record_file_type_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_record_type_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_set_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_string_type_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_text_file_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_typed_pointer_type_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_user_defined_type_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_user_defined_type_instance_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_value_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 12-132 pascal_variable_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 12-132 picture_runtime_dtype internal static fixed bin(17,0) initial dcl 12-125 pointer_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_bin_1_uns_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_bin_2_uns_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_dec_4bit_bytealigned_uns_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_dec_4bit_ls_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_dec_4bit_ts_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_dec_4bit_uns_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_dec_9bit_ls_overp_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_dec_9bit_ts_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_dec_9bit_ts_overp_dtype internal static fixed bin(17,0) initial dcl 12-25 real_fix_dec_9bit_uns_dtype internal static fixed bin(17,0) initial dcl 12-25 real_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 12-25 real_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 12-25 real_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 12-25 real_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 12-25 real_flt_dec_4bit_dtype internal static fixed bin(17,0) initial dcl 12-25 real_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 12-25 real_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 12-25 real_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 12-25 real_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 12-25 real_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 12-25 recipients_info_n_lists automatic fixed bin(17,0) dcl 5-66 recipients_result_list_n_addresses automatic fixed bin(17,0) dcl 5-66 structure_dtype internal static fixed bin(17,0) initial dcl 12-25 varying_bit_dtype internal static fixed bin(17,0) initial dcl 12-25 NAMES DECLARED BY EXPLICIT CONTEXT. ADD_TO_BUFFER_COMMON 015617 constant label dcl 2014 ref 2004 END_SUMMARIZE_ADDRESS_CASE 002610 constant label dcl 506 ref 414 420 428 440 450 468 477 483 494 503 ERROR_RETURN_FROM_CREATE_REPLY_MESSAGE 007563 constant label dcl 1195 ref 1191 ERROR_RETURN_FROM_PRINT_DELIVERY_RESULTS 005545 constant label dcl 899 ref 2019 2028 FORUM_NOT_ON_SYSTEM 014021 constant label dcl 1743 ref 1726 MUST_FORMAT_THE_MESSAGE 010156 constant label dcl 1293 ref 1282 RESIGNAL_NOT_AN_ADDRESS 006015 constant label dcl 980 ref 982 RETURN_FROM_PRINT_DELIVERY_RESULTS 005532 constant label dcl 893 ref 872 901 RETURN_FROM_PRINT_MESSAGE_SUMMARY 004420 constant label dcl 735 ref 721 RETURN_FROM_PRINT_MESSAGE_SUMMARY_HEADER 003247 constant label dcl 593 ref 584 RETURN_FROM_SEARCH_MESSAGE 010701 constant label dcl 1372 ref 1389 RETURN_FROM_SEND_MESSAGE_TO_RECIPIENT 011653 constant label dcl 1525 ref 1541 SUMMARIZE_ADDRESS 000000 constant label array(0:9) dcl 408 ref 406 abort_create_reply_message 012004 constant entry internal dcl 1185 ref 1016 1019 1062 1070 1084 1091 1096 1101 1122 1133 1138 1143 1151 1158 1163 1168 abort_search_message 012144 constant entry internal dcl 1381 ref 1237 1240 1243 1248 1251 1259 1309 1314 1317 1320 1335 1346 abort_send_message 012270 constant entry internal dcl 1534 ref 1431 1435 1440 1449 1461 1465 1469 1478 1482 1486 add_to_buffer 015555 constant entry internal dcl 1986 add_to_buffer_fixed 015557 constant entry internal dcl 1999 ref 787 800 802 803 811 812 1869 1895 1896 1897 1906 1907 add_to_buffer_varying 015576 constant entry internal dcl 2007 ref 806 1900 cleanup_create_reply_message 012012 constant entry internal dcl 1203 ref 1013 1174 1195 cleanup_print_delivery_results 011667 constant entry internal dcl 907 ref 757 893 cleanup_search_message 012153 constant entry internal dcl 1397 ref 1235 1372 cleanup_send_message 012276 constant entry internal dcl 1549 ref 1425 1525 create_reply_message 006125 constant entry external dcl 992 free_delivery_results 005554 constant entry external dcl 932 ref 1552 get_address_summary 012443 constant entry internal dcl 1589 ref 805 1650 1746 1899 get_address_variable 002651 constant entry internal dcl 520 ref 408 417 471 480 497 get_best_address_name 000573 constant entry external dcl 324 ref 672 get_ioa_error_code 012376 constant entry internal dcl 1566 ref 583 720 get_true_address_summary 012630 constant entry internal dcl 1628 ref 850 1706 1711 1717 1722 1729 1734 1739 1751 1766 is_a_recipient_with_code 015003 constant entry internal dcl 1833 ref 878 881 884 is_empty_list 015712 constant entry internal dcl 2044 ref 1079 1088 1093 1098 1111 1131 1136 1141 1156 1161 1166 mlsys_misc_utils_ 000552 constant entry external dcl 46 print_delivery_results 004434 constant entry external dcl 741 print_expansion_error 014443 constant entry internal dcl 1779 ref 861 861 print_message_summary 003264 constant entry external dcl 598 print_message_summary_header 003034 constant entry external dcl 554 print_recipient_list 015064 constant entry internal dcl 1860 ref 878 881 884 print_single_recipient_error 013256 constant entry internal dcl 1686 ref 861 866 986 print_the_buffer 015335 constant entry internal dcl 1933 ref 816 1909 print_validate_results 005752 constant entry external dcl 973 search_message 007607 constant entry external dcl 1226 send_message_to_recipient 010726 constant entry external dcl 1417 start_new_output 015326 constant entry internal dcl 1917 ref 786 1868 summarize_address 001177 constant entry external dcl 391 ref 1600 1606 1612 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 20342 20640 16456 20352 Length 21676 16456 276 1021 1664 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mlsys_misc_utils_ 1412 external procedure is an external procedure. begin block on line 330 118 begin block uses auto adjustable storage. begin block on line 402 328 begin block uses auto adjustable storage. get_address_variable internal procedure shares stack frame of begin block on line 402. on unit on line 581 70 on unit begin block on line 711 176 begin block uses auto adjustable storage, and enables or reverts conditions. on unit on line 718 70 on unit on unit on line 757 64 on unit cleanup_print_delivery_results 84 internal procedure is called by several nonquick procedures. on unit on line 1013 72 on unit begin block on line 1053 84 begin block uses auto adjustable storage. abort_create_reply_message internal procedure shares stack frame of external procedure mlsys_misc_utils_. cleanup_create_reply_message 86 internal procedure is called by several nonquick procedures. on unit on line 1235 64 on unit abort_search_message internal procedure shares stack frame of external procedure mlsys_misc_utils_. cleanup_search_message 84 internal procedure is called by several nonquick procedures. on unit on line 1425 64 on unit abort_send_message internal procedure shares stack frame of external procedure mlsys_misc_utils_. cleanup_send_message 74 internal procedure is called by several nonquick procedures. get_ioa_error_code 102 internal procedure is called by several nonquick procedures. get_address_summary internal procedure shares stack frame of external procedure mlsys_misc_utils_. get_true_address_summary internal procedure shares stack frame of external procedure mlsys_misc_utils_. print_single_recipient_error internal procedure shares stack frame of external procedure mlsys_misc_utils_. print_expansion_error 174 internal procedure is assigned to an entry variable, is declared options(non_quick), and is declared options(variable). begin block on line 1818 begin block shares stack frame of internal procedure print_expansion_error. is_a_recipient_with_code internal procedure shares stack frame of external procedure mlsys_misc_utils_. print_recipient_list internal procedure shares stack frame of external procedure mlsys_misc_utils_. start_new_output internal procedure shares stack frame of external procedure mlsys_misc_utils_. print_the_buffer internal procedure shares stack frame of external procedure mlsys_misc_utils_. begin block on line 1945 begin block shares stack frame of external procedure mlsys_misc_utils_. begin block on line 1954 begin block shares stack frame of external procedure mlsys_misc_utils_. begin block on line 1965 begin block shares stack frame of external procedure mlsys_misc_utils_. add_to_buffer internal procedure shares stack frame of external procedure mlsys_misc_utils_. begin block on line 2031 begin block shares stack frame of external procedure mlsys_misc_utils_. is_empty_list internal procedure shares stack frame of external procedure mlsys_misc_utils_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 1053 000100 new_subject begin block on line 1053 begin block on line 330 000100 address_name_ptr begin block on line 330 000100 local_address_name begin block on line 330 begin block on line 402 000100 address_string begin block on line 402 000112 code get_address_variable begin block on line 711 000100 subject_string begin block on line 711 cleanup_print_delivery_results 000100 list_idx cleanup_print_delivery_results 000101 address_idx cleanup_print_delivery_results get_ioa_error_code 000100 local_ci get_ioa_error_code mlsys_misc_utils_ 000100 code mlsys_misc_utils_ 000102 address_ptr mlsys_misc_utils_ 000104 line_length mlsys_misc_utils_ 000106 output_switch mlsys_misc_utils_ 000110 sci_ptr mlsys_misc_utils_ 000112 original_message_ptr mlsys_misc_utils_ 000114 result_ptr mlsys_misc_utils_ 000116 other_result_ptr mlsys_misc_utils_ 000120 expanded_result_ptr mlsys_misc_utils_ 000122 original_subject_ptr mlsys_misc_utils_ 000124 original_subject_lth mlsys_misc_utils_ 000126 the_subject_ptr mlsys_misc_utils_ 000130 the_subject_lth mlsys_misc_utils_ 000132 buffer_ptr mlsys_misc_utils_ 000134 stack_buffer_ptr mlsys_misc_utils_ 000136 segment_buffer_ptr mlsys_misc_utils_ 000140 buffer_max_lth mlsys_misc_utils_ 000141 stack_buffer_max_lth mlsys_misc_utils_ 000142 segment_buffer_max_lth mlsys_misc_utils_ 000143 buffer_used mlsys_misc_utils_ 000144 buffer_printed mlsys_misc_utils_ 000145 address_local_variable mlsys_misc_utils_ 000246 address_variable_ptr mlsys_misc_utils_ 000250 address_variable_max_lth mlsys_misc_utils_ 000252 users_area_ptr mlsys_misc_utils_ 000254 message_lth mlsys_misc_utils_ 000255 message_lth_in_words mlsys_misc_utils_ 000256 message_buffer_ptr mlsys_misc_utils_ 000260 message_canonical_text_ptr mlsys_misc_utils_ 000262 stack_truncation_ptr mlsys_misc_utils_ 000264 search_string_ptr mlsys_misc_utils_ 000266 translated_search_string_ptr mlsys_misc_utils_ 000270 reply_lists mlsys_misc_utils_ 000276 local_fmo mlsys_misc_utils_ 000306 local_mbsp mlsys_misc_utils_ 000320 local_do mlsys_misc_utils_ 000326 local_ri mlsys_misc_utils_ 000344 foreign_system_name mlsys_misc_utils_ 000445 address_pathname mlsys_misc_utils_ 000526 address_pathname_varying mlsys_misc_utils_ 000610 address_dirname mlsys_misc_utils_ 000662 address_ename mlsys_misc_utils_ 000672 address_component mlsys_misc_utils_ 000702 address_type mlsys_misc_utils_ 000703 include_author mlsys_misc_utils_ 000704 include_date mlsys_misc_utils_ 000705 include_time mlsys_misc_utils_ 000706 include_subject mlsys_misc_utils_ 000707 include_lines mlsys_misc_utils_ 000710 month mlsys_misc_utils_ 000711 day_of_month mlsys_misc_utils_ 000712 year mlsys_misc_utils_ 000713 hour mlsys_misc_utils_ 000714 minute mlsys_misc_utils_ 000715 address_name_max_lth mlsys_misc_utils_ 000716 subject_string_lth mlsys_misc_utils_ 000717 author_string mlsys_misc_utils_ 000726 date_string mlsys_misc_utils_ 000730 n_lines_string mlsys_misc_utils_ 000734 time_string mlsys_misc_utils_ 000736 ack_flag mlsys_misc_utils_ 000737 current_message_flag mlsys_misc_utils_ 000740 delete_flag mlsys_misc_utils_ 000741 forwarded_flag mlsys_misc_utils_ 000742 seen_flag mlsys_misc_utils_ 000743 use_original_subject mlsys_misc_utils_ 000744 list_idx mlsys_misc_utils_ 000745 address_idx mlsys_misc_utils_ 000746 n_duplicates mlsys_misc_utils_ 000747 n_duplicates_processed mlsys_misc_utils_ 000750 expanded_idx mlsys_misc_utils_ 000751 idx mlsys_misc_utils_ 000752 compare_against_both mlsys_misc_utils_ 000753 translation_table mlsys_misc_utils_ 001153 search_succeeds mlsys_misc_utils_ 001154 person_id mlsys_misc_utils_ 001164 anonymous_flag mlsys_misc_utils_ 001202 message_ptr mlsys_misc_utils_ 001204 message_body_section_ptr mlsys_misc_utils_ 001206 address_list_ptr mlsys_misc_utils_ 001210 recipients_info_ptr mlsys_misc_utils_ 001212 recipients_result_list_ptr mlsys_misc_utils_ 001214 expanded_recipients_result_list_ptr mlsys_misc_utils_ 001216 reply_options_ptr mlsys_misc_utils_ 001220 search_options_ptr mlsys_misc_utils_ 001310 code get_address_summary 001320 address_ptr get_true_address_summary 001322 address_pathname get_true_address_summary 001403 address_dirname get_true_address_summary 001455 address_ename get_true_address_summary 001465 mte_name get_true_address_summary 001476 code get_true_address_summary 001477 address_type get_true_address_summary 001506 address_pathname print_single_recipient_error 001560 address_dirname print_single_recipient_error 001632 user_name print_single_recipient_error 001653 address_ename print_single_recipient_error 001663 address_type print_single_recipient_error 001672 list_idx is_a_recipient_with_code 001673 address_idx is_a_recipient_with_code 001704 n_recipients print_recipient_list 001705 n_recipients_processed print_recipient_list 001706 list_idx print_recipient_list 001707 address_idx print_recipient_list 001730 last_comma print_the_buffer 001731 next_comma print_the_buffer 001732 offset print_the_buffer 001744 text_ptr add_to_buffer 001746 text_lth add_to_buffer print_expansion_error 000100 arg_ptr print_expansion_error 000102 error_message print_expansion_error 000133 arg_packed print_expansion_error 000134 error_code print_expansion_error 000135 from_size print_expansion_error 000136 to_size print_expansion_error 000137 output_message_lth print_expansion_error 000140 arg_type print_expansion_error 000141 arg_ndims print_expansion_error 000142 arg_size print_expansion_error 000143 arg_scale print_expansion_error THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as alloc_char_temp cat_realloc_chars enter_begin_block leave_begin_block call_ent_var_desc call_ext_in_desc call_ext_in call_ext_out_desc call_ext_out call_int_this call_int_other begin_return_mac return_mac tra_ext_1 alloc_auto_adj mdfx1 signal_op enable_op shorten_stack ext_entry ext_entry_desc int_entry reverse_cs set_chars_eis index_chars_eis op_freen_ index_after_cs ix_rev_chars THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. aim_check_$equal assign_ convert_status_code_ cu_$arg_list_ptr cu_$arg_ptr cu_$grow_stack_frame cu_$shrink_stack_frame decode_clock_value_$date_time decode_descriptor_ find_condition_info_ get_authorization_ get_line_length_$switch get_system_free_area_ get_temp_segment_ ioa_$general_rs ioa_$ioa_switch iox_$put_chars mail_system_$add_address mail_system_$add_reply_reference mail_system_$compare_addresses mail_system_$create_mail_table_address mail_system_$create_message mail_system_$delete_address mail_system_$deliver_message mail_system_$eliminate_duplicate_addresses mail_system_$free_address mail_system_$free_address_list mail_system_$free_message mail_system_$get_address_name mail_system_$get_address_pathname mail_system_$get_address_string mail_system_$get_address_system mail_system_$get_address_type mail_system_$get_mail_table_address mail_system_$merge_address_lists mail_system_$read_message_canonical_form_p mail_system_$replace_bcc mail_system_$replace_body mail_system_$replace_cc mail_system_$replace_from mail_system_$replace_subject mail_system_$replace_to mail_system_$set_access_class mlsys_psp_$forum_not_available mlsys_utils_$format_address_field mlsys_utils_$format_message_canonical_form mlsys_utils_$parse_address_text mvt_ mvt_$make_translation_table pathname_ pathname_$component release_temp_segment_ requote_string_ search_file_$silent ssu_$print_message sub_err_ user_info_$login_data THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$area_too_small error_table_$bad_subr_arg error_table_$inconsistent error_table_$nomatch error_table_$null_info_ptr error_table_$smallarg error_table_$unimplemented_version forum_error_table_$no_such_forum forum_error_table_$not_eligible forum_error_table_$read_only iox_$error_output iox_$user_output mlsys_data_$user_default_mailbox_address mlsys_data_$user_logbox_address mlsys_data_$user_mail_table_address mlsys_et_$duplicate_address mlsys_et_$errors_in_list_address mlsys_et_$invalid_address mlsys_et_$list_address_is_all_duplicates mlsys_et_$message_delivered mlsys_et_$message_not_sent mlsys_et_$message_partially_sent mlsys_et_$message_queued mlsys_et_$message_queued_and_delivered mlsys_et_$message_too_large mlsys_et_$mte_not_found mlsys_et_$no_mailbox mlsys_et_$no_mailing_list mlsys_et_$no_message_canonical_form mlsys_et_$not_in_mailbox_message mlsys_et_$not_message mlsys_et_$null_search_string mlsys_et_$rejected_by_foreign_system sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 46 000551 49 000561 324 000567 327 000614 328 000617 330 000624 332 000627 341 000640 343 000642 344 000666 345 000674 346 000675 349 000706 350 000711 351 000724 353 000727 356 000753 357 000761 358 000776 359 001001 360 001026 363 001027 364 001031 365 001032 367 001076 368 001103 369 001105 373 001112 375 001146 376 001161 378 001162 380 001163 391 001172 394 001220 396 001223 397 001236 398 001240 399 001241 402 001250 404 001253 406 001270 408 001272 410 001301 412 001320 413 001331 414 001400 417 001402 419 001411 420 001424 423 001425 425 001446 427 001465 428 001476 433 001477 435 001535 436 001562 438 001600 439 001611 440 001653 443 001655 445 001712 446 001737 448 001755 449 001766 450 002030 453 002032 456 002047 457 002057 458 002114 460 002142 461 002203 464 002222 467 002240 468 002253 471 002254 473 002263 474 002300 475 002313 476 002325 477 002337 480 002340 482 002347 483 002362 486 002363 489 002414 490 002441 492 002460 493 002471 494 002533 497 002535 499 002544 501 002563 502 002574 503 002607 506 002610 508 002620 509 002632 510 002633 511 002634 513 002637 550 002650 520 002651 526 002653 527 002657 530 002661 532 002704 533 002710 534 002724 536 002727 539 002753 540 002760 541 002775 542 003000 543 003025 546 003026 554 003027 557 003052 558 003054 559 003062 560 003065 563 003074 565 003105 567 003110 570 003126 572 003134 573 003136 574 003141 575 003144 576 003147 577 003152 581 003155 583 003171 584 003201 587 003204 591 003246 593 003247 598 003256 601 003304 602 003307 603 003313 604 003316 607 003325 608 003327 609 003335 610 003340 613 003347 615 003360 617 003363 620 003401 622 003407 623 003411 624 003414 625 003417 626 003422 627 003425 630 003430 631 003437 632 003446 634 003450 636 003457 638 003461 640 003467 642 003471 644 003477 646 003530 648 003532 654 003544 655 003620 657 003653 659 003654 661 003661 663 003663 664 003666 666 003730 669 004005 672 004035 675 004062 679 004104 680 004106 682 004107 683 004111 684 004113 685 004114 687 004115 690 004125 691 004127 692 004131 693 004143 696 004147 699 004155 701 004166 702 004177 704 004210 706 004214 711 004221 712 004224 724 004234 714 004237 715 004244 718 004252 720 004266 721 004277 724 004302 731 004416 733 004417 735 004420 741 004427 744 004450 746 004454 747 004457 748 004463 749 004466 752 004475 753 004511 755 004513 757 004515 763 004537 765 004540 766 004551 767 004555 768 004561 769 004571 770 004575 771 004601 774 004615 775 004620 776 004621 778 004626 779 004627 781 004632 783 004634 785 004636 786 004640 787 004641 789 004644 791 004645 792 004655 793 004661 794 004664 795 004670 796 004677 797 004703 799 004717 800 004720 802 004731 803 004734 805 004744 806 004761 808 004775 810 004777 811 005001 812 005004 814 005007 816 005043 823 005044 825 005047 826 005057 827 005063 829 005066 831 005072 832 005101 833 005105 835 005112 844 005152 850 005163 851 005167 854 005230 857 005264 859 005304 860 005323 861 005327 863 005346 864 005350 866 005351 868 005371 870 005373 872 005375 878 005401 881 005440 884 005475 891 005531 893 005532 896 005536 899 005545 901 005547 932 005550 935 005570 937 005573 938 005577 939 005600 942 005607 943 005613 944 005616 947 005625 949 005627 950 005633 951 005635 952 005645 954 005667 955 005671 956 005676 959 005701 960 005711 961 005720 962 005723 963 005730 965 005734 967 005736 969 005737 973 005746 976 005766 978 005777 979 006013 980 006015 982 006062 985 006063 986 006067 988 006111 992 006120 995 006141 996 006145 998 006150 999 006154 1000 006157 1002 006166 1003 006171 1004 006174 1010 006203 1013 006211 1015 006237 1016 006252 1018 006256 1019 006275 1025 006301 1026 006303 1028 006304 1029 006307 1030 006311 1031 006312 1033 006313 1037 006323 1038 006325 1039 006327 1040 006341 1044 006345 1045 006347 1046 006350 1050 006370 1053 006416 1055 006430 1057 006441 1056 006444 1057 006464 1058 006506 1053 006507 1059 006510 1061 006515 1062 006535 1063 006541 1064 006543 1065 006546 1066 006566 1067 006613 1068 006614 1070 006616 1078 006622 1079 006626 1082 006665 1084 006707 1087 006713 1088 006717 1089 006733 1091 006755 1093 006761 1094 006775 1096 007017 1098 007023 1099 007037 1101 007061 1105 007065 1106 007071 1110 007113 1111 007117 1113 007124 1114 007133 1115 007134 1118 007173 1122 007234 1123 007240 1125 007243 1131 007256 1132 007272 1133 007314 1136 007320 1137 007334 1138 007356 1141 007362 1142 007376 1143 007420 1150 007424 1151 007441 1156 007445 1157 007452 1158 007465 1161 007471 1162 007476 1163 007511 1166 007515 1167 007522 1168 007535 1174 007541 1176 007551 1177 007553 1179 007554 1195 007563 1197 007573 1226 007602 1229 007630 1230 007633 1232 007637 1235 007643 1237 007665 1240 007701 1243 007715 1248 007730 1251 007743 1254 007767 1255 007773 1257 010040 1259 010045 1265 010051 1266 010053 1268 010055 1270 010066 1272 010070 1274 010100 1276 010102 1278 010112 1280 010114 1282 010120 1287 010127 1288 010144 1291 010151 1293 010156 1295 010172 1296 010173 1298 010220 1299 010222 1300 010226 1302 010237 1303 010251 1305 010252 1307 010255 1308 010266 1309 010307 1310 010313 1311 010314 1313 010342 1314 010350 1315 010354 1317 010355 1318 010357 1320 010360 1326 010362 1327 010366 1329 010406 1331 010412 1334 010436 1335 010457 1337 010463 1338 010500 1339 010501 1341 010515 1345 010541 1346 010562 1348 010566 1355 010610 1357 010617 1359 010622 1360 010625 1362 010664 1363 010667 1365 010670 1367 010700 1372 010701 1375 010705 1417 010717 1421 010772 1423 010776 1425 011000 1430 011022 1431 011035 1433 011041 1434 011056 1435 011100 1438 011104 1439 011132 1440 011146 1443 011152 1444 011154 1445 011156 1446 011160 1447 011163 1448 011165 1449 011202 1454 011206 1456 011223 1457 011255 1459 011257 1461 011354 1463 011361 1464 011363 1465 011400 1466 011404 1468 011406 1469 011421 1470 011425 1477 011437 1478 011462 1480 011466 1481 011470 1482 011505 1483 011511 1485 011513 1486 011526 1487 011532 1492 011544 1493 011546 1494 011551 1495 011553 1496 011555 1497 011556 1499 011560 1500 011567 1501 011571 1502 011574 1503 011577 1505 011601 1510 011622 1512 011625 1513 011634 1514 011636 1515 011641 1520 011651 1525 011653 1528 011657 907 011666 912 011674 913 011722 915 011725 916 011735 917 011743 918 011747 919 011757 920 011765 921 011777 923 012001 925 012003 1185 012004 1190 012006 1191 012010 1203 012011 1208 012017 1209 012035 1210 012054 1212 012073 1213 012100 1214 012122 1217 012125 1219 012143 1381 012144 1386 012146 1387 012150 1389 012151 1397 012152 1400 012160 1404 012223 1406 012226 1409 012264 1411 012267 1534 012270 1539 012272 1541 012274 1549 012275 1552 012303 1554 012317 1556 012336 1558 012355 1560 012374 1566 012375 1573 012403 1575 012405 1576 012424 1578 012427 1580 012437 1582 012442 1589 012443 1596 012445 1597 012447 1600 012451 1602 012500 1603 012504 1604 012517 1606 012521 1609 012551 1610 012556 1611 012573 1612 012575 1613 012626 1616 012627 1628 012630 1642 012632 1643 012646 1644 012651 1645 012665 1647 012673 1648 012674 1650 012700 1652 012711 1653 012716 1654 012740 1655 012754 1656 012757 1657 013014 1658 013037 1660 013055 1661 013066 1662 013130 1663 013131 1666 013146 1667 013162 1668 013164 1669 013175 1671 013176 1672 013214 1674 013216 1675 013231 1676 013243 1679 013255 1686 013256 1699 013260 1700 013262 1701 013264 1703 013265 1705 013301 1706 013306 1707 013320 1708 013361 1710 013362 1711 013364 1712 013376 1714 013437 1716 013440 1717 013442 1718 013454 1719 013525 1721 013527 1722 013531 1723 013543 1724 013603 1726 013604 1728 013615 1729 013622 1730 013634 1731 013674 1733 013675 1734 013677 1735 013711 1736 013746 1738 013747 1739 013751 1740 013763 1741 014020 1743 014021 1746 014026 1747 014040 1748 014073 1750 014074 1751 014076 1752 014110 1753 014150 1756 014151 1757 014154 1758 014175 1760 014233 1761 014253 1762 014264 1763 014326 1764 014341 1765 014353 1766 014354 1767 014366 1770 014421 1773 014441 1779 014442 1791 014450 1792 014454 1794 014456 1795 014476 1797 014532 1801 014543 1803 014552 1804 014556 1805 014560 1809 014614 1810 014617 1812 014623 1813 014625 1814 014642 1815 014666 1819 014672 1820 014676 1821 014761 1824 014764 1826 015002 1833 015003 1839 015005 1840 015015 1842 015021 1844 015025 1845 015035 1847 015041 1849 015055 1851 015057 1854 015061 1860 015064 1868 015075 1869 015076 1871 015110 1873 015111 1874 015121 1875 015125 1876 015131 1877 015141 1878 015145 1880 015157 1882 015161 1884 015163 1886 015164 1887 015175 1888 015201 1889 015204 1890 015210 1891 015217 1892 015223 1894 015234 1895 015235 1896 015246 1897 015251 1899 015261 1900 015276 1902 015312 1904 015314 1906 015316 1907 015321 1909 015324 1911 015325 1917 015326 1920 015327 1921 015331 1922 015333 1924 015334 1933 015335 1939 015336 1941 015352 1942 015353 1944 015354 1946 015357 1948 015362 1949 015363 1950 015376 1952 015401 1953 015412 1955 015413 1957 015417 1958 015434 1959 015437 1961 015441 1963 015442 1966 015451 1967 015453 1970 015476 1971 015501 1972 015523 1973 015545 1976 015547 1978 015553 1980 015554 1986 015555 1999 015556 2002 015570 2003 015573 2004 015575 2007 015576 2010 015607 2011 015615 2014 015617 2017 015627 2018 015633 2019 015654 2020 015656 2022 015662 2023 015670 2024 015671 2025 015673 2027 015674 2028 015677 2032 015700 2033 015702 2036 015710 2038 015711 2044 015712 2049 015714 2052 015723 ----------------------------------------------------------- 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