COMPILATION LISTING OF SEGMENT rdm_apply_request_ Compiled by: Multics PL/I Compiler, Release 32e, of September 22, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 10/02/89 0820.5 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(89-04-07,Lee), approve(89-05-10,MCR8104), 16* audit(89-07-18,LZimmerman), install(89-10-02,MR12.3-1079): 17* phx19099, phx15783, Mail 457 - added message_type parameter to call to 18* rdm_message_mark_mgr_$mark_current_message to catch use of "-odl" when 19* defaulting to the current message. 20* 2) change(89-04-11,Lee), approve(89-05-10,MCR8104), 21* audit(89-07-18,LZimmerman), install(89-10-02,MR12.3-1079): 22* phx18564, phx17540, phx17353, Mail 446 - the new entry set_new_current_msg 23* in rdm_mailbox_interface_ is now called when the current message is 24* changed to guarantee that the new current message is never a deleted 25* message; reformatting. 26* END HISTORY COMMENTS */ 27 28 29 /* format: off */ 30 31 /* The read_mail apply request */ 32 33 /* Created: 1979 by Gary C. Dixon as an interim version (not capable of modifying the actual message) */ 34 /* Modified: 3 June 1980 by G. Palter to implement suggestion #0263 -- the current message in read_mail should be set to 35* the message being processed; thus, if an error occurs, the current message will remain on which the error occured */ 36 /* Modified: 12 March 1982 by G. Palter to implement -include_deleted, -only_deleted, and -only_non_deleted and to fix a 37* bug which caused -no_header to sometimes fail */ 38 /* Modified: 28 September 1982 by G. Palter to add appropriate negative control arguments */ 39 /* Modified: October 1983 by G. Palter as part of the conversion to the new mail system interface */ 40 41 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen */ 42 43 44 rdm_apply_request_: 45 procedure (); 46 47 return; /* not an entrypoint */ 48 49 50 dcl P_sci_ptr pointer parameter; 51 dcl P_rdm_invocation_ptr pointer parameter; 52 53 dcl original_formatted_message character (original_formatted_message_lth) unaligned 54 based (original_formatted_message_ptr); 55 dcl original_formatted_message_ptr pointer; 56 dcl original_formatted_message_lth fixed binary (21); 57 58 dcl formatted_message character (formatted_message_lth) unaligned based (formatted_message_ptr); 59 dcl new_formatted_message character (new_formatted_message_lth) unaligned based (formatted_message_ptr); 60 dcl formatted_message_ptr pointer; 61 dcl (formatted_message_lth, new_formatted_message_lth) fixed binary (21); 62 63 dcl argument character (argument_lth) unaligned based (argument_ptr); 64 dcl argument_ptr pointer; 65 dcl argument_lth fixed binary (21); 66 dcl (n_arguments, first_command_argument_idx, argument_idx) fixed binary; 67 68 dcl msg_spec_array (msg_spec_array_size) fixed binary based (msg_spec_array_ptr); 69 dcl msg_spec_array_ptr pointer; 70 dcl (msg_spec_array_size, msg_spec_count, msg_type) fixed binary; 71 72 dcl (reverse_sw, delete_sw, header_sw, message_sw) bit (1) aligned; 73 74 dcl (first_message_idx, last_message_idx, message_idx_increment, message_idx, message_number) fixed binary; 75 dcl message_ptr pointer; 76 77 dcl code fixed binary (35); 78 79 dcl sys_info$max_seg_size fixed binary (19) external; 80 81 /* format: off */ 82 dcl (error_table_$badopt, error_table_$inconsistent, error_table_$noarg, error_table_$smallarg, 83 mlsys_et_$message_too_large) 84 fixed binary (35) external; 85 /* format: on */ 86 87 dcl cu_$grow_stack_frame entry (fixed binary (19), pointer, fixed binary (35)); 88 dcl mlsys_utils_$format_message 89 entry (pointer, pointer, pointer, fixed binary (21), fixed binary (21), fixed binary (35)); 90 dcl rdm_mailbox_interface_$delete_messages entry (pointer, bit (1) aligned); 91 dcl rdm_mailbox_interface_$set_new_current_msg entry (ptr, fixed binary, fixed binary); 92 dcl rdm_mailbox_interface_$mark_processed_and_acknowledge entry (pointer, fixed binary); 93 dcl rdm_mailbox_interface_$read_message entry (pointer, fixed binary, pointer, fixed binary (35)); 94 dcl rdm_message_mark_mgr_$clear_marked_messages entry (pointer); 95 dcl rdm_message_mark_mgr_$mark_current_message entry (pointer, fixed binary); 96 dcl rdm_message_mark_mgr_$mark_messages 97 entry (pointer, pointer, fixed binary (21), fixed binary, bit (*), fixed binary (35)); 98 dcl rdm_message_mark_mgr_$validate_message_specifier 99 entry (pointer, pointer, fixed binary (21), fixed binary, bit (*), fixed binary (35)); 100 dcl ssu_$abort_line entry () options (variable); 101 dcl ssu_$apply_request_util entry (pointer, fixed binary, pointer, fixed binary (21), fixed binary (21)); 102 dcl ssu_$arg_count entry (pointer, fixed binary); 103 dcl ssu_$arg_ptr entry (pointer, fixed binary, pointer, fixed binary (21)); 104 dcl ssu_$get_request_name entry (pointer) returns (character (32)); 105 dcl ssu_$get_temp_segment entry (pointer, character (*), pointer); 106 dcl ssu_$release_temp_segment entry (pointer, pointer); 107 108 dcl cleanup condition; 109 110 dcl (addr, currentsize, hbound, index, null) builtin; 111 112 apply_request: 113 entry (P_sci_ptr, P_rdm_invocation_ptr); 114 115 rdm_invocation_ptr = P_rdm_invocation_ptr; 116 117 call ssu_$arg_count (P_sci_ptr, n_arguments); 118 if n_arguments = 0 then 119 PRINT_USAGE_MESSAGE: 120 call ssu_$abort_line (P_sci_ptr, 0, "Usage: ^a {message_specifier} {-control_args} command_line", 121 ssu_$get_request_name (P_sci_ptr)); 122 123 call rdm_message_mark_mgr_$clear_marked_messages (rdm_invocation_ptr); 124 125 msg_spec_array_size = n_arguments; /* set up the pointer array */ 126 call cu_$grow_stack_frame (currentsize (msg_spec_array), msg_spec_array_ptr, code); 127 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "Too many message specifiers in request line."); 128 129 msg_spec_count = 0; /* no message specifiers yet */ 130 msg_type = NON_DELETED_MESSAGES; 131 132 133 /* Process arguments: if first argument isn't a message specifier, it starts the command line; otherwise, the first 134* non-control argument starts the command line */ 135 136 header_sw = "1"b; /* apply operation to the header ... */ 137 message_sw = "1"b; /* ... and the text ... */ 138 delete_sw = "0"b; /* ... and do not delete when done */ 139 reverse_sw = "0"b; /* ... and in ascending order */ 140 141 argument_idx = 1; 142 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 143 call rdm_message_mark_mgr_$validate_message_specifier (rdm_invocation_ptr, argument_ptr, argument_lth, 144 ALL_MESSAGES, ""b, code); 145 if code = 0 then do; /* first argument is a message specifier */ 146 call process_argument_as_spec (); 147 argument_idx = 2; /* ... so start parsing at second argument */ 148 end; 149 150 first_command_argument_idx = 0; /* haven't found it yet */ 151 152 do argument_idx = argument_idx to n_arguments while (first_command_argument_idx = 0); 153 154 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 155 156 if index (argument, "-") = 1 then /* a control argument */ 157 if (argument = "-include_deleted") | (argument = "-idl") | (argument = "-all") | (argument = "-a") 158 then 159 msg_type = ALL_MESSAGES; 160 else if (argument = "-only_deleted") | (argument = "-odl") then msg_type = ONLY_DELETED_MESSAGES; 161 else if (argument = "-only_non_deleted") | (argument = "-ondl") then msg_type = NON_DELETED_MESSAGES; 162 163 else if (argument = "-reverse") | (argument = "-rv") then reverse_sw = "1"b; 164 else if (argument = "-no_reverse") | (argument = "-nrv") then reverse_sw = "0"b; 165 166 else if (argument = "-delete") | (argument = "-dl") then delete_sw = "1"b; 167 else if (argument = "-no_delete") | (argument = "-ndl") then delete_sw = "0"b; 168 169 else if (argument = "-header") | (argument = "-he") then header_sw = "1"b; 170 else if (argument = "-no_header") | (argument = "-nhe") then header_sw = "0"b; 171 172 else if argument = "-text" then message_sw = "1"b; 173 else if argument = "-no_text" then message_sw = "0"b; 174 175 else if (argument = "-message") | (argument = "-msg") then do; 176 if argument_idx = n_arguments then 177 call ssu_$abort_line (P_sci_ptr, error_table_$noarg, 178 "A message specifier must follow ""^a"".", argument); 179 argument_idx = argument_idx + 1; 180 call process_argument_as_spec (); 181 end; 182 183 else call ssu_$abort_line (P_sci_ptr, error_table_$badopt, """^a""", argument); 184 185 else first_command_argument_idx = argument_idx; 186 end; 187 188 if first_command_argument_idx = 0 then go to PRINT_USAGE_MESSAGE; 189 /* no command line present */ 190 191 if ^header_sw & ^message_sw then 192 call ssu_$abort_line (P_sci_ptr, error_table_$inconsistent, """-no_text"" and ""-no_header"""); 193 194 195 /* Mark appropriate messages */ 196 197 formatted_message_ptr, /* for cleanup handler */ 198 original_formatted_message_ptr = null (); 199 200 on condition (cleanup) 201 begin; 202 if original_formatted_message_ptr ^= null () then 203 call ssu_$release_temp_segment (P_sci_ptr, original_formatted_message_ptr); 204 if formatted_message_ptr ^= null () then call ssu_$release_temp_segment (P_sci_ptr, formatted_message_ptr); 205 end; 206 207 call ssu_$get_temp_segment (P_sci_ptr, "original-message", original_formatted_message_ptr); 208 call ssu_$get_temp_segment (P_sci_ptr, "apply-buffer", formatted_message_ptr); 209 210 if msg_spec_count = 0 then /* defaults to the current message */ 211 call rdm_message_mark_mgr_$mark_current_message (rdm_invocation_ptr, msg_type); 212 /* phx19099 RL - "-odl" will be caught if specified during marking of current message */ 213 else call process_msg_specs (); 214 215 if reverse_sw then do; /* process messages in opposite of marked order */ 216 first_message_idx = marked_chain.n_messages; 217 last_message_idx = 1; 218 message_idx_increment = -1; 219 end; 220 else do; /* process messages in the order marked */ 221 first_message_idx = 1; 222 last_message_idx = marked_chain.n_messages; 223 message_idx_increment = 1; 224 end; 225 226 227 /* Process the messages */ 228 229 do message_idx = first_message_idx to last_message_idx by message_idx_increment; 230 message_number = marked_chain.messages (message_idx); 231 232 /* phx18564 RL - set current message to message_number only if it is not a deleted message; 233* otherwise current set to next non-deleted message after message_number */ 234 call rdm_mailbox_interface_$set_new_current_msg (rdm_invocation_ptr, message_number, 235 rdm_invocation.current_message); /* each message is current as it's processed */ 236 237 call rdm_mailbox_interface_$read_message (rdm_invocation_ptr, message_number, message_ptr, code); 238 if code ^= 0 then 239 call ssu_$abort_line (P_sci_ptr, code, "Reading message #^d from ^a.", message_number, 240 rdm_invocation.mailbox_name); 241 242 call prepare_message_for_apply (); /* make two formatted copies of the message */ 243 244 call ssu_$apply_request_util (rdm_invocation.sci_ptr, first_command_argument_idx, formatted_message_ptr, 245 original_formatted_message_lth, new_formatted_message_lth); 246 247 if new_formatted_message_lth ^= original_formatted_message_lth then 248 MESSAGE_MODIFIED_ERROR: /* messages can not be modified */ 249 call ssu_$abort_line (P_sci_ptr, 0, 250 "This request can not be used to modify the messages in a mailbox."); 251 if new_formatted_message ^= original_formatted_message then go to MESSAGE_MODIFIED_ERROR; 252 253 call rdm_mailbox_interface_$mark_processed_and_acknowledge (rdm_invocation_ptr, message_number); 254 end; 255 256 257 /* Clean up */ 258 259 if original_formatted_message_ptr ^= null () then 260 call ssu_$release_temp_segment (P_sci_ptr, original_formatted_message_ptr); 261 if formatted_message_ptr ^= null () then call ssu_$release_temp_segment (P_sci_ptr, formatted_message_ptr); 262 263 if delete_sw then /* user wants the messages deleted */ 264 call rdm_mailbox_interface_$delete_messages (rdm_invocation_ptr, "0"b); 265 266 return; 267 268 /* Remembers that the current argument is a message specifier */ 269 270 process_argument_as_spec: 271 procedure (); 272 273 if msg_spec_count >= hbound (msg_spec_array, 1) then 274 call ssu_$abort_line (P_sci_ptr, 0, "Too many message specifiers in request."); 275 /* can't ever happen */ 276 277 msg_spec_count = msg_spec_count + 1; 278 msg_spec_array (msg_spec_count) = argument_idx; 279 280 return; 281 282 end process_argument_as_spec; 283 284 285 286 /* Processes the array of message specifiers by marking all appropriate messages */ 287 288 process_msg_specs: 289 procedure (); 290 291 dcl idx fixed binary; 292 293 do idx = 1 to msg_spec_count; 294 call ssu_$arg_ptr (P_sci_ptr, msg_spec_array (idx), argument_ptr, argument_lth); 295 296 call rdm_message_mark_mgr_$mark_messages (rdm_invocation_ptr, argument_ptr, argument_lth, msg_type, ""b, 297 code); 298 if code ^= 0 then /* above call should abort on errors */ 299 call ssu_$abort_line (P_sci_ptr, code); 300 end; 301 302 return; 303 304 end process_msg_specs; 305 306 /* Prepares the message for the applied command line: Two formatted copies of the message are created in order to check 307* that the command line does not modify the message as rewriting the message is not supported in this release */ 308 309 prepare_message_for_apply: 310 procedure (); 311 312 dcl 1 local_fmo aligned like format_message_options; 313 314 local_fmo.version = FORMAT_MESSAGE_OPTIONS_VERSION_1; 315 local_fmo.line_length = 72; /* make the header look reasonable to the user */ 316 317 if header_sw then /* include the header */ 318 local_fmo.envelope_formatting_mode, local_fmo.header_formatting_mode, 319 local_fmo.redistributions_list_formatting_mode = DEFAULT_FORMATTING_MODE; 320 else local_fmo.envelope_formatting_mode, local_fmo.header_formatting_mode, 321 local_fmo.redistributions_list_formatting_mode = NONE_FORMATTING_MODE; 322 323 local_fmo.include_body = message_sw; /* user's controls whether the text is present */ 324 325 original_formatted_message_lth = 0; /* nothing used yet */ 326 call mlsys_utils_$format_message (message_ptr, addr (local_fmo), original_formatted_message_ptr, 327 (4 * sys_info$max_seg_size), original_formatted_message_lth, code); 328 if code = error_table_$smallarg then code = mlsys_et_$message_too_large; 329 if code ^= 0 then 330 call ssu_$abort_line (P_sci_ptr, code, "Preparing message #^d for processing.", message_number); 331 332 formatted_message_lth = original_formatted_message_lth; 333 formatted_message = original_formatted_message; /* make the actual copy given to the command line */ 334 335 return; 336 337 end prepare_message_for_apply; 338 1 1 /* BEGIN INCLUDE FILE ... rdm_invocation.incl.pl1 */ 1 2 /* Created: September 1983 by G. Palter from portions of emf_info.incl.pl1 */ 1 3 1 4 /* Definition of a single invocation of read_mail */ 1 5 1 6 dcl 1 rdm_invocation aligned based (rdm_invocation_ptr), 1 7 2 type character (8), /* defines this structure as a read_mail invocation */ 1 8 2 sci_ptr pointer, /* -> subsystem utilities invocation data */ 1 9 2 area_ptr pointer, /* -> area to be used by the subsystem */ 1 10 1 11 2 mailbox_info, 1 12 3 mailbox_ptr pointer, /* -> mailbox structure being examined by this invocation */ 1 13 3 message_list_ptr pointer, /* -> list of read_mail specific information retained for each 1 14* message (eg: the "processed" flag) */ 1 15 3 message_chains, /*the various message chains ... */ 1 16 4 all pointer, /* ... all unexpunged messages */ 1 17 4 undeleted pointer, /* ... all undeleted messages */ 1 18 4 deleted pointer, /* ... all deleted messages */ 1 19 4 marked pointer, /* ... messages to be processed by the current request */ 1 20 4 marked_as_original pointer, /* ... messages being processed by a reply/forward request */ 1 21 3 mailbox_name character (168) varying, /* name of the mailbox (your mailbox/logbox/pathname) */ 1 22 1 23 2 current_message fixed binary, /* index of the current message; 0 => no current message */ 1 24 1 25 2 last_search_buffer, /* describes the buffer where read_mail constructs the ... */ 1 26 3 buffer_ptr pointer, /* ... the printed representation of messages in order ... */ 1 27 3 buffer_used fixed binary (21), /* ... to speed up regular expression searching */ 1 28 1 29 2 global_options, /* command line options affecting all of read_mail ... */ 1 30 3 flags, 1 31 4 acknowledge bit (1) unaligned, /* ... ON => acknowledge messages after printing */ 1 32 4 brief bit (1) unaligned, /* ... ON => shorten some messages and omit others */ 1 33 4 debug_mode bit (1) unaligned, /* ... ON => enable debugging features */ 1 34 4 pad bit (33) unaligned, 1 35 1 36 2 print_options, /* command line options affecting the print request ... */ 1 37 3 formatting_mode fixed binary, /* ... output mode for the message header, etc. */ 1 38 1 39 2 reply_options, /* command line options affecting the reply request ... */ 1 40 3 line_length fixed binary, /* ... line length to be used by send_mail for filling */ 1 41 3 indentation fixed binary, /* ... amount to indent original text when included */ 1 42 3 flags, 1 43 4 include_original bit (1) unaligned, /* ... ON => include original message text in the reply */ 1 44 4 include_authors bit (1) unaligned, /* ... ON => include original authors as recipients */ 1 45 4 include_recipients bit (1) unaligned, /* ... ON => include original recipients as recipients */ 1 46 4 include_self bit (2) unaligned, /* ... ON => include this user as a recipient of the reply if 1 47* selected by include_authors/include_recipients */ 1 48 4 fill_control bit (2) unaligned, /* ... controls message filling by send_mail */ 1 49 4 pad bit (29) unaligned; 1 50 1 51 dcl RDM_INVOCATION character (8) static options (constant) initial ("rdm_0009"); 1 52 1 53 dcl rdm_invocation_ptr pointer; 1 54 1 55 dcl rdm_area area based (rdm_invocation.area_ptr); 1 56 1 57 1 58 /* Defined settings for reply_options.include_self */ 1 59 1 60 dcl (DEFAULT_INCLUDE_SELF initial ("00"b), /* neither -include_self nor -no_include_self given */ 1 61 NO_INCLUDE_SELF initial ("01"b), /* -no_include_self explicitly given */ 1 62 INCLUDE_SELF initial ("10"b)) /* -include_self explicitly given */ 1 63 bit (2) aligned static options (constant); 1 64 1 65 /* END INCLUDE FILE ... rdm_invocation.incl.pl1 */ 339 340 2 1 /* BEGIN INCLUDE FILE ... rdm_message_list.incl.pl1 */ 2 2 /* Created: September 1983 by G. Palter */ 2 3 2 4 /* Definition of per-message data maintained by read_mail: This list is maintined in parallel to the mailbox structure by 2 5* read_mail's interface to the mail_system_ mailbox manager (rdm_mailbox_interface_). It serves two purposes: 2 6* (1) It provides a place to store read_mail-specific per-message data (ie: the processed flag). 2 7* (2) It provides the ability to provide arbitrary mappings between read_mail message numbers and the actual indeces 2 8* within the mailbox structure. This mapping allows read_mail to preserve its message numbers for an invocation 2 9* even if messages are expunged which causes them to disappear from the mailbox structure (NB: the "expunge" 2 10* request is not yet implemented). This mapping also allows read_mail to present the messages in the mailbox to 2 11* the user in a different order than they actually appear in the mailbox (eg: sorted by date/time created) */ 2 12 2 13 dcl 1 message_list aligned based (rdm_invocation.message_list_ptr), 2 14 2 n_messages fixed binary, /* # of messages known to read_mail at present */ 2 15 2 pad bit (36), 2 16 2 messages (message_list_n_messages refer (message_list.n_messages)), 2 17 3 message_idx fixed binary, /* index of this message in the mailbox structure */ 2 18 3 flags, 2 19 4 processed bit (1) unaligned, /* ON => this message may be deleted without query */ 2 20 4 pad bit (35) unaligned, 2 21 3 search_text, /* describes copy of messages used for regexp searches */ 2 22 4 search_text_ptr pointer, /* ... -> the saved printed represetnation */ 2 23 4 search_text_lth fixed binary (21); /* ... length of said representation in characters */ 2 24 2 25 dcl message_list_n_messages fixed binary; 2 26 2 27 /* END INCLUDE FILE ... rdm_message_list.incl.pl1 */ 341 342 3 1 /* BEGIN INCLUDE FILE ... rdm_message_chains.incl.pl1 */ 3 2 /* Created: September 1983 by G. Palter */ 3 3 3 4 3 5 /* Definition of a read_mail message chain */ 3 6 3 7 dcl 1 message_chain aligned based (message_chain_ptr), 3 8 2 n_messages fixed binary, /* # of messages in the chain */ 3 9 2 messages (message_list.n_messages) fixed binary; /* read_mail message numbers of the messages in the chain */ 3 10 3 11 dcl message_chain_ptr pointer; 3 12 3 13 3 14 /* Message chains maintained by read_mail's interface to the mail_system_ mailbox manager (rdm_mailbox_interface_) -- 3 15* (1) The first chain is a list of all messages in the mailbox which have not yet been expunged and consists of all 3 16* messages whether or not they have been marked for deletion. 3 17* (2) The second chain is a list of all messages in the mailbox which have not been marked for later deletion. 3 18* (3) The third chain is a list of all messages which have been marked for later deletion. 3 19* The message specifier parser uses one of these three chains as the basis for selecting the messages to be processed by 3 20* a request based on the use of "-include_deleted", "-only_non_deleted", or "-only_deleted", respectively; in this way, 3 21* the amount of code in the parser which must distinguish between these three types of selections is minimized */ 3 22 3 23 dcl 1 all_chain aligned based (rdm_invocation.message_chains.all) like message_chain; 3 24 dcl 1 undeleted_chain aligned based (rdm_invocation.message_chains.undeleted) like message_chain; 3 25 dcl 1 deleted_chain aligned based (rdm_invocation.message_chains.deleted) like message_chain; 3 26 3 27 3 28 /* The marked chain is the list of messages that are to be processed by the current request */ 3 29 3 30 dcl 1 marked_chain aligned based (rdm_invocation.message_chains.marked) like message_chain; 3 31 3 32 3 33 /* The marked as original chain is the list of messages that are being processed by a reply or forward request: This 3 34* chain is used to define the default set of messages to be processed by the various send_mail "original" requests and 3 35* forward "original" sub-requests */ 3 36 3 37 dcl 1 marked_as_original_chain aligned based (rdm_invocation.message_chains.marked_as_original) like message_chain; 3 38 3 39 3 40 /* Definition of the acceptable message selection criteria */ 3 41 3 42 dcl (ALL_MESSAGES initial (1), /* all messages: -include_deleted */ 3 43 NON_DELETED_MESSAGES initial (2), /* only undeleted messages: -only_non_deleted (default) */ 3 44 ONLY_DELETED_MESSAGES initial (3)) /* only deleted messages: -only_deleted */ 3 45 fixed binary static options (constant); 3 46 3 47 /* END INCLUDE FILE ... rdm_message_chains.incl.pl1 */ 343 344 4 1 /* BEGIN INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 4 2 /* Created: June 1983 by G. Palter */ 4 3 4 4 /* Options for the mlsys_utils_$format_message and mlsys_utils_$print_message entrypoints */ 4 5 4 6 dcl 1 format_message_options aligned based (format_message_options_ptr), 4 7 2 version character (8) unaligned, 4 8 2 line_length fixed binary, /* line length to be used to format/print the message */ 4 9 2 envelope_formatting_mode fixed binary, /* level of detail to be displayed for the envelope ... */ 4 10 2 header_formatting_mode fixed binary, /* ... for the message ... */ 4 11 2 redistributions_list_formatting_mode fixed binary, /* ... and for the redistributions list ... */ 4 12 2 include_body bit (1) aligned; /* ON => include message body when formatting/printing; 4 13* OFF => exclude the message body */ 4 14 4 15 dcl FORMAT_MESSAGE_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsfmo01"); 4 16 4 17 dcl format_message_options_ptr pointer; 4 18 4 19 4 20 /* Defined formatting modes */ 4 21 4 22 dcl (NONE_FORMATTING_MODE initial (0), /* exclude this part of the message */ 4 23 BRIEF_FORMATTING_MODE initial (1), /* include only minimal information from this part of the 4 24* message; not valid for the envelope */ 4 25 DEFAULT_FORMATTING_MODE initial (2), /* include default amount of information from this part */ 4 26 LONG_FORMATTING_MODE initial (3)) /* include all information from this part of the message */ 4 27 fixed binary static options (constant); 4 28 4 29 /* END INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 345 346 347 end rdm_apply_request_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/02/89 0816.9 rdm_apply_request_.pl1 >spec>install>1079>rdm_apply_request_.pl1 339 1 10/27/83 2104.3 rdm_invocation.incl.pl1 >ldd>include>rdm_invocation.incl.pl1 341 2 10/27/83 2104.3 rdm_message_list.incl.pl1 >ldd>include>rdm_message_list.incl.pl1 343 3 10/27/83 2104.3 rdm_message_chains.incl.pl1 >ldd>include>rdm_message_chains.incl.pl1 345 4 10/27/83 2104.2 mlsys_format_options.incl.pl1 >ldd>include>mlsys_format_options.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. ALL_MESSAGES 000040 constant fixed bin(17,0) initial dcl 3-42 set ref 143* 156 DEFAULT_FORMATTING_MODE constant fixed bin(17,0) initial dcl 4-22 ref 317 FORMAT_MESSAGE_OPTIONS_VERSION_1 000000 constant char(8) initial packed unaligned dcl 4-15 ref 314 NONE_FORMATTING_MODE constant fixed bin(17,0) initial dcl 4-22 ref 320 NON_DELETED_MESSAGES constant fixed bin(17,0) initial dcl 3-42 ref 130 161 ONLY_DELETED_MESSAGES constant fixed bin(17,0) initial dcl 3-42 ref 160 P_rdm_invocation_ptr parameter pointer dcl 51 ref 112 115 P_sci_ptr parameter pointer dcl 50 set ref 112 117* 118* 118* 118* 127* 142* 154* 176* 183* 191* 202* 204* 207* 208* 238* 247* 259* 261* 273* 294* 298* 329* addr builtin function dcl 110 ref 326 326 argument based char packed unaligned dcl 63 set ref 156 156 156 156 156 160 160 161 161 163 163 164 164 166 166 167 167 169 169 170 170 172 173 175 175 176* 183* argument_idx 000115 automatic fixed bin(17,0) dcl 66 set ref 141* 142* 147* 152* 152* 154* 176 179* 179 185* 278 argument_lth 000112 automatic fixed bin(21,0) dcl 65 set ref 142* 143* 154* 156 156 156 156 156 160 160 161 161 163 163 164 164 166 166 167 167 169 169 170 170 172 173 175 175 176 176 183 183 294* 296* argument_ptr 000110 automatic pointer dcl 64 set ref 142* 143* 154* 156 156 156 156 156 160 160 161 161 163 163 164 164 166 166 167 167 169 169 170 170 172 173 175 175 176 183 294* 296* cleanup 000140 stack reference condition dcl 108 ref 200 code 000136 automatic fixed bin(35,0) dcl 77 set ref 126* 127 127* 143* 145 237* 238 238* 296* 298 298* 326* 328 328* 329 329* cu_$grow_stack_frame 000024 constant entry external dcl 87 ref 126 current_message 77 based fixed bin(17,0) level 2 dcl 1-6 set ref 234* currentsize builtin function dcl 110 ref 126 126 delete_sw 000124 automatic bit(1) dcl 72 set ref 138* 166* 167* 263 envelope_formatting_mode 3 000200 automatic fixed bin(17,0) level 2 dcl 312 set ref 317* 320* error_table_$badopt 000012 external static fixed bin(35,0) dcl 82 set ref 183* error_table_$inconsistent 000014 external static fixed bin(35,0) dcl 82 set ref 191* error_table_$noarg 000016 external static fixed bin(35,0) dcl 82 set ref 176* error_table_$smallarg 000020 external static fixed bin(35,0) dcl 82 ref 328 first_command_argument_idx 000114 automatic fixed bin(17,0) dcl 66 set ref 150* 152 185* 188 244* first_message_idx 000127 automatic fixed bin(17,0) dcl 74 set ref 216* 221* 229 format_message_options based structure level 1 dcl 4-6 formatted_message based char packed unaligned dcl 58 set ref 333* formatted_message_lth 000106 automatic fixed bin(21,0) dcl 61 set ref 332* 333 formatted_message_ptr 000104 automatic pointer dcl 60 set ref 197* 204 204* 208* 244* 251 261 261* 333 hbound builtin function dcl 110 ref 273 header_formatting_mode 4 000200 automatic fixed bin(17,0) level 2 dcl 312 set ref 317* 320* header_sw 000125 automatic bit(1) dcl 72 set ref 136* 169* 170* 191 317 idx 000170 automatic fixed bin(17,0) dcl 291 set ref 293* 294* include_body 6 000200 automatic bit(1) level 2 dcl 312 set ref 323* index builtin function dcl 110 ref 156 last_message_idx 000130 automatic fixed bin(17,0) dcl 74 set ref 217* 222* 229 line_length 2 000200 automatic fixed bin(17,0) level 2 dcl 312 set ref 315* local_fmo 000200 automatic structure level 1 dcl 312 set ref 326 326 mailbox_info 6 based structure level 2 dcl 1-6 mailbox_name 24 based varying char(168) level 3 dcl 1-6 set ref 238* marked 20 based pointer level 4 dcl 1-6 ref 216 222 230 marked_chain based structure level 1 dcl 3-30 message_chain based structure level 1 dcl 3-7 message_chains 12 based structure level 3 dcl 1-6 message_idx 000132 automatic fixed bin(17,0) dcl 74 set ref 229* 230* message_idx_increment 000131 automatic fixed bin(17,0) dcl 74 set ref 218* 223* 229 message_number 000133 automatic fixed bin(17,0) dcl 74 set ref 230* 234* 237* 238* 253* 329* message_ptr 000134 automatic pointer dcl 75 set ref 237* 326* message_sw 000126 automatic bit(1) dcl 72 set ref 137* 172* 173* 191 323 messages 1 based fixed bin(17,0) array level 2 dcl 3-30 ref 230 mlsys_et_$message_too_large 000022 external static fixed bin(35,0) dcl 82 ref 328 mlsys_utils_$format_message 000026 constant entry external dcl 88 ref 326 msg_spec_array based fixed bin(17,0) array dcl 68 set ref 126 126 273 278* 294* msg_spec_array_ptr 000116 automatic pointer dcl 69 set ref 126 126 126* 273 278 294 msg_spec_array_size 000120 automatic fixed bin(17,0) dcl 70 set ref 125* 126 126 273 msg_spec_count 000121 automatic fixed bin(17,0) dcl 70 set ref 129* 210 273 277* 277 278 293 msg_type 000122 automatic fixed bin(17,0) dcl 70 set ref 130* 156* 160* 161* 210* 296* n_arguments 000113 automatic fixed bin(17,0) dcl 66 set ref 117* 118 125 152 176 n_messages based fixed bin(17,0) level 2 dcl 3-30 ref 216 222 new_formatted_message based char packed unaligned dcl 59 ref 251 new_formatted_message_lth 000107 automatic fixed bin(21,0) dcl 61 set ref 244* 247 251 null builtin function dcl 110 ref 197 202 204 259 261 original_formatted_message based char packed unaligned dcl 53 ref 251 333 original_formatted_message_lth 000102 automatic fixed bin(21,0) dcl 56 set ref 244* 247 251 325* 326* 332 333 original_formatted_message_ptr 000100 automatic pointer dcl 55 set ref 197* 202 202* 207* 251 259 259* 326* 333 rdm_invocation based structure level 1 dcl 1-6 rdm_invocation_ptr 000146 automatic pointer dcl 1-53 set ref 115* 123* 143* 210* 216 222 230 234* 234 237* 238 244 253* 263* 296* rdm_mailbox_interface_$delete_messages 000030 constant entry external dcl 90 ref 263 rdm_mailbox_interface_$mark_processed_and_acknowledge 000034 constant entry external dcl 92 ref 253 rdm_mailbox_interface_$read_message 000036 constant entry external dcl 93 ref 237 rdm_mailbox_interface_$set_new_current_msg 000032 constant entry external dcl 91 ref 234 rdm_message_mark_mgr_$clear_marked_messages 000040 constant entry external dcl 94 ref 123 rdm_message_mark_mgr_$mark_current_message 000042 constant entry external dcl 95 ref 210 rdm_message_mark_mgr_$mark_messages 000044 constant entry external dcl 96 ref 296 rdm_message_mark_mgr_$validate_message_specifier 000046 constant entry external dcl 98 ref 143 redistributions_list_formatting_mode 5 000200 automatic fixed bin(17,0) level 2 dcl 312 set ref 317* 320* reverse_sw 000123 automatic bit(1) dcl 72 set ref 139* 163* 164* 215 sci_ptr 2 based pointer level 2 dcl 1-6 set ref 244* ssu_$abort_line 000050 constant entry external dcl 100 ref 118 127 176 183 191 238 247 273 298 329 ssu_$apply_request_util 000052 constant entry external dcl 101 ref 244 ssu_$arg_count 000054 constant entry external dcl 102 ref 117 ssu_$arg_ptr 000056 constant entry external dcl 103 ref 142 154 294 ssu_$get_request_name 000060 constant entry external dcl 104 ref 118 118 ssu_$get_temp_segment 000062 constant entry external dcl 105 ref 207 208 ssu_$release_temp_segment 000064 constant entry external dcl 106 ref 202 204 259 261 sys_info$max_seg_size 000010 external static fixed bin(19,0) dcl 79 ref 326 version 000200 automatic char(8) level 2 packed packed unaligned dcl 312 set ref 314* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BRIEF_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 4-22 DEFAULT_INCLUDE_SELF internal static bit(2) initial dcl 1-60 INCLUDE_SELF internal static bit(2) initial dcl 1-60 LONG_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 4-22 NO_INCLUDE_SELF internal static bit(2) initial dcl 1-60 RDM_INVOCATION internal static char(8) initial packed unaligned dcl 1-51 all_chain based structure level 1 dcl 3-23 deleted_chain based structure level 1 dcl 3-25 format_message_options_ptr automatic pointer dcl 4-17 marked_as_original_chain based structure level 1 dcl 3-37 message_chain_ptr automatic pointer dcl 3-11 message_list based structure level 1 dcl 2-13 message_list_n_messages automatic fixed bin(17,0) dcl 2-25 rdm_area based area(1024) dcl 1-55 undeleted_chain based structure level 1 dcl 3-24 NAMES DECLARED BY EXPLICIT CONTEXT. MESSAGE_MODIFIED_ERROR 001444 constant label dcl 247 ref 251 PRINT_USAGE_MESSAGE 000307 constant label dcl 118 ref 188 apply_request 000263 constant entry external dcl 112 prepare_message_for_apply 001737 constant entry internal dcl 309 ref 242 process_argument_as_spec 001570 constant entry internal dcl 270 ref 146 180 process_msg_specs 001630 constant entry internal dcl 288 ref 213 rdm_apply_request_ 000251 constant entry external dcl 44 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2434 2522 2061 2444 Length 3042 2061 66 303 353 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rdm_apply_request_ 312 external procedure is an external procedure. on unit on line 200 70 on unit process_argument_as_spec internal procedure shares stack frame of external procedure rdm_apply_request_. process_msg_specs internal procedure shares stack frame of external procedure rdm_apply_request_. prepare_message_for_apply internal procedure shares stack frame of external procedure rdm_apply_request_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rdm_apply_request_ 000100 original_formatted_message_ptr rdm_apply_request_ 000102 original_formatted_message_lth rdm_apply_request_ 000104 formatted_message_ptr rdm_apply_request_ 000106 formatted_message_lth rdm_apply_request_ 000107 new_formatted_message_lth rdm_apply_request_ 000110 argument_ptr rdm_apply_request_ 000112 argument_lth rdm_apply_request_ 000113 n_arguments rdm_apply_request_ 000114 first_command_argument_idx rdm_apply_request_ 000115 argument_idx rdm_apply_request_ 000116 msg_spec_array_ptr rdm_apply_request_ 000120 msg_spec_array_size rdm_apply_request_ 000121 msg_spec_count rdm_apply_request_ 000122 msg_type rdm_apply_request_ 000123 reverse_sw rdm_apply_request_ 000124 delete_sw rdm_apply_request_ 000125 header_sw rdm_apply_request_ 000126 message_sw rdm_apply_request_ 000127 first_message_idx rdm_apply_request_ 000130 last_message_idx rdm_apply_request_ 000131 message_idx_increment rdm_apply_request_ 000132 message_idx rdm_apply_request_ 000133 message_number rdm_apply_request_ 000134 message_ptr rdm_apply_request_ 000136 code rdm_apply_request_ 000146 rdm_invocation_ptr rdm_apply_request_ 000170 idx process_msg_specs 000200 local_fmo prepare_message_for_apply THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac enable_op ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$grow_stack_frame mlsys_utils_$format_message rdm_mailbox_interface_$delete_messages rdm_mailbox_interface_$mark_processed_and_acknowledge rdm_mailbox_interface_$read_message rdm_mailbox_interface_$set_new_current_msg rdm_message_mark_mgr_$clear_marked_messages rdm_message_mark_mgr_$mark_current_message rdm_message_mark_mgr_$mark_messages rdm_message_mark_mgr_$validate_message_specifier ssu_$abort_line ssu_$apply_request_util ssu_$arg_count ssu_$arg_ptr ssu_$get_request_name ssu_$get_temp_segment ssu_$release_temp_segment THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$inconsistent error_table_$noarg error_table_$smallarg mlsys_et_$message_too_large sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 44 000250 47 000256 112 000257 115 000270 117 000274 118 000305 123 000353 125 000362 126 000364 127 000400 129 000427 130 000430 136 000432 137 000434 138 000435 139 000436 141 000437 142 000441 143 000457 145 000513 146 000515 147 000516 150 000520 152 000521 154 000533 156 000551 160 000610 161 000623 163 000636 164 000651 166 000663 167 000676 169 000710 170 000723 172 000735 173 000744 175 000752 176 000762 179 001021 180 001022 181 001023 183 001024 185 001060 186 001062 188 001064 191 001066 197 001117 200 001122 202 001136 204 001154 205 001173 207 001174 208 001221 210 001246 213 001262 215 001263 216 001265 217 001270 218 001272 219 001274 221 001275 222 001277 223 001302 229 001304 230 001324 234 001330 237 001343 238 001360 242 001420 244 001421 247 001441 251 001472 253 001502 254 001513 259 001516 261 001534 263 001552 266 001567 270 001570 273 001571 277 001622 278 001623 280 001627 288 001630 293 001631 294 001641 296 001660 298 001714 300 001734 302 001736 309 001737 314 001740 315 001742 317 001744 320 001753 323 001757 325 001761 326 001762 328 002010 329 002016 332 002050 333 002052 335 002057 ----------------------------------------------------------- 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