COMPILATION LISTING OF SEGMENT sdm_misc_requests_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 05/22/86 1044.1 mst Thu 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 /* format: off */ 12 13 /* Miscellaneous send_mail requests */ 14 15 /* Created: 1 January 1979 by G. Palter */ 16 /* Modified: 23 January 1979 by G. Palter to slightly modify output of requests */ 17 /* Modified: 5 May 1980 by W. Olin Sibert for new ssu_ interface */ 18 /* Modified: 30 May 1980 by G. Palter to implement suggestion #0316 -- the "." requests should indicate if abbrev 19* processing is enabled */ 20 /* Modified: 4 June 1980 by G. Palter to implement suggestion #0287 -- if a reply is being created and the user exits 21* send_mail without sending the reply, the "-delete" control argument of the "reply" request should be ignored */ 22 /* Modified: 16 February 1982 by G. Palter for new calling sequence of ssu_$get_abbrev_info */ 23 /* Modified: 18 September 1982 by G. Palter to rename dot_request to self_identify and make the quit request accept 24* "-no_force" and an arbitrary number of arguments (for abbreviations) */ 25 /* Modified: September 1983 by G. Palter as part of the conversion to the new mail system interface */ 26 27 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen */ 28 29 30 sdm_misc_requests_: 31 procedure (P_sci_ptr, P_sdm_invocation_ptr); 32 33 return; /* not an entry */ 34 35 36 /* Parameters */ 37 38 dcl P_sci_ptr pointer parameter; 39 dcl P_sdm_invocation_ptr pointer parameter; 40 41 42 /* Remaining declarations */ 43 44 dcl argument character (argument_lth) unaligned based (argument_ptr); 45 dcl argument_ptr pointer; 46 dcl argument_lth fixed binary (21); 47 dcl (n_arguments, argument_idx) fixed binary; 48 49 dcl (subsystem_name, subsystem_version) character (32); 50 dcl subsystem_level fixed binary; 51 dcl abbrev_enabled bit (1) aligned; 52 dcl processing_state fixed binary (2); 53 54 dcl request_name character (72); 55 dcl question_idx fixed binary; 56 dcl force bit (1); 57 58 /* format: off */ 59 dcl QUESTION (-1:1) character (128) varying static options (constant) initial ( 60 "Message has not been sent, saved, or written.", 61 "", /* processed message: should never be used */ 62 "Message has been modified since it was last sent, saved, or written."); 63 64 dcl (error_table_$bad_arg, error_table_$badopt, emf_et_$send_mail_aborted) 65 fixed binary (35) external; 66 /* format: on */ 67 68 dcl command_query_$yes_no entry () options (variable); 69 dcl ioa_ entry () options (variable); 70 dcl ssu_$abort_line entry () options (variable); 71 dcl ssu_$abort_subsystem entry () options (variable); 72 dcl ssu_$arg_count entry (pointer, fixed binary); 73 dcl ssu_$arg_ptr entry (pointer, fixed binary, pointer, fixed binary (21)); 74 dcl ssu_$get_abbrev_info entry (pointer, pointer, pointer, bit (1) aligned); 75 dcl ssu_$get_invocation_count entry (pointer, fixed binary, fixed binary); 76 dcl ssu_$get_subsystem_and_request_name entry (pointer) returns (character (72) varying); 77 dcl ssu_$get_subsystem_name entry (pointer) returns (character (32)); 78 dcl ssu_$get_subsystem_version entry (pointer) returns (character (32)); 79 80 dcl (addr, index, null) builtin; 81 82 /* format: off */ 83 /* The "." request: prints a line of the form: 84* 85* send_mail V {(abbrev)} {(debug)} {(level R)}: N lines {(STATE)}; {Subject: STR} 86* 87* where items enclosed in {}'s are optionally printed if meaningfull */ 88 /* format: on */ 89 90 self_identify: 91 entry (P_sci_ptr, P_sdm_invocation_ptr); 92 93 sdm_invocation_ptr = P_sdm_invocation_ptr; 94 message_ptr = sdm_invocation.message_ptr; 95 96 call ssu_$arg_count (P_sci_ptr, n_arguments); 97 if n_arguments ^= 0 then call ssu_$abort_line (P_sci_ptr, 0, "No arguments may be given."); 98 99 subsystem_name = ssu_$get_subsystem_name (P_sci_ptr); 100 subsystem_version = ssu_$get_subsystem_version (P_sci_ptr); 101 call ssu_$get_abbrev_info (P_sci_ptr, (null ()), (null ()), abbrev_enabled); 102 call ssu_$get_invocation_count (P_sci_ptr, subsystem_level, (0)); 103 104 call ioa_ ( 105 "^a ^a^[ (abbrev)^]^[ (debug)^]^[ (level ^d)^;^s^]: ^d line^[s^]^[ (unprocessed)^;^; (modified)^]^[; Subject: ^a^]" 106 , subsystem_name, subsystem_version, abbrev_enabled, sdm_invocation.debug_mode, (subsystem_level ^= 1), 107 subsystem_level, message.body.total_lines, (message.body.total_lines ^= 1), 108 (sdm_invocation.message_state - UNPROCESSED_MESSAGE + 1), (message.subject.text_lth > 0), message_subject); 109 110 return; 111 112 /* The "quit" request: exits send_mail unless the message has been modified since it was last sent/saved/written; in the 113* latter case, the user is queried for permission to exit */ 114 115 quit_request: 116 entry (P_sci_ptr, P_sdm_invocation_ptr); 117 118 sdm_invocation_ptr = P_sdm_invocation_ptr; 119 120 request_name = ssu_$get_subsystem_and_request_name (P_sci_ptr); 121 122 call ssu_$arg_count (P_sci_ptr, n_arguments); 123 124 sdm_invocation.abort_code = 0; /* assume message was processed before exit */ 125 126 force = "0"b; /* ask user by default */ 127 128 do argument_idx = 1 to n_arguments; 129 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 130 if index (argument, "-") = 1 then 131 if (argument = "-force") | (argument = "-fc") then force = "1"b; 132 else if (argument = "-no_force") | (argument = "-nfc") then force = "0"b; 133 else call ssu_$abort_line (P_sci_ptr, error_table_$badopt, "^a", argument); 134 else call ssu_$abort_line (P_sci_ptr, error_table_$bad_arg, "This request only accepts control arugments.") 135 ; 136 end; 137 138 if sdm_invocation.message_state ^= PROCESSED_MESSAGE then do; 139 sdm_invocation.abort_code = emf_et_$send_mail_aborted; 140 if ^force then /* ... need the user's permission */ 141 call command_query_$yes_no (force, 0, request_name, "", "^a^/Do you still wish to quit?", 142 QUESTION (sdm_invocation.message_state)); 143 if ^force then call ssu_$abort_line (P_sci_ptr, 0); 144 end; 145 146 call ssu_$abort_subsystem (P_sci_ptr, 0); /* never returns */ 147 1 1 /* BEGIN INCLUDE FILE ... sdm_invocation.incl.pl1 */ 1 2 /* Created: August 1983 by G. Palter from portions of emf_info.incl.pl1 */ 1 3 1 4 /* Definition of a single invocation of send_mail */ 1 5 1 6 dcl 1 sdm_invocation aligned based (sdm_invocation_ptr), 1 7 2 type character (8), /* defines this structure as a send_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 message_info, /* information about the message being constructed */ 1 12 3 message_ptr pointer, /* ... -> the actual message */ 1 13 3 message_state fixed binary, /* ... unprocessed/modified/processed: controls quit query */ 1 14 3 date_time_body_modified fixed binary (71), /* ... last date/time the message body was changed: used to 1 15* display Date/Message-ID fields before transmission */ 1 16 1 17 2 fill_width fixed binary, /* default line length for message filling */ 1 18 2 flags, 1 19 3 brief bit (1) unaligned, /* ON => suppress "Mail delivered..." messages */ 1 20 3 acknowledge bit (1) unaligned, /* ON => user wants acknowledgement from recipients */ 1 21 3 notify bit (1) unaligned, /* ON => send each recipient a notification of delivery */ 1 22 3 fill bit (1) unaligned, /* ON => fill message body whenever modified */ 1 23 3 debug_mode bit (1) unaligned, /* ON => debugging features enabled */ 1 24 3 auto_write bit (1) unaligned, 1 25 3 pad bit (30) unaligned, /* ON => qedx request automatically rewrites on quit (sigh) */ 1 26 1 27 2 rdm_invocation_ptr pointer, /* -> description of read_mail invocation whose reply request 1 28* created this send_mail invocation */ 1 29 1 30 2 original_messages_ptr pointer, /* -> current list of original messages from which the 1 31* In-Reply-To field is to be regenerated after use of 1 32* qedx/apply -header */ 1 33 1 34 2 abort_code fixed binary (35); /* indicates whether send_mail exited with unsent message */ 1 35 1 36 dcl SDM_INVOCATION character (8) static options (constant) initial ("sdm_0008"); 1 37 1 38 dcl sdm_invocation_ptr pointer; 1 39 1 40 dcl sdm_area area based (sdm_invocation.area_ptr); 1 41 1 42 1 43 /* Possible message states: indicate whether the message has been modified in some way since it was last successfully 1 44* transmitted, logged, saved, or writen. This state is used by the quit request to control whether it should query the 1 45* user for permission to exit send_mail */ 1 46 1 47 dcl (UNPROCESSED_MESSAGE initial (-1), /* message has never been transmitted/logged/saved/written */ 1 48 1 49 MODIFIED_MESSAGE initial (1), /* message was transmitted/logged/saved/written but has been 1 50* modified since the last such operation */ 1 51 1 52 PROCESSED_MESSAGE initial (0)) /* message was transmitted/logged/saved/written and hasn't 1 53* been modified since that operation: OK to quit without 1 54* having to ask for the user's permission */ 1 55 fixed binary static options (constant); 1 56 1 57 /* END INCLUDE FILE ... sdm_invocation.incl.pl1 */ 148 149 2 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 2 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 2 7* Added seen switch to message. 2 8* END HISTORY COMMENTS */ 2 9 2 10 2 11 /* Created: June 1983 by G. Palter */ 2 12 2 13 /* Definition of a message as used by the Multics Mail System */ 2 14 2 15 dcl 1 message aligned based (message_ptr), 2 16 2 version character (8) unaligned, 2 17 2 reserved bit (144), /* for exclusive use of the mail system */ 2 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 2 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 2 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 2 21 2 n_body_sections fixed binary, /* # of sections in the body */ 2 22 2 flags, 2 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 2 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 2 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 2 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 2 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 2 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 2 29 2 pad bit (36), 2 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 2 31 2 header, 2 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 2 33 3 access_class bit (72), /* AIM access class of this message */ 2 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 2 35 3 from pointer, /* -> address list of author(s) of the message */ 2 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 2 37 3 to pointer, /* -> address list of primary recipients */ 2 38 3 cc pointer, /* -> address list of secondary recipients */ 2 39 3 bcc pointer, /* -> address list of blind recipients */ 2 40 3 subject like message_text_field, /* subject of the message */ 2 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 2 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 2 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 2 44 2 body, 2 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 2 46 3 pad bit (36), 2 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 2 48 2 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 2 50 2 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 2 52 2 53 dcl message_ptr pointer; 2 54 2 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 2 56 message_references_list_n_references) 2 57 fixed binary; /* for exclusive use of the mail system */ 2 58 2 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 2 60 2 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 2 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 2 63 2 sender pointer, /* -> address of entity that mailed the message */ 2 64 2 trace pointer, /* -> message_trace describing how it got here */ 2 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 2 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 2 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 2 68 2 69 dcl message_envelope_ptr pointer; 2 70 2 71 2 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 2 73 2 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 2 75 2 pad pointer, /* forces even word alignment */ 2 76 2 version character (8) unaligned, 2 77 2 envelope like message_envelope; 2 78 2 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 2 80 2 81 dcl message_envelope_parameter_ptr pointer; 2 82 2 83 2 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 2 85* networks to reach this recipient */ 2 86 2 87 dcl 1 message_trace aligned based (message_trace_ptr), 2 88 2 version character (8) unaligned, 2 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 2 91 2 pad bit (36), 2 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 2 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 2 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 2 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 2 96 3 receiving_host character (256) varying, /* ... the host which received it */ 2 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 2 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 2 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 2 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 2 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 2 102 2 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 2 104 2 105 dcl message_trace_ptr pointer; 2 106 2 107 /* Definition of a message's redistributions list */ 2 108 2 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 2 110 2 version character (8) unaligned, 2 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 112 2 pad bit (36), 2 113 2 n_redistributions fixed binary, /* # of redistributions */ 2 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 2 115 like message_redistribution; /* the redistributions: oldest first */ 2 116 2 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 2 118 2 119 2 120 /* Definition of a single redistribution (forwarding) of a message */ 2 121 2 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 2 123 2 envelope like message_envelope, 2 124 2 header, 2 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 2 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 2 127 3 from pointer, /* -> address list of authors of this redistribution */ 2 128 3 to pointer, /* -> address list of recipients of the redistribution */ 2 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 2 130 2 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 2 132 based (message_redistribution.comment.text_ptr); 2 133 2 134 dcl message_redistribution_ptr pointer; 2 135 2 136 2 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 2 138 2 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 2 140 2 pad pointer, /* forces even word alignment */ 2 141 2 version character (8) unaligned, 2 142 2 redistribution like message_redistribution; 2 143 2 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 2 145 2 146 dcl message_redistribution_parameter_ptr pointer; 2 147 2 148 /* Definition of the list of user-defined fields in a message */ 2 149 2 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 2 151 2 version character (8) unaligned, 2 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 153 2 pad bit (36), 2 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 2 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 2 156 like message_user_field; /* the actual user-defined fields */ 2 157 2 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 2 159 2 160 2 161 /* Definition of a user defined message header field */ 2 162 2 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 2 164 2 header, 2 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 2 166 3 field_type fixed binary, /* type of data contained in this field */ 2 167 2 field_type_variable bit (144); /* the actual data (see below) */ 2 168 2 169 dcl message_user_field_ptr pointer; 2 170 2 171 2 172 /* Defined types of user defined fields */ 2 173 2 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 2 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 2 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 2 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 2 178 fixed binary static options (constant); 2 179 2 180 2 181 /* Structures used to access the data for the different types of user defined fields */ 2 182 2 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 2 184 2 header like message_user_field.header, 2 185 2 text like message_text_field; /* the message text */ 2 186 2 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 2 188 based (message_text_user_field.text.text_ptr); 2 189 2 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 2 191 2 header like message_user_field.header, 2 192 2 address_list_ptr pointer, /* -> the address list */ 2 193 2 pad bit (72); 2 194 2 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 2 196 2 header like message_user_field.header, 2 197 2 date_time fixed binary (71), /* the clock reading */ 2 198 2 pad bit (72); 2 199 2 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 2 201 2 header like message_user_field.header, 2 202 2 value fixed binary (35), /* the integer value */ 2 203 2 pad bit (108); 2 204 2 205 2 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 2 207 2 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 2 209 2 pad pointer, /* forces even word alignment */ 2 210 2 version character (8) unaligned, 2 211 2 user_field like message_user_field; 2 212 2 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 2 214 2 215 dcl message_user_field_parameter_ptr pointer; 2 216 2 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 2 218 2 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 2 220 2 version character (8) unaligned, 2 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 222 2 pad bit (36), 2 223 2 n_references fixed binary, /* # of references in this list */ 2 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 2 225 like message_reference; /* the references themselves */ 2 226 2 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 2 228 2 229 dcl message_references_list_ptr pointer; 2 230 2 231 2 232 /* Definition of a reference to another message */ 2 233 2 234 dcl 1 message_reference aligned based (message_reference_ptr), 2 235 2 message_id bit (72), /* ID of the other message */ 2 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 2 237 2 from pointer, /* -> address list of authors of the other message */ 2 238 2 subject like message_text_field; /* subject of the other message */ 2 239 2 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 2 241 based (message_reference.subject.text_ptr); 2 242 2 243 dcl message_reference_ptr pointer; 2 244 2 245 2 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 2 247 2 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 2 249 2 pad pointer, /* forces even word alignment */ 2 250 2 version character (8) unaligned, 2 251 2 reference like message_reference; 2 252 2 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 2 254 2 255 dcl message_reference_parameter_ptr pointer; 2 256 2 257 2 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 2 259 2 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 2 261 2 text_ptr pointer, /* -> the actual text */ 2 262 2 text_lth fixed binary (21), /* length of said text */ 2 263 2 flags, 2 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 2 265* OFF => the text will always be a single line */ 2 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 2 267 2 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 2 269 2 270 dcl message_text_field_ptr pointer; 2 271 2 272 /* Definition of a section of the body of a message */ 2 273 2 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 2 275 2 header, 2 276 3 section_type fixed binary, /* type of "text" stored in this section */ 2 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 2 278 2 section_type_variable bit (144); /* the actual data (see below) */ 2 279 2 280 dcl message_body_section_ptr pointer; 2 281 2 282 2 283 /* Defined types of message body sections */ 2 284 2 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 2 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 2 287 fixed binary static options (constant); 2 288 2 289 2 290 /* Structures used to access the data for the different types of message body sections */ 2 291 2 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 2 293 2 header like message_body_section.header, 2 294 2 text_ptr pointer, /* -> the text */ 2 295 2 text_lth fixed binary (21), /* length of said text in characters */ 2 296 2 reserved bit (36); /* for exclusive use of the mail system */ 2 297 2 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 2 299 based (message_preformatted_body_section.text_ptr); 2 300 2 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 2 302 2 header like message_body_section.header, 2 303 2 bit_string_ptr pointer, /* -> the bit string */ 2 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 2 305 2 reserved bit (36); /* for exclusive use of the mail system */ 2 306 2 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 2 308 based (message_bit_string_body_section.bit_string_ptr); 2 309 2 310 2 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 2 312 2 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 2 314 2 pad pointer, /* forces even word alignment */ 2 315 2 version character (8) unaligned, 2 316 2 section like message_body_section; 2 317 2 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 2 319 2 320 dcl message_body_section_parameter_ptr pointer; 2 321 2 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 150 151 152 end sdm_misc_requests_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/22/86 1010.8 sdm_misc_requests_.pl1 >spec>install>1059>sdm_misc_requests_.pl1 148 1 10/27/83 2104.2 sdm_invocation.incl.pl1 >ldd>include>sdm_invocation.incl.pl1 150 2 05/22/86 1005.9 mlsys_message.incl.pl1 >spec>install>1059>mlsys_message.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. PROCESSED_MESSAGE constant fixed bin(17,0) initial dcl 1-47 ref 138 P_sci_ptr parameter pointer dcl 38 set ref 30 90 96* 97* 99* 100* 101* 102* 115 120* 122* 129* 133* 134* 143* 146* P_sdm_invocation_ptr parameter pointer dcl 39 ref 30 90 93 115 118 QUESTION 000000 constant varying char(128) initial array dcl 59 set ref 140* UNPROCESSED_MESSAGE constant fixed bin(17,0) initial dcl 1-47 ref 104 abbrev_enabled 000126 automatic bit(1) dcl 51 set ref 101* 104* abort_code 22 based fixed bin(35,0) level 2 dcl 1-6 set ref 124* 139* argument based char unaligned dcl 44 set ref 130 130 130 132 132 133* argument_idx 000104 automatic fixed bin(17,0) dcl 47 set ref 128* 129* argument_lth 000102 automatic fixed bin(21,0) dcl 46 set ref 129* 130 130 130 132 132 133 133 argument_ptr 000100 automatic pointer dcl 45 set ref 129* 130 130 130 132 132 133 body 62 based structure level 2 dcl 2-15 command_query_$yes_no 000016 constant entry external dcl 68 ref 140 debug_mode 15(04) based bit(1) level 3 packed unaligned dcl 1-6 set ref 104* emf_et_$send_mail_aborted 000014 external static fixed bin(35,0) dcl 64 ref 139 error_table_$bad_arg 000010 external static fixed bin(35,0) dcl 64 set ref 134* error_table_$badopt 000012 external static fixed bin(35,0) dcl 64 set ref 133* flags 15 based structure level 2 dcl 1-6 force 000151 automatic bit(1) unaligned dcl 56 set ref 126* 130* 132* 140 140* 143 header 64 based structure array level 4 in structure "message" dcl 2-15 in procedure "sdm_misc_requests_" header 30 based structure level 2 in structure "message" dcl 2-15 in procedure "sdm_misc_requests_" header based structure level 2 in structure "message_body_section" dcl 2-274 in procedure "sdm_misc_requests_" header 4 based structure level 3 in structure "message_user_field_parameter" dcl 2-208 in procedure "sdm_misc_requests_" header 10 based structure array level 3 in structure "message_user_fields_list" dcl 2-150 in procedure "sdm_misc_requests_" header based structure level 2 in structure "message_user_field" dcl 2-163 in procedure "sdm_misc_requests_" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 2-313 in procedure "sdm_misc_requests_" index builtin function dcl 80 ref 130 ioa_ 000020 constant entry external dcl 69 ref 104 message based structure level 1 dcl 2-15 message_body_section based structure level 1 dcl 2-274 message_envelope based structure level 1 dcl 2-61 message_info 6 based structure level 2 dcl 1-6 message_ptr 000154 automatic pointer dcl 2-53 in procedure "sdm_misc_requests_" set ref 94* 104 104 104 104 104 104 message_ptr 6 based pointer level 3 in structure "sdm_invocation" dcl 1-6 in procedure "sdm_misc_requests_" ref 94 message_redistribution based structure level 1 dcl 2-122 message_reference based structure level 1 dcl 2-234 message_state 10 based fixed bin(17,0) level 3 dcl 1-6 ref 104 138 140 message_subject based char unaligned dcl 2-51 set ref 104* message_text_field based structure level 1 dcl 2-260 message_user_field based structure level 1 dcl 2-163 n_arguments 000103 automatic fixed bin(17,0) dcl 47 set ref 96* 97 122* 128 null builtin function dcl 80 ref 101 101 request_name 000127 automatic char(72) unaligned dcl 54 set ref 120* 140* sdm_invocation based structure level 1 dcl 1-6 sdm_invocation_ptr 000152 automatic pointer dcl 1-38 set ref 93* 94 104 104 118* 124 138 139 140 ssu_$abort_line 000022 constant entry external dcl 70 ref 97 133 134 143 ssu_$abort_subsystem 000024 constant entry external dcl 71 ref 146 ssu_$arg_count 000026 constant entry external dcl 72 ref 96 122 ssu_$arg_ptr 000030 constant entry external dcl 73 ref 129 ssu_$get_abbrev_info 000032 constant entry external dcl 74 ref 101 ssu_$get_invocation_count 000034 constant entry external dcl 75 ref 102 ssu_$get_subsystem_and_request_name 000036 constant entry external dcl 76 ref 120 ssu_$get_subsystem_name 000040 constant entry external dcl 77 ref 99 ssu_$get_subsystem_version 000042 constant entry external dcl 78 ref 100 subject 50 based structure level 3 dcl 2-15 subsystem_level 000125 automatic fixed bin(17,0) dcl 50 set ref 102* 104 104* subsystem_name 000105 automatic char(32) unaligned dcl 49 set ref 99* 104* subsystem_version 000115 automatic char(32) unaligned dcl 49 set ref 100* 104* text_lth 52 based fixed bin(21,0) level 4 dcl 2-15 ref 104 104 104 text_ptr 50 based pointer level 4 dcl 2-15 ref 104 total_lines 62 based fixed bin(21,0) level 3 dcl 2-15 set ref 104* 104 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. MESSAGE_ADDRESS_LIST_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 2-285 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 internal static char(8) initial unaligned dcl 2-318 MESSAGE_DATE_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial unaligned dcl 2-79 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_PREFORMATTED_BODY_SECTION internal static fixed bin(17,0) initial dcl 2-285 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial unaligned dcl 2-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial unaligned dcl 2-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial unaligned dcl 2-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial unaligned dcl 2-253 MESSAGE_TEXT_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_TRACE_VERSION_2 internal static char(8) initial unaligned dcl 2-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial unaligned dcl 2-158 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 internal static char(8) initial unaligned dcl 2-213 MESSAGE_VERSION_2 internal static char(8) initial unaligned dcl 2-49 MODIFIED_MESSAGE internal static fixed bin(17,0) initial dcl 1-47 SDM_INVOCATION internal static char(8) initial unaligned dcl 1-36 addr builtin function dcl 80 message_address_list_user_field based structure level 1 dcl 2-190 message_bit_string_body_section based structure level 1 dcl 2-301 message_bit_string_body_section_bit_string based bit unaligned dcl 2-307 message_body_section_parameter based structure level 1 dcl 2-313 message_body_section_parameter_ptr automatic pointer dcl 2-320 message_body_section_ptr automatic pointer dcl 2-280 message_date_user_field based structure level 1 dcl 2-195 message_envelope_parameter based structure level 1 dcl 2-74 message_envelope_parameter_ptr automatic pointer dcl 2-81 message_envelope_ptr automatic pointer dcl 2-69 message_integer_user_field based structure level 1 dcl 2-200 message_n_body_sections automatic fixed bin(17,0) dcl 2-55 message_n_redistributions automatic fixed bin(17,0) dcl 2-55 message_n_user_fields automatic fixed bin(17,0) dcl 2-55 message_preformatted_body_section based structure level 1 dcl 2-292 message_preformatted_body_section_text based char unaligned dcl 2-298 message_redistribution_comment based char unaligned dcl 2-131 message_redistribution_parameter based structure level 1 dcl 2-139 message_redistribution_parameter_ptr automatic pointer dcl 2-146 message_redistribution_ptr automatic pointer dcl 2-134 message_redistributions_list based structure level 1 dcl 2-109 message_reference_parameter based structure level 1 dcl 2-248 message_reference_parameter_ptr automatic pointer dcl 2-255 message_reference_ptr automatic pointer dcl 2-243 message_reference_subject based char unaligned dcl 2-240 message_references_list based structure level 1 dcl 2-219 message_references_list_n_references automatic fixed bin(17,0) dcl 2-55 message_references_list_ptr automatic pointer dcl 2-229 message_text_field_ptr automatic pointer dcl 2-270 message_text_field_text based char unaligned dcl 2-268 message_text_user_field based structure level 1 dcl 2-183 message_text_user_field_text based char unaligned dcl 2-187 message_trace based structure level 1 dcl 2-87 message_trace_n_relays automatic fixed bin(17,0) dcl 2-55 message_trace_ptr automatic pointer dcl 2-105 message_user_field_parameter based structure level 1 dcl 2-208 message_user_field_parameter_ptr automatic pointer dcl 2-215 message_user_field_ptr automatic pointer dcl 2-169 message_user_fields_list based structure level 1 dcl 2-150 processing_state automatic fixed bin(2,0) dcl 52 question_idx automatic fixed bin(17,0) dcl 55 sdm_area based area(1024) dcl 1-40 NAMES DECLARED BY EXPLICIT CONTEXT. quit_request 000554 constant entry external dcl 115 sdm_misc_requests_ 000272 constant entry external dcl 30 self_identify 000302 constant entry external dcl 90 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1330 1374 1110 1340 Length 1630 1110 44 220 220 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME sdm_misc_requests_ 226 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME sdm_misc_requests_ 000100 argument_ptr sdm_misc_requests_ 000102 argument_lth sdm_misc_requests_ 000103 n_arguments sdm_misc_requests_ 000104 argument_idx sdm_misc_requests_ 000105 subsystem_name sdm_misc_requests_ 000115 subsystem_version sdm_misc_requests_ 000125 subsystem_level sdm_misc_requests_ 000126 abbrev_enabled sdm_misc_requests_ 000127 request_name sdm_misc_requests_ 000151 force sdm_misc_requests_ 000152 sdm_invocation_ptr sdm_misc_requests_ 000154 message_ptr sdm_misc_requests_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_ne_as call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. command_query_$yes_no ioa_ ssu_$abort_line ssu_$abort_subsystem ssu_$arg_count ssu_$arg_ptr ssu_$get_abbrev_info ssu_$get_invocation_count ssu_$get_subsystem_and_request_name ssu_$get_subsystem_name ssu_$get_subsystem_version THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. emf_et_$send_mail_aborted error_table_$bad_arg error_table_$badopt LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 30 000266 33 000277 90 000300 93 000307 94 000313 96 000315 97 000326 99 000356 100 000370 101 000402 102 000423 104 000440 110 000551 115 000552 118 000561 120 000565 122 000602 124 000614 126 000616 128 000617 129 000627 130 000645 132 000674 133 000707 134 000743 136 000770 138 000772 139 000775 140 001000 143 001045 146 001067 152 001106 ----------------------------------------------------------- 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