COMPILATION LISTING OF SEGMENT rcm_destroy_cursor Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/03/85 1603.1 mst Thu Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* format: style2,ind3 */ 8 9 rcm_destroy_cursor: 10 proc (p_record_cursor_ptr, p_code); 11 12 /* DESCRIPTION: 13* This routine frees the storage used by the given record_cursor. 14**/ 15 16 /* HISTORY: 17*Written by Matthew Pierret, 04/04/83. 18*Modified: 19*07/28/83 by Matthew Pierret: Changed name from rm_destroy_cursor to 20* rcm_destroy_cursor, and all rm_ prefixes to rcm_. 21**/ 22 23 /* START OF DECLARATIONS */ 24 /* Parameter */ 25 26 dcl p_record_cursor_ptr ptr; /*Pointer to record_cursor to be 27* destroyed.*/ 28 dcl p_code fixed bin (35); /*Error code*/ 29 30 /* Automatic */ 31 32 dcl work_area_ptr ptr; 33 34 /* Based */ 35 36 dcl work_area area (sys_info$max_seg_size) based (work_area_ptr); 37 38 /* Builtin */ 39 40 dcl null builtin; 41 42 /* Constant */ 43 44 dcl myname init ("rcm_destroy_cursor") char (32) varying internal static options (constant); 45 46 /* Entry */ 47 48 dcl sub_err_ entry () options (variable); 49 50 /* External */ 51 52 dcl ( 53 dm_error_$wrong_cursor_type, 54 error_table_$unimplemented_version, 55 sys_info$max_seg_size 56 ) fixed bin (35) ext; 57 58 /* END OF DECLARATIONS */ 59 60 p_code = 0; 61 record_cursor_ptr = p_record_cursor_ptr; 62 63 if record_cursor.type ^= RECORD_CURSOR_TYPE 64 then call 65 sub_err_ (dm_error_$wrong_cursor_type, myname, ACTION_CANT_RESTART, null, 0, 66 "^/Expected a record cursor, type ^d. Received cursor of type ^d.", RECORD_CURSOR_TYPE, record_cursor.type) 67 ; 68 call CHECK_VERSION ((record_cursor.version), (RECORD_CURSOR_VERSION_2), "record_cursor"); 69 70 work_area_ptr = record_cursor.area_ptr; 71 72 free record_cursor in (work_area); 73 74 p_record_cursor_ptr = null; 75 76 return; 77 78 CHECK_VERSION: 79 proc (p_received_version, p_expected_version, p_structure_name); 80 dcl p_received_version fixed bin (35); 81 dcl p_expected_version fixed bin (35); 82 dcl p_structure_name char (*); 83 if p_received_version ^= p_expected_version 84 then call 85 sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, 86 "^/Expected version ^d of the ^a structure. 87 Received version ^d instead.", p_expected_version, p_structure_name, p_received_version); 88 end CHECK_VERSION; 89 1 1 /* BEGIN INCLUDE FILE - dm_rcm_cursor.incl.pl1 */ 1 2 1 3 /* HISTORY: 1 4*Written by Matthew Pierret, 04/05/82. 1 5*Modified: 1 6*08/19/82 by Matthew Pierret: Version 2. Changed collection_id to 1 7* bit (36) aligned. 1 8*07/28/83 by Matthew Pierret: Changed name from dm_rm_cursor.incl.pl1 to 1 9* dm_rcm_cursor.incl.pl1. 1 10*04/13/84 by Lee Baldwin: Renamed pf_opening_id to file_opening_id to coincide 1 11* with the naming conventions used in the rcm_XX routines. 1 12**/ 1 13 1 14 /* format: style2,ind3 */ 1 15 dcl 1 record_cursor aligned based (record_cursor_ptr), 1 16 2 type fixed bin (17) unaligned, 1 17 2 version fixed bin (17) unaligned, 1 18 2 flags, 1 19 3 position_is_valid 1 20 bit (1) unal, 1 21 3 pad bit (35) unal, 1 22 2 area_ptr ptr, 1 23 2 file_opening_id bit (36) aligned, 1 24 2 collection_id bit (36) aligned, 1 25 2 record_id bit (36) aligned, 1 26 2 record_check_value bit (36) aligned; 1 27 1 28 dcl record_cursor_ptr ptr; 1 29 dcl RECORD_CURSOR_VERSION_2 1 30 init (2) fixed bin int static options (constant); 1 31 dcl RECORD_CURSOR_TYPE init (1) fixed bin int static options (constant); 1 32 dcl BEGINNING_OF_COLLECTION_RECORD_ID 1 33 init ("0"b) bit (36) aligned int static options (constant); 1 34 1 35 /* END INCLUDE FILE - dm_rcm_cursor.incl.pl1 */ 90 91 2 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 2 2 /* format: style3 */ 2 3 2 4 /* These constants are to be used for the flags argument of sub_err_ */ 2 5 /* They are just "string (condition_info_header.action_flags)" */ 2 6 2 7 declare ( 2 8 ACTION_CAN_RESTART init (""b), 2 9 ACTION_CANT_RESTART init ("1"b), 2 10 ACTION_DEFAULT_RESTART 2 11 init ("01"b), 2 12 ACTION_QUIET_RESTART 2 13 init ("001"b), 2 14 ACTION_SUPPORT_SIGNAL 2 15 init ("0001"b) 2 16 ) bit (36) aligned internal static options (constant); 2 17 2 18 /* End include file */ 92 93 end rcm_destroy_cursor; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/03/85 1147.1 rcm_destroy_cursor.pl1 >spec>temp>famis1>rcm_destroy_cursor.pl1 90 1 01/03/85 1004.3 dm_rcm_cursor.incl.pl1 >spec>temp>famis1>dm_rcm_cursor.incl.pl1 92 2 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.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. ACTION_CANT_RESTART 000000 constant bit(36) initial dcl 2-7 set ref 63* 83* RECORD_CURSOR_TYPE 000024 constant fixed bin(17,0) initial dcl 1-31 set ref 63 63* RECORD_CURSOR_VERSION_2 constant fixed bin(17,0) initial dcl 1-29 ref 68 area_ptr 2 based pointer level 2 dcl 1-15 ref 70 dm_error_$wrong_cursor_type 000012 external static fixed bin(35,0) dcl 52 set ref 63* error_table_$unimplemented_version 000014 external static fixed bin(35,0) dcl 52 set ref 83* myname 000001 constant varying char(32) initial dcl 44 set ref 63* 83* null builtin function dcl 40 ref 63 63 74 83 83 p_code parameter fixed bin(35,0) dcl 28 set ref 9 60* p_expected_version parameter fixed bin(35,0) dcl 81 set ref 78 83 83* p_received_version parameter fixed bin(35,0) dcl 80 set ref 78 83 83* p_record_cursor_ptr parameter pointer dcl 26 set ref 9 61 74* p_structure_name parameter char unaligned dcl 82 set ref 78 83* record_cursor based structure level 1 dcl 1-15 set ref 72 record_cursor_ptr 000102 automatic pointer dcl 1-28 set ref 61* 63 63 68 70 72 sub_err_ 000010 constant entry external dcl 48 ref 63 83 type based fixed bin(17,0) level 2 packed unaligned dcl 1-15 set ref 63 63* version 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-15 ref 68 work_area based area dcl 36 ref 72 work_area_ptr 000100 automatic pointer dcl 32 set ref 70* 72 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 2-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 2-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 2-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 2-7 BEGINNING_OF_COLLECTION_RECORD_ID internal static bit(36) initial dcl 1-32 sys_info$max_seg_size external static fixed bin(35,0) dcl 52 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION 000221 constant entry internal dcl 78 ref 68 rcm_destroy_cursor 000103 constant entry external dcl 9 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 420 436 334 430 Length 644 334 16 172 64 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rcm_destroy_cursor 190 external procedure is an external procedure. CHECK_VERSION internal procedure shares stack frame of external procedure rcm_destroy_cursor. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rcm_destroy_cursor 000100 work_area_ptr rcm_destroy_cursor 000102 record_cursor_ptr rcm_destroy_cursor THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return ext_entry free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$wrong_cursor_type error_table_$unimplemented_version CONSTANTS 000316 aa 000006000000 000317 aa 000006000000 000320 aa 600000000041 000321 aa 000114000000 000322 aa 600000000041 000323 aa 000137000000 000324 aa 600000000041 000325 aa 000116000000 000326 ta 000023000000 000327 aa 000000000000 000330 ta 000023000000 000331 aa 000000000000 000332 ta 000014000000 000333 aa 000000000000 000000 aa 400000000000 000001 aa 000000000022 000002 aa 162 143 155 137 rcm_ 000003 aa 144 145 163 164 dest 000004 aa 162 157 171 137 roy_ 000005 aa 143 165 162 163 curs 000006 aa 157 162 040 040 or 000007 aa 040 040 040 040 000010 aa 040 040 040 040 000011 aa 040 040 040 040 000012 aa 524000000107 000013 aa 526077777777 000014 aa 524000000015 000015 aa 406000000021 000016 aa 404000000021 000017 aa 524000000101 000020 aa 404000000005 000021 aa 514000000044 000022 aa 530000000040 000023 aa 404000000043 000024 aa 000000000001 000025 aa 464000000000 000026 aa 077777000043 000027 aa 000001000000 000030 aa 162 145 143 157 reco 000031 aa 162 144 137 143 rd_c 000032 aa 165 162 163 157 urso 000033 aa 162 000 000 000 r 000034 aa 136 057 105 170 ^/Ex 000035 aa 160 145 143 164 pect 000036 aa 145 144 040 141 ed a 000037 aa 040 162 145 143 rec 000040 aa 157 162 144 040 ord 000041 aa 143 165 162 163 curs 000042 aa 157 162 054 040 or, 000043 aa 164 171 160 145 type 000044 aa 040 136 144 056 ^d. 000045 aa 040 040 122 145 Re 000046 aa 143 145 151 166 ceiv 000047 aa 145 144 040 143 ed c 000050 aa 165 162 163 157 urso 000051 aa 162 040 157 146 r of 000052 aa 040 164 171 160 typ 000053 aa 145 040 136 144 e ^d 000054 aa 056 000 000 000 . 000055 aa 136 057 105 170 ^/Ex 000056 aa 160 145 143 164 pect 000057 aa 145 144 040 166 ed v 000060 aa 145 162 163 151 ersi 000061 aa 157 156 040 136 on ^ 000062 aa 144 040 157 146 d of 000063 aa 040 164 150 145 the 000064 aa 040 136 141 040 ^a 000065 aa 163 164 162 165 stru 000066 aa 143 164 165 162 ctur 000067 aa 145 056 012 122 e. R 000070 aa 145 143 145 151 ecei 000071 aa 166 145 144 040 ved 000072 aa 166 145 162 163 vers 000073 aa 151 157 156 040 ion 000074 aa 136 144 040 151 ^d i 000075 aa 156 163 164 145 nste 000076 aa 141 144 056 000 ad. BEGIN PROCEDURE rcm_destroy_cursor ENTRY TO rcm_destroy_cursor STATEMENT 1 ON LINE 9 rcm_destroy_cursor: proc (p_record_cursor_ptr, p_code); 000077 at 000002000025 000100 ta 000023000000 000101 ta 000077000000 000102 da 000060300000 000103 aa 000300 6270 00 eax7 192 000104 aa 7 00034 3521 20 epp2 pr7|28,* 000105 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000106 aa 000004000000 000107 aa 000000000000 STATEMENT 1 ON LINE 60 p_code = 0; 000110 aa 6 00032 3735 20 epp7 pr6|26,* 000111 aa 7 00004 4501 20 stz pr7|4,* p_code STATEMENT 1 ON LINE 61 record_cursor_ptr = p_record_cursor_ptr; 000112 aa 7 00002 3715 20 epp5 pr7|2,* p_record_cursor_ptr 000113 aa 5 00000 3715 20 epp5 pr5|0,* p_record_cursor_ptr 000114 aa 6 00102 6515 00 spri5 pr6|66 record_cursor_ptr STATEMENT 1 ON LINE 63 if record_cursor.type ^= RECORD_CURSOR_TYPE then call sub_err_ (dm_error_$wrong_cursor_type, myname, ACTION_CANT_RESTART, null, 0, "^/Expected a record cursor, type ^d. Received cursor of type ^d.", RECORD_CURSOR_TYPE, record_cursor.type) ; 000115 aa 5 00000 2351 00 lda pr5|0 record_cursor.type 000116 aa 000066 7330 00 lrs 54 000117 aa 000001 1160 07 cmpq 1,dl 000120 aa 000053 6000 04 tze 43,ic 000173 000121 aa 777705 3534 24 epp3 -59,ic* 000122 aa 6 00112 2535 00 spri3 pr6|74 000123 aa 6 00114 4501 00 stz pr6|76 000124 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000125 aa 777710 00 0104 desc9a -56,68 000034 = 136057105170 000126 aa 6 00116 00 0104 desc9a pr6|78,68 000127 la 4 00012 3521 20 epp2 pr4|10,* dm_error_$wrong_cursor_type 000130 aa 6 00142 2521 00 spri2 pr6|98 000131 aa 777651 3520 04 epp2 -87,ic 000002 = 162143155137 000132 aa 6 00144 2521 00 spri2 pr6|100 000133 aa 777645 3520 04 epp2 -91,ic 000000 = 400000000000 000134 aa 6 00146 2521 00 spri2 pr6|102 000135 aa 6 00112 3521 00 epp2 pr6|74 000136 aa 6 00150 2521 00 spri2 pr6|104 000137 aa 6 00114 3521 00 epp2 pr6|76 000140 aa 6 00152 2521 00 spri2 pr6|106 000141 aa 6 00116 3521 00 epp2 pr6|78 000142 aa 6 00154 2521 00 spri2 pr6|108 000143 aa 777661 3520 04 epp2 -79,ic 000024 = 000000000001 000144 aa 6 00156 2521 00 spri2 pr6|110 000145 aa 5 00000 3521 00 epp2 pr5|0 record_cursor.type 000146 aa 6 00160 2521 00 spri2 pr6|112 000147 aa 777654 3520 04 epp2 -84,ic 000023 = 404000000043 000150 aa 6 00162 2521 00 spri2 pr6|114 000151 aa 777651 3520 04 epp2 -87,ic 000022 = 530000000040 000152 aa 6 00164 2521 00 spri2 pr6|116 000153 aa 777646 3520 04 epp2 -90,ic 000021 = 514000000044 000154 aa 6 00166 2521 00 spri2 pr6|118 000155 aa 777650 3520 04 epp2 -88,ic 000025 = 464000000000 000156 aa 6 00170 2521 00 spri2 pr6|120 000157 aa 777641 3520 04 epp2 -95,ic 000020 = 404000000005 000160 aa 6 00172 2521 00 spri2 pr6|122 000161 aa 777636 3520 04 epp2 -98,ic 000017 = 524000000101 000162 aa 6 00174 2521 00 spri2 pr6|124 000163 aa 777633 3520 04 epp2 -101,ic 000016 = 404000000021 000164 aa 6 00176 2521 00 spri2 pr6|126 000165 aa 777630 3520 04 epp2 -104,ic 000015 = 406000000021 000166 aa 6 00200 2521 00 spri2 pr6|128 000167 aa 6 00140 6211 00 eax1 pr6|96 000170 aa 040000 4310 07 fld 16384,dl 000171 la 4 00010 3521 20 epp2 pr4|8,* sub_err_ 000172 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 68 call CHECK_VERSION ((record_cursor.version), (RECORD_CURSOR_VERSION_2), "record_cursor"); 000173 aa 6 00102 2351 20 lda pr6|66,* record_cursor.version 000174 aa 000022 7350 00 als 18 000175 aa 000066 7330 00 lrs 54 000176 aa 6 00114 7561 00 stq pr6|76 000177 aa 000002 2360 07 ldq 2,dl 000200 aa 6 00137 7561 00 stq pr6|95 000201 aa 777627 2370 04 ldaq -105,ic 000030 = 162145143157 162144137143 000202 aa 6 00116 7571 00 staq pr6|78 000203 aa 777627 2370 04 ldaq -105,ic 000032 = 165162163157 162000000000 000204 aa 6 00120 7571 00 staq pr6|80 000205 aa 000111 3520 04 epp2 73,ic 000316 = 000006000000 000206 aa 2 00000 2351 00 lda pr2|0 000207 aa 000012 6700 04 tsp4 10,ic 000221 STATEMENT 1 ON LINE 70 work_area_ptr = record_cursor.area_ptr; 000210 aa 6 00102 3735 20 epp7 pr6|66,* record_cursor_ptr 000211 aa 7 00002 3735 20 epp7 pr7|2,* record_cursor.area_ptr 000212 aa 6 00100 6535 00 spri7 pr6|64 work_area_ptr STATEMENT 1 ON LINE 72 free record_cursor in (work_area); 000213 aa 6 00102 3715 00 epp5 pr6|66 record_cursor_ptr 000214 aa 0 01404 7001 00 tsx0 pr0|772 free_based STATEMENT 1 ON LINE 74 p_record_cursor_ptr = null; 000215 aa 777611 2370 04 ldaq -119,ic 000026 = 077777000043 000001000000 000216 aa 6 00032 3735 20 epp7 pr6|26,* 000217 aa 7 00002 7571 20 staq pr7|2,* p_record_cursor_ptr STATEMENT 1 ON LINE 76 return; 000220 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 93 end rcm_destroy_cursor; BEGIN PROCEDURE CHECK_VERSION ENTRY TO CHECK_VERSION STATEMENT 1 ON LINE 78 CHECK_VERSION: proc (p_received_version, p_expected_version, p_structure_name); 000221 aa 6 00104 6501 00 spri4 pr6|68 000222 aa 6 00106 2521 00 spri2 pr6|70 000223 aa 2 00002 3521 01 epp2 pr2|2,au 000224 aa 6 00110 2521 00 spri2 pr6|72 000225 aa 2 00004 2361 20 ldq pr2|4,* 000226 aa 000002 6040 04 tmi 2,ic 000230 000227 aa 777777 3760 07 anq 262143,dl 000230 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000231 aa 6 00202 7561 00 stq pr6|130 STATEMENT 1 ON LINE 83 if p_received_version ^= p_expected_version then call sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, "^/Expected version ^d of the ^a structure. Received version ^d instead.", p_expected_version, p_structure_name, p_received_version); 000232 aa 6 00106 3735 20 epp7 pr6|70,* 000233 aa 7 00002 2361 20 ldq pr7|2,* p_received_version 000234 aa 7 00004 1161 20 cmpq pr7|4,* p_expected_version 000235 aa 000057 6000 04 tze 47,ic 000314 000236 aa 777570 3714 24 epp5 -136,ic* 000237 aa 6 00204 6515 00 spri5 pr6|132 000240 aa 6 00203 4501 00 stz pr6|131 000241 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000242 aa 777614 00 0110 desc9a -116,72 000055 = 136057105170 000243 aa 6 00206 00 0110 desc9a pr6|134,72 000244 aa 6 00044 3701 20 epp4 pr6|36,* 000245 la 4 00014 3521 20 epp2 pr4|12,* error_table_$unimplemented_version 000246 aa 6 00232 2521 00 spri2 pr6|154 000247 aa 777533 3520 04 epp2 -165,ic 000002 = 162143155137 000250 aa 6 00234 2521 00 spri2 pr6|156 000251 aa 777527 3520 04 epp2 -169,ic 000000 = 400000000000 000252 aa 6 00236 2521 00 spri2 pr6|158 000253 aa 6 00204 3521 00 epp2 pr6|132 000254 aa 6 00240 2521 00 spri2 pr6|160 000255 aa 6 00203 3521 00 epp2 pr6|131 000256 aa 6 00242 2521 00 spri2 pr6|162 000257 aa 6 00206 3521 00 epp2 pr6|134 000260 aa 6 00244 2521 00 spri2 pr6|164 000261 aa 7 00004 3521 20 epp2 pr7|4,* p_expected_version 000262 aa 6 00246 2521 00 spri2 pr6|166 000263 aa 7 00006 3521 20 epp2 pr7|6,* p_structure_name 000264 aa 6 00250 2521 00 spri2 pr6|168 000265 aa 7 00002 3521 20 epp2 pr7|2,* p_received_version 000266 aa 6 00252 2521 00 spri2 pr6|170 000267 aa 777534 3520 04 epp2 -164,ic 000023 = 404000000043 000270 aa 6 00254 2521 00 spri2 pr6|172 000271 aa 6 00270 2521 00 spri2 pr6|184 000272 aa 6 00274 2521 00 spri2 pr6|188 000273 aa 777527 3520 04 epp2 -169,ic 000022 = 530000000040 000274 aa 6 00256 2521 00 spri2 pr6|174 000275 aa 777524 3520 04 epp2 -172,ic 000021 = 514000000044 000276 aa 6 00260 2521 00 spri2 pr6|176 000277 aa 777526 3520 04 epp2 -170,ic 000025 = 464000000000 000300 aa 6 00262 2521 00 spri2 pr6|178 000301 aa 777517 3520 04 epp2 -177,ic 000020 = 404000000005 000302 aa 6 00264 2521 00 spri2 pr6|180 000303 aa 777507 3520 04 epp2 -185,ic 000012 = 524000000107 000304 aa 6 00266 2521 00 spri2 pr6|182 000305 aa 6 00110 3535 20 epp3 pr6|72,* 000306 aa 3 00004 3521 20 epp2 pr3|4,* 000307 aa 6 00272 2521 00 spri2 pr6|186 000310 aa 6 00230 6211 00 eax1 pr6|152 000311 aa 044000 4310 07 fld 18432,dl 000312 la 4 00010 3521 20 epp2 pr4|8,* sub_err_ 000313 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 88 end CHECK_VERSION; 000314 aa 6 00104 6101 00 rtcd pr6|68 END PROCEDURE CHECK_VERSION END PROCEDURE rcm_destroy_cursor ----------------------------------------------------------- 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