COMPILATION LISTING OF SEGMENT rw_restore_format_options Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/16/84 1127.7 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 /* format: off */ 7 8 /* This is the main level procedure called by ssu_ to implement the 9* report_writer_ restore_format_options request. Description and usage 10* follows. 11* 12* Description: 13* 14* This request takes the pathname given as input and calls the 15* ssu_$execute_string entrypoint to do a subsystem exec_com 16* on the user specified file. 17* 18* Usage: "restore_format_options path" 19* 20* Both parameters are passed to this request by ssu_. 21* 22* 23* Known Bugs: 24* 25* Other Problems: 26* 27* History: 28* 29* Written - Al Dupuis - August 1983 30* Changed - Al Dupuis - October 1984 Became report_writer_. 31* 32**/ 33 34 rw_restore_format_options: proc ( 35 36 sci_ptr_parm, /* ptr to the subsystem control info structure */ 37 report_cip_parm /* points to report_control_info */ 38 ); 39 40 dcl report_cip_parm ptr parm; 41 dcl sci_ptr_parm ptr parm; 42 43 /* 44* Mainline Processing Overview. 45* 46* (1) Get and expand/suffix the pathname arg. 47* 48* (2) Make sure the file exists. 49* 50* (3) Get ssu_ to do a subsystem ec on the file. 51**/ 52 53 54 report_cip = report_cip_parm; 55 sci_ptr = sci_ptr_parm; 56 57 /* The first and only arg must be pathname. */ 58 59 call ssu_$arg_count (sci_ptr, number_of_args_supplied); 60 61 if number_of_args_supplied ^= 1 62 then do; 63 if number_of_args_supplied = 0 64 then code = error_table_$noarg; 65 else code = error_table_$inconsistent; 66 call ssu_$abort_line (sci_ptr, code, 67 "^/Usage: restore_format_options path"); 68 end; 69 70 call ssu_$arg_ptr (sci_ptr, 1, arg_ptr, arg_length); 71 pathname = arg; 72 call expand_pathname_$add_suffix (pathname, 73 "fo." || rtrim (ltrim (report_control_info.subsystems_ec_suffix)), 74 dir_name, entry_name, code); 75 if code ^= 0 76 then call ssu_$abort_line (sci_ptr, code, 77 "^/The pathname ^a couldn't be expanded.", pathname); 78 79 call hcs_$status_minf (dir_name, entry_name, 1, file_type, 80 bit_count, code); 81 if code = error_table_$noentry 82 then call ssu_$abort_line (sci_ptr, code, 83 "^/The file ^a doesn't exist.", 84 rtrim (dir_name) || ">" || rtrim (entry_name)); 85 86 call ssu_$execute_string (sci_ptr, "ec " || rtrim (dir_name) 87 || ">" || rtrim (entry_name), code); 88 89 return; 90 91 92 dcl arg char (arg_length) based (arg_ptr); 93 dcl arg_length fixed bin (21); 94 dcl arg_ptr ptr; 95 96 dcl bit_count fixed bin (24); 97 98 dcl code fixed bin (35); 99 100 dcl dir_name char (168); 101 102 dcl entry_name char (32); 103 dcl error_table_$inconsistent fixed bin(35) ext static; 104 dcl error_table_$noarg fixed bin(35) ext static; 105 dcl error_table_$noentry fixed bin(35) ext static; 106 dcl expand_pathname_$add_suffix entry (char(*), char(*), char(*), char(*), fixed bin(35)); 107 108 dcl file_type fixed bin (2); 109 110 dcl hcs_$status_minf entry (char(*), char(*), fixed bin(1), fixed bin(2), fixed bin(24), fixed bin(35)); 111 112 dcl ltrim builtin; 113 114 dcl null builtin; 115 dcl number_of_args_supplied fixed bin; 116 117 dcl pathname char (168); 118 119 dcl rtrim builtin; 120 121 dcl sci_ptr ptr; 122 dcl ssu_$abort_line entry() options(variable); 123 dcl ssu_$arg_count entry (ptr, fixed bin); 124 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin(21)); 125 dcl ssu_$execute_string entry (ptr, char(*), fixed bin(35)); 126 1 1 /* BEGIN INCLUDE FILE rw_options_extents.incl.pl1 1 2* 1 3* Extents for the formatting options used for producing reports. 1 4* Kept as a separate include so that some programs may include this 1 5* file without including rw_format_options.incl.pl1 1 6* 1 7* Al Dupuis - August 1983 1 8* 1 9**/ 1 10 /* format: off */ 1 11 1 12 /* The three types of format options that we have. */ 1 13 1 14 dcl GENERAL_REPORT_OPTION fixed bin static int options (constant) init (1); 1 15 dcl GENERAL_COLUMN_OPTION fixed bin static int options (constant) init (2); 1 16 dcl SPECIFIC_COLUMN_OPTION fixed bin static int options (constant) init (3); 1 17 1 18 /* Used to determine how big the tables are without doing a hbound on it. */ 1 19 1 20 dcl NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE fixed bin static int options (constant) init (15); 1 21 dcl NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE fixed bin static int options (constant) init (9); 1 22 dcl NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE fixed bin static int options (constant) init (6); 1 23 1 24 /* Used to determine how much space is needed to list them. */ 1 25 1 26 dcl LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH fixed bin static int options (constant) init (10); /* -alignment */ 1 27 dcl LONGEST_GENERAL_REPORT_OPTION_NAME_LENGTH fixed bin static int options (constant) init (25); /* -format_document_controls */ 1 28 dcl LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH fixed bin static int options (constant) init (21); /* -group_footer_trigger */ 1 29 1 30 /* MAXIMUM_OPTION_IDENTIFIER_LENGTH + MAXIMUM_OPTION_NAME_LENGTH */ 1 31 1 32 dcl MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH fixed bin static int options (constant) init (101); 1 33 1 34 dcl MAXIMUM_OPTION_IDENTIFIER_LENGTH fixed bin static int options (constant) init (69); 1 35 dcl MAXIMUM_OPTION_NAME_LENGTH fixed bin static int options (constant) init (32); 1 36 dcl MAXIMUM_OPTION_VALUE_LENGTH fixed bin static int options (constant) init (4096); 1 37 1 38 /* Used to index into the OPTIONS tables defined in rw_format_options.incl.pl1. */ 1 39 1 40 dcl INDEX_FOR_DELIMITER fixed bin static int options (constant) init (1); 1 41 dcl INDEX_FOR_FORMAT_DOCUMENT_CONTROLS fixed bin static int options (constant) init (2); 1 42 dcl INDEX_FOR_HYPHENATION fixed bin static int options (constant) init (3); 1 43 dcl INDEX_FOR_PAGE_FOOTER_VALUE fixed bin static int options (constant) init (4); 1 44 dcl INDEX_FOR_PAGE_HEADER_VALUE fixed bin static int options (constant) init (5); 1 45 dcl INDEX_FOR_PAGE_LENGTH fixed bin static int options (constant) init (6); 1 46 dcl INDEX_FOR_PAGE_WIDTH fixed bin static int options (constant) init (7); 1 47 dcl INDEX_FOR_TITLE_LINE fixed bin static int options (constant) init (8); 1 48 dcl INDEX_FOR_TRUNCATION fixed bin static int options (constant) init (9); 1 49 1 50 dcl INDEX_FOR_COLUMN_ORDER fixed bin static int options (constant) init (1); 1 51 dcl INDEX_FOR_COUNT fixed bin static int options (constant) init (2); 1 52 dcl INDEX_FOR_EXCLUDE fixed bin static int options (constant) init (3); 1 53 dcl INDEX_FOR_GROUP fixed bin static int options (constant) init (4); 1 54 dcl INDEX_FOR_GROUP_FOOTER_TRIGGER fixed bin static int options (constant) init (5); 1 55 dcl INDEX_FOR_GROUP_FOOTER_VALUE fixed bin static int options (constant) init (6); 1 56 dcl INDEX_FOR_GROUP_HEADER_TRIGGER fixed bin static int options (constant) init (7); 1 57 dcl INDEX_FOR_GROUP_HEADER_VALUE fixed bin static int options (constant) init (8); 1 58 dcl INDEX_FOR_OUTLINE fixed bin static int options (constant) init (9); 1 59 dcl INDEX_FOR_PAGE_BREAK fixed bin static int options (constant) init (10); 1 60 dcl INDEX_FOR_ROW_FOOTER_VALUE fixed bin static int options (constant) init (11); 1 61 dcl INDEX_FOR_ROW_HEADER_VALUE fixed bin static int options (constant) init (12); 1 62 dcl INDEX_FOR_SUBCOUNT fixed bin static int options (constant) init (13); 1 63 dcl INDEX_FOR_SUBTOTAL fixed bin static int options (constant) init (14); 1 64 dcl INDEX_FOR_TOTAL fixed bin static int options (constant) init (15); 1 65 1 66 dcl INDEX_FOR_ALIGNMENT fixed bin static int options (constant) init (1); 1 67 dcl INDEX_FOR_EDITING fixed bin static int options (constant) init (2); 1 68 dcl INDEX_FOR_FOLDING fixed bin static int options (constant) init (3); 1 69 dcl INDEX_FOR_SEPARATOR fixed bin static int options (constant) init (4); 1 70 dcl INDEX_FOR_TITLE fixed bin static int options (constant) init (5); 1 71 dcl INDEX_FOR_WIDTH fixed bin static int options (constant) init (6); 1 72 1 73 /* END INCLUDE FILE rw_options_extents */ 127 128 2 1 /* BEGIN INCLUDE FILE rw_report_info.incl.pl1 2 2* Information needed to control the report environment. 2 3* Al Dupuis - August 1983 2 4**/ 2 5 /* format: off */ 2 6 2 7 dcl 1 report_control_info aligned based (report_cip), 2 8 2 flags, 2 9 3 report_is_paginated bit (1) unaligned, /* paged or one continous stream */ 2 10 3 table_has_been_started bit (1) unaligned, /* table clean up is necessary */ 2 11 3 table_is_full bit (1) unaligned, /* no more retrieves are necessary */ 2 12 3 report_has_been_started bit (1) unaligned, /* report clean up is necessary */ 2 13 3 report_is_formatted bit (1) unaligned, /* no more formatting is necessary */ 2 14 3 permanent_report bit (1) unaligned, /* or disposable */ 2 15 3 permanent_table bit (1) unaligned, /* or disposable */ 2 16 3 report_has_just_been_completed bit (1) unaligned, /* used for printing timers */ 2 17 3 table_has_just_been_loaded bit (1) unaligned, /* used for printing timers */ 2 18 3 multi_pass_mode bit (1) unaligned, /* on if we are to do more than 1 pass */ 2 19 3 available bit (26) unaligned, 2 20 2 format_options_flags, /* used to determine if value is default */ 2 21 3 general_report_default_value (NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE) bit (1) unaligned, 2 22 3 general_column_default_value (NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE) bit (1) unaligned, 2 23 2 value_seg_ptr ptr, /* the options value seg */ 2 24 2 table_information_ptr ptr, /* points to table_info */ 2 25 2 table_control_info_ptr ptr, /* points to table_control_info */ 2 26 2 row_value_temp_segment_ptr ptr, /* points to a segment for the row value */ 2 27 2 general_work_area_ptr ptr, /* a freeing work area */ 2 28 2 name_value_area_ptr ptr, /* area for name-value allocations */ 2 29 2 subsystem_control_info_ptr ptr, /* ptr for ssu_ info structure */ 2 30 2 subsystems_info_ptr ptr, /* points to subsystems info structure */ 2 31 2 name_value_temp_seg_ptr ptr, /* temp seg for name-value space */ 2 32 2 report_temp_seg_ptr ptr, /* report workspace */ 2 33 2 report_work_area_ptr ptr, /* report workspace */ 2 34 2 format_report_info_ptr ptr, /* info needed to create a report */ 2 35 2 input_string_temp_seg_ptr ptr, /* report workspace */ 2 36 2 output_string_temp_seg_ptr ptr, /* report workspace */ 2 37 2 editing_strings_temp_seg_ptr ptr, /* report workspace */ 2 38 2 headers_temp_seg_ptr ptr, /* report workspace */ 2 39 2 display_iocb_ptr ptr, /* report is displayed through this */ 2 40 2 area_info_ptr ptr, /* points to area_info structure */ 2 41 2 table_manager_delete_table_entry variable entry (ptr, fixed bin (35)), /* entry who deletes the table */ 2 42 2 table_manager_get_query_entry variable entry (ptr, ptr, fixed bin (21), fixed bin (35)), /* entry who gets the query */ 2 43 2 table_manager_get_row_entry variable entry (ptr, fixed bin (35)), /* entry who loads rows */ 2 44 2 table_manager_create_table_entry variable entry (ptr, fixed bin (35)), /* entry who makes a new table */ 2 45 2 options_identifier fixed bin, /* current set of options */ 2 46 2 report_identifier fixed bin, /* current report */ 2 47 2 no_of_rows_retrieved fixed bin (35), /* current no of rows */ 2 48 2 no_of_formatted_pages fixed bin (21), /* current no of pages */ 2 49 2 number_of_passes fixed bin, /* number of times report will be formatted */ 2 50 2 table_loading_time float bin (63), 2 51 2 table_sorting_time float bin (63), 2 52 2 table_deletion_time float bin (63), 2 53 2 report_setup_time float bin (63), 2 54 2 report_formatting_time float bin (63), 2 55 2 report_display_time float bin (63), 2 56 2 report_deletion_time float bin (63), 2 57 2 ssu_evaluate_active_string_time float bin (63), 2 58 2 temp_dir_unique_id bit (36), /* uid of temp dir */ 2 59 2 subsystems_ec_suffix char (32), /* suffix for saving and restoring ecs */ 2 60 2 temp_dir_name char (168) unaligned; /* the dir where we place the retrieved table and report */ 2 61 dcl report_cip ptr init (null ()); 2 62 2 63 /* END INCLUDE FILE rw_report_info.incl.pl1 */ 129 130 131 end rw_restore_format_options; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/16/84 1107.2 rw_restore_format_options.pl1 >special_ldd>online>7001-11/16/84>rw_restore_format_options.pl1 127 1 11/16/84 1107.8 rw_options_extents.incl.pl1 >special_ldd>online>7001-11/16/84>rw_options_extents.incl.pl1 129 2 11/16/84 1107.6 rw_report_info.incl.pl1 >special_ldd>online>7001-11/16/84>rw_report_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE constant fixed bin(17,0) initial dcl 1-20 ref 72 NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE constant fixed bin(17,0) initial dcl 1-21 ref 72 arg based char unaligned dcl 92 ref 71 arg_length 000100 automatic fixed bin(21,0) dcl 93 set ref 70* 71 arg_ptr 000102 automatic pointer dcl 94 set ref 70* 71 bit_count 000104 automatic fixed bin(24,0) dcl 96 set ref 79* code 000105 automatic fixed bin(35,0) dcl 98 set ref 63* 65* 66* 72* 75 75* 79* 81 81* 86* dir_name 000106 automatic char(168) unaligned dcl 100 set ref 72* 79* 81 86 entry_name 000160 automatic char(32) unaligned dcl 102 set ref 72* 79* 81 86 error_table_$inconsistent 000010 external static fixed bin(35,0) dcl 103 ref 65 error_table_$noarg 000012 external static fixed bin(35,0) dcl 104 ref 63 error_table_$noentry 000014 external static fixed bin(35,0) dcl 105 ref 81 expand_pathname_$add_suffix 000016 constant entry external dcl 106 ref 72 file_type 000170 automatic fixed bin(2,0) dcl 108 set ref 79* hcs_$status_minf 000020 constant entry external dcl 110 ref 79 ltrim builtin function dcl 112 ref 72 null builtin function dcl 114 ref 2-61 number_of_args_supplied 000171 automatic fixed bin(17,0) dcl 115 set ref 59* 61 63 pathname 000172 automatic char(168) unaligned dcl 117 set ref 71* 72* 75* report_cip 000246 automatic pointer initial dcl 2-61 set ref 54* 72 2-61* report_cip_parm parameter pointer dcl 40 ref 34 54 report_control_info based structure level 1 dcl 2-7 rtrim builtin function dcl 119 ref 72 81 81 86 86 sci_ptr 000244 automatic pointer dcl 121 set ref 55* 59* 66* 70* 75* 81* 86* sci_ptr_parm parameter pointer dcl 41 ref 34 55 ssu_$abort_line 000022 constant entry external dcl 122 ref 66 75 81 ssu_$arg_count 000024 constant entry external dcl 123 ref 59 ssu_$arg_ptr 000026 constant entry external dcl 124 ref 70 ssu_$execute_string 000030 constant entry external dcl 125 ref 86 subsystems_ec_suffix based char(32) level 2 dcl 2-7 ref 72 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. GENERAL_COLUMN_OPTION internal static fixed bin(17,0) initial dcl 1-15 GENERAL_REPORT_OPTION internal static fixed bin(17,0) initial dcl 1-14 INDEX_FOR_ALIGNMENT internal static fixed bin(17,0) initial dcl 1-66 INDEX_FOR_COLUMN_ORDER internal static fixed bin(17,0) initial dcl 1-50 INDEX_FOR_COUNT internal static fixed bin(17,0) initial dcl 1-51 INDEX_FOR_DELIMITER internal static fixed bin(17,0) initial dcl 1-40 INDEX_FOR_EDITING internal static fixed bin(17,0) initial dcl 1-67 INDEX_FOR_EXCLUDE internal static fixed bin(17,0) initial dcl 1-52 INDEX_FOR_FOLDING internal static fixed bin(17,0) initial dcl 1-68 INDEX_FOR_FORMAT_DOCUMENT_CONTROLS internal static fixed bin(17,0) initial dcl 1-41 INDEX_FOR_GROUP internal static fixed bin(17,0) initial dcl 1-53 INDEX_FOR_GROUP_FOOTER_TRIGGER internal static fixed bin(17,0) initial dcl 1-54 INDEX_FOR_GROUP_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 1-55 INDEX_FOR_GROUP_HEADER_TRIGGER internal static fixed bin(17,0) initial dcl 1-56 INDEX_FOR_GROUP_HEADER_VALUE internal static fixed bin(17,0) initial dcl 1-57 INDEX_FOR_HYPHENATION internal static fixed bin(17,0) initial dcl 1-42 INDEX_FOR_OUTLINE internal static fixed bin(17,0) initial dcl 1-58 INDEX_FOR_PAGE_BREAK internal static fixed bin(17,0) initial dcl 1-59 INDEX_FOR_PAGE_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 1-43 INDEX_FOR_PAGE_HEADER_VALUE internal static fixed bin(17,0) initial dcl 1-44 INDEX_FOR_PAGE_LENGTH internal static fixed bin(17,0) initial dcl 1-45 INDEX_FOR_PAGE_WIDTH internal static fixed bin(17,0) initial dcl 1-46 INDEX_FOR_ROW_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 1-60 INDEX_FOR_ROW_HEADER_VALUE internal static fixed bin(17,0) initial dcl 1-61 INDEX_FOR_SEPARATOR internal static fixed bin(17,0) initial dcl 1-69 INDEX_FOR_SUBCOUNT internal static fixed bin(17,0) initial dcl 1-62 INDEX_FOR_SUBTOTAL internal static fixed bin(17,0) initial dcl 1-63 INDEX_FOR_TITLE internal static fixed bin(17,0) initial dcl 1-70 INDEX_FOR_TITLE_LINE internal static fixed bin(17,0) initial dcl 1-47 INDEX_FOR_TOTAL internal static fixed bin(17,0) initial dcl 1-64 INDEX_FOR_TRUNCATION internal static fixed bin(17,0) initial dcl 1-48 INDEX_FOR_WIDTH internal static fixed bin(17,0) initial dcl 1-71 LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 1-28 LONGEST_GENERAL_REPORT_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 1-27 LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 1-26 MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 1-32 MAXIMUM_OPTION_IDENTIFIER_LENGTH internal static fixed bin(17,0) initial dcl 1-34 MAXIMUM_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 1-35 MAXIMUM_OPTION_VALUE_LENGTH internal static fixed bin(17,0) initial dcl 1-36 NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE internal static fixed bin(17,0) initial dcl 1-22 SPECIFIC_COLUMN_OPTION internal static fixed bin(17,0) initial dcl 1-16 NAME DECLARED BY EXPLICIT CONTEXT. rw_restore_format_options 000056 constant entry external dcl 34 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 754 1006 621 764 Length 1246 621 32 224 132 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rw_restore_format_options 253 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rw_restore_format_options 000100 arg_length rw_restore_format_options 000102 arg_ptr rw_restore_format_options 000104 bit_count rw_restore_format_options 000105 code rw_restore_format_options 000106 dir_name rw_restore_format_options 000160 entry_name rw_restore_format_options 000170 file_type rw_restore_format_options 000171 number_of_args_supplied rw_restore_format_options 000172 pathname rw_restore_format_options 000244 sci_ptr rw_restore_format_options 000246 report_cip rw_restore_format_options THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out return shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. expand_pathname_$add_suffix hcs_$status_minf ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$execute_string THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$inconsistent error_table_$noarg error_table_$noentry LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 34 000052 2 61 000063 54 000065 55 000071 59 000074 61 000104 63 000107 65 000115 66 000120 70 000143 71 000162 72 000167 75 000315 79 000350 81 000407 86 000513 89 000616 ----------------------------------------------------------- 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