COMPILATION LISTING OF SEGMENT delete_message Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 11/30/87 1323.8 mst Mon 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 module implements the following commands: 9* 10* delete_message (dlm) - deletes interactive messages 11* print_messages (pm) - prints interactive messages 12**/ 13 14 /****^ HISTORY COMMENTS: 15* 1) change(84-06-04,Lippard), approve(), audit(), install(): 16* Written by Jim Lippard. 17* 2) change(84-11-08,Lippard), approve(), audit(), install(): 18* Modified to call set_seen_switch even when -call is used. 19* 3) change(84-11-16,Lippard), approve(), audit(), install(): 20* Modified to improve message printed when no messages are selected. 21* 4) change(84-11-23,Lippard), approve(), audit(), install(): 22* Modified to complain for each message not printed/deleted (except 23* in ranges). 24* 5) change(85-01-11,Lippard), approve(), audit(), install(): 25* Modified to use new calling sequences for message_facility_$(read_message 26* delete_message print_message set_seen_switch) and to complain about 27* negative message numbers. 28* 6) change(85-01-23,Lippard), approve(85-11-18,MCR7298), 29* audit(86-01-10,Spitzer), install(86-01-20,MR12.0-1006): 30* Modified to print "You have no messages" on user_output and make dlm say 31* when all messages have been deleted (when -message_status is specified). 32* 7) change(85-08-15,Lippard), approve(85-11-18,MCR7298), 33* audit(86-01-10,Spitzer), install(86-01-20,MR12.0-1006): 34* Modified to ignore case for keywords and to print a better error message 35* for "dlm -a" when there are only unseen messages. 36* 8) change(87-01-29,Lippard), approve(87-03-18,MECR0001), 37* audit(87-03-12,Fawcett), install(87-03-19,MR12.1-1002): 38* Modified to strip control characters out of message comment field. 39* 9) change(87-05-08,Lippard), approve(87-04-20,MCR7669), 40* audit(87-05-11,Fawcett), install(87-05-20,MR12.1-1032): 41* Formal installation to close out MECR0001. 42* 10) change(87-08-25,Lippard), approve(87-08-24,MCR7761), 43* audit(87-09-25,Dickson), install(87-11-30,MR12.2-1006): 44* Remove -verbose control argument (original name of -message_status). 45* END HISTORY COMMENTS */ 46 47 delete_message: dlm: procedure options (variable); 48 dcl ME char (14); 49 dcl VERSION char (3) internal static options (constant) init ("1.4"); 50 51 dcl aim_check_$greater_or_equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 52 53 dcl canonicalize_ entry (ptr, fixed bin(21), ptr, fixed bin(21), fixed bin(35)); 54 55 dcl com_err_ entry () options (variable); 56 57 dcl convert_access_class_$to_string_short entry (bit (72) aligned, char (*), fixed bin (35)); 58 59 dcl convert_date_to_binary_ entry (char (*), fixed bin (71), fixed bin (35)); 60 61 dcl cu_$cp entry (ptr, fixed bin (21), fixed bin (35)); 62 63 dcl date_time_ entry (fixed bin (71), char (*)); 64 dcl date_time_$format entry (char (*), fixed bin (71), char (*), char (*)) returns (char (250) var); 65 66 dcl expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), fixed bin (35)); 67 68 dcl get_authorization_ entry () returns (bit (72) aligned) reducible; 69 70 dcl get_system_free_area_ entry () returns (ptr); 71 72 dcl ioa_ entry () options (variable); 73 dcl ioa_$rsnnl entry () options (variable); 74 75 dcl iox_$user_output ptr ext static; 76 77 dcl mailbox_$create entry (char (*), char (*), fixed bin (35)); 78 dcl mailbox_$get_mode_file entry (char (*), char (*), bit (36) aligned, fixed bin (35)); 79 80 dcl mlsys_utils_$parse_mailbox_control_args entry (ptr, fixed bin, ptr, char (*), char (*), fixed bin (35)); 81 82 dcl message_facility_$delete_message entry (ptr, bit (72) aligned, fixed bin (35)); 83 dcl message_facility_$get_last_message_info entry (ptr, ptr, fixed bin (35)); 84 dcl message_facility_$get_msg_array_ptr entry (ptr, ptr, ptr, fixed bin, fixed bin (35)); 85 dcl message_facility_$get_msgf_mbx_ptr entry (char (*), char (*), ptr, fixed bin (35)); 86 dcl message_facility_$get_prefix entry (ptr, char (32) var, bit (1) aligned, fixed bin (35)); 87 dcl message_facility_$print_message entry (ptr, ptr, bit (72) aligned, ptr, fixed bin (35)); 88 dcl message_facility_$read_message entry (ptr, bit (72) aligned, ptr, ptr, fixed bin (35)); 89 dcl message_facility_$set_seen_switch entry (ptr, bit (72) aligned, bit (*), fixed bin (35)); 90 91 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 92 93 dcl requote_string_ entry (char (*)) returns (char (*)); 94 95 dcl ssu_$abort_line entry () options (variable); 96 dcl ssu_$arg_count entry (ptr, fixed bin); 97 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 98 dcl ssu_$destroy_invocation entry (ptr); 99 dcl ssu_$print_message entry () options (variable); 100 dcl ssu_$standalone_invocation entry (ptr, char (*), char (*), ptr, entry, fixed bin (35)); 101 102 dcl user_info_$whoami entry (char (*), char (*), char (*)); 103 104 dcl cleanup condition; 105 106 dcl after_sw bit (1) aligned; 107 dcl after_date_time fixed bin (71); 108 109 dcl all bit (1) aligned; 110 111 dcl arg_count fixed bin; 112 dcl arg_ptr ptr; 113 dcl arg_len fixed bin (21); 114 dcl arg char (arg_len) based (arg_ptr); 115 116 dcl authorization bit (72) aligned; 117 dcl auth_string char (170); 118 119 dcl before_sw bit (1) aligned; 120 dcl before_date_time fixed bin (71); 121 122 dcl brief bit (1) aligned; 123 124 dcl call_string char (512); 125 126 dcl command_line char (2000); 127 128 dcl comment bit (1) aligned; 129 dcl comment_string char (32); 130 131 dcl date_time fixed bin (71); 132 133 dcl delete bit (1) aligned; 134 135 dcl default bit (1) aligned; 136 137 dcl dname char (168); 138 dcl ename char (32); 139 140 dcl exclude bit (1) aligned; 141 dcl exclude_string char (256); 142 143 dcl extended_mode bit (36) aligned; 144 145 dcl force bit (1) aligned; 146 147 dcl from bit (1) aligned; 148 dcl from_string char (32); 149 150 dcl found bit (1) aligned; 151 152 dcl actual_hold_flags bit (3); 153 154 dcl 1 hold_flags unaligned based (hold_flags_ptr), 155 2 delete_unheld bit (1), 156 2 hold_messages bit (1), 157 2 hold_notifications bit (1); 158 159 dcl hold_flags_ptr ptr; 160 161 dcl hold_messages bit (1) aligned; 162 dcl no_hold_messages bit (1) aligned; 163 dcl hold_notifications bit (1) aligned; 164 dcl no_hold_notifications bit (1) aligned; 165 166 dcl (idx, jdx) fixed bin; 167 168 dcl last bit (1) aligned; 169 170 dcl last_msg_time char (24); 171 dcl last_sender char (120); 172 dcl last_time fixed bin (71); 173 174 dcl 1 local_lmi aligned like last_message_info; 175 dcl 1 local_mi aligned like message_info; 176 dcl 1 local_pcao aligned like parse_ca_options; 177 178 dcl match bit (1) aligned; 179 dcl match_string char (256); 180 181 dcl message_sender char (120); 182 183 dcl msg_date_time char (24); 184 185 dcl msgf_mbx_ptr ptr; 186 187 dcl 1 msg_spec (50) aligned, 188 2 start fixed bin, 189 2 start_spec bit (1) aligned, 190 2 end fixed bin, 191 2 end_spec bit (1) aligned, 192 2 found bit (1) aligned, 193 2 arg char (256); 194 195 dcl n_msg_specs fixed bin; 196 197 dcl messages bit (1) aligned; 198 dcl no_messages bit (1) aligned; 199 dcl notifications bit (1) aligned; 200 dcl no_notifications bit (1) aligned; 201 202 dcl message_status bit (1) aligned; 203 204 dcl (start, end) fixed bin; 205 206 dcl new bit (1) aligned; 207 208 dcl own bit (1) aligned; 209 210 dcl path bit (1) aligned; 211 212 dcl pathname char (256); 213 214 dcl person char (22); 215 dcl project char (9); 216 217 dcl prefix_string char (32) varying; 218 219 dcl print bit (1) aligned; 220 221 dcl sci_ptr ptr; 222 223 dcl short bit (1) aligned; 224 dcl short_format bit (1) aligned; 225 dcl short_prefix bit (1) aligned; 226 227 dcl something_done bit (1) aligned; 228 229 dcl sys_area area based (sys_area_ptr); 230 dcl sys_area_ptr ptr; 231 232 dcl tag char (10) varying; 233 234 dcl (addr, after, before, collate, convert, fixed, hbound, index, 235 length, null, rtrim, string, substr, translate) builtin; 236 237 dcl code fixed bin (35); 238 239 dcl error_table_$inconsistent fixed bin (35) ext static; 240 dcl error_table_$noarg fixed bin (35) ext static; 241 dcl error_table_$noentry fixed bin (35) ext static; 242 dcl error_table_$no_message fixed bin (35) ext static; 243 244 dcl TRUE bit (1) aligned internal static options (constant) init ("1"b); 245 dcl FALSE bit (1) aligned internal static options (constant) init ("0"b); 246 247 dcl ALPHABET char (256) init ((8)" " || " " || (4)" " || "" || (16)" " 248 || substr (collate (), 33)); /* space, BSHT, space, RRSBRS, space, alphanumerics */ 249 dcl FIVE_MINUTES fixed bin (71) internal static options (constant) init (300000000); 250 dcl FIRST_MESSAGE fixed bin internal static options (constant) init (-2); 251 dcl LAST_MESSAGE fixed bin internal static options (constant) init (-1); 252 dcl NLSPHT char (3) internal static options (constant) init (" 253 "); 254 dcl BS char (1) internal static options (constant) init (""); 255 dcl UPPERCASE char (26) internal static options (constant) init ("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 256 dcl LOWERCASE char (26) internal static options (constant) init ("abcdefghijklmnopqrstuvwxyz"); 257 258 ME = "delete_message"; 259 delete = TRUE; 260 print = FALSE; 261 go to COMMON; 262 263 print_messages: pm: entry; 264 ME = "print_messages"; 265 delete = FALSE; 266 print = TRUE; 267 268 COMMON: 269 270 /* initialize variables */ 271 after_sw, all, before_sw, brief, comment, default, exclude, force, from, last, match, new, path = FALSE; 272 273 /* The following assignments are separate to avoid a PL/I bug, 274* see TR phx17760 */ 275 message_status = FALSE; 276 messages = FALSE; 277 no_messages = FALSE; 278 notifications = FALSE; 279 no_notifications = FALSE; 280 hold_messages = FALSE; 281 no_hold_messages = FALSE; 282 hold_notifications = FALSE; 283 no_hold_notifications = FALSE; 284 short_format = TRUE; 285 last_msg_time, last_sender = ""; 286 call_string, from_string, match_string, exclude_string = ""; 287 last_time = 0; 288 n_msg_specs = 0; 289 mail_format_ptr, msg_array_ptr, sci_ptr = null (); 290 sys_area_ptr = get_system_free_area_ (); 291 292 on cleanup call cleanup_dlm; 293 294 /* create ssu_ invocation */ 295 call ssu_$standalone_invocation (sci_ptr, ME, VERSION, null (), abort_dlm, code); 296 297 if code ^= 0 then do; 298 call com_err_ (code, ME, "Creating standalone subsystem invocation."); 299 return; 300 end; 301 302 /* process arguments */ 303 call ssu_$arg_count (sci_ptr, arg_count); 304 305 do idx = 1 to arg_count; 306 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 307 if arg = "-after" then do; 308 idx = idx + 1; 309 310 if idx > arg_count then call ssu_$abort_line (sci_ptr, error_table_$noarg, 311 "A date/time must be specified after ""^a"".", arg); 312 313 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 314 315 if after_sw then call ssu_$abort_line (sci_ptr, (0), 316 "Only one -after date/time may be specified. ^a", arg); 317 318 call convert_date_to_binary_ (arg, after_date_time, code); 319 320 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "^a", arg); 321 322 after_sw = TRUE; 323 end; 324 else if arg = "-all" | arg = "-a" then all = TRUE; 325 else if arg = "-before" then do; 326 idx = idx + 1; 327 328 if idx > arg_count then call ssu_$abort_line (sci_ptr, error_table_$noarg, 329 "A date/time must be specified after ""^a"".", arg); 330 331 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 332 333 if before_sw then call ssu_$abort_line (sci_ptr, (0), 334 "Only one -before date/time may be specified. ^a", arg); 335 336 call convert_date_to_binary_ (arg, before_date_time, code); 337 338 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "^a", arg); 339 340 before_sw = TRUE; 341 end; 342 else if arg = "-brief" | arg = "-bf" then brief = TRUE; 343 else if arg = "-long" | arg = "-lg" then do; 344 if print then short_format = FALSE; 345 brief = FALSE; 346 end; 347 else if (arg = "-short" | arg = "-sh") then do; 348 if print then short_format = TRUE; 349 else message_status = FALSE; 350 end; 351 else if arg = "-message_status" | arg = "-msgst" then message_status = TRUE; 352 else if arg = "-no_message_status" | arg = "-nmsgst" then message_status = FALSE; 353 else if arg = "-call" & print then do; 354 idx = idx + 1; 355 356 if idx > arg_count then call_string = ""; 357 358 else do; 359 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 360 if index (arg, "-") = 1 then do; 361 call_string = ""; 362 idx = idx - 1; 363 end; 364 365 else do; 366 if arg_len > length (call_string) then 367 call ssu_$abort_line (sci_ptr, (0), "Call string may not be longer than ^d characters. ^a", length (call_string), arg); 368 call_string = arg; 369 end; 370 end; 371 end; 372 else if arg = "-comment" | arg = "-com" then do; 373 idx = idx + 1; 374 375 if idx > arg_count then call ssu_$abort_line (sci_ptr, error_table_$noarg, 376 "A comment string must be specified after ""^a"".", arg); 377 378 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 379 380 if comment then call ssu_$abort_line (sci_ptr, (0), 381 "Only one comment string may be supplied. ^a", arg); 382 383 if arg_len > length (comment_string) then 384 call ssu_$abort_line (sci_ptr, (0), "Comment string may not be longer than ^d characters. ^a", length (comment_string), arg); 385 386 comment_string = arg; 387 comment = TRUE; 388 end; 389 else if arg = "-exclude" then do; 390 idx = idx + 1; 391 392 if idx > arg_count then call ssu_$abort_line (sci_ptr, error_table_$noarg, 393 "An exclude string must be specified after ""a"".", arg); 394 395 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 396 397 if exclude then call ssu_$abort_line (sci_ptr, (0), 398 "Only one exclude string may be specified. ^a", arg); 399 400 if arg_len > length (exclude_string) then 401 call ssu_$abort_line (sci_ptr, (0), "Exclude string may not be longer than ^d characters. ^a", length (exclude_string), arg); 402 403 exclude_string = arg; 404 exclude = TRUE; 405 end; 406 else if (arg = "-force" | arg = "-fc") & delete then force = TRUE; 407 else if (arg = "-no_force" | arg = "-nfc") & delete then force = FALSE; 408 else if arg = "-from" | arg = "-fm" then do; 409 idx = idx + 1; 410 411 if idx > arg_count then call ssu_$abort_line (sci_ptr, error_table_$noarg, 412 "A from string must be specified after ""^a"".", arg); 413 414 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 415 416 if from then call ssu_$abort_line (sci_ptr, (0), 417 "Only one from string may be specified. ^a", arg); 418 419 if arg_len > length (from_string) then 420 call ssu_$abort_line (sci_ptr, (0), "From string may not be longer than ^d characters. ^a", length (from_string), arg); 421 422 from_string = arg; 423 from = TRUE; 424 end; 425 else if (arg = "-hold_messages" | arg = "-hdmsg") & print then do; 426 hold_messages = TRUE; 427 no_hold_messages = FALSE; 428 end; 429 else if (arg = "-no_hold_messages" | arg = "-nhdmsg") & print then do; 430 hold_messages = FALSE; 431 no_hold_messages = TRUE; 432 end; 433 else if (arg = "-hold_notifications" | arg = "-hdnt") & print then do; 434 hold_notifications = TRUE; 435 no_hold_notifications = FALSE; 436 end; 437 else if (arg = "-no_hold_notifications" | arg = "-nhdnt") & print then do; 438 hold_notifications = FALSE; 439 no_hold_notifications = TRUE; 440 end; 441 else if (arg = "-last" | arg = "-lt") & print then last = TRUE; 442 else if arg = "-match" then do; 443 idx = idx + 1; 444 445 if idx > arg_count then call ssu_$abort_line (sci_ptr, error_table_$noarg, 446 "A match string must be specified after ""^a"".", arg); 447 448 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 449 450 if match then call ssu_$abort_line (sci_ptr, (0), 451 "Only one match string may be specified. ^a", arg); 452 453 if arg_len > length (match_string) then 454 call ssu_$abort_line (sci_ptr, (0), "Match string may not be longer than ^d characters. ^a", length (match_string), arg); 455 456 match_string = arg; 457 match = TRUE; 458 end; 459 else if arg = "-messages" | arg = "-msg" then do; 460 messages = TRUE; 461 no_messages = FALSE; 462 end; 463 else if arg = "-no_messages" | arg = "-nmsg" then do; 464 messages = FALSE; 465 no_messages = TRUE; 466 end; 467 else if arg = "-notifications" | arg = "-nt" then do; 468 notifications = TRUE; 469 no_notifications = FALSE; 470 end; 471 else if arg = "-no_notifications" | arg = "-nnt" then do; 472 notifications = FALSE; 473 no_notifications = TRUE; 474 end; 475 else if arg = "-new" & print then new = TRUE; 476 else if arg = "-pathname" | arg = "-pn" then do; 477 idx = idx + 1; 478 479 if idx > arg_count then call ssu_$abort_line (sci_ptr, error_table_$noarg, 480 "A pathname must be specified after ""^a"".", arg); 481 482 if path then call ssu_$abort_line (sci_ptr, (0), 483 "Usage: ^[dlm^;pm^] ^[{^]msg_specs^[}^] {mbx_specification} {-control_args}", delete, print, print); 484 485 call ssu_$arg_ptr (sci_ptr, idx, arg_ptr, arg_len); 486 487 call expand_pathname_$add_suffix (arg, "mbx", dname, ename, code); 488 489 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "^a", arg); 490 491 path = TRUE; 492 end; 493 else do; /* msg spec or mbx spec */ 494 start = get_msg_spec (arg, code); 495 if code = 0 then end = start; 496 else if index (arg, ":") ^= 0 then do; 497 start = get_msg_spec (before (arg, ":"), code); 498 if code = 0 then end = get_msg_spec (after (arg, ":"), code); 499 if code ^= 0 then 500 call ssu_$abort_line (sci_ptr, (0), "Invalid message range. ^a", arg); 501 end; 502 if code = 0 then do; 503 n_msg_specs = n_msg_specs + 1; 504 if n_msg_specs > hbound (msg_spec, 1) then call ssu_$abort_line (sci_ptr, (0), 505 "Too many message specifiers given, maximum of ^d.", hbound (msg_spec, 1)); 506 msg_spec.start (n_msg_specs) = start; 507 if msg_spec.start (n_msg_specs) < 0 then msg_spec.start_spec (n_msg_specs) = TRUE; 508 else msg_spec.start_spec (n_msg_specs) = FALSE; 509 msg_spec.end (n_msg_specs) = end; 510 if msg_spec.end (n_msg_specs) < 0 then msg_spec.end_spec (n_msg_specs) = TRUE; 511 else msg_spec.end_spec (n_msg_specs) = FALSE; 512 msg_spec.found (n_msg_specs) = FALSE; 513 msg_spec.arg (n_msg_specs) = arg; 514 end; 515 else if translate (arg, LOWERCASE, UPPERCASE) = "all" | translate (arg, LOWERCASE, UPPERCASE) = "a" then all = TRUE; 516 else do; /* mbx specification */ 517 518 /* let mlsys_utils_ have at it */ 519 local_pcao.version = PARSE_CA_OPTIONS_VERSION_1; 520 local_pcao.logbox_creation_mode = DONT_CREATE_MAILBOX; 521 local_pcao.savebox_creation_mode = DONT_CREATE_MAILBOX; 522 local_pcao.abort_on_errors = TRUE; 523 local_pcao.validate_addresses = FALSE; 524 local_pcao.mbz = ""b; 525 526 call mlsys_utils_$parse_mailbox_control_args (sci_ptr, idx, addr (local_pcao), 527 dname, ename, code); 528 529 if code ^= 0 then call ssu_$abort_line (sci_ptr, code); 530 531 idx = idx - 1; 532 533 if path then call ssu_$abort_line (sci_ptr, (0), 534 "Usage: ^[dlm^;pm^] ^[{^]msg_specs^[}^] {mbx_specification} {-control_args}", delete, print, print); 535 536 path = TRUE; 537 end; /* mbx spec */ 538 end; /* msg spec or mbx spec */ 539 end; /* arg loop */ 540 541 if no_messages & no_notifications then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 542 "-no_messages and -no_notifications"); 543 if last & (after_sw | before_sw | comment | from | match | exclude | messages | notifications 544 | no_messages | no_notifications | hold_messages | hold_notifications 545 | no_hold_messages | no_hold_notifications | n_msg_specs ^= 0 | all | new) then 546 call ssu_$abort_line (sci_ptr, error_table_$inconsistent, "No message selection arguments may be given with -last."); 547 548 if no_messages then notifications = TRUE; 549 else if no_notifications then messages = TRUE; 550 551 if n_msg_specs = 0 then do; 552 if delete & (after_sw | before_sw | comment | from | match | exclude | messages | notifications) then 553 all = TRUE; 554 if delete & ^all then call ssu_$abort_line (sci_ptr, (0), 555 "Usage: dlm msg_specs {mbx_specification} {-control_args}"); 556 if print then all = TRUE; 557 n_msg_specs = n_msg_specs + 1; 558 msg_spec.start (n_msg_specs) = get_msg_spec ("first", code); 559 msg_spec.start_spec (n_msg_specs) = FALSE; 560 msg_spec.end (n_msg_specs) = get_msg_spec ("last", code); 561 msg_spec.end_spec (n_msg_specs) = FALSE; 562 msg_spec.found (n_msg_specs) = FALSE; 563 end; 564 565 if messages & notifications then messages, notifications = FALSE; 566 567 /* determine which messages are to be held */ 568 actual_hold_flags = ""b; 569 hold_flags_ptr = addr (actual_hold_flags); 570 if hold_messages then hold_flags.hold_messages = TRUE; 571 else if no_hold_messages then hold_flags.hold_messages = FALSE; 572 if hold_notifications then hold_flags.hold_notifications = TRUE; 573 else if no_hold_notifications then hold_flags.hold_notifications = FALSE; 574 if ^(hold_messages | no_hold_messages | hold_notifications | no_hold_notifications) then actual_hold_flags = DELETE_UNHELD; 575 576 if ^path then do; 577 call user_info_$whoami (person, project, ""); 578 dname = ">udd>" || rtrim (project) || ">" || person; 579 ename = rtrim (person) || ".mbx"; 580 default = TRUE; 581 end; 582 583 /* get mbx ptr */ 584 call message_facility_$get_msgf_mbx_ptr (dname, ename, msgf_mbx_ptr, code); 585 586 if code = error_table_$noentry & default & print then do; 587 call mailbox_$create (dname, ename, code); 588 589 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, 590 "Creating default mailbox ^a.", pathname_ (dname, ename)); 591 592 call ioa_ ("Creating default mailbox ^a.", pathname_ (dname, ename)); 593 594 call message_facility_$get_msgf_mbx_ptr (dname, ename, msgf_mbx_ptr, code); 595 end; 596 597 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "^a", pathname_ (dname, ename)); 598 599 /* get prefix */ 600 call message_facility_$get_prefix (msgf_mbx_ptr, prefix_string, short_prefix, code); 601 602 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "^a", pathname_ (dname, ename)); 603 604 /* get mailbox mode */ 605 call mailbox_$get_mode_file (dname, ename, extended_mode, code); 606 607 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "^a", pathname_ (dname, ename)); 608 609 own = substr (extended_mode, 3, 1); 610 611 /* get msg array ptr */ 612 call message_facility_$get_msg_array_ptr (msgf_mbx_ptr, sys_area_ptr, msg_array_ptr, n_messages, code); 613 614 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "^a", pathname_ (dname, ename)); 615 616 /* process messages */ 617 618 do idx = 1 to n_msg_specs; 619 if msg_spec.start_spec (idx) then 620 if msg_spec.start (idx) = FIRST_MESSAGE then msg_spec.start (idx) = get_msg_spec ("first", code); 621 else msg_spec.start (idx) = get_msg_spec ("last", code); 622 if msg_spec.end_spec (idx) then 623 if msg_spec.end (idx) = FIRST_MESSAGE then msg_spec.end (idx) = get_msg_spec ("first", code); 624 else msg_spec.end (idx) = get_msg_spec ("last", code); 625 if msg_spec.start (idx) > msg_spec.end (idx) then call ssu_$abort_line (sci_ptr, (0), 626 "Invalid message range. ^a", msg_spec.arg (idx)); 627 end; 628 629 630 /* print header */ 631 if n_messages ^= 0 & print & ^default then call ioa_ ("^[There ^[are^;is^]^;You have^s^] ^d message^[s^] in ^a.^/", 632 own, (n_messages ^= 1), n_messages, (n_messages ^= 1), pathname_ (dname, ename)); 633 else if n_messages = 0 & ^brief & ^last then do; 634 call ioa_ ("^[There are^;You have^] no interactive messages^[ in ^a^].", 635 (own & ^default), ^default, pathname_ (dname, ename)); 636 go to MAIN_RETURN; 637 end; 638 639 /* handle -last */ 640 if last then do; 641 call print_message ((0), (""b)); 642 go to MAIN_RETURN; 643 end; 644 645 something_done = FALSE; 646 647 local_mi.version = MESSAGE_INFO_VERSION_1; 648 649 do idx = 1 to n_messages; 650 if msg_array.message_id (idx) ^= ""b then do; 651 call message_facility_$read_message (msgf_mbx_ptr, msg_array.message_id (idx), sys_area_ptr, addr (local_mi), code); 652 if code = error_table_$no_message then ; 653 else if code ^= 0 then call ssu_$print_message (sci_ptr, code, 654 "While reading message ^d^[ from mailbox ^a^].", msg_array.message_number (idx), ^default, pathname_ (dname, ename)); 655 else do; 656 mail_format_ptr = local_mi.message_ptr; 657 found = FALSE; 658 if ((delete & msg_array.printed (idx)) | print | force) 659 & (^new | ^msg_array.printed (idx)) 660 & (^after_sw 661 | (fixed (substr (msg_array.message_id (idx), 19, 54), 71) > after_date_time)) 662 & (^before_sw 663 | (fixed (substr (msg_array.message_id (idx), 19, 54), 71) < before_date_time)) 664 & (^comment | (rtrim (canon (rtrim (mail_format.sent_from), length (rtrim (mail_format.sent_from)))) = comment_string)) 665 & (^from 666 | (from_match (substr (local_mi.sender, 1, length (rtrim (local_mi.sender)) - 2), from_string))) 667 & (^messages | (messages & ^mail_format.notify)) 668 & (^notifications | (notifications & mail_format.notify)) 669 & (^match | (index (mail_format.text, rtrim (match_string)) ^= 0)) 670 & (^exclude 671 | (index (rtrim (canon (rtrim (mail_format.text, NLSPHT), length (rtrim (mail_format.text, NLSPHT)))), rtrim (exclude_string)) = 0)) then do; 672 do jdx = 1 to n_msg_specs while (^found); 673 if (msg_array.message_number (idx) >= msg_spec.start (jdx) 674 & msg_array.message_number (idx) <= msg_spec.end (jdx)) 675 | ((msg_array.message_number (idx) = 0 & print & something_done) | all) then do; 676 if print then call print_message (idx, msg_array.message_id (idx)); 677 else call message_facility_$delete_message (msgf_mbx_ptr, msg_array.message_id (idx), 678 code); 679 680 if code ^= 0 then call ssu_$print_message (sci_ptr, code, 681 "While ^[deleting^;printing^] message ^d^[ in mailbox ^a^].", delete, msg_array.message_number (idx), ^default, pathname_ (dname, ename)); 682 else something_done = TRUE; 683 msg_spec.found (jdx) = TRUE; 684 found = TRUE; 685 end; 686 end; /* jdx loop */ 687 end; /* message meets specifications */ 688 if mail_format_ptr ^= null () then do; 689 free mail_format in (sys_area); 690 mail_format_ptr = null (); 691 end; 692 end; /* message read */ 693 end; /* non-notification */ 694 end; /* idx loop */ 695 696 if ^something_done then 697 if ^brief then call ssu_$print_message (sci_ptr, (0), 698 "No ^[seen ^]messages ^[to delete.^;were found that matched the selection criteria.^]", delete & ^force, delete & ^force & all); 699 else ; 700 else do idx = 1 to n_msg_specs; 701 if ^msg_spec.found (idx) then call ssu_$print_message (sci_ptr, (0), "No ^[seen ^]message^[s in range^] ^a found.", delete & ^force, (index (msg_spec.arg (idx), ":") ^= 0), msg_spec.arg (idx)); 702 end; 703 704 if delete & message_status then do; 705 if msg_array_ptr ^= null () then free msg_array in (sys_area); 706 707 call message_facility_$get_msg_array_ptr (msgf_mbx_ptr, sys_area_ptr, msg_array_ptr, n_messages, code); 708 if code ^= 0 then 709 call ssu_$abort_line (sci_ptr, code, "While getting message array pointer."); 710 711 if n_messages = 0 then call ioa_ ("All messages have been deleted."); 712 end; 713 714 MAIN_RETURN: 715 call cleanup_dlm; 716 RETURN_FROM_DLM: 717 return; 718 719 720 /* This procedure removes control characters (except backspace, tab, 721* red ribbon shift, and black ribbon shift) and canonicalizes strings 722* to prevent backspacing past the front of the string. */ 723 canon: procedure (P_string, P_string_len) returns (char (*)); 724 dcl P_string char (*) parm; 725 dcl P_string_len fixed bin (21) parm; 726 dcl output_string char (P_string_len); 727 728 P_string = translate (P_string, ALPHABET); 729 if index (P_string, BS) ^= 0 then do; 730 output_string = ""; 731 call canonicalize_ (addr (P_string), length (P_string), addr (output_string), P_string_len, (0)); 732 return (output_string); 733 end; 734 else return (P_string); 735 end canon; 736 737 /* This procedure parses message specifiers. */ 738 get_msg_spec: procedure (P_arg, P_code) returns (fixed bin); 739 dcl P_arg char (*) parm; 740 dcl P_code fixed bin (35) parm; 741 dcl idx fixed bin; 742 dcl msg_spec char (5); 743 dcl return_value fixed bin; 744 dcl (conversion, size) condition; 745 746 P_code = 0; 747 748 msg_spec = translate (P_arg, LOWERCASE, UPPERCASE); 749 750 if msg_spec = "first" | msg_spec = "f" then do; 751 if msg_array_ptr = null () | n_messages = 0 then return (FIRST_MESSAGE); 752 do idx = 1 to n_messages; 753 if msg_array.message_number (idx) ^= 0 then return (msg_array.message_number (idx)); 754 end; 755 return_value = 1; 756 end; 757 else if msg_spec = "last" | msg_spec = "l" then do; 758 if msg_array_ptr = null () | n_messages = 0 then return (LAST_MESSAGE); 759 do idx = n_messages to 1 by -1; 760 if msg_array.message_number (idx) ^= 0 then return (msg_array.message_number (idx)); 761 end; 762 return_value = n_messages; 763 end; 764 else do; 765 if P_arg = "" then go to BAD_INTEGER; 766 on conversion, size go to BAD_INTEGER; 767 return_value = convert (return_value, P_arg); 768 revert conversion, size; 769 if return_value < 1 then go to BAD_INTEGER; 770 end; 771 772 return (return_value); 773 774 BAD_INTEGER: 775 P_code = 1; 776 return ((0)); 777 end get_msg_spec; 778 779 /* This procedure compares a user id (person.project.tag) with a from string 780* (Person, .Project, or Person.Project) */ 781 from_match: procedure (P_sender, P_from_string) returns (bit (1) aligned); 782 dcl (P_sender, P_from_string) char (*) parm; 783 dcl person char (22); 784 dcl project char (9); 785 786 person = before (P_sender, "."); 787 project = after (P_sender, "."); 788 789 if substr (P_from_string, 1, 1) = "." then /* .Project */ 790 if rtrim (P_from_string) = "." || rtrim (project) then return (TRUE); 791 else ; 792 else if index (P_from_string, ".") ^= 0 then /* Person.Project */ 793 if rtrim (P_from_string) = rtrim (person) || "." || rtrim (project) then return (TRUE); 794 else ; 795 else /* Person */ 796 if rtrim (P_from_string) = rtrim (person) then return (TRUE); 797 return (FALSE); 798 end from_match; 799 800 /* This procedure prints a message. This same code is also present in 801* accept_messages (-print) and message_facility_ (process_message). */ 802 print_message: procedure (P_message_index, P_message_id); 803 dcl P_message_index fixed bin parm; 804 dcl P_message_id bit (72) aligned parm; 805 dcl last_msg bit (1) aligned; 806 807 string (msg_print_flags) = ""b; 808 809 if P_message_index = 0 then do; /* last message */ 810 msg_print_flags.print_last_message = TRUE; 811 last_msg = TRUE; 812 local_lmi.version = LAST_MESSAGE_INFO_VERSION_1; 813 call message_facility_$get_last_message_info (msgf_mbx_ptr, addr (local_lmi), code); 814 if code ^= 0 then return; 815 816 if local_lmi.last_message_id = ""b then call ssu_$abort_line (sci_ptr, (0), "No last message."); 817 818 message_info_ptr = local_lmi.last_message_ptr; 819 local_mi = message_info; 820 end; 821 822 else do; 823 last_msg = FALSE; 824 on cleanup call cleanup_pm; 825 end; 826 827 mail_format_ptr = local_mi.message_ptr; 828 829 if last_msg then date_time = fixed (substr (local_lmi.last_message_id, 19, 54), 71); 830 else date_time = fixed (substr (P_message_id, 19, 54), 71); 831 call date_time_ (date_time, msg_date_time); 832 833 /* create message sender string */ 834 if mail_format.sent_from = before (local_mi.sender, ".") | rtrim (mail_format.sent_from) = "" then 835 message_sender = substr (local_mi.sender, 1, length (rtrim (local_mi.sender)) - 2); 836 else message_sender = substr (local_mi.sender, 1, length (rtrim (local_mi.sender)) - 2) 837 || " (" || rtrim (canon (rtrim (mail_format.sent_from), length (rtrim (mail_format.sent_from)))) || ")"; 838 authorization = get_authorization_ (); 839 if ^aim_check_$greater_or_equal (local_mi.authorization, authorization) then do; 840 call convert_access_class_$to_string_short (local_mi.authorization, auth_string, code); 841 if auth_string = "" then auth_string = "system_low"; 842 message_sender = rtrim (message_sender) || " at " || auth_string; 843 end; 844 845 if call_string ^= "" then do; 846 if last_msg then call ioa_$rsnnl (" ^d ", tag, length (tag), local_lmi.last_message_number); 847 else call ioa_$rsnnl (" ^d ", tag, length (tag), msg_array.message_number (P_message_index)); 848 if default then pathname = ""; 849 else pathname = requote_string_ (pathname_ (dname, ename)); 850 command_line = rtrim (call_string) || " " || tag || requote_string_ (rtrim (message_sender)) 851 || " " || requote_string_ (rtrim (date_time_$format ("date_time", date_time, "", ""))) || " " 852 || requote_string_ (rtrim (canon (rtrim (mail_format.text, NLSPHT), length (rtrim (mail_format.text, NLSPHT))))) || " " || pathname; 853 call cu_$cp (addr (command_line), length (rtrim (command_line)), (0)); 854 end; 855 856 else do; 857 if message_sender = last_sender then short = TRUE; 858 else short = FALSE; 859 860 /* print prefix, it may contain ioa_ controls */ 861 if ^short | short_prefix then msg_print_flags.print_prefix = TRUE; 862 863 /* if not default mailbox, prefix with mailbox entry name */ 864 if ^default then msg_print_flags.print_ename = TRUE; 865 866 if ^short_format | ^short then 867 msg_print_flags.print_sender = TRUE; 868 869 if ^short_format | substr (msg_date_time, 1, 8) ^= last_msg_time then 870 msg_print_flags.print_date_and_time = TRUE; 871 else if date_time - last_time > FIVE_MINUTES then 872 msg_print_flags.print_time = TRUE; 873 874 last_sender = message_sender; 875 last_time = date_time; 876 last_msg_time = substr (msg_date_time, 1, 8); 877 878 call message_facility_$print_message (msgf_mbx_ptr, iox_$user_output, P_message_id, addr (msg_print_flags), code); 879 end; 880 881 if ^last_msg then do; 882 call message_facility_$set_seen_switch (msgf_mbx_ptr, P_message_id, actual_hold_flags, (0)); 883 if mail_format_ptr ^= null () then do; 884 free mail_format in (sys_area); 885 mail_format_ptr = null (); 886 end; 887 end; 888 end print_message; 889 890 891 cleanup_dlm: proc; 892 if sci_ptr ^= null () then call ssu_$destroy_invocation (sci_ptr); 893 if msg_array_ptr ^= null () then free msg_array in (sys_area); 894 return; 895 end cleanup_dlm; 896 897 abort_dlm: proc; 898 call cleanup_dlm; 899 go to RETURN_FROM_DLM; 900 end abort_dlm; 901 902 cleanup_pm: proc; 903 if mail_format_ptr ^= null () then free mail_format in (sys_area); 904 end cleanup_pm; 905 906 1 1 /* BEGIN INCLUDE FILE last_message_info.incl.pl1 */ 1 2 /* Written 05/15/84 by Jim Lippard */ 1 3 /* Modified 01/11/85 by Jim Lippard to remove last_message_index. */ 1 4 1 5 dcl 1 last_message_info aligned based (last_message_info_ptr), 1 6 2 version char (8), 1 7 2 last_message_ptr ptr, 1 8 2 last_message_id bit (72) aligned, 1 9 2 last_message_number fixed bin; 1 10 1 11 dcl last_message_info_ptr ptr; 1 12 1 13 dcl LAST_MESSAGE_INFO_VERSION_1 char (8) internal static options (constant) init ("lastmsg1"); 1 14 1 15 /* END INCLUDE FILE last_message_info.incl.pl1 */ 907 908 2 1 /* BEGIN Mailbox Message Include File (mail_format.incl.pl1) */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(86-01-09,Herbst), approve(86-03-25,MCR7367), 2 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 2 7* Added "seen" switch. 2 8* 2) change(86-06-02,Herbst), approve(86-06-02,MCR7367), audit(86-06-30,Wong), 2 9* install(86-06-30,MR12.0-1080): 2 10* Updated to version 4 for seen switch. 2 11* END HISTORY COMMENTS */ 2 12 2 13 /* Last modified by K. T. Pogran, 3/6/75 */ 2 14 /* Modified by D. M. Wells, August 10, 1977 for v4 message segments. */ 2 15 /* Modified: 3 June 1981 by G. Palter for mail system subroutine interface */ 2 16 2 17 declare mail_format_ptr pointer aligned; 2 18 2 19 declare MAIL_FORMAT_VERSION_4 initial (4) 2 20 fixed bin internal static options (constant); 2 21 2 22 declare text_length fixed bin (21); 2 23 2 24 declare 1 mail_format aligned based (mail_format_ptr), 2 25 2 header, 2 26 3 version fixed bin (17), 2 27 3 sent_from char (32) aligned, 2 28 3 lines fixed bin (17), 2 29 3 text_len fixed bin (21), 2 30 3 switches aligned, 2 31 4 wakeup bit (1) unaligned, 2 32 4 urgent bit (1) unaligned, 2 33 4 notify bit (1) unaligned, 2 34 4 acknowledge bit (1) unaligned, 2 35 4 obsolete bit (1) unaligned, 2 36 4 canonical bit (1) unaligned, 2 37 4 seen bit (1) unaligned, 2 38 4 others bit (65) unaligned, 2 39 2 text char(text_length refer (mail_format.header.text_len)) aligned; 2 40 2 41 /* END Mailbox Message Include File (mail_format.incl.pl1) */ 909 910 3 1 /* BEGIN INCLUDE FILE message_info.incl.pl1 */ 3 2 /* Written 05/15/84 by Jim Lippard */ 3 3 3 4 dcl 1 message_info aligned based (message_info_ptr), 3 5 2 version char (8), 3 6 2 sender char (32), 3 7 2 message_ptr ptr, 3 8 2 authorization bit (72); 3 9 3 10 dcl message_info_ptr ptr; 3 11 3 12 dcl MESSAGE_INFO_VERSION_1 char (8) internal static options (constant) init ("msginfo1"); 3 13 3 14 /* END INCLUDE FILE message_info.incl.pl1 */ 911 912 4 1 /* BEGIN INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 4 2 /* Created: June 1983 by G. Palter */ 4 3 /* Modified: March 1984 by G. Palter to remove ignore_log_save option */ 4 4 4 5 /* Options for the mlsys_utils_$parse_address_control_arguments, mlsys_utils_$parse_address_list_control_arguments, and 4 6* mlsys_utils_$parse_mailbox_control_arguments entrypoints */ 4 7 4 8 dcl 1 parse_ca_options aligned based (parse_ca_options_ptr), 4 9 2 version character (8) unaligned, 4 10 2 logbox_creation_mode fixed binary, /* specifies the action to be taken if the address/mailbox is 4 11* the user's logbox, address/mailbox validation is requested, 4 12* and the logbox does not exist */ 4 13 2 savebox_creation_mode fixed binary, /* ... same as above but for any savebox */ 4 14 2 flags, 4 15 3 abort_on_errors bit (1) unaligned, /* ON => use ssu_$abort_line to report errors (ie: abort on 4 16* the first error); OFF => use ssu_$print_message */ 4 17 3 validate_addresses bit (1) unaligned, /* ON => validate the existence of the address/mailbox; 4 18* OFF => only validate the command/request line syntax */ 4 19 3 mbz bit (34) unaligned; /* must be set to ""b by the caller */ 4 20 4 21 dcl PARSE_CA_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlspca01"); 4 22 4 23 dcl parse_ca_options_ptr pointer; 4 24 4 25 4 26 /* Defined logbox/savebox creation modes */ 4 27 4 28 dcl (DONT_CREATE_MAILBOX initial (0), /* do not create the mailbox and issue an error message */ 4 29 QUERY_TO_CREATE_MAILBOX initial (1), /* ask the user for permission to create the mailbox */ 4 30 CREATE_AND_ANNOUNCE_MAILBOX initial (2), /* create the mailbox and inform the user of this action */ 4 31 SILENTLY_CREATE_MAILBOX initial (3)) /* create the mailbox but don't inform the user */ 4 32 fixed binary static options (constant); 4 33 4 34 /* END INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 913 914 5 1 /* BEGIN INCLUDE FILE msg_array.incl.pl1 */ 5 2 /* Written 05/29/84 by Jim Lippard */ 5 3 5 4 dcl 1 msg_array (n_messages) aligned based (msg_array_ptr), 5 5 2 message_id bit (72), 5 6 2 message_number fixed bin, 5 7 2 flags, 5 8 3 printed bit (1) unal, 5 9 3 mbz bit (35) unal; 5 10 5 11 dcl msg_array_ptr ptr; 5 12 5 13 dcl n_messages fixed bin; 5 14 5 15 dcl DELETE_UNHELD bit (3) internal static options (constant) init ("100"b); 5 16 dcl DONT_DELETE_MESSAGES bit (3) internal static options (constant) init ("010"b); 5 17 dcl DONT_DELETE_NOTIFICATIONS bit (3) internal static options (constant) init ("001"b); 5 18 5 19 /* END INCLUDE FILE msg_array.incl.pl1 */ 915 916 6 1 /* BEGIN INCLUDE FILE msg_print_flags.incl.pl1 */ 6 2 /* Written 10/17/84 by Jim Lippard */ 6 3 6 4 dcl 1 msg_print_flags unaligned, 6 5 2 print_prefix bit (1), 6 6 2 print_ename bit (1), 6 7 2 print_sender bit (1), 6 8 2 print_date_and_time bit (1), 6 9 2 print_time bit (1), 6 10 2 print_last_message bit (1), 6 11 2 mbz bit (30); 6 12 6 13 /* END INCLUDE FILE msg_print_flags.incl.pl1 */ 917 918 919 end delete_message; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/30/87 1322.5 delete_message.pl1 >spec>install>1006>delete_message.pl1 907 1 01/22/85 2000.0 last_message_info.incl.pl1 >ldd>include>last_message_info.incl.pl1 909 2 06/30/86 2023.8 mail_format.incl.pl1 >ldd>include>mail_format.incl.pl1 911 3 11/08/84 0926.0 message_info.incl.pl1 >ldd>include>message_info.incl.pl1 913 4 06/18/84 1324.1 mlsys_parse_ca_options.incl.pl1 >ldd>include>mlsys_parse_ca_options.incl.pl1 915 5 11/08/84 0926.0 msg_array.incl.pl1 >ldd>include>msg_array.incl.pl1 917 6 11/08/84 0926.0 msg_print_flags.incl.pl1 >ldd>include>msg_print_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. ALPHABET 011035 automatic char(256) initial unaligned dcl 247 set ref 247* 728 BS constant char(1) initial unaligned dcl 254 ref 729 DELETE_UNHELD constant bit(3) initial unaligned dcl 5-15 ref 574 DONT_CREATE_MAILBOX constant fixed bin(17,0) initial dcl 4-28 ref 520 521 FALSE constant bit(1) initial dcl 245 ref 260 265 268 275 276 277 278 279 280 281 282 283 344 345 349 352 407 427 430 435 438 461 464 469 472 508 511 512 523 559 561 562 565 571 573 645 657 797 823 858 FIRST_MESSAGE 012760 constant fixed bin(17,0) initial dcl 250 ref 619 622 751 FIVE_MINUTES 000026 constant fixed bin(71,0) initial dcl 249 ref 871 LAST_MESSAGE constant fixed bin(17,0) initial dcl 251 ref 758 LAST_MESSAGE_INFO_VERSION_1 000004 constant char(8) initial unaligned dcl 1-13 ref 812 LOWERCASE 000006 constant char(26) initial unaligned dcl 256 ref 515 515 748 ME 000100 automatic char(14) unaligned dcl 48 set ref 258* 264* 295* 298* MESSAGE_INFO_VERSION_1 000002 constant char(8) initial unaligned dcl 3-12 ref 647 NLSPHT 000024 constant char(3) initial unaligned dcl 252 ref 658 658 658 658 850 850 850 850 850 850 850 850 PARSE_CA_OPTIONS_VERSION_1 000000 constant char(8) initial unaligned dcl 4-21 ref 519 P_arg parameter char unaligned dcl 739 ref 738 748 765 767 P_code parameter fixed bin(35,0) dcl 740 set ref 738 746* 774* P_from_string parameter char unaligned dcl 782 ref 781 789 789 792 792 795 P_message_id parameter bit(72) dcl 804 set ref 802 830 878* 882* P_message_index parameter fixed bin(17,0) dcl 803 ref 802 809 847 P_sender parameter char unaligned dcl 782 ref 781 786 787 P_string parameter char unaligned dcl 724 set ref 723 728* 728 729 731 731 731 731 734 P_string_len parameter fixed bin(21,0) dcl 725 set ref 723 726 731* TRUE constant bit(1) initial dcl 244 ref 259 266 284 322 324 340 342 348 351 387 404 406 423 426 431 434 439 441 457 460 465 468 473 475 491 507 510 515 522 536 548 549 552 556 570 572 580 682 683 684 789 792 795 810 811 857 861 864 866 869 871 UPPERCASE 000015 constant char(26) initial unaligned dcl 255 ref 515 515 748 VERSION 000030 constant char(3) initial unaligned dcl 49 set ref 295* abort_on_errors 4 001714 automatic bit(1) level 3 packed unaligned dcl 176 set ref 522* actual_hold_flags 001605 automatic bit(3) unaligned dcl 152 set ref 568* 569 574* 882* addr builtin function dcl 234 ref 526 526 569 651 651 731 731 731 731 813 813 853 853 878 878 after builtin function dcl 234 ref 498 498 787 after_date_time 000114 automatic fixed bin(71,0) dcl 107 set ref 318* 658 after_sw 000112 automatic bit(1) dcl 106 set ref 268* 315 322* 543 552 658 aim_check_$greater_or_equal 000010 constant entry external dcl 51 ref 839 all 000116 automatic bit(1) dcl 109 set ref 268* 324* 515* 543 552* 554 556* 673 696 arg 5 002070 automatic char(256) array level 2 in structure "msg_spec" dcl 187 in procedure "dlm" set ref 513* 625* 701 701* arg based char unaligned dcl 114 in procedure "dlm" set ref 307 310* 315* 318* 320* 324 324 325 328* 333* 336* 338* 342 342 343 343 347 347 351 351 352 352 353 360 366* 368 372 372 375* 380* 383* 386 389 392* 397* 400* 403 406 406 407 407 408 408 411* 416* 419* 422 425 425 429 429 433 433 437 437 441 441 442 445* 450* 453* 456 459 459 463 463 467 467 471 471 475 476 476 479* 487* 489* 494* 496 497 497 498 498 499* 513 515 515 arg_count 000117 automatic fixed bin(17,0) dcl 111 set ref 303* 305 310 328 356 375 392 411 445 479 arg_len 000122 automatic fixed bin(21,0) dcl 113 set ref 306* 307 310 310 313* 315 315 318 318 320 320 324 324 325 328 328 331* 333 333 336 336 338 338 342 342 343 343 347 347 351 351 352 352 353 359* 360 366 366 366 368 372 372 375 375 378* 380 380 383 383 383 386 389 392 392 395* 397 397 400 400 400 403 406 406 407 407 408 408 411 411 414* 416 416 419 419 419 422 425 425 429 429 433 433 437 437 441 441 442 445 445 448* 450 450 453 453 453 456 459 459 463 463 467 467 471 471 475 476 476 479 479 485* 487 487 489 489 494 494 496 497 497 498 498 499 499 513 515 515 arg_ptr 000120 automatic pointer dcl 112 set ref 306* 307 310 313* 315 318 320 324 324 325 328 331* 333 336 338 342 342 343 343 347 347 351 351 352 352 353 359* 360 366 368 372 372 375 378* 380 383 386 389 392 395* 397 400 403 406 406 407 407 408 408 411 414* 416 419 422 425 425 429 429 433 433 437 437 441 441 442 445 448* 450 453 456 459 459 463 463 467 467 471 471 475 476 476 479 485* 487 489 494 496 497 497 498 498 499 513 515 515 auth_string 000126 automatic char(170) unaligned dcl 117 set ref 840* 841 841* 842 authorization 000124 automatic bit(72) dcl 116 in procedure "dlm" set ref 838* 839* authorization 14 001676 automatic bit(72) level 2 in structure "local_mi" dcl 175 in procedure "dlm" set ref 839* 840* before builtin function dcl 234 ref 497 497 786 834 before_date_time 000202 automatic fixed bin(71,0) dcl 120 set ref 336* 658 before_sw 000201 automatic bit(1) dcl 119 set ref 268* 333 340* 543 552 658 brief 000204 automatic bit(1) dcl 122 set ref 268* 342* 345* 633 696 call_string 000205 automatic char(512) unaligned dcl 124 set ref 286* 356* 361* 366 366 366 368* 845 850 canonicalize_ 000012 constant entry external dcl 53 ref 731 cleanup 000104 stack reference condition dcl 104 ref 292 824 code 011034 automatic fixed bin(35,0) dcl 237 set ref 295* 297 298* 318* 320 320* 336* 338 338* 487* 489 489* 494* 495 497* 498 498* 499 502 526* 529 529* 558* 560* 584* 586 587* 589 589* 594* 597 597* 600* 602 602* 605* 607 607* 612* 614 614* 619* 621* 622* 624* 651* 652 653 653* 677* 680 680* 707* 708 708* 813* 814 840* 878* collate builtin function dcl 234 ref 247 com_err_ 000014 constant entry external dcl 55 ref 298 command_line 000405 automatic char(2000) unaligned dcl 126 set ref 850* 853 853 853 853 comment 001371 automatic bit(1) dcl 128 set ref 268* 380 387* 543 552 658 comment_string 001372 automatic char(32) unaligned dcl 129 set ref 383 383 383 386* 658 conversion 000106 stack reference condition dcl 744 ref 766 768 convert builtin function dcl 234 ref 767 convert_access_class_$to_string_short 000016 constant entry external dcl 57 ref 840 convert_date_to_binary_ 000020 constant entry external dcl 59 ref 318 336 cu_$cp 000022 constant entry external dcl 61 ref 853 date_time 001402 automatic fixed bin(71,0) dcl 131 set ref 829* 830* 831* 850* 850* 871 875 date_time_ 000024 constant entry external dcl 63 ref 831 date_time_$format 000026 constant entry external dcl 64 ref 850 850 default 001405 automatic bit(1) dcl 135 set ref 268* 580* 586 631 634 634 653 680 848 864 delete 001404 automatic bit(1) dcl 133 set ref 259* 265* 406 407 482* 533* 552 554 658 680* 696 696 701 704 dname 001406 automatic char(168) unaligned dcl 137 set ref 487* 526* 578* 584* 587* 589* 589* 592* 592* 594* 597* 597* 602* 602* 605* 607* 607* 614* 614* 631* 631* 634* 634* 653* 653* 680* 680* 849* 849* ename 001460 automatic char(32) unaligned dcl 138 set ref 487* 526* 579* 584* 587* 589* 589* 592* 592* 594* 597* 597* 602* 602* 605* 607* 607* 614* 614* 631* 631* 634* 634* 653* 653* 680* 680* 849* 849* end 010671 automatic fixed bin(17,0) dcl 204 in procedure "dlm" set ref 495* 498* 509 end 2 002070 automatic fixed bin(17,0) array level 2 in structure "msg_spec" dcl 187 in procedure "dlm" set ref 509* 510 560* 622 622* 624* 625 673 end_spec 3 002070 automatic bit(1) array level 2 dcl 187 set ref 510* 511* 561* 622 error_table_$inconsistent 000114 external static fixed bin(35,0) dcl 239 set ref 541* 543* error_table_$no_message 000122 external static fixed bin(35,0) dcl 242 ref 652 error_table_$noarg 000116 external static fixed bin(35,0) dcl 240 set ref 310* 328* 375* 392* 411* 445* 479* error_table_$noentry 000120 external static fixed bin(35,0) dcl 241 ref 586 exclude 001470 automatic bit(1) dcl 140 set ref 268* 397 404* 543 552 658 exclude_string 001471 automatic char(256) unaligned dcl 141 set ref 286* 400 400 400 403* 658 expand_pathname_$add_suffix 000030 constant entry external dcl 66 ref 487 extended_mode 001571 automatic bit(36) dcl 143 set ref 605* 609 fixed builtin function dcl 234 ref 658 658 829 830 flags 4 001714 automatic structure level 2 in structure "local_pcao" dcl 176 in procedure "dlm" flags 3 based structure array level 2 in structure "msg_array" dcl 5-4 in procedure "dlm" force 001572 automatic bit(1) dcl 145 set ref 268* 406* 407* 658 696 696 701 found 001604 automatic bit(1) dcl 150 in procedure "dlm" set ref 657* 672 684* found 4 002070 automatic bit(1) array level 2 in structure "msg_spec" dcl 187 in procedure "dlm" set ref 512* 562* 683* 701 from 001573 automatic bit(1) dcl 147 set ref 268* 416 423* 543 552 658 from_string 001574 automatic char(32) unaligned dcl 148 set ref 286* 419 419 419 422* 658* get_authorization_ 000032 constant entry external dcl 68 ref 838 get_system_free_area_ 000034 constant entry external dcl 70 ref 290 hbound builtin function dcl 234 ref 504 504 504 header based structure level 2 dcl 2-24 hold_flags based structure level 1 packed unaligned dcl 154 hold_flags_ptr 001606 automatic pointer dcl 159 set ref 569* 570 571 572 573 hold_messages 0(01) based bit(1) level 2 in structure "hold_flags" packed unaligned dcl 154 in procedure "dlm" set ref 570* 571* hold_messages 001610 automatic bit(1) dcl 161 in procedure "dlm" set ref 280* 426* 430* 543 570 574 hold_notifications 001612 automatic bit(1) dcl 163 in procedure "dlm" set ref 282* 434* 438* 543 572 574 hold_notifications 0(02) based bit(1) level 2 in structure "hold_flags" packed unaligned dcl 154 in procedure "dlm" set ref 572* 573* idx 000100 automatic fixed bin(17,0) dcl 741 in procedure "get_msg_spec" set ref 752* 753 753* 759* 760 760* idx 001614 automatic fixed bin(17,0) dcl 166 in procedure "dlm" set ref 305* 306* 308* 308 310 313* 326* 326 328 331* 354* 354 356 359* 362* 362 373* 373 375 378* 390* 390 392 395* 409* 409 411 414* 443* 443 445 448* 477* 477 479 485* 526* 531* 531* 618* 619 619 619 621 622 622 622 624 625 625 625* 649* 650 651 653 658 658 658 658 673 673 673 676* 676 677 680* 700* 701 701 701* index builtin function dcl 234 ref 360 496 658 658 701 729 792 ioa_ 000036 constant entry external dcl 72 ref 592 631 634 711 ioa_$rsnnl 000040 constant entry external dcl 73 ref 846 847 iox_$user_output 000042 external static pointer dcl 75 set ref 878* jdx 001615 automatic fixed bin(17,0) dcl 166 set ref 672* 673 673 683* last 001616 automatic bit(1) dcl 168 set ref 268* 441* 543 633 640 last_message_id 4 001666 automatic bit(72) level 2 dcl 174 set ref 816 829 last_message_info based structure level 1 dcl 1-5 last_message_number 6 001666 automatic fixed bin(17,0) level 2 dcl 174 set ref 846* last_message_ptr 2 001666 automatic pointer level 2 dcl 174 set ref 818 last_msg 000100 automatic bit(1) dcl 805 set ref 811* 823* 829 846 881 last_msg_time 001617 automatic char(24) unaligned dcl 170 set ref 285* 869 876* last_sender 001625 automatic char(120) unaligned dcl 171 set ref 285* 857 874* last_time 001664 automatic fixed bin(71,0) dcl 172 set ref 287* 871 875* length builtin function dcl 234 ref 366 366 366 383 383 383 400 400 400 419 419 419 453 453 453 658 658 658 658 658 658 731 731 834 836 836 836 846 846 847 847 850 850 850 850 853 853 local_lmi 001666 automatic structure level 1 dcl 174 set ref 813 813 local_mi 001676 automatic structure level 1 dcl 175 set ref 651 651 819* local_pcao 001714 automatic structure level 1 dcl 176 set ref 526 526 logbox_creation_mode 2 001714 automatic fixed bin(17,0) level 2 dcl 176 set ref 520* mail_format based structure level 1 dcl 2-24 ref 689 884 903 mail_format_ptr 011136 automatic pointer dcl 2-17 set ref 289* 656* 658 658 658 658 658 658 658 658 658 658 658 688 689 690* 827* 834 834 836 836 836 836 850 850 850 850 850 850 850 850 883 884 885* 903 903 mailbox_$create 000044 constant entry external dcl 77 ref 587 mailbox_$get_mode_file 000046 constant entry external dcl 78 ref 605 match 001721 automatic bit(1) dcl 178 set ref 268* 450 457* 543 552 658 match_string 001722 automatic char(256) unaligned dcl 179 set ref 286* 453 453 453 456* 658 mbz 4(02) 001714 automatic bit(34) level 3 packed unaligned dcl 176 set ref 524* message_facility_$delete_message 000052 constant entry external dcl 82 ref 677 message_facility_$get_last_message_info 000054 constant entry external dcl 83 ref 813 message_facility_$get_msg_array_ptr 000056 constant entry external dcl 84 ref 612 707 message_facility_$get_msgf_mbx_ptr 000060 constant entry external dcl 85 ref 584 594 message_facility_$get_prefix 000062 constant entry external dcl 86 ref 600 message_facility_$print_message 000064 constant entry external dcl 87 ref 878 message_facility_$read_message 000066 constant entry external dcl 88 ref 651 message_facility_$set_seen_switch 000070 constant entry external dcl 89 ref 882 message_id based bit(72) array level 2 dcl 5-4 set ref 650 651* 658 658 676* 677* message_info based structure level 1 dcl 3-4 ref 819 message_info_ptr 011140 automatic pointer dcl 3-10 set ref 818* 819 message_number 2 based fixed bin(17,0) array level 2 dcl 5-4 set ref 653* 673 673 673 680* 753 753 760 760 847* message_ptr 12 001676 automatic pointer level 2 dcl 175 set ref 656 827 message_sender 002022 automatic char(120) unaligned dcl 181 set ref 834* 836* 842* 842 850 850 857 874 message_status 010667 automatic bit(1) dcl 202 set ref 275* 349* 351* 352* 704 messages 010663 automatic bit(1) dcl 197 set ref 276* 460* 464* 543 549* 552 565 565* 658 658 mlsys_utils_$parse_mailbox_control_args 000050 constant entry external dcl 80 ref 526 msg_array based structure array level 1 dcl 5-4 set ref 705 893 msg_array_ptr 011142 automatic pointer dcl 5-11 set ref 289* 612* 650 651 653 658 658 658 658 673 673 673 676 677 680 705 705 707* 751 753 753 758 760 760 847 893 893 msg_date_time 002060 automatic char(24) unaligned dcl 183 set ref 831* 869 876 msg_print_flags 011145 automatic structure level 1 packed unaligned dcl 6-4 set ref 807* 878 878 msg_spec 002070 automatic structure array level 1 dcl 187 in procedure "dlm" set ref 504 504 504 msg_spec 000102 automatic char(5) unaligned dcl 742 in procedure "get_msg_spec" set ref 748* 750 750 757 757 msgf_mbx_ptr 002066 automatic pointer dcl 185 set ref 584* 594* 600* 612* 651* 677* 707* 813* 878* 882* n_messages 011144 automatic fixed bin(17,0) dcl 5-13 set ref 612* 631 631 631* 631 633 649 705 707* 711 751 752 758 759 762 893 n_msg_specs 010662 automatic fixed bin(17,0) dcl 195 set ref 288* 503* 503 504 506 507 507 508 509 510 510 511 512 513 543 551 557* 557 558 559 560 561 562 618 672 700 new 010672 automatic bit(1) dcl 206 set ref 268* 475* 543 658 no_hold_messages 001611 automatic bit(1) dcl 162 set ref 281* 427* 431* 543 571 574 no_hold_notifications 001613 automatic bit(1) dcl 164 set ref 283* 435* 439* 543 573 574 no_messages 010664 automatic bit(1) dcl 198 set ref 277* 461* 465* 541 543 548 no_notifications 010666 automatic bit(1) dcl 200 set ref 279* 469* 473* 541 543 549 notifications 010665 automatic bit(1) dcl 199 set ref 278* 468* 472* 543 548* 552 565 565* 658 658 notify 13(02) based bit(1) level 4 packed unaligned dcl 2-24 ref 658 658 null builtin function dcl 234 ref 289 295 295 688 690 705 751 758 883 885 892 893 903 output_string 000100 automatic char unaligned dcl 726 set ref 730* 731 731 732 own 010673 automatic bit(1) dcl 208 set ref 609* 631* 634 parse_ca_options based structure level 1 dcl 4-8 path 010674 automatic bit(1) dcl 210 set ref 268* 482 491* 533 536* 576 pathname 010675 automatic char(256) unaligned dcl 212 set ref 848* 849* 850 pathname_ 000072 constant entry external dcl 91 ref 589 589 592 592 597 597 602 602 607 607 614 614 631 631 634 634 653 653 680 680 849 849 person 000100 automatic char(22) unaligned dcl 783 in procedure "from_match" set ref 786* 792 795 person 010775 automatic char(22) unaligned dcl 214 in procedure "dlm" set ref 577* 578 579 prefix_string 011006 automatic varying char(32) dcl 217 set ref 600* print 011017 automatic bit(1) dcl 219 set ref 260* 266* 344 348 353 425 429 433 437 441 475 482* 482* 533* 533* 556 586 631 658 673 676 print_date_and_time 0(03) 011145 automatic bit(1) level 2 packed unaligned dcl 6-4 set ref 869* print_ename 0(01) 011145 automatic bit(1) level 2 packed unaligned dcl 6-4 set ref 864* print_last_message 0(05) 011145 automatic bit(1) level 2 packed unaligned dcl 6-4 set ref 810* print_prefix 011145 automatic bit(1) level 2 packed unaligned dcl 6-4 set ref 861* print_sender 0(02) 011145 automatic bit(1) level 2 packed unaligned dcl 6-4 set ref 866* print_time 0(04) 011145 automatic bit(1) level 2 packed unaligned dcl 6-4 set ref 871* printed 3 based bit(1) array level 3 packed unaligned dcl 5-4 ref 658 658 project 000106 automatic char(9) unaligned dcl 784 in procedure "from_match" set ref 787* 789 792 project 011003 automatic char(9) unaligned dcl 215 in procedure "dlm" set ref 577* 578 requote_string_ 000074 constant entry external dcl 93 ref 849 850 850 850 return_value 000104 automatic fixed bin(17,0) dcl 743 set ref 755* 762* 767* 767 769 772 rtrim builtin function dcl 234 ref 578 579 658 658 658 658 658 658 658 658 658 658 658 658 658 658 789 789 792 792 792 795 795 834 834 836 836 836 836 836 836 842 850 850 850 850 850 850 850 850 850 850 850 850 850 850 850 853 853 savebox_creation_mode 3 001714 automatic fixed bin(17,0) level 2 dcl 176 set ref 521* sci_ptr 011020 automatic pointer dcl 221 set ref 289* 295* 303* 306* 310* 313* 315* 320* 328* 331* 333* 338* 359* 366* 375* 378* 380* 383* 392* 395* 397* 400* 411* 414* 416* 419* 445* 448* 450* 453* 479* 482* 485* 489* 499* 504* 526* 529* 533* 541* 543* 554* 589* 597* 602* 607* 614* 625* 653* 680* 696* 701* 708* 816* 892 892* sender 2 001676 automatic char(32) level 2 dcl 175 set ref 658 658 658 658 834 834 834 836 836 sent_from 1 based char(32) level 3 dcl 2-24 ref 658 658 658 658 834 834 836 836 836 836 short 011022 automatic bit(1) dcl 223 set ref 857* 858* 861 866 short_format 011023 automatic bit(1) dcl 224 set ref 284* 344* 348* 866 869 short_prefix 011024 automatic bit(1) dcl 225 set ref 600* 861 size 000114 stack reference condition dcl 744 ref 766 768 something_done 011025 automatic bit(1) dcl 227 set ref 645* 673 682* 696 ssu_$abort_line 000076 constant entry external dcl 95 ref 310 315 320 328 333 338 366 375 380 383 392 397 400 411 416 419 445 450 453 479 482 489 499 504 529 533 541 543 554 589 597 602 607 614 625 708 816 ssu_$arg_count 000100 constant entry external dcl 96 ref 303 ssu_$arg_ptr 000102 constant entry external dcl 97 ref 306 313 331 359 378 395 414 448 485 ssu_$destroy_invocation 000104 constant entry external dcl 98 ref 892 ssu_$print_message 000106 constant entry external dcl 99 ref 653 680 696 701 ssu_$standalone_invocation 000110 constant entry external dcl 100 ref 295 start 010670 automatic fixed bin(17,0) dcl 204 in procedure "dlm" set ref 494* 495 497* 506 start 002070 automatic fixed bin(17,0) array level 2 in structure "msg_spec" dcl 187 in procedure "dlm" set ref 506* 507 558* 619 619* 621* 625 673 start_spec 1 002070 automatic bit(1) array level 2 dcl 187 set ref 507* 508* 559* 619 string builtin function dcl 234 set ref 807* substr builtin function dcl 234 ref 247 609 658 658 658 658 789 829 830 834 836 869 876 switches 13 based structure level 3 dcl 2-24 sys_area based area(1024) dcl 229 ref 689 705 884 893 903 sys_area_ptr 011026 automatic pointer dcl 230 set ref 290* 612* 651* 689 705 707* 884 893 903 tag 011030 automatic varying char(10) dcl 232 set ref 846* 846 846 847* 847 847 850 text 15 based char level 2 dcl 2-24 ref 658 658 658 658 658 850 850 850 850 850 850 850 850 text_len 12 based fixed bin(21,0) level 3 dcl 2-24 ref 658 658 658 658 658 689 850 850 850 850 850 850 850 850 884 903 translate builtin function dcl 234 ref 515 515 728 748 user_info_$whoami 000112 constant entry external dcl 102 ref 577 validate_addresses 4(01) 001714 automatic bit(1) level 3 packed unaligned dcl 176 set ref 523* version 001676 automatic char(8) level 2 in structure "local_mi" dcl 175 in procedure "dlm" set ref 647* version 001666 automatic char(8) level 2 in structure "local_lmi" dcl 174 in procedure "dlm" set ref 812* version 001714 automatic char(8) level 2 in structure "local_pcao" packed unaligned dcl 176 in procedure "dlm" set ref 519* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CREATE_AND_ANNOUNCE_MAILBOX internal static fixed bin(17,0) initial dcl 4-28 DONT_DELETE_MESSAGES internal static bit(3) initial unaligned dcl 5-16 DONT_DELETE_NOTIFICATIONS internal static bit(3) initial unaligned dcl 5-17 MAIL_FORMAT_VERSION_4 internal static fixed bin(17,0) initial dcl 2-19 QUERY_TO_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 4-28 SILENTLY_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 4-28 last_message_info_ptr automatic pointer dcl 1-11 parse_ca_options_ptr automatic pointer dcl 4-23 text_length automatic fixed bin(21,0) dcl 2-22 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_INTEGER 010267 constant label dcl 774 ref 765 766 769 COMMON 001323 constant label dcl 268 ref 261 MAIN_RETURN 007707 constant label dcl 714 ref 636 642 RETURN_FROM_DLM 007713 constant label dcl 716 ref 899 abort_dlm 012323 constant entry internal dcl 897 ref 295 295 canon 007715 constant entry internal dcl 723 ref 658 658 836 850 850 cleanup_dlm 012270 constant entry internal dcl 891 ref 292 714 898 cleanup_pm 012340 constant entry internal dcl 902 ref 824 delete_message 001255 constant entry external dcl 47 dlm 001245 constant entry external dcl 47 from_match 010275 constant entry internal dcl 781 ref 658 get_msg_spec 010043 constant entry internal dcl 738 ref 494 497 498 558 560 619 621 622 624 pm 001277 constant entry external dcl 263 print_message 010567 constant entry internal dcl 802 ref 641 676 print_messages 001307 constant entry external dcl 263 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 13552 13676 12770 13562 Length 14350 12770 124 435 562 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dlm 4880 external procedure is an external procedure. on unit on line 292 64 on unit canon 88 internal procedure uses auto adjustable storage, uses returns(char(*)) or returns(bit(*)), and is called during a stack extension. get_msg_spec 244 internal procedure is called during a stack extension, and enables or reverts conditions. on unit on line 766 64 on unit from_match 79 internal procedure is called during a stack extension. print_message 257 internal procedure enables or reverts conditions. on unit on line 824 70 on unit cleanup_dlm 68 internal procedure is called by several nonquick procedures. abort_dlm 64 internal procedure is assigned to an entry variable. cleanup_pm internal procedure shares stack frame of on unit on line 824. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME canon 000100 output_string canon dlm 000100 ME dlm 000112 after_sw dlm 000114 after_date_time dlm 000116 all dlm 000117 arg_count dlm 000120 arg_ptr dlm 000122 arg_len dlm 000124 authorization dlm 000126 auth_string dlm 000201 before_sw dlm 000202 before_date_time dlm 000204 brief dlm 000205 call_string dlm 000405 command_line dlm 001371 comment dlm 001372 comment_string dlm 001402 date_time dlm 001404 delete dlm 001405 default dlm 001406 dname dlm 001460 ename dlm 001470 exclude dlm 001471 exclude_string dlm 001571 extended_mode dlm 001572 force dlm 001573 from dlm 001574 from_string dlm 001604 found dlm 001605 actual_hold_flags dlm 001606 hold_flags_ptr dlm 001610 hold_messages dlm 001611 no_hold_messages dlm 001612 hold_notifications dlm 001613 no_hold_notifications dlm 001614 idx dlm 001615 jdx dlm 001616 last dlm 001617 last_msg_time dlm 001625 last_sender dlm 001664 last_time dlm 001666 local_lmi dlm 001676 local_mi dlm 001714 local_pcao dlm 001721 match dlm 001722 match_string dlm 002022 message_sender dlm 002060 msg_date_time dlm 002066 msgf_mbx_ptr dlm 002070 msg_spec dlm 010662 n_msg_specs dlm 010663 messages dlm 010664 no_messages dlm 010665 notifications dlm 010666 no_notifications dlm 010667 message_status dlm 010670 start dlm 010671 end dlm 010672 new dlm 010673 own dlm 010674 path dlm 010675 pathname dlm 010775 person dlm 011003 project dlm 011006 prefix_string dlm 011017 print dlm 011020 sci_ptr dlm 011022 short dlm 011023 short_format dlm 011024 short_prefix dlm 011025 something_done dlm 011026 sys_area_ptr dlm 011030 tag dlm 011034 code dlm 011035 ALPHABET dlm 011136 mail_format_ptr dlm 011140 message_info_ptr dlm 011142 msg_array_ptr dlm 011144 n_messages dlm 011145 msg_print_flags dlm from_match 000100 person from_match 000106 project from_match get_msg_spec 000100 idx get_msg_spec 000102 msg_spec get_msg_spec 000104 return_value get_msg_spec print_message 000100 last_msg print_message THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_g_a r_e_as r_ne_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac tra_ext_1 alloc_auto_adj enable_op shorten_stack ext_entry int_entry int_entry_desc set_chars_eis index_chars_eis return_chars_eis any_to_any_truncate_ translate_2 op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. aim_check_$greater_or_equal canonicalize_ com_err_ 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_mode_file message_facility_$delete_message message_facility_$get_last_message_info message_facility_$get_msg_array_ptr message_facility_$get_msgf_mbx_ptr message_facility_$get_prefix message_facility_$print_message message_facility_$read_message message_facility_$set_seen_switch mlsys_utils_$parse_mailbox_control_args pathname_ requote_string_ ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$destroy_invocation ssu_$print_message ssu_$standalone_invocation user_info_$whoami THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$inconsistent error_table_$no_message error_table_$noarg error_table_$noentry iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 247 001227 47 001244 258 001263 259 001272 260 001274 261 001275 263 001276 264 001315 265 001320 266 001321 268 001323 275 001341 276 001342 277 001343 278 001344 279 001345 280 001346 281 001347 282 001350 283 001351 284 001352 285 001354 286 001362 287 001376 288 001400 289 001401 290 001405 292 001414 295 001436 297 001477 298 001501 299 001525 303 001526 305 001537 306 001547 307 001564 308 001572 310 001573 313 001631 315 001646 318 001704 320 001730 322 001764 323 001766 324 001767 325 002002 326 002006 328 002007 331 002045 333 002062 336 002120 338 002144 340 002200 341 002202 342 002203 343 002216 344 002226 345 002232 346 002233 347 002234 348 002244 349 002252 350 002253 351 002254 352 002267 353 002301 354 002310 356 002311 359 002320 360 002335 361 002351 362 002354 363 002356 366 002357 368 002423 371 002430 372 002431 373 002442 375 002443 378 002501 380 002516 383 002554 386 002620 387 002625 388 002627 389 002630 390 002634 392 002635 395 002673 397 002710 400 002746 403 003012 404 003017 405 003021 406 003022 407 003040 408 003056 409 003067 411 003070 414 003126 416 003143 419 003201 422 003245 423 003252 424 003254 425 003255 426 003270 427 003272 428 003273 429 003274 430 003310 431 003311 432 003313 433 003314 434 003330 435 003332 436 003333 437 003334 438 003350 439 003351 440 003353 441 003354 442 003373 443 003400 445 003401 448 003437 450 003454 453 003512 456 003556 457 003563 458 003565 459 003566 460 003576 461 003600 462 003601 463 003602 464 003612 465 003613 466 003615 467 003616 468 003626 469 003630 470 003631 471 003632 472 003642 473 003643 474 003645 475 003646 476 003660 477 003671 479 003672 482 003730 485 003770 487 004005 489 004043 491 004077 492 004101 494 004102 495 004125 496 004132 497 004145 498 004201 499 004250 502 004307 503 004311 504 004312 506 004350 507 004355 508 004362 509 004363 510 004365 511 004371 512 004372 513 004373 514 004401 515 004402 516 004431 519 004432 520 004434 521 004436 522 004437 523 004441 524 004443 526 004445 529 004503 531 004522 533 004524 536 004564 539 004566 541 004570 543 004620 548 004710 549 004715 551 004721 552 004723 554 004750 556 005002 557 005007 558 005010 559 005035 560 005037 561 005061 562 005063 565 005064 568 005073 569 005074 570 005076 571 005104 572 005111 573 005117 574 005124 576 005140 577 005142 578 005163 579 005232 580 005261 584 005264 586 005311 587 005322 589 005342 592 005414 594 005454 597 005501 600 005552 602 005567 605 005640 607 005665 609 005736 612 005742 614 005761 618 006032 619 006041 621 006074 622 006117 624 006150 625 006172 627 006227 631 006231 633 006327 634 006335 636 006413 640 006414 641 006416 642 006431 645 006432 647 006433 649 006435 650 006445 651 006454 652 006476 653 006503 656 006577 657 006601 658 006602 672 007212 673 007225 676 007254 677 007270 680 007303 682 007403 683 007405 684 007411 686 007412 688 007414 689 007420 690 007427 694 007431 696 007433 699 007507 700 007510 701 007517 702 007605 704 007607 705 007614 707 007624 708 007643 711 007671 714 007707 716 007713 723 007714 726 007730 728 007740 729 007755 730 007770 731 007775 732 010022 734 010032 738 010042 746 010056 748 010060 750 010072 751 010104 752 010116 753 010125 754 010136 755 010140 756 010142 757 010143 758 010157 759 010171 760 010175 761 010206 762 010211 763 010214 765 010215 766 010222 767 010246 768 010257 769 010261 772 010264 774 010267 776 010272 781 010274 786 010315 787 010330 789 010346 791 010421 792 010422 794 010526 795 010527 797 010563 802 010566 807 010574 809 010576 810 010601 811 010603 812 010605 813 010607 814 010623 816 010626 818 010660 819 010664 820 010670 823 010671 824 010672 827 010710 829 010714 830 010722 831 010730 834 010745 836 011015 838 011141 839 011152 840 011171 841 011213 842 011223 843 011262 845 011263 846 011270 847 011322 848 011357 849 011366 850 011434 853 012055 854 012106 857 012107 858 012116 861 012117 864 012130 866 012134 869 012144 871 012155 874 012163 875 012166 876 012170 878 012173 881 012215 882 012217 883 012247 884 012254 885 012263 888 012266 891 012267 892 012275 893 012310 894 012321 897 012322 898 012330 899 012335 902 012340 903 012341 904 012356 ----------------------------------------------------------- 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