/* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ /****^ HISTORY COMMENTS: 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): Added seen switch to message. END HISTORY COMMENTS */ /* Created: June 1983 by G. Palter */ /* Definition of a message as used by the Multics Mail System */ dcl 1 message aligned based (message_ptr), 2 version character (8) unaligned, 2 reserved bit (144), /* for exclusive use of the mail system */ 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 2 n_body_sections fixed binary, /* # of sections in the body */ 2 flags, 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 3 reserved bit (31) unaligned, /* for use by the mail system */ 2 pad bit (36), 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 2 header, 3 message_id bit (72), /* ID of this message (same value for all copies) */ 3 access_class bit (72), /* AIM access class of this message */ 3 date_time_created fixed binary (71), /* date/time this message was composed */ 3 from pointer, /* -> address list of author(s) of the message */ 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 3 to pointer, /* -> address list of primary recipients */ 3 cc pointer, /* -> address list of secondary recipients */ 3 bcc pointer, /* -> address list of blind recipients */ 3 subject like message_text_field, /* subject of the message */ 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 2 redistributions_list pointer, /* -> redistributions list for this message */ 2 body, 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 3 pad bit (36), 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); dcl message_ptr pointer; dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, message_references_list_n_references) fixed binary; /* for exclusive use of the mail system */ %page; /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ dcl 1 message_envelope aligned based (message_envelope_ptr), 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 2 sender pointer, /* -> address of entity that mailed the message */ 2 trace pointer, /* -> message_trace describing how it got here */ 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 2 delivered_by pointer, /* -> address of entity that delivered the message */ 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ dcl message_envelope_ptr pointer; /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 2 pad pointer, /* forces even word alignment */ 2 version character (8) unaligned, 2 envelope like message_envelope; dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); dcl message_envelope_parameter_ptr pointer; /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the networks to reach this recipient */ dcl 1 message_trace aligned based (message_trace_ptr), 2 version character (8) unaligned, 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 2 pad bit (36), 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 3 sending_host character (256) varying, /* ... the host which relayed the message */ 3 receiving_host character (256) varying, /* ... the host which received it */ 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); dcl message_trace_ptr pointer; %page; /* Definition of a message's redistributions list */ dcl 1 message_redistributions_list aligned based (message.redistributions_list), 2 version character (8) unaligned, 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 pad bit (36), 2 n_redistributions fixed binary, /* # of redistributions */ 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) like message_redistribution; /* the redistributions: oldest first */ dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); /* Definition of a single redistribution (forwarding) of a message */ dcl 1 message_redistribution aligned based (message_redistribution_ptr), 2 envelope like message_envelope, 2 header, 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 3 from pointer, /* -> address list of authors of this redistribution */ 3 to pointer, /* -> address list of recipients of the redistribution */ 3 comment like message_text_field; /* optional comment associated with the redistribution */ dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned based (message_redistribution.comment.text_ptr); dcl message_redistribution_ptr pointer; /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 2 pad pointer, /* forces even word alignment */ 2 version character (8) unaligned, 2 redistribution like message_redistribution; dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); dcl message_redistribution_parameter_ptr pointer; %page; /* Definition of the list of user-defined fields in a message */ dcl 1 message_user_fields_list aligned based (message.user_fields_list), 2 version character (8) unaligned, 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 pad bit (36), 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) like message_user_field; /* the actual user-defined fields */ dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); /* Definition of a user defined message header field */ dcl 1 message_user_field aligned based (message_user_field_ptr), 2 header, 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 3 field_type fixed binary, /* type of data contained in this field */ 2 field_type_variable bit (144); /* the actual data (see below) */ dcl message_user_field_ptr pointer; /* Defined types of user defined fields */ dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ fixed binary static options (constant); /* Structures used to access the data for the different types of user defined fields */ dcl 1 message_text_user_field aligned based (message_user_field_ptr), 2 header like message_user_field.header, 2 text like message_text_field; /* the message text */ dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned based (message_text_user_field.text.text_ptr); dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 2 header like message_user_field.header, 2 address_list_ptr pointer, /* -> the address list */ 2 pad bit (72); dcl 1 message_date_user_field aligned based (message_user_field_ptr), 2 header like message_user_field.header, 2 date_time fixed binary (71), /* the clock reading */ 2 pad bit (72); dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 2 header like message_user_field.header, 2 value fixed binary (35), /* the integer value */ 2 pad bit (108); /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 2 pad pointer, /* forces even word alignment */ 2 version character (8) unaligned, 2 user_field like message_user_field; dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); dcl message_user_field_parameter_ptr pointer; %page; /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ dcl 1 message_references_list aligned based (message_references_list_ptr), 2 version character (8) unaligned, 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 pad bit (36), 2 n_references fixed binary, /* # of references in this list */ 2 references (message_references_list_n_references refer (message_references_list.n_references)) like message_reference; /* the references themselves */ dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); dcl message_references_list_ptr pointer; /* Definition of a reference to another message */ dcl 1 message_reference aligned based (message_reference_ptr), 2 message_id bit (72), /* ID of the other message */ 2 date_time_created fixed binary (71), /* date/time the other message was created */ 2 from pointer, /* -> address list of authors of the other message */ 2 subject like message_text_field; /* subject of the other message */ dcl message_reference_subject character (message_reference.subject.text_lth) unaligned based (message_reference.subject.text_ptr); dcl message_reference_ptr pointer; /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 2 pad pointer, /* forces even word alignment */ 2 version character (8) unaligned, 2 reference like message_reference; dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); dcl message_reference_parameter_ptr pointer; /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ dcl 1 message_text_field aligned based (message_text_field_ptr), 2 text_ptr pointer, /* -> the actual text */ 2 text_lth fixed binary (21), /* length of said text */ 2 flags, 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; OFF => the text will always be a single line */ 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); dcl message_text_field_ptr pointer; %page; /* Definition of a section of the body of a message */ dcl 1 message_body_section aligned based (message_body_section_ptr), 2 header, 3 section_type fixed binary, /* type of "text" stored in this section */ 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 2 section_type_variable bit (144); /* the actual data (see below) */ dcl message_body_section_ptr pointer; /* Defined types of message body sections */ dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ fixed binary static options (constant); /* Structures used to access the data for the different types of message body sections */ dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 2 header like message_body_section.header, 2 text_ptr pointer, /* -> the text */ 2 text_lth fixed binary (21), /* length of said text in characters */ 2 reserved bit (36); /* for exclusive use of the mail system */ dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned based (message_preformatted_body_section.text_ptr); dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 2 header like message_body_section.header, 2 bit_string_ptr pointer, /* -> the bit string */ 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 2 reserved bit (36); /* for exclusive use of the mail system */ dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned based (message_bit_string_body_section.bit_string_ptr); /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 2 pad pointer, /* forces even word alignment */ 2 version character (8) unaligned, 2 section like message_body_section; dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); dcl message_body_section_parameter_ptr pointer; /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ */ ----------------------------------------------------------- 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 */