COMPILATION LISTING OF SEGMENT sdm_msg_requests_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 05/22/86 1044.3 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 /* format: off */ 11 12 /* send_mail requests which manipulate the message text and, occasionally, the header */ 13 14 /* Created: January 1979 by G. Palter */ 15 /* Modified: 27 January 1979 by G. Palter to implement -header option of qedx and apply requests, add -brief_header to 16* print, change list to print_header, and make header printing show the entire header */ 17 /* Modified: 1 February 1979 by G. Palter to make -header option of qedx and apply flush generated fields from text given 18* to user */ 19 /* Modified: 2 February 1979 by G. Palter to check line length in fill request */ 20 /* Modified: 25 December 1979 by W. Olin Sibert to update for new emf_info structure */ 21 /* Modified: 25 December 1979 by W. Olin Sibert to support auto_fill mode */ 22 /* Modified: 18 September 1982 by G. Palter to implement new definition of filling in send_mail (fill => auto fill) and to 23* add -fill/-no_fill control arguments to qedx and apply to override the default */ 24 /* Modified: January 1983 by G. Palter to use qedx_ (yea!) */ 25 /* Modified: September 1983 by G. Palter to obey the auto_write flag (sigh) and as part of the conversion to the new mail 26* system interface */ 27 /* Modified: 8 March 1984 by G. Palter to fix error #0424 -- if the "-header" option is specified for the qedx or apply 28* requests and the message text, after editing, does not have a header, the send_mail invocation will be left without 29* a message to process. Use of any subsequent request which must actually access the message (eg: print) will result 30* in a null pointer fault */ 31 32 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen */ 33 34 35 sdm_msg_requests_: 36 procedure (P_sci_ptr, P_sdm_invocation_ptr); 37 38 return; /* not an entry */ 39 40 41 /* Parameters */ 42 43 dcl P_sci_ptr pointer parameter; 44 dcl P_sdm_invocation_ptr pointer parameter; 45 46 47 /* Remaining declarations */ 48 49 dcl argument character (argument_lth) unaligned based (argument_ptr); 50 dcl argument_ptr pointer; 51 dcl argument_lth fixed binary (21); 52 dcl (n_arguments, argument_idx) fixed binary; 53 54 dcl message_buffer character (4 * sys_info$max_seg_size) unaligned based (message_buffer_ptr); 55 dcl message_text character (message_text_lth) unaligned based (message_buffer_ptr); 56 dcl message_buffer_ptr pointer; 57 dcl message_text_lth fixed binary (21); 58 59 dcl request_line character (request_line_lth) unaligned based (request_line_ptr); 60 dcl request_line_ptr pointer; 61 dcl request_line_lth fixed binary (21); 62 63 dcl 1 local_qi aligned, /* data structure for invoking qedx_ */ 64 2 header like qedx_info.header, 65 2 buffers (2) like qedx_info.buffers; /* ... buffers 0 and (maybe) exec */ 66 67 dcl fatal_error bit (1) aligned; /* set ON by sdm_text_mgr_$fill_text when necessary */ 68 dcl code fixed binary (35); 69 70 dcl removed_reply_references bit (1) aligned; /* ON => In-Reply-To field was deleted before editing */ 71 72 dcl include_header bit (1) aligned; /* ON => -header option given to request */ 73 dcl fill bit (1) aligned; /* ON => fill the message after editing */ 74 dcl auto_write bit (1) aligned; /* ON => enable auto-writing in qedx (sigh) */ 75 76 dcl formatting_mode fixed binary; /* how much detail to be displayed in the message header */ 77 78 dcl first_command_argument_idx fixed binary; /* where command line starts in the apply request */ 79 80 dcl fill_width fixed binary; 81 82 dcl sys_info$max_seg_size fixed binary (19) external; 83 dcl iox_$user_output pointer external; 84 85 /* format: off */ 86 dcl (error_table_$bad_conversion, error_table_$badopt, error_table_$fatal_error, error_table_$noarg, 87 error_table_$smallarg, mlsys_et_$message_too_large, mlsys_et_$text_parse_failed) 88 fixed binary (35) external; 89 /* format: on */ 90 91 dcl cv_dec_check_ entry (character (*), fixed binary (35)) returns (fixed binary (35)); 92 dcl ioa_ entry () options (variable); 93 dcl mail_system_$add_reply_reference entry (pointer, pointer, fixed binary, fixed binary (35)); 94 dcl mail_system_$delete_reply_reference entry (pointer, fixed binary, fixed binary (35)); 95 dcl mail_system_$create_message entry (character (8), pointer, fixed binary (35)); 96 dcl mail_system_$free_message entry (pointer, fixed binary (35)); 97 dcl mail_system_$replace_body entry (pointer, pointer, fixed binary (35)); 98 dcl mlsys_utils_$format_message 99 entry (pointer, pointer, pointer, fixed binary (21), fixed binary (21), fixed binary (35)); 100 dcl mlsys_utils_$parse_message_text entry (character (*), pointer, character (8), pointer, pointer, fixed binary (35)); 101 dcl mlsys_utils_$print_address_field entry (character (*) varying, pointer, fixed binary, pointer, fixed binary (35)); 102 dcl mlsys_utils_$print_address_list_field 103 entry (character (*) varying, pointer, fixed binary, pointer, fixed binary (35)); 104 dcl mlsys_utils_$print_date_time_field 105 entry (character (*) varying, fixed binary (71), bit (1) aligned, fixed binary, pointer, fixed binary (35)); 106 dcl mlsys_utils_$print_message_body entry (pointer, fixed binary, pointer, fixed binary (35)); 107 dcl mlsys_utils_$print_message_header entry (pointer, fixed binary, fixed binary, pointer, fixed binary (35)); 108 dcl mlsys_utils_$print_message_id_field 109 entry (character (*) varying, bit (72) aligned, fixed binary, pointer, fixed binary (35)); 110 dcl mlsys_utils_$print_text_field 111 entry (character (*) varying, character (*), bit (1) aligned, fixed binary, pointer, fixed binary (35)); 112 dcl qedx_ entry (pointer, fixed binary (35)); 113 dcl sdm_text_mgr_$fill_text entry (pointer, fixed binary, bit (1) aligned); 114 dcl ssu_$abort_line entry () options (variable); 115 dcl ssu_$arg_count entry (pointer, fixed binary); 116 dcl ssu_$arg_ptr entry (pointer, fixed binary, pointer, fixed binary (21)); 117 dcl ssu_$apply_request_util entry (pointer, fixed binary, pointer, fixed binary (21), fixed binary (21)); 118 dcl ssu_$get_subsystem_and_request_name entry (pointer) returns (character (72) varying); 119 dcl ssu_$get_temp_segment entry (pointer, character (*), pointer); 120 dcl ssu_$print_message entry () options (variable); 121 dcl ssu_$release_temp_segment entry (pointer, pointer); 122 123 dcl cleanup condition; 124 125 dcl (addr, clock, index, length, null, string, unspec) builtin; 126 127 /* The "print" request: prints the message text and part or all of the header */ 128 129 print_request: 130 entry (P_sci_ptr, P_sdm_invocation_ptr); 131 132 sdm_invocation_ptr = P_sdm_invocation_ptr; 133 message_ptr = sdm_invocation.message_ptr; 134 135 call ssu_$arg_count (P_sci_ptr, n_arguments); 136 137 formatting_mode = BRIEF_FORMATTING_MODE; /* default is -brief_header */ 138 139 do argument_idx = 1 to n_arguments; 140 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 141 if index (argument, "-") = 1 then /* a control argument */ 142 if (argument = "-long_header") | (argument = "-lghe") then formatting_mode = LONG_FORMATTING_MODE; 143 else if (argument = "-header") | (argument = "-he") then formatting_mode = DEFAULT_FORMATTING_MODE; 144 else if (argument = "-brief_header") | (argument = "-bfhe") then 145 formatting_mode = BRIEF_FORMATTING_MODE; 146 else if (argument = "-no_header") | (argument = "-nhe") then formatting_mode = NONE_FORMATTING_MODE; 147 else call ssu_$abort_line (P_sci_ptr, error_table_$badopt, """^a""", argument); 148 else call ssu_$abort_line (P_sci_ptr, 0, "Usage: print {-control_args}"); 149 end; 150 151 if formatting_mode ^= NONE_FORMATTING_MODE then do; 152 call print_message_header (); /* ... print the header/summary */ 153 call ioa_ (""); /* ... and a blank line to separate it from the body */ 154 end; 155 else call ioa_ ("^/(^d line^[s^] in body):", message.body.total_lines, (message.body.total_lines ^= -1)); 156 157 call mlsys_utils_$print_message_body (message_ptr, 0, iox_$user_output, code); 158 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Attempting to print the message body."); 159 160 return; 161 162 /* format: off */ 163 /* The "print_header" request: either prints the header as it will appear when transmitted or prints a short summary of 164* the message in the following form: 165* 166* (N lines in text): 167* {Subject: STR} 168* To: addresses 169* {cc: addresses} 170* {bcc: addresses} 171* 172* where {}'s denote optional items. If no primary recipients exist, "" is printed in the To field */ 173 /* format: on */ 174 175 print_header_request: 176 entry (P_sci_ptr, P_sdm_invocation_ptr); 177 178 sdm_invocation_ptr = P_sdm_invocation_ptr; 179 message_ptr = sdm_invocation.message_ptr; 180 181 call ssu_$arg_count (P_sci_ptr, n_arguments); 182 183 formatting_mode = DEFAULT_FORMATTING_MODE; /* default is the standard header */ 184 185 do argument_idx = 1 to n_arguments; 186 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 187 if index (argument, "-") = 1 then /* a control argument */ 188 if (argument = "-long") | (argument = "-lg") then formatting_mode = LONG_FORMATTING_MODE; 189 else if (argument = "-default") | (argument = "-dft") then formatting_mode = DEFAULT_FORMATTING_MODE; 190 else if (argument = "-brief") | (argument = "-bf") then formatting_mode = BRIEF_FORMATTING_MODE; 191 else call ssu_$abort_line (P_sci_ptr, error_table_$badopt, """^a""", argument); 192 else call ssu_$abort_line (P_sci_ptr, 0, "Usage: print_header {-control_args}"); 193 end; 194 195 call print_message_header (); 196 197 return; 198 199 /* The "qedx" request: invokes the qedx editor on the message text (or the header and text if requested) */ 200 201 qedx_request: 202 entry (P_sci_ptr, P_sdm_invocation_ptr); 203 204 sdm_invocation_ptr = P_sdm_invocation_ptr; 205 message_ptr = sdm_invocation.message_ptr; 206 207 call ssu_$arg_count (P_sci_ptr, n_arguments); 208 209 fill_width = sdm_invocation.fill_width; /* set default width */ 210 211 fill = sdm_invocation.fill; /* use global fill specification */ 212 auto_write = sdm_invocation.auto_write; /* use global auto-write specification (sigh) */ 213 include_header = "0"b; /* defaults to not editing the header */ 214 request_line_lth = 0; /* no -request */ 215 216 do argument_idx = 1 to n_arguments; 217 218 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 219 220 if index (argument, "-") = 1 then /* a control agument */ 221 /*** ... these first two control arguments are bought to you by the MCR boards (sigh) */ 222 if argument = "-auto_write" then auto_write = "1"b; 223 else if argument = "-no_auto_write" then auto_write = "0"b; 224 225 else if (argument = "-fill") | (argument = "-fi") then fill = "1"b; 226 else if (argument = "-no_fill") | (argument = "-nfi") then fill = "0"b; 227 228 else if (argument = "-line_length") | (argument = "-ll") then 229 if argument_idx = n_arguments then 230 call ssu_$abort_line (P_sci_ptr, error_table_$noarg, "Number after ""-line_length""."); 231 else do; /* user supplied fill width */ 232 argument_idx = argument_idx + 1; 233 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 234 fill_width = cv_dec_check_ (argument, code); 235 if code ^= 0 then 236 call ssu_$abort_line (P_sci_ptr, error_table_$bad_conversion, "", "-line_length ^a", 237 argument); 238 if fill_width < 31 then 239 call ssu_$abort_line (P_sci_ptr, 0, "Line length must be greater than 30."); 240 end; 241 242 else if (argument = "-header") | (argument = "-he") then include_header = "1"b; 243 else if (argument = "-no_header") | (argument = "-nhe") then include_header = "0"b; 244 245 else if (argument = "-request") | (argument = "-rq") then do; 246 if argument_idx = n_arguments then 247 call ssu_$abort_line (P_sci_ptr, error_table_$noarg, "String after ""-request""."); 248 argument_idx = argument_idx + 1; 249 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 250 request_line_ptr = addr (argument); 251 request_line_lth = length (argument); 252 end; 253 254 else call ssu_$abort_line (P_sci_ptr, error_table_$badopt, """^a""", argument); 255 256 else call ssu_$abort_line (P_sci_ptr, 0, "Usage: qedx {-control_args}"); 257 end; 258 259 message_buffer_ptr = null (); /* for cleanup handler */ 260 removed_reply_references = "0"b; 261 262 on condition (cleanup) 263 begin; 264 if removed_reply_references then call restore_reply_references (); 265 if message_buffer_ptr ^= null () then call ssu_$release_temp_segment (P_sci_ptr, message_buffer_ptr); 266 end; 267 268 call prepare_message (); /* prepare the message for editing */ 269 270 local_qi.header.version = QEDX_INFO_VERSION_1; 271 local_qi.editor_name = ssu_$get_subsystem_and_request_name (sci_ptr); 272 string (local_qi.header.flags) = ""b; 273 local_qi.header.query_if_modified = "1"b; /* can't exit without writing */ 274 275 local_qi.n_buffers = 1; /* start with just the message buffer */ 276 277 local_qi.buffers (1).buffer_name = "0"; /* it's buffer 0 (the default one) */ 278 local_qi.buffers (1).buffer_pathname = ""; 279 local_qi.buffers (1).region_ptr = message_buffer_ptr; 280 local_qi.buffers (1).region_max_lth = length (message_buffer); 281 local_qi.buffers (1).region_initial_lth = message_text_lth; 282 string (local_qi.buffers (1).flags) = ""b; 283 local_qi.buffers (1).read_write_region, /* ... straight into/out of our temporary segment */ 284 local_qi.buffers (1).locked_pathname, local_qi.buffers (1).default_read_ok, 285 local_qi.buffers (1).default_write_ok = "1"b; 286 local_qi.buffers (1).auto_write = auto_write; /* ... sigh */ 287 288 if request_line_lth > 0 then do; /* need an "exec" buffer for the requests */ 289 local_qi.n_buffers = 2; /* ... obviously */ 290 local_qi.buffers (2).buffer_name = "exec"; 291 local_qi.buffers (2).buffer_pathname = ""; /* ... doesn't come from anywhere */ 292 local_qi.buffers (2).region_ptr = request_line_ptr; 293 local_qi.buffers (2).region_max_lth, local_qi.buffers (2).region_initial_lth = request_line_lth; 294 string (local_qi.buffers (2).flags) = ""b; 295 local_qi.buffers (2).read_write_region, local_qi.buffers (2).execute_buffer, 296 local_qi.buffers (2).locked_pathname = "1"b; 297 end; 298 299 call qedx_ (addr (local_qi), code); 300 if code = error_table_$fatal_error then /* couldn't initialize: message already printed... */ 301 call ssu_$abort_line (P_sci_ptr, 0); 302 303 message_text_lth = local_qi.buffers (1).region_final_lth; 304 /* get length of the buffer after editing */ 305 306 call update_message (); /* get the message header/body back from the user's editing */ 307 308 if fill then do; /* refill it */ 309 call sdm_text_mgr_$fill_text (sdm_invocation_ptr, fill_width, fatal_error); 310 if fatal_error then call ssu_$abort_line (P_sci_ptr, 0); 311 end; /* ... fill_text will print appropriate messages */ 312 313 return; 314 315 /* The "apply" request: applies an arbitrary Multics command line to a temporary segment containing the message text (or 316* text and header if requested) and updates the message with the contents of the segment upon completion of the command 317* line. This request can be used to invoke editors other than qedx (eg: Emacs) on the message */ 318 319 apply_request: 320 entry (P_sci_ptr, P_sdm_invocation_ptr); 321 322 sdm_invocation_ptr = P_sdm_invocation_ptr; 323 message_ptr = sdm_invocation.message_ptr; 324 325 call ssu_$arg_count (P_sci_ptr, n_arguments); 326 327 if n_arguments = 0 then call ssu_$abort_line (P_sci_ptr, 0, "Usage: apply {-control_args} command-line"); 328 329 fill_width = sdm_invocation.fill_width; /* set default width */ 330 331 fill = sdm_invocation.fill; /* defaults to global fill specification */ 332 include_header = "0"b; 333 first_command_argument_idx = 0; /* haven't found the start of the command line yet */ 334 335 do argument_idx = 1 to n_arguments /* look for control arguments ... */ 336 while (first_command_argument_idx = 0); /* ... until the start of the command line */ 337 338 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 339 340 if index (argument, "-") = 1 then /* a control argument */ 341 if (argument = "-fill") | (argument = "-fi") then fill = "1"b; 342 else if (argument = "-no_fill") | (argument = "-nfi") then fill = "0"b; 343 344 else if (argument = "-line_length") | (argument = "-ll") then 345 if argument_idx = n_arguments then 346 call ssu_$abort_line (P_sci_ptr, error_table_$noarg, "Number after ""-line_length""."); 347 else do; /* user supplied fill width */ 348 argument_idx = argument_idx + 1; 349 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 350 fill_width = cv_dec_check_ (argument, code); 351 if code ^= 0 then 352 call ssu_$abort_line (P_sci_ptr, error_table_$bad_conversion, "", "-line_length ^a", 353 argument); 354 if fill_width < 31 then 355 call ssu_$abort_line (P_sci_ptr, 0, "Line length must be greater than 30."); 356 end; 357 358 else if (argument = "-header") | (argument = "-he") then include_header = "1"b; 359 else if (argument = "-no_header") | (argument = "-nhe") then include_header = "0"b; 360 361 else call ssu_$abort_line (P_sci_ptr, error_table_$badopt, """^a""", argument); 362 363 else first_command_argument_idx = argument_idx; 364 end; /* command line starts here */ 365 366 if first_command_argument_idx = 0 then 367 call ssu_$abort_line (P_sci_ptr, error_table_$noarg, "Multics command line."); 368 369 message_buffer_ptr = null (); /* for cleanup handler */ 370 removed_reply_references = "0"b; 371 372 on condition (cleanup) 373 begin; 374 if removed_reply_references then call restore_reply_references (); 375 if message_buffer_ptr ^= null () then call ssu_$release_temp_segment (P_sci_ptr, message_buffer_ptr); 376 end; 377 378 call prepare_message (); /* prepare the message for editing */ 379 380 call ssu_$apply_request_util (P_sci_ptr, first_command_argument_idx, message_buffer_ptr, message_text_lth, 381 message_text_lth); /* call ssu_ to construct and execute the command line */ 382 383 call update_message (); /* get the message header/body back from the user's editing */ 384 385 if fill then do; /* refill it */ 386 call sdm_text_mgr_$fill_text (sdm_invocation_ptr, fill_width, fatal_error); 387 if fatal_error then call ssu_$abort_line (P_sci_ptr, 0); 388 end; 389 390 return; 391 392 /* The "fill" request: reformats the message body text using format_document_ with fill-on and align-left modes */ 393 394 fill_request: 395 entry (P_sci_ptr, P_sdm_invocation_ptr); 396 397 sdm_invocation_ptr = P_sdm_invocation_ptr; 398 message_ptr = sdm_invocation.message_ptr; 399 400 call ssu_$arg_count (P_sci_ptr, n_arguments); 401 402 fill_width = sdm_invocation.fill_width; /* set default width */ 403 404 do argument_idx = 1 to n_arguments; 405 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 406 if index (argument, "-") = 1 then /* a control argument */ 407 if (argument = "-line_length") | (argument = "-ll") then 408 if argument_idx = n_arguments then 409 call ssu_$abort_line (P_sci_ptr, error_table_$noarg, "Number after ""-line_length""."); 410 else do; /* user supplied fill width */ 411 argument_idx = argument_idx + 1; 412 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 413 fill_width = cv_dec_check_ (argument, code); 414 if code ^= 0 then 415 call ssu_$abort_line (P_sci_ptr, error_table_$bad_conversion, "", "-line_length ^a", 416 argument); 417 if fill_width < 31 then 418 call ssu_$abort_line (P_sci_ptr, 0, "Line length must be greater than 30."); 419 end; 420 else call ssu_$abort_line (P_sci_ptr, error_table_$badopt, """^a""", argument); 421 else call ssu_$abort_line (P_sci_ptr, 0, "Usage: fill {-control_args}"); 422 end; 423 424 call sdm_text_mgr_$fill_text (sdm_invocation_ptr, fill_width, fatal_error); 425 if fatal_error then call ssu_$abort_line (P_sci_ptr, 0); 426 427 return; 428 429 /* Prints the message header or the message summary as described above in the description of the print_header request */ 430 431 print_message_header: 432 procedure (); 433 434 call ioa_ ("^/(^d line^[s^] in body):", message.body.total_lines, (message.body.total_lines ^= 1)); 435 436 437 if formatting_mode = BRIEF_FORMATTING_MODE then do; 438 439 /* Print the message summary */ 440 441 if message.subject.text_lth > 0 then do; /* ... there is a subject */ 442 call mlsys_utils_$print_text_field (SUBJECT_FIELDNAME, message_subject, "0"b /* single-line field */, 443 0, iox_$user_output, code); 444 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Attempting to print the message subject."); 445 end; 446 447 if is_empty_list (message.to) then /* ... no primary recipients */ 448 call ioa_ ("^a: ", TO_FIELDNAME); 449 else do; 450 call mlsys_utils_$print_address_list_field (TO_FIELDNAME, message.to, 0, iox_$user_output, code); 451 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Attempting to print the To field."); 452 end; 453 454 if ^is_empty_list (message.cc) then do; /* ... there are secondary recipients */ 455 call mlsys_utils_$print_address_list_field (CC_FIELDNAME, message.cc, 0, iox_$user_output, code); 456 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Attempting to print the cc field."); 457 end; 458 459 if ^is_empty_list (message.bcc) then do; /* ... there are blind recipients */ 460 call mlsys_utils_$print_address_list_field (BCC_FIELDNAME, message.bcc, 0, iox_$user_output, code); 461 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Attempting to print the bcc field."); 462 end; 463 end; 464 465 466 else do; 467 468 /* Print the full message header: It is necessary to supply the printed representation for the Acknowledge-To, Date, 469* From, and Message-ID fields as they are not present in a new message; actually the From field may be present but it 470* may also be empty. This procedure has knowledge of the internal format of message identifiers used by the mail system 471* and may fail if said format changes; in addition, the Message-ID field will be printed out of order if there are 472* user-defined fields in the message */ 473 474 if sdm_invocation.acknowledge then do; /* acknowledgements always come to us (for now) */ 475 call mlsys_utils_$print_address_field (ACKNOWLEDGE_TO_FIELDNAME, 476 sdm_data_$default_from_field -> address_list.addresses (1), 0, iox_$user_output, code); 477 if code ^= 0 then 478 call ssu_$abort_line (P_sci_ptr, code, "Attempting to print the Acknowlege-To field."); 479 end; 480 481 call mlsys_utils_$print_date_time_field (DATE_TIME_CREATED_FIELDNAME, 482 sdm_invocation.date_time_body_modified, "1"b /* include day-of-week */, 0, iox_$user_output, code); 483 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Attempting to print the Date field."); 484 485 if is_empty_list (message.from) then do; /* no From field present: display the default */ 486 call mlsys_utils_$print_address_list_field (FROM_FIELDNAME, sdm_data_$default_from_field, 0, 487 iox_$user_output, code); 488 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Attempting to print the From field."); 489 end; 490 491 call mlsys_utils_$print_message_header (message_ptr, formatting_mode, 0, iox_$user_output, code); 492 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Attempting to print the message header."); 493 494 if formatting_mode = LONG_FORMATTING_MODE then do; 495 call mlsys_utils_$print_message_id_field (MESSAGE_ID_FIELDNAME, 496 unspec (sdm_invocation.date_time_body_modified), 0, iox_$user_output, code); 497 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Attempting to print the Message-ID field."); 498 end; 499 end; 500 501 return; 502 503 end print_message_header; 504 505 /* Prepares the text to be edited by qedx or apply: The text always includes the message body and, optionally, the 506* printed representation of the message header. As the message references in the In-Reply-To field can not be converted 507* back from their printed representations, they are deleted from the message header and are added back later (see 508* update_message) */ 509 510 prepare_message: 511 procedure (); 512 513 dcl 1 local_fmo aligned like format_message_options; 514 dcl idx fixed binary; 515 516 local_fmo.version = FORMAT_MESSAGE_OPTIONS_VERSION_1; 517 local_fmo.line_length = -1; /* ... never need to worry */ 518 local_fmo.include_body = "1"b; /* ... always include the body */ 519 520 call ssu_$get_temp_segment (P_sci_ptr, "message-text", message_buffer_ptr); 521 message_text_lth = 0; /* nothing in the buffer yet */ 522 523 if include_header then do; /* include the message header (but not In-Reply-To) */ 524 if message.n_reply_references > 0 then do; /* ... get rid of the In-Reply-To field */ 525 do idx = message.n_reply_references to 1 by -1; 526 call mail_system_$delete_reply_reference (message_ptr, idx, code); 527 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Deleting the In-Reply-To field."); 528 end; 529 removed_reply_references = "1"b; /* ... will need to put it back later */ 530 end; 531 local_fmo.envelope_formatting_mode, local_fmo.header_formatting_mode, 532 local_fmo.redistributions_list_formatting_mode = DEFAULT_FORMATTING_MODE; 533 end; 534 535 else /* include only the message body */ 536 local_fmo.envelope_formatting_mode, local_fmo.header_formatting_mode, 537 local_fmo.redistributions_list_formatting_mode = NONE_FORMATTING_MODE; 538 539 call mlsys_utils_$format_message (message_ptr, addr (local_fmo), message_buffer_ptr, length (message_buffer), 540 message_text_lth, code); 541 if code = error_table_$smallarg then code = mlsys_et_$message_too_large; 542 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Preparing the message for editing."); 543 544 return; 545 546 end prepare_message; 547 548 /* Updates the message from the text returned by qedx or apply: If the user had asked to edit the header, the new header 549* in the message (if any) will replace the old header. If the In-Reply-To field was deleted by prepare_message, above, 550* it will be restored here */ 551 552 update_message: 553 procedure (); 554 555 dcl 1 local_pto aligned like parse_text_options; 556 557 dcl abort_the_line bit (1) aligned; 558 dcl code fixed binary (35); 559 dcl idx fixed binary; 560 561 abort_the_line = "0"b; /* until proven otherwise */ 562 563 564 if include_header then do; 565 566 /* Supplied text contains a header which must be parsed */ 567 568 call mail_system_$free_message (sdm_invocation.message_ptr, (0)); 569 /* by definition: the old message is invalidated */ 570 571 local_pto.version = PARSE_TEXT_OPTIONS_VERSION_1; 572 local_pto.area_ptr = sdm_invocation.area_ptr; 573 local_pto.list_errors, local_pto.validate_addresses, local_pto.include_invalid_addresses = "1"b; 574 local_pto.mbz = ""b; 575 576 message_ptr = null (); 577 call mlsys_utils_$parse_message_text (message_text, addr (local_pto), MESSAGE_VERSION_2, message_ptr, 578 parse_text_error_list_ptr, code); 579 580 if message_ptr = null () then do; /* parse failed badly: treat entire text as message body */ 581 call mail_system_$create_message (MESSAGE_VERSION_2, message_ptr, (0)); 582 call use_text_as_message_body (); 583 end; 584 585 sdm_invocation.message_ptr = message_ptr; /* this is now the message ... */ 586 587 if removed_reply_references then /* put back the In-Reply-To field ... */ 588 call restore_reply_references (); 589 590 if code ^= 0 then do; /* something went wrong ... */ 591 abort_the_line = "1"b; 592 if code = mlsys_et_$text_parse_failed then do; 593 do idx = 1 to parse_text_error_list.n_errors; 594 begin; 595 dcl erroneous_text character (parse_text_error_list.errors (idx).text_lth) unaligned defined (message_text) 596 position (parse_text_error_list.errors (idx).text_start); 597 call ssu_$print_message (P_sci_ptr, parse_text_error_list.errors (idx).code, 598 "^a^/^-^a", parse_text_error_list.errors (idx).additional_info, erroneous_text); 599 end; 600 end; 601 end; 602 else call ssu_$print_message (P_sci_ptr, code); 603 end; 604 end; 605 606 607 else /* supplied text is the new message body */ 608 call use_text_as_message_body (); 609 610 611 /* Cleanup */ 612 613 sdm_invocation.date_time_body_modified = clock ();/* for psuedo Date/Message-ID fields */ 614 615 if sdm_invocation.message_state = PROCESSED_MESSAGE then sdm_invocation.message_state = MODIFIED_MESSAGE; 616 617 call ssu_$release_temp_segment (P_sci_ptr, message_buffer_ptr); 618 619 if abort_the_line then call ssu_$abort_line (P_sci_ptr, 0); 620 621 return; 622 623 624 625 /* Internal to update_message: inserts the supplied text as the message body */ 626 627 use_text_as_message_body: 628 procedure (); 629 630 dcl 1 local_mbsp aligned like message_body_section_parameter; 631 dcl code fixed binary (35); 632 633 local_mbsp.version = MESSAGE_BODY_SECTION_PARAMETER_VERSION_2; 634 local_mbsp.section.section_type = MESSAGE_PREFORMATTED_BODY_SECTION; 635 message_body_section_ptr = addr (local_mbsp.section); 636 message_preformatted_body_section.text_ptr = message_buffer_ptr; 637 message_preformatted_body_section.text_lth = message_text_lth; 638 639 call mail_system_$replace_body (message_ptr, addr (local_mbsp), code); 640 if code ^= 0 then 641 call ssu_$abort_line (sdm_invocation.sci_ptr, code, 642 "Attempting to place the edited message text into the message."); 643 644 return; 645 646 end use_text_as_message_body; 647 648 end update_message; 649 650 /* Actually restores the references to the original messages to the In-Reply-To field */ 651 652 restore_reply_references: 653 procedure (); 654 655 dcl idx fixed binary; 656 657 removed_reply_references = "0"b; /* only try this once */ 658 659 original_messages_ptr = sdm_invocation.original_messages_ptr; 660 661 if original_messages_ptr = null () then return; /* there are no reply references(?) */ 662 663 do idx = 1 to original_messages.n_original_messages; 664 call mail_system_$add_reply_reference (sdm_invocation.message_ptr, 665 original_messages.messages (idx).message_ptr, (-1), code); 666 if code ^= 0 then 667 call ssu_$print_message (P_sci_ptr, code, 668 "Unable to add the reference to message #^d to the In-Reply-To field.", 669 original_messages.messages (idx).message_idx); 670 end; 671 672 return; 673 674 end restore_reply_references; 675 676 /* Determines if the given address list is empty */ 677 678 is_empty_list: 679 procedure (p_address_list_ptr) returns (bit (1) aligned); 680 681 dcl p_address_list_ptr pointer parameter; 682 683 if p_address_list_ptr = null () then /* if there's no data at all, it's empty */ 684 return ("1"b); 685 686 else return ((p_address_list_ptr -> address_list.n_addresses = 0)); 687 688 end is_empty_list; 689 1 1 /* BEGIN INCLUDE FILE ... sdm_invocation.incl.pl1 */ 1 2 /* Created: August 1983 by G. Palter from portions of emf_info.incl.pl1 */ 1 3 1 4 /* Definition of a single invocation of send_mail */ 1 5 1 6 dcl 1 sdm_invocation aligned based (sdm_invocation_ptr), 1 7 2 type character (8), /* defines this structure as a send_mail invocation */ 1 8 2 sci_ptr pointer, /* -> subsystem utilities invocation data */ 1 9 2 area_ptr pointer, /* -> area to be used by the subsystem */ 1 10 1 11 2 message_info, /* information about the message being constructed */ 1 12 3 message_ptr pointer, /* ... -> the actual message */ 1 13 3 message_state fixed binary, /* ... unprocessed/modified/processed: controls quit query */ 1 14 3 date_time_body_modified fixed binary (71), /* ... last date/time the message body was changed: used to 1 15* display Date/Message-ID fields before transmission */ 1 16 1 17 2 fill_width fixed binary, /* default line length for message filling */ 1 18 2 flags, 1 19 3 brief bit (1) unaligned, /* ON => suppress "Mail delivered..." messages */ 1 20 3 acknowledge bit (1) unaligned, /* ON => user wants acknowledgement from recipients */ 1 21 3 notify bit (1) unaligned, /* ON => send each recipient a notification of delivery */ 1 22 3 fill bit (1) unaligned, /* ON => fill message body whenever modified */ 1 23 3 debug_mode bit (1) unaligned, /* ON => debugging features enabled */ 1 24 3 auto_write bit (1) unaligned, 1 25 3 pad bit (30) unaligned, /* ON => qedx request automatically rewrites on quit (sigh) */ 1 26 1 27 2 rdm_invocation_ptr pointer, /* -> description of read_mail invocation whose reply request 1 28* created this send_mail invocation */ 1 29 1 30 2 original_messages_ptr pointer, /* -> current list of original messages from which the 1 31* In-Reply-To field is to be regenerated after use of 1 32* qedx/apply -header */ 1 33 1 34 2 abort_code fixed binary (35); /* indicates whether send_mail exited with unsent message */ 1 35 1 36 dcl SDM_INVOCATION character (8) static options (constant) initial ("sdm_0008"); 1 37 1 38 dcl sdm_invocation_ptr pointer; 1 39 1 40 dcl sdm_area area based (sdm_invocation.area_ptr); 1 41 1 42 1 43 /* Possible message states: indicate whether the message has been modified in some way since it was last successfully 1 44* transmitted, logged, saved, or writen. This state is used by the quit request to control whether it should query the 1 45* user for permission to exit send_mail */ 1 46 1 47 dcl (UNPROCESSED_MESSAGE initial (-1), /* message has never been transmitted/logged/saved/written */ 1 48 1 49 MODIFIED_MESSAGE initial (1), /* message was transmitted/logged/saved/written but has been 1 50* modified since the last such operation */ 1 51 1 52 PROCESSED_MESSAGE initial (0)) /* message was transmitted/logged/saved/written and hasn't 1 53* been modified since that operation: OK to quit without 1 54* having to ask for the user's permission */ 1 55 fixed binary static options (constant); 1 56 1 57 /* END INCLUDE FILE ... sdm_invocation.incl.pl1 */ 690 691 2 1 /* BEGIN INCLUDE FILE ... sdm_original_messages.incl.pl1 */ 2 2 /* Created: August 1983 by G. Palter */ 2 3 2 4 /* Definition of the list of original messages for which this message is a reply: send_mail must keep track of this list 2 5* separately from the copy in the message itself as, when qedx/apply -header is used, the mail system can not convert the 2 6* printed representation of the In-Reply-To field back into its internal form; therefore, send_mail will delete the the 2 7* list of reply references from the message before allowing the user to edit the message and will restore the list on 2 8* return from the editor. This list is also used by callers of the send_mail subsystem (ie: read_mail's reply request) 2 9* to supply the initial content for the reply references of the message; if requested, send_mail will extract the message 2 10* body from these message(s) for inclusion in the body of the message being created by the user */ 2 11 2 12 dcl 1 original_messages aligned based (original_messages_ptr), 2 13 2 version character (8) unaligned, 2 14 2 pad bit (36), 2 15 2 n_original_messages fixed binary, /* # of original messages listed herein */ 2 16 2 messages (original_messages_n_original_messages refer (original_messages.n_original_messages)), 2 17 3 message_ptr pointer, /* ... -> the message */ 2 18 3 message_idx fixed binary, /* ... # assigned to the message by read_mail */ 2 19 3 pad bit (36); 2 20 2 21 dcl ORIGINAL_MESSAGES_VERSION_1 character (8) static options (constant) initial ("sdmoml01"); 2 22 2 23 dcl original_messages_n_original_messages fixed binary; /* required to allocate the above structure */ 2 24 2 25 dcl original_messages_ptr pointer; 2 26 2 27 2 28 /* END INCLUDE FILE ... sdm_original_messages.incl.pl1 */ 692 693 3 1 /* BEGIN INCLUDE FILE ... sdm_data.incl.pl1 */ 3 2 /* Created: 20 December 1978 by G. Palter */ 3 3 /* Modified: 17 September 1982 by G. Palter to add sdm_data_$ec_suffix and sdm_data_$ec_search_list */ 3 4 /* Modified: August 1983 by G. Palter as part of send_mail conversion */ 3 5 3 6 3 7 /* Constant data used by the send_mail subsystem */ 3 8 3 9 dcl sdm_data_$version character (32) varying external; /* current version of the subsystem */ 3 10 3 11 dcl sdm_data_$info_directory character (168) external; /* directory containing self-documenation */ 3 12 3 13 dcl sdm_data_$special_message character (256) varying external; 3 14 /* message to print on each invocation if not null */ 3 15 3 16 dcl sdm_data_$ec_suffix character (32) external; /* exec_com suffix for send_mail */ 3 17 dcl sdm_data_$ec_search_list character (32) external; /* exec_com search list */ 3 18 3 19 dcl 1 sdm_data_$default_options like send_mail_options aligned external; 3 20 /* default options to control send_mail */ 3 21 3 22 3 23 /* Static data used by the send_mail subsystem */ 3 24 3 25 dcl sdm_data_$first_invocation bit (1) aligned external; /* ON => this is the first invocation in this process */ 3 26 3 27 dcl sdm_data_$default_from_field pointer external; /* -> an address list to be used when asked to display the 3 28* From field and it has not been explicitly set by the user: 3 29* this list contains exactly 1 address -- the user's mail 3 30* table address (or default mailbox address if anonymous) */ 3 31 3 32 /* END INCLUDE FILE ... sdm_data.incl.pl1 */ 694 695 4 1 /* BEGIN INCLUDE FILE ... send_mail_options.incl.pl1 */ 4 2 /* Created: 28 December 1978 by G. Palter */ 4 3 /* Modified: 25 April 1980 by G. Palter for version 2 -- abbrev processing */ 4 4 /* Modified: 27 January 1981 by G. Palter for version 3 -- increased prompt string length */ 4 5 /* Modified: 16 February 1982 by G. Palter for version 4 -- default profile in addition to current profile */ 4 6 /* Modified: 17 September 1982 by G. Palter for version 5 -- new definition of -fill, -debug, and making -fill/-rql 4 7* dependent on mode of message input (terminal/file) */ 4 8 /* Modified: August 1983 by G. Palter for version 6 -- elimination of -header and -message_id (always ON), elimination of 4 9* -no_abort as the command line -abort/-no_abort no longer sets the default for the send request control argument, 4 10* addition of -auto_write/-no_auto_write as required by the MCR boards, and addition of options pertaining to 4 11* treatment of the original message(s) text when invoked by a reply request */ 4 12 4 13 /* User settable options of the send_mail subsystem */ 4 14 4 15 dcl 1 send_mail_options aligned based (send_mail_options_ptr), 4 16 2 version character (8) unaligned, 4 17 4 18 2 fill_width fixed binary, /* default width for filling */ 4 19 4 20 2 prompt_control aligned, /* controls how send_mail prompts */ 4 21 3 prompt_string character (64) varying, /* ... user-supplied string */ 4 22 3 flags aligned, 4 23 4 prompt_control bit (2) unaligned, /* ... default prompt/use above string/don't prompt */ 4 24 4 pad bit (34) unaligned, 4 25 4 26 2 default_profile_ptr pointer, /* -> default profile to be used if flags.abbrev is ON */ 4 27 2 profile_ptr pointer, /* -> profile to be used if flags.abbrev is ON */ 4 28 4 29 2 original_text_control aligned, /* controls send_mail's treatment of original message text */ 4 30 3 original_text_indentation fixed binary, /* ... # of columns to indent the text if requested */ 4 31 3 flags, 4 32 4 include_original_text bit (1) unaligned, /* ... ON => text from message(s) being answered is to be 4 33* included in the reply before the actual answer */ 4 34 4 indent_original_text bit (1) unaligned, /* ... ON => the original text is to be indented */ 4 35 4 fill_original_text bit (1) unaligned, /* ... ON => the original text is to be re-filled */ 4 36 4 pad bit (33) unaligned, 4 37 4 38 2 flags aligned, 4 39 3 acknowledge bit (1) unaligned, /* ON => user wants acknowledgement from recipients */ 4 40 3 brief bit (1) unaligned, /* ON => suppress "Mail delivered..." messages */ 4 41 3 notify bit (1) unaligned, /* ON => send each recipient a wakeup */ 4 42 3 abbrev bit (1) unaligned, /* ON => use abbrev processing in this invocation */ 4 43 3 debug bit (1) unaligned, /* ON => enable debugging features */ 4 44 3 auto_write bit (1) unaligned, /* ON => qedx request automatically rewrites on quit (sigh) */ 4 45 3 fill_control bit (2) unaligned, /* default/explicit -fill/explicit -no_fill */ 4 46 3 request_loop_control bit (2) unaligned, /* default/explicit -rql/explicit -nrql */ 4 47 3 pad bit (26) unaligned; 4 48 4 49 dcl send_mail_options_ptr pointer; 4 50 4 51 dcl SEND_MAIL_OPTIONS_VERSION_6 character (8) static options (constant) initial ("sdmopt06"); 4 52 4 53 4 54 /* Prompt control options */ 4 55 4 56 dcl (DEFAULT_PROMPT initial ("00"b), /* use default subsystem prompt */ 4 57 USE_PROMPT_STRING initial ("01"b), /* use prompt string supplied by user (via -prompt STR) */ 4 58 NO_PROMPT initial ("10"b)) /* disable subsystem prompt */ 4 59 bit (2) static options (constant); 4 60 4 61 4 62 /* Fill control options */ 4 63 4 64 dcl (DEFAULT_FILL initial ("00"b), /* fill if terminal input; do not fill if file input */ 4 65 FILL initial ("01"b), /* user specified -fill */ 4 66 NO_FILL initial ("10"b)) /* user specified -no_fill */ 4 67 bit (2) static options (constant); 4 68 4 69 4 70 /* Request loop control options */ 4 71 4 72 dcl (DEFAULT_REQUEST_LOOP initial ("00"b), /* enter loop if file input; do not enter if terminal input */ 4 73 REQUEST_LOOP initial ("01"b), /* user specified -request_loop */ 4 74 NO_REQUEST_LOOP initial ("10"b)) /* user specified -no_request_loop */ 4 75 bit (2) static options (constant); 4 76 4 77 /* END INCLUDE FILE ... send_mail_options.incl.pl1 */ 696 697 5 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 5 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 5 7* Added seen switch to message. 5 8* END HISTORY COMMENTS */ 5 9 5 10 5 11 /* Created: June 1983 by G. Palter */ 5 12 5 13 /* Definition of a message as used by the Multics Mail System */ 5 14 5 15 dcl 1 message aligned based (message_ptr), 5 16 2 version character (8) unaligned, 5 17 2 reserved bit (144), /* for exclusive use of the mail system */ 5 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 5 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 5 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 5 21 2 n_body_sections fixed binary, /* # of sections in the body */ 5 22 2 flags, 5 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 5 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 5 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 5 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 5 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 5 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 5 29 2 pad bit (36), 5 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 5 31 2 header, 5 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 5 33 3 access_class bit (72), /* AIM access class of this message */ 5 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 5 35 3 from pointer, /* -> address list of author(s) of the message */ 5 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 5 37 3 to pointer, /* -> address list of primary recipients */ 5 38 3 cc pointer, /* -> address list of secondary recipients */ 5 39 3 bcc pointer, /* -> address list of blind recipients */ 5 40 3 subject like message_text_field, /* subject of the message */ 5 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 5 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 5 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 5 44 2 body, 5 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 5 46 3 pad bit (36), 5 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 5 48 5 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 5 50 5 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 5 52 5 53 dcl message_ptr pointer; 5 54 5 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 5 56 message_references_list_n_references) 5 57 fixed binary; /* for exclusive use of the mail system */ 5 58 5 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 5 60 5 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 5 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 5 63 2 sender pointer, /* -> address of entity that mailed the message */ 5 64 2 trace pointer, /* -> message_trace describing how it got here */ 5 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 5 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 5 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 5 68 5 69 dcl message_envelope_ptr pointer; 5 70 5 71 5 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 5 73 5 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 5 75 2 pad pointer, /* forces even word alignment */ 5 76 2 version character (8) unaligned, 5 77 2 envelope like message_envelope; 5 78 5 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 5 80 5 81 dcl message_envelope_parameter_ptr pointer; 5 82 5 83 5 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 5 85* networks to reach this recipient */ 5 86 5 87 dcl 1 message_trace aligned based (message_trace_ptr), 5 88 2 version character (8) unaligned, 5 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 5 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 5 91 2 pad bit (36), 5 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 5 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 5 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 5 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 5 96 3 receiving_host character (256) varying, /* ... the host which received it */ 5 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 5 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 5 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 5 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 5 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 5 102 5 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 5 104 5 105 dcl message_trace_ptr pointer; 5 106 5 107 /* Definition of a message's redistributions list */ 5 108 5 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 5 110 2 version character (8) unaligned, 5 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 5 112 2 pad bit (36), 5 113 2 n_redistributions fixed binary, /* # of redistributions */ 5 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 5 115 like message_redistribution; /* the redistributions: oldest first */ 5 116 5 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 5 118 5 119 5 120 /* Definition of a single redistribution (forwarding) of a message */ 5 121 5 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 5 123 2 envelope like message_envelope, 5 124 2 header, 5 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 5 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 5 127 3 from pointer, /* -> address list of authors of this redistribution */ 5 128 3 to pointer, /* -> address list of recipients of the redistribution */ 5 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 5 130 5 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 5 132 based (message_redistribution.comment.text_ptr); 5 133 5 134 dcl message_redistribution_ptr pointer; 5 135 5 136 5 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 5 138 5 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 5 140 2 pad pointer, /* forces even word alignment */ 5 141 2 version character (8) unaligned, 5 142 2 redistribution like message_redistribution; 5 143 5 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 5 145 5 146 dcl message_redistribution_parameter_ptr pointer; 5 147 5 148 /* Definition of the list of user-defined fields in a message */ 5 149 5 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 5 151 2 version character (8) unaligned, 5 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 5 153 2 pad bit (36), 5 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 5 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 5 156 like message_user_field; /* the actual user-defined fields */ 5 157 5 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 5 159 5 160 5 161 /* Definition of a user defined message header field */ 5 162 5 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 5 164 2 header, 5 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 5 166 3 field_type fixed binary, /* type of data contained in this field */ 5 167 2 field_type_variable bit (144); /* the actual data (see below) */ 5 168 5 169 dcl message_user_field_ptr pointer; 5 170 5 171 5 172 /* Defined types of user defined fields */ 5 173 5 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 5 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 5 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 5 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 5 178 fixed binary static options (constant); 5 179 5 180 5 181 /* Structures used to access the data for the different types of user defined fields */ 5 182 5 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 5 184 2 header like message_user_field.header, 5 185 2 text like message_text_field; /* the message text */ 5 186 5 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 5 188 based (message_text_user_field.text.text_ptr); 5 189 5 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 5 191 2 header like message_user_field.header, 5 192 2 address_list_ptr pointer, /* -> the address list */ 5 193 2 pad bit (72); 5 194 5 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 5 196 2 header like message_user_field.header, 5 197 2 date_time fixed binary (71), /* the clock reading */ 5 198 2 pad bit (72); 5 199 5 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 5 201 2 header like message_user_field.header, 5 202 2 value fixed binary (35), /* the integer value */ 5 203 2 pad bit (108); 5 204 5 205 5 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 5 207 5 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 5 209 2 pad pointer, /* forces even word alignment */ 5 210 2 version character (8) unaligned, 5 211 2 user_field like message_user_field; 5 212 5 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 5 214 5 215 dcl message_user_field_parameter_ptr pointer; 5 216 5 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 5 218 5 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 5 220 2 version character (8) unaligned, 5 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 5 222 2 pad bit (36), 5 223 2 n_references fixed binary, /* # of references in this list */ 5 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 5 225 like message_reference; /* the references themselves */ 5 226 5 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 5 228 5 229 dcl message_references_list_ptr pointer; 5 230 5 231 5 232 /* Definition of a reference to another message */ 5 233 5 234 dcl 1 message_reference aligned based (message_reference_ptr), 5 235 2 message_id bit (72), /* ID of the other message */ 5 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 5 237 2 from pointer, /* -> address list of authors of the other message */ 5 238 2 subject like message_text_field; /* subject of the other message */ 5 239 5 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 5 241 based (message_reference.subject.text_ptr); 5 242 5 243 dcl message_reference_ptr pointer; 5 244 5 245 5 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 5 247 5 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 5 249 2 pad pointer, /* forces even word alignment */ 5 250 2 version character (8) unaligned, 5 251 2 reference like message_reference; 5 252 5 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 5 254 5 255 dcl message_reference_parameter_ptr pointer; 5 256 5 257 5 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 5 259 5 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 5 261 2 text_ptr pointer, /* -> the actual text */ 5 262 2 text_lth fixed binary (21), /* length of said text */ 5 263 2 flags, 5 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 5 265* OFF => the text will always be a single line */ 5 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 5 267 5 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 5 269 5 270 dcl message_text_field_ptr pointer; 5 271 5 272 /* Definition of a section of the body of a message */ 5 273 5 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 5 275 2 header, 5 276 3 section_type fixed binary, /* type of "text" stored in this section */ 5 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 5 278 2 section_type_variable bit (144); /* the actual data (see below) */ 5 279 5 280 dcl message_body_section_ptr pointer; 5 281 5 282 5 283 /* Defined types of message body sections */ 5 284 5 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 5 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 5 287 fixed binary static options (constant); 5 288 5 289 5 290 /* Structures used to access the data for the different types of message body sections */ 5 291 5 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 5 293 2 header like message_body_section.header, 5 294 2 text_ptr pointer, /* -> the text */ 5 295 2 text_lth fixed binary (21), /* length of said text in characters */ 5 296 2 reserved bit (36); /* for exclusive use of the mail system */ 5 297 5 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 5 299 based (message_preformatted_body_section.text_ptr); 5 300 5 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 5 302 2 header like message_body_section.header, 5 303 2 bit_string_ptr pointer, /* -> the bit string */ 5 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 5 305 2 reserved bit (36); /* for exclusive use of the mail system */ 5 306 5 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 5 308 based (message_bit_string_body_section.bit_string_ptr); 5 309 5 310 5 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 5 312 5 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 5 314 2 pad pointer, /* forces even word alignment */ 5 315 2 version character (8) unaligned, 5 316 2 section like message_body_section; 5 317 5 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 5 319 5 320 dcl message_body_section_parameter_ptr pointer; 5 321 5 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 698 699 6 1 /* BEGIN INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 6 2 /* Created: June 1983 by G. Palter */ 6 3 6 4 /* Definition of an address list -- a collection of addresses used as the value of certain message fields, etc. */ 6 5 6 6 dcl 1 address_list aligned based (address_list_ptr), 6 7 2 version character (8) unaligned, 6 8 2 reserved bit (144), /* ... exclusively for use by the mail system */ 6 9 2 n_addresses fixed binary, /* # of address in this list */ 6 10 2 addresses (address_list_n_addresses refer (address_list.n_addresses)) pointer; 6 11 6 12 dcl ADDRESS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsals02"); 6 13 6 14 dcl address_list_ptr pointer; 6 15 6 16 dcl address_list_n_addresses fixed binary; /* reserved exclusively for use by the mail system */ 6 17 6 18 /* END INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 700 701 7 1 /* BEGIN INCLUDE FILE ... mlsys_field_names.incl.pl1 */ 7 2 /* Created: June 1983 by G. Palter */ 7 3 7 4 /* Standard names for all message envelope, header, and redistributions list fields supported by the mail system */ 7 5 7 6 dcl (ACCESS_CLASS_FIELDNAME initial ("Access-Class"), 7 7 ACKNOWLEDGE_TO_FIELDNAME initial ("Acknowledge-To"), 7 8 BCC_FIELDNAME initial ("bcc"), 7 9 CC_FIELDNAME initial ("cc"), 7 10 DATE_TIME_CREATED_FIELDNAME initial ("Date"), 7 11 DATE_TIME_DELIVERED_FIELDNAME initial ("Delivery-Date"), 7 12 DATE_TIME_MAILED_FIELDNAME initial ("Posted-Date"), 7 13 DELIVERED_BY_FIELDNAME initial ("Delivery-By"), 7 14 FROM_FIELDNAME initial ("From"), 7 15 IMPLICIT_ROUTE_FIELDNAME initial ("Route"), 7 16 MESSAGE_ID_FIELDNAME initial ("Message-ID"), 7 17 RELAY_FIELDNAME initial ("Relayed"), 7 18 REPLY_REFERENCES_FIELDNAME initial ("In-Reply-To"), 7 19 REPLY_TO_FIELDNAME initial ("Reply-To"), 7 20 SENDER_FIELDNAME initial ("Sender"), 7 21 SUBJECT_FIELDNAME initial ("Subject"), 7 22 TO_FIELDNAME initial ("To"), 7 23 7 24 7 25 /* Prefix to apply to a field name to produce the field name of the equivalent field in the redistributions list. Ie: 7 26* 7 27* call mlsys_utils_$print_address_field 7 28* (REDISTRIBUTED_PREFIX || FROM_FIELDNAME, ...) */ 7 29 7 30 REDISTRIBUTED_PREFIX initial ("Redistributed-"), 7 31 7 32 7 33 /* Fields in a redistribution which do not have a corresponding non-redistributed field */ 7 34 7 35 REDISTRIBUTED_COMMENT_FIELDNAME initial ("Redistributed-Comment")) 7 36 7 37 character (32) varying static options (constant); 7 38 7 39 7 40 /* END INCLUDE FILE ... mlsys_field_names.incl.pl1 */ 702 703 8 1 /* BEGIN INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 8 2 /* Created: June 1983 by G. Palter */ 8 3 8 4 /* Options for the mlsys_utils_$format_message and mlsys_utils_$print_message entrypoints */ 8 5 8 6 dcl 1 format_message_options aligned based (format_message_options_ptr), 8 7 2 version character (8) unaligned, 8 8 2 line_length fixed binary, /* line length to be used to format/print the message */ 8 9 2 envelope_formatting_mode fixed binary, /* level of detail to be displayed for the envelope ... */ 8 10 2 header_formatting_mode fixed binary, /* ... for the message ... */ 8 11 2 redistributions_list_formatting_mode fixed binary, /* ... and for the redistributions list ... */ 8 12 2 include_body bit (1) aligned; /* ON => include message body when formatting/printing; 8 13* OFF => exclude the message body */ 8 14 8 15 dcl FORMAT_MESSAGE_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsfmo01"); 8 16 8 17 dcl format_message_options_ptr pointer; 8 18 8 19 8 20 /* Defined formatting modes */ 8 21 8 22 dcl (NONE_FORMATTING_MODE initial (0), /* exclude this part of the message */ 8 23 BRIEF_FORMATTING_MODE initial (1), /* include only minimal information from this part of the 8 24* message; not valid for the envelope */ 8 25 DEFAULT_FORMATTING_MODE initial (2), /* include default amount of information from this part */ 8 26 LONG_FORMATTING_MODE initial (3)) /* include all information from this part of the message */ 8 27 fixed binary static options (constant); 8 28 8 29 /* END INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 704 705 9 1 /* BEGIN INCLUDE FILE ... mlsys_parse_txt_options.incl.pl1 */ 9 2 /* Created: June 1983 by G. Palter */ 9 3 9 4 /* Options for the mlsys_utils_$parse_address_list_text and mlsys_utils_$parse_message_text entrypoints */ 9 5 9 6 dcl 1 parse_text_options aligned based (parse_text_options_ptr), 9 7 2 version character (8) unaligned, 9 8 2 area_ptr pointer, /* -> area for following structures; null => system free */ 9 9 2 flags, 9 10 3 list_errors bit (1) unaligned, /* ON => return the list of errors in the input text */ 9 11 3 validate_addresses bit (1) unaligned, /* ON => validate the existence of the addresses in the 9 12* address list or message */ 9 13 3 include_invalid_addresses bit (1) unaligned, /* ON => create an invalid address for each unparseable 9 14* substring of the input text */ 9 15 3 mbz bit (33) unaligned; /* must be set to ""b by the caller */ 9 16 9 17 dcl PARSE_TEXT_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsptxt1"); 9 18 9 19 dcl parse_text_options_ptr pointer; 9 20 9 21 9 22 /* Describes the errors detected while parsing the printed representation of an address list or message */ 9 23 9 24 dcl 1 parse_text_error_list aligned based (parse_text_error_list_ptr), 9 25 2 n_errors fixed binary, /* set to # of errors detected */ 9 26 2 errors (parse_text_error_list_n_errors refer (parse_text_error_list.n_errors)), 9 27 3 text_start fixed binary (21), /* ... set to index of first character in the substring */ 9 28 3 text_lth fixed binary (21), /* ... set to length of this invalid substring */ 9 29 3 code fixed binary (35), /* ... set to an error code which describes what is wrong with 9 30* this substring */ 9 31 3 additional_info character (128) varying; /* ... and extra information to clarify the error */ 9 32 9 33 dcl parse_text_error_list_ptr pointer; 9 34 9 35 dcl parse_text_error_list_n_errors fixed binary; /* used to allocate the above structure */ 9 36 9 37 /* END INCLUDE FILE ... mlsys_parse_txt_options.incl.pl1 */ 706 707 10 1 /* BEGIN INCLUDE FILE ... qedx_info.incl.pl1 */ 10 2 /* Created: January 1983 by G. Palter */ 10 3 10 4 /* Data structure which supplies input/output arguments to qedx_ subroutine */ 10 5 10 6 dcl 1 qedx_info aligned based (qedx_info_ptr), 10 7 2 header, /* allows use of like to build automatic version */ 10 8 3 version character (8), 10 9 3 editor_name character (72) unaligned, 10 10 3 buffer_io entry (pointer, bit (1) aligned), /* procedure invoked to read/write an editor buffer */ 10 11 3 flags, 10 12 4 no_rw_path bit (1) unaligned, /* ON => no r/w may use a pathname and R/W are illegal */ 10 13 4 query_if_modified bit (1) unaligned, /* ON => query on exit if modified buffers exist */ 10 14 4 caller_does_io bit (1) unaligned, /* ON => caller does actual work of read/write requests */ 10 15 4 quit_forced bit (1) unaligned, /* set ON => user used Q or asked to punt modified buffers */ 10 16 4 buffers_truncated bit (1) unaligned, /* set ON => some editing lost when written */ 10 17 4 pad bit (29) unaligned, 10 18 3 n_buffers fixed binary, /* # of buffers supplied by caller */ 10 19 2 buffers (qedx_info_n_buffers refer (qedx_info.n_buffers)), 10 20 3 buffer_name character (16) unaligned, /* name of the buffer */ 10 21 3 buffer_pathname character (256) unaligned, /* initial default pathname of buffer */ 10 22 3 region_ptr pointer, /* -> caller's optional region */ 10 23 3 region_max_lth fixed binary (21), /* # of characters which will fit in caller's region */ 10 24 3 region_initial_lth fixed binary (21), /* # of characters in caller's region for initial read */ 10 25 3 region_final_lth fixed binary (21), /* set to # of characters placed in caller's region on exit */ 10 26 3 flags, 10 27 4 read_write_region bit (1) unaligned, /* ON => use caller's region as default for read/write; 10 28* OFF => use file specified by pathname as default */ 10 29 4 locked_pathname bit (1) unaligned, /* ON => read/write will never change default pathname or 10 30* prevent qedx from trusting the default path; 10 31* OFF => read with pathname sets ^trusted and write with 10 32* pathname changes the default */ 10 33 4 execute_buffer bit (1) unaligned, /* ON => execute it's contents before reading from terminal */ 10 34 /*** following switches apply only when read_write_region is ON ... */ 10 35 4 default_read_ok bit (1) unaligned, /* ON => r without explicit pathname is OK */ 10 36 4 default_write_ok bit (1) unaligned, /* ON => w without explicit pathname is OK */ 10 37 4 auto_write bit (1) unaligned, /* ON => automatically write buffer contents on "q" */ 10 38 4 truncated bit (1) unaligned, /* set ON => edited version is too long for caller's region */ 10 39 4 pad bit (29) unaligned; 10 40 10 41 dcl qedx_info_ptr pointer; 10 42 dcl qedx_info_n_buffers fixed binary; /* needed to allocate above structure */ 10 43 10 44 dcl QEDX_INFO_VERSION_1 character (8) static options (constant) initial ("qxi_01.1"); 10 45 10 46 /* END INCLUDE FILE ... qedx_info.incl.pl1 */ 708 709 710 end sdm_msg_requests_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/22/86 1010.8 sdm_msg_requests_.pl1 >spec>install>1059>sdm_msg_requests_.pl1 690 1 10/27/83 2104.2 sdm_invocation.incl.pl1 >ldd>include>sdm_invocation.incl.pl1 692 2 10/27/83 2104.3 sdm_original_messages.incl.pl1 >ldd>include>sdm_original_messages.incl.pl1 694 3 10/27/83 2104.3 sdm_data.incl.pl1 >ldd>include>sdm_data.incl.pl1 696 4 10/27/83 2104.2 send_mail_options.incl.pl1 >ldd>include>send_mail_options.incl.pl1 698 5 05/22/86 1005.9 mlsys_message.incl.pl1 >spec>install>1059>mlsys_message.incl.pl1 700 6 10/27/83 2104.2 mlsys_address_list.incl.pl1 >ldd>include>mlsys_address_list.incl.pl1 702 7 10/27/83 2104.2 mlsys_field_names.incl.pl1 >ldd>include>mlsys_field_names.incl.pl1 704 8 10/27/83 2104.2 mlsys_format_options.incl.pl1 >ldd>include>mlsys_format_options.incl.pl1 706 9 10/27/83 2104.2 mlsys_parse_txt_options.incl.pl1 >ldd>include>mlsys_parse_txt_options.incl.pl1 708 10 05/04/83 1118.0 qedx_info.incl.pl1 >ldd>include>qedx_info.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_TO_FIELDNAME 000105 constant varying char(32) initial dcl 7-6 set ref 475* BCC_FIELDNAME 000074 constant varying char(32) initial dcl 7-6 set ref 460* BRIEF_FORMATTING_MODE constant fixed bin(17,0) initial dcl 8-22 ref 137 144 190 437 CC_FIELDNAME 000063 constant varying char(32) initial dcl 7-6 set ref 455* DATE_TIME_CREATED_FIELDNAME 000052 constant varying char(32) initial dcl 7-6 set ref 481* DEFAULT_FORMATTING_MODE constant fixed bin(17,0) initial dcl 8-22 ref 143 183 189 531 FORMAT_MESSAGE_OPTIONS_VERSION_1 000004 constant char(8) initial unaligned dcl 8-15 ref 516 FROM_FIELDNAME 000041 constant varying char(32) initial dcl 7-6 set ref 486* LONG_FORMATTING_MODE constant fixed bin(17,0) initial dcl 8-22 ref 141 187 494 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 000116 constant char(8) initial unaligned dcl 5-318 ref 633 MESSAGE_ID_FIELDNAME 000030 constant varying char(32) initial dcl 7-6 set ref 495* MESSAGE_PREFORMATTED_BODY_SECTION constant fixed bin(17,0) initial dcl 5-285 ref 634 MESSAGE_VERSION_2 000120 constant char(8) initial unaligned dcl 5-49 set ref 577* 581* MODIFIED_MESSAGE constant fixed bin(17,0) initial dcl 1-47 ref 615 NONE_FORMATTING_MODE constant fixed bin(17,0) initial dcl 8-22 ref 146 151 535 PARSE_TEXT_OPTIONS_VERSION_1 000002 constant char(8) initial unaligned dcl 9-17 ref 571 PROCESSED_MESSAGE constant fixed bin(17,0) initial dcl 1-47 ref 615 P_sci_ptr parameter pointer dcl 43 set ref 35 129 135* 140* 147* 148* 158* 175 181* 186* 191* 192* 201 207* 218* 228* 233* 235* 238* 246* 249* 254* 256* 265* 300* 310* 319 325* 327* 338* 344* 349* 351* 354* 361* 366* 375* 380* 387* 394 400* 405* 406* 412* 414* 417* 420* 421* 425* 444* 451* 456* 461* 477* 483* 488* 492* 497* 520* 527* 542* 597* 602* 617* 619* 666* P_sdm_invocation_ptr parameter pointer dcl 44 ref 35 129 132 175 178 201 204 319 322 394 397 QEDX_INFO_VERSION_1 000000 constant char(8) initial unaligned dcl 10-44 ref 270 SUBJECT_FIELDNAME 000017 constant varying char(32) initial dcl 7-6 set ref 442* TO_FIELDNAME 000006 constant varying char(32) initial dcl 7-6 set ref 447* 450* abort_the_line 000473 automatic bit(1) dcl 557 set ref 561* 591* 619 acknowledge 15(01) based bit(1) level 3 packed unaligned dcl 1-6 ref 474 additional_info 4 based varying char(128) array level 3 dcl 9-24 set ref 597* addr builtin function dcl 125 ref 250 299 299 539 539 577 577 635 639 639 address_list based structure level 1 dcl 6-6 addresses 10 based pointer array level 2 dcl 6-6 set ref 475* area_ptr 2 000466 automatic pointer level 2 in structure "local_pto" dcl 555 in procedure "update_message" set ref 572* area_ptr 4 based pointer level 2 in structure "sdm_invocation" dcl 1-6 in procedure "sdm_msg_requests_" ref 572 argument based char unaligned dcl 49 set ref 141 141 141 143 143 144 144 146 146 147* 187 187 187 189 189 190 190 191* 220 220 223 225 225 226 226 228 228 234* 235* 242 242 243 243 245 245 250 251 254* 340 340 340 342 342 344 344 350* 351* 358 358 359 359 361* 406 406 406 413* 414* 420* argument_idx 000104 automatic fixed bin(17,0) dcl 52 set ref 139* 140* 185* 186* 216* 218* 228 232* 232 233* 246 248* 248 249* 335* 338* 344 348* 348 349* 363* 404* 405* 406 411* 411 412* argument_lth 000102 automatic fixed bin(21,0) dcl 51 set ref 140* 141 141 141 143 143 144 144 146 146 147 147 186* 187 187 187 189 189 190 190 191 191 218* 220 220 223 225 225 226 226 228 228 233* 234 234 235 235 242 242 243 243 245 245 249* 250 251 254 254 338* 340 340 340 342 342 344 344 349* 350 350 351 351 358 358 359 359 361 361 405* 406 406 406 412* 413 413 414 414 420 420 argument_ptr 000100 automatic pointer dcl 50 set ref 140* 141 141 141 143 143 144 144 146 146 147 186* 187 187 187 189 189 190 190 191 218* 220 220 223 225 225 226 226 228 228 233* 234 235 242 242 243 243 245 245 249* 250 251 254 338* 340 340 340 342 342 344 344 349* 350 351 358 358 359 359 361 405* 406 406 406 412* 413 414 420 auto_write 000401 automatic bit(1) dcl 74 in procedure "sdm_msg_requests_" set ref 212* 220* 223* 286 auto_write 143(05) 000116 automatic bit(1) array level 4 in structure "local_qi" packed unaligned dcl 63 in procedure "sdm_msg_requests_" set ref 286* auto_write 15(05) based bit(1) level 3 in structure "sdm_invocation" packed unaligned dcl 1-6 in procedure "sdm_msg_requests_" ref 212 bcc 46 based pointer level 3 dcl 5-15 set ref 459* 460* body 62 based structure level 2 dcl 5-15 buffer_name 32 000116 automatic char(16) array level 3 packed unaligned dcl 63 set ref 277* 290* buffer_pathname 36 000116 automatic char(256) array level 3 packed unaligned dcl 63 set ref 278* 291* buffers 32 000116 automatic structure array level 2 in structure "local_qi" dcl 63 in procedure "sdm_msg_requests_" buffers 32 based structure array level 2 in structure "qedx_info" dcl 10-6 in procedure "sdm_msg_requests_" cc 44 based pointer level 3 dcl 5-15 set ref 454* 455* cleanup 000406 stack reference condition dcl 123 ref 262 372 clock builtin function dcl 125 ref 613 code 000522 automatic fixed bin(35,0) dcl 631 in procedure "use_text_as_message_body" set ref 639* 640 640* code 000474 automatic fixed bin(35,0) dcl 558 in procedure "update_message" set ref 577* 590 592 602* code 3 based fixed bin(35,0) array level 3 in structure "parse_text_error_list" dcl 9-24 in procedure "sdm_msg_requests_" set ref 597* code 000375 automatic fixed bin(35,0) dcl 68 in procedure "sdm_msg_requests_" set ref 157* 158 158* 234* 235 299* 300 350* 351 413* 414 442* 444 444* 450* 451 451* 455* 456 456* 460* 461 461* 475* 477 477* 481* 483 483* 486* 488 488* 491* 492 492* 495* 497 497* 526* 527 527* 539* 541 541* 542 542* 664* 666 666* cv_dec_check_ 000032 constant entry external dcl 91 ref 234 350 413 date_time_body_modified 12 based fixed bin(71,0) level 3 dcl 1-6 set ref 481* 495 495 613* default_read_ok 143(03) 000116 automatic bit(1) array level 4 packed unaligned dcl 63 set ref 283* default_write_ok 143(04) 000116 automatic bit(1) array level 4 packed unaligned dcl 63 set ref 283* editor_name 2 000116 automatic char(72) level 3 packed unaligned dcl 63 set ref 271* envelope_formatting_mode 3 000450 automatic fixed bin(17,0) level 2 dcl 513 set ref 531* 535* erroneous_text defined char unaligned dcl 595 set ref 597* error_table_$bad_conversion 000014 external static fixed bin(35,0) dcl 86 set ref 235* 351* 414* error_table_$badopt 000016 external static fixed bin(35,0) dcl 86 set ref 147* 191* 254* 361* 420* error_table_$fatal_error 000020 external static fixed bin(35,0) dcl 86 ref 300 error_table_$noarg 000022 external static fixed bin(35,0) dcl 86 set ref 228* 246* 344* 366* 406* error_table_$smallarg 000024 external static fixed bin(35,0) dcl 86 ref 541 errors 1 based structure array level 2 dcl 9-24 execute_buffer 143(02) 000116 automatic bit(1) array level 4 packed unaligned dcl 63 set ref 295* fatal_error 000374 automatic bit(1) dcl 67 set ref 309* 310 386* 387 424* 425 fill 000400 automatic bit(1) dcl 73 in procedure "sdm_msg_requests_" set ref 211* 225* 226* 308 331* 340* 342* 385 fill 15(03) based bit(1) level 3 in structure "sdm_invocation" packed unaligned dcl 1-6 in procedure "sdm_msg_requests_" ref 211 331 fill_width 000404 automatic fixed bin(17,0) dcl 80 in procedure "sdm_msg_requests_" set ref 209* 234* 238 309* 329* 350* 354 386* 402* 413* 417 424* fill_width 14 based fixed bin(17,0) level 2 in structure "sdm_invocation" dcl 1-6 in procedure "sdm_msg_requests_" ref 209 329 402 first_command_argument_idx 000403 automatic fixed bin(17,0) dcl 78 set ref 333* 335 363* 366 380* flags 4 000466 automatic structure level 2 in structure "local_pto" dcl 555 in procedure "update_message" flags 30 000116 automatic structure level 3 in structure "local_qi" dcl 63 in procedure "sdm_msg_requests_" set ref 272* flags 143 000116 automatic structure array level 3 in structure "local_qi" dcl 63 in procedure "sdm_msg_requests_" set ref 282* 294* flags 15 based structure level 2 in structure "sdm_invocation" dcl 1-6 in procedure "sdm_msg_requests_" format_message_options based structure level 1 dcl 8-6 formatting_mode 000402 automatic fixed bin(17,0) dcl 76 set ref 137* 141* 143* 144* 146* 151 183* 187* 189* 190* 437 491* 494 from 36 based pointer level 3 dcl 5-15 set ref 485* header 4 based structure level 3 in structure "message_user_field_parameter" dcl 5-208 in procedure "sdm_msg_requests_" header 4 000510 automatic structure level 3 in structure "local_mbsp" dcl 630 in procedure "use_text_as_message_body" header 000116 automatic structure level 2 in structure "local_qi" dcl 63 in procedure "sdm_msg_requests_" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 5-313 in procedure "sdm_msg_requests_" header based structure level 2 in structure "qedx_info" dcl 10-6 in procedure "sdm_msg_requests_" header based structure level 2 in structure "message_user_field" dcl 5-163 in procedure "sdm_msg_requests_" header based structure level 2 in structure "message_body_section" dcl 5-274 in procedure "sdm_msg_requests_" header 30 based structure level 2 in structure "message" dcl 5-15 in procedure "sdm_msg_requests_" header 64 based structure array level 4 in structure "message" dcl 5-15 in procedure "sdm_msg_requests_" header 10 based structure array level 3 in structure "message_user_fields_list" dcl 5-150 in procedure "sdm_msg_requests_" header_formatting_mode 4 000450 automatic fixed bin(17,0) level 2 dcl 513 set ref 531* 535* idx 000475 automatic fixed bin(17,0) dcl 559 in procedure "update_message" set ref 593* 595 597 597 597 idx 000457 automatic fixed bin(17,0) dcl 514 in procedure "prepare_message" set ref 525* 526* idx 000100 automatic fixed bin(17,0) dcl 655 in procedure "restore_reply_references" set ref 663* 664 666* include_body 6 000450 automatic bit(1) level 2 dcl 513 set ref 518* include_header 000377 automatic bit(1) dcl 72 set ref 213* 242* 243* 332* 358* 359* 523 564 include_invalid_addresses 4(02) 000466 automatic bit(1) level 3 packed unaligned dcl 555 set ref 573* index builtin function dcl 125 ref 141 187 220 340 406 ioa_ 000034 constant entry external dcl 92 ref 153 155 434 447 iox_$user_output 000012 external static pointer dcl 83 set ref 157* 442* 450* 455* 460* 475* 481* 486* 491* 495* length builtin function dcl 125 ref 251 280 539 539 line_length 2 000450 automatic fixed bin(17,0) level 2 dcl 513 set ref 517* list_errors 4 000466 automatic bit(1) level 3 packed unaligned dcl 555 set ref 573* local_fmo 000450 automatic structure level 1 dcl 513 set ref 539 539 local_mbsp 000510 automatic structure level 1 dcl 630 set ref 639 639 local_pto 000466 automatic structure level 1 dcl 555 set ref 577 577 local_qi 000116 automatic structure level 1 dcl 63 set ref 299 299 locked_pathname 143(01) 000116 automatic bit(1) array level 4 packed unaligned dcl 63 set ref 283* 295* mail_system_$add_reply_reference 000036 constant entry external dcl 93 ref 664 mail_system_$create_message 000042 constant entry external dcl 95 ref 581 mail_system_$delete_reply_reference 000040 constant entry external dcl 94 ref 526 mail_system_$free_message 000044 constant entry external dcl 96 ref 568 mail_system_$replace_body 000046 constant entry external dcl 97 ref 639 mbz 4(03) 000466 automatic bit(33) level 3 packed unaligned dcl 555 set ref 574* message based structure level 1 dcl 5-15 message_body_section based structure level 1 dcl 5-274 message_body_section_parameter based structure level 1 dcl 5-313 message_body_section_ptr 000422 automatic pointer dcl 5-280 set ref 635* 636 637 message_buffer based char unaligned dcl 54 ref 280 539 539 message_buffer_ptr 000106 automatic pointer dcl 56 set ref 259* 265 265* 279 280 369* 375 375* 380* 520* 539* 539 539 577 597 617* 636 message_envelope based structure level 1 dcl 5-61 message_idx 6 based fixed bin(17,0) array level 3 dcl 2-12 set ref 666* message_info 6 based structure level 2 dcl 1-6 message_preformatted_body_section based structure level 1 dcl 5-292 message_ptr 4 based pointer array level 3 in structure "original_messages" dcl 2-12 in procedure "sdm_msg_requests_" set ref 664* message_ptr 6 based pointer level 3 in structure "sdm_invocation" dcl 1-6 in procedure "sdm_msg_requests_" set ref 133 179 205 323 398 568* 585* 664* message_ptr 000420 automatic pointer dcl 5-53 in procedure "sdm_msg_requests_" set ref 133* 155 155 157* 179* 205* 323* 398* 434 434 441 442 442 442 447 450 454 455 459 460 485 491* 524 525 526* 539* 576* 577* 580 581* 585 639* message_redistribution based structure level 1 dcl 5-122 message_reference based structure level 1 dcl 5-234 message_state 10 based fixed bin(17,0) level 3 dcl 1-6 set ref 615 615* message_subject based char unaligned dcl 5-51 set ref 442* message_text based char unaligned dcl 55 set ref 577* 597 597 message_text_field based structure level 1 dcl 5-260 message_text_lth 000110 automatic fixed bin(21,0) dcl 57 set ref 281 303* 380* 380* 521* 539* 577 577 597 637 message_user_field based structure level 1 dcl 5-163 messages 4 based structure array level 2 dcl 2-12 mlsys_et_$message_too_large 000026 external static fixed bin(35,0) dcl 86 ref 541 mlsys_et_$text_parse_failed 000030 external static fixed bin(35,0) dcl 86 ref 592 mlsys_utils_$format_message 000050 constant entry external dcl 98 ref 539 mlsys_utils_$parse_message_text 000052 constant entry external dcl 100 ref 577 mlsys_utils_$print_address_field 000054 constant entry external dcl 101 ref 475 mlsys_utils_$print_address_list_field 000056 constant entry external dcl 102 ref 450 455 460 486 mlsys_utils_$print_date_time_field 000060 constant entry external dcl 104 ref 481 mlsys_utils_$print_message_body 000062 constant entry external dcl 106 ref 157 mlsys_utils_$print_message_header 000064 constant entry external dcl 107 ref 491 mlsys_utils_$print_message_id_field 000066 constant entry external dcl 108 ref 495 mlsys_utils_$print_text_field 000070 constant entry external dcl 110 ref 442 n_addresses 6 based fixed bin(17,0) level 2 dcl 6-6 ref 686 n_arguments 000103 automatic fixed bin(17,0) dcl 52 set ref 135* 139 181* 185 207* 216 228 246 325* 327 335 344 400* 404 406 n_buffers 31 000116 automatic fixed bin(17,0) level 3 dcl 63 set ref 275* 289* n_errors based fixed bin(17,0) level 2 dcl 9-24 ref 593 n_original_messages 3 based fixed bin(17,0) level 2 dcl 2-12 ref 663 n_reply_references 6 based fixed bin(17,0) level 2 dcl 5-15 ref 524 525 null builtin function dcl 125 ref 259 265 369 375 576 580 661 683 original_messages based structure level 1 dcl 2-12 original_messages_ptr 20 based pointer level 2 in structure "sdm_invocation" dcl 1-6 in procedure "sdm_msg_requests_" ref 659 original_messages_ptr 000416 automatic pointer dcl 2-25 in procedure "sdm_msg_requests_" set ref 659* 661 663 664 666 p_address_list_ptr parameter pointer dcl 681 ref 678 683 686 parse_text_error_list based structure level 1 dcl 9-24 parse_text_error_list_ptr 000424 automatic pointer dcl 9-33 set ref 577* 593 595 597 597 597 parse_text_options based structure level 1 dcl 9-6 qedx_ 000072 constant entry external dcl 112 ref 299 qedx_info based structure level 1 dcl 10-6 query_if_modified 30(01) 000116 automatic bit(1) level 4 packed unaligned dcl 63 set ref 273* read_write_region 143 000116 automatic bit(1) array level 4 packed unaligned dcl 63 set ref 283* 295* redistributions_list_formatting_mode 5 000450 automatic fixed bin(17,0) level 2 dcl 513 set ref 531* 535* region_final_lth 142 000116 automatic fixed bin(21,0) array level 3 dcl 63 set ref 303 region_initial_lth 141 000116 automatic fixed bin(21,0) array level 3 dcl 63 set ref 281* 293* region_max_lth 140 000116 automatic fixed bin(21,0) array level 3 dcl 63 set ref 280* 293* region_ptr 136 000116 automatic pointer array level 3 dcl 63 set ref 279* 292* removed_reply_references 000376 automatic bit(1) dcl 70 set ref 260* 264 370* 374 529* 587 657* request_line_lth 000114 automatic fixed bin(21,0) dcl 61 set ref 214* 251* 288 293 request_line_ptr 000112 automatic pointer dcl 60 set ref 250* 292 sci_ptr 2 based pointer level 2 dcl 1-6 set ref 271* 640* sdm_data_$default_from_field 000116 external static pointer dcl 3-27 set ref 475 486* sdm_invocation based structure level 1 dcl 1-6 sdm_invocation_ptr 000414 automatic pointer dcl 1-38 set ref 132* 133 178* 179 204* 205 209 211 212 271 309* 322* 323 329 331 386* 397* 398 402 424* 474 481 495 495 568 572 585 613 615 615 640 659 664 sdm_text_mgr_$fill_text 000074 constant entry external dcl 113 ref 309 386 424 section 4 000510 automatic structure level 2 dcl 630 set ref 635 section_type 4 000510 automatic fixed bin(17,0) level 4 dcl 630 set ref 634* send_mail_options based structure level 1 dcl 4-15 ssu_$abort_line 000076 constant entry external dcl 114 ref 147 148 158 191 192 228 235 238 246 254 256 300 310 327 344 351 354 361 366 387 406 414 417 420 421 425 444 451 456 461 477 483 488 492 497 527 542 619 640 ssu_$apply_request_util 000104 constant entry external dcl 117 ref 380 ssu_$arg_count 000100 constant entry external dcl 115 ref 135 181 207 325 400 ssu_$arg_ptr 000102 constant entry external dcl 116 ref 140 186 218 233 249 338 349 405 412 ssu_$get_subsystem_and_request_name 000106 constant entry external dcl 118 ref 271 ssu_$get_temp_segment 000110 constant entry external dcl 119 ref 520 ssu_$print_message 000112 constant entry external dcl 120 ref 597 602 666 ssu_$release_temp_segment 000114 constant entry external dcl 121 ref 265 375 617 string builtin function dcl 125 set ref 272* 282* 294* subject 50 based structure level 3 dcl 5-15 sys_info$max_seg_size 000010 external static fixed bin(19,0) dcl 82 ref 280 539 539 text_lth 2 based fixed bin(21,0) array level 3 in structure "parse_text_error_list" dcl 9-24 in procedure "sdm_msg_requests_" ref 595 text_lth 4 based fixed bin(21,0) level 2 in structure "message_preformatted_body_section" dcl 5-292 in procedure "sdm_msg_requests_" set ref 637* text_lth 52 based fixed bin(21,0) level 4 in structure "message" dcl 5-15 in procedure "sdm_msg_requests_" ref 441 442 442 text_ptr 50 based pointer level 4 in structure "message" dcl 5-15 in procedure "sdm_msg_requests_" ref 442 text_ptr 2 based pointer level 2 in structure "message_preformatted_body_section" dcl 5-292 in procedure "sdm_msg_requests_" set ref 636* text_start 1 based fixed bin(21,0) array level 3 dcl 9-24 ref 597 to 42 based pointer level 3 dcl 5-15 set ref 447* 450* total_lines 62 based fixed bin(21,0) level 3 dcl 5-15 set ref 155* 155 434* 434 unspec builtin function dcl 125 ref 495 495 validate_addresses 4(01) 000466 automatic bit(1) level 3 packed unaligned dcl 555 set ref 573* version 000466 automatic char(8) level 2 in structure "local_pto" packed unaligned dcl 555 in procedure "update_message" set ref 571* version 000450 automatic char(8) level 2 in structure "local_fmo" packed unaligned dcl 513 in procedure "prepare_message" set ref 516* version 2 000510 automatic char(8) level 2 in structure "local_mbsp" packed unaligned dcl 630 in procedure "use_text_as_message_body" set ref 633* version 000116 automatic char(8) level 3 in structure "local_qi" dcl 63 in procedure "sdm_msg_requests_" set ref 270* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCESS_CLASS_FIELDNAME internal static varying char(32) initial dcl 7-6 ADDRESS_LIST_VERSION_2 internal static char(8) initial unaligned dcl 6-12 DATE_TIME_DELIVERED_FIELDNAME internal static varying char(32) initial dcl 7-6 DATE_TIME_MAILED_FIELDNAME internal static varying char(32) initial dcl 7-6 DEFAULT_FILL internal static bit(2) initial unaligned dcl 4-64 DEFAULT_PROMPT internal static bit(2) initial unaligned dcl 4-56 DEFAULT_REQUEST_LOOP internal static bit(2) initial unaligned dcl 4-72 DELIVERED_BY_FIELDNAME internal static varying char(32) initial dcl 7-6 FILL internal static bit(2) initial unaligned dcl 4-64 IMPLICIT_ROUTE_FIELDNAME internal static varying char(32) initial dcl 7-6 MESSAGE_ADDRESS_LIST_USER_FIELD internal static fixed bin(17,0) initial dcl 5-174 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 5-285 MESSAGE_DATE_USER_FIELD internal static fixed bin(17,0) initial dcl 5-174 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial unaligned dcl 5-79 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 5-174 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial unaligned dcl 5-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial unaligned dcl 5-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial unaligned dcl 5-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial unaligned dcl 5-253 MESSAGE_TEXT_USER_FIELD internal static fixed bin(17,0) initial dcl 5-174 MESSAGE_TRACE_VERSION_2 internal static char(8) initial unaligned dcl 5-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial unaligned dcl 5-158 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 internal static char(8) initial unaligned dcl 5-213 NO_FILL internal static bit(2) initial unaligned dcl 4-64 NO_PROMPT internal static bit(2) initial unaligned dcl 4-56 NO_REQUEST_LOOP internal static bit(2) initial unaligned dcl 4-72 ORIGINAL_MESSAGES_VERSION_1 internal static char(8) initial unaligned dcl 2-21 REDISTRIBUTED_COMMENT_FIELDNAME internal static varying char(32) initial dcl 7-6 REDISTRIBUTED_PREFIX internal static varying char(32) initial dcl 7-6 RELAY_FIELDNAME internal static varying char(32) initial dcl 7-6 REPLY_REFERENCES_FIELDNAME internal static varying char(32) initial dcl 7-6 REPLY_TO_FIELDNAME internal static varying char(32) initial dcl 7-6 REQUEST_LOOP internal static bit(2) initial unaligned dcl 4-72 SDM_INVOCATION internal static char(8) initial unaligned dcl 1-36 SENDER_FIELDNAME internal static varying char(32) initial dcl 7-6 SEND_MAIL_OPTIONS_VERSION_6 internal static char(8) initial unaligned dcl 4-51 UNPROCESSED_MESSAGE internal static fixed bin(17,0) initial dcl 1-47 USE_PROMPT_STRING internal static bit(2) initial unaligned dcl 4-56 address_list_n_addresses automatic fixed bin(17,0) dcl 6-16 address_list_ptr automatic pointer dcl 6-14 format_message_options_ptr automatic pointer dcl 8-17 message_address_list_user_field based structure level 1 dcl 5-190 message_bit_string_body_section based structure level 1 dcl 5-301 message_bit_string_body_section_bit_string based bit unaligned dcl 5-307 message_body_section_parameter_ptr automatic pointer dcl 5-320 message_date_user_field based structure level 1 dcl 5-195 message_envelope_parameter based structure level 1 dcl 5-74 message_envelope_parameter_ptr automatic pointer dcl 5-81 message_envelope_ptr automatic pointer dcl 5-69 message_integer_user_field based structure level 1 dcl 5-200 message_n_body_sections automatic fixed bin(17,0) dcl 5-55 message_n_redistributions automatic fixed bin(17,0) dcl 5-55 message_n_user_fields automatic fixed bin(17,0) dcl 5-55 message_preformatted_body_section_text based char unaligned dcl 5-298 message_redistribution_comment based char unaligned dcl 5-131 message_redistribution_parameter based structure level 1 dcl 5-139 message_redistribution_parameter_ptr automatic pointer dcl 5-146 message_redistribution_ptr automatic pointer dcl 5-134 message_redistributions_list based structure level 1 dcl 5-109 message_reference_parameter based structure level 1 dcl 5-248 message_reference_parameter_ptr automatic pointer dcl 5-255 message_reference_ptr automatic pointer dcl 5-243 message_reference_subject based char unaligned dcl 5-240 message_references_list based structure level 1 dcl 5-219 message_references_list_n_references automatic fixed bin(17,0) dcl 5-55 message_references_list_ptr automatic pointer dcl 5-229 message_text_field_ptr automatic pointer dcl 5-270 message_text_field_text based char unaligned dcl 5-268 message_text_user_field based structure level 1 dcl 5-183 message_text_user_field_text based char unaligned dcl 5-187 message_trace based structure level 1 dcl 5-87 message_trace_n_relays automatic fixed bin(17,0) dcl 5-55 message_trace_ptr automatic pointer dcl 5-105 message_user_field_parameter based structure level 1 dcl 5-208 message_user_field_parameter_ptr automatic pointer dcl 5-215 message_user_field_ptr automatic pointer dcl 5-169 message_user_fields_list based structure level 1 dcl 5-150 original_messages_n_original_messages automatic fixed bin(17,0) dcl 2-23 parse_text_error_list_n_errors automatic fixed bin(17,0) dcl 9-35 parse_text_options_ptr automatic pointer dcl 9-19 qedx_info_n_buffers automatic fixed bin(17,0) dcl 10-42 qedx_info_ptr automatic pointer dcl 10-41 request_line based char unaligned dcl 59 sdm_area based area(1024) dcl 1-40 sdm_data_$default_options external static structure level 1 dcl 3-19 sdm_data_$ec_search_list external static char(32) unaligned dcl 3-17 sdm_data_$ec_suffix external static char(32) unaligned dcl 3-16 sdm_data_$first_invocation external static bit(1) dcl 3-25 sdm_data_$info_directory external static char(168) unaligned dcl 3-11 sdm_data_$special_message external static varying char(256) dcl 3-13 sdm_data_$version external static varying char(32) dcl 3-9 send_mail_options_ptr automatic pointer dcl 4-49 NAMES DECLARED BY EXPLICIT CONTEXT. apply_request 002470 constant entry external dcl 319 fill_request 003320 constant entry external dcl 394 is_empty_list 005736 constant entry internal dcl 678 ref 447 454 459 485 prepare_message 005016 constant entry internal dcl 510 ref 268 378 print_header_request 001221 constant entry external dcl 175 print_message_header 003737 constant entry internal dcl 431 ref 152 195 print_request 000653 constant entry external dcl 129 qedx_request 001442 constant entry external dcl 201 restore_reply_references 005622 constant entry internal dcl 652 ref 264 374 587 sdm_msg_requests_ 000643 constant entry external dcl 35 update_message 005230 constant entry internal dcl 552 ref 306 383 use_text_as_message_body 005541 constant entry internal dcl 627 ref 582 607 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6544 6664 5757 6554 Length 7430 5757 120 530 565 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME sdm_msg_requests_ 596 external procedure is an external procedure. on unit on line 262 70 on unit on unit on line 372 70 on unit print_message_header internal procedure shares stack frame of external procedure sdm_msg_requests_. prepare_message internal procedure shares stack frame of external procedure sdm_msg_requests_. update_message internal procedure shares stack frame of external procedure sdm_msg_requests_. begin block on line 594 begin block shares stack frame of external procedure sdm_msg_requests_. use_text_as_message_body internal procedure shares stack frame of external procedure sdm_msg_requests_. restore_reply_references 114 internal procedure is called by several nonquick procedures. is_empty_list internal procedure shares stack frame of external procedure sdm_msg_requests_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME restore_reply_references 000100 idx restore_reply_references sdm_msg_requests_ 000100 argument_ptr sdm_msg_requests_ 000102 argument_lth sdm_msg_requests_ 000103 n_arguments sdm_msg_requests_ 000104 argument_idx sdm_msg_requests_ 000106 message_buffer_ptr sdm_msg_requests_ 000110 message_text_lth sdm_msg_requests_ 000112 request_line_ptr sdm_msg_requests_ 000114 request_line_lth sdm_msg_requests_ 000116 local_qi sdm_msg_requests_ 000374 fatal_error sdm_msg_requests_ 000375 code sdm_msg_requests_ 000376 removed_reply_references sdm_msg_requests_ 000377 include_header sdm_msg_requests_ 000400 fill sdm_msg_requests_ 000401 auto_write sdm_msg_requests_ 000402 formatting_mode sdm_msg_requests_ 000403 first_command_argument_idx sdm_msg_requests_ 000404 fill_width sdm_msg_requests_ 000414 sdm_invocation_ptr sdm_msg_requests_ 000416 original_messages_ptr sdm_msg_requests_ 000420 message_ptr sdm_msg_requests_ 000422 message_body_section_ptr sdm_msg_requests_ 000424 parse_text_error_list_ptr sdm_msg_requests_ 000450 local_fmo prepare_message 000457 idx prepare_message 000466 local_pto update_message 000473 abort_the_line update_message 000474 code update_message 000475 idx update_message 000510 local_mbsp use_text_as_message_body 000522 code use_text_as_message_body THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as call_ext_out_desc call_ext_out call_int_this call_int_other return enable ext_entry int_entry clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cv_dec_check_ ioa_ mail_system_$add_reply_reference mail_system_$create_message mail_system_$delete_reply_reference mail_system_$free_message mail_system_$replace_body mlsys_utils_$format_message mlsys_utils_$parse_message_text mlsys_utils_$print_address_field mlsys_utils_$print_address_list_field mlsys_utils_$print_date_time_field mlsys_utils_$print_message_body mlsys_utils_$print_message_header mlsys_utils_$print_message_id_field mlsys_utils_$print_text_field qedx_ sdm_text_mgr_$fill_text ssu_$abort_line ssu_$apply_request_util ssu_$arg_count ssu_$arg_ptr ssu_$get_subsystem_and_request_name ssu_$get_temp_segment ssu_$print_message ssu_$release_temp_segment THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt error_table_$fatal_error error_table_$noarg error_table_$smallarg iox_$user_output mlsys_et_$message_too_large mlsys_et_$text_parse_failed sdm_data_$default_from_field sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 35 000637 38 000650 129 000651 132 000660 133 000664 135 000666 137 000677 139 000701 140 000711 141 000727 143 000756 144 000771 146 001004 147 001017 148 001053 149 001101 151 001103 152 001105 153 001106 154 001117 155 001120 157 001151 158 001167 160 001216 175 001217 178 001226 179 001232 181 001234 183 001245 185 001247 186 001257 187 001275 189 001324 190 001337 191 001352 192 001406 193 001434 195 001436 197 001437 201 001440 204 001447 205 001453 207 001455 209 001466 211 001471 212 001475 213 001501 214 001502 216 001503 218 001513 220 001531 223 001554 225 001562 226 001575 228 001607 232 001650 233 001651 234 001667 235 001714 238 001761 240 002012 242 002013 243 002026 245 002040 246 002050 248 002100 249 002101 250 002117 251 002121 252 002123 254 002124 256 002160 257 002206 259 002210 260 002212 262 002213 264 002227 265 002237 266 002256 268 002257 270 002260 271 002262 272 002300 273 002301 275 002303 277 002305 278 002310 279 002313 280 002315 281 002321 282 002323 283 002324 286 002334 288 002341 289 002343 290 002345 291 002350 292 002353 293 002355 294 002360 295 002361 299 002367 300 002401 303 002423 306 002425 308 002426 309 002430 310 002443 313 002465 319 002466 322 002475 323 002501 325 002503 327 002514 329 002544 331 002547 332 002553 333 002554 335 002555 338 002567 340 002605 342 002634 344 002646 348 002707 349 002710 350 002726 351 002753 354 003020 356 003051 358 003052 359 003065 361 003077 363 003133 364 003135 366 003137 369 003166 370 003170 372 003171 374 003205 375 003215 376 003234 378 003235 380 003236 383 003255 385 003256 386 003260 387 003273 390 003315 394 003316 397 003325 398 003331 400 003333 402 003344 404 003347 405 003357 406 003375 411 003452 412 003453 413 003471 414 003516 417 003563 419 003614 420 003615 421 003651 422 003677 424 003701 425 003714 427 003736 431 003737 434 003740 437 003771 441 003774 442 003777 444 004041 447 004070 450 004125 451 004157 454 004206 455 004222 456 004254 459 004303 460 004317 461 004351 463 004400 474 004401 475 004405 477 004443 481 004472 483 004533 485 004562 486 004576 488 004627 491 004656 492 004676 494 004725 495 004730 497 004766 501 005015 510 005016 516 005017 517 005021 518 005023 520 005025 521 005052 523 005053 524 005055 525 005060 526 005065 527 005100 528 005127 529 005132 531 005134 533 005140 535 005141 539 005145 541 005173 542 005201 544 005227 552 005230 561 005231 564 005232 568 005234 571 005247 572 005251 573 005254 574 005262 576 005264 577 005266 580 005326 581 005332 582 005346 585 005347 587 005352 590 005360 591 005362 592 005364 593 005367 595 005377 597 005405 600 005454 601 005456 602 005457 604 005474 607 005475 613 005476 615 005501 617 005505 619 005517 621 005540 627 005541 633 005542 634 005544 635 005546 636 005550 637 005552 639 005554 640 005571 644 005620 652 005621 657 005627 659 005631 661 005634 663 005640 664 005647 666 005673 670 005733 672 005735 678 005736 683 005740 686 005747 ----------------------------------------------------------- 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