COMPILATION LISTING OF SEGMENT rcm_get_field_info Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1136.56_Tue_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* This routine gets the field_table of the specified record collection 9* and constructs from that field_table a typed_vector_array whose 10* dimension_table describes the fields of the collection. 11**/ 12 13 /* HISTORY: 14*Written by Matthew Pierret 05/05/82. 15*Modified: 16*09/07/82 by Matthew Pierret: Changed to use rm_get_opening_info. 17*03/16/83 by Matthew Pierret: Changed to receive from rm_get_opening_info the 18* record_collection_opening_info structure. 19*03/24/83 by Lindsey Spratt: Changed to use version 2 field_table, removed 20* CHECK_VERSION. 21*07/28/83 by Matthew Pierret: Changed name from rm_get_field_info to 22* rcm_get_field_info, and all rm_ prefixes to rcm_. 23*04/12/84 by Lee Baldwin: Renamed the parameters to coincide with all the other 24* rcm_XX routines. 25*05/04/84 by Matthew Pierret: Changed to use FIELD_TABLE_VERSION_3. 26*09/27/84 by Maggie Sharpe: corrected program format; cleaned up declarations; 27* added some comments. 28*11/27/84 by Lindsey L. Spratt: Changed to use dm_vector_util_ instead of 29* vector_util_. 30**/ 31 32 /* format: style2,ind3 */ 33 34 rcm_get_field_info: 35 proc (p_file_opening_id, p_record_collection_id, p_work_area_ptr, p_typed_vector_array_ptr, p_code); 36 37 /* START OF DECLARATIONS */ 38 /* Parameter */ 39 40 dcl p_file_opening_id bit (36) aligned; 41 dcl p_record_collection_id bit (36) aligned; 42 dcl p_work_area_ptr ptr; 43 dcl p_typed_vector_array_ptr 44 ptr; 45 dcl p_code fixed bin (35); 46 47 /* Automatic */ 48 49 dcl dimension_idx fixed bin; 50 dcl descriptor_string_ptr ptr; 51 dcl work_area_ptr ptr; 52 53 /* Based */ 54 55 dcl descriptor_string bit (36) aligned based (descriptor_string_ptr); 56 dcl work_area area (sys_info$max_seg_size) based (work_area_ptr); 57 58 /* Builtin */ 59 60 dcl (max, null, substr) builtin; 61 62 /* Controlled */ 63 /* Constant */ 64 65 dcl myname init ("rcm_get_field_info") char (32) varying int static options (constant); 66 67 /* Entry */ 68 69 dcl rcm_get_opening_info entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 70 dcl sub_err_ entry () options (variable); 71 dcl dm_vector_util_$init_typed_vector_array 72 entry options (variable); 73 74 /* External */ 75 76 dcl sys_info$max_seg_size ext fixed bin (35); 77 dcl error_table_$bad_arg ext fixed bin (35); 78 dcl error_table_$unimplemented_version 79 ext fixed bin (35); 80 81 /* END OF DECLARATIONS */ 82 83 p_code = 0; 84 work_area_ptr = p_work_area_ptr; 85 if work_area_ptr = null 86 then 87 do; 88 p_code = error_table_$bad_arg; 89 return; 90 end; 91 92 call rcm_get_opening_info (p_file_opening_id, p_record_collection_id, record_collection_opening_info_ptr, p_code); 93 if p_code ^= 0 94 then return; 95 96 call CHECK_VERSION (record_collection_opening_info.version, RECORD_COLLECTION_OPENING_INFO_VERSION_1, 97 "record_collection_opening_info"); 98 99 field_table_ptr = record_collection_opening_info.field_table_ptr; 100 101 call CHECK_VERSION (field_table.version, FIELD_TABLE_VERSION_3, "field_table"); 102 103 tva_maximum_dimension_name_length = 0; 104 do dimension_idx = 1 to field_table.number_of_fields; 105 tva_maximum_dimension_name_length = 106 max (tva_maximum_dimension_name_length, field_table.field (dimension_idx).length_of_name); 107 end; 108 109 call dm_vector_util_$init_typed_vector_array (work_area_ptr, 0, (field_table.number_of_fields), 110 (tva_maximum_dimension_name_length), typed_vector_array_ptr, p_code); 111 if p_code ^= 0 112 then return; 113 114 do dimension_idx = 1 to typed_vector_array.number_of_dimensions; 115 typed_vector_array.dimension_table (dimension_idx).name = 116 substr (field_table.field_names, field_table.field (dimension_idx).location_of_name, 117 field_table.field (dimension_idx).length_of_name); 118 if field_table.field (dimension_idx).flags.descriptor_is_varying 119 then ; /* Aggragate storage items are not supported at this time */ 120 else 121 do; 122 alloc descriptor_string in (work_area); 123 descriptor_string = field_table.field (dimension_idx).descriptor; 124 end; 125 typed_vector_array.dimension_table (dimension_idx).descriptor_ptr = descriptor_string_ptr; 126 end; 127 128 p_typed_vector_array_ptr = typed_vector_array_ptr; 129 130 return; 131 132 CHECK_VERSION: 133 proc (p_given_version, p_correct_version, p_structure_name); 134 135 dcl p_structure_name char (*); 136 dcl p_given_version char (8) aligned; 137 dcl p_correct_version char (8) aligned; 138 139 if p_given_version ^= p_correct_version 140 then call sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, 141 "^/Expected version ""^a"" of ^a structure; received ""^a"".", p_correct_version, p_structure_name, 142 p_given_version); 143 144 return; 145 146 end CHECK_VERSION; 147 1 1 /* BEGIN INCLUDE FILE dm_rcm_opening_info.incl.pl1 */ 1 2 1 3 /* HISTORY: 1 4*Written by Matthew Pierret, 03/15/83. 1 5*Modified: 1 6*07/28/83 by Matthew Pierret: Changed name from dm_rm_opening_info.incl.pl1 to 1 7* dm_rcm_opening_info.incl.pl1. 1 8**/ 1 9 1 10 /* format: style2,ind3 */ 1 11 dcl 1 record_collection_opening_info 1 12 aligned based (record_collection_opening_info_ptr), 1 13 2 version char (8) aligned init (RECORD_COLLECTION_OPENING_INFO_VERSION_1), 1 14 2 current_transaction_id 1 15 bit (36) aligned init ("0"b), 1 16 2 current_rollback_count 1 17 fixed bin (35) init (0), 1 18 2 file_opening_id bit (36) aligned init ("0"b), 1 19 2 collection_id bit (36) aligned init ("0"b), 1 20 2 field_table_ptr ptr init (null); 1 21 1 22 dcl record_collection_opening_info_ptr 1 23 ptr init (null); 1 24 dcl RECORD_COLLECTION_OPENING_INFO_VERSION_1 1 25 char (8) aligned init ("rc_open1") internal static options (constant); 1 26 1 27 /* BEGIN INCLUDE FILE dm_rcm_opening_info.incl.pl1 */ 148 149 2 1 /* ********** BEGIN INCLUDE FILE dm_field_table.incl.pl1 ********** */ 2 2 2 3 /* DESCRIPTION: 2 4* 2 5* The field_table describes the layout of a set of fields in a 2 6* formatted data string. Such a string is the stored representation of a 2 7* record or a key. Fields are placed side-by-side in the string in the 2 8* order they appear in the field_table.field array. The string is divided 2 9* into the fixed portion and the varying portion. In the fixed portion 2 10* appear fixed-length fields and fixed-size length-fields for 2 11* varying-length fields. In the varying portion appear varying length 2 12* fields. The length-field for a varying-length field contains the length 2 13* of the field values either in bits or in characters, depending on the 2 14* data type of the field. 2 15**/ 2 16 2 17 /* HISTORY: 2 18*Written by Matthew Pierret, 04/01/82. 2 19*Modified: 2 20*04/20/82 by Matthew Pierret: Added length_is_in_characters, meaning, if on, 2 21* that if the field is varying, its length is expressed in 2 22* bytes/characters. 2 23*03/22/83 by Lindsey Spratt: Changed lofvf to have a precision of 35 instead 2 24* of 17, changed version to 2, changed version field to char(8) from 2 25* fixed bin (17). 2 26*05/01/84 by Matthew Pierret: Changed version to 3. Removed field.name and 2 27* put field names in one string (field_names) at the end of the 2 28* structure. Added field.location_of_name and field.length_of_name 2 29* for locating the field name in field_names. Aligned all "fixed bin" 2 30* structure elements. Changed maximum_field_name_length to 2 31* length_of_field_names. 2 32**/ 2 33 2 34 /* format: style2 */ 2 35 2 36 dcl 1 field_table aligned based (field_table_ptr), 2 37 2 version char (8) aligned init (FIELD_TABLE_VERSION_3), 2 38 2 number_of_fields fixed bin (17), 2 39 2 length_of_field_names 2 40 fixed bin (17), /* length of field_names in characters */ 2 41 2 location_of_first_varying_field 2 42 fixed bin (35), /* location of first bit in the varying portion of the formatted string */ 2 43 2 field (ft_number_of_fields refer (field_table.number_of_fields)), 2 44 3 flags aligned, 2 45 4 descriptor_is_varying 2 46 bit (1) unal, /* if on, the descriptor is not limited to the standard 36 bits */ 2 47 /* and is stored in a stand-alone fashion, with field.descriptor */ 2 48 /* containing the id of the element in which the descriptor is stored. */ 2 49 4 length_is_in_characters 2 50 bit (1) unal, /* if field is varying, the length field describes its length */ 2 51 /* in characters instead of in bits */ 2 52 4 must_be_zero bit (34) unal, 2 53 3 descriptor bit (36) aligned, 2 54 3 location fixed bin (35), /* location of first bit of field in formatted string */ 2 55 3 length_in_bits fixed bin (35), /* length of field in bits */ 2 56 3 location_of_name fixed bin (17), /* location of first character of field name in field_names */ 2 57 3 length_of_name fixed bin (17), /* length of name in characters */ 2 58 2 varying_field_map (ft_number_of_fields refer (field_table.number_of_fields)), 2 59 3 field_id fixed bin (17), /* field_id of Nth varying field */ 2 60 3 varying_field_index 2 61 fixed bin (17), /* ordinality among varying fields of field N */ 2 62 2 field_names char (ft_length_of_field_names refer (field_table.length_of_field_names)); 2 63 2 64 2 65 dcl field_table_ptr ptr; 2 66 dcl ft_length_of_field_names 2 67 fixed bin; 2 68 dcl ft_number_of_fields fixed bin; 2 69 dcl FIELD_TABLE_VERSION_3 char (8) aligned init ("FldTbl 3") internal static options (constant); 2 70 2 71 dcl field_name char (field_name_length) based (field_name_ptr); 2 72 2 73 dcl field_name_length fixed bin; 2 74 dcl field_name_ptr ptr; 2 75 2 76 /* END INCLUDE FILE dm_field_table.incl.pl1 */ 150 151 3 1 /* *********************************************************** 3 2* * * 3 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 3 4* * * 3 5* *********************************************************** */ 3 6 /* BEGIN INCLUDE FILE vu_typed_vector_array.incl.pl1 */ 3 7 3 8 /* Written by Lindsey Spratt, 03/04/82. 3 9*Modified: 3 10*06/23/82 by Lindsey Spratt: Changed to version 2. The cv entry declarations 3 11* were altered. cv_to_typed now takes ptr to the descriptor, ptr to 3 12* the print_vector value (char varying), ptr to the typed_vector 3 13* value location, and a code. cv_to_print now takes ptr to the 3 14* descriptor, ptr to the typed_vector value, the print_vector value 3 15* (char(*) varying), the maximum allowed length for the print_vector 3 16* value, a temp_seg to put the value in if its to big to fit into 3 17* the print_vector, and a code. 3 18**/ 3 19 3 20 /* format: style2,ind3 */ 3 21 dcl 1 typed_vector_array based (typed_vector_array_ptr) aligned, 3 22 2 version fixed bin (35), 3 23 2 number_of_dimensions 3 24 fixed bin (17), 3 25 2 number_of_vectors fixed bin (17), 3 26 2 number_of_vector_slots 3 27 fixed bin (17), 3 28 2 maximum_dimension_name_length 3 29 fixed bin (17), 3 30 2 dimension_table (tva_number_of_dimensions refer (typed_vector_array.number_of_dimensions)), 3 31 3 name char (tva_maximum_dimension_name_length 3 32 refer (typed_vector_array.maximum_dimension_name_length)) varying, 3 33 3 descriptor_ptr ptr, /* call cv_to_print (descriptor_ptr, typed_value_ptr, */ 3 34 /* temp_seg_ptr, max_length_for_print_value, */ 3 35 /* print_value, code) */ 3 36 3 cv_to_print entry (ptr, ptr, ptr, fixed bin (35), char (*) varying, fixed bin (35)), 3 37 /* call cv_to_typed (descriptor_ptr, area_ptr, */ 3 38 /* print_value_ptr, typed_value_ptr, code) */ 3 39 3 cv_to_typed entry (ptr, ptr, ptr, ptr, fixed bin (35)), 3 40 2 vector_slot (tva_number_of_vector_slots refer (typed_vector_array.number_of_vector_slots)) 3 41 pointer; 3 42 3 43 dcl typed_vector_array_ptr ptr; 3 44 dcl tva_number_of_vector_slots 3 45 fixed bin; 3 46 dcl tva_number_of_dimensions 3 47 fixed bin; 3 48 dcl tva_maximum_dimension_name_length 3 49 fixed bin; 3 50 dcl TYPED_VECTOR_ARRAY_VERSION_2 3 51 fixed bin (35) int static options (constant) init (2); 3 52 3 53 /* END INCLUDE FILE vu_typed_vector_array.incl.pl1 */ 152 153 4 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 4 2 /* format: style3 */ 4 3 4 4 /* These constants are to be used for the flags argument of sub_err_ */ 4 5 /* They are just "string (condition_info_header.action_flags)" */ 4 6 4 7 declare ( 4 8 ACTION_CAN_RESTART init (""b), 4 9 ACTION_CANT_RESTART init ("1"b), 4 10 ACTION_DEFAULT_RESTART 4 11 init ("01"b), 4 12 ACTION_QUIET_RESTART 4 13 init ("001"b), 4 14 ACTION_SUPPORT_SIGNAL 4 15 init ("0001"b) 4 16 ) bit (36) aligned internal static options (constant); 4 17 4 18 /* End include file */ 154 155 156 end rcm_get_field_info; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1136.5 rcm_get_field_info.pl1 >udd>sm>ds>w>ml>rcm_get_field_info.pl1 148 1 01/07/85 0959.4 dm_rcm_opening_info.incl.pl1 >ldd>incl>dm_rcm_opening_info.incl.pl1 150 2 01/07/85 0958.8 dm_field_table.incl.pl1 >ldd>incl>dm_field_table.incl.pl1 152 3 10/14/83 1709.1 vu_typed_vector_array.incl.pl1 >ldd>incl>vu_typed_vector_array.incl.pl1 154 4 04/16/82 1058.1 sub_err_flags.incl.pl1 >ldd>incl>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 4-7 set ref 139* FIELD_TABLE_VERSION_3 000002 constant char(8) initial dcl 2-69 set ref 101* RECORD_COLLECTION_OPENING_INFO_VERSION_1 000004 constant char(8) initial dcl 1-24 set ref 96* descriptor 6 based bit(36) array level 3 dcl 2-36 ref 123 descriptor_is_varying 5 based bit(1) array level 4 packed packed unaligned dcl 2-36 ref 118 descriptor_ptr based pointer array level 3 dcl 3-21 set ref 125* descriptor_string based bit(36) dcl 55 set ref 122 123* descriptor_string_ptr 000102 automatic pointer dcl 50 set ref 122* 123 125 dimension_idx 000100 automatic fixed bin(17,0) dcl 49 set ref 104* 105* 114* 115 115 115 118 123 125* dimension_table 6 based structure array level 2 dcl 3-21 dm_vector_util_$init_typed_vector_array 000014 constant entry external dcl 71 ref 109 error_table_$bad_arg 000016 external static fixed bin(35,0) dcl 77 ref 88 error_table_$unimplemented_version 000020 external static fixed bin(35,0) dcl 78 set ref 139* field 5 based structure array level 2 dcl 2-36 field_names based char level 2 dcl 2-36 ref 115 field_table based structure level 1 dcl 2-36 field_table_ptr 000110 automatic pointer dcl 2-65 in procedure "rcm_get_field_info" set ref 99* 101 104 105 109 115 115 115 118 123 field_table_ptr 6 based pointer initial level 2 in structure "record_collection_opening_info" dcl 1-11 in procedure "rcm_get_field_info" ref 99 flags 5 based structure array level 3 dcl 2-36 length_of_field_names 3 based fixed bin(17,0) level 2 dcl 2-36 ref 115 length_of_name 12 based fixed bin(17,0) array level 3 dcl 2-36 ref 105 115 location_of_name 11 based fixed bin(17,0) array level 3 dcl 2-36 ref 115 max builtin function dcl 60 ref 105 maximum_dimension_name_length 4 based fixed bin(17,0) level 2 dcl 3-21 ref 115 115 115 125 125 125 myname 000006 constant varying char(32) initial dcl 65 set ref 139* name 6 based varying char array level 3 dcl 3-21 set ref 115* null builtin function dcl 60 ref 85 1-22 139 139 number_of_dimensions 1 based fixed bin(17,0) level 2 dcl 3-21 ref 114 number_of_fields 2 based fixed bin(17,0) level 2 dcl 2-36 ref 104 109 115 115 p_code parameter fixed bin(35,0) dcl 45 set ref 34 83* 88* 92* 93 109* 111 p_correct_version parameter char(8) dcl 137 set ref 132 139 139* p_file_opening_id parameter bit(36) dcl 40 set ref 34 92* p_given_version parameter char(8) dcl 136 set ref 132 139 139* p_record_collection_id parameter bit(36) dcl 41 set ref 34 92* p_structure_name parameter char packed unaligned dcl 135 set ref 132 139* p_typed_vector_array_ptr parameter pointer dcl 43 set ref 34 128* p_work_area_ptr parameter pointer dcl 42 ref 34 84 rcm_get_opening_info 000010 constant entry external dcl 69 ref 92 record_collection_opening_info based structure level 1 dcl 1-11 record_collection_opening_info_ptr 000106 automatic pointer initial dcl 1-22 set ref 92* 96 99 1-22* sub_err_ 000012 constant entry external dcl 70 ref 139 substr builtin function dcl 60 ref 115 tva_maximum_dimension_name_length 000114 automatic fixed bin(17,0) dcl 3-48 set ref 103* 105* 105 109 typed_vector_array based structure level 1 dcl 3-21 typed_vector_array_ptr 000112 automatic pointer dcl 3-43 set ref 109* 114 115 125 128 version based char(8) initial level 2 in structure "field_table" dcl 2-36 in procedure "rcm_get_field_info" set ref 101* version based char(8) initial level 2 in structure "record_collection_opening_info" dcl 1-11 in procedure "rcm_get_field_info" set ref 96* work_area based area dcl 56 ref 122 work_area_ptr 000104 automatic pointer dcl 51 set ref 84* 85 109* 122 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 4-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 4-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 4-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 4-7 TYPED_VECTOR_ARRAY_VERSION_2 internal static fixed bin(35,0) initial dcl 3-50 field_name based char packed unaligned dcl 2-71 field_name_length automatic fixed bin(17,0) dcl 2-73 field_name_ptr automatic pointer dcl 2-74 ft_length_of_field_names automatic fixed bin(17,0) dcl 2-66 ft_number_of_fields automatic fixed bin(17,0) dcl 2-68 sys_info$max_seg_size external static fixed bin(35,0) dcl 76 tva_number_of_dimensions automatic fixed bin(17,0) dcl 3-46 tva_number_of_vector_slots automatic fixed bin(17,0) dcl 3-44 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION 000426 constant entry internal dcl 132 ref 96 101 rcm_get_field_info 000072 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 634 656 530 644 Length 1116 530 22 224 104 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rcm_get_field_info 198 external procedure is an external procedure. CHECK_VERSION internal procedure shares stack frame of external procedure rcm_get_field_info. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rcm_get_field_info 000100 dimension_idx rcm_get_field_info 000102 descriptor_string_ptr rcm_get_field_info 000104 work_area_ptr rcm_get_field_info 000106 record_collection_opening_info_ptr rcm_get_field_info 000110 field_table_ptr rcm_get_field_info 000112 typed_vector_array_ptr rcm_get_field_info 000114 tva_maximum_dimension_name_length rcm_get_field_info THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry op_alloc_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. dm_vector_util_$init_typed_vector_array rcm_get_opening_info sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 34 000065 1 22 000077 83 000101 84 000103 85 000106 88 000111 89 000113 92 000114 93 000130 96 000133 99 000155 101 000160 103 000203 104 000204 105 000215 107 000225 109 000227 111 000271 114 000274 115 000305 118 000357 122 000364 123 000371 125 000374 126 000420 128 000422 130 000425 132 000426 139 000437 144 000527 ----------------------------------------------------------- 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