COMPILATION LISTING OF SEGMENT accept_messages Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1151.96_Tue_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 6* * * 7* *********************************************************** */ 8 /* This command accepts messages on the specified mailbox. */ 9 10 /****^ HISTORY COMMENTS: 11* 1) change(84-05-31,Lippard), approve(), audit(), install(): 12* Written by Jim Lippard. 13* 2) change(84-11-21,Lippard), approve(), audit(), install(): 14* Modified to use call string for -print when appropriate. 15* 3) change(85-01-11,Lippard), approve(), audit(), install(): 16* Modified to use new calling sequences for 17* message_facility_$(delete_message print_message read_message 18* set_seen_switch). 19* 4) change(86-01-05,Lippard), approve(86-05-27,MCR7418), 20* audit(86-06-24,Hartogs), install(86-06-30,MR12.0-1080): 21* Modified to abort if user decides not to create a nonexistent 22* mailbox. 23* 5) change(87-01-29,Lippard), approve(87-03-18,MECR0001), 24* audit(87-03-12,Fawcett), install(87-03-19,MR12.1-1002): 25* Modified to strip control characters out of message comment field. 26* 6) change(87-01-29,Lippard), approve(87-04-20,MCR7669), 27* audit(87-05-11,Fawcett), install(87-05-20,MR12.1-1032): 28* Formal installation to close out MECR0001. 29* END HISTORY COMMENTS */ 30 31 accept_messages: am: procedure options (variable); 32 dcl ME char (15) internal static options (constant) init ("accept_messages"); 33 dcl VERSION char (3) internal static options (constant) init ("1.3"); 34 35 dcl aim_check_$greater_or_equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned) reducible; 36 37 dcl canonicalize_ entry (ptr, fixed bin (21), ptr, fixed bin (21), fixed bin (35)); 38 39 dcl com_err_ entry () options (variable); 40 41 dcl command_query_$yes_no entry () options (variable); 42 43 dcl convert_access_class_$to_string_short entry (bit (72) aligned, char (*), fixed bin (35)); 44 45 dcl convert_date_to_binary_ entry (char (*), fixed bin (71), fixed bin (35)); 46 47 dcl cu_$cp entry (ptr, fixed bin (21), fixed bin (35)); 48 49 dcl date_time_ entry (fixed bin (71), char (*)); 50 dcl date_time_$format entry (char (*), fixed bin (71), char (*), char (*)) returns (char (250) var); 51 52 dcl expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), fixed bin (35)); 53 54 dcl get_authorization_ entry () returns (bit (72) aligned) reducible; 55 dcl get_system_free_area_ entry () returns (ptr); 56 57 dcl (ioa_, ioa_$rsnnl) entry () options (variable); 58 59 dcl iox_$user_output ptr ext static; 60 61 dcl mlsys_utils_$parse_mailbox_control_args entry (ptr, fixed bin, ptr, char (*), char (*), fixed bin (35)); 62 63 dcl mailbox_$create entry (char (*), char (*), fixed bin (35)); 64 dcl mailbox_$get_uid_file entry (char (*), char (*), bit (36) aligned, fixed bin (35)); 65 66 dcl message_facility_$default_alarm_handler entry (ptr, ptr); 67 dcl message_facility_$default_wakeup_handler entry (ptr, ptr); 68 dcl message_facility_$delete_message entry (ptr, bit (72) aligned, fixed bin (35)); 69 dcl message_facility_$get_message_format entry (ptr, bit (1) aligned, fixed bin (35)); 70 dcl message_facility_$get_msg_array_ptr entry (ptr, ptr, ptr, fixed bin, fixed bin (35)); 71 dcl message_facility_$get_msgf_mbx_ptr entry (char (*), char (*), ptr, fixed bin (35)); 72 dcl message_facility_$get_wakeup_state entry (ptr, bit (*), fixed bin (35)); 73 dcl message_facility_$print_message entry (ptr, ptr, bit (72) aligned, ptr, fixed bin (35)); 74 dcl message_facility_$read_message entry (ptr, bit (72) aligned, ptr, ptr, fixed bin (35)); 75 dcl message_facility_$set_alarm_handler entry (ptr, entry, ptr, fixed bin (71), fixed bin (35)); 76 dcl message_facility_$set_message_format entry (ptr, bit (1) aligned, fixed bin (35)); 77 dcl message_facility_$set_prefix entry (ptr, char (32) var, bit (1) aligned, fixed bin (35)); 78 dcl message_facility_$set_seen_switch entry (ptr, bit (72) aligned, bit (*), fixed bin (35)); 79 dcl message_facility_$set_wakeup_handler entry (ptr, entry, ptr, fixed bin (35)); 80 dcl message_facility_$set_wakeup_state entry (ptr, bit (*), fixed bin (35)); 81 82 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 83 84 dcl requote_string_ entry (char (*)) returns (char (*)); 85 86 dcl ssu_$abort_line entry () options (variable); 87 dcl ssu_$arg_count entry (ptr, fixed bin); 88 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 89 dcl ssu_$destroy_invocation entry (ptr); 90 dcl ssu_$standalone_invocation entry (ptr, char (*), char (*), ptr, entry, fixed bin (35)); 91 92 dcl user_info_$whoami entry (char (*), char (*), char (*)); 93 94 dcl cleanup condition; 95 96 dcl alarm_time fixed bin (71); 97 98 dcl arg_count fixed bin; 99 dcl arg_ptr ptr; 100 dcl arg_len fixed bin (21); 101 dcl arg char (arg_len) based (arg_ptr); 102 103 dcl authorization bit (72) aligned; 104 dcl auth_string char (170); 105 106 dcl alarm bit (1) aligned; 107 108 dcl brief bit (1) aligned; 109 110 dcl call bit (1) aligned; 111 112 dcl 1 call_string_info aligned based (call_string_info_ptr), 113 2 uid bit (36) aligned, 114 2 call_string_ptr ptr, 115 2 next_call_string_ptr ptr; 116 117 dcl call_string_info_ptr ptr; 118 119 dcl static_call_string_info_ptr ptr internal static init (null ()); 120 121 dcl call_string char (512) based (call_string_info.call_string_ptr); 122 dcl temp_call_string char (512); 123 124 dcl command_line char (2000); 125 126 dcl create_mbx bit (1) aligned; 127 128 dcl date_time fixed bin (71); 129 130 dcl default bit (1) aligned; 131 132 dcl dname char (168); 133 dcl ename char (32); 134 135 dcl flags bit (5); 136 dcl 1 local_wf like wakeup_flags based (local_wf_ptr); 137 dcl local_wf_ptr ptr; 138 139 dcl flush_time fixed bin (71); 140 141 dcl found bit (1) aligned; 142 143 dcl hold bit (1) aligned; 144 dcl nohold bit (1) aligned; 145 146 dcl hold_notify bit (1) aligned; 147 dcl nohold_notify bit (1) aligned; 148 149 dcl idx fixed bin; 150 151 dcl last_msg_time char (24); 152 dcl last_sender char (120); 153 dcl last_time fixed bin (71); 154 155 dcl 1 local_mi aligned like message_info; 156 dcl 1 local_pcao aligned like parse_ca_options; 157 158 dcl mail bit (1) aligned; 159 dcl nomail bit (1) aligned; 160 161 dcl message_sender char (120); 162 163 dcl msg_date_time char (24); 164 165 dcl msgf_mbx_ptr ptr; 166 167 dcl path bit (1) aligned; 168 dcl pathname char (256); 169 170 dcl person char (22); 171 dcl project char (9); 172 173 dcl prefix_string char (32) varying; 174 dcl prefix bit (1) aligned; 175 176 dcl print bit (1) aligned; 177 178 dcl sci_ptr ptr; 179 180 dcl short_format bit (1) aligned; 181 dcl no_short_format bit (1) aligned; 182 dcl short_format_switch bit (1) aligned; 183 dcl new_short_format_switch bit (1) aligned; 184 dcl short bit (1) aligned; 185 dcl short_prefix bit (1) aligned; 186 187 dcl sys_area area based (sys_area_ptr); 188 dcl sys_area_ptr ptr; 189 190 dcl tag char (10) var; 191 192 dcl uid bit (36) aligned; 193 194 dcl (addr, before, collate, convert, fixed, index, length, maxlength, null, rtrim, string, substr, translate) builtin; 195 196 dcl (conversion, size) condition; 197 198 dcl code fixed bin (35); 199 200 dcl error_table_$noarg fixed bin (35) ext static; 201 dcl error_table_$noentry fixed bin (35) ext static; 202 203 dcl ALPHABET char (256) init ((8)" " || " " || (4)" " || "" || (16)" " 204 || substr (collate (), 33)); /* space, BSHT, space, RRSBRS, space, alphanumerics */ 205 dcl NLSPHT char (3) internal static options (constant) init (" 206 "); 207 dcl BS char (1) aligned internal static options (constant) init (""); 208 dcl TRUE bit (1) aligned internal static options (constant) init ("1"b); 209 dcl FALSE bit (1) aligned internal static options (constant) init ("0"b); 210 211 dcl FIVE_MINUTES fixed bin (71) internal static options (constant) init (300000000); 212 213 /* initialize variables */ 214 alarm, brief, call, default, hold, nohold, hold_notify, nohold_notify, nomail, path, print, 215 short_format, no_short_format = FALSE; 216 mail, short_prefix = TRUE; 217 last_msg_time, last_sender = ""; 218 last_time = 0; 219 alarm_time, flush_time = 0; 220 temp_call_string = ""; 221 prefix_string = ""; 222 prefix = FALSE; 223 call_string_info_ptr, msg_array_ptr, sci_ptr = null (); 224 sys_area_ptr = get_system_free_area_ (); 225 226 on cleanup call cleanup_am; 227 228 /* create ssu_ invocation */ 229 call ssu_$standalone_invocation (sci_ptr, ME, VERSION, null (), abort_am, code); 230 231 if code ^= 0 then do; 232 call com_err_ (code, ME, "Creating standalone subsystem invocation."); 233 return; 234 end; 235 236 /* process arguments */ 237 call ssu_$arg_count (sci_ptr, arg_count); 238 239 do idx = 1 to arg_count; 240 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 241 if arg = "-brief" | arg = "-bf" then brief, short_format = TRUE; 242 else if arg = "-long" | arg = "-lg" then do; 243 short_format = FALSE; 244 no_short_format = TRUE; 245 end; 246 else if arg = "-call" then do; 247 idx = idx + 1; 248 if idx > arg_count then temp_call_string = ""; 249 250 else do; 251 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 252 if index (arg, "-") = 1 then do; 253 temp_call_string = ""; 254 idx = idx - 1; 255 end; 256 else do; 257 if arg_len > length (temp_call_string) then 258 call ssu_$abort_line (sci_ptr, (0), "Call string may not be longer than ^d characters. ^a", length (temp_call_string), arg); 259 temp_call_string = arg; 260 end; 261 end; 262 call = TRUE; 263 end; 264 else if arg = "-flush" then do; 265 idx = idx + 1; 266 if idx > arg_count then call ssu_$abort_line (sci_ptr, error_table_$noarg, 267 "A flush time must be specified after ""^a"".", arg); 268 269 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 270 call convert_date_to_binary_ (arg, flush_time, code); 271 272 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "^a", arg); 273 end; 274 else if arg = "-hold" | arg = "-hd" | arg = "-hold_messages" | arg = "-hdmsg" then do; 275 hold = TRUE; 276 nohold = FALSE; 277 end; 278 else if arg = "-no_hold" | arg = "-nhd" | arg = "-no_hold_messages" | arg = "-nhdmsg" then do; 279 hold = FALSE; 280 nohold = TRUE; 281 alarm_time = 0; 282 end; 283 else if arg = "-hold_notifications" | arg = "-hdnt" then do; 284 hold_notify = TRUE; 285 nohold_notify = FALSE; 286 mail = TRUE; 287 nomail = FALSE; 288 end; 289 else if arg = "-no_hold_notifications" | arg = "-nhdnt" then do; 290 hold_notify = FALSE; 291 nohold_notify = TRUE; 292 end; 293 else if arg = "-mail" | arg = "-ml" | arg = "-notifications" | arg = "-nt" then do; 294 mail = TRUE; 295 nomail = FALSE; 296 end; 297 else if arg = "-no_mail" | arg = "-nml" | arg = "-no_notifications" | arg = "-nnt" then do; 298 mail = FALSE; 299 nomail = TRUE; 300 hold_notify = FALSE; 301 nohold_notify = TRUE; 302 end; 303 else if arg = "-pathname" | arg = "-pn" then do; 304 idx = idx + 1; 305 if idx > arg_count then call ssu_$abort_line (sci_ptr, error_table_$noarg, 306 "A pathname must be specified after ""^a"".", arg); 307 308 if path then call ssu_$abort_line (sci_ptr, (0), "Usage: am {mbx_specification} {-control_args}"); 309 310 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 311 call expand_pathname_$add_suffix (arg, "mbx", dname, ename, code); 312 313 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "^a", arg); 314 315 path = TRUE; 316 end; 317 else if arg = "-prefix" | arg = "-pfx" then do; 318 idx = idx + 1; 319 if idx > arg_count then call ssu_$abort_line (sci_ptr, error_table_$noarg, 320 "A prefix must be specified after ""^a"".", arg); 321 322 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 323 324 if arg_len > maxlength (prefix_string) then 325 call ssu_$abort_line (sci_ptr, (0), "Prefix may not be longer than ^d characters. ^a", maxlength (prefix_string), arg); 326 327 prefix_string = arg; 328 prefix = TRUE; 329 end; 330 else if arg = "-print" | arg = "-pr" then print = TRUE; 331 else if arg = "-no_print" | arg = "-npr" then print = FALSE; 332 else if arg = "-short" | arg = "-sh" then do; 333 short_format = TRUE; 334 no_short_format = FALSE; 335 end; 336 else if arg = "-short_prefix" | arg = "-shpfx" then short_prefix = TRUE; 337 else if arg = "-no_short_prefix" | arg = "-nshpfx" then short_prefix = FALSE; 338 else if arg = "-time" | arg = "-tm" then do; 339 idx = idx + 1; 340 if idx > arg_count then call ssu_$abort_line (sci_ptr, error_table_$noarg, 341 "An alarm time must be specified after ""^a"".", arg); 342 343 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 344 345 on conversion, size go to BAD_TIME; 346 alarm_time = 60 * convert (alarm_time, arg); 347 revert conversion, size; 348 349 hold = TRUE; 350 nohold = FALSE; 351 alarm = TRUE; 352 end; 353 else do; 354 /* let mlsys_utils_ have at it */ 355 local_pcao.version = PARSE_CA_OPTIONS_VERSION_1; 356 local_pcao.logbox_creation_mode = DONT_CREATE_MAILBOX; 357 local_pcao.savebox_creation_mode = DONT_CREATE_MAILBOX; 358 local_pcao.abort_on_errors = TRUE; 359 local_pcao.validate_addresses = FALSE; 360 local_pcao.mbz = ""b; 361 362 call mlsys_utils_$parse_mailbox_control_args (sci_ptr, idx, addr (local_pcao), dname, ename, code); 363 364 if code ^= 0 then call ssu_$abort_line (sci_ptr, code); 365 366 idx = idx - 1; 367 368 if path then call ssu_$abort_line (sci_ptr, (0), "Usage: am {msg_specification} {-control_args}"); 369 370 path = TRUE; 371 end; 372 end; 373 374 if ^path then do; 375 call user_info_$whoami (person, project, ""); 376 dname = ">udd>" || rtrim (project) || ">" || person; 377 ename = rtrim (person) || ".mbx"; 378 default = TRUE; 379 end; 380 381 call message_facility_$get_msgf_mbx_ptr (dname, ename, msgf_mbx_ptr, code); 382 383 if code = error_table_$noentry then do; 384 /* if default, create it; otherwise ask */ 385 if ^default then call command_query_$yes_no (create_mbx, code, ME, 386 "Answer ""yes"" if you want the mailbox to be created.", "Do you want to create the mailbox ^a?", pathname_ (dname, ename)); 387 388 if create_mbx | default then do; 389 call mailbox_$create (dname, ename, code); 390 391 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, 392 "Creating ^[default ^]mailbox ^a.", default, pathname_ (dname, ename)); 393 end; 394 else call abort_am (); 395 396 if ^brief then call ioa_ ("Creating ^[default ^]mailbox ^a.", default, pathname_ (dname, ename)); 397 398 call message_facility_$get_msgf_mbx_ptr (dname, ename, msgf_mbx_ptr, code); 399 end; 400 401 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, 402 "Getting message facility mailbox pointer. ^a", pathname_ (dname, ename)); 403 404 /* get wakeup state */ 405 call message_facility_$get_wakeup_state (msgf_mbx_ptr, flags, code); 406 407 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Getting wakeup state. ^a", pathname_ (dname, ename)); 408 409 local_wf_ptr = addr (flags); 410 411 local_wf.wakeup_state = ACCEPT_MESSAGES; 412 if nohold then local_wf.hold_messages = FALSE; 413 else if hold then local_wf.hold_messages = TRUE; 414 if nohold_notify then local_wf.hold_notifications = FALSE; 415 else if hold_notify then local_wf.hold_notifications = TRUE; 416 if nomail then local_wf.print_notifications = FALSE; 417 else if mail then local_wf.print_notifications = TRUE; 418 419 call message_facility_$set_wakeup_state (msgf_mbx_ptr, flags, code); 420 421 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Setting wakeup state. ^a", pathname_ (dname, ename)); 422 423 /* set prefix */ 424 if prefix then do; 425 call message_facility_$set_prefix (msgf_mbx_ptr, prefix_string, short_prefix, code); 426 427 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Setting prefix. ^a", pathname_ (dname, ename)); 428 end; 429 430 /* set message format */ 431 call message_facility_$get_message_format (msgf_mbx_ptr, short_format_switch, code); 432 433 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Getting message format. ^a", pathname_ (dname, ename)); 434 435 if short_format then new_short_format_switch = TRUE; 436 else if no_short_format then new_short_format_switch = FALSE; 437 else new_short_format_switch = short_format_switch; 438 439 if new_short_format_switch ^= short_format_switch then do; 440 call message_facility_$set_message_format (msgf_mbx_ptr, new_short_format_switch, code); 441 442 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Setting message format. ^a", pathname_ (dname, ename)); 443 end; 444 445 /* take care of call string */ 446 call mailbox_$get_uid_file (dname, ename, uid, code); 447 448 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Getting mailbox UID. ^a", pathname_ (dname, ename)); 449 450 call_string_info_ptr = static_call_string_info_ptr; 451 found = FALSE; 452 453 do while (call_string_info_ptr ^= null () & ^found); 454 if call_string_info.uid = uid then found = TRUE; 455 else call_string_info_ptr = call_string_info.next_call_string_ptr; 456 end; 457 458 if found & call then call_string = temp_call_string; 459 else if ^found then do; 460 allocate call_string_info in (sys_area); 461 call_string_info.uid = uid; 462 allocate call_string in (sys_area); 463 if call then call_string = temp_call_string; 464 else call_string = ""; 465 call_string_info.next_call_string_ptr = static_call_string_info_ptr; 466 static_call_string_info_ptr = call_string_info_ptr; 467 end; 468 469 /* set alarm handler */ 470 if alarm then do; 471 call message_facility_$set_alarm_handler (msgf_mbx_ptr, message_facility_$default_alarm_handler, 472 addr (call_string), alarm_time, code); 473 474 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Setting alarm handler. ^a", pathname_ (dname, ename)); 475 end; 476 477 if print | flush_time ^= 0 then do; /* only get msg array for print or flush */ 478 call message_facility_$get_msg_array_ptr (msgf_mbx_ptr, sys_area_ptr, msg_array_ptr, n_messages, code); 479 480 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, 481 "Getting message array pointer. ^a", pathname_ (dname, ename)); 482 483 /* print old messages */ 484 if print then do; 485 do idx = 1 to n_messages; 486 call print_message (idx, msg_array.message_id (idx)); 487 end; 488 end; 489 490 /* flush messages from before flush_time */ 491 if flush_time ^= 0 then do; 492 do idx = 1 to n_messages; 493 if fixed (substr (msg_array.message_id (idx), 19, 54), 71) < flush_time then do; 494 call message_facility_$delete_message (msgf_mbx_ptr, msg_array.message_id (idx), code); 495 496 end; 497 end; 498 end; 499 end; /* only get msg array for print or flush */ 500 501 /* set wakeup handler */ 502 call message_facility_$set_wakeup_handler (msgf_mbx_ptr, message_facility_$default_wakeup_handler, 503 addr (call_string), code); 504 505 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Setting wakeup handler. ^a", pathname_ (dname, ename)); 506 507 call cleanup_am; 508 RETURN_FROM_AM: 509 return; 510 511 BAD_TIME: 512 call ssu_$abort_line (sci_ptr, (0), """^a"" is not a decimal integer.", arg); 513 return; 514 515 /* This procedure removes control characters (except backspace, tab, 516* red ribbon shift, and black ribbon shift) and canonicalizes strings 517* to prevent backspacing past the front of the string. */ 518 canon: procedure (P_string, P_string_len) returns (char (*)); 519 dcl P_string char (*) parm; 520 dcl P_string_len fixed bin (21) parm; 521 dcl output_string char (P_string_len); 522 523 P_string = translate (P_string, ALPHABET); 524 if index (P_string, BS) ^= 0 then do; 525 output_string = ""; 526 call canonicalize_ (addr (P_string), length (P_string), addr (output_string), P_string_len, (0)); 527 return (output_string); 528 end; 529 else return (P_string); 530 end canon; 531 532 /* This procedure prints a message. */ 533 print_message: procedure (P_message_index, P_message_id); 534 dcl P_message_index fixed bin parm; 535 dcl P_message_id bit (72) aligned parm; 536 537 mail_format_ptr = null (); 538 539 local_mi.version = MESSAGE_INFO_VERSION_1; 540 541 on cleanup begin; 542 if mail_format_ptr ^= null () then free mail_format in (sys_area); 543 mail_format_ptr = null (); 544 end; 545 546 call message_facility_$read_message (msgf_mbx_ptr, P_message_id, sys_area_ptr, addr (local_mi), code); 547 if code ^= 0 then return; 548 mail_format_ptr = local_mi.message_ptr; 549 date_time = fixed (substr (P_message_id, 19, 54), 71); 550 call date_time_ (date_time, msg_date_time); 551 552 /* create message sender string */ 553 if mail_format.sent_from = before (local_mi.sender, ".") | rtrim (mail_format.sent_from) = "" then 554 message_sender = substr (local_mi.sender, 1, length (rtrim (local_mi.sender)) - 2); 555 else message_sender = substr (local_mi.sender, 1, length (rtrim (local_mi.sender)) - 2) 556 || " (" || rtrim (canon (rtrim (mail_format.sent_from), length (rtrim (mail_format.sent_from)))) || ")"; 557 authorization = get_authorization_ (); 558 if ^aim_check_$greater_or_equal (local_mi.authorization, authorization) then do; 559 call convert_access_class_$to_string_short (local_mi.authorization, auth_string, code); 560 if auth_string = "" then auth_string = "system_low"; 561 message_sender = rtrim (message_sender) || " at " || auth_string; 562 end; 563 564 if message_sender = last_sender then short = TRUE; 565 else short = FALSE; 566 567 if temp_call_string ^= "" then do; 568 call ioa_$rsnnl (" ^d ", tag, (0), msg_array.message_number (P_message_index)); 569 if default then pathname = ""; 570 else pathname = requote_string_ (pathname_ (dname, ename)); 571 command_line = rtrim (temp_call_string) || " " || tag || requote_string_ (rtrim (message_sender)) 572 || " " || requote_string_ (rtrim (date_time_$format ("date_time", date_time, "", ""))) || " " 573 || requote_string_ (rtrim (canon (rtrim (mail_format.text, NLSPHT), length (rtrim (mail_format.text, NLSPHT))))) || " " || pathname; 574 call cu_$cp (addr (command_line), length (rtrim (command_line)), (0)); 575 end; 576 577 else do; 578 string (msg_print_flags) = ""b; 579 580 /* print prefix, it may contain ioa_ controls */ 581 if ^short | short_prefix then msg_print_flags.print_prefix = TRUE; 582 583 /* if not default mailbox, prefix with mailbox entry name */ 584 if ^default then msg_print_flags.print_ename = TRUE; 585 586 if ^short_format_switch | ^short then 587 msg_print_flags.print_sender = TRUE; 588 589 if ^short_format_switch | substr (msg_date_time, 1, 8) ^= last_msg_time then msg_print_flags.print_date_and_time = TRUE; 590 else if date_time - last_time > FIVE_MINUTES then msg_print_flags.print_time = TRUE; 591 592 last_sender = message_sender; 593 last_time = date_time; 594 last_msg_time = substr (msg_date_time, 1, 8); 595 596 call message_facility_$print_message (msgf_mbx_ptr, iox_$user_output, P_message_id, addr (msg_print_flags), code); 597 598 call message_facility_$set_seen_switch (msgf_mbx_ptr, P_message_id, DELETE_UNHELD, code); 599 if mail_format_ptr ^= null () then do; 600 free mail_format in (sys_area); 601 mail_format_ptr = null (); 602 end; 603 end; 604 end print_message; 605 606 cleanup_am: proc; 607 if sci_ptr ^= null () then call ssu_$destroy_invocation (sci_ptr); 608 if msg_array_ptr ^= null () then free msg_array in (sys_area); 609 return; 610 end cleanup_am; 611 612 abort_am: proc; 613 call cleanup_am; 614 go to RETURN_FROM_AM; 615 end abort_am; 616 617 1 1 /* BEGIN Mailbox Message Include File (mail_format.incl.pl1) */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-01-09,Herbst), approve(86-03-25,MCR7367), 1 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 1 7* Added "seen" switch. 1 8* 2) change(86-06-02,Herbst), approve(86-06-02,MCR7367), audit(86-06-30,Wong), 1 9* install(86-06-30,MR12.0-1080): 1 10* Updated to version 4 for seen switch. 1 11* END HISTORY COMMENTS */ 1 12 1 13 /* Last modified by K. T. Pogran, 3/6/75 */ 1 14 /* Modified by D. M. Wells, August 10, 1977 for v4 message segments. */ 1 15 /* Modified: 3 June 1981 by G. Palter for mail system subroutine interface */ 1 16 1 17 declare mail_format_ptr pointer aligned; 1 18 1 19 declare MAIL_FORMAT_VERSION_4 initial (4) 1 20 fixed bin internal static options (constant); 1 21 1 22 declare text_length fixed bin (21); 1 23 1 24 declare 1 mail_format aligned based (mail_format_ptr), 1 25 2 header, 1 26 3 version fixed bin (17), 1 27 3 sent_from char (32) aligned, 1 28 3 lines fixed bin (17), 1 29 3 text_len fixed bin (21), 1 30 3 switches aligned, 1 31 4 wakeup bit (1) unaligned, 1 32 4 urgent bit (1) unaligned, 1 33 4 notify bit (1) unaligned, 1 34 4 acknowledge bit (1) unaligned, 1 35 4 obsolete bit (1) unaligned, 1 36 4 canonical bit (1) unaligned, 1 37 4 seen bit (1) unaligned, 1 38 4 others bit (65) unaligned, 1 39 2 text char(text_length refer (mail_format.header.text_len)) aligned; 1 40 1 41 /* END Mailbox Message Include File (mail_format.incl.pl1) */ 618 619 2 1 /* BEGIN INCLUDE FILE message_info.incl.pl1 */ 2 2 /* Written 05/15/84 by Jim Lippard */ 2 3 2 4 dcl 1 message_info aligned based (message_info_ptr), 2 5 2 version char (8), 2 6 2 sender char (32), 2 7 2 message_ptr ptr, 2 8 2 authorization bit (72); 2 9 2 10 dcl message_info_ptr ptr; 2 11 2 12 dcl MESSAGE_INFO_VERSION_1 char (8) internal static options (constant) init ("msginfo1"); 2 13 2 14 /* END INCLUDE FILE message_info.incl.pl1 */ 620 621 3 1 /* BEGIN INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 3 2 /* Created: June 1983 by G. Palter */ 3 3 /* Modified: March 1984 by G. Palter to remove ignore_log_save option */ 3 4 3 5 /* Options for the mlsys_utils_$parse_address_control_arguments, mlsys_utils_$parse_address_list_control_arguments, and 3 6* mlsys_utils_$parse_mailbox_control_arguments entrypoints */ 3 7 3 8 dcl 1 parse_ca_options aligned based (parse_ca_options_ptr), 3 9 2 version character (8) unaligned, 3 10 2 logbox_creation_mode fixed binary, /* specifies the action to be taken if the address/mailbox is 3 11* the user's logbox, address/mailbox validation is requested, 3 12* and the logbox does not exist */ 3 13 2 savebox_creation_mode fixed binary, /* ... same as above but for any savebox */ 3 14 2 flags, 3 15 3 abort_on_errors bit (1) unaligned, /* ON => use ssu_$abort_line to report errors (ie: abort on 3 16* the first error); OFF => use ssu_$print_message */ 3 17 3 validate_addresses bit (1) unaligned, /* ON => validate the existence of the address/mailbox; 3 18* OFF => only validate the command/request line syntax */ 3 19 3 mbz bit (34) unaligned; /* must be set to ""b by the caller */ 3 20 3 21 dcl PARSE_CA_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlspca01"); 3 22 3 23 dcl parse_ca_options_ptr pointer; 3 24 3 25 3 26 /* Defined logbox/savebox creation modes */ 3 27 3 28 dcl (DONT_CREATE_MAILBOX initial (0), /* do not create the mailbox and issue an error message */ 3 29 QUERY_TO_CREATE_MAILBOX initial (1), /* ask the user for permission to create the mailbox */ 3 30 CREATE_AND_ANNOUNCE_MAILBOX initial (2), /* create the mailbox and inform the user of this action */ 3 31 SILENTLY_CREATE_MAILBOX initial (3)) /* create the mailbox but don't inform the user */ 3 32 fixed binary static options (constant); 3 33 3 34 /* END INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 622 623 4 1 /* BEGIN INCLUDE FILE msg_array.incl.pl1 */ 4 2 /* Written 05/29/84 by Jim Lippard */ 4 3 4 4 dcl 1 msg_array (n_messages) aligned based (msg_array_ptr), 4 5 2 message_id bit (72), 4 6 2 message_number fixed bin, 4 7 2 flags, 4 8 3 printed bit (1) unal, 4 9 3 mbz bit (35) unal; 4 10 4 11 dcl msg_array_ptr ptr; 4 12 4 13 dcl n_messages fixed bin; 4 14 4 15 dcl DELETE_UNHELD bit (3) internal static options (constant) init ("100"b); 4 16 dcl DONT_DELETE_MESSAGES bit (3) internal static options (constant) init ("010"b); 4 17 dcl DONT_DELETE_NOTIFICATIONS bit (3) internal static options (constant) init ("001"b); 4 18 4 19 /* END INCLUDE FILE msg_array.incl.pl1 */ 624 625 5 1 /* BEGIN INCLUDE FILE msg_print_flags.incl.pl1 */ 5 2 /* Written 10/17/84 by Jim Lippard */ 5 3 5 4 dcl 1 msg_print_flags unaligned, 5 5 2 print_prefix bit (1), 5 6 2 print_ename bit (1), 5 7 2 print_sender bit (1), 5 8 2 print_date_and_time bit (1), 5 9 2 print_time bit (1), 5 10 2 print_last_message bit (1), 5 11 2 mbz bit (30); 5 12 5 13 /* END INCLUDE FILE msg_print_flags.incl.pl1 */ 626 627 6 1 /* BEGIN INCLUDE FILE msg_wakeup_flags.incl.pl1 */ 6 2 /* Written 08/24/84 by Jim Lippard */ 6 3 6 4 dcl 1 wakeup_flags unaligned based, 6 5 2 hold_messages bit (1), 6 6 2 hold_notifications bit (1), 6 7 2 print_notifications bit (1), 6 8 2 wakeup_state bit (2), 6 9 2 mbz bit (31); 6 10 6 11 dcl ACCEPT_MESSAGES bit (2) internal static options (constant) init ("10"b); 6 12 dcl DEFER_MESSAGES bit (2) internal static options (constant) init ("01"b); 6 13 6 14 /* END INCLUDE FILE msg_wakeup_flags.incl.pl1 */ 628 629 630 end accept_messages; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1151.9 accept_messages.pl1 >udd>sm>ds>w>ml>accept_messages.pl1 618 1 06/30/86 2123.8 mail_format.incl.pl1 >ldd>incl>mail_format.incl.pl1 620 2 11/08/84 1026.0 message_info.incl.pl1 >ldd>incl>message_info.incl.pl1 622 3 06/18/84 1424.1 mlsys_parse_ca_options.incl.pl1 >ldd>incl>mlsys_parse_ca_options.incl.pl1 624 4 11/08/84 1026.0 msg_array.incl.pl1 >ldd>incl>msg_array.incl.pl1 626 5 11/08/84 1026.0 msg_print_flags.incl.pl1 >ldd>incl>msg_print_flags.incl.pl1 628 6 11/08/84 1026.0 msg_wakeup_flags.incl.pl1 >ldd>incl>msg_wakeup_flags.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ACCEPT_MESSAGES 000006 constant bit(2) initial packed unaligned dcl 6-11 ref 411 ALPHABET 002013 automatic char(256) initial packed unaligned dcl 203 set ref 203* 523 BS constant char(1) initial dcl 207 ref 524 DELETE_UNHELD 000006 constant bit(3) initial packed unaligned dcl 4-15 set ref 598* DONT_CREATE_MAILBOX constant fixed bin(17,0) initial dcl 3-28 ref 356 357 FALSE constant bit(1) initial dcl 209 ref 214 222 243 276 279 285 287 290 295 298 300 331 334 337 350 359 412 414 416 436 451 565 FIVE_MINUTES 000004 constant fixed bin(71,0) initial dcl 211 ref 590 ME 000011 constant char(15) initial packed unaligned dcl 32 set ref 229* 232* 385* MESSAGE_INFO_VERSION_1 000002 constant char(8) initial packed unaligned dcl 2-12 ref 539 NLSPHT 000007 constant char(3) initial packed unaligned dcl 205 ref 571 571 571 571 571 571 571 571 PARSE_CA_OPTIONS_VERSION_1 000000 constant char(8) initial packed unaligned dcl 3-21 ref 355 P_message_id parameter bit(72) dcl 535 set ref 533 546* 549 596* 598* P_message_index parameter fixed bin(17,0) dcl 534 ref 533 568 P_string parameter char packed unaligned dcl 519 set ref 518 523* 523 524 526 526 526 526 529 P_string_len parameter fixed bin(21,0) dcl 520 set ref 518 521 526* TRUE 000006 constant bit(1) initial dcl 208 ref 216 241 244 262 275 280 284 286 291 294 299 301 315 328 330 333 336 349 351 358 370 378 413 415 417 435 454 564 581 584 586 589 590 VERSION 000010 constant char(3) initial packed unaligned dcl 33 set ref 229* abort_on_errors 4 001552 automatic bit(1) level 3 packed packed unaligned dcl 156 set ref 358* addr builtin function dcl 194 ref 362 362 409 471 471 502 502 526 526 526 526 546 546 574 574 596 596 aim_check_$greater_or_equal 000012 constant entry external dcl 35 ref 558 alarm 000173 automatic bit(1) dcl 106 set ref 214* 351* 470 alarm_time 000106 automatic fixed bin(71,0) dcl 96 set ref 219* 281* 346* 346 471* arg based char packed unaligned dcl 101 set ref 241 241 242 242 246 252 257* 259 264 266* 270* 272* 274 274 274 274 278 278 278 278 283 283 289 289 293 293 293 293 297 297 297 297 303 303 305* 311* 313* 317 317 319* 324* 327 330 330 331 331 332 332 336 336 337 337 338 338 340* 346 511* arg_count 000110 automatic fixed bin(17,0) dcl 98 set ref 237* 239 248 266 305 319 340 arg_len 000114 automatic fixed bin(21,0) dcl 100 set ref 240* 241 241 242 242 246 251* 252 257 257 257 259 264 266 266 269* 270 270 272 272 274 274 274 274 278 278 278 278 283 283 289 289 293 293 293 293 297 297 297 297 303 303 305 305 310* 311 311 313 313 317 317 319 319 322* 324 324 324 327 330 330 331 331 332 332 336 336 337 337 338 338 340 340 343* 346 511 511 arg_ptr 000112 automatic pointer dcl 99 set ref 240* 241 241 242 242 246 251* 252 257 259 264 266 269* 270 272 274 274 274 274 278 278 278 278 283 283 289 289 293 293 293 293 297 297 297 297 303 303 305 310* 311 313 317 317 319 322* 324 327 330 330 331 331 332 332 336 336 337 337 338 338 340 343* 346 511 auth_string 000120 automatic char(170) packed unaligned dcl 104 set ref 559* 560 560* 561 authorization 14 001534 automatic bit(72) level 2 in structure "local_mi" dcl 155 in procedure "am" set ref 558* 559* authorization 000116 automatic bit(72) dcl 103 in procedure "am" set ref 557* 558* before builtin function dcl 194 ref 553 brief 000174 automatic bit(1) dcl 108 set ref 214* 241* 396 call 000175 automatic bit(1) dcl 110 set ref 214* 262* 458 463 call_string based char(512) packed unaligned dcl 121 set ref 458* 462 463* 464* 471 471 502 502 call_string_info based structure level 1 dcl 112 set ref 460 call_string_info_ptr 000176 automatic pointer dcl 117 set ref 223* 450* 453 454 455* 455 458 460* 461 462 463 464 465 466 471 471 502 502 call_string_ptr 2 based pointer level 2 dcl 112 set ref 458 462* 463 464 471 471 502 502 canonicalize_ 000014 constant entry external dcl 37 ref 526 cleanup 000100 stack reference condition dcl 94 ref 226 541 code 002012 automatic fixed bin(35,0) dcl 198 set ref 229* 231 232* 270* 272 272* 311* 313 313* 362* 364 364* 381* 383 385* 389* 391 391* 398* 401 401* 405* 407 407* 419* 421 421* 425* 427 427* 431* 433 433* 440* 442 442* 446* 448 448* 471* 474 474* 478* 480 480* 494* 502* 505 505* 546* 547 559* 596* 598* collate builtin function dcl 194 ref 203 com_err_ 000016 constant entry external dcl 39 ref 232 command_line 000400 automatic char(2000) packed unaligned dcl 124 set ref 571* 574 574 574 574 command_query_$yes_no 000020 constant entry external dcl 41 ref 385 conversion 001776 stack reference condition dcl 196 ref 345 347 convert builtin function dcl 194 ref 346 convert_access_class_$to_string_short 000022 constant entry external dcl 43 ref 559 convert_date_to_binary_ 000024 constant entry external dcl 45 ref 270 create_mbx 001364 automatic bit(1) dcl 126 set ref 385* 388 cu_$cp 000026 constant entry external dcl 47 ref 574 date_time 001366 automatic fixed bin(71,0) dcl 128 set ref 549* 550* 571* 571* 590 593 date_time_ 000030 constant entry external dcl 49 ref 550 date_time_$format 000032 constant entry external dcl 50 ref 571 571 default 001370 automatic bit(1) dcl 130 set ref 214* 378* 385 388 391* 396* 569 584 dname 001371 automatic char(168) packed unaligned dcl 132 set ref 311* 362* 376* 381* 385* 385* 389* 391* 391* 396* 396* 398* 401* 401* 407* 407* 421* 421* 427* 427* 433* 433* 442* 442* 446* 448* 448* 474* 474* 480* 480* 505* 505* 570* 570* ename 001443 automatic char(32) packed unaligned dcl 133 set ref 311* 362* 377* 381* 385* 385* 389* 391* 391* 396* 396* 398* 401* 401* 407* 407* 421* 421* 427* 427* 433* 433* 442* 442* 446* 448* 448* 474* 474* 480* 480* 505* 505* 570* 570* error_table_$noarg 000134 external static fixed bin(35,0) dcl 200 set ref 266* 305* 319* 340* error_table_$noentry 000136 external static fixed bin(35,0) dcl 201 ref 383 expand_pathname_$add_suffix 000034 constant entry external dcl 52 ref 311 fixed builtin function dcl 194 ref 493 549 flags 4 001552 automatic structure level 2 in structure "local_pcao" dcl 156 in procedure "am" flags 001453 automatic bit(5) packed unaligned dcl 135 in procedure "am" set ref 405* 409 419* flush_time 001456 automatic fixed bin(71,0) dcl 139 set ref 219* 270* 477 491 493 found 001460 automatic bit(1) dcl 141 set ref 451* 453 454* 458 459 get_authorization_ 000036 constant entry external dcl 54 ref 557 get_system_free_area_ 000040 constant entry external dcl 55 ref 224 header based structure level 2 dcl 1-24 hold 001461 automatic bit(1) dcl 143 set ref 214* 275* 279* 349* 413 hold_messages based bit(1) level 2 packed packed unaligned dcl 136 set ref 412* 413* hold_notifications 0(01) based bit(1) level 2 packed packed unaligned dcl 136 set ref 414* 415* hold_notify 001463 automatic bit(1) dcl 146 set ref 214* 284* 290* 300* 415 idx 001465 automatic fixed bin(17,0) dcl 149 set ref 239* 240* 247* 247 248 251* 254* 254 265* 265 266 269* 304* 304 305 310* 318* 318 319 322* 339* 339 340 343* 362* 366* 366* 485* 486* 486* 492* 493 494* index builtin function dcl 194 ref 252 524 ioa_ 000042 constant entry external dcl 57 ref 396 ioa_$rsnnl 000044 constant entry external dcl 57 ref 568 iox_$user_output 000046 external static pointer dcl 59 set ref 596* last_msg_time 001466 automatic char(24) packed unaligned dcl 151 set ref 217* 589 594* last_sender 001474 automatic char(120) packed unaligned dcl 152 set ref 217* 564 592* last_time 001532 automatic fixed bin(71,0) dcl 153 set ref 218* 590 593* length builtin function dcl 194 ref 257 257 257 526 526 553 555 555 555 571 571 571 571 574 574 local_mi 001534 automatic structure level 1 dcl 155 set ref 546 546 local_pcao 001552 automatic structure level 1 dcl 156 set ref 362 362 local_wf based structure level 1 packed packed unaligned dcl 136 local_wf_ptr 001454 automatic pointer dcl 137 set ref 409* 411 412 413 414 415 416 417 logbox_creation_mode 2 001552 automatic fixed bin(17,0) level 2 dcl 156 set ref 356* mail 001557 automatic bit(1) dcl 158 set ref 216* 286* 294* 298* 417 mail_format based structure level 1 dcl 1-24 ref 542 600 mail_format_ptr 002114 automatic pointer dcl 1-17 set ref 537* 542 542 543* 548* 553 553 555 555 555 555 571 571 571 571 571 571 571 571 599 600 601* mailbox_$create 000052 constant entry external dcl 63 ref 389 mailbox_$get_uid_file 000054 constant entry external dcl 64 ref 446 maxlength builtin function dcl 194 ref 324 324 324 mbz 4(02) 001552 automatic bit(34) level 3 packed packed unaligned dcl 156 set ref 360* message_facility_$default_alarm_handler 000056 constant entry external dcl 66 ref 471 471 message_facility_$default_wakeup_handler 000060 constant entry external dcl 67 ref 502 502 message_facility_$delete_message 000062 constant entry external dcl 68 ref 494 message_facility_$get_message_format 000064 constant entry external dcl 69 ref 431 message_facility_$get_msg_array_ptr 000066 constant entry external dcl 70 ref 478 message_facility_$get_msgf_mbx_ptr 000070 constant entry external dcl 71 ref 381 398 message_facility_$get_wakeup_state 000072 constant entry external dcl 72 ref 405 message_facility_$print_message 000074 constant entry external dcl 73 ref 596 message_facility_$read_message 000076 constant entry external dcl 74 ref 546 message_facility_$set_alarm_handler 000100 constant entry external dcl 75 ref 471 message_facility_$set_message_format 000102 constant entry external dcl 76 ref 440 message_facility_$set_prefix 000104 constant entry external dcl 77 ref 425 message_facility_$set_seen_switch 000106 constant entry external dcl 78 ref 598 message_facility_$set_wakeup_handler 000110 constant entry external dcl 79 ref 502 message_facility_$set_wakeup_state 000112 constant entry external dcl 80 ref 419 message_id based bit(72) array level 2 dcl 4-4 set ref 486* 493 494* message_info based structure level 1 dcl 2-4 message_number 2 based fixed bin(17,0) array level 2 dcl 4-4 set ref 568* message_ptr 12 001534 automatic pointer level 2 dcl 155 set ref 548 message_sender 001561 automatic char(120) packed unaligned dcl 161 set ref 553* 555* 561* 561 564 571 571 592 mlsys_utils_$parse_mailbox_control_args 000050 constant entry external dcl 61 ref 362 msg_array based structure array level 1 dcl 4-4 set ref 608 msg_array_ptr 002116 automatic pointer dcl 4-11 set ref 223* 478* 486 493 494 568 608 608 msg_date_time 001617 automatic char(24) packed unaligned dcl 163 set ref 550* 589 594 msg_print_flags 002121 automatic structure level 1 packed packed unaligned dcl 5-4 set ref 578* 596 596 msgf_mbx_ptr 001626 automatic pointer dcl 165 set ref 381* 398* 405* 419* 425* 431* 440* 471* 478* 494* 502* 546* 596* 598* n_messages 002120 automatic fixed bin(17,0) dcl 4-13 set ref 478* 485 492 608 new_short_format_switch 001763 automatic bit(1) dcl 183 set ref 435* 436* 437* 439 440* next_call_string_ptr 4 based pointer level 2 dcl 112 set ref 455 465* no_short_format 001761 automatic bit(1) dcl 181 set ref 214* 244* 334* 436 nohold 001462 automatic bit(1) dcl 144 set ref 214* 276* 280* 350* 412 nohold_notify 001464 automatic bit(1) dcl 147 set ref 214* 285* 291* 301* 414 nomail 001560 automatic bit(1) dcl 159 set ref 214* 287* 295* 299* 416 null builtin function dcl 194 ref 223 229 229 453 537 542 543 599 601 607 608 output_string 000100 automatic char packed unaligned dcl 521 set ref 525* 526 526 527 parse_ca_options based structure level 1 dcl 3-8 path 001630 automatic bit(1) dcl 167 set ref 214* 308 315* 368 370* 374 pathname 001631 automatic char(256) packed unaligned dcl 168 set ref 569* 570* 571 pathname_ 000114 constant entry external dcl 82 ref 385 385 391 391 396 396 401 401 407 407 421 421 427 427 433 433 442 442 448 448 474 474 480 480 505 505 570 570 person 001731 automatic char(22) packed unaligned dcl 170 set ref 375* 376 377 prefix 001753 automatic bit(1) dcl 174 set ref 222* 328* 424 prefix_string 001742 automatic varying char(32) dcl 173 set ref 221* 324 324 324 327* 425* print 001754 automatic bit(1) dcl 176 set ref 214* 330* 331* 477 484 print_date_and_time 0(03) 002121 automatic bit(1) level 2 packed packed unaligned dcl 5-4 set ref 589* print_ename 0(01) 002121 automatic bit(1) level 2 packed packed unaligned dcl 5-4 set ref 584* print_notifications 0(02) based bit(1) level 2 packed packed unaligned dcl 136 set ref 416* 417* print_prefix 002121 automatic bit(1) level 2 packed packed unaligned dcl 5-4 set ref 581* print_sender 0(02) 002121 automatic bit(1) level 2 packed packed unaligned dcl 5-4 set ref 586* print_time 0(04) 002121 automatic bit(1) level 2 packed packed unaligned dcl 5-4 set ref 590* project 001737 automatic char(9) packed unaligned dcl 171 set ref 375* 376 requote_string_ 000116 constant entry external dcl 84 ref 570 571 571 571 rtrim builtin function dcl 194 ref 376 377 553 553 555 555 555 555 555 555 561 571 571 571 571 571 571 571 571 571 571 571 571 571 571 571 574 574 savebox_creation_mode 3 001552 automatic fixed bin(17,0) level 2 dcl 156 set ref 357* sci_ptr 001756 automatic pointer dcl 178 set ref 223* 229* 237* 240* 251* 257* 266* 269* 272* 305* 308* 310* 313* 319* 322* 324* 340* 343* 362* 364* 368* 391* 401* 407* 421* 427* 433* 442* 448* 474* 480* 505* 511* 607 607* sender 2 001534 automatic char(32) level 2 dcl 155 set ref 553 553 553 555 555 sent_from 1 based char(32) level 3 dcl 1-24 ref 553 553 555 555 555 555 short 001764 automatic bit(1) dcl 184 set ref 564* 565* 581 586 short_format 001760 automatic bit(1) dcl 180 set ref 214* 241* 243* 333* 435 short_format_switch 001762 automatic bit(1) dcl 182 set ref 431* 437 439 586 589 short_prefix 001765 automatic bit(1) dcl 185 set ref 216* 336* 337* 425* 581 size 002004 stack reference condition dcl 196 ref 345 347 ssu_$abort_line 000120 constant entry external dcl 86 ref 257 266 272 305 308 313 319 324 340 364 368 391 401 407 421 427 433 442 448 474 480 505 511 ssu_$arg_count 000122 constant entry external dcl 87 ref 237 ssu_$arg_ptr 000124 constant entry external dcl 88 ref 240 251 269 310 322 343 ssu_$destroy_invocation 000126 constant entry external dcl 89 ref 607 ssu_$standalone_invocation 000130 constant entry external dcl 90 ref 229 static_call_string_info_ptr 000010 internal static pointer initial dcl 119 set ref 450 465 466* string builtin function dcl 194 set ref 578* substr builtin function dcl 194 ref 203 493 549 553 555 589 594 sys_area based area(1024) dcl 187 ref 460 462 542 600 608 sys_area_ptr 001766 automatic pointer dcl 188 set ref 224* 460 462 478* 542 546* 600 608 tag 001770 automatic varying char(10) dcl 190 set ref 568* 571 temp_call_string 000200 automatic char(512) packed unaligned dcl 122 set ref 220* 248* 253* 257 257 257 259* 458 463 567 571 text 15 based char level 2 dcl 1-24 ref 571 571 571 571 571 571 571 571 text_len 12 based fixed bin(21,0) level 3 dcl 1-24 ref 542 571 571 571 571 571 571 571 571 600 translate builtin function dcl 194 ref 523 uid 001774 automatic bit(36) dcl 192 in procedure "am" set ref 446* 454 461 uid based bit(36) level 2 in structure "call_string_info" dcl 112 in procedure "am" set ref 454 461* user_info_$whoami 000132 constant entry external dcl 92 ref 375 validate_addresses 4(01) 001552 automatic bit(1) level 3 packed packed unaligned dcl 156 set ref 359* version 001552 automatic char(8) level 2 in structure "local_pcao" packed packed unaligned dcl 156 in procedure "am" set ref 355* version 001534 automatic char(8) level 2 in structure "local_mi" dcl 155 in procedure "am" set ref 539* wakeup_flags based structure level 1 packed packed unaligned dcl 6-4 wakeup_state 0(03) based bit(2) level 2 packed packed unaligned dcl 136 set ref 411* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CREATE_AND_ANNOUNCE_MAILBOX internal static fixed bin(17,0) initial dcl 3-28 DEFER_MESSAGES internal static bit(2) initial packed unaligned dcl 6-12 DONT_DELETE_MESSAGES internal static bit(3) initial packed unaligned dcl 4-16 DONT_DELETE_NOTIFICATIONS internal static bit(3) initial packed unaligned dcl 4-17 MAIL_FORMAT_VERSION_4 internal static fixed bin(17,0) initial dcl 1-19 QUERY_TO_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 3-28 SILENTLY_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 3-28 message_info_ptr automatic pointer dcl 2-10 parse_ca_options_ptr automatic pointer dcl 3-23 text_length automatic fixed bin(21,0) dcl 1-22 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_TIME 004610 constant label dcl 511 set ref 345 RETURN_FROM_AM 004607 constant label dcl 508 ref 614 abort_am 006447 constant entry internal dcl 612 ref 229 229 394 accept_messages 000707 constant entry external dcl 31 am 000677 constant entry external dcl 31 canon 004646 constant entry internal dcl 518 ref 555 571 571 cleanup_am 006414 constant entry internal dcl 606 ref 226 507 613 print_message 004774 constant entry internal dcl 533 ref 486 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7514 7654 6673 7524 Length 10304 6673 140 413 620 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME am 1358 external procedure is an external procedure. on unit on line 226 64 on unit on unit on line 345 64 on unit canon 88 internal procedure uses auto adjustable storage, uses returns(char(*)) or returns(bit(*)), and is called during a stack extension. print_message 245 internal procedure enables or reverts conditions. on unit on line 541 64 on unit cleanup_am 68 internal procedure is called by several nonquick procedures. abort_am 64 internal procedure is assigned to an entry variable. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 static_call_string_info_ptr am STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME am 000106 alarm_time am 000110 arg_count am 000112 arg_ptr am 000114 arg_len am 000116 authorization am 000120 auth_string am 000173 alarm am 000174 brief am 000175 call am 000176 call_string_info_ptr am 000200 temp_call_string am 000400 command_line am 001364 create_mbx am 001366 date_time am 001370 default am 001371 dname am 001443 ename am 001453 flags am 001454 local_wf_ptr am 001456 flush_time am 001460 found am 001461 hold am 001462 nohold am 001463 hold_notify am 001464 nohold_notify am 001465 idx am 001466 last_msg_time am 001474 last_sender am 001532 last_time am 001534 local_mi am 001552 local_pcao am 001557 mail am 001560 nomail am 001561 message_sender am 001617 msg_date_time am 001626 msgf_mbx_ptr am 001630 path am 001631 pathname am 001731 person am 001737 project am 001742 prefix_string am 001753 prefix am 001754 print am 001756 sci_ptr am 001760 short_format am 001761 no_short_format am 001762 short_format_switch am 001763 new_short_format_switch am 001764 short am 001765 short_prefix am 001766 sys_area_ptr am 001770 tag am 001774 uid am 002012 code am 002013 ALPHABET am 002114 mail_format_ptr am 002116 msg_array_ptr am 002120 n_messages am 002121 msg_print_flags am canon 000100 output_string canon THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other_desc call_int_other return_mac tra_ext_1 alloc_auto_adj mpfx2 enable_op shorten_stack ext_entry int_entry int_entry_desc set_chars_eis return_chars_eis any_to_any_truncate_translate_2 op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. aim_check_$greater_or_equal canonicalize_ com_err_ command_query_$yes_no convert_access_class_$to_string_short convert_date_to_binary_ cu_$cp date_time_ date_time_$format expand_pathname_$add_suffix get_authorization_ get_system_free_area_ ioa_ ioa_$rsnnl mailbox_$create mailbox_$get_uid_file message_facility_$default_alarm_handler message_facility_$default_wakeup_handler message_facility_$delete_message message_facility_$get_message_format message_facility_$get_msg_array_ptr message_facility_$get_msgf_mbx_ptr message_facility_$get_wakeup_state message_facility_$print_message message_facility_$read_message message_facility_$set_alarm_handler message_facility_$set_message_format message_facility_$set_prefix message_facility_$set_seen_switch message_facility_$set_wakeup_handler message_facility_$set_wakeup_state mlsys_utils_$parse_mailbox_control_args pathname_ requote_string_ ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$destroy_invocation ssu_$standalone_invocation user_info_$whoami THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$noarg error_table_$noentry iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 203 000661 31 000676 214 000715 216 000734 217 000737 218 000745 219 000747 220 000751 221 000754 222 000755 223 000756 224 000762 226 000771 229 001013 231 001054 232 001056 233 001102 237 001103 239 001114 240 001123 241 001140 242 001156 243 001166 244 001167 245 001171 246 001172 247 001176 248 001177 251 001206 252 001223 253 001237 254 001242 255 001244 257 001245 259 001311 262 001316 263 001320 264 001321 265 001325 266 001326 269 001364 270 001401 272 001425 273 001461 274 001462 275 001502 276 001504 277 001505 278 001506 279 001526 280 001527 281 001531 282 001533 283 001534 284 001544 285 001546 286 001547 287 001550 288 001551 289 001552 290 001562 291 001563 292 001565 293 001566 294 001606 295 001610 296 001611 297 001612 298 001632 299 001633 300 001635 301 001636 302 001637 303 001640 304 001650 305 001651 308 001707 310 001736 311 001753 313 002011 315 002045 316 002047 317 002050 318 002060 319 002061 322 002117 324 002134 327 002200 328 002211 329 002213 330 002214 331 002227 332 002241 333 002251 334 002253 335 002254 336 002255 337 002270 338 002302 339 002312 340 002313 343 002351 345 002366 346 002412 347 002426 349 002430 350 002432 351 002433 352 002434 355 002435 356 002437 357 002441 358 002442 359 002444 360 002446 362 002450 364 002506 366 002525 368 002527 370 002556 372 002560 374 002562 375 002564 376 002605 377 002654 378 002703 381 002706 383 002733 385 002737 388 003024 389 003032 391 003053 393 003131 394 003132 396 003136 398 003204 401 003231 405 003303 407 003324 409 003376 411 003400 412 003403 413 003411 414 003416 415 003424 416 003431 417 003437 419 003444 421 003465 424 003537 425 003541 427 003556 431 003630 433 003643 435 003715 436 003722 437 003726 439 003731 440 003740 442 003753 446 004025 448 004052 450 004124 451 004127 453 004130 454 004140 455 004146 456 004151 458 004152 459 004164 460 004166 461 004173 462 004175 463 004203 464 004211 465 004214 466 004217 470 004220 471 004222 474 004250 477 004322 478 004326 480 004345 484 004417 485 004421 486 004431 487 004443 491 004445 492 004447 493 004457 494 004467 497 004503 502 004505 505 004531 507 004603 508 004607 511 004610 513 004644 518 004645 521 004661 523 004671 524 004706 525 004721 526 004726 527 004753 529 004763 533 004773 537 005001 539 005004 541 005006 542 005022 543 005037 544 005043 546 005044 547 005070 548 005073 549 005075 550 005103 553 005120 555 005171 557 005315 558 005326 559 005345 560 005367 561 005377 562 005436 564 005437 565 005447 567 005450 568 005454 569 005512 570 005522 571 005570 574 006211 575 006242 578 006243 581 006244 584 006255 586 006262 589 006273 590 006304 592 006312 593 006315 594 006317 596 006322 598 006344 599 006373 600 006400 601 006407 604 006412 606 006413 607 006421 608 006434 609 006445 612 006446 613 006454 614 006461 ----------------------------------------------------------- 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