COMPILATION LISTING OF SEGMENT dmu_cv_table_to_typed_array Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/03/85 1643.2 mst Thu Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* Given a pointer to a field_table and a list of field ids, this module 9* builds a typed_vector_array, allocated in the provided area, by converting 10* field descriptions in the field_table into dimension descriptions in the 11* dimension_table. 12**/ 13 14 /* HISTORY: 15*Written by Matthew Pierret 04/05/82. 16*Modified: 17*04/14/82 by Lindsey Spratt: Changed the field_table location to be 1-originned 18* instead of 0-originned. ft_maximum_field_name_length is no longer 19* calculated but is simply set to 20* typed_vector_array.maximum_dimension_name_length. Also, the 21* descriptor_string based variable was changed from unaligned to 22* aligned. 23*06/28/82 by Lindsey Spratt: Declared a local automatic variable 24* "number_of_fields". field_table.number_of_fields was being set to 25* the number of field ids being passed in as an argument. 26*08/19/82 by Matthew Pierret: Changed p_ids to p_id_list_ptr, which 27* points to id_list structure. 28*10/14/82 by Matthew Pierret: Added p_number_of_vector_slots. 29*03/22/83 by Lindsey Spratt: Changed to use version 2 of the field_table 30* structure. Added the CHECK_VERSION_CHAR internal procedure. 31*06/14/83 by Matthew Pierret: Changed to leave a blank dimension_table entry 32* if a non-positive id is specified in p_id_list. 33* Added FINISH routine as cleanup handler and enabled cleanup 34* condition. Added copyright notice. 35*05/03/84 by Matthew Pierret: Changed to FIELD_TABLE_VERSION_3. Removed some 36* un-used variables. 37*11/27/84 by Lindsey L. Spratt: Changed to use dm_vector_util_ instead of 38* vector_util_. 39*12/07/84 by M. Sharpe: to clean up format and dcls; to correct calls to 40* CHECK_VERSION* to pass parameters by reference where possible. 41**/ 42 /* format: style2,ind3 */ 43 44 dmu_cv_table_to_typed_array: 45 cv_table_to_typed_array: 46 proc (p_field_table_ptr, p_id_list_ptr, p_area_ptr, p_number_of_vector_slots, p_typed_vector_array_ptr, p_code); 47 48 49 /* START OF DECLARATIONS */ 50 /* Parameter */ 51 52 dcl p_area_ptr ptr; 53 dcl p_typed_vector_array_ptr 54 ptr; 55 dcl p_field_table_ptr ptr; 56 dcl p_id_list_ptr ptr; 57 dcl p_number_of_vector_slots 58 fixed bin (35); 59 dcl p_code fixed bin (35); 60 61 /* Automatic */ 62 63 dcl process_all_fields bit (1) aligned; 64 dcl number_of_fields fixed bin; 65 dcl dimension_idx fixed bin; 66 dcl field_id fixed bin (17); 67 dcl area_ptr ptr; 68 dcl descriptor_string_ptr ptr; 69 70 /* Based */ 71 72 dcl area area (sys_info$max_seg_size) based (area_ptr); 73 dcl descriptor_string aligned bit (36) based (descriptor_string_ptr); 74 75 /* Builtin */ 76 77 dcl (hbound, max, null, substr) 78 builtin; 79 80 /* Condition */ 81 82 dcl cleanup condition; 83 84 /* Constant */ 85 86 dcl myname init ("dmu_cv_table_to_typed_array") char (32) varying int static options (constant); 87 88 /* Entry */ 89 90 dcl sub_err_ entry options (variable); 91 dcl dm_vector_util_$init_typed_vector_array 92 entry options (variable); 93 dcl dm_vector_util_$free_typed_vector_array 94 entry (ptr, ptr, fixed bin (35)); 95 96 /* External */ 97 98 dcl error_table_$fatal_error 99 ext fixed bin (35); 100 dcl error_table_$unimplemented_version 101 ext fixed bin (35); 102 dcl sys_info$max_seg_size ext fixed bin (35); 103 104 /* END OF DECLARATIONS */ 105 106 p_code = 0; 107 area_ptr = p_area_ptr; 108 field_table_ptr = p_field_table_ptr; 109 110 call CHECK_VERSION_CHAR ((field_table.version), (FIELD_TABLE_VERSION_3), "field_table"); 111 112 if p_id_list_ptr = null 113 then 114 do; 115 116 number_of_fields = hbound (field_table.field, 1); 117 process_all_fields = "1"b; 118 119 end; 120 else 121 do; 122 123 id_list_ptr = p_id_list_ptr; 124 call CHECK_VERSION (id_list.version, (ID_LIST_VERSION_1), "id_list"); 125 126 process_all_fields = "0"b; 127 number_of_fields = id_list.number_of_ids; 128 129 end; 130 131 tva_maximum_dimension_name_length = 0; 132 do dimension_idx = 1 to number_of_fields; 133 if process_all_fields 134 then field_id = dimension_idx; 135 else field_id = id_list.id (dimension_idx); 136 if field_id >= 1 137 then tva_maximum_dimension_name_length = 138 max (tva_maximum_dimension_name_length, field_table.field (field_id).length_of_name); 139 end; 140 141 typed_vector_array_ptr = null; 142 143 on cleanup call FINISH (); 144 145 call dm_vector_util_$init_typed_vector_array (area_ptr, p_number_of_vector_slots, number_of_fields, 146 tva_maximum_dimension_name_length, typed_vector_array_ptr, p_code); 147 if p_code ^= 0 148 then return; 149 call CHECK_VERSION (typed_vector_array.version, TYPED_VECTOR_ARRAY_VERSION_2, "typed_vector_array"); 150 151 152 dimension_idx = 0; 153 SET_NAME_AND_DESCRIPTOR: 154 do dimension_idx = 1 to number_of_fields; 155 156 if process_all_fields 157 then field_id = dimension_idx; 158 else field_id = id_list.id (dimension_idx); 159 160 if field_id >= 1 /* If field_id<1, leave dimension_table entry empty */ 161 then 162 do; 163 typed_vector_array.dimension_table (dimension_idx).name = 164 substr (field_table.field_names, field_table.field (field_id).location_of_name, 165 field_table.field (field_id).length_of_name); 166 if field_table.field (field_id).flags.descriptor_is_varying 167 then call sub_err_ (error_table_$fatal_error, myname, "s", null, 0, 168 "^/The capability to handle varying length descriptors is not yet supported."); 169 170 alloc descriptor_string in (area); 171 descriptor_string = field_table.field (field_id).descriptor; 172 173 typed_vector_array.dimension_table (dimension_idx).descriptor_ptr = descriptor_string_ptr; 174 end; 175 end SET_NAME_AND_DESCRIPTOR; 176 177 p_typed_vector_array_ptr = typed_vector_array_ptr; 178 179 return; 180 181 FINISH: 182 proc (); 183 184 if typed_vector_array_ptr ^= null 185 then call dm_vector_util_$free_typed_vector_array (area_ptr, typed_vector_array_ptr, (0)); 186 187 end FINISH; 188 189 CHECK_VERSION: 190 proc (p_received_version, p_expected_version, p_structure_name); 191 dcl p_received_version fixed bin (35); 192 dcl p_expected_version fixed bin (35); 193 dcl p_structure_name char (*); 194 195 if p_received_version ^= p_expected_version 196 then call sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, 197 "^/Expected version ^d of the ^a structure. 198 Received version ^d instead.", p_expected_version, p_structure_name, p_received_version); 199 200 end CHECK_VERSION; 201 202 CHECK_VERSION_CHAR: 203 proc (p_received_version, p_expected_version, p_structure_name); 204 dcl p_received_version char (*) parameter; 205 dcl p_expected_version char (*) parameter; 206 dcl p_structure_name char (*) parameter; 207 208 if p_received_version ^= p_expected_version 209 then call sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, 210 "^/Expected version ^a of the ^a structure. 211 Received version ^a instead.", p_expected_version, p_structure_name, p_received_version); 212 213 end CHECK_VERSION_CHAR; 214 1 1 /* *********************************************************** 1 2* * * 1 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 1 4* * * 1 5* *********************************************************** */ 1 6 /* BEGIN INCLUDE FILE vu_typed_vector_array.incl.pl1 */ 1 7 1 8 /* Written by Lindsey Spratt, 03/04/82. 1 9*Modified: 1 10*06/23/82 by Lindsey Spratt: Changed to version 2. The cv entry declarations 1 11* were altered. cv_to_typed now takes ptr to the descriptor, ptr to 1 12* the print_vector value (char varying), ptr to the typed_vector 1 13* value location, and a code. cv_to_print now takes ptr to the 1 14* descriptor, ptr to the typed_vector value, the print_vector value 1 15* (char(*) varying), the maximum allowed length for the print_vector 1 16* value, a temp_seg to put the value in if its to big to fit into 1 17* the print_vector, and a code. 1 18**/ 1 19 1 20 /* format: style2,ind3 */ 1 21 dcl 1 typed_vector_array based (typed_vector_array_ptr) aligned, 1 22 2 version fixed bin (35), 1 23 2 number_of_dimensions 1 24 fixed bin (17), 1 25 2 number_of_vectors fixed bin (17), 1 26 2 number_of_vector_slots 1 27 fixed bin (17), 1 28 2 maximum_dimension_name_length 1 29 fixed bin (17), 1 30 2 dimension_table (tva_number_of_dimensions refer (typed_vector_array.number_of_dimensions)), 1 31 3 name char (tva_maximum_dimension_name_length 1 32 refer (typed_vector_array.maximum_dimension_name_length)) varying, 1 33 3 descriptor_ptr ptr, /* call cv_to_print (descriptor_ptr, typed_value_ptr, */ 1 34 /* temp_seg_ptr, max_length_for_print_value, */ 1 35 /* print_value, code) */ 1 36 3 cv_to_print entry (ptr, ptr, ptr, fixed bin (35), char (*) varying, fixed bin (35)), 1 37 /* call cv_to_typed (descriptor_ptr, area_ptr, */ 1 38 /* print_value_ptr, typed_value_ptr, code) */ 1 39 3 cv_to_typed entry (ptr, ptr, ptr, ptr, fixed bin (35)), 1 40 2 vector_slot (tva_number_of_vector_slots refer (typed_vector_array.number_of_vector_slots)) 1 41 pointer; 1 42 1 43 dcl typed_vector_array_ptr ptr; 1 44 dcl tva_number_of_vector_slots 1 45 fixed bin; 1 46 dcl tva_number_of_dimensions 1 47 fixed bin; 1 48 dcl tva_maximum_dimension_name_length 1 49 fixed bin; 1 50 dcl TYPED_VECTOR_ARRAY_VERSION_2 1 51 fixed bin (35) int static options (constant) init (2); 1 52 1 53 /* END INCLUDE FILE vu_typed_vector_array.incl.pl1 */ 215 216 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 */ 217 218 3 1 /* BEGIN INCLUDE FILE - dm_id_list.incl.pl1 */ 3 2 3 3 /* DESCRIPTION 3 4* The id_list structure is used to identify attributes, fields and 3 5* dimensions by various modules of the Data Management System. 3 6**/ 3 7 3 8 /* HISTORY: 3 9*Written by Matthew Pierret, '82. 3 10*Modified: 3 11*08/17/83 by Matthew Pierret: Made version constant 'internal static options 3 12* (constant)' and to initialize automatic variables. 3 13**/ 3 14 3 15 /* format: style2,ind3 */ 3 16 dcl 1 id_list aligned based (id_list_ptr), 3 17 2 version fixed bin (35), 3 18 2 number_of_ids fixed bin (17), 3 19 2 id (il_number_of_ids refer (id_list.number_of_ids)) fixed bin (17); 3 20 3 21 dcl id_list_ptr ptr init (null); 3 22 dcl il_number_of_ids fixed bin (17) init (-1); 3 23 dcl ID_LIST_VERSION_1 fixed bin (17) init (1) internal static options (constant); 3 24 3 25 /* END INCLUDE FILE - dm_id_list.incl.pl1 */ 219 220 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 */ 221 222 end dmu_cv_table_to_typed_array; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/03/85 1149.9 dmu_cv_table_to_typed_array.pl1 >spec>temp>famis1>dmu_cv_table_to_typed_array.pl1 215 1 10/14/83 1609.1 vu_typed_vector_array.incl.pl1 >ldd>include>vu_typed_vector_array.incl.pl1 217 2 01/03/85 1003.3 dm_field_table.incl.pl1 >spec>temp>famis1>dm_field_table.incl.pl1 219 3 10/14/83 1609.1 dm_id_list.incl.pl1 >ldd>include>dm_id_list.incl.pl1 221 4 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 000025 constant bit(36) initial dcl 4-7 set ref 195* 208* FIELD_TABLE_VERSION_3 000000 constant char(8) initial dcl 2-69 ref 110 ID_LIST_VERSION_1 constant fixed bin(17,0) initial dcl 3-23 ref 124 TYPED_VECTOR_ARRAY_VERSION_2 000031 constant fixed bin(35,0) initial dcl 1-50 set ref 149* area based area dcl 72 ref 170 area_ptr 000104 automatic pointer dcl 67 set ref 107* 145* 170 184* cleanup 000110 stack reference condition dcl 82 ref 143 descriptor 6 based bit(36) array level 3 dcl 2-36 ref 171 descriptor_is_varying 5 based bit(1) array level 4 packed unaligned dcl 2-36 ref 166 descriptor_ptr based pointer array level 3 dcl 1-21 set ref 173* descriptor_string based bit(36) dcl 73 set ref 170 171* descriptor_string_ptr 000106 automatic pointer dcl 68 set ref 170* 171 173 dimension_idx 000102 automatic fixed bin(17,0) dcl 65 set ref 132* 133 135* 152* 153* 156 158 163 173* dimension_table 6 based structure array level 2 dcl 1-21 dm_vector_util_$free_typed_vector_array 000014 constant entry external dcl 93 ref 184 dm_vector_util_$init_typed_vector_array 000012 constant entry external dcl 91 ref 145 error_table_$fatal_error 000016 external static fixed bin(35,0) dcl 98 set ref 166* error_table_$unimplemented_version 000020 external static fixed bin(35,0) dcl 100 set ref 195* 208* field 5 based structure array level 2 dcl 2-36 ref 116 field_id 000103 automatic fixed bin(17,0) dcl 66 set ref 133* 135* 136 136 156* 158* 160 163 163 166 171 field_names based char level 2 dcl 2-36 ref 163 field_table based structure level 1 dcl 2-36 field_table_ptr 000122 automatic pointer dcl 2-65 set ref 108* 110 116 136 163 163 163 166 171 flags 5 based structure array level 3 dcl 2-36 hbound builtin function dcl 77 ref 116 id 2 based fixed bin(17,0) array level 2 dcl 3-16 ref 135 158 id_list based structure level 1 dcl 3-16 id_list_ptr 000124 automatic pointer initial dcl 3-21 set ref 123* 124 127 135 158 3-21* il_number_of_ids 000126 automatic fixed bin(17,0) initial dcl 3-22 set ref 3-22* length_of_field_names 3 based fixed bin(17,0) level 2 dcl 2-36 ref 163 length_of_name 12 based fixed bin(17,0) array level 3 dcl 2-36 ref 136 163 location_of_name 11 based fixed bin(17,0) array level 3 dcl 2-36 ref 163 max builtin function dcl 77 ref 136 maximum_dimension_name_length 4 based fixed bin(17,0) level 2 dcl 1-21 ref 163 163 163 173 173 173 myname 000002 constant varying char(32) initial dcl 86 set ref 166* 195* 208* name 6 based varying char array level 3 dcl 1-21 set ref 163* null builtin function dcl 77 ref 112 141 166 166 3-21 184 195 195 208 208 number_of_fields 2 based fixed bin(17,0) level 2 in structure "field_table" dcl 2-36 in procedure "cv_table_to_typed_array" ref 116 163 163 number_of_fields 000101 automatic fixed bin(17,0) dcl 64 in procedure "cv_table_to_typed_array" set ref 116* 127* 132 145* 153 number_of_ids 1 based fixed bin(17,0) level 2 dcl 3-16 ref 127 p_area_ptr parameter pointer dcl 52 ref 44 44 107 p_code parameter fixed bin(35,0) dcl 59 set ref 44 44 106* 145* 147 p_expected_version parameter char unaligned dcl 205 in procedure "CHECK_VERSION_CHAR" set ref 202 208 208* p_expected_version parameter fixed bin(35,0) dcl 192 in procedure "CHECK_VERSION" set ref 189 195 195* p_field_table_ptr parameter pointer dcl 55 ref 44 44 108 p_id_list_ptr parameter pointer dcl 56 ref 44 44 112 123 p_number_of_vector_slots parameter fixed bin(35,0) dcl 57 set ref 44 44 145* p_received_version parameter fixed bin(35,0) dcl 191 in procedure "CHECK_VERSION" set ref 189 195 195* p_received_version parameter char unaligned dcl 204 in procedure "CHECK_VERSION_CHAR" set ref 202 208 208* p_structure_name parameter char unaligned dcl 206 in procedure "CHECK_VERSION_CHAR" set ref 202 208* p_structure_name parameter char unaligned dcl 193 in procedure "CHECK_VERSION" set ref 189 195* p_typed_vector_array_ptr parameter pointer dcl 53 set ref 44 44 177* process_all_fields 000100 automatic bit(1) dcl 63 set ref 117* 126* 133 156 sub_err_ 000010 constant entry external dcl 90 ref 166 195 208 substr builtin function dcl 77 ref 163 tva_maximum_dimension_name_length 000120 automatic fixed bin(17,0) dcl 1-48 set ref 131* 136* 136 145* typed_vector_array based structure level 1 dcl 1-21 typed_vector_array_ptr 000116 automatic pointer dcl 1-43 set ref 141* 145* 149 163 173 177 184 184* version based fixed bin(35,0) level 2 in structure "id_list" dcl 3-16 in procedure "cv_table_to_typed_array" set ref 124* version based fixed bin(35,0) level 2 in structure "typed_vector_array" dcl 1-21 in procedure "cv_table_to_typed_array" set ref 149* version based char(8) initial level 2 in structure "field_table" dcl 2-36 in procedure "cv_table_to_typed_array" ref 110 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 field_name based char 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 102 tva_number_of_dimensions automatic fixed bin(17,0) dcl 1-46 tva_number_of_vector_slots automatic fixed bin(17,0) dcl 1-44 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION 000651 constant entry internal dcl 189 ref 124 149 CHECK_VERSION_CHAR 000745 constant entry internal dcl 202 ref 110 FINISH 000626 constant entry internal dcl 181 ref 143 SET_NAME_AND_DESCRIPTOR 000421 constant label dcl 153 cv_table_to_typed_array 000156 constant entry external dcl 44 dmu_cv_table_to_typed_array 000167 constant entry external dcl 44 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1226 1250 1100 1236 Length 1530 1100 22 243 126 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cv_table_to_typed_array 304 external procedure is an external procedure. on unit on line 143 80 on unit FINISH internal procedure shares stack frame of on unit on line 143. CHECK_VERSION internal procedure shares stack frame of external procedure cv_table_to_typed_array. CHECK_VERSION_CHAR internal procedure shares stack frame of external procedure cv_table_to_typed_array. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cv_table_to_typed_array 000100 process_all_fields cv_table_to_typed_array 000101 number_of_fields cv_table_to_typed_array 000102 dimension_idx cv_table_to_typed_array 000103 field_id cv_table_to_typed_array 000104 area_ptr cv_table_to_typed_array 000106 descriptor_string_ptr cv_table_to_typed_array 000116 typed_vector_array_ptr cv_table_to_typed_array 000120 tva_maximum_dimension_name_length cv_table_to_typed_array 000122 field_table_ptr cv_table_to_typed_array 000124 id_list_ptr cv_table_to_typed_array 000126 il_number_of_ids cv_table_to_typed_array THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return enable ext_entry int_entry alloc_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. dm_vector_util_$free_typed_vector_array dm_vector_util_$init_typed_vector_array sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$fatal_error error_table_$unimplemented_version CONSTANTS 001062 aa 000006000000 001063 aa 000006000000 001064 aa 600000000041 001065 aa 000150000000 001066 aa 600000000041 001067 aa 000152000000 001070 aa 600000000041 001071 aa 000154000000 001072 ta 000027000000 001073 aa 000000000000 001074 ta 000027000000 001075 aa 000000000000 001076 ta 000026000000 001077 aa 000000000000 000000 aa 106 154 144 124 FldT 000001 aa 142 154 040 063 bl 3 000002 aa 000000000033 000003 aa 144 155 165 137 dmu_ 000004 aa 143 166 137 164 cv_t 000005 aa 141 142 154 145 able 000006 aa 137 164 157 137 _to_ 000007 aa 164 171 160 145 type 000010 aa 144 137 141 162 d_ar 000011 aa 162 141 171 040 ray 000012 aa 040 040 040 040 000013 aa 524000000107 000014 aa 514000000044 000015 aa 526077777777 000016 aa 524000000113 000017 aa 404000000005 000020 aa 524000000001 000021 aa 530000000040 000022 aa 524000000022 000023 aa 404000000021 000024 aa 524000000007 000025 aa 400000000000 000026 aa 524000000013 000027 aa 524000000010 000030 aa 404000000043 000031 aa 000000000002 000032 aa 464000000000 000034 aa 151 144 137 154 id_l 000035 aa 151 163 164 000 ist 000036 aa 077777000043 000037 aa 000001000000 000040 aa 143 154 145 141 clea 000041 aa 156 165 160 000 nup 000042 aa 146 151 145 154 fiel 000043 aa 144 137 164 141 d_ta 000044 aa 142 154 145 000 ble 000045 aa 164 171 160 145 type 000046 aa 144 137 166 145 d_ve 000047 aa 143 164 157 162 ctor 000050 aa 137 141 162 162 _arr 000051 aa 141 171 000 000 ay 000052 aa 136 057 105 170 ^/Ex 000053 aa 160 145 143 164 pect 000054 aa 145 144 040 166 ed v 000055 aa 145 162 163 151 ersi 000056 aa 157 156 040 136 on ^ 000057 aa 141 040 157 146 a of 000060 aa 040 164 150 145 the 000061 aa 040 136 141 040 ^a 000062 aa 163 164 162 165 stru 000063 aa 143 164 165 162 ctur 000064 aa 145 056 012 122 e. R 000065 aa 145 143 145 151 ecei 000066 aa 166 145 144 040 ved 000067 aa 166 145 162 163 vers 000070 aa 151 157 156 040 ion 000071 aa 136 141 040 151 ^a i 000072 aa 156 163 164 145 nste 000073 aa 141 144 056 000 ad. 000074 aa 136 057 105 170 ^/Ex 000075 aa 160 145 143 164 pect 000076 aa 145 144 040 166 ed v 000077 aa 145 162 163 151 ersi 000100 aa 157 156 040 136 on ^ 000101 aa 144 040 157 146 d of 000102 aa 040 164 150 145 the 000103 aa 040 136 141 040 ^a 000104 aa 163 164 162 165 stru 000105 aa 143 164 165 162 ctur 000106 aa 145 056 012 122 e. R 000107 aa 145 143 145 151 ecei 000110 aa 166 145 144 040 ved 000111 aa 166 145 162 163 vers 000112 aa 151 157 156 040 ion 000113 aa 136 144 040 151 ^d i 000114 aa 156 163 164 145 nste 000115 aa 141 144 056 000 ad. 000116 aa 136 057 124 150 ^/Th 000117 aa 145 040 143 141 e ca 000120 aa 160 141 142 151 pabi 000121 aa 154 151 164 171 lity 000122 aa 040 164 157 040 to 000123 aa 150 141 156 144 hand 000124 aa 154 145 040 166 le v 000125 aa 141 162 171 151 aryi 000126 aa 156 147 040 154 ng l 000127 aa 145 156 147 164 engt 000130 aa 150 040 144 145 h de 000131 aa 163 143 162 151 scri 000132 aa 160 164 157 162 ptor 000133 aa 163 040 151 163 s is 000134 aa 040 156 157 164 not 000135 aa 040 171 145 164 yet 000136 aa 040 163 165 160 sup 000137 aa 160 157 162 164 port 000140 aa 145 144 056 000 ed. BEGIN PROCEDURE cv_table_to_typed_array PROLOGUE SEQUENCE 000141 aa 6 00146 4401 00 sxl0 pr6|102 STATEMENT 1 ON LINE 21 OF FILE 3 000142 aa 777674 2370 04 ldaq -68,ic 000036 = 077777000043 000001000000 000143 aa 6 00124 7571 00 staq pr6|84 id_list_ptr STATEMENT 1 ON LINE 22 OF FILE 3 000144 aa 000001 3360 07 lcq 1,dl 000145 aa 6 00126 7561 00 stq pr6|86 il_number_of_ids 000146 aa 6 00146 7201 00 lxl0 pr6|102 000147 aa 000000 7100 10 tra 0,0 MAIN SEQUENCE ENTRY TO cv_table_to_typed_array STATEMENT 1 ON LINE 44 dmu_cv_table_to_typed_array: cv_table_to_typed_array: proc (p_field_table_ptr, p_id_list_ptr, p_area_ptr, p_number_of_vector_slots, p_typed_vector_array_ptr, p_code); 000150 at 000006000032 000151 tt 000032000032 000152 tt 000030000032 000153 ta 000030000000 000154 ta 000150000000 000155 da 000111300000 000156 aa 000460 6270 00 eax7 304 000157 aa 7 00034 3521 20 epp2 pr7|28,* 000160 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000161 aa 000014000000 000162 aa 000000000000 000163 aa 777756 7000 04 tsx0 -18,ic 000141 000164 aa 000011 7100 04 tra 9,ic 000175 ENTRY TO dmu_cv_table_to_typed_array STATEMENT 1 ON LINE 44 dmu_cv_table_to_typed_array: cv_table_to_typed_array: proc (p_field_table_ptr, p_id_list_ptr, p_area_ptr, p_number_of_vector_slots, p_typed_vector_array_ptr, p_code); 000165 ta 000150000000 000166 da 000114300000 000167 aa 000460 6270 00 eax7 304 000170 aa 7 00034 3521 20 epp2 pr7|28,* 000171 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000172 aa 000014000000 000173 aa 000000000000 000174 aa 777745 7000 04 tsx0 -27,ic 000141 STATEMENT 1 ON LINE 106 p_code = 0; 000175 aa 6 00032 3735 20 epp7 pr6|26,* 000176 aa 7 00014 4501 20 stz pr7|12,* p_code STATEMENT 1 ON LINE 107 area_ptr = p_area_ptr; 000177 aa 7 00006 3715 20 epp5 pr7|6,* p_area_ptr 000200 aa 5 00000 3715 20 epp5 pr5|0,* p_area_ptr 000201 aa 6 00104 6515 00 spri5 pr6|68 area_ptr STATEMENT 1 ON LINE 108 field_table_ptr = p_field_table_ptr; 000202 aa 7 00002 3535 20 epp3 pr7|2,* p_field_table_ptr 000203 aa 3 00000 3535 20 epp3 pr3|0,* p_field_table_ptr 000204 aa 6 00122 2535 00 spri3 pr6|82 field_table_ptr STATEMENT 1 ON LINE 110 call CHECK_VERSION_CHAR ((field_table.version), (FIELD_TABLE_VERSION_3), "field_table"); 000205 aa 3 00000 2351 00 lda pr3|0 field_table.version 000206 aa 3 00001 2361 00 ldq pr3|1 field_table.version 000207 aa 6 00150 7571 00 staq pr6|104 000210 aa 777570 2370 04 ldaq -136,ic 000000 = 106154144124 142154040063 000211 aa 6 00152 7571 00 staq pr6|106 000212 aa 777630 2370 04 ldaq -104,ic 000042 = 146151145154 144137164141 000213 aa 6 00154 7571 00 staq pr6|108 000214 aa 777630 2350 04 lda -104,ic 000044 = 142154145000 000215 aa 6 00156 7551 00 sta pr6|110 000216 aa 000644 3520 04 epp2 420,ic 001062 = 000006000000 000217 aa 2 00000 2351 00 lda pr2|0 000220 aa 000525 6700 04 tsp4 341,ic 000745 STATEMENT 1 ON LINE 112 if p_id_list_ptr = null then do; 000221 aa 6 00032 3735 20 epp7 pr6|26,* 000222 aa 7 00004 2371 20 ldaq pr7|4,* p_id_list_ptr 000223 aa 777613 6770 04 eraq -117,ic 000036 = 077777000043 000001000000 000224 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000225 aa 000007 6010 04 tnz 7,ic 000234 STATEMENT 1 ON LINE 116 number_of_fields = hbound (field_table.field, 1); 000226 aa 6 00122 3715 20 epp5 pr6|82,* field_table_ptr 000227 aa 5 00002 2361 00 ldq pr5|2 field_table.number_of_fields 000230 aa 6 00101 7561 00 stq pr6|65 number_of_fields STATEMENT 1 ON LINE 117 process_all_fields = "1"b; 000231 aa 400000 2350 03 lda 131072,du 000232 aa 6 00100 7551 00 sta pr6|64 process_all_fields STATEMENT 1 ON LINE 119 end; 000233 aa 000033 7100 04 tra 27,ic 000266 STATEMENT 1 ON LINE 120 else do; STATEMENT 1 ON LINE 123 id_list_ptr = p_id_list_ptr; 000234 aa 7 00004 3715 20 epp5 pr7|4,* p_id_list_ptr 000235 aa 5 00000 3715 20 epp5 pr5|0,* p_id_list_ptr 000236 aa 6 00124 6515 00 spri5 pr6|84 id_list_ptr STATEMENT 1 ON LINE 124 call CHECK_VERSION (id_list.version, (ID_LIST_VERSION_1), "id_list"); 000237 aa 000001 2360 07 ldq 1,dl 000240 aa 6 00147 7561 00 stq pr6|103 000241 aa 777573 2370 04 ldaq -133,ic 000034 = 151144137154 151163164000 000242 aa 6 00152 7571 00 staq pr6|106 000243 aa 5 00000 3521 00 epp2 pr5|0 id_list.version 000244 aa 6 00162 2521 00 spri2 pr6|114 000245 aa 6 00147 3521 00 epp2 pr6|103 000246 aa 6 00164 2521 00 spri2 pr6|116 000247 aa 6 00152 3521 00 epp2 pr6|106 000250 aa 6 00166 2521 00 spri2 pr6|118 000251 aa 777557 3520 04 epp2 -145,ic 000030 = 404000000043 000252 aa 6 00170 2521 00 spri2 pr6|120 000253 aa 6 00172 2521 00 spri2 pr6|122 000254 aa 777550 3520 04 epp2 -152,ic 000024 = 524000000007 000255 aa 6 00174 2521 00 spri2 pr6|124 000256 aa 6 00160 3521 00 epp2 pr6|112 000257 aa 014000 4310 07 fld 6144,dl 000260 aa 2 00000 7571 00 staq pr2|0 000261 aa 000370 6700 04 tsp4 248,ic 000651 STATEMENT 1 ON LINE 126 process_all_fields = "0"b; 000262 aa 6 00100 4501 00 stz pr6|64 process_all_fields STATEMENT 1 ON LINE 127 number_of_fields = id_list.number_of_ids; 000263 aa 6 00124 3735 20 epp7 pr6|84,* id_list_ptr 000264 aa 7 00001 2361 00 ldq pr7|1 id_list.number_of_ids 000265 aa 6 00101 7561 00 stq pr6|65 number_of_fields STATEMENT 1 ON LINE 129 end; STATEMENT 1 ON LINE 131 tva_maximum_dimension_name_length = 0; 000266 aa 6 00120 4501 00 stz pr6|80 tva_maximum_dimension_name_length STATEMENT 1 ON LINE 132 do dimension_idx = 1 to number_of_fields; 000267 aa 6 00127 7561 00 stq pr6|87 000270 aa 000001 2360 07 ldq 1,dl 000271 aa 6 00102 7561 00 stq pr6|66 dimension_idx 000272 aa 6 00102 2361 00 ldq pr6|66 dimension_idx 000273 aa 6 00127 1161 00 cmpq pr6|87 000274 aa 000024 6054 04 tpnz 20,ic 000320 STATEMENT 1 ON LINE 133 if process_all_fields then field_id = dimension_idx; 000275 aa 6 00100 2351 00 lda pr6|64 process_all_fields 000276 aa 000003 6000 04 tze 3,ic 000301 000277 aa 6 00103 7561 00 stq pr6|67 field_id 000300 aa 000004 7100 04 tra 4,ic 000304 STATEMENT 1 ON LINE 135 else field_id = id_list.id (dimension_idx); 000301 aa 6 00124 3735 20 epp7 pr6|84,* id_list_ptr 000302 aa 7 00001 2361 06 ldq pr7|1,ql id_list.id 000303 aa 6 00103 7561 00 stq pr6|67 field_id STATEMENT 1 ON LINE 136 if field_id >= 1 then tva_maximum_dimension_name_length = max (tva_maximum_dimension_name_length, field_table.field (field_id).length_of_name); 000304 aa 000001 1160 07 cmpq 1,dl 000305 aa 000011 6040 04 tmi 9,ic 000316 000306 aa 000006 4020 07 mpy 6,dl 000307 aa 000000 6270 06 eax7 0,ql 000310 aa 6 00120 2361 00 ldq pr6|80 tva_maximum_dimension_name_length 000311 aa 6 00122 3735 20 epp7 pr6|82,* field_table_ptr 000312 aa 7 00004 1161 17 cmpq pr7|4,7 field_table.length_of_name 000313 aa 000002 6050 04 tpl 2,ic 000315 000314 aa 7 00004 2361 17 ldq pr7|4,7 field_table.length_of_name 000315 aa 6 00120 7561 00 stq pr6|80 tva_maximum_dimension_name_length STATEMENT 1 ON LINE 139 end; 000316 aa 6 00102 0541 00 aos pr6|66 dimension_idx 000317 aa 777753 7100 04 tra -21,ic 000272 STATEMENT 1 ON LINE 141 typed_vector_array_ptr = null; 000320 aa 777516 2370 04 ldaq -178,ic 000036 = 077777000043 000001000000 000321 aa 6 00116 7571 00 staq pr6|78 typed_vector_array_ptr STATEMENT 1 ON LINE 143 on cleanup call FINISH (); 000322 aa 000007 7260 07 lxl6 7,dl 000323 aa 777515 3520 04 epp2 -179,ic 000040 = 143154145141 000324 aa 0 00717 7001 00 tsx0 pr0|463 enable 000325 aa 000004 7100 04 tra 4,ic 000331 000326 aa 000110000000 000327 aa 000011 7100 04 tra 9,ic 000340 BEGIN CONDITION cleanup.1 ENTRY TO cleanup.1 STATEMENT 1 ON LINE 143 on cleanup call FINISH (); 000330 da 000122200000 000331 aa 000120 6270 00 eax7 80 000332 aa 7 00034 3521 20 epp2 pr7|28,* 000333 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000334 aa 000000000000 000335 aa 000000000000 000336 aa 000270 6700 04 tsp4 184,ic 000626 000337 aa 0 00631 7101 00 tra pr0|409 return END CONDITION cleanup.1 STATEMENT 1 ON LINE 145 call dm_vector_util_$init_typed_vector_array (area_ptr, p_number_of_vector_slots, number_of_fields, tva_maximum_dimension_name_length, typed_vector_array_ptr, p_code); 000340 aa 6 00104 3521 00 epp2 pr6|68 area_ptr 000341 aa 6 00202 2521 00 spri2 pr6|130 000342 aa 6 00032 3735 20 epp7 pr6|26,* 000343 aa 7 00010 3521 20 epp2 pr7|8,* p_number_of_vector_slots 000344 aa 6 00204 2521 00 spri2 pr6|132 000345 aa 6 00101 3521 00 epp2 pr6|65 number_of_fields 000346 aa 6 00206 2521 00 spri2 pr6|134 000347 aa 6 00120 3521 00 epp2 pr6|80 tva_maximum_dimension_name_length 000350 aa 6 00210 2521 00 spri2 pr6|136 000351 aa 6 00116 3521 00 epp2 pr6|78 typed_vector_array_ptr 000352 aa 6 00212 2521 00 spri2 pr6|138 000353 aa 7 00014 3521 20 epp2 pr7|12,* p_code 000354 aa 6 00214 2521 00 spri2 pr6|140 000355 aa 777455 3520 04 epp2 -211,ic 000032 = 464000000000 000356 aa 6 00216 2521 00 spri2 pr6|142 000357 aa 6 00226 2521 00 spri2 pr6|150 000360 aa 777450 3520 04 epp2 -216,ic 000030 = 404000000043 000361 aa 6 00220 2521 00 spri2 pr6|144 000362 aa 6 00230 2521 00 spri2 pr6|152 000363 aa 777440 3520 04 epp2 -224,ic 000023 = 404000000021 000364 aa 6 00222 2521 00 spri2 pr6|146 000365 aa 6 00224 2521 00 spri2 pr6|148 000366 aa 6 00200 6211 00 eax1 pr6|128 000367 aa 030000 4310 07 fld 12288,dl 000370 aa 6 00044 3701 20 epp4 pr6|36,* 000371 la 4 00012 3521 20 epp2 pr4|10,* dm_vector_util_$init_typed_vector_array 000372 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 147 if p_code ^= 0 then return; 000373 aa 6 00032 3735 20 epp7 pr6|26,* 000374 aa 7 00014 2361 20 ldq pr7|12,* p_code 000375 aa 0 00631 6011 00 tnz pr0|409 return STATEMENT 1 ON LINE 149 call CHECK_VERSION (typed_vector_array.version, TYPED_VECTOR_ARRAY_VERSION_2, "typed_vector_array"); 000376 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000377 aa 777447 00 0024 desc9a -217,20 000045 = 164171160145 000400 aa 6 00160 00 0024 desc9a pr6|112,20 000401 aa 6 00116 3521 20 epp2 pr6|78,* typed_vector_array.version 000402 aa 6 00202 2521 00 spri2 pr6|130 000403 aa 777426 3520 04 epp2 -234,ic 000031 = 000000000002 000404 aa 6 00204 2521 00 spri2 pr6|132 000405 aa 6 00160 3521 00 epp2 pr6|112 000406 aa 6 00206 2521 00 spri2 pr6|134 000407 aa 777421 3520 04 epp2 -239,ic 000030 = 404000000043 000410 aa 6 00210 2521 00 spri2 pr6|136 000411 aa 6 00212 2521 00 spri2 pr6|138 000412 aa 777410 3520 04 epp2 -248,ic 000022 = 524000000022 000413 aa 6 00214 2521 00 spri2 pr6|140 000414 aa 6 00200 3521 00 epp2 pr6|128 000415 aa 014000 4310 07 fld 6144,dl 000416 aa 2 00000 7571 00 staq pr2|0 000417 aa 000232 6700 04 tsp4 154,ic 000651 STATEMENT 1 ON LINE 152 dimension_idx = 0; 000420 aa 6 00102 4501 00 stz pr6|66 dimension_idx STATEMENT 1 ON LINE 153 SET_NAME_AND_DESCRIPTOR: do dimension_idx = 1 to number_of_fields; 000421 aa 6 00101 2361 00 ldq pr6|65 number_of_fields 000422 aa 6 00130 7561 00 stq pr6|88 000423 aa 000001 2360 07 ldq 1,dl 000424 aa 6 00102 7561 00 stq pr6|66 dimension_idx 000425 aa 000000 0110 03 nop 0,du 000426 aa 6 00102 2361 00 ldq pr6|66 dimension_idx 000427 aa 6 00130 1161 00 cmpq pr6|88 000430 aa 000172 6054 04 tpnz 122,ic 000622 STATEMENT 1 ON LINE 156 if process_all_fields then field_id = dimension_idx; 000431 aa 6 00100 2351 00 lda pr6|64 process_all_fields 000432 aa 000003 6000 04 tze 3,ic 000435 000433 aa 6 00103 7561 00 stq pr6|67 field_id 000434 aa 000004 7100 04 tra 4,ic 000440 STATEMENT 1 ON LINE 158 else field_id = id_list.id (dimension_idx); 000435 aa 6 00124 3735 20 epp7 pr6|84,* id_list_ptr 000436 aa 7 00001 2361 06 ldq pr7|1,ql id_list.id 000437 aa 6 00103 7561 00 stq pr6|67 field_id STATEMENT 1 ON LINE 160 if field_id >= 1 /* If field_id<1, leave dimension_table entry empty */ then do; 000440 aa 000001 1160 07 cmpq 1,dl 000441 aa 000157 6040 04 tmi 111,ic 000620 STATEMENT 1 ON LINE 163 typed_vector_array.dimension_table (dimension_idx).name = substr (field_table.field_names, field_table.field (field_id).location_of_name, field_table.field (field_id).length_of_name); 000442 aa 6 00116 3735 20 epp7 pr6|78,* typed_vector_array_ptr 000443 aa 7 00004 2361 00 ldq pr7|4 typed_vector_array.maximum_dimension_name_length 000444 aa 000003 0760 07 adq 3,dl 000445 aa 000002 7320 00 qrs 2 000446 aa 000001 0760 07 adq 1,dl 000447 aa 000001 0760 07 adq 1,dl 000450 aa 777776 3760 07 anq 262142,dl 000451 aa 000012 0760 07 adq 10,dl 000452 aa 000001 0760 07 adq 1,dl 000453 aa 777776 3760 07 anq 262142,dl 000454 aa 6 00147 7561 00 stq pr6|103 000455 aa 6 00102 2361 00 ldq pr6|66 dimension_idx 000456 aa 000001 1760 07 sbq 1,dl 000457 aa 6 00147 4021 00 mpy pr6|103 000460 aa 000000 6260 06 eax6 0,ql 000461 aa 6 00103 2361 00 ldq pr6|67 field_id 000462 aa 000006 4020 07 mpy 6,dl 000463 aa 6 00122 3715 20 epp5 pr6|82,* field_table_ptr 000464 aa 000000 6270 06 eax7 0,ql 000465 aa 5 00003 2361 06 ldq pr5|3,ql field_table.location_of_name 000466 aa 000001 1760 07 sbq 1,dl 000467 aa 6 00232 7561 00 stq pr6|154 000470 aa 5 00002 2361 00 ldq pr5|2 field_table.number_of_fields 000471 aa 000001 7360 00 qls 1 000472 aa 6 00233 7561 00 stq pr6|155 000473 aa 5 00002 2361 00 ldq pr5|2 field_table.number_of_fields 000474 aa 000006 4020 07 mpy 6,dl 000475 aa 000005 0760 07 adq 5,dl 000476 aa 6 00233 0761 00 adq pr6|155 000477 aa 000002 7360 00 qls 2 000500 aa 6 00232 0761 00 adq pr6|154 000501 aa 6 00157 7561 00 stq pr6|111 000502 aa 5 00004 2361 17 ldq pr5|4,7 field_table.length_of_name 000503 aa 7 00004 1161 00 cmpq pr7|4 typed_vector_array.maximum_dimension_name_length 000504 aa 000002 6040 04 tmi 2,ic 000506 000505 aa 7 00004 2361 00 ldq pr7|4 typed_vector_array.maximum_dimension_name_length 000506 aa 6 00157 2351 00 lda pr6|111 000507 aa 7 00006 7561 16 stq pr7|6,6 typed_vector_array.name 000510 aa 7 00007 3535 16 epp3 pr7|7,6 typed_vector_array.name 000511 aa 040 140 100 545 mlr (pr,rl,al),(pr,rl),fill(040) 000512 aa 5 00000 00 0006 desc9a pr5|0,ql field_table.field_names 000513 aa 3 00000 00 0006 desc9a pr3|0,ql typed_vector_array.name STATEMENT 1 ON LINE 166 if field_table.field (field_id).flags.descriptor_is_varying then call sub_err_ (error_table_$fatal_error, myname, "s", null, 0, "^/The capability to handle varying length descriptors is not yet supported."); 000514 aa 5 77777 2351 17 lda pr5|-1,7 field_table.descriptor_is_varying 000515 aa 400000 3150 03 cana 131072,du 000516 aa 000046 6000 04 tze 38,ic 000564 000517 aa 163000 2350 03 lda 58880,du 000520 aa 6 00157 7551 00 sta pr6|111 000521 aa 777315 3514 24 epp1 -307,ic* 000522 aa 6 00152 2515 00 spri1 pr6|106 000523 aa 6 00147 4501 00 stz pr6|103 000524 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000525 aa 777372 00 0114 desc9a -262,76 000116 = 136057124150 000526 aa 6 00200 00 0114 desc9a pr6|128,76 000527 aa 6 00044 3701 20 epp4 pr6|36,* 000530 la 4 00016 3521 20 epp2 pr4|14,* error_table_$fatal_error 000531 aa 6 00236 2521 00 spri2 pr6|158 000532 aa 777251 3520 04 epp2 -343,ic 000003 = 144155165137 000533 aa 6 00240 2521 00 spri2 pr6|160 000534 aa 6 00157 3521 00 epp2 pr6|111 000535 aa 6 00242 2521 00 spri2 pr6|162 000536 aa 6 00152 3521 00 epp2 pr6|106 000537 aa 6 00244 2521 00 spri2 pr6|164 000540 aa 6 00147 3521 00 epp2 pr6|103 000541 aa 6 00246 2521 00 spri2 pr6|166 000542 aa 6 00200 3521 00 epp2 pr6|128 000543 aa 6 00250 2521 00 spri2 pr6|168 000544 aa 777264 3520 04 epp2 -332,ic 000030 = 404000000043 000545 aa 6 00252 2521 00 spri2 pr6|170 000546 aa 777253 3520 04 epp2 -341,ic 000021 = 530000000040 000547 aa 6 00254 2521 00 spri2 pr6|172 000550 aa 777250 3520 04 epp2 -344,ic 000020 = 524000000001 000551 aa 6 00256 2521 00 spri2 pr6|174 000552 aa 777260 3520 04 epp2 -336,ic 000032 = 464000000000 000553 aa 6 00260 2521 00 spri2 pr6|176 000554 aa 777243 3520 04 epp2 -349,ic 000017 = 404000000005 000555 aa 6 00262 2521 00 spri2 pr6|178 000556 aa 777240 3520 04 epp2 -352,ic 000016 = 524000000113 000557 aa 6 00264 2521 00 spri2 pr6|180 000560 aa 6 00234 6211 00 eax1 pr6|156 000561 aa 030000 4310 07 fld 12288,dl 000562 la 4 00010 3521 20 epp2 pr4|8,* sub_err_ 000563 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 170 alloc descriptor_string in (area); 000564 aa 000001 2360 07 ldq 1,dl 000565 aa 6 00104 3521 20 epp2 pr6|68,* area 000566 aa 0 01402 7001 00 tsx0 pr0|770 alloc_based 000567 aa 777775 7100 04 tra -3,ic 000564 000570 aa 6 00106 2521 00 spri2 pr6|70 descriptor_string_ptr STATEMENT 1 ON LINE 171 descriptor_string = field_table.field (field_id).descriptor; 000571 aa 6 00103 2361 00 ldq pr6|67 field_id 000572 aa 000006 4020 07 mpy 6,dl 000573 aa 6 00122 2351 66 lda pr6|82,*ql field_table.descriptor 000574 aa 2 00000 7551 00 sta pr2|0 descriptor_string STATEMENT 1 ON LINE 173 typed_vector_array.dimension_table (dimension_idx).descriptor_ptr = descriptor_string_ptr; 000575 aa 6 00116 3735 20 epp7 pr6|78,* typed_vector_array_ptr 000576 aa 7 00004 2361 00 ldq pr7|4 typed_vector_array.maximum_dimension_name_length 000577 aa 000003 0760 07 adq 3,dl 000600 aa 000002 7320 00 qrs 2 000601 aa 000001 0760 07 adq 1,dl 000602 aa 000001 0760 07 adq 1,dl 000603 aa 777776 3760 07 anq 262142,dl 000604 aa 6 00147 7561 00 stq pr6|103 000605 aa 000012 0760 07 adq 10,dl 000606 aa 000001 0760 07 adq 1,dl 000607 aa 777776 3760 07 anq 262142,dl 000610 aa 6 00157 7561 00 stq pr6|111 000611 aa 6 00102 4021 00 mpy pr6|66 dimension_idx 000612 aa 6 00157 1761 00 sbq pr6|111 000613 aa 6 00157 7561 00 stq pr6|111 000614 aa 6 00147 2361 00 ldq pr6|103 000615 aa 000006 0760 07 adq 6,dl 000616 aa 6 00157 0761 00 adq pr6|111 000617 aa 7 00000 2521 06 spri2 pr7|0,ql typed_vector_array.descriptor_ptr STATEMENT 1 ON LINE 174 end; STATEMENT 1 ON LINE 175 end SET_NAME_AND_DESCRIPTOR; 000620 aa 6 00102 0541 00 aos pr6|66 dimension_idx 000621 aa 777605 7100 04 tra -123,ic 000426 STATEMENT 1 ON LINE 177 p_typed_vector_array_ptr = typed_vector_array_ptr; 000622 aa 6 00116 3735 20 epp7 pr6|78,* typed_vector_array_ptr 000623 aa 6 00032 3715 20 epp5 pr6|26,* 000624 aa 5 00012 6535 20 spri7 pr5|10,* p_typed_vector_array_ptr STATEMENT 1 ON LINE 179 return; 000625 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 222 end dmu_cv_table_to_typed_array; BEGIN PROCEDURE FINISH ENTRY TO FINISH STATEMENT 1 ON LINE 181 FINISH: proc (); 000626 aa 6 00100 6501 00 spri4 pr6|64 STATEMENT 1 ON LINE 184 if typed_vector_array_ptr ^= null then call dm_vector_util_$free_typed_vector_array (area_ptr, typed_vector_array_ptr, (0)); 000627 aa 6 00040 3735 20 epp7 pr6|32,* 000630 aa 7 00116 2371 00 ldaq pr7|78 typed_vector_array_ptr 000631 aa 777205 6770 04 eraq -379,ic 000036 = 077777000043 000001000000 000632 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000633 aa 000015 6000 04 tze 13,ic 000650 000634 aa 6 00106 4501 00 stz pr6|70 000635 aa 7 00104 3521 00 epp2 pr7|68 area_ptr 000636 aa 6 00112 2521 00 spri2 pr6|74 000637 aa 7 00116 3521 00 epp2 pr7|78 typed_vector_array_ptr 000640 aa 6 00114 2521 00 spri2 pr6|76 000641 aa 6 00106 3521 00 epp2 pr6|70 000642 aa 6 00116 2521 00 spri2 pr6|78 000643 aa 6 00110 6211 00 eax1 pr6|72 000644 aa 014000 4310 07 fld 6144,dl 000645 aa 6 00044 3701 20 epp4 pr6|36,* 000646 la 4 00014 3521 20 epp2 pr4|12,* dm_vector_util_$free_typed_vector_array 000647 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 187 end FINISH; 000650 aa 6 00100 6101 00 rtcd pr6|64 END PROCEDURE FINISH BEGIN PROCEDURE CHECK_VERSION ENTRY TO CHECK_VERSION STATEMENT 1 ON LINE 189 CHECK_VERSION: proc (p_received_version, p_expected_version, p_structure_name); 000651 aa 6 00132 6501 00 spri4 pr6|90 000652 aa 6 00134 2521 00 spri2 pr6|92 000653 aa 2 00002 3521 01 epp2 pr2|2,au 000654 aa 6 00136 2521 00 spri2 pr6|94 000655 aa 2 00004 2361 20 ldq pr2|4,* 000656 aa 000002 6040 04 tmi 2,ic 000660 000657 aa 777777 3760 07 anq 262143,dl 000660 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000661 aa 6 00266 7561 00 stq pr6|182 STATEMENT 1 ON LINE 195 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); 000662 aa 6 00134 3735 20 epp7 pr6|92,* 000663 aa 7 00002 2361 20 ldq pr7|2,* p_received_version 000664 aa 7 00004 1161 20 cmpq pr7|4,* p_expected_version 000665 aa 000057 6000 04 tze 47,ic 000744 000666 aa 777150 3714 24 epp5 -408,ic* 000667 aa 6 00270 6515 00 spri5 pr6|184 000670 aa 6 00267 4501 00 stz pr6|183 000671 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000672 aa 777203 00 0110 desc9a -381,72 000074 = 136057105170 000673 aa 6 00272 00 0110 desc9a pr6|186,72 000674 aa 6 00044 3701 20 epp4 pr6|36,* 000675 la 4 00020 3521 20 epp2 pr4|16,* error_table_$unimplemented_version 000676 aa 6 00316 2521 00 spri2 pr6|206 000677 aa 777104 3520 04 epp2 -444,ic 000003 = 144155165137 000700 aa 6 00320 2521 00 spri2 pr6|208 000701 aa 777124 3520 04 epp2 -428,ic 000025 = 400000000000 000702 aa 6 00322 2521 00 spri2 pr6|210 000703 aa 6 00270 3521 00 epp2 pr6|184 000704 aa 6 00324 2521 00 spri2 pr6|212 000705 aa 6 00267 3521 00 epp2 pr6|183 000706 aa 6 00326 2521 00 spri2 pr6|214 000707 aa 6 00272 3521 00 epp2 pr6|186 000710 aa 6 00330 2521 00 spri2 pr6|216 000711 aa 7 00004 3521 20 epp2 pr7|4,* p_expected_version 000712 aa 6 00332 2521 00 spri2 pr6|218 000713 aa 7 00006 3521 20 epp2 pr7|6,* p_structure_name 000714 aa 6 00334 2521 00 spri2 pr6|220 000715 aa 7 00002 3521 20 epp2 pr7|2,* p_received_version 000716 aa 6 00336 2521 00 spri2 pr6|222 000717 aa 777111 3520 04 epp2 -439,ic 000030 = 404000000043 000720 aa 6 00340 2521 00 spri2 pr6|224 000721 aa 6 00354 2521 00 spri2 pr6|236 000722 aa 6 00360 2521 00 spri2 pr6|240 000723 aa 777076 3520 04 epp2 -450,ic 000021 = 530000000040 000724 aa 6 00342 2521 00 spri2 pr6|226 000725 aa 777067 3520 04 epp2 -457,ic 000014 = 514000000044 000726 aa 6 00344 2521 00 spri2 pr6|228 000727 aa 777103 3520 04 epp2 -445,ic 000032 = 464000000000 000730 aa 6 00346 2521 00 spri2 pr6|230 000731 aa 777066 3520 04 epp2 -458,ic 000017 = 404000000005 000732 aa 6 00350 2521 00 spri2 pr6|232 000733 aa 777060 3520 04 epp2 -464,ic 000013 = 524000000107 000734 aa 6 00352 2521 00 spri2 pr6|234 000735 aa 6 00136 3535 20 epp3 pr6|94,* 000736 aa 3 00004 3521 20 epp2 pr3|4,* 000737 aa 6 00356 2521 00 spri2 pr6|238 000740 aa 6 00314 6211 00 eax1 pr6|204 000741 aa 044000 4310 07 fld 18432,dl 000742 la 4 00010 3521 20 epp2 pr4|8,* sub_err_ 000743 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 200 end CHECK_VERSION; 000744 aa 6 00132 6101 00 rtcd pr6|90 END PROCEDURE CHECK_VERSION BEGIN PROCEDURE CHECK_VERSION_CHAR ENTRY TO CHECK_VERSION_CHAR STATEMENT 1 ON LINE 202 CHECK_VERSION_CHAR: proc (p_received_version, p_expected_version, p_structure_name); 000745 aa 6 00140 6501 00 spri4 pr6|96 000746 aa 6 00142 2521 00 spri2 pr6|98 000747 aa 2 00002 3521 01 epp2 pr2|2,au 000750 aa 6 00144 2521 00 spri2 pr6|100 000751 aa 2 00000 2361 20 ldq pr2|0,* 000752 aa 000002 6040 04 tmi 2,ic 000754 000753 aa 777777 3760 07 anq 262143,dl 000754 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000755 aa 6 00362 7561 00 stq pr6|242 000756 aa 2 00002 2361 20 ldq pr2|2,* 000757 aa 000002 6040 04 tmi 2,ic 000761 000760 aa 777777 3760 07 anq 262143,dl 000761 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000762 aa 6 00363 7561 00 stq pr6|243 000763 aa 2 00004 2361 20 ldq pr2|4,* 000764 aa 000002 6040 04 tmi 2,ic 000766 000765 aa 777777 3760 07 anq 262143,dl 000766 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000767 aa 6 00364 7561 00 stq pr6|244 STATEMENT 1 ON LINE 208 if p_received_version ^= p_expected_version then call sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, "^/Expected version ^a of the ^a structure. Received version ^a instead.", p_expected_version, p_structure_name, p_received_version); 000770 aa 6 00142 3735 20 epp7 pr6|98,* 000771 aa 7 00002 3715 20 epp5 pr7|2,* 000772 aa 7 00004 3535 20 epp3 pr7|4,* 000773 aa 6 00362 2351 00 lda pr6|242 000774 aa 6 00363 2361 00 ldq pr6|243 000775 aa 040 140 106 540 cmpc (pr,rl),(pr,rl),fill(040) 000776 aa 5 00000 00 0005 desc9a pr5|0,al p_received_version 000777 aa 3 00000 00 0006 desc9a pr3|0,ql p_expected_version 001000 aa 000061 6000 04 tze 49,ic 001061 001001 aa 777035 3514 24 epp1 -483,ic* 001002 aa 6 00366 2515 00 spri1 pr6|246 001003 aa 6 00365 4501 00 stz pr6|245 001004 aa 000 100 100 404 mlr (ic),(pr),fill(000) 001005 aa 777046 00 0110 desc9a -474,72 000052 = 136057105170 001006 aa 6 00370 00 0110 desc9a pr6|248,72 001007 aa 6 00044 3701 20 epp4 pr6|36,* 001010 la 4 00020 3521 20 epp2 pr4|16,* error_table_$unimplemented_version 001011 aa 6 00414 2521 00 spri2 pr6|268 001012 aa 776771 3520 04 epp2 -519,ic 000003 = 144155165137 001013 aa 6 00416 2521 00 spri2 pr6|270 001014 aa 777011 3520 04 epp2 -503,ic 000025 = 400000000000 001015 aa 6 00420 2521 00 spri2 pr6|272 001016 aa 6 00366 3521 00 epp2 pr6|246 001017 aa 6 00422 2521 00 spri2 pr6|274 001020 aa 6 00365 3521 00 epp2 pr6|245 001021 aa 6 00424 2521 00 spri2 pr6|276 001022 aa 6 00370 3521 00 epp2 pr6|248 001023 aa 6 00426 2521 00 spri2 pr6|278 001024 aa 7 00004 3521 20 epp2 pr7|4,* p_expected_version 001025 aa 6 00430 2521 00 spri2 pr6|280 001026 aa 7 00006 3521 20 epp2 pr7|6,* p_structure_name 001027 aa 6 00432 2521 00 spri2 pr6|282 001030 aa 7 00002 3521 20 epp2 pr7|2,* p_received_version 001031 aa 6 00434 2521 00 spri2 pr6|284 001032 aa 776776 3520 04 epp2 -514,ic 000030 = 404000000043 001033 aa 6 00436 2521 00 spri2 pr6|286 001034 aa 776765 3520 04 epp2 -523,ic 000021 = 530000000040 001035 aa 6 00440 2521 00 spri2 pr6|288 001036 aa 776756 3520 04 epp2 -530,ic 000014 = 514000000044 001037 aa 6 00442 2521 00 spri2 pr6|290 001040 aa 776772 3520 04 epp2 -518,ic 000032 = 464000000000 001041 aa 6 00444 2521 00 spri2 pr6|292 001042 aa 776755 3520 04 epp2 -531,ic 000017 = 404000000005 001043 aa 6 00446 2521 00 spri2 pr6|294 001044 aa 776747 3520 04 epp2 -537,ic 000013 = 524000000107 001045 aa 6 00450 2521 00 spri2 pr6|296 001046 aa 6 00144 3535 20 epp3 pr6|100,* 001047 aa 3 00002 3521 20 epp2 pr3|2,* 001050 aa 6 00452 2521 00 spri2 pr6|298 001051 aa 3 00004 3521 20 epp2 pr3|4,* 001052 aa 6 00454 2521 00 spri2 pr6|300 001053 aa 3 00000 3521 20 epp2 pr3|0,* 001054 aa 6 00456 2521 00 spri2 pr6|302 001055 aa 6 00412 6211 00 eax1 pr6|266 001056 aa 044000 4310 07 fld 18432,dl 001057 la 4 00010 3521 20 epp2 pr4|8,* sub_err_ 001060 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 213 end CHECK_VERSION_CHAR; 001061 aa 6 00140 6101 00 rtcd pr6|96 END PROCEDURE CHECK_VERSION_CHAR END PROCEDURE cv_table_to_typed_array ----------------------------------------------------------- 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