COMPILATION LISTING OF SEGMENT sdm_text_mgr_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 05/22/86 1045.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 /* Manager for the text of the message being created by the send_mail subsystem */ 13 14 /* Created: 1 January 1979 by G. Palter */ 15 /* Modified: 9 January 1979 by G. Palter to implement the fill_text entry */ 16 /* Modified: 11 January 1979 by G. Palter to fix bug causing OOB's in terminal_input */ 17 /* Modified: 24 January 1979 by G. Palter to add process_original_text entry */ 18 /* Modified: 31 January 1979 by G. Palter to change filling of indented lines, fix bug in handling original text, and add 19* a program_interrupt handler to terminal_input entry */ 20 /* Modified: 2 January 1980 by G. Palter to fix send_mail bug #003 -- filling the message text occasionally leaves 21* whitespace at the end of lines */ 22 /* Modified: 17 September 1982 by G. Palter to fix mail_system error #0360 -- if -include_original is used along with 23* -input_file, the reply message will contain nulls for the input file rather then the actual text */ 24 /* Modified: 31 March 1983 by G. Palter to use format_document_ to fill text */ 25 /* Modified: September 1983 by G. Palter to convert to new mail system interface and to fix mail_system error #0359 -- 26* the header fields included as part of the original message(s) are reformatted if the user requests that the original 27* message(s) be reformatted */ 28 /* Modified: 8 March 1984 by G. Palter to fix error #0418 -- when replying to a message which has been forwarded with 29* comments, the "-include_original" control argument should cause the comments to be added to the text of the reply 30* message */ 31 32 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen */ 33 34 35 sdm_text_mgr_: 36 procedure (); 37 38 return; /* not an entrypoint */ 39 40 41 /* Common Parameters */ 42 43 dcl P_sdm_invocation_ptr pointer parameter; 44 dcl P_fatal_error bit (1) aligned parameter; /* set ON => an unrecoverable error occured */ 45 46 47 /* process_original_text Parameters */ 48 49 dcl P_original_text_control_ptr pointer parameter; /* -> description of how to process the original text */ 50 51 52 /* terminal_input Parameters */ 53 54 dcl P_input_terminator_type fixed binary parameter; /* set to type of termination (normal/request-loop/qedx) */ 55 dcl P_edit_requests_ptr pointer parameter; /* set -> editor requests input by user (if any) */ 56 dcl P_edit_requests_lth fixed binary (21) parameter; /* set to length of the editor requests */ 57 58 59 /* file_input Parameters */ 60 61 dcl P_input_file_dirname character (*) parameter; /* directory containing the input file */ 62 dcl P_input_file_ename character (*) parameter; /* entryname of the input file */ 63 64 65 /* fill_text Parameters */ 66 67 dcl P_fill_width fixed binary parameter; /* width to use for formatting the text */ 68 69 70 /* Local copies of parameters */ 71 72 dcl 1 original_text_control like send_mail_options.original_text_control aligned based (original_text_control_ptr); 73 dcl original_text_control_ptr pointer; 74 75 dcl edit_requests character (edit_requests_lth) unaligned based (edit_requests_ptr); 76 dcl edit_requests_ptr pointer; 77 dcl edit_requests_lth fixed binary (21); 78 79 dcl terminator_type fixed binary; /* type of terminator seen in text */ 80 81 82 /* Remaining declarations */ 83 84 dcl original_buffer character (4 * sys_info$max_seg_size) unaligned based (original_buffer_ptr); 85 dcl original_text character (original_text_lth) unaligned based (original_buffer_ptr); 86 dcl original_buffer_ptr pointer; 87 dcl original_text_lth fixed binary (21); 88 89 dcl fdoc_buffer character (4 * sys_info$max_seg_size) unaligned based (fdoc_buffer_ptr); 90 dcl fdoc_buffer_ptr pointer; 91 dcl fdoc_text_lth fixed binary (21); 92 93 dcl 1 local_mbsp aligned like message_body_section_parameter; 94 dcl 1 local_fdo aligned like format_document_options; 95 96 dcl message_idx fixed binary; 97 98 dcl the_character character (1) aligned; 99 dcl (input_line_lth, idx) fixed binary (21); 100 dcl last_character_of_sequence fixed binary; 101 102 dcl input_file_ptr pointer; 103 dcl input_file_bc fixed binary (24); 104 105 dcl code fixed binary (35); 106 107 dcl NL character (1) static options (constant) initial (" 108 "); 109 110 dcl sys_info$max_seg_size fixed binary (19) external; 111 dcl iox_$error_output pointer external; 112 dcl iox_$user_input pointer external; 113 114 /* format: off */ 115 dcl (error_table_$recoverable_error, error_table_$smallarg, mlsys_et_$message_too_large) 116 fixed binary (35) external; 117 /* format: on */ 118 119 dcl cu_$arg_list_ptr entry () returns (pointer); 120 dcl cu_$cl entry (bit (36) aligned); 121 dcl cu_$generate_call entry (entry, pointer); 122 dcl format_document_$string entry (character (*), character (*), fixed binary (21), pointer, fixed binary (35)); 123 dcl initiate_file_ entry (character (*), character (*), bit (*), pointer, fixed binary (24), fixed binary (35)); 124 dcl ioa_ entry () options (variable); 125 dcl ioa_$ioa_switch entry () options (variable); 126 dcl iox_$get_line entry (pointer, pointer, fixed binary (21), fixed binary (21), fixed binary (35)); 127 dcl mail_system_$add_body_section entry (pointer, pointer, fixed binary, fixed binary (35)); 128 dcl mail_system_$replace_body entry (pointer, pointer, fixed binary (35)); 129 dcl mlsys_utils_$format_address_list_field 130 entry (character (*) varying, pointer, fixed binary, pointer, fixed binary (21), fixed binary (21), 131 fixed binary (35)); 132 dcl mlsys_utils_$format_date_time_field 133 entry (character (*) varying, fixed binary (71), bit (1) aligned, fixed binary, pointer, fixed binary (21), 134 fixed binary (21), fixed binary (35)); 135 dcl mlsys_utils_$format_message_body 136 entry (pointer, fixed binary, pointer, fixed binary (21), fixed binary (21), fixed binary (35)); 137 dcl mlsys_utils_$format_redistributions_list 138 entry (pointer, fixed binary, fixed binary, pointer, fixed binary (21), fixed binary (21), fixed binary (35)); 139 dcl mlsys_utils_$format_text_field 140 entry (character (*) varying, character (*), bit (1) aligned, fixed binary, pointer, fixed binary (21), 141 fixed binary (21), fixed binary (35)); 142 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 143 dcl ssu_$get_temp_segment entry (pointer, character (*), pointer); 144 dcl ssu_$print_message entry () options (variable); 145 dcl ssu_$release_temp_segment entry (pointer, pointer); 146 dcl terminate_file_ entry (pointer, fixed binary (24), bit (*), fixed binary (35)); 147 148 dcl (cleanup, program_interrupt) condition; 149 150 dcl (addr, clock, divide, index, length, null, string, substr) builtin; 151 152 /* Adds the original message text to the body of the message: The original text consists of the Date, From, and Subject 153* fields, any redistributions with comments, and the actual message body of the original messages. This text is indented 154* as requested and the original message bodies are also reformatted if requested. The messages are processed backwards 155* in order to allow this entrypoint to be called when the message body isn't empty which will be the case when the 156* include_original request is implemented */ 157 158 process_original_text: 159 entry (P_sdm_invocation_ptr, P_original_text_control_ptr, P_fatal_error); 160 161 sdm_invocation_ptr = P_sdm_invocation_ptr; 162 original_text_control_ptr = P_original_text_control_ptr; 163 164 P_fatal_error = "0"b; /* until proven otherwise */ 165 166 if sdm_invocation.original_messages_ptr = null () then return; 167 168 original_messages_ptr = sdm_invocation.original_messages_ptr; 169 if original_messages.n_original_messages = 0 then return; 170 171 input_file_ptr, /* for cleanup handler */ 172 original_buffer_ptr, fdoc_buffer_ptr = null (); 173 174 on condition (cleanup) call release_text_mgr_buffers (); 175 176 call ssu_$get_temp_segment (sdm_invocation.sci_ptr, "original-text", original_buffer_ptr); 177 if original_buffer_ptr = null () then /* ssu_$get_temp_segment has already printed the message */ 178 go to RETURN_FROM_TEXT_MGR_WITH_FATAL_ERROR; 179 180 call ssu_$get_temp_segment (sdm_invocation.sci_ptr, "fdoc-text", fdoc_buffer_ptr); 181 if fdoc_buffer_ptr = null () then go to RETURN_FROM_TEXT_MGR_WITH_FATAL_ERROR; 182 183 local_mbsp.version = MESSAGE_BODY_SECTION_PARAMETER_VERSION_2; 184 local_mbsp.section.section_type = MESSAGE_PREFORMATTED_BODY_SECTION; 185 message_body_section_ptr = addr (local_mbsp.section); 186 187 /*** Setup format_document_ options */ 188 local_fdo.version_number = format_document_version_2; 189 if original_text_control.flags.indent_original_text then 190 local_fdo.indentation = original_text_control.original_text_indentation; 191 else local_fdo.indentation = 0; 192 local_fdo.line_length = sdm_invocation.fill_width; 193 string (local_fdo.switches) = ""b; 194 local_fdo.galley_sw = "1"b; /* ... don't insert page breaks */ 195 local_fdo.literal_sw = "1"b; /* ... don't recognize controls in the text */ 196 local_fdo.dont_break_indented_lines_sw = "1"b; /* ... don't break lines which are indented */ 197 local_fdo.syllable_size = 0; 198 199 200 /* Original message processing loop ... */ 201 202 do message_idx = original_messages.n_original_messages to 1 by -1; 203 204 message_ptr = original_messages.messages (message_idx).message_ptr; 205 206 207 /* ... Process the body of the original message first */ 208 209 original_text_lth = 0; /* nothing in the buffer yet */ 210 call mlsys_utils_$format_message_body (message_ptr, -1, original_buffer_ptr, length (original_buffer), 211 original_text_lth, code); 212 if code = error_table_$smallarg then code = mlsys_et_$message_too_large; 213 if code ^= 0 then 214 call abort_text_mgr (sdm_invocation.sci_ptr, code, 215 "Attempting to include the message body from message #^d.", 216 original_messages.messages (message_idx).message_idx); 217 218 if original_text_control.flags.indent_original_text | original_text_control.flags.fill_original_text 219 then do; 220 local_fdo.dont_fill_sw = ^original_text_control.flags.fill_original_text; 221 call format_document_$string (original_text, fdoc_buffer, fdoc_text_lth, addr (local_fdo), code); 222 if code = error_table_$recoverable_error then code = 0; 223 if code ^= 0 then 224 call abort_text_mgr (sdm_invocation.sci_ptr, mlsys_et_$message_too_large, 225 "Attempting to include the message body from message #^d.", 226 original_messages.messages (message_idx).message_idx); 227 message_preformatted_body_section.text_ptr = fdoc_buffer_ptr; 228 message_preformatted_body_section.text_lth = fdoc_text_lth; 229 end; 230 else do; /* text is already properly formatted */ 231 message_preformatted_body_section.text_ptr = original_buffer_ptr; 232 message_preformatted_body_section.text_lth = original_text_lth; 233 end; 234 235 call mail_system_$add_body_section (sdm_invocation.message_ptr, addr (local_mbsp), (1), code); 236 if code ^= 0 then 237 call abort_text_mgr (sdm_invocation.sci_ptr, code, 238 "Attempting to include the message body from message #^d.", 239 original_messages.messages (message_idx).message_idx); 240 241 242 /* ... Now add the Date, From, and Subject fields and any redistributions with comments */ 243 244 original_text_lth = 0; /* nothing in the buffer again */ 245 246 call mlsys_utils_$format_date_time_field (DATE_TIME_CREATED_FIELDNAME, message.date_time_created, "0"b, 247 (local_fdo.line_length - local_fdo.indentation), original_buffer_ptr, length (original_buffer), 248 original_text_lth, code); 249 if code = error_table_$smallarg then code = mlsys_et_$message_too_large; 250 if code ^= 0 then 251 call abort_text_mgr (sdm_invocation.sci_ptr, code, 252 "Attempting to include the message header from message #^d.", 253 original_messages.messages (message_idx).message_idx); 254 call add_newline (); /* formatting entrypoints leave off the trailing newline */ 255 256 call mlsys_utils_$format_address_list_field (FROM_FIELDNAME, message.from, 257 (local_fdo.line_length - local_fdo.indentation), original_buffer_ptr, length (original_buffer), 258 original_text_lth, code); 259 if code = error_table_$smallarg then code = mlsys_et_$message_too_large; 260 if code ^= 0 then 261 call abort_text_mgr (sdm_invocation.sci_ptr, code, 262 "Attempting to include the message header from message #^d.", 263 original_messages.messages (message_idx).message_idx); 264 call add_newline (); /* formatting entrypoints leave off the trailing newline */ 265 266 if message.subject.text_lth ^= 0 then do; 267 call mlsys_utils_$format_text_field (SUBJECT_FIELDNAME, message_subject, "0"b, 268 (local_fdo.line_length - local_fdo.indentation), original_buffer_ptr, length (original_buffer), 269 original_text_lth, code); 270 if code = error_table_$smallarg then code = mlsys_et_$message_too_large; 271 if code ^= 0 then 272 call abort_text_mgr (sdm_invocation.sci_ptr, code, 273 "Attempting to include the message header from message #^d.", 274 original_messages.messages (message_idx).message_idx); 275 call add_newline (); /* formatting entrypoints leave off the trailing newline */ 276 end; 277 278 if message.n_redistributions > 0 then do; 279 call mlsys_utils_$format_redistributions_list (message_ptr, BRIEF_FORMATTING_MODE, 280 (local_fdo.line_length - local_fdo.indentation), original_buffer_ptr, length (original_buffer), 281 original_text_lth, code); 282 if code = error_table_$smallarg then code = mlsys_et_$message_too_large; 283 if code ^= 0 then 284 call abort_text_mgr (sdm_invocation.sci_ptr, code, 285 "Attempting to include the message header from message #^d.", 286 original_messages.messages (message_idx).message_idx); 287 end; 288 289 if original_text_control.flags.indent_original_text then do; 290 local_fdo.dont_fill_sw = "1"b; /* ... never reformat the header fields: just indent them */ 291 call format_document_$string (original_text, fdoc_buffer, fdoc_text_lth, addr (local_fdo), code); 292 if code = error_table_$recoverable_error then code = 0; 293 if code ^= 0 then 294 call abort_text_mgr (sdm_invocation.sci_ptr, mlsys_et_$message_too_large, 295 "Attempting to include the message header from message #^d.", 296 original_messages.messages (message_idx).message_idx); 297 message_preformatted_body_section.text_ptr = fdoc_buffer_ptr; 298 message_preformatted_body_section.text_lth = fdoc_text_lth; 299 end; 300 else do; /* header is already properly formatted */ 301 message_preformatted_body_section.text_ptr = original_buffer_ptr; 302 message_preformatted_body_section.text_lth = original_text_lth; 303 end; 304 305 call mail_system_$add_body_section (sdm_invocation.message_ptr, addr (local_mbsp), (1), code); 306 if code ^= 0 then 307 call abort_text_mgr (sdm_invocation.sci_ptr, code, 308 "Attempting to include the message header from message #^d.", 309 original_messages.messages (message_idx).message_idx); 310 311 sdm_invocation.date_time_body_modified = clock (); 312 /* for psuedo Date/Message-ID fields */ 313 end; 314 315 if sdm_invocation.message_state = PROCESSED_MESSAGE then sdm_invocation.message_state = MODIFIED_MESSAGE; 316 317 call release_text_mgr_buffers (); 318 319 P_fatal_error = "0"b; 320 321 return; 322 323 324 325 /* Adds a newline to the buffer to separate the Date, From, and Subject fields of the original message */ 326 327 add_newline: 328 procedure (); 329 330 if (original_text_lth + length (NL)) > length (original_buffer) then 331 call abort_text_mgr (sdm_invocation.sci_ptr, mlsys_et_$message_too_large, 332 "Attempting to include the message header from message #^d.", 333 original_messages.messages (message_idx).message_idx); 334 335 begin; 336 337 dcl newline_piece character (length (NL)) unaligned defined (original_buffer) position (original_text_lth + 1); 338 339 newline_piece = NL; 340 end; 341 342 original_text_lth = original_text_lth + length (NL); 343 344 return; 345 346 end add_newline; 347 348 /* format: off */ 349 /* Reads the text of the message from the terminal: the possible terminators for the text are: 350* '.' end of input 351* '\fq' end of input, enter request loop, and 352* '\f...' end of input, enter editor with given requests (if any) */ 353 /* format: on */ 354 355 terminal_input: 356 entry (P_sdm_invocation_ptr, P_input_terminator_type, P_edit_requests_ptr, P_edit_requests_lth, P_fatal_error); 357 358 sdm_invocation_ptr = P_sdm_invocation_ptr; 359 360 input_file_ptr, /* for cleanup handler */ 361 original_buffer_ptr, fdoc_buffer_ptr = null (); 362 363 on condition (cleanup) call release_text_mgr_buffers (); 364 365 call ssu_$get_temp_segment (sdm_invocation.sci_ptr, "original-text", original_buffer_ptr); 366 if original_buffer_ptr = null () then /* ssu_$get_temp_segment has already printed the message */ 367 go to RETURN_FROM_TEXT_MGR_WITH_FATAL_ERROR; 368 369 original_text_lth = 0; /* nothing read yet */ 370 edit_requests_lth = 0; /* no editor requests yet */ 371 372 on condition (program_interrupt) 373 begin; /* stop reading if the user asks us ... */ 374 terminator_type = ENTER_REQUEST_LOOP; 375 go to END_OF_INPUT; 376 end; 377 378 call ioa_ ("Message:"); 379 380 381 /* Message reading loop ... */ 382 383 terminator_type = 0; /* really need do until ... */ 384 input_line_lth = 0; 385 386 do while (terminator_type = 0); 387 original_text_lth = original_text_lth + input_line_lth; 388 389 begin; 390 391 dcl rest_of_original_buffer character (length (original_buffer) - original_text_lth) unaligned 392 defined (original_buffer) position (original_text_lth + 1); 393 394 call iox_$get_line (iox_$user_input, addr (rest_of_original_buffer), length (rest_of_original_buffer), 395 input_line_lth, code); 396 if code ^= 0 then /* ... all errors fatal when an entire segment available */ 397 call abort_text_mgr (sdm_invocation.sci_ptr, code, "Reading the message text."); 398 399 400 /* ... Search for terminators */ 401 402 begin; 403 404 dcl input_line character (input_line_lth) unaligned defined (original_buffer) position (original_text_lth + 1); 405 406 if input_line_lth = 2 then 407 if substr (input_line, 1, 1) = "." then 408 terminator_type = NORMAL_TERMINATION; 409 else ; 410 411 else do; /* look for escape (\) sequences */ 412 idx = index (input_line, "\"); 413 do while (idx ^= 0); /* ... while there are \'s in line */ 414 original_text_lth = original_text_lth + idx - 1; 415 /* ... include everything before the \ in the text */ 416 input_line_lth = input_line_lth - idx + 1; 417 begin; 418 dcl input_line character (input_line_lth) unaligned defined (original_buffer) position (original_text_lth + 1); 419 if input_line_lth >= 2 then do; 420 /* ... stuff after \ on line */ 421 the_character = substr (input_line, 2, 1); 422 if the_character = "f" then do; 423 /*** \f...: terminates input and maybe enters the editor */ 424 if input_line_lth >= 3 then 425 if substr (input_line, 3, 1) = "q" then do; 426 /* ... special case \fq to go straight to request loop */ 427 last_character_of_sequence = 3; 428 go to PROCESS_ENTER_REQUEST_LOOP_ESCAPE; 429 end; 430 terminator_type = ENTER_EDITOR; 431 if input_line_lth >= 4 then do; 432 /* ... if anything after \f and before NL */ 433 edit_requests_lth = input_line_lth - 3; 434 allocate edit_requests in (sdm_area) set (edit_requests_ptr); 435 edit_requests = substr (input_line, 3, edit_requests_lth); 436 end; 437 end; 438 else if the_character = "q" then do; 439 /*** \q or \fq: enter request loop */ 440 last_character_of_sequence = 2; 441 PROCESS_ENTER_REQUEST_LOOP_ESCAPE: 442 terminator_type = ENTER_REQUEST_LOOP; 443 if input_line_lth >= (last_character_of_sequence + 2) then 444 call ssu_$print_message (sdm_invocation.sci_ptr, code, 445 "Text after ""^a"" ignored.", 446 substr (input_line, 1, last_character_of_sequence)); 447 end; 448 else if the_character = "c" then do; 449 /*** \c: escape the next character */ 450 substr (input_line, 1, input_line_lth - 2) = substr (input_line, 3); 451 original_text_lth = original_text_lth + 1; 452 input_line_lth = input_line_lth - 3; 453 end; 454 else do; 455 /*** unknown: take it literally */ 456 original_text_lth = original_text_lth + 1; 457 input_line_lth = input_line_lth - 1; 458 end; 459 end; 460 end; 461 begin; 462 dcl input_line character (input_line_lth) unaligned defined (original_buffer) position (original_text_lth + 1); 463 if terminator_type = 0 then 464 idx = index (input_line, "\"); 465 else idx = 0; 466 end; 467 end; 468 end; 469 end; 470 end; 471 end; 472 473 474 /* We have the message now */ 475 476 END_OF_INPUT: 477 local_mbsp.version = MESSAGE_BODY_SECTION_PARAMETER_VERSION_2; 478 local_mbsp.section.section_type = MESSAGE_PREFORMATTED_BODY_SECTION; 479 message_body_section_ptr = addr (local_mbsp.section); 480 message_preformatted_body_section.text_ptr = original_buffer_ptr; 481 message_preformatted_body_section.text_lth = original_text_lth; 482 483 call mail_system_$add_body_section (sdm_invocation.message_ptr, addr (local_mbsp), (-1), code); 484 if code ^= 0 then 485 call abort_text_mgr (sdm_invocation.sci_ptr, code, 486 "Attempting to place the message text into the message."); 487 488 sdm_invocation.date_time_body_modified = clock ();/* for psuedo Date/Message-ID fields */ 489 490 if sdm_invocation.message_state = PROCESSED_MESSAGE then sdm_invocation.message_state = MODIFIED_MESSAGE; 491 492 call release_text_mgr_buffers (); 493 494 P_input_terminator_type = terminator_type; /* tell the caller what to do next */ 495 496 if edit_requests_lth ^= 0 then /* there are some editing requests */ 497 P_edit_requests_ptr = edit_requests_ptr; 498 else P_edit_requests_ptr = null (); 499 P_edit_requests_lth = edit_requests_lth; 500 501 P_fatal_error = "0"b; /* success */ 502 503 return; 504 505 /* Reads the text of the message from the specified segment */ 506 507 file_input: 508 entry (P_sdm_invocation_ptr, P_input_file_dirname, P_input_file_ename, P_fatal_error); 509 510 sdm_invocation_ptr = P_sdm_invocation_ptr; 511 512 input_file_ptr, /* for cleanup handler */ 513 original_buffer_ptr, fdoc_buffer_ptr = null (); 514 515 on condition (cleanup) call release_text_mgr_buffers (); 516 517 call initiate_file_ (P_input_file_dirname, P_input_file_ename, R_ACCESS, input_file_ptr, input_file_bc, code); 518 if code ^= 0 then 519 call abort_text_mgr (sdm_invocation.sci_ptr, code, "^a", 520 pathname_ (P_input_file_dirname, P_input_file_ename)); 521 522 local_mbsp.version = MESSAGE_BODY_SECTION_PARAMETER_VERSION_2; 523 local_mbsp.section.section_type = MESSAGE_PREFORMATTED_BODY_SECTION; 524 message_body_section_ptr = addr (local_mbsp.section); 525 message_preformatted_body_section.text_ptr = input_file_ptr; 526 message_preformatted_body_section.text_lth = divide ((input_file_bc + 8), 9, 21, 0); 527 528 call mail_system_$add_body_section (sdm_invocation.message_ptr, addr (local_mbsp), (-1), code); 529 if code ^= 0 then 530 call abort_text_mgr (sdm_invocation.sci_ptr, code, 531 "Attempting to place the input file (^a) into the messsage.", 532 pathname_ (P_input_file_dirname, P_input_file_ename)); 533 534 sdm_invocation.date_time_body_modified = clock ();/* for psuedo Date/Message-ID fields */ 535 536 if sdm_invocation.message_state = PROCESSED_MESSAGE then sdm_invocation.message_state = MODIFIED_MESSAGE; 537 538 call release_text_mgr_buffers (); 539 540 P_fatal_error = "0"b; /* success */ 541 542 return; 543 544 /* Reformats the message body text using format_document_ with fill-on and align-left modes */ 545 546 fill_text: 547 entry (P_sdm_invocation_ptr, P_fill_width, P_fatal_error); 548 549 sdm_invocation_ptr = P_sdm_invocation_ptr; 550 551 input_file_ptr, /* for cleanup handler */ 552 original_buffer_ptr, fdoc_buffer_ptr = null (); 553 554 on condition (cleanup) call release_text_mgr_buffers (); 555 556 call ssu_$get_temp_segment (sdm_invocation.sci_ptr, "original-text", original_buffer_ptr); 557 if original_buffer_ptr = null () then /* ssu_$get_temp_segment has already printed the message */ 558 go to RETURN_FROM_TEXT_MGR_WITH_FATAL_ERROR; 559 560 call ssu_$get_temp_segment (sdm_invocation.sci_ptr, "fdoc-text", fdoc_buffer_ptr); 561 if fdoc_buffer_ptr = null () then go to RETURN_FROM_TEXT_MGR_WITH_FATAL_ERROR; 562 563 original_text_lth = 0; /* nothing in the buffer yet */ 564 call mlsys_utils_$format_message_body (sdm_invocation.message_ptr, -1, original_buffer_ptr, 565 length (original_buffer), original_text_lth, code); 566 if code = error_table_$smallarg then code = mlsys_et_$message_too_large; 567 if code ^= 0 then 568 call abort_text_mgr (sdm_invocation.sci_ptr, code, 569 "Attempting to obtain the present message text for reformatting."); 570 571 /*** Setup format_document_ options */ 572 local_fdo.version_number = format_document_version_2; 573 local_fdo.indentation = 0; 574 local_fdo.line_length = P_fill_width; /* ... let caller control the width */ 575 string (local_fdo.switches) = ""b; 576 local_fdo.galley_sw = "1"b; /* ... don't insert page breaks */ 577 local_fdo.literal_sw = "1"b; /* ... don't recognize controls in the text */ 578 local_fdo.dont_break_indented_lines_sw = "1"b; /* ... don't break lines which are indented */ 579 local_fdo.syllable_size = 0; 580 581 call format_document_$string (original_text, fdoc_buffer, fdoc_text_lth, addr (local_fdo), code); 582 if code = error_table_$recoverable_error then code = 0; 583 if code ^= 0 then 584 call abort_text_mgr (sdm_invocation.sci_ptr, code, "Attempting to reformat the message text."); 585 586 local_mbsp.version = MESSAGE_BODY_SECTION_PARAMETER_VERSION_2; 587 local_mbsp.section.section_type = MESSAGE_PREFORMATTED_BODY_SECTION; 588 message_body_section_ptr = addr (local_mbsp.section); 589 message_preformatted_body_section.text_ptr = fdoc_buffer_ptr; 590 message_preformatted_body_section.text_lth = fdoc_text_lth; 591 592 call mail_system_$replace_body (sdm_invocation.message_ptr, addr (local_mbsp), code); 593 if code ^= 0 then 594 call abort_text_mgr (sdm_invocation.sci_ptr, code, 595 "Attempting to place the reformatted message text into the message."); 596 597 sdm_invocation.date_time_body_modified = clock ();/* for psuedo Date/Message-ID fields */ 598 599 if sdm_invocation.message_state = PROCESSED_MESSAGE then sdm_invocation.message_state = MODIFIED_MESSAGE; 600 601 call release_text_mgr_buffers (); 602 603 P_fatal_error = "0"b; /* success */ 604 605 return; 606 607 /* Releases the buffers used by text manager operations */ 608 609 release_text_mgr_buffers: 610 procedure (); 611 612 if fdoc_buffer_ptr ^= null () then call ssu_$release_temp_segment (sdm_invocation.sci_ptr, fdoc_buffer_ptr); 613 614 if original_buffer_ptr ^= null () then 615 call ssu_$release_temp_segment (sdm_invocation.sci_ptr, original_buffer_ptr); 616 617 if input_file_ptr ^= null () then call terminate_file_ (input_file_ptr, 0, TERM_FILE_TERM, (0)); 618 619 return; 620 621 end release_text_mgr_buffers; 622 623 624 625 /* Prints an error message and aborts execution of the current text manager operation */ 626 627 abort_text_mgr: 628 procedure () options (variable); 629 630 call cu_$generate_call (ssu_$print_message, cu_$arg_list_ptr ()); 631 632 if sdm_invocation.debug_mode then do; /* simulate the actions of ssu_$abort_line */ 633 call ioa_$ioa_switch (iox_$error_output, "ssu_error_: Debug mode set; calling cu_$cl."); 634 call cu_$cl (""b); 635 end; 636 637 go to RETURN_FROM_TEXT_MGR_WITH_FATAL_ERROR; 638 639 end abort_text_mgr; 640 641 RETURN_FROM_TEXT_MGR_WITH_FATAL_ERROR: 642 call release_text_mgr_buffers (); 643 644 P_fatal_error = "1"b; /* informs caller that we've already printed the message */ 645 646 return; 647 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 */ 648 649 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 */ 650 651 3 1 /* BEGIN INCLUDE FILE ... send_mail_options.incl.pl1 */ 3 2 /* Created: 28 December 1978 by G. Palter */ 3 3 /* Modified: 25 April 1980 by G. Palter for version 2 -- abbrev processing */ 3 4 /* Modified: 27 January 1981 by G. Palter for version 3 -- increased prompt string length */ 3 5 /* Modified: 16 February 1982 by G. Palter for version 4 -- default profile in addition to current profile */ 3 6 /* Modified: 17 September 1982 by G. Palter for version 5 -- new definition of -fill, -debug, and making -fill/-rql 3 7* dependent on mode of message input (terminal/file) */ 3 8 /* Modified: August 1983 by G. Palter for version 6 -- elimination of -header and -message_id (always ON), elimination of 3 9* -no_abort as the command line -abort/-no_abort no longer sets the default for the send request control argument, 3 10* addition of -auto_write/-no_auto_write as required by the MCR boards, and addition of options pertaining to 3 11* treatment of the original message(s) text when invoked by a reply request */ 3 12 3 13 /* User settable options of the send_mail subsystem */ 3 14 3 15 dcl 1 send_mail_options aligned based (send_mail_options_ptr), 3 16 2 version character (8) unaligned, 3 17 3 18 2 fill_width fixed binary, /* default width for filling */ 3 19 3 20 2 prompt_control aligned, /* controls how send_mail prompts */ 3 21 3 prompt_string character (64) varying, /* ... user-supplied string */ 3 22 3 flags aligned, 3 23 4 prompt_control bit (2) unaligned, /* ... default prompt/use above string/don't prompt */ 3 24 4 pad bit (34) unaligned, 3 25 3 26 2 default_profile_ptr pointer, /* -> default profile to be used if flags.abbrev is ON */ 3 27 2 profile_ptr pointer, /* -> profile to be used if flags.abbrev is ON */ 3 28 3 29 2 original_text_control aligned, /* controls send_mail's treatment of original message text */ 3 30 3 original_text_indentation fixed binary, /* ... # of columns to indent the text if requested */ 3 31 3 flags, 3 32 4 include_original_text bit (1) unaligned, /* ... ON => text from message(s) being answered is to be 3 33* included in the reply before the actual answer */ 3 34 4 indent_original_text bit (1) unaligned, /* ... ON => the original text is to be indented */ 3 35 4 fill_original_text bit (1) unaligned, /* ... ON => the original text is to be re-filled */ 3 36 4 pad bit (33) unaligned, 3 37 3 38 2 flags aligned, 3 39 3 acknowledge bit (1) unaligned, /* ON => user wants acknowledgement from recipients */ 3 40 3 brief bit (1) unaligned, /* ON => suppress "Mail delivered..." messages */ 3 41 3 notify bit (1) unaligned, /* ON => send each recipient a wakeup */ 3 42 3 abbrev bit (1) unaligned, /* ON => use abbrev processing in this invocation */ 3 43 3 debug bit (1) unaligned, /* ON => enable debugging features */ 3 44 3 auto_write bit (1) unaligned, /* ON => qedx request automatically rewrites on quit (sigh) */ 3 45 3 fill_control bit (2) unaligned, /* default/explicit -fill/explicit -no_fill */ 3 46 3 request_loop_control bit (2) unaligned, /* default/explicit -rql/explicit -nrql */ 3 47 3 pad bit (26) unaligned; 3 48 3 49 dcl send_mail_options_ptr pointer; 3 50 3 51 dcl SEND_MAIL_OPTIONS_VERSION_6 character (8) static options (constant) initial ("sdmopt06"); 3 52 3 53 3 54 /* Prompt control options */ 3 55 3 56 dcl (DEFAULT_PROMPT initial ("00"b), /* use default subsystem prompt */ 3 57 USE_PROMPT_STRING initial ("01"b), /* use prompt string supplied by user (via -prompt STR) */ 3 58 NO_PROMPT initial ("10"b)) /* disable subsystem prompt */ 3 59 bit (2) static options (constant); 3 60 3 61 3 62 /* Fill control options */ 3 63 3 64 dcl (DEFAULT_FILL initial ("00"b), /* fill if terminal input; do not fill if file input */ 3 65 FILL initial ("01"b), /* user specified -fill */ 3 66 NO_FILL initial ("10"b)) /* user specified -no_fill */ 3 67 bit (2) static options (constant); 3 68 3 69 3 70 /* Request loop control options */ 3 71 3 72 dcl (DEFAULT_REQUEST_LOOP initial ("00"b), /* enter loop if file input; do not enter if terminal input */ 3 73 REQUEST_LOOP initial ("01"b), /* user specified -request_loop */ 3 74 NO_REQUEST_LOOP initial ("10"b)) /* user specified -no_request_loop */ 3 75 bit (2) static options (constant); 3 76 3 77 /* END INCLUDE FILE ... send_mail_options.incl.pl1 */ 652 653 4 1 /* BEGIN INCLUDE FILE ... sdm_text_mgr_constants.incl.pl1 */ 4 2 /* Created: 31 December 1978 by G. Palter */ 4 3 4 4 /* Constants used by sdm_text_mgr_ to communicate the type of input terminator read from the terminal */ 4 5 4 6 dcl (NORMAL_TERMINATION initial (1), /* '.': transmit the message */ 4 7 ENTER_REQUEST_LOOP initial (2), /* '\fq': enter request loop */ 4 8 ENTER_EDITOR initial (3)) /* '\f...': enter editor */ 4 9 fixed binary static options (constant); 4 10 4 11 /* END INCLUDE FILE ... sdm_text_mgr_constants.incl.pl1 */ 654 655 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 */ 656 657 6 1 /* BEGIN INCLUDE FILE ... mlsys_field_names.incl.pl1 */ 6 2 /* Created: June 1983 by G. Palter */ 6 3 6 4 /* Standard names for all message envelope, header, and redistributions list fields supported by the mail system */ 6 5 6 6 dcl (ACCESS_CLASS_FIELDNAME initial ("Access-Class"), 6 7 ACKNOWLEDGE_TO_FIELDNAME initial ("Acknowledge-To"), 6 8 BCC_FIELDNAME initial ("bcc"), 6 9 CC_FIELDNAME initial ("cc"), 6 10 DATE_TIME_CREATED_FIELDNAME initial ("Date"), 6 11 DATE_TIME_DELIVERED_FIELDNAME initial ("Delivery-Date"), 6 12 DATE_TIME_MAILED_FIELDNAME initial ("Posted-Date"), 6 13 DELIVERED_BY_FIELDNAME initial ("Delivery-By"), 6 14 FROM_FIELDNAME initial ("From"), 6 15 IMPLICIT_ROUTE_FIELDNAME initial ("Route"), 6 16 MESSAGE_ID_FIELDNAME initial ("Message-ID"), 6 17 RELAY_FIELDNAME initial ("Relayed"), 6 18 REPLY_REFERENCES_FIELDNAME initial ("In-Reply-To"), 6 19 REPLY_TO_FIELDNAME initial ("Reply-To"), 6 20 SENDER_FIELDNAME initial ("Sender"), 6 21 SUBJECT_FIELDNAME initial ("Subject"), 6 22 TO_FIELDNAME initial ("To"), 6 23 6 24 6 25 /* Prefix to apply to a field name to produce the field name of the equivalent field in the redistributions list. Ie: 6 26* 6 27* call mlsys_utils_$print_address_field 6 28* (REDISTRIBUTED_PREFIX || FROM_FIELDNAME, ...) */ 6 29 6 30 REDISTRIBUTED_PREFIX initial ("Redistributed-"), 6 31 6 32 6 33 /* Fields in a redistribution which do not have a corresponding non-redistributed field */ 6 34 6 35 REDISTRIBUTED_COMMENT_FIELDNAME initial ("Redistributed-Comment")) 6 36 6 37 character (32) varying static options (constant); 6 38 6 39 6 40 /* END INCLUDE FILE ... mlsys_field_names.incl.pl1 */ 658 659 7 1 /* BEGIN INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 7 2 /* Created: June 1983 by G. Palter */ 7 3 7 4 /* Options for the mlsys_utils_$format_message and mlsys_utils_$print_message entrypoints */ 7 5 7 6 dcl 1 format_message_options aligned based (format_message_options_ptr), 7 7 2 version character (8) unaligned, 7 8 2 line_length fixed binary, /* line length to be used to format/print the message */ 7 9 2 envelope_formatting_mode fixed binary, /* level of detail to be displayed for the envelope ... */ 7 10 2 header_formatting_mode fixed binary, /* ... for the message ... */ 7 11 2 redistributions_list_formatting_mode fixed binary, /* ... and for the redistributions list ... */ 7 12 2 include_body bit (1) aligned; /* ON => include message body when formatting/printing; 7 13* OFF => exclude the message body */ 7 14 7 15 dcl FORMAT_MESSAGE_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsfmo01"); 7 16 7 17 dcl format_message_options_ptr pointer; 7 18 7 19 7 20 /* Defined formatting modes */ 7 21 7 22 dcl (NONE_FORMATTING_MODE initial (0), /* exclude this part of the message */ 7 23 BRIEF_FORMATTING_MODE initial (1), /* include only minimal information from this part of the 7 24* message; not valid for the envelope */ 7 25 DEFAULT_FORMATTING_MODE initial (2), /* include default amount of information from this part */ 7 26 LONG_FORMATTING_MODE initial (3)) /* include all information from this part of the message */ 7 27 fixed binary static options (constant); 7 28 7 29 /* END INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 660 661 8 1 /* BEGIN INCLUDE FILE format_document_options.incl.pl1 8 2* 8 3* Modified 82.10.18 by Paul W. Benjamin to add dont_compress_sw and upgrade 8 4* to version_2. 8 5* Modified 83.02.15 by PWB to add break_word_sw and max_line_length_sw. 8 6* Modified 83.03.01 by PWB to add dont_break_indented_lines_sw. 8 7* Modified 83.03.03 by PWB to add sub_err_sw. 8 8* Modified 83.06.07 by PWB to add dont_fill_sw. 8 9* Modified 83.06.09 by PWB to add hyphenation_sw and syllable_size. 8 10**/ 8 11 8 12 dcl 1 format_document_options aligned based (format_document_options_ptr), 8 13 2 version_number fixed bin, /* input */ 8 14 /* must be format_document_version_2 */ 8 15 2 indentation fixed bin, /* input */ 8 16 /* all lines must be indented by this value */ 8 17 2 line_length fixed bin, /* input */ 8 18 /* initial line length */ 8 19 2 switches, 8 20 3 pgno_sw bit (1) unal, /* input */ 8 21 /* end each page with a centered page number */ 8 22 3 adj_sw bit (1) unal, /* input */ 8 23 /* adjust mode initially on */ 8 24 /* only meaningful if dont_fill_sw = "0"b */ 8 25 3 galley_sw bit (1) unal, /* input */ 8 26 /* galley mode -- no page breaks */ 8 27 3 error_sw bit (1) unal, /* input */ 8 28 /* report all errors on error_output */ 8 29 3 literal_sw bit (1) unal, /* input */ 8 30 /* "1"b - interpret all lines as text */ 8 31 /* "0"b - lines that start with "." are controls */ 8 32 3 file_sw bit (1) unal, /* output */ 8 33 /* has meaning for non-zero storage system status codes */ 8 34 /* "1"b code refers to output file */ 8 35 /* "0"b code refers to input file */ 8 36 3 dont_compress_sw bit (1) unal, /* input */ 8 37 /* "1"b - don't compress white space */ 8 38 /* "0"b - compress white space when filling */ 8 39 3 break_word_sw bit (1) unal, /* input */ 8 40 /* "1"b - break a word rather than exceed line_length */ 8 41 /* "0"b - write an overlength line if no spaces found */ 8 42 3 max_line_length_sw bit (1) unal, /* input */ 8 43 /* "1"b - line_length cannot be exceeded */ 8 44 /* "0"b - line_length can be exceeded (by .pdw controls) */ 8 45 3 dont_break_indented_lines_sw /* input */ 8 46 bit (1) unal, /* don't break a line that begins with whitespace */ 8 47 /* when it is the last line, or the next line is */ 8 48 /* null or the next line begins with whitespace */ 8 49 3 sub_err_sw bit (1) unal, /* input */ 8 50 /* quietly call sub_err_ with diagnostic errors */ 8 51 3 dont_fill_sw bit (1) unal, /* input */ 8 52 /* "1"b - fill mode off initially */ 8 53 /* "0"b - fill mode on initially */ 8 54 3 hyphenation_sw bit (1) unal, 8 55 3 mbz bit (23) unal, /* input */ 8 56 /* MUST be zero */ 8 57 2 syllable_size 8 58 fixed bin; /* input */ 8 59 /* smallest portion of word */ 8 60 /* to be left by hyphenation */ 8 61 8 62 dcl format_document_options_ptr ptr; 8 63 dcl format_document_version_2 fixed bin int static options (constant) init (2); 8 64 dcl format_document_version_1 fixed bin int static options (constant) init (1); 8 65 8 66 /* END INCLUDE FILE format_document_options.incl.pl1 */ 662 663 9 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 9 2* 9 3* Values for the "access mode" argument so often used in hardcore 9 4* James R. Davis 26 Jan 81 MCR 4844 9 5* Added constants for SM access 4/28/82 Jay Pattin 9 6* Added text strings 03/19/85 Chris Jones 9 7**/ 9 8 9 9 9 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 9 11 dcl ( 9 12 N_ACCESS init ("000"b), 9 13 R_ACCESS init ("100"b), 9 14 E_ACCESS init ("010"b), 9 15 W_ACCESS init ("001"b), 9 16 RE_ACCESS init ("110"b), 9 17 REW_ACCESS init ("111"b), 9 18 RW_ACCESS init ("101"b), 9 19 S_ACCESS init ("100"b), 9 20 M_ACCESS init ("010"b), 9 21 A_ACCESS init ("001"b), 9 22 SA_ACCESS init ("101"b), 9 23 SM_ACCESS init ("110"b), 9 24 SMA_ACCESS init ("111"b) 9 25 ) bit (3) internal static options (constant); 9 26 9 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 9 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 9 29 9 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 9 31 static options (constant); 9 32 9 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 9 34 static options (constant); 9 35 9 36 dcl ( 9 37 N_ACCESS_BIN init (00000b), 9 38 R_ACCESS_BIN init (01000b), 9 39 E_ACCESS_BIN init (00100b), 9 40 W_ACCESS_BIN init (00010b), 9 41 RW_ACCESS_BIN init (01010b), 9 42 RE_ACCESS_BIN init (01100b), 9 43 REW_ACCESS_BIN init (01110b), 9 44 S_ACCESS_BIN init (01000b), 9 45 M_ACCESS_BIN init (00010b), 9 46 A_ACCESS_BIN init (00001b), 9 47 SA_ACCESS_BIN init (01001b), 9 48 SM_ACCESS_BIN init (01010b), 9 49 SMA_ACCESS_BIN init (01011b) 9 50 ) fixed bin (5) internal static options (constant); 9 51 9 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 664 665 10 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 10 2 /* format: style2,^inddcls,idind32 */ 10 3 10 4 declare 1 terminate_file_switches based, 10 5 2 truncate bit (1) unaligned, 10 6 2 set_bc bit (1) unaligned, 10 7 2 terminate bit (1) unaligned, 10 8 2 force_write bit (1) unaligned, 10 9 2 delete bit (1) unaligned; 10 10 10 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 10 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 10 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 10 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 10 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 10 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 10 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 10 18 10 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 666 667 668 end sdm_text_mgr_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/22/86 1010.8 sdm_text_mgr_.pl1 >spec>install>1059>sdm_text_mgr_.pl1 648 1 10/27/83 2104.2 sdm_invocation.incl.pl1 >ldd>include>sdm_invocation.incl.pl1 650 2 10/27/83 2104.3 sdm_original_messages.incl.pl1 >ldd>include>sdm_original_messages.incl.pl1 652 3 10/27/83 2104.2 send_mail_options.incl.pl1 >ldd>include>send_mail_options.incl.pl1 654 4 10/27/83 2104.2 sdm_text_mgr_constants.incl.pl1 >ldd>include>sdm_text_mgr_constants.incl.pl1 656 5 05/22/86 1005.9 mlsys_message.incl.pl1 >spec>install>1059>mlsys_message.incl.pl1 658 6 10/27/83 2104.2 mlsys_field_names.incl.pl1 >ldd>include>mlsys_field_names.incl.pl1 660 7 10/27/83 2104.2 mlsys_format_options.incl.pl1 >ldd>include>mlsys_format_options.incl.pl1 662 8 11/01/84 1514.0 format_document_options.incl.pl1 >ldd>include>format_document_options.incl.pl1 664 9 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 666 10 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.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. BRIEF_FORMATTING_MODE 000071 constant fixed bin(17,0) initial dcl 7-22 set ref 279* DATE_TIME_CREATED_FIELDNAME 000023 constant varying char(32) initial dcl 6-6 set ref 246* ENTER_EDITOR constant fixed bin(17,0) initial dcl 4-6 ref 430 ENTER_REQUEST_LOOP constant fixed bin(17,0) initial dcl 4-6 ref 374 441 FROM_FIELDNAME 000012 constant varying char(32) initial dcl 6-6 set ref 256* MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 000034 constant char(8) initial unaligned dcl 5-318 ref 183 476 522 586 MESSAGE_PREFORMATTED_BODY_SECTION constant fixed bin(17,0) initial dcl 5-285 ref 184 478 523 587 MODIFIED_MESSAGE constant fixed bin(17,0) initial dcl 1-47 ref 315 490 536 599 NL 004074 constant char(1) initial unaligned dcl 107 ref 330 337 339 342 NORMAL_TERMINATION constant fixed bin(17,0) initial dcl 4-6 ref 406 PROCESSED_MESSAGE constant fixed bin(17,0) initial dcl 1-47 ref 315 490 536 599 P_edit_requests_lth parameter fixed bin(21,0) dcl 56 set ref 355 499* P_edit_requests_ptr parameter pointer dcl 55 set ref 355 496* 498* P_fatal_error parameter bit(1) dcl 44 set ref 158 164* 319* 355 501* 507 540* 546 603* 644* P_fill_width parameter fixed bin(17,0) dcl 67 ref 546 574 P_input_file_dirname parameter char unaligned dcl 61 set ref 507 517* 518* 518* 529* 529* P_input_file_ename parameter char unaligned dcl 62 set ref 507 517* 518* 518* 529* 529* P_input_terminator_type parameter fixed bin(17,0) dcl 54 set ref 355 494* P_original_text_control_ptr parameter pointer dcl 49 ref 158 162 P_sdm_invocation_ptr parameter pointer dcl 43 ref 158 161 355 358 507 510 546 549 R_ACCESS 000061 constant bit(3) initial unaligned dcl 9-11 set ref 517* SUBJECT_FIELDNAME 000001 constant varying char(32) initial dcl 6-6 set ref 267* TERM_FILE_TERM 000000 constant bit(3) initial unaligned dcl 10-14 set ref 617* addr builtin function dcl 150 ref 185 221 221 235 235 291 291 305 305 394 394 479 483 483 524 528 528 581 581 588 592 592 area_ptr 4 based pointer level 2 dcl 1-6 ref 434 cleanup 000146 stack reference condition dcl 148 ref 174 363 515 554 clock builtin function dcl 150 ref 311 488 534 597 code 000145 automatic fixed bin(35,0) dcl 105 set ref 210* 212 212* 213 213* 221* 222 222* 223 235* 236 236* 246* 249 249* 250 250* 256* 259 259* 260 260* 267* 270 270* 271 271* 279* 282 282* 283 283* 291* 292 292* 293 305* 306 306* 394* 396 396* 443* 483* 484 484* 517* 518 518* 528* 529 529* 564* 566 566* 567 567* 581* 582 582* 583 583* 592* 593 593* cu_$arg_list_ptr 000024 constant entry external dcl 119 ref 630 630 cu_$cl 000026 constant entry external dcl 120 ref 634 cu_$generate_call 000030 constant entry external dcl 121 ref 630 date_time_body_modified 12 based fixed bin(71,0) level 3 dcl 1-6 set ref 311* 488* 534* 597* date_time_created 34 based fixed bin(71,0) level 3 dcl 5-15 set ref 246* debug_mode 15(04) based bit(1) level 3 packed unaligned dcl 1-6 ref 632 divide builtin function dcl 150 ref 526 dont_break_indented_lines_sw 3(09) 000130 automatic bit(1) level 3 packed unaligned dcl 94 set ref 196* 578* dont_fill_sw 3(11) 000130 automatic bit(1) level 3 packed unaligned dcl 94 set ref 220* 290* edit_requests based char unaligned dcl 75 set ref 434 435* edit_requests_lth 000104 automatic fixed bin(21,0) dcl 77 set ref 370* 433* 434 434 435 435 496 499 edit_requests_ptr 000102 automatic pointer dcl 76 set ref 434* 435 496 error_table_$recoverable_error 000016 external static fixed bin(35,0) dcl 115 ref 222 292 582 error_table_$smallarg 000020 external static fixed bin(35,0) dcl 115 ref 212 249 259 270 282 566 fdoc_buffer based char unaligned dcl 89 set ref 221* 291* 581* fdoc_buffer_ptr 000112 automatic pointer dcl 90 set ref 171* 180* 181 221 227 291 297 360* 512* 551* 560* 561 581 589 612 612* fdoc_text_lth 000114 automatic fixed bin(21,0) dcl 91 set ref 221* 228 291* 298 581* 590 fill_original_text 1(02) based bit(1) level 3 packed unaligned dcl 72 ref 218 220 fill_width 14 based fixed bin(17,0) level 2 dcl 1-6 ref 192 flags 15 based structure level 2 in structure "sdm_invocation" dcl 1-6 in procedure "sdm_text_mgr_" flags 1 based structure level 2 in structure "original_text_control" dcl 72 in procedure "sdm_text_mgr_" format_document_$string 000032 constant entry external dcl 122 ref 221 291 581 format_document_options based structure level 1 dcl 8-12 format_document_version_2 constant fixed bin(17,0) initial dcl 8-63 ref 188 572 from 36 based pointer level 3 dcl 5-15 set ref 256* galley_sw 3(02) 000130 automatic bit(1) level 3 packed unaligned dcl 94 set ref 194* 576* header 64 based structure array level 4 in structure "message" dcl 5-15 in procedure "sdm_text_mgr_" header based structure level 2 in structure "message_user_field" dcl 5-163 in procedure "sdm_text_mgr_" header based structure level 2 in structure "message_body_section" dcl 5-274 in procedure "sdm_text_mgr_" header 10 based structure array level 3 in structure "message_user_fields_list" dcl 5-150 in procedure "sdm_text_mgr_" header 30 based structure level 2 in structure "message" dcl 5-15 in procedure "sdm_text_mgr_" header 4 000116 automatic structure level 3 in structure "local_mbsp" dcl 93 in procedure "sdm_text_mgr_" header 4 based structure level 3 in structure "message_user_field_parameter" dcl 5-208 in procedure "sdm_text_mgr_" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 5-313 in procedure "sdm_text_mgr_" idx 000140 automatic fixed bin(21,0) dcl 99 set ref 412* 413 414 416 463* 465* indent_original_text 1(01) based bit(1) level 3 packed unaligned dcl 72 ref 189 218 289 indentation 1 000130 automatic fixed bin(17,0) level 2 dcl 94 set ref 189* 191* 246 256 267 279 573* index builtin function dcl 150 ref 412 463 initiate_file_ 000034 constant entry external dcl 123 ref 517 input_file_bc 000144 automatic fixed bin(24,0) dcl 103 set ref 517* 526 input_file_ptr 000142 automatic pointer dcl 102 set ref 171* 360* 512* 517* 525 551* 617 617* input_line defined char unaligned dcl 418 in begin block on line 417 set ref 421 424 435 443 443 450* 450 input_line defined char unaligned dcl 404 in begin block on line 402 ref 406 412 input_line defined char unaligned dcl 462 in begin block on line 461 ref 463 input_line_lth 000137 automatic fixed bin(21,0) dcl 99 set ref 384* 387 394* 404 406 416* 416 418 419 424 431 433 443 450 452* 452 457* 457 462 ioa_ 000036 constant entry external dcl 124 ref 378 ioa_$ioa_switch 000040 constant entry external dcl 125 ref 633 iox_$error_output 000012 external static pointer dcl 111 set ref 633* iox_$get_line 000042 constant entry external dcl 126 ref 394 iox_$user_input 000014 external static pointer dcl 112 set ref 394* last_character_of_sequence 000141 automatic fixed bin(17,0) dcl 100 set ref 427* 440* 443 443 443 length builtin function dcl 150 ref 210 210 246 246 256 256 267 267 279 279 330 330 337 342 391 394 394 564 564 line_length 2 000130 automatic fixed bin(17,0) level 2 dcl 94 set ref 192* 246 256 267 279 574* literal_sw 3(04) 000130 automatic bit(1) level 3 packed unaligned dcl 94 set ref 195* 577* local_fdo 000130 automatic structure level 1 dcl 94 set ref 221 221 291 291 581 581 local_mbsp 000116 automatic structure level 1 dcl 93 set ref 235 235 305 305 483 483 528 528 592 592 mail_system_$add_body_section 000044 constant entry external dcl 127 ref 235 305 483 528 mail_system_$replace_body 000046 constant entry external dcl 128 ref 592 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 000170 automatic pointer dcl 5-280 set ref 185* 227 228 231 232 297 298 301 302 479* 480 481 524* 525 526 588* 589 590 message_envelope based structure level 1 dcl 5-61 message_idx 6 based fixed bin(17,0) array level 3 in structure "original_messages" dcl 2-12 in procedure "sdm_text_mgr_" set ref 213* 223* 236* 250* 260* 271* 283* 293* 306* 330* message_idx 000135 automatic fixed bin(17,0) dcl 96 in procedure "sdm_text_mgr_" set ref 202* 204 213 223 236 250 260 271 283 293 306* 330 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_text_mgr_" ref 204 message_ptr 000166 automatic pointer dcl 5-53 in procedure "sdm_text_mgr_" set ref 204* 210* 246 256 266 267 267 267 278 279* message_ptr 6 based pointer level 3 in structure "sdm_invocation" dcl 1-6 in procedure "sdm_text_mgr_" set ref 235* 305* 483* 528* 564* 592* 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 315 315* 490 490* 536 536* 599 599* message_subject based char unaligned dcl 5-51 set ref 267* message_text_field based structure level 1 dcl 5-260 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 000022 external static fixed bin(35,0) dcl 115 set ref 212 223* 249 259 270 282 293* 330* 566 mlsys_utils_$format_address_list_field 000050 constant entry external dcl 129 ref 256 mlsys_utils_$format_date_time_field 000052 constant entry external dcl 132 ref 246 mlsys_utils_$format_message_body 000054 constant entry external dcl 135 ref 210 564 mlsys_utils_$format_redistributions_list 000056 constant entry external dcl 137 ref 279 mlsys_utils_$format_text_field 000060 constant entry external dcl 139 ref 267 n_original_messages 3 based fixed bin(17,0) level 2 dcl 2-12 ref 169 202 n_redistributions 10 based fixed bin(17,0) level 2 dcl 5-15 ref 278 newline_piece defined char unaligned dcl 337 set ref 339* null builtin function dcl 150 ref 166 171 177 181 360 366 498 512 551 557 561 612 614 617 original_buffer based char unaligned dcl 84 set ref 210 210 246 246 256 256 267 267 279 279 330 339* 339 391 394 394 394 394 394 394 394 394 406 406 412 412 421 421 424 424 435 435 443 443 443 443 450 450 450 450 463 463 564 564 original_buffer_ptr 000106 automatic pointer dcl 86 set ref 171* 176* 177 210* 210 210 221 231 246* 246 246 256* 256 256 267* 267 267 279* 279 279 291 301 330 339 360* 365* 366 391 394 394 394 394 406 412 421 424 435 443 443 450 450 463 480 512* 551* 556* 557 564* 564 564 581 614 614* 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_text_mgr_" ref 166 168 original_messages_ptr 000164 automatic pointer dcl 2-25 in procedure "sdm_text_mgr_" set ref 168* 169 202 204 213 223 236 250 260 271 283 293 306 330 original_text based char unaligned dcl 85 set ref 221* 291* 581* original_text_control based structure level 1 dcl 72 in procedure "sdm_text_mgr_" original_text_control 32 based structure level 2 in structure "send_mail_options" dcl 3-15 in procedure "sdm_text_mgr_" original_text_control_ptr 000100 automatic pointer dcl 73 set ref 162* 189 189 218 218 220 289 original_text_indentation based fixed bin(17,0) level 2 dcl 72 ref 189 original_text_lth 000110 automatic fixed bin(21,0) dcl 87 set ref 209* 210* 221 221 232 244* 246* 256* 267* 279* 291 291 302 330 339 342* 342 369* 387* 387 391 394 394 394 394 406 412 414* 414 421 424 435 443 443 450 450 451* 451 456* 456 463 481 563* 564* 581 581 pathname_ 000062 constant entry external dcl 142 ref 518 518 529 529 program_interrupt 000154 stack reference condition dcl 148 ref 372 rest_of_original_buffer defined char unaligned dcl 391 set ref 394 394 394 394 sci_ptr 2 based pointer level 2 dcl 1-6 set ref 176* 180* 213* 223* 236* 250* 260* 271* 283* 293* 306* 330* 365* 396* 443* 484* 518* 529* 556* 560* 567* 583* 593* 612* 614* sdm_area based area(1024) dcl 1-40 ref 434 sdm_invocation based structure level 1 dcl 1-6 sdm_invocation_ptr 000162 automatic pointer dcl 1-38 set ref 161* 166 168 176 180 192 213 223 235 236 250 260 271 283 293 305 306 311 315 315 330 358* 365 396 434 443 483 484 488 490 490 510* 518 528 529 534 536 536 549* 556 560 564 567 583 592 593 597 599 599 612 614 632 section 4 000116 automatic structure level 2 dcl 93 set ref 185 479 524 588 section_type 4 000116 automatic fixed bin(17,0) level 4 dcl 93 set ref 184* 478* 523* 587* send_mail_options based structure level 1 dcl 3-15 ssu_$get_temp_segment 000064 constant entry external dcl 143 ref 176 180 365 556 560 ssu_$print_message 000066 constant entry external dcl 144 ref 443 630 630 ssu_$release_temp_segment 000070 constant entry external dcl 145 ref 612 614 string builtin function dcl 150 set ref 193* 575* subject 50 based structure level 3 dcl 5-15 substr builtin function dcl 150 set ref 406 421 424 435 443 443 450* 450 switches 3 000130 automatic structure level 2 dcl 94 set ref 193* 575* syllable_size 4 000130 automatic fixed bin(17,0) level 2 dcl 94 set ref 197* 579* sys_info$max_seg_size 000010 external static fixed bin(19,0) dcl 110 ref 210 210 221 221 246 246 256 256 267 267 279 279 291 291 330 339 391 394 394 394 394 406 412 421 424 435 443 443 450 450 463 564 564 581 581 terminate_file_ 000072 constant entry external dcl 146 ref 617 terminator_type 000105 automatic fixed bin(17,0) dcl 79 set ref 374* 383* 386 406* 430* 441* 463 494 text_lth 4 based fixed bin(21,0) level 2 in structure "message_preformatted_body_section" dcl 5-292 in procedure "sdm_text_mgr_" set ref 228* 232* 298* 302* 481* 526* 590* text_lth 52 based fixed bin(21,0) level 4 in structure "message" dcl 5-15 in procedure "sdm_text_mgr_" ref 266 267 267 text_ptr 2 based pointer level 2 in structure "message_preformatted_body_section" dcl 5-292 in procedure "sdm_text_mgr_" set ref 227* 231* 297* 301* 480* 525* 589* text_ptr 50 based pointer level 4 in structure "message" dcl 5-15 in procedure "sdm_text_mgr_" ref 267 the_character 000136 automatic char(1) dcl 98 set ref 421* 422 438 448 version 2 000116 automatic char(8) level 2 packed unaligned dcl 93 set ref 183* 476* 522* 586* version_number 000130 automatic fixed bin(17,0) level 2 dcl 94 set ref 188* 572* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCESS_CLASS_FIELDNAME internal static varying char(32) initial dcl 6-6 ACKNOWLEDGE_TO_FIELDNAME internal static varying char(32) initial dcl 6-6 A_ACCESS internal static bit(3) initial unaligned dcl 9-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 BCC_FIELDNAME internal static varying char(32) initial dcl 6-6 CC_FIELDNAME internal static varying char(32) initial dcl 6-6 DATE_TIME_DELIVERED_FIELDNAME internal static varying char(32) initial dcl 6-6 DATE_TIME_MAILED_FIELDNAME internal static varying char(32) initial dcl 6-6 DEFAULT_FILL internal static bit(2) initial unaligned dcl 3-64 DEFAULT_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 7-22 DEFAULT_PROMPT internal static bit(2) initial unaligned dcl 3-56 DEFAULT_REQUEST_LOOP internal static bit(2) initial unaligned dcl 3-72 DELIVERED_BY_FIELDNAME internal static varying char(32) initial dcl 6-6 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 9-33 E_ACCESS internal static bit(3) initial unaligned dcl 9-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 FILL internal static bit(2) initial unaligned dcl 3-64 FORMAT_MESSAGE_OPTIONS_VERSION_1 internal static char(8) initial unaligned dcl 7-15 IMPLICIT_ROUTE_FIELDNAME internal static varying char(32) initial dcl 6-6 LONG_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 7-22 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_ID_FIELDNAME internal static varying char(32) initial dcl 6-6 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 MESSAGE_VERSION_2 internal static char(8) initial unaligned dcl 5-49 M_ACCESS internal static bit(3) initial unaligned dcl 9-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 NONE_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 7-22 NO_FILL internal static bit(2) initial unaligned dcl 3-64 NO_PROMPT internal static bit(2) initial unaligned dcl 3-56 NO_REQUEST_LOOP internal static bit(2) initial unaligned dcl 3-72 N_ACCESS internal static bit(3) initial unaligned dcl 9-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 ORIGINAL_MESSAGES_VERSION_1 internal static char(8) initial unaligned dcl 2-21 REDISTRIBUTED_COMMENT_FIELDNAME internal static varying char(32) initial dcl 6-6 REDISTRIBUTED_PREFIX internal static varying char(32) initial dcl 6-6 RELAY_FIELDNAME internal static varying char(32) initial dcl 6-6 REPLY_REFERENCES_FIELDNAME internal static varying char(32) initial dcl 6-6 REPLY_TO_FIELDNAME internal static varying char(32) initial dcl 6-6 REQUEST_LOOP internal static bit(2) initial unaligned dcl 3-72 REW_ACCESS internal static bit(3) initial unaligned dcl 9-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 RE_ACCESS internal static bit(3) initial unaligned dcl 9-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 RW_ACCESS internal static bit(3) initial unaligned dcl 9-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 SA_ACCESS internal static bit(3) initial unaligned dcl 9-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 SDM_INVOCATION internal static char(8) initial unaligned dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 9-30 SENDER_FIELDNAME internal static varying char(32) initial dcl 6-6 SEND_MAIL_OPTIONS_VERSION_6 internal static char(8) initial unaligned dcl 3-51 SMA_ACCESS internal static bit(3) initial unaligned dcl 9-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 SM_ACCESS internal static bit(3) initial unaligned dcl 9-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 S_ACCESS internal static bit(3) initial unaligned dcl 9-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 TERM_FILE_BC internal static bit(2) initial unaligned dcl 10-12 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 10-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 10-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 10-11 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 10-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial unaligned dcl 10-15 TO_FIELDNAME internal static varying char(32) initial dcl 6-6 UNPROCESSED_MESSAGE internal static fixed bin(17,0) initial dcl 1-47 USE_PROMPT_STRING internal static bit(2) initial unaligned dcl 3-56 W_ACCESS internal static bit(3) initial unaligned dcl 9-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 9-36 format_document_options_ptr automatic pointer dcl 8-62 format_document_version_1 internal static fixed bin(17,0) initial dcl 8-64 format_message_options based structure level 1 dcl 7-6 format_message_options_ptr automatic pointer dcl 7-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 send_mail_options_ptr automatic pointer dcl 3-49 terminate_file_switches based structure level 1 packed unaligned dcl 10-4 NAMES DECLARED BY EXPLICIT CONTEXT. END_OF_INPUT 002520 constant label dcl 476 set ref 375 PROCESS_ENTER_REQUEST_LOOP_ESCAPE 002364 constant label dcl 441 ref 428 RETURN_FROM_TEXT_MGR_WITH_FATAL_ERROR 003605 constant label dcl 641 ref 177 181 366 557 561 637 abort_text_mgr 004000 constant entry internal dcl 627 ref 213 223 236 250 260 271 283 293 306 330 396 484 518 529 567 583 593 add_newline 003614 constant entry internal dcl 327 ref 254 264 275 file_input 002640 constant entry external dcl 507 fill_text 003164 constant entry external dcl 546 process_original_text 000326 constant entry external dcl 158 release_text_mgr_buffers 003700 constant entry internal dcl 609 ref 174 317 363 492 515 538 554 601 641 sdm_text_mgr_ 000314 constant entry external dcl 35 terminal_input 002002 constant entry external dcl 355 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4570 4664 4077 4600 Length 5366 4077 74 466 470 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME sdm_text_mgr_ 378 external procedure is an external procedure. on unit on line 174 64 on unit add_newline internal procedure shares stack frame of external procedure sdm_text_mgr_. begin block on line 335 begin block shares stack frame of external procedure sdm_text_mgr_. on unit on line 363 64 on unit on unit on line 372 64 on unit begin block on line 389 begin block shares stack frame of external procedure sdm_text_mgr_. begin block on line 402 begin block shares stack frame of external procedure sdm_text_mgr_. begin block on line 417 begin block shares stack frame of external procedure sdm_text_mgr_. begin block on line 461 begin block shares stack frame of external procedure sdm_text_mgr_. on unit on line 515 64 on unit on unit on line 554 64 on unit release_text_mgr_buffers 90 internal procedure is called by several nonquick procedures. abort_text_mgr 102 internal procedure is declared options(variable). STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME sdm_text_mgr_ 000100 original_text_control_ptr sdm_text_mgr_ 000102 edit_requests_ptr sdm_text_mgr_ 000104 edit_requests_lth sdm_text_mgr_ 000105 terminator_type sdm_text_mgr_ 000106 original_buffer_ptr sdm_text_mgr_ 000110 original_text_lth sdm_text_mgr_ 000112 fdoc_buffer_ptr sdm_text_mgr_ 000114 fdoc_text_lth sdm_text_mgr_ 000116 local_mbsp sdm_text_mgr_ 000130 local_fdo sdm_text_mgr_ 000135 message_idx sdm_text_mgr_ 000136 the_character sdm_text_mgr_ 000137 input_line_lth sdm_text_mgr_ 000140 idx sdm_text_mgr_ 000141 last_character_of_sequence sdm_text_mgr_ 000142 input_file_ptr sdm_text_mgr_ 000144 input_file_bc sdm_text_mgr_ 000145 code sdm_text_mgr_ 000162 sdm_invocation_ptr sdm_text_mgr_ 000164 original_messages_ptr sdm_text_mgr_ 000166 message_ptr sdm_text_mgr_ 000170 message_body_section_ptr sdm_text_mgr_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return tra_ext enable shorten_stack ext_entry ext_entry_desc int_entry alloc_based clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$arg_list_ptr cu_$cl cu_$generate_call format_document_$string initiate_file_ ioa_ ioa_$ioa_switch iox_$get_line mail_system_$add_body_section mail_system_$replace_body mlsys_utils_$format_address_list_field mlsys_utils_$format_date_time_field mlsys_utils_$format_message_body mlsys_utils_$format_redistributions_list mlsys_utils_$format_text_field pathname_ ssu_$get_temp_segment ssu_$print_message ssu_$release_temp_segment terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$recoverable_error error_table_$smallarg iox_$error_output iox_$user_input mlsys_et_$message_too_large sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 35 000313 38 000321 158 000322 161 000336 162 000342 164 000345 166 000346 168 000352 169 000354 171 000356 174 000362 176 000404 177 000433 180 000437 181 000464 183 000470 184 000472 185 000474 188 000476 189 000500 191 000507 192 000510 193 000513 194 000514 195 000516 196 000520 197 000522 202 000523 204 000531 209 000535 210 000536 212 000564 213 000572 218 000631 220 000642 221 000650 222 000713 223 000720 227 000757 228 000762 229 000764 231 000765 232 000770 235 000772 236 001014 244 001053 246 001054 249 001131 250 001137 254 001176 256 001177 259 001245 260 001253 264 001312 266 001313 267 001316 270 001374 271 001402 275 001441 278 001442 279 001445 282 001476 283 001504 289 001543 290 001547 291 001551 292 001614 293 001621 297 001660 298 001663 299 001665 301 001666 302 001671 305 001673 306 001715 311 001754 313 001757 315 001762 317 001767 319 001773 321 001774 355 001775 358 002012 360 002016 363 002022 365 002044 366 002073 369 002077 370 002100 372 002101 374 002115 375 002120 378 002123 383 002136 384 002137 386 002140 387 002142 391 002144 394 002152 396 002175 404 002223 406 002225 409 002242 412 002243 413 002262 414 002264 416 002267 418 002273 419 002275 421 002277 422 002310 424 002314 427 002324 428 002326 430 002327 431 002331 433 002334 434 002336 435 002346 437 002357 438 002360 440 002362 441 002364 443 002366 447 002435 448 002437 450 002441 451 002462 452 002463 453 002465 456 002466 457 002467 462 002471 463 002473 465 002515 467 002516 471 002517 476 002520 478 002522 479 002524 480 002526 481 002530 483 002532 484 002554 488 002602 490 002605 492 002611 494 002615 496 002620 498 002625 499 002627 501 002631 503 002632 507 002633 510 002663 512 002667 515 002673 517 002715 518 002754 522 003030 523 003032 524 003034 525 003036 526 003040 528 003044 529 003066 534 003143 536 003146 538 003152 540 003156 542 003157 546 003160 549 003174 551 003200 554 003204 556 003226 557 003255 560 003261 561 003306 563 003312 564 003313 566 003342 567 003350 572 003376 573 003400 574 003401 575 003404 576 003405 577 003407 578 003411 579 003413 581 003414 582 003457 583 003464 586 003512 587 003514 588 003516 589 003520 590 003522 592 003524 593 003542 597 003570 599 003573 601 003577 603 003603 605 003604 641 003605 644 003611 646 003613 327 003614 330 003615 337 003662 339 003664 342 003675 344 003676 609 003677 612 003705 614 003723 617 003742 619 003776 627 003777 630 004005 632 004030 633 004035 634 004055 637 004066 ----------------------------------------------------------- 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