COMPILATION LISTING OF SEGMENT vrm_get_description Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/21/84 1432.0 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 get_description: proc (I_rel_opening_id, I_return_area_ptr, O_relation_description_ptr, O_code); 7 8 /* . BEGIN_DESCRIPTION 9* 10* Allocate and fill in a relation_description structure for the 11*specified relation. 12* 13* . END_DESCRIPTION 14**/ 15 16 /* History 17* 18* 83-01-15 R. Harvey: Initially written 19* 83-02-17 R. Harvey: Modified for version 3 relation_description by adding 20* attribute names. 21**/ 22 23 /* get_description: proc (I_rel_opening_id, I_return_area_ptr, O_relation_description_ptr, O_code); */ 24 25 26 /* Parameters */ 27 28 dcl I_rel_opening_id bit (36) aligned parameter; 29 dcl I_return_area_ptr ptr parameter; 30 dcl O_relation_description_ptr ptr parameter; 31 dcl O_code fixed bin (35) parameter; 32 33 34 O_code = 0; 35 O_relation_description_ptr = null (); 36 37 38 call vrm_open_man$get_open_info_ptr (I_rel_opening_id, vrm_open_info_ptr, code); 39 if code ^= 0 then call error (code); 40 41 vrm_rel_desc_ptr = vrm_open_info.relation_model_ptr; 42 rd_number_of_attributes = vrm_rel_desc.number_attrs; 43 rd_number_of_indices = vrm_open_info.number_of_index_collections + 1; /* one for the primary key */ 44 rd_maximum_number_of_attributes_per_index = vrm_rel_desc.number_primary_key_attrs; 45 rd_maximum_attribute_name_length = 32; 46 47 allocate relation_description in (return_area) set (relation_description_ptr); 48 relation_description.version = RELATION_DESCRIPTION_VERSION_3; 49 relation_description.record_collection_id = "111111111111111111111111111111111111"b; 50 51 do i = 1 to rd_number_of_attributes; 52 relation_description.attribute (i).name = 53 vrm_rel_desc.attr (i).name; 54 relation_description.attribute (i).descriptor_ptr = 55 addr (vrm_rel_desc.attr (i).descriptor); 56 end; 57 58 59 /* Copy primary key information */ 60 61 vrm_collection_info_ptr = vrm_open_info.primary_key_info_ptr; 62 relation_description.index (1).collection_id = "0"b; 63 relation_description.index (1).style = 0; /* multi-field sorting */ 64 relation_description.index (1).number_of_attributes = vrm_rel_desc.number_primary_key_attrs; 65 relation_description.index (1).flags.is_unique = "1"b; 66 relation_description.index (1).flags.is_primary = "1"b; 67 relation_description.index (1).flags.pad = "0"b; 68 69 do j = 1 to vrm_collection_info.number_of_attributes; 70 relation_description.index (1).attribute (j) = vrm_collection_info.attribute (j).attr_index; 71 end; 72 73 do i = 1 to rd_number_of_indices - 1; 74 vrm_collection_info_ptr = vrm_open_info.index_collection (i).info_ptr; 75 relation_description.index (i + 1).collection_id = vrm_open_info.index_collection (i).id; 76 relation_description.index (i + 1).style = 0;/* multi-field sorting */ 77 relation_description.index (i + 1).number_of_attributes = 1; 78 relation_description.index (i + 1).flags.is_unique = "0"b; 79 relation_description.index (i + 1).flags.is_primary = "0"b; 80 relation_description.index (i + 1).flags.pad = "0"b; 81 relation_description.index (i + 1).attribute (1) = vrm_collection_info.attribute (1).attr_index; 82 end; 83 84 O_relation_description_ptr = relation_description_ptr; 85 O_code = 0; 86 87 Exit: return; 88 89 error: proc (ecode); 90 91 dcl ecode fixed bin (35) parameter; 92 93 O_code = ecode; 94 goto Exit; 95 96 end error; 97 1 1 /* BEGIN INCLUDE vrm_open_info.incl.pl1 */ 1 2 1 3 /* R. Harvey 82-11-02 1 4* 82-09-82 Roger Lackey: added iocb_list_ptr */ 1 5 1 6 dcl 1 vrm_open_info aligned based (vrm_open_info_ptr), /* Vfile relation description */ 1 7 2 version char (8), /* Version number of this structure */ 1 8 2 opening_id bit (36) aligned, /* Opening id associated with this desc */ 1 9 2 file_uid bit (36) aligned, /* Unique id of msf dir */ 1 10 2 number_of_openings fixed bin, /* Number of separate calls to vrm$open */ 1 11 2 switches, 1 12 3 shared bit (1) unal, /* Open relation in shared mode */ 1 13 3 pad bit (35) unal init ("0"b), /* Unused must be zero */ 1 14 2 database_dir_path char (168) varying, /* Absolute path of database */ 1 15 2 relation_name char (30) varying, /* Name of relation */ 1 16 2 relation_model_ptr pointer, /* Pointer to the relation_model in the relation itself or a temp seg */ 1 17 2 com_ptr pointer, /* Temp seg for cursors and scratch space */ 1 18 2 iocb_list_ptr pointer, /* Pointer to first vrm_iocb_list_block */ 1 19 2 primary_key_info_ptr pointer, /* Special case collection info ptr */ 1 20 2 number_of_index_collections fixed bin, /* Count of index collections (include primary key) */ 1 21 2 index_collection (voi_no_of_index_collections 1 22 refer (vrm_open_info.number_of_index_collections)), 1 23 3 id bit (36), 1 24 3 info_ptr ptr unal; /* Points to more detailed info */ 1 25 1 26 1 27 dcl VRM_OPEN_INFO_VERSION_1 char (8) int static options (constant) init (" 1"); 1 28 dcl vrm_open_info_ptr ptr; 1 29 dcl voi_no_of_index_collections fixed bin; 1 30 1 31 /* END INCLUDE vrm_open_info.incl.pl1 */ 98 99 2 1 /* BEGIN INCLUDE vrm_rel_desc.incl.pl1 */ 2 2 2 3 /* 83-05-26 Roger Lackey : Added vrm_attr_info.key_head bit for relation_cursors */ 2 4 2 5 dcl 1 vrm_rel_desc based (vrm_rel_desc_ptr), 2 6 2 record_id bit (12) unal, /* Distinguish us from tuples and collection records */ 2 7 2 version char (8), /* Version of this structure */ 2 8 2 file_id bit (7), /* Value of file id from model */ 2 9 2 rel_id bit (12), /* Relation id */ 2 10 2 switches, 2 11 3 MRDS_compatible bit (1) unal, /* For pre-relation_manager_ MRDS */ 2 12 3 stationary_records 2 13 bit (1) unal, /* On = stationary */ 2 14 3 indexed bit (1) unal, /* This relation has attributes with secondary indices */ 2 15 3 pad bit (33) unal, 2 16 2 var_offset fixed bin (35), /* Position of first varying attr */ 2 17 2 maximum_data_length 2 18 fixed bin (35), /* Maximum size of tuple in characters */ 2 19 2 number_primary_key_attrs 2 20 fixed bin, /* Number of attributes which make up the primary key */ 2 21 2 number_sec_indexes fixed bin, /* Number of attributes which have a secondary index */ 2 22 2 last_var_attr_no fixed bin, /* Attr index of last varying attribute */ 2 23 2 number_var_attrs fixed bin, /* Number of varying attributes */ 2 24 2 number_attrs fixed bin, /* Number of attribute in rel */ 2 25 2 attr (vrd_no_of_attrs /* Description of each attribute */ 2 26 refer (vrm_rel_desc.number_attrs)) aligned like vrm_attr_info; 2 27 2 28 dcl 1 vrm_attr_info based (vrm_attr_info_ptr), 2 29 /* Attribute specific info */ 2 30 2 name char (32), /* Name of the attribute */ 2 31 2 descriptor bit (36) aligned, /* domain descriptor */ 2 32 2 varying bit (1) unal, /* ON = This is a varying string */ 2 33 2 key_head bit (1) unal, /* ON = This attr can be a keyhead */ 2 34 2 primary_key_attr bit (1) unal, /* ON = This is a primary key attribute */ 2 35 2 pad bit (15) unal, /* unused */ 2 36 2 index_collextion_ix fixed bin (17) unal, /* Index into vrm_open_info.index_collection array if key_head is on */ 2 37 2 bit_length fixed bin (35), /* Maximum bit length of tuple */ 2 38 2 bit_offset fixed bin (35); /* Offset in tuple if fixed, index to offset in tuple if varying */ 2 39 2 40 2 41 dcl vrm_rel_desc_ptr pointer; 2 42 dcl vrd_no_of_attrs fixed bin; 2 43 dcl VRM_REL_DESC_RECORD_ID bit (12) unal int static options (constant) init ("100000000000"b); 2 44 dcl VRM_REL_DESC_VERSION_1 char (8) int static options (constant) init (" 1"); 2 45 dcl vrm_attr_info_ptr pointer; 2 46 dcl VRM_REL_DESC_KEY char (256) varying int static options (constant) init ("@relation_description"); 2 47 2 48 /* END INCLUDE vrm_rel_desc.incl.pl1 */ 100 101 3 1 /* BEGIN INCLUDE vrm_collection_info.incl.pl1 */ 3 2 3 3 /* R. Harvey 82-11-02 */ 3 4 3 5 3 6 dcl 1 vrm_collection_info aligned based (vrm_collection_info_ptr), 3 7 /* Index collection description */ 3 8 2 record_id unal, 3 9 3 header bit (4) unal, /* collection type */ 3 10 3 id bit (8) unal, /* index id */ 3 11 2 unique bit (1) unal, 3 12 2 primary_key bit (1) unal, /* This is the MRDS primary key collection */ 3 13 2 pad bit (26) unal, 3 14 2 number_of_attributes 3 15 fixed bin, 3 16 2 attribute (vci_no_of_attributes refer (vrm_collection_info.number_of_attributes)), 3 17 3 attr_index fixed bin, /* Attribute number in relation description */ 3 18 3 key_offset fixed bin, /* Offset within key in bits */ 3 19 3 key_bit_len fixed bin ; /* Length of key in bits */ 3 20 3 21 dcl vrm_collection_info_ptr 3 22 ptr; 3 23 dcl vci_no_of_attributes fixed bin; 3 24 dcl vrm_collection_header_type 3 25 bit (4) unal int static options (constant) init ("1100"b); 3 26 dcl VRM_COLLECTION_KEY_HEAD char (16) int static options (constant) init ("@collection_info"); 3 27 3 28 /* END INCLUDE vrm_collection_info.incl.pl1 */ 102 103 4 1 /* BEGIN INCLUDE FILE - dm_relation_description.incl.pl1 */ 4 2 4 3 /* HISTORY: 4 4*Written by Matthew Pierret, 09/23/82. 4 5*Modified: 4 6*12/09/82 by Matthew Pierret: Changed to RELATION_DESCRIPTION_VERSION_2. Added 4 7* record_collection_id. 4 8*02/17/83 by Ron Harvey: Added attribute names and changed to version 3. 4 9**/ 4 10 4 11 /* format: style2,ind3 */ 4 12 dcl 1 relation_description aligned based (relation_description_ptr), 4 13 2 version fixed bin (35), 4 14 2 maximum_number_of_attributes_per_index 4 15 fixed bin (17) unaligned, 4 16 2 number_of_attributes 4 17 fixed bin (17) unaligned, 4 18 2 number_of_indices fixed bin (17) unaligned, 4 19 2 maximum_attribute_name_length 4 20 fixed bin (17) unaligned, 4 21 2 record_collection_id 4 22 bit (36) aligned, 4 23 2 attribute (rd_number_of_attributes 4 24 refer (relation_description.number_of_attributes)), 4 25 3 name char (rd_maximum_attribute_name_length 4 26 refer (relation_description.maximum_attribute_name_length)) varying, 4 27 3 descriptor_ptr ptr, 4 28 2 index (rd_number_of_indices refer (relation_description.number_of_indices)), 4 29 3 collection_id bit (36) aligned, 4 30 3 style fixed bin (17) unaligned, 4 31 3 number_of_attributes 4 32 fixed bin (17) unaligned, 4 33 3 flags, 4 34 4 is_unique bit (1) unal, 4 35 4 is_primary bit (1) unal, 4 36 4 pad bit (34) unal, 4 37 3 attribute (rd_maximum_number_of_attributes_per_index 4 38 refer (relation_description.maximum_number_of_attributes_per_index)) fixed 4 39 bin (17) unaligned; 4 40 4 41 4 42 dcl relation_description_ptr 4 43 ptr; 4 44 dcl RELATION_DESCRIPTION_VERSION_3 4 45 init (3) fixed bin (35) internal static options (constant); 4 46 dcl rd_maximum_number_of_attributes_per_index 4 47 fixed bin (17); 4 48 dcl rd_number_of_indices fixed bin (17); 4 49 dcl rd_number_of_attributes 4 50 fixed bin (17); 4 51 dcl rd_maximum_attribute_name_length fixed bin (17); 4 52 4 53 /* END INCLUDE FILE - dm_relation_description.incl.pl1 */ 104 105 106 /* Automatic */ 107 108 dcl code fixed bin (35); 109 dcl (i, j) fixed bin; 110 111 /* Based */ 112 113 dcl return_area area based (I_return_area_ptr); 114 115 /* Builtin */ 116 117 dcl (addr, null) builtin; 118 119 /* External entry */ 120 121 dcl vrm_open_man$get_open_info_ptr entry (bit (36) aligned, ptr, fixed bin (35)); 122 123 124 end get_description; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/21/84 0933.8 vrm_get_description.pl1 >special_ldd>online>mrds_install>vrm_get_description.pl1 98 1 10/14/83 1609.1 vrm_open_info.incl.pl1 >ldd>include>vrm_open_info.incl.pl1 100 2 10/14/83 1609.1 vrm_rel_desc.incl.pl1 >ldd>include>vrm_rel_desc.incl.pl1 102 3 10/14/83 1609.1 vrm_collection_info.incl.pl1 >ldd>include>vrm_collection_info.incl.pl1 104 4 10/14/83 1609.1 dm_relation_description.incl.pl1 >ldd>include>dm_relation_description.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. I_rel_opening_id parameter bit(36) dcl 28 set ref 6 38* I_return_area_ptr parameter pointer dcl 29 ref 6 47 O_code parameter fixed bin(35,0) dcl 31 set ref 6 34* 85* 93* O_relation_description_ptr parameter pointer dcl 30 set ref 6 35* 84* RELATION_DESCRIPTION_VERSION_3 constant fixed bin(35,0) initial dcl 4-44 ref 48 addr builtin function dcl 117 ref 54 attr 14 based structure array level 2 dcl 2-5 attr_index 3 based fixed bin(17,0) array level 3 dcl 3-6 ref 70 81 attribute 3 based structure array level 2 in structure "vrm_collection_info" dcl 3-6 in procedure "get_description" attribute 4 based structure array level 2 in structure "relation_description" dcl 4-12 in procedure "get_description" attribute based fixed bin(17,0) array level 3 in structure "relation_description" packed unaligned dcl 4-12 in procedure "get_description" set ref 70* 81* code 000114 automatic fixed bin(35,0) dcl 108 set ref 38* 39 39* collection_id based bit(36) array level 3 dcl 4-12 set ref 62* 75* descriptor 24 based bit(36) array level 3 dcl 2-5 set ref 54 descriptor_ptr based pointer array level 3 dcl 4-12 set ref 54* ecode parameter fixed bin(35,0) dcl 91 ref 89 93 flags based structure array level 3 dcl 4-12 i 000115 automatic fixed bin(17,0) dcl 109 set ref 51* 52 52 54 54* 73* 74 75 75 76 77 78 79 80 81* id 103 based bit(36) array level 3 dcl 1-6 ref 75 index based structure array level 2 dcl 4-12 index_collection 103 based structure array level 2 dcl 1-6 info_ptr 104 based pointer array level 3 packed unaligned dcl 1-6 ref 74 is_primary based bit(1) array level 4 packed unaligned dcl 4-12 set ref 66* 79* is_unique based bit(1) array level 4 packed unaligned dcl 4-12 set ref 65* 78* j 000116 automatic fixed bin(17,0) dcl 109 set ref 69* 70 70* maximum_attribute_name_length 2(18) based fixed bin(17,0) level 2 packed unaligned dcl 4-12 set ref 47* 52 52 52 54 54 54 62 63 64 65 66 67 70 75 76 77 78 79 80 81 maximum_number_of_attributes_per_index 1 based fixed bin(17,0) level 2 packed unaligned dcl 4-12 set ref 47* 62 62 63 63 64 64 65 65 66 66 67 67 70 70 75 75 76 76 77 77 78 78 79 79 80 80 81 81 name 4 based varying char array level 3 in structure "relation_description" dcl 4-12 in procedure "get_description" set ref 52* name 14 based char(32) array level 3 in structure "vrm_rel_desc" dcl 2-5 in procedure "get_description" ref 52 null builtin function dcl 117 ref 35 number_attrs 13 based fixed bin(17,0) level 2 dcl 2-5 ref 42 number_of_attributes 2 based fixed bin(17,0) level 2 in structure "vrm_collection_info" dcl 3-6 in procedure "get_description" ref 69 number_of_attributes based fixed bin(17,0) array level 3 in structure "relation_description" packed unaligned dcl 4-12 in procedure "get_description" set ref 64* 77* number_of_attributes 1(18) based fixed bin(17,0) level 2 in structure "relation_description" packed unaligned dcl 4-12 in procedure "get_description" set ref 47* 62 63 64 65 66 67 70 75 76 77 78 79 80 81 number_of_index_collections 102 based fixed bin(17,0) level 2 dcl 1-6 ref 43 number_of_indices 2 based fixed bin(17,0) level 2 packed unaligned dcl 4-12 set ref 47* number_primary_key_attrs 7 based fixed bin(17,0) level 2 dcl 2-5 ref 44 64 pad based bit(34) array level 4 packed unaligned dcl 4-12 set ref 67* 80* primary_key_info_ptr 100 based pointer level 2 dcl 1-6 ref 61 rd_maximum_attribute_name_length 000113 automatic fixed bin(17,0) dcl 4-51 set ref 45* 47 47 rd_maximum_number_of_attributes_per_index 000110 automatic fixed bin(17,0) dcl 4-46 set ref 44* 47 47 rd_number_of_attributes 000112 automatic fixed bin(17,0) dcl 4-49 set ref 42* 47 47 51 rd_number_of_indices 000111 automatic fixed bin(17,0) dcl 4-48 set ref 43* 47 47 73 record_collection_id 3 based bit(36) level 2 dcl 4-12 set ref 49* relation_description based structure level 1 dcl 4-12 set ref 47 relation_description_ptr 000106 automatic pointer dcl 4-42 set ref 47* 48 49 52 54 62 63 64 65 66 67 70 75 76 77 78 79 80 81 84 relation_model_ptr 72 based pointer level 2 dcl 1-6 ref 41 return_area based area(1024) dcl 113 ref 47 style based fixed bin(17,0) array level 3 packed unaligned dcl 4-12 set ref 63* 76* version based fixed bin(35,0) level 2 dcl 4-12 set ref 48* vrm_attr_info based structure level 1 unaligned dcl 2-28 vrm_collection_info based structure level 1 dcl 3-6 vrm_collection_info_ptr 000104 automatic pointer dcl 3-21 set ref 61* 69 70 74* 81 vrm_open_info based structure level 1 dcl 1-6 vrm_open_info_ptr 000100 automatic pointer dcl 1-28 set ref 38* 41 43 61 74 75 vrm_open_man$get_open_info_ptr 000010 constant entry external dcl 121 ref 38 vrm_rel_desc based structure level 1 unaligned dcl 2-5 vrm_rel_desc_ptr 000102 automatic pointer dcl 2-41 set ref 41* 42 44 52 54 64 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. VRM_COLLECTION_KEY_HEAD internal static char(16) initial unaligned dcl 3-26 VRM_OPEN_INFO_VERSION_1 internal static char(8) initial unaligned dcl 1-27 VRM_REL_DESC_KEY internal static varying char(256) initial dcl 2-46 VRM_REL_DESC_RECORD_ID internal static bit(12) initial unaligned dcl 2-43 VRM_REL_DESC_VERSION_1 internal static char(8) initial unaligned dcl 2-44 vci_no_of_attributes automatic fixed bin(17,0) dcl 3-23 voi_no_of_index_collections automatic fixed bin(17,0) dcl 1-29 vrd_no_of_attrs automatic fixed bin(17,0) dcl 2-42 vrm_attr_info_ptr automatic pointer dcl 2-45 vrm_collection_header_type internal static bit(4) initial unaligned dcl 3-24 NAMES DECLARED BY EXPLICIT CONTEXT. Exit 000752 constant label dcl 87 ref 94 error 000753 constant entry internal dcl 89 ref 39 get_description 000013 constant entry external dcl 6 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1036 1050 770 1046 Length 1312 770 12 226 46 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME get_description 101 external procedure is an external procedure. error internal procedure shares stack frame of external procedure get_description. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME get_description 000100 vrm_open_info_ptr get_description 000102 vrm_rel_desc_ptr get_description 000104 vrm_collection_info_ptr get_description 000106 relation_description_ptr get_description 000110 rd_maximum_number_of_attributes_per_index get_description 000111 rd_number_of_indices get_description 000112 rd_number_of_attributes get_description 000113 rd_maximum_attribute_name_length get_description 000114 code get_description 000115 i get_description 000116 j get_description THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return ext_entry alloc_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. vrm_open_man$get_open_info_ptr NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000006 34 000020 35 000022 38 000024 39 000036 41 000042 42 000045 43 000047 44 000053 45 000055 47 000057 48 000124 49 000126 51 000130 52 000137 54 000200 56 000212 61 000214 62 000217 63 000255 64 000263 65 000332 66 000370 67 000405 69 000413 70 000423 71 000476 73 000500 74 000511 75 000515 76 000562 77 000570 78 000635 79 000674 80 000714 81 000722 82 000744 84 000746 85 000751 87 000752 89 000753 93 000755 94 000760 ----------------------------------------------------------- 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