COMPILATION LISTING OF SEGMENT xmail_forward_msg_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1130.82_Tue_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 /****^ HISTORY COMMENTS: 14* 1) change(86-01-07,Blair), approve(86-03-19,MCR7358), 15* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 16* 85-04-01 JG Backs: Deleted the constant ASK because it was added to the 17* include file xmail_responses.incl.pl1 and resulted in a compiler warning. 18* 2) change(86-01-07,Blair), approve(86-03-19,MCR7358), 19* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 20* Rearranged the code to perform the savefile after the message has 21* already been forwarded and made the create savefile consistent with 22* reply and send. Took out the allocation of the bcc list in the recip- 23* ient_info structure. 24* 3) change(86-01-28,Blair), approve(86-03-19,MCR7358), 25* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 26* Added an on unit for the reissue_query condition signalled by the 27* xmail_window_manager_$quit_handler routine when the user types a break in 28* response to a question. This allows the question to be reissued so that 29* the user isn't left hanging. It also allows the choices menu to be 30* redrawn if the user types quit instead of making a selection and then 31* decides to continue. TRs 18711 18974. 32* 4) change(86-07-30,Blair), approve(86-07-30,MCR7498), 33* audit(86-08-19,Gilcrease), install(86-08-21,MR12.0-1138): 34* Restore the save message query sequence to occur before the message is 35* forwarded so that the REDISTRIBUTED-TO part of the header is included in 36* the saved msg. If the user types "no" to creating a new_file the msg will 37* be forwarded anyway. If he types a break, he will re-enter the sequence 38* asking him if he wants to save the message. error_list #127. 39* 5) change(88-06-29,Blair), approve(88-07-27,MCR7931), 40* audit(88-08-25,RBarstad), install(88-09-02,MR12.2-1098): 41* Use the correct mail_system_ entrypoints to generate the to_list ptr, 42* create an address and add it to the list, rather than generating the list 43* ourselves by constructing an address of the type "{keyword ...}". This 44* will allow us to correctly deal with mailbox names that include embedded 45* blanks. 46* END HISTORY COMMENTS */ 47 48 xmail_forward_msg_: procedure (P_mailbox_ptr, P_curr_msgs_ptr); 49 50 /* BEGIN DESCRIPTION 51* 52*function: 53* 54* This proc is invoked as a consequence of the user selecting the 55*"Forward" option in the Process Mail or Process Filed Mail menus. 56*It uses the mail_system_$redistribute_message procedure to 57*actually do the forwarding. xmail_forward_msg_ calls emacs_ to allow the user 58*to specify the recipients to whom the message is being forwarded. 59*The user may enter a comment if he/she wishes. 60*Note that xmail_forward_msg_ assumes that the addresses are "clean", i.e., 61*they neither contain syntax errors nor is there an address for which there 62*is no corresponding mailbox. The "xmail_emacs_ext_main_" emacs extention 63*insures that the addresses are "clean". 64*The procedure loops based on the number of messages being forwarded. 65* 66* 67*history: Written by R. Ignagni 7/11/81 68* 69* 83-07-05 DJ Schimke: Modified to use new mail_system calls and version 2 70* mailboxes. 71* 72* 83-10-06 DJ Schimke: Changed all calls to xmail_get_str to calls to 73* xmail_get_str_$yes_no; 74* 75* 83-10-17 DJ Schimke: Changed call to xmail_window_manager_$reconnect to a 76* call to xmail_window_manager_$quit_handler so the quit condition handler 77* can special-case the reconnect condition which should NOT interrupt 78* processing after the quit. phx 13227 This entrypoint also prompts when not 79* at a reconnect condition so that unintentionally hitting the BREAK won't 80* throw away any pending work. phx 13018 81* 82* 83-11-23 DJ Schimke: Added support for the new personalization option 83* "Outgoing Savefile" which allows selection of where to file save messages. 84* This also solves the discrepancy between setting "Save Outgoing messages" 85* to "yes" and never having set "Save Outgoing messages". 86* 87* 83-12-07 DJ Schimke: Cleaned up the reporting of delivery results by calling 88* mlsys_utils_$print_delivery_results_ and mlsys_utils_$print_address_field 89* for displaying the failure/success of sending. This module still needs 90* recovery code to allow the sender to correct the bad addresses and continue. 91* 92* 83-12-08 DJ Schimke: Added simple flag to prevent the call to 93* mlsys_util_$free_delivery_results until the call to send the msg has been 94* made. Otherwise, this cleanup will get errors referencing invalid pointers. 95* 96* 83-02-20 DJ Schimke: Modified the cleanup code so recipients_info is only 97* freed by the CLEANUP procedure rather than by the MESSAGE_CLEANUP procedure. 98* This fixes a problem referencing recipients_info when forwarding more than 99* one message (curr_msgs.count > 1). 100* 101* 84-09-24 JG Backs: Added code before and after the call to emacs_ to test 102* if menus should be removed before editing (personalization option Remove 103* Menus While Editing). If option is in effect, calls to new entrypoints, 104* $suppress_menu and $restore_menu in xmail_window_manager_ are made. Also 105* added test in quit handler to make sure restore menus is done if quit in 106* editor. 107* 108* 84-11-14 JG Backs: Moved the code, which redisplays the menu if removed 109* while editing, to execute after the call to CLEAN_UP rather than within 110* the CLEAN_UP procedure. This prevents screen output during a true cleanup 111* condition. 112* 113* 114*END DESCRIPTION 115**/ 116 117 /* PARAMETERS */ 118 119 dcl P_mailbox_ptr ptr parameter; 120 dcl P_curr_msgs_ptr ptr parameter; 121 122 /* CONDITIONS */ 123 124 dcl (quit, cleanup, reissue_query) condition; 125 126 127 /* CONSTANTS */ 128 129 dcl ACCEPT_NEW bit (1) aligned int static options (constant) init ("1"b); 130 dcl ACCEPT_OLD bit (1) aligned int static options (constant) init ("1"b); 131 dcl ACKNOWLEDGE char (14) static options (constant) init ("acknowledge_yn"); 132 dcl BITS_PER_CHAR fixed bin static options (constant) init (9); 133 dcl CONTINUE char (1) static options (constant) init ("c"); 134 dcl DELETE_SEG_FORCE_CHASE bit (6) static options (constant) init ("100101"b); 135 dcl EMACS_EXT char (21) options (constant) init ("xmail_emacs_ext_main_") int static; 136 dcl ENTRY_NAME entry variable init (xmail_forward_msg_); 137 dcl ERROR_MESSAGE char (63) static options (constant) init ("Message no. ^d not forwarded, due to an internal program error."); 138 dcl ERRORS_ONLY bit (1) aligned static options (constant) init ("1"b); 139 dcl GO_ON char (57) static options (constant) init ("Do you wish to forward the rest of the current messages? "); 140 dcl LOG char (1) static options (constant) init ("l"); 141 dcl MAILFILE_SUFFIX char (6) static options (constant) init ("sv.mbx"); 142 dcl NAME char (18) static options (constant) init ("xmail_forward_msg_"); 143 dcl NL char (1) aligned static options (constant) init (" 144 "); 145 dcl PROBLEM char (61) static options (constant) init ("Forwarding not completed. An internal program error occurred."); 146 dcl QUIT char (1) static options (constant) init ("q"); 147 dcl SAVE_MAILBOX char (15) static options (constant) init ("save_mailfile"); 148 dcl SAVE_MESSAGE char (15) static options (constant) init ("save_message_yn"); 149 dcl STOP char (1) static options (constant) init ("q"); 150 dcl USE_SCREEN_WIDTH fixed bin aligned static options (constant) init (-1); 151 dcl WHITE_SPACE char (4) aligned static options (constant) init (" 152 "); /* HT VT NL */ 153 dcl WHITE_SPACE_COMMA char (6) aligned static options (constant) init (" 154 ,"); /* HT VT NL comma */ 155 156 /* EXTERNAL STATIC */ 157 158 dcl error_table_$namedup static ext fixed bin (35); 159 dcl error_table_$segknown static ext fixed bin (35); 160 dcl error_table_$bad_segment fixed bin (35) ext static; 161 dcl iox_$user_output ptr external static; 162 dcl mlsys_et_$no_a_permission static ext fixed bin (35); 163 164 /* INTERNAL STATIC */ 165 166 dcl ext_pname char (168) int static; 167 dcl ext_ptr ptr init (null) int static; 168 dcl ext_dir char (168) int static; 169 dcl ext_file char (32) int static; 170 171 /* AUTOMATIC */ 172 173 dcl acknowledge char (3) var; 174 dcl ask_again bit (1) aligned; 175 dcl bcc_list_ptr ptr; 176 dcl bit_count fixed bin (24); 177 dcl code fixed bin (35); 178 dcl code1 fixed bin (35); 179 dcl create bit (1) aligned; 180 dcl default_save_file char (32) var; 181 dcl delivery_results_need_cleanup bit (1) aligned; 182 dcl dir char (168); 183 dcl emacs_seg_path_name char (168); 184 dcl error_list_ptr ptr; 185 dcl exists bit (1) aligned; 186 dcl for_type char (32); 187 dcl forward_area_ptr ptr; 188 dcl forward_msg_ptr ptr; 189 dcl forward_seg_name char (32); 190 dcl forward_seg_ptr ptr; 191 dcl idx fixed bin; 192 dcl idx1 fixed bin; 193 dcl message_num fixed bin; 194 dcl message_num1 fixed bin; 195 dcl message_saved bit (1) aligned; 196 dcl no_chars fixed bin (21); 197 dcl opt fixed bin; 198 dcl prefix char (32) var; 199 dcl prompt_string char (256) var; 200 dcl resp char (1) var; 201 dcl restore_menu_needed bit (1) aligned; /* if remove menu */ 202 dcl save_message char (3) var; 203 dcl sci_ptr ptr; 204 dcl to_list_ptr ptr; 205 dcl type fixed bin (2); 206 dcl unused_return_length fixed bin; 207 dcl yes_sw bit (1) aligned; 208 209 dcl 1 auto_deliver_options like deliver_options; 210 dcl 1 auto_parse_text_options like parse_text_options; 211 212 /* ENTRIES */ 213 214 dcl delete_$ptr entry (ptr, bit (6), char (*), fixed bin (35)); 215 dcl emacs_ entry (ptr, char (*), char (*), ptr, fixed bin (35)); 216 dcl get_pdir_ entry () returns (char (168)); 217 dcl get_system_free_area_ entry () returns (ptr); 218 dcl hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)); 219 dcl hcs_$make_ptr entry (ptr, char (*), char (*), ptr, fixed bin (35)); 220 dcl hcs_$make_seg entry options (variable); 221 dcl hcs_$status_mins entry (ptr, fixed bin (2), fixed bin (24), fixed bin (35)); 222 dcl ioa_ entry options (variable); 223 dcl ioa_$nnl entry options (variable); 224 dcl ioa_$rsnnl entry() options(variable); 225 dcl mail_system_$create_address_list entry (char (8), ptr, fixed bin (35)); 226 dcl mail_system_$create_savebox_address entry (char (*) varying, char(*), char (*), char (*) varying, char (*) varying, pointer, fixed bin (35)); 227 dcl mail_system_$free_address_list entry (ptr, fixed bin (35)); 228 dcl mail_system_$free_message entry (ptr, fixed bin (35)); 229 dcl mail_system_$read_message entry (ptr, fixed bin, fixed bin (35)); 230 dcl mail_system_$redistribute_message entry (ptr, char (*), ptr, ptr, fixed bin (35)); 231 dcl mlsys_utils_$free_delivery_results entry (ptr, fixed bin (35)); 232 dcl mlsys_utils_$print_address_list_field entry (char (*) var, ptr, fixed bin, ptr, fixed bin (35)); 233 dcl mlsys_utils_$print_delivery_results entry (ptr, bit (1) aligned, ptr, fixed bin (35)); 234 dcl ssu_$standalone_invocation entry (ptr, char (*), char (*), ptr, entry, fixed bin (35)); 235 dcl ssu_$destroy_invocation entry (ptr); 236 dcl suffixed_name_$make entry (char(*), char(*), char(32), fixed bin(35)); 237 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 238 dcl timer_manager_$sleep entry (fixed bin (71), bit (2)); 239 dcl xmail_error_$no_code entry options (variable); 240 dcl xmail_error_$no_print entry options (variable); 241 dcl xmail_error_$code_first entry options (variable); 242 dcl xmail_forward_msg_$ssu_exit entry (); 243 dcl xmail_get_str_ entry (char (*) var, (*) char (*) var, char (*), char (*), char (*) var); 244 dcl xmail_get_str_$yes_no entry (char (*) var, bit (1) aligned); 245 dcl xmail_redisplay_$menu entry options (variable); 246 dcl xmail_select_file_ entry (char (*), char (*), char (*), bit (1) aligned, bit (1) aligned, 247 char (168), char (32) var, bit (1) aligned, bit (1) aligned, fixed bin (35)); 248 dcl xmail_sw_$redisplay entry (); 249 dcl xmail_sw_$update_usage entry (char (*)); 250 dcl xmail_value_$get entry (char (*), char (*) var, fixed bin (35)); 251 dcl xmail_value_$get_with_default entry (char (*), char (*) var, char (*) var, fixed bin (35)); 252 dcl xmail_window_manager_$reconnect entry (); 253 dcl xmail_window_manager_$restore_menu entry (); 254 dcl xmail_window_manager_$suppress_menu entry (); 255 dcl xmail_window_manager_$quit_handler entry () returns (bit (1) aligned); 256 dcl mlsys_utils_$create_savebox entry options(variable); 257 dcl mlsys_utils_$parse_address_list_text entry (char (*), ptr, char (8), ptr, ptr, fixed bin (35)); 258 259 /* BASED */ 260 261 dcl based_string char (no_chars) based (forward_seg_ptr); 262 263 /* AREA */ 264 265 dcl forward_area area aligned based (forward_area_ptr); 266 267 /* BUILTINS */ 268 269 dcl (addr, after, before, char, codeptr, divide, length, ltrim, null, rtrim) builtin; 270 271 /* INCLUDE FILES */ 272 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 273 274 2 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 2 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 2 7* Added seen switch to message. 2 8* END HISTORY COMMENTS */ 2 9 2 10 2 11 /* Created: June 1983 by G. Palter */ 2 12 2 13 /* Definition of a message as used by the Multics Mail System */ 2 14 2 15 dcl 1 message aligned based (message_ptr), 2 16 2 version character (8) unaligned, 2 17 2 reserved bit (144), /* for exclusive use of the mail system */ 2 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 2 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 2 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 2 21 2 n_body_sections fixed binary, /* # of sections in the body */ 2 22 2 flags, 2 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 2 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 2 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 2 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 2 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 2 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 2 29 2 pad bit (36), 2 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 2 31 2 header, 2 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 2 33 3 access_class bit (72), /* AIM access class of this message */ 2 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 2 35 3 from pointer, /* -> address list of author(s) of the message */ 2 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 2 37 3 to pointer, /* -> address list of primary recipients */ 2 38 3 cc pointer, /* -> address list of secondary recipients */ 2 39 3 bcc pointer, /* -> address list of blind recipients */ 2 40 3 subject like message_text_field, /* subject of the message */ 2 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 2 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 2 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 2 44 2 body, 2 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 2 46 3 pad bit (36), 2 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 2 48 2 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 2 50 2 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 2 52 2 53 dcl message_ptr pointer; 2 54 2 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 2 56 message_references_list_n_references) 2 57 fixed binary; /* for exclusive use of the mail system */ 2 58 2 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 2 60 2 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 2 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 2 63 2 sender pointer, /* -> address of entity that mailed the message */ 2 64 2 trace pointer, /* -> message_trace describing how it got here */ 2 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 2 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 2 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 2 68 2 69 dcl message_envelope_ptr pointer; 2 70 2 71 2 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 2 73 2 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 2 75 2 pad pointer, /* forces even word alignment */ 2 76 2 version character (8) unaligned, 2 77 2 envelope like message_envelope; 2 78 2 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 2 80 2 81 dcl message_envelope_parameter_ptr pointer; 2 82 2 83 2 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 2 85* networks to reach this recipient */ 2 86 2 87 dcl 1 message_trace aligned based (message_trace_ptr), 2 88 2 version character (8) unaligned, 2 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 2 91 2 pad bit (36), 2 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 2 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 2 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 2 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 2 96 3 receiving_host character (256) varying, /* ... the host which received it */ 2 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 2 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 2 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 2 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 2 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 2 102 2 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 2 104 2 105 dcl message_trace_ptr pointer; 2 106 2 107 /* Definition of a message's redistributions list */ 2 108 2 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 2 110 2 version character (8) unaligned, 2 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 112 2 pad bit (36), 2 113 2 n_redistributions fixed binary, /* # of redistributions */ 2 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 2 115 like message_redistribution; /* the redistributions: oldest first */ 2 116 2 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 2 118 2 119 2 120 /* Definition of a single redistribution (forwarding) of a message */ 2 121 2 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 2 123 2 envelope like message_envelope, 2 124 2 header, 2 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 2 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 2 127 3 from pointer, /* -> address list of authors of this redistribution */ 2 128 3 to pointer, /* -> address list of recipients of the redistribution */ 2 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 2 130 2 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 2 132 based (message_redistribution.comment.text_ptr); 2 133 2 134 dcl message_redistribution_ptr pointer; 2 135 2 136 2 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 2 138 2 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 2 140 2 pad pointer, /* forces even word alignment */ 2 141 2 version character (8) unaligned, 2 142 2 redistribution like message_redistribution; 2 143 2 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 2 145 2 146 dcl message_redistribution_parameter_ptr pointer; 2 147 2 148 /* Definition of the list of user-defined fields in a message */ 2 149 2 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 2 151 2 version character (8) unaligned, 2 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 153 2 pad bit (36), 2 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 2 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 2 156 like message_user_field; /* the actual user-defined fields */ 2 157 2 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 2 159 2 160 2 161 /* Definition of a user defined message header field */ 2 162 2 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 2 164 2 header, 2 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 2 166 3 field_type fixed binary, /* type of data contained in this field */ 2 167 2 field_type_variable bit (144); /* the actual data (see below) */ 2 168 2 169 dcl message_user_field_ptr pointer; 2 170 2 171 2 172 /* Defined types of user defined fields */ 2 173 2 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 2 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 2 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 2 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 2 178 fixed binary static options (constant); 2 179 2 180 2 181 /* Structures used to access the data for the different types of user defined fields */ 2 182 2 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 2 184 2 header like message_user_field.header, 2 185 2 text like message_text_field; /* the message text */ 2 186 2 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 2 188 based (message_text_user_field.text.text_ptr); 2 189 2 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 2 191 2 header like message_user_field.header, 2 192 2 address_list_ptr pointer, /* -> the address list */ 2 193 2 pad bit (72); 2 194 2 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 2 196 2 header like message_user_field.header, 2 197 2 date_time fixed binary (71), /* the clock reading */ 2 198 2 pad bit (72); 2 199 2 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 2 201 2 header like message_user_field.header, 2 202 2 value fixed binary (35), /* the integer value */ 2 203 2 pad bit (108); 2 204 2 205 2 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 2 207 2 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 2 209 2 pad pointer, /* forces even word alignment */ 2 210 2 version character (8) unaligned, 2 211 2 user_field like message_user_field; 2 212 2 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 2 214 2 215 dcl message_user_field_parameter_ptr pointer; 2 216 2 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 2 218 2 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 2 220 2 version character (8) unaligned, 2 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 222 2 pad bit (36), 2 223 2 n_references fixed binary, /* # of references in this list */ 2 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 2 225 like message_reference; /* the references themselves */ 2 226 2 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 2 228 2 229 dcl message_references_list_ptr pointer; 2 230 2 231 2 232 /* Definition of a reference to another message */ 2 233 2 234 dcl 1 message_reference aligned based (message_reference_ptr), 2 235 2 message_id bit (72), /* ID of the other message */ 2 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 2 237 2 from pointer, /* -> address list of authors of the other message */ 2 238 2 subject like message_text_field; /* subject of the other message */ 2 239 2 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 2 241 based (message_reference.subject.text_ptr); 2 242 2 243 dcl message_reference_ptr pointer; 2 244 2 245 2 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 2 247 2 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 2 249 2 pad pointer, /* forces even word alignment */ 2 250 2 version character (8) unaligned, 2 251 2 reference like message_reference; 2 252 2 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 2 254 2 255 dcl message_reference_parameter_ptr pointer; 2 256 2 257 2 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 2 259 2 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 2 261 2 text_ptr pointer, /* -> the actual text */ 2 262 2 text_lth fixed binary (21), /* length of said text */ 2 263 2 flags, 2 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 2 265* OFF => the text will always be a single line */ 2 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 2 267 2 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 2 269 2 270 dcl message_text_field_ptr pointer; 2 271 2 272 /* Definition of a section of the body of a message */ 2 273 2 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 2 275 2 header, 2 276 3 section_type fixed binary, /* type of "text" stored in this section */ 2 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 2 278 2 section_type_variable bit (144); /* the actual data (see below) */ 2 279 2 280 dcl message_body_section_ptr pointer; 2 281 2 282 2 283 /* Defined types of message body sections */ 2 284 2 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 2 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 2 287 fixed binary static options (constant); 2 288 2 289 2 290 /* Structures used to access the data for the different types of message body sections */ 2 291 2 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 2 293 2 header like message_body_section.header, 2 294 2 text_ptr pointer, /* -> the text */ 2 295 2 text_lth fixed binary (21), /* length of said text in characters */ 2 296 2 reserved bit (36); /* for exclusive use of the mail system */ 2 297 2 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 2 299 based (message_preformatted_body_section.text_ptr); 2 300 2 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 2 302 2 header like message_body_section.header, 2 303 2 bit_string_ptr pointer, /* -> the bit string */ 2 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 2 305 2 reserved bit (36); /* for exclusive use of the mail system */ 2 306 2 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 2 308 based (message_bit_string_body_section.bit_string_ptr); 2 309 2 310 2 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 2 312 2 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 2 314 2 pad pointer, /* forces even word alignment */ 2 315 2 version character (8) unaligned, 2 316 2 section like message_body_section; 2 317 2 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 2 319 2 320 dcl message_body_section_parameter_ptr pointer; 2 321 2 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 275 276 3 1 /* BEGIN INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 3 2 /* Created: June 1983 by G. Palter */ 3 3 3 4 /* Definition of an address list -- a collection of addresses used as the value of certain message fields, etc. */ 3 5 3 6 dcl 1 address_list aligned based (address_list_ptr), 3 7 2 version character (8) unaligned, 3 8 2 reserved bit (144), /* ... exclusively for use by the mail system */ 3 9 2 n_addresses fixed binary, /* # of address in this list */ 3 10 2 addresses (address_list_n_addresses refer (address_list.n_addresses)) pointer; 3 11 3 12 dcl ADDRESS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsals02"); 3 13 3 14 dcl address_list_ptr pointer; 3 15 3 16 dcl address_list_n_addresses fixed binary; /* reserved exclusively for use by the mail system */ 3 17 3 18 /* END INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 277 278 4 1 /* BEGIN INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 4 2 /* Created: June 1983 by G. Palter */ 4 3 4 4 /* Options for the mail_system_$deliver_message and mail_system_$redistribute_message entrypoints */ 4 5 4 6 dcl 1 deliver_options aligned based (deliver_options_ptr), 4 7 2 version character (8) unaligned, 4 8 2 delivery_mode fixed binary, /* deliver as an ordinary/interactive/express message */ 4 9 2 queueing_mode fixed binary, /* when to queue the message */ 4 10 2 queued_notification_mode fixed binary, /* when to notify sender about queued mail success/failure */ 4 11 2 flags, 4 12 3 abort bit (1) unaligned, /* ON => don't send it if any fatal errors are detected */ 4 13 3 send_if_empty bit (1) unaligned, /* ON => send the message even if its body is empty */ 4 14 3 recipient_notification bit (1) unaligned, /* ON => send "You have mail." notification */ 4 15 3 acknowledge bit (1) unaligned, /* ON => request ACK message when recipients read it */ 4 16 3 queue_mailing_lists bit (1) unaligned, /* ON => always queue the message for mailing lists */ 4 17 3 mbz bit (31) unaligned; /* must be set to ""b by the caller */ 4 18 4 19 dcl DELIVER_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsdlo02"); 4 20 4 21 dcl deliver_options_ptr pointer; 4 22 4 23 /* Defined modes of delivery */ 4 24 4 25 dcl (ORDINARY_DELIVERY initial (1), /* send as an ordinary message */ 4 26 INTERACTIVE_DELIVERY initial (2), /* send as an interactive message */ 4 27 EXPRESS_DELIVERY initial (3)) /* send as an express interactive message; ie: deliver the 4 28* message only if the user is logged in */ 4 29 fixed binary static options (constant); 4 30 4 31 /* Defined modes for queuing mail on transient errors */ 4 32 4 33 dcl (NEVER_QUEUE initial (1), /* never queue: convert into a fatal error */ 4 34 QUEUE_FOREIGN_WHEN_NEEDED initial (2), /* never queue local mail; queue foreign mail on error */ 4 35 QUEUE_WHEN_NEEDED initial (3), /* queue all mail on any transient error */ 4 36 ALWAYS_QUEUE_FOREIGN initial (4), /* queue local mail on error; always queue foreign mail */ 4 37 ALWAYS_QUEUE initial (5)) /* always queue all mail */ 4 38 fixed binary static options (constant); 4 39 4 40 /* Defined modes of notification of success/failure to deliver queued mail */ 4 41 4 42 dcl (NEVER_NOTIFY initial (1), /* never notify the sender */ 4 43 NOTIFY_ON_ERROR initial (2), /* notify the sender only if it can not be delivered */ 4 44 ALWAYS_NOTIFY initial (3)) /* always notify the sender */ 4 45 fixed binary static options (constant); 4 46 4 47 /* Definition of the recipients of a message and the results of the attempted transmission */ 4 48 4 49 dcl 1 recipients_info aligned based (recipients_info_ptr), 4 50 2 header, 4 51 3 version character (8) unaligned, 4 52 3 area_ptr pointer, /* -> area for following structures; null => system free */ 4 53 3 expanded_recipients_result_list_ptr pointer, /* set -> expanded_recipients_result_list (if any) */ 4 54 3 n_recipients fixed binary, /* set to total # of recipients after expanding lists */ 4 55 3 n_unique_recipients fixed binary, /* set to total # of unique recipients */ 4 56 3 n_failed_recipients fixed binary, /* set to # of recipients that failed or would fail */ 4 57 3 n_lists fixed binary, /* # of address lists of recipients */ 4 58 2 lists (recipients_info_n_lists refer (recipients_info.n_lists)), 4 59 3 address_list_ptr pointer, /* -> an address list containing recipients */ 4 60 3 recipients_result_list_ptr pointer; /* set -> recipients_result_list for this address list */ 4 61 4 62 dcl RECIPIENTS_INFO_VERSION_2 character (8) static options (constant) initial ("mlsrcpt2"); 4 63 4 64 dcl (recipients_info_ptr, recipients_result_list_ptr, expanded_recipients_result_list_ptr) pointer; 4 65 4 66 dcl (recipients_info_n_lists, recipients_result_list_n_addresses, expanded_recipients_result_list_n_entries) 4 67 fixed binary; /* used to allocate these structures */ 4 68 4 69 4 70 /* Data structure returned by the mail system recording the results of the mailing for one of the input address lists */ 4 71 4 72 dcl 1 recipients_result_list aligned based (recipients_result_list_ptr), 4 73 2 n_addresses fixed binary, /* set to # of address in corresponding address list */ 4 74 2 pad bit (36), 4 75 2 results (recipients_result_list_n_addresses refer (recipients_result_list.n_addresses)), 4 76 3 code fixed binary (35), /* set to describe results of attempted delivery */ 4 77 3 expanded_list_info, /* set to identify any failing addresses found in the 4 78* expansion of this address ... */ 4 79 4 first_entry_idx fixed binary (18) unaligned unsigned, 4 80 /* ... index of first such address in structure below ... */ 4 81 4 n_entries fixed binary (18) unaligned unsigned,/* ... # of such addresses there for this address */ 4 82 3 duplicate_info, /* set to identify the prior address (if any) for which this 4 83* is a duplicate ... */ 4 84 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 4 85 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 4 86 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 4 87* being queued due to a transient error */ 4 88 4 89 4 90 /* Describes fatal or transient errors for those recipients which are part of mailing lists of named groups in one of the 4 91* caller's address lists */ 4 92 4 93 dcl 1 expanded_recipients_result_list aligned based (expanded_recipients_result_list_ptr), 4 94 2 n_entries fixed binary, /* set to # of failing expanded recipients */ 4 95 2 pad bit (36), 4 96 2 entries (expanded_recipients_result_list_n_entries refer (expanded_recipients_result_list.n_entries)), 4 97 3 address_ptr pointer, /* -> the failing address from the list/group */ 4 98 3 code fixed binary (35), /* set to describe why delivery failed */ 4 99 3 parent_address, /* set to identify the original recipient of whose expansion 4 100* this address is a part ... */ 4 101 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 4 102 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 4 103 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 4 104* being queued due to a transient error */ 4 105 4 106 /* END INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 279 280 5 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 5 2 /* Created: April 1983 by G. Palter */ 5 3 5 4 /* Definition of a mailbox as used by the Multics Mail System */ 5 5 5 6 dcl 1 mailbox aligned based (mailbox_ptr), 5 7 2 version character (8) unaligned, 5 8 2 reserved bit (144), /* for exclusive use of the mail system */ 5 9 2 mailbox_address pointer, /* mail system address of this mailbox */ 5 10 2 mailbox_dirname character (168) unaligned, /* directory containing this mailbox */ 5 11 2 mailbox_ename character (32) unaligned, /* entry name of this mailbox (includes ".mbx") */ 5 12 2 mailbox_type fixed binary, /* type of mailbox (see below) */ 5 13 2 mode bit (36), /* user's effective extended access to this mailbox */ 5 14 2 flags, 5 15 3 salvaged bit (1) unaligned, /* ON => this mailbox has been salvaged since last open */ 5 16 3 reserved bit (35) unaligned, /* for exclusive use of the mail system */ 5 17 2 message_selection_mode fixed binary, /* types of messages read: all/ordinary/interactive */ 5 18 2 sender_selection_mode fixed binary, /* whose messages were read: all/own/not-own */ 5 19 2 message_reading_level fixed binary, /* how much of each message read: keys/messages */ 5 20 2 n_messages fixed binary, /* total # of messages in this mailbox structure */ 5 21 2 n_ordinary_messages fixed binary, /* ... # of ordinary messages here */ 5 22 2 n_interactive_messages fixed binary, /* ... # of interactive messages here */ 5 23 2 n_deleted_messages fixed binary, /* ... # of messages here marked for later deletion */ 5 24 2 messages (mailbox_n_messages refer (mailbox.n_messages)), 5 25 3 key bit (72), /* unique key to read this message if not already read */ 5 26 3 message_ptr pointer; /* -> the message structure */ 5 27 5 28 dcl MAILBOX_VERSION_2 character (8) static options (constant) initial ("mlsmbx02"); 5 29 5 30 dcl mailbox_ptr pointer; 5 31 5 32 dcl mailbox_n_messages fixed binary; /* for exclusive use of the mail system */ 5 33 5 34 5 35 /* Types of mailboxes distinguished by the mail system */ 5 36 5 37 dcl (USER_DEFAULT_MAILBOX initial (1), /* the user's default mailbox for receiving mail */ 5 38 USER_LOGBOX initial (2), /* the user's logbox */ 5 39 SAVEBOX initial (3), /* a savebox */ 5 40 OTHER_MAILBOX initial (4)) /* any other type of mailbox */ 5 41 fixed binary static options (constant); 5 42 5 43 /* END INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 281 282 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 */ 283 284 7 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 7 2 /* format: style2,^inddcls,idind32 */ 7 3 7 4 declare 1 terminate_file_switches based, 7 5 2 truncate bit (1) unaligned, 7 6 2 set_bc bit (1) unaligned, 7 7 2 terminate bit (1) unaligned, 7 8 2 force_write bit (1) unaligned, 7 9 2 delete bit (1) unaligned; 7 10 7 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 7 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 7 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 7 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 7 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 7 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 7 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 7 18 7 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 285 286 8 1 /* Created 06/17/81 by Suzanne Krupp */ 8 2 8 3 dcl n_messages fixed bin; 8 4 dcl MSG_STRUCT_VERSION_1 fixed bin int static options(constant) init(1); 8 5 8 6 dcl curr_msgsp ptr; 8 7 8 8 dcl 1 curr_msgs based(curr_msgsp), 8 9 2 version fixed bin, 8 10 2 count fixed bin, 8 11 2 numbers (n_messages refer(curr_msgs.count)) fixed bin; 8 12 8 13 dcl nonexist_msgsp ptr; 8 14 8 15 dcl 1 nonexist_msgs based(nonexist_msgsp), 8 16 2 version fixed bin, 8 17 2 count fixed bin, 8 18 2 numbers (n_messages refer(nonexist_msgs.count)) fixed bin; 8 19 8 20 dcl msg_structp ptr; 8 21 8 22 dcl 1 msg_struct based(msg_structp), 8 23 2 version fixed bin, 8 24 2 count fixed bin, 8 25 2 numbers(n_messages refer(msg_struct.count)) fixed bin; 288 9 1 /* BEGIN INCLUDE FILE: xmail_data.incl.pl1 */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(85-12-20,Blair), approve(86-03-06,MCR7358), 9 6* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 9 7* Modified 03/15/85 by Joanne Backs adding confirm_print flag. 9 8* 2) change(85-12-20,LJAdams), approve(86-03-06,MCR7358), 9 9* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 9 10* Adding switch to indicate request for menu display came from general help. 9 11* This is so general help menu will be displayed in top screen. 9 12* 3) change(86-01-10,Blair), approve(86-03-06,MCR7358), 9 13* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 9 14* Add switch to indicate whether or not it is permissible to process mail 9 15* in other users' mailboxes (foreign_mailbox). 9 16* 4) change(86-01-13,Blair), approve(86-03-06,MCR7358), 9 17* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 9 18* Add bit to indicate whether or not this is a true cleanup condition. 9 19* 5) change(86-02-06,Blair), approve(86-03-06,MCR7358), 9 20* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 9 21* Rearrange to group all the bit flags together in one word with a pad. 9 22* 6) change(86-03-05,Blair), approve(86-03-05,MCR7358), 9 23* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 9 24* Change value_seg ptr to value_seg_pathname to avoid the situation where 9 25* you keep around a pointer to a structure which no longer exists. 9 26* 7) change(87-01-16,Blair), approve(87-02-05,MCR7618), 9 27* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 9 28* Add a field to indicate whether or not we should process interactive msgs. 9 29* Increment version to 4.1 so default value will get set. 9 30* 8) change(87-02-13,Blair), approve(87-02-13,MCR7618), 9 31* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 9 32* Add a field to indicate whether or not we're processing a reply so that we 9 33* will be able to rebuild the screens properly after a disconnect occurs. 9 34* Error_list #114. 9 35* 9) change(88-07-26,Blair), approve(88-07-26,MCR7959), 9 36* audit(88-08-25,RBarstad), install(88-09-02,MR12.2-1098): 9 37* Add a bit to indicate whether or not the error segment had to be created 9 38* in the pdir (because we didn't have sma access to the mlsys_dir). 9 39* END HISTORY COMMENTS */ 9 40 9 41 9 42 /* Written 5/13/81 by Paul H. Kyzivat */ 9 43 /* Modified 12/16/81 by S. Krupp to delete unused parts of structure 9 44* and to add n_fkeys_used */ 9 45 /* Modified 12/14/82 by Dave Schimke to make the xmail version a 10 character 9 46* varying string. */ 9 47 /* Modified 09/12/83 by Dave Schimke adding interactive_msgs flag */ 9 48 /* Modified 09/14/83 by Dave Schimke adding moved_user_io */ 9 49 /* Modified 09/06/84 by Joanne Backs adding lists_as_menus flag */ 9 50 /* Modified 09/21/84 by Joanne Backs adding remove_menus flag */ 9 51 9 52 dcl xmail_data_ptr external static ptr init (null); 9 53 9 54 dcl 1 xmail_data aligned based (xmail_data_ptr), 9 55 2 mail_dir char (168) varying, 9 56 2 first_label label, 9 57 2 quit_label label, 9 58 2 value_seg_pathname char (168) varying, 9 59 2 moved_user_io ptr, 9 60 2 normal_usage char (80) unal, 9 61 2 function_key_info, 9 62 3 function_key_data_ptr ptr, 9 63 3 n_fkeys_used fixed bin, 9 64 2 actee, 9 65 3 person char(32) varying, 9 66 3 project char(32) varying, 9 67 2 flags aligned, 9 68 3 mail_in_incoming bit (1) unal, 9 69 3 lists_as_menus bit (1) unal, /* personalization */ 9 70 3 remove_menus bit (1) unal, /* personalization */ 9 71 3 confirm_print bit (1) unal, /* personalization */ 9 72 3 multics_mode bit (1) unal, /* personalization */ 9 73 3 interactive_msgs bit (1) unal, /* personalization */ 9 74 3 foreign_mailbox bit (1) unal, /* read others' mailboxes */ 9 75 3 general_help bit (1) unal, /* indicated requesting gen help*/ 9 76 3 cleanup_signalled bit (1) unal, /* on when true cleanup condition */ 9 77 3 msgs_as_mail bit (1) unal, /* on for include_msgs */ 9 78 3 reply_request bit (1) unal, /* on if we're doing a reply */ 9 79 3 error_seg_in_pdir bit (1) unal, /* on if the error_seg is in the pdir */ 9 80 3 pad bit (24) unal; 9 81 9 82 9 83 9 84 dcl xmail_version char(10) var static options(constant) init("4.1"); 9 85 9 86 /* END INCLUDE FILE: xmail_data.incl.pl1 */ 289 290 10 1 /* BEGIN INCLUDE FILE xmail_responses.incl.pl1 */ 10 2 10 3 /****^ HISTORY COMMENTS: 10 4* 1) change(86-02-07,Blair), approve(86-03-06,MCR7358), 10 5* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 10 6* 85-03-05 JG Backs: Modified to add a response of date. 10 7* 85-03-11 JG Backs: Modified to add short forms of keywords (a,l,p,f). 10 8* 85-03-14 JG Backs: Modified to add ASK, SET, and S. 10 9* 2) change(86-02-07,Blair), approve(86-03-06,MCR7358), 10 10* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 10 11* Modify to add SEEN and UNSEEN. 10 12* END HISTORY COMMENTS */ 10 13 10 14 /* Created 06/17/81 by Suzanne Krupp */ 10 15 10 16 dcl (QUESTION char(1) init("?"), 10 17 LIST char(2) init("??"), 10 18 A char(1) init("a"), 10 19 ALL char(3) init("all"), 10 20 ASK char(3) init("ask"), 10 21 DATE char(4) init("date"), 10 22 F char(1) init("f"), 10 23 FIRST char(5) init("first"), 10 24 L char(1) init("l"), 10 25 LAST char(4) init("last"), 10 26 N char (1) init ("n"), 10 27 NO char(2) init("no"), 10 28 NEXT char(4) init("next"), 10 29 NEW char(3) init("new"), 10 30 P char(1) init("p"), 10 31 PREV char(4) init("prev"), 10 32 S char(1) init("s"), 10 33 SEEN char (4) init("seen"), 10 34 SET char(3) init("set"), 10 35 SEARCH char(6) init("search"), 10 36 UNSEEN char (6) init("unseen"), 10 37 Y char (1) init ("y"), 10 38 YES char(3) init("yes")) 10 39 int static options(constant); 10 40 10 41 /* END INCLUDE FILE ... xmail_responses.incl.pl1 */ 291 292 11 1 /* begin include fine window_dcls.incl.pl1 BIM June 1981 */ 11 2 /* Modified 9 October 1983 by Jon A. Rochlis to add window_$edit_line. */ 11 3 11 4 /* format: style3 */ 11 5 11 6 declare window_$bell entry (pointer, fixed binary (35)); 11 7 declare window_$clear_region 11 8 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary, fixed binary (35)); 11 9 declare window_$clear_to_end_of_line 11 10 entry (pointer, fixed binary (35)); 11 11 declare window_$clear_to_end_of_window 11 12 entry (pointer, fixed binary (35)); 11 13 declare window_$clear_window 11 14 entry (pointer, fixed binary (35)); 11 15 declare window_$delete_chars 11 16 entry (pointer, fixed binary, fixed binary (35)); 11 17 declare window_$get_cursor_position 11 18 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 11 19 11 20 /* Call window_$get_echoed_chars (iocb_ptr, n_to_read, read_buffer, n_read, read_break, code); */ 11 21 11 22 declare window_$get_echoed_chars 11 23 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 11 24 fixed binary (35)); 11 25 declare window_$get_unechoed_chars 11 26 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 11 27 fixed binary (35)); 11 28 declare window_$insert_text entry (pointer, character (*), fixed binary (35)); 11 29 declare window_$overwrite_text 11 30 entry (pointer, character (*), fixed binary (35)); 11 31 declare window_$position_cursor 11 32 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 11 33 11 34 /* Call window_$position_cursor_rel (iocb_ptr, delta_line, delta_column, code); */ 11 35 11 36 declare window_$position_cursor_rel 11 37 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 11 38 11 39 /* Call window_$scroll_region (iocb_ptr, first_line_of_region, n_lines_of_region, distance_to_scroll_region_negative_is_up, 11 40* code); */ 11 41 11 42 declare window_$scroll_region 11 43 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary (35)); 11 44 declare window_$sync entry (pointer, fixed binary (35)); 11 45 11 46 /* Call window_$write_raw_text (iocb_ptr, text_string, code); */ 11 47 11 48 declare window_$write_raw_text 11 49 entry (pointer, character (*), fixed binary (35)); 11 50 11 51 /* Call window_$write_sync_read (iocb_ptr, prompt_string, n_to_read, read_buffer, n_read, break_char, code); */ 11 52 11 53 declare window_$write_sync_read 11 54 entry (pointer, character (*), fixed bin (21), character (*), fixed binary (21), 11 55 character (1) var, fixed binary (35)); 11 56 11 57 /* Call window_$change_line (iocb_ptr, new_line, code); */ 11 58 11 59 declare window_$change_line entry (pointer, fixed binary, fixed binary (35)); 11 60 11 61 /* Call window_$change_column (iocb_ptr, new_column, code); */ 11 62 11 63 declare window_$change_column 11 64 entry (pointer, fixed binary, fixed binary (35)); 11 65 11 66 /* Call window_$get_one_unechoed (iocb_ptr, char_or_len_0, block_flag, code); */ 11 67 declare ( 11 68 window_$get_one_unechoed, 11 69 window_$get_one_unechoed_char 11 70 ) entry (pointer, character (1) var, bit (1) aligned, fixed binary (35)); 11 71 11 72 declare window_$create entry (pointer, pointer, pointer, fixed binary (35)); 11 73 11 74 declare window_$destroy entry (pointer, fixed binary (35)); 11 75 11 76 declare window_$edit_line entry (pointer, pointer, pointer, fixed bin(21), fixed bin(21), fixed bin(35)); 11 77 11 78 /* call window_$edit_line (iocb_ptr, window_edit_line_info_ptr, buffer_ptr, 11 79* buffer_len, n_returned, code); */ 11 80 11 81 11 82 /* end include file window_dcls.incl.pl1 */ 293 294 295 /* BEGIN */ 296 297 error_list_ptr = null (); 298 forward_msg_ptr = null (); 299 forward_seg_ptr = null (); 300 recipients_info_ptr = null (); 301 sci_ptr = null (); 302 to_list_ptr = null (); 303 bcc_list_ptr = null; 304 delivery_results_need_cleanup = "0"b; 305 restore_menu_needed = "0"b; 306 307 mailbox_ptr = P_mailbox_ptr; 308 curr_msgsp = P_curr_msgs_ptr; 309 if mailbox_ptr = null () | curr_msgsp = null () 310 then do; 311 call ioa_ ("All messages have been discarded."); 312 go to EXIT; 313 end; 314 315 forward_area_ptr = get_system_free_area_ (); 316 317 on condition (quit) 318 begin; 319 on condition (reissue_query) begin; 320 call window_$clear_window (iox_$user_output, (0)); 321 goto RETRY (opt); 322 end; 323 if xmail_window_manager_$quit_handler () 324 then do; 325 if restore_menu_needed 326 then call xmail_window_manager_$restore_menu; 327 call ioa_ ("Forwarding terminated."); 328 go to EXIT; 329 end; 330 end; 331 332 on condition (cleanup) call CLEAN_UP; 333 334 call xmail_sw_$update_usage (" "); 335 call xmail_sw_$redisplay (); 336 call window_$clear_window (iox_$user_output, (0));/* ignore error */ 337 call ioa_$nnl (" "); /* Position cursor in bottom window */ 338 339 /* Create seg for Emacs to place forward address(es) and comment in */ 340 341 forward_seg_name = xmail_data.actee.person || "_fwrd"; 342 343 call hcs_$make_seg ("", forward_seg_name, "", RW_ACCESS_BIN, forward_seg_ptr, code); 344 if code ^= 0 then do; /* If seg exists set bit count to zero */ 345 bit_count = 0; 346 if code = error_table_$namedup | code = error_table_$segknown 347 then call terminate_file_ (forward_seg_ptr, bit_count, TERM_FILE_BC, code); 348 if code ^= 0 then call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 349 end; 350 351 /* Determine full pathname for emacs seg */ 352 353 emacs_seg_path_name = get_pdir_ (); 354 emacs_seg_path_name = rtrim (emacs_seg_path_name) || ">" || forward_seg_name; 355 356 for_type = "fwd-comment"; 357 if ext_ptr = null () 358 then do; 359 call hcs_$make_ptr (codeptr (ENTRY_NAME), EMACS_EXT, "", ext_ptr, code); 360 if code ^= 0 then call xmail_error_$no_code 361 (code, NAME, STOP, "^a", PROBLEM); 362 call hcs_$fs_get_path_name (ext_ptr, ext_dir, (0), ext_file, code); 363 if code ^= 0 then call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 364 ext_pname = rtrim (ext_dir) || ">" || EMACS_EXT; 365 end; 366 367 /* Set-up for forwarding */ 368 369 recipients_info_n_lists = 2; /* make room for bcc if needed */ 370 allocate recipients_info in (forward_area) set (recipients_info_ptr); 371 372 recipients_info.header.version = RECIPIENTS_INFO_VERSION_2; 373 recipients_info.header.area_ptr = forward_area_ptr; 374 recipients_info.header.n_lists = 1; 375 376 auto_deliver_options.version = DELIVER_OPTIONS_VERSION_2; 377 auto_deliver_options.delivery_mode = ORDINARY_DELIVERY; 378 auto_deliver_options.queueing_mode = ALWAYS_QUEUE_FOREIGN; 379 auto_deliver_options.queued_notification_mode = NOTIFY_ON_ERROR; 380 auto_deliver_options.flags.abort = "1"b; 381 auto_deliver_options.flags.send_if_empty = "0"b; 382 auto_deliver_options.flags.recipient_notification = "1"b; 383 auto_deliver_options.flags.queue_mailing_lists = "0"b; 384 385 auto_deliver_options.flags.mbz = "0"b; 386 default_save_file = "outgoing"; 387 388 /* Loop based on the number of messages being forwarded */ 389 390 do idx = 1 to curr_msgs.count; 391 message_num = curr_msgs.numbers (idx); 392 if mailbox.messages (message_num).message_ptr = null 393 then do; 394 call mail_system_$read_message (mailbox_ptr, message_num, code); 395 if code ^= 0 396 then call xmail_error_$no_code (code, NAME, "l", "Unable to read message ^d. This is an internal programming error.", message_num); 397 end; 398 forward_msg_ptr = mailbox.messages (message_num).message_ptr; 399 message_ptr = forward_msg_ptr; 400 no_chars = 250; 401 based_string = ""; 402 based_string = "Forwarding message number " || rtrim (ltrim (char (message_num))) || NL || "Regarding: " || message_subject || NL; 403 bit_count = (length (rtrim (based_string)) + 1) * BITS_PER_CHAR; 404 call terminate_file_ (forward_seg_ptr, bit_count, TERM_FILE_BC, code); 405 if code ^= 0 then call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 406 407 408 /* Check personalization option to remove and restore menus while editing */ 409 410 if xmail_data.remove_menus 411 then do; 412 call xmail_window_manager_$suppress_menu (); 413 restore_menu_needed = "1"b; 414 end; 415 416 call emacs_ (iox_$user_output, (emacs_seg_path_name), ext_pname, addr (for_type), code); 417 418 if restore_menu_needed 419 then do; 420 call xmail_window_manager_$restore_menu (); 421 restore_menu_needed = "0"b; 422 end; 423 424 if code ^= 0 425 then do; 426 call xmail_window_manager_$reconnect (); 427 call ioa_ ("Message number ^d not forwarded.", message_num); 428 if curr_msgs.count > idx 429 then do; 430 RETRY (1): 431 call ioa_$nnl ("^/Do you still wish to forward message(s): "); 432 do idx1 = idx + 1 to curr_msgs.count; 433 message_num1 = curr_msgs.numbers (idx1); 434 call ioa_$nnl (" ^d", message_num1); 435 end; /* end do loop */ 436 opt = 1; 437 call xmail_get_str_$yes_no (" ? ", yes_sw); 438 if yes_sw then go to pre_end; 439 else call ioa_ ("Forwarding terminated."); 440 end; 441 go to EXIT; 442 end; 443 444 call hcs_$status_mins (forward_seg_ptr, type, bit_count, code); 445 if code ^= 0 then do; 446 call xmail_error_$no_code (code, NAME, CONTINUE, ERROR_MESSAGE, message_num); 447 call timer_manager_$sleep (3, "11"b); 448 go to pre_end; 449 end; 450 451 if bit_count = 0 452 then do; 453 call ioa_ ("Message number ^d not forwarded.", message_num); 454 if curr_msgs.count > idx 455 then do; 456 call xmail_get_str_$yes_no ((GO_ON), yes_sw); 457 if yes_sw then go to pre_end; 458 else call ioa_ ("Forwarding terminated."); 459 end; 460 goto EXIT; 461 end; 462 no_chars = divide (bit_count, BITS_PER_CHAR, 17, 0); 463 464 /* Get pointer to forwarding recipients address list structure */ 465 466 to_list_ptr = null (); 467 468 if rtrim (after (before (based_string, "Comment (optional):"), "To: "), WHITE_SPACE_COMMA) = "" 469 then do; 470 call xmail_error_$no_code (code, NAME, CONTINUE, "You did not enter any recipients. Message no. ^d not forwarded.", message_num); 471 call timer_manager_$sleep (3, "11"b); 472 go to pre_end; 473 end; 474 auto_parse_text_options.version = PARSE_TEXT_OPTIONS_VERSION_1; 475 auto_parse_text_options.area_ptr = null; 476 auto_parse_text_options.flags.list_errors = "0"b; 477 auto_parse_text_options.flags.validate_addresses = "0"b; 478 auto_parse_text_options.flags.include_invalid_addresses = "0"b; 479 auto_parse_text_options.flags.mbz = "0"b; 480 481 call mlsys_utils_$parse_address_list_text (rtrim (after (before (based_string, "Comment (optional):"), "To: "), WHITE_SPACE_COMMA), addr (auto_parse_text_options), ADDRESS_LIST_VERSION_2, to_list_ptr, parse_text_error_list_ptr, code); 482 483 if code ^= 0 then do; 484 call xmail_error_$no_code (code, NAME, CONTINUE, ERROR_MESSAGE, message_num); 485 call timer_manager_$sleep (3, "11"b); 486 go to pre_end; 487 end; 488 489 recipients_info.area_ptr = get_system_free_area_ (); 490 recipients_info.lists (1).address_list_ptr = to_list_ptr; 491 492 call xmail_value_$get_with_default (ACKNOWLEDGE, (NO), acknowledge, code); 493 if code ^= 0 then call xmail_error_$code_first (code, NAME, LOG, 494 "An invalid value for ""^a"" was found in the xmail value segment. Using the default value instead.", ACKNOWLEDGE); 495 496 if acknowledge = NO 497 then auto_deliver_options.flags.acknowledge = "0"b; 498 else if acknowledge = ASK 499 then do; 500 RETRY (2): 501 opt = 2; 502 call xmail_get_str_$yes_no ("Do you want your forwarding acknowledged ? ", yes_sw); 503 if yes_sw then auto_deliver_options.flags.acknowledge = "1"b; 504 else auto_deliver_options.flags.acknowledge = "0"b; 505 end; 506 else if acknowledge = YES 507 then auto_deliver_options.flags.acknowledge = "1"b; 508 else call xmail_error_$code_first (error_table_$bad_segment, NAME, LOG, 509 "An invalid value for ""^a"" was found in the xmail value segment. Using the default value instead.", ACKNOWLEDGE); 510 511 /* Save the forwarded message? */ 512 513 message_saved = "0"b; 514 dir = xmail_data.mail_dir; 515 516 /* Check to see if the message being forwarded should be saved. */ 517 518 call xmail_value_$get (SAVE_MESSAGE, save_message, code); 519 if code ^= 0 then call xmail_error_$code_first (code, NAME, LOG, 520 "An invalid value for ""^a"" was found in the xmail value segment. Using the default value instead.", SAVE_MESSAGE); 521 522 if save_message = YES 523 then do; 524 ask_again = "0"b; 525 opt = 3; 526 call prepare_to_save_msg; 527 if code ^= 0 then go to pre_end; 528 end; 529 530 else if save_message = ASK 531 then do; 532 RETRY (3): 533 ask_again = "0"b; 534 opt = 3; 535 call xmail_get_str_$yes_no ("Do you want to save the message being forwarded? ", yes_sw); 536 if yes_sw then call prepare_to_save_msg; 537 if ask_again then goto RETRY (opt); /* the user didn't want to create the non-existent file so start over */ 538 if code ^= 0 then go to pre_end; 539 end; 540 541 else if save_message ^= NO 542 then call xmail_error_$code_first (error_table_$bad_segment, NAME, LOG, 543 "An invalid value for ""^a"" was found in the xmail value segment. Using the default value instead.", SAVE_MESSAGE); 544 545 call mail_system_$redistribute_message (forward_msg_ptr, ltrim (rtrim (after (based_string, "Comment (optional):"), WHITE_SPACE), WHITE_SPACE), recipients_info_ptr, addr (auto_deliver_options), code); 546 delivery_results_need_cleanup = "1"b; 547 if code ^= 0 then do; 548 if code = mlsys_et_$no_a_permission then call xmail_error_$no_code (code, NAME, STOP, "You do not have permission to send message to at least one of the recipients."); 549 if n_failed_recipients > 0 550 then do; 551 call ioa_ ("Message no.^d could not be forwarded.", message_num); 552 call ssu_$standalone_invocation (sci_ptr, "", "", null (), xmail_forward_msg_$ssu_exit, code1); 553 if code1 = 0 then call mlsys_utils_$print_delivery_results (sci_ptr, ERRORS_ONLY, recipients_info_ptr, code1); 554 else call xmail_error_$no_code (code1, NAME, LOG, "The reason cannot be printed due to an internal programming error"); 555 call ssu_$destroy_invocation (sci_ptr); 556 557 if idx = curr_msgs.count then go to pre_end; 558 559 resp = ""; 560 do while (resp = ""); 561 call xmail_get_str_ ("^/Press RETURN to continue; BREAK to stop.", "", "", "", resp); 562 end; 563 go to pre_end; 564 end; 565 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 566 call timer_manager_$sleep (4, "11"b); 567 go to pre_end; 568 569 end; 570 571 /* Display the recipients */ 572 573 call ioa_ ("Message ^d forwarded to: ", message_num); 574 call mlsys_utils_$print_address_list_field ("To", to_list_ptr, USE_SCREEN_WIDTH, null, code); 575 if code ^= 0 then call xmail_error_$no_code (code, NAME, CONTINUE, "Message sent to ""To:"" recipient(s)."); 576 577 578 if idx ^= curr_msgs.count then call timer_manager_$sleep (3, "11"b); 579 580 pre_end: 581 call MESSAGE_CLEAN_UP (); 582 583 end; /* end of do loop */ 584 585 EXIT: call CLEAN_UP (); 586 587 if xmail_data.remove_menus 588 then call xmail_redisplay_$menu; /* redisplay menu if removed */ 589 590 return; 591 592 ssu_exit: entry; 593 594 /* This entry doesn't do anything but it is called by ssu_$print_message */ 595 /* which is called by mlsys_utils_$print_delivery_results. */ 596 597 return; 598 599 /* INTERNAL PROCEDURES */ 600 601 prepare_to_save_msg: proc (); 602 dcl savebox_ename char (32); 603 dcl bcc_address_ptr ptr; 604 dcl mail_system_$add_address entry (ptr, ptr, char (8), fixed bin (35)); 605 606 call xmail_value_$get (SAVE_MAILBOX, default_save_file, code); 607 if code ^= 0 then call xmail_error_$code_first (code, NAME, QUIT, 608 "An invalid value for ""^a"" was found in the xmail value segment.", SAVE_MAILBOX); 609 610 if default_save_file = ASK then do; 611 call xmail_select_file_ ("mail file", "sv.mbx", "outgoing", ACCEPT_OLD, ACCEPT_NEW, dir, prefix, create, exists, code); 612 if code ^= 0 then go to PREPARE_EXIT; /* Diagnostic msg already issued by xmail_select_file_. */ 613 yes_sw = "0"b; 614 if ^create & ^exists then do; 615 call ioa_$rsnnl ("The specified mail file ""^a"" does not exist.^/Do you wish to create it? ", prompt_string, unused_return_length, prefix); 616 call xmail_get_str_$yes_no (prompt_string, yes_sw); 617 end; 618 if create | yes_sw then do; 619 call mlsys_utils_$create_savebox (dir, (prefix), code); 620 if code ^= 0 then call xmail_error_$code_first (code, NAME, CONTINUE, "Forwarded message not saved due to an internal programming error."); 621 else call ioa_ ("The mail file ""^a"" has been created.", prefix); 622 end; 623 else if ^exists 624 then do; 625 ask_again = "1"b; 626 goto PREPARE_EXIT; 627 end; 628 end; 629 else prefix = minus_suffix ((default_save_file), (MAILFILE_SUFFIX)); 630 631 if code = 0 then do; 632 call suffixed_name_$make ( (prefix),"sv.mbx",savebox_ename, code); 633 if code ^= 0 then do; 634 call xmail_error_$no_code (code, NAME, CONTINUE, ERROR_MESSAGE, message_num); 635 call timer_manager_$sleep (3,"11"b); 636 goto pre_end; 637 end; 638 call mail_system_$create_address_list (ADDRESS_LIST_VERSION_2, bcc_list_ptr, code); 639 if code ^= 0 then do; 640 call xmail_error_$no_code (code, NAME, CONTINUE, ERROR_MESSAGE, message_num); 641 call timer_manager_$sleep (3, "11"b); 642 go to pre_end; 643 end; 644 call mail_system_$create_savebox_address (xmail_data.actee.person ||"."||xmail_data.actee.project,rtrim (dir),savebox_ename , "", "", bcc_address_ptr, code); 645 if code ^= 0 then do; 646 call xmail_error_$no_code (code, NAME, CONTINUE, ERROR_MESSAGE, message_num); 647 call timer_manager_$sleep (3, "11"b); 648 go to pre_end; 649 end; 650 call mail_system_$add_address (bcc_list_ptr, bcc_address_ptr, ADDRESS_LIST_VERSION_2, code); 651 if code ^= 0 then do; 652 call xmail_error_$no_code (code, NAME, CONTINUE, ERROR_MESSAGE, message_num); 653 call timer_manager_$sleep (3, "11"b); 654 go to pre_end; 655 end; 656 recipients_info.header.n_lists = 2; 657 recipients_info.lists (2).address_list_ptr = bcc_list_ptr; 658 message_saved = "1"b; 659 end; 660 661 PREPARE_EXIT: 662 return; 663 end prepare_to_save_msg; 664 665 MESSAGE_CLEAN_UP: proc (); 666 667 if to_list_ptr ^= null () 668 then do; 669 call mail_system_$free_address_list (to_list_ptr, code); 670 to_list_ptr = null (); 671 end; 672 if bcc_list_ptr ^= null () 673 then do; 674 call mail_system_$free_address_list (bcc_list_ptr, code); 675 bcc_list_ptr = null (); 676 end; 677 if forward_msg_ptr ^= null () 678 then do; 679 call mail_system_$free_message (forward_msg_ptr, code); 680 forward_msg_ptr = null (); 681 end; 682 if recipients_info_ptr ^= null () 683 then do; 684 if delivery_results_need_cleanup then do; 685 call mlsys_utils_$free_delivery_results (recipients_info_ptr, code); 686 if code ^= 0 then call xmail_error_$no_print (code, NAME, CONTINUE, "While cleaning up delivery results."); 687 end; 688 end; 689 return; 690 691 end MESSAGE_CLEAN_UP; 692 693 minus_suffix: proc (name, suffix) returns (char (*) var); 694 695 /* Parameter */ 696 697 dcl name char (*); 698 dcl suffix char (*); 699 700 /* Automatic */ 701 702 dcl reverse_name char (length (name)) var; 703 dcl reverse_suffix char (length (suffix)) var; 704 705 /* Builtin */ 706 707 dcl (after, index, length, reverse, rtrim) builtin; 708 709 reverse_name = reverse (rtrim (name)); 710 reverse_suffix = reverse (rtrim (suffix)); 711 712 if index (reverse_name, reverse_suffix || ".") ^= 1 713 then return (name); 714 else return (reverse (after (reverse_name, reverse_suffix || "."))); 715 716 end minus_suffix; 717 718 CLEAN_UP: proc (); 719 720 if sci_ptr ^= null 721 then call ssu_$destroy_invocation (sci_ptr); 722 723 call MESSAGE_CLEAN_UP (); 724 if forward_seg_ptr ^= null () 725 then call delete_$ptr (forward_seg_ptr, DELETE_SEG_FORCE_CHASE, NAME, code); 726 if recipients_info_ptr ^= null () 727 then free recipients_info in (forward_area); 728 729 return; 730 end CLEAN_UP; 731 732 end xmail_forward_msg_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1130.8 xmail_forward_msg_.pl1 >udd>sm>ds>w>ml>xmail_forward_msg_.pl1 273 1 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>incl>access_mode_values.incl.pl1 275 2 05/22/86 1325.8 mlsys_message.incl.pl1 >ldd>incl>mlsys_message.incl.pl1 277 3 10/27/83 2204.2 mlsys_address_list.incl.pl1 >ldd>incl>mlsys_address_list.incl.pl1 279 4 10/27/83 2204.2 mlsys_deliver_info.incl.pl1 >ldd>incl>mlsys_deliver_info.incl.pl1 281 5 10/27/83 2204.2 mlsys_mailbox.incl.pl1 >ldd>incl>mlsys_mailbox.incl.pl1 283 6 10/27/83 2204.2 mlsys_parse_txt_options.incl.pl1 >ldd>incl>mlsys_parse_txt_options.incl.pl1 285 7 04/06/83 1339.4 terminate_file.incl.pl1 >ldd>incl>terminate_file.incl.pl1 287 8 06/08/82 1429.4 xmail_curr_msg_info.incl.pl1 >ldd>incl>xmail_curr_msg_info.incl.pl1 289 9 09/08/88 2110.9 xmail_data.incl.pl1 >ldd>incl>xmail_data.incl.pl1 291 10 05/28/86 1217.7 xmail_responses.incl.pl1 >ldd>incl>xmail_responses.incl.pl1 293 11 09/12/84 1016.7 window_dcls.incl.pl1 >ldd>incl>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. ACCEPT_NEW 000204 constant bit(1) initial dcl 129 set ref 611* ACCEPT_OLD 000204 constant bit(1) initial dcl 130 set ref 611* ACKNOWLEDGE 000131 constant char(14) initial packed unaligned dcl 131 set ref 492* 493* 508* ADDRESS_LIST_VERSION_2 000014 constant char(8) initial packed unaligned dcl 3-12 set ref 481* 638* 650* ALWAYS_QUEUE_FOREIGN constant fixed bin(17,0) initial dcl 4-33 ref 378 ASK 000004 constant char(3) initial packed unaligned dcl 10-16 ref 498 530 610 BITS_PER_CHAR constant fixed bin(17,0) initial dcl 132 ref 403 462 CONTINUE 000130 constant char(1) initial packed unaligned dcl 133 set ref 446* 470* 484* 575* 620* 634* 640* 646* 652* 686* DELETE_SEG_FORCE_CHASE 000127 constant bit(6) initial packed unaligned dcl 134 set ref 724* DELIVER_OPTIONS_VERSION_2 000012 constant char(8) initial packed unaligned dcl 4-19 ref 376 EMACS_EXT 000121 constant char(21) initial packed unaligned dcl 135 set ref 359* 364 ENTRY_NAME 000114 automatic entry variable initial dcl 136 set ref 136* 359 359 ERRORS_ONLY 000204 constant bit(1) initial dcl 138 set ref 553* ERROR_MESSAGE 000101 constant char(63) initial packed unaligned dcl 137 set ref 446* 484* 565* 634* 640* 646* 652* GO_ON 000062 constant char(57) initial packed unaligned dcl 139 ref 456 LOG 000203 constant char(1) initial packed unaligned dcl 140 set ref 493* 508* 519* 541* 554* 565* MAILFILE_SUFFIX 000060 constant char(6) initial packed unaligned dcl 141 ref 629 NAME 000052 constant char(18) initial packed unaligned dcl 142 set ref 348* 360* 363* 395* 405* 446* 470* 484* 493* 508* 519* 541* 548* 554* 565* 575* 607* 620* 634* 640* 646* 652* 686* 724* NL 006655 constant char(1) initial dcl 143 ref 402 402 NO 006654 constant char(2) initial packed unaligned dcl 10-16 ref 492 496 541 NOTIFY_ON_ERROR constant fixed bin(17,0) initial dcl 4-42 ref 379 ORDINARY_DELIVERY constant fixed bin(17,0) initial dcl 4-25 ref 377 PARSE_TEXT_OPTIONS_VERSION_1 000006 constant char(8) initial packed unaligned dcl 6-17 ref 474 PROBLEM 000032 constant char(61) initial packed unaligned dcl 145 set ref 348* 360* 363* 405* P_curr_msgs_ptr parameter pointer dcl 120 ref 48 308 P_mailbox_ptr parameter pointer dcl 119 ref 48 307 QUIT 000031 constant char(1) initial packed unaligned dcl 146 set ref 607* RECIPIENTS_INFO_VERSION_2 000010 constant char(8) initial packed unaligned dcl 4-62 ref 372 RW_ACCESS_BIN 000223 constant fixed bin(5,0) initial dcl 1-36 set ref 343* SAVE_MAILBOX 000025 constant char(15) initial packed unaligned dcl 147 set ref 606* 607* SAVE_MESSAGE 000021 constant char(15) initial packed unaligned dcl 148 set ref 518* 519* 541* STOP 000031 constant char(1) initial packed unaligned dcl 149 set ref 348* 360* 363* 405* 548* TERM_FILE_BC 000005 constant bit(2) initial packed unaligned dcl 7-12 set ref 346* 404* USE_SCREEN_WIDTH 000157 constant fixed bin(17,0) initial dcl 150 set ref 574* WHITE_SPACE 000020 constant char(4) initial dcl 151 ref 545 545 545 545 WHITE_SPACE_COMMA 000016 constant char(6) initial dcl 153 ref 468 481 481 YES 000003 constant char(3) initial packed unaligned dcl 10-16 ref 506 522 abort 5 000461 automatic bit(1) level 3 packed packed unaligned dcl 209 set ref 380* acknowledge 000120 automatic varying char(3) dcl 173 in procedure "xmail_forward_msg_" set ref 492* 496 498 506 acknowledge 5(03) 000461 automatic bit(1) level 3 in structure "auto_deliver_options" packed packed unaligned dcl 209 in procedure "xmail_forward_msg_" set ref 496* 503* 504* 506* actee 171 based structure level 2 dcl 9-54 addr builtin function dcl 269 ref 416 416 481 481 545 545 address_list_ptr 12 based pointer array level 3 dcl 4-49 set ref 490* 657* after builtin function dcl 269 in procedure "xmail_forward_msg_" ref 468 481 481 545 545 after builtin function dcl 707 in procedure "minus_suffix" ref 714 area_ptr 2 000470 automatic pointer level 2 in structure "auto_parse_text_options" dcl 210 in procedure "xmail_forward_msg_" set ref 475* area_ptr 2 based pointer level 3 in structure "recipients_info" dcl 4-49 in procedure "xmail_forward_msg_" set ref 373* 489* ask_again 000122 automatic bit(1) dcl 174 set ref 524* 532* 537 625* auto_deliver_options 000461 automatic structure level 1 unaligned dcl 209 set ref 545 545 auto_parse_text_options 000470 automatic structure level 1 unaligned dcl 210 set ref 481 481 based_string based char packed unaligned dcl 261 set ref 401* 402* 403 468 481 481 545 545 bcc_address_ptr 000534 automatic pointer dcl 603 set ref 644* 650* bcc_list_ptr 000124 automatic pointer dcl 175 set ref 303* 638* 650* 657 672 674* 675* before builtin function dcl 269 ref 468 481 481 bit_count 000126 automatic fixed bin(24,0) dcl 176 set ref 345* 346* 403* 404* 444* 451 462 char builtin function dcl 269 ref 402 cleanup 000106 stack reference condition dcl 124 ref 332 code 000127 automatic fixed bin(35,0) dcl 177 set ref 343* 344 346 346 346* 348 348* 359* 360 360* 362* 363 363* 394* 395 395* 404* 405 405* 416* 424 444* 445 446* 470* 481* 483 484* 492* 493 493* 518* 519 519* 527 538 545* 547 548 548* 565* 574* 575 575* 606* 607 607* 611* 612 619* 620 620* 631 632* 633 634* 638* 639 640* 644* 645 646* 650* 651 652* 669* 674* 679* 685* 686 686* 724* code1 000130 automatic fixed bin(35,0) dcl 178 set ref 552* 553 553* 554* codeptr builtin function dcl 269 ref 359 359 count 1 based fixed bin(17,0) level 2 dcl 8-8 ref 390 428 432 454 557 578 create 000131 automatic bit(1) dcl 179 set ref 611* 614 618 curr_msgs based structure level 1 unaligned dcl 8-8 curr_msgsp 000510 automatic pointer dcl 8-6 set ref 308* 309 390 391 428 432 433 454 557 578 default_save_file 000132 automatic varying char(32) dcl 180 set ref 386* 606* 610 629 delete_$ptr 000160 constant entry external dcl 214 ref 724 deliver_options based structure level 1 dcl 4-6 delivery_mode 2 000461 automatic fixed bin(17,0) level 2 dcl 209 set ref 377* delivery_results_need_cleanup 000143 automatic bit(1) dcl 181 set ref 304* 546* 684 dir 000144 automatic char(168) packed unaligned dcl 182 set ref 514* 611* 619* 644 644 divide builtin function dcl 269 ref 462 emacs_ 000162 constant entry external dcl 215 ref 416 emacs_seg_path_name 000216 automatic char(168) packed unaligned dcl 183 set ref 353* 354* 354 416 error_list_ptr 000270 automatic pointer dcl 184 set ref 297* error_table_$bad_segment 000152 external static fixed bin(35,0) dcl 160 set ref 508* 541* error_table_$namedup 000146 external static fixed bin(35,0) dcl 158 ref 346 error_table_$segknown 000150 external static fixed bin(35,0) dcl 159 ref 346 exists 000272 automatic bit(1) dcl 185 set ref 611* 614 623 ext_dir 000064 internal static char(168) packed unaligned dcl 168 set ref 362* 364 ext_file 000136 internal static char(32) packed unaligned dcl 169 set ref 362* ext_pname 000010 internal static char(168) packed unaligned dcl 166 set ref 364* 416* ext_ptr 000062 internal static pointer initial dcl 167 set ref 357 359* 362* flags 213 based structure level 2 in structure "xmail_data" dcl 9-54 in procedure "xmail_forward_msg_" flags 4 000470 automatic structure level 2 in structure "auto_parse_text_options" packed packed unaligned dcl 210 in procedure "xmail_forward_msg_" flags 5 000461 automatic structure level 2 in structure "auto_deliver_options" packed packed unaligned dcl 209 in procedure "xmail_forward_msg_" for_type 000273 automatic char(32) packed unaligned dcl 186 set ref 356* 416 416 forward_area based area(1024) dcl 265 ref 370 726 forward_area_ptr 000304 automatic pointer dcl 187 set ref 315* 370 373 726 forward_msg_ptr 000306 automatic pointer dcl 188 set ref 298* 398* 399 545* 677 679* 680* forward_seg_name 000310 automatic char(32) packed unaligned dcl 189 set ref 341* 343* 354 forward_seg_ptr 000320 automatic pointer dcl 190 set ref 299* 343* 346* 401 402 403 404* 444* 468 481 481 545 545 724 724* get_pdir_ 000164 constant entry external dcl 216 ref 353 get_system_free_area_ 000166 constant entry external dcl 217 ref 315 489 hcs_$fs_get_path_name 000170 constant entry external dcl 218 ref 362 hcs_$make_ptr 000172 constant entry external dcl 219 ref 359 hcs_$make_seg 000174 constant entry external dcl 220 ref 343 hcs_$status_mins 000176 constant entry external dcl 221 ref 444 header 10 based structure array level 3 in structure "message_user_fields_list" dcl 2-150 in procedure "xmail_forward_msg_" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 2-313 in procedure "xmail_forward_msg_" header 30 based structure level 2 in structure "message" dcl 2-15 in procedure "xmail_forward_msg_" header 64 based structure array level 4 in structure "message" dcl 2-15 in procedure "xmail_forward_msg_" header based structure level 2 in structure "recipients_info" dcl 4-49 in procedure "xmail_forward_msg_" header 4 based structure level 3 in structure "message_user_field_parameter" dcl 2-208 in procedure "xmail_forward_msg_" header based structure level 2 in structure "message_user_field" dcl 2-163 in procedure "xmail_forward_msg_" header based structure level 2 in structure "message_body_section" dcl 2-274 in procedure "xmail_forward_msg_" idx 000322 automatic fixed bin(17,0) dcl 191 set ref 390* 391 428 432 454 557 578* idx1 000323 automatic fixed bin(17,0) dcl 192 set ref 432* 433* include_invalid_addresses 4(02) 000470 automatic bit(1) level 3 packed packed unaligned dcl 210 set ref 478* index builtin function dcl 707 ref 712 ioa_ 000200 constant entry external dcl 222 ref 311 327 427 439 453 458 551 573 621 ioa_$nnl 000202 constant entry external dcl 223 ref 337 430 434 ioa_$rsnnl 000204 constant entry external dcl 224 ref 615 iox_$user_output 000154 external static pointer dcl 161 set ref 320* 336* 416* length builtin function dcl 707 in procedure "minus_suffix" ref 702 703 length builtin function dcl 269 in procedure "xmail_forward_msg_" ref 403 list_errors 4 000470 automatic bit(1) level 3 packed packed unaligned dcl 210 set ref 476* lists 12 based structure array level 2 dcl 4-49 ltrim builtin function dcl 269 ref 402 545 545 mail_dir based varying char(168) level 2 dcl 9-54 ref 514 mail_system_$add_address 000312 constant entry external dcl 604 ref 650 mail_system_$create_address_list 000206 constant entry external dcl 225 ref 638 mail_system_$create_savebox_address 000210 constant entry external dcl 226 ref 644 mail_system_$free_address_list 000212 constant entry external dcl 227 ref 669 674 mail_system_$free_message 000214 constant entry external dcl 228 ref 679 mail_system_$read_message 000216 constant entry external dcl 229 ref 394 mail_system_$redistribute_message 000220 constant entry external dcl 230 ref 545 mailbox based structure level 1 dcl 5-6 mailbox_ptr 000504 automatic pointer dcl 5-30 set ref 307* 309 392 394* 398 mbz 4(03) 000470 automatic bit(33) level 3 in structure "auto_parse_text_options" packed packed unaligned dcl 210 in procedure "xmail_forward_msg_" set ref 479* mbz 5(05) 000461 automatic bit(31) level 3 in structure "auto_deliver_options" packed packed unaligned dcl 209 in procedure "xmail_forward_msg_" set ref 385* message based structure level 1 dcl 2-15 message_body_section based structure level 1 dcl 2-274 message_envelope based structure level 1 dcl 2-61 message_num 000324 automatic fixed bin(17,0) dcl 193 set ref 391* 392 394* 395* 398 402 427* 446* 453* 470* 484* 551* 565* 573* 634* 640* 646* 652* message_num1 000325 automatic fixed bin(17,0) dcl 194 set ref 433* 434* message_ptr 000476 automatic pointer dcl 2-53 in procedure "xmail_forward_msg_" set ref 399* 402 402 message_ptr 106 based pointer array level 3 in structure "mailbox" dcl 5-6 in procedure "xmail_forward_msg_" ref 392 398 message_redistribution based structure level 1 dcl 2-122 message_reference based structure level 1 dcl 2-234 message_saved 000326 automatic bit(1) dcl 195 set ref 513* 658* message_subject based char packed unaligned dcl 2-51 ref 402 message_text_field based structure level 1 dcl 2-260 message_user_field based structure level 1 dcl 2-163 messages 104 based structure array level 2 dcl 5-6 mlsys_et_$no_a_permission 000156 external static fixed bin(35,0) dcl 162 ref 548 mlsys_utils_$create_savebox 000302 constant entry external dcl 256 ref 619 mlsys_utils_$free_delivery_results 000222 constant entry external dcl 231 ref 685 mlsys_utils_$parse_address_list_text 000304 constant entry external dcl 257 ref 481 mlsys_utils_$print_address_list_field 000224 constant entry external dcl 232 ref 574 mlsys_utils_$print_delivery_results 000226 constant entry external dcl 233 ref 553 n_failed_recipients 10 based fixed bin(17,0) level 3 dcl 4-49 ref 549 n_lists 11 based fixed bin(17,0) level 3 dcl 4-49 set ref 370* 374* 656* 726 name parameter char packed unaligned dcl 697 ref 693 702 709 712 no_chars 000327 automatic fixed bin(21,0) dcl 196 set ref 400* 401 402 403 462* 468 481 481 545 545 null builtin function dcl 269 ref 297 298 299 300 301 302 303 309 309 357 392 466 475 552 552 574 574 667 670 672 675 677 680 682 720 724 726 numbers 2 based fixed bin(17,0) array level 2 dcl 8-8 ref 391 433 opt 000330 automatic fixed bin(17,0) dcl 197 set ref 321 436* 500* 525* 534* 537 parse_text_error_list_ptr 000506 automatic pointer dcl 6-33 set ref 481* parse_text_options based structure level 1 dcl 6-6 person 171 based varying char(32) level 3 dcl 9-54 ref 341 644 prefix 000331 automatic varying char(32) dcl 198 set ref 611* 615* 619 621* 629* 632 project 202 based varying char(32) level 3 dcl 9-54 ref 644 prompt_string 000342 automatic varying char(256) dcl 199 set ref 615* 616* queue_mailing_lists 5(04) 000461 automatic bit(1) level 3 packed packed unaligned dcl 209 set ref 383* queued_notification_mode 4 000461 automatic fixed bin(17,0) level 2 dcl 209 set ref 379* queueing_mode 3 000461 automatic fixed bin(17,0) level 2 dcl 209 set ref 378* quit 000100 stack reference condition dcl 124 ref 317 recipient_notification 5(02) 000461 automatic bit(1) level 3 packed packed unaligned dcl 209 set ref 382* recipients_info based structure level 1 dcl 4-49 set ref 370 726 recipients_info_n_lists 000502 automatic fixed bin(17,0) dcl 4-66 set ref 369* 370 370 recipients_info_ptr 000500 automatic pointer dcl 4-64 set ref 300* 370* 372 373 374 489 490 545* 549 553* 656 657 682 685* 726 726 reissue_query 000000 stack reference condition dcl 124 ref 319 remove_menus 213(02) based bit(1) level 3 packed packed unaligned dcl 9-54 ref 410 587 resp 000444 automatic varying char(1) dcl 200 set ref 559* 560 561* restore_menu_needed 000446 automatic bit(1) dcl 201 set ref 305* 325 413* 418 421* reverse builtin function dcl 707 ref 709 710 714 reverse_name 000100 automatic varying char dcl 702 set ref 709* 712 714 reverse_suffix 000100 automatic varying char dcl 703 set ref 710* 712 714 rtrim builtin function dcl 707 in procedure "minus_suffix" ref 709 710 rtrim builtin function dcl 269 in procedure "xmail_forward_msg_" ref 354 364 402 403 468 481 481 545 545 644 644 save_message 000450 automatic varying char(3) dcl 202 set ref 518* 522 530 541 savebox_ename 000524 automatic char(32) packed unaligned dcl 602 set ref 632* 644* sci_ptr 000452 automatic pointer dcl 203 set ref 301* 552* 553* 555* 720 720* send_if_empty 5(01) 000461 automatic bit(1) level 3 packed packed unaligned dcl 209 set ref 381* ssu_$destroy_invocation 000232 constant entry external dcl 235 ref 555 720 ssu_$standalone_invocation 000230 constant entry external dcl 234 ref 552 subject 50 based structure level 3 dcl 2-15 suffix parameter char packed unaligned dcl 698 ref 693 703 710 suffixed_name_$make 000234 constant entry external dcl 236 ref 632 terminate_file_ 000236 constant entry external dcl 237 ref 346 404 text_lth 52 based fixed bin(21,0) level 4 dcl 2-15 ref 402 text_ptr 50 based pointer level 4 dcl 2-15 ref 402 timer_manager_$sleep 000240 constant entry external dcl 238 ref 447 471 485 566 578 635 641 647 653 to_list_ptr 000454 automatic pointer dcl 204 set ref 302* 466* 481* 490 574* 667 669* 670* type 000456 automatic fixed bin(2,0) dcl 205 set ref 444* unused_return_length 000457 automatic fixed bin(17,0) dcl 206 set ref 615* validate_addresses 4(01) 000470 automatic bit(1) level 3 packed packed unaligned dcl 210 set ref 477* version 000470 automatic char(8) level 2 in structure "auto_parse_text_options" packed packed unaligned dcl 210 in procedure "xmail_forward_msg_" set ref 474* version 000461 automatic char(8) level 2 in structure "auto_deliver_options" packed packed unaligned dcl 209 in procedure "xmail_forward_msg_" set ref 376* version based char(8) level 3 in structure "recipients_info" packed packed unaligned dcl 4-49 in procedure "xmail_forward_msg_" set ref 372* window_$clear_window 000310 constant entry external dcl 11-13 ref 320 336 xmail_data based structure level 1 dcl 9-54 xmail_data_ptr 000306 external static pointer initial dcl 9-52 ref 341 410 514 587 644 644 xmail_error_$code_first 000246 constant entry external dcl 241 ref 493 508 519 541 607 620 xmail_error_$no_code 000242 constant entry external dcl 239 ref 348 360 363 395 405 446 470 484 548 554 565 575 634 640 646 652 xmail_error_$no_print 000244 constant entry external dcl 240 ref 686 xmail_forward_msg_$ssu_exit 000250 constant entry external dcl 242 ref 552 552 xmail_get_str_ 000252 constant entry external dcl 243 ref 561 xmail_get_str_$yes_no 000254 constant entry external dcl 244 ref 437 456 502 535 616 xmail_redisplay_$menu 000256 constant entry external dcl 245 ref 587 xmail_select_file_ 000260 constant entry external dcl 246 ref 611 xmail_sw_$redisplay 000262 constant entry external dcl 248 ref 335 xmail_sw_$update_usage 000264 constant entry external dcl 249 ref 334 xmail_value_$get 000266 constant entry external dcl 250 ref 518 606 xmail_value_$get_with_default 000270 constant entry external dcl 251 ref 492 xmail_window_manager_$quit_handler 000300 constant entry external dcl 255 ref 323 xmail_window_manager_$reconnect 000272 constant entry external dcl 252 ref 426 xmail_window_manager_$restore_menu 000274 constant entry external dcl 253 ref 325 420 xmail_window_manager_$suppress_menu 000276 constant entry external dcl 254 ref 412 yes_sw 000460 automatic bit(1) dcl 207 set ref 437* 438 456* 457 502* 503 535* 536 613* 616* 618 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A internal static char(1) initial packed unaligned dcl 10-16 ALL internal static char(3) initial packed unaligned dcl 10-16 ALWAYS_NOTIFY internal static fixed bin(17,0) initial dcl 4-42 ALWAYS_QUEUE internal static fixed bin(17,0) initial dcl 4-33 A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 DATE internal static char(4) initial packed unaligned dcl 10-16 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 EXPRESS_DELIVERY internal static fixed bin(17,0) initial dcl 4-25 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 F internal static char(1) initial packed unaligned dcl 10-16 FIRST internal static char(5) initial packed unaligned dcl 10-16 INTERACTIVE_DELIVERY internal static fixed bin(17,0) initial dcl 4-25 L internal static char(1) initial packed unaligned dcl 10-16 LAST internal static char(4) initial packed unaligned dcl 10-16 LIST internal static char(2) initial packed unaligned dcl 10-16 MAILBOX_VERSION_2 internal static char(8) initial packed unaligned dcl 5-28 MESSAGE_ADDRESS_LIST_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 2-285 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-318 MESSAGE_DATE_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-79 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_PREFORMATTED_BODY_SECTION internal static fixed bin(17,0) initial dcl 2-285 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 2-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 2-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-253 MESSAGE_TEXT_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_TRACE_VERSION_2 internal static char(8) initial packed unaligned dcl 2-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 2-158 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-213 MESSAGE_VERSION_2 internal static char(8) initial packed unaligned dcl 2-49 MSG_STRUCT_VERSION_1 internal static fixed bin(17,0) initial dcl 8-4 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N internal static char(1) initial packed unaligned dcl 10-16 NEVER_NOTIFY internal static fixed bin(17,0) initial dcl 4-42 NEVER_QUEUE internal static fixed bin(17,0) initial dcl 4-33 NEW internal static char(3) initial packed unaligned dcl 10-16 NEXT internal static char(4) initial packed unaligned dcl 10-16 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 OTHER_MAILBOX internal static fixed bin(17,0) initial dcl 5-37 P internal static char(1) initial packed unaligned dcl 10-16 PREV internal static char(4) initial packed unaligned dcl 10-16 QUESTION internal static char(1) initial packed unaligned dcl 10-16 QUEUE_FOREIGN_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 4-33 QUEUE_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 4-33 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 R_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S internal static char(1) initial packed unaligned dcl 10-16 SAVEBOX internal static fixed bin(17,0) initial dcl 5-37 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEARCH internal static char(6) initial packed unaligned dcl 10-16 SEEN internal static char(4) initial packed unaligned dcl 10-16 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SET internal static char(3) initial packed unaligned dcl 10-16 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 7-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 7-16 TERM_FILE_TERM internal static bit(3) initial packed unaligned dcl 7-14 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 7-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 7-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial packed unaligned dcl 7-15 UNSEEN internal static char(6) initial packed unaligned dcl 10-16 USER_DEFAULT_MAILBOX internal static fixed bin(17,0) initial dcl 5-37 USER_LOGBOX internal static fixed bin(17,0) initial dcl 5-37 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Y internal static char(1) initial packed unaligned dcl 10-16 address_list based structure level 1 dcl 3-6 address_list_n_addresses automatic fixed bin(17,0) dcl 3-16 address_list_ptr automatic pointer dcl 3-14 deliver_options_ptr automatic pointer dcl 4-21 expanded_recipients_result_list based structure level 1 dcl 4-93 expanded_recipients_result_list_n_entries automatic fixed bin(17,0) dcl 4-66 expanded_recipients_result_list_ptr automatic pointer dcl 4-64 mailbox_n_messages automatic fixed bin(17,0) dcl 5-32 message_address_list_user_field based structure level 1 dcl 2-190 message_bit_string_body_section based structure level 1 dcl 2-301 message_bit_string_body_section_bit_string based bit packed unaligned dcl 2-307 message_body_section_parameter based structure level 1 dcl 2-313 message_body_section_parameter_ptr automatic pointer dcl 2-320 message_body_section_ptr automatic pointer dcl 2-280 message_date_user_field based structure level 1 dcl 2-195 message_envelope_parameter based structure level 1 dcl 2-74 message_envelope_parameter_ptr automatic pointer dcl 2-81 message_envelope_ptr automatic pointer dcl 2-69 message_integer_user_field based structure level 1 dcl 2-200 message_n_body_sections automatic fixed bin(17,0) dcl 2-55 message_n_redistributions automatic fixed bin(17,0) dcl 2-55 message_n_user_fields automatic fixed bin(17,0) dcl 2-55 message_preformatted_body_section based structure level 1 dcl 2-292 message_preformatted_body_section_text based char packed unaligned dcl 2-298 message_redistribution_comment based char packed unaligned dcl 2-131 message_redistribution_parameter based structure level 1 dcl 2-139 message_redistribution_parameter_ptr automatic pointer dcl 2-146 message_redistribution_ptr automatic pointer dcl 2-134 message_redistributions_list based structure level 1 dcl 2-109 message_reference_parameter based structure level 1 dcl 2-248 message_reference_parameter_ptr automatic pointer dcl 2-255 message_reference_ptr automatic pointer dcl 2-243 message_reference_subject based char packed unaligned dcl 2-240 message_references_list based structure level 1 dcl 2-219 message_references_list_n_references automatic fixed bin(17,0) dcl 2-55 message_references_list_ptr automatic pointer dcl 2-229 message_text_field_ptr automatic pointer dcl 2-270 message_text_field_text based char packed unaligned dcl 2-268 message_text_user_field based structure level 1 dcl 2-183 message_text_user_field_text based char packed unaligned dcl 2-187 message_trace based structure level 1 dcl 2-87 message_trace_n_relays automatic fixed bin(17,0) dcl 2-55 message_trace_ptr automatic pointer dcl 2-105 message_user_field_parameter based structure level 1 dcl 2-208 message_user_field_parameter_ptr automatic pointer dcl 2-215 message_user_field_ptr automatic pointer dcl 2-169 message_user_fields_list based structure level 1 dcl 2-150 msg_struct based structure level 1 unaligned dcl 8-22 msg_structp automatic pointer dcl 8-20 n_messages automatic fixed bin(17,0) dcl 8-3 nonexist_msgs based structure level 1 unaligned dcl 8-15 nonexist_msgsp automatic pointer dcl 8-13 parse_text_error_list based structure level 1 dcl 6-24 parse_text_error_list_n_errors automatic fixed bin(17,0) dcl 6-35 parse_text_options_ptr automatic pointer dcl 6-19 recipients_result_list based structure level 1 dcl 4-72 recipients_result_list_n_addresses automatic fixed bin(17,0) dcl 4-66 recipients_result_list_ptr automatic pointer dcl 4-64 terminate_file_switches based structure level 1 packed packed unaligned dcl 7-4 window_$bell 000000 constant entry external dcl 11-6 window_$change_column 000000 constant entry external dcl 11-63 window_$change_line 000000 constant entry external dcl 11-59 window_$clear_region 000000 constant entry external dcl 11-7 window_$clear_to_end_of_line 000000 constant entry external dcl 11-9 window_$clear_to_end_of_window 000000 constant entry external dcl 11-11 window_$create 000000 constant entry external dcl 11-72 window_$delete_chars 000000 constant entry external dcl 11-15 window_$destroy 000000 constant entry external dcl 11-74 window_$edit_line 000000 constant entry external dcl 11-76 window_$get_cursor_position 000000 constant entry external dcl 11-17 window_$get_echoed_chars 000000 constant entry external dcl 11-22 window_$get_one_unechoed 000000 constant entry external dcl 11-67 window_$get_one_unechoed_char 000000 constant entry external dcl 11-67 window_$get_unechoed_chars 000000 constant entry external dcl 11-25 window_$insert_text 000000 constant entry external dcl 11-28 window_$overwrite_text 000000 constant entry external dcl 11-29 window_$position_cursor 000000 constant entry external dcl 11-31 window_$position_cursor_rel 000000 constant entry external dcl 11-36 window_$scroll_region 000000 constant entry external dcl 11-42 window_$sync 000000 constant entry external dcl 11-44 window_$write_raw_text 000000 constant entry external dcl 11-48 window_$write_sync_read 000000 constant entry external dcl 11-53 xmail_version internal static varying char(10) initial dcl 9-84 NAMES DECLARED BY EXPLICIT CONTEXT. CLEAN_UP 006150 constant entry internal dcl 718 ref 332 585 EXIT 004424 constant label dcl 585 ref 312 328 441 460 MESSAGE_CLEAN_UP 005556 constant entry internal dcl 665 ref 580 723 PREPARE_EXIT 005554 constant label dcl 661 ref 612 626 RETRY 000000 constant label array(3) dcl 430 ref 321 537 minus_suffix 005717 constant entry internal dcl 693 ref 629 pre_end 004416 constant label dcl 580 ref 438 448 457 472 486 527 538 557 563 567 636 642 648 654 prepare_to_save_msg 004453 constant entry internal dcl 601 ref 526 536 ssu_exit 004444 constant entry external dcl 592 xmail_forward_msg_ 000724 constant entry external dcl 48 ref 136 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7600 10114 6660 7610 Length 10676 6660 314 546 720 136 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xmail_forward_msg_ 570 external procedure is an external procedure. on unit on line 317 88 on unit enables or reverts conditions. on unit on line 319 72 on unit on unit on line 332 64 on unit prepare_to_save_msg internal procedure shares stack frame of external procedure xmail_forward_msg_. MESSAGE_CLEAN_UP 98 internal procedure is called by several nonquick procedures. minus_suffix 81 internal procedure uses auto adjustable storage, uses returns(char(*)) or returns(bit(*)), and is called during a stack extension. CLEAN_UP 86 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 ext_pname xmail_forward_msg_ 000062 ext_ptr xmail_forward_msg_ 000064 ext_dir xmail_forward_msg_ 000136 ext_file xmail_forward_msg_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME minus_suffix 000100 reverse_name minus_suffix 000100 reverse_suffix minus_suffix xmail_forward_msg_ 000114 ENTRY_NAME xmail_forward_msg_ 000120 acknowledge xmail_forward_msg_ 000122 ask_again xmail_forward_msg_ 000124 bcc_list_ptr xmail_forward_msg_ 000126 bit_count xmail_forward_msg_ 000127 code xmail_forward_msg_ 000130 code1 xmail_forward_msg_ 000131 create xmail_forward_msg_ 000132 default_save_file xmail_forward_msg_ 000143 delivery_results_need_cleanup xmail_forward_msg_ 000144 dir xmail_forward_msg_ 000216 emacs_seg_path_name xmail_forward_msg_ 000270 error_list_ptr xmail_forward_msg_ 000272 exists xmail_forward_msg_ 000273 for_type xmail_forward_msg_ 000304 forward_area_ptr xmail_forward_msg_ 000306 forward_msg_ptr xmail_forward_msg_ 000310 forward_seg_name xmail_forward_msg_ 000320 forward_seg_ptr xmail_forward_msg_ 000322 idx xmail_forward_msg_ 000323 idx1 xmail_forward_msg_ 000324 message_num xmail_forward_msg_ 000325 message_num1 xmail_forward_msg_ 000326 message_saved xmail_forward_msg_ 000327 no_chars xmail_forward_msg_ 000330 opt xmail_forward_msg_ 000331 prefix xmail_forward_msg_ 000342 prompt_string xmail_forward_msg_ 000444 resp xmail_forward_msg_ 000446 restore_menu_needed xmail_forward_msg_ 000450 save_message xmail_forward_msg_ 000452 sci_ptr xmail_forward_msg_ 000454 to_list_ptr xmail_forward_msg_ 000456 type xmail_forward_msg_ 000457 unused_return_length xmail_forward_msg_ 000460 yes_sw xmail_forward_msg_ 000461 auto_deliver_options xmail_forward_msg_ 000470 auto_parse_text_options xmail_forward_msg_ 000476 message_ptr xmail_forward_msg_ 000500 recipients_info_ptr xmail_forward_msg_ 000502 recipients_info_n_lists xmail_forward_msg_ 000504 mailbox_ptr xmail_forward_msg_ 000506 parse_text_error_list_ptr xmail_forward_msg_ 000510 curr_msgsp xmail_forward_msg_ 000524 savebox_ename prepare_to_save_msg 000534 bcc_address_ptr prepare_to_save_msg THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp realloc_char_temp cat_realloc_chars 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_before_cs index_after_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. delete_$ptr emacs_ get_pdir_ get_system_free_area_ hcs_$fs_get_path_name hcs_$make_ptr hcs_$make_seg hcs_$status_mins ioa_ ioa_$nnl ioa_$rsnnl mail_system_$add_address mail_system_$create_address_list mail_system_$create_savebox_address mail_system_$free_address_list mail_system_$free_message mail_system_$read_message mail_system_$redistribute_message mlsys_utils_$create_savebox mlsys_utils_$free_delivery_results mlsys_utils_$parse_address_list_text mlsys_utils_$print_address_list_field mlsys_utils_$print_delivery_results ssu_$destroy_invocation ssu_$standalone_invocation suffixed_name_$make terminate_file_ timer_manager_$sleep window_$clear_window xmail_error_$code_first xmail_error_$no_code xmail_error_$no_print xmail_forward_msg_$ssu_exit xmail_get_str_ xmail_get_str_$yes_no xmail_redisplay_$menu xmail_select_file_ xmail_sw_$redisplay xmail_sw_$update_usage xmail_value_$get xmail_value_$get_with_default xmail_window_manager_$quit_handler xmail_window_manager_$reconnect xmail_window_manager_$restore_menu xmail_window_manager_$suppress_menu THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_segment error_table_$namedup error_table_$segknown iox_$user_output mlsys_et_$no_a_permission xmail_data_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 136 000712 48 000720 297 000732 298 000734 299 000735 300 000736 301 000737 302 000740 303 000741 304 000742 305 000743 307 000744 308 000750 309 000753 311 000762 312 000776 315 000777 317 001006 319 001022 320 001036 321 001047 323 001055 325 001067 327 001077 328 001116 330 001121 332 001122 334 001144 335 001157 336 001164 337 001176 341 001211 343 001232 344 001266 345 001270 346 001271 348 001322 353 001357 354 001366 356 001425 357 001431 359 001436 360 001467 362 001524 363 001556 364 001613 365 001653 369 001654 370 001656 372 001667 373 001672 374 001674 376 001676 377 001701 378 001703 379 001705 380 001707 381 001711 382 001713 383 001715 385 001717 386 001721 390 001726 391 001737 392 001742 394 001750 395 001763 398 002023 399 002030 400 002031 401 002033 402 002037 403 002156 404 002173 405 002220 410 002255 412 002263 413 002267 416 002271 418 002326 420 002330 421 002335 424 002336 426 002340 427 002345 428 002365 430 002371 432 002405 433 002417 434 002422 435 002441 436 002443 437 002445 438 002466 439 002471 441 002510 444 002511 445 002526 446 002530 447 002561 448 002576 451 002577 453 002601 454 002621 456 002625 457 002647 458 002652 460 002671 462 002672 466 002674 468 002676 470 002736 471 002772 472 003007 474 003010 475 003012 476 003014 477 003016 478 003020 479 003022 481 003024 483 003123 484 003126 485 003157 486 003174 489 003175 490 003205 492 003210 493 003241 496 003277 498 003307 500 003314 502 003316 503 003340 504 003346 505 003350 506 003351 508 003361 513 003415 514 003416 518 003425 519 003445 522 003503 524 003510 525 003511 526 003513 527 003514 528 003516 530 003517 532 003524 534 003525 535 003527 536 003551 537 003555 538 003561 539 003563 541 003564 545 003625 546 003730 547 003733 548 003735 549 003767 551 003772 552 004012 553 004053 554 004073 555 004123 557 004132 559 004136 560 004137 561 004145 562 004214 563 004215 565 004216 566 004247 567 004264 573 004265 574 004305 575 004343 578 004375 580 004416 583 004422 585 004424 587 004430 590 004442 592 004443 597 004452 601 004453 606 004454 607 004475 610 004533 611 004540 612 004622 613 004624 614 004625 615 004633 616 004663 618 004700 619 004706 620 004737 621 004773 622 005013 623 005014 625 005017 626 005021 628 005022 629 005023 631 005067 632 005072 633 005131 634 005134 635 005165 636 005202 638 005203 639 005216 640 005220 641 005251 642 005266 644 005267 645 005405 646 005410 647 005441 648 005456 650 005457 651 005474 652 005476 653 005527 654 005544 656 005545 657 005550 658 005552 661 005554 665 005555 667 005563 669 005570 670 005600 672 005603 674 005607 675 005620 677 005623 679 005627 680 005640 682 005643 684 005647 685 005651 686 005662 689 005715 693 005716 702 005737 703 005752 709 005765 710 006016 712 006047 714 006106 718 006147 720 006155 723 006170 724 006175 726 006227 729 006242 ----------------------------------------------------------- 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