COMPILATION LISTING OF SEGMENT dfu_cv_dim_to_field_table Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/03/85 1641.2 mst Thu Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 8 /* DESCRIPTION: 9* 10* Given a pointer to a dimension_table, convert that dimension_table 11* into a field_table. The caller provides a pointer to the area in which 12* to allocate the field_table. In addition to returning a pointer to the 13* newly allocated field_table, this routine returns the length of the 14* largest possible record represented by the field_table, in bits. 15**/ 16 17 /* HISTORY: 18* 19*Written by Matthew Pierret, 08/25/83. 20*Modified: 21*05/03/84 by Matthew Pierret: Changed to FIELD_TABLE_VERSION_3. Changed to 22* align fields in string. 23*09/12/84 by Matthew C. Pierret: Changed the SET_FIELD_LOCATIONS loop to set 24* the location after calculating what the location is, instead of 25* before. Added a prefix on each variable local to an internal 26* subroutine. Changed the format style from style2,ind3, so 27* reformat before comparing with old version. 28*12/10/84 by R. Michael Tague: Addressed auditing comments. 29**/ 30 31 /* format: style2,ind3 */ 32 /* format: ll79,comcol50,indcomtxt,^indnoniterdo,indnoniterend,^indprocbody */ 33 34 dfu_cv_dim_to_field_table: 35 proc (p_work_area_ptr, p_dimension_table_ptr, p_field_table_ptr, 36 p_maximum_record_length); 37 38 39 /* START OF DECLARATIONS */ 40 /* Parameter */ 41 42 dcl p_work_area_ptr ptr; /* is a pointer to an area in */ 43 /* which to allocate the field_table */ 44 dcl p_dimension_table_ptr ptr; /* is a pointer to the input */ 45 /* dimension_table. */ 46 dcl p_field_table_ptr ptr; /* is the pointer to the newly */ 47 /* created field_table. */ 48 dcl p_maximum_record_length 49 fixed bin (35);/* is the length of the largest record */ 50 /* record that can possibly be represented */ 51 /* by the field_table. */ 52 53 /* Automatic */ 54 55 dcl alignment fixed bin; 56 dcl bits_past_alignment_boundary 57 fixed bin; 58 dcl field_idx fixed bin; 59 dcl position_in_varying_fields 60 fixed bin; 61 dcl (code, location_of_next_field, varying_field_portion_length, 62 field_length_in_bits) fixed bin (35); 63 64 /* Based */ 65 66 dcl p_work_area area (10000) based (p_work_area_ptr); 67 68 /* Builtin */ 69 70 dcl (addr, hbound, mod, null, rtrim, string) 71 builtin; 72 73 /* Condition */ 74 75 dcl cleanup condition; 76 77 /* Constant */ 78 79 dcl myname init ("dfu_cv_dim_to_field_table") 80 char (32) varying internal static 81 options (constant); 82 dcl MAXIMUM_LENGTH_HELD_IN_ONE_BYTE 83 fixed bin (35) int static 84 options (constant) 85 init (511 /* 2 ** 9 - 1 */); 86 dcl MAXIMUM_LENGTH_HELD_IN_TWO_BYTES 87 fixed bin (35) int static 88 options (constant) 89 init (262143511 /* 2 ** 18 - 1 */); 90 dcl ONE_BYTE fixed bin int static options (constant) 91 init (9); 92 dcl TWO_BYTES fixed bin int static options (constant) 93 init (18); 94 dcl FOUR_BYTES fixed bin int static options (constant) 95 init (36); 96 97 /* Entry */ 98 99 dcl sub_err_ entry () options (variable); 100 dcl dmu_get_data_bit_length$alignment 101 entry (bit (36) aligned, fixed bin (35), 102 fixed bin (17), fixed bin (35)); 103 104 /* External */ 105 106 dcl dm_error_$programming_error 107 fixed bin (35) ext; 108 dcl error_table_$unimplemented_version 109 fixed bin (35) ext; 110 111 /* END OF DECLARATIONS */ 112 113 code = 0; 114 p_field_table_ptr, field_table_ptr = null; 115 116 dimension_table_ptr = p_dimension_table_ptr; 117 call CHECK_VERSION ((dimension_table.version), DIMENSION_TABLE_VERSION_1, 118 "dimension_table"); 119 120 ft_number_of_fields = dimension_table.number_of_dimensions; 121 ft_length_of_field_names = 0; 122 do field_idx = 1 to ft_number_of_fields; 123 ft_length_of_field_names = 124 ft_length_of_field_names 125 + length (dimension_table.dimension (field_idx).name); 126 end; 127 128 on cleanup call FINISH (); 129 130 alloc field_table in (p_work_area); 131 field_table.field_names = ""; 132 133 SET_NAME_AND_DESCRIPTOR: 134 do field_idx = 1 to hbound (field_table.field, 1); 135 field_table.field (field_idx).location_of_name = 136 length (rtrim (field_table.field_names)) + 1; 137 field_table.field (field_idx).length_of_name = 138 length (dimension_table.dimension (field_idx).name); 139 field_table.field_names = 140 rtrim (field_table.field_names) 141 || dimension_table.dimension (field_idx).name; 142 143 if dimension_table.dimension (field_idx).descriptor_ptr 144 ^= addr (dimension_table.dimension (field_idx).descriptor_string) 145 then call sub_err_ (dm_error_$programming_error, myname, 146 ACTION_CANT_RESTART, null, 0, "^/^10x^a^/^10x^a", 147 "A potentially multiple-word descriptor was supplied for a field." 148 , 149 "Currently only single word descriptors are supported in the field_table." 150 ); 151 152 field_table.field (field_idx).descriptor = 153 dimension_table.dimension (field_idx).descriptor_string; 154 string (field_table.field (field_idx).flags) = "0"b; 155 end SET_NAME_AND_DESCRIPTOR; 156 157 position_in_varying_fields = 0; 158 SETUP_VARYING_FIELD_MAP: 159 do field_idx = 1 to hbound (field_table.field, 1); 160 if FIELD_IS_VARYING (field_table.field (field_idx).descriptor) 161 then 162 do; 163 field_table.field (field_idx).flags.length_is_in_characters = 164 FIELD_IS_CHARACTER_VARYING (field_table.field (field_idx) 165 .descriptor); 166 position_in_varying_fields = position_in_varying_fields + 1; 167 field_table.varying_field_map (position_in_varying_fields).field_id = 168 field_idx; 169 field_table.varying_field_map (field_idx).varying_field_index = 170 position_in_varying_fields; 171 end; 172 end SETUP_VARYING_FIELD_MAP; 173 174 location_of_next_field = 1; 175 varying_field_portion_length = 0; 176 SET_FIELD_LOCATIONS: 177 do field_idx = 1 to hbound (field_table.field, 1); 178 call dmu_get_data_bit_length$alignment (field_table.field (field_idx) 179 .descriptor, field_length_in_bits, alignment, code); 180 if code ^= 0 181 then call sub_err_ (code, myname, ACTION_CANT_RESTART, null, 0, 182 "^/Error encountered attempting to get the length in bits of field ^d, ^/with descriptor of ^3bo." 183 , field_idx, field_table.field (field_idx).descriptor); 184 185 bits_past_alignment_boundary = 186 mod (location_of_next_field - 1, alignment); 187 if bits_past_alignment_boundary > 0 188 then location_of_next_field = 189 location_of_next_field + alignment 190 - bits_past_alignment_boundary; 191 field_table.field (field_idx).location = location_of_next_field; 192 193 if field_table.varying_field_map (field_idx).varying_field_index = 0 194 then field_table.field (field_idx).length_in_bits = field_length_in_bits; 195 else 196 do; 197 if field_length_in_bits < MAXIMUM_LENGTH_HELD_IN_ONE_BYTE 198 then field_table.field (field_idx).length_in_bits = ONE_BYTE; 199 else if field_length_in_bits < MAXIMUM_LENGTH_HELD_IN_TWO_BYTES 200 then field_table.field (field_idx).length_in_bits = TWO_BYTES; 201 else field_table.field (field_idx).length_in_bits = FOUR_BYTES; 202 203 varying_field_portion_length = 204 varying_field_portion_length + field_length_in_bits; 205 end; 206 location_of_next_field = 207 location_of_next_field 208 + field_table.field (field_idx).length_in_bits; 209 210 end SET_FIELD_LOCATIONS; 211 field_table.location_of_first_varying_field = location_of_next_field; 212 213 p_field_table_ptr = field_table_ptr; 214 p_maximum_record_length = 215 location_of_next_field + varying_field_portion_length; 216 217 return; 218 219 FINISH: 220 proc (); 221 222 if field_table_ptr ^= null & field_table_ptr ^= p_field_table_ptr 223 then free field_table; 224 225 end FINISH; 226 227 CHECK_VERSION: 228 proc (cv_p_received_version, cv_p_expected_version, cv_p_structure_name); 229 dcl cv_p_received_version char (8); 230 dcl cv_p_expected_version char (8); 231 dcl cv_p_structure_name char (*); 232 233 if cv_p_received_version ^= cv_p_expected_version 234 then call sub_err_ (error_table_$unimplemented_version, myname, 235 ACTION_CANT_RESTART, null, 0, 236 "^/Expected version ^a of the ^a structure.^/Received version ^a instead." 237 , cv_p_expected_version, cv_p_structure_name, 238 cv_p_received_version); 239 else return; 240 241 end CHECK_VERSION; 242 243 FIELD_IS_VARYING: 244 proc (fiv_p_descriptor_string) returns (bit (1) aligned); 245 246 dcl fiv_p_descriptor_string 247 bit (36) aligned; 248 dcl 1 fiv_descriptor_type unal based (addr (fiv_p_descriptor_string)), 249 2 unused1 bit (1) unal, 250 2 type fixed bin (6) unsigned unal, 251 2 unused2 bit (29) unal; 252 dcl BIT_VARYING fixed bin (6) unsigned init (20); 253 dcl CHAR_VARYING fixed bin (6) init (22); 254 255 if fiv_descriptor_type.type = BIT_VARYING 256 | fiv_descriptor_type.type = CHAR_VARYING 257 then return ("1"b); 258 else return ("0"b); 259 260 end FIELD_IS_VARYING; 261 262 FIELD_IS_CHARACTER_VARYING: 263 proc (ficv_p_descriptor_string) returns (bit (1) aligned); 264 265 dcl ficv_p_descriptor_string 266 bit (36) aligned; 267 dcl 1 ficv_descriptor_type unal based (addr (ficv_p_descriptor_string)), 268 2 unused1 bit (1) unal, 269 2 type fixed bin (6) unsigned unal, 270 2 unused2 bit (29) unal; 271 dcl BIT_VARYING fixed bin (6) unsigned init (20); 272 dcl CHAR_VARYING fixed bin (6) init (22); 273 274 if ficv_descriptor_type.type = CHAR_VARYING 275 then return ("1"b); 276 else return ("0"b); 277 278 end FIELD_IS_CHARACTER_VARYING; 279 1 1 /* ********** BEGIN INCLUDE FILE dm_field_table.incl.pl1 ********** */ 1 2 1 3 /* DESCRIPTION: 1 4* 1 5* The field_table describes the layout of a set of fields in a 1 6* formatted data string. Such a string is the stored representation of a 1 7* record or a key. Fields are placed side-by-side in the string in the 1 8* order they appear in the field_table.field array. The string is divided 1 9* into the fixed portion and the varying portion. In the fixed portion 1 10* appear fixed-length fields and fixed-size length-fields for 1 11* varying-length fields. In the varying portion appear varying length 1 12* fields. The length-field for a varying-length field contains the length 1 13* of the field values either in bits or in characters, depending on the 1 14* data type of the field. 1 15**/ 1 16 1 17 /* HISTORY: 1 18*Written by Matthew Pierret, 04/01/82. 1 19*Modified: 1 20*04/20/82 by Matthew Pierret: Added length_is_in_characters, meaning, if on, 1 21* that if the field is varying, its length is expressed in 1 22* bytes/characters. 1 23*03/22/83 by Lindsey Spratt: Changed lofvf to have a precision of 35 instead 1 24* of 17, changed version to 2, changed version field to char(8) from 1 25* fixed bin (17). 1 26*05/01/84 by Matthew Pierret: Changed version to 3. Removed field.name and 1 27* put field names in one string (field_names) at the end of the 1 28* structure. Added field.location_of_name and field.length_of_name 1 29* for locating the field name in field_names. Aligned all "fixed bin" 1 30* structure elements. Changed maximum_field_name_length to 1 31* length_of_field_names. 1 32**/ 1 33 1 34 /* format: style2 */ 1 35 1 36 dcl 1 field_table aligned based (field_table_ptr), 1 37 2 version char (8) aligned init (FIELD_TABLE_VERSION_3), 1 38 2 number_of_fields fixed bin (17), 1 39 2 length_of_field_names 1 40 fixed bin (17), /* length of field_names in characters */ 1 41 2 location_of_first_varying_field 1 42 fixed bin (35), /* location of first bit in the varying portion of the formatted string */ 1 43 2 field (ft_number_of_fields refer (field_table.number_of_fields)), 1 44 3 flags aligned, 1 45 4 descriptor_is_varying 1 46 bit (1) unal, /* if on, the descriptor is not limited to the standard 36 bits */ 1 47 /* and is stored in a stand-alone fashion, with field.descriptor */ 1 48 /* containing the id of the element in which the descriptor is stored. */ 1 49 4 length_is_in_characters 1 50 bit (1) unal, /* if field is varying, the length field describes its length */ 1 51 /* in characters instead of in bits */ 1 52 4 must_be_zero bit (34) unal, 1 53 3 descriptor bit (36) aligned, 1 54 3 location fixed bin (35), /* location of first bit of field in formatted string */ 1 55 3 length_in_bits fixed bin (35), /* length of field in bits */ 1 56 3 location_of_name fixed bin (17), /* location of first character of field name in field_names */ 1 57 3 length_of_name fixed bin (17), /* length of name in characters */ 1 58 2 varying_field_map (ft_number_of_fields refer (field_table.number_of_fields)), 1 59 3 field_id fixed bin (17), /* field_id of Nth varying field */ 1 60 3 varying_field_index 1 61 fixed bin (17), /* ordinality among varying fields of field N */ 1 62 2 field_names char (ft_length_of_field_names refer (field_table.length_of_field_names)); 1 63 1 64 1 65 dcl field_table_ptr ptr; 1 66 dcl ft_length_of_field_names 1 67 fixed bin; 1 68 dcl ft_number_of_fields fixed bin; 1 69 dcl FIELD_TABLE_VERSION_3 char (8) aligned init ("FldTbl 3") internal static options (constant); 1 70 1 71 dcl field_name char (field_name_length) based (field_name_ptr); 1 72 1 73 dcl field_name_length fixed bin; 1 74 dcl field_name_ptr ptr; 1 75 1 76 /* END INCLUDE FILE dm_field_table.incl.pl1 */ 280 281 2 1 /* *********************************************************** 2 2* * * 2 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 2 4* * * 2 5* *********************************************************** */ 2 6 2 7 /* ***** BEGIN INCLUDE FILE vu_dimension_table.incl.pl1 ****** */ 2 8 2 9 /* format: style2,ind3 */ 2 10 2 11 /* HISTORY: 2 12*Written by Matthew Pierret, 08/24/83. 2 13*Modified: 2 14**/ 2 15 2 16 dcl 1 dimension_table aligned based (dimension_table_ptr), 2 17 /* This structure describes a set of dimensions. */ 2 18 /* These dimensions are primarily used in association */ 2 19 /* with a vector_list structure. */ 2 20 2 version char (8) init (DIMENSION_TABLE_VERSION_1), 2 21 2 maximum_dimension_name_length 2 22 fixed bin (35), /* length of the dimension.name field */ 2 23 2 number_of_dimensions 2 24 fixed bin (35), /* extent of the dimension array */ 2 25 2 dimension (dt_number_of_dimensions refer (dimension_table.number_of_dimensions)), 2 26 3 name char (dt_maximum_dimension_name_length 2 27 refer (dimension_table.maximum_dimension_name_length)) varying init (""), 2 28 /* name of a dimension */ 2 29 3 descriptor_string 2 30 bit (36) aligned init ("0"b), 2 31 /* One-word Multics descriptor. */ 2 32 3 descriptor_ptr ptr init (null), /* points to the Multics descriptor for this dimension. */ 2 33 /* For one-word descriptors, the value is usually */ 2 34 /* addr (dimension_table.dimension.descriptor_string) */ 2 35 /* Multi-word descriptors must be allocated in */ 2 36 /* separate storage */ 2 37 3 cv_to_print entry (ptr, ptr, ptr, fixed bin (35), char (*) varying, fixed bin (35)), 2 38 /* call cv_to_print (descriptor_ptr, typed_value_ptr, */ 2 39 /* temp_seg_ptr, max_length_for_print_value, */ 2 40 /* print_value, code) */ 2 41 3 cv_to_typed entry (ptr, ptr, ptr, ptr, fixed bin (35)); 2 42 /* call cv_to_typed (descriptor_ptr, area_ptr, */ 2 43 /* print_value_ptr, typed_value_ptr, code) */ 2 44 2 45 dcl dimension_table_ptr ptr init (null); 2 46 dcl dt_maximum_dimension_name_length 2 47 fixed bin (35) init (-1); 2 48 dcl dt_number_of_dimensions 2 49 fixed bin (35) init (-1); 2 50 dcl DIMENSION_TABLE_VERSION_1 2 51 char (8) init ("DimTbl_1") internal static options (constant); 2 52 2 53 2 54 /* ******* END INCLUDE FILE vu_dimension_table.incl.pl1 ****** */ 282 283 3 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 3 2 /* format: style3 */ 3 3 3 4 /* These constants are to be used for the flags argument of sub_err_ */ 3 5 /* They are just "string (condition_info_header.action_flags)" */ 3 6 3 7 declare ( 3 8 ACTION_CAN_RESTART init (""b), 3 9 ACTION_CANT_RESTART init ("1"b), 3 10 ACTION_DEFAULT_RESTART 3 11 init ("01"b), 3 12 ACTION_QUIET_RESTART 3 13 init ("001"b), 3 14 ACTION_SUPPORT_SIGNAL 3 15 init ("0001"b) 3 16 ) bit (36) aligned internal static options (constant); 3 17 3 18 /* End include file */ 284 285 end dfu_cv_dim_to_field_table; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/03/85 1149.6 dfu_cv_dim_to_field_table.pl1 >spec>temp>famis1>dfu_cv_dim_to_field_table.pl1 280 1 01/03/85 1003.3 dm_field_table.incl.pl1 >spec>temp>famis1>dm_field_table.incl.pl1 282 2 01/03/85 1005.8 vu_dimension_table.incl.pl1 >spec>temp>famis1>vu_dimension_table.incl.pl1 284 3 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 000016 constant bit(36) initial dcl 3-7 set ref 143* 180* 233* BIT_VARYING 000146 automatic fixed bin(6,0) initial unsigned dcl 252 in procedure "FIELD_IS_VARYING" set ref 252* 255 BIT_VARYING 000156 automatic fixed bin(6,0) initial unsigned dcl 271 in procedure "FIELD_IS_CHARACTER_VARYING" set ref 271* CHAR_VARYING 000157 automatic fixed bin(6,0) initial dcl 272 in procedure "FIELD_IS_CHARACTER_VARYING" set ref 272* 274 CHAR_VARYING 000147 automatic fixed bin(6,0) initial dcl 253 in procedure "FIELD_IS_VARYING" set ref 253* 255 DIMENSION_TABLE_VERSION_1 000000 constant char(8) initial unaligned dcl 2-50 set ref 117* FIELD_TABLE_VERSION_3 000002 constant char(8) initial dcl 1-69 ref 130 FOUR_BYTES constant fixed bin(17,0) initial dcl 94 ref 201 MAXIMUM_LENGTH_HELD_IN_ONE_BYTE constant fixed bin(35,0) initial dcl 82 ref 197 MAXIMUM_LENGTH_HELD_IN_TWO_BYTES 000004 constant fixed bin(35,0) initial dcl 86 ref 199 ONE_BYTE constant fixed bin(17,0) initial dcl 90 ref 197 TWO_BYTES constant fixed bin(17,0) initial dcl 92 ref 199 addr builtin function dcl 70 ref 143 255 255 274 alignment 000100 automatic fixed bin(17,0) dcl 55 set ref 178* 185 187 bits_past_alignment_boundary 000101 automatic fixed bin(17,0) dcl 56 set ref 185* 187 187 cleanup 000110 stack reference condition dcl 75 ref 128 code 000104 automatic fixed bin(35,0) dcl 61 set ref 113* 178* 180 180* cv_p_expected_version parameter char(8) unaligned dcl 230 set ref 227 233 233* cv_p_received_version parameter char(8) unaligned dcl 229 set ref 227 233 233* cv_p_structure_name parameter char unaligned dcl 231 set ref 227 233* descriptor 6 based bit(36) array level 3 dcl 1-36 set ref 152* 160* 163* 178* 180* descriptor_ptr based pointer initial array level 3 dcl 2-16 ref 143 descriptor_string based bit(36) initial array level 3 dcl 2-16 set ref 143 152 dimension 4 based structure array level 2 dcl 2-16 dimension_table based structure level 1 dcl 2-16 dimension_table_ptr 000122 automatic pointer initial dcl 2-45 set ref 116* 117 120 123 137 139 143 143 152 2-45* dm_error_$programming_error 000014 external static fixed bin(35,0) dcl 106 set ref 143* dmu_get_data_bit_length$alignment 000012 constant entry external dcl 100 ref 178 dt_maximum_dimension_name_length 000124 automatic fixed bin(35,0) initial dcl 2-46 set ref 2-46* dt_number_of_dimensions 000125 automatic fixed bin(35,0) initial dcl 2-48 set ref 2-48* error_table_$unimplemented_version 000016 external static fixed bin(35,0) dcl 108 set ref 233* ficv_descriptor_type based structure level 1 packed unaligned dcl 267 ficv_p_descriptor_string parameter bit(36) dcl 265 set ref 262 274 field 5 based structure array level 2 dcl 1-36 set ref 133 158 176 field_id based fixed bin(17,0) array level 3 dcl 1-36 set ref 167* field_idx 000102 automatic fixed bin(17,0) dcl 58 set ref 122* 123* 133* 135 137 137 139 143 143 152 152 154* 158* 160 163 163 167 169* 176* 178 180* 180 191 193 193 197 199 201 206* field_length_in_bits 000107 automatic fixed bin(35,0) dcl 61 set ref 178* 193 197 199 203 field_names based char level 2 dcl 1-36 set ref 131* 135 139* 139 field_table based structure level 1 dcl 1-36 set ref 130 222 field_table_ptr 000116 automatic pointer dcl 1-65 set ref 114* 130* 131 133 135 135 137 139 139 152 154 158 160 163 163 167 169 176 178 180 191 193 193 197 199 201 206 211 213 222 222 222 fiv_descriptor_type based structure level 1 packed unaligned dcl 248 fiv_p_descriptor_string parameter bit(36) dcl 246 set ref 243 255 255 flags 5 based structure array level 3 dcl 1-36 set ref 154* ft_length_of_field_names 000120 automatic fixed bin(17,0) dcl 1-66 set ref 121* 123* 123 130 130 ft_number_of_fields 000121 automatic fixed bin(17,0) dcl 1-68 set ref 120* 122 130 130 130 hbound builtin function dcl 70 ref 133 158 176 length_in_bits 10 based fixed bin(35,0) array level 3 dcl 1-36 set ref 193* 197* 199* 201* 206 length_is_in_characters 5(01) based bit(1) array level 4 packed unaligned dcl 1-36 set ref 163* length_of_field_names 3 based fixed bin(17,0) level 2 dcl 1-36 set ref 130* 131 135 139 139 222 length_of_name 12 based fixed bin(17,0) array level 3 dcl 1-36 set ref 137* location 7 based fixed bin(35,0) array level 3 dcl 1-36 set ref 191* location_of_first_varying_field 4 based fixed bin(35,0) level 2 dcl 1-36 set ref 211* location_of_name 11 based fixed bin(17,0) array level 3 dcl 1-36 set ref 135* location_of_next_field 000105 automatic fixed bin(35,0) dcl 61 set ref 174* 185 187* 187 191 206* 206 211 214 maximum_dimension_name_length 2 based fixed bin(35,0) level 2 dcl 2-16 ref 123 123 137 137 139 139 143 143 143 143 143 143 152 152 152 mod builtin function dcl 70 ref 185 myname 000005 constant varying char(32) initial dcl 79 set ref 143* 180* 233* name 4 based varying char initial array level 3 dcl 2-16 ref 123 137 139 null builtin function dcl 70 ref 114 143 143 180 180 2-45 222 233 233 number_of_dimensions 3 based fixed bin(35,0) level 2 dcl 2-16 ref 120 number_of_fields 2 based fixed bin(17,0) level 2 dcl 1-36 set ref 130* 131 131 133 135 135 139 139 139 139 158 167 169 176 193 222 222 p_dimension_table_ptr parameter pointer dcl 44 ref 34 116 p_field_table_ptr parameter pointer dcl 46 set ref 34 114* 213* 222 p_maximum_record_length parameter fixed bin(35,0) dcl 48 set ref 34 214* p_work_area based area(10000) dcl 66 ref 130 p_work_area_ptr parameter pointer dcl 42 ref 34 130 position_in_varying_fields 000103 automatic fixed bin(17,0) dcl 59 set ref 157* 166* 166 167 169 rtrim builtin function dcl 70 ref 135 139 string builtin function dcl 70 set ref 154* sub_err_ 000010 constant entry external dcl 99 ref 143 180 233 type 0(01) based fixed bin(6,0) level 2 in structure "fiv_descriptor_type" packed unsigned unaligned dcl 248 in procedure "FIELD_IS_VARYING" ref 255 255 type 0(01) based fixed bin(6,0) level 2 in structure "ficv_descriptor_type" packed unsigned unaligned dcl 267 in procedure "FIELD_IS_CHARACTER_VARYING" ref 274 varying_field_index based fixed bin(17,0) array level 3 dcl 1-36 set ref 169* 193 varying_field_map based structure array level 2 dcl 1-36 varying_field_portion_length 000106 automatic fixed bin(35,0) dcl 61 set ref 175* 203* 203 214 version based char(8) initial level 2 in structure "field_table" dcl 1-36 in procedure "dfu_cv_dim_to_field_table" set ref 130* version based char(8) initial level 2 in structure "dimension_table" dcl 2-16 in procedure "dfu_cv_dim_to_field_table" ref 117 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 3-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 3-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 3-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 3-7 field_name based char unaligned dcl 1-71 field_name_length automatic fixed bin(17,0) dcl 1-73 field_name_ptr automatic pointer dcl 1-74 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION 001223 constant entry internal dcl 227 ref 117 FIELD_IS_CHARACTER_VARYING 001350 constant entry internal dcl 262 ref 163 FIELD_IS_VARYING 001325 constant entry internal dcl 243 ref 160 FINISH 001170 constant entry internal dcl 219 ref 128 SETUP_VARYING_FIELD_MAP 000652 constant label dcl 158 SET_FIELD_LOCATIONS 000755 constant label dcl 176 SET_NAME_AND_DESCRIPTOR 000346 constant label dcl 133 dfu_cv_dim_to_field_table 000173 constant entry external dcl 34 NAME DECLARED BY CONTEXT OR IMPLICATION. length builtin function ref 123 135 137 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1516 1536 1406 1526 Length 1776 1406 20 223 110 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dfu_cv_dim_to_field_table 291 external procedure is an external procedure. on unit on line 128 72 on unit FINISH internal procedure shares stack frame of on unit on line 128. CHECK_VERSION internal procedure shares stack frame of external procedure dfu_cv_dim_to_field_table. FIELD_IS_VARYING internal procedure shares stack frame of external procedure dfu_cv_dim_to_field_table. FIELD_IS_CHARACTER_VARYING internal procedure shares stack frame of external procedure dfu_cv_dim_to_field_table. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dfu_cv_dim_to_field_table 000100 alignment dfu_cv_dim_to_field_table 000101 bits_past_alignment_boundary dfu_cv_dim_to_field_table 000102 field_idx dfu_cv_dim_to_field_table 000103 position_in_varying_fields dfu_cv_dim_to_field_table 000104 code dfu_cv_dim_to_field_table 000105 location_of_next_field dfu_cv_dim_to_field_table 000106 varying_field_portion_length dfu_cv_dim_to_field_table 000107 field_length_in_bits dfu_cv_dim_to_field_table 000116 field_table_ptr dfu_cv_dim_to_field_table 000120 ft_length_of_field_names dfu_cv_dim_to_field_table 000121 ft_number_of_fields dfu_cv_dim_to_field_table 000122 dimension_table_ptr dfu_cv_dim_to_field_table 000124 dt_maximum_dimension_name_length dfu_cv_dim_to_field_table 000125 dt_number_of_dimensions dfu_cv_dim_to_field_table 000146 BIT_VARYING FIELD_IS_VARYING 000147 CHAR_VARYING FIELD_IS_VARYING 000156 BIT_VARYING FIELD_IS_CHARACTER_VARYING 000157 CHAR_VARYING FIELD_IS_CHARACTER_VARYING THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out return mod_fx3 enable shorten_stack ext_entry int_entry alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. dmu_get_data_bit_length$alignment sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$programming_error error_table_$unimplemented_version CONSTANTS 001370 aa 000006000000 001371 aa 000006000000 001372 aa 600000000041 001373 aa 000160000000 001374 ta 000000000000 001375 aa 000000000000 001376 aa 600000000041 001377 aa 000162000000 001400 ta 000032000000 001401 aa 000000000000 001402 ta 000031000000 001403 aa 000000000000 001404 ta 000030000000 001405 aa 000000000000 000000 aa 104 151 155 124 DimT 000001 aa 142 154 137 061 bl_1 000002 aa 106 154 144 124 FldT 000003 aa 142 154 040 063 bl 3 000004 aa 001747777027 000005 aa 000000000031 000006 aa 144 146 165 137 dfu_ 000007 aa 143 166 137 144 cv_d 000010 aa 151 155 137 164 im_t 000011 aa 157 137 146 151 o_fi 000012 aa 145 154 144 137 eld_ 000013 aa 164 141 142 154 tabl 000014 aa 145 040 040 040 e 000015 aa 040 040 040 040 000016 aa 400000000000 000017 aa 526077777777 000020 aa 404000000021 000021 aa 524000000140 000022 aa 524000000110 000023 aa 524000000100 000024 aa 524000000020 000025 aa 404000000005 000026 aa 514000000044 000027 aa 530000000040 000030 aa 524000000017 000031 aa 526000000010 000032 aa 524000000010 000033 aa 514000000001 000034 aa 404000000043 000035 aa 464000000000 000036 aa 077777000043 000037 aa 000001000000 000040 aa 143 154 145 141 clea 000041 aa 156 165 160 000 nup 000042 aa 136 057 136 061 ^/^1 000043 aa 060 170 136 141 0x^a 000044 aa 136 057 136 061 ^/^1 000045 aa 060 170 136 141 0x^a 000046 aa 144 151 155 145 dime 000047 aa 156 163 151 157 nsio 000050 aa 156 137 164 141 n_ta 000051 aa 142 154 145 000 ble 000052 aa 101 040 160 157 A po 000053 aa 164 145 156 164 tent 000054 aa 151 141 154 154 iall 000055 aa 171 040 155 165 y mu 000056 aa 154 164 151 160 ltip 000057 aa 154 145 055 167 le-w 000060 aa 157 162 144 040 ord 000061 aa 144 145 163 143 desc 000062 aa 162 151 160 164 ript 000063 aa 157 162 040 167 or w 000064 aa 141 163 040 163 as s 000065 aa 165 160 160 154 uppl 000066 aa 151 145 144 040 ied 000067 aa 146 157 162 040 for 000070 aa 141 040 146 151 a fi 000071 aa 145 154 144 056 eld. 000072 aa 136 057 105 170 ^/Ex 000073 aa 160 145 143 164 pect 000074 aa 145 144 040 166 ed v 000075 aa 145 162 163 151 ersi 000076 aa 157 156 040 136 on ^ 000077 aa 141 040 157 146 a of 000100 aa 040 164 150 145 the 000101 aa 040 136 141 040 ^a 000102 aa 163 164 162 165 stru 000103 aa 143 164 165 162 ctur 000104 aa 145 056 136 057 e.^/ 000105 aa 122 145 143 145 Rece 000106 aa 151 166 145 144 ived 000107 aa 040 166 145 162 ver 000110 aa 163 151 157 156 sion 000111 aa 040 136 141 040 ^a 000112 aa 151 156 163 164 inst 000113 aa 145 141 144 056 ead. 000114 aa 103 165 162 162 Curr 000115 aa 145 156 164 154 entl 000116 aa 171 040 157 156 y on 000117 aa 154 171 040 163 ly s 000120 aa 151 156 147 154 ingl 000121 aa 145 040 167 157 e wo 000122 aa 162 144 040 144 rd d 000123 aa 145 163 143 162 escr 000124 aa 151 160 164 157 ipto 000125 aa 162 163 040 141 rs a 000126 aa 162 145 040 163 re s 000127 aa 165 160 160 157 uppo 000130 aa 162 164 145 144 rted 000131 aa 040 151 156 040 in 000132 aa 164 150 145 040 the 000133 aa 146 151 145 154 fiel 000134 aa 144 137 164 141 d_ta 000135 aa 142 154 145 056 ble. 000136 aa 136 057 105 162 ^/Er 000137 aa 162 157 162 040 ror 000140 aa 145 156 143 157 enco 000141 aa 165 156 164 145 unte 000142 aa 162 145 144 040 red 000143 aa 141 164 164 145 atte 000144 aa 155 160 164 151 mpti 000145 aa 156 147 040 164 ng t 000146 aa 157 040 147 145 o ge 000147 aa 164 040 164 150 t th 000150 aa 145 040 154 145 e le 000151 aa 156 147 164 150 ngth 000152 aa 040 151 156 040 in 000153 aa 142 151 164 163 bits 000154 aa 040 157 146 040 of 000155 aa 146 151 145 154 fiel 000156 aa 144 040 136 144 d ^d 000157 aa 054 040 136 057 , ^/ 000160 aa 167 151 164 150 with 000161 aa 040 144 145 163 des 000162 aa 143 162 151 160 crip 000163 aa 164 157 162 040 tor 000164 aa 157 146 040 136 of ^ 000165 aa 063 142 157 056 3bo. BEGIN PROCEDURE dfu_cv_dim_to_field_table ENTRY TO dfu_cv_dim_to_field_table STATEMENT 1 ON LINE 34 dfu_cv_dim_to_field_table: proc (p_work_area_ptr, p_dimension_table_ptr, p_field_table_ptr, p_maximum_record_length); 000166 at 000004000035 000167 tt 000035000035 000170 ta 000034000000 000171 ta 000166000000 000172 da 000076300000 000173 aa 000460 6270 00 eax7 304 000174 aa 7 00034 3521 20 epp2 pr7|28,* 000175 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000176 aa 000010000000 000177 aa 000000000000 STATEMENT 1 ON LINE 45 OF FILE 2 000200 aa 777636 2370 04 ldaq -98,ic 000036 = 077777000043 000001000000 000201 aa 6 00122 7571 00 staq pr6|82 dimension_table_ptr STATEMENT 1 ON LINE 46 OF FILE 2 000202 aa 000001 3360 07 lcq 1,dl 000203 aa 6 00124 7561 00 stq pr6|84 dt_maximum_dimension_name_length STATEMENT 1 ON LINE 48 OF FILE 2 000204 aa 6 00125 7561 00 stq pr6|85 dt_number_of_dimensions STATEMENT 1 ON LINE 113 code = 0; 000205 aa 6 00104 4501 00 stz pr6|68 code STATEMENT 1 ON LINE 114 p_field_table_ptr, field_table_ptr = null; 000206 aa 777630 3734 24 epp7 -104,ic* 000207 aa 6 00032 3715 20 epp5 pr6|26,* 000210 aa 5 00006 6535 20 spri7 pr5|6,* p_field_table_ptr 000211 aa 6 00116 6535 00 spri7 pr6|78 field_table_ptr STATEMENT 1 ON LINE 116 dimension_table_ptr = p_dimension_table_ptr; 000212 aa 5 00004 3535 20 epp3 pr5|4,* p_dimension_table_ptr 000213 aa 3 00000 3535 20 epp3 pr3|0,* p_dimension_table_ptr 000214 aa 6 00122 2535 00 spri3 pr6|82 dimension_table_ptr STATEMENT 1 ON LINE 117 call CHECK_VERSION ((dimension_table.version), DIMENSION_TABLE_VERSION_1, "dimension_table"); 000215 aa 3 00000 2351 00 lda pr3|0 dimension_table.version 000216 aa 3 00001 2361 00 ldq pr3|1 dimension_table.version 000217 aa 6 00160 7571 00 staq pr6|112 000220 aa 777626 2370 04 ldaq -106,ic 000046 = 144151155145 156163151157 000221 aa 6 00162 7571 00 staq pr6|114 000222 aa 777626 2370 04 ldaq -106,ic 000050 = 156137164141 142154145000 000223 aa 6 00164 7571 00 staq pr6|116 000224 aa 001144 3520 04 epp2 612,ic 001370 = 000006000000 000225 aa 2 00000 2351 00 lda pr2|0 000226 aa 000775 6700 04 tsp4 509,ic 001223 STATEMENT 1 ON LINE 120 ft_number_of_fields = dimension_table.number_of_dimensions; 000227 aa 6 00122 3735 20 epp7 pr6|82,* dimension_table_ptr 000230 aa 7 00003 2361 00 ldq pr7|3 dimension_table.number_of_dimensions 000231 aa 6 00121 7561 00 stq pr6|81 ft_number_of_fields STATEMENT 1 ON LINE 121 ft_length_of_field_names = 0; 000232 aa 6 00120 4501 00 stz pr6|80 ft_length_of_field_names STATEMENT 1 ON LINE 122 do field_idx = 1 to ft_number_of_fields; 000233 aa 6 00126 7561 00 stq pr6|86 000234 aa 000001 2360 07 ldq 1,dl 000235 aa 6 00102 7561 00 stq pr6|66 field_idx 000236 aa 6 00102 2361 00 ldq pr6|66 field_idx 000237 aa 6 00126 1161 00 cmpq pr6|86 000240 aa 000023 6054 04 tpnz 19,ic 000263 STATEMENT 1 ON LINE 123 ft_length_of_field_names = ft_length_of_field_names + length (dimension_table.dimension (field_idx).name); 000241 aa 6 00122 3735 20 epp7 pr6|82,* dimension_table_ptr 000242 aa 7 00002 2361 00 ldq pr7|2 dimension_table.maximum_dimension_name_length 000243 aa 000003 0760 07 adq 3,dl 000244 aa 000002 7320 00 qrs 2 000245 aa 000002 0760 07 adq 2,dl 000246 aa 000001 0760 07 adq 1,dl 000247 aa 777776 3760 07 anq 262142,dl 000250 aa 000012 0760 07 adq 10,dl 000251 aa 000001 0760 07 adq 1,dl 000252 aa 777776 3760 07 anq 262142,dl 000253 aa 6 00166 7561 00 stq pr6|118 000254 aa 6 00102 2361 00 ldq pr6|66 field_idx 000255 aa 000001 1760 07 sbq 1,dl 000256 aa 6 00166 4021 00 mpy pr6|118 000257 aa 7 00004 2361 06 ldq pr7|4,ql dimension_table.name 000260 aa 6 00120 0561 00 asq pr6|80 ft_length_of_field_names STATEMENT 1 ON LINE 126 end; 000261 aa 6 00102 0541 00 aos pr6|66 field_idx 000262 aa 777754 7100 04 tra -20,ic 000236 STATEMENT 1 ON LINE 128 on cleanup call FINISH (); 000263 aa 000007 7260 07 lxl6 7,dl 000264 aa 777554 3520 04 epp2 -148,ic 000040 = 143154145141 000265 aa 0 00717 7001 00 tsx0 pr0|463 enable 000266 aa 000004 7100 04 tra 4,ic 000272 000267 aa 000110000000 000270 aa 000011 7100 04 tra 9,ic 000301 BEGIN CONDITION cleanup.1 ENTRY TO cleanup.1 STATEMENT 1 ON LINE 128 on cleanup call FINISH (); 000271 da 000104200000 000272 aa 000120 6270 00 eax7 80 000273 aa 7 00034 3521 20 epp2 pr7|28,* 000274 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000275 aa 000000000000 000276 aa 000000000000 000277 aa 000671 6700 04 tsp4 441,ic 001170 000300 aa 0 00631 7101 00 tra pr0|409 return END CONDITION cleanup.1 STATEMENT 1 ON LINE 130 alloc field_table in (p_work_area); 000301 aa 6 00120 2361 00 ldq pr6|80 ft_length_of_field_names 000302 aa 000003 0760 07 adq 3,dl 000303 aa 000002 7320 00 qrs 2 000304 aa 6 00166 7561 00 stq pr6|118 000305 aa 6 00121 2361 00 ldq pr6|81 ft_number_of_fields 000306 aa 000001 7360 00 qls 1 000307 aa 6 00167 7561 00 stq pr6|119 000310 aa 6 00121 2361 00 ldq pr6|81 ft_number_of_fields 000311 aa 000006 4020 07 mpy 6,dl 000312 aa 000005 0760 07 adq 5,dl 000313 aa 6 00167 0761 00 adq pr6|119 000314 aa 6 00166 0761 00 adq pr6|118 000315 aa 6 00032 3735 20 epp7 pr6|26,* 000316 aa 7 00002 3715 20 epp5 pr7|2,* p_work_area_ptr 000317 aa 5 00000 3521 20 epp2 pr5|0,* p_work_area 000320 aa 0 01402 7001 00 tsx0 pr0|770 alloc_based 000321 aa 777760 7100 04 tra -16,ic 000301 000322 aa 6 00116 2521 00 spri2 pr6|78 field_table_ptr 000323 aa 777457 2370 04 ldaq -209,ic 000002 = 106154144124 142154040063 000324 aa 2 00000 7551 00 sta pr2|0 field_table.version 000325 aa 2 00001 7561 00 stq pr2|1 field_table.version 000326 aa 6 00121 2361 00 ldq pr6|81 ft_number_of_fields 000327 aa 2 00002 7561 00 stq pr2|2 field_table.number_of_fields 000330 aa 6 00120 2361 00 ldq pr6|80 ft_length_of_field_names 000331 aa 2 00003 7561 00 stq pr2|3 field_table.length_of_field_names STATEMENT 1 ON LINE 131 field_table.field_names = ""; 000332 aa 2 00002 2361 00 ldq pr2|2 field_table.number_of_fields 000333 aa 000001 7360 00 qls 1 000334 aa 6 00166 7561 00 stq pr6|118 000335 aa 2 00002 2361 00 ldq pr2|2 field_table.number_of_fields 000336 aa 000006 4020 07 mpy 6,dl 000337 aa 000005 0760 07 adq 5,dl 000340 aa 6 00166 0761 00 adq pr6|118 000341 aa 2 00000 3735 06 epp7 pr2|0,ql field_table.field_names 000342 aa 2 00003 7271 00 lxl7 pr2|3 field_table.length_of_field_names 000343 aa 040 140 100 400 mlr (),(pr,rl),fill(040) 000344 aa 000000 00 0000 desc9a 0,0 000345 aa 7 00000 00 0017 desc9a pr7|0,x7 field_table.field_names STATEMENT 1 ON LINE 133 SET_NAME_AND_DESCRIPTOR: do field_idx = 1 to hbound (field_table.field, 1); 000346 aa 2 00002 2361 00 ldq pr2|2 field_table.number_of_fields 000347 aa 6 00127 7561 00 stq pr6|87 000350 aa 000001 2360 07 ldq 1,dl 000351 aa 6 00102 7561 00 stq pr6|66 field_idx 000352 aa 6 00102 2361 00 ldq pr6|66 field_idx 000353 aa 6 00127 1161 00 cmpq pr6|87 000354 aa 000275 6054 04 tpnz 189,ic 000651 STATEMENT 1 ON LINE 135 field_table.field (field_idx).location_of_name = length (rtrim (field_table.field_names)) + 1; 000355 aa 000006 4020 07 mpy 6,dl 000356 aa 6 00116 3735 20 epp7 pr6|78,* field_table_ptr 000357 aa 000000 6260 06 eax6 0,ql 000360 aa 7 00002 2361 00 ldq pr7|2 field_table.number_of_fields 000361 aa 000001 7360 00 qls 1 000362 aa 6 00167 7561 00 stq pr6|119 000363 aa 7 00002 2361 00 ldq pr7|2 field_table.number_of_fields 000364 aa 000006 4020 07 mpy 6,dl 000365 aa 000005 0760 07 adq 5,dl 000366 aa 6 00167 0761 00 adq pr6|119 000367 aa 7 00000 3715 06 epp5 pr7|0,ql field_table.field_names 000370 aa 7 00003 7271 00 lxl7 pr7|3 field_table.length_of_field_names 000371 aa 6 00167 7561 00 stq pr6|119 000372 aa 000 000 165 540 tctr (pr,rl) 000373 aa 5 00000 00 0017 desc9a pr5|0,x7 field_table.field_names 000374 aa 0 76605 0001 00 arg pr0|-635 = 777777777777 000375 aa 6 00056 0001 00 arg pr6|46 000376 aa 6 00056 2361 00 ldq pr6|46 000377 aa 0 00242 3761 00 anq pr0|162 = 000777777777 000400 aa 6 00170 7561 00 stq pr6|120 000401 aa 7 00003 2361 00 ldq pr7|3 field_table.length_of_field_names 000402 aa 6 00170 1761 00 sbq pr6|120 000403 aa 000001 0760 07 adq 1,dl 000404 aa 7 00003 7561 16 stq pr7|3,6 field_table.location_of_name STATEMENT 1 ON LINE 137 field_table.field (field_idx).length_of_name = length (dimension_table.dimension (field_idx).name); 000405 aa 6 00122 3535 20 epp3 pr6|82,* dimension_table_ptr 000406 aa 3 00002 2361 00 ldq pr3|2 dimension_table.maximum_dimension_name_length 000407 aa 000003 0760 07 adq 3,dl 000410 aa 000002 7320 00 qrs 2 000411 aa 6 00166 7561 00 stq pr6|118 000412 aa 000002 0760 07 adq 2,dl 000413 aa 000001 0760 07 adq 1,dl 000414 aa 777776 3760 07 anq 262142,dl 000415 aa 6 00170 7561 00 stq pr6|120 000416 aa 000012 0760 07 adq 10,dl 000417 aa 000001 0760 07 adq 1,dl 000420 aa 777776 3760 07 anq 262142,dl 000421 aa 6 00171 7561 00 stq pr6|121 000422 aa 6 00102 2361 00 ldq pr6|66 field_idx 000423 aa 000001 1760 07 sbq 1,dl 000424 aa 6 00171 4021 00 mpy pr6|121 000425 aa 000000 6240 06 eax4 0,ql 000426 aa 3 00004 2361 06 ldq pr3|4,ql dimension_table.name 000427 aa 7 00004 7561 16 stq pr7|4,6 field_table.length_of_name STATEMENT 1 ON LINE 139 field_table.field_names = rtrim (field_table.field_names) || dimension_table.dimension (field_idx).name; 000430 aa 7 00002 2361 00 ldq pr7|2 field_table.number_of_fields 000431 aa 000001 7360 00 qls 1 000432 aa 6 00173 7561 00 stq pr6|123 000433 aa 7 00002 2361 00 ldq pr7|2 field_table.number_of_fields 000434 aa 000006 4020 07 mpy 6,dl 000435 aa 000005 0760 07 adq 5,dl 000436 aa 6 00173 0761 00 adq pr6|123 000437 aa 000000 6230 06 eax3 0,ql 000440 aa 7 00002 2361 00 ldq pr7|2 field_table.number_of_fields 000441 aa 000001 7360 00 qls 1 000442 aa 6 00174 7561 00 stq pr6|124 000443 aa 7 00002 2361 00 ldq pr7|2 field_table.number_of_fields 000444 aa 000006 4020 07 mpy 6,dl 000445 aa 000005 0760 07 adq 5,dl 000446 aa 6 00174 0761 00 adq pr6|124 000447 aa 7 00000 3515 06 epp1 pr7|0,ql field_table.field_names 000450 aa 7 00003 7251 00 lxl5 pr7|3 field_table.length_of_field_names 000451 aa 6 00174 7561 00 stq pr6|124 000452 aa 000 000 165 540 tctr (pr,rl) 000453 aa 1 00000 00 0015 desc9a pr1|0,x5 field_table.field_names 000454 aa 0 76605 0001 00 arg pr0|-635 = 777777777777 000455 aa 6 00056 0001 00 arg pr6|46 000456 aa 6 00056 2361 00 ldq pr6|46 000457 aa 0 00242 3761 00 anq pr0|162 = 000777777777 000460 aa 6 00175 7561 00 stq pr6|125 000461 aa 7 00003 2361 00 ldq pr7|3 field_table.length_of_field_names 000462 aa 6 00175 1761 00 sbq pr6|125 000463 aa 6 00175 7561 00 stq pr6|125 000464 aa 6 00174 2361 00 ldq pr6|124 000465 aa 000002 7360 00 qls 2 000466 aa 6 00174 7561 00 stq pr6|124 000467 aa 6 00175 2361 00 ldq pr6|125 000470 aa 3 00004 0761 14 adq pr3|4,4 dimension_table.name 000471 aa 0 00551 7001 00 tsx0 pr0|361 alloc_cs 000472 aa 6 00174 2351 00 lda pr6|124 000473 aa 6 00172 7561 00 stq pr6|122 000474 aa 6 00175 2361 00 ldq pr6|125 000475 aa 040 140 100 545 mlr (pr,rl,al),(pr,rl),fill(040) 000476 aa 7 00000 00 0006 desc9a pr7|0,ql field_table.field_names 000477 aa 2 00000 00 0006 desc9a pr2|0,ql 000500 aa 3 00005 3715 14 epp5 pr3|5,4 dimension_table.name 000501 aa 5 77777 2351 00 lda pr5|-1 dimension_table.name 000502 aa 040 146 100 540 mlr (pr,rl),(pr,rl,ql),fill(040) 000503 aa 5 00000 00 0005 desc9a pr5|0,al dimension_table.name 000504 aa 2 00000 00 0005 desc9a pr2|0,al 000505 aa 7 00000 3515 13 epp1 pr7|0,3 field_table.field_names 000506 aa 6 00172 2351 00 lda pr6|122 000507 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 000510 aa 2 00000 00 0005 desc9a pr2|0,al 000511 aa 1 00000 00 0015 desc9a pr1|0,x5 field_table.field_names STATEMENT 1 ON LINE 143 if dimension_table.dimension (field_idx).descriptor_ptr ^= addr (dimension_table.dimension (field_idx).descriptor_string) then call sub_err_ (dm_error_$programming_error, myname, ACTION_CANT_RESTART, null, 0, "^/^10x^a^/^10x^a", "A potentially multiple-word descriptor was supplied for a field." , "Currently only single word descriptors are supported in the field_table." ); 000512 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 000513 aa 6 00171 2361 00 ldq pr6|121 000514 aa 6 00102 4021 00 mpy pr6|66 field_idx 000515 aa 6 00171 1761 00 sbq pr6|121 000516 aa 6 00171 7561 00 stq pr6|121 000517 aa 6 00170 2361 00 ldq pr6|120 000520 aa 000004 0760 07 adq 4,dl 000521 aa 6 00171 0761 00 adq pr6|121 000522 aa 000000 6220 06 eax2 0,ql 000523 aa 6 00166 2361 00 ldq pr6|118 000524 aa 000005 0760 07 adq 5,dl 000525 aa 6 00171 0761 00 adq pr6|121 000526 aa 3 00000 3515 06 epp1 pr3|0,ql dimension_table.descriptor_string 000527 aa 6 00160 2515 00 spri1 pr6|112 000530 aa 6 00160 2371 00 ldaq pr6|112 000531 aa 3 00000 6771 12 eraq pr3|0,2 dimension_table.descriptor_ptr 000532 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000533 aa 000063 6000 04 tze 51,ic 000616 000534 aa 777302 3714 24 epp5 -318,ic* 000535 aa 6 00176 6515 00 spri5 pr6|126 000536 aa 6 00170 4501 00 stz pr6|120 000537 aa 777303 2370 04 ldaq -317,ic 000042 = 136057136061 060170136141 000540 aa 6 00162 7571 00 staq pr6|114 000541 aa 777303 2370 04 ldaq -317,ic 000044 = 136057136061 060170136141 000542 aa 6 00164 7571 00 staq pr6|116 000543 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000544 aa 777307 00 0100 desc9a -313,64 000052 = 101040160157 000545 aa 6 00200 00 0100 desc9a pr6|128,64 000546 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000547 aa 777346 00 0110 desc9a -282,72 000114 = 103165162162 000550 aa 6 00220 00 0110 desc9a pr6|144,72 000551 aa 6 00044 3701 20 epp4 pr6|36,* 000552 la 4 00014 3521 20 epp2 pr4|12,* dm_error_$programming_error 000553 aa 6 00244 2521 00 spri2 pr6|164 000554 aa 777232 3520 04 epp2 -358,ic 000006 = 144146165137 000555 aa 6 00246 2521 00 spri2 pr6|166 000556 aa 777240 3520 04 epp2 -352,ic 000016 = 400000000000 000557 aa 6 00250 2521 00 spri2 pr6|168 000560 aa 6 00176 3521 00 epp2 pr6|126 000561 aa 6 00252 2521 00 spri2 pr6|170 000562 aa 6 00170 3521 00 epp2 pr6|120 000563 aa 6 00254 2521 00 spri2 pr6|172 000564 aa 6 00162 3521 00 epp2 pr6|114 000565 aa 6 00256 2521 00 spri2 pr6|174 000566 aa 6 00200 3521 00 epp2 pr6|128 000567 aa 6 00260 2521 00 spri2 pr6|176 000570 aa 6 00220 3521 00 epp2 pr6|144 000571 aa 6 00262 2521 00 spri2 pr6|178 000572 aa 777242 3520 04 epp2 -350,ic 000034 = 404000000043 000573 aa 6 00264 2521 00 spri2 pr6|180 000574 aa 777233 3520 04 epp2 -357,ic 000027 = 530000000040 000575 aa 6 00266 2521 00 spri2 pr6|182 000576 aa 777230 3520 04 epp2 -360,ic 000026 = 514000000044 000577 aa 6 00270 2521 00 spri2 pr6|184 000600 aa 777235 3520 04 epp2 -355,ic 000035 = 464000000000 000601 aa 6 00272 2521 00 spri2 pr6|186 000602 aa 777223 3520 04 epp2 -365,ic 000025 = 404000000005 000603 aa 6 00274 2521 00 spri2 pr6|188 000604 aa 777220 3520 04 epp2 -368,ic 000024 = 524000000020 000605 aa 6 00276 2521 00 spri2 pr6|190 000606 aa 777215 3520 04 epp2 -371,ic 000023 = 524000000100 000607 aa 6 00300 2521 00 spri2 pr6|192 000610 aa 777212 3520 04 epp2 -374,ic 000022 = 524000000110 000611 aa 6 00302 2521 00 spri2 pr6|194 000612 aa 6 00242 6211 00 eax1 pr6|162 000613 aa 040000 4310 07 fld 16384,dl 000614 la 4 00010 3521 20 epp2 pr4|8,* sub_err_ 000615 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 152 field_table.field (field_idx).descriptor = dimension_table.dimension (field_idx).descriptor_string; 000616 aa 6 00102 2361 00 ldq pr6|66 field_idx 000617 aa 000006 4020 07 mpy 6,dl 000620 aa 6 00122 3735 20 epp7 pr6|82,* dimension_table_ptr 000621 aa 000000 6270 06 eax7 0,ql 000622 aa 7 00002 2361 00 ldq pr7|2 dimension_table.maximum_dimension_name_length 000623 aa 000003 0760 07 adq 3,dl 000624 aa 000002 7320 00 qrs 2 000625 aa 6 00171 7561 00 stq pr6|121 000626 aa 000002 0760 07 adq 2,dl 000627 aa 000001 0760 07 adq 1,dl 000630 aa 777776 3760 07 anq 262142,dl 000631 aa 000012 0760 07 adq 10,dl 000632 aa 000001 0760 07 adq 1,dl 000633 aa 777776 3760 07 anq 262142,dl 000634 aa 6 00166 7561 00 stq pr6|118 000635 aa 6 00102 4021 00 mpy pr6|66 field_idx 000636 aa 6 00166 1761 00 sbq pr6|118 000637 aa 6 00166 7561 00 stq pr6|118 000640 aa 6 00171 2361 00 ldq pr6|121 000641 aa 000005 0760 07 adq 5,dl 000642 aa 6 00166 0761 00 adq pr6|118 000643 aa 7 00000 2351 06 lda pr7|0,ql dimension_table.descriptor_string 000644 aa 6 00116 7551 77 sta pr6|78,*7 field_table.descriptor STATEMENT 1 ON LINE 154 string (field_table.field (field_idx).flags) = "0"b; 000645 aa 6 00116 3715 20 epp5 pr6|78,* field_table_ptr 000646 aa 5 77777 4501 17 stz pr5|-1,7 STATEMENT 1 ON LINE 155 end SET_NAME_AND_DESCRIPTOR; 000647 aa 6 00102 0541 00 aos pr6|66 field_idx 000650 aa 777502 7100 04 tra -190,ic 000352 STATEMENT 1 ON LINE 157 position_in_varying_fields = 0; 000651 aa 6 00103 4501 00 stz pr6|67 position_in_varying_fields STATEMENT 1 ON LINE 158 SETUP_VARYING_FIELD_MAP: do field_idx = 1 to hbound (field_table.field, 1); 000652 aa 6 00116 3735 20 epp7 pr6|78,* field_table_ptr 000653 aa 7 00002 2361 00 ldq pr7|2 field_table.number_of_fields 000654 aa 6 00130 7561 00 stq pr6|88 000655 aa 000001 2360 07 ldq 1,dl 000656 aa 6 00102 7561 00 stq pr6|66 field_idx 000657 aa 000000 0110 03 nop 0,du 000660 aa 6 00102 2361 00 ldq pr6|66 field_idx 000661 aa 6 00130 1161 00 cmpq pr6|88 000662 aa 000070 6054 04 tpnz 56,ic 000752 STATEMENT 1 ON LINE 160 if FIELD_IS_VARYING (field_table.field (field_idx).descriptor) then do; 000663 aa 000006 4020 07 mpy 6,dl 000664 aa 6 00116 3521 66 epp2 pr6|78,*ql field_table.descriptor 000665 aa 6 00202 2521 00 spri2 pr6|130 000666 aa 6 00170 3521 00 epp2 pr6|120 000667 aa 6 00204 2521 00 spri2 pr6|132 000670 aa 6 00200 3521 00 epp2 pr6|128 000671 aa 010000 4310 07 fld 4096,dl 000672 aa 2 00000 7571 00 staq pr2|0 000673 aa 000432 6700 04 tsp4 282,ic 001325 000674 aa 6 00170 2351 00 lda pr6|120 000675 aa 400000 3150 03 cana 131072,du 000676 aa 000052 6000 04 tze 42,ic 000750 STATEMENT 1 ON LINE 163 field_table.field (field_idx).flags.length_is_in_characters = FIELD_IS_CHARACTER_VARYING (field_table.field (field_idx) .descriptor); 000677 aa 6 00102 2361 00 ldq pr6|66 field_idx 000700 aa 000006 4020 07 mpy 6,dl 000701 aa 6 00170 7561 00 stq pr6|120 000702 aa 6 00102 2361 00 ldq pr6|66 field_idx 000703 aa 000006 4020 07 mpy 6,dl 000704 aa 6 00116 3521 66 epp2 pr6|78,*ql field_table.descriptor 000705 aa 6 00202 2521 00 spri2 pr6|130 000706 aa 6 00166 3521 00 epp2 pr6|118 000707 aa 6 00204 2521 00 spri2 pr6|132 000710 aa 6 00200 3521 00 epp2 pr6|128 000711 aa 010000 4310 07 fld 4096,dl 000712 aa 2 00000 7571 00 staq pr2|0 000713 aa 000435 6700 04 tsp4 285,ic 001350 000714 aa 6 00166 2351 00 lda pr6|118 000715 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 000716 aa 000001 7730 00 lrl 1 000717 aa 6 00170 7271 00 lxl7 pr6|120 000720 aa 6 00116 3735 20 epp7 pr6|78,* field_table_ptr 000721 aa 7 77777 6751 17 era pr7|-1,7 field_table.length_is_in_characters 000722 aa 200000 3750 03 ana 65536,du 000723 aa 7 77777 6551 17 ersa pr7|-1,7 field_table.length_is_in_characters STATEMENT 1 ON LINE 166 position_in_varying_fields = position_in_varying_fields + 1; 000724 aa 6 00103 0541 00 aos pr6|67 position_in_varying_fields STATEMENT 1 ON LINE 167 field_table.varying_field_map (position_in_varying_fields).field_id = field_idx; 000725 aa 6 00103 2361 00 ldq pr6|67 position_in_varying_fields 000726 aa 000001 7360 00 qls 1 000727 aa 6 00170 7561 00 stq pr6|120 000730 aa 7 00002 2361 00 ldq pr7|2 field_table.number_of_fields 000731 aa 000006 4020 07 mpy 6,dl 000732 aa 000005 0760 07 adq 5,dl 000733 aa 6 00170 0761 00 adq pr6|120 000734 aa 000000 6260 06 eax6 0,ql 000735 aa 6 00102 2361 00 ldq pr6|66 field_idx 000736 aa 7 77776 7561 16 stq pr7|-2,6 field_table.field_id STATEMENT 1 ON LINE 169 field_table.varying_field_map (field_idx).varying_field_index = position_in_varying_fields; 000737 aa 000001 7360 00 qls 1 000740 aa 6 00170 7561 00 stq pr6|120 000741 aa 7 00002 2361 00 ldq pr7|2 field_table.number_of_fields 000742 aa 000006 4020 07 mpy 6,dl 000743 aa 000006 0760 07 adq 6,dl 000744 aa 6 00170 0761 00 adq pr6|120 000745 aa 000000 6250 06 eax5 0,ql 000746 aa 6 00103 2361 00 ldq pr6|67 position_in_varying_fields 000747 aa 7 77776 7561 15 stq pr7|-2,5 field_table.varying_field_index STATEMENT 1 ON LINE 171 end; STATEMENT 1 ON LINE 172 end SETUP_VARYING_FIELD_MAP; 000750 aa 6 00102 0541 00 aos pr6|66 field_idx 000751 aa 777707 7100 04 tra -57,ic 000660 STATEMENT 1 ON LINE 174 location_of_next_field = 1; 000752 aa 000001 2360 07 ldq 1,dl 000753 aa 6 00105 7561 00 stq pr6|69 location_of_next_field STATEMENT 1 ON LINE 175 varying_field_portion_length = 0; 000754 aa 6 00106 4501 00 stz pr6|70 varying_field_portion_length STATEMENT 1 ON LINE 176 SET_FIELD_LOCATIONS: do field_idx = 1 to hbound (field_table.field, 1); 000755 aa 6 00116 3735 20 epp7 pr6|78,* field_table_ptr 000756 aa 7 00002 2361 00 ldq pr7|2 field_table.number_of_fields 000757 aa 6 00131 7561 00 stq pr6|89 000760 aa 000001 2360 07 ldq 1,dl 000761 aa 6 00102 7561 00 stq pr6|66 field_idx 000762 aa 6 00102 2361 00 ldq pr6|66 field_idx 000763 aa 6 00131 1161 00 cmpq pr6|89 000764 aa 000172 6054 04 tpnz 122,ic 001156 STATEMENT 1 ON LINE 178 call dmu_get_data_bit_length$alignment (field_table.field (field_idx) .descriptor, field_length_in_bits, alignment, code); 000765 aa 000006 4020 07 mpy 6,dl 000766 aa 6 00116 3521 66 epp2 pr6|78,*ql field_table.descriptor 000767 aa 6 00202 2521 00 spri2 pr6|130 000770 aa 6 00107 3521 00 epp2 pr6|71 field_length_in_bits 000771 aa 6 00204 2521 00 spri2 pr6|132 000772 aa 6 00100 3521 00 epp2 pr6|64 alignment 000773 aa 6 00206 2521 00 spri2 pr6|134 000774 aa 6 00104 3521 00 epp2 pr6|68 code 000775 aa 6 00210 2521 00 spri2 pr6|136 000776 aa 6 00200 6211 00 eax1 pr6|128 000777 aa 020000 4310 07 fld 8192,dl 001000 aa 6 00044 3701 20 epp4 pr6|36,* 001001 la 4 00012 3521 20 epp2 pr4|10,* dmu_get_data_bit_length$alignment 001002 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 180 if code ^= 0 then call sub_err_ (code, myname, ACTION_CANT_RESTART, null, 0, "^/Error encountered attempting to get the length in bits of field ^d, ^/with descriptor of ^3bo." , field_idx, field_table.field (field_idx).descriptor); 001003 aa 6 00104 2361 00 ldq pr6|68 code 001004 aa 000060 6000 04 tze 48,ic 001064 001005 aa 777021 2360 04 ldq -495,ic 000026 = 514000000044 001006 aa 6 00170 7561 00 stq pr6|120 001007 aa 777027 3734 24 epp7 -489,ic* 001010 aa 6 00176 6535 00 spri7 pr6|126 001011 aa 6 00166 4501 00 stz pr6|118 001012 aa 000 100 100 404 mlr (ic),(pr),fill(000) 001013 aa 777124 00 0140 desc9a -428,96 000136 = 136057105162 001014 aa 6 00242 00 0140 desc9a pr6|162,96 001015 aa 6 00102 2361 00 ldq pr6|66 field_idx 001016 aa 000006 4020 07 mpy 6,dl 001017 aa 6 00104 3521 00 epp2 pr6|68 code 001020 aa 6 00306 2521 00 spri2 pr6|198 001021 aa 776765 3520 04 epp2 -523,ic 000006 = 144146165137 001022 aa 6 00310 2521 00 spri2 pr6|200 001023 aa 776773 3520 04 epp2 -517,ic 000016 = 400000000000 001024 aa 6 00312 2521 00 spri2 pr6|202 001025 aa 6 00176 3521 00 epp2 pr6|126 001026 aa 6 00314 2521 00 spri2 pr6|204 001027 aa 6 00166 3521 00 epp2 pr6|118 001030 aa 6 00316 2521 00 spri2 pr6|206 001031 aa 6 00242 3521 00 epp2 pr6|162 001032 aa 6 00320 2521 00 spri2 pr6|208 001033 aa 6 00102 3521 00 epp2 pr6|66 field_idx 001034 aa 6 00322 2521 00 spri2 pr6|210 001035 aa 6 00116 3521 66 epp2 pr6|78,*ql field_table.descriptor 001036 aa 6 00324 2521 00 spri2 pr6|212 001037 aa 776775 3520 04 epp2 -515,ic 000034 = 404000000043 001040 aa 6 00326 2521 00 spri2 pr6|214 001041 aa 776766 3520 04 epp2 -522,ic 000027 = 530000000040 001042 aa 6 00330 2521 00 spri2 pr6|216 001043 aa 776763 3520 04 epp2 -525,ic 000026 = 514000000044 001044 aa 6 00332 2521 00 spri2 pr6|218 001045 aa 776770 3520 04 epp2 -520,ic 000035 = 464000000000 001046 aa 6 00334 2521 00 spri2 pr6|220 001047 aa 776756 3520 04 epp2 -530,ic 000025 = 404000000005 001050 aa 6 00336 2521 00 spri2 pr6|222 001051 aa 776750 3520 04 epp2 -536,ic 000021 = 524000000140 001052 aa 6 00340 2521 00 spri2 pr6|224 001053 aa 776745 3520 04 epp2 -539,ic 000020 = 404000000021 001054 aa 6 00342 2521 00 spri2 pr6|226 001055 aa 6 00170 3521 00 epp2 pr6|120 001056 aa 6 00344 2521 00 spri2 pr6|228 001057 aa 6 00304 6211 00 eax1 pr6|196 001060 aa 040000 4310 07 fld 16384,dl 001061 aa 6 00044 3701 20 epp4 pr6|36,* 001062 la 4 00010 3521 20 epp2 pr4|8,* sub_err_ 001063 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 185 bits_past_alignment_boundary = mod (location_of_next_field - 1, alignment); 001064 aa 6 00105 3361 00 lcq pr6|69 location_of_next_field 001065 aa 000044 7770 00 llr 36 001066 aa 000044 7330 00 lrs 36 001067 aa 000001 0330 07 adl 1,dl 001070 aa 000000 5330 00 negl 0 001071 aa 6 00100 3521 00 epp2 pr6|64 alignment 001072 aa 0 00706 7001 00 tsx0 pr0|454 mod_fx3 001073 aa 6 00101 7561 00 stq pr6|65 bits_past_alignment_boundary STATEMENT 1 ON LINE 187 if bits_past_alignment_boundary > 0 then location_of_next_field = location_of_next_field + alignment - bits_past_alignment_boundary; 001074 aa 000010 6044 04 tmoz 8,ic 001104 001075 aa 6 00105 2351 00 lda pr6|69 location_of_next_field 001076 aa 000044 7330 00 lrs 36 001077 aa 2 00000 0331 00 adl pr2|0 alignment 001100 aa 000000 5330 00 negl 0 001101 aa 6 00101 0331 00 adl pr6|65 bits_past_alignment_boundary 001102 aa 000000 5330 00 negl 0 001103 aa 6 00105 7561 00 stq pr6|69 location_of_next_field STATEMENT 1 ON LINE 191 field_table.field (field_idx).location = location_of_next_field; 001104 aa 6 00102 2361 00 ldq pr6|66 field_idx 001105 aa 000006 4020 07 mpy 6,dl 001106 aa 000000 6270 06 eax7 0,ql 001107 aa 6 00105 2361 00 ldq pr6|69 location_of_next_field 001110 aa 6 00116 3735 20 epp7 pr6|78,* field_table_ptr 001111 aa 7 00001 7561 17 stq pr7|1,7 field_table.location STATEMENT 1 ON LINE 193 if field_table.varying_field_map (field_idx).varying_field_index = 0 then field_table.field (field_idx).length_in_bits = field_length_in_bits; 001112 aa 6 00102 2361 00 ldq pr6|66 field_idx 001113 aa 000001 7360 00 qls 1 001114 aa 6 00170 7561 00 stq pr6|120 001115 aa 7 00002 2361 00 ldq pr7|2 field_table.number_of_fields 001116 aa 000006 4020 07 mpy 6,dl 001117 aa 000006 0760 07 adq 6,dl 001120 aa 6 00170 0761 00 adq pr6|120 001121 aa 7 77776 2361 06 ldq pr7|-2,ql field_table.varying_field_index 001122 aa 6 00170 7471 00 stx7 pr6|120 001123 aa 000004 6010 04 tnz 4,ic 001127 001124 aa 6 00107 2361 00 ldq pr6|71 field_length_in_bits 001125 aa 7 00002 7561 17 stq pr7|2,7 field_table.length_in_bits 001126 aa 000022 7100 04 tra 18,ic 001150 STATEMENT 1 ON LINE 195 else do; STATEMENT 1 ON LINE 197 if field_length_in_bits < MAXIMUM_LENGTH_HELD_IN_ONE_BYTE then field_table.field (field_idx).length_in_bits = ONE_BYTE; 001127 aa 6 00107 2361 00 ldq pr6|71 field_length_in_bits 001130 aa 000777 1160 07 cmpq 511,dl 001131 aa 000004 6050 04 tpl 4,ic 001135 001132 aa 000011 2360 07 ldq 9,dl 001133 aa 7 00002 7561 17 stq pr7|2,7 field_table.length_in_bits 001134 aa 000010 7100 04 tra 8,ic 001144 STATEMENT 1 ON LINE 199 else if field_length_in_bits < MAXIMUM_LENGTH_HELD_IN_TWO_BYTES then field_table.field (field_idx).length_in_bits = TWO_BYTES; 001135 aa 776647 1160 04 cmpq -601,ic 000004 = 001747777027 001136 aa 000004 6050 04 tpl 4,ic 001142 001137 aa 000022 2360 07 ldq 18,dl 001140 aa 7 00002 7561 17 stq pr7|2,7 field_table.length_in_bits 001141 aa 000003 7100 04 tra 3,ic 001144 STATEMENT 1 ON LINE 201 else field_table.field (field_idx).length_in_bits = FOUR_BYTES; 001142 aa 000044 2360 07 ldq 36,dl 001143 aa 7 00002 7561 17 stq pr7|2,7 field_table.length_in_bits STATEMENT 1 ON LINE 203 varying_field_portion_length = varying_field_portion_length + field_length_in_bits; 001144 aa 6 00106 2351 00 lda pr6|70 varying_field_portion_length 001145 aa 000044 7330 00 lrs 36 001146 aa 6 00107 0331 00 adl pr6|71 field_length_in_bits 001147 aa 6 00106 7561 00 stq pr6|70 varying_field_portion_length STATEMENT 1 ON LINE 205 end; STATEMENT 1 ON LINE 206 location_of_next_field = location_of_next_field + field_table.field (field_idx).length_in_bits; 001150 aa 6 00105 2351 00 lda pr6|69 location_of_next_field 001151 aa 000044 7330 00 lrs 36 001152 aa 7 00002 0331 17 adl pr7|2,7 field_table.length_in_bits 001153 aa 6 00105 7561 00 stq pr6|69 location_of_next_field STATEMENT 1 ON LINE 210 end SET_FIELD_LOCATIONS; 001154 aa 6 00102 0541 00 aos pr6|66 field_idx 001155 aa 777605 7100 04 tra -123,ic 000762 STATEMENT 1 ON LINE 211 field_table.location_of_first_varying_field = location_of_next_field; 001156 aa 6 00105 2361 00 ldq pr6|69 location_of_next_field 001157 aa 6 00116 3735 20 epp7 pr6|78,* field_table_ptr 001160 aa 7 00004 7561 00 stq pr7|4 field_table.location_of_first_varying_field STATEMENT 1 ON LINE 213 p_field_table_ptr = field_table_ptr; 001161 aa 6 00032 3715 20 epp5 pr6|26,* 001162 aa 5 00006 6535 20 spri7 pr5|6,* p_field_table_ptr STATEMENT 1 ON LINE 214 p_maximum_record_length = location_of_next_field + varying_field_portion_length; 001163 aa 000044 7770 00 llr 36 001164 aa 000044 7330 00 lrs 36 001165 aa 6 00106 0331 00 adl pr6|70 varying_field_portion_length 001166 aa 5 00010 7561 20 stq pr5|8,* p_maximum_record_length STATEMENT 1 ON LINE 217 return; 001167 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 285 end dfu_cv_dim_to_field_table; BEGIN PROCEDURE FINISH ENTRY TO FINISH STATEMENT 1 ON LINE 219 FINISH: proc (); 001170 aa 6 00100 6501 00 spri4 pr6|64 STATEMENT 1 ON LINE 222 if field_table_ptr ^= null & field_table_ptr ^= p_field_table_ptr then free field_table; 001171 aa 6 00040 3735 20 epp7 pr6|32,* 001172 aa 7 00116 2371 00 ldaq pr7|78 field_table_ptr 001173 aa 776643 6770 04 eraq -605,ic 000036 = 077777000043 000001000000 001174 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001175 aa 000025 6000 04 tze 21,ic 001222 001176 aa 7 00116 2371 00 ldaq pr7|78 field_table_ptr 001177 aa 7 00032 3715 20 epp5 pr7|26,* 001200 aa 5 00006 6771 20 eraq pr5|6,* p_field_table_ptr 001201 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001202 aa 000020 6000 04 tze 16,ic 001222 001203 aa 7 00116 3535 20 epp3 pr7|78,* field_table_ptr 001204 aa 3 00003 2361 00 ldq pr3|3 field_table.length_of_field_names 001205 aa 000003 0760 07 adq 3,dl 001206 aa 000002 7320 00 qrs 2 001207 aa 6 00106 7561 00 stq pr6|70 001210 aa 3 00002 2361 00 ldq pr3|2 field_table.number_of_fields 001211 aa 000001 7360 00 qls 1 001212 aa 6 00107 7561 00 stq pr6|71 001213 aa 3 00002 2361 00 ldq pr3|2 field_table.number_of_fields 001214 aa 000006 4020 07 mpy 6,dl 001215 aa 000005 0760 07 adq 5,dl 001216 aa 6 00107 0761 00 adq pr6|71 001217 aa 6 00106 0761 00 adq pr6|70 001220 aa 7 00116 3715 00 epp5 pr7|78 field_table_ptr 001221 aa 0 01404 7001 00 tsx0 pr0|772 free_based STATEMENT 1 ON LINE 225 end FINISH; 001222 aa 6 00100 6101 00 rtcd pr6|64 END PROCEDURE FINISH BEGIN PROCEDURE CHECK_VERSION ENTRY TO CHECK_VERSION STATEMENT 1 ON LINE 227 CHECK_VERSION: proc (cv_p_received_version, cv_p_expected_version, cv_p_structure_name); 001223 aa 6 00132 6501 00 spri4 pr6|90 001224 aa 6 00134 2521 00 spri2 pr6|92 001225 aa 2 00002 3521 01 epp2 pr2|2,au 001226 aa 6 00136 2521 00 spri2 pr6|94 001227 aa 2 00004 2361 20 ldq pr2|4,* 001230 aa 000002 6040 04 tmi 2,ic 001232 001231 aa 777777 3760 07 anq 262143,dl 001232 aa 0 00250 3761 00 anq pr0|168 = 000077777777 001233 aa 6 00346 7561 00 stq pr6|230 STATEMENT 1 ON LINE 233 if cv_p_received_version ^= cv_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." , cv_p_expected_version, cv_p_structure_name, cv_p_received_version); 001234 aa 6 00134 3735 20 epp7 pr6|92,* 001235 aa 7 00002 3715 20 epp5 pr7|2,* 001236 aa 7 00004 3535 20 epp3 pr7|4,* 001237 aa 040 100 106 500 cmpc (pr),(pr),fill(040) 001240 aa 5 00000 00 0010 desc9a pr5|0,8 cv_p_received_version 001241 aa 3 00000 00 0010 desc9a pr3|0,8 cv_p_expected_version 001242 aa 000061 6000 04 tze 49,ic 001323 001243 aa 776573 3514 24 epp1 -645,ic* 001244 aa 6 00350 2515 00 spri1 pr6|232 001245 aa 6 00347 4501 00 stz pr6|231 001246 aa 000 100 100 404 mlr (ic),(pr),fill(000) 001247 aa 776624 00 0110 desc9a -620,72 000072 = 136057105170 001250 aa 6 00352 00 0110 desc9a pr6|234,72 001251 aa 6 00044 3701 20 epp4 pr6|36,* 001252 la 4 00016 3521 20 epp2 pr4|14,* error_table_$unimplemented_version 001253 aa 6 00376 2521 00 spri2 pr6|254 001254 aa 776532 3520 04 epp2 -678,ic 000006 = 144146165137 001255 aa 6 00400 2521 00 spri2 pr6|256 001256 aa 776540 3520 04 epp2 -672,ic 000016 = 400000000000 001257 aa 6 00402 2521 00 spri2 pr6|258 001260 aa 6 00350 3521 00 epp2 pr6|232 001261 aa 6 00404 2521 00 spri2 pr6|260 001262 aa 6 00347 3521 00 epp2 pr6|231 001263 aa 6 00406 2521 00 spri2 pr6|262 001264 aa 6 00352 3521 00 epp2 pr6|234 001265 aa 6 00410 2521 00 spri2 pr6|264 001266 aa 7 00004 3521 20 epp2 pr7|4,* cv_p_expected_version 001267 aa 6 00412 2521 00 spri2 pr6|266 001270 aa 7 00006 3521 20 epp2 pr7|6,* cv_p_structure_name 001271 aa 6 00414 2521 00 spri2 pr6|268 001272 aa 7 00002 3521 20 epp2 pr7|2,* cv_p_received_version 001273 aa 6 00416 2521 00 spri2 pr6|270 001274 aa 776540 3520 04 epp2 -672,ic 000034 = 404000000043 001275 aa 6 00420 2521 00 spri2 pr6|272 001276 aa 776531 3520 04 epp2 -679,ic 000027 = 530000000040 001277 aa 6 00422 2521 00 spri2 pr6|274 001300 aa 776526 3520 04 epp2 -682,ic 000026 = 514000000044 001301 aa 6 00424 2521 00 spri2 pr6|276 001302 aa 776533 3520 04 epp2 -677,ic 000035 = 464000000000 001303 aa 6 00426 2521 00 spri2 pr6|278 001304 aa 776521 3520 04 epp2 -687,ic 000025 = 404000000005 001305 aa 6 00430 2521 00 spri2 pr6|280 001306 aa 776514 3520 04 epp2 -692,ic 000022 = 524000000110 001307 aa 6 00432 2521 00 spri2 pr6|282 001310 aa 776521 3520 04 epp2 -687,ic 000031 = 526000000010 001311 aa 6 00434 2521 00 spri2 pr6|284 001312 aa 6 00440 2521 00 spri2 pr6|288 001313 aa 6 00136 3535 20 epp3 pr6|94,* 001314 aa 3 00004 3521 20 epp2 pr3|4,* 001315 aa 6 00436 2521 00 spri2 pr6|286 001316 aa 6 00374 6211 00 eax1 pr6|252 001317 aa 044000 4310 07 fld 18432,dl 001320 la 4 00010 3521 20 epp2 pr4|8,* sub_err_ 001321 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc 001322 aa 000002 7100 04 tra 2,ic 001324 STATEMENT 1 ON LINE 239 else return; 001323 aa 6 00132 6101 00 rtcd pr6|90 STATEMENT 1 ON LINE 241 end CHECK_VERSION; 001324 aa 6 00132 6101 00 rtcd pr6|90 END PROCEDURE CHECK_VERSION BEGIN PROCEDURE FIELD_IS_VARYING ENTRY TO FIELD_IS_VARYING STATEMENT 1 ON LINE 243 FIELD_IS_VARYING: proc (fiv_p_descriptor_string) returns (bit (1) aligned); 001325 aa 6 00140 6501 00 spri4 pr6|96 001326 aa 6 00142 2521 00 spri2 pr6|98 STATEMENT 1 ON LINE 252 001327 aa 000024 2360 07 ldq 20,dl 001330 aa 6 00146 7561 00 stq pr6|102 BIT_VARYING STATEMENT 1 ON LINE 253 001331 aa 000026 2360 07 ldq 22,dl 001332 aa 6 00147 7561 00 stq pr6|103 CHAR_VARYING STATEMENT 1 ON LINE 255 if fiv_descriptor_type.type = BIT_VARYING | fiv_descriptor_type.type = CHAR_VARYING then return ("1"b); 001333 aa 2 00002 2351 20 lda pr2|2,* fiv_descriptor_type.type 001334 aa 000001 7350 00 als 1 001335 aa 000102 7730 00 lrl 66 001336 aa 6 00442 7561 00 stq pr6|290 fiv_descriptor_type.type 001337 aa 6 00146 1161 00 cmpq pr6|102 BIT_VARYING 001340 aa 000003 6000 04 tze 3,ic 001343 001341 aa 6 00147 1161 00 cmpq pr6|103 CHAR_VARYING 001342 aa 000004 6010 04 tnz 4,ic 001346 001343 aa 400000 2350 03 lda 131072,du 001344 aa 2 00004 7551 20 sta pr2|4,* 001345 aa 6 00140 6101 00 rtcd pr6|96 STATEMENT 1 ON LINE 258 else return ("0"b); 001346 aa 2 00004 4501 20 stz pr2|4,* 001347 aa 6 00140 6101 00 rtcd pr6|96 STATEMENT 1 ON LINE 260 end FIELD_IS_VARYING; END PROCEDURE FIELD_IS_VARYING BEGIN PROCEDURE FIELD_IS_CHARACTER_VARYING ENTRY TO FIELD_IS_CHARACTER_VARYING STATEMENT 1 ON LINE 262 FIELD_IS_CHARACTER_VARYING: proc (ficv_p_descriptor_string) returns (bit (1) aligned); 001350 aa 6 00150 6501 00 spri4 pr6|104 001351 aa 6 00152 2521 00 spri2 pr6|106 STATEMENT 1 ON LINE 271 001352 aa 000024 2360 07 ldq 20,dl 001353 aa 6 00156 7561 00 stq pr6|110 BIT_VARYING STATEMENT 1 ON LINE 272 001354 aa 000026 2360 07 ldq 22,dl 001355 aa 6 00157 7561 00 stq pr6|111 CHAR_VARYING STATEMENT 1 ON LINE 274 if ficv_descriptor_type.type = CHAR_VARYING then return ("1"b); 001356 aa 2 00002 2351 20 lda pr2|2,* ficv_descriptor_type.type 001357 aa 000001 7350 00 als 1 001360 aa 000102 7730 00 lrl 66 001361 aa 6 00157 1161 00 cmpq pr6|111 CHAR_VARYING 001362 aa 000004 6010 04 tnz 4,ic 001366 001363 aa 400000 2350 03 lda 131072,du 001364 aa 2 00004 7551 20 sta pr2|4,* 001365 aa 6 00150 6101 00 rtcd pr6|104 STATEMENT 1 ON LINE 276 else return ("0"b); 001366 aa 2 00004 4501 20 stz pr2|4,* 001367 aa 6 00150 6101 00 rtcd pr6|104 STATEMENT 1 ON LINE 278 end FIELD_IS_CHARACTER_VARYING; END PROCEDURE FIELD_IS_CHARACTER_VARYING END PROCEDURE dfu_cv_dim_to_field_table ----------------------------------------------------------- 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