COMPILATION LISTING OF SEGMENT xforum_get_str_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/06/87 1020.6 mst Thu Options: optimize map 1 /****^ ******************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* ******************************************** */ 6 7 8 /****^ HISTORY COMMENTS: 9* 1) change(87-04-10,LJAdams), approve(87-04-22,MCR7684), 10* audit(87-07-30,Blair), install(87-08-06,MR12.1-1065): 11* Created. 12* END HISTORY COMMENTS */ 13 14 xforum_get_str_: proc (P_prompt, P_acceptable_answers, P_info, P_section, P_str, P_code); 15 16 /* Parameters */ 17 18 dcl P_acceptable_answers ptr; 19 dcl P_info char (*) parameter; 20 dcl P_section char (*) parameter; 21 dcl P_prompt char (*) var parameter; 22 dcl P_str char (*) var parameter; 23 dcl P_yes_sw bit (1) aligned parameter; 24 dcl P_code fixed bin (35) parameter; 25 26 27 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 28 /* */ 29 /* This is the main entry of xforum_get_str_. It prompts the user for input using */ 30 /* P_prompt and accepts only answers from P_acceptable_answers. If a question */ 31 /* mark is input, the section P_section of P_info is displayed for the user */ 32 /* by a call to xforum_help_. The user response is given by P_str. */ 33 /* */ 34 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 35 36 37 /* Automatic */ 38 39 dcl accept_anything bit (1) aligned; 40 dcl been_thru_this_before bit (1) aligned; 41 dcl i fixed bin; 42 dcl yes_or_no_string char (3) var; 43 44 dcl 1 answers based (Panswers) like answer_array, 45 Panswers ptr; 46 47 48 /* Entries */ 49 50 dcl ioa_ entry () options (variable); 51 dcl ioa_$nnl entry () options (variable); 52 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 53 dcl command_query_ entry () options (variable); 54 dcl xforum_help_$display entry (char(*), char(*)); 55 56 /* External Static */ 57 58 dcl error_table_$long_record 59 fixed bin(35) ext static; 60 dcl iox_$user_output ptr ext static; 61 62 /* Internal Static */ 63 64 dcl 1 auto_query_info like query_info int static; 65 66 /* Based */ 67 68 69 /* Constants */ 70 71 dcl ENABLE_ESCAPE bit (2) aligned init ("11"b) int static options (constant); 72 dcl ONLY_YES_OR_NO bit (1) aligned init ("1"b) int static options (constant); 73 dcl NOT_ONLY_YES_OR_NO bit (1) aligned init ("0"b) int static options (constant); 74 75 /* Builtin */ 76 77 dcl (addr, length, null) builtin; 78 1 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 1 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 1 3 /* version number changed to 4, 08/10/78 WOS */ 1 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 1 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 1 6 1 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 1 8 2 version fixed bin, /* version of this structure - must be set, see below */ 1 9 2 switches aligned, /* various bit switch values */ 1 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 1 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 1 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 1 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 1 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 1 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 1 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 1 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 1 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 1 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 1 20 1 21 /* Limit of data defined for version 2 */ 1 22 1 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 1 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 1 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 1 26 /* minimum of 30 seconds required for repeat */ 1 27 /* otherwise, no repeat will occur */ 1 28 /* Limit of data defined for version 4 */ 1 29 1 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 1 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 1 32 1 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 1 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 1 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 1 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 1 37 1 38 /* END INCLUDE FILE query_info.incl.pl1 */ 79 80 2 1 /* BEGIN INCLUDE FILE xforum_answers.incl.pl1 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(87-04-13,LJAdams), approve(87-04-30,MCR7684), 2 6* audit(87-07-30,Blair), install(87-08-06,MR12.1-1065): 2 7* Created. 2 8* END HISTORY COMMENTS */ 2 9 2 10 dcl 1 answer_array, 2 11 2 N fixed bin, /* Number of acceptable answers; 0 = all */ 2 12 2 max_length fixed bin, /* max length user reply can be */ 2 13 2 answer (10) char (80) varying; 2 14 2 15 2 16 dcl ZERO fixed bin internal static options (constant) init (0), 2 17 ONE fixed bin internal static options (constant) init (1), 2 18 FOUR fixed bin internal static options (constant) init (4); 2 19 2 20 2 21 /* END INCLUDE FILE xforum_answers .incl.pl1 */ 81 82 83 84 call main (P_prompt, P_acceptable_answers, P_info, P_section, NOT_ONLY_YES_OR_NO, P_str, P_code); 85 return; 86 87 init: entry (); 88 89 auto_query_info.version = query_info_version_6; 90 auto_query_info.switches.yes_or_no_sw = "0"b; 91 auto_query_info.switches.suppress_name_sw = "1"b; 92 auto_query_info.switches.cp_escape_control = ENABLE_ESCAPE; 93 auto_query_info.switches.suppress_spacing = "1"b; 94 auto_query_info.switches.literal_sw = "0"b; 95 auto_query_info.switches.prompt_after_explanation = "0"b; 96 auto_query_info.switches.padding = "0"b; 97 auto_query_info.status_code = 0; 98 auto_query_info.query_code = 0; 99 auto_query_info.question_iocbp = null (); /* default: user_i/o */ 100 auto_query_info.answer_iocbp = null (); /* default: user_input */ 101 auto_query_info.repeat_time = 0; /* don't repeat */ 102 auto_query_info.explanation_ptr = null (); 103 auto_query_info.explanation_len = 0; 104 105 return; 106 107 108 nl: entry (P_prompt, P_acceptable_answers, P_info, P_section, P_str, P_code); 109 110 111 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 112 /* */ 113 /* This entry performs exactly like the above main entry except that it also */ 114 /* puts out a new_line and does a reset more before prompting the user. */ 115 /* */ 116 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 117 118 Panswers = P_acceptable_answers; 119 120 call iox_$control (iox_$user_output, "reset_more", null, (0)); 121 call ioa_$nnl ("^/"); 122 call main (P_prompt, P_acceptable_answers, P_info, P_section, NOT_ONLY_YES_OR_NO, P_str, P_code); 123 return; 124 125 yes_no: entry (P_prompt, P_yes_sw, P_code); 126 127 128 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 129 /* */ 130 /* This is a special simplified entry for callers who want to restrict the user to yes */ 131 /* or no answers. It prompts the user with P_prompt and returns either true (yes) or */ 132 /* false (no) in P_yes_sw. It accepts yes, no, y, or n. Help files are not supplied */ 133 /* to the main procedure here because command_query takes care of the "?" response */ 134 /* itself and never passes it back. */ 135 /* */ 136 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 137 138 call main (P_prompt, null, "", "", ONLY_YES_OR_NO, yes_or_no_string, P_code); 139 if yes_or_no_string = "YES" | yes_or_no_string = "Y" | 140 yes_or_no_string = "yes" | yes_or_no_string = "yes" 141 then P_yes_sw = "1"b; 142 else P_yes_sw = "0"b; 143 return; 144 145 main: proc (I_prompt, I_acceptable_answers, I_info, I_section, I_yes_or_no_sw, O_str, O_code); 146 147 dcl I_prompt char (*) var parameter; 148 dcl I_acceptable_answers ptr; 149 dcl I_info char (*) parameter; 150 dcl I_section char (*) parameter; 151 dcl I_yes_or_no_sw bit (1) aligned parameter; 152 dcl O_str char (*) var parameter; 153 dcl O_code fixed bin (35); 154 155 dcl line char (300) var; 156 dcl outline char (256); 157 158 O_str = ""; /* Initialize output parameters */ 159 O_code = 0; 160 161 accept_anything = "0"b; 162 163 Panswers = I_acceptable_answers; 164 165 if answers.N = 0 166 then accept_anything = "1"b; 167 168 auto_query_info.switches.yes_or_no_sw = I_yes_or_no_sw; 169 170 been_thru_this_before = "0"b; 171 do while ("1"b); 172 call iox_$control (iox_$user_output, "reset_more", null, (0)); /* ignore code */ 173 174 call command_query_ (addr (auto_query_info), line, "", "^[^/^]^a^2x", been_thru_this_before, I_prompt); 175 been_thru_this_before = "1"b; 176 177 if length (line) > answers.max_length 178 then do; 179 P_code = error_table_$long_record; 180 return; 181 end; 182 183 if line = "?" 184 then do; 185 if I_info = "" 186 then call ioa_ ("^/There is no help available for this prompt."); 187 else do; 188 call ioa_$nnl ("^/"); 189 call xforum_help_$display (I_info, I_section); 190 end; 191 end; 192 else do; 193 if accept_anything 194 then do; 195 O_str = line; 196 go to EXIT; 197 end; 198 else do i = 1 to answers.N; 199 if line = answers.answer (i) 200 then do; 201 O_str = line; 202 go to EXIT; 203 end; 204 end; 205 outline = line; 206 call ioa_ ("^/""^a"" is not an acceptable response.^/Please reenter^[ or type ""?"" for help^].", outline, (I_info ^= "")); 207 end; 208 end; /* do while */ 209 210 EXIT: return; 211 end main; 212 end xforum_get_str_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/06/87 1014.6 xforum_get_str_.pl1 >special_ldd>install>MR12.1-1065>xforum_get_str_.pl1 79 1 03/11/83 1204.3 query_info.incl.pl1 >ldd>include>query_info.incl.pl1 81 2 08/06/87 1007.2 xforum_answers.incl.pl1 >special_ldd>install>MR12.1-1065>xforum_answers.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. ENABLE_ESCAPE constant bit(2) initial dcl 71 ref 92 I_acceptable_answers parameter pointer dcl 148 ref 145 163 I_info parameter char unaligned dcl 149 set ref 145 185 189* 206 I_prompt parameter varying char dcl 147 set ref 145 174* I_section parameter char unaligned dcl 150 set ref 145 189* I_yes_or_no_sw parameter bit(1) dcl 151 ref 145 168 N based fixed bin(17,0) level 2 dcl 44 ref 165 198 NOT_ONLY_YES_OR_NO 000014 constant bit(1) initial dcl 73 set ref 84* 122* ONLY_YES_OR_NO 000013 constant bit(1) initial dcl 72 set ref 138* O_code parameter fixed bin(35,0) dcl 153 set ref 145 159* O_str parameter varying char dcl 152 set ref 145 158* 195* 201* P_acceptable_answers parameter pointer dcl 18 set ref 14 84* 108 118 122* P_code parameter fixed bin(35,0) dcl 24 set ref 14 84* 108 122* 125 138* 179* P_info parameter char unaligned dcl 19 set ref 14 84* 108 122* P_prompt parameter varying char dcl 21 set ref 14 84* 108 122* 125 138* P_section parameter char unaligned dcl 20 set ref 14 84* 108 122* P_str parameter varying char dcl 22 set ref 14 84* 108 122* P_yes_sw parameter bit(1) dcl 23 set ref 125 139* 142* Panswers 000106 automatic pointer dcl 44 set ref 118* 163* 165 177 198 199 accept_anything 000100 automatic bit(1) dcl 39 set ref 161* 165* 193 addr builtin function dcl 77 ref 174 174 answer 2 based varying char(80) array level 2 dcl 44 ref 199 answer_array 000125 automatic structure level 1 unaligned dcl 2-10 answer_iocbp 6 000010 internal static pointer initial level 2 in structure "auto_query_info" dcl 64 in procedure "xforum_get_str_" set ref 100* answer_iocbp 6 000110 automatic pointer initial level 2 in structure "query_info" dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* answers based structure level 1 unaligned dcl 44 auto_query_info 000010 internal static structure level 1 unaligned dcl 64 set ref 174 174 been_thru_this_before 000101 automatic bit(1) dcl 40 set ref 170* 174* 175* command_query_ 000034 constant entry external dcl 53 ref 174 cp_escape_control 1(02) 000110 automatic bit(2) initial level 3 in structure "query_info" packed unaligned dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* cp_escape_control 1(02) 000010 internal static bit(2) initial level 3 in structure "auto_query_info" packed unaligned dcl 64 in procedure "xforum_get_str_" set ref 92* error_table_$long_record 000040 external static fixed bin(35,0) dcl 58 ref 179 explanation_len 14 000110 automatic fixed bin(21,0) initial level 2 in structure "query_info" dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* explanation_len 14 000010 internal static fixed bin(21,0) initial level 2 in structure "auto_query_info" dcl 64 in procedure "xforum_get_str_" set ref 103* explanation_ptr 12 000110 automatic pointer initial level 2 in structure "query_info" dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* explanation_ptr 12 000010 internal static pointer initial level 2 in structure "auto_query_info" dcl 64 in procedure "xforum_get_str_" set ref 102* i 000102 automatic fixed bin(17,0) dcl 41 set ref 198* 199* ioa_ 000026 constant entry external dcl 50 ref 185 206 ioa_$nnl 000030 constant entry external dcl 51 ref 121 188 iox_$control 000032 constant entry external dcl 52 ref 120 172 iox_$user_output 000042 external static pointer dcl 60 set ref 120* 172* length builtin function dcl 77 ref 177 line 000462 automatic varying char(300) dcl 155 set ref 174* 177 183 195 199 201 205 literal_sw 1(05) 000010 internal static bit(1) initial level 3 in structure "auto_query_info" packed unaligned dcl 64 in procedure "xforum_get_str_" set ref 94* literal_sw 1(05) 000110 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* max_length 1 based fixed bin(17,0) level 2 dcl 44 ref 177 null builtin function dcl 77 ref 99 100 102 120 120 138 138 1-7 1-7 1-7 172 172 outline 000576 automatic char(256) unaligned dcl 156 set ref 205* 206* padding 1(07) 000010 internal static bit(29) initial level 3 in structure "auto_query_info" packed unaligned dcl 64 in procedure "xforum_get_str_" set ref 96* padding 1(07) 000110 automatic bit(29) initial level 3 in structure "query_info" packed unaligned dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* prompt_after_explanation 1(06) 000110 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* prompt_after_explanation 1(06) 000010 internal static bit(1) initial level 3 in structure "auto_query_info" packed unaligned dcl 64 in procedure "xforum_get_str_" set ref 95* query_code 3 000010 internal static fixed bin(35,0) initial level 2 in structure "auto_query_info" dcl 64 in procedure "xforum_get_str_" set ref 98* query_code 3 000110 automatic fixed bin(35,0) initial level 2 in structure "query_info" dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* query_info 000110 automatic structure level 1 dcl 1-7 query_info_version_6 constant fixed bin(17,0) initial dcl 1-36 ref 89 question_iocbp 4 000010 internal static pointer initial level 2 in structure "auto_query_info" dcl 64 in procedure "xforum_get_str_" set ref 99* question_iocbp 4 000110 automatic pointer initial level 2 in structure "query_info" dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* repeat_time 10 000010 internal static fixed bin(71,0) initial level 2 in structure "auto_query_info" dcl 64 in procedure "xforum_get_str_" set ref 101* repeat_time 10 000110 automatic fixed bin(71,0) initial level 2 in structure "query_info" dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* status_code 2 000110 automatic fixed bin(35,0) initial level 2 in structure "query_info" dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* status_code 2 000010 internal static fixed bin(35,0) initial level 2 in structure "auto_query_info" dcl 64 in procedure "xforum_get_str_" set ref 97* suppress_name_sw 1(01) 000010 internal static bit(1) initial level 3 in structure "auto_query_info" packed unaligned dcl 64 in procedure "xforum_get_str_" set ref 91* suppress_name_sw 1(01) 000110 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* suppress_spacing 1(04) 000110 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* suppress_spacing 1(04) 000010 internal static bit(1) initial level 3 in structure "auto_query_info" packed unaligned dcl 64 in procedure "xforum_get_str_" set ref 93* switches 1 000010 internal static structure level 2 in structure "auto_query_info" dcl 64 in procedure "xforum_get_str_" switches 1 000110 automatic structure level 2 in structure "query_info" dcl 1-7 in procedure "xforum_get_str_" version 000010 internal static fixed bin(17,0) level 2 dcl 64 set ref 89* xforum_help_$display 000036 constant entry external dcl 54 ref 189 yes_or_no_string 000104 automatic varying char(3) dcl 42 set ref 138* 139 139 139 139 yes_or_no_sw 1 000010 internal static bit(1) initial level 3 in structure "auto_query_info" packed unaligned dcl 64 in procedure "xforum_get_str_" set ref 90* 168* yes_or_no_sw 1 000110 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 1-7 in procedure "xforum_get_str_" set ref 1-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. FOUR internal static fixed bin(17,0) initial dcl 2-16 ONE internal static fixed bin(17,0) initial dcl 2-16 ZERO internal static fixed bin(17,0) initial dcl 2-16 query_info_version_3 internal static fixed bin(17,0) initial dcl 1-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 1-34 query_info_version_5 internal static fixed bin(17,0) initial dcl 1-35 NAMES DECLARED BY EXPLICIT CONTEXT. EXIT 001162 constant label dcl 210 ref 196 202 init 000237 constant entry external dcl 87 main 000576 constant entry internal dcl 145 ref 84 122 138 nl 000303 constant entry external dcl 108 xforum_get_str_ 000135 constant entry external dcl 14 yes_no 000463 constant entry external dcl 125 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1316 1362 1173 1326 Length 1614 1173 44 215 123 16 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xforum_get_str_ 560 external procedure is an external procedure. main internal procedure shares stack frame of external procedure xforum_get_str_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 auto_query_info xforum_get_str_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME xforum_get_str_ 000100 accept_anything xforum_get_str_ 000101 been_thru_this_before xforum_get_str_ 000102 i xforum_get_str_ 000104 yes_or_no_string xforum_get_str_ 000106 Panswers xforum_get_str_ 000110 query_info xforum_get_str_ 000125 answer_array xforum_get_str_ 000462 line main 000576 outline main THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as call_ext_out_desc return_mac ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. command_query_ ioa_ ioa_$nnl iox_$control xforum_help_$display THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$long_record iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 7 000075 14 000127 84 000173 85 000235 87 000236 89 000245 90 000250 91 000252 92 000254 93 000256 94 000260 95 000262 96 000264 97 000266 98 000267 99 000270 100 000272 101 000273 102 000275 103 000277 105 000300 108 000301 118 000341 120 000345 121 000401 122 000414 123 000456 125 000457 138 000502 139 000545 142 000573 143 000575 145 000576 158 000626 159 000631 161 000632 163 000633 165 000636 168 000642 170 000647 172 000650 174 000704 175 000751 177 000753 179 000757 180 000762 183 000763 185 000770 188 001014 189 001027 191 001046 193 001047 195 001051 196 001063 198 001064 199 001073 201 001104 202 001116 204 001117 205 001121 206 001125 208 001161 210 001162 ----------------------------------------------------------- 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