COMPILATION LISTING OF SEGMENT forum_mailer_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1110.32_Tue_mdt Options: optimize map 1 /****^ ************************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Massachusetts Institute of Technology, 1983 * 6* * * 7* ************************************************************** */ 8 9 10 11 12 /****^ HISTORY COMMENTS: 13* 1) change(86-07-29,Pattin), approve(86-07-29,MCR7354), 14* audit(86-08-03,Margolin), install(86-08-16,MR12.0-1128): 15* Renamed -subject to -new_subject to avoid conflict with trans_spec 16* ctl_arg. Removed dont_compress_sw from filling. 17* 2) change(91-09-05,Huen), approve(91-09-05,MCR8249), 18* audit(92-01-08,Zimmerman), install(92-04-27,MR12.5-1014): 19* phx20946: Generate correct info for mailed unproc trans header. 20* END HISTORY COMMENTS */ 21 22 23 forum_mailer_$mail: 24 proc (P_ssu_ptr, P_passport_info_ptr); 25 26 /* This module contains the Forum request to mail transactions. 27* 28* Jay Pattin 6/24/83 */ 29 30 declare (P_ssu_ptr, 31 P_passport_info_ptr) ptr parameter; 32 33 declare acknowledge bit (1) aligned, 34 address_ptr ptr, 35 arg_count fixed bin, 36 arg_idx fixed bin, 37 arg_ptr ptr, 38 arg_len fixed bin (21), 39 arg char (arg_len) based (arg_ptr), 40 brief bit (1) aligned, 41 code fixed bin (35), 42 fill bit (1) aligned, 43 forum_idx fixed bin, 44 header char (256), 45 header_len fixed bin (21), 46 idx fixed bin, 47 line_len fixed bin, 48 local_bcc ptr, 49 local_cc ptr, 50 local_reply_to ptr, 51 local_to ptr, 52 name char (32) varying, 53 ssu_ptr ptr, 54 subject char (256), 55 trans_pic pic "zz9999", 56 trans_time fixed bin (71), 57 user char (32) varying; 58 59 declare 1 fdoc aligned like format_document_options, 60 1 (aufp, dufp, tufp) aligned like message_user_field_parameter, 61 1 mbsp aligned like message_body_section_parameter, 62 1 do aligned like deliver_options, 63 1 pca aligned like parse_ca_options, 64 1 ri aligned, 65 2 header like recipients_info.header, 66 2 lists (3) like recipients_info.lists; 67 68 declare (addr, index, ltrim, null, rtrim, string, substr) 69 builtin, 70 cleanup condition; 71 72 declare (error_table_$bad_conversion, 73 error_table_$badopt, 74 error_table_$noarg, 75 error_table_$recoverable_error) 76 fixed bin (35) external; 77 78 declare cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)), 79 format_document_$string entry (char (*), char (*), fixed bin (21), ptr, fixed bin (35)), 80 forum_trans_specs_$parse_specs 81 entry (ptr, fixed bin, bit (36) aligned, entry, fixed bin, char (*), 82 char (*), ptr), 83 forum_trans_util_$read_trans entry (ptr, fixed bin, fixed bin, ptr, fixed bin (35)), 84 ioa_$rsnnl entry options (variable), 85 mail_system_$add_address entry (ptr, ptr, char (8), fixed bin (35)), 86 mail_system_$add_user_field entry (ptr, ptr, fixed bin, bit (1) aligned, fixed bin (35)), 87 mail_system_$create_message entry (char (8), ptr, fixed bin (35)), 88 mail_system_$create_user_mailbox_address 89 entry (char (*) varying, char (*) varying, char (*) varying, ptr, 90 fixed bin (35)), 91 mail_system_$deliver_message entry (ptr, ptr, ptr, fixed bin (35)), 92 mail_system_$free_address_list 93 entry (ptr, fixed bin (35)), 94 mail_system_$free_message entry (ptr, fixed bin (35)), 95 mail_system_$get_user_field_id 96 entry (char (*) varying, bit (36) aligned, char (*) varying, fixed bin (35)), 97 mail_system_$replace_bcc entry (ptr, ptr, fixed bin (35)), 98 mail_system_$replace_body entry (ptr, ptr, fixed bin (35)), 99 mail_system_$replace_cc entry (ptr, ptr, fixed bin (35)), 100 mail_system_$replace_reply_to entry (ptr, ptr, fixed bin (35)), 101 mail_system_$replace_subject entry (ptr, char (*), fixed bin (35)), 102 mail_system_$replace_to entry (ptr, ptr, fixed bin (35)), 103 mail_system_$replace_user_field 104 entry (ptr, fixed bin, ptr, bit (1) aligned, fixed bin (35)), 105 mlsys_utils_$free_delivery_results 106 entry (ptr, fixed bin (35)), 107 mlsys_utils_$parse_address_list_control_args 108 entry (ptr, fixed bin, ptr, char (8), ptr, ptr, fixed bin (35)), 109 mlsys_utils_$print_delivery_results 110 entry (ptr, bit (1) aligned, ptr, fixed bin (35)), 111 pathname_ entry (char (*), char (*)) returns (char (168)), 112 ssu_$abort_line entry options (variable), 113 ssu_$arg_count entry (ptr, fixed bin), 114 ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 115 1 1 /* START OF: forum_passport.incl.pl1 * * * * * * * * * * * * * * * * */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-07-30,Pattin), approve(86-07-30,MCR7354), 1 7* audit(86-08-03,Margolin), install(86-08-16,MR12.0-1128): 1 8* Added trailer_format. 1 9* END HISTORY COMMENTS */ 1 10 1 11 1 12 declare passport_info_ptr ptr; 1 13 1 14 declare 1 passport aligned based (passport_info_ptr), 1 15 2 version fixed bin, /* 2 */ 1 16 2 forum_idx fixed bin, /* current forum */ 1 17 2 forum_dir char (168) unal, /* where forum lives */ 1 18 2 forum_name char (32) unal, /* Current forum I'm at */ 1 19 2 forum_name_len fixed bin, /* length of forum_name without suffix */ 1 20 2 flags unal, 1 21 3 brief_sw bit (1) unal, /* specified at invocation */ 1 22 3 talk_fill bit (1) unal, /* God knows */ 1 23 3 print_fill bit (1) unal, /* God doesn't know */ 1 24 3 read_only bit (1) unal, 1 25 3 print_message bit (1) unal, /* Print chairman message on talk/reply */ 1 26 3 auto_write bit (1) unal, 1 27 3 mbz bit (30) unal, /* Future expansion */ 1 28 2 current_trans fixed bin, /* current transaction number */ 1 29 2 input_fill_width fixed bin, /* line length used for input filling */ 1 30 2 output_fill_width fixed bin, /* line length used for output filling */ 1 31 2 public_channel fixed bin (71), /* My transaction wakeup channel. */ 1 32 2 area_ptr ptr, /* used for random temporary storage */ 1 33 2 first_trans_ptr ptr, /* ptrs to linked list of transactions copied to */ 1 34 2 last_trans_ptr ptr, /* user ring */ 1 35 2 unprocessed_trans_ptr ptr, /* If this isn't null, we got one pending. */ 1 36 2 unprocessed_reply_trans fixed bin, /* If nonzero, unprocessed trans is a reply. */ 1 37 2 unprocessed_forum_dir char (168), /* Directory containing meeting unproc is for. */ 1 38 2 unprocessed_forum_name char (32), /* Name of meeting unproc is for */ 1 39 2 unprocessed_name_len fixed bin, /* length (w/o suffix) of Name of meeting unproc is for */ 1 40 2 ssu_ptr ptr, /* Department of Redundancy Department. */ 1 41 2 next_passport_ptr ptr, /* list of all invocations */ 1 42 2 trailer_format fixed bin; 1 43 1 44 declare passport_version_2 fixed bin static options (constant) initial (2); 1 45 1 46 declare forum_area area based (passport.area_ptr), 1 47 no_suffix_name char (passport.forum_name_len) based (addr (passport.forum_name)); 1 48 1 49 declare forum_data_$version_string character (8) external, 1 50 forum_data_$central_directory 1 51 character (168) unaligned external, 1 52 forum_data_$info_directory character (168) unaligned external; 1 53 1 54 declare (TFMT_none init (0), 1 55 TFMT_number init (1), 1 56 TFMT_more init (2), 1 57 TFMT_reference init (3)) 1 58 fixed bin static options (constant); 1 59 1 60 /* END OF: forum_passport.incl.pl1 * * * * * * * * * * * * * * * * */ 116 117 2 1 /* ... BEGIN INCLUDE FILE forum_trans_list.incl.pl1 ... */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(86-07-30,Pattin), approve(86-07-30,MCR7354), 2 7* audit(86-08-07,Margolin), install(86-08-16,MR12.0-1128): 2 8* Added deleted switch. 2 9* END HISTORY COMMENTS */ 2 10 2 11 2 12 dcl forum_trans_list_ptr ptr; 2 13 dcl alloc_trans_list_size fixed bin; 2 14 2 15 dcl 1 forum_trans_list aligned based (forum_trans_list_ptr), 2 16 2 max_size fixed bin, 2 17 2 size fixed bin, 2 18 2 max_personid_len fixed bin, 2 19 2 list (alloc_trans_list_size refer (forum_trans_list.max_size)), 2 20 3 trans_num fixed bin (17), /* must be aligned */ 2 21 3 nref fixed bin (17) unaligned, 2 22 3 pref fixed bin (17) unaligned, 2 23 3 flags unaligned, 2 24 4 deleted bit (1) unaligned, 2 25 4 pad bit (35) unaligned; 2 26 2 27 dcl parse_flags_word bit (36) aligned; 2 28 2 29 dcl 1 parse_flags aligned based (addr (parse_flags_word)), 2 30 2 non_null bit (1) unal, /* on if trans_spec cannot be empty */ 2 31 2 only_one bit (1) unal, /* on if only one transaction may be specified */ 2 32 2 allow_deleted bit (1) unal, /* on if deleted transactions may be specified */ 2 33 2 must_be_deleted bit (1) unal, /* on if must be deleted */ 2 34 2 disallow_unproc bit (1) unal, /* on if unprocessed transaction not valid */ 2 35 2 disallow_meeting bit (1) unal, /* on if -meeting not allowed */ 2 36 2 disallow_reverse bit (1) unal, /* on if -reverse not allowed */ 2 37 2 disallow_idl bit (1) unal, /* on if -include_deleted not allowed */ 2 38 2 dont_read bit (1) unal, /* on if regexps, -sj, -text, userids, time not allowed */ 2 39 2 disallow_initial bit (1) unal, /* on if -initial not allowed */ 2 40 2 default_to_all bit (1) unal, /* on if defaults to all rather than current */ 2 41 2 default_to_unproc bit (1) unal, /* on if defaults to unproc, not current */ 2 42 2 disallow_cmsg bit (1) unal, /* no chairman_message */ 2 43 2 disallow_by_chain bit (1) unal, /* no -by_chain */ 2 44 2 allow_inhibit_error bit (1) unal, /* don't complain if none selected and -ihe given */ 2 45 2 call_on_non_ctl_arg bit (1) unal, /* call request on bad arguments even if not ctl args */ 2 46 2 default_to_none bit (1) unal, /* allow no transactions to be selected */ 2 47 2 padding bit (19) unal; 2 48 2 49 dcl ANY bit (36) aligned init (""b); 2 50 dcl (NON_NULL init ("10000000000000000"b), 2 51 ONLY_ONE init ("01000000000000000"b), 2 52 ALLOW_DELETED init ("00100000000000000"b), 2 53 MUST_BE_DELETED init ("00110000000000000"b), 2 54 DISALLOW_UNPROC init ("00001000000000000"b), 2 55 DISALLOW_MTG init ("00000100000000000"b), 2 56 DISALLOW_REV init ("00000010000000000"b), 2 57 DISALLOW_IDL init ("00000001000000000"b), 2 58 DONT_READ init ("00000000100000000"b), 2 59 DISALLOW_INITIAL init ("00000000010000000"b), 2 60 DEFAULT_TO_ALL init ("00000000001000000"b), 2 61 DEFAULT_TO_UNPROC init ("00000000000100000"b), 2 62 DISALLOW_CMSG init ("00000000000010000"b), 2 63 DISALLOW_BYCHAIN init ("00000000000001000"b), 2 64 ALLOW_IHE init ("00000000000000100"b), 2 65 CALL_ON_BAD_ARGS init ("00000000000000010"b), 2 66 DEFAULT_TO_NONE init ("00000000000000001"b) 2 67 ) bit (17) aligned internal static options (constant); 2 68 2 69 /* ... END INCLUDE FILE forum_trans_list.incl.pl1 ... */ 118 119 3 1 /* BEGIN INCLUDE FILE: forum_user_trans.incl.pl1 */ 3 2 3 3 dcl alloc_text_length fixed bin (21); /* length of text area to allocate */ 3 4 dcl alloc_subject_length fixed bin (21); /* length of subject area to allocate */ 3 5 dcl forum_user_trans_ptr ptr; /* pointer to below structure */ 3 6 3 7 dcl 1 forum_user_trans based (forum_user_trans_ptr) aligned, 3 8 2 type fixed bin, /* type of transaction */ 3 9 2 person_id char (22), /* person_id of author of this transaction */ 3 10 2 project_id char (9), /* project_id of author of this transaction */ 3 11 2 time fixed bin (71), /* time transaction was entered */ 3 12 2 trans_no fixed bin, /* number of this transaction */ 3 13 2 next_trans_ptr ptr, /* pointer (in user ring) of next transaction */ 3 14 2 prev_trans_ptr ptr, /* pointer (in user ring) of previous transaction */ 3 15 2 subject_length fixed bin (21), /* length of subject field of transaction */ 3 16 2 text_length fixed bin (21), /* length of text field of transaction */ 3 17 2 unfilled bit (1) aligned, /* set if transaction is NOT stored filled */ 3 18 2 subject char (alloc_subject_length refer (forum_user_trans.subject_length)) unaligned, /* subject of transaction */ 3 19 2 text char (alloc_text_length refer (forum_user_trans.text_length)) unaligned; /* text of transaction */ 3 20 3 21 declare user_trans_type fixed bin static options (constant) initial (1); 3 22 declare message_type fixed bin static options (constant) initial (2); 3 23 3 24 declare (ONLY_UNDELETED init (0), 3 25 INCLUDE_DELETED init (1), 3 26 ONLY_DELETED init (2)) 3 27 fixed bin static options (constant); 3 28 3 29 /* END INCLUDE FILE: forum_user_trans.incl.pl1 */ 120 121 4 1 /* BEGIN INCLUDE FILE format_document_options.incl.pl1 4 2* 4 3* Modified 82.10.18 by Paul W. Benjamin to add dont_compress_sw and upgrade 4 4* to version_2. 4 5* Modified 83.02.15 by PWB to add break_word_sw and max_line_length_sw. 4 6* Modified 83.03.01 by PWB to add dont_break_indented_lines_sw. 4 7* Modified 83.03.03 by PWB to add sub_err_sw. 4 8* Modified 83.06.07 by PWB to add dont_fill_sw. 4 9* Modified 83.06.09 by PWB to add hyphenation_sw and syllable_size. 4 10**/ 4 11 4 12 dcl 1 format_document_options aligned based (format_document_options_ptr), 4 13 2 version_number fixed bin, /* input */ 4 14 /* must be format_document_version_2 */ 4 15 2 indentation fixed bin, /* input */ 4 16 /* all lines must be indented by this value */ 4 17 2 line_length fixed bin, /* input */ 4 18 /* initial line length */ 4 19 2 switches, 4 20 3 pgno_sw bit (1) unal, /* input */ 4 21 /* end each page with a centered page number */ 4 22 3 adj_sw bit (1) unal, /* input */ 4 23 /* adjust mode initially on */ 4 24 /* only meaningful if dont_fill_sw = "0"b */ 4 25 3 galley_sw bit (1) unal, /* input */ 4 26 /* galley mode -- no page breaks */ 4 27 3 error_sw bit (1) unal, /* input */ 4 28 /* report all errors on error_output */ 4 29 3 literal_sw bit (1) unal, /* input */ 4 30 /* "1"b - interpret all lines as text */ 4 31 /* "0"b - lines that start with "." are controls */ 4 32 3 file_sw bit (1) unal, /* output */ 4 33 /* has meaning for non-zero storage system status codes */ 4 34 /* "1"b code refers to output file */ 4 35 /* "0"b code refers to input file */ 4 36 3 dont_compress_sw bit (1) unal, /* input */ 4 37 /* "1"b - don't compress white space */ 4 38 /* "0"b - compress white space when filling */ 4 39 3 break_word_sw bit (1) unal, /* input */ 4 40 /* "1"b - break a word rather than exceed line_length */ 4 41 /* "0"b - write an overlength line if no spaces found */ 4 42 3 max_line_length_sw bit (1) unal, /* input */ 4 43 /* "1"b - line_length cannot be exceeded */ 4 44 /* "0"b - line_length can be exceeded (by .pdw controls) */ 4 45 3 dont_break_indented_lines_sw /* input */ 4 46 bit (1) unal, /* don't break a line that begins with whitespace */ 4 47 /* when it is the last line, or the next line is */ 4 48 /* null or the next line begins with whitespace */ 4 49 3 sub_err_sw bit (1) unal, /* input */ 4 50 /* quietly call sub_err_ with diagnostic errors */ 4 51 3 dont_fill_sw bit (1) unal, /* input */ 4 52 /* "1"b - fill mode off initially */ 4 53 /* "0"b - fill mode on initially */ 4 54 3 hyphenation_sw bit (1) unal, 4 55 3 mbz bit (23) unal, /* input */ 4 56 /* MUST be zero */ 4 57 2 syllable_size 4 58 fixed bin; /* input */ 4 59 /* smallest portion of word */ 4 60 /* to be left by hyphenation */ 4 61 4 62 dcl format_document_options_ptr ptr; 4 63 dcl format_document_version_2 fixed bin int static options (constant) init (2); 4 64 dcl format_document_version_1 fixed bin int static options (constant) init (1); 4 65 4 66 /* END INCLUDE FILE format_document_options.incl.pl1 */ 122 123 5 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 5 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 5 7* Added seen switch to message. 5 8* END HISTORY COMMENTS */ 5 9 5 10 5 11 /* Created: June 1983 by G. Palter */ 5 12 5 13 /* Definition of a message as used by the Multics Mail System */ 5 14 5 15 dcl 1 message aligned based (message_ptr), 5 16 2 version character (8) unaligned, 5 17 2 reserved bit (144), /* for exclusive use of the mail system */ 5 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 5 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 5 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 5 21 2 n_body_sections fixed binary, /* # of sections in the body */ 5 22 2 flags, 5 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 5 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 5 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 5 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 5 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 5 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 5 29 2 pad bit (36), 5 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 5 31 2 header, 5 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 5 33 3 access_class bit (72), /* AIM access class of this message */ 5 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 5 35 3 from pointer, /* -> address list of author(s) of the message */ 5 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 5 37 3 to pointer, /* -> address list of primary recipients */ 5 38 3 cc pointer, /* -> address list of secondary recipients */ 5 39 3 bcc pointer, /* -> address list of blind recipients */ 5 40 3 subject like message_text_field, /* subject of the message */ 5 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 5 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 5 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 5 44 2 body, 5 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 5 46 3 pad bit (36), 5 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 5 48 5 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 5 50 5 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 5 52 5 53 dcl message_ptr pointer; 5 54 5 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 5 56 message_references_list_n_references) 5 57 fixed binary; /* for exclusive use of the mail system */ 5 58 5 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 5 60 5 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 5 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 5 63 2 sender pointer, /* -> address of entity that mailed the message */ 5 64 2 trace pointer, /* -> message_trace describing how it got here */ 5 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 5 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 5 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 5 68 5 69 dcl message_envelope_ptr pointer; 5 70 5 71 5 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 5 73 5 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 5 75 2 pad pointer, /* forces even word alignment */ 5 76 2 version character (8) unaligned, 5 77 2 envelope like message_envelope; 5 78 5 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 5 80 5 81 dcl message_envelope_parameter_ptr pointer; 5 82 5 83 5 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 5 85* networks to reach this recipient */ 5 86 5 87 dcl 1 message_trace aligned based (message_trace_ptr), 5 88 2 version character (8) unaligned, 5 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 5 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 5 91 2 pad bit (36), 5 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 5 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 5 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 5 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 5 96 3 receiving_host character (256) varying, /* ... the host which received it */ 5 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 5 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 5 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 5 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 5 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 5 102 5 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 5 104 5 105 dcl message_trace_ptr pointer; 5 106 5 107 /* Definition of a message's redistributions list */ 5 108 5 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 5 110 2 version character (8) unaligned, 5 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 5 112 2 pad bit (36), 5 113 2 n_redistributions fixed binary, /* # of redistributions */ 5 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 5 115 like message_redistribution; /* the redistributions: oldest first */ 5 116 5 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 5 118 5 119 5 120 /* Definition of a single redistribution (forwarding) of a message */ 5 121 5 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 5 123 2 envelope like message_envelope, 5 124 2 header, 5 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 5 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 5 127 3 from pointer, /* -> address list of authors of this redistribution */ 5 128 3 to pointer, /* -> address list of recipients of the redistribution */ 5 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 5 130 5 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 5 132 based (message_redistribution.comment.text_ptr); 5 133 5 134 dcl message_redistribution_ptr pointer; 5 135 5 136 5 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 5 138 5 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 5 140 2 pad pointer, /* forces even word alignment */ 5 141 2 version character (8) unaligned, 5 142 2 redistribution like message_redistribution; 5 143 5 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 5 145 5 146 dcl message_redistribution_parameter_ptr pointer; 5 147 5 148 /* Definition of the list of user-defined fields in a message */ 5 149 5 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 5 151 2 version character (8) unaligned, 5 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 5 153 2 pad bit (36), 5 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 5 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 5 156 like message_user_field; /* the actual user-defined fields */ 5 157 5 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 5 159 5 160 5 161 /* Definition of a user defined message header field */ 5 162 5 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 5 164 2 header, 5 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 5 166 3 field_type fixed binary, /* type of data contained in this field */ 5 167 2 field_type_variable bit (144); /* the actual data (see below) */ 5 168 5 169 dcl message_user_field_ptr pointer; 5 170 5 171 5 172 /* Defined types of user defined fields */ 5 173 5 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 5 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 5 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 5 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 5 178 fixed binary static options (constant); 5 179 5 180 5 181 /* Structures used to access the data for the different types of user defined fields */ 5 182 5 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 5 184 2 header like message_user_field.header, 5 185 2 text like message_text_field; /* the message text */ 5 186 5 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 5 188 based (message_text_user_field.text.text_ptr); 5 189 5 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 5 191 2 header like message_user_field.header, 5 192 2 address_list_ptr pointer, /* -> the address list */ 5 193 2 pad bit (72); 5 194 5 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 5 196 2 header like message_user_field.header, 5 197 2 date_time fixed binary (71), /* the clock reading */ 5 198 2 pad bit (72); 5 199 5 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 5 201 2 header like message_user_field.header, 5 202 2 value fixed binary (35), /* the integer value */ 5 203 2 pad bit (108); 5 204 5 205 5 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 5 207 5 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 5 209 2 pad pointer, /* forces even word alignment */ 5 210 2 version character (8) unaligned, 5 211 2 user_field like message_user_field; 5 212 5 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 5 214 5 215 dcl message_user_field_parameter_ptr pointer; 5 216 5 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 5 218 5 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 5 220 2 version character (8) unaligned, 5 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 5 222 2 pad bit (36), 5 223 2 n_references fixed binary, /* # of references in this list */ 5 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 5 225 like message_reference; /* the references themselves */ 5 226 5 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 5 228 5 229 dcl message_references_list_ptr pointer; 5 230 5 231 5 232 /* Definition of a reference to another message */ 5 233 5 234 dcl 1 message_reference aligned based (message_reference_ptr), 5 235 2 message_id bit (72), /* ID of the other message */ 5 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 5 237 2 from pointer, /* -> address list of authors of the other message */ 5 238 2 subject like message_text_field; /* subject of the other message */ 5 239 5 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 5 241 based (message_reference.subject.text_ptr); 5 242 5 243 dcl message_reference_ptr pointer; 5 244 5 245 5 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 5 247 5 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 5 249 2 pad pointer, /* forces even word alignment */ 5 250 2 version character (8) unaligned, 5 251 2 reference like message_reference; 5 252 5 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 5 254 5 255 dcl message_reference_parameter_ptr pointer; 5 256 5 257 5 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 5 259 5 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 5 261 2 text_ptr pointer, /* -> the actual text */ 5 262 2 text_lth fixed binary (21), /* length of said text */ 5 263 2 flags, 5 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 5 265* OFF => the text will always be a single line */ 5 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 5 267 5 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 5 269 5 270 dcl message_text_field_ptr pointer; 5 271 5 272 /* Definition of a section of the body of a message */ 5 273 5 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 5 275 2 header, 5 276 3 section_type fixed binary, /* type of "text" stored in this section */ 5 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 5 278 2 section_type_variable bit (144); /* the actual data (see below) */ 5 279 5 280 dcl message_body_section_ptr pointer; 5 281 5 282 5 283 /* Defined types of message body sections */ 5 284 5 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 5 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 5 287 fixed binary static options (constant); 5 288 5 289 5 290 /* Structures used to access the data for the different types of message body sections */ 5 291 5 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 5 293 2 header like message_body_section.header, 5 294 2 text_ptr pointer, /* -> the text */ 5 295 2 text_lth fixed binary (21), /* length of said text in characters */ 5 296 2 reserved bit (36); /* for exclusive use of the mail system */ 5 297 5 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 5 299 based (message_preformatted_body_section.text_ptr); 5 300 5 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 5 302 2 header like message_body_section.header, 5 303 2 bit_string_ptr pointer, /* -> the bit string */ 5 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 5 305 2 reserved bit (36); /* for exclusive use of the mail system */ 5 306 5 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 5 308 based (message_bit_string_body_section.bit_string_ptr); 5 309 5 310 5 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 5 312 5 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 5 314 2 pad pointer, /* forces even word alignment */ 5 315 2 version character (8) unaligned, 5 316 2 section like message_body_section; 5 317 5 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 5 319 5 320 dcl message_body_section_parameter_ptr pointer; 5 321 5 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 124 125 6 1 /* BEGIN INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 6 2 /* Created: June 1983 by G. Palter */ 6 3 6 4 /* Definition of an address list -- a collection of addresses used as the value of certain message fields, etc. */ 6 5 6 6 dcl 1 address_list aligned based (address_list_ptr), 6 7 2 version character (8) unaligned, 6 8 2 reserved bit (144), /* ... exclusively for use by the mail system */ 6 9 2 n_addresses fixed binary, /* # of address in this list */ 6 10 2 addresses (address_list_n_addresses refer (address_list.n_addresses)) pointer; 6 11 6 12 dcl ADDRESS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsals02"); 6 13 6 14 dcl address_list_ptr pointer; 6 15 6 16 dcl address_list_n_addresses fixed binary; /* reserved exclusively for use by the mail system */ 6 17 6 18 /* END INCLUDE FILE ... mlsys_address_list.incl.pl1 */ 126 127 7 1 /* BEGIN INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 7 2 /* Created: June 1983 by G. Palter */ 7 3 7 4 /* Options for the mail_system_$deliver_message and mail_system_$redistribute_message entrypoints */ 7 5 7 6 dcl 1 deliver_options aligned based (deliver_options_ptr), 7 7 2 version character (8) unaligned, 7 8 2 delivery_mode fixed binary, /* deliver as an ordinary/interactive/express message */ 7 9 2 queueing_mode fixed binary, /* when to queue the message */ 7 10 2 queued_notification_mode fixed binary, /* when to notify sender about queued mail success/failure */ 7 11 2 flags, 7 12 3 abort bit (1) unaligned, /* ON => don't send it if any fatal errors are detected */ 7 13 3 send_if_empty bit (1) unaligned, /* ON => send the message even if its body is empty */ 7 14 3 recipient_notification bit (1) unaligned, /* ON => send "You have mail." notification */ 7 15 3 acknowledge bit (1) unaligned, /* ON => request ACK message when recipients read it */ 7 16 3 queue_mailing_lists bit (1) unaligned, /* ON => always queue the message for mailing lists */ 7 17 3 mbz bit (31) unaligned; /* must be set to ""b by the caller */ 7 18 7 19 dcl DELIVER_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsdlo02"); 7 20 7 21 dcl deliver_options_ptr pointer; 7 22 7 23 /* Defined modes of delivery */ 7 24 7 25 dcl (ORDINARY_DELIVERY initial (1), /* send as an ordinary message */ 7 26 INTERACTIVE_DELIVERY initial (2), /* send as an interactive message */ 7 27 EXPRESS_DELIVERY initial (3)) /* send as an express interactive message; ie: deliver the 7 28* message only if the user is logged in */ 7 29 fixed binary static options (constant); 7 30 7 31 /* Defined modes for queuing mail on transient errors */ 7 32 7 33 dcl (NEVER_QUEUE initial (1), /* never queue: convert into a fatal error */ 7 34 QUEUE_FOREIGN_WHEN_NEEDED initial (2), /* never queue local mail; queue foreign mail on error */ 7 35 QUEUE_WHEN_NEEDED initial (3), /* queue all mail on any transient error */ 7 36 ALWAYS_QUEUE_FOREIGN initial (4), /* queue local mail on error; always queue foreign mail */ 7 37 ALWAYS_QUEUE initial (5)) /* always queue all mail */ 7 38 fixed binary static options (constant); 7 39 7 40 /* Defined modes of notification of success/failure to deliver queued mail */ 7 41 7 42 dcl (NEVER_NOTIFY initial (1), /* never notify the sender */ 7 43 NOTIFY_ON_ERROR initial (2), /* notify the sender only if it can not be delivered */ 7 44 ALWAYS_NOTIFY initial (3)) /* always notify the sender */ 7 45 fixed binary static options (constant); 7 46 7 47 /* Definition of the recipients of a message and the results of the attempted transmission */ 7 48 7 49 dcl 1 recipients_info aligned based (recipients_info_ptr), 7 50 2 header, 7 51 3 version character (8) unaligned, 7 52 3 area_ptr pointer, /* -> area for following structures; null => system free */ 7 53 3 expanded_recipients_result_list_ptr pointer, /* set -> expanded_recipients_result_list (if any) */ 7 54 3 n_recipients fixed binary, /* set to total # of recipients after expanding lists */ 7 55 3 n_unique_recipients fixed binary, /* set to total # of unique recipients */ 7 56 3 n_failed_recipients fixed binary, /* set to # of recipients that failed or would fail */ 7 57 3 n_lists fixed binary, /* # of address lists of recipients */ 7 58 2 lists (recipients_info_n_lists refer (recipients_info.n_lists)), 7 59 3 address_list_ptr pointer, /* -> an address list containing recipients */ 7 60 3 recipients_result_list_ptr pointer; /* set -> recipients_result_list for this address list */ 7 61 7 62 dcl RECIPIENTS_INFO_VERSION_2 character (8) static options (constant) initial ("mlsrcpt2"); 7 63 7 64 dcl (recipients_info_ptr, recipients_result_list_ptr, expanded_recipients_result_list_ptr) pointer; 7 65 7 66 dcl (recipients_info_n_lists, recipients_result_list_n_addresses, expanded_recipients_result_list_n_entries) 7 67 fixed binary; /* used to allocate these structures */ 7 68 7 69 7 70 /* Data structure returned by the mail system recording the results of the mailing for one of the input address lists */ 7 71 7 72 dcl 1 recipients_result_list aligned based (recipients_result_list_ptr), 7 73 2 n_addresses fixed binary, /* set to # of address in corresponding address list */ 7 74 2 pad bit (36), 7 75 2 results (recipients_result_list_n_addresses refer (recipients_result_list.n_addresses)), 7 76 3 code fixed binary (35), /* set to describe results of attempted delivery */ 7 77 3 expanded_list_info, /* set to identify any failing addresses found in the 7 78* expansion of this address ... */ 7 79 4 first_entry_idx fixed binary (18) unaligned unsigned, 7 80 /* ... index of first such address in structure below ... */ 7 81 4 n_entries fixed binary (18) unaligned unsigned,/* ... # of such addresses there for this address */ 7 82 3 duplicate_info, /* set to identify the prior address (if any) for which this 7 83* is a duplicate ... */ 7 84 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 7 85 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 7 86 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 7 87* being queued due to a transient error */ 7 88 7 89 7 90 /* Describes fatal or transient errors for those recipients which are part of mailing lists of named groups in one of the 7 91* caller's address lists */ 7 92 7 93 dcl 1 expanded_recipients_result_list aligned based (expanded_recipients_result_list_ptr), 7 94 2 n_entries fixed binary, /* set to # of failing expanded recipients */ 7 95 2 pad bit (36), 7 96 2 entries (expanded_recipients_result_list_n_entries refer (expanded_recipients_result_list.n_entries)), 7 97 3 address_ptr pointer, /* -> the failing address from the list/group */ 7 98 3 code fixed binary (35), /* set to describe why delivery failed */ 7 99 3 parent_address, /* set to identify the original recipient of whose expansion 7 100* this address is a part ... */ 7 101 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 7 102 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 7 103 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 7 104* being queued due to a transient error */ 7 105 7 106 /* END INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 128 129 8 1 /* BEGIN INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 8 2 /* Created: June 1983 by G. Palter */ 8 3 /* Modified: March 1984 by G. Palter to remove ignore_log_save option */ 8 4 8 5 /* Options for the mlsys_utils_$parse_address_control_arguments, mlsys_utils_$parse_address_list_control_arguments, and 8 6* mlsys_utils_$parse_mailbox_control_arguments entrypoints */ 8 7 8 8 dcl 1 parse_ca_options aligned based (parse_ca_options_ptr), 8 9 2 version character (8) unaligned, 8 10 2 logbox_creation_mode fixed binary, /* specifies the action to be taken if the address/mailbox is 8 11* the user's logbox, address/mailbox validation is requested, 8 12* and the logbox does not exist */ 8 13 2 savebox_creation_mode fixed binary, /* ... same as above but for any savebox */ 8 14 2 flags, 8 15 3 abort_on_errors bit (1) unaligned, /* ON => use ssu_$abort_line to report errors (ie: abort on 8 16* the first error); OFF => use ssu_$print_message */ 8 17 3 validate_addresses bit (1) unaligned, /* ON => validate the existence of the address/mailbox; 8 18* OFF => only validate the command/request line syntax */ 8 19 3 mbz bit (34) unaligned; /* must be set to ""b by the caller */ 8 20 8 21 dcl PARSE_CA_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlspca01"); 8 22 8 23 dcl parse_ca_options_ptr pointer; 8 24 8 25 8 26 /* Defined logbox/savebox creation modes */ 8 27 8 28 dcl (DONT_CREATE_MAILBOX initial (0), /* do not create the mailbox and issue an error message */ 8 29 QUERY_TO_CREATE_MAILBOX initial (1), /* ask the user for permission to create the mailbox */ 8 30 CREATE_AND_ANNOUNCE_MAILBOX initial (2), /* create the mailbox and inform the user of this action */ 8 31 SILENTLY_CREATE_MAILBOX initial (3)) /* create the mailbox but don't inform the user */ 8 32 fixed binary static options (constant); 8 33 8 34 /* END INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 130 131 132 ssu_ptr = P_ssu_ptr; 133 passport_info_ptr = P_passport_info_ptr; 134 135 call ssu_$arg_count (ssu_ptr, arg_count); 136 if arg_count = 0 then 137 USAGE: call ssu_$abort_line (ssu_ptr, 0, "Usage: mail {trans_specs} -control_args"); 138 139 forum_idx = passport.forum_idx; 140 acknowledge, brief, fill = "0"b; 141 subject = ""; 142 line_len = 72; 143 144 local_to, local_cc, local_bcc, local_reply_to, address_list_ptr, forum_trans_list_ptr, message_ptr = null (); 145 ri.version = ""; /* prevents free_delivery_results from doing anything */ 146 on cleanup call cleanup_handler (); 147 148 pca.version = PARSE_CA_OPTIONS_VERSION_1; 149 pca.logbox_creation_mode = CREATE_AND_ANNOUNCE_MAILBOX; 150 pca.savebox_creation_mode = QUERY_TO_CREATE_MAILBOX; 151 string (pca.flags) = ""b; 152 pca.validate_addresses, pca.abort_on_errors = "1"b; 153 154 parse_flags_word = DISALLOW_MTG | DISALLOW_REV | DEFAULT_TO_UNPROC | DISALLOW_BYCHAIN | DISALLOW_CMSG; 155 call forum_trans_specs_$parse_specs (passport_info_ptr, 1, parse_flags_word, args, 0, "", "", 156 forum_trans_list_ptr); 157 158 call mail_system_$create_message (MESSAGE_VERSION_2, message_ptr, code); 159 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Unable to create message."); 160 161 call mail_system_$replace_to (message_ptr, local_to, code); 162 if code ^= 0 then 163 call ssu_$abort_line (code, ssu_ptr, "Unable to initalize To field."); 164 165 call mail_system_$replace_cc (message_ptr, local_cc, code); 166 if code ^= 0 then 167 call ssu_$abort_line (code, ssu_ptr, "Unable to initalize cc field."); 168 169 call mail_system_$replace_bcc (message_ptr, local_bcc, code); 170 if code ^= 0 then 171 call ssu_$abort_line (code, ssu_ptr, "Unable to initalize bcc field."); 172 173 call mail_system_$replace_reply_to (message_ptr, local_reply_to, code); 174 if code ^= 0 then 175 call ssu_$abort_line (code, ssu_ptr, "Unable to initalize reply_to field."); 176 177 aufp.version, dufp.version, tufp.version = MESSAGE_USER_FIELD_PARAMETER_VERSION_2; 178 179 call mail_system_$get_user_field_id ("Forum-Transaction", tufp.field_id, user, code); 180 if code ^= 0 then 181 BADID: call ssu_$abort_line (code, ssu_ptr, "Unable to get user field id."); 182 /* phx20946: Generate correct info for mailed unproc trans header. */ 183 if forum_trans_list.trans_num (1) = 0 & passport_info_ptr -> unprocessed_trans_ptr ^= null () then 184 call mail_system_$get_user_field_id ("Transaction-Written-Date", dufp.field_id, user, code); 185 else call mail_system_$get_user_field_id ("Transaction-Entered-Date", dufp.field_id, user, code); 186 187 if code ^= 0 then goto BADID; 188 189 if forum_trans_list.trans_num (1) = 0 & passport_info_ptr -> unprocessed_trans_ptr ^= null () then 190 call mail_system_$get_user_field_id ("Transaction-Written-By", aufp.field_id, user, code); 191 else call mail_system_$get_user_field_id ("Transaction-Entered-By", aufp.field_id, user, code); 192 193 if code ^= 0 then goto BADID; 194 195 tufp.field_type = MESSAGE_TEXT_USER_FIELD; 196 addr (tufp.user_field) -> message_text_user_field.text_ptr = addr (header); 197 addr (tufp.user_field) -> message_text_user_field.text_lth = 0; 198 199 dufp.field_type = MESSAGE_DATE_USER_FIELD; 200 addr (dufp.field_type) -> message_date_user_field.date_time = 0; 201 202 aufp.field_type = MESSAGE_ADDRESS_LIST_USER_FIELD; 203 addr (aufp.user_field) -> message_address_list_user_field.address_list_ptr = null (); 204 /* add dummies so that we can replace them for each piece of mail */ 205 call mail_system_$add_user_field (message_ptr, addr (tufp), 1, "0"b, code); 206 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Unable to initialize transaction header."); 207 208 call mail_system_$add_user_field (message_ptr, addr (aufp), 2, "0"b, code); 209 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Unable to initialize author header."); 210 211 call mail_system_$add_user_field (message_ptr, addr (dufp), 3, "0"b, code); 212 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Unable to initialize date header."); 213 214 mbsp.version = MESSAGE_BODY_SECTION_PARAMETER_VERSION_2; 215 mbsp.section_type = MESSAGE_PREFORMATTED_BODY_SECTION; 216 217 ri.area_ptr = passport.area_ptr; 218 ri.expanded_recipients_result_list_ptr = null (); 219 idx = 1; 220 ri.lists (1).address_list_ptr = message.to; 221 ri.lists (1).recipients_result_list_ptr = null (); 222 223 if message.cc -> address_list.n_addresses > 0 then do; 224 idx = idx + 1; 225 ri.lists (idx).address_list_ptr = message.cc; 226 ri.lists (idx).recipients_result_list_ptr = null (); 227 end; 228 if message.bcc -> address_list.n_addresses > 0 then do; 229 idx = idx + 1; 230 ri.lists (idx).address_list_ptr = message.bcc; 231 ri.lists (idx).recipients_result_list_ptr = null (); 232 end; 233 ri.n_lists = idx; 234 ri.version = RECIPIENTS_INFO_VERSION_2; 235 236 do.version = DELIVER_OPTIONS_VERSION_2; 237 do.delivery_mode = ORDINARY_DELIVERY; 238 do.queueing_mode = ALWAYS_QUEUE_FOREIGN; 239 do.queued_notification_mode = NOTIFY_ON_ERROR; 240 241 string (do.flags) = ""b; 242 do.abort, do.recipient_notification = "1"b; 243 do.acknowledge = acknowledge; 244 245 if fill then do; 246 fdoc.version_number = format_document_version_2; 247 fdoc.line_length = line_len; 248 fdoc.indentation = 0; 249 string (fdoc.switches) = ""b; 250 fdoc.galley_sw, fdoc.literal_sw, fdoc.dont_break_indented_lines_sw = "1"b; 251 end; 252 253 do idx = 1 to forum_trans_list.size; 254 call send_the_mail (forum_trans_list.trans_num (idx)); 255 end; 256 257 call cleanup_handler (); 258 return; 259 260 args: 261 proc (P_arg_idx); 262 263 declare P_arg_idx fixed bin parameter; 264 265 arg_idx = P_arg_idx; 266 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 267 268 if index (arg, "-") ^= 1 then goto USAGE; 269 if arg = "-acknowledge" | arg = "-ack" then acknowledge = "1"b; 270 else if arg = "-no_acknowlege" | arg = "-nack" then acknowledge = "0"b; 271 else if arg = "-fill" | arg = "-fi" then fill = "1"b; 272 else if arg = "-no_fill" | arg = "-nfi" then fill = "0"b; 273 else if arg = "-brief" | arg = "-bf" then brief = "1"b; 274 else if arg = "-long" | arg = "-lg" then brief = "0"b; 275 276 else if arg = "-new_subject" | arg = "-newsj" then do; 277 arg_idx = arg_idx + 1; 278 if arg_idx > arg_count then 279 NOARG: call ssu_$abort_line (ssu_ptr, error_table_$noarg, "Following ^a.", arg); 280 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 281 subject = arg; 282 end; 283 else if arg = "-line_length" | arg = "-ll" then do; 284 arg_idx = arg_idx + 1; 285 if arg_idx > arg_count then goto NOARG; 286 fill = "1"b; 287 288 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 289 line_len = cv_dec_check_ (arg, code); 290 if code ^= 0 then call ssu_$abort_line (ssu_ptr, error_table_$bad_conversion, "^a", arg); 291 if line_len < 40 then 292 call ssu_$abort_line (ssu_ptr, 0, "The line length must be at least 40."); 293 end; 294 295 else if arg = "-to" then call collect_addresses (local_to); 296 else if arg = "-bcc" then call collect_addresses (local_bcc); 297 else if arg = "-cc" then call collect_addresses (local_cc); 298 else if arg = "-reply_to" then call collect_addresses (local_reply_to); 299 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, "^a", arg); 300 301 P_arg_idx = arg_idx; 302 return; 303 304 collect_addresses: 305 proc (address_list_ptr); 306 307 declare address_list_ptr ptr parameter; 308 309 arg_idx = arg_idx + 1; 310 311 call mlsys_utils_$parse_address_list_control_args (ssu_ptr, arg_idx, addr (pca), ADDRESS_LIST_VERSION_2, 312 address_list_ptr, local_bcc, code); 313 if code ^= 0 then 314 call ssu_$abort_line (ssu_ptr, code, "Parsing addresses following ^a.", arg); 315 316 arg_idx = arg_idx - 1; 317 return; 318 end collect_addresses; 319 320 end args; 321 322 send_the_mail: 323 proc (trans_idx); 324 325 declare trans_idx fixed bin; 326 declare clock builtin; 327 328 call forum_trans_util_$read_trans (passport_info_ptr, forum_idx, trans_idx, forum_user_trans_ptr, code); 329 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Reading transaction #^d.", trans_idx); 330 331 if trans_idx = 0 then do; /* we have an unprocessed transaction */ 332 call ioa_$rsnnl ("[????] **UNPROCESSED** in the ^a meeting", header, header_len, 333 pathname_ (passport.forum_dir, no_suffix_name)); 334 end; 335 else do; 336 trans_pic = trans_idx; 337 call ioa_$rsnnl ("[^a] in the ^a meeting", header, header_len, ltrim (trans_pic), 338 pathname_ (passport.forum_dir, no_suffix_name)); 339 end; 340 341 addr (tufp.user_field) -> message_text_user_field.text_lth = header_len; 342 call mail_system_$replace_user_field (message_ptr, 1, addr (tufp), "0"b, code); 343 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Unable to set transaction header."); 344 345 if trans_idx = 0 then do; /* we have an unprocessed transaction */ 346 trans_time = clock (); /* unproc. trans. gets current date */ 347 end; 348 else do; 349 trans_time = forum_user_trans.time; 350 end; 351 352 addr (dufp.user_field) -> message_date_user_field.date_time = trans_time; 353 call mail_system_$replace_user_field (message_ptr, 3, addr (dufp), "0"b, code); 354 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Unable to set date header."); 355 356 if substr (forum_user_trans.person_id, 1, 1) = "*" then do; 357 user = "anonymous"; 358 name = rtrim (forum_user_trans.person_id); 359 end; 360 else do; 361 user = forum_user_trans.person_id; 362 name = ""; 363 end; 364 365 user = rtrim (user) || "." || rtrim (forum_user_trans.project_id); 366 call mail_system_$create_user_mailbox_address (user, name, "", address_ptr, code); 367 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Unable to create author header."); 368 369 call mail_system_$add_address (address_list_ptr, address_ptr, ADDRESS_LIST_VERSION_2, code); 370 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Unable to create address list header."); 371 372 addr (aufp.user_field) -> message_address_list_user_field.address_list_ptr = address_list_ptr; 373 call mail_system_$replace_user_field (message_ptr, 2, addr (aufp), "0"b, code); 374 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Unable to set author header."); 375 376 if subject = "" then 377 call mail_system_$replace_subject (message_ptr, forum_user_trans.subject, code); 378 else call mail_system_$replace_subject (message_ptr, subject, code); 379 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Unable to set mail subject."); 380 381 begin; 382 declare text char (2 * forum_user_trans.text_length); 383 384 if ^fill then do; 385 addr (mbsp.section) -> message_preformatted_body_section.text_ptr = addr (forum_user_trans.text); 386 addr (mbsp.section) -> message_preformatted_body_section.text_lth = forum_user_trans.text_length; 387 end; 388 else do; 389 call format_document_$string (forum_user_trans.text, text, header_len, addr (fdoc), code); 390 if code ^= 0 then 391 if code ^= error_table_$recoverable_error then 392 call ssu_$abort_line (ssu_ptr, code, "Filling transaction."); 393 394 addr (mbsp.section) -> message_preformatted_body_section.text_ptr = addr (text); 395 addr (mbsp.section) -> message_preformatted_body_section.text_lth = header_len; 396 end; 397 398 call mail_system_$replace_body (message_ptr, addr (mbsp), code); 399 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Unable to set message text."); 400 end; /* BEGIN block */ 401 402 call mail_system_$deliver_message (message_ptr, addr (ri), addr (do), code); 403 call mlsys_utils_$print_delivery_results (ssu_ptr, brief, addr (ri), (0)); 404 call mlsys_utils_$free_delivery_results (addr (ri), (0)); 405 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Message not sent."); 406 407 call mail_system_$free_address_list (address_list_ptr, code); 408 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Unable to free Entered-By address list."); 409 410 return; 411 end send_the_mail; 412 413 cleanup_handler: 414 proc (); 415 416 if forum_trans_list_ptr ^= null () then free forum_trans_list; 417 418 if local_to ^= null () then 419 call mail_system_$free_address_list (local_to, (0)); 420 if local_cc ^= null () then 421 call mail_system_$free_address_list (local_cc, (0)); 422 if local_bcc ^= null () then 423 call mail_system_$free_address_list (local_bcc, (0)); 424 if local_reply_to ^= null () then 425 call mail_system_$free_address_list (local_reply_to, (0)); 426 427 if address_list_ptr ^= null () then 428 call mail_system_$free_address_list (address_list_ptr, (0)); 429 430 if message_ptr ^= null () then 431 call mail_system_$free_message (message_ptr, (0)); 432 433 call mlsys_utils_$free_delivery_results (addr (ri), (0)); 434 435 return; 436 end cleanup_handler; 437 438 end forum_mailer_$mail; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1110.3 forum_mailer_.pl1 >udd>sm>ds>w>ml>forum_mailer_.pl1 116 1 08/16/86 1638.0 forum_passport.incl.pl1 >ldd>incl>forum_passport.incl.pl1 118 2 08/16/86 1638.0 forum_trans_list.incl.pl1 >ldd>incl>forum_trans_list.incl.pl1 120 3 10/31/84 1215.4 forum_user_trans.incl.pl1 >ldd>incl>forum_user_trans.incl.pl1 122 4 11/01/84 1614.0 format_document_options.incl.pl1 >ldd>incl>format_document_options.incl.pl1 124 5 05/22/86 1325.8 mlsys_message.incl.pl1 >ldd>incl>mlsys_message.incl.pl1 126 6 10/27/83 2204.2 mlsys_address_list.incl.pl1 >ldd>incl>mlsys_address_list.incl.pl1 128 7 10/27/83 2204.2 mlsys_deliver_info.incl.pl1 >ldd>incl>mlsys_deliver_info.incl.pl1 130 8 06/18/84 1424.1 mlsys_parse_ca_options.incl.pl1 >ldd>incl>mlsys_parse_ca_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. ADDRESS_LIST_VERSION_2 000006 constant char(8) initial packed unaligned dcl 6-12 set ref 311* 369* ALWAYS_QUEUE_FOREIGN constant fixed bin(17,0) initial dcl 7-33 ref 238 ANY 000513 automatic bit(36) initial dcl 2-49 set ref 2-49* CREATE_AND_ANNOUNCE_MAILBOX constant fixed bin(17,0) initial dcl 8-28 ref 149 DEFAULT_TO_UNPROC constant bit(17) initial dcl 2-50 ref 154 DELIVER_OPTIONS_VERSION_2 000004 constant char(8) initial packed unaligned dcl 7-19 ref 236 DISALLOW_BYCHAIN constant bit(17) initial dcl 2-50 ref 154 DISALLOW_CMSG constant bit(17) initial dcl 2-50 ref 154 DISALLOW_MTG constant bit(17) initial dcl 2-50 ref 154 DISALLOW_REV constant bit(17) initial dcl 2-50 ref 154 MESSAGE_ADDRESS_LIST_USER_FIELD constant fixed bin(17,0) initial dcl 5-174 ref 202 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 000010 constant char(8) initial packed unaligned dcl 5-318 ref 214 MESSAGE_DATE_USER_FIELD constant fixed bin(17,0) initial dcl 5-174 ref 199 MESSAGE_PREFORMATTED_BODY_SECTION constant fixed bin(17,0) initial dcl 5-285 ref 215 MESSAGE_TEXT_USER_FIELD constant fixed bin(17,0) initial dcl 5-174 ref 195 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 000012 constant char(8) initial packed unaligned dcl 5-213 ref 177 MESSAGE_VERSION_2 000014 constant char(8) initial packed unaligned dcl 5-49 set ref 158* NOTIFY_ON_ERROR constant fixed bin(17,0) initial dcl 7-42 ref 239 ORDINARY_DELIVERY constant fixed bin(17,0) initial dcl 7-25 ref 237 PARSE_CA_OPTIONS_VERSION_1 000000 constant char(8) initial packed unaligned dcl 8-21 ref 148 P_arg_idx parameter fixed bin(17,0) dcl 263 set ref 260 265 301* P_passport_info_ptr parameter pointer dcl 30 ref 23 133 P_ssu_ptr parameter pointer dcl 30 ref 23 132 QUERY_TO_CREATE_MAILBOX constant fixed bin(17,0) initial dcl 8-28 ref 150 RECIPIENTS_INFO_VERSION_2 000002 constant char(8) initial packed unaligned dcl 7-62 ref 234 abort 5 000436 automatic bit(1) level 3 packed packed unaligned dcl 59 set ref 242* abort_on_errors 4 000444 automatic bit(1) level 3 packed packed unaligned dcl 59 set ref 152* acknowledge 5(03) 000436 automatic bit(1) level 3 in structure "do" packed packed unaligned dcl 59 in procedure "forum_mailer_$mail" set ref 243* acknowledge 000100 automatic bit(1) dcl 33 in procedure "forum_mailer_$mail" set ref 140* 243 269* 270* addr builtin function dcl 68 ref 196 196 197 200 203 205 205 208 208 211 211 311 311 332 332 337 337 341 342 342 352 353 353 372 373 373 385 385 386 389 389 394 394 395 398 398 402 402 402 402 403 403 404 404 433 433 address_list based structure level 1 dcl 6-6 address_list_ptr 2 based pointer level 2 in structure "message_address_list_user_field" dcl 5-190 in procedure "forum_mailer_$mail" set ref 203* 372* address_list_ptr 12 000452 automatic pointer array level 3 in structure "ri" dcl 59 in procedure "forum_mailer_$mail" set ref 220* 225* 230* address_list_ptr 000520 automatic pointer dcl 6-14 in procedure "forum_mailer_$mail" set ref 144* 369* 372 407* 427 427* address_list_ptr parameter pointer dcl 307 in procedure "collect_addresses" set ref 304 311* address_ptr 000102 automatic pointer dcl 33 set ref 366* 369* area_ptr 74 based pointer level 2 in structure "passport" dcl 1-14 in procedure "forum_mailer_$mail" ref 217 area_ptr 2 000452 automatic pointer level 3 in structure "ri" dcl 59 in procedure "forum_mailer_$mail" set ref 217* arg based char packed unaligned dcl 33 set ref 268 269 269 270 270 271 271 272 272 273 273 274 274 276 276 278* 281 283 283 289* 290* 295 296 297 298 299* 313* arg_count 000104 automatic fixed bin(17,0) dcl 33 set ref 135* 136 278 285 arg_idx 000105 automatic fixed bin(17,0) dcl 33 set ref 265* 266* 277* 277 278 280* 284* 284 285 288* 301 309* 309 311* 316* 316 arg_len 000110 automatic fixed bin(21,0) dcl 33 set ref 266* 268 269 269 270 270 271 271 272 272 273 273 274 274 276 276 278 278 280* 281 283 283 288* 289 289 290 290 295 296 297 298 299 299 313 313 arg_ptr 000106 automatic pointer dcl 33 set ref 266* 268 269 269 270 270 271 271 272 272 273 273 274 274 276 276 278 280* 281 283 283 288* 289 290 295 296 297 298 299 313 aufp 000366 automatic structure level 1 dcl 59 set ref 208 208 373 373 bcc 46 based pointer level 3 dcl 5-15 ref 228 230 brief 000111 automatic bit(1) dcl 33 set ref 140* 273* 274* 403* cc 44 based pointer level 3 dcl 5-15 ref 223 225 cleanup 000500 stack reference condition dcl 68 ref 146 clock builtin function dcl 326 ref 346 code 000112 automatic fixed bin(35,0) dcl 33 set ref 158* 159 159* 161* 162 162* 165* 166 166* 169* 170 170* 173* 174 174* 179* 180 180* 183* 185* 187 189* 191* 193 205* 206 206* 208* 209 209* 211* 212 212* 289* 290 311* 313 313* 328* 329 329* 342* 343 343* 353* 354 354* 366* 367 367* 369* 370 370* 373* 374 374* 376* 378* 379 379* 389* 390 390 390* 398* 399 399* 402* 405 405* 407* 408 408* cv_dec_check_ 000020 constant entry external dcl 78 ref 289 date_time 2 based fixed bin(71,0) level 2 dcl 5-195 set ref 200* 352* deliver_options based structure level 1 dcl 7-6 delivery_mode 2 000436 automatic fixed bin(17,0) level 2 dcl 59 set ref 237* do 000436 automatic structure level 1 dcl 59 set ref 402 402 dont_break_indented_lines_sw 3(09) 000361 automatic bit(1) level 3 packed packed unaligned dcl 59 set ref 250* dufp 000400 automatic structure level 1 dcl 59 set ref 211 211 353 353 error_table_$bad_conversion 000010 external static fixed bin(35,0) dcl 72 set ref 290* error_table_$badopt 000012 external static fixed bin(35,0) dcl 72 set ref 299* error_table_$noarg 000014 external static fixed bin(35,0) dcl 72 set ref 278* error_table_$recoverable_error 000016 external static fixed bin(35,0) dcl 72 ref 390 expanded_recipients_result_list_ptr 4 000452 automatic pointer level 3 dcl 59 set ref 218* fdoc 000361 automatic structure level 1 dcl 59 set ref 389 389 field_id 4 000400 automatic bit(36) level 4 in structure "dufp" dcl 59 in procedure "forum_mailer_$mail" set ref 183* 185* field_id 4 000366 automatic bit(36) level 4 in structure "aufp" dcl 59 in procedure "forum_mailer_$mail" set ref 189* 191* field_id 4 000412 automatic bit(36) level 4 in structure "tufp" dcl 59 in procedure "forum_mailer_$mail" set ref 179* field_type 5 000366 automatic fixed bin(17,0) level 4 in structure "aufp" dcl 59 in procedure "forum_mailer_$mail" set ref 202* field_type 5 000400 automatic fixed bin(17,0) level 4 in structure "dufp" dcl 59 in procedure "forum_mailer_$mail" set ref 199* 200 field_type 5 000412 automatic fixed bin(17,0) level 4 in structure "tufp" dcl 59 in procedure "forum_mailer_$mail" set ref 195* fill 000113 automatic bit(1) dcl 33 set ref 140* 245 271* 272* 286* 384 flags 4 000444 automatic structure level 2 in structure "pca" dcl 59 in procedure "forum_mailer_$mail" set ref 151* flags 5 000436 automatic structure level 2 in structure "do" dcl 59 in procedure "forum_mailer_$mail" set ref 241* format_document_$string 000022 constant entry external dcl 78 ref 389 format_document_options based structure level 1 dcl 4-12 format_document_version_2 constant fixed bin(17,0) initial dcl 4-63 ref 246 forum_dir 2 based char(168) level 2 packed packed unaligned dcl 1-14 set ref 332* 332* 337* 337* forum_idx 000114 automatic fixed bin(17,0) dcl 33 in procedure "forum_mailer_$mail" set ref 139* 328* forum_idx 1 based fixed bin(17,0) level 2 in structure "passport" dcl 1-14 in procedure "forum_mailer_$mail" ref 139 forum_name 54 based char(32) level 2 packed packed unaligned dcl 1-14 set ref 332 332 337 337 forum_name_len 64 based fixed bin(17,0) level 2 dcl 1-14 ref 332 332 332 332 337 337 337 337 forum_trans_list based structure level 1 dcl 2-15 set ref 416 forum_trans_list_ptr 000510 automatic pointer dcl 2-12 set ref 144* 155* 183 189 253 254 416 416 forum_trans_specs_$parse_specs 000024 constant entry external dcl 78 ref 155 forum_trans_util_$read_trans 000026 constant entry external dcl 78 ref 328 forum_user_trans based structure level 1 dcl 3-7 forum_user_trans_ptr 000514 automatic pointer dcl 3-5 set ref 328* 349 356 358 361 365 376 382 385 386 389 galley_sw 3(02) 000361 automatic bit(1) level 3 packed packed unaligned dcl 59 set ref 250* header based structure level 2 in structure "message_user_field" dcl 5-163 in procedure "forum_mailer_$mail" header 64 based structure array level 4 in structure "message" dcl 5-15 in procedure "forum_mailer_$mail" header based structure level 2 in structure "message_body_section" dcl 5-274 in procedure "forum_mailer_$mail" header 4 000424 automatic structure level 3 in structure "mbsp" dcl 59 in procedure "forum_mailer_$mail" header 4 based structure level 3 in structure "message_user_field_parameter" dcl 5-208 in procedure "forum_mailer_$mail" header 000115 automatic char(256) packed unaligned dcl 33 in procedure "forum_mailer_$mail" set ref 196 332* 337* header 30 based structure level 2 in structure "message" dcl 5-15 in procedure "forum_mailer_$mail" header 4 000366 automatic structure level 3 in structure "aufp" dcl 59 in procedure "forum_mailer_$mail" header 4 000412 automatic structure level 3 in structure "tufp" dcl 59 in procedure "forum_mailer_$mail" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 5-313 in procedure "forum_mailer_$mail" header 4 000400 automatic structure level 3 in structure "dufp" dcl 59 in procedure "forum_mailer_$mail" header based structure level 2 in structure "recipients_info" dcl 7-49 in procedure "forum_mailer_$mail" header 10 based structure array level 3 in structure "message_user_fields_list" dcl 5-150 in procedure "forum_mailer_$mail" header 000452 automatic structure level 2 in structure "ri" dcl 59 in procedure "forum_mailer_$mail" header_len 000215 automatic fixed bin(21,0) dcl 33 set ref 332* 337* 341 389* 395 idx 000216 automatic fixed bin(17,0) dcl 33 set ref 219* 224* 224 225 226 229* 229 230 231 233 253* 254* indentation 1 000361 automatic fixed bin(17,0) level 2 dcl 59 set ref 248* index builtin function dcl 68 ref 268 ioa_$rsnnl 000030 constant entry external dcl 78 ref 332 337 line_len 000217 automatic fixed bin(17,0) dcl 33 set ref 142* 247 289* 291 line_length 2 000361 automatic fixed bin(17,0) level 2 dcl 59 set ref 247* list 3 based structure array level 2 dcl 2-15 lists 12 000452 automatic structure array level 2 in structure "ri" dcl 59 in procedure "forum_mailer_$mail" lists 12 based structure array level 2 in structure "recipients_info" dcl 7-49 in procedure "forum_mailer_$mail" literal_sw 3(04) 000361 automatic bit(1) level 3 packed packed unaligned dcl 59 set ref 250* local_bcc 000220 automatic pointer dcl 33 set ref 144* 169* 296* 311* 422 422* local_cc 000222 automatic pointer dcl 33 set ref 144* 165* 297* 420 420* local_reply_to 000224 automatic pointer dcl 33 set ref 144* 173* 298* 424 424* local_to 000226 automatic pointer dcl 33 set ref 144* 161* 295* 418 418* logbox_creation_mode 2 000444 automatic fixed bin(17,0) level 2 dcl 59 set ref 149* ltrim builtin function dcl 68 ref 337 337 mail_system_$add_address 000032 constant entry external dcl 78 ref 369 mail_system_$add_user_field 000034 constant entry external dcl 78 ref 205 208 211 mail_system_$create_message 000036 constant entry external dcl 78 ref 158 mail_system_$create_user_mailbox_address 000040 constant entry external dcl 78 ref 366 mail_system_$deliver_message 000042 constant entry external dcl 78 ref 402 mail_system_$free_address_list 000044 constant entry external dcl 78 ref 407 418 420 422 424 427 mail_system_$free_message 000046 constant entry external dcl 78 ref 430 mail_system_$get_user_field_id 000050 constant entry external dcl 78 ref 179 183 185 189 191 mail_system_$replace_bcc 000052 constant entry external dcl 78 ref 169 mail_system_$replace_body 000054 constant entry external dcl 78 ref 398 mail_system_$replace_cc 000056 constant entry external dcl 78 ref 165 mail_system_$replace_reply_to 000060 constant entry external dcl 78 ref 173 mail_system_$replace_subject 000062 constant entry external dcl 78 ref 376 378 mail_system_$replace_to 000064 constant entry external dcl 78 ref 161 mail_system_$replace_user_field 000066 constant entry external dcl 78 ref 342 353 373 max_size based fixed bin(17,0) level 2 dcl 2-15 ref 416 mbsp 000424 automatic structure level 1 dcl 59 set ref 398 398 message based structure level 1 dcl 5-15 message_address_list_user_field based structure level 1 dcl 5-190 message_body_section based structure level 1 dcl 5-274 message_body_section_parameter based structure level 1 dcl 5-313 message_date_user_field based structure level 1 dcl 5-195 message_envelope based structure level 1 dcl 5-61 message_preformatted_body_section based structure level 1 dcl 5-292 message_ptr 000516 automatic pointer dcl 5-53 set ref 144* 158* 161* 165* 169* 173* 205* 208* 211* 220 223 225 228 230 342* 353* 373* 376* 378* 398* 402* 430 430* message_redistribution based structure level 1 dcl 5-122 message_reference based structure level 1 dcl 5-234 message_text_field based structure level 1 dcl 5-260 message_text_user_field based structure level 1 dcl 5-183 message_user_field based structure level 1 dcl 5-163 message_user_field_parameter based structure level 1 dcl 5-208 mlsys_utils_$free_delivery_results 000070 constant entry external dcl 78 ref 404 433 mlsys_utils_$parse_address_list_control_args 000072 constant entry external dcl 78 ref 311 mlsys_utils_$print_delivery_results 000074 constant entry external dcl 78 ref 403 n_addresses 6 based fixed bin(17,0) level 2 dcl 6-6 ref 223 228 n_lists 11 000452 automatic fixed bin(17,0) level 3 dcl 59 set ref 233* name 000230 automatic varying char(32) dcl 33 set ref 358* 362* 366* no_suffix_name based char packed unaligned dcl 1-46 set ref 332* 332* 337* 337* null builtin function dcl 68 ref 144 183 189 203 218 221 226 231 416 418 420 422 424 427 430 parse_ca_options based structure level 1 dcl 8-8 parse_flags_word 000512 automatic bit(36) dcl 2-27 set ref 154* 155* passport based structure level 1 dcl 1-14 passport_info_ptr 000506 automatic pointer dcl 1-12 set ref 133* 139 155* 183 189 217 328* 332 332 332 332 332 332 332 332 337 337 337 337 337 337 337 337 pathname_ 000076 constant entry external dcl 78 ref 332 332 337 337 pca 000444 automatic structure level 1 dcl 59 set ref 311 311 person_id 1 based char(22) level 2 dcl 3-7 ref 356 358 361 project_id 7 based char(9) level 2 dcl 3-7 ref 365 queued_notification_mode 4 000436 automatic fixed bin(17,0) level 2 dcl 59 set ref 239* queueing_mode 3 000436 automatic fixed bin(17,0) level 2 dcl 59 set ref 238* recipient_notification 5(02) 000436 automatic bit(1) level 3 packed packed unaligned dcl 59 set ref 242* recipients_info based structure level 1 dcl 7-49 recipients_result_list_ptr 14 000452 automatic pointer array level 3 dcl 59 set ref 221* 226* 231* ri 000452 automatic structure level 1 dcl 59 set ref 402 402 403 403 404 404 433 433 rtrim builtin function dcl 68 ref 358 365 365 savebox_creation_mode 3 000444 automatic fixed bin(17,0) level 2 dcl 59 set ref 150* section 4 000424 automatic structure level 2 dcl 59 set ref 385 386 394 395 section_type 4 000424 automatic fixed bin(17,0) level 4 dcl 59 set ref 215* size 1 based fixed bin(17,0) level 2 dcl 2-15 ref 253 ssu_$abort_line 000100 constant entry external dcl 78 ref 136 159 162 166 170 174 180 206 209 212 278 290 291 299 313 329 343 354 367 370 374 379 390 399 405 408 ssu_$arg_count 000102 constant entry external dcl 78 ref 135 ssu_$arg_ptr 000104 constant entry external dcl 78 ref 266 280 288 ssu_ptr 000242 automatic pointer dcl 33 set ref 132* 135* 136* 159* 162* 166* 170* 174* 180* 206* 209* 212* 266* 278* 280* 288* 290* 291* 299* 311* 313* 329* 343* 354* 367* 370* 374* 379* 390* 399* 403* 405* 408* string builtin function dcl 68 set ref 151* 241* 249* subject 000244 automatic char(256) packed unaligned dcl 33 in procedure "forum_mailer_$mail" set ref 141* 281* 376 378* subject 25 based char level 2 in structure "forum_user_trans" packed packed unaligned dcl 3-7 in procedure "forum_mailer_$mail" set ref 376* subject_length 22 based fixed bin(21,0) level 2 dcl 3-7 ref 376 376 385 389 substr builtin function dcl 68 ref 356 switches 3 000361 automatic structure level 2 dcl 59 set ref 249* text 000100 automatic char packed unaligned dcl 382 in begin block on line 381 set ref 389* 394 text 2 based structure level 2 in structure "message_text_user_field" dcl 5-183 in procedure "forum_mailer_$mail" text based char level 2 in structure "forum_user_trans" packed packed unaligned dcl 3-7 in procedure "forum_mailer_$mail" set ref 385 389* text_length 23 based fixed bin(21,0) level 2 dcl 3-7 ref 382 385 386 389 389 text_lth 4 based fixed bin(21,0) level 2 in structure "message_preformatted_body_section" dcl 5-292 in procedure "forum_mailer_$mail" set ref 386* 395* text_lth 4 based fixed bin(21,0) level 3 in structure "message_text_user_field" dcl 5-183 in procedure "forum_mailer_$mail" set ref 197* 341* text_ptr 2 based pointer level 3 in structure "message_text_user_field" dcl 5-183 in procedure "forum_mailer_$mail" set ref 196* text_ptr 2 based pointer level 2 in structure "message_preformatted_body_section" dcl 5-292 in procedure "forum_mailer_$mail" set ref 385* 394* time 12 based fixed bin(71,0) level 2 dcl 3-7 ref 349 to 42 based pointer level 3 dcl 5-15 ref 220 trans_idx parameter fixed bin(17,0) dcl 325 set ref 322 328* 329* 331 336 345 trans_num 3 based fixed bin(17,0) array level 3 dcl 2-15 set ref 183 189 254* trans_pic 000344 automatic picture(6) packed unaligned dcl 33 set ref 336* 337 337 trans_time 000346 automatic fixed bin(71,0) dcl 33 set ref 346* 349* 352 tufp 000412 automatic structure level 1 dcl 59 set ref 205 205 342 342 unprocessed_trans_ptr 102 based pointer level 2 dcl 1-14 ref 183 189 user 000350 automatic varying char(32) dcl 33 set ref 179* 183* 185* 189* 191* 357* 361* 365* 365 366* user_field 4 000366 automatic structure level 2 in structure "aufp" dcl 59 in procedure "forum_mailer_$mail" set ref 203 372 user_field 4 000400 automatic structure level 2 in structure "dufp" dcl 59 in procedure "forum_mailer_$mail" set ref 352 user_field 4 000412 automatic structure level 2 in structure "tufp" dcl 59 in procedure "forum_mailer_$mail" set ref 196 197 341 validate_addresses 4(01) 000444 automatic bit(1) level 3 packed packed unaligned dcl 59 set ref 152* version 000452 automatic char(8) level 3 in structure "ri" packed packed unaligned dcl 59 in procedure "forum_mailer_$mail" set ref 145* 234* version 000444 automatic char(8) level 2 in structure "pca" packed packed unaligned dcl 59 in procedure "forum_mailer_$mail" set ref 148* version 2 000366 automatic char(8) level 2 in structure "aufp" packed packed unaligned dcl 59 in procedure "forum_mailer_$mail" set ref 177* version 2 000400 automatic char(8) level 2 in structure "dufp" packed packed unaligned dcl 59 in procedure "forum_mailer_$mail" set ref 177* version 000436 automatic char(8) level 2 in structure "do" packed packed unaligned dcl 59 in procedure "forum_mailer_$mail" set ref 236* version 2 000412 automatic char(8) level 2 in structure "tufp" packed packed unaligned dcl 59 in procedure "forum_mailer_$mail" set ref 177* version 2 000424 automatic char(8) level 2 in structure "mbsp" packed packed unaligned dcl 59 in procedure "forum_mailer_$mail" set ref 214* version_number 000361 automatic fixed bin(17,0) level 2 dcl 59 set ref 246* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ALLOW_DELETED internal static bit(17) initial dcl 2-50 ALLOW_IHE internal static bit(17) initial dcl 2-50 ALWAYS_NOTIFY internal static fixed bin(17,0) initial dcl 7-42 ALWAYS_QUEUE internal static fixed bin(17,0) initial dcl 7-33 CALL_ON_BAD_ARGS internal static bit(17) initial dcl 2-50 DEFAULT_TO_ALL internal static bit(17) initial dcl 2-50 DEFAULT_TO_NONE internal static bit(17) initial dcl 2-50 DISALLOW_IDL internal static bit(17) initial dcl 2-50 DISALLOW_INITIAL internal static bit(17) initial dcl 2-50 DISALLOW_UNPROC internal static bit(17) initial dcl 2-50 DONT_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 8-28 DONT_READ internal static bit(17) initial dcl 2-50 EXPRESS_DELIVERY internal static fixed bin(17,0) initial dcl 7-25 INCLUDE_DELETED internal static fixed bin(17,0) initial dcl 3-24 INTERACTIVE_DELIVERY internal static fixed bin(17,0) initial dcl 7-25 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 5-285 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 5-79 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 5-174 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 5-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 5-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 5-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 5-253 MESSAGE_TRACE_VERSION_2 internal static char(8) initial packed unaligned dcl 5-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 5-158 MUST_BE_DELETED internal static bit(17) initial dcl 2-50 NEVER_NOTIFY internal static fixed bin(17,0) initial dcl 7-42 NEVER_QUEUE internal static fixed bin(17,0) initial dcl 7-33 NON_NULL internal static bit(17) initial dcl 2-50 ONLY_DELETED internal static fixed bin(17,0) initial dcl 3-24 ONLY_ONE internal static bit(17) initial dcl 2-50 ONLY_UNDELETED internal static fixed bin(17,0) initial dcl 3-24 QUEUE_FOREIGN_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 7-33 QUEUE_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 7-33 SILENTLY_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 8-28 TFMT_more internal static fixed bin(17,0) initial dcl 1-54 TFMT_none internal static fixed bin(17,0) initial dcl 1-54 TFMT_number internal static fixed bin(17,0) initial dcl 1-54 TFMT_reference internal static fixed bin(17,0) initial dcl 1-54 address_list_n_addresses automatic fixed bin(17,0) dcl 6-16 alloc_subject_length automatic fixed bin(21,0) dcl 3-4 alloc_text_length automatic fixed bin(21,0) dcl 3-3 alloc_trans_list_size automatic fixed bin(17,0) dcl 2-13 deliver_options_ptr automatic pointer dcl 7-21 expanded_recipients_result_list based structure level 1 dcl 7-93 expanded_recipients_result_list_n_entries automatic fixed bin(17,0) dcl 7-66 expanded_recipients_result_list_ptr automatic pointer dcl 7-64 format_document_options_ptr automatic pointer dcl 4-62 format_document_version_1 internal static fixed bin(17,0) initial dcl 4-64 forum_area based area(1024) dcl 1-46 forum_data_$central_directory external static char(168) packed unaligned dcl 1-49 forum_data_$info_directory external static char(168) packed unaligned dcl 1-49 forum_data_$version_string external static char(8) packed unaligned dcl 1-49 message_bit_string_body_section based structure level 1 dcl 5-301 message_bit_string_body_section_bit_string based bit packed unaligned dcl 5-307 message_body_section_parameter_ptr automatic pointer dcl 5-320 message_body_section_ptr automatic pointer dcl 5-280 message_envelope_parameter based structure level 1 dcl 5-74 message_envelope_parameter_ptr automatic pointer dcl 5-81 message_envelope_ptr automatic pointer dcl 5-69 message_integer_user_field based structure level 1 dcl 5-200 message_n_body_sections automatic fixed bin(17,0) dcl 5-55 message_n_redistributions automatic fixed bin(17,0) dcl 5-55 message_n_user_fields automatic fixed bin(17,0) dcl 5-55 message_preformatted_body_section_text based char packed unaligned dcl 5-298 message_redistribution_comment based char packed unaligned dcl 5-131 message_redistribution_parameter based structure level 1 dcl 5-139 message_redistribution_parameter_ptr automatic pointer dcl 5-146 message_redistribution_ptr automatic pointer dcl 5-134 message_redistributions_list based structure level 1 dcl 5-109 message_reference_parameter based structure level 1 dcl 5-248 message_reference_parameter_ptr automatic pointer dcl 5-255 message_reference_ptr automatic pointer dcl 5-243 message_reference_subject based char packed unaligned dcl 5-240 message_references_list based structure level 1 dcl 5-219 message_references_list_n_references automatic fixed bin(17,0) dcl 5-55 message_references_list_ptr automatic pointer dcl 5-229 message_subject based char packed unaligned dcl 5-51 message_text_field_ptr automatic pointer dcl 5-270 message_text_field_text based char packed unaligned dcl 5-268 message_text_user_field_text based char packed unaligned dcl 5-187 message_trace based structure level 1 dcl 5-87 message_trace_n_relays automatic fixed bin(17,0) dcl 5-55 message_trace_ptr automatic pointer dcl 5-105 message_type internal static fixed bin(17,0) initial dcl 3-22 message_user_field_parameter_ptr automatic pointer dcl 5-215 message_user_field_ptr automatic pointer dcl 5-169 message_user_fields_list based structure level 1 dcl 5-150 parse_ca_options_ptr automatic pointer dcl 8-23 parse_flags based structure level 1 dcl 2-29 passport_version_2 internal static fixed bin(17,0) initial dcl 1-44 recipients_info_n_lists automatic fixed bin(17,0) dcl 7-66 recipients_info_ptr automatic pointer dcl 7-64 recipients_result_list based structure level 1 dcl 7-72 recipients_result_list_n_addresses automatic fixed bin(17,0) dcl 7-66 recipients_result_list_ptr automatic pointer dcl 7-64 user_trans_type internal static fixed bin(17,0) initial dcl 3-21 NAMES DECLARED BY EXPLICIT CONTEXT. BADID 001236 constant label dcl 180 ref 187 193 NOARG 002221 constant label dcl 278 ref 285 USAGE 000544 constant label dcl 136 ref 268 args 002036 constant entry internal dcl 260 ref 155 155 cleanup_handler 004275 constant entry internal dcl 413 ref 146 257 collect_addresses 002570 constant entry internal dcl 304 ref 295 296 297 298 forum_mailer_$mail 000515 constant entry external dcl 23 send_the_mail 002664 constant entry internal dcl 322 ref 254 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5134 5242 4466 5144 Length 5700 4466 106 421 446 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME forum_mailer_$mail 518 external procedure is an external procedure. on unit on line 146 64 on unit args 138 internal procedure is assigned to an entry variable. collect_addresses internal procedure shares stack frame of internal procedure args. send_the_mail internal procedure shares stack frame of external procedure forum_mailer_$mail. begin block on line 381 108 begin block uses auto adjustable storage. cleanup_handler 74 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 381 000100 text begin block on line 381 forum_mailer_$mail 000100 acknowledge forum_mailer_$mail 000102 address_ptr forum_mailer_$mail 000104 arg_count forum_mailer_$mail 000105 arg_idx forum_mailer_$mail 000106 arg_ptr forum_mailer_$mail 000110 arg_len forum_mailer_$mail 000111 brief forum_mailer_$mail 000112 code forum_mailer_$mail 000113 fill forum_mailer_$mail 000114 forum_idx forum_mailer_$mail 000115 header forum_mailer_$mail 000215 header_len forum_mailer_$mail 000216 idx forum_mailer_$mail 000217 line_len forum_mailer_$mail 000220 local_bcc forum_mailer_$mail 000222 local_cc forum_mailer_$mail 000224 local_reply_to forum_mailer_$mail 000226 local_to forum_mailer_$mail 000230 name forum_mailer_$mail 000242 ssu_ptr forum_mailer_$mail 000244 subject forum_mailer_$mail 000344 trans_pic forum_mailer_$mail 000346 trans_time forum_mailer_$mail 000350 user forum_mailer_$mail 000361 fdoc forum_mailer_$mail 000366 aufp forum_mailer_$mail 000400 dufp forum_mailer_$mail 000412 tufp forum_mailer_$mail 000424 mbsp forum_mailer_$mail 000436 do forum_mailer_$mail 000444 pca forum_mailer_$mail 000452 ri forum_mailer_$mail 000506 passport_info_ptr forum_mailer_$mail 000510 forum_trans_list_ptr forum_mailer_$mail 000512 parse_flags_word forum_mailer_$mail 000513 ANY forum_mailer_$mail 000514 forum_user_trans_ptr forum_mailer_$mail 000516 message_ptr forum_mailer_$mail 000520 address_list_ptr forum_mailer_$mail THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars enter_begin_block leave_begin_block call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 alloc_auto_adj enable_op shorten_stack ext_entry int_entry op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cv_dec_check_ format_document_$string forum_trans_specs_$parse_specs forum_trans_util_$read_trans ioa_$rsnnl mail_system_$add_address mail_system_$add_user_field mail_system_$create_message mail_system_$create_user_mailbox_address mail_system_$deliver_message mail_system_$free_address_list mail_system_$free_message mail_system_$get_user_field_id mail_system_$replace_bcc mail_system_$replace_body mail_system_$replace_cc mail_system_$replace_reply_to mail_system_$replace_subject mail_system_$replace_to mail_system_$replace_user_field mlsys_utils_$free_delivery_results mlsys_utils_$parse_address_list_control_args mlsys_utils_$print_delivery_results pathname_ ssu_$abort_line ssu_$arg_count ssu_$arg_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt error_table_$noarg error_table_$recoverable_error LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 23 000511 2 49 000522 132 000523 133 000527 135 000532 136 000542 139 000571 140 000574 141 000577 142 000602 144 000604 145 000614 146 000616 148 000640 149 000642 150 000644 151 000646 152 000647 154 000653 155 000661 158 000731 159 000744 161 000772 162 001005 165 001033 166 001046 169 001074 170 001107 173 001135 174 001150 177 001176 179 001202 180 001234 183 001262 185 001325 187 001357 189 001361 191 001424 193 001456 195 001460 196 001462 197 001464 199 001465 200 001467 202 001471 203 001473 205 001475 206 001522 208 001550 209 001575 211 001623 212 001650 214 001676 215 001700 217 001702 218 001705 219 001707 220 001711 221 001714 223 001716 224 001722 225 001723 226 001726 228 001731 229 001734 230 001735 231 001740 233 001743 234 001745 236 001747 237 001751 238 001753 239 001755 241 001757 242 001760 243 001764 245 001771 246 001773 247 001775 248 001777 249 002000 250 002001 253 002007 254 002017 255 002026 257 002030 258 002034 260 002035 265 002043 266 002047 268 002063 269 002103 270 002121 271 002133 272 002146 273 002160 274 002173 276 002205 277 002215 278 002216 280 002260 281 002276 282 002304 283 002305 284 002315 285 002316 286 002321 288 002323 289 002340 290 002367 291 002423 293 002454 295 002455 296 002470 297 002503 298 002516 299 002531 301 002563 302 002567 304 002570 309 002572 311 002574 313 002622 316 002660 317 002663 322 002664 328 002666 329 002706 331 002744 332 002747 334 003023 336 003024 337 003035 339 003143 341 003144 342 003146 343 003173 345 003221 346 003224 347 003226 349 003227 352 003232 353 003233 354 003260 356 003306 357 003313 358 003320 359 003340 361 003341 362 003346 365 003347 366 003426 367 003460 369 003506 370 003523 372 003551 373 003553 374 003600 376 003626 378 003660 379 003701 381 003727 382 003732 389 003744 384 003747 385 003751 386 003755 387 003760 389 003761 390 004021 394 004052 395 004055 398 004057 399 004076 400 004125 402 004126 403 004147 404 004167 405 004203 407 004234 408 004245 410 004273 413 004274 416 004302 418 004314 420 004333 422 004352 424 004371 427 004410 430 004427 433 004446 435 004463 ----------------------------------------------------------- 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