COMPILATION LISTING OF SEGMENT xmail_Process_Mail_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 09/02/88 0750.8 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 13 /****^ HISTORY COMMENTS: 14* 1) change(86-01-07,Blair), approve(86-01-07,MCR7358), 15* audit(86-05-19,RBarstad), install(86-05-28,MR12.0-1062): 16* Added the variable foreign_mailbox to be set on before calling 17* xmail_Consult_Files_ in Option 14 so we can access mail in other 18* users' mailboxes. 19* 2) change(86-02-25,Blair), approve(86-02-25,MCR7358), 20* audit(86-05-19,RBarstad), install(86-05-28,MR12.0-1062): 21* Change call to xmail_select_msgs_ in OPT (6) so that this option can be 22* used to set the seen switch for messages as well as select them. Now there 23* is a ptr to a structure of seen_msgs, and a switch_on_off flag. 24* 3) change(87-01-21,Blair), approve(87-02-05,MCR7618), 25* audit(87-04-14,RBarstad), install(87-04-26,MR12.1-1025): 26* Pass a new parameter to indicate whether or not we're processing msgs 27* as mail and get the msgs in the mailbox based on the value. 28* 4) change(87-02-10,Blair), approve(87-02-10,MCR7618), 29* audit(87-04-14,RBarstad), install(87-04-26,MR12.1-1025): 30* Check to see if we're processing a reply request when we execute the 31* redisplay_menu condition code and don't display the menu on a reply. 32* This prevents the screen being messed up after a reconnect. Error_list 33* #114. 34* END HISTORY COMMENTS */ 35 36 37 /* Author unknown. 38* 39* 83-06-27 DJ Schimke: Modified to use new mail_system calls and version 2 40* mailboxes. 41* 42* 83-09-22 DJ Schimke: Added calls to mail_system_$read_new_messages in 43* PERFORM_OPTION to inform user of new mail and update mailbox structure so 44* any new messages are available to the user. phx14130 Created the internal 45* procedures: delete_msgs and NEW_MESSAGES. 46* 47* 83-10-04 DJ Schimke: Changed want_to_examine_more internal proc to call 48* xmail_get_str_$yes_no rather than xmail_get_str_. 49* 50* 83-10-10 DJ Schimke: Changed bothg calls to xmail_file_msgs_ to calls to 51* xmail_file_msgs_$current_msgs. The default file is now returned rather than 52* kept as internal static in xmail_file_msgs_. These changes are a result of 53* making xmail_file_msgs_ more robust. 54* 55* 83-11-01 DJ Schimke: Changed the calling sequence of xmail_select_file_. 56* 57* 84-04-11 DJ Schimke: Changed the opening sender_selection_mode from 58* ALL_MESSAGES to ACCESSIBLE_MESSAGES so mailboxes with either "r" or "o" 59* access can be opened and read. 60* 61* 84-07-03 DJ Schimke: Modified to use a three-column menu format and to add 62* the "Write" option which calls xmail_write_msgs_. Replaced the "Message(s)" 63* in many menu options with "Messages" to reduce the width for three-column 64* menu format. 65* 66* 84-08-10 JG Backs: Added a call to xmail_list_msgs_$selected after the 67* call to xmail_select_msgs_ when option (6) Select Messages is chosen, and 68* after the call to xmail_select_msgs_$next when option (5) Next Message is 69* chosen. This will automatically list the summary of current messages. 70* 71* 84-11-09 JG Backs: Modified to allow the updating and redisplay of the 72* current message line after messages are selected (option 6), but before 73* they are listed. This allows for the status line to be current if the 74* listing stops at a more prompt when there are many current messages. 75* 76* 84-12-07 JG Backs: Changed the call to xmail_select_msgs_$next in OPT (2) 77* in PERFORM OPTION proc to only occur if NEW_MESSAGES is true and 78* curr_msgsp is null. This is the same as all the other OPT's. It was 79* testing for curr_msgsp ^= null and in the case of replying and saving to 80* incoming, the current messages line was being incorrectly updated to the 81* next message. TR 18632. 82* 83**/ 84 85 /* format: style1 */ 86 xmail_Process_Mail_: proc (what_next, treat_msgs_as_mail); 87 88 /* Parameter */ 89 90 dcl treat_msgs_as_mail bit (1) aligned; 91 dcl what_next char (9); 92 93 94 /* Automatic */ 95 96 dcl choice fixed bin; 97 dcl code fixed bin (35); 98 dcl def_prompt char (8) var; 99 dcl default_file char (32) var; 100 dcl deletes_ptr ptr; 101 dcl dir char (168); 102 dcl file char (32) varying; 103 dcl file_info char (256) var; 104 dcl multiple_msgs bit (1) aligned; 105 dcl n_interactive_msgs fixed bin; 106 dcl n_new_msgs fixed bin; 107 dcl n_total_msgs fixed bin; 108 dcl n_ordinary_msgs fixed bin; 109 dcl old_no_of_entries fixed bin; 110 dcl pos_line char (256); 111 dcl position char (256) var; 112 dcl redisplay_menu bit (1) aligned; 113 dcl return_to_caller bit (1) aligned; 114 dcl status fixed bin (35); 115 dcl unused_bit bit (1) aligned; 116 dcl unused_bit2 bit (1) aligned; 117 118 dcl 1 auto_open_options like open_options; 119 dcl 1 auto_close_options like close_options; 120 121 /* Constant */ 122 123 dcl ALLOW_OLD bit (1) aligned init ("1"b) int static options (constant); 124 dcl ALLOW_SELECTION bit (1) aligned init ("1"b) int static options (constant); 125 dcl DONT_ALLOW_NEW bit (1) aligned init ("0"b) int static options (constant); 126 dcl NAME init ("xmail_Process_Mail_") char (19) int static options (constant); 127 dcl N_COLUMNS fixed bin int static options (constant) init (3); 128 dcl OPTION_NAMES int static options (constant) init ( 129 "Display", 130 "Reply", 131 "File Original", 132 "Discard Messages", 133 "Next Message", 134 "Select Messages", 135 "List Current Messages", 136 "List All Messages", 137 "Forward", 138 "Retrieve Messages", 139 "File Copy", 140 "Print", 141 "Write", 142 "Process Filed Mail", 143 "Send Mail" 144 ) dim (15) char (30) var; 145 dcl INCLUDE_BY_TYPE bit (1) aligned int static options (constant) init ("1"b); 146 147 /* Based */ 148 149 dcl 1 deletes based (deletes_ptr), 150 2 no_of_entries fixed bin, 151 2 deletes_array (xn refer (no_of_entries)) char (25); 152 153 /* Internal Static */ 154 155 dcl menup int static ptr init (null); 156 157 /* External Static */ 158 159 dcl error_table_$moderr fixed bin (35) ext static; 160 dcl iox_$user_output ptr external static; 161 dcl mlsys_et_$no_more_messages fixed bin (35) ext static; 162 dcl mlsys_et_$no_o_permission fixed bin (35) ext static; 163 dcl mlsys_et_$no_r_permission fixed bin (35) ext static; 164 dcl mlsys_et_$no_s_permission fixed bin (35) ext static; 165 dcl xmail_err_$exit_now ext static fixed bin (35); 166 dcl xmail_err_$help_requested ext static fixed bin (35); 167 dcl xmail_err_$int_prog_err ext static fixed bin (35); 168 169 /* Entries */ 170 171 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 172 dcl hcs_$set_bc_seg entry (ptr, fixed bin (24), fixed bin (35)); 173 dcl ioa_ entry options (variable); 174 dcl ioa_$rsnnl entry () options (variable); 175 dcl mail_system_$close_mailbox entry (ptr, ptr, fixed bin (35)); 176 dcl mail_system_$open_mailbox entry (char (*), char (*), ptr, char (8), ptr, fixed bin (35)); 177 dcl mail_system_$read_new_messages entry (ptr, fixed bin, fixed bin, fixed bin, fixed bin (35)); 178 dcl mail_system_$read_message entry (ptr, fixed bin, fixed bin (35)); 179 dcl timer_manager_$sleep entry (fixed bin (71), bit (2)); 180 dcl xmail_delete_dreply_ entry (ptr); 181 dcl xmail_display_menu_ entry (ptr, fixed bin, fixed bin (35)); 182 dcl xmail_error_$code_last entry () options (variable); 183 dcl xmail_error_$no_code entry () options (variable); 184 dcl xmail_error_$no_print entry () options (variable); 185 dcl xmail_get_choice_ entry (ptr, char (*), char (*), char (*), char (*), bit (1) aligned, char (*), fixed bin, fixed bin (35)); 186 dcl xmail_select_file_$caller_msg entry (char (*), char (*), char (*), bit (1) aligned, bit (1) aligned, 187 char (168), char (32) var, char (*), bit (1) aligned, bit (1) aligned, fixed bin (35)); 188 dcl xmail_select_msgs_$first entry (ptr, ptr, char (*)); 189 dcl xmail_sw_$redisplay entry (); 190 dcl xmail_sw_$update_position entry (char (*)); 191 dcl xmail_undelete_msgs_ entry (ptr, ptr, char (*), char (*)); 192 193 194 /* Condition */ 195 196 dcl (cleanup, program_interrupt, xmail_leave_menu, xmail_redisplay_menu, quit) condition; 197 198 /* Builtin */ 199 200 dcl (addr, null, rtrim, translate) builtin; 201 202 on condition (xmail_redisplay_menu) begin; 203 if menup ^= null then do; 204 if ^xmail_data.reply_request 205 then call menu_$display (xmail_windows.menu.iocb, menup, code); 206 if code ^= 0 207 then do; 208 call xmail_error_$no_code (code, NAME, "l", "Sorry, unable to display menu. This is an internal programming error."); 209 call timer_manager_$sleep (4, "11"b); 210 end; 211 end; 212 end; 213 214 default_file = ""; 215 mailbox_ptr = null; 216 curr_msgsp = null; 217 xmail_data.cleanup_signalled, xmail_data.reply_request = "0"b; 218 219 on condition (xmail_leave_menu) begin; 220 call query_if_more_msgs (); 221 end; 222 223 deletes_ptr = null (); 224 call hcs_$make_seg ("", "seg_of_deletes1", "", 01010b, deletes_ptr, (0)); 225 no_of_entries, old_no_of_entries = 0; 226 227 on condition (cleanup) begin; 228 call leave_menu (); 229 end; 230 if xmail_data.mail_in_incoming then def_prompt = "incoming"; 231 else def_prompt = ""; 232 call xmail_select_file_$caller_msg ("mailbox", "mbx", (def_prompt), ALLOW_OLD, DONT_ALLOW_NEW, dir, file, "Enter name of mailbox you wish to process", unused_bit, unused_bit2, code); 233 if code ^= 0 then call error_leave_menu (); 234 235 if menup ^= null then call xmail_display_menu_ (menup, 2, code); 236 else call GET_MENU (); 237 238 /* Open the mailbox and set the first current message to one */ 239 240 auto_open_options.version = OPEN_OPTIONS_VERSION_2; 241 if treat_msgs_as_mail then 242 auto_open_options.message_selection_mode = ALL_MESSAGES; 243 else auto_open_options.message_selection_mode = ORDINARY_MESSAGES; 244 auto_open_options.sender_selection_mode = ACCESSIBLE_MESSAGES; 245 auto_open_options.message_reading_level = READ_KEYS; 246 247 call mail_system_$open_mailbox (dir, (file), addr (auto_open_options), MAILBOX_VERSION_2, mailbox_ptr, code); 248 if code = 0 then go to all_ok; 249 if code = error_table_$moderr | code = mlsys_et_$no_o_permission | code = mlsys_et_$no_r_permission 250 then do; 251 call ioa_ ("Sorry, but you do not have permission to read the specified mailbox."); 252 call error_leave_menu (); 253 end; 254 else do; 255 call xmail_error_$code_last (xmail_err_$int_prog_err, NAME, "l", "Sorry, unable to get contents of mailbox: ^a", (file)); 256 call error_leave_menu (); 257 end; 258 all_ok: 259 call xmail_select_msgs_$first (mailbox_ptr, curr_msgsp, pos_line); 260 if curr_msgsp = null /* error has occured and been diagnosed */ 261 then call error_leave_menu (); 262 if mailbox.n_messages = 0 263 then do; 264 call ioa_ ("There are no messages in the ""^a"" mailbox.", file); 265 /* call error_leave_menu(); */ 266 curr_msgsp = null (); 267 pos_line = "NONE"; 268 if file = "incoming" then xmail_data.mail_in_incoming = "0"b; 269 goto START; 270 end; 271 on condition (program_interrupt) go to START; 272 on condition (quit) 273 begin; 274 dcl xmail_window_manager_$reconnect entry; 275 call xmail_window_manager_$reconnect (); 276 go to START; 277 end; 278 279 call window_$clear_window (iox_$user_output, code); 280 if code ^= 0 then call xmail_error_$no_print (code, NAME, "l", "Unable to clear user_io window. This is an internal programming error."); 281 282 START: 283 redisplay_menu = "1"b; 284 return_to_caller = "0"b; 285 do while ("1"b); 286 if rtrim (pos_line) = "NONE" then xmail_data.mail_in_incoming = "0"b; 287 call ioa_$rsnnl ("Total messages: ^d", file_info, (0), mailbox.n_messages - mailbox.n_deleted_messages); 288 if curr_msgsp ^= null 289 then if curr_msgs.count > 1 then multiple_msgs = "1"b; 290 else multiple_msgs = "0"b; 291 call ioa_$rsnnl ("Current message^[^ss^;^[s^]^]: ^a", position, (0), curr_msgsp = null, multiple_msgs, pos_line); 292 call xmail_get_choice_ (menup, 293 "Mailbox: " || file, 294 (file_info), 295 (position), 296 xmail_data.normal_usage, 297 redisplay_menu, 298 "", 299 choice, 300 code); 301 redisplay_menu = "0"b; 302 303 if code = 0 304 then do; 305 call PERFORM_OPTION (choice, redisplay_menu); 306 if return_to_caller 307 then do; 308 call leave_menu (); 309 return; 310 end; 311 end; 312 else if code = xmail_err_$help_requested then call EXPLAIN_OPTION (choice); 313 else if code = xmail_err_$exit_now 314 then do; 315 call query_if_more_msgs (); 316 call leave_menu (); 317 go to EXIT; 318 end; 319 else do; 320 call window_$bell (iox_$user_output, code); 321 if code ^= 0 then call xmail_error_$no_print (code, NAME, "l", "Cannot ring terminal bell. This is an internal programming error."); 322 323 end; 324 end; 325 326 EXIT: return; 327 328 PERFORM_OPTION: proc (opt, redisplay); 329 330 dcl xmail_delete_msgs_ entry (ptr, ptr, char (*), char (*)); 331 dcl xmail_display_msgs_ entry (ptr, ptr, ptr); 332 dcl xmail_dprint_msgs_ entry (ptr, ptr); 333 dcl xmail_file_msgs_$current_msgs entry (ptr, ptr, char (32) var, bit (1) aligned); 334 dcl xmail_forward_msg_ entry (ptr, ptr); 335 dcl xmail_list_msgs_ entry (ptr, ptr, ptr); 336 dcl xmail_list_msgs_$selected entry (ptr, ptr, ptr); 337 dcl xmail_list_msgs_$set_seen_switch entry (ptr, ptr, bit (1) aligned); 338 dcl xmail_reply_msg_ entry (ptr, ptr); 339 dcl xmail_select_msgs_ entry (ptr, ptr, ptr, bit (2) aligned, char (*)); 340 dcl xmail_select_msgs_$next entry (ptr, ptr, char (*)); 341 dcl xmail_write_msgs_ entry (ptr, ptr); 342 dcl xmail_Consult_Files_ entry (); 343 dcl hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), fixed bin (35)); 344 dcl unique_chars_ entry (bit (*)) returns (char (15)); 345 346 347 dcl deleted_msg_string char (25); 348 dcl opt fixed bin; 349 dcl message_num fixed bin; 350 dcl idx fixed bin; 351 dcl idx1 fixed bin; 352 dcl dreply_msg_ptr ptr; 353 dcl counter fixed bin; 354 dcl redisplay bit (1) aligned; 355 dcl seen_msgsp ptr; 356 dcl switch bit (1) aligned; 357 dcl switch_on_off bit (2) aligned; 358 dcl SWITCH_ON bit (2) aligned init ("10"b) int static options (constant); 359 dcl MAILBOX_EMPTY_MSG char (17) static options (constant) init 360 ("Mailbox is empty."); 361 362 call window_$clear_window (iox_$user_output, code); 363 go to OPT (opt); 364 365 OPT (1): /* Display Messages Option */ 366 if NEW_MESSAGES () & curr_msgsp = null 367 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 368 if curr_msgsp ^= null () 369 then call xmail_display_msgs_ (mailbox_ptr, curr_msgsp, iox_$user_output); 370 else call ioa_ (MAILBOX_EMPTY_MSG); 371 372 return; 373 374 OPT (2): /* Reply to Messages */ 375 if curr_msgsp ^= null () 376 then call xmail_reply_msg_ (mailbox_ptr, curr_msgsp); 377 else call ioa_ (MAILBOX_EMPTY_MSG); 378 379 if NEW_MESSAGES () & curr_msgsp = null () 380 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 381 return; 382 383 OPT (3): /* File Original Option */ 384 if curr_msgsp ^= null () 385 then do; 386 call xmail_file_msgs_$current_msgs (mailbox_ptr, curr_msgsp, default_file, ALLOW_SELECTION); 387 if default_file ^= "" 388 then call delete_msgs; 389 end; 390 else call ioa_ (MAILBOX_EMPTY_MSG); 391 392 if NEW_MESSAGES () & curr_msgsp = null 393 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 394 return; 395 396 OPT (4): /* Delete Messages Option */ 397 if curr_msgsp ^= null () 398 then call delete_msgs; 399 else call ioa_ (MAILBOX_EMPTY_MSG); 400 401 if NEW_MESSAGES () & curr_msgsp = null 402 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 403 return; 404 405 406 OPT (5): /* Next Message Option */ 407 if curr_msgsp ^= null 408 | (NEW_MESSAGES () & curr_msgsp = null) 409 then do; 410 call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 411 call xmail_list_msgs_$selected (mailbox_ptr, curr_msgsp, iox_$user_output); 412 end; 413 else call ioa_ (MAILBOX_EMPTY_MSG); 414 return; 415 416 OPT (6): /* Select Messages Option */ 417 if curr_msgsp = null then 418 if NEW_MESSAGES () & curr_msgsp = null 419 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 420 if curr_msgsp ^= null 421 then do; 422 call xmail_select_msgs_ (mailbox_ptr, curr_msgsp, seen_msgsp, switch_on_off, pos_line); 423 call window_$clear_window (iox_$user_output, code); 424 if code ^= 0 then call xmail_error_$no_print (code, NAME, "l", "Unable to clear user_io window. This is an internal programming error."); 425 426 /* update and redisplay the new message line before list */ 427 428 if seen_msgsp ^= null 429 then do; 430 if switch_on_off = SWITCH_ON then switch = "1"b; 431 else switch = "0"b; 432 call xmail_list_msgs_$set_seen_switch (mailbox_ptr, seen_msgsp, switch); 433 free seen_msgsp -> curr_msgs; 434 end; 435 else if curr_msgsp ^= null then do; 436 if curr_msgs.count > 1 437 then multiple_msgs = "1"b; 438 else multiple_msgs = "0"b; 439 call ioa_$rsnnl ("Current message^[^ss^;^[s^]^]: ^a", position, (0), curr_msgsp = null, multiple_msgs, pos_line); 440 call xmail_sw_$update_position ((position)); 441 call xmail_sw_$redisplay (); 442 443 call xmail_list_msgs_$selected (mailbox_ptr, curr_msgsp, iox_$user_output); 444 end; 445 end; 446 else call ioa_ (MAILBOX_EMPTY_MSG); 447 return; 448 449 OPT (7): /* Display Summary of Current Messages Option */ 450 if NEW_MESSAGES () & curr_msgsp = null 451 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 452 if curr_msgsp ^= null 453 then call xmail_list_msgs_$selected (mailbox_ptr, curr_msgsp, iox_$user_output); 454 else call ioa_ (MAILBOX_EMPTY_MSG); 455 456 return; 457 458 OPT (8): /* Display Summary of Messages Option */ 459 if NEW_MESSAGES () & curr_msgsp = null 460 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 461 if curr_msgsp ^= null 462 then call xmail_list_msgs_ (mailbox_ptr, curr_msgsp, iox_$user_output); 463 else call ioa_ (MAILBOX_EMPTY_MSG); 464 465 return; 466 467 OPT (9): /* Forward Messages */ 468 if curr_msgsp ^= null () 469 then call xmail_forward_msg_ (mailbox_ptr, curr_msgsp); 470 else call ioa_ (MAILBOX_EMPTY_MSG); 471 472 if NEW_MESSAGES () & curr_msgsp = null 473 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 474 475 return; 476 477 OPT (10): /* Undelete Messages Option */ 478 call xmail_undelete_msgs_ (mailbox_ptr, curr_msgsp, pos_line, ""); 479 if curr_msgsp ^= null () 480 then do; 481 do idx = 1 to curr_msgs.count; 482 message_num = curr_msgs.numbers (idx); 483 if mailbox.messages (message_num).message_ptr = null 484 then do; 485 call mail_system_$read_message (mailbox_ptr, message_num, code); 486 if code ^= 0 487 then call xmail_error_$no_code (code, NAME, "l", "Unable to read message ^d. This is an internal programming error.", message_num); 488 end; 489 dreply_msg_ptr = mailbox.messages (message_num).message_ptr; 490 deleted_msg_string = unique_chars_ ((dreply_msg_ptr -> message.header.message_id)) || ".reply"; 491 do idx1 = 1 to no_of_entries; 492 if deletes_array (idx1) = deleted_msg_string then deletes_array (idx1) = ""; 493 end; 494 end; 495 if rtrim (file) = "incoming" then xmail_data.mail_in_incoming = "1"b; 496 end; 497 if NEW_MESSAGES () & curr_msgsp = null 498 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 499 return; 500 501 OPT (11): /* File Copy Option */ 502 if curr_msgsp ^= null () 503 then call xmail_file_msgs_$current_msgs (mailbox_ptr, curr_msgsp, default_file, ALLOW_SELECTION); 504 else call ioa_ (MAILBOX_EMPTY_MSG); 505 506 if NEW_MESSAGES () & curr_msgsp = null 507 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 508 return; 509 510 OPT (12): /* Print Messages Option */ 511 if curr_msgsp ^= null () 512 then call xmail_dprint_msgs_ (mailbox_ptr, curr_msgsp); 513 else call ioa_ (MAILBOX_EMPTY_MSG); 514 515 if NEW_MESSAGES () & curr_msgsp = null 516 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 517 return; 518 519 OPT (13): /* Write Messages Option */ 520 if curr_msgsp ^= null () 521 then call xmail_write_msgs_ (mailbox_ptr, curr_msgsp); 522 else call ioa_ (MAILBOX_EMPTY_MSG); 523 524 if NEW_MESSAGES () & curr_msgsp = null 525 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 526 return; 527 528 OPT (14): /* Process Filed Mail Option */ 529 if NEW_MESSAGES () & curr_msgsp = null 530 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 531 532 redisplay = "1"b; 533 xmail_data.foreign_mailbox = "1"b; 534 call xmail_Consult_Files_ (); 535 xmail_data.foreign_mailbox = "0"b; 536 return; 537 538 OPT (15): /* Send Mail Option */ 539 if NEW_MESSAGES () & curr_msgsp = null 540 then call xmail_select_msgs_$next (mailbox_ptr, curr_msgsp, pos_line); 541 542 what_next = "send_mail"; 543 return_to_caller = "1"b; 544 return; 545 546 547 delete_msgs: proc; 548 no_of_entries = old_no_of_entries + curr_msgs.count; 549 call hcs_$set_bc_seg (deletes_ptr, no_of_entries * 225 + 36, code); 550 counter = 0; 551 do idx = (old_no_of_entries + 1) to no_of_entries; 552 counter = counter + 1; 553 message_num = curr_msgs.numbers (counter); 554 if mailbox.messages (message_num).message_ptr = null 555 then do; 556 call mail_system_$read_message (mailbox_ptr, message_num, code); 557 if code ^= 0 558 then call xmail_error_$no_code (code, NAME, "l", "Unable to read message ^d. This is an internal programming error.", message_num); 559 end; 560 dreply_msg_ptr = mailbox.messages (message_num).message_ptr; 561 deletes_array (idx) = unique_chars_ ((dreply_msg_ptr -> message.header.message_id)) || ".reply"; 562 call hcs_$status_minf ((mail_dir), (deletes_array (idx)), (0), (0), (0), code); 563 if code = 0 then call ioa_ ("^/ The deferred reply for message no.^d was discarded.^/ To retrieve it, select the ""Retrieve Messages"" option.^/", message_num); 564 end; 565 566 old_no_of_entries = no_of_entries; 567 call xmail_delete_msgs_ (mailbox_ptr, curr_msgsp, pos_line, (file)); 568 return; 569 end delete_msgs; 570 571 NEW_MESSAGES: proc returns (bit (1)); 572 573 dcl new_flag bit (1); 574 575 call mail_system_$read_new_messages (mailbox_ptr, (0), n_new_msgs, (0), status); 576 if status ^= 0 & status ^= mlsys_et_$no_more_messages 577 then call xmail_error_$no_code (status, NAME, "q", "Unable to read mail file. This is an internal programming error."); 578 if n_new_msgs = 1 579 then call ioa_ ("A new message has arrived."); 580 else if n_new_msgs > 1 581 then call ioa_ ("^d new messages have arrived.", n_new_msgs); 582 583 if n_new_msgs = 0 then new_flag = "0"b; 584 else do; 585 new_flag = "1"b; 586 if rtrim (file) = "incoming" 587 then xmail_data.mail_in_incoming = "1"b; 588 end; 589 return (new_flag); 590 end NEW_MESSAGES; 591 592 593 end PERFORM_OPTION; 594 595 596 EXPLAIN_OPTION: proc (opt); 597 598 dcl opt fixed bin; 599 600 dcl xmail_display_help_ entry (char (*), char (*), fixed bin (35)); 601 602 call window_$clear_window (iox_$user_output, code); 603 if code ^= 0 then call xmail_error_$no_print (code, NAME, "l", "Cannot clear user_io window. This is an internal programming error."); 604 call xmail_display_help_ (NAME || ".gi.info", 605 translate (OPTION_NAMES (opt), "_", " "), code); 606 if code ^= 0 then call xmail_error_$no_print (code, NAME, "l", "Cannot clear user_io window. This is an internal programming error."); 607 608 end EXPLAIN_OPTION; 609 610 GET_MENU: proc; 611 612 dcl code fixed bin (35); 613 dcl TITLE init ("Process Incoming Mail") char (21) 614 static options (constant); 615 616 617 dcl xmail_create_menu_ entry (char (*), (*) char (*) var, fixed bin, ptr, fixed bin (35)); 618 619 call xmail_create_menu_ (TITLE, OPTION_NAMES, N_COLUMNS, menup, code); 620 if code ^= 0 621 then do; 622 call xmail_error_$code_last (xmail_err_$int_prog_err, NAME, "l", "Unable to get the ""Executive Mail"" menu."); 623 call error_leave_menu (); 624 625 626 end; 627 call xmail_display_menu_ (menup, 2, code); 628 629 end GET_MENU; 630 631 error_leave_menu: proc (); 632 633 call leave_menu (); 634 go to EXIT; 635 636 end error_leave_menu; 637 638 639 query_if_more_msgs: proc (); 640 641 dcl xmail_select_msgs_$new entry (ptr, ptr, char (*)); 642 dcl mail_system_$get_message_counts entry (char (*), char (*), bit (1) aligned, fixed bin, fixed bin, fixed bin, fixed bin (35)); 643 if mailbox_ptr ^= null 644 then do; 645 call mail_system_$get_message_counts (dir, (file), INCLUDE_BY_TYPE, n_total_msgs, n_ordinary_msgs, n_interactive_msgs, code); 646 if code = 0 then do; 647 if auto_open_options.message_selection_mode = ALL_MESSAGES then 648 n_new_msgs = n_total_msgs - mailbox.n_messages; 649 else n_new_msgs = n_ordinary_msgs - mailbox.n_messages; 650 if n_new_msgs > 0 651 then do; 652 xmail_data.mail_in_incoming = "1"b; 653 if want_to_examine_more () 654 then do; 655 656 call xmail_select_msgs_$new (mailbox_ptr, curr_msgsp, pos_line); 657 call ioa_ ("The newly arrived messages are now the current messages."); 658 go to START; 659 end; 660 end; 661 end; 662 else if code ^= mlsys_et_$no_s_permission & code ^= mlsys_et_$no_r_permission 663 then call xmail_error_$no_code (code, NAME, "q", "Unable to read mail file. This is an internal programming error."); 664 end; 665 end query_if_more_msgs; 666 667 leave_menu: proc (); 668 669 if mailbox_ptr ^= null 670 then do; 671 672 if cleanup_signalled then call xmail_undelete_msgs_ (mailbox_ptr, curr_msgsp, pos_line, ""); 673 xmail_data.cleanup_signalled = "0"b; 674 auto_close_options.version = CLOSE_OPTIONS_VERSION_2; 675 auto_close_options.flags.perform_deletions = "1"b; 676 auto_close_options.flags.report_deletion_errors = "0"b; 677 auto_close_options.flags.mbz = "0"b; 678 call mail_system_$close_mailbox (mailbox_ptr, addr (auto_close_options), code); 679 if code ^= 0 then call xmail_error_$no_code (code, NAME, "l", "Unable to close user mailbox. This is an internal programming error."); 680 end; 681 682 xmail_data.foreign_mailbox = "0"b; 683 if curr_msgsp ^= null () 684 then do; 685 free curr_msgs; 686 curr_msgsp = null (); 687 end; 688 if (deletes_ptr ^= null () & no_of_entries ^= 0) then call xmail_delete_dreply_ (deletes_ptr); 689 old_no_of_entries = 0; 690 691 end leave_menu; 692 693 694 want_to_examine_more: proc () returns (bit (1) aligned); 695 696 dcl yes_sw bit (1) aligned; 697 698 dcl xmail_get_str_$yes_no entry (char (*) var, bit (1) aligned); 699 700 call ioa_ ("^d new message^[s^] ^[have^;has^] arrived.", n_new_msgs, n_new_msgs > 1, n_new_msgs > 1); 701 702 call xmail_get_str_$yes_no ("Do you still wish to quit?", yes_sw); 703 return (^yes_sw); 704 705 end want_to_examine_more; 706 707 1 1 /* BEGIN INCLUDE FILE menu_dcls.incl.pl1 1 2* declarations for the menu_ subroutines MTB 493 1 3* James R. Davis 26 Jan 81 to 20 Februrary 81 1 4**/ 1 5 1 6 /* format: off */ 1 7 1 8 dcl menu_$create entry ( 1 9 (*) char (*) varying, /* input: choices */ 1 10 (*) char (*) varying, /* input: headers */ 1 11 (*) char (*) varying, /* input: trailers */ 1 12 pointer, /* input: to format info */ 1 13 (*) char (1) unal, /* input: keys to use */ 1 14 pointer, /* input: to area */ 1 15 pointer, /* input: to needs str. */ 1 16 pointer, /* to menu: output */ 1 17 fixed bin (35) /* code */ 1 18 ); 1 19 1 20 dcl menu_$display entry ( 1 21 pointer, /* window */ 1 22 pointer, /* menu */ 1 23 fixed bin (35) /* code */ 1 24 ); 1 25 1 26 dcl menu_$get_choice entry ( 1 27 pointer, /* window */ 1 28 pointer, /* menu */ 1 29 pointer, /* to function key info */ 1 30 bit (1) aligned, /* function key hi: output */ 1 31 fixed bin, /* output: selection number */ 1 32 fixed bin (35) /* output: code */ 1 33 ); 1 34 1 35 dcl menu_$describe entry ( 1 36 pointer, /* menu */ 1 37 pointer, /* needs */ 1 38 fixed bin (35) /* code */ 1 39 ); 1 40 1 41 dcl menu_$destroy entry ( 1 42 pointer, /* menu */ 1 43 fixed bin (35) /* code */ 1 44 ); 1 45 1 46 dcl menu_$store entry ( 1 47 character (*), 1 48 character (*), 1 49 character (*), 1 50 bit (1) aligned, 1 51 pointer, 1 52 fixed bin (35)); 1 53 1 54 dcl menu_$retrieve entry ( 1 55 character (*), 1 56 character (*), 1 57 character (*), 1 58 pointer, 1 59 pointer, 1 60 fixed bin (35)); 1 61 dcl menu_$delete entry ( 1 62 character (*), 1 63 character (*), 1 64 character (*), 1 65 fixed binary (35)); 1 66 1 67 dcl menu_$list entry ( 1 68 character (*), 1 69 character (*), 1 70 character (*), 1 71 pointer, 1 72 fixed bin, 1 73 pointer, 1 74 fixed bin (35)); 1 75 1 76 dcl 1 menu_format aligned based (menu_format_ptr), 1 77 2 version fixed bin, 1 78 2 constraints, 1 79 3 max_width fixed bin, 1 80 3 max_height fixed bin, 1 81 2 n_columns fixed bin, 1 82 2 flags, 1 83 3 center_headers bit (1) unal, 1 84 3 center_trailers bit (1) unal, 1 85 3 pad bit (34) unal, 1 86 2 pad_char char (1); 1 87 1 88 dcl 1 menu_requirements aligned based (menu_requirements_ptr), 1 89 2 version fixed bin, 1 90 2 lines_needed fixed bin, 1 91 2 width_needed fixed bin, 1 92 2 n_options fixed bin; 1 93 1 94 dcl menu_format_ptr pointer; 1 95 dcl menu_requirements_ptr pointer; 1 96 1 97 dcl (menu_format_version_1, menu_requirements_version_1) 1 98 fixed bin internal static init (1) options (constant); 1 99 1 100 dcl MENU_OPTION_KEYS (35) char (1) unal internal static 1 101 options (constant) init 1 102 ("1", "2", "3", "4", "5", "6", "7", "8", "9", 1 103 "A", "B", "C", "D", "E", "F", "G", "H", "I", 1 104 "J", "K", "L", "M", "N", "O", "P", "Q", "R", 1 105 "S", "T", "U", "V", "W", "X", "Y", "Z"); 1 106 1 107 /* END INCLUDE FILE ... menu_dcls.incl.pl1 */ 708 709 2 1 /* BEGIN INCLUDE FILE xmail_responses.incl.pl1 */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-02-07,Blair), approve(86-03-06,MCR7358), 2 5* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 2 6* 85-03-05 JG Backs: Modified to add a response of date. 2 7* 85-03-11 JG Backs: Modified to add short forms of keywords (a,l,p,f). 2 8* 85-03-14 JG Backs: Modified to add ASK, SET, and S. 2 9* 2) change(86-02-07,Blair), approve(86-03-06,MCR7358), 2 10* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 2 11* Modify to add SEEN and UNSEEN. 2 12* END HISTORY COMMENTS */ 2 13 2 14 /* Created 06/17/81 by Suzanne Krupp */ 2 15 2 16 dcl (QUESTION char(1) init("?"), 2 17 LIST char(2) init("??"), 2 18 A char(1) init("a"), 2 19 ALL char(3) init("all"), 2 20 ASK char(3) init("ask"), 2 21 DATE char(4) init("date"), 2 22 F char(1) init("f"), 2 23 FIRST char(5) init("first"), 2 24 L char(1) init("l"), 2 25 LAST char(4) init("last"), 2 26 N char (1) init ("n"), 2 27 NO char(2) init("no"), 2 28 NEXT char(4) init("next"), 2 29 NEW char(3) init("new"), 2 30 P char(1) init("p"), 2 31 PREV char(4) init("prev"), 2 32 S char(1) init("s"), 2 33 SEEN char (4) init("seen"), 2 34 SET char(3) init("set"), 2 35 SEARCH char(6) init("search"), 2 36 UNSEEN char (6) init("unseen"), 2 37 Y char (1) init ("y"), 2 38 YES char(3) init("yes")) 2 39 int static options(constant); 2 40 2 41 /* END INCLUDE FILE ... xmail_responses.incl.pl1 */ 710 711 3 1 /* BEGIN INCLUDE FILE: xmail_data.incl.pl1 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(85-12-20,Blair), approve(86-03-06,MCR7358), 3 6* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 7* Modified 03/15/85 by Joanne Backs adding confirm_print flag. 3 8* 2) change(85-12-20,LJAdams), approve(86-03-06,MCR7358), 3 9* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 10* Adding switch to indicate request for menu display came from general help. 3 11* This is so general help menu will be displayed in top screen. 3 12* 3) change(86-01-10,Blair), approve(86-03-06,MCR7358), 3 13* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 14* Add switch to indicate whether or not it is permissible to process mail 3 15* in other users' mailboxes (foreign_mailbox). 3 16* 4) change(86-01-13,Blair), approve(86-03-06,MCR7358), 3 17* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 18* Add bit to indicate whether or not this is a true cleanup condition. 3 19* 5) change(86-02-06,Blair), approve(86-03-06,MCR7358), 3 20* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 21* Rearrange to group all the bit flags together in one word with a pad. 3 22* 6) change(86-03-05,Blair), approve(86-03-05,MCR7358), 3 23* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 24* Change value_seg ptr to value_seg_pathname to avoid the situation where 3 25* you keep around a pointer to a structure which no longer exists. 3 26* 7) change(87-01-16,Blair), approve(87-02-05,MCR7618), 3 27* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 3 28* Add a field to indicate whether or not we should process interactive msgs. 3 29* Increment version to 4.1 so default value will get set. 3 30* 8) change(87-02-13,Blair), approve(87-02-13,MCR7618), 3 31* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 3 32* Add a field to indicate whether or not we're processing a reply so that we 3 33* will be able to rebuild the screens properly after a disconnect occurs. 3 34* Error_list #114. 3 35* 9) change(88-07-26,Blair), approve(88-07-26,MCR7959), 3 36* audit(88-08-25,RBarstad), install(88-09-02,MR12.2-1098): 3 37* Add a bit to indicate whether or not the error segment had to be created 3 38* in the pdir (because we didn't have sma access to the mlsys_dir). 3 39* END HISTORY COMMENTS */ 3 40 3 41 3 42 /* Written 5/13/81 by Paul H. Kyzivat */ 3 43 /* Modified 12/16/81 by S. Krupp to delete unused parts of structure 3 44* and to add n_fkeys_used */ 3 45 /* Modified 12/14/82 by Dave Schimke to make the xmail version a 10 character 3 46* varying string. */ 3 47 /* Modified 09/12/83 by Dave Schimke adding interactive_msgs flag */ 3 48 /* Modified 09/14/83 by Dave Schimke adding moved_user_io */ 3 49 /* Modified 09/06/84 by Joanne Backs adding lists_as_menus flag */ 3 50 /* Modified 09/21/84 by Joanne Backs adding remove_menus flag */ 3 51 3 52 dcl xmail_data_ptr external static ptr init (null); 3 53 3 54 dcl 1 xmail_data aligned based (xmail_data_ptr), 3 55 2 mail_dir char (168) varying, 3 56 2 first_label label, 3 57 2 quit_label label, 3 58 2 value_seg_pathname char (168) varying, 3 59 2 moved_user_io ptr, 3 60 2 normal_usage char (80) unal, 3 61 2 function_key_info, 3 62 3 function_key_data_ptr ptr, 3 63 3 n_fkeys_used fixed bin, 3 64 2 actee, 3 65 3 person char(32) varying, 3 66 3 project char(32) varying, 3 67 2 flags aligned, 3 68 3 mail_in_incoming bit (1) unal, 3 69 3 lists_as_menus bit (1) unal, /* personalization */ 3 70 3 remove_menus bit (1) unal, /* personalization */ 3 71 3 confirm_print bit (1) unal, /* personalization */ 3 72 3 multics_mode bit (1) unal, /* personalization */ 3 73 3 interactive_msgs bit (1) unal, /* personalization */ 3 74 3 foreign_mailbox bit (1) unal, /* read others' mailboxes */ 3 75 3 general_help bit (1) unal, /* indicated requesting gen help*/ 3 76 3 cleanup_signalled bit (1) unal, /* on when true cleanup condition */ 3 77 3 msgs_as_mail bit (1) unal, /* on for include_msgs */ 3 78 3 reply_request bit (1) unal, /* on if we're doing a reply */ 3 79 3 error_seg_in_pdir bit (1) unal, /* on if the error_seg is in the pdir */ 3 80 3 pad bit (24) unal; 3 81 3 82 3 83 3 84 dcl xmail_version char(10) var static options(constant) init("4.1"); 3 85 3 86 /* END INCLUDE FILE: xmail_data.incl.pl1 */ 712 713 4 1 /* begin include fine window_dcls.incl.pl1 BIM June 1981 */ 4 2 /* Modified 9 October 1983 by Jon A. Rochlis to add window_$edit_line. */ 4 3 4 4 /* format: style3 */ 4 5 4 6 declare window_$bell entry (pointer, fixed binary (35)); 4 7 declare window_$clear_region 4 8 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary, fixed binary (35)); 4 9 declare window_$clear_to_end_of_line 4 10 entry (pointer, fixed binary (35)); 4 11 declare window_$clear_to_end_of_window 4 12 entry (pointer, fixed binary (35)); 4 13 declare window_$clear_window 4 14 entry (pointer, fixed binary (35)); 4 15 declare window_$delete_chars 4 16 entry (pointer, fixed binary, fixed binary (35)); 4 17 declare window_$get_cursor_position 4 18 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 4 19 4 20 /* Call window_$get_echoed_chars (iocb_ptr, n_to_read, read_buffer, n_read, read_break, code); */ 4 21 4 22 declare window_$get_echoed_chars 4 23 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 4 24 fixed binary (35)); 4 25 declare window_$get_unechoed_chars 4 26 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 4 27 fixed binary (35)); 4 28 declare window_$insert_text entry (pointer, character (*), fixed binary (35)); 4 29 declare window_$overwrite_text 4 30 entry (pointer, character (*), fixed binary (35)); 4 31 declare window_$position_cursor 4 32 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 4 33 4 34 /* Call window_$position_cursor_rel (iocb_ptr, delta_line, delta_column, code); */ 4 35 4 36 declare window_$position_cursor_rel 4 37 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 4 38 4 39 /* Call window_$scroll_region (iocb_ptr, first_line_of_region, n_lines_of_region, distance_to_scroll_region_negative_is_up, 4 40* code); */ 4 41 4 42 declare window_$scroll_region 4 43 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary (35)); 4 44 declare window_$sync entry (pointer, fixed binary (35)); 4 45 4 46 /* Call window_$write_raw_text (iocb_ptr, text_string, code); */ 4 47 4 48 declare window_$write_raw_text 4 49 entry (pointer, character (*), fixed binary (35)); 4 50 4 51 /* Call window_$write_sync_read (iocb_ptr, prompt_string, n_to_read, read_buffer, n_read, break_char, code); */ 4 52 4 53 declare window_$write_sync_read 4 54 entry (pointer, character (*), fixed bin (21), character (*), fixed binary (21), 4 55 character (1) var, fixed binary (35)); 4 56 4 57 /* Call window_$change_line (iocb_ptr, new_line, code); */ 4 58 4 59 declare window_$change_line entry (pointer, fixed binary, fixed binary (35)); 4 60 4 61 /* Call window_$change_column (iocb_ptr, new_column, code); */ 4 62 4 63 declare window_$change_column 4 64 entry (pointer, fixed binary, fixed binary (35)); 4 65 4 66 /* Call window_$get_one_unechoed (iocb_ptr, char_or_len_0, block_flag, code); */ 4 67 declare ( 4 68 window_$get_one_unechoed, 4 69 window_$get_one_unechoed_char 4 70 ) entry (pointer, character (1) var, bit (1) aligned, fixed binary (35)); 4 71 4 72 declare window_$create entry (pointer, pointer, pointer, fixed binary (35)); 4 73 4 74 declare window_$destroy entry (pointer, fixed binary (35)); 4 75 4 76 declare window_$edit_line entry (pointer, pointer, pointer, fixed bin(21), fixed bin(21), fixed bin(35)); 4 77 4 78 /* call window_$edit_line (iocb_ptr, window_edit_line_info_ptr, buffer_ptr, 4 79* buffer_len, n_returned, code); */ 4 80 4 81 4 82 /* end include file window_dcls.incl.pl1 */ 714 715 5 1 /* BEGIN INCLUDE FILE ... mlsys_open_options.incl.pl1 */ 5 2 /* Created: June 1983 by G. Palter */ 5 3 5 4 /* Options for the mail_system_$open_mailbox entrypoint */ 5 5 5 6 dcl 1 open_options aligned based (open_options_ptr), 5 7 2 version character (8), 5 8 2 message_selection_mode fixed binary, /* what types are to be read (all/ordinary/interactive) */ 5 9 2 sender_selection_mode fixed binary, /* selects messages by who sent them */ 5 10 2 message_reading_level fixed binary; /* specifies whether all or only part of a message is read */ 5 11 5 12 dcl OPEN_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsopn02"); 5 13 5 14 dcl open_options_ptr pointer; 5 15 5 16 5 17 dcl ALL_MESSAGES fixed binary static options (constant) initial (0); 5 18 /* read all messages in the mailbox ... 5 19* ... used as both a message and sender selection mode */ 5 20 5 21 /* Defined message selection modes */ 5 22 5 23 dcl (ORDINARY_MESSAGES initial (1), /* read only ordinary messages */ 5 24 INTERACTIVE_MESSAGES initial (2)) /* read only interactive messages */ 5 25 fixed binary static options (constant); 5 26 5 27 5 28 /* Defined sender selection modes */ 5 29 5 30 dcl (ACCESSIBLE_MESSAGES initial (-1), /* reads whatever messages are accessible */ 5 31 OWN_MESSAGES initial (1), /* reads only those messages sent by this user */ 5 32 NOT_OWN_MESSAGES initial (2)) /* reads only those messages not sent by this user */ 5 33 fixed binary static options (constant); 5 34 5 35 5 36 /* Defined message reading levels */ 5 37 5 38 dcl (READ_KEYS initial (1), /* reads only the unique key of each message */ 5 39 READ_MESSAGES initial (2)) /* reads the entire content of each message */ 5 40 fixed binary static options (constant); 5 41 5 42 /* END INCLUDE FILE ... mlsys_open_options.incl.pl1 */ 716 717 6 1 /* BEGIN INCLUDE FILE ... mlsys_close_options.incl.pl1 */ 6 2 /* Created: June 1983 by G. Palter */ 6 3 6 4 /* Options for the mail_system_$close_mailbox entrypoint */ 6 5 6 6 dcl 1 close_options aligned based (close_options_ptr), 6 7 2 version character (8) unaligned, 6 8 2 flags, 6 9 3 perform_deletions bit (1) unaligned, /* ON => perform deletions requested earlier */ 6 10 3 report_deletion_errors bit (1) unaligned, /* ON => report problems deleting via sub_err_ */ 6 11 3 mbz bit (34) unaligned; /* must be set to ""b by the caller */ 6 12 6 13 dcl CLOSE_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsclo02"); 6 14 6 15 dcl close_options_ptr pointer; 6 16 6 17 /* END INCLUDE FILE ... mlsys_close_options.incl.pl1 */ 718 719 7 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 7 2 /* Created: April 1983 by G. Palter */ 7 3 7 4 /* Definition of a mailbox as used by the Multics Mail System */ 7 5 7 6 dcl 1 mailbox aligned based (mailbox_ptr), 7 7 2 version character (8) unaligned, 7 8 2 reserved bit (144), /* for exclusive use of the mail system */ 7 9 2 mailbox_address pointer, /* mail system address of this mailbox */ 7 10 2 mailbox_dirname character (168) unaligned, /* directory containing this mailbox */ 7 11 2 mailbox_ename character (32) unaligned, /* entry name of this mailbox (includes ".mbx") */ 7 12 2 mailbox_type fixed binary, /* type of mailbox (see below) */ 7 13 2 mode bit (36), /* user's effective extended access to this mailbox */ 7 14 2 flags, 7 15 3 salvaged bit (1) unaligned, /* ON => this mailbox has been salvaged since last open */ 7 16 3 reserved bit (35) unaligned, /* for exclusive use of the mail system */ 7 17 2 message_selection_mode fixed binary, /* types of messages read: all/ordinary/interactive */ 7 18 2 sender_selection_mode fixed binary, /* whose messages were read: all/own/not-own */ 7 19 2 message_reading_level fixed binary, /* how much of each message read: keys/messages */ 7 20 2 n_messages fixed binary, /* total # of messages in this mailbox structure */ 7 21 2 n_ordinary_messages fixed binary, /* ... # of ordinary messages here */ 7 22 2 n_interactive_messages fixed binary, /* ... # of interactive messages here */ 7 23 2 n_deleted_messages fixed binary, /* ... # of messages here marked for later deletion */ 7 24 2 messages (mailbox_n_messages refer (mailbox.n_messages)), 7 25 3 key bit (72), /* unique key to read this message if not already read */ 7 26 3 message_ptr pointer; /* -> the message structure */ 7 27 7 28 dcl MAILBOX_VERSION_2 character (8) static options (constant) initial ("mlsmbx02"); 7 29 7 30 dcl mailbox_ptr pointer; 7 31 7 32 dcl mailbox_n_messages fixed binary; /* for exclusive use of the mail system */ 7 33 7 34 7 35 /* Types of mailboxes distinguished by the mail system */ 7 36 7 37 dcl (USER_DEFAULT_MAILBOX initial (1), /* the user's default mailbox for receiving mail */ 7 38 USER_LOGBOX initial (2), /* the user's logbox */ 7 39 SAVEBOX initial (3), /* a savebox */ 7 40 OTHER_MAILBOX initial (4)) /* any other type of mailbox */ 7 41 fixed binary static options (constant); 7 42 7 43 /* END INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 720 721 8 1 /* Begin include file: xmail_windows.incl.pl1 */ 8 2 /* Created 6/24/81 by Paul Kyzivat */ 8 3 /* Mofified 6/20/84 by DJ Schimke to add the mm_status window */ 8 4 8 5 dcl 1 xmail_windows aligned external static, 8 6 2 initial_position fixed bin, 8 7 2 min_lines_needed fixed bin, 8 8 2 (status, mm_status, menu, bottom) aligned like xmail_window_info_format; 8 9 8 10 dcl 1 xmail_window_info_format aligned based, 8 11 2 iocb ptr, 8 12 2 position aligned like window_position_info; 8 13 9 1 /* BEGIN INCLUDE FILE ... window_control_info.incl.pl1 JRD */ 9 2 /* format: style3 */ 9 3 9 4 /* Modified 26 January 1982 by William York to add the set_more_handler 9 5* and reset_more_handler control orders. */ 9 6 /* Modified October 1982 by WMY to add set and get_token_characters, 9 7* set and get_more_prompt. */ 9 8 /* Modified February 1983 by WMY to add the line_editor_key_binding_info 9 9* structure. */ 9 10 /* Modified 30 September 1983 by Jon A. Rochlis to add the origin.column for 9 11* partial screen width windows. */ 9 12 /* Modified 9 October 1983 by JR to add version 1 window_edit_line_info. 9 13* This should be removed when window_info.incl.pl1 is created. */ 9 14 /* Modified 29 February 1984 by Barmar to add version 1 9 15* get_editor_key_bindings_info. */ 9 16 /* Modified 1 March 1984 by Barmar to add version 1 9 17* set_editor_key_bindings_info. */ 9 18 /* Modified 2 March 1984 by Barmar to upgrade to version 3 9 19* line_editor_key_bindings_info, which includes the name, description, and 9 20* info path */ 9 21 9 22 /* structure for the set_window_info and get_window_info 9 23* control orders. */ 9 24 9 25 dcl 1 window_position_info 9 26 based (window_position_info_ptr), 9 27 2 version fixed bin, 9 28 2 origin, 9 29 3 column fixed bin, 9 30 3 line fixed bin, 9 31 2 extent, 9 32 3 width fixed bin, 9 33 3 height fixed bin; 9 34 9 35 dcl (window_position_info_version, window_position_info_version_1) 9 36 fixed bin internal static init (1) options (constant); 9 37 dcl window_position_info_ptr 9 38 pointer; 9 39 9 40 /* structure for the set_window_status and get_window_status 9 41* control orders */ 9 42 9 43 declare window_status_info_ptr 9 44 pointer; 9 45 declare 1 window_status_info 9 46 aligned based (window_status_info_ptr), 9 47 2 version fixed bin, 9 48 2 status_string bit (36) aligned; /* string (window_status) */ 9 49 /* see window_status.incl.pl1 for the contents of this string */ 9 50 9 51 9 52 declare (window_status_version, window_status_version_1) 9 53 fixed bin internal static init (1) options (constant); 9 54 9 55 /* info structure for the set_more_responses and get_more_responses control 9 56* orders */ 9 57 9 58 9 59 dcl 1 more_responses_info 9 60 aligned based (more_responses_info_ptr), 9 61 2 version fixed bin, 9 62 2 n_yeses fixed bin, /* how many valid characters in the strings below */ 9 63 2 n_noes fixed bin, 9 64 2 yeses char (32) unaligned, 9 65 2 noes char (32) unaligned; 9 66 9 67 dcl (more_responses_info_version_1, more_responses_version) 9 68 fixed bin internal static init (1) options (constant); 9 69 dcl more_responses_info_ptr 9 70 pointer; 9 71 9 72 /* structure for the set_break_table and get_break_table 9 73* control orders */ 9 74 9 75 declare break_table_ptr pointer; 9 76 declare 1 break_table_info aligned based (break_table_ptr), 9 77 2 version fixed bin, 9 78 2 breaks (0:127) bit (1) unaligned; 9 79 9 80 declare (break_table_info_version, break_table_info_version_1) 9 81 fixed bin init (1) internal static options (constant); 9 82 9 83 declare 1 more_handler_info aligned based (more_handler_info_ptr), 9 84 2 version fixed bin, 9 85 2 flags unaligned, 9 86 3 old_handler_valid 9 87 bit(1), 9 88 3 pad bit(35), 9 89 2 more_handler entry (pointer, bit(1) aligned), 9 90 2 old_more_handler entry (pointer, bit(1) aligned); 9 91 9 92 declare more_handler_info_ptr pointer; 9 93 9 94 declare (more_handler_info_version, more_handler_info_version_3) 9 95 fixed bin internal static options (constant) init (3); 9 96 9 97 declare 1 token_characters_info aligned based (token_characters_info_ptr), 9 98 2 version char(8), 9 99 2 token_character_count 9 100 fixed bin, 9 101 2 token_characters 9 102 char (128) unaligned; 9 103 9 104 declare token_characters_info_ptr pointer; 9 105 9 106 declare token_characters_info_version_1 char(8) internal static options (constant) init ("wtci0001"); 9 107 9 108 declare 1 more_prompt_info aligned based (more_prompt_info_ptr), 9 109 2 version char(8), 9 110 2 more_prompt char(80); 9 111 9 112 declare more_prompt_info_ptr pointer; 9 113 9 114 declare more_prompt_info_version_1 char(8) static options (constant) init ("wsmp0001"); 9 115 9 116 /* Line editor stuff ... */ 9 117 9 118 dcl line_editor_key_binding_info_ptr 9 119 pointer; 9 120 9 121 dcl line_editor_binding_count 9 122 fixed bin; 9 123 dcl line_editor_longest_sequence 9 124 fixed bin; 9 125 /* For each binding, action defines what to do for that sequence. Constants 9 126* are defined in window_editor_values.incl.pl1. Only if action is set to 9 127* EXTERNAL_ROUTINE does the editor_routine entry variable get examined. */ 9 128 9 129 dcl 1 line_editor_key_binding_info 9 130 aligned based (line_editor_key_binding_info_ptr), 9 131 2 version char(8), 9 132 2 binding_count fixed bin, 9 133 2 longest_sequence fixed bin, 9 134 2 bindings (line_editor_binding_count refer 9 135 (line_editor_key_binding_info.binding_count)), 9 136 3 sequence char(line_editor_longest_sequence refer 9 137 (line_editor_key_binding_info.longest_sequence)) varying, 9 138 3 action fixed bin, 9 139 3 numarg_action fixed binary, 9 140 3 editor_routine entry (pointer, fixed bin(35)), 9 141 3 name char (64) varying unaligned, 9 142 3 description char (256) varying unaligned, 9 143 3 info_path unaligned, 9 144 4 info_dir char (168), 9 145 4 info_entry char (32); 9 146 9 147 9 148 dcl line_editor_key_binding_info_version_3 9 149 char(8) static options (constant) init ("lekbi003"); 9 150 9 151 dcl 1 get_editor_key_bindings_info aligned based (get_editor_key_bindings_info_ptr), 9 152 2 version char (8), 9 153 2 flags, 9 154 3 entire_state bit (1) unaligned, 9 155 3 mbz bit (35) unaligned, 9 156 2 key_binding_info_ptr ptr, 9 157 2 entire_state_ptr ptr; 9 158 9 159 dcl get_editor_key_bindings_info_ptr ptr; 9 160 dcl get_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("gekbi_01"); 9 161 9 162 dcl 1 set_editor_key_bindings_info aligned 9 163 based (set_editor_key_bindings_info_ptr), 9 164 2 version char (8), 9 165 2 flags, 9 166 3 replace bit (1) unaligned, 9 167 3 update bit (1) unaligned, 9 168 3 mbz bit (34) unaligned, 9 169 2 key_binding_info_ptr ptr; 9 170 9 171 dcl set_editor_key_bindings_info_ptr ptr; 9 172 dcl set_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("sekbi_01"); 9 173 9 174 /* This should be moved to window_info.incl.pl1 when that include file is 9 175* created. JR 2/1/84 */ 9 176 9 177 dcl 1 window_edit_line_info 9 178 based (window_edit_line_info_ptr), 9 179 2 version char (8), 9 180 2 line_ptr ptr, 9 181 2 line_length fixed bin (21); /* later we will hack initial cursor position, key bindings, etc. */ 9 182 9 183 dcl window_edit_line_info_version_1 9 184 char (8) static options (constant) init ("wedl0001"); 9 185 9 186 dcl window_edit_line_info_ptr 9 187 ptr; 9 188 9 189 /* END INCLUDE FILE window_control_info.incl.pl1 */ 8 14 8 15 8 16 /* End include file: xmail_windows.incl.pl1 */ 722 723 10 1 /* Created 06/17/81 by Suzanne Krupp */ 10 2 10 3 dcl n_messages fixed bin; 10 4 dcl MSG_STRUCT_VERSION_1 fixed bin int static options(constant) init(1); 10 5 10 6 dcl curr_msgsp ptr; 10 7 10 8 dcl 1 curr_msgs based(curr_msgsp), 10 9 2 version fixed bin, 10 10 2 count fixed bin, 10 11 2 numbers (n_messages refer(curr_msgs.count)) fixed bin; 10 12 10 13 dcl nonexist_msgsp ptr; 10 14 10 15 dcl 1 nonexist_msgs based(nonexist_msgsp), 10 16 2 version fixed bin, 10 17 2 count fixed bin, 10 18 2 numbers (n_messages refer(nonexist_msgs.count)) fixed bin; 10 19 10 20 dcl msg_structp ptr; 10 21 10 22 dcl 1 msg_struct based(msg_structp), 10 23 2 version fixed bin, 10 24 2 count fixed bin, 10 25 2 numbers(n_messages refer(msg_struct.count)) fixed bin; 725 11 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 11 2 11 3 11 4 /****^ HISTORY COMMENTS: 11 5* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 11 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 11 7* Added seen switch to message. 11 8* END HISTORY COMMENTS */ 11 9 11 10 11 11 /* Created: June 1983 by G. Palter */ 11 12 11 13 /* Definition of a message as used by the Multics Mail System */ 11 14 11 15 dcl 1 message aligned based (message_ptr), 11 16 2 version character (8) unaligned, 11 17 2 reserved bit (144), /* for exclusive use of the mail system */ 11 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 11 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 11 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 11 21 2 n_body_sections fixed binary, /* # of sections in the body */ 11 22 2 flags, 11 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 11 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 11 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 11 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 11 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 11 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 11 29 2 pad bit (36), 11 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 11 31 2 header, 11 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 11 33 3 access_class bit (72), /* AIM access class of this message */ 11 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 11 35 3 from pointer, /* -> address list of author(s) of the message */ 11 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 11 37 3 to pointer, /* -> address list of primary recipients */ 11 38 3 cc pointer, /* -> address list of secondary recipients */ 11 39 3 bcc pointer, /* -> address list of blind recipients */ 11 40 3 subject like message_text_field, /* subject of the message */ 11 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 11 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 11 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 11 44 2 body, 11 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 11 46 3 pad bit (36), 11 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 11 48 11 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 11 50 11 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 11 52 11 53 dcl message_ptr pointer; 11 54 11 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 11 56 message_references_list_n_references) 11 57 fixed binary; /* for exclusive use of the mail system */ 11 58 11 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 11 60 11 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 11 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 11 63 2 sender pointer, /* -> address of entity that mailed the message */ 11 64 2 trace pointer, /* -> message_trace describing how it got here */ 11 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 11 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 11 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 11 68 11 69 dcl message_envelope_ptr pointer; 11 70 11 71 11 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 11 73 11 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 11 75 2 pad pointer, /* forces even word alignment */ 11 76 2 version character (8) unaligned, 11 77 2 envelope like message_envelope; 11 78 11 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 11 80 11 81 dcl message_envelope_parameter_ptr pointer; 11 82 11 83 11 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 11 85* networks to reach this recipient */ 11 86 11 87 dcl 1 message_trace aligned based (message_trace_ptr), 11 88 2 version character (8) unaligned, 11 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 11 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 11 91 2 pad bit (36), 11 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 11 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 11 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 11 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 11 96 3 receiving_host character (256) varying, /* ... the host which received it */ 11 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 11 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 11 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 11 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 11 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 11 102 11 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 11 104 11 105 dcl message_trace_ptr pointer; 11 106 11 107 /* Definition of a message's redistributions list */ 11 108 11 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 11 110 2 version character (8) unaligned, 11 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 11 112 2 pad bit (36), 11 113 2 n_redistributions fixed binary, /* # of redistributions */ 11 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 11 115 like message_redistribution; /* the redistributions: oldest first */ 11 116 11 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 11 118 11 119 11 120 /* Definition of a single redistribution (forwarding) of a message */ 11 121 11 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 11 123 2 envelope like message_envelope, 11 124 2 header, 11 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 11 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 11 127 3 from pointer, /* -> address list of authors of this redistribution */ 11 128 3 to pointer, /* -> address list of recipients of the redistribution */ 11 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 11 130 11 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 11 132 based (message_redistribution.comment.text_ptr); 11 133 11 134 dcl message_redistribution_ptr pointer; 11 135 11 136 11 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 11 138 11 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 11 140 2 pad pointer, /* forces even word alignment */ 11 141 2 version character (8) unaligned, 11 142 2 redistribution like message_redistribution; 11 143 11 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 11 145 11 146 dcl message_redistribution_parameter_ptr pointer; 11 147 11 148 /* Definition of the list of user-defined fields in a message */ 11 149 11 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 11 151 2 version character (8) unaligned, 11 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 11 153 2 pad bit (36), 11 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 11 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 11 156 like message_user_field; /* the actual user-defined fields */ 11 157 11 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 11 159 11 160 11 161 /* Definition of a user defined message header field */ 11 162 11 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 11 164 2 header, 11 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 11 166 3 field_type fixed binary, /* type of data contained in this field */ 11 167 2 field_type_variable bit (144); /* the actual data (see below) */ 11 168 11 169 dcl message_user_field_ptr pointer; 11 170 11 171 11 172 /* Defined types of user defined fields */ 11 173 11 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 11 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 11 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 11 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 11 178 fixed binary static options (constant); 11 179 11 180 11 181 /* Structures used to access the data for the different types of user defined fields */ 11 182 11 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 11 184 2 header like message_user_field.header, 11 185 2 text like message_text_field; /* the message text */ 11 186 11 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 11 188 based (message_text_user_field.text.text_ptr); 11 189 11 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 11 191 2 header like message_user_field.header, 11 192 2 address_list_ptr pointer, /* -> the address list */ 11 193 2 pad bit (72); 11 194 11 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 11 196 2 header like message_user_field.header, 11 197 2 date_time fixed binary (71), /* the clock reading */ 11 198 2 pad bit (72); 11 199 11 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 11 201 2 header like message_user_field.header, 11 202 2 value fixed binary (35), /* the integer value */ 11 203 2 pad bit (108); 11 204 11 205 11 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 11 207 11 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 11 209 2 pad pointer, /* forces even word alignment */ 11 210 2 version character (8) unaligned, 11 211 2 user_field like message_user_field; 11 212 11 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 11 214 11 215 dcl message_user_field_parameter_ptr pointer; 11 216 11 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 11 218 11 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 11 220 2 version character (8) unaligned, 11 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 11 222 2 pad bit (36), 11 223 2 n_references fixed binary, /* # of references in this list */ 11 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 11 225 like message_reference; /* the references themselves */ 11 226 11 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 11 228 11 229 dcl message_references_list_ptr pointer; 11 230 11 231 11 232 /* Definition of a reference to another message */ 11 233 11 234 dcl 1 message_reference aligned based (message_reference_ptr), 11 235 2 message_id bit (72), /* ID of the other message */ 11 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 11 237 2 from pointer, /* -> address list of authors of the other message */ 11 238 2 subject like message_text_field; /* subject of the other message */ 11 239 11 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 11 241 based (message_reference.subject.text_ptr); 11 242 11 243 dcl message_reference_ptr pointer; 11 244 11 245 11 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 11 247 11 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 11 249 2 pad pointer, /* forces even word alignment */ 11 250 2 version character (8) unaligned, 11 251 2 reference like message_reference; 11 252 11 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 11 254 11 255 dcl message_reference_parameter_ptr pointer; 11 256 11 257 11 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 11 259 11 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 11 261 2 text_ptr pointer, /* -> the actual text */ 11 262 2 text_lth fixed binary (21), /* length of said text */ 11 263 2 flags, 11 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 11 265* OFF => the text will always be a single line */ 11 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 11 267 11 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 11 269 11 270 dcl message_text_field_ptr pointer; 11 271 11 272 /* Definition of a section of the body of a message */ 11 273 11 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 11 275 2 header, 11 276 3 section_type fixed binary, /* type of "text" stored in this section */ 11 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 11 278 2 section_type_variable bit (144); /* the actual data (see below) */ 11 279 11 280 dcl message_body_section_ptr pointer; 11 281 11 282 11 283 /* Defined types of message body sections */ 11 284 11 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 11 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 11 287 fixed binary static options (constant); 11 288 11 289 11 290 /* Structures used to access the data for the different types of message body sections */ 11 291 11 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 11 293 2 header like message_body_section.header, 11 294 2 text_ptr pointer, /* -> the text */ 11 295 2 text_lth fixed binary (21), /* length of said text in characters */ 11 296 2 reserved bit (36); /* for exclusive use of the mail system */ 11 297 11 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 11 299 based (message_preformatted_body_section.text_ptr); 11 300 11 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 11 302 2 header like message_body_section.header, 11 303 2 bit_string_ptr pointer, /* -> the bit string */ 11 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 11 305 2 reserved bit (36); /* for exclusive use of the mail system */ 11 306 11 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 11 308 based (message_bit_string_body_section.bit_string_ptr); 11 309 11 310 11 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 11 312 11 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 11 314 2 pad pointer, /* forces even word alignment */ 11 315 2 version character (8) unaligned, 11 316 2 section like message_body_section; 11 317 11 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 11 319 11 320 dcl message_body_section_parameter_ptr pointer; 11 321 11 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 726 727 728 729 end xmail_Process_Mail_; 730 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/02/88 0745.0 xmail_Process_Mail_.pl1 >spec>install>MR12.2-1098>xmail_Process_Mail_.pl1 708 1 03/27/82 0429.3 menu_dcls.incl.pl1 >ldd>include>menu_dcls.incl.pl1 710 2 05/28/86 1117.7 xmail_responses.incl.pl1 >ldd>include>xmail_responses.incl.pl1 712 3 09/02/88 0743.4 xmail_data.incl.pl1 >spec>install>MR12.2-1098>xmail_data.incl.pl1 714 4 09/12/84 0916.7 window_dcls.incl.pl1 >ldd>include>window_dcls.incl.pl1 716 5 10/27/83 2104.2 mlsys_open_options.incl.pl1 >ldd>include>mlsys_open_options.incl.pl1 718 6 10/27/83 2104.2 mlsys_close_options.incl.pl1 >ldd>include>mlsys_close_options.incl.pl1 720 7 10/27/83 2104.2 mlsys_mailbox.incl.pl1 >ldd>include>mlsys_mailbox.incl.pl1 722 8 12/02/84 1132.9 xmail_windows.incl.pl1 >ldd>include>xmail_windows.incl.pl1 8-14 9 09/12/84 0916.7 window_control_info.incl.pl1 >ldd>include>window_control_info.incl.pl1 724 10 06/08/82 1329.4 xmail_curr_msg_info.incl.pl1 >ldd>include>xmail_curr_msg_info.incl.pl1 726 11 05/22/86 1225.8 mlsys_message.incl.pl1 >ldd>include>mlsys_message.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. ACCESSIBLE_MESSAGES constant fixed bin(17,0) initial dcl 5-30 ref 244 ALLOW_OLD 000310 constant bit(1) initial dcl 123 set ref 232* ALLOW_SELECTION 000310 constant bit(1) initial dcl 124 set ref 386* 501* ALL_MESSAGES constant fixed bin(17,0) initial dcl 5-17 ref 241 647 CLOSE_OPTIONS_VERSION_2 000034 constant char(8) initial packed unaligned dcl 6-13 ref 674 DONT_ALLOW_NEW 000336 constant bit(1) initial dcl 125 set ref 232* INCLUDE_BY_TYPE 000310 constant bit(1) initial dcl 145 set ref 645* MAILBOX_EMPTY_MSG 000025 constant char(17) initial packed unaligned dcl 359 set ref 370* 377* 390* 399* 413* 446* 454* 463* 470* 504* 513* 522* MAILBOX_VERSION_2 000032 constant char(8) initial packed unaligned dcl 7-28 set ref 247* NAME 000250 constant char(19) initial packed unaligned dcl 126 set ref 208* 255* 280* 321* 424* 486* 557* 576* 603* 604 606* 622* 662* 679* N_COLUMNS 000247 constant fixed bin(17,0) initial dcl 127 set ref 619* OPEN_OPTIONS_VERSION_2 000036 constant char(8) initial packed unaligned dcl 5-12 ref 240 OPTION_NAMES 000040 constant varying char(30) initial array dcl 128 set ref 604 604 619* ORDINARY_MESSAGES constant fixed bin(17,0) initial dcl 5-23 ref 243 READ_KEYS constant fixed bin(17,0) initial dcl 5-38 ref 245 SWITCH_ON constant bit(2) initial dcl 358 ref 430 TITLE 000017 constant char(21) initial packed unaligned dcl 613 set ref 619* addr builtin function dcl 200 ref 247 247 678 678 auto_close_options 000525 automatic structure level 1 packed packed unaligned dcl 119 set ref 678 678 auto_open_options 000520 automatic structure level 1 unaligned dcl 118 set ref 247 247 choice 000100 automatic fixed bin(17,0) dcl 96 set ref 292* 305* 312* cleanup 000530 stack reference condition dcl 196 ref 227 cleanup_signalled 213(08) based bit(1) level 3 packed packed unaligned dcl 3-54 set ref 217* 672 673* close_options based structure level 1 dcl 6-6 code 000101 automatic fixed bin(35,0) dcl 97 in procedure "xmail_Process_Mail_" set ref 204* 206 208* 232* 233 235* 247* 248 249 249 249 279* 280 280* 292* 303 312 313 320* 321 321* 362* 423* 424 424* 485* 486 486* 549* 556* 557 557* 562* 563 602* 603 603* 604* 606 606* 645* 646 662 662 662* 678* 679 679* code 000660 automatic fixed bin(35,0) dcl 612 in procedure "GET_MENU" set ref 619* 620 627* count 1 based fixed bin(17,0) level 2 dcl 10-8 ref 288 433 436 481 548 685 counter 000614 automatic fixed bin(17,0) dcl 353 set ref 550* 552* 552 553 curr_msgs based structure level 1 unaligned dcl 10-8 ref 433 685 curr_msgsp 000570 automatic pointer dcl 10-6 set ref 216* 258* 260 266* 288 288 291 365 365* 368 368* 374 374* 379 379* 383 386* 392 392* 396 401 401* 406 406 410* 411* 416 416 416* 420 422* 435 436 439 443* 449 449* 452 452* 458 458* 461 461* 467 467* 472 472* 477* 479 481 482 497 497* 501 501* 506 506* 510 510* 515 515* 519 519* 524 524* 528 528* 538 538* 548 553 567* 656* 672* 683 685 686* def_prompt 000102 automatic varying char(8) dcl 98 set ref 230* 231* 232 default_file 000105 automatic varying char(32) dcl 99 set ref 214* 386* 387 501* deleted_msg_string 000600 automatic char(25) packed unaligned dcl 347 set ref 490* 492 deletes based structure level 1 unaligned dcl 149 deletes_array 1 based char(25) array level 2 packed packed unaligned dcl 149 set ref 492 492* 561* 562 deletes_ptr 000116 automatic pointer dcl 100 set ref 223* 224* 225 491 492 492 548 549* 549 551 561 562 566 688 688 688* dir 000120 automatic char(168) packed unaligned dcl 101 set ref 232* 247* 645* dreply_msg_ptr 000612 automatic pointer dcl 352 set ref 489* 490 560* 561 error_table_$moderr 000012 external static fixed bin(35,0) dcl 159 ref 249 file 000172 automatic varying char(32) dcl 102 set ref 232* 247 255 264* 268 292 495 567 586 645 file_info 000203 automatic varying char(256) dcl 103 set ref 287* 292 flags 213 based structure level 2 in structure "xmail_data" dcl 3-54 in procedure "xmail_Process_Mail_" flags 2 000525 automatic structure level 2 in structure "auto_close_options" packed packed unaligned dcl 119 in procedure "xmail_Process_Mail_" foreign_mailbox 213(06) based bit(1) level 3 packed packed unaligned dcl 3-54 set ref 533* 535* 682* hcs_$make_seg 000034 constant entry external dcl 171 ref 224 hcs_$set_bc_seg 000036 constant entry external dcl 172 ref 549 hcs_$status_minf 000152 constant entry external dcl 343 ref 562 header 10 based structure array level 3 in structure "message_user_fields_list" dcl 11-150 in procedure "xmail_Process_Mail_" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 11-313 in procedure "xmail_Process_Mail_" header 64 based structure array level 4 in structure "message" dcl 11-15 in procedure "xmail_Process_Mail_" header based structure level 2 in structure "message_body_section" dcl 11-274 in procedure "xmail_Process_Mail_" header based structure level 2 in structure "message_user_field" dcl 11-163 in procedure "xmail_Process_Mail_" header 30 based structure level 2 in structure "message" dcl 11-15 in procedure "xmail_Process_Mail_" header 4 based structure level 3 in structure "message_user_field_parameter" dcl 11-208 in procedure "xmail_Process_Mail_" idx 000610 automatic fixed bin(17,0) dcl 350 set ref 481* 482* 551* 561 562* idx1 000611 automatic fixed bin(17,0) dcl 351 set ref 491* 492 492* ioa_ 000040 constant entry external dcl 173 ref 251 264 370 377 390 399 413 446 454 463 470 504 513 522 563 578 580 657 700 ioa_$rsnnl 000042 constant entry external dcl 174 ref 287 291 439 iocb 22 000114 external static pointer level 3 dcl 8-5 set ref 204* iox_$user_output 000014 external static pointer dcl 160 set ref 279* 320* 362* 368* 411* 423* 443* 452* 461* 602* mail_dir based varying char(168) level 2 dcl 3-54 ref 562 mail_in_incoming 213 based bit(1) level 3 packed packed unaligned dcl 3-54 set ref 230 268* 286* 495* 586* 652* mail_system_$close_mailbox 000044 constant entry external dcl 175 ref 678 mail_system_$get_message_counts 000164 constant entry external dcl 642 ref 645 mail_system_$open_mailbox 000046 constant entry external dcl 176 ref 247 mail_system_$read_message 000052 constant entry external dcl 178 ref 485 556 mail_system_$read_new_messages 000050 constant entry external dcl 177 ref 575 mailbox based structure level 1 dcl 7-6 mailbox_ptr 000566 automatic pointer dcl 7-30 set ref 215* 247* 258* 262 287 287 365* 368* 374* 379* 386* 392* 401* 410* 411* 416* 422* 432* 443* 449* 452* 458* 461* 467* 472* 477* 483 485* 489 497* 501* 506* 510* 515* 519* 524* 528* 538* 554 556* 560 567* 575* 643 647 649 656* 669 672* 678* mbz 2(02) 000525 automatic bit(34) level 3 packed packed unaligned dcl 119 set ref 677* menu 22 000114 external static structure level 2 dcl 8-5 menu_$display 000104 constant entry external dcl 1-20 ref 204 menup 000010 internal static pointer initial dcl 155 set ref 203 204* 235 235* 292* 619* 627* message based structure level 1 dcl 11-15 message_body_section based structure level 1 dcl 11-274 message_envelope based structure level 1 dcl 11-61 message_id 30 based bit(72) level 3 dcl 11-15 ref 490 561 message_num 000607 automatic fixed bin(17,0) dcl 349 set ref 482* 483 485* 486* 489 553* 554 556* 557* 560 563* message_ptr 106 based pointer array level 3 dcl 7-6 ref 483 489 554 560 message_reading_level 4 000520 automatic fixed bin(17,0) level 2 dcl 118 set ref 245* message_redistribution based structure level 1 dcl 11-122 message_reference based structure level 1 dcl 11-234 message_selection_mode 2 000520 automatic fixed bin(17,0) level 2 dcl 118 set ref 241* 243* 647 message_text_field based structure level 1 dcl 11-260 message_user_field based structure level 1 dcl 11-163 messages 104 based structure array level 2 dcl 7-6 mlsys_et_$no_more_messages 000016 external static fixed bin(35,0) dcl 161 ref 576 mlsys_et_$no_o_permission 000020 external static fixed bin(35,0) dcl 162 ref 249 mlsys_et_$no_r_permission 000022 external static fixed bin(35,0) dcl 163 ref 249 662 mlsys_et_$no_s_permission 000024 external static fixed bin(35,0) dcl 164 ref 662 multiple_msgs 000304 automatic bit(1) dcl 104 set ref 288* 290* 291* 436* 438* 439* n_deleted_messages 103 based fixed bin(17,0) level 2 dcl 7-6 ref 287 n_interactive_msgs 000305 automatic fixed bin(17,0) dcl 105 set ref 645* n_messages 100 based fixed bin(17,0) level 2 dcl 7-6 ref 262 287 647 649 n_new_msgs 000306 automatic fixed bin(17,0) dcl 106 set ref 575* 578 580 580* 583 647* 649* 650 700* 700 700 n_ordinary_msgs 000310 automatic fixed bin(17,0) dcl 108 set ref 645* 649 n_total_msgs 000307 automatic fixed bin(17,0) dcl 107 set ref 645* 647 new_flag 000642 automatic bit(1) packed unaligned dcl 573 set ref 583* 585* 589 no_of_entries based fixed bin(17,0) level 2 dcl 149 set ref 225* 491 548* 549 551 566 688 normal_usage 142 based char(80) level 2 packed packed unaligned dcl 3-54 set ref 292* null builtin function dcl 200 ref 203 215 216 223 235 260 266 288 291 365 368 374 379 383 392 396 401 406 406 416 416 420 428 435 439 449 452 458 461 467 472 479 483 497 501 506 510 515 519 524 528 538 554 643 669 683 686 688 numbers 2 based fixed bin(17,0) array level 2 dcl 10-8 ref 482 553 old_no_of_entries 000311 automatic fixed bin(17,0) dcl 109 set ref 225* 548 551 566* 689* open_options based structure level 1 dcl 5-6 opt parameter fixed bin(17,0) dcl 348 in procedure "PERFORM_OPTION" ref 328 363 opt parameter fixed bin(17,0) dcl 598 in procedure "EXPLAIN_OPTION" ref 596 604 604 perform_deletions 2 000525 automatic bit(1) level 3 packed packed unaligned dcl 119 set ref 675* pos_line 000312 automatic char(256) packed unaligned dcl 110 set ref 258* 267* 286 291* 365* 379* 392* 401* 410* 416* 422* 439* 449* 458* 472* 477* 497* 506* 515* 524* 528* 538* 567* 656* 672* position 000412 automatic varying char(256) dcl 111 set ref 291* 292 439* 440 program_interrupt 000536 stack reference condition dcl 196 ref 271 quit 000560 stack reference condition dcl 196 ref 272 redisplay parameter bit(1) dcl 354 set ref 328 532* redisplay_menu 000513 automatic bit(1) dcl 112 set ref 282* 292* 301* 305* reply_request 213(10) based bit(1) level 3 packed packed unaligned dcl 3-54 set ref 204 217* report_deletion_errors 2(01) 000525 automatic bit(1) level 3 packed packed unaligned dcl 119 set ref 676* return_to_caller 000514 automatic bit(1) dcl 113 set ref 284* 306 543* rtrim builtin function dcl 200 ref 286 495 586 seen_msgsp 000616 automatic pointer dcl 355 set ref 422* 428 432* 433 sender_selection_mode 3 000520 automatic fixed bin(17,0) level 2 dcl 118 set ref 244* status 000515 automatic fixed bin(35,0) dcl 114 set ref 575* 576 576 576* switch 000620 automatic bit(1) dcl 356 set ref 430* 431* 432* switch_on_off 000621 automatic bit(2) dcl 357 set ref 422* 430 timer_manager_$sleep 000054 constant entry external dcl 179 ref 209 translate builtin function dcl 200 ref 604 604 treat_msgs_as_mail parameter bit(1) dcl 90 ref 86 241 unique_chars_ 000154 constant entry external dcl 344 ref 490 561 unused_bit 000516 automatic bit(1) dcl 115 set ref 232* unused_bit2 000517 automatic bit(1) dcl 116 set ref 232* version 000520 automatic char(8) level 2 in structure "auto_open_options" packed packed unaligned dcl 118 in procedure "xmail_Process_Mail_" set ref 240* version 000525 automatic char(8) level 2 in structure "auto_close_options" packed packed unaligned dcl 119 in procedure "xmail_Process_Mail_" set ref 674* what_next parameter char(9) packed unaligned dcl 91 set ref 86 542* window_$bell 000110 constant entry external dcl 4-6 ref 320 window_$clear_window 000112 constant entry external dcl 4-13 ref 279 362 423 602 window_position_info based structure level 1 unaligned dcl 9-25 xmail_Consult_Files_ 000150 constant entry external dcl 342 ref 534 xmail_create_menu_ 000160 constant entry external dcl 617 ref 619 xmail_data based structure level 1 dcl 3-54 xmail_data_ptr 000106 external static pointer initial dcl 3-52 ref 204 217 217 230 268 286 292 495 533 535 562 586 652 672 673 682 xmail_delete_dreply_ 000056 constant entry external dcl 180 ref 688 xmail_delete_msgs_ 000120 constant entry external dcl 330 ref 567 xmail_display_help_ 000156 constant entry external dcl 600 ref 604 xmail_display_menu_ 000060 constant entry external dcl 181 ref 235 627 xmail_display_msgs_ 000122 constant entry external dcl 331 ref 368 xmail_dprint_msgs_ 000124 constant entry external dcl 332 ref 510 xmail_err_$exit_now 000026 external static fixed bin(35,0) dcl 165 ref 313 xmail_err_$help_requested 000030 external static fixed bin(35,0) dcl 166 ref 312 xmail_err_$int_prog_err 000032 external static fixed bin(35,0) dcl 167 set ref 255* 622* xmail_error_$code_last 000062 constant entry external dcl 182 ref 255 622 xmail_error_$no_code 000064 constant entry external dcl 183 ref 208 486 557 576 662 679 xmail_error_$no_print 000066 constant entry external dcl 184 ref 280 321 424 603 606 xmail_file_msgs_$current_msgs 000126 constant entry external dcl 333 ref 386 501 xmail_forward_msg_ 000130 constant entry external dcl 334 ref 467 xmail_get_choice_ 000070 constant entry external dcl 185 ref 292 xmail_get_str_$yes_no 000166 constant entry external dcl 698 ref 702 xmail_leave_menu 000544 stack reference condition dcl 196 ref 219 xmail_list_msgs_ 000132 constant entry external dcl 335 ref 461 xmail_list_msgs_$selected 000134 constant entry external dcl 336 ref 411 443 452 xmail_list_msgs_$set_seen_switch 000136 constant entry external dcl 337 ref 432 xmail_redisplay_menu 000552 stack reference condition dcl 196 ref 202 xmail_reply_msg_ 000140 constant entry external dcl 338 ref 374 xmail_select_file_$caller_msg 000072 constant entry external dcl 186 ref 232 xmail_select_msgs_ 000142 constant entry external dcl 339 ref 422 xmail_select_msgs_$first 000074 constant entry external dcl 188 ref 258 xmail_select_msgs_$new 000162 constant entry external dcl 641 ref 656 xmail_select_msgs_$next 000144 constant entry external dcl 340 ref 365 379 392 401 410 416 449 458 472 497 506 515 524 528 538 xmail_sw_$redisplay 000076 constant entry external dcl 189 ref 441 xmail_sw_$update_position 000100 constant entry external dcl 190 ref 440 xmail_undelete_msgs_ 000102 constant entry external dcl 191 ref 477 672 xmail_window_info_format based structure level 1 dcl 8-10 xmail_window_manager_$reconnect 000116 constant entry external dcl 274 ref 275 xmail_windows 000114 external static structure level 1 dcl 8-5 xmail_write_msgs_ 000146 constant entry external dcl 341 ref 519 yes_sw 000106 automatic bit(1) dcl 696 set ref 702* 703 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A internal static char(1) initial packed unaligned dcl 2-16 ALL internal static char(3) initial packed unaligned dcl 2-16 ASK internal static char(3) initial packed unaligned dcl 2-16 DATE internal static char(4) initial packed unaligned dcl 2-16 F internal static char(1) initial packed unaligned dcl 2-16 FIRST internal static char(5) initial packed unaligned dcl 2-16 INTERACTIVE_MESSAGES internal static fixed bin(17,0) initial dcl 5-23 L internal static char(1) initial packed unaligned dcl 2-16 LAST internal static char(4) initial packed unaligned dcl 2-16 LIST internal static char(2) initial packed unaligned dcl 2-16 MENU_OPTION_KEYS internal static char(1) initial array packed unaligned dcl 1-100 MESSAGE_ADDRESS_LIST_USER_FIELD internal static fixed bin(17,0) initial dcl 11-174 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 11-285 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 11-318 MESSAGE_DATE_USER_FIELD internal static fixed bin(17,0) initial dcl 11-174 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 11-79 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 11-174 MESSAGE_PREFORMATTED_BODY_SECTION internal static fixed bin(17,0) initial dcl 11-285 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 11-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 11-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 11-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 11-253 MESSAGE_TEXT_USER_FIELD internal static fixed bin(17,0) initial dcl 11-174 MESSAGE_TRACE_VERSION_2 internal static char(8) initial packed unaligned dcl 11-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 11-158 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 11-213 MESSAGE_VERSION_2 internal static char(8) initial packed unaligned dcl 11-49 MSG_STRUCT_VERSION_1 internal static fixed bin(17,0) initial dcl 10-4 N internal static char(1) initial packed unaligned dcl 2-16 NEW internal static char(3) initial packed unaligned dcl 2-16 NEXT internal static char(4) initial packed unaligned dcl 2-16 NO internal static char(2) initial packed unaligned dcl 2-16 NOT_OWN_MESSAGES internal static fixed bin(17,0) initial dcl 5-30 OTHER_MAILBOX internal static fixed bin(17,0) initial dcl 7-37 OWN_MESSAGES internal static fixed bin(17,0) initial dcl 5-30 P internal static char(1) initial packed unaligned dcl 2-16 PREV internal static char(4) initial packed unaligned dcl 2-16 QUESTION internal static char(1) initial packed unaligned dcl 2-16 READ_MESSAGES internal static fixed bin(17,0) initial dcl 5-38 S internal static char(1) initial packed unaligned dcl 2-16 SAVEBOX internal static fixed bin(17,0) initial dcl 7-37 SEARCH internal static char(6) initial packed unaligned dcl 2-16 SEEN internal static char(4) initial packed unaligned dcl 2-16 SET internal static char(3) initial packed unaligned dcl 2-16 UNSEEN internal static char(6) initial packed unaligned dcl 2-16 USER_DEFAULT_MAILBOX internal static fixed bin(17,0) initial dcl 7-37 USER_LOGBOX internal static fixed bin(17,0) initial dcl 7-37 Y internal static char(1) initial packed unaligned dcl 2-16 YES internal static char(3) initial packed unaligned dcl 2-16 break_table_info based structure level 1 dcl 9-76 break_table_info_version internal static fixed bin(17,0) initial dcl 9-80 break_table_info_version_1 internal static fixed bin(17,0) initial dcl 9-80 break_table_ptr automatic pointer dcl 9-75 close_options_ptr automatic pointer dcl 6-15 get_editor_key_bindings_info based structure level 1 dcl 9-151 get_editor_key_bindings_info_ptr automatic pointer dcl 9-159 get_editor_key_bindings_info_version_1 internal static char(8) initial packed unaligned dcl 9-160 line_editor_binding_count automatic fixed bin(17,0) dcl 9-121 line_editor_key_binding_info based structure level 1 dcl 9-129 line_editor_key_binding_info_ptr automatic pointer dcl 9-118 line_editor_key_binding_info_version_3 internal static char(8) initial packed unaligned dcl 9-148 line_editor_longest_sequence automatic fixed bin(17,0) dcl 9-123 mailbox_n_messages automatic fixed bin(17,0) dcl 7-32 menu_$create 000000 constant entry external dcl 1-8 menu_$delete 000000 constant entry external dcl 1-61 menu_$describe 000000 constant entry external dcl 1-35 menu_$destroy 000000 constant entry external dcl 1-41 menu_$get_choice 000000 constant entry external dcl 1-26 menu_$list 000000 constant entry external dcl 1-67 menu_$retrieve 000000 constant entry external dcl 1-54 menu_$store 000000 constant entry external dcl 1-46 menu_format based structure level 1 dcl 1-76 menu_format_ptr automatic pointer dcl 1-94 menu_format_version_1 internal static fixed bin(17,0) initial dcl 1-97 menu_requirements based structure level 1 dcl 1-88 menu_requirements_ptr automatic pointer dcl 1-95 menu_requirements_version_1 internal static fixed bin(17,0) initial dcl 1-97 message_address_list_user_field based structure level 1 dcl 11-190 message_bit_string_body_section based structure level 1 dcl 11-301 message_bit_string_body_section_bit_string based bit packed unaligned dcl 11-307 message_body_section_parameter based structure level 1 dcl 11-313 message_body_section_parameter_ptr automatic pointer dcl 11-320 message_body_section_ptr automatic pointer dcl 11-280 message_date_user_field based structure level 1 dcl 11-195 message_envelope_parameter based structure level 1 dcl 11-74 message_envelope_parameter_ptr automatic pointer dcl 11-81 message_envelope_ptr automatic pointer dcl 11-69 message_integer_user_field based structure level 1 dcl 11-200 message_n_body_sections automatic fixed bin(17,0) dcl 11-55 message_n_redistributions automatic fixed bin(17,0) dcl 11-55 message_n_user_fields automatic fixed bin(17,0) dcl 11-55 message_preformatted_body_section based structure level 1 dcl 11-292 message_preformatted_body_section_text based char packed unaligned dcl 11-298 message_ptr automatic pointer dcl 11-53 message_redistribution_comment based char packed unaligned dcl 11-131 message_redistribution_parameter based structure level 1 dcl 11-139 message_redistribution_parameter_ptr automatic pointer dcl 11-146 message_redistribution_ptr automatic pointer dcl 11-134 message_redistributions_list based structure level 1 dcl 11-109 message_reference_parameter based structure level 1 dcl 11-248 message_reference_parameter_ptr automatic pointer dcl 11-255 message_reference_ptr automatic pointer dcl 11-243 message_reference_subject based char packed unaligned dcl 11-240 message_references_list based structure level 1 dcl 11-219 message_references_list_n_references automatic fixed bin(17,0) dcl 11-55 message_references_list_ptr automatic pointer dcl 11-229 message_subject based char packed unaligned dcl 11-51 message_text_field_ptr automatic pointer dcl 11-270 message_text_field_text based char packed unaligned dcl 11-268 message_text_user_field based structure level 1 dcl 11-183 message_text_user_field_text based char packed unaligned dcl 11-187 message_trace based structure level 1 dcl 11-87 message_trace_n_relays automatic fixed bin(17,0) dcl 11-55 message_trace_ptr automatic pointer dcl 11-105 message_user_field_parameter based structure level 1 dcl 11-208 message_user_field_parameter_ptr automatic pointer dcl 11-215 message_user_field_ptr automatic pointer dcl 11-169 message_user_fields_list based structure level 1 dcl 11-150 more_handler_info based structure level 1 dcl 9-83 more_handler_info_ptr automatic pointer dcl 9-92 more_handler_info_version internal static fixed bin(17,0) initial dcl 9-94 more_handler_info_version_3 internal static fixed bin(17,0) initial dcl 9-94 more_prompt_info based structure level 1 dcl 9-108 more_prompt_info_ptr automatic pointer dcl 9-112 more_prompt_info_version_1 internal static char(8) initial packed unaligned dcl 9-114 more_responses_info based structure level 1 dcl 9-59 more_responses_info_ptr automatic pointer dcl 9-69 more_responses_info_version_1 internal static fixed bin(17,0) initial dcl 9-67 more_responses_version internal static fixed bin(17,0) initial dcl 9-67 msg_struct based structure level 1 unaligned dcl 10-22 msg_structp automatic pointer dcl 10-20 n_messages automatic fixed bin(17,0) dcl 10-3 nonexist_msgs based structure level 1 unaligned dcl 10-15 nonexist_msgsp automatic pointer dcl 10-13 open_options_ptr automatic pointer dcl 5-14 set_editor_key_bindings_info based structure level 1 dcl 9-162 set_editor_key_bindings_info_ptr automatic pointer dcl 9-171 set_editor_key_bindings_info_version_1 internal static char(8) initial packed unaligned dcl 9-172 token_characters_info based structure level 1 dcl 9-97 token_characters_info_ptr automatic pointer dcl 9-104 token_characters_info_version_1 internal static char(8) initial packed unaligned dcl 9-106 window_$change_column 000000 constant entry external dcl 4-63 window_$change_line 000000 constant entry external dcl 4-59 window_$clear_region 000000 constant entry external dcl 4-7 window_$clear_to_end_of_line 000000 constant entry external dcl 4-9 window_$clear_to_end_of_window 000000 constant entry external dcl 4-11 window_$create 000000 constant entry external dcl 4-72 window_$delete_chars 000000 constant entry external dcl 4-15 window_$destroy 000000 constant entry external dcl 4-74 window_$edit_line 000000 constant entry external dcl 4-76 window_$get_cursor_position 000000 constant entry external dcl 4-17 window_$get_echoed_chars 000000 constant entry external dcl 4-22 window_$get_one_unechoed 000000 constant entry external dcl 4-67 window_$get_one_unechoed_char 000000 constant entry external dcl 4-67 window_$get_unechoed_chars 000000 constant entry external dcl 4-25 window_$insert_text 000000 constant entry external dcl 4-28 window_$overwrite_text 000000 constant entry external dcl 4-29 window_$position_cursor 000000 constant entry external dcl 4-31 window_$position_cursor_rel 000000 constant entry external dcl 4-36 window_$scroll_region 000000 constant entry external dcl 4-42 window_$sync 000000 constant entry external dcl 4-44 window_$write_raw_text 000000 constant entry external dcl 4-48 window_$write_sync_read 000000 constant entry external dcl 4-53 window_edit_line_info based structure level 1 unaligned dcl 9-177 window_edit_line_info_ptr automatic pointer dcl 9-186 window_edit_line_info_version_1 internal static char(8) initial packed unaligned dcl 9-183 window_position_info_ptr automatic pointer dcl 9-37 window_position_info_version internal static fixed bin(17,0) initial dcl 9-35 window_position_info_version_1 internal static fixed bin(17,0) initial dcl 9-35 window_status_info based structure level 1 dcl 9-45 window_status_info_ptr automatic pointer dcl 9-43 window_status_version internal static fixed bin(17,0) initial dcl 9-52 window_status_version_1 internal static fixed bin(17,0) initial dcl 9-52 xmail_version internal static varying char(10) initial dcl 3-84 NAMES DECLARED BY EXPLICIT CONTEXT. EXIT 002413 constant label dcl 326 set ref 317 634 EXPLAIN_OPTION 005213 constant entry internal dcl 596 ref 312 GET_MENU 005365 constant entry internal dcl 610 ref 236 NEW_MESSAGES 005032 constant entry internal dcl 571 ref 365 379 392 401 406 416 449 458 472 497 506 515 524 528 538 OPT 000000 constant label array(15) dcl 365 ref 363 PERFORM_OPTION 002414 constant entry internal dcl 328 ref 305 START 002031 constant label dcl 282 ref 269 271 276 658 all_ok 001632 constant label dcl 258 ref 248 delete_msgs 004477 constant entry internal dcl 547 ref 387 396 error_leave_menu 005472 constant entry internal dcl 631 ref 233 252 256 260 623 leave_menu 005714 constant entry internal dcl 667 ref 228 308 316 633 query_if_more_msgs 005501 constant entry internal dcl 639 ref 220 315 want_to_examine_more 006111 constant entry internal dcl 694 ref 653 xmail_Process_Mail_ 001040 constant entry external dcl 86 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7434 7624 6443 7444 Length 10444 6443 170 603 771 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xmail_Process_Mail_ 864 external procedure is an external procedure. on unit on line 202 112 on unit on unit on line 219 64 on unit on unit on line 227 64 on unit on unit on line 271 64 on unit on unit on line 272 64 on unit PERFORM_OPTION internal procedure shares stack frame of external procedure xmail_Process_Mail_. delete_msgs internal procedure shares stack frame of external procedure xmail_Process_Mail_. NEW_MESSAGES internal procedure shares stack frame of external procedure xmail_Process_Mail_. EXPLAIN_OPTION internal procedure shares stack frame of external procedure xmail_Process_Mail_. GET_MENU internal procedure shares stack frame of external procedure xmail_Process_Mail_. error_leave_menu internal procedure shares stack frame of external procedure xmail_Process_Mail_. query_if_more_msgs 160 internal procedure is called by several nonquick procedures. leave_menu 104 internal procedure is called by several nonquick procedures. want_to_examine_more internal procedure shares stack frame of internal procedure query_if_more_msgs. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 menup xmail_Process_Mail_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME query_if_more_msgs 000106 yes_sw want_to_examine_more xmail_Process_Mail_ 000100 choice xmail_Process_Mail_ 000101 code xmail_Process_Mail_ 000102 def_prompt xmail_Process_Mail_ 000105 default_file xmail_Process_Mail_ 000116 deletes_ptr xmail_Process_Mail_ 000120 dir xmail_Process_Mail_ 000172 file xmail_Process_Mail_ 000203 file_info xmail_Process_Mail_ 000304 multiple_msgs xmail_Process_Mail_ 000305 n_interactive_msgs xmail_Process_Mail_ 000306 n_new_msgs xmail_Process_Mail_ 000307 n_total_msgs xmail_Process_Mail_ 000310 n_ordinary_msgs xmail_Process_Mail_ 000311 old_no_of_entries xmail_Process_Mail_ 000312 pos_line xmail_Process_Mail_ 000412 position xmail_Process_Mail_ 000513 redisplay_menu xmail_Process_Mail_ 000514 return_to_caller xmail_Process_Mail_ 000515 status xmail_Process_Mail_ 000516 unused_bit xmail_Process_Mail_ 000517 unused_bit2 xmail_Process_Mail_ 000520 auto_open_options xmail_Process_Mail_ 000525 auto_close_options xmail_Process_Mail_ 000566 mailbox_ptr xmail_Process_Mail_ 000570 curr_msgsp xmail_Process_Mail_ 000600 deleted_msg_string PERFORM_OPTION 000607 message_num PERFORM_OPTION 000610 idx PERFORM_OPTION 000611 idx1 PERFORM_OPTION 000612 dreply_msg_ptr PERFORM_OPTION 000614 counter PERFORM_OPTION 000616 seen_msgsp PERFORM_OPTION 000620 switch PERFORM_OPTION 000621 switch_on_off PERFORM_OPTION 000642 new_flag NEW_MESSAGES 000660 code GET_MENU THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op shorten_stack ext_entry int_entry op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. hcs_$make_seg hcs_$set_bc_seg hcs_$status_minf ioa_ ioa_$rsnnl mail_system_$close_mailbox mail_system_$get_message_counts mail_system_$open_mailbox mail_system_$read_message mail_system_$read_new_messages menu_$display timer_manager_$sleep unique_chars_ window_$bell window_$clear_window xmail_Consult_Files_ xmail_create_menu_ xmail_delete_dreply_ xmail_delete_msgs_ xmail_display_help_ xmail_display_menu_ xmail_display_msgs_ xmail_dprint_msgs_ xmail_error_$code_last xmail_error_$no_code xmail_error_$no_print xmail_file_msgs_$current_msgs xmail_forward_msg_ xmail_get_choice_ xmail_get_str_$yes_no xmail_list_msgs_ xmail_list_msgs_$selected xmail_list_msgs_$set_seen_switch xmail_reply_msg_ xmail_select_file_$caller_msg xmail_select_msgs_ xmail_select_msgs_$first xmail_select_msgs_$new xmail_select_msgs_$next xmail_sw_$redisplay xmail_sw_$update_position xmail_undelete_msgs_ xmail_window_manager_$reconnect xmail_write_msgs_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$moderr iox_$user_output mlsys_et_$no_more_messages mlsys_et_$no_o_permission mlsys_et_$no_r_permission mlsys_et_$no_s_permission xmail_data_ptr xmail_err_$exit_now xmail_err_$help_requested xmail_err_$int_prog_err xmail_windows LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 86 001034 202 001045 203 001061 204 001065 206 001106 208 001111 209 001143 212 001160 214 001161 215 001162 216 001164 217 001165 219 001174 220 001210 221 001215 223 001216 224 001220 225 001263 227 001265 228 001301 229 001306 230 001307 231 001323 232 001324 233 001420 235 001424 236 001446 240 001447 241 001451 243 001460 244 001462 245 001464 247 001466 248 001534 249 001537 251 001546 252 001561 253 001562 255 001563 256 001630 258 001632 260 001652 262 001657 264 001662 266 001702 267 001704 268 001707 269 001721 271 001722 272 001741 275 001755 276 001761 279 001764 280 001775 282 002031 284 002033 286 002034 287 002056 288 002116 290 002131 291 002132 292 002177 301 002307 303 002311 305 002313 306 002315 308 002317 309 002323 311 002324 312 002325 313 002333 315 002335 316 002341 317 002345 320 002346 321 002356 324 002412 326 002413 328 002414 362 002416 363 002427 365 002432 368 002465 370 002505 372 002516 374 002517 377 002535 379 002546 381 002601 383 002602 386 002606 387 002623 389 002631 390 002632 392 002643 394 002676 396 002677 399 002705 401 002716 403 002751 406 002752 410 002773 411 003013 412 003026 413 003027 414 003040 416 003041 420 003100 422 003104 423 003133 424 003144 428 003200 430 003204 431 003213 432 003214 433 003227 434 003234 435 003235 436 003241 438 003250 439 003251 440 003316 441 003337 443 003345 445 003360 446 003361 447 003372 449 003373 452 003426 454 003446 456 003457 458 003460 461 003513 463 003533 465 003544 467 003545 470 003563 472 003574 475 003627 477 003630 479 003654 481 003660 482 003671 483 003674 485 003702 486 003715 489 003755 490 003762 491 004015 492 004025 493 004037 494 004041 495 004043 497 004066 499 004121 501 004122 504 004144 506 004155 508 004210 510 004211 513 004227 515 004240 517 004273 519 004274 522 004312 524 004323 526 004356 528 004357 532 004412 533 004415 534 004422 535 004426 536 004433 538 004434 542 004467 543 004474 544 004476 547 004477 548 004500 549 004504 550 004522 551 004523 552 004533 553 004534 554 004540 556 004546 557 004561 560 004621 561 004626 562 004666 563 004745 564 004770 566 004772 567 004774 568 005030 571 005032 575 005034 576 005055 578 005113 580 005133 583 005154 585 005160 586 005162 589 005205 596 005213 602 005215 603 005226 604 005262 606 005327 608 005364 610 005365 619 005366 620 005417 622 005421 623 005453 627 005454 629 005471 631 005472 633 005473 634 005477 639 005500 643 005506 645 005513 646 005561 647 005565 649 005574 650 005600 652 005601 653 005606 656 005613 657 005634 658 005650 661 005653 662 005654 665 005712 667 005713 669 005721 672 005726 673 005756 674 005763 675 005767 676 005771 677 005773 678 005775 679 006011 682 006046 683 006053 685 006060 686 006065 688 006070 689 006106 691 006110 694 006111 700 006113 702 006152 703 006174 ----------------------------------------------------------- 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