COMPILATION LISTING OF SEGMENT xmail_send_msg_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 09/02/88 0745.9 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 /****^ HISTORY COMMENTS: 13* 1) change(86-01-07,Blair), approve(86-02-26,MCR7358), 14* audit(86-04-18,RBarstad), install(86-05-28,MR12.0-1062): 15* 85-04-01 JG Backs: Deleted the constant ASK because it was added to the 16* include file xmail_responses.incl.pl1 and resulted in a compiler warning. 17* 2) change(86-01-07,Blair), approve(86-02-26,MCR7358), 18* audit(86-04-18,RBarstad), install(86-05-28,MR12.0-1062): 19* Rearrange code to print the stmt that the message was sent before 20* querying the user about whether he wants to save the message. 21* 3) change(86-01-17,Blair), approve(86-02-26,MCR7358), 22* audit(86-04-18,RBarstad), install(86-05-28,MR12.0-1062): 23* Set the bit for cleanup_signalled on a quit condition (signalled by 24* hitting break in response to *do you really want to quit*) so that the 25* calling program will know that the message still exists. TR 20028. 26* 4) change(86-01-28,Blair), approve(86-02-26,MCR7358), 27* audit(86-04-18,RBarstad), install(86-05-28,MR12.0-1062): 28* Add an on unit for the reissue_query condition inside the quit handler so 29* that questions which the user types break in response to can be reissued. 30* TRs 18711 18974. 31* END HISTORY COMMENTS */ 32 33 34 xmail_send_msg_: proc; 35 36 /* BEGIN DESCRIPTION 37* 38*function: 39* 40* This proc delivers the message prepared by the user to the primary and 41* (if any) the secondary recipients. It uses the mail_system_$deliver_message 42* proc for this. Optionally, it saves the delivered message. It is called as 43* a consequence of the user selecting the "Send" option in the Send Mail Menu. 44* 45*history: 46* 47* 81-07 Written by R. Ignagni, format: style1 48* 49* 83-07-21 DJ Schimke: Modified to use new mail_system calls and version 2 50* mailboxes. 51* 52* 83-10-06 DJ Schimke: Replaced calls to xmail_get_str_ with calls to 53* xmail_get_str_$yes_no. 54* 55* 83-11-23 DJ Schimke: Added support for the new personalization option 56* "Outgoing Savefile" which allows selection of where to file save messages. 57* This also solves the discrepancy between setting "Save Outgoing messages" 58* to "yes" and never having set "Save Outgoing messages". 59* 60* 83-12-07 DJ Schimke: Cleaned up the reporting of delivery results by calling 61* mlsys_utils_$print_delivery_results_ and mlsys_utils_$print_address_field 62* for displaying the failure/success of sending. This module still needs 63* recovery code to allow the sender to correct the bad addresses and continue. 64* 65* 83-12-08 DJ Schimke: Added simple flag to prevent the call to 66* mlsys_util_$free_delivery_results until the call to send the msg has been 67* made. Otherwise, this cleanup will get errors referencing invalid pointers. 68* 69* 84-08-08 JG Backs: Modified for the addition of blind carbon copies. 70* 71* 84-11-07 JG Backs: Deleted the input parameter P_caller, which was not used 72* anywhere in module. This also required modifying xmail_process_user_msgs_, 73* which is the only other module that calls this module. Audit change. 74* 75* 76* 77*END DESCRIPTION 78**/ 79 80 /* CONSTANTS */ 81 82 dcl ACKNOWLEDGE char (14) static options (constant) init ("acknowledge_yn"); 83 dcl ALLOW_SELECTION bit (1) aligned static options (constant) init ("1"b); 84 dcl CONTINUE char (1) static options (constant) init ("c"); 85 dcl ERROR_MESSAGE char (67) static options (constant) init ("Sending of message not completed, due to an internal program error."); 86 dcl ERRORS_ONLY bit (1) aligned static options (constant) init ("1"b); 87 dcl LOG char (1) static options (constant) init ("l"); 88 dcl MAILFILE_SUFFIX char (6) static options (constant) init ("sv.mbx"); 89 dcl NAME char (15) static options (constant) init ("xmail_send_msg_"); 90 dcl NO_SELECTION bit (1) aligned static options (constant) init ("0"b); 91 dcl QUIT char (1) static options (constant) init ("q"); 92 dcl SAVE_MAILBOX char (15) static options (constant) init ("save_mailfile"); 93 dcl SAVE_MESSAGE char (15) static options (constant) init ("save_message_yn"); 94 dcl USE_SCREEN_WIDTH fixed bin aligned static options (constant) init (-1); 95 96 /* AUTOMATIC */ 97 98 dcl acknowledge char (3) var; 99 dcl code fixed bin (35); 100 dcl code1 fixed bin (35); 101 dcl delivery_results_need_cleanup bit (1) aligned; 102 dcl opt fixed bin; 103 dcl save_file char (32) var; 104 dcl save_message char (3) var; 105 dcl sci_ptr ptr; 106 dcl send_area_ptr ptr; 107 dcl yes_sw bit (1) aligned; 108 109 dcl 1 auto_deliver_options like deliver_options; 110 111 /* AREA */ 112 113 dcl send_area area aligned based (send_area_ptr); 114 115 /* CONDITIONS */ 116 117 dcl (cleanup, quit, reissue_query) condition; 118 119 /* EXTERNAL STATIC */ 120 121 dcl iox_$user_output ptr static external; 122 dcl mlsys_et_$no_a_permission ext static fixed bin (35); 123 dcl error_table_$bad_segment fixed bin (35) ext static; 124 125 /* ENTRIES */ 126 127 dcl get_system_free_area_ entry () returns (ptr); 128 dcl ioa_ entry () options (variable); 129 dcl mail_system_$deliver_message entry (ptr, ptr, ptr, fixed bin (35)); 130 dcl mlsys_utils_$free_delivery_results entry (ptr, fixed bin (35)); 131 dcl mlsys_utils_$print_delivery_results entry (ptr, bit (1) aligned, ptr, fixed bin (35)); 132 dcl mlsys_utils_$print_address_list_field entry (char (*) var, ptr, fixed bin, ptr, fixed bin (35)); 133 dcl ssu_$standalone_invocation entry (ptr, char (*), char (*), ptr, entry, fixed bin (35)); 134 dcl ssu_$destroy_invocation entry (ptr); 135 dcl xmail_error_$code_first entry () options (variable); 136 dcl xmail_error_$no_code entry () options (variable); 137 dcl xmail_error_$no_print entry () options (variable); 138 dcl xmail_file_msgs_$single_msg entry (ptr, char (32) var, bit (1) aligned); 139 dcl xmail_get_str_$yes_no entry (char (*) var, bit (1) aligned); 140 dcl xmail_send_msg_$ssu_exit entry (); 141 dcl xmail_window_manager_$quit_handler entry () returns (bit (1) aligned); 142 dcl xmail_window_manager_$reconnect entry (); 143 dcl xmail_value_$get entry (char (*), char (*) var, fixed bin (35)); 144 dcl xmail_value_$get_with_default entry (char (*), char (*) var, char (*) var, fixed bin (35)); 145 146 /* BUILTINS */ 147 dcl (addr, null) builtin; 148 149 150 /* INCLUDE FILES */ 151 1 1 /* BEGIN INCLUDE FILE: xmail_data.incl.pl1 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(85-12-20,Blair), approve(86-03-06,MCR7358), 1 6* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 1 7* Modified 03/15/85 by Joanne Backs adding confirm_print flag. 1 8* 2) change(85-12-20,LJAdams), approve(86-03-06,MCR7358), 1 9* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 1 10* Adding switch to indicate request for menu display came from general help. 1 11* This is so general help menu will be displayed in top screen. 1 12* 3) change(86-01-10,Blair), approve(86-03-06,MCR7358), 1 13* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 1 14* Add switch to indicate whether or not it is permissible to process mail 1 15* in other users' mailboxes (foreign_mailbox). 1 16* 4) change(86-01-13,Blair), approve(86-03-06,MCR7358), 1 17* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 1 18* Add bit to indicate whether or not this is a true cleanup condition. 1 19* 5) change(86-02-06,Blair), approve(86-03-06,MCR7358), 1 20* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 1 21* Rearrange to group all the bit flags together in one word with a pad. 1 22* 6) change(86-03-05,Blair), approve(86-03-05,MCR7358), 1 23* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 1 24* Change value_seg ptr to value_seg_pathname to avoid the situation where 1 25* you keep around a pointer to a structure which no longer exists. 1 26* 7) change(87-01-16,Blair), approve(87-02-05,MCR7618), 1 27* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 1 28* Add a field to indicate whether or not we should process interactive msgs. 1 29* Increment version to 4.1 so default value will get set. 1 30* 8) change(87-02-13,Blair), approve(87-02-13,MCR7618), 1 31* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 1 32* Add a field to indicate whether or not we're processing a reply so that we 1 33* will be able to rebuild the screens properly after a disconnect occurs. 1 34* Error_list #114. 1 35* 9) change(88-07-26,Blair), approve(88-07-26,MCR7959), 1 36* audit(88-08-25,RBarstad), install(88-09-02,MR12.2-1098): 1 37* Add a bit to indicate whether or not the error segment had to be created 1 38* in the pdir (because we didn't have sma access to the mlsys_dir). 1 39* END HISTORY COMMENTS */ 1 40 1 41 1 42 /* Written 5/13/81 by Paul H. Kyzivat */ 1 43 /* Modified 12/16/81 by S. Krupp to delete unused parts of structure 1 44* and to add n_fkeys_used */ 1 45 /* Modified 12/14/82 by Dave Schimke to make the xmail version a 10 character 1 46* varying string. */ 1 47 /* Modified 09/12/83 by Dave Schimke adding interactive_msgs flag */ 1 48 /* Modified 09/14/83 by Dave Schimke adding moved_user_io */ 1 49 /* Modified 09/06/84 by Joanne Backs adding lists_as_menus flag */ 1 50 /* Modified 09/21/84 by Joanne Backs adding remove_menus flag */ 1 51 1 52 dcl xmail_data_ptr external static ptr init (null); 1 53 1 54 dcl 1 xmail_data aligned based (xmail_data_ptr), 1 55 2 mail_dir char (168) varying, 1 56 2 first_label label, 1 57 2 quit_label label, 1 58 2 value_seg_pathname char (168) varying, 1 59 2 moved_user_io ptr, 1 60 2 normal_usage char (80) unal, 1 61 2 function_key_info, 1 62 3 function_key_data_ptr ptr, 1 63 3 n_fkeys_used fixed bin, 1 64 2 actee, 1 65 3 person char(32) varying, 1 66 3 project char(32) varying, 1 67 2 flags aligned, 1 68 3 mail_in_incoming bit (1) unal, 1 69 3 lists_as_menus bit (1) unal, /* personalization */ 1 70 3 remove_menus bit (1) unal, /* personalization */ 1 71 3 confirm_print bit (1) unal, /* personalization */ 1 72 3 multics_mode bit (1) unal, /* personalization */ 1 73 3 interactive_msgs bit (1) unal, /* personalization */ 1 74 3 foreign_mailbox bit (1) unal, /* read others' mailboxes */ 1 75 3 general_help bit (1) unal, /* indicated requesting gen help*/ 1 76 3 cleanup_signalled bit (1) unal, /* on when true cleanup condition */ 1 77 3 msgs_as_mail bit (1) unal, /* on for include_msgs */ 1 78 3 reply_request bit (1) unal, /* on if we're doing a reply */ 1 79 3 error_seg_in_pdir bit (1) unal, /* on if the error_seg is in the pdir */ 1 80 3 pad bit (24) unal; 1 81 1 82 1 83 1 84 dcl xmail_version char(10) var static options(constant) init("4.1"); 1 85 1 86 /* END INCLUDE FILE: xmail_data.incl.pl1 */ 152 153 2 1 /* BEGIN INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 2 2 /* Created: June 1983 by G. Palter */ 2 3 2 4 /* Options for the mail_system_$deliver_message and mail_system_$redistribute_message entrypoints */ 2 5 2 6 dcl 1 deliver_options aligned based (deliver_options_ptr), 2 7 2 version character (8) unaligned, 2 8 2 delivery_mode fixed binary, /* deliver as an ordinary/interactive/express message */ 2 9 2 queueing_mode fixed binary, /* when to queue the message */ 2 10 2 queued_notification_mode fixed binary, /* when to notify sender about queued mail success/failure */ 2 11 2 flags, 2 12 3 abort bit (1) unaligned, /* ON => don't send it if any fatal errors are detected */ 2 13 3 send_if_empty bit (1) unaligned, /* ON => send the message even if its body is empty */ 2 14 3 recipient_notification bit (1) unaligned, /* ON => send "You have mail." notification */ 2 15 3 acknowledge bit (1) unaligned, /* ON => request ACK message when recipients read it */ 2 16 3 queue_mailing_lists bit (1) unaligned, /* ON => always queue the message for mailing lists */ 2 17 3 mbz bit (31) unaligned; /* must be set to ""b by the caller */ 2 18 2 19 dcl DELIVER_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsdlo02"); 2 20 2 21 dcl deliver_options_ptr pointer; 2 22 2 23 /* Defined modes of delivery */ 2 24 2 25 dcl (ORDINARY_DELIVERY initial (1), /* send as an ordinary message */ 2 26 INTERACTIVE_DELIVERY initial (2), /* send as an interactive message */ 2 27 EXPRESS_DELIVERY initial (3)) /* send as an express interactive message; ie: deliver the 2 28* message only if the user is logged in */ 2 29 fixed binary static options (constant); 2 30 2 31 /* Defined modes for queuing mail on transient errors */ 2 32 2 33 dcl (NEVER_QUEUE initial (1), /* never queue: convert into a fatal error */ 2 34 QUEUE_FOREIGN_WHEN_NEEDED initial (2), /* never queue local mail; queue foreign mail on error */ 2 35 QUEUE_WHEN_NEEDED initial (3), /* queue all mail on any transient error */ 2 36 ALWAYS_QUEUE_FOREIGN initial (4), /* queue local mail on error; always queue foreign mail */ 2 37 ALWAYS_QUEUE initial (5)) /* always queue all mail */ 2 38 fixed binary static options (constant); 2 39 2 40 /* Defined modes of notification of success/failure to deliver queued mail */ 2 41 2 42 dcl (NEVER_NOTIFY initial (1), /* never notify the sender */ 2 43 NOTIFY_ON_ERROR initial (2), /* notify the sender only if it can not be delivered */ 2 44 ALWAYS_NOTIFY initial (3)) /* always notify the sender */ 2 45 fixed binary static options (constant); 2 46 2 47 /* Definition of the recipients of a message and the results of the attempted transmission */ 2 48 2 49 dcl 1 recipients_info aligned based (recipients_info_ptr), 2 50 2 header, 2 51 3 version character (8) unaligned, 2 52 3 area_ptr pointer, /* -> area for following structures; null => system free */ 2 53 3 expanded_recipients_result_list_ptr pointer, /* set -> expanded_recipients_result_list (if any) */ 2 54 3 n_recipients fixed binary, /* set to total # of recipients after expanding lists */ 2 55 3 n_unique_recipients fixed binary, /* set to total # of unique recipients */ 2 56 3 n_failed_recipients fixed binary, /* set to # of recipients that failed or would fail */ 2 57 3 n_lists fixed binary, /* # of address lists of recipients */ 2 58 2 lists (recipients_info_n_lists refer (recipients_info.n_lists)), 2 59 3 address_list_ptr pointer, /* -> an address list containing recipients */ 2 60 3 recipients_result_list_ptr pointer; /* set -> recipients_result_list for this address list */ 2 61 2 62 dcl RECIPIENTS_INFO_VERSION_2 character (8) static options (constant) initial ("mlsrcpt2"); 2 63 2 64 dcl (recipients_info_ptr, recipients_result_list_ptr, expanded_recipients_result_list_ptr) pointer; 2 65 2 66 dcl (recipients_info_n_lists, recipients_result_list_n_addresses, expanded_recipients_result_list_n_entries) 2 67 fixed binary; /* used to allocate these structures */ 2 68 2 69 2 70 /* Data structure returned by the mail system recording the results of the mailing for one of the input address lists */ 2 71 2 72 dcl 1 recipients_result_list aligned based (recipients_result_list_ptr), 2 73 2 n_addresses fixed binary, /* set to # of address in corresponding address list */ 2 74 2 pad bit (36), 2 75 2 results (recipients_result_list_n_addresses refer (recipients_result_list.n_addresses)), 2 76 3 code fixed binary (35), /* set to describe results of attempted delivery */ 2 77 3 expanded_list_info, /* set to identify any failing addresses found in the 2 78* expansion of this address ... */ 2 79 4 first_entry_idx fixed binary (18) unaligned unsigned, 2 80 /* ... index of first such address in structure below ... */ 2 81 4 n_entries fixed binary (18) unaligned unsigned,/* ... # of such addresses there for this address */ 2 82 3 duplicate_info, /* set to identify the prior address (if any) for which this 2 83* is a duplicate ... */ 2 84 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 2 85 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 2 86 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 2 87* being queued due to a transient error */ 2 88 2 89 2 90 /* Describes fatal or transient errors for those recipients which are part of mailing lists of named groups in one of the 2 91* caller's address lists */ 2 92 2 93 dcl 1 expanded_recipients_result_list aligned based (expanded_recipients_result_list_ptr), 2 94 2 n_entries fixed binary, /* set to # of failing expanded recipients */ 2 95 2 pad bit (36), 2 96 2 entries (expanded_recipients_result_list_n_entries refer (expanded_recipients_result_list.n_entries)), 2 97 3 address_ptr pointer, /* -> the failing address from the list/group */ 2 98 3 code fixed binary (35), /* set to describe why delivery failed */ 2 99 3 parent_address, /* set to identify the original recipient of whose expansion 2 100* this address is a part ... */ 2 101 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 2 102 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 2 103 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 2 104* being queued due to a transient error */ 2 105 2 106 /* END INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 154 155 3 1 /* BEGIN INCLUDE FILE xmail_responses.incl.pl1 */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-02-07,Blair), approve(86-03-06,MCR7358), 3 5* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 6* 85-03-05 JG Backs: Modified to add a response of date. 3 7* 85-03-11 JG Backs: Modified to add short forms of keywords (a,l,p,f). 3 8* 85-03-14 JG Backs: Modified to add ASK, SET, and S. 3 9* 2) change(86-02-07,Blair), approve(86-03-06,MCR7358), 3 10* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 11* Modify to add SEEN and UNSEEN. 3 12* END HISTORY COMMENTS */ 3 13 3 14 /* Created 06/17/81 by Suzanne Krupp */ 3 15 3 16 dcl (QUESTION char(1) init("?"), 3 17 LIST char(2) init("??"), 3 18 A char(1) init("a"), 3 19 ALL char(3) init("all"), 3 20 ASK char(3) init("ask"), 3 21 DATE char(4) init("date"), 3 22 F char(1) init("f"), 3 23 FIRST char(5) init("first"), 3 24 L char(1) init("l"), 3 25 LAST char(4) init("last"), 3 26 N char (1) init ("n"), 3 27 NO char(2) init("no"), 3 28 NEXT char(4) init("next"), 3 29 NEW char(3) init("new"), 3 30 P char(1) init("p"), 3 31 PREV char(4) init("prev"), 3 32 S char(1) init("s"), 3 33 SEEN char (4) init("seen"), 3 34 SET char(3) init("set"), 3 35 SEARCH char(6) init("search"), 3 36 UNSEEN char (6) init("unseen"), 3 37 Y char (1) init ("y"), 3 38 YES char(3) init("yes")) 3 39 int static options(constant); 3 40 3 41 /* END INCLUDE FILE ... xmail_responses.incl.pl1 */ 156 157 4 1 /* BEGIN INCLUDE FILE ... xmail_send_mail.incl.pl1 */ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(87-08-10,Blair), approve(87-12-17,MCR7818), 4 5* audit(87-12-23,LJAdams), install(88-01-12,MR12.2-1013): 4 6* Add pointer for reply_to field. 4 7* END HISTORY COMMENTS */ 4 8 4 9 /* Created by R. Ignagni July 1981 */ 4 10 4 11 /* 84-08-06 JG Backs: Modified to add pointer for bcc. */ 4 12 4 13 dcl 1 send_mail_info aligned based (send_mail_info_ptr), 4 14 2 msg_exists bit (1), /* ON = new message exists */ 4 15 2 stored_seg_ptr ptr, /* ptr to stored msg seg */ 4 16 2 emacs_seg_ptr ptr, /* ptr to seg containing msg */ 4 17 2 new_msg_ptr ptr, /* ptr to new_msg structure */ 4 18 2 reply_to_list_ptr ptr, /* ptr to reply_to addr struct */ 4 19 2 to_list_ptr ptr, /* ptr to recipients addr struct */ 4 20 2 cc_list_ptr ptr, /* ptr to cc address structure */ 4 21 2 bcc_list_ptr ptr, /* ptr to bcc address structure */ 4 22 2 send_mail_area_ptr ptr, /* ptr to send_mail_area */ 4 23 2 emacs_seg_pathname char (168); 4 24 4 25 4 26 dcl send_mail_info_ptr ptr external static init (null); 4 27 4 28 /* END INCLUDE FILE xmail_send_mail.inl.pl1 */ 158 159 5 1 /* begin include fine window_dcls.incl.pl1 BIM June 1981 */ 5 2 /* Modified 9 October 1983 by Jon A. Rochlis to add window_$edit_line. */ 5 3 5 4 /* format: style3 */ 5 5 5 6 declare window_$bell entry (pointer, fixed binary (35)); 5 7 declare window_$clear_region 5 8 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary, fixed binary (35)); 5 9 declare window_$clear_to_end_of_line 5 10 entry (pointer, fixed binary (35)); 5 11 declare window_$clear_to_end_of_window 5 12 entry (pointer, fixed binary (35)); 5 13 declare window_$clear_window 5 14 entry (pointer, fixed binary (35)); 5 15 declare window_$delete_chars 5 16 entry (pointer, fixed binary, fixed binary (35)); 5 17 declare window_$get_cursor_position 5 18 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 5 19 5 20 /* Call window_$get_echoed_chars (iocb_ptr, n_to_read, read_buffer, n_read, read_break, code); */ 5 21 5 22 declare window_$get_echoed_chars 5 23 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 5 24 fixed binary (35)); 5 25 declare window_$get_unechoed_chars 5 26 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 5 27 fixed binary (35)); 5 28 declare window_$insert_text entry (pointer, character (*), fixed binary (35)); 5 29 declare window_$overwrite_text 5 30 entry (pointer, character (*), fixed binary (35)); 5 31 declare window_$position_cursor 5 32 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 5 33 5 34 /* Call window_$position_cursor_rel (iocb_ptr, delta_line, delta_column, code); */ 5 35 5 36 declare window_$position_cursor_rel 5 37 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 5 38 5 39 /* Call window_$scroll_region (iocb_ptr, first_line_of_region, n_lines_of_region, distance_to_scroll_region_negative_is_up, 5 40* code); */ 5 41 5 42 declare window_$scroll_region 5 43 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary (35)); 5 44 declare window_$sync entry (pointer, fixed binary (35)); 5 45 5 46 /* Call window_$write_raw_text (iocb_ptr, text_string, code); */ 5 47 5 48 declare window_$write_raw_text 5 49 entry (pointer, character (*), fixed binary (35)); 5 50 5 51 /* Call window_$write_sync_read (iocb_ptr, prompt_string, n_to_read, read_buffer, n_read, break_char, code); */ 5 52 5 53 declare window_$write_sync_read 5 54 entry (pointer, character (*), fixed bin (21), character (*), fixed binary (21), 5 55 character (1) var, fixed binary (35)); 5 56 5 57 /* Call window_$change_line (iocb_ptr, new_line, code); */ 5 58 5 59 declare window_$change_line entry (pointer, fixed binary, fixed binary (35)); 5 60 5 61 /* Call window_$change_column (iocb_ptr, new_column, code); */ 5 62 5 63 declare window_$change_column 5 64 entry (pointer, fixed binary, fixed binary (35)); 5 65 5 66 /* Call window_$get_one_unechoed (iocb_ptr, char_or_len_0, block_flag, code); */ 5 67 declare ( 5 68 window_$get_one_unechoed, 5 69 window_$get_one_unechoed_char 5 70 ) entry (pointer, character (1) var, bit (1) aligned, fixed binary (35)); 5 71 5 72 declare window_$create entry (pointer, pointer, pointer, fixed binary (35)); 5 73 5 74 declare window_$destroy entry (pointer, fixed binary (35)); 5 75 5 76 declare window_$edit_line entry (pointer, pointer, pointer, fixed bin(21), fixed bin(21), fixed bin(35)); 5 77 5 78 /* call window_$edit_line (iocb_ptr, window_edit_line_info_ptr, buffer_ptr, 5 79* buffer_len, n_returned, code); */ 5 80 5 81 5 82 /* end include file window_dcls.incl.pl1 */ 160 161 162 /* BEGIN */ 163 164 recipients_info_ptr, sci_ptr = null (); 165 send_area_ptr = get_system_free_area_ (); 166 delivery_results_need_cleanup = "0"b; 167 xmail_data.flags.cleanup_signalled = "0"b; 168 169 /* See if a message exists */ 170 171 if send_mail_info.msg_exists = "0"b 172 then do; 173 call ioa_ ("There is no message to send."); 174 goto EXIT; 175 end; 176 177 /* Set up conditions */ 178 179 on condition (cleanup) call CLEAN_UP; 180 on condition (quit) 181 begin; 182 on condition (reissue_query) begin; 183 call window_$clear_window (iox_$user_output, (0)); 184 goto RETRY (opt); 185 end; 186 xmail_data.cleanup_signalled = "1"b; 187 if xmail_window_manager_$quit_handler () 188 then do; 189 call window_$clear_window (iox_$user_output, code); 190 if code ^= 0 then do; 191 call xmail_error_$no_print (code, NAME, CONTINUE, 192 "Internal error trying to clear user_output"); 193 call xmail_window_manager_$reconnect (); 194 end; 195 call ioa_ ("Sending message terminated."); 196 call CLEAN_UP; 197 goto EXIT; 198 end; 199 end; 200 201 /* See if there is a "bcc" or "cc" list */ 202 203 if send_mail_info.bcc_list_ptr ^= null () 204 then if send_mail_info.cc_list_ptr ^= null () 205 then recipients_info_n_lists = 3; 206 else recipients_info_n_lists = 2; 207 else if send_mail_info.cc_list_ptr ^= null () 208 then recipients_info_n_lists = 2; 209 else recipients_info_n_lists = 1; 210 211 alloc recipients_info in (send_area) set (recipients_info_ptr); 212 213 /* Add for bcc */ 214 215 if send_mail_info.bcc_list_ptr ^= null () 216 then if send_mail_info.cc_list_ptr ^= null () 217 then do; 218 recipients_info.lists (3).address_list_ptr = send_mail_info.bcc_list_ptr; 219 recipients_info.lists (2).address_list_ptr = send_mail_info.cc_list_ptr; 220 end; 221 else recipients_info.lists (2).address_list_ptr = send_mail_info.bcc_list_ptr; 222 else if send_mail_info.cc_list_ptr ^= null () 223 then recipients_info.lists (2).address_list_ptr = send_mail_info.cc_list_ptr; 224 225 recipients_info.lists (1).address_list_ptr = send_mail_info.to_list_ptr; 226 recipients_info.lists (*).recipients_result_list_ptr = null (); 227 228 recipients_info.version = RECIPIENTS_INFO_VERSION_2; 229 recipients_info.area_ptr = get_system_free_area_ (); 230 auto_deliver_options.version = DELIVER_OPTIONS_VERSION_2; 231 auto_deliver_options.delivery_mode = ORDINARY_DELIVERY; 232 auto_deliver_options.queueing_mode = ALWAYS_QUEUE_FOREIGN; 233 auto_deliver_options.queued_notification_mode = NOTIFY_ON_ERROR; 234 auto_deliver_options.flags.abort = "1"b; 235 auto_deliver_options.flags.send_if_empty = "0"b; 236 auto_deliver_options.flags.recipient_notification = "1"b; 237 238 call xmail_value_$get_with_default (ACKNOWLEDGE, (NO), acknowledge, code); 239 if code ^= 0 then call xmail_error_$code_first (code, NAME, LOG, 240 "^/Unable to get a value for ""^a"" in the xmail value segment. Using the default value instead.", ACKNOWLEDGE); 241 242 if acknowledge = NO 243 then auto_deliver_options.flags.acknowledge = "0"b; 244 else if acknowledge = ASK 245 then do; 246 RETRY (1): 247 opt = 1; 248 call xmail_get_str_$yes_no ("Do you want this message acknowledged? ", yes_sw); 249 if yes_sw then auto_deliver_options.flags.acknowledge = "1"b; 250 else auto_deliver_options.flags.acknowledge = "0"b; 251 end; 252 else if acknowledge = YES 253 then auto_deliver_options.flags.acknowledge = "1"b; 254 else do; 255 call xmail_error_$code_first (error_table_$bad_segment, NAME, LOG, 256 "^/An invalid value for ""^a"" was found in the xmail value segment. Using the default value instead.", ACKNOWLEDGE); 257 auto_deliver_options.flags.acknowledge = "1"b; 258 end; 259 260 auto_deliver_options.flags.queue_mailing_lists = "0"b; 261 auto_deliver_options.flags.mbz = "0"b; 262 263 call mail_system_$deliver_message (send_mail_info.new_msg_ptr, recipients_info_ptr, addr (auto_deliver_options), code); 264 delivery_results_need_cleanup = "1"b; 265 if code ^= 0 then do; 266 send_mail_info.msg_exists = "1"b; 267 if code = mlsys_et_$no_a_permission then call xmail_error_$no_code (code, NAME, CONTINUE, "You do not have permission to send message to at least one of the recipients."); 268 269 if recipients_info.n_failed_recipients > 0 270 then do; 271 call ioa_ ("Message could not be sent."); 272 call ssu_$standalone_invocation (sci_ptr, "", "", null (), xmail_send_msg_$ssu_exit, code1); 273 if code1 = 0 then call mlsys_utils_$print_delivery_results (sci_ptr, ERRORS_ONLY, recipients_info_ptr, code1); 274 else call xmail_error_$no_code (code1, NAME, LOG, "The reason cannot be printed due to an internal programming error"); 275 call ssu_$destroy_invocation (sci_ptr); 276 call xmail_error_$code_first (code, NAME, QUIT); 277 end; 278 call xmail_error_$code_first (code, NAME, QUIT, ERROR_MESSAGE); 279 end; 280 281 /* Report that the messge was sent. */ 282 283 call ioa_ ("Message sent: "); 284 call mlsys_utils_$print_address_list_field ("To", to_list_ptr, USE_SCREEN_WIDTH, null, code); 285 if code ^= 0 then call xmail_error_$no_code (code, NAME, CONTINUE, "Message sent to ""To:"" recipient(s)."); 286 287 if cc_list_ptr ^= null 288 then do; 289 call mlsys_utils_$print_address_list_field ("cc", cc_list_ptr, USE_SCREEN_WIDTH, null, code); 290 if code ^= 0 then call xmail_error_$no_code (code, NAME, CONTINUE, "Message sent to ""cc:"" recipient(s)."); 291 end; 292 else call ioa_ ("cc: "); 293 294 /* Add for bcc */ 295 296 if bcc_list_ptr ^= null 297 then do; 298 call mlsys_utils_$print_address_list_field ("bcc", bcc_list_ptr, USE_SCREEN_WIDTH, null, code); 299 if code ^= 0 then call xmail_error_$no_code (code, NAME, CONTINUE, "Message sent to ""bcc:"" recipient(s)."); 300 end; 301 else call ioa_ ("bcc: "); 302 303 /* Is this message to be saved? */ 304 305 call xmail_value_$get (SAVE_MAILBOX, save_file, code); 306 if code ^= 0 then call xmail_error_$code_first (code, NAME, LOG, 307 "^/Unable to get a value for ""^a"" in the xmail value segment. Using the default value instead.", SAVE_MAILBOX); 308 309 call xmail_value_$get (SAVE_MESSAGE, save_message, code); 310 if code ^= 0 then call xmail_error_$code_first (code, NAME, LOG, 311 "^/Unable to get a value for ""^a"" in the xmail value segment. Using the default value instead.", SAVE_MESSAGE); 312 313 if save_message = YES 314 then do; 315 if save_file = ASK 316 then call xmail_file_msgs_$single_msg (send_mail_info.new_msg_ptr, "outgoing", ALLOW_SELECTION); 317 else call xmail_file_msgs_$single_msg (send_mail_info.new_msg_ptr, minus_suffix ((save_file), (MAILFILE_SUFFIX)), NO_SELECTION); 318 end; 319 320 else if save_message = ASK 321 then do; 322 RETRY (2): 323 opt = 2; 324 call xmail_get_str_$yes_no ("Do you wish to save a copy of this message? ", yes_sw); 325 if yes_sw then do; 326 if save_file = ASK 327 then call xmail_file_msgs_$single_msg (send_mail_info.new_msg_ptr, "outgoing", ALLOW_SELECTION); 328 else call xmail_file_msgs_$single_msg (send_mail_info.new_msg_ptr, minus_suffix ((save_file), (MAILFILE_SUFFIX)), NO_SELECTION); 329 end; 330 end; 331 332 else if save_message ^= NO 333 then call xmail_error_$code_first (error_table_$bad_segment, NAME, "q", 334 "^/An invalid value for ""^a"" was found in the xmail value segment.", SAVE_MESSAGE); 335 336 call CLEAN_UP; 337 EXIT: return; 338 339 /* ENTRY POINTS */ 340 341 ssu_exit: entry; 342 343 /* This entry doesn't do anything but it is called by ssu_$print_message */ 344 /* which is called by mlsys_utils_$print_delivery_results. */ 345 346 return; 347 348 /* INTERNAL PROCEDURES */ 349 350 minus_suffix: proc (name, suffix) returns (char (*) var); 351 352 /* PARAMETERS */ 353 354 dcl name char (*); 355 dcl suffix char (*); 356 357 /* AUTOMATIC */ 358 359 dcl reverse_name char (length (name)) var; 360 dcl reverse_suffix char (length (suffix)) var; 361 362 /* BUILTINS */ 363 364 dcl (after, index, length, reverse, rtrim) builtin; 365 366 reverse_name = reverse (rtrim (name)); 367 reverse_suffix = reverse (rtrim (suffix)); 368 369 if index (reverse_name, reverse_suffix || ".") ^= 1 370 then return (name); 371 else return (reverse (after (reverse_name, reverse_suffix || "."))); 372 373 end minus_suffix; 374 375 CLEAN_UP: proc (); 376 377 if sci_ptr ^= null 378 then call ssu_$destroy_invocation (sci_ptr); 379 380 if recipients_info_ptr ^= null () 381 then do; 382 if delivery_results_need_cleanup then do; 383 call mlsys_utils_$free_delivery_results (recipients_info_ptr, code1); 384 if code1 ^= 0 then call xmail_error_$no_print (code1, NAME, CONTINUE, "While cleaning up delivery results."); 385 end; 386 free recipients_info in (send_area); 387 recipients_info_ptr = null (); 388 end; 389 390 return; 391 end CLEAN_UP; 392 393 end xmail_send_msg_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/02/88 0745.9 xmail_send_msg_.pl1 >spec>install>MR12.2-1098>xmail_send_msg_.pl1 152 1 09/02/88 0743.4 xmail_data.incl.pl1 >spec>install>MR12.2-1098>xmail_data.incl.pl1 154 2 10/27/83 2104.2 mlsys_deliver_info.incl.pl1 >ldd>include>mlsys_deliver_info.incl.pl1 156 3 05/28/86 1117.7 xmail_responses.incl.pl1 >ldd>include>xmail_responses.incl.pl1 158 4 01/14/88 2003.9 xmail_send_mail.incl.pl1 >ldd>include>xmail_send_mail.incl.pl1 160 5 09/12/84 0916.7 window_dcls.incl.pl1 >ldd>include>window_dcls.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. ACKNOWLEDGE 000051 constant char(14) initial packed unaligned dcl 82 set ref 238* 239* 255* ALLOW_SELECTION 000116 constant bit(1) initial dcl 83 set ref 315* 326* ALWAYS_QUEUE_FOREIGN constant fixed bin(17,0) initial dcl 2-33 ref 232 ASK 000003 constant char(3) initial packed unaligned dcl 3-16 ref 244 315 320 326 CONTINUE 000050 constant char(1) initial packed unaligned dcl 84 set ref 191* 267* 285* 290* 299* 384* DELIVER_OPTIONS_VERSION_2 000006 constant char(8) initial packed unaligned dcl 2-19 ref 230 ERRORS_ONLY 000116 constant bit(1) initial dcl 86 set ref 273* ERROR_MESSAGE 000027 constant char(67) initial packed unaligned dcl 85 set ref 278* LOG 000026 constant char(1) initial packed unaligned dcl 87 set ref 239* 255* 274* 306* 310* MAILFILE_SUFFIX 000024 constant char(6) initial packed unaligned dcl 88 ref 317 328 NAME 000020 constant char(15) initial packed unaligned dcl 89 set ref 191* 239* 255* 267* 274* 276* 278* 285* 290* 299* 306* 310* 332* 384* NO 003176 constant char(2) initial packed unaligned dcl 3-16 ref 238 242 332 NOTIFY_ON_ERROR constant fixed bin(17,0) initial dcl 2-42 ref 233 NO_SELECTION 000120 constant bit(1) initial dcl 90 set ref 317* 328* ORDINARY_DELIVERY constant fixed bin(17,0) initial dcl 2-25 ref 231 QUIT 000064 constant char(1) initial packed unaligned dcl 91 set ref 276* 278* RECIPIENTS_INFO_VERSION_2 000004 constant char(8) initial packed unaligned dcl 2-62 ref 228 SAVE_MAILBOX 000014 constant char(15) initial packed unaligned dcl 92 set ref 305* 306* SAVE_MESSAGE 000010 constant char(15) initial packed unaligned dcl 93 set ref 309* 310* 332* USE_SCREEN_WIDTH 000060 constant fixed bin(17,0) initial dcl 94 set ref 284* 289* 298* YES 000002 constant char(3) initial packed unaligned dcl 3-16 ref 252 313 abort 5 000127 automatic bit(1) level 3 packed packed unaligned dcl 109 set ref 234* acknowledge 000100 automatic varying char(3) dcl 98 in procedure "xmail_send_msg_" set ref 238* 242 244 252 acknowledge 5(03) 000127 automatic bit(1) level 3 in structure "auto_deliver_options" packed packed unaligned dcl 109 in procedure "xmail_send_msg_" set ref 242* 249* 250* 252* 257* addr builtin function dcl 147 ref 263 263 address_list_ptr 12 based pointer array level 3 dcl 2-49 set ref 218* 219* 221* 222* 225* after builtin function dcl 364 ref 371 area_ptr 2 based pointer level 3 dcl 2-49 set ref 229* auto_deliver_options 000127 automatic structure level 1 unaligned dcl 109 set ref 263 263 bcc_list_ptr 16 based pointer level 2 dcl 4-13 set ref 203 215 218 221 296 298* cc_list_ptr 14 based pointer level 2 dcl 4-13 set ref 203 207 215 219 222 222 287 289* cleanup 000136 stack reference condition dcl 117 ref 179 cleanup_signalled 213(08) based bit(1) level 3 packed packed unaligned dcl 1-54 set ref 167* 186* code 000102 automatic fixed bin(35,0) dcl 99 set ref 189* 190 191* 238* 239 239* 263* 265 267 267* 276* 278* 284* 285 285* 289* 290 290* 298* 299 299* 305* 306 306* 309* 310 310* code1 000103 automatic fixed bin(35,0) dcl 100 set ref 272* 273 273* 274* 383* 384 384* deliver_options based structure level 1 dcl 2-6 delivery_mode 2 000127 automatic fixed bin(17,0) level 2 dcl 109 set ref 231* delivery_results_need_cleanup 000104 automatic bit(1) dcl 101 set ref 166* 264* 382 error_table_$bad_segment 000014 external static fixed bin(35,0) dcl 123 set ref 255* 332* flags 5 000127 automatic structure level 2 in structure "auto_deliver_options" packed packed unaligned dcl 109 in procedure "xmail_send_msg_" flags 213 based structure level 2 in structure "xmail_data" dcl 1-54 in procedure "xmail_send_msg_" get_system_free_area_ 000016 constant entry external dcl 127 ref 165 229 header based structure level 2 dcl 2-49 index builtin function dcl 364 ref 369 ioa_ 000020 constant entry external dcl 128 ref 173 195 271 283 292 301 iox_$user_output 000010 external static pointer dcl 121 set ref 183* 189* length builtin function dcl 364 ref 359 360 lists 12 based structure array level 2 dcl 2-49 mail_system_$deliver_message 000022 constant entry external dcl 129 ref 263 mbz 5(05) 000127 automatic bit(31) level 3 packed packed unaligned dcl 109 set ref 261* mlsys_et_$no_a_permission 000012 external static fixed bin(35,0) dcl 122 ref 267 mlsys_utils_$free_delivery_results 000024 constant entry external dcl 130 ref 383 mlsys_utils_$print_address_list_field 000030 constant entry external dcl 132 ref 284 289 298 mlsys_utils_$print_delivery_results 000026 constant entry external dcl 131 ref 273 msg_exists based bit(1) level 2 dcl 4-13 set ref 171 266* n_failed_recipients 10 based fixed bin(17,0) level 3 dcl 2-49 ref 269 n_lists 11 based fixed bin(17,0) level 3 dcl 2-49 set ref 211* 226 386 name parameter char packed unaligned dcl 354 ref 350 359 366 369 new_msg_ptr 6 based pointer level 2 dcl 4-13 set ref 263* 315* 317* 326* 328* null builtin function dcl 147 ref 164 203 203 207 215 215 222 226 272 272 284 284 287 289 289 296 298 298 377 380 387 opt 000105 automatic fixed bin(17,0) dcl 102 set ref 184 246* 322* queue_mailing_lists 5(04) 000127 automatic bit(1) level 3 packed packed unaligned dcl 109 set ref 260* queued_notification_mode 4 000127 automatic fixed bin(17,0) level 2 dcl 109 set ref 233* queueing_mode 3 000127 automatic fixed bin(17,0) level 2 dcl 109 set ref 232* quit 000144 stack reference condition dcl 117 ref 180 recipient_notification 5(02) 000127 automatic bit(1) level 3 packed packed unaligned dcl 109 set ref 236* recipients_info based structure level 1 dcl 2-49 set ref 211 386 recipients_info_n_lists 000154 automatic fixed bin(17,0) dcl 2-66 set ref 203* 206* 207* 209* 211 211 recipients_info_ptr 000152 automatic pointer dcl 2-64 set ref 164* 211* 218 219 221 222 225 226 228 229 263* 269 273* 380 383* 386 387* recipients_result_list_ptr 14 based pointer array level 3 dcl 2-49 set ref 226* reissue_query 000000 stack reference condition dcl 117 ref 182 reverse builtin function dcl 364 ref 366 367 371 reverse_name 000100 automatic varying char dcl 359 set ref 366* 369 371 reverse_suffix 000100 automatic varying char dcl 360 set ref 367* 369 371 rtrim builtin function dcl 364 ref 366 367 save_file 000106 automatic varying char(32) dcl 103 set ref 305* 315 317 326 328 save_message 000120 automatic varying char(3) dcl 104 set ref 309* 313 320 332 sci_ptr 000122 automatic pointer dcl 105 set ref 164* 272* 273* 275* 377 377* send_area based area(1024) dcl 113 ref 211 386 send_area_ptr 000124 automatic pointer dcl 106 set ref 165* 211 386 send_if_empty 5(01) 000127 automatic bit(1) level 3 packed packed unaligned dcl 109 set ref 235* send_mail_info based structure level 1 dcl 4-13 send_mail_info_ptr 000064 external static pointer initial dcl 4-26 ref 171 203 203 207 215 215 218 219 221 222 222 225 263 266 284 287 289 296 298 315 317 326 328 ssu_$destroy_invocation 000034 constant entry external dcl 134 ref 275 377 ssu_$standalone_invocation 000032 constant entry external dcl 133 ref 272 suffix parameter char packed unaligned dcl 355 ref 350 360 367 to_list_ptr 12 based pointer level 2 dcl 4-13 set ref 225 284* version based char(8) level 3 in structure "recipients_info" packed packed unaligned dcl 2-49 in procedure "xmail_send_msg_" set ref 228* version 000127 automatic char(8) level 2 in structure "auto_deliver_options" packed packed unaligned dcl 109 in procedure "xmail_send_msg_" set ref 230* window_$clear_window 000066 constant entry external dcl 5-13 ref 183 189 xmail_data based structure level 1 dcl 1-54 xmail_data_ptr 000062 external static pointer initial dcl 1-52 ref 167 186 xmail_error_$code_first 000036 constant entry external dcl 135 ref 239 255 276 278 306 310 332 xmail_error_$no_code 000040 constant entry external dcl 136 ref 267 274 285 290 299 xmail_error_$no_print 000042 constant entry external dcl 137 ref 191 384 xmail_file_msgs_$single_msg 000044 constant entry external dcl 138 ref 315 317 326 328 xmail_get_str_$yes_no 000046 constant entry external dcl 139 ref 248 324 xmail_send_msg_$ssu_exit 000050 constant entry external dcl 140 ref 272 272 xmail_value_$get 000056 constant entry external dcl 143 ref 305 309 xmail_value_$get_with_default 000060 constant entry external dcl 144 ref 238 xmail_window_manager_$quit_handler 000052 constant entry external dcl 141 ref 187 xmail_window_manager_$reconnect 000054 constant entry external dcl 142 ref 193 yes_sw 000126 automatic bit(1) dcl 107 set ref 248* 249 324* 325 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A internal static char(1) initial packed unaligned dcl 3-16 ALL internal static char(3) initial packed unaligned dcl 3-16 ALWAYS_NOTIFY internal static fixed bin(17,0) initial dcl 2-42 ALWAYS_QUEUE internal static fixed bin(17,0) initial dcl 2-33 DATE internal static char(4) initial packed unaligned dcl 3-16 EXPRESS_DELIVERY internal static fixed bin(17,0) initial dcl 2-25 F internal static char(1) initial packed unaligned dcl 3-16 FIRST internal static char(5) initial packed unaligned dcl 3-16 INTERACTIVE_DELIVERY internal static fixed bin(17,0) initial dcl 2-25 L internal static char(1) initial packed unaligned dcl 3-16 LAST internal static char(4) initial packed unaligned dcl 3-16 LIST internal static char(2) initial packed unaligned dcl 3-16 N internal static char(1) initial packed unaligned dcl 3-16 NEVER_NOTIFY internal static fixed bin(17,0) initial dcl 2-42 NEVER_QUEUE internal static fixed bin(17,0) initial dcl 2-33 NEW internal static char(3) initial packed unaligned dcl 3-16 NEXT internal static char(4) initial packed unaligned dcl 3-16 P internal static char(1) initial packed unaligned dcl 3-16 PREV internal static char(4) initial packed unaligned dcl 3-16 QUESTION internal static char(1) initial packed unaligned dcl 3-16 QUEUE_FOREIGN_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 2-33 QUEUE_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 2-33 S internal static char(1) initial packed unaligned dcl 3-16 SEARCH internal static char(6) initial packed unaligned dcl 3-16 SEEN internal static char(4) initial packed unaligned dcl 3-16 SET internal static char(3) initial packed unaligned dcl 3-16 UNSEEN internal static char(6) initial packed unaligned dcl 3-16 Y internal static char(1) initial packed unaligned dcl 3-16 deliver_options_ptr automatic pointer dcl 2-21 expanded_recipients_result_list based structure level 1 dcl 2-93 expanded_recipients_result_list_n_entries automatic fixed bin(17,0) dcl 2-66 expanded_recipients_result_list_ptr automatic pointer dcl 2-64 recipients_result_list based structure level 1 dcl 2-72 recipients_result_list_n_addresses automatic fixed bin(17,0) dcl 2-66 recipients_result_list_ptr automatic pointer dcl 2-64 window_$bell 000000 constant entry external dcl 5-6 window_$change_column 000000 constant entry external dcl 5-63 window_$change_line 000000 constant entry external dcl 5-59 window_$clear_region 000000 constant entry external dcl 5-7 window_$clear_to_end_of_line 000000 constant entry external dcl 5-9 window_$clear_to_end_of_window 000000 constant entry external dcl 5-11 window_$create 000000 constant entry external dcl 5-72 window_$delete_chars 000000 constant entry external dcl 5-15 window_$destroy 000000 constant entry external dcl 5-74 window_$edit_line 000000 constant entry external dcl 5-76 window_$get_cursor_position 000000 constant entry external dcl 5-17 window_$get_echoed_chars 000000 constant entry external dcl 5-22 window_$get_one_unechoed 000000 constant entry external dcl 5-67 window_$get_one_unechoed_char 000000 constant entry external dcl 5-67 window_$get_unechoed_chars 000000 constant entry external dcl 5-25 window_$insert_text 000000 constant entry external dcl 5-28 window_$overwrite_text 000000 constant entry external dcl 5-29 window_$position_cursor 000000 constant entry external dcl 5-31 window_$position_cursor_rel 000000 constant entry external dcl 5-36 window_$scroll_region 000000 constant entry external dcl 5-42 window_$sync 000000 constant entry external dcl 5-44 window_$write_raw_text 000000 constant entry external dcl 5-48 window_$write_sync_read 000000 constant entry external dcl 5-53 xmail_version internal static varying char(10) initial dcl 1-84 NAMES DECLARED BY EXPLICIT CONTEXT. CLEAN_UP 003062 constant entry internal dcl 375 ref 179 196 336 EXIT 002620 constant label dcl 337 ref 174 197 RETRY 000000 constant label array(2) dcl 246 ref 184 minus_suffix 002631 constant entry internal dcl 350 ref 317 328 ssu_exit 002622 constant entry external dcl 341 xmail_send_msg_ 000451 constant entry external dcl 34 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3624 3714 3200 3634 Length 4274 3200 70 344 423 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xmail_send_msg_ 250 external procedure is an external procedure. on unit on line 179 64 on unit on unit on line 180 112 on unit enables or reverts conditions. on unit on line 182 72 on unit minus_suffix 81 internal procedure uses auto adjustable storage, uses returns(char(*)) or returns(bit(*)), and is called during a stack extension. CLEAN_UP 102 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME minus_suffix 000100 reverse_name minus_suffix 000100 reverse_suffix minus_suffix xmail_send_msg_ 000100 acknowledge xmail_send_msg_ 000102 code xmail_send_msg_ 000103 code1 xmail_send_msg_ 000104 delivery_results_need_cleanup xmail_send_msg_ 000105 opt xmail_send_msg_ 000106 save_file xmail_send_msg_ 000120 save_message xmail_send_msg_ 000122 sci_ptr xmail_send_msg_ 000124 send_area_ptr xmail_send_msg_ 000126 yes_sw xmail_send_msg_ 000127 auto_deliver_options xmail_send_msg_ 000152 recipients_info_ptr xmail_send_msg_ 000154 recipients_info_n_lists xmail_send_msg_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return_mac tra_ext_1 alloc_auto_adj enable_op shorten_stack ext_entry int_entry int_entry_desc reverse_cs set_chars_eis index_chars_eis return_chars_eis op_alloc_ op_freen_ index_after_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_system_free_area_ ioa_ mail_system_$deliver_message mlsys_utils_$free_delivery_results mlsys_utils_$print_address_list_field mlsys_utils_$print_delivery_results ssu_$destroy_invocation ssu_$standalone_invocation window_$clear_window xmail_error_$code_first xmail_error_$no_code xmail_error_$no_print xmail_file_msgs_$single_msg xmail_get_str_$yes_no xmail_send_msg_$ssu_exit xmail_value_$get xmail_value_$get_with_default xmail_window_manager_$quit_handler xmail_window_manager_$reconnect THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_segment iox_$user_output mlsys_et_$no_a_permission send_mail_info_ptr xmail_data_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 34 000450 164 000456 165 000461 166 000467 167 000470 171 000475 173 000500 174 000513 179 000514 180 000536 182 000552 183 000566 184 000577 186 000605 187 000612 189 000623 190 000635 191 000640 193 000670 195 000675 196 000711 197 000716 199 000721 203 000722 206 000740 207 000743 209 000752 211 000754 215 000765 218 001000 219 001002 220 001006 221 001007 222 001012 225 001020 226 001024 228 001040 229 001043 230 001052 231 001055 232 001057 233 001061 234 001063 235 001065 236 001067 238 001071 239 001121 242 001157 244 001167 246 001174 248 001176 249 001220 250 001226 251 001230 252 001231 255 001241 257 001275 260 001277 261 001301 263 001303 264 001324 265 001326 266 001330 267 001333 269 001364 271 001367 272 001403 273 001444 274 001464 275 001514 276 001523 278 001544 283 001571 284 001606 285 001646 287 001700 289 001707 290 001744 291 001776 292 001777 296 002014 298 002023 299 002060 300 002112 301 002113 305 002127 306 002150 309 002205 310 002226 313 002263 315 002270 317 002320 318 002401 320 002403 322 002410 324 002412 325 002434 326 002437 328 002467 329 002550 330 002551 332 002552 336 002614 337 002620 341 002621 346 002627 350 002630 359 002651 360 002664 366 002677 367 002730 369 002761 371 003020 375 003061 377 003067 380 003102 382 003107 383 003111 384 003122 386 003155 387 003164 390 003167 ----------------------------------------------------------- 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