COMPILATION LISTING OF SEGMENT xmail_reply_msg_ Compiled by: Multics PL/I Compiler, Release 33d, of April 24, 1992 Compiled at: ACTC Technologies Inc. Compiled on: 92-10-06_0026.42_Tue_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1992 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1987 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 8* * * 9* * Copyright (c) 1972 by Massachusetts Institute of * 10* * Technology and Honeywell Information Systems, Inc. * 11* * * 12* *********************************************************** */ 13 14 15 16 17 18 /****^ HISTORY COMMENTS: 19* 1) change(86-01-07,Blair), approve(86-02-26,MCR7358), 20* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 21* 85-04-01 JG Backs: Deleted the constant ASK because it was added to the 22* include file xmail_responses.incl.pl1 and resulted in a compiler warning. 23* 85-05-07 JG Backs: Add an internal procedure to handle the new personalize 24* Include Original in Reply option. 25* 2) change(86-01-07,Blair), approve(86-02-26,MCR7358), 26* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 27* Move code to indicate reply was completed to before the code that 28* asks if the message should be saved. Add code to file the original 29* before filing the reply when indicated. Allow for suppressing the 30* display of the original message in the upper window when indicated. 31* 3) change(86-01-17,Blair), approve(86-02-26,MCR7358), 32* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 33* Check the delete_def_reply flag in CLEAN_UP to make sure that deleted 34* deferred replies get deleted on cleanup. TR 18152. 35* 4) change(86-01-28,Blair), approve(86-02-26,MCR7358), 36* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 37* Add handler for reissue_query condition so that any question can be 38* reissued after the user has hit break in response and then indicated that 39* he wishes to continue. TRs 18711 18974. 40* 5) change(86-10-15,Blair), approve(86-10-15,MCR7564), 41* audit(86-10-28,RBarstad), install(86-10-29,MR12.0-1201): 42* Make replies which include the original message display the message 43* envelope so that the "Sender:" field will be displayed. Fixes error_list 44* 129. 45* 6) change(87-01-21,Blair), approve(87-02-05,MCR7618), 46* audit(87-04-10,RBarstad), install(87-04-26,MR12.1-1025): 47* Grow the reply_msg buffer as necessary since 5000 characters isn't 48* isn't always big enough. Error_list 136. 49* 7) change(87-02-13,Blair), approve(87-02-13,MCR7618), 50* audit(87-04-10,RBarstad), install(87-04-26,MR12.1-1025): 51* Set the static variable reply_request in xmail_data so that we'll be able 52* to know that a reply was being processed when a disconnect occured. Error 53* list #114. 54* 8) change(87-11-06,Blair), approve(87-12-10,MCR7818), 55* audit(87-12-23,LJAdams), install(88-01-12,MR12.2-1013): 56* Move heaven and earth to add the "Reply-To:" field to deferred msgs so 57* that when we get to the emacs editor, the user can edit this field. 58* Rearrange code to query in the correct sequence (ask if we are to use 59* deferred before we decide whether or not to include the original. 60* Also make sure we don't delete the deferred reply when we defer a 61* reply that was originally deferred. 62* 9) change(92-09-10,Zimmerman), approve(92-09-10,MCR8256), audit(92-09-15,Vu), 63* install(92-10-06,MR12.5-1022): 64* Fix bug with "Reply-To:" field. 65* END HISTORY COMMENTS */ 66 67 68 xmail_reply_msg_: procedure (P_mailbox_ptr, P_curr_msgs_ptr); 69 70 /* BEGIN DESCRIPTION 71* 72*function: 73* 74* This proc is invoked as a consequence of the user selecting the Reply 75* option on the Process Incoming Mail or Process Filed Mail nemus. The 76* being-replied-to message is displayed on the upper portion of the screen. 77* The proc calls emacs so that the reply text can be composed and also to 78* permit the user to modify the default recipient list. If the user has so 79* specified the message will be saved in the "outgoing" mbx. The reply will 80* be acknowledged if the user has so specified. 81* 82*history: 83* 84* 81-07-11 Written by R. Ignagni, extensively updated in Nov 1981 85* 86* 83-07-18 DJ Schimke: Modified to use new mail_system calls and version 2 87* mailboxes. 88* 89* 83-09-15 DJ Schimke: Increased the initial size of the based array from 90* 600 characters to 5000 characters. The array wasn't always big enough for 91* very large to or cc fields. 5000 should be plenty. phx13809 92* 93* 83-09-21 DJ Schimke: Modified to query the user before creating a new mail 94* file to save a copy of the reply. This is only in effect when save-outgoing 95* is set to "ask". phx13779 96* 97* 83-10-12 DJ Schimke: Replaced the call to mail_system_$save_message and 98* associated code with a call to xmail_file_msgs_$single_msg; 99* 100* 83-10-26 DJ Schimke: Changed call to xmail_window_manager_$reconnect to a 101* call to xmail_window_manager_$quit_handler so the quit condition handler 102* can special-case the reconnect condition which should NOT interrupt 103* processing after the quit. phx 13227 This entry also prompts when not at 104* a reconnect condition so that unintentionally hitting the BREAK won't throw 105* away any pending work. phx 13018 106* 107* 83-11-22 DJ Schimke: Removed the test for cc string ^= "" before parsing and 108* replacing the cc_list_ptr in the reply message. This test didn't allow the 109* user to delete the cc list even when xmail claimed to have deleted it. 110* 111* 83-11-23 DJ Schimke: Added support for the new personalization option 112* "Outgoing Savefile" which allows selection of where to file save messages. 113* This also solves the discrepancy between setting "Save Outgoing messages" 114* to "yes" and never having set "Save Outgoing messages". 115* 116* 83-12-07 DJ Schimke: Cleaned up the reporting of delivery results by calling 117* mlsys_utils_$print_delivery_results_ and mlsys_utils_$print_address_field 118* for displaying the failure/success of sending. This module still needs 119* recovery code to allow the sender to correct the bad addresses and continue. 120* Deleted unused variable transition_state. 121* 122* 83-12-08 DJ Schimke: Added simple flag to prevent the call to 123* mlsys_util_$free_delivery_results until the call to send the msg has been 124* made. Otherwise, this cleanup will get errors referencing invalid pointers. 125* 126* 83-02-20 DJ Schimke: Modified the cleanup code so recipients_info is only 127* freed by the CLEANUP procedure instead of the MESSAGE_CLEAN_UP procedure. 128* This fixes a problem referencing recipients_info when replying to more than 129* one message (curr_msgs.count > 1). 130* 131* 84-08-08 JG Backs: Modified for the addition of blind carbon copies (bcc). 132* 133* 84-11-08 JG Backs: Deleted the spaces within the quotes of "To:", "cc:" 134* and "bcc:" when used in the calls to mlsys_utils_$parse_address_list_text. 135* The spaces were not needed and were inconsistant across modules. Audit 136* change. 137* 138* 139* 140*END DESCRIPTION 141**/ 142 143 /* PARAMETERS */ 144 145 dcl P_mailbox_ptr ptr parameter; 146 dcl P_curr_msgs_ptr ptr parameter; 147 148 149 /* CONDITIONS */ 150 151 dcl (quit, cleanup, reissue_query) condition; 152 153 /* EXTERNAL STATIC */ 154 155 dcl error_table_$bad_segment ext static fixed bin (35); 156 dcl error_table_$namedup ext static fixed bin (35); 157 dcl error_table_$segknown ext static fixed bin (35); 158 dcl error_table_$smallarg ext static fixed bin (35); 159 dcl iox_$user_output ptr external static; 160 dcl mlsys_et_$no_a_permission static ext fixed bin (35); 161 162 /* CONSTANTS */ 163 164 dcl ALLOW_SELECTION bit (1) aligned static options (constant) init ("1"b); 165 dcl ACKNOWLEDGE char (14) static options (constant) init ("acknowledge_yn"); 166 dcl CONTINUE char (1) static options (constant) init ("c"); 167 dcl BITS_PER_CHAR fixed bin static options (constant) init (9); 168 dcl DEFAULT_WIDTH fixed bin static options (constant) init (72); 169 dcl DELETE_SEG_FORCE bit (6) static options (constant) init ("100100"b); 170 dcl DELETE_SEG_FORCE_CHASE bit (6) static options (constant) init ("100101"b); 171 dcl EMACS_EXT char (21) options (constant) init ("xmail_emacs_ext_main_") int static; 172 dcl ENTRY_NAME entry variable init (xmail_reply_msg_); 173 dcl ERROR_MESSAGE char (69) static options (constant) init ("Reply to message no. ^d terminated, due to an internal program error."); 174 dcl ERRORS_ONLY bit (1) aligned static options (constant) init ("1"b); 175 dcl FILE_ORIGINAL char (32) static options (constant) init ("file_original_yn"); 176 dcl FORMAT_SEG_NAME char (32) static options (constant) init ("format_orig_seg"); 177 dcl INCLUDE_ORIGINAL char (19) static options (constant) init ("include_original_yn"); 178 dcl LOG char (1) static options (constant) init ("l"); 179 dcl MAILFILE_SUFFIX char (6) static options (constant) init ("sv.mbx"); 180 dcl NAME char (16) static options (constant) init ("xmail_reply_msg_"); 181 dcl NL char (1) aligned static options (constant) init (" 182 "); 183 dcl NO_SELECTION bit (1) aligned static options (constant) init ("0"b); 184 dcl NO_WIDTH_LIMIT fixed bin static options (constant) init (-1); 185 dcl ORIGINAL_IN_WINDOW char (21) static options (constant) init ("original_up_window_yn"); 186 dcl ORIG_SEG_NAME char (32) static options (constant) init ("orig_reply_seg"); 187 dcl PROBLEM char (60) static options (constant) init ("Replying terminated. An internal program error has occurred."); 188 dcl REPLY_SEG_NAME char (13) static options (constant) init ("reply_msg_seg"); 189 dcl QUIT char (1) static options (constant) init ("q"); 190 dcl SECONDS bit (2) static options (constant) init ("11"b); 191 dcl SAVE_MAILBOX char (15) static options (constant) init ("save_mailfile"); 192 dcl SAVE_MESSAGE char (15) static options (constant) init ("save_message_yn"); 193 dcl STOP char (1) static options (constant) init ("q"); 194 dcl USE_SCREEN_WIDTH fixed bin aligned static options (constant) init (-1); 195 dcl VIEW_SEG_NAME char (32) static options (constant) init ("view_reply_seg"); 196 dcl WHITE_SPACE_COMMA char (6) aligned static options (constant) init (" 197 ,"); /* HT VT NL comma */ 198 199 /* INTERNAL STATIC */ 200 201 dcl ext_pname char (168) int static; 202 dcl ext_ptr ptr init (null) int static; 203 dcl ext_dir char (168) int static; 204 dcl ext_file char (32) int static; 205 206 /* AUTOMATIC */ 207 208 dcl acknowledge char (3) varying; 209 dcl bcc_list_ptr ptr; 210 dcl bit_count fixed bin (24); 211 dcl bit_count_view fixed bin (24); 212 dcl buffer_size fixed bin (21); 213 dcl buffer_used fixed bin (21); 214 dcl cc_list_ptr ptr; 215 dcl code fixed bin (35); 216 dcl code1 fixed bin (35); 217 dcl default_save_file char (32) var; 218 dcl deferred_reply_exists bit (1); 219 dcl deferred_seg_name char (32) var; 220 dcl defrepl_seg_ptr ptr; 221 dcl delete_def_reply bit (1); 222 dcl delivery_results_need_cleanup bit (1) aligned; 223 dcl emacs_seg_path_name char (168); 224 dcl file_original char (3) var; 225 dcl for_type char (32); 226 dcl format_reply_length fixed bin; 227 dcl format_reply char (33); 228 dcl format_seg_ptr ptr; /* ptr to temp segment for indented formatted original message */ 229 dcl idx fixed bin; 230 dcl idx2 fixed bin; 231 dcl iocb_ptr ptr; 232 dcl include_original bit (1); /* flag: "1"=yes*/ 233 dcl message_num fixed bin; 234 dcl more_than_one bit (1); 235 dcl no_chars fixed bin (21); 236 dcl no_chars_format fixed bin (21); 237 dcl no_chars_orig fixed bin (21); 238 dcl no_chars_view fixed bin (21); 239 dcl no_used fixed bin (21); 240 dcl opt fixed bin; 241 dcl original_in_window bit (1); /* flag: "1"=yes */ 242 dcl orig_seg_ptr ptr; /* ptr to temp segment for printable original message */ 243 dcl prompt_string char (160) var; 244 dcl repl_message_ptr ptr; 245 dcl reply_header char (27); 246 dcl reply_msg_area_ptr ptr; 247 dcl reply_msg_ptr ptr; 248 dcl reply_seg_ptr ptr; 249 dcl reply_to_list_ptr ptr; 250 dcl resp char (1) var; 251 dcl response char (3) varying; /* yes no or ask */ 252 dcl save_message char (3) var; 253 dcl saved_menu_size fixed bin; 254 dcl sci_ptr ptr; 255 dcl start_of_bcc fixed bin; 256 dcl start_of_cc fixed bin; 257 dcl start_of_orig fixed bin; /* original message */ 258 dcl start_of_text fixed bin; 259 dcl status fixed bin (35); 260 dcl to_list_ptr ptr; 261 dcl type fixed bin (2); 262 dcl user_name char (22); 263 dcl view_seg_ptr ptr; 264 dcl yes_sw bit (1) aligned; 265 266 dcl 1 auto_deliver_options like deliver_options; 267 dcl 1 auto_format_message_options like format_message_options; 268 dcl 1 auto_format_document_options like format_document_options; 269 dcl 1 auto_message_body_section_parameter automatic like message_body_section_parameter; 270 dcl 1 auto_parse_text_options like parse_text_options; 271 dcl 1 auto_reply_options like reply_options; 272 273 /* ENTRIES */ 274 275 dcl delete_$ptr entry (ptr, bit (6), char (*), fixed bin (35)); 276 dcl emacs_ entry (ptr, char (*), char (*), ptr, fixed bin (35)); 277 dcl format_document_$string entry (char (*), char (*), fixed bin (21), ptr, fixed bin (35)); 278 dcl get_pdir_ entry () returns (char (168)); 279 dcl get_system_free_area_ entry () returns (ptr); 280 281 dcl hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)); 282 dcl hcs_$make_ptr entry (ptr, char (*), char (*), ptr, fixed bin (35)); 283 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 284 dcl hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, fixed bin (35)); 285 dcl hcs_$status_mins entry (ptr, fixed bin (2), fixed bin (24), fixed bin (35)); 286 dcl ioa_ entry options (variable); 287 dcl ioa_$ioa_switch_nnl entry () options (variable); 288 dcl ioa_$nnl entry options (variable); 289 dcl ioa_$rsnnl entry () options (variable); 290 dcl iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)); 291 dcl iox_$close entry (ptr, fixed bin (35)); 292 dcl iox_$destroy_iocb entry (ptr, fixed bin (35)); 293 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 294 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 295 dcl mail_system_$add_body_section entry (ptr, ptr, fixed bin, fixed bin (35)); 296 dcl mail_system_$deliver_message entry (ptr, ptr, ptr, fixed bin (35)); 297 dcl mail_system_$free_address_list entry (ptr, fixed bin (35)); 298 dcl mail_system_$free_message entry (ptr, fixed bin (35)); 299 dcl mail_system_$read_message entry (ptr, fixed bin, fixed bin (35)); 300 dcl mail_system_$replace_bcc entry (ptr, ptr, fixed bin (35)); 301 dcl mail_system_$replace_cc entry (ptr, ptr, fixed bin (35)); 302 dcl mail_system_$replace_reply_to entry (ptr, ptr, fixed bin (35)); 303 dcl mail_system_$replace_to entry (ptr, ptr, fixed bin (35)); 304 dcl mlsys_utils_$create_reply_message entry (ptr, ptr, ptr, fixed bin (35)); 305 dcl mlsys_utils_$format_address_list_field entry (character (*) varying, ptr, fixed bin, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 306 dcl mlsys_utils_$format_message entry (ptr, ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 307 dcl mlsys_utils_$format_text_field entry 308 (character (*) varying, character (*), bit (1) aligned, fixed binary, pointer, fixed binary (21), 309 fixed binary (21), fixed binary (35)); 310 dcl mlsys_utils_$free_delivery_results entry (ptr, fixed bin (35)); 311 dcl mlsys_utils_$parse_address_list_text entry (character (*), ptr, character (8), ptr, ptr, fixed bin (35)); 312 dcl mlsys_utils_$print_address_list_field entry (char (*) var, ptr, fixed bin, ptr, fixed bin (35)); 313 dcl mlsys_utils_$print_delivery_results entry (ptr, bit (1) aligned, ptr, fixed bin (35)); 314 dcl ssu_$standalone_invocation entry (ptr, char (*), char (*), ptr, entry, fixed bin (35)); 315 dcl ssu_$destroy_invocation entry (ptr); 316 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 317 dcl timer_manager_$sleep entry (fixed bin (71), bit (2)); 318 dcl unique_chars_ entry (bit (*)) returns (char (15)); 319 dcl user_info_ entry (char(*)); 320 dcl xmail_display_msgs_ entry (ptr, ptr, ptr); 321 dcl xmail_error_$no_code entry options (variable); 322 dcl xmail_error_$no_print entry options (variable); 323 dcl xmail_error_$code_first entry options (variable); 324 dcl xmail_file_msgs_$single_msg entry (ptr, char (32) var, bit (1) aligned); 325 dcl xmail_file_msgs_$original_and_reply entry (ptr, ptr, char (32) var, bit (1) aligned); 326 dcl xmail_get_str_ entry (char (*) var, (*) char (*) var, char (*), char (*), char (*) var); 327 dcl xmail_get_str_$yes_no entry (char (*) var, bit (1) aligned); 328 dcl xmail_redisplay_$all entry (); 329 dcl xmail_redisplay_$menu entry (); 330 dcl xmail_reply_msg_$ssu_exit entry (); 331 dcl xmail_sw_$redisplay entry (); 332 dcl xmail_sw_$update_position entry (char (*)); 333 dcl xmail_sw_$update_usage entry (char (*)); 334 dcl xmail_value_$get entry (char (*), char (*) var, fixed bin (35)); 335 dcl xmail_value_$get_with_default entry (char (*), char (*) var, char (*) var, fixed bin (35)); 336 dcl xmail_window_manager_$quit_handler entry () returns (bit (1) aligned); 337 dcl xmail_window_manager_$reconnect entry (); 338 dcl xmail_window_manager_$set_menu_window_size entry (fixed bin, fixed bin (35)); 339 340 dcl based_array (no_chars) char (1) 341 based (reply_seg_ptr); 342 dcl based_string char (no_chars) based (reply_seg_ptr); 343 dcl based_string_format char (no_chars_format) based (format_seg_ptr); 344 dcl based_string_orig char (no_chars_orig) based (orig_seg_ptr); 345 dcl based_string_view char (no_chars_view) based (view_seg_ptr); 346 dcl def_reply_string char (no_chars) based (defrepl_seg_ptr); 347 348 /* AREA */ 349 350 dcl reply_msg_area area aligned based (reply_msg_area_ptr); 351 352 /* BUILTINS */ 353 354 dcl (addr, after, before, char, codeptr, divide, decat, index, length, ltrim, null, rtrim, string, substr, sum) builtin; 355 356 /* INCLUDE FILES */ 357 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 */ 358 359 2 1 /* Begin include file ..... iox_modes.incl.pl1 */ 2 2 2 3 /* Written by C. D. Tavares, 03/17/75 */ 2 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 2 5 2 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 2 7 ("stream_input", "stream_output", "stream_input_output", 2 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 2 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 2 10 "direct_input", "direct_output", "direct_update"); 2 11 2 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 2 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 2 14 2 15 dcl (Stream_input initial (1), 2 16 Stream_output initial (2), 2 17 Stream_input_output initial (3), 2 18 Sequential_input initial (4), 2 19 Sequential_output initial (5), 2 20 Sequential_input_output initial (6), 2 21 Sequential_update initial (7), 2 22 Keyed_sequential_input initial (8), 2 23 Keyed_sequential_output initial (9), 2 24 Keyed_sequential_update initial (10), 2 25 Direct_input initial (11), 2 26 Direct_output initial (12), 2 27 Direct_update initial (13)) fixed bin int static options (constant); 2 28 2 29 /* End include file ..... iox_modes.incl.pl1 */ 360 361 3 1 /* BEGIN INCLUDE FILE format_document_options.incl.pl1 3 2* 3 3* Modified 82.10.18 by Paul W. Benjamin to add dont_compress_sw and upgrade 3 4* to version_2. 3 5* Modified 83.02.15 by PWB to add break_word_sw and max_line_length_sw. 3 6* Modified 83.03.01 by PWB to add dont_break_indented_lines_sw. 3 7* Modified 83.03.03 by PWB to add sub_err_sw. 3 8* Modified 83.06.07 by PWB to add dont_fill_sw. 3 9* Modified 83.06.09 by PWB to add hyphenation_sw and syllable_size. 3 10**/ 3 11 3 12 dcl 1 format_document_options aligned based (format_document_options_ptr), 3 13 2 version_number fixed bin, /* input */ 3 14 /* must be format_document_version_2 */ 3 15 2 indentation fixed bin, /* input */ 3 16 /* all lines must be indented by this value */ 3 17 2 line_length fixed bin, /* input */ 3 18 /* initial line length */ 3 19 2 switches, 3 20 3 pgno_sw bit (1) unal, /* input */ 3 21 /* end each page with a centered page number */ 3 22 3 adj_sw bit (1) unal, /* input */ 3 23 /* adjust mode initially on */ 3 24 /* only meaningful if dont_fill_sw = "0"b */ 3 25 3 galley_sw bit (1) unal, /* input */ 3 26 /* galley mode -- no page breaks */ 3 27 3 error_sw bit (1) unal, /* input */ 3 28 /* report all errors on error_output */ 3 29 3 literal_sw bit (1) unal, /* input */ 3 30 /* "1"b - interpret all lines as text */ 3 31 /* "0"b - lines that start with "." are controls */ 3 32 3 file_sw bit (1) unal, /* output */ 3 33 /* has meaning for non-zero storage system status codes */ 3 34 /* "1"b code refers to output file */ 3 35 /* "0"b code refers to input file */ 3 36 3 dont_compress_sw bit (1) unal, /* input */ 3 37 /* "1"b - don't compress white space */ 3 38 /* "0"b - compress white space when filling */ 3 39 3 break_word_sw bit (1) unal, /* input */ 3 40 /* "1"b - break a word rather than exceed line_length */ 3 41 /* "0"b - write an overlength line if no spaces found */ 3 42 3 max_line_length_sw bit (1) unal, /* input */ 3 43 /* "1"b - line_length cannot be exceeded */ 3 44 /* "0"b - line_length can be exceeded (by .pdw controls) */ 3 45 3 dont_break_indented_lines_sw /* input */ 3 46 bit (1) unal, /* don't break a line that begins with whitespace */ 3 47 /* when it is the last line, or the next line is */ 3 48 /* null or the next line begins with whitespace */ 3 49 3 sub_err_sw bit (1) unal, /* input */ 3 50 /* quietly call sub_err_ with diagnostic errors */ 3 51 3 dont_fill_sw bit (1) unal, /* input */ 3 52 /* "1"b - fill mode off initially */ 3 53 /* "0"b - fill mode on initially */ 3 54 3 hyphenation_sw bit (1) unal, 3 55 3 mbz bit (23) unal, /* input */ 3 56 /* MUST be zero */ 3 57 2 syllable_size 3 58 fixed bin; /* input */ 3 59 /* smallest portion of word */ 3 60 /* to be left by hyphenation */ 3 61 3 62 dcl format_document_options_ptr ptr; 3 63 dcl format_document_version_2 fixed bin int static options (constant) init (2); 3 64 dcl format_document_version_1 fixed bin int static options (constant) init (1); 3 65 3 66 /* END INCLUDE FILE format_document_options.incl.pl1 */ 362 363 4 1 /* BEGIN INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 4 2 /* Created: June 1983 by G. Palter */ 4 3 4 4 /* Definition of an address list -- a collection of addresses used as the value of certain message fields, etc. */ 4 5 4 6 dcl 1 address_list aligned based (address_list_ptr), 4 7 2 version character (8) unaligned, 4 8 2 reserved bit (144), /* ... exclusively for use by the mail system */ 4 9 2 n_addresses fixed binary, /* # of address in this list */ 4 10 2 addresses (address_list_n_addresses refer (address_list.n_addresses)) pointer; 4 11 4 12 dcl ADDRESS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsals02"); 4 13 4 14 dcl address_list_ptr pointer; 4 15 4 16 dcl address_list_n_addresses fixed binary; /* reserved exclusively for use by the mail system */ 4 17 4 18 /* END INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 364 365 5 1 /* BEGIN INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 5 2 /* Created: June 1983 by G. Palter */ 5 3 5 4 /* Options for the mail_system_$deliver_message and mail_system_$redistribute_message entrypoints */ 5 5 5 6 dcl 1 deliver_options aligned based (deliver_options_ptr), 5 7 2 version character (8) unaligned, 5 8 2 delivery_mode fixed binary, /* deliver as an ordinary/interactive/express message */ 5 9 2 queueing_mode fixed binary, /* when to queue the message */ 5 10 2 queued_notification_mode fixed binary, /* when to notify sender about queued mail success/failure */ 5 11 2 flags, 5 12 3 abort bit (1) unaligned, /* ON => don't send it if any fatal errors are detected */ 5 13 3 send_if_empty bit (1) unaligned, /* ON => send the message even if its body is empty */ 5 14 3 recipient_notification bit (1) unaligned, /* ON => send "You have mail." notification */ 5 15 3 acknowledge bit (1) unaligned, /* ON => request ACK message when recipients read it */ 5 16 3 queue_mailing_lists bit (1) unaligned, /* ON => always queue the message for mailing lists */ 5 17 3 mbz bit (31) unaligned; /* must be set to ""b by the caller */ 5 18 5 19 dcl DELIVER_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsdlo02"); 5 20 5 21 dcl deliver_options_ptr pointer; 5 22 5 23 /* Defined modes of delivery */ 5 24 5 25 dcl (ORDINARY_DELIVERY initial (1), /* send as an ordinary message */ 5 26 INTERACTIVE_DELIVERY initial (2), /* send as an interactive message */ 5 27 EXPRESS_DELIVERY initial (3)) /* send as an express interactive message; ie: deliver the 5 28* message only if the user is logged in */ 5 29 fixed binary static options (constant); 5 30 5 31 /* Defined modes for queuing mail on transient errors */ 5 32 5 33 dcl (NEVER_QUEUE initial (1), /* never queue: convert into a fatal error */ 5 34 QUEUE_FOREIGN_WHEN_NEEDED initial (2), /* never queue local mail; queue foreign mail on error */ 5 35 QUEUE_WHEN_NEEDED initial (3), /* queue all mail on any transient error */ 5 36 ALWAYS_QUEUE_FOREIGN initial (4), /* queue local mail on error; always queue foreign mail */ 5 37 ALWAYS_QUEUE initial (5)) /* always queue all mail */ 5 38 fixed binary static options (constant); 5 39 5 40 /* Defined modes of notification of success/failure to deliver queued mail */ 5 41 5 42 dcl (NEVER_NOTIFY initial (1), /* never notify the sender */ 5 43 NOTIFY_ON_ERROR initial (2), /* notify the sender only if it can not be delivered */ 5 44 ALWAYS_NOTIFY initial (3)) /* always notify the sender */ 5 45 fixed binary static options (constant); 5 46 5 47 /* Definition of the recipients of a message and the results of the attempted transmission */ 5 48 5 49 dcl 1 recipients_info aligned based (recipients_info_ptr), 5 50 2 header, 5 51 3 version character (8) unaligned, 5 52 3 area_ptr pointer, /* -> area for following structures; null => system free */ 5 53 3 expanded_recipients_result_list_ptr pointer, /* set -> expanded_recipients_result_list (if any) */ 5 54 3 n_recipients fixed binary, /* set to total # of recipients after expanding lists */ 5 55 3 n_unique_recipients fixed binary, /* set to total # of unique recipients */ 5 56 3 n_failed_recipients fixed binary, /* set to # of recipients that failed or would fail */ 5 57 3 n_lists fixed binary, /* # of address lists of recipients */ 5 58 2 lists (recipients_info_n_lists refer (recipients_info.n_lists)), 5 59 3 address_list_ptr pointer, /* -> an address list containing recipients */ 5 60 3 recipients_result_list_ptr pointer; /* set -> recipients_result_list for this address list */ 5 61 5 62 dcl RECIPIENTS_INFO_VERSION_2 character (8) static options (constant) initial ("mlsrcpt2"); 5 63 5 64 dcl (recipients_info_ptr, recipients_result_list_ptr, expanded_recipients_result_list_ptr) pointer; 5 65 5 66 dcl (recipients_info_n_lists, recipients_result_list_n_addresses, expanded_recipients_result_list_n_entries) 5 67 fixed binary; /* used to allocate these structures */ 5 68 5 69 5 70 /* Data structure returned by the mail system recording the results of the mailing for one of the input address lists */ 5 71 5 72 dcl 1 recipients_result_list aligned based (recipients_result_list_ptr), 5 73 2 n_addresses fixed binary, /* set to # of address in corresponding address list */ 5 74 2 pad bit (36), 5 75 2 results (recipients_result_list_n_addresses refer (recipients_result_list.n_addresses)), 5 76 3 code fixed binary (35), /* set to describe results of attempted delivery */ 5 77 3 expanded_list_info, /* set to identify any failing addresses found in the 5 78* expansion of this address ... */ 5 79 4 first_entry_idx fixed binary (18) unaligned unsigned, 5 80 /* ... index of first such address in structure below ... */ 5 81 4 n_entries fixed binary (18) unaligned unsigned,/* ... # of such addresses there for this address */ 5 82 3 duplicate_info, /* set to identify the prior address (if any) for which this 5 83* is a duplicate ... */ 5 84 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 5 85 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 5 86 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 5 87* being queued due to a transient error */ 5 88 5 89 5 90 /* Describes fatal or transient errors for those recipients which are part of mailing lists of named groups in one of the 5 91* caller's address lists */ 5 92 5 93 dcl 1 expanded_recipients_result_list aligned based (expanded_recipients_result_list_ptr), 5 94 2 n_entries fixed binary, /* set to # of failing expanded recipients */ 5 95 2 pad bit (36), 5 96 2 entries (expanded_recipients_result_list_n_entries refer (expanded_recipients_result_list.n_entries)), 5 97 3 address_ptr pointer, /* -> the failing address from the list/group */ 5 98 3 code fixed binary (35), /* set to describe why delivery failed */ 5 99 3 parent_address, /* set to identify the original recipient of whose expansion 5 100* this address is a part ... */ 5 101 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 5 102 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 5 103 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 5 104* being queued due to a transient error */ 5 105 5 106 /* END INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 366 367 6 1 /* BEGIN INCLUDE FILE ... mlsys_field_names.incl.pl1 */ 6 2 /* Created: June 1983 by G. Palter */ 6 3 6 4 /* Standard names for all message envelope, header, and redistributions list fields supported by the mail system */ 6 5 6 6 dcl (ACCESS_CLASS_FIELDNAME initial ("Access-Class"), 6 7 ACKNOWLEDGE_TO_FIELDNAME initial ("Acknowledge-To"), 6 8 BCC_FIELDNAME initial ("bcc"), 6 9 CC_FIELDNAME initial ("cc"), 6 10 DATE_TIME_CREATED_FIELDNAME initial ("Date"), 6 11 DATE_TIME_DELIVERED_FIELDNAME initial ("Delivery-Date"), 6 12 DATE_TIME_MAILED_FIELDNAME initial ("Posted-Date"), 6 13 DELIVERED_BY_FIELDNAME initial ("Delivery-By"), 6 14 FROM_FIELDNAME initial ("From"), 6 15 IMPLICIT_ROUTE_FIELDNAME initial ("Route"), 6 16 MESSAGE_ID_FIELDNAME initial ("Message-ID"), 6 17 RELAY_FIELDNAME initial ("Relayed"), 6 18 REPLY_REFERENCES_FIELDNAME initial ("In-Reply-To"), 6 19 REPLY_TO_FIELDNAME initial ("Reply-To"), 6 20 SENDER_FIELDNAME initial ("Sender"), 6 21 SUBJECT_FIELDNAME initial ("Subject"), 6 22 TO_FIELDNAME initial ("To"), 6 23 6 24 6 25 /* Prefix to apply to a field name to produce the field name of the equivalent field in the redistributions list. Ie: 6 26* 6 27* call mlsys_utils_$print_address_field 6 28* (REDISTRIBUTED_PREFIX || FROM_FIELDNAME, ...) */ 6 29 6 30 REDISTRIBUTED_PREFIX initial ("Redistributed-"), 6 31 6 32 6 33 /* Fields in a redistribution which do not have a corresponding non-redistributed field */ 6 34 6 35 REDISTRIBUTED_COMMENT_FIELDNAME initial ("Redistributed-Comment")) 6 36 6 37 character (32) varying static options (constant); 6 38 6 39 6 40 /* END INCLUDE FILE ... mlsys_field_names.incl.pl1 */ 368 369 7 1 /* BEGIN INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 7 2 /* Created: June 1983 by G. Palter */ 7 3 7 4 /* Options for the mlsys_utils_$format_message and mlsys_utils_$print_message entrypoints */ 7 5 7 6 dcl 1 format_message_options aligned based (format_message_options_ptr), 7 7 2 version character (8) unaligned, 7 8 2 line_length fixed binary, /* line length to be used to format/print the message */ 7 9 2 envelope_formatting_mode fixed binary, /* level of detail to be displayed for the envelope ... */ 7 10 2 header_formatting_mode fixed binary, /* ... for the message ... */ 7 11 2 redistributions_list_formatting_mode fixed binary, /* ... and for the redistributions list ... */ 7 12 2 include_body bit (1) aligned; /* ON => include message body when formatting/printing; 7 13* OFF => exclude the message body */ 7 14 7 15 dcl FORMAT_MESSAGE_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsfmo01"); 7 16 7 17 dcl format_message_options_ptr pointer; 7 18 7 19 7 20 /* Defined formatting modes */ 7 21 7 22 dcl (NONE_FORMATTING_MODE initial (0), /* exclude this part of the message */ 7 23 BRIEF_FORMATTING_MODE initial (1), /* include only minimal information from this part of the 7 24* message; not valid for the envelope */ 7 25 DEFAULT_FORMATTING_MODE initial (2), /* include default amount of information from this part */ 7 26 LONG_FORMATTING_MODE initial (3)) /* include all information from this part of the message */ 7 27 fixed binary static options (constant); 7 28 7 29 /* END INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 370 371 8 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 8 2 /* Created: April 1983 by G. Palter */ 8 3 8 4 /* Definition of a mailbox as used by the Multics Mail System */ 8 5 8 6 dcl 1 mailbox aligned based (mailbox_ptr), 8 7 2 version character (8) unaligned, 8 8 2 reserved bit (144), /* for exclusive use of the mail system */ 8 9 2 mailbox_address pointer, /* mail system address of this mailbox */ 8 10 2 mailbox_dirname character (168) unaligned, /* directory containing this mailbox */ 8 11 2 mailbox_ename character (32) unaligned, /* entry name of this mailbox (includes ".mbx") */ 8 12 2 mailbox_type fixed binary, /* type of mailbox (see below) */ 8 13 2 mode bit (36), /* user's effective extended access to this mailbox */ 8 14 2 flags, 8 15 3 salvaged bit (1) unaligned, /* ON => this mailbox has been salvaged since last open */ 8 16 3 reserved bit (35) unaligned, /* for exclusive use of the mail system */ 8 17 2 message_selection_mode fixed binary, /* types of messages read: all/ordinary/interactive */ 8 18 2 sender_selection_mode fixed binary, /* whose messages were read: all/own/not-own */ 8 19 2 message_reading_level fixed binary, /* how much of each message read: keys/messages */ 8 20 2 n_messages fixed binary, /* total # of messages in this mailbox structure */ 8 21 2 n_ordinary_messages fixed binary, /* ... # of ordinary messages here */ 8 22 2 n_interactive_messages fixed binary, /* ... # of interactive messages here */ 8 23 2 n_deleted_messages fixed binary, /* ... # of messages here marked for later deletion */ 8 24 2 messages (mailbox_n_messages refer (mailbox.n_messages)), 8 25 3 key bit (72), /* unique key to read this message if not already read */ 8 26 3 message_ptr pointer; /* -> the message structure */ 8 27 8 28 dcl MAILBOX_VERSION_2 character (8) static options (constant) initial ("mlsmbx02"); 8 29 8 30 dcl mailbox_ptr pointer; 8 31 8 32 dcl mailbox_n_messages fixed binary; /* for exclusive use of the mail system */ 8 33 8 34 8 35 /* Types of mailboxes distinguished by the mail system */ 8 36 8 37 dcl (USER_DEFAULT_MAILBOX initial (1), /* the user's default mailbox for receiving mail */ 8 38 USER_LOGBOX initial (2), /* the user's logbox */ 8 39 SAVEBOX initial (3), /* a savebox */ 8 40 OTHER_MAILBOX initial (4)) /* any other type of mailbox */ 8 41 fixed binary static options (constant); 8 42 8 43 /* END INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 372 373 9 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 9 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 9 7* Added seen switch to message. 9 8* END HISTORY COMMENTS */ 9 9 9 10 9 11 /* Created: June 1983 by G. Palter */ 9 12 9 13 /* Definition of a message as used by the Multics Mail System */ 9 14 9 15 dcl 1 message aligned based (message_ptr), 9 16 2 version character (8) unaligned, 9 17 2 reserved bit (144), /* for exclusive use of the mail system */ 9 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 9 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 9 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 9 21 2 n_body_sections fixed binary, /* # of sections in the body */ 9 22 2 flags, 9 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 9 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 9 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 9 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 9 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 9 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 9 29 2 pad bit (36), 9 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 9 31 2 header, 9 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 9 33 3 access_class bit (72), /* AIM access class of this message */ 9 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 9 35 3 from pointer, /* -> address list of author(s) of the message */ 9 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 9 37 3 to pointer, /* -> address list of primary recipients */ 9 38 3 cc pointer, /* -> address list of secondary recipients */ 9 39 3 bcc pointer, /* -> address list of blind recipients */ 9 40 3 subject like message_text_field, /* subject of the message */ 9 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 9 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 9 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 9 44 2 body, 9 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 9 46 3 pad bit (36), 9 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 9 48 9 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 9 50 9 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 9 52 9 53 dcl message_ptr pointer; 9 54 9 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 9 56 message_references_list_n_references) 9 57 fixed binary; /* for exclusive use of the mail system */ 9 58 9 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 9 60 9 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 9 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 9 63 2 sender pointer, /* -> address of entity that mailed the message */ 9 64 2 trace pointer, /* -> message_trace describing how it got here */ 9 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 9 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 9 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 9 68 9 69 dcl message_envelope_ptr pointer; 9 70 9 71 9 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 9 73 9 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 9 75 2 pad pointer, /* forces even word alignment */ 9 76 2 version character (8) unaligned, 9 77 2 envelope like message_envelope; 9 78 9 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 9 80 9 81 dcl message_envelope_parameter_ptr pointer; 9 82 9 83 9 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 9 85* networks to reach this recipient */ 9 86 9 87 dcl 1 message_trace aligned based (message_trace_ptr), 9 88 2 version character (8) unaligned, 9 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 9 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 9 91 2 pad bit (36), 9 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 9 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 9 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 9 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 9 96 3 receiving_host character (256) varying, /* ... the host which received it */ 9 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 9 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 9 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 9 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 9 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 9 102 9 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 9 104 9 105 dcl message_trace_ptr pointer; 9 106 9 107 /* Definition of a message's redistributions list */ 9 108 9 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 9 110 2 version character (8) unaligned, 9 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 9 112 2 pad bit (36), 9 113 2 n_redistributions fixed binary, /* # of redistributions */ 9 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 9 115 like message_redistribution; /* the redistributions: oldest first */ 9 116 9 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 9 118 9 119 9 120 /* Definition of a single redistribution (forwarding) of a message */ 9 121 9 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 9 123 2 envelope like message_envelope, 9 124 2 header, 9 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 9 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 9 127 3 from pointer, /* -> address list of authors of this redistribution */ 9 128 3 to pointer, /* -> address list of recipients of the redistribution */ 9 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 9 130 9 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 9 132 based (message_redistribution.comment.text_ptr); 9 133 9 134 dcl message_redistribution_ptr pointer; 9 135 9 136 9 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 9 138 9 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 9 140 2 pad pointer, /* forces even word alignment */ 9 141 2 version character (8) unaligned, 9 142 2 redistribution like message_redistribution; 9 143 9 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 9 145 9 146 dcl message_redistribution_parameter_ptr pointer; 9 147 9 148 /* Definition of the list of user-defined fields in a message */ 9 149 9 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 9 151 2 version character (8) unaligned, 9 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 9 153 2 pad bit (36), 9 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 9 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 9 156 like message_user_field; /* the actual user-defined fields */ 9 157 9 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 9 159 9 160 9 161 /* Definition of a user defined message header field */ 9 162 9 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 9 164 2 header, 9 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 9 166 3 field_type fixed binary, /* type of data contained in this field */ 9 167 2 field_type_variable bit (144); /* the actual data (see below) */ 9 168 9 169 dcl message_user_field_ptr pointer; 9 170 9 171 9 172 /* Defined types of user defined fields */ 9 173 9 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 9 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 9 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 9 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 9 178 fixed binary static options (constant); 9 179 9 180 9 181 /* Structures used to access the data for the different types of user defined fields */ 9 182 9 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 9 184 2 header like message_user_field.header, 9 185 2 text like message_text_field; /* the message text */ 9 186 9 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 9 188 based (message_text_user_field.text.text_ptr); 9 189 9 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 9 191 2 header like message_user_field.header, 9 192 2 address_list_ptr pointer, /* -> the address list */ 9 193 2 pad bit (72); 9 194 9 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 9 196 2 header like message_user_field.header, 9 197 2 date_time fixed binary (71), /* the clock reading */ 9 198 2 pad bit (72); 9 199 9 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 9 201 2 header like message_user_field.header, 9 202 2 value fixed binary (35), /* the integer value */ 9 203 2 pad bit (108); 9 204 9 205 9 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 9 207 9 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 9 209 2 pad pointer, /* forces even word alignment */ 9 210 2 version character (8) unaligned, 9 211 2 user_field like message_user_field; 9 212 9 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 9 214 9 215 dcl message_user_field_parameter_ptr pointer; 9 216 9 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 9 218 9 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 9 220 2 version character (8) unaligned, 9 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 9 222 2 pad bit (36), 9 223 2 n_references fixed binary, /* # of references in this list */ 9 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 9 225 like message_reference; /* the references themselves */ 9 226 9 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 9 228 9 229 dcl message_references_list_ptr pointer; 9 230 9 231 9 232 /* Definition of a reference to another message */ 9 233 9 234 dcl 1 message_reference aligned based (message_reference_ptr), 9 235 2 message_id bit (72), /* ID of the other message */ 9 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 9 237 2 from pointer, /* -> address list of authors of the other message */ 9 238 2 subject like message_text_field; /* subject of the other message */ 9 239 9 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 9 241 based (message_reference.subject.text_ptr); 9 242 9 243 dcl message_reference_ptr pointer; 9 244 9 245 9 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 9 247 9 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 9 249 2 pad pointer, /* forces even word alignment */ 9 250 2 version character (8) unaligned, 9 251 2 reference like message_reference; 9 252 9 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 9 254 9 255 dcl message_reference_parameter_ptr pointer; 9 256 9 257 9 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 9 259 9 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 9 261 2 text_ptr pointer, /* -> the actual text */ 9 262 2 text_lth fixed binary (21), /* length of said text */ 9 263 2 flags, 9 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 9 265* OFF => the text will always be a single line */ 9 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 9 267 9 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 9 269 9 270 dcl message_text_field_ptr pointer; 9 271 9 272 /* Definition of a section of the body of a message */ 9 273 9 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 9 275 2 header, 9 276 3 section_type fixed binary, /* type of "text" stored in this section */ 9 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 9 278 2 section_type_variable bit (144); /* the actual data (see below) */ 9 279 9 280 dcl message_body_section_ptr pointer; 9 281 9 282 9 283 /* Defined types of message body sections */ 9 284 9 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 9 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 9 287 fixed binary static options (constant); 9 288 9 289 9 290 /* Structures used to access the data for the different types of message body sections */ 9 291 9 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 9 293 2 header like message_body_section.header, 9 294 2 text_ptr pointer, /* -> the text */ 9 295 2 text_lth fixed binary (21), /* length of said text in characters */ 9 296 2 reserved bit (36); /* for exclusive use of the mail system */ 9 297 9 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 9 299 based (message_preformatted_body_section.text_ptr); 9 300 9 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 9 302 2 header like message_body_section.header, 9 303 2 bit_string_ptr pointer, /* -> the bit string */ 9 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 9 305 2 reserved bit (36); /* for exclusive use of the mail system */ 9 306 9 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 9 308 based (message_bit_string_body_section.bit_string_ptr); 9 309 9 310 9 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 9 312 9 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 9 314 2 pad pointer, /* forces even word alignment */ 9 315 2 version character (8) unaligned, 9 316 2 section like message_body_section; 9 317 9 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 9 319 9 320 dcl message_body_section_parameter_ptr pointer; 9 321 9 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 374 375 10 1 /* BEGIN INCLUDE FILE ... mlsys_parse_txt_options.incl.pl1 */ 10 2 /* Created: June 1983 by G. Palter */ 10 3 10 4 /* Options for the mlsys_utils_$parse_address_list_text and mlsys_utils_$parse_message_text entrypoints */ 10 5 10 6 dcl 1 parse_text_options aligned based (parse_text_options_ptr), 10 7 2 version character (8) unaligned, 10 8 2 area_ptr pointer, /* -> area for following structures; null => system free */ 10 9 2 flags, 10 10 3 list_errors bit (1) unaligned, /* ON => return the list of errors in the input text */ 10 11 3 validate_addresses bit (1) unaligned, /* ON => validate the existence of the addresses in the 10 12* address list or message */ 10 13 3 include_invalid_addresses bit (1) unaligned, /* ON => create an invalid address for each unparseable 10 14* substring of the input text */ 10 15 3 mbz bit (33) unaligned; /* must be set to ""b by the caller */ 10 16 10 17 dcl PARSE_TEXT_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsptxt1"); 10 18 10 19 dcl parse_text_options_ptr pointer; 10 20 10 21 10 22 /* Describes the errors detected while parsing the printed representation of an address list or message */ 10 23 10 24 dcl 1 parse_text_error_list aligned based (parse_text_error_list_ptr), 10 25 2 n_errors fixed binary, /* set to # of errors detected */ 10 26 2 errors (parse_text_error_list_n_errors refer (parse_text_error_list.n_errors)), 10 27 3 text_start fixed binary (21), /* ... set to index of first character in the substring */ 10 28 3 text_lth fixed binary (21), /* ... set to length of this invalid substring */ 10 29 3 code fixed binary (35), /* ... set to an error code which describes what is wrong with 10 30* this substring */ 10 31 3 additional_info character (128) varying; /* ... and extra information to clarify the error */ 10 32 10 33 dcl parse_text_error_list_ptr pointer; 10 34 10 35 dcl parse_text_error_list_n_errors fixed binary; /* used to allocate the above structure */ 10 36 10 37 /* END INCLUDE FILE ... mlsys_parse_txt_options.incl.pl1 */ 376 377 11 1 /* BEGIN INCLUDE FILE ... mlsys_reply_options.incl.pl1 */ 11 2 /* Created: June 1983 by G. Palter */ 11 3 11 4 /* Options for the mlsys_utils_$create_reply_message entrypoint */ 11 5 11 6 dcl 1 reply_options aligned based (reply_options_ptr), 11 7 2 version character (8) unaligned, 11 8 2 to pointer, /* -> address list of additional primary recipients */ 11 9 2 cc pointer, /* -> address list of additional secondary recipients */ 11 10 2 bcc pointer, /* -> address list of additional blind recipients */ 11 11 2 flags, 11 12 3 include_authors bit (1) unaligned, /* ON => include the authors of the message in the reply */ 11 13 3 include_recipients bit (1) unaligned, /* ON => include the recipients in the reply */ 11 14 3 include_self bit (1) unaligned, /* ON => include yourself in an author or recipient of the 11 15* original and the approrpriate flag above is on */ 11 16 3 mbz bit (33) unaligned; /* must be set to ""b by the caller */ 11 17 11 18 dcl REPLY_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsrp002"); 11 19 11 20 dcl reply_options_ptr pointer; 11 21 11 22 /* END INCLUDE FILE ... mlsys_reply_options.incl.pl1 */ 378 379 12 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 12 2 12 3 /* This include file contains structures for the hcs_$star_, 12 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 12 5* 12 6* Written 23 October 1978 by Monte Davidoff. 12 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 12 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 12 9**/ 12 10 12 11 /* automatic */ 12 12 12 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 12 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 12 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 12 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 12 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 12 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 12 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 12 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 12 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 12 22 12 23 /* based */ 12 24 12 25 /* hcs_$star_ entry structure */ 12 26 12 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 12 28 2 type fixed binary (2) unsigned unaligned, 12 29 /* storage system type */ 12 30 2 nnames fixed binary (16) unsigned unaligned, 12 31 /* number of names of entry that match star_name */ 12 32 2 nindex fixed binary (18) unsigned unaligned; 12 33 /* index of first name in star_names */ 12 34 12 35 /* hcs_$star_ name structure */ 12 36 12 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 12 38 12 39 /* hcs_$star_list_ branch structure */ 12 40 12 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 12 42 2 type fixed binary (2) unsigned unaligned, 12 43 /* storage system type */ 12 44 2 nnames fixed binary (16) unsigned unaligned, 12 45 /* number of names of entry that match star_name */ 12 46 2 nindex fixed binary (18) unsigned unaligned, 12 47 /* index of first name in star_list_names */ 12 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 12 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 12 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 12 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 12 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 12 53 2 pad bit (7) unaligned, 12 54 2 records fixed binary (18) unsigned unaligned; 12 55 /* records used by branch */ 12 56 12 57 /* hcs_$star_dir_list_ branch structure */ 12 58 12 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 12 60 2 type fixed binary (2) unsigned unaligned, 12 61 /* storage system type */ 12 62 2 nnames fixed binary (16) unsigned unaligned, 12 63 /* number of names of entry that match star_name */ 12 64 2 nindex fixed binary (18) unsigned unaligned, 12 65 /* index of first name in star_list_names */ 12 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 12 67 2 pad bit (36) unaligned, 12 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 12 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 12 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 12 71 2 bit_count fixed binary (24) unaligned; 12 72 /* bit count of the branch */ 12 73 12 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 12 75 12 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 12 77 2 type fixed binary (2) unsigned unaligned, 12 78 /* storage system type */ 12 79 2 nnames fixed binary (16) unsigned unaligned, 12 80 /* number of names of entry that match star_name */ 12 81 2 nindex fixed binary (18) unsigned unaligned, 12 82 /* index of first name in star_list_names */ 12 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 12 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 12 85 2 pathname_len fixed binary (18) unsigned unaligned, 12 86 /* length of the pathname of the link */ 12 87 2 pathname_index fixed binary (18) unsigned unaligned; 12 88 /* index of start of pathname in star_list_names */ 12 89 12 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 12 91 12 92 declare star_list_names char (32) based (star_list_names_ptr) 12 93 dimension (star_links (star_branch_count + star_link_count).nindex 12 94 + star_links (star_branch_count + star_link_count).nnames 12 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 12 96 * binary ( 12 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 12 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 12 99 12 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 12 101 12 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 12 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 12 104 12 105 /* internal static */ 12 106 12 107 /* star_select_sw values */ 12 108 12 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 12 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 12 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 12 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 12 113 fixed binary (3) internal static options (constant) initial (5); 12 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 12 115 fixed binary (3) internal static options (constant) initial (7); 12 116 12 117 /* storage system types */ 12 118 12 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 12 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 12 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 12 122 12 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 380 381 13 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 13 2 /* format: style2,^inddcls,idind32 */ 13 3 13 4 declare 1 terminate_file_switches based, 13 5 2 truncate bit (1) unaligned, 13 6 2 set_bc bit (1) unaligned, 13 7 2 terminate bit (1) unaligned, 13 8 2 force_write bit (1) unaligned, 13 9 2 delete bit (1) unaligned; 13 10 13 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 13 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 13 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 13 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 13 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 13 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 13 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 13 18 13 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 382 383 14 1 /* Created 06/17/81 by Suzanne Krupp */ 14 2 14 3 dcl n_messages fixed bin; 14 4 dcl MSG_STRUCT_VERSION_1 fixed bin int static options(constant) init(1); 14 5 14 6 dcl curr_msgsp ptr; 14 7 14 8 dcl 1 curr_msgs based(curr_msgsp), 14 9 2 version fixed bin, 14 10 2 count fixed bin, 14 11 2 numbers (n_messages refer(curr_msgs.count)) fixed bin; 14 12 14 13 dcl nonexist_msgsp ptr; 14 14 14 15 dcl 1 nonexist_msgs based(nonexist_msgsp), 14 16 2 version fixed bin, 14 17 2 count fixed bin, 14 18 2 numbers (n_messages refer(nonexist_msgs.count)) fixed bin; 14 19 14 20 dcl msg_structp ptr; 14 21 14 22 dcl 1 msg_struct based(msg_structp), 14 23 2 version fixed bin, 14 24 2 count fixed bin, 14 25 2 numbers(n_messages refer(msg_struct.count)) fixed bin; 385 15 1 /* BEGIN INCLUDE FILE: xmail_data.incl.pl1 */ 15 2 15 3 15 4 /****^ HISTORY COMMENTS: 15 5* 1) change(85-12-20,Blair), approve(86-03-06,MCR7358), 15 6* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 15 7* Modified 03/15/85 by Joanne Backs adding confirm_print flag. 15 8* 2) change(85-12-20,LJAdams), approve(86-03-06,MCR7358), 15 9* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 15 10* Adding switch to indicate request for menu display came from general help. 15 11* This is so general help menu will be displayed in top screen. 15 12* 3) change(86-01-10,Blair), approve(86-03-06,MCR7358), 15 13* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 15 14* Add switch to indicate whether or not it is permissible to process mail 15 15* in other users' mailboxes (foreign_mailbox). 15 16* 4) change(86-01-13,Blair), approve(86-03-06,MCR7358), 15 17* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 15 18* Add bit to indicate whether or not this is a true cleanup condition. 15 19* 5) change(86-02-06,Blair), approve(86-03-06,MCR7358), 15 20* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 15 21* Rearrange to group all the bit flags together in one word with a pad. 15 22* 6) change(86-03-05,Blair), approve(86-03-05,MCR7358), 15 23* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 15 24* Change value_seg ptr to value_seg_pathname to avoid the situation where 15 25* you keep around a pointer to a structure which no longer exists. 15 26* 7) change(87-01-16,Blair), approve(87-02-05,MCR7618), 15 27* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 15 28* Add a field to indicate whether or not we should process interactive msgs. 15 29* Increment version to 4.1 so default value will get set. 15 30* 8) change(87-02-13,Blair), approve(87-02-13,MCR7618), 15 31* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 15 32* Add a field to indicate whether or not we're processing a reply so that we 15 33* will be able to rebuild the screens properly after a disconnect occurs. 15 34* Error_list #114. 15 35* 9) change(88-07-26,Blair), approve(88-07-26,MCR7959), 15 36* audit(88-08-25,RBarstad), install(88-09-02,MR12.2-1098): 15 37* Add a bit to indicate whether or not the error segment had to be created 15 38* in the pdir (because we didn't have sma access to the mlsys_dir). 15 39* END HISTORY COMMENTS */ 15 40 15 41 15 42 /* Written 5/13/81 by Paul H. Kyzivat */ 15 43 /* Modified 12/16/81 by S. Krupp to delete unused parts of structure 15 44* and to add n_fkeys_used */ 15 45 /* Modified 12/14/82 by Dave Schimke to make the xmail version a 10 character 15 46* varying string. */ 15 47 /* Modified 09/12/83 by Dave Schimke adding interactive_msgs flag */ 15 48 /* Modified 09/14/83 by Dave Schimke adding moved_user_io */ 15 49 /* Modified 09/06/84 by Joanne Backs adding lists_as_menus flag */ 15 50 /* Modified 09/21/84 by Joanne Backs adding remove_menus flag */ 15 51 15 52 dcl xmail_data_ptr external static ptr init (null); 15 53 15 54 dcl 1 xmail_data aligned based (xmail_data_ptr), 15 55 2 mail_dir char (168) varying, 15 56 2 first_label label, 15 57 2 quit_label label, 15 58 2 value_seg_pathname char (168) varying, 15 59 2 moved_user_io ptr, 15 60 2 normal_usage char (80) unal, 15 61 2 function_key_info, 15 62 3 function_key_data_ptr ptr, 15 63 3 n_fkeys_used fixed bin, 15 64 2 actee, 15 65 3 person char(32) varying, 15 66 3 project char(32) varying, 15 67 2 flags aligned, 15 68 3 mail_in_incoming bit (1) unal, 15 69 3 lists_as_menus bit (1) unal, /* personalization */ 15 70 3 remove_menus bit (1) unal, /* personalization */ 15 71 3 confirm_print bit (1) unal, /* personalization */ 15 72 3 multics_mode bit (1) unal, /* personalization */ 15 73 3 interactive_msgs bit (1) unal, /* personalization */ 15 74 3 foreign_mailbox bit (1) unal, /* read others' mailboxes */ 15 75 3 general_help bit (1) unal, /* indicated requesting gen help*/ 15 76 3 cleanup_signalled bit (1) unal, /* on when true cleanup condition */ 15 77 3 msgs_as_mail bit (1) unal, /* on for include_msgs */ 15 78 3 reply_request bit (1) unal, /* on if we're doing a reply */ 15 79 3 error_seg_in_pdir bit (1) unal, /* on if the error_seg is in the pdir */ 15 80 3 pad bit (24) unal; 15 81 15 82 15 83 15 84 dcl xmail_version char(10) var static options(constant) init("4.1"); 15 85 15 86 /* END INCLUDE FILE: xmail_data.incl.pl1 */ 386 387 16 1 /* BEGIN INCLUDE FILE xmail_responses.incl.pl1 */ 16 2 16 3 /****^ HISTORY COMMENTS: 16 4* 1) change(86-02-07,Blair), approve(86-03-06,MCR7358), 16 5* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 16 6* 85-03-05 JG Backs: Modified to add a response of date. 16 7* 85-03-11 JG Backs: Modified to add short forms of keywords (a,l,p,f). 16 8* 85-03-14 JG Backs: Modified to add ASK, SET, and S. 16 9* 2) change(86-02-07,Blair), approve(86-03-06,MCR7358), 16 10* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 16 11* Modify to add SEEN and UNSEEN. 16 12* END HISTORY COMMENTS */ 16 13 16 14 /* Created 06/17/81 by Suzanne Krupp */ 16 15 16 16 dcl (QUESTION char(1) init("?"), 16 17 LIST char(2) init("??"), 16 18 A char(1) init("a"), 16 19 ALL char(3) init("all"), 16 20 ASK char(3) init("ask"), 16 21 DATE char(4) init("date"), 16 22 F char(1) init("f"), 16 23 FIRST char(5) init("first"), 16 24 L char(1) init("l"), 16 25 LAST char(4) init("last"), 16 26 N char (1) init ("n"), 16 27 NO char(2) init("no"), 16 28 NEXT char(4) init("next"), 16 29 NEW char(3) init("new"), 16 30 P char(1) init("p"), 16 31 PREV char(4) init("prev"), 16 32 S char(1) init("s"), 16 33 SEEN char (4) init("seen"), 16 34 SET char(3) init("set"), 16 35 SEARCH char(6) init("search"), 16 36 UNSEEN char (6) init("unseen"), 16 37 Y char (1) init ("y"), 16 38 YES char(3) init("yes")) 16 39 int static options(constant); 16 40 16 41 /* END INCLUDE FILE ... xmail_responses.incl.pl1 */ 388 389 17 1 /* Begin include file: xmail_windows.incl.pl1 */ 17 2 /* Created 6/24/81 by Paul Kyzivat */ 17 3 /* Mofified 6/20/84 by DJ Schimke to add the mm_status window */ 17 4 17 5 dcl 1 xmail_windows aligned external static, 17 6 2 initial_position fixed bin, 17 7 2 min_lines_needed fixed bin, 17 8 2 (status, mm_status, menu, bottom) aligned like xmail_window_info_format; 17 9 17 10 dcl 1 xmail_window_info_format aligned based, 17 11 2 iocb ptr, 17 12 2 position aligned like window_position_info; 17 13 18 1 /* BEGIN INCLUDE FILE ... window_control_info.incl.pl1 JRD */ 18 2 /* format: style3 */ 18 3 18 4 /* Modified 26 January 1982 by William York to add the set_more_handler 18 5* and reset_more_handler control orders. */ 18 6 /* Modified October 1982 by WMY to add set and get_token_characters, 18 7* set and get_more_prompt. */ 18 8 /* Modified February 1983 by WMY to add the line_editor_key_binding_info 18 9* structure. */ 18 10 /* Modified 30 September 1983 by Jon A. Rochlis to add the origin.column for 18 11* partial screen width windows. */ 18 12 /* Modified 9 October 1983 by JR to add version 1 window_edit_line_info. 18 13* This should be removed when window_info.incl.pl1 is created. */ 18 14 /* Modified 29 February 1984 by Barmar to add version 1 18 15* get_editor_key_bindings_info. */ 18 16 /* Modified 1 March 1984 by Barmar to add version 1 18 17* set_editor_key_bindings_info. */ 18 18 /* Modified 2 March 1984 by Barmar to upgrade to version 3 18 19* line_editor_key_bindings_info, which includes the name, description, and 18 20* info path */ 18 21 18 22 /* structure for the set_window_info and get_window_info 18 23* control orders. */ 18 24 18 25 dcl 1 window_position_info 18 26 based (window_position_info_ptr), 18 27 2 version fixed bin, 18 28 2 origin, 18 29 3 column fixed bin, 18 30 3 line fixed bin, 18 31 2 extent, 18 32 3 width fixed bin, 18 33 3 height fixed bin; 18 34 18 35 dcl (window_position_info_version, window_position_info_version_1) 18 36 fixed bin internal static init (1) options (constant); 18 37 dcl window_position_info_ptr 18 38 pointer; 18 39 18 40 /* structure for the set_window_status and get_window_status 18 41* control orders */ 18 42 18 43 declare window_status_info_ptr 18 44 pointer; 18 45 declare 1 window_status_info 18 46 aligned based (window_status_info_ptr), 18 47 2 version fixed bin, 18 48 2 status_string bit (36) aligned; /* string (window_status) */ 18 49 /* see window_status.incl.pl1 for the contents of this string */ 18 50 18 51 18 52 declare (window_status_version, window_status_version_1) 18 53 fixed bin internal static init (1) options (constant); 18 54 18 55 /* info structure for the set_more_responses and get_more_responses control 18 56* orders */ 18 57 18 58 18 59 dcl 1 more_responses_info 18 60 aligned based (more_responses_info_ptr), 18 61 2 version fixed bin, 18 62 2 n_yeses fixed bin, /* how many valid characters in the strings below */ 18 63 2 n_noes fixed bin, 18 64 2 yeses char (32) unaligned, 18 65 2 noes char (32) unaligned; 18 66 18 67 dcl (more_responses_info_version_1, more_responses_version) 18 68 fixed bin internal static init (1) options (constant); 18 69 dcl more_responses_info_ptr 18 70 pointer; 18 71 18 72 /* structure for the set_break_table and get_break_table 18 73* control orders */ 18 74 18 75 declare break_table_ptr pointer; 18 76 declare 1 break_table_info aligned based (break_table_ptr), 18 77 2 version fixed bin, 18 78 2 breaks (0:127) bit (1) unaligned; 18 79 18 80 declare (break_table_info_version, break_table_info_version_1) 18 81 fixed bin init (1) internal static options (constant); 18 82 18 83 declare 1 more_handler_info aligned based (more_handler_info_ptr), 18 84 2 version fixed bin, 18 85 2 flags unaligned, 18 86 3 old_handler_valid 18 87 bit(1), 18 88 3 pad bit(35), 18 89 2 more_handler entry (pointer, bit(1) aligned), 18 90 2 old_more_handler entry (pointer, bit(1) aligned); 18 91 18 92 declare more_handler_info_ptr pointer; 18 93 18 94 declare (more_handler_info_version, more_handler_info_version_3) 18 95 fixed bin internal static options (constant) init (3); 18 96 18 97 declare 1 token_characters_info aligned based (token_characters_info_ptr), 18 98 2 version char(8), 18 99 2 token_character_count 18 100 fixed bin, 18 101 2 token_characters 18 102 char (128) unaligned; 18 103 18 104 declare token_characters_info_ptr pointer; 18 105 18 106 declare token_characters_info_version_1 char(8) internal static options (constant) init ("wtci0001"); 18 107 18 108 declare 1 more_prompt_info aligned based (more_prompt_info_ptr), 18 109 2 version char(8), 18 110 2 more_prompt char(80); 18 111 18 112 declare more_prompt_info_ptr pointer; 18 113 18 114 declare more_prompt_info_version_1 char(8) static options (constant) init ("wsmp0001"); 18 115 18 116 /* Line editor stuff ... */ 18 117 18 118 dcl line_editor_key_binding_info_ptr 18 119 pointer; 18 120 18 121 dcl line_editor_binding_count 18 122 fixed bin; 18 123 dcl line_editor_longest_sequence 18 124 fixed bin; 18 125 /* For each binding, action defines what to do for that sequence. Constants 18 126* are defined in window_editor_values.incl.pl1. Only if action is set to 18 127* EXTERNAL_ROUTINE does the editor_routine entry variable get examined. */ 18 128 18 129 dcl 1 line_editor_key_binding_info 18 130 aligned based (line_editor_key_binding_info_ptr), 18 131 2 version char(8), 18 132 2 binding_count fixed bin, 18 133 2 longest_sequence fixed bin, 18 134 2 bindings (line_editor_binding_count refer 18 135 (line_editor_key_binding_info.binding_count)), 18 136 3 sequence char(line_editor_longest_sequence refer 18 137 (line_editor_key_binding_info.longest_sequence)) varying, 18 138 3 action fixed bin, 18 139 3 numarg_action fixed binary, 18 140 3 editor_routine entry (pointer, fixed bin(35)), 18 141 3 name char (64) varying unaligned, 18 142 3 description char (256) varying unaligned, 18 143 3 info_path unaligned, 18 144 4 info_dir char (168), 18 145 4 info_entry char (32); 18 146 18 147 18 148 dcl line_editor_key_binding_info_version_3 18 149 char(8) static options (constant) init ("lekbi003"); 18 150 18 151 dcl 1 get_editor_key_bindings_info aligned based (get_editor_key_bindings_info_ptr), 18 152 2 version char (8), 18 153 2 flags, 18 154 3 entire_state bit (1) unaligned, 18 155 3 mbz bit (35) unaligned, 18 156 2 key_binding_info_ptr ptr, 18 157 2 entire_state_ptr ptr; 18 158 18 159 dcl get_editor_key_bindings_info_ptr ptr; 18 160 dcl get_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("gekbi_01"); 18 161 18 162 dcl 1 set_editor_key_bindings_info aligned 18 163 based (set_editor_key_bindings_info_ptr), 18 164 2 version char (8), 18 165 2 flags, 18 166 3 replace bit (1) unaligned, 18 167 3 update bit (1) unaligned, 18 168 3 mbz bit (34) unaligned, 18 169 2 key_binding_info_ptr ptr; 18 170 18 171 dcl set_editor_key_bindings_info_ptr ptr; 18 172 dcl set_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("sekbi_01"); 18 173 18 174 /* This should be moved to window_info.incl.pl1 when that include file is 18 175* created. JR 2/1/84 */ 18 176 18 177 dcl 1 window_edit_line_info 18 178 based (window_edit_line_info_ptr), 18 179 2 version char (8), 18 180 2 line_ptr ptr, 18 181 2 line_length fixed bin (21); /* later we will hack initial cursor position, key bindings, etc. */ 18 182 18 183 dcl window_edit_line_info_version_1 18 184 char (8) static options (constant) init ("wedl0001"); 18 185 18 186 dcl window_edit_line_info_ptr 18 187 ptr; 18 188 18 189 /* END INCLUDE FILE window_control_info.incl.pl1 */ 17 14 17 15 17 16 /* End include file: xmail_windows.incl.pl1 */ 390 391 19 1 /* begin include fine window_dcls.incl.pl1 BIM June 1981 */ 19 2 /* Modified 9 October 1983 by Jon A. Rochlis to add window_$edit_line. */ 19 3 19 4 /* format: style3 */ 19 5 19 6 declare window_$bell entry (pointer, fixed binary (35)); 19 7 declare window_$clear_region 19 8 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary, fixed binary (35)); 19 9 declare window_$clear_to_end_of_line 19 10 entry (pointer, fixed binary (35)); 19 11 declare window_$clear_to_end_of_window 19 12 entry (pointer, fixed binary (35)); 19 13 declare window_$clear_window 19 14 entry (pointer, fixed binary (35)); 19 15 declare window_$delete_chars 19 16 entry (pointer, fixed binary, fixed binary (35)); 19 17 declare window_$get_cursor_position 19 18 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 19 19 19 20 /* Call window_$get_echoed_chars (iocb_ptr, n_to_read, read_buffer, n_read, read_break, code); */ 19 21 19 22 declare window_$get_echoed_chars 19 23 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 19 24 fixed binary (35)); 19 25 declare window_$get_unechoed_chars 19 26 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 19 27 fixed binary (35)); 19 28 declare window_$insert_text entry (pointer, character (*), fixed binary (35)); 19 29 declare window_$overwrite_text 19 30 entry (pointer, character (*), fixed binary (35)); 19 31 declare window_$position_cursor 19 32 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 19 33 19 34 /* Call window_$position_cursor_rel (iocb_ptr, delta_line, delta_column, code); */ 19 35 19 36 declare window_$position_cursor_rel 19 37 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 19 38 19 39 /* Call window_$scroll_region (iocb_ptr, first_line_of_region, n_lines_of_region, distance_to_scroll_region_negative_is_up, 19 40* code); */ 19 41 19 42 declare window_$scroll_region 19 43 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary (35)); 19 44 declare window_$sync entry (pointer, fixed binary (35)); 19 45 19 46 /* Call window_$write_raw_text (iocb_ptr, text_string, code); */ 19 47 19 48 declare window_$write_raw_text 19 49 entry (pointer, character (*), fixed binary (35)); 19 50 19 51 /* Call window_$write_sync_read (iocb_ptr, prompt_string, n_to_read, read_buffer, n_read, break_char, code); */ 19 52 19 53 declare window_$write_sync_read 19 54 entry (pointer, character (*), fixed bin (21), character (*), fixed binary (21), 19 55 character (1) var, fixed binary (35)); 19 56 19 57 /* Call window_$change_line (iocb_ptr, new_line, code); */ 19 58 19 59 declare window_$change_line entry (pointer, fixed binary, fixed binary (35)); 19 60 19 61 /* Call window_$change_column (iocb_ptr, new_column, code); */ 19 62 19 63 declare window_$change_column 19 64 entry (pointer, fixed binary, fixed binary (35)); 19 65 19 66 /* Call window_$get_one_unechoed (iocb_ptr, char_or_len_0, block_flag, code); */ 19 67 declare ( 19 68 window_$get_one_unechoed, 19 69 window_$get_one_unechoed_char 19 70 ) entry (pointer, character (1) var, bit (1) aligned, fixed binary (35)); 19 71 19 72 declare window_$create entry (pointer, pointer, pointer, fixed binary (35)); 19 73 19 74 declare window_$destroy entry (pointer, fixed binary (35)); 19 75 19 76 declare window_$edit_line entry (pointer, pointer, pointer, fixed bin(21), fixed bin(21), fixed bin(35)); 19 77 19 78 /* call window_$edit_line (iocb_ptr, window_edit_line_info_ptr, buffer_ptr, 19 79* buffer_len, n_returned, code); */ 19 80 19 81 19 82 /* end include file window_dcls.incl.pl1 */ 392 393 394 /* BEGIN */ 395 396 START: 397 398 /* Set ptrs to null and set up for cleanup & quit conditions */ 399 400 saved_menu_size = xmail_windows.menu.height; 401 call window_$clear_window (iox_$user_output, (0));/* ignore code */ 402 more_than_one = "0"b; 403 include_original, original_in_window = "0"b; 404 reply_msg_area_ptr = get_system_free_area_ (); 405 reply_seg_ptr, recipients_info_ptr, cc_list_ptr, bcc_list_ptr, 406 to_list_ptr, repl_message_ptr, iocb_ptr, 407 orig_seg_ptr, format_seg_ptr, view_seg_ptr = null (); 408 defrepl_seg_ptr = null (); 409 star_names_ptr = null (); 410 star_entry_ptr = null (); 411 sci_ptr = null (); 412 delivery_results_need_cleanup = "0"b; 413 414 /* See if there are any messages in the mailbox when reply option chosen */ 415 416 mailbox_ptr = P_mailbox_ptr; 417 curr_msgsp = P_curr_msgs_ptr; 418 if mailbox_ptr = null () | curr_msgsp = null () 419 then do; 420 call ioa_ ("All messages have been discarded."); 421 go to EXIT; 422 end; 423 424 on condition (quit) 425 begin; 426 on reissue_query begin; 427 call window_$clear_window (iox_$user_output, (0)); 428 goto RETRY (opt); 429 end; 430 if xmail_window_manager_$quit_handler () 431 then do; 432 call window_$clear_window (iox_$user_output, (0)); /* ignore code */ 433 call xmail_window_manager_$set_menu_window_size (saved_menu_size, code); 434 call xmail_sw_$update_position (""); 435 call xmail_sw_$redisplay (); 436 call xmail_redisplay_$all (); 437 call ioa_ ("Replying terminated."); 438 call CLEAN_UP; 439 goto EXIT; 440 end; 441 end; 442 443 on condition (cleanup) call CLEAN_UP; 444 xmail_data.reply_request = "1"b; 445 /* Create seg (for reply message) in process dir */ 446 447 call hcs_$make_seg ("", REPLY_SEG_NAME, "", RW_ACCESS_BIN, reply_seg_ptr, code); 448 if code ^= 0 then do; /* If seg already exists set its bit count to zero */ 449 bit_count = 0; 450 if code = error_table_$namedup | code = error_table_$segknown 451 then call terminate_file_ (reply_seg_ptr, bit_count, TERM_FILE_BC, code); 452 else call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 453 end; 454 455 /* Create seg (to place in the being-replied-to-message) */ 456 457 call hcs_$make_seg ("", VIEW_SEG_NAME, "", RW_ACCESS_BIN, view_seg_ptr, code); 458 if code ^= 0 then do; /* If seg already exists set its bit count to zero */ 459 bit_count = 0; 460 if code = error_table_$namedup | code = error_table_$segknown 461 then call terminate_file_ (view_seg_ptr, bit_count, TERM_FILE_BC, code); 462 else call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 463 end; 464 465 call iox_$attach_name (unique_chars_ ("0"b), iocb_ptr, "vfile_ " || rtrim (get_pdir_ ()) || ">" || rtrim (VIEW_SEG_NAME), codeptr (ENTRY_NAME), code); 466 if code ^= 0 then 467 call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 468 469 call iox_$open (iocb_ptr, Stream_output, "0"b, code); 470 if code ^= 0 then 471 call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 472 473 /* Place the header & text of the message(s) being replied to in the 474* "VIEW_SEG_NAME" seg */ 475 476 call xmail_display_msgs_ (mailbox_ptr, curr_msgsp, iocb_ptr); 477 478 if iocb_ptr ^= null () 479 then do; 480 call iox_$close (iocb_ptr, (0)); 481 call iox_$detach_iocb (iocb_ptr, (0)); 482 call iox_$destroy_iocb (iocb_ptr, (0)); 483 end; 484 485 /* Determine bit count of "VIEW_SEG_NAME" */ 486 487 call hcs_$status_mins (view_seg_ptr, type, bit_count_view, code); 488 if code ^= 0 489 then do; 490 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 491 492 call timer_manager_$sleep (4, SECONDS); 493 goto pre_end; 494 end; 495 496 /* Establish length of "based_string_view " */ 497 498 no_chars_view = divide (bit_count_view, BITS_PER_CHAR, 17, 0); 499 500 /* Determine if the original is to appear in the upper window */ 501 502 call xmail_value_$get_with_default (ORIGINAL_IN_WINDOW, (YES), response, code); 503 if code ^= 0 then call xmail_error_$code_first (code, NAME, QUIT, 504 "^/Unable to get a value for ""^a"" in the xmail value segment.", ORIGINAL_IN_WINDOW); 505 if response = YES then original_in_window = "1"b; 506 else original_in_window = "0"b; 507 508 /* Establish pathname of "reply_seg_name" in process dir */ 509 510 emacs_seg_path_name = rtrim (get_pdir_ ()) || ">" || REPLY_SEG_NAME; 511 512 /* Determine absolute pathname of the the emacs extention 513* (xmail_emacs_ext_main_) used by this procedure */ 514 515 if ext_ptr = null () 516 then do; 517 call hcs_$make_ptr (codeptr (ENTRY_NAME), EMACS_EXT, "", ext_ptr, code); 518 if code ^= 0 then call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 519 call hcs_$fs_get_path_name (ext_ptr, ext_dir, (0), ext_file, code); 520 if code ^= 0 then call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 521 ext_pname = rtrim (ext_dir) || ">" || EMACS_EXT; 522 523 end; 524 525 /* Emacs extention will be called in the "reply" mode */ 526 527 for_type = "reply"; 528 529 /* Set up reply and deliver options */ 530 531 recipients_info_n_lists = 3; /* make room for bcc */ 532 533 allocate recipients_info in (reply_msg_area) set (recipients_info_ptr); 534 recipients_info.area_ptr = get_system_free_area_ (); 535 recipients_info.version = RECIPIENTS_INFO_VERSION_2; 536 537 auto_reply_options.version = REPLY_OPTIONS_VERSION_2; 538 auto_reply_options.to = null (); 539 auto_reply_options.cc = null (); 540 auto_reply_options.bcc = null (); 541 auto_reply_options.flags.include_authors = "1"b; 542 auto_reply_options.flags.include_self = "0"b; 543 auto_reply_options.flags.mbz = "0"b; 544 545 auto_deliver_options.version = DELIVER_OPTIONS_VERSION_2; 546 auto_deliver_options.delivery_mode = ORDINARY_DELIVERY; 547 auto_deliver_options.queueing_mode = ALWAYS_QUEUE_FOREIGN; 548 auto_deliver_options.queued_notification_mode = NOTIFY_ON_ERROR; 549 auto_deliver_options.flags.abort = "1"b; 550 auto_deliver_options.flags.send_if_empty = "0"b; 551 auto_deliver_options.flags.recipient_notification = "1"b; 552 auto_deliver_options.flags.queue_mailing_lists = "0"b; 553 554 auto_deliver_options.flags.mbz = "0"b; 555 556 /* See if reply is for more than one message */ 557 558 if curr_msgs.count > 1 then more_than_one = "1"b; 559 560 /* Loop based on the number of messages being replied to */ 561 562 default_save_file = "outgoing"; 563 do idx = 1 to curr_msgs.count; 564 message_num = curr_msgs.numbers (idx); 565 566 /* Determine ptr to message structure */ 567 568 if mailbox.messages (message_num).message_ptr = null 569 then do; 570 call mail_system_$read_message (mailbox_ptr, message_num, code); 571 if code ^= 0 572 then call xmail_error_$no_code (code, NAME, "l", "Unable to read message ^d. This is an internal programming error.", message_num); 573 end; 574 reply_msg_ptr = mailbox.messages (message_num).message_ptr; 575 576 /* Recipients are to be included in reply. Note that the user can actually 577* modify, to any extent he wishes, the recipient list while in the editor */ 578 579 auto_reply_options.flags.include_recipients = "1"b; 580 581 /* Create reply message structure */ 582 583 repl_message_ptr = null (); 584 585 call mlsys_utils_$create_reply_message (reply_msg_ptr, addr (auto_reply_options), repl_message_ptr, code); 586 if repl_message_ptr ^= null () 587 then do; 588 message_ptr = repl_message_ptr; 589 if message.to -> address_list.n_addresses = 0 590 then do; 591 call ioa_ ("You are trying to reply to your own message. Reply to message no. ^d terminated.", message_num); 592 go to pre_end; 593 end; 594 end; 595 if code ^= 0 596 then do; 597 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 598 call timer_manager_$sleep (5, SECONDS); 599 go to pre_end; 600 end; 601 602 603 /* See if deferred reply exists for this message */ 604 605 auto_parse_text_options.version = PARSE_TEXT_OPTIONS_VERSION_1; 606 auto_parse_text_options.area_ptr = reply_msg_area_ptr; 607 auto_parse_text_options.flags.list_errors = "0"b; 608 auto_parse_text_options.flags.validate_addresses = "0"b; 609 auto_parse_text_options.flags.include_invalid_addresses = "0"b; 610 auto_parse_text_options.flags.mbz = "0"b; 611 612 call user_info_ (user_name); /* we might need this */ 613 /* to plug a name into the reply-to */ 614 615 deferred_reply_exists = "0"b; 616 delete_def_reply = "0"b; 617 deferred_seg_name = unique_chars_ ((reply_msg_ptr -> message.header.message_id)) || ".reply"; 618 call hcs_$star_ ((xmail_data.mail_dir), (deferred_seg_name), star_BRANCHES_ONLY, get_system_free_area_ (), star_entry_count, star_entry_ptr, star_names_ptr, (0)); 619 if star_entry_count = 1 620 then do; 621 call hcs_$make_seg ((xmail_data.mail_dir), (deferred_seg_name), "", RW_ACCESS_BIN, defrepl_seg_ptr, (0)); 622 call hcs_$status_mins (defrepl_seg_ptr, type, bit_count, code); 623 if code ^= 0 624 then do; 625 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 626 627 call timer_manager_$sleep (4, SECONDS); 628 goto pre_end; 629 end; 630 if bit_count ^= 0 then do; 631 RETRY (2): 632 opt = 2; 633 call ioa_$rsnnl ("A deferred reply for message ^d exists. Do you wish to use it? ", prompt_string, (0), message_num); 634 call xmail_get_str_$yes_no (prompt_string, yes_sw); 635 if yes_sw then do; 636 no_chars = divide (bit_count, BITS_PER_CHAR, 17, 0); 637 reply_to_list_ptr = null; 638 based_string = def_reply_string; 639 if index(before(based_string, "Reply: || NL"), "Reply-To:") > 0 then do; 640 call mlsys_utils_$parse_address_list_text (rtrim (after (before (based_string, NL || "To:"), "Reply-To:"), WHITE_SPACE_COMMA), addr (auto_parse_text_options), ADDRESS_LIST_VERSION_2, reply_to_list_ptr, parse_text_error_list_ptr, code); 641 if code ^= 0 then do; 642 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 643 call timer_manager_$sleep (4, SECONDS); 644 goto pre_end; 645 end; 646 end; 647 else do; 648 format_reply = ""; 649 format_reply_length, buffer_size = length ("Reply-To: ") + length(user_name); 650 buffer_used = 0; 651 call mlsys_utils_$format_text_field (REPLY_TO_FIELDNAME, rtrim(user_name), ("0"b), 652 format_reply_length, addr(format_reply), buffer_size, buffer_used, code); 653 if code ^= 0 then do; 654 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 655 call timer_manager_$sleep (4, SECONDS); 656 goto pre_end; 657 end; 658 no_chars = format_reply_length + length (NL) + no_chars; 659 bit_count = BITS_PER_CHAR * no_chars; 660 based_string = format_reply || NL || based_string; 661 end; 662 call terminate_file_ (reply_seg_ptr, bit_count, TERM_FILE_BC, code); 663 delete_def_reply = "1"b; 664 deferred_reply_exists = "1"b; 665 end; 666 667 else do; 668 RETRY (3): 669 opt = 3; 670 call xmail_get_str_$yes_no ("Do you wish to discard it? ", yes_sw); 671 if yes_sw then delete_def_reply = "1"b; 672 end; 673 end; 674 end; 675 676 if ^deferred_reply_exists then do; /* create a reply */ 677 call query_for_include_original (); 678 679 /* Set length of based_string temporarily to 5000 chars */ 680 681 no_chars = 5000; 682 no_used = 0; 683 684 /* Get name(s) of sender of message being replied to */ 685 686 call mlsys_utils_$format_address_list_field (REPLY_TO_FIELDNAME, message.header.reply_to, NO_WIDTH_LIMIT, reply_seg_ptr, no_chars, no_used, code); 687 if code ^= 0 688 then do; 689 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 690 call timer_manager_$sleep (4, SECONDS); 691 goto pre_end; 692 end; 693 if no_used > length ("Reply-To: ") then; 694 else do; 695 based_string = substr (based_string, 1, no_used) || rtrim(user_name); 696 no_used = no_used + length (user_name); 697 end; 698 based_string = substr (based_string, 1, no_used) || NL; 699 no_used = no_used + length (NL); 700 701 call mlsys_utils_$format_address_list_field (TO_FIELDNAME, message.header.to, NO_WIDTH_LIMIT, reply_seg_ptr, no_chars, no_used, code); 702 if code ^= 0 703 then do; 704 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 705 call timer_manager_$sleep (4, SECONDS); 706 goto pre_end; 707 end; 708 based_string = substr (based_string, 1, no_used) || NL; 709 no_used = no_used + length (NL); 710 711 /* If there were secondary recipients in the original message then determine 712* the recipient list and append it to based_string so that the user may 713* modify it via the editor */ 714 715 start_of_cc = no_used + 1; 716 call mlsys_utils_$format_address_list_field (CC_FIELDNAME, message.header.cc, NO_WIDTH_LIMIT, reply_seg_ptr, no_chars, no_used, code); 717 if code ^= 0 718 then do; 719 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 720 call timer_manager_$sleep (4, SECONDS); 721 goto pre_end; 722 end; 723 based_string = substr (based_string, 1, no_used) || NL; 724 no_used = no_used + length (NL); 725 726 727 /* If there were bcc recipients in the original message then determine 728* the recipient list and append it to based_string so that the user may 729* modify it via the editor */ 730 731 start_of_bcc = no_used + 1; 732 call mlsys_utils_$format_address_list_field (BCC_FIELDNAME, message.header.bcc, NO_WIDTH_LIMIT, reply_seg_ptr, no_chars, no_used, code); 733 if code ^= 0 734 then do; 735 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 736 call timer_manager_$sleep (4, SECONDS); 737 goto pre_end; 738 end; 739 based_string = substr (based_string, 1, no_used) || NL; 740 no_used = no_used + length (NL); 741 742 based_string = substr (based_string, 1, no_used) || "Reply: " || NL; 743 no_used = no_used + length ("Reply: ") + length (NL); 744 745 /* If the original is to be included, include it here */ 746 747 if include_original 748 then call insert_original_message; 749 750 bit_count = no_used * BITS_PER_CHAR; 751 call terminate_file_ (reply_seg_ptr, bit_count, TERM_FILE_BC, code); 752 if code ^= 0 753 then call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 754 end; 755 756 /* Remove "For help press Funtion Key 1 " from status window. */ 757 758 reply_header = "Replying to message no." || ltrim (char (message_num)); 759 call xmail_sw_$update_usage (reply_header); 760 call xmail_sw_$update_position ("------------------------------------------------------------------------------"); 761 762 call xmail_sw_$redisplay (); 763 764 /* See if more then one message is being replied-to */ 765 766 if more_than_one then 767 based_string_view = decat (based_string_view, " #" || rtrim (ltrim (char (message_num))) || " (", "011"b); 768 based_string_view = decat (based_string_view, "Date:", "011"b); 769 bit_count_view = length (decat (based_string_view, "-----(" || ltrim (rtrim (char (message_num))) || ")-----", "110"b)) * BITS_PER_CHAR; 770 call terminate_file_ (view_seg_ptr, bit_count_view, TERM_FILE_BC, code); 771 if code ^= 0 772 then call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 773 if original_in_window then 774 call xmail_window_manager_$set_menu_window_size (2, code); 775 else 776 call xmail_window_manager_$set_menu_window_size (1, code); 777 if code ^= 0 778 then call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 779 call window_$clear_window (xmail_windows.menu.iocb, (0)); /* ignore code */ 780 if original_in_window 781 then call ioa_$ioa_switch_nnl (xmail_windows.menu.iocb, " *** Use ESC l to view previous page, ESC h to view next page ***"); 782 call window_$clear_window (iox_$user_output, (0)); /* ignore code */ 783 call ioa_ ("...Please wait for editor..."); 784 /* Suppress the original if necessary. */ 785 786 if ^original_in_window 787 then do; 788 call terminate_file_ (view_seg_ptr, 0, TERM_FILE_BC, code); 789 end; 790 /* Call the editor now */ 791 792 call emacs_ (iox_$user_output, (emacs_seg_path_name), ext_pname, addr (for_type), status); 793 794 call xmail_window_manager_$set_menu_window_size (saved_menu_size, code); 795 if code ^= 0 796 then call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 797 if status = 1 798 then do; 799 deferred_seg_name = unique_chars_ ((reply_msg_ptr -> message.header.message_id)) || ".reply"; 800 call hcs_$make_seg ((xmail_data.mail_dir), (deferred_seg_name), "", RW_ACCESS_BIN, defrepl_seg_ptr, code); 801 if code ^= 0 & code ^= error_table_$namedup & code ^= error_table_$segknown then do; 802 call ioa_ ("Sorry, unable to save ""deferred reply"" for message ^d. ^/This is an internal error.", message_num); 803 if curr_msgs.count > 1 then call timer_manager_$sleep (4, SECONDS); 804 go to pre_end; 805 end; 806 807 call hcs_$status_mins (reply_seg_ptr, type, bit_count, code); 808 if code ^= 0 809 then do; 810 call xmail_error_$no_code (code, NAME, LOG, 811 ERROR_MESSAGE, message_num); 812 call timer_manager_$sleep (4, SECONDS); 813 goto pre_end; 814 end; 815 816 call terminate_file_ (defrepl_seg_ptr, bit_count, TERM_FILE_BC, code); 817 818 /* Get number of chars in seg */ 819 820 no_chars = divide (bit_count, BITS_PER_CHAR, 17, 0); 821 822 def_reply_string = based_string; 823 call ioa_ ("Deferred reply for message ^d saved.", message_num); 824 if more_than_one then call timer_manager_$sleep (3, SECONDS); 825 delete_def_reply = "0"b; 826 go to pre_end; 827 end; 828 829 if status ^= 0 830 831 then do; 832 call xmail_window_manager_$reconnect (); 833 call ioa_ ("Reply to message ^d terminated.", message_num); 834 if curr_msgs.count > idx 835 then do; 836 call ioa_$nnl ("^/Do you still wish to reply to message(s): "); 837 do idx2 = idx + 1 to curr_msgs.count; 838 call ioa_$nnl (" ^d", curr_msgs.numbers (idx2)); 839 end; /* end do loop */ 840 call xmail_get_str_$yes_no (" ? ", yes_sw); 841 if yes_sw then go to pre_end; 842 else call ioa_ ("Replying terminated."); 843 end; 844 call CLEAN_UP; 845 goto EXIT; 846 end; 847 848 call hcs_$status_mins (reply_seg_ptr, type, bit_count, code); 849 if code ^= 0 850 then do; 851 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 852 call timer_manager_$sleep (4, SECONDS); 853 goto pre_end; 854 end; 855 if bit_count <= 0 then call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 856 no_chars = divide (bit_count, BITS_PER_CHAR, 17, 0); 857 858 /* Delete deferred reply if one existed */ 859 860 if delete_def_reply 861 then do; 862 call delete_$ptr (defrepl_seg_ptr, DELETE_SEG_FORCE_CHASE, NAME, (0)); /* ignore code */ 863 delete_def_reply = "0"b; 864 end; 865 866 to_list_ptr, cc_list_ptr, bcc_list_ptr = null (); 867 868 /* Add bcc handling */ 869 870 call mlsys_utils_$parse_address_list_text (rtrim (after (before (based_string, "Reply:"), "bcc:"), WHITE_SPACE_COMMA), addr (auto_parse_text_options), ADDRESS_LIST_VERSION_2, bcc_list_ptr, parse_text_error_list_ptr, code); 871 if code ^= 0 872 then do; 873 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 874 call timer_manager_$sleep (4, SECONDS); 875 goto pre_end; 876 end; 877 878 if bcc_list_ptr ^= null () 879 then do; 880 call mail_system_$replace_bcc (message_ptr, bcc_list_ptr, code); 881 if code ^= 0 882 then do; 883 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 884 call timer_manager_$sleep (4, SECONDS); 885 goto pre_end; 886 end; 887 end; 888 889 /* Add Reply-To handling */ 890 891 call mlsys_utils_$parse_address_list_text (rtrim (after (before (based_string, NL || "To:"), "Reply-To:"), WHITE_SPACE_COMMA), addr (auto_parse_text_options), ADDRESS_LIST_VERSION_2, reply_to_list_ptr, parse_text_error_list_ptr, code); 892 if code ^= 0 893 then do; 894 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 895 call timer_manager_$sleep (4, SECONDS); 896 goto pre_end; 897 end; 898 899 if reply_to_list_ptr ^= null () 900 then do; 901 call mail_system_$replace_reply_to (message_ptr, reply_to_list_ptr, code); 902 if code ^= 0 903 then do; 904 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 905 call timer_manager_$sleep (4, SECONDS); 906 goto pre_end; 907 end; 908 end; /* reply-to handling */ 909 910 /* cc handling */ 911 912 call mlsys_utils_$parse_address_list_text (rtrim (after (before (based_string, "bcc:"), "cc:"), WHITE_SPACE_COMMA), addr (auto_parse_text_options), ADDRESS_LIST_VERSION_2, cc_list_ptr, parse_text_error_list_ptr, code); 913 if code ^= 0 914 then do; 915 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 916 call timer_manager_$sleep (4, SECONDS); 917 goto pre_end; 918 end; 919 920 if cc_list_ptr ^= null () 921 then do; 922 call mail_system_$replace_cc (message_ptr, cc_list_ptr, code); 923 if code ^= 0 924 then do; 925 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 926 call timer_manager_$sleep (4, SECONDS); 927 goto pre_end; 928 end; 929 end; 930 931 call mlsys_utils_$parse_address_list_text (rtrim (after (before (based_string, "cc:"), NL || "To:"), WHITE_SPACE_COMMA), addr (auto_parse_text_options), ADDRESS_LIST_VERSION_2, to_list_ptr, parse_text_error_list_ptr, code); 932 if code ^= 0 933 then do; 934 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 935 call timer_manager_$sleep (4, SECONDS); 936 goto pre_end; 937 end; 938 939 call mail_system_$replace_to (message_ptr, to_list_ptr, code); 940 if code ^= 0 941 then do; 942 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 943 call timer_manager_$sleep (4, SECONDS); 944 goto pre_end; 945 end; 946 947 message_body_section_ptr = addr (auto_message_body_section_parameter.section); 948 auto_message_body_section_parameter.version = 949 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2; 950 message_preformatted_body_section.header.section_type = 951 MESSAGE_PREFORMATTED_BODY_SECTION; 952 message_preformatted_body_section.header.section_n_lines = -1; 953 start_of_text = index (based_string, "Reply:") + length ("Reply:") + length (NL); 954 message_preformatted_body_section.text_ptr = 955 addr (based_array (start_of_text)); 956 message_preformatted_body_section.text_lth = 957 length (substr (rtrim (based_string), start_of_text)); 958 959 recipients_info.lists (*).recipients_result_list_ptr = null (); 960 recipients_info.lists (1).address_list_ptr = message.to; 961 recipients_info.lists (2).address_list_ptr = message.cc; 962 recipients_info.lists (3).address_list_ptr = message.bcc; 963 964 call mail_system_$add_body_section (repl_message_ptr, addr (auto_message_body_section_parameter), 1, code); 965 if code ^= 0 966 then do; 967 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 968 call timer_manager_$sleep (4, SECONDS); 969 goto pre_end; 970 end; 971 972 call xmail_value_$get_with_default (ACKNOWLEDGE, (NO), acknowledge, code); 973 if code ^= 0 then call xmail_error_$code_first (code, NAME, QUIT, 974 "/^Unable to get a value for ""^a"" in the xmail value segment.", ACKNOWLEDGE); 975 976 if acknowledge = NO 977 then auto_deliver_options.flags.acknowledge = "0"b; 978 else if acknowledge = ASK 979 then do; 980 RETRY (4): 981 opt = 4; 982 call xmail_get_str_$yes_no ("Do you want your reply acknowledged? ", yes_sw); 983 if yes_sw then auto_deliver_options.flags.acknowledge = "1"b; 984 else auto_deliver_options.flags.acknowledge = "0"b; 985 end; 986 else if acknowledge = YES 987 then auto_deliver_options.flags.acknowledge = "1"b; 988 else call xmail_error_$code_first (error_table_$bad_segment, NAME, QUIT, 989 "^/An invalid value for ""^a"" was found in the xmail value segment.", ACKNOWLEDGE); 990 991 call mail_system_$deliver_message (repl_message_ptr, recipients_info_ptr, addr (auto_deliver_options), code); 992 delivery_results_need_cleanup = "1"b; 993 if code ^= 0 then do; 994 if code = mlsys_et_$no_a_permission 995 then call xmail_error_$no_code (code, NAME, CONTINUE, "You do not have permission to send message to at least one of the recipients."); 996 if n_failed_recipients > 0 997 then do; 998 call ioa_ ("Reply to message no.^d could not be sent.^/", message_num); 999 call ssu_$standalone_invocation (sci_ptr, "", "", null (), xmail_reply_msg_$ssu_exit, code1); 1000 if code1 = 0 then call mlsys_utils_$print_delivery_results (sci_ptr, ERRORS_ONLY, recipients_info_ptr, code1); 1001 else call xmail_error_$no_code (code1, NAME, LOG, "The reason cannot be printed due to an internal programming error"); 1002 call ssu_$destroy_invocation (sci_ptr); 1003 1004 if idx = curr_msgs.count then go to pre_end; 1005 1006 resp = ""; 1007 do while (resp = ""); 1008 call xmail_get_str_ ("^/Press RETURN to continue; BREAK to stop.", "", "", "", resp); 1009 end; 1010 go to pre_end; 1011 end; 1012 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 1013 call timer_manager_$sleep (4, SECONDS); 1014 goto pre_end; 1015 end; 1016 1017 /* Issue the statement that the reply was sent. */ 1018 1019 call ioa_ ("Reply to message no. ^d sent: ", message_num); 1020 call mlsys_utils_$print_address_list_field ("To", to_list_ptr, USE_SCREEN_WIDTH, null, code); 1021 if code ^= 0 then call xmail_error_$no_code (code, NAME, CONTINUE, "Message sent to ""To:"" recipient(s)."); 1022 1023 if cc_list_ptr ^= null 1024 then do; 1025 call mlsys_utils_$print_address_list_field ("cc", cc_list_ptr, USE_SCREEN_WIDTH, null, code); 1026 if code ^= 0 then call xmail_error_$no_code (code, NAME, CONTINUE, "Message sent to ""cc:"" recipient(s)."); 1027 end; 1028 else call ioa_ ("cc: "); 1029 1030 /* Add for bcc */ 1031 1032 if bcc_list_ptr ^= null 1033 then do; 1034 call mlsys_utils_$print_address_list_field ("bcc", bcc_list_ptr, USE_SCREEN_WIDTH, null, code); 1035 if code ^= 0 then call xmail_error_$no_code (code, NAME, CONTINUE, "Message sent to ""bcc:"" recipient(s)."); 1036 end; 1037 else call ioa_ ("bcc: "); 1038 1039 /* Save the reply message for the user */ 1040 1041 call xmail_value_$get (SAVE_MAILBOX, default_save_file, code); 1042 if code ^= 0 then call xmail_error_$code_first (code, NAME, QUIT, 1043 "^/Unable to get a value for ""^a"" in the xmail value segment.", SAVE_MAILBOX); 1044 1045 call xmail_value_$get (SAVE_MESSAGE, save_message, code); 1046 if code ^= 0 then call xmail_error_$code_first (code, NAME, QUIT, 1047 "^/Unable to get a value for ""^a"" in the xmail value segment.", SAVE_MESSAGE); 1048 1049 call xmail_value_$get (FILE_ORIGINAL, file_original, code); 1050 if code ^= 0 then call xmail_error_$code_first (code, NAME, "q", 1051 "^/Unable to get value for ""^a"" in the xmail value segment.", FILE_ORIGINAL); 1052 1053 if save_message = YES then do; 1054 if file_original = YES then do; 1055 if default_save_file = ASK 1056 then call xmail_file_msgs_$original_and_reply (reply_msg_ptr, repl_message_ptr, "outgoing", ALLOW_SELECTION); 1057 else call xmail_file_msgs_$original_and_reply (reply_msg_ptr, repl_message_ptr, minus_suffix ((default_save_file), (MAILFILE_SUFFIX)), NO_SELECTION); 1058 end; 1059 else if file_original = ASK then do; 1060 RETRY (5): 1061 opt = 5; 1062 call xmail_get_str_$yes_no ("Do you wish to file the original before the reply?", yes_sw); 1063 if yes_sw then do; 1064 if default_save_file = ASK 1065 then call xmail_file_msgs_$original_and_reply (reply_msg_ptr, repl_message_ptr, "outgoing", ALLOW_SELECTION); 1066 else call xmail_file_msgs_$original_and_reply (reply_msg_ptr, repl_message_ptr, minus_suffix ((default_save_file), (MAILFILE_SUFFIX)), NO_SELECTION); 1067 end; 1068 else if default_save_file = ASK 1069 then call xmail_file_msgs_$single_msg (repl_message_ptr, "outgoing", ALLOW_SELECTION); 1070 else call xmail_file_msgs_$single_msg (repl_message_ptr, minus_suffix ((default_save_file), (MAILFILE_SUFFIX)), NO_SELECTION); 1071 end; 1072 else if file_original = NO 1073 then do; 1074 if default_save_file = ASK 1075 then call xmail_file_msgs_$single_msg (repl_message_ptr, "outgoing", ALLOW_SELECTION); 1076 else call xmail_file_msgs_$single_msg (repl_message_ptr, minus_suffix ((default_save_file), (MAILFILE_SUFFIX)), NO_SELECTION); 1077 end; 1078 else call xmail_error_$code_first (error_table_$bad_segment, NAME, "q", 1079 "^/An invalid value for ""^a"" was found in the xmail value segment.", FILE_ORIGINAL); 1080 end; 1081 else if save_message = ASK 1082 then do; 1083 RETRY (6): 1084 opt = 6; 1085 call xmail_get_str_$yes_no ("Do you wish to save this reply? ", yes_sw); 1086 if yes_sw then do; 1087 if file_original = YES then do; 1088 if default_save_file = ASK 1089 then call xmail_file_msgs_$original_and_reply (reply_msg_ptr, repl_message_ptr, "outgoing", ALLOW_SELECTION); 1090 else call xmail_file_msgs_$original_and_reply (reply_msg_ptr, repl_message_ptr, minus_suffix ((default_save_file), (MAILFILE_SUFFIX)), NO_SELECTION); 1091 end; 1092 else if file_original = ASK then do; 1093 RETRY (7): 1094 opt = 7; 1095 call xmail_get_str_$yes_no ("Do you wish to file the original before the reply?", yes_sw); 1096 if yes_sw then do; 1097 if default_save_file = ASK 1098 then call xmail_file_msgs_$original_and_reply (reply_msg_ptr, repl_message_ptr, "outgoing", ALLOW_SELECTION); 1099 else call xmail_file_msgs_$original_and_reply (reply_msg_ptr, repl_message_ptr, minus_suffix ((default_save_file), (MAILFILE_SUFFIX)), NO_SELECTION); 1100 end; 1101 else if default_save_file = ASK 1102 then call xmail_file_msgs_$single_msg (repl_message_ptr, "outgoing", ALLOW_SELECTION); 1103 else call xmail_file_msgs_$single_msg (repl_message_ptr, minus_suffix ((default_save_file), (MAILFILE_SUFFIX)), NO_SELECTION); 1104 end; 1105 else if file_original = NO 1106 then do; 1107 if default_save_file = ASK 1108 then call xmail_file_msgs_$single_msg (repl_message_ptr, "outgoing", ALLOW_SELECTION); 1109 else call xmail_file_msgs_$single_msg (repl_message_ptr, minus_suffix ((default_save_file), (MAILFILE_SUFFIX)), NO_SELECTION); 1110 end; 1111 else call xmail_error_$code_first (error_table_$bad_segment, NAME, "q", 1112 "^/An invalid value for ""^a"" was found in the xmail value segment.", FILE_ORIGINAL); 1113 end; 1114 end; 1115 1116 else if save_message ^= NO 1117 then call xmail_error_$code_first (error_table_$bad_segment, NAME, "q", 1118 "^/An invalid value for ""^a"" was found in the xmail value segment.", SAVE_MESSAGE); 1119 1120 if idx ^= curr_msgs.count then call timer_manager_$sleep (4, SECONDS); 1121 1122 pre_end: 1123 1124 call MESSAGE_CLEAN_UP (); 1125 1126 end; /* end of do loop */ 1127 1128 call CLEAN_UP (); 1129 EXIT: return; 1130 1131 /* ENTRY POINTS */ 1132 1133 ssu_exit: entry; 1134 1135 /* This entry doesn't do anything but it is called by ssu_$print_message */ 1136 /* which is called by mlsys_utils_$print_delivery_results. */ 1137 1138 return; 1139 1140 /* INTERNAL PROCEDURES */ 1141 1142 MESSAGE_CLEAN_UP: proc (); 1143 1144 if repl_message_ptr ^= null () 1145 then do; 1146 call mail_system_$free_message (repl_message_ptr, code); 1147 repl_message_ptr = null (); 1148 end; 1149 if to_list_ptr ^= null () 1150 then do; 1151 call mail_system_$free_address_list (to_list_ptr, code); 1152 to_list_ptr = null (); 1153 end; 1154 if cc_list_ptr ^= null () 1155 then do; 1156 call mail_system_$free_address_list (cc_list_ptr, code); 1157 cc_list_ptr = null (); 1158 end; 1159 1160 /* Add for bcc */ 1161 1162 if bcc_list_ptr ^= null () 1163 then do; 1164 call mail_system_$free_address_list (bcc_list_ptr, code); 1165 bcc_list_ptr = null (); 1166 end; 1167 if recipients_info_ptr ^= null () 1168 then do; 1169 if delivery_results_need_cleanup then do; 1170 call mlsys_utils_$free_delivery_results (recipients_info_ptr, code); 1171 if code ^= 0 then call xmail_error_$no_print (code, NAME, CONTINUE, "While cleaning up delivery results."); 1172 end; 1173 end; 1174 return; 1175 end MESSAGE_CLEAN_UP; 1176 1177 minus_suffix: proc (name, suffix) returns (char (*) var); 1178 1179 /* PARAMETERS */ 1180 1181 dcl name char (*); 1182 dcl suffix char (*); 1183 1184 /* AUTOMATIC */ 1185 1186 dcl reverse_name char (length (name)) var; 1187 dcl reverse_suffix char (length (suffix)) var; 1188 1189 /* BUILTINS */ 1190 1191 dcl (after, index, length, reverse, rtrim) builtin; 1192 1193 reverse_name = reverse (rtrim (name)); 1194 reverse_suffix = reverse (rtrim (suffix)); 1195 1196 if index (reverse_name, reverse_suffix || ".") ^= 1 1197 then return (name); 1198 else return (reverse (after (reverse_name, reverse_suffix || "."))); 1199 1200 end minus_suffix; 1201 1202 query_for_include_original: proc; 1203 1204 /* Determine if the original is to be included in the reply */ 1205 1206 call xmail_value_$get_with_default (INCLUDE_ORIGINAL, (NO), response, code); 1207 if code ^= 0 then call xmail_error_$code_first (code, NAME, "q", 1208 "^/Unable to get a value for ""^a"" in the xmail value segment.", INCLUDE_ORIGINAL); 1209 1210 if response = YES 1211 then include_original = "1"b; 1212 else if response = ASK 1213 then do; 1214 RETRY (1): 1215 opt = 1; 1216 call xmail_get_str_$yes_no ("Do you wish to include the original in this reply? ", yes_sw); 1217 if yes_sw then include_original = "1"b; 1218 end; 1219 else include_original = "0"b; 1220 1221 if include_original 1222 then do; 1223 1224 /* Create segs for the printable original message before and after indenting 1225* and setup format_document_ options */ 1226 1227 call hcs_$make_seg ("", ORIG_SEG_NAME, "", RW_ACCESS_BIN, orig_seg_ptr, code); 1228 if code ^= 0 then do; /* If seg already exists set its bit count to zero */ 1229 bit_count = 0; 1230 if code = error_table_$namedup | code = error_table_$segknown 1231 then call terminate_file_ (orig_seg_ptr, bit_count, TERM_FILE_BC, code); 1232 else call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 1233 end; 1234 1235 call hcs_$make_seg ("", FORMAT_SEG_NAME, "", RW_ACCESS_BIN, format_seg_ptr, code); 1236 if code ^= 0 then do; /* If seg already exists set its bit count to zero */ 1237 bit_count = 0; 1238 if code = error_table_$namedup | code = error_table_$segknown 1239 then call terminate_file_ (format_seg_ptr, bit_count, TERM_FILE_BC, code); 1240 else call xmail_error_$no_code (code, NAME, STOP, "^a", PROBLEM); 1241 end; 1242 1243 /* Set up format_message options */ 1244 1245 auto_format_message_options.version = FORMAT_MESSAGE_OPTIONS_VERSION_1; 1246 auto_format_message_options.line_length = NO_WIDTH_LIMIT; 1247 auto_format_message_options.envelope_formatting_mode = DEFAULT_FORMATTING_MODE; 1248 auto_format_message_options.header_formatting_mode = DEFAULT_FORMATTING_MODE; 1249 auto_format_message_options.redistributions_list_formatting_mode = DEFAULT_FORMATTING_MODE; 1250 auto_format_message_options.include_body = "1"b; 1251 1252 /* Set up format_document options */ 1253 1254 auto_format_document_options.version_number = format_document_version_2; 1255 auto_format_document_options.indentation = 4; 1256 auto_format_document_options.line_length = DEFAULT_WIDTH; 1257 string (auto_format_document_options.switches) = ""b; 1258 auto_format_document_options.galley_sw = "1"b; /* ... don't insert page breaks */ 1259 auto_format_document_options.literal_sw = "1"b; /* ... don't recognize controls in the text */ 1260 auto_format_document_options.dont_break_indented_lines_sw = "1"b; /* ... don't break lines which are indented */ 1261 auto_format_document_options.dont_fill_sw = "1"b; /* ... don't fill */ 1262 auto_format_document_options.syllable_size = 0; 1263 1264 end; 1265 1266 end query_for_include_original; 1267 1268 insert_original_message: proc; 1269 1270 /* Internal procedure to format the original message into printable form, 1271* indent it, and then add it to the based_string in the reply segment 1272* for editing */ 1273 1274 start_of_orig = no_used + 1; 1275 no_chars_orig = 0; 1276 GROW_MORE: 1277 call mlsys_utils_$format_message (reply_msg_ptr, addr (auto_format_message_options), orig_seg_ptr, no_chars, no_chars_orig, code); 1278 if code = error_table_$smallarg then do; 1279 no_chars = no_chars + 5000; 1280 goto GROW_MORE; 1281 end; 1282 else if code ^= 0 1283 then do; 1284 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 1285 go to pre_end; 1286 end; 1287 1288 no_chars_format = no_chars; 1289 call format_document_$string (based_string_orig, based_string_format, no_chars_format, addr (auto_format_document_options), code); 1290 if code ^= 0 1291 then do; 1292 call xmail_error_$no_code (code, NAME, LOG, ERROR_MESSAGE, message_num); 1293 go to pre_end; 1294 end; 1295 1296 /* Append indented original and add the number of characters */ 1297 1298 based_string = substr (based_string, 1, no_used) || based_string_format; 1299 no_used = no_used + no_chars_format; 1300 1301 /* Append a newline */ 1302 1303 based_string = substr (based_string, 1, no_used) || NL; 1304 no_used = no_used + length (NL); 1305 1306 return; 1307 end insert_original_message; 1308 1309 CLEAN_UP: proc (); 1310 1311 if sci_ptr ^= null 1312 then call ssu_$destroy_invocation (sci_ptr); 1313 xmail_data.reply_request = "0"b; 1314 call xmail_redisplay_$menu (); 1315 1316 if delete_def_reply 1317 then call delete_$ptr (defrepl_seg_ptr, DELETE_SEG_FORCE_CHASE, NAME, (0)); 1318 1319 if reply_seg_ptr ^= null () 1320 then do; 1321 call delete_$ptr (reply_seg_ptr, DELETE_SEG_FORCE_CHASE, NAME, code); 1322 reply_seg_ptr = null (); 1323 end; 1324 call MESSAGE_CLEAN_UP (); 1325 1326 if iocb_ptr ^= null then do; 1327 call iox_$close (iocb_ptr, (0)); /* ignore code */ 1328 call iox_$detach_iocb (iocb_ptr, (0)); /* ignore code */ 1329 call iox_$destroy_iocb (iocb_ptr, (0)); /* ignore code */ 1330 end; 1331 1332 if view_seg_ptr ^= null () 1333 then do; 1334 call delete_$ptr (view_seg_ptr, DELETE_SEG_FORCE, NAME, (0)); /* ignore code */ 1335 view_seg_ptr = null (); 1336 end; 1337 1338 if orig_seg_ptr ^= null () 1339 then do; 1340 call delete_$ptr (orig_seg_ptr, DELETE_SEG_FORCE, NAME, (0)); /* ignore code */ 1341 orig_seg_ptr = null (); 1342 end; 1343 if format_seg_ptr ^= null () 1344 then do; 1345 call delete_$ptr (format_seg_ptr, DELETE_SEG_FORCE, NAME, (0)); /* ignore code */ 1346 format_seg_ptr = null (); 1347 end; 1348 1349 if star_names_ptr ^= null () then free star_names;/* order is important */ 1350 if star_entry_ptr ^= null () then free star_entries; 1351 if recipients_info_ptr ^= null () 1352 then do; 1353 free recipients_info in (reply_msg_area); 1354 recipients_info_ptr = null (); 1355 end; 1356 return; 1357 end CLEAN_UP; 1358 1359 end xmail_reply_msg_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/06/92 0026.4 xmail_reply_msg_.pl1 >spec>inst>1022>xmail_reply_msg_.pl1 358 1 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>incl>access_mode_values.incl.pl1 360 2 02/02/78 1329.7 iox_modes.incl.pl1 >ldd>incl>iox_modes.incl.pl1 362 3 11/01/84 1614.0 format_document_options.incl.pl1 >ldd>incl>format_document_options.incl.pl1 364 4 10/27/83 2204.2 mlsys_address_list.incl.pl1 >ldd>incl>mlsys_address_list.incl.pl1 366 5 10/27/83 2204.2 mlsys_deliver_info.incl.pl1 >ldd>incl>mlsys_deliver_info.incl.pl1 368 6 10/27/83 2204.2 mlsys_field_names.incl.pl1 >ldd>incl>mlsys_field_names.incl.pl1 370 7 10/27/83 2204.2 mlsys_format_options.incl.pl1 >ldd>incl>mlsys_format_options.incl.pl1 372 8 10/27/83 2204.2 mlsys_mailbox.incl.pl1 >ldd>incl>mlsys_mailbox.incl.pl1 374 9 05/22/86 1325.8 mlsys_message.incl.pl1 >ldd>incl>mlsys_message.incl.pl1 376 10 10/27/83 2204.2 mlsys_parse_txt_options.incl.pl1 >ldd>incl>mlsys_parse_txt_options.incl.pl1 378 11 10/27/83 2204.2 mlsys_reply_options.incl.pl1 >ldd>incl>mlsys_reply_options.incl.pl1 380 12 06/10/82 1145.5 star_structures.incl.pl1 >ldd>incl>star_structures.incl.pl1 382 13 04/06/83 1339.4 terminate_file.incl.pl1 >ldd>incl>terminate_file.incl.pl1 384 14 06/08/82 1429.4 xmail_curr_msg_info.incl.pl1 >ldd>incl>xmail_curr_msg_info.incl.pl1 386 15 09/08/88 2110.9 xmail_data.incl.pl1 >ldd>incl>xmail_data.incl.pl1 388 16 05/28/86 1217.7 xmail_responses.incl.pl1 >ldd>incl>xmail_responses.incl.pl1 390 17 12/02/84 1232.9 xmail_windows.incl.pl1 >ldd>incl>xmail_windows.incl.pl1 17-14 18 09/12/84 1016.7 window_control_info.incl.pl1 >ldd>incl>window_control_info.incl.pl1 392 19 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. ACKNOWLEDGE 000246 constant char(14) initial packed unaligned dcl 165 set ref 972* 973* 988* ADDRESS_LIST_VERSION_2 000072 constant char(8) initial packed unaligned dcl 4-12 set ref 640* 870* 891* 912* 931* ALLOW_SELECTION 000363 constant bit(1) initial dcl 164 set ref 1055* 1064* 1068* 1074* 1088* 1097* 1101* 1107* ALWAYS_QUEUE_FOREIGN constant fixed bin(17,0) initial dcl 5-33 ref 547 ASK 000010 constant char(3) initial packed unaligned dcl 16-16 ref 978 1055 1059 1064 1068 1074 1081 1088 1092 1097 1101 1107 1212 BCC_FIELDNAME 000055 constant varying char(32) initial dcl 6-6 set ref 732* BITS_PER_CHAR constant fixed bin(17,0) initial dcl 167 ref 498 636 659 750 769 820 856 CC_FIELDNAME 000044 constant varying char(32) initial dcl 6-6 set ref 716* CONTINUE 000245 constant char(1) initial packed unaligned dcl 166 set ref 994* 1021* 1026* 1035* 1171* DEFAULT_FORMATTING_MODE constant fixed bin(17,0) initial dcl 7-22 ref 1247 1248 1249 DEFAULT_WIDTH constant fixed bin(17,0) initial dcl 168 ref 1256 DELETE_SEG_FORCE 000244 constant bit(6) initial packed unaligned dcl 169 set ref 1334* 1340* 1345* DELETE_SEG_FORCE_CHASE 000243 constant bit(6) initial packed unaligned dcl 170 set ref 862* 1316* 1321* DELIVER_OPTIONS_VERSION_2 000070 constant char(8) initial packed unaligned dcl 5-19 ref 545 EMACS_EXT 000235 constant char(21) initial packed unaligned dcl 171 set ref 517* 521 ENTRY_NAME 000114 automatic entry variable initial dcl 172 set ref 172* 465 465 517 517 ERRORS_ONLY 000363 constant bit(1) initial dcl 174 set ref 1000* ERROR_MESSAGE 000213 constant char(69) initial packed unaligned dcl 173 set ref 490* 597* 625* 642* 654* 689* 704* 719* 735* 810* 851* 873* 883* 894* 904* 915* 925* 934* 942* 967* 1012* 1284* 1292* FILE_ORIGINAL 000203 constant char(32) initial packed unaligned dcl 175 set ref 1049* 1050* 1078* 1111* FORMAT_MESSAGE_OPTIONS_VERSION_1 000020 constant char(8) initial packed unaligned dcl 7-15 ref 1245 FORMAT_SEG_NAME 000173 constant char(32) initial packed unaligned dcl 176 set ref 1235* INCLUDE_ORIGINAL 000166 constant char(19) initial packed unaligned dcl 177 set ref 1206* 1207* LOG 000341 constant char(1) initial packed unaligned dcl 178 set ref 490* 597* 625* 642* 654* 689* 704* 719* 735* 810* 851* 873* 883* 894* 904* 915* 925* 934* 942* 967* 1001* 1012* 1284* 1292* MAILFILE_SUFFIX 000164 constant char(6) initial packed unaligned dcl 179 ref 1057 1066 1070 1076 1090 1099 1103 1109 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 000016 constant char(8) initial packed unaligned dcl 9-318 ref 948 MESSAGE_PREFORMATTED_BODY_SECTION constant fixed bin(17,0) initial dcl 9-285 ref 950 NAME 000157 constant char(16) initial packed unaligned dcl 180 set ref 452* 462* 466* 470* 490* 503* 518* 520* 571* 597* 625* 642* 654* 689* 704* 719* 735* 752* 771* 777* 795* 810* 851* 855* 862* 873* 883* 894* 904* 915* 925* 934* 942* 967* 973* 988* 994* 1001* 1012* 1021* 1026* 1035* 1042* 1046* 1050* 1078* 1111* 1116* 1171* 1207* 1232* 1240* 1284* 1292* 1316* 1321* 1334* 1340* 1345* NL 016073 constant char(1) initial dcl 181 ref 640 640 658 660 698 699 708 709 723 724 739 740 742 743 891 891 931 931 953 1303 1304 NO 016072 constant char(2) initial packed unaligned dcl 16-16 ref 972 976 1072 1105 1116 1206 NOTIFY_ON_ERROR constant fixed bin(17,0) initial dcl 5-42 ref 548 NO_SELECTION 000365 constant bit(1) initial dcl 183 set ref 1057* 1066* 1070* 1076* 1090* 1099* 1103* 1109* NO_WIDTH_LIMIT 000277 constant fixed bin(17,0) initial dcl 184 set ref 686* 701* 716* 732* 1246 ORDINARY_DELIVERY constant fixed bin(17,0) initial dcl 5-25 ref 546 ORIGINAL_IN_WINDOW 000151 constant char(21) initial packed unaligned dcl 185 set ref 502* 503* ORIG_SEG_NAME 000141 constant char(32) initial packed unaligned dcl 186 set ref 1227* PARSE_TEXT_OPTIONS_VERSION_1 000014 constant char(8) initial packed unaligned dcl 10-17 ref 605 PROBLEM 000122 constant char(60) initial packed unaligned dcl 187 set ref 452* 462* 466* 470* 518* 520* 752* 771* 777* 795* 855* 1232* 1240* P_curr_msgs_ptr parameter pointer dcl 146 ref 68 417 P_mailbox_ptr parameter pointer dcl 145 ref 68 416 QUIT 000262 constant char(1) initial packed unaligned dcl 189 set ref 503* 973* 988* 1042* 1046* RECIPIENTS_INFO_VERSION_2 000066 constant char(8) initial packed unaligned dcl 5-62 ref 535 REPLY_OPTIONS_VERSION_2 000012 constant char(8) initial packed unaligned dcl 11-18 ref 537 REPLY_SEG_NAME 000116 constant char(13) initial packed unaligned dcl 188 set ref 447* 510 REPLY_TO_FIELDNAME 000033 constant varying char(32) initial dcl 6-6 set ref 651* 686* RW_ACCESS_BIN 000366 constant fixed bin(5,0) initial dcl 1-36 set ref 447* 457* 621* 800* 1227* 1235* SAVE_MAILBOX 000112 constant char(15) initial packed unaligned dcl 191 set ref 1041* 1042* SAVE_MESSAGE 000106 constant char(15) initial packed unaligned dcl 192 set ref 1045* 1046* 1116* SECONDS 000316 constant bit(2) initial packed unaligned dcl 190 set ref 492* 598* 627* 643* 655* 690* 705* 720* 736* 803* 812* 824* 852* 874* 884* 895* 905* 916* 926* 935* 943* 968* 1013* 1120* STOP 000262 constant char(1) initial packed unaligned dcl 193 set ref 452* 462* 466* 470* 518* 520* 752* 771* 777* 795* 855* 1232* 1240* Stream_output 000373 constant fixed bin(17,0) initial dcl 2-15 set ref 469* TERM_FILE_BC 000011 constant bit(2) initial packed unaligned dcl 13-12 set ref 450* 460* 662* 751* 770* 788* 816* 1230* 1238* TO_FIELDNAME 000022 constant varying char(32) initial dcl 6-6 set ref 701* USE_SCREEN_WIDTH 000277 constant fixed bin(17,0) initial dcl 194 set ref 1020* 1025* 1034* VIEW_SEG_NAME 000076 constant char(32) initial packed unaligned dcl 195 set ref 457* 465 WHITE_SPACE_COMMA 000074 constant char(6) initial dcl 196 ref 640 640 870 870 891 891 912 912 931 931 YES 000007 constant char(3) initial packed unaligned dcl 16-16 ref 502 505 986 1053 1054 1087 1210 abort 5 000435 automatic bit(1) level 3 packed packed unaligned dcl 266 set ref 549* acknowledge 5(03) 000435 automatic bit(1) level 3 in structure "auto_deliver_options" packed packed unaligned dcl 266 in procedure "xmail_reply_msg_" set ref 976* 983* 984* 986* acknowledge 000120 automatic varying char(3) dcl 208 in procedure "xmail_reply_msg_" set ref 972* 976 978 986 addr builtin function dcl 354 ref 585 585 640 640 651 651 792 792 870 870 891 891 912 912 931 931 947 954 964 964 991 991 1276 1276 1289 1289 address_list based structure level 1 dcl 4-6 address_list_ptr 12 based pointer array level 3 dcl 5-49 set ref 960* 961* 962* after builtin function dcl 354 in procedure "xmail_reply_msg_" ref 640 640 870 870 891 891 912 912 931 931 after builtin function dcl 1191 in procedure "minus_suffix" ref 1198 area_ptr 2 based pointer level 3 in structure "recipients_info" dcl 5-49 in procedure "xmail_reply_msg_" set ref 534* area_ptr 2 000472 automatic pointer level 2 in structure "auto_parse_text_options" dcl 270 in procedure "xmail_reply_msg_" set ref 606* auto_deliver_options 000435 automatic structure level 1 unaligned dcl 266 set ref 991 991 auto_format_document_options 000452 automatic structure level 1 unaligned dcl 268 set ref 1289 1289 auto_format_message_options 000443 automatic structure level 1 unaligned dcl 267 set ref 1276 1276 auto_message_body_section_parameter 000460 automatic structure level 1 unaligned dcl 269 set ref 964 964 auto_parse_text_options 000472 automatic structure level 1 unaligned dcl 270 set ref 640 640 870 870 891 891 912 912 931 931 auto_reply_options 000500 automatic structure level 1 unaligned dcl 271 set ref 585 585 based_array based char(1) array packed unaligned dcl 340 set ref 954 based_string based char packed unaligned dcl 342 set ref 638* 639 640 640 660* 660 695* 695 698* 698 708* 708 723* 723 739* 739 742* 742 822 870 870 891 891 912 912 931 931 953 956 1298* 1298 1303* 1303 based_string_format based char packed unaligned dcl 343 set ref 1289* 1298 based_string_orig based char packed unaligned dcl 344 set ref 1289* based_string_view based char packed unaligned dcl 345 set ref 766* 766 768* 768 769 bcc 6 000500 automatic pointer level 2 in structure "auto_reply_options" dcl 271 in procedure "xmail_reply_msg_" set ref 540* bcc 46 based pointer level 3 in structure "message" dcl 9-15 in procedure "xmail_reply_msg_" set ref 732* 962 bcc_list_ptr 000122 automatic pointer dcl 209 set ref 405* 866* 870* 878 880* 1032 1034* 1162 1164* 1165* before builtin function dcl 354 ref 639 640 640 870 870 891 891 912 912 931 931 bit_count 000124 automatic fixed bin(24,0) dcl 210 set ref 449* 450* 459* 460* 622* 630 636 659* 662* 750* 751* 807* 816* 820 848* 855 856 1229* 1230* 1237* 1238* bit_count_view 000125 automatic fixed bin(24,0) dcl 211 set ref 487* 498 769* 770* buffer_size 000126 automatic fixed bin(21,0) dcl 212 set ref 649* 651* buffer_used 000127 automatic fixed bin(21,0) dcl 213 set ref 650* 651* cc 4 000500 automatic pointer level 2 in structure "auto_reply_options" dcl 271 in procedure "xmail_reply_msg_" set ref 539* cc 44 based pointer level 3 in structure "message" dcl 9-15 in procedure "xmail_reply_msg_" set ref 716* 961 cc_list_ptr 000130 automatic pointer dcl 214 set ref 405* 866* 912* 920 922* 1023 1025* 1154 1156* 1157* char builtin function dcl 354 ref 758 766 769 cleanup 000106 stack reference condition dcl 151 ref 443 code 000132 automatic fixed bin(35,0) dcl 215 set ref 433* 447* 448 450 450 450* 452* 457* 458 460 460 460* 462* 465* 466 466* 469* 470 470* 487* 488 490* 502* 503 503* 517* 518 518* 519* 520 520* 570* 571 571* 585* 595 597* 622* 623 625* 640* 641 642* 651* 653 654* 662* 686* 687 689* 701* 702 704* 716* 717 719* 732* 733 735* 751* 752 752* 770* 771 771* 773* 775* 777 777* 788* 794* 795 795* 800* 801 801 801 807* 808 810* 816* 848* 849 851* 855* 870* 871 873* 880* 881 883* 891* 892 894* 901* 902 904* 912* 913 915* 922* 923 925* 931* 932 934* 939* 940 942* 964* 965 967* 972* 973 973* 991* 993 994 994* 1012* 1020* 1021 1021* 1025* 1026 1026* 1034* 1035 1035* 1041* 1042 1042* 1045* 1046 1046* 1049* 1050 1050* 1146* 1151* 1156* 1164* 1170* 1171 1171* 1206* 1207 1207* 1227* 1228 1230 1230 1230* 1232* 1235* 1236 1238 1238 1238* 1240* 1276* 1278 1282 1284* 1289* 1290 1292* 1321* code1 000133 automatic fixed bin(35,0) dcl 216 set ref 999* 1000 1000* 1001* codeptr builtin function dcl 354 ref 465 465 517 517 count 1 based fixed bin(17,0) level 2 dcl 14-8 ref 558 563 803 834 837 1004 1120 curr_msgs based structure level 1 unaligned dcl 14-8 curr_msgsp 000534 automatic pointer dcl 14-6 set ref 417* 418 476* 558 563 564 803 834 837 838 1004 1120 decat builtin function dcl 354 ref 766 768 769 def_reply_string based char packed unaligned dcl 346 set ref 638 822* default_save_file 000134 automatic varying char(32) dcl 217 set ref 562* 1041* 1055 1057 1064 1066 1068 1070 1074 1076 1088 1090 1097 1099 1101 1103 1107 1109 deferred_reply_exists 000145 automatic bit(1) packed unaligned dcl 218 set ref 615* 664* 676 deferred_seg_name 000146 automatic varying char(32) dcl 219 set ref 617* 618 621 799* 800 defrepl_seg_ptr 000160 automatic pointer dcl 220 set ref 408* 621* 622* 638 800* 816* 822 862* 1316* delete_$ptr 000164 constant entry external dcl 275 ref 862 1316 1321 1334 1340 1345 delete_def_reply 000162 automatic bit(1) packed unaligned dcl 221 set ref 616* 663* 671* 825* 860 863* 1316 deliver_options based structure level 1 dcl 5-6 delivery_mode 2 000435 automatic fixed bin(17,0) level 2 dcl 266 set ref 546* delivery_results_need_cleanup 000163 automatic bit(1) dcl 222 set ref 412* 992* 1169 divide builtin function dcl 354 ref 498 636 820 856 dont_break_indented_lines_sw 3(09) 000452 automatic bit(1) level 3 packed packed unaligned dcl 268 set ref 1260* dont_fill_sw 3(11) 000452 automatic bit(1) level 3 packed packed unaligned dcl 268 set ref 1261* emacs_ 000166 constant entry external dcl 276 ref 792 emacs_seg_path_name 000164 automatic char(168) packed unaligned dcl 223 set ref 510* 792 envelope_formatting_mode 3 000443 automatic fixed bin(17,0) level 2 dcl 267 set ref 1247* error_table_$bad_segment 000150 external static fixed bin(35,0) dcl 155 set ref 988* 1078* 1111* 1116* error_table_$namedup 000152 external static fixed bin(35,0) dcl 156 ref 450 460 801 1230 1238 error_table_$segknown 000154 external static fixed bin(35,0) dcl 157 ref 450 460 801 1230 1238 error_table_$smallarg 000156 external static fixed bin(35,0) dcl 158 ref 1278 ext_dir 000064 internal static char(168) packed unaligned dcl 203 set ref 519* 521 ext_file 000136 internal static char(32) packed unaligned dcl 204 set ref 519* ext_pname 000010 internal static char(168) packed unaligned dcl 201 set ref 521* 792* ext_ptr 000062 internal static pointer initial dcl 202 set ref 515 517* 519* extent 27 000360 external static structure level 4 dcl 17-5 file_original 000236 automatic varying char(3) dcl 224 set ref 1049* 1054 1059 1072 1087 1092 1105 flags 4 000472 automatic structure level 2 in structure "auto_parse_text_options" packed packed unaligned dcl 270 in procedure "xmail_reply_msg_" flags 10 000500 automatic structure level 2 in structure "auto_reply_options" packed packed unaligned dcl 271 in procedure "xmail_reply_msg_" flags 213 based structure level 2 in structure "xmail_data" dcl 15-54 in procedure "xmail_reply_msg_" flags 5 000435 automatic structure level 2 in structure "auto_deliver_options" packed packed unaligned dcl 266 in procedure "xmail_reply_msg_" for_type 000240 automatic char(32) packed unaligned dcl 225 set ref 527* 792 792 format_document_$string 000170 constant entry external dcl 277 ref 1289 format_document_options based structure level 1 dcl 3-12 format_document_version_2 constant fixed bin(17,0) initial dcl 3-63 ref 1254 format_message_options based structure level 1 dcl 7-6 format_reply 000251 automatic char(33) packed unaligned dcl 227 set ref 648* 651 651 660 format_reply_length 000250 automatic fixed bin(17,0) dcl 226 set ref 649* 651* 658 format_seg_ptr 000262 automatic pointer dcl 228 set ref 405* 1235* 1238* 1289 1298 1343 1345* 1346* galley_sw 3(02) 000452 automatic bit(1) level 3 packed packed unaligned dcl 268 set ref 1258* get_pdir_ 000172 constant entry external dcl 278 ref 465 510 get_system_free_area_ 000174 constant entry external dcl 279 ref 404 534 618 618 hcs_$fs_get_path_name 000176 constant entry external dcl 281 ref 519 hcs_$make_ptr 000200 constant entry external dcl 282 ref 517 hcs_$make_seg 000202 constant entry external dcl 283 ref 447 457 621 800 1227 1235 hcs_$star_ 000204 constant entry external dcl 284 ref 618 hcs_$status_mins 000206 constant entry external dcl 285 ref 487 622 807 848 header 64 based structure array level 4 in structure "message" dcl 9-15 in procedure "xmail_reply_msg_" header 4 000460 automatic structure level 3 in structure "auto_message_body_section_parameter" unaligned dcl 269 in procedure "xmail_reply_msg_" header based structure level 2 in structure "message_user_field" dcl 9-163 in procedure "xmail_reply_msg_" header 30 based structure level 2 in structure "message" dcl 9-15 in procedure "xmail_reply_msg_" header based structure level 2 in structure "message_preformatted_body_section" dcl 9-292 in procedure "xmail_reply_msg_" header 10 based structure array level 3 in structure "message_user_fields_list" dcl 9-150 in procedure "xmail_reply_msg_" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 9-313 in procedure "xmail_reply_msg_" header 4 based structure level 3 in structure "message_user_field_parameter" dcl 9-208 in procedure "xmail_reply_msg_" header based structure level 2 in structure "message_body_section" dcl 9-274 in procedure "xmail_reply_msg_" header based structure level 2 in structure "recipients_info" dcl 5-49 in procedure "xmail_reply_msg_" header_formatting_mode 4 000443 automatic fixed bin(17,0) level 2 dcl 267 set ref 1248* height 30 000360 external static fixed bin(17,0) level 5 dcl 17-5 ref 396 idx 000264 automatic fixed bin(17,0) dcl 229 set ref 563* 564 834 837 1004 1120* idx2 000265 automatic fixed bin(17,0) dcl 230 set ref 837* 838* include_authors 10 000500 automatic bit(1) level 3 packed packed unaligned dcl 271 set ref 541* include_body 6 000443 automatic bit(1) level 2 dcl 267 set ref 1250* include_invalid_addresses 4(02) 000472 automatic bit(1) level 3 packed packed unaligned dcl 270 set ref 609* include_original 000270 automatic bit(1) packed unaligned dcl 232 set ref 403* 747 1210* 1217* 1219* 1221 include_recipients 10(01) 000500 automatic bit(1) level 3 packed packed unaligned dcl 271 set ref 579* include_self 10(02) 000500 automatic bit(1) level 3 packed packed unaligned dcl 271 set ref 542* indentation 1 000452 automatic fixed bin(17,0) level 2 dcl 268 set ref 1255* index builtin function dcl 1191 in procedure "minus_suffix" ref 1196 index builtin function dcl 354 in procedure "xmail_reply_msg_" ref 639 953 ioa_ 000210 constant entry external dcl 286 ref 420 437 591 783 802 823 833 842 998 1019 1028 1037 ioa_$ioa_switch_nnl 000212 constant entry external dcl 287 ref 780 ioa_$nnl 000214 constant entry external dcl 288 ref 836 838 ioa_$rsnnl 000216 constant entry external dcl 289 ref 633 iocb 22 000360 external static pointer level 3 dcl 17-5 set ref 779* 780* iocb_ptr 000266 automatic pointer dcl 231 set ref 405* 465* 469* 476* 478 480* 481* 482* 1326 1327* 1328* 1329* iox_$attach_name 000220 constant entry external dcl 290 ref 465 iox_$close 000222 constant entry external dcl 291 ref 480 1327 iox_$destroy_iocb 000224 constant entry external dcl 292 ref 482 1329 iox_$detach_iocb 000226 constant entry external dcl 293 ref 481 1328 iox_$open 000230 constant entry external dcl 294 ref 469 iox_$user_output 000160 external static pointer dcl 159 set ref 401* 427* 432* 782* 792* length builtin function dcl 1191 in procedure "minus_suffix" ref 1186 1187 length builtin function dcl 354 in procedure "xmail_reply_msg_" ref 649 649 658 693 696 699 709 724 740 743 743 769 953 953 956 1304 line_length 2 000452 automatic fixed bin(17,0) level 2 in structure "auto_format_document_options" dcl 268 in procedure "xmail_reply_msg_" set ref 1256* line_length 2 000443 automatic fixed bin(17,0) level 2 in structure "auto_format_message_options" dcl 267 in procedure "xmail_reply_msg_" set ref 1246* list_errors 4 000472 automatic bit(1) level 3 packed packed unaligned dcl 270 set ref 607* lists 12 based structure array level 2 dcl 5-49 literal_sw 3(04) 000452 automatic bit(1) level 3 packed packed unaligned dcl 268 set ref 1259* ltrim builtin function dcl 354 ref 758 766 769 mail_dir based varying char(168) level 2 dcl 15-54 ref 618 621 800 mail_system_$add_body_section 000232 constant entry external dcl 295 ref 964 mail_system_$deliver_message 000234 constant entry external dcl 296 ref 991 mail_system_$free_address_list 000236 constant entry external dcl 297 ref 1151 1156 1164 mail_system_$free_message 000240 constant entry external dcl 298 ref 1146 mail_system_$read_message 000242 constant entry external dcl 299 ref 570 mail_system_$replace_bcc 000244 constant entry external dcl 300 ref 880 mail_system_$replace_cc 000246 constant entry external dcl 301 ref 922 mail_system_$replace_reply_to 000250 constant entry external dcl 302 ref 901 mail_system_$replace_to 000252 constant entry external dcl 303 ref 939 mailbox based structure level 1 dcl 8-6 mailbox_ptr 000516 automatic pointer dcl 8-30 set ref 416* 418 476* 568 570* 574 mbz 4(03) 000472 automatic bit(33) level 3 in structure "auto_parse_text_options" packed packed unaligned dcl 270 in procedure "xmail_reply_msg_" set ref 610* mbz 5(05) 000435 automatic bit(31) level 3 in structure "auto_deliver_options" packed packed unaligned dcl 266 in procedure "xmail_reply_msg_" set ref 554* mbz 10(03) 000500 automatic bit(33) level 3 in structure "auto_reply_options" packed packed unaligned dcl 271 in procedure "xmail_reply_msg_" set ref 543* menu 22 000360 external static structure level 2 dcl 17-5 message based structure level 1 dcl 9-15 message_body_section based structure level 1 dcl 9-274 message_body_section_parameter based structure level 1 dcl 9-313 message_body_section_ptr 000522 automatic pointer dcl 9-280 set ref 947* 950 952 954 956 message_envelope based structure level 1 dcl 9-61 message_id 30 based bit(72) level 3 dcl 9-15 ref 617 799 message_num 000271 automatic fixed bin(17,0) dcl 233 set ref 490* 564* 568 570* 571* 574 591* 597* 625* 633* 642* 654* 689* 704* 719* 735* 758 766 769 802* 810* 823* 833* 851* 873* 883* 894* 904* 915* 925* 934* 942* 967* 998* 1012* 1019* 1284* 1292* message_preformatted_body_section based structure level 1 dcl 9-292 message_ptr 000520 automatic pointer dcl 9-53 in procedure "xmail_reply_msg_" set ref 588* 589 686 701 716 732 880* 901* 922* 939* 960 961 962 message_ptr 106 based pointer array level 3 in structure "mailbox" dcl 8-6 in procedure "xmail_reply_msg_" ref 568 574 message_redistribution based structure level 1 dcl 9-122 message_reference based structure level 1 dcl 9-234 message_text_field based structure level 1 dcl 9-260 message_user_field based structure level 1 dcl 9-163 messages 104 based structure array level 2 dcl 8-6 mlsys_et_$no_a_permission 000162 external static fixed bin(35,0) dcl 160 ref 994 mlsys_utils_$create_reply_message 000254 constant entry external dcl 304 ref 585 mlsys_utils_$format_address_list_field 000256 constant entry external dcl 305 ref 686 701 716 732 mlsys_utils_$format_message 000260 constant entry external dcl 306 ref 1276 mlsys_utils_$format_text_field 000262 constant entry external dcl 307 ref 651 mlsys_utils_$free_delivery_results 000264 constant entry external dcl 310 ref 1170 mlsys_utils_$parse_address_list_text 000266 constant entry external dcl 311 ref 640 870 891 912 931 mlsys_utils_$print_address_list_field 000270 constant entry external dcl 312 ref 1020 1025 1034 mlsys_utils_$print_delivery_results 000272 constant entry external dcl 313 ref 1000 more_than_one 000272 automatic bit(1) packed unaligned dcl 234 set ref 402* 558* 766 824 n_addresses 6 based fixed bin(17,0) level 2 dcl 4-6 ref 589 n_failed_recipients 10 based fixed bin(17,0) level 3 dcl 5-49 ref 996 n_lists 11 based fixed bin(17,0) level 3 dcl 5-49 set ref 533* 959 1353 name parameter char packed unaligned dcl 1181 ref 1177 1186 1193 1196 nnames 0(02) based fixed bin(16,0) array level 2 packed packed unsigned unaligned dcl 12-27 ref 1349 no_chars 000273 automatic fixed bin(21,0) dcl 235 set ref 636* 638 638 639 640 640 658* 658 659 660 660 681* 686* 695 695 698 698 701* 708 708 716* 723 723 732* 739 739 742 742 820* 822 822 856* 870 870 891 891 912 912 931 931 953 956 1276* 1279* 1279 1288 1298 1298 1303 1303 no_chars_format 000274 automatic fixed bin(21,0) dcl 236 set ref 1288* 1289 1289 1289* 1298 1299 no_chars_orig 000275 automatic fixed bin(21,0) dcl 237 set ref 1275* 1276* 1289 1289 no_chars_view 000276 automatic fixed bin(21,0) dcl 238 set ref 498* 766 766 766 768 768 768 769 769 no_used 000277 automatic fixed bin(21,0) dcl 239 set ref 682* 686* 693 695 696* 696 698 699* 699 701* 708 709* 709 715 716* 723 724* 724 731 732* 739 740* 740 742 743* 743 750 1274 1298 1299* 1299 1303 1304* 1304 null builtin function dcl 354 ref 405 408 409 410 411 418 418 478 515 538 539 540 568 583 586 637 866 878 899 920 959 999 999 1020 1020 1023 1025 1025 1032 1034 1034 1144 1147 1149 1152 1154 1157 1162 1165 1167 1311 1319 1322 1326 1332 1335 1338 1341 1343 1346 1349 1350 1351 1354 numbers 2 based fixed bin(17,0) array level 2 dcl 14-8 set ref 564 838* opt 000300 automatic fixed bin(17,0) dcl 240 set ref 428 631* 668* 980* 1060* 1083* 1093* 1214* orig_seg_ptr 000302 automatic pointer dcl 242 set ref 405* 1227* 1230* 1276* 1289 1338 1340* 1341* original_in_window 000301 automatic bit(1) packed unaligned dcl 241 set ref 403* 505* 506* 773 780 786 parse_text_error_list_ptr 000524 automatic pointer dcl 10-33 set ref 640* 870* 891* 912* 931* parse_text_options based structure level 1 dcl 10-6 position 24 000360 external static structure level 3 dcl 17-5 prompt_string 000304 automatic varying char(160) dcl 243 set ref 633* 634* queue_mailing_lists 5(04) 000435 automatic bit(1) level 3 packed packed unaligned dcl 266 set ref 552* queued_notification_mode 4 000435 automatic fixed bin(17,0) level 2 dcl 266 set ref 548* queueing_mode 3 000435 automatic fixed bin(17,0) level 2 dcl 266 set ref 547* quit 000100 stack reference condition dcl 151 ref 424 recipient_notification 5(02) 000435 automatic bit(1) level 3 packed packed unaligned dcl 266 set ref 551* recipients_info based structure level 1 dcl 5-49 set ref 533 1353 recipients_info_n_lists 000514 automatic fixed bin(17,0) dcl 5-66 set ref 531* 533 533 recipients_info_ptr 000512 automatic pointer dcl 5-64 set ref 405* 533* 534 535 959 960 961 962 991* 996 1000* 1167 1170* 1351 1353 1354* recipients_result_list_ptr 14 based pointer array level 3 dcl 5-49 set ref 959* redistributions_list_formatting_mode 5 000443 automatic fixed bin(17,0) level 2 dcl 267 set ref 1249* reissue_query 000000 stack reference condition dcl 151 ref 426 repl_message_ptr 000356 automatic pointer dcl 244 set ref 405* 583* 585* 586 588 964* 991* 1055* 1057* 1064* 1066* 1068* 1070* 1074* 1076* 1088* 1090* 1097* 1099* 1101* 1103* 1107* 1109* 1144 1146* 1147* reply_header 000360 automatic char(27) packed unaligned dcl 245 set ref 758* 759* reply_msg_area based area(1024) dcl 350 ref 533 1353 reply_msg_area_ptr 000370 automatic pointer dcl 246 set ref 404* 533 606 1353 reply_msg_ptr 000372 automatic pointer dcl 247 set ref 574* 585* 617 799 1055* 1057* 1064* 1066* 1088* 1090* 1097* 1099* 1276* reply_options based structure level 1 dcl 11-6 reply_request 213(10) based bit(1) level 3 packed packed unaligned dcl 15-54 set ref 444* 1313* reply_seg_ptr 000374 automatic pointer dcl 248 set ref 405* 447* 450* 638 639 640 640 660 660 662* 686* 695 695 698 698 701* 708 708 716* 723 723 732* 739 739 742 742 751* 807* 822 848* 870 870 891 891 912 912 931 931 953 954 956 1298 1298 1303 1303 1319 1321* 1322* reply_to 40 based pointer level 3 dcl 9-15 set ref 686* reply_to_list_ptr 000376 automatic pointer dcl 249 set ref 637* 640* 891* 899 901* resp 000400 automatic varying char(1) dcl 250 set ref 1006* 1007 1008* response 000402 automatic varying char(3) dcl 251 set ref 502* 505 1206* 1210 1212 reverse builtin function dcl 1191 ref 1193 1194 1198 reverse_name 000100 automatic varying char dcl 1186 set ref 1193* 1196 1198 reverse_suffix 000100 automatic varying char dcl 1187 set ref 1194* 1196 1198 rtrim builtin function dcl 354 in procedure "xmail_reply_msg_" ref 465 465 510 521 640 640 651 651 695 766 769 870 870 891 891 912 912 931 931 956 rtrim builtin function dcl 1191 in procedure "minus_suffix" ref 1193 1194 save_message 000404 automatic varying char(3) dcl 252 set ref 1045* 1053 1081 1116 saved_menu_size 000406 automatic fixed bin(17,0) dcl 253 set ref 396* 433* 794* sci_ptr 000410 automatic pointer dcl 254 set ref 411* 999* 1000* 1002* 1311 1311* section 4 000460 automatic structure level 2 unaligned dcl 269 set ref 947 section_n_lines 1 based fixed bin(21,0) level 3 dcl 9-292 set ref 952* section_type based fixed bin(17,0) level 3 dcl 9-292 set ref 950* send_if_empty 5(01) 000435 automatic bit(1) level 3 packed packed unaligned dcl 266 set ref 550* ssu_$destroy_invocation 000276 constant entry external dcl 315 ref 1002 1311 ssu_$standalone_invocation 000274 constant entry external dcl 314 ref 999 star_BRANCHES_ONLY 000022 constant fixed bin(2,0) initial dcl 12-110 set ref 618* star_entries based structure array level 1 dcl 12-27 ref 1350 star_entry_count 000526 automatic fixed bin(17,0) dcl 12-14 set ref 618* 619 1349 1350 star_entry_ptr 000530 automatic pointer dcl 12-15 set ref 410* 618* 1349 1350 1350 star_names based char(32) array packed unaligned dcl 12-37 ref 1349 star_names_ptr 000532 automatic pointer dcl 12-19 set ref 409* 618* 1349 1349 start_of_bcc 000412 automatic fixed bin(17,0) dcl 255 set ref 731* start_of_cc 000413 automatic fixed bin(17,0) dcl 256 set ref 715* start_of_orig 000414 automatic fixed bin(17,0) dcl 257 set ref 1274* start_of_text 000415 automatic fixed bin(17,0) dcl 258 set ref 953* 954 956 status 000416 automatic fixed bin(35,0) dcl 259 set ref 792* 797 829 string builtin function dcl 354 set ref 1257* substr builtin function dcl 354 ref 695 698 708 723 739 742 956 1298 1303 suffix parameter char packed unaligned dcl 1182 ref 1177 1187 1194 sum builtin function dcl 354 ref 1349 switches 3 000452 automatic structure level 2 packed packed unaligned dcl 268 set ref 1257* syllable_size 4 000452 automatic fixed bin(17,0) level 2 dcl 268 set ref 1262* terminate_file_ 000300 constant entry external dcl 316 ref 450 460 662 751 770 788 816 1230 1238 text_lth 4 based fixed bin(21,0) level 2 dcl 9-292 set ref 956* text_ptr 2 based pointer level 2 dcl 9-292 set ref 954* timer_manager_$sleep 000302 constant entry external dcl 317 ref 492 598 627 643 655 690 705 720 736 803 812 824 852 874 884 895 905 916 926 935 943 968 1013 1120 to 2 000500 automatic pointer level 2 in structure "auto_reply_options" dcl 271 in procedure "xmail_reply_msg_" set ref 538* to 42 based pointer level 3 in structure "message" dcl 9-15 in procedure "xmail_reply_msg_" set ref 589 701* 960 to_list_ptr 000420 automatic pointer dcl 260 set ref 405* 866* 931* 939* 1020* 1149 1151* 1152* type 000422 automatic fixed bin(2,0) dcl 261 set ref 487* 622* 807* 848* unique_chars_ 000304 constant entry external dcl 318 ref 465 465 617 799 user_info_ 000306 constant entry external dcl 319 ref 612 user_name 000423 automatic char(22) packed unaligned dcl 262 set ref 612* 649 651 651 695 696 validate_addresses 4(01) 000472 automatic bit(1) level 3 packed packed unaligned dcl 270 set ref 608* version 2 000460 automatic char(8) level 2 in structure "auto_message_body_section_parameter" packed packed unaligned dcl 269 in procedure "xmail_reply_msg_" set ref 948* version 000435 automatic char(8) level 2 in structure "auto_deliver_options" packed packed unaligned dcl 266 in procedure "xmail_reply_msg_" set ref 545* version based char(8) level 3 in structure "recipients_info" packed packed unaligned dcl 5-49 in procedure "xmail_reply_msg_" set ref 535* version 000472 automatic char(8) level 2 in structure "auto_parse_text_options" packed packed unaligned dcl 270 in procedure "xmail_reply_msg_" set ref 605* version 000500 automatic char(8) level 2 in structure "auto_reply_options" packed packed unaligned dcl 271 in procedure "xmail_reply_msg_" set ref 537* version 000443 automatic char(8) level 2 in structure "auto_format_message_options" packed packed unaligned dcl 267 in procedure "xmail_reply_msg_" set ref 1245* version_number 000452 automatic fixed bin(17,0) level 2 dcl 268 set ref 1254* view_seg_ptr 000432 automatic pointer dcl 263 set ref 405* 457* 460* 487* 766 766 768 768 769 770* 788* 1332 1334* 1335* window_$clear_window 000362 constant entry external dcl 19-13 ref 401 427 432 779 782 window_position_info based structure level 1 unaligned dcl 18-25 xmail_data based structure level 1 dcl 15-54 xmail_data_ptr 000356 external static pointer initial dcl 15-52 ref 444 618 621 800 1313 xmail_display_msgs_ 000310 constant entry external dcl 320 ref 476 xmail_error_$code_first 000316 constant entry external dcl 323 ref 503 973 988 1042 1046 1050 1078 1111 1116 1207 xmail_error_$no_code 000312 constant entry external dcl 321 ref 452 462 466 470 490 518 520 571 597 625 642 654 689 704 719 735 752 771 777 795 810 851 855 873 883 894 904 915 925 934 942 967 994 1001 1012 1021 1026 1035 1232 1240 1284 1292 xmail_error_$no_print 000314 constant entry external dcl 322 ref 1171 xmail_file_msgs_$original_and_reply 000322 constant entry external dcl 325 ref 1055 1057 1064 1066 1088 1090 1097 1099 xmail_file_msgs_$single_msg 000320 constant entry external dcl 324 ref 1068 1070 1074 1076 1101 1103 1107 1109 xmail_get_str_ 000324 constant entry external dcl 326 ref 1008 xmail_get_str_$yes_no 000326 constant entry external dcl 327 ref 634 670 840 982 1062 1085 1095 1216 xmail_redisplay_$all 000330 constant entry external dcl 328 ref 436 xmail_redisplay_$menu 000332 constant entry external dcl 329 ref 1314 xmail_reply_msg_$ssu_exit 000334 constant entry external dcl 330 ref 999 999 xmail_sw_$redisplay 000336 constant entry external dcl 331 ref 435 762 xmail_sw_$update_position 000340 constant entry external dcl 332 ref 434 760 xmail_sw_$update_usage 000342 constant entry external dcl 333 ref 759 xmail_value_$get 000344 constant entry external dcl 334 ref 1041 1045 1049 xmail_value_$get_with_default 000346 constant entry external dcl 335 ref 502 972 1206 xmail_window_info_format based structure level 1 dcl 17-10 xmail_window_manager_$quit_handler 000350 constant entry external dcl 336 ref 430 xmail_window_manager_$reconnect 000352 constant entry external dcl 337 ref 832 xmail_window_manager_$set_menu_window_size 000354 constant entry external dcl 338 ref 433 773 775 794 xmail_windows 000360 external static structure level 1 dcl 17-5 yes_sw 000434 automatic bit(1) dcl 264 set ref 634* 635 670* 671 840* 841 982* 983 1062* 1063 1085* 1086 1095* 1096 1216* 1217 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A internal static char(1) initial packed unaligned dcl 16-16 ACCESS_CLASS_FIELDNAME internal static varying char(32) initial dcl 6-6 ACKNOWLEDGE_TO_FIELDNAME internal static varying char(32) initial dcl 6-6 ALL internal static char(3) initial packed unaligned dcl 16-16 ALWAYS_NOTIFY internal static fixed bin(17,0) initial dcl 5-42 ALWAYS_QUEUE internal static fixed bin(17,0) initial dcl 5-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 BRIEF_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 7-22 DATE internal static char(4) initial packed unaligned dcl 16-16 DATE_TIME_CREATED_FIELDNAME internal static varying char(32) initial dcl 6-6 DATE_TIME_DELIVERED_FIELDNAME internal static varying char(32) initial dcl 6-6 DATE_TIME_MAILED_FIELDNAME internal static varying char(32) initial dcl 6-6 DELIVERED_BY_FIELDNAME internal static varying char(32) initial dcl 6-6 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 Direct_input internal static fixed bin(17,0) initial dcl 2-15 Direct_output internal static fixed bin(17,0) initial dcl 2-15 Direct_update internal static fixed bin(17,0) initial dcl 2-15 EXPRESS_DELIVERY internal static fixed bin(17,0) initial dcl 5-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 16-16 FIRST internal static char(5) initial packed unaligned dcl 16-16 FROM_FIELDNAME internal static varying char(32) initial dcl 6-6 IMPLICIT_ROUTE_FIELDNAME internal static varying char(32) initial dcl 6-6 INTERACTIVE_DELIVERY internal static fixed bin(17,0) initial dcl 5-25 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 2-15 L internal static char(1) initial packed unaligned dcl 16-16 LAST internal static char(4) initial packed unaligned dcl 16-16 LIST internal static char(2) initial packed unaligned dcl 16-16 LONG_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 7-22 MAILBOX_VERSION_2 internal static char(8) initial packed unaligned dcl 8-28 MESSAGE_ADDRESS_LIST_USER_FIELD internal static fixed bin(17,0) initial dcl 9-174 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 9-285 MESSAGE_DATE_USER_FIELD internal static fixed bin(17,0) initial dcl 9-174 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 9-79 MESSAGE_ID_FIELDNAME internal static varying char(32) initial dcl 6-6 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 9-174 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 9-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 9-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 9-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 9-253 MESSAGE_TEXT_USER_FIELD internal static fixed bin(17,0) initial dcl 9-174 MESSAGE_TRACE_VERSION_2 internal static char(8) initial packed unaligned dcl 9-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 9-158 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 9-213 MESSAGE_VERSION_2 internal static char(8) initial packed unaligned dcl 9-49 MSG_STRUCT_VERSION_1 internal static fixed bin(17,0) initial dcl 14-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 16-16 NEVER_NOTIFY internal static fixed bin(17,0) initial dcl 5-42 NEVER_QUEUE internal static fixed bin(17,0) initial dcl 5-33 NEW internal static char(3) initial packed unaligned dcl 16-16 NEXT internal static char(4) initial packed unaligned dcl 16-16 NONE_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 7-22 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 8-37 P internal static char(1) initial packed unaligned dcl 16-16 PREV internal static char(4) initial packed unaligned dcl 16-16 QUESTION internal static char(1) initial packed unaligned dcl 16-16 QUEUE_FOREIGN_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 5-33 QUEUE_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 5-33 REDISTRIBUTED_COMMENT_FIELDNAME internal static varying char(32) initial dcl 6-6 REDISTRIBUTED_PREFIX internal static varying char(32) initial dcl 6-6 RELAY_FIELDNAME internal static varying char(32) initial dcl 6-6 REPLY_REFERENCES_FIELDNAME internal static varying char(32) initial dcl 6-6 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 16-16 SAVEBOX internal static fixed bin(17,0) initial dcl 8-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 16-16 SEEN internal static char(4) initial packed unaligned dcl 16-16 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SENDER_FIELDNAME internal static varying char(32) initial dcl 6-6 SET internal static char(3) initial packed unaligned dcl 16-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 SUBJECT_FIELDNAME internal static varying char(32) initial dcl 6-6 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 Sequential_input internal static fixed bin(17,0) initial dcl 2-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 2-15 Sequential_output internal static fixed bin(17,0) initial dcl 2-15 Sequential_update internal static fixed bin(17,0) initial dcl 2-15 Stream_input internal static fixed bin(17,0) initial dcl 2-15 Stream_input_output internal static fixed bin(17,0) initial dcl 2-15 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 13-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 13-16 TERM_FILE_TERM internal static bit(3) initial packed unaligned dcl 13-14 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 13-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 13-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial packed unaligned dcl 13-15 UNSEEN internal static char(6) initial packed unaligned dcl 16-16 USER_DEFAULT_MAILBOX internal static fixed bin(17,0) initial dcl 8-37 USER_LOGBOX internal static fixed bin(17,0) initial dcl 8-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 16-16 address_list_n_addresses automatic fixed bin(17,0) dcl 4-16 address_list_ptr automatic pointer dcl 4-14 break_table_info based structure level 1 dcl 18-76 break_table_info_version internal static fixed bin(17,0) initial dcl 18-80 break_table_info_version_1 internal static fixed bin(17,0) initial dcl 18-80 break_table_ptr automatic pointer dcl 18-75 deliver_options_ptr automatic pointer dcl 5-21 expanded_recipients_result_list based structure level 1 dcl 5-93 expanded_recipients_result_list_n_entries automatic fixed bin(17,0) dcl 5-66 expanded_recipients_result_list_ptr automatic pointer dcl 5-64 format_document_options_ptr automatic pointer dcl 3-62 format_document_version_1 internal static fixed bin(17,0) initial dcl 3-64 format_message_options_ptr automatic pointer dcl 7-17 get_editor_key_bindings_info based structure level 1 dcl 18-151 get_editor_key_bindings_info_ptr automatic pointer dcl 18-159 get_editor_key_bindings_info_version_1 internal static char(8) initial packed unaligned dcl 18-160 iox_modes internal static char(24) initial array dcl 2-6 line_editor_binding_count automatic fixed bin(17,0) dcl 18-121 line_editor_key_binding_info based structure level 1 dcl 18-129 line_editor_key_binding_info_ptr automatic pointer dcl 18-118 line_editor_key_binding_info_version_3 internal static char(8) initial packed unaligned dcl 18-148 line_editor_longest_sequence automatic fixed bin(17,0) dcl 18-123 mailbox_n_messages automatic fixed bin(17,0) dcl 8-32 message_address_list_user_field based structure level 1 dcl 9-190 message_bit_string_body_section based structure level 1 dcl 9-301 message_bit_string_body_section_bit_string based bit packed unaligned dcl 9-307 message_body_section_parameter_ptr automatic pointer dcl 9-320 message_date_user_field based structure level 1 dcl 9-195 message_envelope_parameter based structure level 1 dcl 9-74 message_envelope_parameter_ptr automatic pointer dcl 9-81 message_envelope_ptr automatic pointer dcl 9-69 message_integer_user_field based structure level 1 dcl 9-200 message_n_body_sections automatic fixed bin(17,0) dcl 9-55 message_n_redistributions automatic fixed bin(17,0) dcl 9-55 message_n_user_fields automatic fixed bin(17,0) dcl 9-55 message_preformatted_body_section_text based char packed unaligned dcl 9-298 message_redistribution_comment based char packed unaligned dcl 9-131 message_redistribution_parameter based structure level 1 dcl 9-139 message_redistribution_parameter_ptr automatic pointer dcl 9-146 message_redistribution_ptr automatic pointer dcl 9-134 message_redistributions_list based structure level 1 dcl 9-109 message_reference_parameter based structure level 1 dcl 9-248 message_reference_parameter_ptr automatic pointer dcl 9-255 message_reference_ptr automatic pointer dcl 9-243 message_reference_subject based char packed unaligned dcl 9-240 message_references_list based structure level 1 dcl 9-219 message_references_list_n_references automatic fixed bin(17,0) dcl 9-55 message_references_list_ptr automatic pointer dcl 9-229 message_subject based char packed unaligned dcl 9-51 message_text_field_ptr automatic pointer dcl 9-270 message_text_field_text based char packed unaligned dcl 9-268 message_text_user_field based structure level 1 dcl 9-183 message_text_user_field_text based char packed unaligned dcl 9-187 message_trace based structure level 1 dcl 9-87 message_trace_n_relays automatic fixed bin(17,0) dcl 9-55 message_trace_ptr automatic pointer dcl 9-105 message_user_field_parameter based structure level 1 dcl 9-208 message_user_field_parameter_ptr automatic pointer dcl 9-215 message_user_field_ptr automatic pointer dcl 9-169 message_user_fields_list based structure level 1 dcl 9-150 more_handler_info based structure level 1 dcl 18-83 more_handler_info_ptr automatic pointer dcl 18-92 more_handler_info_version internal static fixed bin(17,0) initial dcl 18-94 more_handler_info_version_3 internal static fixed bin(17,0) initial dcl 18-94 more_prompt_info based structure level 1 dcl 18-108 more_prompt_info_ptr automatic pointer dcl 18-112 more_prompt_info_version_1 internal static char(8) initial packed unaligned dcl 18-114 more_responses_info based structure level 1 dcl 18-59 more_responses_info_ptr automatic pointer dcl 18-69 more_responses_info_version_1 internal static fixed bin(17,0) initial dcl 18-67 more_responses_version internal static fixed bin(17,0) initial dcl 18-67 msg_struct based structure level 1 unaligned dcl 14-22 msg_structp automatic pointer dcl 14-20 n_messages automatic fixed bin(17,0) dcl 14-3 nonexist_msgs based structure level 1 unaligned dcl 14-15 nonexist_msgsp automatic pointer dcl 14-13 parse_text_error_list based structure level 1 dcl 10-24 parse_text_error_list_n_errors automatic fixed bin(17,0) dcl 10-35 parse_text_options_ptr automatic pointer dcl 10-19 recipients_result_list based structure level 1 dcl 5-72 recipients_result_list_n_addresses automatic fixed bin(17,0) dcl 5-66 recipients_result_list_ptr automatic pointer dcl 5-64 reply_options_ptr automatic pointer dcl 11-20 set_editor_key_bindings_info based structure level 1 dcl 18-162 set_editor_key_bindings_info_ptr automatic pointer dcl 18-171 set_editor_key_bindings_info_version_1 internal static char(8) initial packed unaligned dcl 18-172 short_iox_modes internal static char(4) initial array dcl 2-12 star_ALL_ENTRIES internal static fixed bin(2,0) initial dcl 12-111 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 12-114 star_DIRECTORY internal static fixed bin(2,0) initial unsigned dcl 12-121 star_LINK internal static fixed bin(2,0) initial unsigned dcl 12-119 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 12-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 12-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 12-120 star_branch_count automatic fixed bin(17,0) dcl 12-13 star_dir_list_branch based structure array level 1 dcl 12-59 star_link_count automatic fixed bin(17,0) dcl 12-17 star_link_pathname based char packed unaligned dcl 12-102 star_links based structure array level 1 dcl 12-76 star_linkx automatic fixed bin(17,0) dcl 12-18 star_list_branch based structure array level 1 dcl 12-41 star_list_branch_ptr automatic pointer dcl 12-16 star_list_names based char(32) array packed unaligned dcl 12-92 star_list_names_ptr automatic pointer dcl 12-20 star_select_sw automatic fixed bin(3,0) dcl 12-21 terminate_file_switches based structure level 1 packed packed unaligned dcl 13-4 token_characters_info based structure level 1 dcl 18-97 token_characters_info_ptr automatic pointer dcl 18-104 token_characters_info_version_1 internal static char(8) initial packed unaligned dcl 18-106 window_$bell 000000 constant entry external dcl 19-6 window_$change_column 000000 constant entry external dcl 19-63 window_$change_line 000000 constant entry external dcl 19-59 window_$clear_region 000000 constant entry external dcl 19-7 window_$clear_to_end_of_line 000000 constant entry external dcl 19-9 window_$clear_to_end_of_window 000000 constant entry external dcl 19-11 window_$create 000000 constant entry external dcl 19-72 window_$delete_chars 000000 constant entry external dcl 19-15 window_$destroy 000000 constant entry external dcl 19-74 window_$edit_line 000000 constant entry external dcl 19-76 window_$get_cursor_position 000000 constant entry external dcl 19-17 window_$get_echoed_chars 000000 constant entry external dcl 19-22 window_$get_one_unechoed 000000 constant entry external dcl 19-67 window_$get_one_unechoed_char 000000 constant entry external dcl 19-67 window_$get_unechoed_chars 000000 constant entry external dcl 19-25 window_$insert_text 000000 constant entry external dcl 19-28 window_$overwrite_text 000000 constant entry external dcl 19-29 window_$position_cursor 000000 constant entry external dcl 19-31 window_$position_cursor_rel 000000 constant entry external dcl 19-36 window_$scroll_region 000000 constant entry external dcl 19-42 window_$sync 000000 constant entry external dcl 19-44 window_$write_raw_text 000000 constant entry external dcl 19-48 window_$write_sync_read 000000 constant entry external dcl 19-53 window_edit_line_info based structure level 1 unaligned dcl 18-177 window_edit_line_info_ptr automatic pointer dcl 18-186 window_edit_line_info_version_1 internal static char(8) initial packed unaligned dcl 18-183 window_position_info_ptr automatic pointer dcl 18-37 window_position_info_version internal static fixed bin(17,0) initial dcl 18-35 window_position_info_version_1 internal static fixed bin(17,0) initial dcl 18-35 window_status_info based structure level 1 dcl 18-45 window_status_info_ptr automatic pointer dcl 18-43 window_status_version internal static fixed bin(17,0) initial dcl 18-52 window_status_version_1 internal static fixed bin(17,0) initial dcl 18-52 xmail_version internal static varying char(10) initial dcl 15-84 NAMES DECLARED BY EXPLICIT CONTEXT. CLEAN_UP 015255 constant entry internal dcl 1309 ref 438 443 844 1128 EXIT 013724 constant label dcl 1129 ref 421 439 845 GROW_MORE 015022 constant label dcl 1276 ref 1280 MESSAGE_CLEAN_UP 013736 constant entry internal dcl 1142 ref 1122 1324 RETRY 000000 constant label array(2:7) dcl 631 set ref 428 START 001260 constant label dcl 396 insert_original_message 015015 constant entry internal dcl 1268 ref 747 minus_suffix 014117 constant entry internal dcl 1177 ref 1057 1066 1070 1076 1090 1099 1103 1109 pre_end 013712 constant label dcl 1122 ref 493 592 599 628 644 656 691 706 721 737 804 813 826 841 853 875 885 896 906 917 927 936 944 969 1004 1010 1014 1285 1293 query_for_include_original 014347 constant entry internal dcl 1202 ref 677 ssu_exit 013726 constant entry external dcl 1133 xmail_reply_msg_ 001252 constant entry external dcl 68 ref 172 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 17234 17620 16101 17244 Length 20716 16101 364 1062 1132 136 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xmail_reply_msg_ 576 external procedure is an external procedure. on unit on line 424 88 on unit enables or reverts conditions. on unit on line 426 72 on unit on unit on line 443 64 on unit 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. query_for_include_original internal procedure shares stack frame of external procedure xmail_reply_msg_. insert_original_message internal procedure shares stack frame of external procedure xmail_reply_msg_. CLEAN_UP 88 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 ext_pname xmail_reply_msg_ 000062 ext_ptr xmail_reply_msg_ 000064 ext_dir xmail_reply_msg_ 000136 ext_file xmail_reply_msg_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME minus_suffix 000100 reverse_name minus_suffix 000100 reverse_suffix minus_suffix xmail_reply_msg_ 000114 ENTRY_NAME xmail_reply_msg_ 000120 acknowledge xmail_reply_msg_ 000122 bcc_list_ptr xmail_reply_msg_ 000124 bit_count xmail_reply_msg_ 000125 bit_count_view xmail_reply_msg_ 000126 buffer_size xmail_reply_msg_ 000127 buffer_used xmail_reply_msg_ 000130 cc_list_ptr xmail_reply_msg_ 000132 code xmail_reply_msg_ 000133 code1 xmail_reply_msg_ 000134 default_save_file xmail_reply_msg_ 000145 deferred_reply_exists xmail_reply_msg_ 000146 deferred_seg_name xmail_reply_msg_ 000160 defrepl_seg_ptr xmail_reply_msg_ 000162 delete_def_reply xmail_reply_msg_ 000163 delivery_results_need_cleanup xmail_reply_msg_ 000164 emacs_seg_path_name xmail_reply_msg_ 000236 file_original xmail_reply_msg_ 000240 for_type xmail_reply_msg_ 000250 format_reply_length xmail_reply_msg_ 000251 format_reply xmail_reply_msg_ 000262 format_seg_ptr xmail_reply_msg_ 000264 idx xmail_reply_msg_ 000265 idx2 xmail_reply_msg_ 000266 iocb_ptr xmail_reply_msg_ 000270 include_original xmail_reply_msg_ 000271 message_num xmail_reply_msg_ 000272 more_than_one xmail_reply_msg_ 000273 no_chars xmail_reply_msg_ 000274 no_chars_format xmail_reply_msg_ 000275 no_chars_orig xmail_reply_msg_ 000276 no_chars_view xmail_reply_msg_ 000277 no_used xmail_reply_msg_ 000300 opt xmail_reply_msg_ 000301 original_in_window xmail_reply_msg_ 000302 orig_seg_ptr xmail_reply_msg_ 000304 prompt_string xmail_reply_msg_ 000356 repl_message_ptr xmail_reply_msg_ 000360 reply_header xmail_reply_msg_ 000370 reply_msg_area_ptr xmail_reply_msg_ 000372 reply_msg_ptr xmail_reply_msg_ 000374 reply_seg_ptr xmail_reply_msg_ 000376 reply_to_list_ptr xmail_reply_msg_ 000400 resp xmail_reply_msg_ 000402 response xmail_reply_msg_ 000404 save_message xmail_reply_msg_ 000406 saved_menu_size xmail_reply_msg_ 000410 sci_ptr xmail_reply_msg_ 000412 start_of_bcc xmail_reply_msg_ 000413 start_of_cc xmail_reply_msg_ 000414 start_of_orig xmail_reply_msg_ 000415 start_of_text xmail_reply_msg_ 000416 status xmail_reply_msg_ 000420 to_list_ptr xmail_reply_msg_ 000422 type xmail_reply_msg_ 000423 user_name xmail_reply_msg_ 000432 view_seg_ptr xmail_reply_msg_ 000434 yes_sw xmail_reply_msg_ 000435 auto_deliver_options xmail_reply_msg_ 000443 auto_format_message_options xmail_reply_msg_ 000452 auto_format_document_options xmail_reply_msg_ 000460 auto_message_body_section_parameter xmail_reply_msg_ 000472 auto_parse_text_options xmail_reply_msg_ 000500 auto_reply_options xmail_reply_msg_ 000512 recipients_info_ptr xmail_reply_msg_ 000514 recipients_info_n_lists xmail_reply_msg_ 000516 mailbox_ptr xmail_reply_msg_ 000520 message_ptr xmail_reply_msg_ 000522 message_body_section_ptr xmail_reply_msg_ 000524 parse_text_error_list_ptr xmail_reply_msg_ 000526 star_entry_count xmail_reply_msg_ 000530 star_entry_ptr xmail_reply_msg_ 000532 star_names_ptr xmail_reply_msg_ 000534 curr_msgsp xmail_reply_msg_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_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 mpfx2 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_ format_document_$string get_pdir_ get_system_free_area_ hcs_$fs_get_path_name hcs_$make_ptr hcs_$make_seg hcs_$star_ hcs_$status_mins ioa_ ioa_$ioa_switch_nnl ioa_$nnl ioa_$rsnnl iox_$attach_name iox_$close iox_$destroy_iocb iox_$detach_iocb iox_$open mail_system_$add_body_section mail_system_$deliver_message mail_system_$free_address_list mail_system_$free_message mail_system_$read_message mail_system_$replace_bcc mail_system_$replace_cc mail_system_$replace_reply_to mail_system_$replace_to mlsys_utils_$create_reply_message mlsys_utils_$format_address_list_field mlsys_utils_$format_message mlsys_utils_$format_text_field mlsys_utils_$free_delivery_results mlsys_utils_$parse_address_list_text mlsys_utils_$print_address_list_field mlsys_utils_$print_delivery_results pl1_decat_char_ ssu_$destroy_invocation ssu_$standalone_invocation terminate_file_ timer_manager_$sleep unique_chars_ user_info_ window_$clear_window xmail_display_msgs_ xmail_error_$code_first xmail_error_$no_code xmail_error_$no_print xmail_file_msgs_$original_and_reply xmail_file_msgs_$single_msg xmail_get_str_ xmail_get_str_$yes_no xmail_redisplay_$all xmail_redisplay_$menu xmail_reply_msg_$ssu_exit xmail_sw_$redisplay xmail_sw_$update_position xmail_sw_$update_usage xmail_value_$get xmail_value_$get_with_default xmail_window_manager_$quit_handler xmail_window_manager_$reconnect xmail_window_manager_$set_menu_window_size THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_segment error_table_$namedup error_table_$segknown error_table_$smallarg iox_$user_output mlsys_et_$no_a_permission xmail_data_ptr xmail_windows LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 172 001240 68 001246 396 001260 401 001264 402 001275 403 001276 404 001300 405 001307 408 001322 409 001324 410 001325 411 001326 412 001327 416 001330 417 001334 418 001337 420 001346 421 001362 424 001363 426 001377 427 001413 428 001424 430 001432 432 001444 433 001456 434 001470 435 001501 436 001506 437 001513 438 001527 439 001534 441 001537 443 001540 444 001562 447 001567 448 001622 449 001624 450 001625 452 001657 457 001711 458 001745 459 001747 460 001750 462 002002 465 002034 466 002175 469 002233 470 002252 476 002307 478 002322 480 002326 481 002340 482 002352 487 002364 488 002401 490 002403 492 002434 493 002447 498 002450 502 002453 503 002503 505 002541 506 002551 510 002552 515 002620 517 002626 518 002657 519 002714 520 002746 521 003003 523 003043 527 003044 531 003047 533 003051 534 003062 535 003071 537 003075 538 003077 539 003101 540 003102 541 003103 542 003105 543 003107 545 003111 546 003114 547 003116 548 003120 549 003122 550 003124 551 003126 552 003130 554 003132 558 003134 562 003142 563 003147 564 003157 568 003162 570 003170 571 003203 574 003243 579 003250 583 003252 585 003254 586 003273 588 003277 589 003301 591 003305 592 003325 595 003326 597 003330 598 003361 599 003374 605 003375 606 003377 607 003401 608 003403 609 003405 610 003407 612 003411 615 003422 616 003423 617 003424 618 003461 619 003563 621 003567 622 003647 623 003665 625 003667 627 003720 628 003733 630 003734 631 003736 633 003740 634 003771 635 004006 636 004011 637 004014 638 004016 639 004024 640 004040 641 004143 642 004146 643 004177 644 004212 646 004213 648 004214 649 004217 650 004222 651 004223 653 004313 654 004316 655 004347 656 004362 658 004363 659 004366 660 004371 661 004415 662 004416 663 004443 664 004445 665 004446 668 004447 670 004451 671 004473 676 004500 677 004502 681 004503 682 004505 686 004506 687 004546 689 004550 690 004601 691 004614 693 004615 695 004621 696 004654 698 004657 699 004676 701 004700 702 004740 704 004742 705 004773 706 005006 708 005007 709 005026 715 005030 716 005033 717 005073 719 005075 720 005126 721 005141 723 005142 724 005161 731 005163 732 005166 733 005226 735 005230 736 005261 737 005274 739 005275 740 005314 742 005316 743 005345 747 005351 750 005354 751 005357 752 005404 758 005441 759 005501 760 005513 762 005527 766 005534 768 005661 769 005724 770 006043 771 006071 773 006126 775 006144 777 006157 779 006214 780 006227 782 006252 783 006264 786 006300 788 006302 792 006330 794 006365 795 006376 797 006433 799 006436 800 006473 801 006553 802 006563 803 006602 804 006621 807 006622 808 006637 810 006641 812 006672 813 006705 816 006706 820 006733 822 006736 823 006743 824 006763 825 007000 826 007001 829 007002 832 007004 833 007011 834 007031 836 007035 837 007051 838 007063 839 007106 840 007110 841 007131 842 007134 844 007150 845 007154 848 007155 849 007172 851 007174 852 007225 853 007240 855 007241 856 007276 860 007301 862 007303 863 007331 866 007332 870 007336 871 007436 873 007441 874 007472 875 007505 878 007506 880 007512 881 007525 883 007527 884 007560 885 007573 891 007574 892 007700 894 007703 895 007734 896 007747 899 007750 901 007754 902 007767 904 007771 905 010022 906 010035 912 010036 913 010136 915 010141 916 010172 917 010205 920 010206 922 010212 923 010225 925 010227 926 010260 927 010273 931 010274 932 010400 934 010403 935 010434 936 010447 939 010450 940 010463 942 010465 943 010516 944 010531 947 010532 948 010534 950 010536 952 010540 953 010542 954 010552 956 010557 959 010575 960 010612 961 010615 962 010620 964 010623 965 010644 967 010646 968 010677 969 010712 972 010713 973 010744 976 011002 978 011012 980 011017 982 011021 983 011043 984 011051 985 011053 986 011054 988 011064 991 011120 992 011137 993 011141 994 011143 996 011175 998 011200 999 011220 1000 011261 1001 011301 1002 011331 1004 011340 1006 011344 1007 011345 1008 011353 1009 011422 1010 011423 1012 011424 1013 011455 1014 011470 1019 011471 1020 011511 1021 011547 1023 011601 1025 011605 1026 011643 1027 011675 1028 011676 1032 011714 1034 011720 1035 011756 1036 012010 1037 012011 1041 012026 1042 012047 1045 012105 1046 012126 1049 012164 1050 012205 1053 012245 1054 012252 1055 012257 1057 012307 1058 012370 1059 012372 1060 012377 1062 012401 1063 012423 1064 012426 1066 012456 1067 012537 1068 012541 1070 012567 1071 012646 1072 012650 1074 012655 1076 012703 1077 012762 1078 012764 1080 013022 1081 013023 1083 013030 1085 013032 1086 013054 1087 013057 1088 013064 1090 013114 1091 013175 1092 013177 1093 013204 1095 013206 1096 013230 1097 013233 1099 013263 1100 013344 1101 013346 1103 013374 1104 013453 1105 013455 1107 013462 1109 013510 1110 013567 1111 013571 1114 013627 1116 013630 1120 013673 1122 013712 1126 013716 1128 013720 1129 013724 1133 013725 1138 013734 1142 013735 1144 013743 1146 013750 1147 013760 1149 013763 1151 013767 1152 014000 1154 014003 1156 014007 1157 014020 1162 014023 1164 014027 1165 014040 1167 014043 1169 014047 1170 014051 1171 014062 1174 014115 1177 014116 1186 014137 1187 014152 1193 014165 1194 014216 1196 014247 1198 014306 1202 014347 1206 014350 1207 014401 1210 014441 1212 014451 1214 014456 1216 014460 1217 014502 1218 014507 1219 014510 1221 014511 1227 014513 1228 014547 1229 014551 1230 014552 1232 014604 1235 014636 1236 014672 1237 014674 1238 014675 1240 014727 1245 014761 1246 014764 1247 014766 1248 014770 1249 014771 1250 014772 1254 014774 1255 014776 1256 015000 1257 015002 1258 015003 1259 015005 1260 015007 1261 015011 1262 015013 1266 015014 1268 015015 1274 015016 1275 015021 1276 015022 1278 015045 1279 015051 1280 015053 1282 015054 1284 015056 1285 015106 1288 015107 1289 015111 1290 015151 1292 015153 1293 015204 1298 015205 1299 015230 1303 015233 1304 015251 1306 015253 1309 015254 1311 015262 1313 015275 1314 015302 1316 015306 1319 015337 1321 015344 1322 015371 1324 015374 1326 015401 1327 015406 1328 015420 1329 015433 1332 015446 1334 015453 1335 015501 1338 015504 1340 015510 1341 015536 1343 015541 1345 015545 1346 015573 1349 015576 1350 015631 1351 015640 1353 015645 1354 015653 1356 015656 ----------------------------------------------------------- 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