COMPILATION LISTING OF SEGMENT xmail_select_msgs_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 09/02/88 0746.3 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 /****^ HISTORY COMMENTS: 13* 1) change(86-02-06,Blair), approve(86-02-26,MCR7358), 14* audit(86-04-18,RBarstad), install(86-05-28,MR12.0-1062): 15* 85-02-28 JG Backs: Modified to allow selection of messages by date or 16* range of dates. Added 3 new internal procedures to do this: date_search, 17* convert_date, and date_current. Also added an include file for date 18* conversions: time_value.incl.pl1 and clock builtin. 19* 85-03-11 JG Backs: Modified to allow responses of short forms of keywords. 20* Allow a for all, l for last, f for first, n for next, and p for prev. 21* Include file xmail_responses.incl.pl1 was also modified to add short forms. 22* 2) change(86-02-06,Blair), approve(86-02-26,MCR7358), 23* audit(86-04-18,RBarstad), install(86-05-28,MR12.0-1062): 24* Add new procs to process "new", "seen", and "unseen" selection specifiers. 25* Note that the previous meaning of "new" is preserved in the new_current 26* procedure whereas the new meaning of "new" (unseen since last seen) 27* requires a new entrypoint. The old is retained so that 28* xmail_Process_Mail_ can update mail file counts as new messages arrive. 29* 3) change(86-02-25,Blair), approve(86-02-25,MCR7358), 30* audit(86-04-18,RBarstad), install(86-05-28,MR12.0-1062): 31* Change the interpret_list routine so that swn seen and swf seen can 32* be processed. This required changes to when the message structure gets 33* allocated for SEEN UNSEEN NEW and ALL messages. It is now possible to 34* process lists of messages in conjunction with ranges. 35* 4) change(87-01-14,Blair), approve(87-02-05,MCR7618), 36* audit(87-04-10,RBarstad), install(87-04-26,MR12.1-1025): 37* Initialize the count variable in new_current to alleviate a size error 38* problem when we create a new current msgs structure. 39* END HISTORY COMMENTS */ 40 41 42 xmail_select_msgs_: proc (P_mailbox_ptr, P_curr_msgsp, P_seen_msgs, P_switch_on_off, P_pos_line); 43 44 /* BEGIN DESCRIPTION 45* 46*history: 47* Created 06/17/81 by Suzanne Krupp 48* 49* 83-07-14 DJ Schimke: Modified to use new mail_system calls and version 2 50* mailboxes. 51* 52* 84-11-09 JG Backs: Modified interpret_range internal procedure to make 53* sure the largest number in the range is not above the number of messages 54* in the mailbox. 55* 56*END DESCRIPTION 57**/ 58 59 /* PARAMETERS */ 60 61 dcl P_curr_msgsp ptr parameter; 62 dcl P_deleted_msgsp ptr parameter; 63 dcl P_mailbox_ptr ptr parameter; 64 dcl P_pos_line char (*) parameter; 65 dcl P_spec_msgsp ptr parameter; 66 dcl P_switch_on_off bit (2) aligned parameter; 67 dcl P_seen_msgs ptr; 68 69 70 /* AUTOMATIC */ 71 72 dcl area_ptr ptr; 73 dcl code fixed bin (35); 74 dcl hold_code fixed bin (35); 75 dcl i fixed bin; 76 dcl line char (256) var; 77 dcl list_any bit (1) aligned; 78 dcl need_answer bit (1) aligned; 79 dcl n_new_msgs fixed bin; 80 dcl prompt_sw bit (1) aligned; 81 dcl switch_on bit (1) aligned; 82 dcl switch_off bit (1) aligned; 83 dcl unused_return_length fixed bin; 84 dcl want_deleted_msgs bit (1) aligned; 85 dcl want_seen_messages bit (1) aligned; 86 87 88 /* BASED */ 89 90 dcl based_area area based (area_ptr); 91 92 /* BUILTINS */ 93 94 dcl (addr, after, before, char, index, length, ltrim, null, rtrim, verify) builtin; 95 96 /* CONDITIONS */ 97 98 dcl cleanup condition; 99 100 /* CONSTANTS */ 101 102 dcl DUMMY_ANSWER_ARRAY (1) char (1) var static options (constant) init (""); 103 dcl ME_CHAR char (17) int static options (constant) init ("xmail_select_msgs"); 104 dcl ONE_DAY fixed binary (71) static options (constant) init (86399999999); /* one microsecond less than 1 day */ 105 dcl SECONDS bit (2) int static options (constant) init ("11"b); 106 dcl TODAY char (5) int static options (constant) init ("today"); 107 108 109 /* ENTRIES */ 110 111 dcl com_err_$suppress_name entry () options (variable); 112 dcl convert_date_to_binary_ entry (char(*), fixed bin(71), fixed bin(35)); 113 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 114 dcl date_time_$format entry (char(*), fixed bin(71), char(*), char(*)) returns(char(250) var); 115 dcl date_time_$from_clock entry (fixed bin(71), char(*), ptr, fixed bin(35)); 116 dcl date_time_$to_clock entry (ptr, fixed bin(71), fixed bin(35)); 117 dcl get_system_free_area_ entry () returns (ptr); 118 dcl ioa_ entry () options (variable); 119 dcl ioa_$rsnnl entry () options (variable); 120 dcl mail_system_$read_message entry (ptr, fixed bin, fixed bin (35)); 121 dcl mail_system_$read_new_messages entry (ptr, fixed bin, fixed bin, fixed bin, fixed bin (35)); 122 dcl mlsys_utils_$search_message entry (ptr, char (*), ptr, fixed bin (35)) returns (bit (1) aligned); 123 dcl timer_manager_$sleep entry (fixed bin(71), bit(2)); 124 dcl xmail_error_$code_first entry () options (variable); 125 dcl xmail_error_$no_code entry () options (variable); 126 dcl xmail_get_str_ entry (char (*) var, (*) char (*) var, char (*), char (*), char (*) var); 127 dcl xmail_get_str_$yes_no entry (char (*) var, bit (1) aligned); 128 dcl xmail_list_msgs_ entry (ptr, ptr, ptr); 129 dcl xmail_list_msgs_$selected entry (ptr, ptr, ptr); 130 dcl xmail_validate_$curr_msgs entry (ptr, fixed bin (35)); 131 dcl xmail_validate_$mbx entry (ptr, fixed bin (35)); 132 133 /* EXTERNAL STATIC */ 134 135 dcl (mlsys_et_$no_more_messages, 136 xmail_err_$bad_response, 137 xmail_err_$int_prog_err, 138 xmail_err_$invalid_list, 139 xmail_err_$invalid_range, 140 xmail_err_$list_requested, 141 xmail_err_$mailbox_empty, 142 xmail_err_$no_msgs_exist, 143 xmail_err_$some_del_msgs_exist, 144 xmail_err_$some_msgs_exist, 145 xmail_err_$date_not_found, 146 xmail_err_$str_not_found) fixed bin (35) ext static; 147 148 dcl iox_$user_output ptr ext static; 149 150 /* INCLUDE FILES */ 151 152 1 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(85-12-19,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 to message. 1 8* END HISTORY COMMENTS */ 1 9 1 10 1 11 /* Created: June 1983 by G. Palter */ 1 12 1 13 /* Definition of a message as used by the Multics Mail System */ 1 14 1 15 dcl 1 message aligned based (message_ptr), 1 16 2 version character (8) unaligned, 1 17 2 reserved bit (144), /* for exclusive use of the mail system */ 1 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 1 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 1 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 1 21 2 n_body_sections fixed binary, /* # of sections in the body */ 1 22 2 flags, 1 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 1 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 1 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 1 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 1 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 1 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 1 29 2 pad bit (36), 1 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 1 31 2 header, 1 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 1 33 3 access_class bit (72), /* AIM access class of this message */ 1 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 1 35 3 from pointer, /* -> address list of author(s) of the message */ 1 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 1 37 3 to pointer, /* -> address list of primary recipients */ 1 38 3 cc pointer, /* -> address list of secondary recipients */ 1 39 3 bcc pointer, /* -> address list of blind recipients */ 1 40 3 subject like message_text_field, /* subject of the message */ 1 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 1 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 1 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 1 44 2 body, 1 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 1 46 3 pad bit (36), 1 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 1 48 1 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 1 50 1 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 1 52 1 53 dcl message_ptr pointer; 1 54 1 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 1 56 message_references_list_n_references) 1 57 fixed binary; /* for exclusive use of the mail system */ 1 58 1 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 1 60 1 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 1 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 1 63 2 sender pointer, /* -> address of entity that mailed the message */ 1 64 2 trace pointer, /* -> message_trace describing how it got here */ 1 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 1 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 1 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 1 68 1 69 dcl message_envelope_ptr pointer; 1 70 1 71 1 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 1 73 1 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 1 75 2 pad pointer, /* forces even word alignment */ 1 76 2 version character (8) unaligned, 1 77 2 envelope like message_envelope; 1 78 1 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 1 80 1 81 dcl message_envelope_parameter_ptr pointer; 1 82 1 83 1 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 1 85* networks to reach this recipient */ 1 86 1 87 dcl 1 message_trace aligned based (message_trace_ptr), 1 88 2 version character (8) unaligned, 1 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 1 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 1 91 2 pad bit (36), 1 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 1 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 1 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 1 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 1 96 3 receiving_host character (256) varying, /* ... the host which received it */ 1 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 1 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 1 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 1 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 1 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 1 102 1 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 1 104 1 105 dcl message_trace_ptr pointer; 1 106 1 107 /* Definition of a message's redistributions list */ 1 108 1 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 1 110 2 version character (8) unaligned, 1 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 1 112 2 pad bit (36), 1 113 2 n_redistributions fixed binary, /* # of redistributions */ 1 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 1 115 like message_redistribution; /* the redistributions: oldest first */ 1 116 1 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 1 118 1 119 1 120 /* Definition of a single redistribution (forwarding) of a message */ 1 121 1 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 1 123 2 envelope like message_envelope, 1 124 2 header, 1 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 1 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 1 127 3 from pointer, /* -> address list of authors of this redistribution */ 1 128 3 to pointer, /* -> address list of recipients of the redistribution */ 1 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 1 130 1 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 1 132 based (message_redistribution.comment.text_ptr); 1 133 1 134 dcl message_redistribution_ptr pointer; 1 135 1 136 1 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 1 138 1 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 1 140 2 pad pointer, /* forces even word alignment */ 1 141 2 version character (8) unaligned, 1 142 2 redistribution like message_redistribution; 1 143 1 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 1 145 1 146 dcl message_redistribution_parameter_ptr pointer; 1 147 1 148 /* Definition of the list of user-defined fields in a message */ 1 149 1 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 1 151 2 version character (8) unaligned, 1 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 1 153 2 pad bit (36), 1 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 1 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 1 156 like message_user_field; /* the actual user-defined fields */ 1 157 1 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 1 159 1 160 1 161 /* Definition of a user defined message header field */ 1 162 1 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 1 164 2 header, 1 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 1 166 3 field_type fixed binary, /* type of data contained in this field */ 1 167 2 field_type_variable bit (144); /* the actual data (see below) */ 1 168 1 169 dcl message_user_field_ptr pointer; 1 170 1 171 1 172 /* Defined types of user defined fields */ 1 173 1 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 1 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 1 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 1 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 1 178 fixed binary static options (constant); 1 179 1 180 1 181 /* Structures used to access the data for the different types of user defined fields */ 1 182 1 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 1 184 2 header like message_user_field.header, 1 185 2 text like message_text_field; /* the message text */ 1 186 1 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 1 188 based (message_text_user_field.text.text_ptr); 1 189 1 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 1 191 2 header like message_user_field.header, 1 192 2 address_list_ptr pointer, /* -> the address list */ 1 193 2 pad bit (72); 1 194 1 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 1 196 2 header like message_user_field.header, 1 197 2 date_time fixed binary (71), /* the clock reading */ 1 198 2 pad bit (72); 1 199 1 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 1 201 2 header like message_user_field.header, 1 202 2 value fixed binary (35), /* the integer value */ 1 203 2 pad bit (108); 1 204 1 205 1 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 1 207 1 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 1 209 2 pad pointer, /* forces even word alignment */ 1 210 2 version character (8) unaligned, 1 211 2 user_field like message_user_field; 1 212 1 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 1 214 1 215 dcl message_user_field_parameter_ptr pointer; 1 216 1 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 1 218 1 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 1 220 2 version character (8) unaligned, 1 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 1 222 2 pad bit (36), 1 223 2 n_references fixed binary, /* # of references in this list */ 1 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 1 225 like message_reference; /* the references themselves */ 1 226 1 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 1 228 1 229 dcl message_references_list_ptr pointer; 1 230 1 231 1 232 /* Definition of a reference to another message */ 1 233 1 234 dcl 1 message_reference aligned based (message_reference_ptr), 1 235 2 message_id bit (72), /* ID of the other message */ 1 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 1 237 2 from pointer, /* -> address list of authors of the other message */ 1 238 2 subject like message_text_field; /* subject of the other message */ 1 239 1 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 1 241 based (message_reference.subject.text_ptr); 1 242 1 243 dcl message_reference_ptr pointer; 1 244 1 245 1 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 1 247 1 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 1 249 2 pad pointer, /* forces even word alignment */ 1 250 2 version character (8) unaligned, 1 251 2 reference like message_reference; 1 252 1 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 1 254 1 255 dcl message_reference_parameter_ptr pointer; 1 256 1 257 1 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 1 259 1 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 1 261 2 text_ptr pointer, /* -> the actual text */ 1 262 2 text_lth fixed binary (21), /* length of said text */ 1 263 2 flags, 1 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 1 265* OFF => the text will always be a single line */ 1 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 1 267 1 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 1 269 1 270 dcl message_text_field_ptr pointer; 1 271 1 272 /* Definition of a section of the body of a message */ 1 273 1 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 1 275 2 header, 1 276 3 section_type fixed binary, /* type of "text" stored in this section */ 1 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 1 278 2 section_type_variable bit (144); /* the actual data (see below) */ 1 279 1 280 dcl message_body_section_ptr pointer; 1 281 1 282 1 283 /* Defined types of message body sections */ 1 284 1 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 1 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 1 287 fixed binary static options (constant); 1 288 1 289 1 290 /* Structures used to access the data for the different types of message body sections */ 1 291 1 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 1 293 2 header like message_body_section.header, 1 294 2 text_ptr pointer, /* -> the text */ 1 295 2 text_lth fixed binary (21), /* length of said text in characters */ 1 296 2 reserved bit (36); /* for exclusive use of the mail system */ 1 297 1 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 1 299 based (message_preformatted_body_section.text_ptr); 1 300 1 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 1 302 2 header like message_body_section.header, 1 303 2 bit_string_ptr pointer, /* -> the bit string */ 1 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 1 305 2 reserved bit (36); /* for exclusive use of the mail system */ 1 306 1 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 1 308 based (message_bit_string_body_section.bit_string_ptr); 1 309 1 310 1 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 1 312 1 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 1 314 2 pad pointer, /* forces even word alignment */ 1 315 2 version character (8) unaligned, 1 316 2 section like message_body_section; 1 317 1 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 1 319 1 320 dcl message_body_section_parameter_ptr pointer; 1 321 1 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 153 154 2 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 2 2 /* Created: April 1983 by G. Palter */ 2 3 2 4 /* Definition of a mailbox as used by the Multics Mail System */ 2 5 2 6 dcl 1 mailbox aligned based (mailbox_ptr), 2 7 2 version character (8) unaligned, 2 8 2 reserved bit (144), /* for exclusive use of the mail system */ 2 9 2 mailbox_address pointer, /* mail system address of this mailbox */ 2 10 2 mailbox_dirname character (168) unaligned, /* directory containing this mailbox */ 2 11 2 mailbox_ename character (32) unaligned, /* entry name of this mailbox (includes ".mbx") */ 2 12 2 mailbox_type fixed binary, /* type of mailbox (see below) */ 2 13 2 mode bit (36), /* user's effective extended access to this mailbox */ 2 14 2 flags, 2 15 3 salvaged bit (1) unaligned, /* ON => this mailbox has been salvaged since last open */ 2 16 3 reserved bit (35) unaligned, /* for exclusive use of the mail system */ 2 17 2 message_selection_mode fixed binary, /* types of messages read: all/ordinary/interactive */ 2 18 2 sender_selection_mode fixed binary, /* whose messages were read: all/own/not-own */ 2 19 2 message_reading_level fixed binary, /* how much of each message read: keys/messages */ 2 20 2 n_messages fixed binary, /* total # of messages in this mailbox structure */ 2 21 2 n_ordinary_messages fixed binary, /* ... # of ordinary messages here */ 2 22 2 n_interactive_messages fixed binary, /* ... # of interactive messages here */ 2 23 2 n_deleted_messages fixed binary, /* ... # of messages here marked for later deletion */ 2 24 2 messages (mailbox_n_messages refer (mailbox.n_messages)), 2 25 3 key bit (72), /* unique key to read this message if not already read */ 2 26 3 message_ptr pointer; /* -> the message structure */ 2 27 2 28 dcl MAILBOX_VERSION_2 character (8) static options (constant) initial ("mlsmbx02"); 2 29 2 30 dcl mailbox_ptr pointer; 2 31 2 32 dcl mailbox_n_messages fixed binary; /* for exclusive use of the mail system */ 2 33 2 34 2 35 /* Types of mailboxes distinguished by the mail system */ 2 36 2 37 dcl (USER_DEFAULT_MAILBOX initial (1), /* the user's default mailbox for receiving mail */ 2 38 USER_LOGBOX initial (2), /* the user's logbox */ 2 39 SAVEBOX initial (3), /* a savebox */ 2 40 OTHER_MAILBOX initial (4)) /* any other type of mailbox */ 2 41 fixed binary static options (constant); 2 42 2 43 /* END INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 155 156 3 1 /* START OF* time_value.incl.pl1 * * * * * * * * */ 3 2 3 3 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 3 4 /* */ 3 5 /* Name: time_value.incl.pl1 */ 3 6 /* */ 3 7 /* This structure holds output from date_time_$from_clock */ 3 8 /* and input to date_time_$to_clock */ 3 9 /* (A clock value is a combination of a day portion and a time portion. */ 3 10 /* clock_days represents one part and clock_time the other.) */ 3 11 /* to_clock accepts "day" (as opposed to "time") data only in certain */ 3 12 /* combinations. This table shows with the *'s which fields may be present */ 3 13 /* together. All others must be zero. */ 3 14 /* +-1-+-2-+-3-+-4-+--------------+ */ 3 15 /* | * | * | | | year | In cases 1, 2, & 4, if day_in_week is */ 3 16 /* | * | | | | mm | present, it is used to verify the */ 3 17 /* | * | | | | dd | value converted. */ 3 18 /* | | | * | | fiscal_week | In case 3 it actually defines a day. */ 3 19 /* | | |(*)| | day_in_week | If not present, Monday is assumed. */ 3 20 /* | | * | | | day_in_year | */ 3 21 /* | | | | * | day_in_clock | */ 3 22 /* +-v-+-v-+-v-+-v-+--------------+ */ 3 23 /* | | | +-- clock_days = day_in_calendar */ 3 24 /* | | +------ clock_days = converted (fiscal_week,day_in_week) */ 3 25 /* | +---------- clock_days = converted (year,day_in_year) */ 3 26 /* +-------------- clock_days = converted (year,mm,dd) */ 3 27 /* */ 3 28 /* clock_time = converted (HH,MM,SS,UUUUUU) */ 3 29 /* */ 3 30 /* The zone adjustment may be in one of two forms: */ 3 31 /* if zone^="" then zone_index = INDEX_IN_time_info_OF (zone); */ 3 32 /* [ERROR if not found] */ 3 33 /* if zone="" & zone_index=0 then zone_index = time_defaults_$zone_index */ 3 34 /* After these two steps, if zone_index=0, it is an ERROR. */ 3 35 /* The value in time_info_ of zone_delta (zone_index) is used to adjust */ 3 36 /* clock_time. */ 3 37 /* */ 3 38 /* If leap_year^=0 it is an ERROR. All values are range checked, e.g. */ 3 39 /* year<0 or year>9999. Out-of-range is an ERROR. */ 3 40 /* */ 3 41 /* Refer to time_offset_.incl.pl1 for the structure used to input data to */ 3 42 /* date_time_$offset_to_clock. */ 3 43 /* */ 3 44 /* Status */ 3 45 /* */ 3 46 /* 0) Created by: J. Falksen - 06/20/78 */ 3 47 /* 1) Updated: jaf - 84-11-01 US & fw enlarged to bin(20) */ 3 48 /* */ 3 49 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 3 50 3 51 /* All values in this structure are zone adjusted, not GMT. */ 3 52 3 53 dcl 1 time_value aligned based(Ptime_value), 3 54 2 version char (8), 3 55 2 yc fixed bin, /* Year part of date (eg, 1978) */ 3 56 2 my fixed bin, /* Month part of date (eg, 7= July) */ 3 57 2 dm fixed bin, /* Day of month part of date (eg, 4) */ 3 58 2 Hd fixed bin, /* Hour of the day (eg, 18) */ 3 59 2 MH fixed bin, /* Minute of the hour (eg, 35) */ 3 60 2 SM fixed bin, /* Second of the minute (eg, 59) */ 3 61 2 US fixed bin (20), /* Microseconds in excess of second */ 3 62 2 fw fixed bin (20), /* the digits are yyyyww [OUT] */ 3 63 2 dw fixed bin, /* Day of the week (1=Mon, 7=Sun). */ 3 64 2 dy fixed bin, /* Day of the year */ 3 65 /* (eg, 12/31 = 365 or 366). */ 3 66 2 dc fixed bin(22), /* Day in calendar value */ 3 67 /* (eg, 1 = Jan 1, 0001). */ 3 68 2 Uc fixed bin(71), /* Microsecond in calendar value */ 3 69 /* (eg, 0 = 0001-01-01m) */ 3 70 2 za char (5), /* Zone abbreviation */ 3 71 2 zone_index fixed bin, /* Index in time_table_$zone_names, */ 3 72 /* of zone in which time expressed */ 3 73 2 leap_year fixed bin, /* 1- this is a leap year [OUT] */ 3 74 3 75 Ptime_value ptr, 3 76 Vtime_value_3 char(8) int static options(constant) init("timeval3"); 3 77 3 78 /* END OF* time_value.incl.pl1 * * * * * * * * */ 157 158 4 1 /* Created 06/17/81 by Suzanne Krupp */ 4 2 4 3 dcl n_messages fixed bin; 4 4 dcl MSG_STRUCT_VERSION_1 fixed bin int static options(constant) init(1); 4 5 4 6 dcl curr_msgsp ptr; 4 7 4 8 dcl 1 curr_msgs based(curr_msgsp), 4 9 2 version fixed bin, 4 10 2 count fixed bin, 4 11 2 numbers (n_messages refer(curr_msgs.count)) fixed bin; 4 12 4 13 dcl nonexist_msgsp ptr; 4 14 4 15 dcl 1 nonexist_msgs based(nonexist_msgsp), 4 16 2 version fixed bin, 4 17 2 count fixed bin, 4 18 2 numbers (n_messages refer(nonexist_msgs.count)) fixed bin; 4 19 4 20 dcl msg_structp ptr; 4 21 4 22 dcl 1 msg_struct based(msg_structp), 4 23 2 version fixed bin, 4 24 2 count fixed bin, 4 25 2 numbers(n_messages refer(msg_struct.count)) fixed bin; 160 5 1 /* BEGIN INCLUDE FILE ... xmail_prompts.incl.pl1 */ 5 2 5 3 /****^ HISTORY COMMENTS: 5 4* 1) change(85-03-06,Backs), approve(86-03-06,MCR7358), 5 5* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 5 6* Modified to add prompts for date selection. 5 7* END HISTORY COMMENTS */ 5 8 5 9 /* Created 06/17/81 by Suzanne Krupp */ 5 10 5 11 5 12 dcl (MSG_SELECT_PROMPT char(40) init("Which message(s) do you wish to select? "), 5 13 DEL_MSG_SELECT_PROMPT char(63) init ("Which message(s) do you wish to retrieve? (for list, enter ??) "), 5 14 NONEXIST_MSG char(66) init("The following messages either do not exist or have been discarded:"), 5 15 DEL_NONEXIST_MSG char(70) init("The following messages either do not exist or have NOT been discarded:"), 5 16 CURR_SET_MSG char(70) init("This means that the set of current messages consists of the following:"), 5 17 CURR_DEL_SET_MSG char(58) init("This means that the following messages will be retrieved:"), 5 18 USE_SPEC_SET_PROMPT char(45) init("Do you wish to use these as current messages?"), 5 19 SEARCH_STR_PROMPT char(11) init("Search for:"), 5 20 UNDELETE_FINISHED_MSG char(24) init("Message^a ^a retrieved."), 5 21 MSG_LIST_MSG char(17) init("List of messages:"), 5 22 DATE_1_PROMPT char(23) init("Earliest date in range:"), 5 23 DATE_2_PROMPT char(21) init("Latest date in range:"), 5 24 DEL_MSG_LIST_MSG char(27) init("List of discarded messages:")) 5 25 int static options(constant); 5 26 5 27 /* END INCLUDE FILE ... xmail_prompts.incl.pl1 */ 161 162 6 1 /* BEGIN INCLUDE FILE xmail_responses.incl.pl1 */ 6 2 6 3 /****^ HISTORY COMMENTS: 6 4* 1) change(86-02-07,Blair), approve(86-03-06,MCR7358), 6 5* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 6 6* 85-03-05 JG Backs: Modified to add a response of date. 6 7* 85-03-11 JG Backs: Modified to add short forms of keywords (a,l,p,f). 6 8* 85-03-14 JG Backs: Modified to add ASK, SET, and S. 6 9* 2) change(86-02-07,Blair), approve(86-03-06,MCR7358), 6 10* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 6 11* Modify to add SEEN and UNSEEN. 6 12* END HISTORY COMMENTS */ 6 13 6 14 /* Created 06/17/81 by Suzanne Krupp */ 6 15 6 16 dcl (QUESTION char(1) init("?"), 6 17 LIST char(2) init("??"), 6 18 A char(1) init("a"), 6 19 ALL char(3) init("all"), 6 20 ASK char(3) init("ask"), 6 21 DATE char(4) init("date"), 6 22 F char(1) init("f"), 6 23 FIRST char(5) init("first"), 6 24 L char(1) init("l"), 6 25 LAST char(4) init("last"), 6 26 N char (1) init ("n"), 6 27 NO char(2) init("no"), 6 28 NEXT char(4) init("next"), 6 29 NEW char(3) init("new"), 6 30 P char(1) init("p"), 6 31 PREV char(4) init("prev"), 6 32 S char(1) init("s"), 6 33 SEEN char (4) init("seen"), 6 34 SET char(3) init("set"), 6 35 SEARCH char(6) init("search"), 6 36 UNSEEN char (6) init("unseen"), 6 37 Y char (1) init ("y"), 6 38 YES char(3) init("yes")) 6 39 int static options(constant); 6 40 6 41 /* END INCLUDE FILE ... xmail_responses.incl.pl1 */ 163 164 7 1 /* BEGIN INCLUDE FILE xmail_help_infos.incl.pl1 */ 7 2 7 3 /****^ HISTORY COMMENTS: 7 4* 1) change(85-03-06,Backs), approve(86-03-06,MCR7358), 7 5* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 7 6* Modified to add date info. 7 7* END HISTORY COMMENTS */ 7 8 7 9 /* Created 06/18/81 by Suzanne Krupp */ 7 10 7 11 /* Help files and info entry points. */ 7 12 7 13 dcl (PROMPT_REPLIES_HELP char(28) init("xmail_prompt_replies.gi.info"), 7 14 GENERAL_HELP_HELP char(26) init("xmail_general_help.gi.info"), 7 15 GETTING_STARTED_HELP char(29) init("xmail_getting_started.gi.info"), 7 16 INITIAL_HELP char(26) init("xmail_initial_help.gi.info"), 7 17 MULTICS_MODE_HELP char(27) init("xmail_multics_mode_.gi.info"), 7 18 REVIEW_DEFAULTS_HELP char(29) init("xmail_Review_Defaults.gi.info")) 7 19 int static options(constant); 7 20 7 21 dcl (CREATE_MFILE_INFO char(19) init("creating_mail_files"), /* Prompt Infos */ 7 22 DEL_MSG_SELECT_INFO char(23) init("which_discarded_message"), 7 23 SEARCH_STR_INFO char(14) init("search_string"), 7 24 MSG_SELECT_INFO char(14) init("which_message"), 7 25 USE_SPEC_SET_INFO char(12) init("use_spec_set"), 7 26 GETTING_HELP_INFO char(12) init("getting_help"), 7 27 DATE_INFO char(14) init("date_selection"), 7 28 MORE_HELP_INFO char(9) init("more_help")) 7 29 int static options(constant); 7 30 7 31 /* END INCLUDE FILE ... xmail_help_infos.incl.pl1 */ 165 166 8 1 /* BEGIN INCLUDE FILE ... mlsys_search_options.incl.pl1 */ 8 2 /* Created: June 1983 by G. Palter */ 8 3 8 4 /* Options for the mlsys_utils_$search_message entrypoint */ 8 5 8 6 dcl 1 search_options aligned based (search_options_ptr), 8 7 2 version character (8) unaligned, 8 8 2 flags, 8 9 3 regexp_search bit (1) unaligned, /* ON => perform a qedx regular expression search; 8 10* OFF => perform an ordinary string search */ 8 11 3 case_insensitive bit (1) unaligned, /* ON => perform the search without regard to case */ 8 12 3 search_envelope bit (1) unaligned, /* ON => search the message envelope */ 8 13 3 search_header bit (1) unaligned, /* ON => search the message header */ 8 14 3 search_redistributions_list bit (1) unaligned, /* ON => search the redistributions list */ 8 15 3 search_body bit (1) unaligned, /* ON => search the message body */ 8 16 3 mbz bit (30) unaligned; /* must be set to ""b by the caller */ 8 17 8 18 dcl SEARCH_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlssrch2"); 8 19 8 20 dcl search_options_ptr pointer; 8 21 8 22 /* END INCLUDE FILE ... mlsys_search_options.incl.pl1 */ 167 168 9 1 /* BEGIN INCLUDE FILE: xmail_data.incl.pl1 */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(85-12-20,Blair), approve(86-03-06,MCR7358), 9 6* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 9 7* Modified 03/15/85 by Joanne Backs adding confirm_print flag. 9 8* 2) change(85-12-20,LJAdams), approve(86-03-06,MCR7358), 9 9* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 9 10* Adding switch to indicate request for menu display came from general help. 9 11* This is so general help menu will be displayed in top screen. 9 12* 3) change(86-01-10,Blair), approve(86-03-06,MCR7358), 9 13* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 9 14* Add switch to indicate whether or not it is permissible to process mail 9 15* in other users' mailboxes (foreign_mailbox). 9 16* 4) change(86-01-13,Blair), approve(86-03-06,MCR7358), 9 17* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 9 18* Add bit to indicate whether or not this is a true cleanup condition. 9 19* 5) change(86-02-06,Blair), approve(86-03-06,MCR7358), 9 20* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 9 21* Rearrange to group all the bit flags together in one word with a pad. 9 22* 6) change(86-03-05,Blair), approve(86-03-05,MCR7358), 9 23* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 9 24* Change value_seg ptr to value_seg_pathname to avoid the situation where 9 25* you keep around a pointer to a structure which no longer exists. 9 26* 7) change(87-01-16,Blair), approve(87-02-05,MCR7618), 9 27* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 9 28* Add a field to indicate whether or not we should process interactive msgs. 9 29* Increment version to 4.1 so default value will get set. 9 30* 8) change(87-02-13,Blair), approve(87-02-13,MCR7618), 9 31* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 9 32* Add a field to indicate whether or not we're processing a reply so that we 9 33* will be able to rebuild the screens properly after a disconnect occurs. 9 34* Error_list #114. 9 35* 9) change(88-07-26,Blair), approve(88-07-26,MCR7959), 9 36* audit(88-08-25,RBarstad), install(88-09-02,MR12.2-1098): 9 37* Add a bit to indicate whether or not the error segment had to be created 9 38* in the pdir (because we didn't have sma access to the mlsys_dir). 9 39* END HISTORY COMMENTS */ 9 40 9 41 9 42 /* Written 5/13/81 by Paul H. Kyzivat */ 9 43 /* Modified 12/16/81 by S. Krupp to delete unused parts of structure 9 44* and to add n_fkeys_used */ 9 45 /* Modified 12/14/82 by Dave Schimke to make the xmail version a 10 character 9 46* varying string. */ 9 47 /* Modified 09/12/83 by Dave Schimke adding interactive_msgs flag */ 9 48 /* Modified 09/14/83 by Dave Schimke adding moved_user_io */ 9 49 /* Modified 09/06/84 by Joanne Backs adding lists_as_menus flag */ 9 50 /* Modified 09/21/84 by Joanne Backs adding remove_menus flag */ 9 51 9 52 dcl xmail_data_ptr external static ptr init (null); 9 53 9 54 dcl 1 xmail_data aligned based (xmail_data_ptr), 9 55 2 mail_dir char (168) varying, 9 56 2 first_label label, 9 57 2 quit_label label, 9 58 2 value_seg_pathname char (168) varying, 9 59 2 moved_user_io ptr, 9 60 2 normal_usage char (80) unal, 9 61 2 function_key_info, 9 62 3 function_key_data_ptr ptr, 9 63 3 n_fkeys_used fixed bin, 9 64 2 actee, 9 65 3 person char(32) varying, 9 66 3 project char(32) varying, 9 67 2 flags aligned, 9 68 3 mail_in_incoming bit (1) unal, 9 69 3 lists_as_menus bit (1) unal, /* personalization */ 9 70 3 remove_menus bit (1) unal, /* personalization */ 9 71 3 confirm_print bit (1) unal, /* personalization */ 9 72 3 multics_mode bit (1) unal, /* personalization */ 9 73 3 interactive_msgs bit (1) unal, /* personalization */ 9 74 3 foreign_mailbox bit (1) unal, /* read others' mailboxes */ 9 75 3 general_help bit (1) unal, /* indicated requesting gen help*/ 9 76 3 cleanup_signalled bit (1) unal, /* on when true cleanup condition */ 9 77 3 msgs_as_mail bit (1) unal, /* on for include_msgs */ 9 78 3 reply_request bit (1) unal, /* on if we're doing a reply */ 9 79 3 error_seg_in_pdir bit (1) unal, /* on if the error_seg is in the pdir */ 9 80 3 pad bit (24) unal; 9 81 9 82 9 83 9 84 dcl xmail_version char(10) var static options(constant) init("4.1"); 9 85 9 86 /* END INCLUDE FILE: xmail_data.incl.pl1 */ 169 170 171 /* Initialization */ 172 173 want_deleted_msgs, want_seen_messages, switch_on, switch_off, list_any = "0"b; 174 P_switch_on_off = "00"b; 175 P_seen_msgs = null; 176 177 call init (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 178 179 need_answer = "1"b; 180 do while (need_answer); 181 182 call xmail_get_str_ ((MSG_SELECT_PROMPT), DUMMY_ANSWER_ARRAY, PROMPT_REPLIES_HELP, MSG_SELECT_INFO, line); 183 184 code, count = 0; 185 curr_msgsp, nonexist_msgsp = null; 186 187 /* Look to see if more messages are in the mailbox. */ 188 189 call mail_system_$read_new_messages (mailbox_ptr, n_new_msgs, (0), (0), code); 190 if code ^= 0 & code ^= mlsys_et_$no_more_messages 191 then call xmail_error_$no_code (code, ME_CHAR, "q", "Unable to look for new messages. This is an internal programming error."); 192 193 hold_code = code; 194 code = 0; 195 196 if line = A | line = ALL | line = SEEN | line = UNSEEN | line = NEW 197 then call alloc_msg_struct (mailbox.n_messages, curr_msgsp); 198 199 if line = ALL | line = A 200 then call all_current (count); 201 else if line = FIRST | line = F 202 then call first_current (); 203 else if line = LAST | line = L 204 then call last_current (); 205 else if line = NEXT | line = N 206 then call next_current (P_curr_msgsp); 207 else if line = PREV | line = P 208 then call prev_current (P_curr_msgsp); 209 else if line = NEW 210 then call new_since_last_seen (count); 211 else if line = SEARCH 212 then call search (code); 213 else if line = SEEN 214 then call seen_current (count); 215 else if line = UNSEEN 216 then call unseen_current (count); 217 else if line = DATE 218 then call date_search (code); 219 /* else if index (line, ":") > 0 220* then call interpret_range (line, code); 221* else if verify (line, "0123456789 ") = 0 222* then call interpret_list (line, code); */ 223 else if line = LIST 224 then code = xmail_err_$list_requested; 225 else call interpret_list (line,code); 226 227 if code = 0 /* Everything ok */ 228 then do; 229 if line = A | line = ALL | line = NEW | line = SEEN | line = UNSEEN 230 then curr_msgs.count = count; 231 need_answer = "0"b; 232 if ^(switch_on | switch_off) 233 then call ioa_$rsnnl ("^(^d ^)", P_pos_line, unused_return_length, curr_msgs.numbers); 234 end; 235 else if code = xmail_err_$list_requested /* User wanted a list */ 236 then do; 237 call ioa_ ("^/^a", MSG_LIST_MSG); 238 call xmail_list_msgs_ (mailbox_ptr, P_curr_msgsp, iox_$user_output); 239 end; 240 else do; /* Something went wrong */ 241 call com_err_$suppress_name (code, ME_CHAR); 242 if code = xmail_err_$some_msgs_exist 243 then do; 244 if want_some () 245 then do; 246 need_answer = "0"b; 247 call ioa_$rsnnl ("^(^d ^)", P_pos_line, unused_return_length, curr_msgs.numbers); 248 end; 249 end; 250 else if code ^= xmail_err_$invalid_range & 251 code ^= xmail_err_$invalid_list & 252 code ^= xmail_err_$no_msgs_exist & 253 code ^= xmail_err_$str_not_found & 254 code ^= xmail_err_$date_not_found & 255 code ^= xmail_err_$bad_response 256 then call xmail_error_$no_code (code, ME_CHAR, "q", "Unable to interpret response. This is an internal programming error."); 257 end; 258 259 if need_answer /* get rid of what we don't need. */ 260 then if curr_msgsp ^= null then free curr_msgs; 261 if nonexist_msgsp ^= null then free nonexist_msgs; 262 263 end; /* do while */ 264 265 if switch_on | switch_off then P_seen_msgs = curr_msgsp; 266 else 267 call use_spec_msgs (P_curr_msgsp, curr_msgsp); 268 269 if switch_on then P_switch_on_off = "10"b; 270 if switch_off then P_switch_on_off = "01"b; 271 272 return; 273 274 275 /* ENTRYPOINTS */ 276 277 all: entry (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 278 279 dcl msg_count fixed bin; 280 281 want_deleted_msgs = "0"b; 282 msg_count = 0; 283 call init (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 284 call alloc_msg_struct (mailbox.n_messages, curr_msgsp); 285 call all_current (msg_count); 286 P_pos_line = "all"; 287 call use_spec_msgs (P_curr_msgsp, curr_msgsp); 288 289 return; /* all */ 290 291 new: entry (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 292 293 want_deleted_msgs = "0"b; 294 295 call xmail_validate_$mbx (P_mailbox_ptr, code); 296 if code ^= 0 297 then call xmail_error_$no_code (code, ME_CHAR, "q", "Invalid mailbox structure. This is an internal programming error."); 298 299 if P_curr_msgsp ^= null 300 then do; 301 call xmail_validate_$curr_msgs (P_curr_msgsp, code); 302 if code ^= 0 303 then call xmail_error_$no_code (code, ME_CHAR, "q", "Invalid message structure. This is an internal programming error."); 304 end; 305 306 mailbox_ptr = P_mailbox_ptr; 307 area_ptr = get_system_free_area_ (); 308 309 if mailbox.n_messages = 0 310 then do; 311 call use_spec_msgs (P_curr_msgsp, null); 312 P_pos_line = "NONE"; 313 call xmail_error_$code_first (xmail_err_$mailbox_empty, ME_CHAR, "i"); 314 end; 315 316 call mail_system_$read_new_messages (mailbox_ptr, n_new_msgs, (0), (0), code); 317 if code ^= 0 & code ^= mlsys_et_$no_more_messages 318 then call xmail_error_$no_code (code, ME_CHAR, "q", "Unable to look for new messages. This is an internal programming error."); 319 320 call new_current (n_new_msgs, code); 321 call ioa_$rsnnl ("^(^d ^)", P_pos_line, unused_return_length, curr_msgs.numbers); 322 /* P_pos_line = "newly arrived"; */ 323 call use_spec_msgs (P_curr_msgsp, curr_msgsp); 324 325 return; /* first */ 326 327 first: entry (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 328 329 want_deleted_msgs = "0"b; 330 331 call init (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 332 call first_current (); 333 P_pos_line = ltrim (rtrim (char (curr_msgs.numbers (1)))); 334 call use_spec_msgs (P_curr_msgsp, curr_msgsp); 335 336 return; /* first */ 337 338 last: entry (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 339 340 want_deleted_msgs = "0"b; 341 342 call init (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 343 call last_current (); 344 P_pos_line = ltrim (rtrim (char (curr_msgs.numbers (1)))); 345 call use_spec_msgs (P_curr_msgsp, curr_msgsp); 346 347 return; /* last */ 348 349 next: entry (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 350 351 want_deleted_msgs = "0"b; 352 353 call init (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 354 call next_current (P_curr_msgsp); 355 P_pos_line = ltrim (rtrim (char (curr_msgs.numbers (1)))); 356 call use_spec_msgs (P_curr_msgsp, curr_msgsp); 357 358 return; /* next */ 359 360 prev: entry (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 361 362 want_deleted_msgs = "0"b; 363 364 call init (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 365 call prev_current (P_curr_msgsp); 366 P_pos_line = ltrim (rtrim (char (curr_msgs.numbers (1)))); 367 call use_spec_msgs (P_curr_msgsp, curr_msgsp); 368 369 return; /* prev */ 370 371 deleted: entry (P_mailbox_ptr, P_deleted_msgsp, P_flavor); 372 373 dcl P_flavor char (*) parameter; 374 dcl count fixed bin; 375 376 count = 0; 377 want_deleted_msgs = "1"b; 378 switch_on, switch_off = "0"b; 379 P_deleted_msgsp = null; 380 381 call xmail_validate_$mbx (P_mailbox_ptr, code); 382 if code ^= 0 383 then call xmail_error_$no_code (code, ME_CHAR, "q", "Invalid mailbox structure. This is an internal programming error."); 384 385 if P_deleted_msgsp ^= null 386 then do; 387 call xmail_validate_$curr_msgs (P_deleted_msgsp, code); 388 if code ^= 0 389 then call xmail_error_$no_code (code, ME_CHAR, "q", "Invalid message structure. This is an internal programming error."); 390 end; 391 392 mailbox_ptr = P_mailbox_ptr; 393 area_ptr = get_system_free_area_ (); 394 395 if mailbox.n_deleted_messages <= 0 396 then do; 397 if ^xmail_data.cleanup_signalled 398 then call ioa_ ("There are no discarded messages."); 399 P_deleted_msgsp = null (); 400 return; 401 end; 402 if P_flavor ^= "" 403 then do; 404 line = P_flavor; 405 prompt_sw = "0"b; 406 end; 407 else prompt_sw = "1"b; 408 need_answer = "1"b; 409 410 do while (need_answer); 411 if xmail_data.cleanup_signalled then do; 412 prompt_sw = "0"b; 413 line = ALL; 414 end; 415 if prompt_sw 416 then call xmail_get_str_ ((DEL_MSG_SELECT_PROMPT), DUMMY_ANSWER_ARRAY, PROMPT_REPLIES_HELP, DEL_MSG_SELECT_INFO, line); 417 418 prompt_sw = "1"b; 419 code = 0; 420 curr_msgsp, nonexist_msgsp = null; 421 422 if line = ALL | line = A | line = NEW | line = SEEN | line = UNSEEN 423 then call alloc_msg_struct (mailbox.n_messages, curr_msgsp); 424 425 if line = ALL | line = A 426 then do; 427 count = 0; 428 call all_current (count); 429 curr_msgs.count = count; 430 end; 431 else if line = FIRST | line = F 432 then call first_current (); 433 else if line = LAST | line = L 434 then call last_current (); 435 /* else if index (line, ":") > 0 436* then call interpret_range (line, code); 437* else if verify (line, "0123456789 ") = 0 438* then call interpret_list (line, code); */ 439 else if line = LIST 440 then code = xmail_err_$list_requested; 441 else call interpret_list (line,code); 442 443 if code = 0 444 then need_answer = "0"b; 445 else if code = xmail_err_$list_requested 446 then do; /* User requested a list */ 447 count = 0; 448 call alloc_msg_struct (mailbox.n_messages, curr_msgsp); 449 call all_current (count); 450 curr_msgsp -> curr_msgs.count = count; 451 call ioa_ ("^/^a^/", DEL_MSG_LIST_MSG); 452 call xmail_list_msgs_$selected (mailbox_ptr, curr_msgsp, iox_$user_output); 453 end; 454 else do; 455 call com_err_$suppress_name (code, ME_CHAR); 456 if code = xmail_err_$some_del_msgs_exist 457 then do; 458 if want_some () 459 then need_answer = "0"b; 460 end; 461 else if code ^= xmail_err_$invalid_range & 462 code ^= xmail_err_$invalid_list & 463 code ^= xmail_err_$no_msgs_exist & 464 code ^= xmail_err_$bad_response 465 then call xmail_error_$no_code (code, ME_CHAR, "q", "Unable to interpret user response. This is an internal programming error."); 466 end; 467 468 if need_answer 469 then if curr_msgsp ^= null 470 then free curr_msgs; 471 if nonexist_msgsp ^= null 472 then free nonexist_msgs; 473 474 end; 475 476 P_deleted_msgsp = curr_msgsp; 477 478 return; /* deleted */ 479 480 replace_curr: entry (P_curr_msgsp, P_spec_msgsp, P_pos_line); 481 482 call use_spec_msgs (P_curr_msgsp, P_spec_msgsp); 483 call ioa_$rsnnl ("^(^d ^)", P_pos_line, unused_return_length, P_curr_msgsp -> curr_msgs.numbers); 484 485 return; /* replace_curr */ 486 487 488 /* INTERNAL PROCEDURES */ 489 490 init: proc (P_mailbox_ptr, P_curr_msgsp, P_pos_line); 491 492 dcl (P_mailbox_ptr, P_curr_msgsp) ptr; 493 dcl P_pos_line char (*); 494 495 dcl code fixed bin (35); 496 497 498 call xmail_validate_$mbx (P_mailbox_ptr, code); 499 if code ^= 0 500 then call xmail_error_$no_code (code, ME_CHAR, "q", "Invalid mailbox structure. This is an internal programming error."); 501 502 if P_curr_msgsp = null 503 then ; 504 else do; 505 call xmail_validate_$curr_msgs (P_curr_msgsp, code); 506 if code ^= 0 507 then call xmail_error_$no_code (code, ME_CHAR, "q", "Invalid message structure. This is an internal programming error."); 508 end; 509 510 mailbox_ptr = P_mailbox_ptr; 511 area_ptr = get_system_free_area_ (); 512 513 if mailbox.n_messages = 0 514 then do; 515 call use_spec_msgs (P_curr_msgsp, null); 516 P_pos_line = "NONE"; 517 go to INIT_EXIT; 518 end; 519 520 if mailbox.n_messages <= mailbox.n_deleted_messages 521 then do; 522 call use_spec_msgs (P_curr_msgsp, null); 523 P_pos_line = "NONE"; 524 call xmail_error_$no_code (code, ME_CHAR, "i"); 525 end; 526 527 INIT_EXIT: return; 528 end init; 529 530 all_current: proc (P_count); 531 532 dcl P_count fixed bin; 533 dcl i, count fixed bin; 534 535 count = P_count; 536 537 do i = 1 to mailbox.n_messages; 538 if want_deleted_msgs = msg_deleted (i) 539 then if ^already_specified (i, curr_msgsp) 540 then call add_to_msg_struct (curr_msgsp, count, i); 541 end; 542 543 P_count = count; 544 545 end all_current; 546 547 first_current: proc (); 548 549 call alloc_msg_struct (1, curr_msgsp); 550 551 if want_deleted_msgs 552 then curr_msgs.numbers (1) = first_deleted (); 553 else curr_msgs.numbers (1) = first_existing (); 554 555 end first_current; 556 557 last_current: proc (); 558 559 call alloc_msg_struct (1, curr_msgsp); 560 561 if want_deleted_msgs 562 then curr_msgs.numbers (1) = last_deleted (); 563 else curr_msgs.numbers (1) = last_existing (); 564 565 end last_current; 566 567 next_current: proc (P_curr_msgsp); 568 569 dcl P_curr_msgsp ptr; 570 571 dcl found bit (1) aligned; 572 dcl (i, highest) fixed bin; 573 574 highest = 0; 575 if P_curr_msgsp ^= null 576 then do i = 1 to P_curr_msgsp -> curr_msgs.count; 577 if highest < P_curr_msgsp -> curr_msgs.numbers (i) 578 then highest = P_curr_msgsp -> curr_msgs.numbers (i); 579 end; 580 581 582 call alloc_msg_struct (1, curr_msgsp); 583 found = "0"b; 584 585 do i = highest + 1 to mailbox.n_messages while (^found); 586 if ^msg_deleted (i) 587 then do; 588 curr_msgs.numbers (1) = i; 589 found = "1"b; 590 end; 591 end; 592 593 do i = 1 to highest while (^found); 594 if ^msg_deleted (i) 595 then do; 596 curr_msgs.numbers (1) = i; 597 found = "1"b; 598 end; 599 end; 600 601 end next_current; 602 603 prev_current: proc (P_curr_msgsp); 604 605 dcl P_curr_msgsp ptr; 606 607 dcl found bit (1) aligned; 608 dcl (i, lowest) fixed bin; 609 610 lowest = mailbox.n_messages + 1; 611 612 if P_curr_msgsp ^= null 613 then do i = 1 to P_curr_msgsp -> curr_msgs.count; 614 if lowest > P_curr_msgsp -> curr_msgs.numbers (i) 615 then lowest = P_curr_msgsp -> curr_msgs.numbers (i); 616 end; 617 618 call alloc_msg_struct (1, curr_msgsp); 619 found = "0"b; 620 621 do i = lowest - 1 to 1 by -1 while (^found); 622 if ^msg_deleted (i) 623 then do; 624 curr_msgs.numbers (1) = i; 625 found = "1"b; 626 end; 627 end; 628 629 do i = mailbox.n_messages to lowest by -1 while (^found); 630 if ^msg_deleted (i) 631 then do; 632 curr_msgs.numbers (1) = i; 633 found = "1"b; 634 end; 635 end; 636 637 end prev_current; 638 639 new_current: proc (P_new_msgs, P_code); 640 641 dcl P_code fixed bin (35); 642 dcl count fixed bin; 643 dcl i fixed bin; 644 dcl P_new_msgs fixed bin; 645 646 647 if P_code = mlsys_et_$no_more_messages 648 then call xmail_error_$code_first (P_code, ME_CHAR, "i"); 649 650 call alloc_msg_struct (P_new_msgs, curr_msgsp); 651 count = 0; 652 653 do i = mailbox.n_messages - P_new_msgs + 1 to mailbox.n_messages; 654 call mail_system_$read_message (mailbox_ptr, i, code); 655 if code ^= 0 656 then call xmail_error_$no_code (code, ME_CHAR, "l", "Unable to read message ^d. This is a n internal programming error.", i); 657 /* message_ptr = mailbox.messages (i). message_ptr; */ 658 call add_to_msg_struct (curr_msgsp, count, i); 659 end; 660 661 end new_current; 662 663 new_since_last_seen: proc (P_count); 664 665 dcl P_count fixed bin; 666 dcl (count, i, first_unseen, last_seen) fixed bin; 667 668 want_seen_messages = "0"b; 669 count = P_count; 670 671 do i = mailbox.n_messages by -1 to 1 while (want_seen_messages = msg_seen (i)); 672 end; 673 last_seen = i; 674 675 if last_seen < mailbox.n_messages then do; 676 first_unseen = last_seen +1; 677 do i = first_unseen to mailbox.n_messages; 678 if ^already_specified (i, curr_msgsp) 679 then call add_to_msg_struct (curr_msgsp, count, i); 680 end; 681 end; 682 P_count = count; 683 684 if count = 0 685 then call xmail_error_$no_code ((0), ME_CHAR, "i", "There are no ""new"" messages in this mailbox."); 686 687 end new_since_last_seen; 688 689 seen_current: proc(P_count); 690 691 dcl P_count fixed bin; 692 dcl (count,i) fixed bin; 693 694 want_seen_messages = "1"b; 695 count = P_count; 696 697 do i = 1 to mailbox.n_messages; 698 if want_seen_messages = msg_seen(i) 699 then if ^already_specified (i, curr_msgsp) 700 then call add_to_msg_struct (curr_msgsp, count, i); 701 end; 702 703 P_count = count; 704 705 if count = 0 706 then call xmail_error_$no_code ((0),ME_CHAR,"i","There are no ""seen"" messages in this mailbox."); 707 end seen_current; 708 709 unseen_current: proc (P_count); 710 711 dcl P_count fixed bin; 712 dcl (count,i) fixed bin; 713 714 want_seen_messages = "0"b; 715 count = P_count; 716 717 do i = 1 to mailbox.n_messages; 718 if want_seen_messages = msg_seen (i) 719 then if ^already_specified (i, curr_msgsp) 720 then call add_to_msg_struct (curr_msgsp, count ,i); 721 end; 722 723 P_count = count; 724 725 if count = 0 726 then call xmail_error_$no_code ((0), ME_CHAR, "i", "There are no ""unseen"" messages in this mailbox."); 727 728 end unseen_current; 729 730 interpret_range: proc (P_str,P_left_num, P_right_num, P_code); 731 732 dcl P_str char (*) var; 733 dcl P_left_num fixed bin; 734 dcl P_right_num fixed bin; 735 dcl P_code fixed bin (35); 736 737 dcl (curr_count, nonexist_count) fixed bin; 738 dcl (left_num, right_num) fixed bin; 739 dcl (left_str, right_str) char (length (P_str)) var; 740 dcl code fixed bin (35); 741 742 P_code = 0; 743 left_str = ltrim (rtrim (before (P_str, ":"))); 744 right_str = ltrim (rtrim (after (P_str, ":"))); 745 746 if left_str = "" | right_str = "" 747 then do; 748 P_code = xmail_err_$invalid_range; 749 go to RANGE_EXIT; 750 end; 751 752 left_num = get_num ((left_str), code); 753 if code ^= 0 754 then do; 755 P_code = xmail_err_$invalid_range; 756 go to RANGE_EXIT; 757 end; 758 759 right_num = get_num ((right_str), code); 760 761 if code ^= 0 762 then do; 763 P_code = xmail_err_$invalid_range; 764 go to RANGE_EXIT; 765 end; 766 767 if left_num > right_num 768 then do; 769 P_code = xmail_err_$invalid_range; 770 go to RANGE_EXIT; 771 end; 772 773 /* None of the specified messages exist. */ 774 775 if right_num < 1 | left_num > mailbox.n_messages 776 then do; 777 P_code = xmail_err_$no_msgs_exist; 778 go to RANGE_EXIT; 779 end; 780 781 /* Test if right number is more that the total messages */ 782 783 if right_num > mailbox.n_messages 784 then do; 785 P_code = xmail_err_$invalid_range; 786 go to RANGE_EXIT; 787 end; 788 789 P_left_num = left_num; 790 P_right_num = right_num; 791 792 if ^list_any then do; 793 curr_count, nonexist_count = 0; 794 call alloc_msg_struct (right_num - left_num + 1, curr_msgsp); 795 call alloc_msg_struct (right_num - left_num + 1, nonexist_msgsp); 796 797 do i = left_num to right_num; 798 if want_deleted_msgs = msg_deleted (i) 799 then call add_to_msg_struct (curr_msgsp, curr_count, i); 800 else call add_to_msg_struct (nonexist_msgsp, nonexist_count, i); 801 end; 802 803 call set_counts (curr_count, nonexist_count, P_code); 804 end; 805 806 807 RANGE_EXIT: return; 808 end interpret_range; 809 810 interpret_list: proc (P_str, P_code); 811 812 dcl P_str char (*) var; 813 dcl P_code fixed bin (35); 814 815 dcl (copy_str) char (length (P_str)) var; 816 dcl (curr_count, nonexist_count) fixed bin; 817 dcl (msg_num, n_tokens, token_index) fixed bin; 818 dcl code fixed bin (35); 819 dcl first_token fixed bin; 820 dcl now_in_struct bit (1) aligned; 821 dcl have_range bit (1) aligned; 822 dcl left_num fixed bin; 823 dcl right_num fixed bin; 824 dcl get_temp_segment_ entry (char(*), ptr, fixed bin(35)); 825 dcl release_temp_segment_ entry (char(*), ptr, fixed bin(35)); 826 dcl token_array_ptr ptr; 827 dcl 1 token_array based (token_array_ptr) aligned, 828 2 Ntokens fixed bin, 829 2 token (0 refer (Ntokens)) char (10) var; 830 831 token_array_ptr = null; 832 have_range = "0"b; 833 list_any = "1"b; 834 left_num, right_num, n_tokens, first_token = 0; 835 P_code, code = 0; 836 copy_str = P_str; 837 838 call get_temp_segment_ (ME_CHAR, token_array_ptr, code); 839 if code ^= 0 then do; 840 code = xmail_err_$int_prog_err; 841 goto LIST_EXIT; 842 end; 843 844 on cleanup begin; 845 if token_array_ptr ^= null 846 then call release_temp_segment_ (ME_CHAR, token_array_ptr, (0)); 847 end; 848 849 Ntokens = 1; 850 token_array.token(Ntokens) = next_token (copy_str); 851 do while (token_array.token(Ntokens) ^= ""); 852 if index (token_array.token(Ntokens) ,":") > 0 then do; 853 call interpret_range ((token_array.token(Ntokens)), left_num, right_num, P_code); 854 if P_code ^= 0 855 then goto LIST_EXIT; 856 n_tokens = n_tokens + (right_num - left_num); 857 end; 858 859 Ntokens = Ntokens + 1; 860 token_array.token(Ntokens) = next_token (copy_str); 861 end; 862 863 /* what have we got here? */ 864 865 first_token = 1; 866 if token_array.token(1) = "switch_on" | token_array.token(1) = "swn" 867 then if token_array.token(2) = SEEN 868 then do; 869 switch_on = "1"b; 870 if Ntokens > 2 then first_token = 3; 871 end; 872 else do; 873 P_code = xmail_err_$bad_response; 874 goto LIST_EXIT; 875 end; 876 877 if token_array.token(1) = "switch_off" | token_array.token(1) = "swf" 878 then if token_array.token(2) = SEEN 879 then do; 880 switch_off = "1"b; 881 if Ntokens > 2 then first_token = 3; 882 end; 883 else do; 884 P_code = xmail_err_$bad_response; 885 goto LIST_EXIT; 886 end; 887 888 if (switch_on | switch_off) 889 then n_tokens = (Ntokens + n_tokens - 3); 890 else n_tokens = (Ntokens + n_tokens -1); /* take off the "" */ 891 892 do token_index = first_token to Ntokens; 893 if token_array.token(token_index) = SEEN | 894 token_array.token(token_index) = ALL | token_array.token(token_index) = A | 895 token_array.token(token_index) = NEW | 896 token_array.token(token_index) = UNSEEN 897 then n_tokens = mailbox.n_messages; 898 end; 899 900 call alloc_msg_struct (n_tokens, curr_msgsp); 901 call alloc_msg_struct (n_tokens, nonexist_msgsp); 902 curr_count, nonexist_count = 0; 903 904 do token_index = first_token to Ntokens while (token_array.token(token_index) ^= ""); 905 now_in_struct = "0"b; 906 if index (token_array.token(token_index), ":") > 0 /* we have a range */ 907 then have_range = "1"b; 908 else 909 if token_array.token(token_index) = LAST | token_array.token(token_index) = L /* want the last msg */ 910 then msg_num = get_num((token_array.token(token_index)), code); 911 else 912 if token_array.token(token_index) = FIRST | token_array.token(token_index) = F /* want the first msg */ 913 then msg_num = get_num((token_array.token(token_index)), code); 914 else 915 if verify (token_array.token(token_index), "0123456789") = 0 /* single msg number */ 916 then msg_num = cv_dec_check_ ((token_array.token(token_index)), code); 917 else 918 if token_array.token(token_index) = NEW then do; 919 call new_since_last_seen (curr_count); 920 now_in_struct = "1"b; 921 end; 922 else 923 if token_array.token(token_index) = SEEN then do; 924 call seen_current (curr_count); 925 now_in_struct = "1"b; 926 end; 927 else 928 if token_array.token(token_index) = UNSEEN then do; 929 call unseen_current (curr_count); 930 now_in_struct = "1"b; 931 end; 932 else 933 if token_array.token(token_index) = ALL | token_array.token(token_index) = A then do; 934 call all_current (curr_count); 935 now_in_struct = "1"b; 936 end; 937 else code = xmail_err_$invalid_list; 938 939 if code ^= 0 940 then do; 941 P_code = xmail_err_$invalid_list; 942 go to LIST_EXIT; 943 end; 944 if have_range 945 then do msg_num = left_num to right_num; 946 if ^already_specified (msg_num, curr_msgsp) 947 then if want_deleted_msgs = msg_deleted (msg_num) 948 then call add_to_msg_struct (curr_msgsp, curr_count, msg_num); 949 else call add_to_msg_struct (nonexist_msgsp, nonexist_count ,msg_num); 950 have_range = "0"b; 951 end; 952 else 953 if ^now_in_struct & (^already_specified (msg_num, curr_msgsp)) 954 then do; 955 if msg_num >= 1 & msg_num <= mailbox.n_messages 956 then do; 957 if want_deleted_msgs = msg_deleted (msg_num) 958 then call add_to_msg_struct (curr_msgsp, curr_count, msg_num); 959 else call add_to_msg_struct (nonexist_msgsp, nonexist_count, msg_num); 960 end; 961 else call add_to_msg_struct (nonexist_msgsp, nonexist_count, msg_num); 962 end; 963 964 end; 965 966 curr_msgs.count = curr_count; 967 call set_counts (curr_count, nonexist_count, P_code); 968 969 LIST_EXIT: 970 if token_array_ptr ^= null then do; 971 call release_temp_segment_ (ME_CHAR, token_array_ptr, (0)); 972 token_array_ptr = null; 973 end; 974 return; 975 end interpret_list; 976 977 search: proc (P_code); 978 979 dcl P_code fixed bin (35); 980 dcl search_str char (256) var; 981 982 P_code = 0; 983 984 search_str = ""; 985 do while (search_str = ""); 986 call xmail_get_str_ ((SEARCH_STR_PROMPT), DUMMY_ANSWER_ARRAY, PROMPT_REPLIES_HELP, SEARCH_STR_INFO, search_str); 987 end; 988 989 call search_current ((search_str)); 990 991 if curr_msgs.count = 0 992 then P_code = xmail_err_$str_not_found; 993 994 return; 995 end search; 996 997 search_current: proc (P_search_str); 998 999 dcl P_search_str char (*); 1000 1001 dcl i fixed bin; 1002 dcl count fixed bin; 1003 dcl msg_has_str bit (1) aligned; 1004 1005 dcl 1 auto_search_options like search_options; 1006 1007 auto_search_options.version = SEARCH_OPTIONS_VERSION_2; 1008 auto_search_options.regexp_search = "0"b; 1009 auto_search_options.case_insensitive = "0"b; 1010 auto_search_options.search_envelope = "1"b; 1011 auto_search_options.search_header = "1"b; 1012 auto_search_options.search_redistributions_list = "1"b; 1013 auto_search_options.search_body = "1"b; 1014 auto_search_options.mbz = "0"b; 1015 1016 call alloc_msg_struct (mailbox.n_messages, curr_msgsp); 1017 count = 0; 1018 1019 do i = 1 to mailbox.n_messages; 1020 if ^msg_deleted (i) 1021 then do; 1022 if mailbox.messages (i).message_ptr = null 1023 then do; 1024 call mail_system_$read_message (mailbox_ptr, i, code); 1025 if code ^= 0 1026 then call xmail_error_$no_code (code, ME_CHAR, "l", "Unable to read message ^d. This is an internal programming error.", i); 1027 end; 1028 message_ptr = mailbox.messages (i).message_ptr; 1029 msg_has_str = mlsys_utils_$search_message (message_ptr, P_search_str, addr (auto_search_options), code); 1030 if code = 0 1031 then do; 1032 if msg_has_str 1033 then call add_to_msg_struct (curr_msgsp, count, i); 1034 end; 1035 end; 1036 end; /* do i = ... */ 1037 1038 curr_msgs.count = count; 1039 return; 1040 end search_current; 1041 1042 date_search: proc (P_code); 1043 1044 dcl P_code fixed bin (35); /* output */ 1045 1046 dcl ds_ascii_date_1 char (22); /* formatted */ 1047 dcl ds_ascii_date_2 char (22); /* formatted */ 1048 dcl ds_clock_value_1 fixed bin (71); /* converted */ 1049 dcl ds_clock_value_2 fixed bin (71); /* converted */ 1050 dcl ds_date_str_1 char (256) var; /* user input */ 1051 dcl ds_date_str_2 char (256) var; /* user input */ 1052 1053 /* BEGIN */ 1054 1055 P_code = 0; 1056 RESTART: 1057 ds_clock_value_1 = 0; 1058 ds_clock_value_2 = 0; 1059 1060 do while (ds_clock_value_1 = 0); 1061 ds_date_str_1 = ""; 1062 call xmail_get_str_ ((DATE_1_PROMPT), DUMMY_ANSWER_ARRAY, PROMPT_REPLIES_HELP, DATE_INFO, ds_date_str_1); 1063 if ds_date_str_1 = "" /* 1st date null, check 2nd */ 1064 then go to DATE2; 1065 else ds_clock_value_1 = convert_date ((ds_date_str_1)); 1066 end; 1067 1068 DATE2: 1069 do while (ds_clock_value_2 = 0); 1070 ds_date_str_2 = ""; 1071 call xmail_get_str_ ((DATE_2_PROMPT), DUMMY_ANSWER_ARRAY, PROMPT_REPLIES_HELP, DATE_INFO, ds_date_str_2); 1072 1073 /* If there are two dates entered, make the 2nd date with 23:59 time */ 1074 1075 if ds_date_str_1 ^= "" & ds_date_str_2 ^= "" 1076 then do; 1077 ds_clock_value_2 = convert_date ((ds_date_str_2)); 1078 if ds_clock_value_2 ^= 0 1079 then ds_clock_value_2 = ds_clock_value_2 + ONE_DAY; 1080 end; 1081 1082 /* If both dates are null, use current date with 00:00 time as 1st clock 1083* date. The 2nd date will be current date with 23:59 time. */ 1084 1085 else if ds_date_str_1 = "" & ds_date_str_2 = "" /* both null */ 1086 then do; 1087 ds_date_str_1 = TODAY; 1088 ds_clock_value_1 = convert_date ((ds_date_str_1)); 1089 if ds_clock_value_1 ^= 0 1090 then ds_clock_value_2 = ds_clock_value_1 + ONE_DAY; /* add one day minus one microsecond to get the full day. */ 1091 end; 1092 1093 /* If either dates are null, make the entered date the 1st clock 1094* date with 00:00 time. The 2nd clock date will be the same 1095* date with 23:59 time. */ 1096 1097 else do; 1098 if ds_date_str_1 = "" & ds_date_str_2 ^= "" /* 1st null */ 1099 then ds_clock_value_1 = convert_date ((ds_date_str_2)); 1100 else ds_clock_value_1 = convert_date ((ds_date_str_1)); 1101 1102 if ds_clock_value_1 ^= 0 1103 then ds_clock_value_2 = ds_clock_value_1 + ONE_DAY; /* add one day minus one microsecond to get the full day of the 1st date */ 1104 end; 1105 end; /* do while */ 1106 1107 /* Convert new clock values to ascii date strings for message to user */ 1108 1109 ds_ascii_date_1 = date_time_$format ("^my/^dm/^yc ^Hd:^MH ^xxxxza", (ds_clock_value_1), "", ""); 1110 ds_ascii_date_2 = date_time_$format ("^my/^dm/^yc ^Hd:^MH ^xxxxza", (ds_clock_value_2), "", ""); 1111 1112 if ds_clock_value_1 >= ds_clock_value_2 /* check if dates backwards */ 1113 then do; 1114 call ioa_ ("The range of ^/ ""^a"" thru ""^a"" is empty or backwards.", ds_ascii_date_1, ds_ascii_date_2); 1115 go to RESTART; 1116 end; 1117 1118 call ioa_ ("Selecting messages from ^/ ""^a"" thru ""^a"".", ds_ascii_date_1, ds_ascii_date_2); 1119 call timer_manager_$sleep (8, SECONDS); /* let user read */ 1120 1121 call date_current ((ds_clock_value_1), (ds_clock_value_2)); 1122 1123 if curr_msgs.count = 0 1124 then P_code = xmail_err_$date_not_found; 1125 1126 return; 1127 end date_search; 1128 1129 /* Internal function to convert a date string into a clock value 1130* and clear out the time to 00:00 (midnight). */ 1131 1132 convert_date: proc (P_date_string) returns (fixed bin (71)); 1133 1134 dcl P_date_string char (*); /* input */ 1135 1136 dcl cd_clock_value fixed bin (71); /* output */ 1137 dcl cd_code fixed bin (35); 1138 1139 cd_clock_value = 0; 1140 Ptime_value = null; /* clear ptr */ 1141 1142 call convert_date_to_binary_ ((P_date_string), cd_clock_value, cd_code); 1143 if cd_code ^= 0 1144 then do; 1145 call ioa_ ("There is something wrong with the date or time as entered. ^/ Try again or use ? to get help."); 1146 go to cd_EXIT; 1147 end; 1148 1149 /* Zero out the time */ 1150 1151 allocate time_value in (based_area); 1152 time_value.version = Vtime_value_3; 1153 1154 call date_time_$from_clock ((cd_clock_value), "", addr (time_value), cd_code); 1155 if cd_code ^= 0 1156 then do; 1157 call ioa_ ("There is a problem with converting the date entered. ^/ Try again or use ? to get help."); 1158 go to cd_EXIT; 1159 end; 1160 1161 /* Zero out all but day in calendar value to get date with zero time */ 1162 1163 time_value.yc = 0; 1164 time_value.my = 0; 1165 time_value.dm = 0; 1166 time_value.Hd = 0; 1167 time_value.MH = 0; 1168 time_value.SM = 0; 1169 time_value.US = 0; 1170 time_value.fw = 0; 1171 time_value.dw = 0; 1172 time_value.dy = 0; 1173 time_value.Uc = 0; 1174 time_value.leap_year = 0; 1175 1176 call date_time_$to_clock (addr (time_value), cd_clock_value, cd_code); 1177 if cd_code ^= 0 1178 then do; 1179 call ioa_ ("There is a problem with converting the date entered. ^/ Try again or use ? to get help."); 1180 go to cd_EXIT; 1181 end; 1182 1183 cd_EXIT: 1184 if Ptime_value ^= null then free time_value; /* free if allocated */ 1185 return (cd_clock_value); 1186 end convert_date; 1187 1188 date_current: proc (P_clock_value_1, P_clock_value_2); 1189 1190 dcl P_clock_value_1 fixed bin (71); /* input */ 1191 dcl P_clock_value_2 fixed bin (71); /* input */ 1192 1193 dcl i fixed bin; 1194 dcl dc_count fixed bin; 1195 1196 call alloc_msg_struct (mailbox.n_messages, curr_msgsp); 1197 dc_count = 0; 1198 1199 do i = 1 to mailbox.n_messages; 1200 if ^msg_deleted (i) 1201 then do; 1202 if mailbox.messages (i).message_ptr = null 1203 then do; 1204 call mail_system_$read_message (mailbox_ptr, i, code); 1205 if code ^= 0 1206 then call xmail_error_$no_code (code, ME_CHAR, "l", "Unable to read message ^d. This is an internal programming error.", i); 1207 end; 1208 message_ptr = mailbox.messages (i).message_ptr; 1209 1210 /* Test if date created in message header is between 1st and 2nd date/time */ 1211 1212 if (message.date_time_created >= P_clock_value_1) & (message.date_time_created <= P_clock_value_2) 1213 1214 then call add_to_msg_struct (curr_msgsp, dc_count, i); 1215 end; 1216 end; /* do i = ... */ 1217 1218 curr_msgs.count = dc_count; 1219 return; 1220 end date_current; 1221 1222 next_token: proc (P_token_list) returns (char (*) var); 1223 1224 dcl P_token_list char (*) var; 1225 dcl token char (length (P_token_list)) var; 1226 1227 token = before (ltrim (P_token_list), " "); 1228 P_token_list = after (P_token_list, token); 1229 1230 return (token); 1231 1232 end next_token; 1233 1234 add_to_msg_struct: proc (P_msg_structp, P_count, P_msg_num); 1235 1236 dcl P_msg_structp ptr; 1237 dcl (P_count, P_msg_num) fixed bin; 1238 1239 msg_structp = P_msg_structp; 1240 P_count = P_count + 1; 1241 msg_struct.numbers (P_count) = P_msg_num; 1242 1243 return; 1244 end add_to_msg_struct; 1245 1246 use_spec_msgs: proc (P_curr_msgsp, P_spec_msgsp); 1247 1248 dcl (P_curr_msgsp, P_spec_msgsp) ptr; 1249 1250 if P_curr_msgsp ^= null then free P_curr_msgsp -> curr_msgs; 1251 P_curr_msgsp = P_spec_msgsp; 1252 1253 return; 1254 end use_spec_msgs; 1255 1256 want_some: proc () returns (bit (1)); 1257 1258 dcl yes_sw bit (1) aligned; 1259 1260 call ioa_ ("^[^s^]^a", want_deleted_msgs, CURR_SET_MSG, CURR_DEL_SET_MSG); 1261 call ioa_ ("^(^-^d^/^)", curr_msgs.numbers); 1262 1263 call xmail_get_str_$yes_no ((USE_SPEC_SET_PROMPT), yes_sw); 1264 1265 return (yes_sw); 1266 1267 end want_some; 1268 1269 msg_deleted: proc (P_msg_num) returns (bit (1)); 1270 1271 dcl P_msg_num fixed bin; 1272 1273 if mailbox.messages (P_msg_num).message_ptr = null 1274 then do; 1275 call mail_system_$read_message (mailbox_ptr, P_msg_num, code); 1276 if code ^= 0 1277 then call xmail_error_$no_code (code, ME_CHAR, "l", "Unable to read message ^d. This is an internal programming error.", P_msg_num); 1278 end; 1279 message_ptr = mailbox.messages (P_msg_num).message_ptr; 1280 if message.marked_for_deletion 1281 then return ("1"b); 1282 else return ("0"b); 1283 1284 end msg_deleted; 1285 1286 msg_seen: proc (P_msg_num) returns (bit (1)); 1287 1288 dcl P_msg_num fixed bin; 1289 1290 if mailbox.messages (P_msg_num).message_ptr = null 1291 then do; 1292 call mail_system_$read_message (mailbox_ptr, P_msg_num, code); 1293 if code ^= 0 1294 then call xmail_error_$no_code ( code, ME_CHAR, "l", "Unable to read message ^d. This is an interna; 1295 programming error.", P_msg_num); 1296 end; 1297 message_ptr = mailbox.messages (P_msg_num).message_ptr; 1298 if message.seen then return ("1"b); 1299 else return ("0"b); 1300 1301 end msg_seen; 1302 1303 set_counts: proc (P_curr_count, P_nonexist_count, P_code); 1304 1305 dcl (P_curr_count, P_nonexist_count) fixed bin; 1306 dcl P_code fixed bin (35); 1307 1308 P_code = 0; 1309 1310 if P_curr_count = 0 /* None of the specified messages exist. */ 1311 then do; 1312 free curr_msgs; 1313 free nonexist_msgs; 1314 P_code = xmail_err_$no_msgs_exist; 1315 return; 1316 end; 1317 else curr_msgs.count = P_curr_count; 1318 1319 if P_nonexist_count = 0 /* All exist. */ 1320 then free nonexist_msgs; 1321 else do; /* Some exist. */ 1322 nonexist_msgs.count = P_nonexist_count; 1323 if want_deleted_msgs 1324 then P_code = xmail_err_$some_del_msgs_exist; 1325 else P_code = xmail_err_$some_msgs_exist; 1326 end; 1327 1328 return; 1329 end set_counts; 1330 1331 alloc_msg_struct: proc (P_n_messages, P_msg_structp); 1332 1333 dcl P_n_messages fixed bin; 1334 dcl P_msg_structp ptr; 1335 1336 n_messages = P_n_messages; 1337 allocate msg_struct in (based_area); 1338 msg_struct.version = MSG_STRUCT_VERSION_1; 1339 P_msg_structp = msg_structp; 1340 1341 return; 1342 end alloc_msg_struct; 1343 1344 get_num: proc (P_str, P_code) returns (fixed bin); 1345 1346 dcl P_code fixed bin (35); 1347 dcl P_str char (*); 1348 1349 P_code = 0; 1350 1351 if P_str = FIRST | P_str = F 1352 then do; 1353 if want_deleted_msgs 1354 then return (first_deleted ()); 1355 else return (first_existing ()); 1356 end; 1357 else if P_str = LAST | P_str = L 1358 then do; 1359 if want_deleted_msgs 1360 then return (last_deleted ()); 1361 else return (last_existing ()); 1362 end; 1363 else return (cv_dec_check_ (P_str, P_code)); 1364 1365 end get_num; 1366 1367 first_existing: proc () returns (fixed bin); 1368 1369 dcl existing fixed bin; 1370 dcl i fixed bin; 1371 1372 existing = 0; 1373 do i = 1 to mailbox.n_messages while (existing = 0); 1374 if ^msg_deleted (i) then existing = i; 1375 end; 1376 1377 return (existing); 1378 1379 end first_existing; 1380 1381 first_deleted: proc () returns (fixed bin); 1382 1383 dcl deleted fixed bin; 1384 dcl i fixed bin; 1385 1386 deleted = 0; 1387 do i = 1 to mailbox.n_messages while (deleted = 0); 1388 if msg_deleted (i) then deleted = i; 1389 end; 1390 1391 return (deleted); 1392 1393 end first_deleted; 1394 1395 last_existing: proc () returns (fixed bin); 1396 1397 dcl existing fixed bin; 1398 dcl i fixed bin; 1399 1400 existing = 0; 1401 do i = mailbox.n_messages to -1 by -1 while (existing = 0); 1402 if ^msg_deleted (i) then existing = i; 1403 end; 1404 1405 return (existing); 1406 1407 end last_existing; 1408 1409 last_deleted: proc () returns (fixed bin); 1410 1411 dcl deleted fixed bin; 1412 dcl i fixed bin; 1413 1414 deleted = 0; 1415 do i = mailbox.n_messages to 1 by -1 while (deleted = 0); 1416 if msg_deleted (i) then deleted = i; 1417 end; 1418 1419 return (deleted); 1420 1421 end last_deleted; 1422 1423 already_specified: proc (P_msg_num, P_curr_msgsp) returns (bit (1)); 1424 1425 dcl i fixed bin; 1426 dcl P_curr_msgsp ptr; 1427 dcl P_msg_num fixed bin; 1428 1429 do i = 1 to P_curr_msgsp -> curr_msgs.count; 1430 if P_msg_num = P_curr_msgsp -> curr_msgs.numbers (i) 1431 then return ("1"b); 1432 end; 1433 1434 return ("0"b); 1435 1436 end already_specified; 1437 1438 end xmail_select_msgs_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/02/88 0745.0 xmail_select_msgs_.pl1 >spec>install>MR12.2-1098>xmail_select_msgs_.pl1 153 1 05/22/86 1225.8 mlsys_message.incl.pl1 >ldd>include>mlsys_message.incl.pl1 155 2 10/27/83 2104.2 mlsys_mailbox.incl.pl1 >ldd>include>mlsys_mailbox.incl.pl1 157 3 12/21/84 1239.8 time_value.incl.pl1 >ldd>include>time_value.incl.pl1 159 4 06/08/82 1329.4 xmail_curr_msg_info.incl.pl1 >ldd>include>xmail_curr_msg_info.incl.pl1 161 5 05/28/86 1117.7 xmail_prompts.incl.pl1 >ldd>include>xmail_prompts.incl.pl1 163 6 05/28/86 1117.7 xmail_responses.incl.pl1 >ldd>include>xmail_responses.incl.pl1 165 7 05/28/86 1117.7 xmail_help_infos.incl.pl1 >ldd>include>xmail_help_infos.incl.pl1 167 8 10/27/83 2104.2 mlsys_search_options.incl.pl1 >ldd>include>mlsys_search_options.incl.pl1 169 9 09/02/88 0743.4 xmail_data.incl.pl1 >spec>install>MR12.2-1098>xmail_data.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. A 013470 constant char(1) initial packed unaligned dcl 6-16 ref 196 199 229 422 425 893 932 ALL 000275 constant char(3) initial packed unaligned dcl 6-16 ref 196 199 229 413 422 425 893 932 CURR_DEL_SET_MSG 000120 constant char(58) initial packed unaligned dcl 5-12 set ref 1260* CURR_SET_MSG 000137 constant char(70) initial packed unaligned dcl 5-12 set ref 1260* DATE 000050 constant char(4) initial packed unaligned dcl 6-16 ref 217 DATE_1_PROMPT 000066 constant char(23) initial packed unaligned dcl 5-12 ref 1062 DATE_2_PROMPT 000060 constant char(21) initial packed unaligned dcl 5-12 ref 1071 DATE_INFO 000002 constant char(14) initial packed unaligned dcl 7-21 set ref 1062* 1071* DEL_MSG_LIST_MSG 000051 constant char(27) initial packed unaligned dcl 5-12 set ref 451* DEL_MSG_SELECT_INFO 000016 constant char(23) initial packed unaligned dcl 7-21 set ref 415* DEL_MSG_SELECT_PROMPT 000161 constant char(63) initial packed unaligned dcl 5-12 ref 415 DUMMY_ANSWER_ARRAY 000232 constant varying char(1) initial array dcl 102 set ref 182* 415* 986* 1062* 1071* F 013467 constant char(1) initial packed unaligned dcl 6-16 ref 201 431 911 1351 FIRST 000046 constant char(5) initial packed unaligned dcl 6-16 ref 201 431 911 1351 Hd 5 based fixed bin(17,0) level 2 dcl 3-53 set ref 1166* L 013466 constant char(1) initial packed unaligned dcl 6-16 ref 203 433 908 1357 LAST 000044 constant char(4) initial packed unaligned dcl 6-16 ref 203 433 908 1357 LIST 013471 constant char(2) initial packed unaligned dcl 6-16 ref 223 439 ME_CHAR 000224 constant char(17) initial packed unaligned dcl 103 set ref 190* 241* 250* 296* 302* 313* 317* 382* 388* 455* 461* 499* 506* 524* 647* 655* 684* 705* 725* 838* 845* 971* 1025* 1205* 1276* 1293* MH 6 based fixed bin(17,0) level 2 dcl 3-53 set ref 1167* MSG_LIST_MSG 000074 constant char(17) initial packed unaligned dcl 5-12 set ref 237* MSG_SELECT_INFO 000006 constant char(14) initial packed unaligned dcl 7-21 set ref 182* MSG_SELECT_PROMPT 000201 constant char(40) initial packed unaligned dcl 5-12 ref 182 MSG_STRUCT_VERSION_1 constant fixed bin(17,0) initial dcl 4-4 ref 1338 N 013465 constant char(1) initial packed unaligned dcl 6-16 ref 205 NEW 000042 constant char(3) initial packed unaligned dcl 6-16 ref 196 209 229 422 893 917 NEXT 000043 constant char(4) initial packed unaligned dcl 6-16 ref 205 Ntokens based fixed bin(17,0) level 2 dcl 827 set ref 849* 850 851 852 853 859* 859 860 870 881 888 890 892 904 ONE_DAY 000222 constant fixed bin(71,0) initial dcl 104 ref 1078 1089 1102 P 013464 constant char(1) initial packed unaligned dcl 6-16 ref 207 PREV 000041 constant char(4) initial packed unaligned dcl 6-16 ref 207 PROMPT_REPLIES_HELP 000024 constant char(28) initial packed unaligned dcl 7-13 set ref 182* 415* 986* 1062* 1071* P_clock_value_1 parameter fixed bin(71,0) dcl 1190 ref 1188 1212 P_clock_value_2 parameter fixed bin(71,0) dcl 1191 ref 1188 1212 P_code parameter fixed bin(35,0) dcl 979 in procedure "search" set ref 977 982* 991* P_code parameter fixed bin(35,0) dcl 813 in procedure "interpret_list" set ref 810 835* 853* 854 873* 884* 941* 967* P_code parameter fixed bin(35,0) dcl 735 in procedure "interpret_range" set ref 730 742* 748* 755* 763* 769* 777* 785* 803* P_code parameter fixed bin(35,0) dcl 641 in procedure "new_current" set ref 639 647 647* P_code parameter fixed bin(35,0) dcl 1306 in procedure "set_counts" set ref 1303 1308* 1314* 1323* 1325* P_code parameter fixed bin(35,0) dcl 1346 in procedure "get_num" set ref 1344 1349* 1363* P_code parameter fixed bin(35,0) dcl 1044 in procedure "date_search" set ref 1042 1055* 1123* P_count parameter fixed bin(17,0) dcl 711 in procedure "unseen_current" set ref 709 715 723* P_count parameter fixed bin(17,0) dcl 532 in procedure "all_current" set ref 530 535 543* P_count parameter fixed bin(17,0) dcl 691 in procedure "seen_current" set ref 689 695 703* P_count parameter fixed bin(17,0) dcl 665 in procedure "new_since_last_seen" set ref 663 669 682* P_count parameter fixed bin(17,0) dcl 1237 in procedure "add_to_msg_struct" set ref 1234 1240* 1240 1241 P_curr_count parameter fixed bin(17,0) dcl 1305 ref 1303 1310 1317 P_curr_msgsp parameter pointer dcl 492 in procedure "init" set ref 490 502 505* 515* 522* P_curr_msgsp parameter pointer dcl 1248 in procedure "use_spec_msgs" set ref 1246 1250 1250 1251* P_curr_msgsp parameter pointer dcl 605 in procedure "prev_current" ref 603 612 612 614 614 P_curr_msgsp parameter pointer dcl 569 in procedure "next_current" ref 567 575 575 577 577 P_curr_msgsp parameter pointer dcl 61 in procedure "xmail_select_msgs_" set ref 42 177* 205* 207* 238* 266* 277 283* 287* 291 299 301* 311* 323* 327 331* 334* 338 342* 345* 349 353* 354* 356* 360 364* 365* 367* 480 482* 483 P_curr_msgsp parameter pointer dcl 1426 in procedure "already_specified" ref 1423 1429 1430 P_date_string parameter char packed unaligned dcl 1134 ref 1132 1142 P_deleted_msgsp parameter pointer dcl 62 set ref 371 379* 385 387* 399* 476* P_flavor parameter char packed unaligned dcl 373 ref 371 402 404 P_left_num parameter fixed bin(17,0) dcl 733 set ref 730 789* P_mailbox_ptr parameter pointer dcl 63 in procedure "xmail_select_msgs_" set ref 42 177* 277 283* 291 295* 306 327 331* 338 342* 349 353* 360 364* 371 381* 392 P_mailbox_ptr parameter pointer dcl 492 in procedure "init" set ref 490 498* 510 P_msg_num parameter fixed bin(17,0) dcl 1288 in procedure "msg_seen" set ref 1286 1290 1292* 1293* 1297 P_msg_num parameter fixed bin(17,0) dcl 1427 in procedure "already_specified" ref 1423 1430 P_msg_num parameter fixed bin(17,0) dcl 1237 in procedure "add_to_msg_struct" ref 1234 1241 P_msg_num parameter fixed bin(17,0) dcl 1271 in procedure "msg_deleted" set ref 1269 1273 1275* 1276* 1279 P_msg_structp parameter pointer dcl 1236 in procedure "add_to_msg_struct" ref 1234 1239 P_msg_structp parameter pointer dcl 1334 in procedure "alloc_msg_struct" set ref 1331 1339* P_n_messages parameter fixed bin(17,0) dcl 1333 ref 1331 1336 P_new_msgs parameter fixed bin(17,0) dcl 644 set ref 639 650* 653 P_nonexist_count parameter fixed bin(17,0) dcl 1305 ref 1303 1319 1322 P_pos_line parameter char packed unaligned dcl 64 in procedure "xmail_select_msgs_" set ref 42 177* 232* 247* 277 283* 286* 291 312* 321* 327 331* 333* 338 342* 344* 349 353* 355* 360 364* 366* 480 483* P_pos_line parameter char packed unaligned dcl 493 in procedure "init" set ref 490 516* 523* P_right_num parameter fixed bin(17,0) dcl 734 set ref 730 790* P_search_str parameter char packed unaligned dcl 999 set ref 997 1029* P_seen_msgs parameter pointer dcl 67 set ref 42 175* 265* P_spec_msgsp parameter pointer dcl 1248 in procedure "use_spec_msgs" ref 1246 1251 P_spec_msgsp parameter pointer dcl 65 in procedure "xmail_select_msgs_" set ref 480 482* P_str parameter varying char dcl 812 in procedure "interpret_list" ref 810 815 836 P_str parameter char packed unaligned dcl 1347 in procedure "get_num" set ref 1344 1351 1351 1357 1357 1363* P_str parameter varying char dcl 732 in procedure "interpret_range" ref 730 739 739 743 744 P_switch_on_off parameter bit(2) dcl 66 set ref 42 174* 269* 270* P_token_list parameter varying char dcl 1224 set ref 1222 1225 1227 1228* 1228 Ptime_value 000224 automatic pointer dcl 3-53 set ref 1140* 1151* 1152 1154 1154 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1176 1176 1183 1183 SEARCH 000036 constant char(6) initial packed unaligned dcl 6-16 ref 211 SEARCH_OPTIONS_VERSION_2 000000 constant char(8) initial packed unaligned dcl 8-18 ref 1007 SEARCH_STR_INFO 000012 constant char(14) initial packed unaligned dcl 7-21 set ref 986* SEARCH_STR_PROMPT 000101 constant char(11) initial packed unaligned dcl 5-12 ref 986 SECONDS 000220 constant bit(2) initial packed unaligned dcl 105 set ref 1119* SEEN 000040 constant char(4) initial packed unaligned dcl 6-16 ref 196 213 229 422 866 877 893 922 SM 7 based fixed bin(17,0) level 2 dcl 3-53 set ref 1168* TODAY 000216 constant char(5) initial packed unaligned dcl 106 ref 1087 UNSEEN 000034 constant char(6) initial packed unaligned dcl 6-16 ref 196 215 229 422 893 927 US 10 based fixed bin(20,0) level 2 dcl 3-53 set ref 1169* USE_SPEC_SET_PROMPT 000104 constant char(45) initial packed unaligned dcl 5-12 ref 1263 Uc 16 based fixed bin(71,0) level 2 dcl 3-53 set ref 1173* Vtime_value_3 000214 constant char(8) initial packed unaligned dcl 3-53 ref 1152 addr builtin function dcl 94 ref 1029 1029 1154 1154 1176 1176 after builtin function dcl 94 ref 744 1228 area_ptr 000100 automatic pointer dcl 72 set ref 307* 393* 511* 1151 1337 auto_search_options 000103 automatic structure level 1 packed packed unaligned dcl 1005 set ref 1029 1029 based_area based area(1024) dcl 90 ref 1151 1337 before builtin function dcl 94 ref 743 1227 case_insensitive 2(01) 000103 automatic bit(1) level 3 packed packed unaligned dcl 1005 set ref 1009* cd_clock_value 000100 automatic fixed bin(71,0) dcl 1136 set ref 1139* 1142* 1154 1176* 1185 cd_code 000102 automatic fixed bin(35,0) dcl 1137 set ref 1142* 1143 1154* 1155 1176* 1177 char builtin function dcl 94 ref 333 344 355 366 cleanup 000000 stack reference condition dcl 98 ref 844 cleanup_signalled 213(08) based bit(1) level 3 packed packed unaligned dcl 9-54 ref 397 411 code 000254 automatic fixed bin(35,0) dcl 495 in procedure "init" set ref 498* 499 499* 505* 506 506* 524* code 000102 automatic fixed bin(35,0) dcl 73 in procedure "xmail_select_msgs_" set ref 184* 189* 190 190 190* 193 194* 211* 217* 223* 225* 227 235 241* 242 250 250 250 250 250 250 250* 295* 296 296* 301* 302 302* 316* 317 317 317* 320* 381* 382 382* 387* 388 388* 419* 439* 441* 443 445 455* 456 461 461 461 461 461* 654* 655 655* 1024* 1025 1025* 1029* 1030 1204* 1205 1205* 1275* 1276 1276* 1292* 1293 1293* code 000104 automatic fixed bin(35,0) dcl 740 in procedure "interpret_range" set ref 752* 753 759* 761 code 000105 automatic fixed bin(35,0) dcl 818 in procedure "interpret_list" set ref 835* 838* 839 840* 908* 911* 914* 937* 939 com_err_$suppress_name 000010 constant entry external dcl 111 ref 241 455 convert_date_to_binary_ 000012 constant entry external dcl 112 ref 1142 copy_str 000100 automatic varying char dcl 815 set ref 836* 850* 860* count 000330 automatic fixed bin(17,0) dcl 642 in procedure "new_current" set ref 651* 658* count 1 based fixed bin(17,0) level 2 in structure "curr_msgs" dcl 4-8 in procedure "xmail_select_msgs_" set ref 229* 232 247 259 321 429* 450* 468 483 575 612 966* 991 1038* 1123 1218* 1250 1261 1312 1317* 1429 count 1 based fixed bin(17,0) level 2 in structure "msg_struct" dcl 4-22 in procedure "xmail_select_msgs_" set ref 1337* count 000100 automatic fixed bin(17,0) dcl 692 in procedure "seen_current" set ref 695* 698* 703 705 count 000100 automatic fixed bin(17,0) dcl 666 in procedure "new_since_last_seen" set ref 669* 678* 682 684 count 1 based fixed bin(17,0) level 2 in structure "nonexist_msgs" dcl 4-15 in procedure "xmail_select_msgs_" set ref 261 471 1313 1319 1322* count 000101 automatic fixed bin(17,0) dcl 1002 in procedure "search_current" set ref 1017* 1032* 1038 count 000101 automatic fixed bin(17,0) dcl 533 in procedure "all_current" set ref 535* 538* 543 count 000237 automatic fixed bin(17,0) dcl 374 in procedure "xmail_select_msgs_" set ref 184* 199* 209* 213* 215* 229 376* 427* 428* 429 447* 449* 450 count 000100 automatic fixed bin(17,0) dcl 712 in procedure "unseen_current" set ref 715* 718* 723 725 curr_count 000100 automatic fixed bin(17,0) dcl 737 in procedure "interpret_range" set ref 793* 798* 803* curr_count 000100 automatic fixed bin(17,0) dcl 816 in procedure "interpret_list" set ref 902* 919* 924* 929* 934* 946* 957* 966 967* curr_msgs based structure level 1 unaligned dcl 4-8 set ref 259 468 1250 1312 curr_msgsp 000230 automatic pointer dcl 4-6 set ref 185* 196* 229 232 247 259 259 265 266* 284* 287* 321 323* 333 334* 344 345* 355 356* 366 367* 420* 422* 429 448* 450 452* 468 468 476 538* 538* 549* 551 553 559* 561 563 582* 588 596 618* 624 632 650* 658* 678* 678* 698* 698* 718* 718* 794* 798* 900* 946* 946* 952* 957* 966 991 1016* 1032* 1038 1123 1196* 1212* 1218 1261 1312 1317 cv_dec_check_ 000014 constant entry external dcl 113 ref 914 1363 date_time_$format 000016 constant entry external dcl 114 ref 1109 1110 date_time_$from_clock 000020 constant entry external dcl 115 ref 1154 date_time_$to_clock 000022 constant entry external dcl 116 ref 1176 date_time_created 34 based fixed bin(71,0) level 3 dcl 1-15 ref 1212 1212 dc_count 000703 automatic fixed bin(17,0) dcl 1194 set ref 1197* 1212* 1218 deleted 000100 automatic fixed bin(17,0) dcl 1383 in procedure "first_deleted" set ref 1386* 1387 1388* 1391 deleted 000100 automatic fixed bin(17,0) dcl 1411 in procedure "last_deleted" set ref 1414* 1415 1416* 1419 dm 4 based fixed bin(17,0) level 2 dcl 3-53 set ref 1165* ds_ascii_date_1 000452 automatic char(22) packed unaligned dcl 1046 set ref 1109* 1114* 1118* ds_ascii_date_2 000460 automatic char(22) packed unaligned dcl 1047 set ref 1110* 1114* 1118* ds_clock_value_1 000466 automatic fixed bin(71,0) dcl 1048 set ref 1056* 1060 1065* 1088* 1089 1089 1098* 1100* 1102 1102 1109 1112 1121 ds_clock_value_2 000470 automatic fixed bin(71,0) dcl 1049 set ref 1058* 1068 1077* 1078 1078* 1078 1089* 1102* 1110 1112 1121 ds_date_str_1 000472 automatic varying char(256) dcl 1050 set ref 1061* 1062* 1063 1065 1075 1085 1087* 1088 1098 1100 ds_date_str_2 000573 automatic varying char(256) dcl 1051 set ref 1070* 1071* 1075 1077 1085 1098 1098 dw 12 based fixed bin(17,0) level 2 dcl 3-53 set ref 1171* dy 13 based fixed bin(17,0) level 2 dcl 3-53 set ref 1172* existing 000100 automatic fixed bin(17,0) dcl 1369 in procedure "first_existing" set ref 1372* 1373 1374* 1377 existing 000100 automatic fixed bin(17,0) dcl 1397 in procedure "last_existing" set ref 1400* 1401 1402* 1405 first_token 000106 automatic fixed bin(17,0) dcl 819 set ref 834* 865* 870* 881* 892 904 first_unseen 000102 automatic fixed bin(17,0) dcl 666 set ref 676* 677 flags 12 based structure level 2 in structure "message" dcl 1-15 in procedure "xmail_select_msgs_" flags 213 based structure level 2 in structure "xmail_data" dcl 9-54 in procedure "xmail_select_msgs_" flags 2 000103 automatic structure level 2 in structure "auto_search_options" packed packed unaligned dcl 1005 in procedure "search_current" found 000314 automatic bit(1) dcl 607 in procedure "prev_current" set ref 619* 621 625* 629 633* found 000300 automatic bit(1) dcl 571 in procedure "next_current" set ref 583* 585 589* 593 597* fw 11 based fixed bin(20,0) level 2 dcl 3-53 set ref 1170* get_system_free_area_ 000024 constant entry external dcl 117 ref 307 393 511 get_temp_segment_ 000116 constant entry external dcl 824 ref 838 have_range 000110 automatic bit(1) dcl 821 set ref 832* 906* 944 950* header 4 based structure level 3 in structure "message_user_field_parameter" dcl 1-208 in procedure "xmail_select_msgs_" header 64 based structure array level 4 in structure "message" dcl 1-15 in procedure "xmail_select_msgs_" header based structure level 2 in structure "message_user_field" dcl 1-163 in procedure "xmail_select_msgs_" header based structure level 2 in structure "message_body_section" dcl 1-274 in procedure "xmail_select_msgs_" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 1-313 in procedure "xmail_select_msgs_" header 10 based structure array level 3 in structure "message_user_fields_list" dcl 1-150 in procedure "xmail_select_msgs_" header 30 based structure level 2 in structure "message" dcl 1-15 in procedure "xmail_select_msgs_" highest 000302 automatic fixed bin(17,0) dcl 572 set ref 574* 577 577* 585 593 hold_code 000103 automatic fixed bin(35,0) dcl 74 set ref 193* i 000702 automatic fixed bin(17,0) dcl 1193 in procedure "date_current" set ref 1199* 1200* 1202 1204* 1205* 1208 1212* i 000104 automatic fixed bin(17,0) dcl 75 in procedure "xmail_select_msgs_" set ref 797* 798* 798* 800* i 000100 automatic fixed bin(17,0) dcl 1425 in procedure "already_specified" set ref 1429* 1430* i 000101 automatic fixed bin(17,0) dcl 1384 in procedure "first_deleted" set ref 1387* 1388* 1388* i 000101 automatic fixed bin(17,0) dcl 1398 in procedure "last_existing" set ref 1401* 1402* 1402* i 000315 automatic fixed bin(17,0) dcl 608 in procedure "prev_current" set ref 612* 614 614* 621* 622* 624* 629* 630* 632* i 000100 automatic fixed bin(17,0) dcl 1001 in procedure "search_current" set ref 1019* 1020* 1022 1024* 1025* 1028 1032* i 000100 automatic fixed bin(17,0) dcl 533 in procedure "all_current" set ref 537* 538* 538* 538* i 000331 automatic fixed bin(17,0) dcl 643 in procedure "new_current" set ref 653* 654* 655* 658* i 000101 automatic fixed bin(17,0) dcl 666 in procedure "new_since_last_seen" set ref 671* 671* 673 677* 678* 678* i 000101 automatic fixed bin(17,0) dcl 1370 in procedure "first_existing" set ref 1373* 1374* 1374* i 000301 automatic fixed bin(17,0) dcl 572 in procedure "next_current" set ref 575* 577 577* 585* 586* 588* 593* 594* 596* i 000101 automatic fixed bin(17,0) dcl 692 in procedure "seen_current" set ref 697* 698* 698* 698* i 000101 automatic fixed bin(17,0) dcl 712 in procedure "unseen_current" set ref 717* 718* 718* 718* i 000101 automatic fixed bin(17,0) dcl 1412 in procedure "last_deleted" set ref 1415* 1416* 1416* index builtin function dcl 94 ref 852 906 ioa_ 000026 constant entry external dcl 118 ref 237 397 451 1114 1118 1145 1157 1179 1260 1261 ioa_$rsnnl 000030 constant entry external dcl 119 ref 232 247 321 483 iox_$user_output 000112 external static pointer dcl 148 set ref 238* 452* last_seen 000103 automatic fixed bin(17,0) dcl 666 set ref 673* 675 676 leap_year 23 based fixed bin(17,0) level 2 dcl 3-53 set ref 1174* left_num 000102 automatic fixed bin(17,0) dcl 738 in procedure "interpret_range" set ref 752* 767 775 789 794 795 797 left_num 000111 automatic fixed bin(17,0) dcl 822 in procedure "interpret_list" set ref 834* 853* 856 944 left_str 000104 automatic varying char dcl 739 set ref 743* 746 752 length builtin function dcl 94 ref 739 739 815 1225 line 000105 automatic varying char(256) dcl 76 set ref 182* 196 196 196 196 196 199 199 201 201 203 203 205 205 207 207 209 211 213 215 217 223 225* 229 229 229 229 229 404* 413* 415* 422 422 422 422 422 425 425 431 431 433 433 439 441* list_any 000206 automatic bit(1) dcl 77 set ref 173* 792 833* lowest 000316 automatic fixed bin(17,0) dcl 608 set ref 610* 614 614* 621 629 ltrim builtin function dcl 94 ref 333 344 355 366 743 744 1227 mail_system_$read_message 000032 constant entry external dcl 120 ref 654 1024 1204 1275 1292 mail_system_$read_new_messages 000034 constant entry external dcl 121 ref 189 316 mailbox based structure level 1 dcl 2-6 mailbox_ptr 000222 automatic pointer dcl 2-30 set ref 189* 196 238* 284 306* 309 316* 392* 395 422 448 452* 510* 513 520 520 537 585 610 629 653 653 654* 671 675 677 697 717 775 783 893 955 1016 1019 1022 1024* 1028 1196 1199 1202 1204* 1208 1273 1275* 1279 1290 1292* 1297 1373 1387 1401 1415 marked_for_deletion 12(02) based bit(1) level 3 packed packed unaligned dcl 1-15 ref 1280 mbz 2(06) 000103 automatic bit(30) level 3 packed packed unaligned dcl 1005 set ref 1014* message based structure level 1 dcl 1-15 message_body_section based structure level 1 dcl 1-274 message_envelope based structure level 1 dcl 1-61 message_ptr 106 based pointer array level 3 in structure "mailbox" dcl 2-6 in procedure "xmail_select_msgs_" ref 1022 1028 1202 1208 1273 1279 1290 1297 message_ptr 000220 automatic pointer dcl 1-53 in procedure "xmail_select_msgs_" set ref 1028* 1029* 1208* 1212 1212 1279* 1280 1297* 1298 message_redistribution based structure level 1 dcl 1-122 message_reference based structure level 1 dcl 1-234 message_text_field based structure level 1 dcl 1-260 message_user_field based structure level 1 dcl 1-163 messages 104 based structure array level 2 dcl 2-6 mlsys_et_$no_more_messages 000062 external static fixed bin(35,0) dcl 135 ref 190 317 647 mlsys_utils_$search_message 000036 constant entry external dcl 122 ref 1029 msg_count 000236 automatic fixed bin(17,0) dcl 279 set ref 282* 285* msg_has_str 000102 automatic bit(1) dcl 1003 set ref 1029* 1032 msg_num 000102 automatic fixed bin(17,0) dcl 817 set ref 908* 911* 914* 944* 946* 946* 946* 949* 952* 955 955 957* 957* 959* 961* msg_struct based structure level 1 unaligned dcl 4-22 set ref 1337 msg_structp 000234 automatic pointer dcl 4-20 set ref 1239* 1241 1337* 1338 1339 my 3 based fixed bin(17,0) level 2 dcl 3-53 set ref 1164* n_deleted_messages 103 based fixed bin(17,0) level 2 dcl 2-6 ref 395 520 n_messages 100 based fixed bin(17,0) level 2 in structure "mailbox" dcl 2-6 in procedure "xmail_select_msgs_" set ref 196* 284* 309 422* 448* 513 520 537 585 610 629 653 653 671 675 677 697 717 775 783 893 955 1016* 1019 1196* 1199 1373 1387 1401 1415 n_messages 000226 automatic fixed bin(17,0) dcl 4-3 in procedure "xmail_select_msgs_" set ref 1336* 1337 1337 n_new_msgs 000210 automatic fixed bin(17,0) dcl 79 set ref 189* 316* 320* n_tokens 000103 automatic fixed bin(17,0) dcl 817 set ref 834* 856* 856 888* 888 890* 890 893* 900* 901* need_answer 000207 automatic bit(1) dcl 78 set ref 179* 180 231* 246* 259 408* 410 443* 458* 468 nonexist_count 000101 automatic fixed bin(17,0) dcl 816 in procedure "interpret_list" set ref 902* 949* 959* 961* 967* nonexist_count 000101 automatic fixed bin(17,0) dcl 737 in procedure "interpret_range" set ref 793* 800* 803* nonexist_msgs based structure level 1 unaligned dcl 4-15 set ref 261 471 1313 1319 nonexist_msgsp 000232 automatic pointer dcl 4-13 set ref 185* 261 261 420* 471 471 795* 800* 901* 949* 959* 961* 1313 1319 1322 now_in_struct 000107 automatic bit(1) dcl 820 set ref 905* 920* 925* 930* 935* 952 null builtin function dcl 94 ref 175 185 259 261 299 311 311 379 385 399 420 468 471 502 515 515 522 522 575 612 831 845 969 972 1022 1140 1183 1202 1250 1273 1290 numbers 2 based fixed bin(17,0) array level 2 in structure "curr_msgs" dcl 4-8 in procedure "xmail_select_msgs_" set ref 232* 247* 321* 333 344 355 366 483* 551* 553* 561* 563* 577 577 588* 596* 614 614 624* 632* 1261* 1430 numbers 2 based fixed bin(17,0) array level 2 in structure "msg_struct" dcl 4-22 in procedure "xmail_select_msgs_" set ref 1241* prompt_sw 000211 automatic bit(1) dcl 80 set ref 405* 407* 412* 415 418* regexp_search 2 000103 automatic bit(1) level 3 packed packed unaligned dcl 1005 set ref 1008* release_temp_segment_ 000120 constant entry external dcl 825 ref 845 971 right_num 000103 automatic fixed bin(17,0) dcl 738 in procedure "interpret_range" set ref 759* 767 775 783 790 794 795 797 right_num 000112 automatic fixed bin(17,0) dcl 823 in procedure "interpret_list" set ref 834* 853* 856 944 right_str 000104 automatic varying char dcl 739 set ref 744* 746 759 rtrim builtin function dcl 94 ref 333 344 355 366 743 744 search_body 2(05) 000103 automatic bit(1) level 3 packed packed unaligned dcl 1005 set ref 1013* search_envelope 2(02) 000103 automatic bit(1) level 3 packed packed unaligned dcl 1005 set ref 1010* search_header 2(03) 000103 automatic bit(1) level 3 packed packed unaligned dcl 1005 set ref 1011* search_options based structure level 1 dcl 8-6 search_redistributions_list 2(04) 000103 automatic bit(1) level 3 packed packed unaligned dcl 1005 set ref 1012* search_str 000342 automatic varying char(256) dcl 980 set ref 984* 985 986* 989 seen 12(04) based bit(1) level 3 packed packed unaligned dcl 1-15 ref 1298 switch_off 000213 automatic bit(1) dcl 82 set ref 173* 232 265 270 378* 880* 888 switch_on 000212 automatic bit(1) dcl 81 set ref 173* 232 265 269 378* 869* 888 time_value based structure level 1 dcl 3-53 set ref 1151 1154 1154 1176 1176 1183 timer_manager_$sleep 000040 constant entry external dcl 123 ref 1119 token 000100 automatic varying char dcl 1225 in procedure "next_token" set ref 1227* 1228 1230 token 1 based varying char(10) array level 2 in structure "token_array" dcl 827 in procedure "interpret_list" set ref 850* 851 852 853 860* 866 866 866 877 877 877 893 893 893 893 893 904 906 908 908 908 911 911 911 914 914 917 922 927 932 932 token_array based structure level 1 dcl 827 token_array_ptr 000114 automatic pointer dcl 826 set ref 831* 838* 845 845* 849 850 850 851 851 852 852 853 853 859 859 860 860 866 866 866 870 877 877 877 881 888 890 892 893 893 893 893 893 904 904 906 908 908 908 911 911 911 914 914 917 922 927 932 932 969 971* 972* token_index 000104 automatic fixed bin(17,0) dcl 817 set ref 892* 893 893 893 893 893* 904* 904* 906 908 908 908 911 911 911 914 914 917 922 927 932 932* unused_return_length 000214 automatic fixed bin(17,0) dcl 83 set ref 232* 247* 321* 483* verify builtin function dcl 94 ref 914 version 000103 automatic char(8) level 2 in structure "auto_search_options" packed packed unaligned dcl 1005 in procedure "search_current" set ref 1007* version based fixed bin(17,0) level 2 in structure "msg_struct" dcl 4-22 in procedure "xmail_select_msgs_" set ref 1338* version based char(8) level 2 in structure "time_value" dcl 3-53 in procedure "xmail_select_msgs_" set ref 1152* want_deleted_msgs 000215 automatic bit(1) dcl 84 set ref 173* 281* 293* 329* 340* 351* 362* 377* 538 551 561 798 946 957 1260* 1323 1353 1359 want_seen_messages 000216 automatic bit(1) dcl 85 set ref 173* 668* 671 694* 698 714* 718 xmail_data based structure level 1 dcl 9-54 xmail_data_ptr 000114 external static pointer initial dcl 9-52 ref 397 411 xmail_err_$bad_response 000064 external static fixed bin(35,0) dcl 135 ref 250 461 873 884 xmail_err_$date_not_found 000106 external static fixed bin(35,0) dcl 135 ref 250 1123 xmail_err_$int_prog_err 000066 external static fixed bin(35,0) dcl 135 ref 840 xmail_err_$invalid_list 000070 external static fixed bin(35,0) dcl 135 ref 250 461 937 941 xmail_err_$invalid_range 000072 external static fixed bin(35,0) dcl 135 ref 250 461 748 755 763 769 785 xmail_err_$list_requested 000074 external static fixed bin(35,0) dcl 135 ref 223 235 439 445 xmail_err_$mailbox_empty 000076 external static fixed bin(35,0) dcl 135 set ref 313* xmail_err_$no_msgs_exist 000100 external static fixed bin(35,0) dcl 135 ref 250 461 777 1314 xmail_err_$some_del_msgs_exist 000102 external static fixed bin(35,0) dcl 135 ref 456 1323 xmail_err_$some_msgs_exist 000104 external static fixed bin(35,0) dcl 135 ref 242 1325 xmail_err_$str_not_found 000110 external static fixed bin(35,0) dcl 135 ref 250 991 xmail_error_$code_first 000042 constant entry external dcl 124 ref 313 647 xmail_error_$no_code 000044 constant entry external dcl 125 ref 190 250 296 302 317 382 388 461 499 506 524 655 684 705 725 1025 1205 1276 1293 xmail_get_str_ 000046 constant entry external dcl 126 ref 182 415 986 1062 1071 xmail_get_str_$yes_no 000050 constant entry external dcl 127 ref 1263 xmail_list_msgs_ 000052 constant entry external dcl 128 ref 238 xmail_list_msgs_$selected 000054 constant entry external dcl 129 ref 452 xmail_validate_$curr_msgs 000056 constant entry external dcl 130 ref 301 387 505 xmail_validate_$mbx 000060 constant entry external dcl 131 ref 295 381 498 yc 2 based fixed bin(17,0) level 2 dcl 3-53 set ref 1163* yes_sw 000722 automatic bit(1) dcl 1258 set ref 1263* 1265 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ASK internal static char(3) initial packed unaligned dcl 6-16 CREATE_MFILE_INFO internal static char(19) initial packed unaligned dcl 7-21 DEL_NONEXIST_MSG internal static char(70) initial packed unaligned dcl 5-12 GENERAL_HELP_HELP internal static char(26) initial packed unaligned dcl 7-13 GETTING_HELP_INFO internal static char(12) initial packed unaligned dcl 7-21 GETTING_STARTED_HELP internal static char(29) initial packed unaligned dcl 7-13 INITIAL_HELP internal static char(26) initial packed unaligned dcl 7-13 MAILBOX_VERSION_2 internal static char(8) initial packed unaligned dcl 2-28 MESSAGE_ADDRESS_LIST_USER_FIELD internal static fixed bin(17,0) initial dcl 1-174 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 1-285 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 1-318 MESSAGE_DATE_USER_FIELD internal static fixed bin(17,0) initial dcl 1-174 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 1-79 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 1-174 MESSAGE_PREFORMATTED_BODY_SECTION internal static fixed bin(17,0) initial dcl 1-285 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 1-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 1-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 1-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 1-253 MESSAGE_TEXT_USER_FIELD internal static fixed bin(17,0) initial dcl 1-174 MESSAGE_TRACE_VERSION_2 internal static char(8) initial packed unaligned dcl 1-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 1-158 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 1-213 MESSAGE_VERSION_2 internal static char(8) initial packed unaligned dcl 1-49 MORE_HELP_INFO internal static char(9) initial packed unaligned dcl 7-21 MULTICS_MODE_HELP internal static char(27) initial packed unaligned dcl 7-13 NO internal static char(2) initial packed unaligned dcl 6-16 NONEXIST_MSG internal static char(66) initial packed unaligned dcl 5-12 OTHER_MAILBOX internal static fixed bin(17,0) initial dcl 2-37 QUESTION internal static char(1) initial packed unaligned dcl 6-16 REVIEW_DEFAULTS_HELP internal static char(29) initial packed unaligned dcl 7-13 S internal static char(1) initial packed unaligned dcl 6-16 SAVEBOX internal static fixed bin(17,0) initial dcl 2-37 SET internal static char(3) initial packed unaligned dcl 6-16 UNDELETE_FINISHED_MSG internal static char(24) initial packed unaligned dcl 5-12 USER_DEFAULT_MAILBOX internal static fixed bin(17,0) initial dcl 2-37 USER_LOGBOX internal static fixed bin(17,0) initial dcl 2-37 USE_SPEC_SET_INFO internal static char(12) initial packed unaligned dcl 7-21 Y internal static char(1) initial packed unaligned dcl 6-16 YES internal static char(3) initial packed unaligned dcl 6-16 mailbox_n_messages automatic fixed bin(17,0) dcl 2-32 message_address_list_user_field based structure level 1 dcl 1-190 message_bit_string_body_section based structure level 1 dcl 1-301 message_bit_string_body_section_bit_string based bit packed unaligned dcl 1-307 message_body_section_parameter based structure level 1 dcl 1-313 message_body_section_parameter_ptr automatic pointer dcl 1-320 message_body_section_ptr automatic pointer dcl 1-280 message_date_user_field based structure level 1 dcl 1-195 message_envelope_parameter based structure level 1 dcl 1-74 message_envelope_parameter_ptr automatic pointer dcl 1-81 message_envelope_ptr automatic pointer dcl 1-69 message_integer_user_field based structure level 1 dcl 1-200 message_n_body_sections automatic fixed bin(17,0) dcl 1-55 message_n_redistributions automatic fixed bin(17,0) dcl 1-55 message_n_user_fields automatic fixed bin(17,0) dcl 1-55 message_preformatted_body_section based structure level 1 dcl 1-292 message_preformatted_body_section_text based char packed unaligned dcl 1-298 message_redistribution_comment based char packed unaligned dcl 1-131 message_redistribution_parameter based structure level 1 dcl 1-139 message_redistribution_parameter_ptr automatic pointer dcl 1-146 message_redistribution_ptr automatic pointer dcl 1-134 message_redistributions_list based structure level 1 dcl 1-109 message_reference_parameter based structure level 1 dcl 1-248 message_reference_parameter_ptr automatic pointer dcl 1-255 message_reference_ptr automatic pointer dcl 1-243 message_reference_subject based char packed unaligned dcl 1-240 message_references_list based structure level 1 dcl 1-219 message_references_list_n_references automatic fixed bin(17,0) dcl 1-55 message_references_list_ptr automatic pointer dcl 1-229 message_subject based char packed unaligned dcl 1-51 message_text_field_ptr automatic pointer dcl 1-270 message_text_field_text based char packed unaligned dcl 1-268 message_text_user_field based structure level 1 dcl 1-183 message_text_user_field_text based char packed unaligned dcl 1-187 message_trace based structure level 1 dcl 1-87 message_trace_n_relays automatic fixed bin(17,0) dcl 1-55 message_trace_ptr automatic pointer dcl 1-105 message_user_field_parameter based structure level 1 dcl 1-208 message_user_field_parameter_ptr automatic pointer dcl 1-215 message_user_field_ptr automatic pointer dcl 1-169 message_user_fields_list based structure level 1 dcl 1-150 search_options_ptr automatic pointer dcl 8-20 xmail_version internal static varying char(10) initial dcl 9-84 NAMES DECLARED BY EXPLICIT CONTEXT. DATE2 010640 constant label dcl 1068 ref 1063 INIT_EXIT 004512 constant label dcl 527 ref 517 LIST_EXIT 010126 constant label dcl 969 ref 841 854 874 885 942 RANGE_EXIT 006537 constant label dcl 807 ref 749 756 764 770 778 786 RESTART 010541 constant label dcl 1056 ref 1115 add_to_msg_struct 012040 constant entry internal dcl 1234 ref 538 658 678 698 718 798 800 946 949 957 959 961 1032 1212 all 002062 constant entry external dcl 277 all_current 004514 constant entry internal dcl 530 ref 199 285 428 449 934 alloc_msg_struct 012535 constant entry internal dcl 1331 ref 196 284 422 448 549 559 582 618 650 794 795 900 901 1016 1196 already_specified 013163 constant entry internal dcl 1423 ref 538 678 698 718 946 952 cd_EXIT 011542 constant label dcl 1183 ref 1146 1158 1180 convert_date 011314 constant entry internal dcl 1132 ref 1065 1077 1088 1098 1100 date_current 011555 constant entry internal dcl 1188 ref 1121 date_search 010536 constant entry internal dcl 1042 ref 217 deleted 003271 constant entry external dcl 371 first 002537 constant entry external dcl 327 first_current 004616 constant entry internal dcl 547 ref 201 332 431 first_deleted 013002 constant entry internal dcl 1381 ref 551 1353 first_existing 012734 constant entry internal dcl 1367 ref 553 1355 get_num 012566 constant entry internal dcl 1344 ref 752 759 908 911 init 004252 constant entry internal dcl 490 ref 177 283 331 342 353 364 interpret_list 006541 constant entry internal dcl 810 ref 225 441 interpret_range 006040 constant entry internal dcl 730 ref 853 last 002663 constant entry external dcl 338 last_current 004654 constant entry internal dcl 557 ref 203 343 433 last_deleted 013115 constant entry internal dcl 1409 ref 561 1359 last_existing 013050 constant entry internal dcl 1395 ref 563 1361 msg_deleted 012214 constant entry internal dcl 1269 ref 538 586 594 622 630 798 946 957 1020 1200 1374 1388 1402 1416 msg_seen 012334 constant entry internal dcl 1286 ref 671 698 718 new 002163 constant entry external dcl 291 new_current 005217 constant entry internal dcl 639 ref 320 new_since_last_seen 005364 constant entry internal dcl 663 ref 209 919 next 003007 constant entry external dcl 349 next_current 004712 constant entry internal dcl 567 ref 205 354 next_token 011732 constant entry internal dcl 1222 ref 850 860 prev 003140 constant entry external dcl 360 prev_current 005054 constant entry internal dcl 603 ref 207 365 replace_curr 004162 constant entry external dcl 480 search 010157 constant entry internal dcl 977 ref 211 search_current 010262 constant entry internal dcl 997 ref 989 seen_current 005543 constant entry internal dcl 689 ref 213 924 set_counts 012454 constant entry internal dcl 1303 ref 803 967 unseen_current 005702 constant entry internal dcl 709 ref 215 929 use_spec_msgs 012057 constant entry internal dcl 1246 ref 266 287 311 323 334 345 356 367 482 515 522 want_some 012100 constant entry internal dcl 1256 ref 244 458 xmail_select_msgs_ 001015 constant entry external dcl 42 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 14450 14572 13473 14460 Length 15350 13473 122 542 755 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xmail_select_msgs_ 886 external procedure is an external procedure. init internal procedure shares stack frame of external procedure xmail_select_msgs_. all_current 86 internal procedure is called by several nonquick procedures. first_current internal procedure shares stack frame of external procedure xmail_select_msgs_. last_current internal procedure shares stack frame of external procedure xmail_select_msgs_. next_current internal procedure shares stack frame of external procedure xmail_select_msgs_. prev_current internal procedure shares stack frame of external procedure xmail_select_msgs_. new_current internal procedure shares stack frame of external procedure xmail_select_msgs_. new_since_last_seen 120 internal procedure is called by several nonquick procedures. seen_current 118 internal procedure is called by several nonquick procedures. unseen_current 118 internal procedure is called by several nonquick procedures. interpret_range 102 internal procedure uses auto adjustable storage, and is called during a stack extension. interpret_list 133 internal procedure uses auto adjustable storage, and enables or reverts conditions. on unit on line 844 80 on unit search internal procedure shares stack frame of external procedure xmail_select_msgs_. search_current 124 internal procedure is called during a stack extension. date_search internal procedure shares stack frame of external procedure xmail_select_msgs_. convert_date 112 internal procedure is called during a stack extension. date_current internal procedure shares stack frame of external procedure xmail_select_msgs_. next_token 70 internal procedure uses auto adjustable storage, and uses returns(char(*)) or returns(bit(*)). add_to_msg_struct 64 internal procedure is called by several nonquick procedures. use_spec_msgs internal procedure shares stack frame of external procedure xmail_select_msgs_. want_some internal procedure shares stack frame of external procedure xmail_select_msgs_. msg_deleted 114 internal procedure is called by several nonquick procedures. msg_seen 114 internal procedure is called by several nonquick procedures. set_counts 64 internal procedure is called by several nonquick procedures. alloc_msg_struct 64 internal procedure is called by several nonquick procedures. get_num 86 internal procedure is called during a stack extension. first_existing 76 internal procedure is called by several nonquick procedures. first_deleted 76 internal procedure is called by several nonquick procedures. last_existing 76 internal procedure is called by several nonquick procedures. last_deleted 76 internal procedure is called by several nonquick procedures. already_specified 66 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME all_current 000100 i all_current 000101 count all_current already_specified 000100 i already_specified convert_date 000100 cd_clock_value convert_date 000102 cd_code convert_date first_deleted 000100 deleted first_deleted 000101 i first_deleted first_existing 000100 existing first_existing 000101 i first_existing interpret_list 000100 curr_count interpret_list 000100 copy_str interpret_list 000101 nonexist_count interpret_list 000102 msg_num interpret_list 000103 n_tokens interpret_list 000104 token_index interpret_list 000105 code interpret_list 000106 first_token interpret_list 000107 now_in_struct interpret_list 000110 have_range interpret_list 000111 left_num interpret_list 000112 right_num interpret_list 000114 token_array_ptr interpret_list interpret_range 000100 curr_count interpret_range 000101 nonexist_count interpret_range 000102 left_num interpret_range 000103 right_num interpret_range 000104 left_str interpret_range 000104 code interpret_range 000104 right_str interpret_range last_deleted 000100 deleted last_deleted 000101 i last_deleted last_existing 000100 existing last_existing 000101 i last_existing new_since_last_seen 000100 count new_since_last_seen 000101 i new_since_last_seen 000102 first_unseen new_since_last_seen 000103 last_seen new_since_last_seen next_token 000100 token next_token search_current 000100 i search_current 000101 count search_current 000102 msg_has_str search_current 000103 auto_search_options search_current seen_current 000100 count seen_current 000101 i seen_current unseen_current 000100 count unseen_current 000101 i unseen_current xmail_select_msgs_ 000100 area_ptr xmail_select_msgs_ 000102 code xmail_select_msgs_ 000103 hold_code xmail_select_msgs_ 000104 i xmail_select_msgs_ 000105 line xmail_select_msgs_ 000206 list_any xmail_select_msgs_ 000207 need_answer xmail_select_msgs_ 000210 n_new_msgs xmail_select_msgs_ 000211 prompt_sw xmail_select_msgs_ 000212 switch_on xmail_select_msgs_ 000213 switch_off xmail_select_msgs_ 000214 unused_return_length xmail_select_msgs_ 000215 want_deleted_msgs xmail_select_msgs_ 000216 want_seen_messages xmail_select_msgs_ 000220 message_ptr xmail_select_msgs_ 000222 mailbox_ptr xmail_select_msgs_ 000224 Ptime_value xmail_select_msgs_ 000226 n_messages xmail_select_msgs_ 000230 curr_msgsp xmail_select_msgs_ 000232 nonexist_msgsp xmail_select_msgs_ 000234 msg_structp xmail_select_msgs_ 000236 msg_count xmail_select_msgs_ 000237 count xmail_select_msgs_ 000254 code init 000300 found next_current 000301 i next_current 000302 highest next_current 000314 found prev_current 000315 i prev_current 000316 lowest prev_current 000330 count new_current 000331 i new_current 000342 search_str search 000452 ds_ascii_date_1 date_search 000460 ds_ascii_date_2 date_search 000466 ds_clock_value_1 date_search 000470 ds_clock_value_2 date_search 000472 ds_date_str_1 date_search 000573 ds_date_str_2 date_search 000702 i date_current 000703 dc_count date_current 000722 yes_sw want_some THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac alloc_auto_adj enable_op shorten_stack ext_entry_desc int_entry int_entry_desc set_chars_eis return_chars_eis op_alloc_ op_freen_ index_after_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_$suppress_name convert_date_to_binary_ cv_dec_check_ date_time_$format date_time_$from_clock date_time_$to_clock get_system_free_area_ get_temp_segment_ ioa_ ioa_$rsnnl mail_system_$read_message mail_system_$read_new_messages mlsys_utils_$search_message release_temp_segment_ timer_manager_$sleep xmail_error_$code_first xmail_error_$no_code xmail_get_str_ xmail_get_str_$yes_no xmail_list_msgs_ xmail_list_msgs_$selected xmail_validate_$curr_msgs xmail_validate_$mbx THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. iox_$user_output mlsys_et_$no_more_messages xmail_data_ptr xmail_err_$bad_response xmail_err_$date_not_found xmail_err_$int_prog_err xmail_err_$invalid_list xmail_err_$invalid_range xmail_err_$list_requested xmail_err_$mailbox_empty xmail_err_$no_msgs_exist xmail_err_$some_del_msgs_exist xmail_err_$some_msgs_exist xmail_err_$str_not_found LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 42 001010 173 001032 174 001037 175 001040 177 001042 179 001061 180 001063 182 001066 184 001124 185 001126 189 001131 190 001152 193 001210 194 001212 196 001213 199 001255 201 001276 203 001312 205 001326 207 001347 209 001370 211 001404 213 001414 215 001430 217 001444 223 001454 225 001465 227 001501 229 001503 231 001537 232 001540 234 001604 235 001605 237 001610 238 001626 239 001641 241 001642 242 001656 244 001662 246 001667 247 001670 249 001730 250 001731 259 001776 261 002011 263 002022 265 002023 266 002033 269 002043 270 002050 272 002055 277 002056 281 002077 282 002100 283 002101 284 002121 285 002132 286 002140 287 002150 289 002160 291 002161 293 002200 295 002201 296 002213 299 002247 301 002253 302 002264 306 002320 307 002324 309 002333 311 002336 312 002350 313 002360 316 002403 317 002424 320 002462 321 002464 323 002524 325 002534 327 002535 329 002554 331 002555 332 002575 333 002576 334 002650 336 002660 338 002661 340 002700 342 002701 343 002721 344 002722 345 002774 347 003004 349 003005 351 003024 353 003025 354 003045 355 003053 356 003125 358 003135 360 003136 362 003155 364 003156 365 003176 366 003204 367 003256 369 003266 371 003267 376 003304 377 003305 378 003307 379 003311 381 003314 382 003325 385 003361 387 003366 388 003377 392 003433 393 003437 395 003446 397 003451 399 003472 400 003475 402 003476 404 003505 405 003515 406 003516 407 003517 408 003521 410 003523 411 003526 412 003534 413 003535 415 003541 418 003600 419 003602 420 003603 422 003606 425 003650 427 003662 428 003663 429 003671 430 003674 431 003675 433 003711 439 003725 441 003736 443 003752 445 003756 447 003761 448 003762 449 003773 450 004001 451 004004 452 004023 453 004036 455 004037 456 004053 458 004057 460 004065 461 004066 468 004127 471 004142 474 004153 476 004154 478 004157 480 004160 482 004177 483 004210 485 004251 490 004252 498 004263 499 004275 502 004331 505 004337 506 004350 510 004404 511 004410 513 004417 515 004422 516 004435 517 004443 520 004444 522 004446 523 004461 524 004467 527 004512 530 004513 535 004521 537 004524 538 004535 541 004610 543 004612 545 004615 547 004616 549 004617 551 004631 553 004644 555 004653 557 004654 559 004655 561 004667 563 004702 565 004711 567 004712 574 004714 575 004715 577 004733 579 004744 582 004746 583 004760 585 004761 586 004775 588 005010 589 005013 591 005015 593 005017 594 005031 596 005044 597 005047 599 005051 601 005053 603 005054 610 005056 612 005062 614 005077 616 005110 618 005112 619 005124 621 005125 622 005135 624 005150 625 005153 627 005155 629 005160 630 005173 632 005206 633 005211 635 005213 637 005216 639 005217 647 005221 650 005247 651 005260 653 005261 654 005273 655 005306 658 005346 659 005360 661 005362 663 005363 668 005371 669 005373 671 005376 672 005423 673 005426 675 005430 676 005434 677 005436 678 005445 680 005500 682 005502 684 005505 687 005541 689 005542 694 005550 695 005553 697 005556 698 005567 701 005637 703 005641 705 005644 707 005700 709 005701 714 005707 715 005711 717 005714 718 005725 721 005775 723 005777 725 006002 728 006036 730 006037 739 006053 742 006075 743 006076 744 006141 746 006216 748 006230 749 006232 752 006233 753 006264 755 006267 756 006273 759 006274 761 006326 763 006331 764 006335 767 006336 769 006341 770 006345 775 006346 777 006356 778 006362 783 006363 785 006366 786 006372 789 006373 790 006376 792 006400 793 006402 794 006404 795 006420 797 006436 798 006450 800 006505 801 006520 803 006523 807 006537 810 006540 815 006554 850 006566 860 006571 831 006574 832 006576 833 006577 834 006602 835 006606 836 006610 838 006620 839 006640 840 006642 841 006645 844 006646 845 006662 847 006710 849 006711 850 006713 851 006750 852 006764 853 006776 854 007035 856 007041 859 007044 860 007045 861 007102 865 007104 866 007106 869 007126 870 007131 871 007136 873 007137 874 007143 877 007144 880 007163 881 007166 882 007173 884 007174 885 007200 888 007201 890 007213 892 007217 893 007227 898 007270 900 007272 901 007304 902 007316 904 007320 905 007337 906 007340 908 007356 911 007424 914 007473 917 007544 919 007552 920 007561 921 007563 922 007564 924 007571 925 007600 926 007602 927 007603 929 007610 930 007617 931 007621 932 007622 934 007634 935 007643 936 007645 937 007646 939 007651 941 007653 942 007657 944 007660 946 007671 949 007745 950 007760 951 007761 952 007764 955 010010 957 010017 959 010054 960 010067 961 010070 964 010104 966 010106 967 010112 969 010126 971 010132 972 010154 974 010156 977 010157 982 010161 984 010162 985 010163 986 010171 987 010227 989 010230 991 010250 994 010260 997 010261 1007 010275 1008 010300 1009 010302 1010 010304 1011 010306 1012 010310 1013 010312 1014 010314 1016 010316 1017 010331 1019 010332 1020 010343 1022 010357 1024 010367 1025 010402 1028 010443 1029 010452 1030 010506 1032 010511 1036 010527 1038 010531 1039 010535 1042 010536 1055 010540 1056 010541 1058 010543 1060 010544 1061 010546 1062 010547 1063 010605 1065 010612 1066 010636 1068 010640 1070 010642 1071 010643 1075 010701 1077 010715 1078 010741 1080 010746 1085 010747 1087 010763 1088 010770 1089 011014 1091 011021 1098 011022 1100 011053 1102 011100 1105 011105 1109 011106 1110 011147 1112 011210 1114 011213 1115 011236 1118 011237 1119 011262 1121 011275 1123 011303 1126 011312 1132 011313 1139 011327 1140 011331 1142 011334 1143 011365 1145 011370 1146 011404 1151 011405 1152 011414 1154 011417 1155 011450 1157 011452 1158 011466 1163 011467 1164 011472 1165 011473 1166 011474 1167 011475 1168 011476 1169 011477 1170 011500 1171 011501 1172 011502 1173 011503 1174 011505 1176 011506 1177 011523 1179 011525 1180 011541 1183 011542 1185 011551 1188 011555 1196 011557 1197 011570 1199 011571 1200 011601 1202 011614 1204 011623 1205 011636 1208 011676 1212 011703 1216 011723 1218 011725 1219 011730 1222 011731 1225 011745 1227 011757 1228 012006 1230 012030 1234 012037 1239 012045 1240 012052 1241 012053 1243 012056 1246 012057 1250 012061 1251 012073 1253 012077 1256 012100 1260 012102 1261 012131 1263 012163 1265 012205 1269 012213 1273 012221 1275 012232 1276 012244 1279 012306 1280 012316 1282 012326 1286 012333 1290 012341 1292 012352 1293 012364 1297 012426 1298 012436 1299 012446 1303 012453 1308 012461 1310 012463 1312 012465 1313 012473 1314 012501 1315 012505 1317 012506 1319 012511 1322 012521 1323 012523 1325 012531 1328 012533 1331 012534 1336 012542 1337 012546 1338 012560 1339 012562 1341 012564 1344 012565 1349 012601 1351 012603 1353 012614 1355 012633 1357 012646 1359 012656 1361 012675 1363 012710 1367 012733 1372 012741 1373 012742 1374 012755 1375 012773 1377 012775 1381 013001 1386 013007 1387 013010 1388 013023 1389 013041 1391 013043 1395 013047 1400 013055 1401 013056 1402 013067 1403 013105 1405 013110 1409 013114 1414 013122 1415 013123 1416 013135 1417 013153 1419 013156 1423 013162 1429 013170 1430 013203 1432 013217 1434 013221 ----------------------------------------------------------- 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