COMPILATION LISTING OF SEGMENT e_mail_pl1_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 04/24/89 1340.5 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 9 10 /****^ HISTORY COMMENTS: 11* 1) change(88-03-22,Blair), approve(88-03-22,MCR7842), 12* audit(88-06-29,Lippard), install(88-07-26,MR12.2-1069): 13* Add a new entry to expand the savebox pathname after searching the mlsys 14* searchlist for the user supplied savebox name. 15* 2) change(89-02-09,Flegel), approve(89-03-16,MCR8076), audit(89-03-30,Lee), 16* install(89-04-24,MR12.3-1035): 17* Moved system procedure, support, and parameter declarations out of entry 18* points and into the main procedure declaration. 19* phx16782 - created entries emacs_get_address_list and 20* emacs_redistribute_message for rmail-forward support 21* 3) change(89-02-16,Flegel), approve(89-03-16,MCR8076), audit(89-03-30,Lee), 22* install(89-04-24,MR12.3-1035): 23* phx21262 - support for getting and modifying the "seen" switch on messages 24* END HISTORY COMMENTS */ 25 26 27 /* 28* * 83/07/19 Jon A. Rochlis - RMAIL pl1 interface to MR10.2 mail_system_ 29* * 83/01/06 B. Margolin - to not set deliver_options.queue_mailing_lists. 30* */ 31 32 e_mail_pl1_: 33 proc(); 34 35 /* PARAMETERS */ 36 dcl a_addr char (*) parameter; /* Addresses to parse */ 37 dcl a_addr_ptr ptr parameter; /* Address list created */ 38 dcl a_code fixed bin (35) parameter; /* Error code */ 39 dcl a_comments char (*) parameter; /* Comments to add */ 40 dcl a_recipients_ptr ptr parameter; /* Forward addresses */ 41 dcl a_acknowledge_flag bit (1) parameter; /* Ack requested */ 42 dcl a_error_ptr ptr parameter; /* Pointer to error structures */ 43 dcl a_seen_sw bit (1) parameter; /* Message seen switch */ 44 dcl a_mbx_dir char (*) parameter; 45 dcl a_mbx_entry char (*) parameter; 46 dcl a_mailbox_ptr ptr parameter; 47 dcl a_salvaged bit(1) aligned parameter; 48 dcl a_msgcount fixed bin parameter; 49 dcl a_message_ptr ptr parameter; 50 dcl a_buffer_ptr ptr parameter; 51 dcl a_envelope_format char(*) parameter; 52 dcl a_header_format char(*) parameter; 53 dcl a_redistributions_list_format char(*) parameter; 54 dcl a_body_length fixed bin(21) parameter; 55 dcl a_line_length fixed bin parameter; 56 dcl a_message_number fixed bin parameter; 57 dcl a_subject char(*) parameter; 58 dcl a_original_message_ptr ptr parameter; 59 dcl a_new_message_ptr ptr parameter; 60 dcl a_include_authors bit(1) parameter; 61 dcl a_include_recipients bit(1) parameter; 62 dcl a_include_self bit(1) parameter; 63 dcl a_message_text char(*) parameter; 64 dcl a_parse_error_list_ptr ptr parameter; 65 dcl a_request_ack bit(1) parameter; 66 dcl a_pathname char (*) parameter; 67 dcl a_dirname char (168) parameter; 68 dcl a_entryname char (32) parameter; 69 70 /* SYSTEM CALLS */ 71 dcl mail_system_$redistribute_message entry (ptr, char (*), ptr, ptr, 72 fixed bin (35)); 73 dcl mail_system_$open_mailbox entry (char (*), char(*), ptr, char(8), ptr, 74 fixed bin(35)); 75 dcl mail_system_$acknowledge_message entry (ptr, fixed bin (35)); 76 dcl mail_system_$read_message entry (ptr, fixed bin, fixed bin(35)); 77 dcl mail_system_$close_mailbox entry (ptr, ptr, fixed bin(35)); 78 dcl mail_system_$free_address_list entry (ptr, fixed bin (35)); 79 dcl mail_system_$create_message entry (char (8), ptr, fixed bin(35)); 80 dcl mail_system_$create_address_list entry (char (8), ptr, fixed bin(35)); 81 dcl mail_system_$add_address entry (ptr, ptr, char(8), fixed bin(35)); 82 dcl mail_system_$replace_subject entry (ptr, char (*), fixed bin(35)); 83 dcl mail_system_$replace_from entry (ptr, ptr, fixed bin(35)); 84 dcl mail_system_$deliver_message entry (ptr, ptr, ptr, fixed bin(35)); 85 dcl mail_system_$free_message entry (ptr, fixed bin(35)); 86 dcl mlsys_utils_$format_message entry (ptr, ptr, ptr, fixed bin (21), 87 fixed bin (21), fixed bin (35)); 88 dcl mlsys_utils_$parse_address_list_text entry (char (*), ptr, char (8), ptr, 89 ptr, fixed bin (35)); 90 dcl mlsys_utils_$create_reply_message entry (ptr, ptr, ptr, fixed bin(35)); 91 dcl mlsys_utils_$format_message_header entry (ptr, fixed bin, fixed bin, ptr, 92 fixed bin(21), fixed bin(21), fixed bin(35)); 93 dcl mlsys_utils_$parse_message_text entry (char (*), ptr, char (8), ptr, ptr, 94 fixed bin(35)); 95 dcl mlsys_utils_$free_delivery_results entry (ptr, fixed bin(35)); 96 dcl mlsys_utils_$print_delivery_results entry (ptr, bit(1) aligned, ptr, 97 fixed bin(35)); 98 dcl user_info_$login_data entry (char(*), char(*), char(*), fixed bin, 99 fixed bin, fixed bin, fixed bin(71), char(*)); 100 dcl get_system_free_area_ entry() returns(ptr); 101 dcl com_err_$suppress_name entry options (variable); 102 dcl ssu_$standalone_invocation entry (ptr, char(*), char(*), ptr, entry, 103 fixed bin(35)); 104 dcl ssu_$destroy_invocation entry (ptr); 105 dcl expand_pathname_$add_suffix entry (char(*), char(*), char(*), char(*), 106 fixed bin(35)); 107 dcl suffixed_name_$make entry (char(*), char(*), char(32), fixed bin(35)); 108 dcl search_paths_$find_dir entry (char(*), ptr, char(*), char(*), char(*), 109 fixed bin(35)); 110 111 /* SYSTEM CALL SUPPORT */ 112 dcl error_table_$noentry fixed bin(35) ext static; 113 dcl mlsys_et_$cant_parse_irt_field fixed bin(35) ext static; 114 dcl sys_info$max_seg_size fixed bin(35) ext static; 115 dcl mlsys_data_$user_default_mailbox_address ptr ext static; 116 dcl mlsys_data_$user_mail_table_address ptr ext static; 117 118 /* EXTERNAL CALLS */ 119 dcl e_mail_pl1_$get_user_default_address entry returns(ptr); 120 121 /* BUILTINS */ 122 dcl (addr, index, length, null, reverse, rtrim, translate, 123 substr, unspec, search) builtin; 124 125 /* CONDITIONS */ 126 dcl clean_up condition; 127 128 return; 129 130 /* Open a mailbox for later reading. Pass back a pointer to the mailbox 131* structure to be used during later reads */ 132 133 emacs_mailbox_open: 134 entry(a_mbx_dir, a_mbx_entry, a_mailbox_ptr, a_salvaged, a_msgcount, a_code); 135 136 dcl 1 auto_open_options aligned like open_options; 137 138 a_code = 0; 139 140 unspec (auto_open_options) = ""b; 141 142 auto_open_options.version = OPEN_OPTIONS_VERSION_2; 143 auto_open_options.message_selection_mode = ORDINARY_MESSAGES; 144 auto_open_options.sender_selection_mode = ACCESSIBLE_MESSAGES; 145 auto_open_options.message_reading_level = READ_KEYS; 146 147 call mail_system_$open_mailbox (a_mbx_dir, a_mbx_entry, addr(auto_open_options), MAILBOX_VERSION_2, a_mailbox_ptr, a_code); 148 if a_code ^= 0 then return; 149 150 a_salvaged = a_mailbox_ptr -> mailbox.flags.salvaged; 151 a_msgcount = a_mailbox_ptr -> mailbox.n_messages; 152 153 return; 154 155 /* end emacs_open_mailbox; */ 156 157 /* Read one message. We are given a pointer to a mail system message, and 158* we use the mail system to format it. RMAIL will expect to find the 159* formatted message in a black magic string pointed to by a_buffer_ptr */ 160 161 emacs_read_message: 162 entry (a_message_ptr, a_buffer_ptr, a_line_length, a_acknowledge_flag, 163 a_envelope_format, a_header_format, a_redistributions_list_format, 164 a_body_length, a_seen_sw, a_code); 165 166 dcl buffer_position fixed bin(21); 167 168 dcl 1 auto_format_options aligned like format_message_options; 169 dcl chrsused fixed bin(35) based; /* ugh, ugh ... shades of Scribe */ 170 171 172 a_code = 0; 173 174 unspec (auto_format_options) = ""b; 175 176 auto_format_options.version = FORMAT_MESSAGE_OPTIONS_VERSION_1; 177 auto_format_options.line_length = a_line_length; 178 auto_format_options.include_body = "1"b; 179 180 call parse_formatting_mode (a_envelope_format, auto_format_options.envelope_formatting_mode, a_code); 181 if a_code ^= 0 then do; a_code = -1; return; end; 182 183 call parse_formatting_mode (a_header_format, auto_format_options.header_formatting_mode, a_code); 184 if a_code ^= 0 then do; a_code = -2; return; end; 185 186 call parse_formatting_mode (a_redistributions_list_format, auto_format_options.redistributions_list_formatting_mode, a_code); 187 if a_code ^= 0 then do; a_code = -3; return; end; 188 189 buffer_position = 4; /* 4 chars = 1 word, leaves room for the bmstr length */ 190 191 call mlsys_utils_$format_message (a_message_ptr, addr (auto_format_options), a_buffer_ptr, (sys_info$max_seg_size-1)*4, buffer_position, a_code); 192 if a_code ^= 0 then return; 193 194 a_buffer_ptr -> chrsused = buffer_position - 4; 195 196 a_body_length = a_message_ptr -> message.body.total_lines; 197 198 if a_message_ptr -> message.flags.must_be_acknowledged & a_acknowledge_flag 199 then call mail_system_$acknowledge_message (a_message_ptr, a_code); 200 201 a_seen_sw = a_message_ptr -> message.flags.seen; 202 203 return; 204 205 parse_formatting_mode: 206 proc (a_formatting_mode, a_mlsys_formatting_mode, a_code); 207 208 dcl a_formatting_mode char(*) parameter; 209 dcl a_mlsys_formatting_mode fixed bin parameter; 210 dcl a_code fixed bin (35) parameter; 211 212 a_code = 0; 213 214 a_formatting_mode = translate (a_formatting_mode, "_", "-"); /* allow either underscrose or dashes */ 215 216 if a_formatting_mode = "none_formatting_mode" 217 then a_mlsys_formatting_mode = NONE_FORMATTING_MODE; 218 else if a_formatting_mode = "brief_formatting_mode" 219 then a_mlsys_formatting_mode = BRIEF_FORMATTING_MODE; 220 else if a_formatting_mode = "default_formatting_mode" 221 then a_mlsys_formatting_mode = DEFAULT_FORMATTING_MODE; 222 else if a_formatting_mode = "long_formatting_mode" 223 then a_mlsys_formatting_mode = LONG_FORMATTING_MODE; 224 else a_code = -1; /* this will be special cased by RMAIL */ 225 226 end parse_formatting_mode; 227 228 /* end emacs_read_message; */ 229 230 /* Given a pointer to a mailbox, and a message number, return a pointer 231* to that message (reading it if need be). */ 232 233 emacs_get_message_ptr: 234 entry (a_mailbox_ptr, a_message_number, a_message_ptr, a_code); 235 236 a_code = 0; 237 238 a_message_ptr = a_mailbox_ptr -> mailbox.messages(a_message_number).message_ptr; 239 240 if a_message_ptr = null then do; 241 call mail_system_$read_message (a_mailbox_ptr, a_message_number, a_code); 242 if a_code ^= 0 then return; 243 a_message_ptr = a_mailbox_ptr -> mailbox.messages(a_message_number).message_ptr; 244 end; 245 246 return; 247 248 /* Close a mailbox */ 249 250 emacs_mailbox_close: 251 entry (a_mailbox_ptr, a_code); 252 253 dcl 1 auto_close_options aligned like close_options; 254 255 a_code = 0; 256 257 unspec (auto_close_options) = ""b; 258 259 auto_close_options.version = CLOSE_OPTIONS_VERSION_2; 260 auto_close_options.flags.perform_deletions = "1"b; 261 auto_close_options.flags.report_deletion_errors = "0"b; /* I'm not about to set up a sub_err_ handler */ 262 263 call mail_system_$close_mailbox (a_mailbox_ptr, addr (auto_close_options), a_code); 264 265 return; 266 267 /* end emacs_mailbox_close; */ 268 269 get_user_default_address: 270 entry returns(ptr); 271 272 dcl anonymous fixed bin; 273 274 call user_info_$login_data ("", "", "", anonymous, (0), (0), (0), ""); 275 276 if anonymous = 1 277 then return (mlsys_data_$user_default_mailbox_address); 278 else return (mlsys_data_$user_mail_table_address); 279 280 /* end get_user_default_address; */ 281 282 get_user_default_mbx_address: 283 entry returns (ptr); 284 285 return (mlsys_data_$user_default_mailbox_address); 286 287 /* end get_user_default_mbx_address; */ 288 289 /* Create an address list from a character string representation of a list of 290* addresses. */ 291 292 emacs_get_address_list: 293 entry (a_addr, a_addr_ptr, a_error_ptr, a_code); 294 295 dcl 01 pt_ops like parse_text_options aligned; 296 297 /* Prepare for cleanup condition */ 298 299 a_code = 0; 300 a_addr_ptr = null; 301 a_error_ptr = null; 302 on clean_up begin; 303 if a_addr_ptr ^= null then 304 call mail_system_$free_address_list (a_addr_ptr, (0)); 305 if a_error_ptr ^= null then 306 call free_parse_text_error_list (a_error_ptr); 307 end; 308 309 /* Parse the forwarding destination addresses */ 310 311 pt_ops.version = PARSE_TEXT_OPTIONS_VERSION_1; 312 pt_ops.area_ptr = get_system_free_area_ (); 313 pt_ops.list_errors = "1"b; 314 pt_ops.validate_addresses = "1"b; 315 pt_ops.include_invalid_addresses = "0"b; 316 pt_ops.mbz = ""b; 317 318 call mlsys_utils_$parse_address_list_text ((a_addr), addr (pt_ops), 319 ADDRESS_LIST_VERSION_2, a_addr_ptr, a_error_ptr, a_code); 320 if a_code ^= 0 then do; 321 if a_addr_ptr ^= null then do; 322 call mail_system_$free_address_list (a_addr_ptr, (0)); 323 a_addr_ptr = null; 324 end; 325 return; 326 end; 327 328 return; 329 330 /* end emacs_get_address_list */ 331 332 emacs_create_message: 333 entry (a_subject, a_message_ptr, a_code); 334 335 dcl from_list ptr; 336 337 338 a_code = 0; 339 340 call mail_system_$create_message (MESSAGE_VERSION_2, a_message_ptr, a_code); 341 if a_code ^= 0 then return; 342 343 call mail_system_$replace_subject (a_message_ptr, a_subject, a_code); 344 if a_code ^= 0 then return; 345 346 /* Do the from field hacking to insure that we see the from field in the 347* buffer. mail_system_ would wait until delivery time to fill it in. */ 348 349 call mail_system_$create_address_list (ADDRESS_LIST_VERSION_2, from_list, a_code); 350 if a_code ^= 0 then return; 351 352 call mail_system_$add_address (from_list, e_mail_pl1_$get_user_default_address(), ADDRESS_LIST_VERSION_2, a_code); 353 if a_code ^= 0 then return; 354 355 call mail_system_$replace_from (a_message_ptr, from_list, a_code); 356 return; 357 358 /* end emacs_create_message; */ 359 360 emacs_create_reply_message: 361 entry (a_original_message_ptr, a_include_authors, a_include_recipients, a_include_self, a_new_message_ptr, a_code); 362 363 364 dcl 1 auto_reply_options aligned like reply_options; 365 366 a_code = 0; 367 368 unspec (auto_reply_options) = ""b; 369 370 auto_reply_options.version = REPLY_OPTIONS_VERSION_2; 371 auto_reply_options.to = null; /* no extra recipients */ 372 auto_reply_options.cc = null; 373 auto_reply_options.bcc = null; 374 auto_reply_options.flags.include_authors = a_include_authors; 375 auto_reply_options.flags.include_recipients = a_include_recipients; 376 auto_reply_options.flags.include_self = a_include_self; 377 378 call mlsys_utils_$create_reply_message (a_original_message_ptr, addr (auto_reply_options), a_new_message_ptr, a_code); 379 380 /* See create_message for the explanation of why we do this */ 381 382 call mail_system_$create_address_list (ADDRESS_LIST_VERSION_2, from_list, a_code); 383 if a_code ^= 0 then return; 384 385 call mail_system_$add_address (from_list, e_mail_pl1_$get_user_default_address(), ADDRESS_LIST_VERSION_2, a_code); 386 if a_code ^= 0 then return; 387 388 call mail_system_$replace_from (a_new_message_ptr, from_list, a_code); 389 390 return; 391 392 /* end emacs_create_reply_message; */ 393 394 emacs_format_header: 395 entry (a_message_ptr, a_line_length, a_buffer_ptr, a_code); 396 397 398 a_code = 0; 399 400 buffer_position = 4; /* see emacs_read_message for black magic string hacking */ 401 402 call mlsys_utils_$format_message_header (a_message_ptr, DEFAULT_FORMATTING_MODE, a_line_length, a_buffer_ptr, (sys_info$max_seg_size-1)*4, buffer_position, a_code); 403 if a_code ^= 0 then return; 404 405 a_buffer_ptr -> chrsused = buffer_position - 4; 406 407 return; 408 409 /* end emacs_format_header; */ 410 411 emacs_parse_message_text: 412 entry (a_message_text, a_message_ptr, a_parse_error_list_ptr, a_code); 413 414 dcl 1 auto_parse_options aligned like parse_text_options; 415 416 a_code = 0; 417 418 unspec(auto_parse_options) = ""b; 419 420 auto_parse_options.version = PARSE_TEXT_OPTIONS_VERSION_1; 421 auto_parse_options.area_ptr = null; /* system_free_area_ is fine */ 422 auto_parse_options.flags.list_errors = "1"b; 423 auto_parse_options.flags.validate_addresses = "1"b; /* ???? */ 424 auto_parse_options.flags.include_invalid_addresses = "1"b; /* ???? */ 425 426 call mlsys_utils_$parse_message_text (a_message_text, addr (auto_parse_options), MESSAGE_VERSION_2, a_message_ptr, a_parse_error_list_ptr, a_code); 427 428 /* If the only error was not being able to parse the In-Reply-To: field, 429* we pretend everything was okay, since RMAIL will add the reply reference 430* itself and considers parse errors to be fatal. */ 431 432 if a_parse_error_list_ptr = null then return; 433 434 if a_parse_error_list_ptr -> parse_text_error_list.n_errors = 1 435 then do; 436 if a_parse_error_list_ptr -> parse_text_error_list.errors(1).code = mlsys_et_$cant_parse_irt_field 437 then a_code = 0; 438 end; 439 440 return; 441 442 /* end emacs_parse_message_text; */ 443 444 /* display the parse error list (from above) via com_err_ */ 445 446 display_parse_errors: 447 entry (a_parse_error_list_ptr, a_message_text); 448 449 dcl 1 ptel aligned like parse_text_error_list based (a_parse_error_list_ptr); 450 451 dcl i fixed bin; 452 453 begin; 454 dcl code fixed bin(35), 455 (start, length) fixed bin(21); 456 457 do i = 1 to ptel.n_errors; 458 code = ptel.errors(i).code; 459 start = ptel.errors(i).text_start; 460 length = ptel.errors(i).text_lth; 461 if code ^= mlsys_et_$cant_parse_irt_field then 462 call com_err_$suppress_name (code, "emacs (rmail)", substr (a_message_text, start, length)); 463 end; /* do */ 464 end; /* begin */ 465 466 return; 467 468 /* end display_parse_errors; */ 469 470 free_parse_text_error_list: 471 entry (a_parse_error_list_ptr); 472 473 dcl free_area area based; 474 475 free ptel in (get_system_free_area_() -> free_area); 476 477 return; 478 479 /* end display_parse_errors; */ 480 481 482 /* Deliver a message and print the delivery results on user_i/o (RMAIL has 483* set up a file output) */ 484 485 emacs_deliver_message: 486 entry (a_message_ptr, a_request_ack, a_code); 487 488 dcl sci_ptr ptr; 489 dcl delivery_code fixed bin (35); 490 491 dcl 1 auto_deliver_options aligned like deliver_options; 492 493 delivery_code = 0; 494 495 sci_ptr, recipients_info_ptr = null; /* for cleanup handler */ 496 497 unspec (auto_deliver_options) = ""b; 498 499 recipients_info_n_lists = 3; 500 501 on clean_up call free_structures("1"b); 502 503 allocate recipients_info set (recipients_info_ptr); 504 505 recipients_info.header.version = RECIPIENTS_INFO_VERSION_2; 506 recipients_info.header.area_ptr = get_system_free_area_ (); 507 recipients_info.header.expanded_recipients_result_list_ptr = null; 508 recipients_info.lists.recipients_result_list_ptr = null; 509 recipients_info.lists.address_list_ptr(1) = a_message_ptr -> message.header.to; 510 recipients_info.lists.address_list_ptr(2) = a_message_ptr -> message.header.cc; 511 recipients_info.lists.address_list_ptr(3) = a_message_ptr -> message.header.bcc; 512 513 auto_deliver_options.version = DELIVER_OPTIONS_VERSION_2; 514 auto_deliver_options.delivery_mode = ORDINARY_DELIVERY; 515 auto_deliver_options.queueing_mode = ALWAYS_QUEUE_FOREIGN; 516 auto_deliver_options.queued_notification_mode = NOTIFY_ON_ERROR; 517 auto_deliver_options.flags.abort = "1"b; 518 auto_deliver_options.flags.send_if_empty = "1"b; /* ???? */ 519 auto_deliver_options.flags.recipient_notification = "1"b; 520 auto_deliver_options.flags.acknowledge = a_request_ack; 521 auto_deliver_options.flags.queue_mailing_lists = "0"b; /* ???? */ 522 523 call mail_system_$deliver_message (a_message_ptr, recipients_info_ptr, addr (auto_deliver_options), delivery_code); 524 525 if delivery_code ^= 0 then 526 call com_err_$suppress_name (delivery_code, "", ""); /* print_delivery_results will yield more info */ 527 528 /* Now it's time to print the results */ 529 530 call ssu_$standalone_invocation (sci_ptr, "", "", null, ssu_abort_deliver, a_code); 531 if a_code ^= 0 then do; 532 call com_err_$suppress_name (a_code, "", "While creating an ssu_ stand alone invocation."); 533 call free_structures("1"b); 534 return; 535 end; 536 537 call mlsys_utils_$print_delivery_results (sci_ptr, "0"b /* print all results */, recipients_info_ptr, a_code); 538 if a_code ^= 0 then do; 539 call com_err_$suppress_name (a_code, "", "While printing delivery results."); 540 end; 541 542 a_code = delivery_code; /* at this point a_code must be 0, but we want to make sure RMAIL knows something happened if deliver message got an error */ 543 544 ERROR_DELIVER_RETURN: 545 call free_structures ("1"b); 546 547 return; 548 549 ssu_abort_deliver: /* ssu wants a proc which really aborts */ 550 proc; 551 552 goto ERROR_DELIVER_RETURN; 553 554 end ssu_abort_deliver; 555 556 ssu_abort_redistribute: 557 proc; 558 559 goto ERROR_REDIST_RETURN; 560 561 end ssu_abort_redistribute; 562 563 free_structures: 564 proc (a_message_flag); 565 566 dcl a_message_flag bit (1) parameter; /* If a message is to be cleaned */ 567 568 if a_message_flag then 569 call mail_system_$free_message (a_message_ptr, (0)); 570 571 if recipients_info_ptr ^= null then do; 572 call mlsys_utils_$free_delivery_results (recipients_info_ptr, (0)); /* only frees expanded lists in the structure */ 573 free recipients_info; 574 end; 575 576 if sci_ptr ^= null then 577 call ssu_$destroy_invocation (sci_ptr); 578 579 return; 580 581 end free_structures; 582 583 /* end emacs_deliver_message; */ 584 585 /* Redistribute the message, with the comments provided and the appropriate 586* acknowledgement to the provided list of address(es). */ 587 588 emacs_redistribute_message: 589 entry (a_message_ptr, a_comments, a_recipients_ptr, a_acknowledge_flag, 590 a_code); 591 592 dcl 01 dv_ops like deliver_options aligned; 593 dcl system_free_area_ptr ptr; 594 dcl system_free_area area based (system_free_area_ptr); 595 dcl redist_code fixed bin (35); 596 597 598 /* Prepare for cleanup condition */ 599 600 system_free_area_ptr = get_system_free_area_ (); 601 recipients_info_ptr = null; 602 sci_ptr = null; 603 on clean_up call free_structures ("0"b); 604 605 /* Set up the recipients info structure (those to forward to) */ 606 607 recipients_info_n_lists = 1; 608 allocate recipients_info set (recipients_info_ptr) in (system_free_area); 609 610 recipients_info.header.version = RECIPIENTS_INFO_VERSION_2; 611 recipients_info.header.area_ptr = system_free_area_ptr; 612 recipients_info.header.expanded_recipients_result_list_ptr = null; 613 recipients_info.n_recipients = 0; 614 recipients_info.n_unique_recipients = 0; 615 recipients_info.n_failed_recipients = 0; 616 recipients_info.n_lists = 1; 617 recipients_info.lists(1).address_list_ptr = a_recipients_ptr; 618 recipients_info.lists(1).recipients_result_list_ptr = null; 619 620 dv_ops.version = DELIVER_OPTIONS_VERSION_2; 621 dv_ops.delivery_mode = ORDINARY_DELIVERY; 622 dv_ops.queueing_mode = ALWAYS_QUEUE_FOREIGN; 623 dv_ops.queued_notification_mode = NOTIFY_ON_ERROR; 624 dv_ops.abort = "1"b; 625 dv_ops.flags.send_if_empty = "1"b; 626 dv_ops.flags.recipient_notification = "1"b; 627 dv_ops.flags.acknowledge = a_acknowledge_flag; 628 dv_ops.flags.queue_mailing_lists = "0"b; 629 dv_ops.flags.mbz = ""b; 630 631 call mail_system_$redistribute_message (a_message_ptr, a_comments, 632 recipients_info_ptr, addr (dv_ops), redist_code); 633 634 if redist_code ^= 0 then 635 call com_err_$suppress_name (redist_code, "", ""); /* print_delivery_results will yield more info */ 636 637 /* Now it's time to print the results */ 638 639 call ssu_$standalone_invocation (sci_ptr, "", "", null, ssu_abort_redistribute, a_code); 640 if a_code ^= 0 then do; 641 call com_err_$suppress_name (a_code, "", "While creating an ssu_ stand alone invocation."); 642 call free_structures("0"b); 643 return; 644 end; 645 646 call mlsys_utils_$print_delivery_results (sci_ptr, "0"b /* print all results */, recipients_info_ptr, a_code); 647 if a_code ^= 0 then do; 648 call com_err_$suppress_name (a_code, "", "While printing delivery results."); 649 end; 650 651 a_code = redist_code; /* at this point a_code must be 0, but we want to make sure RMAIL knows something happened if deliver message got an error */ 652 653 ERROR_REDIST_RETURN: 654 call free_structures ("0"b); 655 656 return; 657 658 /* end emacs_redistribute_message */ 659 660 /* Expand the name of the savebox the user types in. If there are no "<>" 661* characters in the pathname, then look in the "mlsys" searchlist for the 662* entryname. */ 663 664 emacs_expand_svbx_pathname: 665 entry (a_pathname, a_dirname, a_entryname, a_code); 666 667 dcl pathname char (168); 668 dcl dirname char (168); 669 dcl entryname char (32); 670 dcl code fixed bin (35); 671 672 a_code, code = 0; 673 pathname = a_pathname; 674 entryname, dirname = ""; 675 676 /* strip off the .sv if necessary */ 677 if index (reverse (rtrim(pathname)), reverse (".sv")) = 1 then 678 pathname = substr (pathname, 1, length(rtrim(pathname)) - length(".sv")); 679 680 if search (pathname, "<>") = 0 then do; 681 call suffixed_name_$make (rtrim(pathname), "sv.mbx", entryname, code); 682 if code ^= 0 then do; 683 call com_err_$suppress_name (code, "", "Expanding savebox pathname."); 684 goto EXIT_SVBX_PATHNAME; 685 end; 686 call search_paths_$find_dir ("mlsys", null, rtrim(entryname), "", dirname, code); 687 if code ^= 0 then 688 if code = error_table_$noentry then do; 689 call expand_pathname_$add_suffix (pathname, "sv.mbx", dirname, entryname, code); 690 if code ^= 0 then do; 691 call com_err_$suppress_name (code, "", "Expanding savebox pathname."); 692 goto EXIT_SVBX_PATHNAME; 693 end; 694 end; 695 else call com_err_$suppress_name (code, "", "Searching ""mlsys"" searchlist."); 696 else; 697 end; 698 else do; 699 call expand_pathname_$add_suffix (pathname, "sv.mbx", dirname, entryname, code); 700 if code ^= 0 then call com_err_$suppress_name (code, "", "Expanding savebox pathname."); 701 end; 702 703 EXIT_SVBX_PATHNAME: 704 a_dirname = dirname; 705 a_entryname = entryname; 706 a_code = code; 707 return; 708 /* end emacs_expand_svbx_pathname; */ 709 1 1 /* BEGIN INCLUDE FILE ... mlsys_open_options.incl.pl1 */ 1 2 /* Created: June 1983 by G. Palter */ 1 3 1 4 /* Options for the mail_system_$open_mailbox entrypoint */ 1 5 1 6 dcl 1 open_options aligned based (open_options_ptr), 1 7 2 version character (8), 1 8 2 message_selection_mode fixed binary, /* what types are to be read (all/ordinary/interactive) */ 1 9 2 sender_selection_mode fixed binary, /* selects messages by who sent them */ 1 10 2 message_reading_level fixed binary; /* specifies whether all or only part of a message is read */ 1 11 1 12 dcl OPEN_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsopn02"); 1 13 1 14 dcl open_options_ptr pointer; 1 15 1 16 1 17 dcl ALL_MESSAGES fixed binary static options (constant) initial (0); 1 18 /* read all messages in the mailbox ... 1 19* ... used as both a message and sender selection mode */ 1 20 1 21 /* Defined message selection modes */ 1 22 1 23 dcl (ORDINARY_MESSAGES initial (1), /* read only ordinary messages */ 1 24 INTERACTIVE_MESSAGES initial (2)) /* read only interactive messages */ 1 25 fixed binary static options (constant); 1 26 1 27 1 28 /* Defined sender selection modes */ 1 29 1 30 dcl (ACCESSIBLE_MESSAGES initial (-1), /* reads whatever messages are accessible */ 1 31 OWN_MESSAGES initial (1), /* reads only those messages sent by this user */ 1 32 NOT_OWN_MESSAGES initial (2)) /* reads only those messages not sent by this user */ 1 33 fixed binary static options (constant); 1 34 1 35 1 36 /* Defined message reading levels */ 1 37 1 38 dcl (READ_KEYS initial (1), /* reads only the unique key of each message */ 1 39 READ_MESSAGES initial (2)) /* reads the entire content of each message */ 1 40 fixed binary static options (constant); 1 41 1 42 /* END INCLUDE FILE ... mlsys_open_options.incl.pl1 */ 710 2 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 2 2 /* Created: April 1983 by G. Palter */ 2 3 2 4 /* Definition of a mailbox as used by the Multics Mail System */ 2 5 2 6 dcl 1 mailbox aligned based (mailbox_ptr), 2 7 2 version character (8) unaligned, 2 8 2 reserved bit (144), /* for exclusive use of the mail system */ 2 9 2 mailbox_address pointer, /* mail system address of this mailbox */ 2 10 2 mailbox_dirname character (168) unaligned, /* directory containing this mailbox */ 2 11 2 mailbox_ename character (32) unaligned, /* entry name of this mailbox (includes ".mbx") */ 2 12 2 mailbox_type fixed binary, /* type of mailbox (see below) */ 2 13 2 mode bit (36), /* user's effective extended access to this mailbox */ 2 14 2 flags, 2 15 3 salvaged bit (1) unaligned, /* ON => this mailbox has been salvaged since last open */ 2 16 3 reserved bit (35) unaligned, /* for exclusive use of the mail system */ 2 17 2 message_selection_mode fixed binary, /* types of messages read: all/ordinary/interactive */ 2 18 2 sender_selection_mode fixed binary, /* whose messages were read: all/own/not-own */ 2 19 2 message_reading_level fixed binary, /* how much of each message read: keys/messages */ 2 20 2 n_messages fixed binary, /* total # of messages in this mailbox structure */ 2 21 2 n_ordinary_messages fixed binary, /* ... # of ordinary messages here */ 2 22 2 n_interactive_messages fixed binary, /* ... # of interactive messages here */ 2 23 2 n_deleted_messages fixed binary, /* ... # of messages here marked for later deletion */ 2 24 2 messages (mailbox_n_messages refer (mailbox.n_messages)), 2 25 3 key bit (72), /* unique key to read this message if not already read */ 2 26 3 message_ptr pointer; /* -> the message structure */ 2 27 2 28 dcl MAILBOX_VERSION_2 character (8) static options (constant) initial ("mlsmbx02"); 2 29 2 30 dcl mailbox_ptr pointer; 2 31 2 32 dcl mailbox_n_messages fixed binary; /* for exclusive use of the mail system */ 2 33 2 34 2 35 /* Types of mailboxes distinguished by the mail system */ 2 36 2 37 dcl (USER_DEFAULT_MAILBOX initial (1), /* the user's default mailbox for receiving mail */ 2 38 USER_LOGBOX initial (2), /* the user's logbox */ 2 39 SAVEBOX initial (3), /* a savebox */ 2 40 OTHER_MAILBOX initial (4)) /* any other type of mailbox */ 2 41 fixed binary static options (constant); 2 42 2 43 /* END INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 711 3 1 /* BEGIN INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 3 2 /* Created: June 1983 by G. Palter */ 3 3 3 4 /* Options for the mlsys_utils_$format_message and mlsys_utils_$print_message entrypoints */ 3 5 3 6 dcl 1 format_message_options aligned based (format_message_options_ptr), 3 7 2 version character (8) unaligned, 3 8 2 line_length fixed binary, /* line length to be used to format/print the message */ 3 9 2 envelope_formatting_mode fixed binary, /* level of detail to be displayed for the envelope ... */ 3 10 2 header_formatting_mode fixed binary, /* ... for the message ... */ 3 11 2 redistributions_list_formatting_mode fixed binary, /* ... and for the redistributions list ... */ 3 12 2 include_body bit (1) aligned; /* ON => include message body when formatting/printing; 3 13* OFF => exclude the message body */ 3 14 3 15 dcl FORMAT_MESSAGE_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsfmo01"); 3 16 3 17 dcl format_message_options_ptr pointer; 3 18 3 19 3 20 /* Defined formatting modes */ 3 21 3 22 dcl (NONE_FORMATTING_MODE initial (0), /* exclude this part of the message */ 3 23 BRIEF_FORMATTING_MODE initial (1), /* include only minimal information from this part of the 3 24* message; not valid for the envelope */ 3 25 DEFAULT_FORMATTING_MODE initial (2), /* include default amount of information from this part */ 3 26 LONG_FORMATTING_MODE initial (3)) /* include all information from this part of the message */ 3 27 fixed binary static options (constant); 3 28 3 29 /* END INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 712 4 1 /* BEGIN INCLUDE FILE ... mlsys_close_options.incl.pl1 */ 4 2 /* Created: June 1983 by G. Palter */ 4 3 4 4 /* Options for the mail_system_$close_mailbox entrypoint */ 4 5 4 6 dcl 1 close_options aligned based (close_options_ptr), 4 7 2 version character (8) unaligned, 4 8 2 flags, 4 9 3 perform_deletions bit (1) unaligned, /* ON => perform deletions requested earlier */ 4 10 3 report_deletion_errors bit (1) unaligned, /* ON => report problems deleting via sub_err_ */ 4 11 3 mbz bit (34) unaligned; /* must be set to ""b by the caller */ 4 12 4 13 dcl CLOSE_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsclo02"); 4 14 4 15 dcl close_options_ptr pointer; 4 16 4 17 /* END INCLUDE FILE ... mlsys_close_options.incl.pl1 */ 713 5 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 5 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 5 7* Added seen switch to message. 5 8* END HISTORY COMMENTS */ 5 9 5 10 5 11 /* Created: June 1983 by G. Palter */ 5 12 5 13 /* Definition of a message as used by the Multics Mail System */ 5 14 5 15 dcl 1 message aligned based (message_ptr), 5 16 2 version character (8) unaligned, 5 17 2 reserved bit (144), /* for exclusive use of the mail system */ 5 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 5 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 5 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 5 21 2 n_body_sections fixed binary, /* # of sections in the body */ 5 22 2 flags, 5 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 5 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 5 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 5 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 5 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 5 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 5 29 2 pad bit (36), 5 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 5 31 2 header, 5 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 5 33 3 access_class bit (72), /* AIM access class of this message */ 5 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 5 35 3 from pointer, /* -> address list of author(s) of the message */ 5 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 5 37 3 to pointer, /* -> address list of primary recipients */ 5 38 3 cc pointer, /* -> address list of secondary recipients */ 5 39 3 bcc pointer, /* -> address list of blind recipients */ 5 40 3 subject like message_text_field, /* subject of the message */ 5 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 5 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 5 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 5 44 2 body, 5 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 5 46 3 pad bit (36), 5 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 5 48 5 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 5 50 5 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 5 52 5 53 dcl message_ptr pointer; 5 54 5 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 5 56 message_references_list_n_references) 5 57 fixed binary; /* for exclusive use of the mail system */ 5 58 5 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 5 60 5 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 5 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 5 63 2 sender pointer, /* -> address of entity that mailed the message */ 5 64 2 trace pointer, /* -> message_trace describing how it got here */ 5 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 5 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 5 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 5 68 5 69 dcl message_envelope_ptr pointer; 5 70 5 71 5 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 5 73 5 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 5 75 2 pad pointer, /* forces even word alignment */ 5 76 2 version character (8) unaligned, 5 77 2 envelope like message_envelope; 5 78 5 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 5 80 5 81 dcl message_envelope_parameter_ptr pointer; 5 82 5 83 5 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 5 85* networks to reach this recipient */ 5 86 5 87 dcl 1 message_trace aligned based (message_trace_ptr), 5 88 2 version character (8) unaligned, 5 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 5 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 5 91 2 pad bit (36), 5 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 5 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 5 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 5 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 5 96 3 receiving_host character (256) varying, /* ... the host which received it */ 5 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 5 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 5 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 5 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 5 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 5 102 5 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 5 104 5 105 dcl message_trace_ptr pointer; 5 106 5 107 /* Definition of a message's redistributions list */ 5 108 5 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 5 110 2 version character (8) unaligned, 5 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 5 112 2 pad bit (36), 5 113 2 n_redistributions fixed binary, /* # of redistributions */ 5 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 5 115 like message_redistribution; /* the redistributions: oldest first */ 5 116 5 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 5 118 5 119 5 120 /* Definition of a single redistribution (forwarding) of a message */ 5 121 5 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 5 123 2 envelope like message_envelope, 5 124 2 header, 5 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 5 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 5 127 3 from pointer, /* -> address list of authors of this redistribution */ 5 128 3 to pointer, /* -> address list of recipients of the redistribution */ 5 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 5 130 5 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 5 132 based (message_redistribution.comment.text_ptr); 5 133 5 134 dcl message_redistribution_ptr pointer; 5 135 5 136 5 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 5 138 5 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 5 140 2 pad pointer, /* forces even word alignment */ 5 141 2 version character (8) unaligned, 5 142 2 redistribution like message_redistribution; 5 143 5 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 5 145 5 146 dcl message_redistribution_parameter_ptr pointer; 5 147 5 148 /* Definition of the list of user-defined fields in a message */ 5 149 5 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 5 151 2 version character (8) unaligned, 5 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 5 153 2 pad bit (36), 5 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 5 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 5 156 like message_user_field; /* the actual user-defined fields */ 5 157 5 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 5 159 5 160 5 161 /* Definition of a user defined message header field */ 5 162 5 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 5 164 2 header, 5 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 5 166 3 field_type fixed binary, /* type of data contained in this field */ 5 167 2 field_type_variable bit (144); /* the actual data (see below) */ 5 168 5 169 dcl message_user_field_ptr pointer; 5 170 5 171 5 172 /* Defined types of user defined fields */ 5 173 5 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 5 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 5 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 5 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 5 178 fixed binary static options (constant); 5 179 5 180 5 181 /* Structures used to access the data for the different types of user defined fields */ 5 182 5 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 5 184 2 header like message_user_field.header, 5 185 2 text like message_text_field; /* the message text */ 5 186 5 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 5 188 based (message_text_user_field.text.text_ptr); 5 189 5 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 5 191 2 header like message_user_field.header, 5 192 2 address_list_ptr pointer, /* -> the address list */ 5 193 2 pad bit (72); 5 194 5 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 5 196 2 header like message_user_field.header, 5 197 2 date_time fixed binary (71), /* the clock reading */ 5 198 2 pad bit (72); 5 199 5 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 5 201 2 header like message_user_field.header, 5 202 2 value fixed binary (35), /* the integer value */ 5 203 2 pad bit (108); 5 204 5 205 5 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 5 207 5 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 5 209 2 pad pointer, /* forces even word alignment */ 5 210 2 version character (8) unaligned, 5 211 2 user_field like message_user_field; 5 212 5 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 5 214 5 215 dcl message_user_field_parameter_ptr pointer; 5 216 5 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 5 218 5 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 5 220 2 version character (8) unaligned, 5 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 5 222 2 pad bit (36), 5 223 2 n_references fixed binary, /* # of references in this list */ 5 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 5 225 like message_reference; /* the references themselves */ 5 226 5 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 5 228 5 229 dcl message_references_list_ptr pointer; 5 230 5 231 5 232 /* Definition of a reference to another message */ 5 233 5 234 dcl 1 message_reference aligned based (message_reference_ptr), 5 235 2 message_id bit (72), /* ID of the other message */ 5 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 5 237 2 from pointer, /* -> address list of authors of the other message */ 5 238 2 subject like message_text_field; /* subject of the other message */ 5 239 5 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 5 241 based (message_reference.subject.text_ptr); 5 242 5 243 dcl message_reference_ptr pointer; 5 244 5 245 5 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 5 247 5 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 5 249 2 pad pointer, /* forces even word alignment */ 5 250 2 version character (8) unaligned, 5 251 2 reference like message_reference; 5 252 5 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 5 254 5 255 dcl message_reference_parameter_ptr pointer; 5 256 5 257 5 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 5 259 5 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 5 261 2 text_ptr pointer, /* -> the actual text */ 5 262 2 text_lth fixed binary (21), /* length of said text */ 5 263 2 flags, 5 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 5 265* OFF => the text will always be a single line */ 5 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 5 267 5 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 5 269 5 270 dcl message_text_field_ptr pointer; 5 271 5 272 /* Definition of a section of the body of a message */ 5 273 5 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 5 275 2 header, 5 276 3 section_type fixed binary, /* type of "text" stored in this section */ 5 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 5 278 2 section_type_variable bit (144); /* the actual data (see below) */ 5 279 5 280 dcl message_body_section_ptr pointer; 5 281 5 282 5 283 /* Defined types of message body sections */ 5 284 5 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 5 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 5 287 fixed binary static options (constant); 5 288 5 289 5 290 /* Structures used to access the data for the different types of message body sections */ 5 291 5 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 5 293 2 header like message_body_section.header, 5 294 2 text_ptr pointer, /* -> the text */ 5 295 2 text_lth fixed binary (21), /* length of said text in characters */ 5 296 2 reserved bit (36); /* for exclusive use of the mail system */ 5 297 5 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 5 299 based (message_preformatted_body_section.text_ptr); 5 300 5 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 5 302 2 header like message_body_section.header, 5 303 2 bit_string_ptr pointer, /* -> the bit string */ 5 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 5 305 2 reserved bit (36); /* for exclusive use of the mail system */ 5 306 5 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 5 308 based (message_bit_string_body_section.bit_string_ptr); 5 309 5 310 5 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 5 312 5 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 5 314 2 pad pointer, /* forces even word alignment */ 5 315 2 version character (8) unaligned, 5 316 2 section like message_body_section; 5 317 5 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 5 319 5 320 dcl message_body_section_parameter_ptr pointer; 5 321 5 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 714 6 1 /* BEGIN INCLUDE FILE ... mlsys_parse_txt_options.incl.pl1 */ 6 2 /* Created: June 1983 by G. Palter */ 6 3 6 4 /* Options for the mlsys_utils_$parse_address_list_text and mlsys_utils_$parse_message_text entrypoints */ 6 5 6 6 dcl 1 parse_text_options aligned based (parse_text_options_ptr), 6 7 2 version character (8) unaligned, 6 8 2 area_ptr pointer, /* -> area for following structures; null => system free */ 6 9 2 flags, 6 10 3 list_errors bit (1) unaligned, /* ON => return the list of errors in the input text */ 6 11 3 validate_addresses bit (1) unaligned, /* ON => validate the existence of the addresses in the 6 12* address list or message */ 6 13 3 include_invalid_addresses bit (1) unaligned, /* ON => create an invalid address for each unparseable 6 14* substring of the input text */ 6 15 3 mbz bit (33) unaligned; /* must be set to ""b by the caller */ 6 16 6 17 dcl PARSE_TEXT_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsptxt1"); 6 18 6 19 dcl parse_text_options_ptr pointer; 6 20 6 21 6 22 /* Describes the errors detected while parsing the printed representation of an address list or message */ 6 23 6 24 dcl 1 parse_text_error_list aligned based (parse_text_error_list_ptr), 6 25 2 n_errors fixed binary, /* set to # of errors detected */ 6 26 2 errors (parse_text_error_list_n_errors refer (parse_text_error_list.n_errors)), 6 27 3 text_start fixed binary (21), /* ... set to index of first character in the substring */ 6 28 3 text_lth fixed binary (21), /* ... set to length of this invalid substring */ 6 29 3 code fixed binary (35), /* ... set to an error code which describes what is wrong with 6 30* this substring */ 6 31 3 additional_info character (128) varying; /* ... and extra information to clarify the error */ 6 32 6 33 dcl parse_text_error_list_ptr pointer; 6 34 6 35 dcl parse_text_error_list_n_errors fixed binary; /* used to allocate the above structure */ 6 36 6 37 /* END INCLUDE FILE ... mlsys_parse_txt_options.incl.pl1 */ 715 7 1 /* BEGIN INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 7 2 /* Created: June 1983 by G. Palter */ 7 3 7 4 /* Options for the mail_system_$deliver_message and mail_system_$redistribute_message entrypoints */ 7 5 7 6 dcl 1 deliver_options aligned based (deliver_options_ptr), 7 7 2 version character (8) unaligned, 7 8 2 delivery_mode fixed binary, /* deliver as an ordinary/interactive/express message */ 7 9 2 queueing_mode fixed binary, /* when to queue the message */ 7 10 2 queued_notification_mode fixed binary, /* when to notify sender about queued mail success/failure */ 7 11 2 flags, 7 12 3 abort bit (1) unaligned, /* ON => don't send it if any fatal errors are detected */ 7 13 3 send_if_empty bit (1) unaligned, /* ON => send the message even if its body is empty */ 7 14 3 recipient_notification bit (1) unaligned, /* ON => send "You have mail." notification */ 7 15 3 acknowledge bit (1) unaligned, /* ON => request ACK message when recipients read it */ 7 16 3 queue_mailing_lists bit (1) unaligned, /* ON => always queue the message for mailing lists */ 7 17 3 mbz bit (31) unaligned; /* must be set to ""b by the caller */ 7 18 7 19 dcl DELIVER_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsdlo02"); 7 20 7 21 dcl deliver_options_ptr pointer; 7 22 7 23 /* Defined modes of delivery */ 7 24 7 25 dcl (ORDINARY_DELIVERY initial (1), /* send as an ordinary message */ 7 26 INTERACTIVE_DELIVERY initial (2), /* send as an interactive message */ 7 27 EXPRESS_DELIVERY initial (3)) /* send as an express interactive message; ie: deliver the 7 28* message only if the user is logged in */ 7 29 fixed binary static options (constant); 7 30 7 31 /* Defined modes for queuing mail on transient errors */ 7 32 7 33 dcl (NEVER_QUEUE initial (1), /* never queue: convert into a fatal error */ 7 34 QUEUE_FOREIGN_WHEN_NEEDED initial (2), /* never queue local mail; queue foreign mail on error */ 7 35 QUEUE_WHEN_NEEDED initial (3), /* queue all mail on any transient error */ 7 36 ALWAYS_QUEUE_FOREIGN initial (4), /* queue local mail on error; always queue foreign mail */ 7 37 ALWAYS_QUEUE initial (5)) /* always queue all mail */ 7 38 fixed binary static options (constant); 7 39 7 40 /* Defined modes of notification of success/failure to deliver queued mail */ 7 41 7 42 dcl (NEVER_NOTIFY initial (1), /* never notify the sender */ 7 43 NOTIFY_ON_ERROR initial (2), /* notify the sender only if it can not be delivered */ 7 44 ALWAYS_NOTIFY initial (3)) /* always notify the sender */ 7 45 fixed binary static options (constant); 7 46 7 47 /* Definition of the recipients of a message and the results of the attempted transmission */ 7 48 7 49 dcl 1 recipients_info aligned based (recipients_info_ptr), 7 50 2 header, 7 51 3 version character (8) unaligned, 7 52 3 area_ptr pointer, /* -> area for following structures; null => system free */ 7 53 3 expanded_recipients_result_list_ptr pointer, /* set -> expanded_recipients_result_list (if any) */ 7 54 3 n_recipients fixed binary, /* set to total # of recipients after expanding lists */ 7 55 3 n_unique_recipients fixed binary, /* set to total # of unique recipients */ 7 56 3 n_failed_recipients fixed binary, /* set to # of recipients that failed or would fail */ 7 57 3 n_lists fixed binary, /* # of address lists of recipients */ 7 58 2 lists (recipients_info_n_lists refer (recipients_info.n_lists)), 7 59 3 address_list_ptr pointer, /* -> an address list containing recipients */ 7 60 3 recipients_result_list_ptr pointer; /* set -> recipients_result_list for this address list */ 7 61 7 62 dcl RECIPIENTS_INFO_VERSION_2 character (8) static options (constant) initial ("mlsrcpt2"); 7 63 7 64 dcl (recipients_info_ptr, recipients_result_list_ptr, expanded_recipients_result_list_ptr) pointer; 7 65 7 66 dcl (recipients_info_n_lists, recipients_result_list_n_addresses, expanded_recipients_result_list_n_entries) 7 67 fixed binary; /* used to allocate these structures */ 7 68 7 69 7 70 /* Data structure returned by the mail system recording the results of the mailing for one of the input address lists */ 7 71 7 72 dcl 1 recipients_result_list aligned based (recipients_result_list_ptr), 7 73 2 n_addresses fixed binary, /* set to # of address in corresponding address list */ 7 74 2 pad bit (36), 7 75 2 results (recipients_result_list_n_addresses refer (recipients_result_list.n_addresses)), 7 76 3 code fixed binary (35), /* set to describe results of attempted delivery */ 7 77 3 expanded_list_info, /* set to identify any failing addresses found in the 7 78* expansion of this address ... */ 7 79 4 first_entry_idx fixed binary (18) unaligned unsigned, 7 80 /* ... index of first such address in structure below ... */ 7 81 4 n_entries fixed binary (18) unaligned unsigned,/* ... # of such addresses there for this address */ 7 82 3 duplicate_info, /* set to identify the prior address (if any) for which this 7 83* is a duplicate ... */ 7 84 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 7 85 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 7 86 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 7 87* being queued due to a transient error */ 7 88 7 89 7 90 /* Describes fatal or transient errors for those recipients which are part of mailing lists of named groups in one of the 7 91* caller's address lists */ 7 92 7 93 dcl 1 expanded_recipients_result_list aligned based (expanded_recipients_result_list_ptr), 7 94 2 n_entries fixed binary, /* set to # of failing expanded recipients */ 7 95 2 pad bit (36), 7 96 2 entries (expanded_recipients_result_list_n_entries refer (expanded_recipients_result_list.n_entries)), 7 97 3 address_ptr pointer, /* -> the failing address from the list/group */ 7 98 3 code fixed binary (35), /* set to describe why delivery failed */ 7 99 3 parent_address, /* set to identify the original recipient of whose expansion 7 100* this address is a part ... */ 7 101 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 7 102 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 7 103 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 7 104* being queued due to a transient error */ 7 105 7 106 /* END INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 716 8 1 /* BEGIN INCLUDE FILE ... mlsys_reply_options.incl.pl1 */ 8 2 /* Created: June 1983 by G. Palter */ 8 3 8 4 /* Options for the mlsys_utils_$create_reply_message entrypoint */ 8 5 8 6 dcl 1 reply_options aligned based (reply_options_ptr), 8 7 2 version character (8) unaligned, 8 8 2 to pointer, /* -> address list of additional primary recipients */ 8 9 2 cc pointer, /* -> address list of additional secondary recipients */ 8 10 2 bcc pointer, /* -> address list of additional blind recipients */ 8 11 2 flags, 8 12 3 include_authors bit (1) unaligned, /* ON => include the authors of the message in the reply */ 8 13 3 include_recipients bit (1) unaligned, /* ON => include the recipients in the reply */ 8 14 3 include_self bit (1) unaligned, /* ON => include yourself in an author or recipient of the 8 15* original and the approrpriate flag above is on */ 8 16 3 mbz bit (33) unaligned; /* must be set to ""b by the caller */ 8 17 8 18 dcl REPLY_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsrp002"); 8 19 8 20 dcl reply_options_ptr pointer; 8 21 8 22 /* END INCLUDE FILE ... mlsys_reply_options.incl.pl1 */ 717 9 1 /* BEGIN INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 9 2 /* Created: June 1983 by G. Palter */ 9 3 9 4 /* Definition of an address list -- a collection of addresses used as the value of certain message fields, etc. */ 9 5 9 6 dcl 1 address_list aligned based (address_list_ptr), 9 7 2 version character (8) unaligned, 9 8 2 reserved bit (144), /* ... exclusively for use by the mail system */ 9 9 2 n_addresses fixed binary, /* # of address in this list */ 9 10 2 addresses (address_list_n_addresses refer (address_list.n_addresses)) pointer; 9 11 9 12 dcl ADDRESS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsals02"); 9 13 9 14 dcl address_list_ptr pointer; 9 15 9 16 dcl address_list_n_addresses fixed binary; /* reserved exclusively for use by the mail system */ 9 17 9 18 /* END INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 718 10 1 /* BEGIN INCLUDE FILE ... rdm_switch_types.incl.pl1 */ 10 2 10 3 10 4 /****^ HISTORY COMMENTS: 10 5* 1) change(86-03-25,Herbst), approve(86-03-25,MCR7367), 10 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 10 7* New file. 10 8* END HISTORY COMMENTS */ 10 9 10 10 /* Constants for telling rdm_mailbox_interface_$set_message_switch which switch to set */ 10 11 10 12 dcl PER_MESSAGE_SEEN_SWITCH_TYPE char (4) aligned int static options (constant) init ("SEEN"); 10 13 10 14 /* END INCLUDE FILE ... rdm_switch_types.incl.pl1 */ 719 720 721 end e_mail_pl1_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/24/89 1340.5 e_mail_pl1_.pl1 >spec>install>1035>e_mail_pl1_.pl1 710 1 10/27/83 2104.2 mlsys_open_options.incl.pl1 >ldd>include>mlsys_open_options.incl.pl1 711 2 10/27/83 2104.2 mlsys_mailbox.incl.pl1 >ldd>include>mlsys_mailbox.incl.pl1 712 3 10/27/83 2104.2 mlsys_format_options.incl.pl1 >ldd>include>mlsys_format_options.incl.pl1 713 4 10/27/83 2104.2 mlsys_close_options.incl.pl1 >ldd>include>mlsys_close_options.incl.pl1 714 5 05/22/86 1225.8 mlsys_message.incl.pl1 >ldd>include>mlsys_message.incl.pl1 715 6 10/27/83 2104.2 mlsys_parse_txt_options.incl.pl1 >ldd>include>mlsys_parse_txt_options.incl.pl1 716 7 10/27/83 2104.2 mlsys_deliver_info.incl.pl1 >ldd>include>mlsys_deliver_info.incl.pl1 717 8 10/27/83 2104.2 mlsys_reply_options.incl.pl1 >ldd>include>mlsys_reply_options.incl.pl1 718 9 10/27/83 2104.2 mlsys_address_list.incl.pl1 >ldd>include>mlsys_address_list.incl.pl1 719 10 05/22/86 1225.8 rdm_switch_types.incl.pl1 >ldd>include>rdm_switch_types.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. ACCESSIBLE_MESSAGES constant fixed bin(17,0) initial dcl 1-30 ref 144 ADDRESS_LIST_VERSION_2 000000 constant char(8) initial packed unaligned dcl 9-12 set ref 318* 349* 352* 382* 385* ALWAYS_QUEUE_FOREIGN constant fixed bin(17,0) initial dcl 7-33 ref 515 622 BRIEF_FORMATTING_MODE constant fixed bin(17,0) initial dcl 3-22 ref 218 CLOSE_OPTIONS_VERSION_2 000014 constant char(8) initial packed unaligned dcl 4-13 ref 259 DEFAULT_FORMATTING_MODE 000050 constant fixed bin(17,0) initial dcl 3-22 set ref 220 402* DELIVER_OPTIONS_VERSION_2 000006 constant char(8) initial packed unaligned dcl 7-19 ref 513 620 FORMAT_MESSAGE_OPTIONS_VERSION_1 000016 constant char(8) initial packed unaligned dcl 3-15 ref 176 LONG_FORMATTING_MODE constant fixed bin(17,0) initial dcl 3-22 ref 222 MAILBOX_VERSION_2 000020 constant char(8) initial packed unaligned dcl 2-28 set ref 147* MESSAGE_VERSION_2 000012 constant char(8) initial packed unaligned dcl 5-49 set ref 340* 426* NONE_FORMATTING_MODE constant fixed bin(17,0) initial dcl 3-22 ref 216 NOTIFY_ON_ERROR constant fixed bin(17,0) initial dcl 7-42 ref 516 623 OPEN_OPTIONS_VERSION_2 000022 constant char(8) initial packed unaligned dcl 1-12 ref 142 ORDINARY_DELIVERY constant fixed bin(17,0) initial dcl 7-25 ref 514 621 ORDINARY_MESSAGES constant fixed bin(17,0) initial dcl 1-23 ref 143 PARSE_TEXT_OPTIONS_VERSION_1 000010 constant char(8) initial packed unaligned dcl 6-17 ref 311 420 READ_KEYS constant fixed bin(17,0) initial dcl 1-38 ref 145 RECIPIENTS_INFO_VERSION_2 000004 constant char(8) initial packed unaligned dcl 7-62 ref 505 610 REPLY_OPTIONS_VERSION_2 000002 constant char(8) initial packed unaligned dcl 8-18 ref 370 a_acknowledge_flag parameter bit(1) packed unaligned dcl 41 ref 161 198 588 627 a_addr parameter char packed unaligned dcl 36 ref 292 318 a_addr_ptr parameter pointer dcl 37 set ref 292 300* 303 303* 318* 321 322* 323* a_body_length parameter fixed bin(21,0) dcl 54 set ref 161 196* a_buffer_ptr parameter pointer dcl 50 set ref 161 191* 194 394 402* 405 a_code parameter fixed bin(35,0) dcl 38 in procedure "e_mail_pl1_" set ref 133 138* 147* 148 161 172* 180* 181 181* 183* 184 184* 186* 187 187* 191* 192 198* 233 236* 241* 242 250 255* 263* 292 299* 318* 320 332 338* 340* 341 343* 344 349* 350 352* 353 355* 360 366* 378* 382* 383 385* 386 388* 394 398* 402* 403 411 416* 426* 436* 485 530* 531 532* 537* 538 539* 542* 588 639* 640 641* 646* 647 648* 651* 664 672* 706* a_code parameter fixed bin(35,0) dcl 210 in procedure "parse_formatting_mode" set ref 205 212* 224* a_comments parameter char packed unaligned dcl 39 set ref 588 631* a_dirname parameter char(168) packed unaligned dcl 67 set ref 664 703* a_entryname parameter char(32) packed unaligned dcl 68 set ref 664 705* a_envelope_format parameter char packed unaligned dcl 51 set ref 161 180* a_error_ptr parameter pointer dcl 42 set ref 292 301* 305 305* 318* a_formatting_mode parameter char packed unaligned dcl 208 set ref 205 214* 214 216 218 220 222 a_header_format parameter char packed unaligned dcl 52 set ref 161 183* a_include_authors parameter bit(1) packed unaligned dcl 60 ref 360 374 a_include_recipients parameter bit(1) packed unaligned dcl 61 ref 360 375 a_include_self parameter bit(1) packed unaligned dcl 62 ref 360 376 a_line_length parameter fixed bin(17,0) dcl 55 set ref 161 177 394 402* a_mailbox_ptr parameter pointer dcl 46 set ref 133 147* 150 151 233 238 241* 243 250 263* a_mbx_dir parameter char packed unaligned dcl 44 set ref 133 147* a_mbx_entry parameter char packed unaligned dcl 45 set ref 133 147* a_message_flag parameter bit(1) packed unaligned dcl 566 ref 563 568 a_message_number parameter fixed bin(17,0) dcl 56 set ref 233 238 241* 243 a_message_ptr parameter pointer dcl 49 set ref 161 191* 196 198 198* 201 233 238* 240 243* 332 340* 343* 355* 394 402* 411 426* 485 509 510 511 523* 568* 588 631* a_message_text parameter char packed unaligned dcl 63 set ref 411 426* 446 461 461 a_mlsys_formatting_mode parameter fixed bin(17,0) dcl 209 set ref 205 216* 218* 220* 222* a_msgcount parameter fixed bin(17,0) dcl 48 set ref 133 151* a_new_message_ptr parameter pointer dcl 59 set ref 360 378* 388* a_original_message_ptr parameter pointer dcl 58 set ref 360 378* a_parse_error_list_ptr parameter pointer dcl 64 set ref 411 426* 432 434 436 446 457 458 459 460 470 475 a_pathname parameter char packed unaligned dcl 66 ref 664 673 a_recipients_ptr parameter pointer dcl 40 ref 588 617 a_redistributions_list_format parameter char packed unaligned dcl 53 set ref 161 186* a_request_ack parameter bit(1) packed unaligned dcl 65 ref 485 520 a_salvaged parameter bit(1) dcl 47 set ref 133 150* a_seen_sw parameter bit(1) packed unaligned dcl 43 set ref 161 201* a_subject parameter char packed unaligned dcl 57 set ref 332 343* abort 5 000163 automatic bit(1) level 3 in structure "auto_deliver_options" packed packed unaligned dcl 491 in procedure "e_mail_pl1_" set ref 517* abort 5 000171 automatic bit(1) level 3 in structure "dv_ops" packed packed unaligned dcl 592 in procedure "e_mail_pl1_" set ref 624* acknowledge 5(03) 000163 automatic bit(1) level 3 in structure "auto_deliver_options" packed packed unaligned dcl 491 in procedure "e_mail_pl1_" set ref 520* acknowledge 5(03) 000171 automatic bit(1) level 3 in structure "dv_ops" packed packed unaligned dcl 592 in procedure "e_mail_pl1_" set ref 627* addr builtin function dcl 122 ref 147 147 191 191 263 263 318 318 378 378 426 426 523 523 631 631 address_list_ptr 12 based pointer array level 3 dcl 7-49 set ref 509* 510* 511* 617* anonymous 000126 automatic fixed bin(17,0) dcl 272 set ref 274* 276 area_ptr 2 000152 automatic pointer level 2 in structure "auto_parse_options" dcl 414 in procedure "e_mail_pl1_" set ref 421* area_ptr 2 based pointer level 3 in structure "recipients_info" dcl 7-49 in procedure "e_mail_pl1_" set ref 506* 611* area_ptr 2 000130 automatic pointer level 2 in structure "pt_ops" dcl 295 in procedure "e_mail_pl1_" set ref 312* auto_close_options 000123 automatic structure level 1 dcl 253 set ref 257* 263 263 auto_deliver_options 000163 automatic structure level 1 dcl 491 set ref 497* 523 523 auto_format_options 000114 automatic structure level 1 dcl 168 set ref 174* 191 191 auto_open_options 000106 automatic structure level 1 dcl 136 set ref 140* 147 147 auto_parse_options 000152 automatic structure level 1 dcl 414 set ref 418* 426 426 auto_reply_options 000140 automatic structure level 1 dcl 364 set ref 368* 378 378 bcc 46 based pointer level 3 in structure "message" dcl 5-15 in procedure "e_mail_pl1_" ref 511 bcc 6 000140 automatic pointer level 2 in structure "auto_reply_options" dcl 364 in procedure "e_mail_pl1_" set ref 373* body 62 based structure level 2 dcl 5-15 buffer_position 000113 automatic fixed bin(21,0) dcl 166 set ref 189* 191* 194 400* 402* 405 cc 4 000140 automatic pointer level 2 in structure "auto_reply_options" dcl 364 in procedure "e_mail_pl1_" set ref 372* cc 44 based pointer level 3 in structure "message" dcl 5-15 in procedure "e_mail_pl1_" ref 510 chrsused based fixed bin(35,0) dcl 169 set ref 194* 405* clean_up 000100 stack reference condition dcl 126 ref 302 501 603 close_options based structure level 1 dcl 4-6 code 000374 automatic fixed bin(35,0) dcl 454 in begin block on line 453 set ref 458* 461 461* code 000337 automatic fixed bin(35,0) dcl 670 in procedure "e_mail_pl1_" set ref 672* 681* 682 683* 686* 687 687 689* 690 691* 695* 699* 700 700* 706 code 3 based fixed bin(35,0) array level 3 in structure "parse_text_error_list" dcl 6-24 in procedure "e_mail_pl1_" ref 436 code 3 based fixed bin(35,0) array level 3 in structure "ptel" dcl 449 in procedure "e_mail_pl1_" ref 458 com_err_$suppress_name 000064 constant entry external dcl 101 ref 461 525 532 539 634 641 648 683 691 695 700 deliver_options based structure level 1 dcl 7-6 delivery_code 000162 automatic fixed bin(35,0) dcl 489 set ref 493* 523* 525 525* 542 delivery_mode 2 000163 automatic fixed bin(17,0) level 2 in structure "auto_deliver_options" dcl 491 in procedure "e_mail_pl1_" set ref 514* delivery_mode 2 000171 automatic fixed bin(17,0) level 2 in structure "dv_ops" dcl 592 in procedure "e_mail_pl1_" set ref 621* dirname 000255 automatic char(168) packed unaligned dcl 668 set ref 674* 686* 689* 699* 703 dv_ops 000171 automatic structure level 1 dcl 592 set ref 631 631 e_mail_pl1_$get_user_default_address 000112 constant entry external dcl 119 ref 352 352 385 385 entryname 000327 automatic char(32) packed unaligned dcl 669 set ref 674* 681* 686 686 689* 699* 705 envelope_formatting_mode 3 000114 automatic fixed bin(17,0) level 2 dcl 168 set ref 180* error_table_$noentry 000100 external static fixed bin(35,0) dcl 112 ref 687 errors 1 based structure array level 2 in structure "ptel" dcl 449 in procedure "e_mail_pl1_" errors 1 based structure array level 2 in structure "parse_text_error_list" dcl 6-24 in procedure "e_mail_pl1_" expand_pathname_$add_suffix 000072 constant entry external dcl 105 ref 689 699 expanded_recipients_result_list_ptr 4 based pointer level 3 dcl 7-49 set ref 507* 612* flags 4 000152 automatic structure level 2 in structure "auto_parse_options" dcl 414 in procedure "e_mail_pl1_" flags 2 000123 automatic structure level 2 in structure "auto_close_options" dcl 253 in procedure "e_mail_pl1_" flags 10 000140 automatic structure level 2 in structure "auto_reply_options" dcl 364 in procedure "e_mail_pl1_" flags 5 000171 automatic structure level 2 in structure "dv_ops" dcl 592 in procedure "e_mail_pl1_" flags 4 000130 automatic structure level 2 in structure "pt_ops" dcl 295 in procedure "e_mail_pl1_" flags 5 000163 automatic structure level 2 in structure "auto_deliver_options" dcl 491 in procedure "e_mail_pl1_" flags 12 based structure level 2 in structure "message" dcl 5-15 in procedure "e_mail_pl1_" flags 74 based structure level 2 in structure "mailbox" dcl 2-6 in procedure "e_mail_pl1_" format_message_options based structure level 1 dcl 3-6 free_area based area(1024) dcl 473 ref 475 from_list 000136 automatic pointer dcl 335 set ref 349* 352* 355* 382* 385* 388* get_system_free_area_ 000062 constant entry external dcl 100 ref 312 475 506 600 header 10 based structure array level 3 in structure "message_user_fields_list" dcl 5-150 in procedure "e_mail_pl1_" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 5-313 in procedure "e_mail_pl1_" header 4 based structure level 3 in structure "message_user_field_parameter" dcl 5-208 in procedure "e_mail_pl1_" header based structure level 2 in structure "message_user_field" dcl 5-163 in procedure "e_mail_pl1_" header based structure level 2 in structure "message_body_section" dcl 5-274 in procedure "e_mail_pl1_" header 64 based structure array level 4 in structure "message" dcl 5-15 in procedure "e_mail_pl1_" header based structure level 2 in structure "recipients_info" dcl 7-49 in procedure "e_mail_pl1_" header 30 based structure level 2 in structure "message" dcl 5-15 in procedure "e_mail_pl1_" header_formatting_mode 4 000114 automatic fixed bin(17,0) level 2 dcl 168 set ref 183* i 000157 automatic fixed bin(17,0) dcl 451 set ref 457* 458 459 460* include_authors 10 000140 automatic bit(1) level 3 packed packed unaligned dcl 364 set ref 374* include_body 6 000114 automatic bit(1) level 2 dcl 168 set ref 178* include_invalid_addresses 4(02) 000152 automatic bit(1) level 3 in structure "auto_parse_options" packed packed unaligned dcl 414 in procedure "e_mail_pl1_" set ref 424* include_invalid_addresses 4(02) 000130 automatic bit(1) level 3 in structure "pt_ops" packed packed unaligned dcl 295 in procedure "e_mail_pl1_" set ref 315* include_recipients 10(01) 000140 automatic bit(1) level 3 packed packed unaligned dcl 364 set ref 375* include_self 10(02) 000140 automatic bit(1) level 3 packed packed unaligned dcl 364 set ref 376* index builtin function dcl 122 ref 677 length builtin function dcl 122 in procedure "e_mail_pl1_" ref 677 677 length 000376 automatic fixed bin(21,0) dcl 454 in begin block on line 453 set ref 460* 461 461 line_length 2 000114 automatic fixed bin(17,0) level 2 dcl 168 set ref 177* list_errors 4 000152 automatic bit(1) level 3 in structure "auto_parse_options" packed packed unaligned dcl 414 in procedure "e_mail_pl1_" set ref 422* list_errors 4 000130 automatic bit(1) level 3 in structure "pt_ops" packed packed unaligned dcl 295 in procedure "e_mail_pl1_" set ref 313* lists 12 based structure array level 2 dcl 7-49 mail_system_$acknowledge_message 000014 constant entry external dcl 75 ref 198 mail_system_$add_address 000030 constant entry external dcl 81 ref 352 385 mail_system_$close_mailbox 000020 constant entry external dcl 77 ref 263 mail_system_$create_address_list 000026 constant entry external dcl 80 ref 349 382 mail_system_$create_message 000024 constant entry external dcl 79 ref 340 mail_system_$deliver_message 000036 constant entry external dcl 84 ref 523 mail_system_$free_address_list 000022 constant entry external dcl 78 ref 303 322 mail_system_$free_message 000040 constant entry external dcl 85 ref 568 mail_system_$open_mailbox 000012 constant entry external dcl 73 ref 147 mail_system_$read_message 000016 constant entry external dcl 76 ref 241 mail_system_$redistribute_message 000010 constant entry external dcl 71 ref 631 mail_system_$replace_from 000034 constant entry external dcl 83 ref 355 388 mail_system_$replace_subject 000032 constant entry external dcl 82 ref 343 mailbox based structure level 1 dcl 2-6 mbz 4(03) 000130 automatic bit(33) level 3 in structure "pt_ops" packed packed unaligned dcl 295 in procedure "e_mail_pl1_" set ref 316* mbz 5(05) 000171 automatic bit(31) level 3 in structure "dv_ops" packed packed unaligned dcl 592 in procedure "e_mail_pl1_" set ref 629* message based structure level 1 dcl 5-15 message_body_section based structure level 1 dcl 5-274 message_envelope based structure level 1 dcl 5-61 message_ptr 106 based pointer array level 3 dcl 2-6 ref 238 243 message_reading_level 4 000106 automatic fixed bin(17,0) level 2 dcl 136 set ref 145* message_redistribution based structure level 1 dcl 5-122 message_reference based structure level 1 dcl 5-234 message_selection_mode 2 000106 automatic fixed bin(17,0) level 2 dcl 136 set ref 143* message_text_field based structure level 1 dcl 5-260 message_user_field based structure level 1 dcl 5-163 messages 104 based structure array level 2 dcl 2-6 mlsys_data_$user_default_mailbox_address 000106 external static pointer dcl 115 ref 276 285 mlsys_data_$user_mail_table_address 000110 external static pointer dcl 116 ref 278 mlsys_et_$cant_parse_irt_field 000102 external static fixed bin(35,0) dcl 113 ref 436 461 mlsys_utils_$create_reply_message 000046 constant entry external dcl 90 ref 378 mlsys_utils_$format_message 000042 constant entry external dcl 86 ref 191 mlsys_utils_$format_message_header 000050 constant entry external dcl 91 ref 402 mlsys_utils_$free_delivery_results 000054 constant entry external dcl 95 ref 572 mlsys_utils_$parse_address_list_text 000044 constant entry external dcl 88 ref 318 mlsys_utils_$parse_message_text 000052 constant entry external dcl 93 ref 426 mlsys_utils_$print_delivery_results 000056 constant entry external dcl 96 ref 537 646 must_be_acknowledged 12(03) based bit(1) level 3 packed packed unaligned dcl 5-15 ref 198 n_errors based fixed bin(17,0) level 2 in structure "parse_text_error_list" dcl 6-24 in procedure "e_mail_pl1_" ref 434 475 n_errors based fixed bin(17,0) level 2 in structure "ptel" dcl 449 in procedure "e_mail_pl1_" ref 457 n_failed_recipients 10 based fixed bin(17,0) level 3 dcl 7-49 set ref 615* n_lists 11 based fixed bin(17,0) level 3 dcl 7-49 set ref 503* 508 573 608* 616* n_messages 100 based fixed bin(17,0) level 2 dcl 2-6 ref 151 n_recipients 6 based fixed bin(17,0) level 3 dcl 7-49 set ref 613* n_unique_recipients 7 based fixed bin(17,0) level 3 dcl 7-49 set ref 614* null builtin function dcl 122 ref 240 300 301 303 305 321 323 371 372 373 421 432 495 507 508 530 530 571 576 601 602 612 618 639 639 686 686 open_options based structure level 1 dcl 1-6 parse_text_error_list based structure level 1 dcl 6-24 parse_text_options based structure level 1 dcl 6-6 pathname 000203 automatic char(168) packed unaligned dcl 667 set ref 673* 677 677* 677 677 680 681 681 689* 699* perform_deletions 2 000123 automatic bit(1) level 3 packed packed unaligned dcl 253 set ref 260* pt_ops 000130 automatic structure level 1 dcl 295 set ref 318 318 ptel based structure level 1 dcl 449 ref 475 queue_mailing_lists 5(04) 000171 automatic bit(1) level 3 in structure "dv_ops" packed packed unaligned dcl 592 in procedure "e_mail_pl1_" set ref 628* queue_mailing_lists 5(04) 000163 automatic bit(1) level 3 in structure "auto_deliver_options" packed packed unaligned dcl 491 in procedure "e_mail_pl1_" set ref 521* queued_notification_mode 4 000163 automatic fixed bin(17,0) level 2 in structure "auto_deliver_options" dcl 491 in procedure "e_mail_pl1_" set ref 516* queued_notification_mode 4 000171 automatic fixed bin(17,0) level 2 in structure "dv_ops" dcl 592 in procedure "e_mail_pl1_" set ref 623* queueing_mode 3 000171 automatic fixed bin(17,0) level 2 in structure "dv_ops" dcl 592 in procedure "e_mail_pl1_" set ref 622* queueing_mode 3 000163 automatic fixed bin(17,0) level 2 in structure "auto_deliver_options" dcl 491 in procedure "e_mail_pl1_" set ref 515* recipient_notification 5(02) 000163 automatic bit(1) level 3 in structure "auto_deliver_options" packed packed unaligned dcl 491 in procedure "e_mail_pl1_" set ref 519* recipient_notification 5(02) 000171 automatic bit(1) level 3 in structure "dv_ops" packed packed unaligned dcl 592 in procedure "e_mail_pl1_" set ref 626* recipients_info based structure level 1 dcl 7-49 set ref 503 573 608 recipients_info_n_lists 000342 automatic fixed bin(17,0) dcl 7-66 set ref 499* 503 503 607* 608 608 recipients_info_ptr 000340 automatic pointer dcl 7-64 set ref 495* 503* 505 506 507 508 509 510 511 523* 537* 571 572* 573 601* 608* 610 611 612 613 614 615 616 617 618 631* 646* recipients_result_list_ptr 14 based pointer array level 3 dcl 7-49 set ref 508* 618* redist_code 000202 automatic fixed bin(35,0) dcl 595 set ref 631* 634 634* 651 redistributions_list_formatting_mode 5 000114 automatic fixed bin(17,0) level 2 dcl 168 set ref 186* reply_options based structure level 1 dcl 8-6 report_deletion_errors 2(01) 000123 automatic bit(1) level 3 packed packed unaligned dcl 253 set ref 261* reverse builtin function dcl 122 ref 677 677 rtrim builtin function dcl 122 ref 677 677 681 681 686 686 salvaged 74 based bit(1) level 3 packed packed unaligned dcl 2-6 ref 150 sci_ptr 000160 automatic pointer dcl 488 set ref 495* 530* 537* 576 576* 602* 639* 646* search builtin function dcl 122 ref 680 search_paths_$find_dir 000076 constant entry external dcl 108 ref 686 seen 12(04) based bit(1) level 3 packed packed unaligned dcl 5-15 ref 201 send_if_empty 5(01) 000163 automatic bit(1) level 3 in structure "auto_deliver_options" packed packed unaligned dcl 491 in procedure "e_mail_pl1_" set ref 518* send_if_empty 5(01) 000171 automatic bit(1) level 3 in structure "dv_ops" packed packed unaligned dcl 592 in procedure "e_mail_pl1_" set ref 625* sender_selection_mode 3 000106 automatic fixed bin(17,0) level 2 dcl 136 set ref 144* ssu_$destroy_invocation 000070 constant entry external dcl 104 ref 576 ssu_$standalone_invocation 000066 constant entry external dcl 102 ref 530 639 start 000375 automatic fixed bin(21,0) dcl 454 set ref 459* 461 461 substr builtin function dcl 122 ref 461 461 677 suffixed_name_$make 000074 constant entry external dcl 107 ref 681 sys_info$max_seg_size 000104 external static fixed bin(35,0) dcl 114 ref 191 402 system_free_area based area(1024) dcl 594 ref 608 system_free_area_ptr 000200 automatic pointer dcl 593 set ref 600* 608 611 text_lth 2 based fixed bin(21,0) array level 3 dcl 449 ref 460 text_start 1 based fixed bin(21,0) array level 3 dcl 449 ref 459 to 2 000140 automatic pointer level 2 in structure "auto_reply_options" dcl 364 in procedure "e_mail_pl1_" set ref 371* to 42 based pointer level 3 in structure "message" dcl 5-15 in procedure "e_mail_pl1_" ref 509 total_lines 62 based fixed bin(21,0) level 3 dcl 5-15 ref 196 translate builtin function dcl 122 ref 214 unspec builtin function dcl 122 set ref 140* 174* 257* 368* 418* 497* user_info_$login_data 000060 constant entry external dcl 98 ref 274 validate_addresses 4(01) 000152 automatic bit(1) level 3 in structure "auto_parse_options" packed packed unaligned dcl 414 in procedure "e_mail_pl1_" set ref 423* validate_addresses 4(01) 000130 automatic bit(1) level 3 in structure "pt_ops" packed packed unaligned dcl 295 in procedure "e_mail_pl1_" set ref 314* version based char(8) level 3 in structure "recipients_info" packed packed unaligned dcl 7-49 in procedure "e_mail_pl1_" set ref 505* 610* version 000152 automatic char(8) level 2 in structure "auto_parse_options" packed packed unaligned dcl 414 in procedure "e_mail_pl1_" set ref 420* version 000163 automatic char(8) level 2 in structure "auto_deliver_options" packed packed unaligned dcl 491 in procedure "e_mail_pl1_" set ref 513* version 000140 automatic char(8) level 2 in structure "auto_reply_options" packed packed unaligned dcl 364 in procedure "e_mail_pl1_" set ref 370* version 000114 automatic char(8) level 2 in structure "auto_format_options" packed packed unaligned dcl 168 in procedure "e_mail_pl1_" set ref 176* version 000171 automatic char(8) level 2 in structure "dv_ops" packed packed unaligned dcl 592 in procedure "e_mail_pl1_" set ref 620* version 000123 automatic char(8) level 2 in structure "auto_close_options" packed packed unaligned dcl 253 in procedure "e_mail_pl1_" set ref 259* version 000106 automatic char(8) level 2 in structure "auto_open_options" dcl 136 in procedure "e_mail_pl1_" set ref 142* version 000130 automatic char(8) level 2 in structure "pt_ops" packed packed unaligned dcl 295 in procedure "e_mail_pl1_" set ref 311* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ALL_MESSAGES internal static fixed bin(17,0) initial dcl 1-17 ALWAYS_NOTIFY internal static fixed bin(17,0) initial dcl 7-42 ALWAYS_QUEUE internal static fixed bin(17,0) initial dcl 7-33 EXPRESS_DELIVERY internal static fixed bin(17,0) initial dcl 7-25 INTERACTIVE_DELIVERY internal static fixed bin(17,0) initial dcl 7-25 INTERACTIVE_MESSAGES internal static fixed bin(17,0) initial dcl 1-23 MESSAGE_ADDRESS_LIST_USER_FIELD internal static fixed bin(17,0) initial dcl 5-174 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 5-285 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 5-318 MESSAGE_DATE_USER_FIELD internal static fixed bin(17,0) initial dcl 5-174 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 5-79 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 5-174 MESSAGE_PREFORMATTED_BODY_SECTION internal static fixed bin(17,0) initial dcl 5-285 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 5-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 5-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 5-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 5-253 MESSAGE_TEXT_USER_FIELD internal static fixed bin(17,0) initial dcl 5-174 MESSAGE_TRACE_VERSION_2 internal static char(8) initial packed unaligned dcl 5-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 5-158 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 5-213 NEVER_NOTIFY internal static fixed bin(17,0) initial dcl 7-42 NEVER_QUEUE internal static fixed bin(17,0) initial dcl 7-33 NOT_OWN_MESSAGES internal static fixed bin(17,0) initial dcl 1-30 OTHER_MAILBOX internal static fixed bin(17,0) initial dcl 2-37 OWN_MESSAGES internal static fixed bin(17,0) initial dcl 1-30 PER_MESSAGE_SEEN_SWITCH_TYPE internal static char(4) initial dcl 10-12 QUEUE_FOREIGN_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 7-33 QUEUE_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 7-33 READ_MESSAGES internal static fixed bin(17,0) initial dcl 1-38 SAVEBOX internal static fixed bin(17,0) initial dcl 2-37 USER_DEFAULT_MAILBOX internal static fixed bin(17,0) initial dcl 2-37 USER_LOGBOX internal static fixed bin(17,0) initial dcl 2-37 address_list based structure level 1 dcl 9-6 address_list_n_addresses automatic fixed bin(17,0) dcl 9-16 address_list_ptr automatic pointer dcl 9-14 close_options_ptr automatic pointer dcl 4-15 deliver_options_ptr automatic pointer dcl 7-21 expanded_recipients_result_list based structure level 1 dcl 7-93 expanded_recipients_result_list_n_entries automatic fixed bin(17,0) dcl 7-66 expanded_recipients_result_list_ptr automatic pointer dcl 7-64 format_message_options_ptr automatic pointer dcl 3-17 mailbox_n_messages automatic fixed bin(17,0) dcl 2-32 mailbox_ptr automatic pointer dcl 2-30 message_address_list_user_field based structure level 1 dcl 5-190 message_bit_string_body_section based structure level 1 dcl 5-301 message_bit_string_body_section_bit_string based bit packed unaligned dcl 5-307 message_body_section_parameter based structure level 1 dcl 5-313 message_body_section_parameter_ptr automatic pointer dcl 5-320 message_body_section_ptr automatic pointer dcl 5-280 message_date_user_field based structure level 1 dcl 5-195 message_envelope_parameter based structure level 1 dcl 5-74 message_envelope_parameter_ptr automatic pointer dcl 5-81 message_envelope_ptr automatic pointer dcl 5-69 message_integer_user_field based structure level 1 dcl 5-200 message_n_body_sections automatic fixed bin(17,0) dcl 5-55 message_n_redistributions automatic fixed bin(17,0) dcl 5-55 message_n_user_fields automatic fixed bin(17,0) dcl 5-55 message_preformatted_body_section based structure level 1 dcl 5-292 message_preformatted_body_section_text based char packed unaligned dcl 5-298 message_ptr automatic pointer dcl 5-53 message_redistribution_comment based char packed unaligned dcl 5-131 message_redistribution_parameter based structure level 1 dcl 5-139 message_redistribution_parameter_ptr automatic pointer dcl 5-146 message_redistribution_ptr automatic pointer dcl 5-134 message_redistributions_list based structure level 1 dcl 5-109 message_reference_parameter based structure level 1 dcl 5-248 message_reference_parameter_ptr automatic pointer dcl 5-255 message_reference_ptr automatic pointer dcl 5-243 message_reference_subject based char packed unaligned dcl 5-240 message_references_list based structure level 1 dcl 5-219 message_references_list_n_references automatic fixed bin(17,0) dcl 5-55 message_references_list_ptr automatic pointer dcl 5-229 message_subject based char packed unaligned dcl 5-51 message_text_field_ptr automatic pointer dcl 5-270 message_text_field_text based char packed unaligned dcl 5-268 message_text_user_field based structure level 1 dcl 5-183 message_text_user_field_text based char packed unaligned dcl 5-187 message_trace based structure level 1 dcl 5-87 message_trace_n_relays automatic fixed bin(17,0) dcl 5-55 message_trace_ptr automatic pointer dcl 5-105 message_user_field_parameter based structure level 1 dcl 5-208 message_user_field_parameter_ptr automatic pointer dcl 5-215 message_user_field_ptr automatic pointer dcl 5-169 message_user_fields_list based structure level 1 dcl 5-150 open_options_ptr automatic pointer dcl 1-14 parse_text_error_list_n_errors automatic fixed bin(17,0) dcl 6-35 parse_text_error_list_ptr automatic pointer dcl 6-33 parse_text_options_ptr automatic pointer dcl 6-19 recipients_result_list based structure level 1 dcl 7-72 recipients_result_list_n_addresses automatic fixed bin(17,0) dcl 7-66 recipients_result_list_ptr automatic pointer dcl 7-64 reply_options_ptr automatic pointer dcl 8-20 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_DELIVER_RETURN 003077 constant label dcl 544 ref 552 ERROR_REDIST_RETURN 003521 constant label dcl 653 ref 559 EXIT_SVBX_PATHNAME 004216 constant label dcl 703 ref 684 692 display_parse_errors 002323 constant entry external dcl 446 e_mail_pl1_ 000172 constant entry external dcl 32 emacs_create_message 001455 constant entry external dcl 332 emacs_create_reply_message 001671 constant entry external dcl 360 emacs_deliver_message 002504 constant entry external dcl 485 emacs_expand_svbx_pathname 003545 constant entry external dcl 664 emacs_format_header 002057 constant entry external dcl 394 emacs_get_address_list 001222 constant entry external dcl 292 emacs_get_message_ptr 000706 constant entry external dcl 233 emacs_mailbox_close 001006 constant entry external dcl 250 emacs_mailbox_open 000215 constant entry external dcl 133 emacs_parse_message_text 002165 constant entry external dcl 411 emacs_read_message 000360 constant entry external dcl 161 emacs_redistribute_message 003123 constant entry external dcl 588 free_parse_text_error_list 002442 constant entry external dcl 470 ref 305 free_structures 004347 constant entry internal dcl 563 ref 501 533 544 603 642 653 get_user_default_address 001064 constant entry external dcl 269 get_user_default_mbx_address 001173 constant entry external dcl 282 parse_formatting_mode 004240 constant entry internal dcl 205 ref 180 183 186 ssu_abort_deliver 004325 constant entry internal dcl 549 ref 530 530 ssu_abort_redistribute 004336 constant entry internal dcl 556 ref 639 639 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6036 6152 5042 6046 Length 6714 5042 114 525 773 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME e_mail_pl1_ 357 external procedure is an external procedure. parse_formatting_mode internal procedure shares stack frame of external procedure e_mail_pl1_. on unit on line 302 72 on unit begin block on line 453 begin block shares stack frame of external procedure e_mail_pl1_. on unit on line 501 72 on unit ssu_abort_deliver 64 internal procedure is assigned to an entry variable. ssu_abort_redistribute 64 internal procedure is assigned to an entry variable. free_structures 72 internal procedure is called by several nonquick procedures. on unit on line 603 72 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME e_mail_pl1_ 000106 auto_open_options e_mail_pl1_ 000113 buffer_position e_mail_pl1_ 000114 auto_format_options e_mail_pl1_ 000123 auto_close_options e_mail_pl1_ 000126 anonymous e_mail_pl1_ 000130 pt_ops e_mail_pl1_ 000136 from_list e_mail_pl1_ 000140 auto_reply_options e_mail_pl1_ 000152 auto_parse_options e_mail_pl1_ 000157 i e_mail_pl1_ 000160 sci_ptr e_mail_pl1_ 000162 delivery_code e_mail_pl1_ 000163 auto_deliver_options e_mail_pl1_ 000171 dv_ops e_mail_pl1_ 000200 system_free_area_ptr e_mail_pl1_ 000202 redist_code e_mail_pl1_ 000203 pathname e_mail_pl1_ 000255 dirname e_mail_pl1_ 000327 entryname e_mail_pl1_ 000337 code e_mail_pl1_ 000340 recipients_info_ptr e_mail_pl1_ 000342 recipients_info_n_lists e_mail_pl1_ 000374 code begin block on line 453 000375 start begin block on line 453 000376 length begin block on line 453 THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_in call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 mpfx2 signal_op enable_op shorten_stack ext_entry ext_entry_desc int_entry set_chars_eis op_alloc_ alloc_storage op_freen_ ix_rev_chars THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_$suppress_name e_mail_pl1_$get_user_default_address expand_pathname_$add_suffix get_system_free_area_ mail_system_$acknowledge_message mail_system_$add_address mail_system_$close_mailbox mail_system_$create_address_list mail_system_$create_message mail_system_$deliver_message mail_system_$free_address_list mail_system_$free_message mail_system_$open_mailbox mail_system_$read_message mail_system_$redistribute_message mail_system_$replace_from mail_system_$replace_subject mlsys_utils_$create_reply_message mlsys_utils_$format_message mlsys_utils_$format_message_header mlsys_utils_$free_delivery_results mlsys_utils_$parse_address_list_text mlsys_utils_$parse_message_text mlsys_utils_$print_delivery_results search_paths_$find_dir ssu_$destroy_invocation ssu_$standalone_invocation suffixed_name_$make user_info_$login_data THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$noentry mlsys_data_$user_default_mailbox_address mlsys_data_$user_mail_table_address mlsys_et_$cant_parse_irt_field sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 32 000171 128 000201 133 000207 138 000244 140 000245 142 000250 143 000252 144 000254 145 000256 147 000260 148 000320 150 000331 151 000337 153 000341 161 000350 172 000420 174 000421 176 000424 177 000426 178 000430 180 000432 181 000454 181 000456 181 000460 183 000467 184 000511 184 000513 184 000515 186 000524 187 000546 187 000550 187 000552 189 000561 191 000563 192 000620 194 000631 196 000635 198 000642 201 000663 203 000672 233 000701 236 000724 238 000725 240 000734 241 000740 242 000753 243 000764 246 000773 250 001002 255 001022 257 001023 259 001026 260 001031 261 001033 263 001035 265 001052 269 001061 274 001072 276 001136 278 001155 282 001171 285 001201 292 001215 299 001242 300 001243 301 001246 302 001247 303 001263 305 001302 307 001316 311 001317 312 001321 313 001330 314 001332 315 001334 316 001336 318 001340 320 001406 321 001411 322 001416 323 001430 325 001433 328 001442 332 001451 338 001477 340 001500 341 001513 343 001524 344 001547 349 001560 350 001573 352 001604 353 001630 355 001641 356 001654 360 001663 366 001703 368 001704 370 001707 371 001711 372 001713 373 001714 374 001715 375 001722 376 001726 378 001732 382 001751 383 001764 385 001775 386 002021 388 002032 390 002046 394 002055 398 002077 400 002100 402 002102 403 002137 405 002150 407 002154 411 002163 416 002210 418 002211 420 002214 421 002216 422 002220 423 002222 424 002224 426 002226 432 002263 434 002276 436 002302 440 002310 446 002317 457 002342 458 002353 459 002361 460 002363 461 002365 463 002426 466 002431 470 002440 475 002454 477 002471 485 002500 493 002520 495 002521 497 002524 499 002527 501 002531 503 002557 505 002567 506 002572 507 002601 508 002604 509 002620 510 002624 511 002630 513 002634 514 002637 515 002641 516 002643 517 002645 518 002647 519 002651 520 002653 521 002660 523 002662 525 002701 530 002723 531 002763 532 002765 533 003011 534 003021 537 003030 538 003047 539 003051 542 003075 544 003077 547 003107 588 003116 600 003145 601 003154 602 003156 603 003157 607 003205 608 003207 610 003220 611 003223 612 003225 613 003227 614 003230 615 003231 616 003232 617 003234 618 003240 620 003242 621 003245 622 003247 623 003251 624 003253 625 003255 626 003257 627 003261 628 003265 629 003267 631 003271 634 003323 639 003345 640 003405 641 003407 642 003433 643 003443 646 003452 647 003471 648 003473 651 003517 653 003521 656 003531 664 003540 672 003565 673 003567 674 003575 677 003603 680 003631 681 003643 682 003712 683 003715 684 003741 686 003742 687 004023 689 004031 690 004062 691 004064 692 004110 694 004111 695 004112 697 004135 699 004136 700 004170 703 004216 705 004223 706 004227 707 004231 205 004240 212 004251 214 004253 216 004264 218 004274 220 004303 222 004312 224 004321 226 004323 549 004324 552 004332 556 004335 559 004343 563 004346 568 004354 571 004374 572 004401 573 004413 576 004422 579 004436 ----------------------------------------------------------- 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