COMPILATION LISTING OF SEGMENT imft_mail_interface_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 11/21/83 1213.6 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* Interim mechanism for IMFT to send mail/messages: should be eliminated when mail_system_ allows setting message access 7* class and sending interactive messages */ 8 9 /* Created: July 1982 by G. Palter as part of proper AIM support */ 10 11 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 12 13 14 imft_mail_interface_: 15 procedure (); 16 17 return; /* not an entrypoint */ 18 19 20 /* Parameters */ 21 22 dcl P_sender_name character (*) parameter; /* full name of sender (ie: foreign system) */ 23 dcl P_destination character (*) parameter; /* user to receive the message (Person.Project) */ 24 dcl P_message_type fixed binary parameter; /* type of message: ordinary or interactive */ 25 dcl P_subject character (*) parameter; /* subject of mesage */ 26 dcl P_text character (*) parameter; /* text of message */ 27 dcl P_access_class bit (72) aligned parameter; /* access class of message */ 28 dcl P_code fixed binary (35) parameter; 29 30 31 /* Remaining declarations */ 32 33 dcl message_text_buffer character (4 * sys_info$max_seg_size) based (message_text_buffer_ptr); 34 dcl message_text character (message_text_lth) based (message_text_buffer_ptr); 35 dcl message_text_lth fixed binary (21); 36 dcl message_text_buffer_ptr pointer; 37 38 dcl (ipc_priv_code, ring1_priv_code) fixed binary (35); 39 40 dcl IMFT_MAIL_INTERFACE_ character (32) static options (constant) initial ("imft_mail_interface_"); 41 42 dcl NOTIFY_MSG character (15) static options (constant) initial ("You have mail. 43 "); 44 45 dcl NL character (1) static options (constant) initial (" 46 "); 47 48 /* format: off */ 49 dcl DAY_NAMES (7) character (32) static options (constant) initial ( 50 "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", 51 "Saturday", "Sunday"); 52 53 dcl MONTH_NAMES (12) character (32) static options (constant) initial ( 54 "January", "February", "March", "April", "May", "June", 55 "July", "August", "September", "October", "November", "December"); 56 57 dcl (error_table_$bad_subr_arg, error_table_$bigarg) 58 fixed binary (35) external; 59 /* format: on */ 60 61 dcl sys_info$max_seg_size fixed binary (19) external; 62 63 dcl decode_clock_value_$date_time 64 entry (fixed binary (71), fixed binary, fixed binary, fixed binary, fixed binary, fixed binary, fixed binary, 65 fixed binary (71), fixed binary, character (3), fixed binary (35)); 66 dcl get_temp_segment_ entry (character (*), pointer, fixed binary (35)); 67 dcl release_temp_segment_ entry (character (*), pointer, fixed binary (35)); 68 dcl send_mail_$access_class entry (character (*), character (*), pointer, bit (72) aligned, fixed binary (35)); 69 dcl system_privilege_$ipc_priv_off entry (fixed binary (35)); 70 dcl system_privilege_$ipc_priv_on entry (fixed binary (35)); 71 dcl system_privilege_$ring1_priv_off entry (fixed binary (35)); 72 dcl system_privilege_$ring1_priv_on entry (fixed binary (35)); 73 dcl user_info_ entry (character (*), character (*)); 74 75 dcl (addr, after, before, clock, convert, index, length, ltrim, null, rtrim, substr, unspec) builtin; 76 77 dcl (cleanup, linkage_error) condition; 78 79 /* Deliver a messages to the specified user */ 80 81 deliver_message: 82 entry (P_sender_name, P_destination, P_message_type, P_subject, P_text, P_access_class, P_code); 83 84 if (P_message_type ^= ORDINARY_DELIVERY) & (P_message_type ^= INTERACTIVE_DELIVERY) then do; 85 P_code = error_table_$bad_subr_arg; 86 return; 87 end; 88 89 if index (P_destination, ".") = 0 then do; /* only accepts Person.Project */ 90 INVALID_DESTINATION_SYNTAX: 91 P_code = error_table_$bad_subr_arg; 92 return; 93 end; 94 if index (after (P_destination, "."), ".") ^= 0 then go to INVALID_DESTINATION_SYNTAX; 95 if (before (P_destination, ".") = "") | (after (P_destination, ".") = "") then go to INVALID_DESTINATION_SYNTAX; 96 97 98 /* Try to turn on ring-1 and IPC privileges: we might be sending down... */ 99 100 ipc_priv_code, ring1_priv_code = -1; /* non-zero => we didn't turn privilege on */ 101 102 message_text_buffer_ptr = null (); /* for cleanup handler */ 103 104 on condition (cleanup) 105 begin; 106 if message_text_buffer_ptr ^= null () then 107 call release_temp_segment_ (IMFT_MAIL_INTERFACE_, message_text_buffer_ptr, (0)); 108 if ipc_priv_code = 0 then call system_privilege_$ipc_priv_off ((0)); 109 if ring1_priv_code = 0 then call system_privilege_$ring1_priv_off ((0)); 110 end; 111 112 on condition (linkage_error) go to CANT_SET_PRIVILEGE; 113 114 call system_privilege_$ring1_priv_on (ring1_priv_code); 115 call system_privilege_$ipc_priv_on (ipc_priv_code); 116 117 118 CANT_SET_PRIVILEGE: 119 if P_message_type = ORDINARY_DELIVERY then do; 120 121 /* Send a piece of mail: construct the header, send the mail, and send the notification */ 122 123 call get_temp_segment_ (IMFT_MAIL_INTERFACE_, message_text_buffer_ptr, P_code); 124 if P_code ^= 0 then go to RETURN_FROM_DELIVER_MESSAGE; 125 126 call format_message (); 127 128 unspec (send_mail_info) = ""b; 129 send_mail_info.version = send_mail_info_version_2; 130 send_mail_info.always_add = "1"b; 131 send_mail_info.sent_from = P_sender_name; 132 133 call send_mail_$access_class (P_destination, message_text, addr (send_mail_info), P_access_class, P_code); 134 135 if P_code = 0 then do; /* got through OK */ 136 send_mail_info.always_add = "0"b; /* notification is an express message */ 137 send_mail_info.wakeup, send_mail_info.notify = "1"b; 138 call send_mail_$access_class (P_destination, NOTIFY_MSG, addr (send_mail_info), P_access_class, (0)); 139 end; 140 end; 141 142 143 else do; 144 145 /* Interactive message: send it without any fancy headers */ 146 147 unspec (send_mail_info) = ""b; 148 send_mail_info.version = send_mail_info_version_2; 149 send_mail_info.wakeup, /* normal interactive message */ 150 send_mail_info.always_add = "1"b; 151 send_mail_info.sent_from = P_sender_name; 152 153 call send_mail_$access_class (P_destination, P_text, addr (send_mail_info), P_access_class, P_code); 154 end; 155 156 157 /* All done: cleanup; P_code is already set */ 158 159 RETURN_FROM_DELIVER_MESSAGE: 160 if message_text_buffer_ptr ^= null () then 161 call release_temp_segment_ (IMFT_MAIL_INTERFACE_, message_text_buffer_ptr, (0)); 162 163 if ipc_priv_code = 0 then call system_privilege_$ipc_priv_off ((0)); 164 if ring1_priv_code = 0 then call system_privilege_$ring1_priv_off ((0)); 165 166 return; 167 168 /* Formats a message by building the standard header */ 169 170 format_message: 171 procedure (); 172 173 message_text_lth = 0; 174 175 call add ("Date: "); 176 call format_date (); 177 call add (NL); 178 179 call add ("From: "); 180 call format_sender (); 181 call add (NL); 182 183 if P_subject ^= "" then do; 184 call add ("Subject: "); 185 call add_trimmed (P_subject); 186 call add (NL); 187 end; 188 189 call add ("To: "); 190 call add_trimmed (P_destination); 191 call add (NL); 192 193 call add (NL); 194 195 call add_trimmed (P_text); 196 197 return; 198 199 /* Internal to format_message: add text to the message */ 200 201 add: 202 procedure (p_text); 203 204 text_lth = length (p_text); 205 go to ACTUALLY_ADD_THE_TEXT; 206 207 208 /* Internal to format_message: add text to the message but first remove trailing blanks */ 209 210 add_trimmed: 211 entry (p_text); 212 213 text_lth = length (rtrim (p_text)); 214 215 216 ACTUALLY_ADD_THE_TEXT: 217 if message_text_lth + text_lth > length (message_text_buffer) then do; 218 P_code = error_table_$bigarg; 219 go to RETURN_FROM_DELIVER_MESSAGE; 220 end; 221 222 begin; 223 dcl new_piece_of_message character (text_lth) unaligned defined (message_text_buffer) position (message_text_lth + 1); 224 new_piece_of_message = substr (p_text, 1, text_lth); 225 end; 226 227 message_text_lth = message_text_lth + text_lth; 228 229 return; 230 231 232 dcl p_text character (*) parameter; 233 dcl text_lth fixed binary (21); 234 235 end add; 236 237 /* Internal to format_message: formats the current date/time */ 238 239 format_date: 240 procedure (); 241 242 dcl four_digits picture "9999"; 243 dcl two_digits picture "99"; 244 dcl time_zone character (3); 245 dcl (month, day_of_month, year, hour, minute, day_of_week) fixed binary; 246 dcl code fixed binary (35); 247 248 time_zone = ""; /* use default time zone */ 249 250 call decode_clock_value_$date_time (clock (), month, day_of_month, year, hour, minute, (0), (0), 251 day_of_week, time_zone, code); 252 253 if code ^= 0 then /* shouldn't happen, but... */ 254 call add ("unknown"); 255 256 else do; 257 call add_trimmed (DAY_NAMES (day_of_week)); 258 call add (", "); 259 call add (ltrim (convert (two_digits, day_of_month), "0")); 260 call add (" "); 261 call add_trimmed (MONTH_NAMES (month)); 262 call add (" "); 263 call add (convert (four_digits, year)); 264 call add (" "); 265 call add (convert (two_digits, hour)); 266 call add (":"); 267 call add (convert (two_digits, minute)); 268 call add (" "); 269 call add (time_zone); 270 end; 271 272 return; 273 274 end format_date; 275 276 /* Internal to format_message: formats the sender */ 277 278 format_sender: 279 procedure (); 280 281 dcl (my_person_id, my_project_id) character (32); 282 283 call user_info_ (my_person_id, my_project_id); 284 285 if P_sender_name ^= "" then do; 286 call add_trimmed (P_sender_name); 287 call add (" <"); 288 end; 289 290 call add_trimmed (my_person_id); 291 call add ("."); 292 call add_trimmed (my_project_id); 293 294 if P_sender_name ^= "" then call add (">"); 295 296 return; 297 298 end format_sender; 299 300 end format_message; 301 1 1 /* BEGIN INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 1 2 /* Created: June 1983 by G. Palter */ 1 3 1 4 /* Options for the mail_system_$deliver_message and mail_system_$redistribute_message entrypoints */ 1 5 1 6 dcl 1 deliver_options aligned based (deliver_options_ptr), 1 7 2 version character (8) unaligned, 1 8 2 delivery_mode fixed binary, /* deliver as an ordinary/interactive/express message */ 1 9 2 queueing_mode fixed binary, /* when to queue the message */ 1 10 2 queued_notification_mode fixed binary, /* when to notify sender about queued mail success/failure */ 1 11 2 flags, 1 12 3 abort bit (1) unaligned, /* ON => don't send it if any fatal errors are detected */ 1 13 3 send_if_empty bit (1) unaligned, /* ON => send the message even if its body is empty */ 1 14 3 recipient_notification bit (1) unaligned, /* ON => send "You have mail." notification */ 1 15 3 acknowledge bit (1) unaligned, /* ON => request ACK message when recipients read it */ 1 16 3 queue_mailing_lists bit (1) unaligned, /* ON => always queue the message for mailing lists */ 1 17 3 mbz bit (31) unaligned; /* must be set to ""b by the caller */ 1 18 1 19 dcl DELIVER_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsdlo02"); 1 20 1 21 dcl deliver_options_ptr pointer; 1 22 1 23 /* Defined modes of delivery */ 1 24 1 25 dcl (ORDINARY_DELIVERY initial (1), /* send as an ordinary message */ 1 26 INTERACTIVE_DELIVERY initial (2), /* send as an interactive message */ 1 27 EXPRESS_DELIVERY initial (3)) /* send as an express interactive message; ie: deliver the 1 28* message only if the user is logged in */ 1 29 fixed binary static options (constant); 1 30 1 31 /* Defined modes for queuing mail on transient errors */ 1 32 1 33 dcl (NEVER_QUEUE initial (1), /* never queue: convert into a fatal error */ 1 34 QUEUE_FOREIGN_WHEN_NEEDED initial (2), /* never queue local mail; queue foreign mail on error */ 1 35 QUEUE_WHEN_NEEDED initial (3), /* queue all mail on any transient error */ 1 36 ALWAYS_QUEUE_FOREIGN initial (4), /* queue local mail on error; always queue foreign mail */ 1 37 ALWAYS_QUEUE initial (5)) /* always queue all mail */ 1 38 fixed binary static options (constant); 1 39 1 40 /* Defined modes of notification of success/failure to deliver queued mail */ 1 41 1 42 dcl (NEVER_NOTIFY initial (1), /* never notify the sender */ 1 43 NOTIFY_ON_ERROR initial (2), /* notify the sender only if it can not be delivered */ 1 44 ALWAYS_NOTIFY initial (3)) /* always notify the sender */ 1 45 fixed binary static options (constant); 1 46 1 47 /* Definition of the recipients of a message and the results of the attempted transmission */ 1 48 1 49 dcl 1 recipients_info aligned based (recipients_info_ptr), 1 50 2 header, 1 51 3 version character (8) unaligned, 1 52 3 area_ptr pointer, /* -> area for following structures; null => system free */ 1 53 3 expanded_recipients_result_list_ptr pointer, /* set -> expanded_recipients_result_list (if any) */ 1 54 3 n_recipients fixed binary, /* set to total # of recipients after expanding lists */ 1 55 3 n_unique_recipients fixed binary, /* set to total # of unique recipients */ 1 56 3 n_failed_recipients fixed binary, /* set to # of recipients that failed or would fail */ 1 57 3 n_lists fixed binary, /* # of address lists of recipients */ 1 58 2 lists (recipients_info_n_lists refer (recipients_info.n_lists)), 1 59 3 address_list_ptr pointer, /* -> an address list containing recipients */ 1 60 3 recipients_result_list_ptr pointer; /* set -> recipients_result_list for this address list */ 1 61 1 62 dcl RECIPIENTS_INFO_VERSION_2 character (8) static options (constant) initial ("mlsrcpt2"); 1 63 1 64 dcl (recipients_info_ptr, recipients_result_list_ptr, expanded_recipients_result_list_ptr) pointer; 1 65 1 66 dcl (recipients_info_n_lists, recipients_result_list_n_addresses, expanded_recipients_result_list_n_entries) 1 67 fixed binary; /* used to allocate these structures */ 1 68 1 69 1 70 /* Data structure returned by the mail system recording the results of the mailing for one of the input address lists */ 1 71 1 72 dcl 1 recipients_result_list aligned based (recipients_result_list_ptr), 1 73 2 n_addresses fixed binary, /* set to # of address in corresponding address list */ 1 74 2 pad bit (36), 1 75 2 results (recipients_result_list_n_addresses refer (recipients_result_list.n_addresses)), 1 76 3 code fixed binary (35), /* set to describe results of attempted delivery */ 1 77 3 expanded_list_info, /* set to identify any failing addresses found in the 1 78* expansion of this address ... */ 1 79 4 first_entry_idx fixed binary (18) unaligned unsigned, 1 80 /* ... index of first such address in structure below ... */ 1 81 4 n_entries fixed binary (18) unaligned unsigned,/* ... # of such addresses there for this address */ 1 82 3 duplicate_info, /* set to identify the prior address (if any) for which this 1 83* is a duplicate ... */ 1 84 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 1 85 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 1 86 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 1 87* being queued due to a transient error */ 1 88 1 89 1 90 /* Describes fatal or transient errors for those recipients which are part of mailing lists of named groups in one of the 1 91* caller's address lists */ 1 92 1 93 dcl 1 expanded_recipients_result_list aligned based (expanded_recipients_result_list_ptr), 1 94 2 n_entries fixed binary, /* set to # of failing expanded recipients */ 1 95 2 pad bit (36), 1 96 2 entries (expanded_recipients_result_list_n_entries refer (expanded_recipients_result_list.n_entries)), 1 97 3 address_ptr pointer, /* -> the failing address from the list/group */ 1 98 3 code fixed binary (35), /* set to describe why delivery failed */ 1 99 3 parent_address, /* set to identify the original recipient of whose expansion 1 100* this address is a part ... */ 1 101 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 1 102 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 1 103 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 1 104* being queued due to a transient error */ 1 105 1 106 /* END INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 302 303 2 1 /* BEGIN send_mail_info include file */ 2 2 2 3 dcl send_mail_info_version_2 fixed bin init(2); 2 4 2 5 dcl 1 send_mail_info aligned, 2 6 2 version fixed bin, /* = 2 */ 2 7 2 sent_from char(32) aligned, 2 8 2 switches, 2 9 3 wakeup bit(1) unal, 2 10 3 mbz1 bit(1) unal, 2 11 3 always_add bit(1) unal, 2 12 3 never_add bit(1) unal, 2 13 3 notify bit(1) unal, 2 14 3 acknowledge bit(1) unal, 2 15 3 mbz bit(30) unal; 2 16 2 17 /* END send_mail_info include file */ 304 305 306 end imft_mail_interface_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/21/83 1211.2 imft_mail_interface_.pl1 >spec>on>P0073>imft_mail_interface_.pl1 302 1 10/27/83 2104.2 mlsys_deliver_info.incl.pl1 >ldd>include>mlsys_deliver_info.incl.pl1 304 2 04/27/78 1504.4 send_mail_info.incl.pl1 >ldd>include>send_mail_info.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. DAY_NAMES 000140 constant char(32) initial array unaligned dcl 49 set ref 257* IMFT_MAIL_INTERFACE_ 000235 constant char(32) initial unaligned dcl 40 set ref 106* 123* 159* INTERACTIVE_DELIVERY constant fixed bin(17,0) initial dcl 1-25 ref 84 MONTH_NAMES 000000 constant char(32) initial array unaligned dcl 53 set ref 261* NL 000230 constant char(1) initial unaligned dcl 45 set ref 177* 181* 186* 191* 193* NOTIFY_MSG 000231 constant char(15) initial unaligned dcl 42 set ref 138* ORDINARY_DELIVERY constant fixed bin(17,0) initial dcl 1-25 ref 84 118 P_access_class parameter bit(72) dcl 27 set ref 81 133* 138* 153* P_code parameter fixed bin(35,0) dcl 28 set ref 81 85* 90* 123* 124 133* 135 153* 218* P_destination parameter char unaligned dcl 23 set ref 81 89 94 95 95 133* 138* 153* 190* P_message_type parameter fixed bin(17,0) dcl 24 ref 81 84 84 118 P_sender_name parameter char unaligned dcl 22 set ref 81 131 151 285 286* 294 P_subject parameter char unaligned dcl 25 set ref 81 183 185* P_text parameter char unaligned dcl 26 set ref 81 153* 195* addr builtin function dcl 75 ref 133 133 138 138 153 153 after builtin function dcl 75 ref 94 95 always_add 11(02) 000123 automatic bit(1) level 3 packed unaligned dcl 2-5 set ref 130* 136* 149* before builtin function dcl 75 ref 95 cleanup 000106 stack reference condition dcl 77 ref 104 clock builtin function dcl 75 ref 250 250 code 000161 automatic fixed bin(35,0) dcl 246 set ref 250* 253 convert builtin function dcl 75 ref 259 259 263 263 265 265 267 267 day_of_month 000154 automatic fixed bin(17,0) dcl 245 set ref 250* 259 259 day_of_week 000160 automatic fixed bin(17,0) dcl 245 set ref 250* 257 decode_clock_value_$date_time 000016 constant entry external dcl 63 ref 250 error_table_$bad_subr_arg 000010 external static fixed bin(35,0) dcl 57 ref 85 90 error_table_$bigarg 000012 external static fixed bin(35,0) dcl 57 ref 218 four_digits automatic picture(4) unaligned dcl 242 ref 263 263 get_temp_segment_ 000020 constant entry external dcl 66 ref 123 hour 000156 automatic fixed bin(17,0) dcl 245 set ref 250* 265 265 index builtin function dcl 75 ref 89 94 ipc_priv_code 000104 automatic fixed bin(35,0) dcl 38 set ref 100* 108 115* 163 length builtin function dcl 75 ref 204 213 216 linkage_error 000114 stack reference condition dcl 77 ref 112 ltrim builtin function dcl 75 ref 259 259 message_text based char unaligned dcl 34 set ref 133* message_text_buffer based char unaligned dcl 33 set ref 216 224* 224 message_text_buffer_ptr 000102 automatic pointer dcl 36 set ref 102* 106 106* 123* 133 159 159* 216 224 message_text_lth 000100 automatic fixed bin(21,0) dcl 35 set ref 133 133 173* 216 224 227* 227 minute 000157 automatic fixed bin(17,0) dcl 245 set ref 250* 267 267 month 000153 automatic fixed bin(17,0) dcl 245 set ref 250* 261 my_person_id 000170 automatic char(32) unaligned dcl 281 set ref 283* 290* my_project_id 000200 automatic char(32) unaligned dcl 281 set ref 283* 292* new_piece_of_message defined char unaligned dcl 223 set ref 224* notify 11(04) 000123 automatic bit(1) level 3 packed unaligned dcl 2-5 set ref 137* null builtin function dcl 75 ref 102 106 159 p_text parameter char unaligned dcl 232 ref 201 204 210 213 224 release_temp_segment_ 000022 constant entry external dcl 67 ref 106 159 ring1_priv_code 000105 automatic fixed bin(35,0) dcl 38 set ref 100* 109 114* 164 rtrim builtin function dcl 75 ref 213 send_mail_$access_class 000024 constant entry external dcl 68 ref 133 138 153 send_mail_info 000123 automatic structure level 1 dcl 2-5 set ref 128* 133 133 138 138 147* 153 153 send_mail_info_version_2 000122 automatic fixed bin(17,0) initial dcl 2-3 set ref 129 148 2-3* sent_from 1 000123 automatic char(32) level 2 dcl 2-5 set ref 131* 151* substr builtin function dcl 75 ref 224 switches 11 000123 automatic structure level 2 dcl 2-5 sys_info$max_seg_size 000014 external static fixed bin(19,0) dcl 61 ref 216 224 system_privilege_$ipc_priv_off 000026 constant entry external dcl 69 ref 108 163 system_privilege_$ipc_priv_on 000030 constant entry external dcl 70 ref 115 system_privilege_$ring1_priv_off 000032 constant entry external dcl 71 ref 109 164 system_privilege_$ring1_priv_on 000034 constant entry external dcl 72 ref 114 text_lth 000100 automatic fixed bin(21,0) dcl 233 set ref 204* 213* 216 223 224 227 time_zone 000152 automatic char(3) unaligned dcl 244 set ref 248* 250* 269* two_digits automatic picture(2) unaligned dcl 243 ref 259 259 265 265 267 267 unspec builtin function dcl 75 set ref 128* 147* user_info_ 000036 constant entry external dcl 73 ref 283 version 000123 automatic fixed bin(17,0) level 2 dcl 2-5 set ref 129* 148* wakeup 11 000123 automatic bit(1) level 3 packed unaligned dcl 2-5 set ref 137* 149* year 000155 automatic fixed bin(17,0) dcl 245 set ref 250* 263 263 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ALWAYS_NOTIFY internal static fixed bin(17,0) initial dcl 1-42 ALWAYS_QUEUE internal static fixed bin(17,0) initial dcl 1-33 ALWAYS_QUEUE_FOREIGN internal static fixed bin(17,0) initial dcl 1-33 DELIVER_OPTIONS_VERSION_2 internal static char(8) initial unaligned dcl 1-19 EXPRESS_DELIVERY internal static fixed bin(17,0) initial dcl 1-25 NEVER_NOTIFY internal static fixed bin(17,0) initial dcl 1-42 NEVER_QUEUE internal static fixed bin(17,0) initial dcl 1-33 NOTIFY_ON_ERROR internal static fixed bin(17,0) initial dcl 1-42 QUEUE_FOREIGN_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 1-33 QUEUE_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 1-33 RECIPIENTS_INFO_VERSION_2 internal static char(8) initial unaligned dcl 1-62 deliver_options based structure level 1 dcl 1-6 deliver_options_ptr automatic pointer dcl 1-21 expanded_recipients_result_list based structure level 1 dcl 1-93 expanded_recipients_result_list_n_entries automatic fixed bin(17,0) dcl 1-66 expanded_recipients_result_list_ptr automatic pointer dcl 1-64 recipients_info based structure level 1 dcl 1-49 recipients_info_n_lists automatic fixed bin(17,0) dcl 1-66 recipients_info_ptr automatic pointer dcl 1-64 recipients_result_list based structure level 1 dcl 1-72 recipients_result_list_n_addresses automatic fixed bin(17,0) dcl 1-66 recipients_result_list_ptr automatic pointer dcl 1-64 NAMES DECLARED BY EXPLICIT CONTEXT. ACTUALLY_ADD_THE_TEXT 001370 constant label dcl 216 ref 205 CANT_SET_PRIVILEGE 000624 constant label dcl 118 ref 112 INVALID_DESTINATION_SYNTAX 000420 constant label dcl 90 ref 94 95 RETURN_FROM_DELIVER_MESSAGE 001052 constant label dcl 159 ref 124 219 add 001322 constant entry internal dcl 201 ref 175 177 179 181 184 186 189 191 193 253 258 259 260 262 263 264 265 266 267 268 269 287 291 294 add_trimmed 001340 constant entry internal dcl 210 ref 185 190 195 257 261 286 290 292 deliver_message 000340 constant entry external dcl 81 format_date 001432 constant entry internal dcl 239 ref 176 format_message 001125 constant entry internal dcl 170 ref 126 format_sender 001772 constant entry internal dcl 278 ref 180 imft_mail_interface_ 000323 constant entry external dcl 14 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2354 2414 2120 2364 Length 2652 2120 40 222 233 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME imft_mail_interface_ 248 external procedure is an external procedure. on unit on line 104 80 on unit on unit on line 112 64 on unit format_message internal procedure shares stack frame of external procedure imft_mail_interface_. add 68 internal procedure is called during a stack extension. begin block on line 222 begin block shares stack frame of internal procedure add. format_date internal procedure shares stack frame of external procedure imft_mail_interface_. format_sender internal procedure shares stack frame of external procedure imft_mail_interface_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME add 000100 text_lth add imft_mail_interface_ 000100 message_text_lth imft_mail_interface_ 000102 message_text_buffer_ptr imft_mail_interface_ 000104 ipc_priv_code imft_mail_interface_ 000105 ring1_priv_code imft_mail_interface_ 000122 send_mail_info_version_2 imft_mail_interface_ 000123 send_mail_info imft_mail_interface_ 000152 time_zone format_date 000153 month format_date 000154 day_of_month format_date 000155 year format_date 000156 hour format_date 000157 minute format_date 000160 day_of_week format_date 000161 code format_date 000170 my_person_id format_sender 000200 my_project_id format_sender THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out call_int_this_desc return tra_ext enable shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. decode_clock_value_$date_time get_temp_segment_ release_temp_segment_ send_mail_$access_class system_privilege_$ipc_priv_off system_privilege_$ipc_priv_on system_privilege_$ring1_priv_off system_privilege_$ring1_priv_on user_info_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_subr_arg error_table_$bigarg sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 2 3 000316 14 000322 17 000331 81 000332 84 000373 85 000401 86 000404 89 000405 90 000420 92 000424 94 000425 95 000452 100 000471 102 000474 104 000476 106 000512 108 000540 109 000553 110 000566 112 000567 114 000606 115 000615 118 000624 123 000630 124 000651 126 000654 128 000655 129 000660 130 000662 131 000664 133 000672 135 000731 136 000734 137 000736 138 000742 140 000777 147 001000 148 001003 149 001005 151 001011 153 001016 159 001052 163 001100 164 001112 166 001124 170 001125 173 001126 175 001127 176 001141 177 001142 179 001152 180 001164 181 001165 183 001175 184 001204 185 001220 186 001232 189 001242 190 001254 191 001266 193 001276 195 001306 197 001320 201 001321 204 001335 205 001336 210 001337 213 001353 216 001370 218 001401 219 001404 223 001407 224 001411 227 001427 229 001431 239 001432 248 001433 250 001435 253 001475 257 001512 258 001524 259 001536 260 001577 261 001612 262 001624 263 001636 264 001657 265 001671 266 001713 267 001725 268 001747 269 001761 272 001771 278 001772 283 001773 285 002007 286 002016 287 002027 290 002041 291 002051 292 002063 294 002073 296 002114 ----------------------------------------------------------- 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