COMPILATION LISTING OF SEGMENT vrm_put Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 08/15/86 1448.6 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 vrm_put_tuple: put_tuple: proc (I_relation_cursor_ptr, I_typed_vector_ptr, O_element_id, O_code); 8 9 /* . BEGIN_DESCRIPTION 10* 11* Put a tuple into the relation specified by I_relation_cursor_ptr 12* and update all of the indices for that relation to reflect the presence 13* of the new tuple. 14* 15* . END_DESCRIPTION */ 16 17 /* History: 18* 19* 82-09-15 R. Harvey: Originally written from mu_store. 20* 21* 22* 23*/****^ HISTORY COMMENTS: 24* 1) change(86-07-17,Dupuis), approve(86-08-07,MCR7491), 25* audit(86-08-07,Gilcrease), install(86-08-15,MR12.0-1127): 26* Changed the calling sequence of vrm_put_tuples to have the correct number 27* of parameters. Changed a loop counter that this entrypoint uses. 28* END HISTORY COMMENTS */ 29 30 31 /* vrm_put_tuple: put_tuple: proc (I_relation_cursor_ptr, I_typed_vector_ptr, O_element_id, O_code); */ 32 33 /* Parameters */ 34 35 dcl I_relation_cursor_ptr ptr; 36 dcl I_typed_vector_ptr ptr; 37 dcl O_element_id bit (36) aligned; 38 dcl O_code fixed bin (35); 39 40 41 simple_typed_vector_ptr, general_typed_vector_ptr = I_typed_vector_ptr; 42 vrm_cursor_ptr = I_relation_cursor_ptr; 43 O_element_id = "0"b; 44 O_code = 0; 45 file_locked = "0"b; 46 47 on cleanup call tidy_up; 48 49 if vrm_cursor.switches.meter_sw then do; 50 51 call cpu_time_and_paging_ (pf_1, t1, pf_dummy); 52 vrm_meter_ptr = vrm_cursor.meter_ptr; 53 vrm_meter.last_call_stats = 0; 54 end; 55 56 57 if simple_typed_vector.type = SIMPLE_TYPED_VECTOR_TYPE 58 then simple_vector = "1"b; 59 else simple_vector = "0"b; 60 61 call init_put; 62 63 64 call put_one_tuple (simple_typed_vector_ptr, O_element_id); 65 66 O_code = 0; 67 Exit: call tidy_up; 68 return; 69 70 71 72 vrm_put_tuples: put_tuples: entry (I_relation_cursor_ptr, I_typed_vector_list_ptr, I_element_id_list_ptr, O_number_put, O_code); 73 74 /* Parameters */ 75 76 /* dcl I_relation_cursor_ptr ptr parameter; */ 77 78 dcl I_typed_vector_list_ptr ptr parameter; 79 80 dcl I_element_id_list_ptr ptr parameter; 81 dcl O_number_put fixed bin (35) parameter; 82 83 /* dcl O_code fixed bin (35) parameter; */ 84 85 86 O_code, O_number_put = 0; 87 file_locked = "0"b; 88 89 on cleanup call tidy_up; 90 91 if vrm_cursor.switches.meter_sw then do; 92 93 call cpu_time_and_paging_ (pf_1, t1, pf_dummy); 94 vrm_meter_ptr = vrm_cursor.meter_ptr; 95 vrm_meter.last_call_stats = 0; 96 end; 97 98 typed_vector_list_ptr = I_typed_vector_list_ptr; 99 vrm_cursor_ptr = I_relation_cursor_ptr; 100 if typed_vector_list.version ^= TYPED_VECTOR_LIST_VERSION_1 101 then call error (error_table_$unimplemented_version); 102 element_id_list_ptr = I_element_id_list_ptr; 103 if element_id_list.version ^= ELEMENT_ID_LIST_VERSION_1 104 then call error (error_table_$unimplemented_version); 105 106 call init_put; 107 108 do vpt_index = 1 to typed_vector_list.number_of_vectors; 109 call put_one_tuple (typed_vector_list.vector_ptr (vpt_index), element_id_list.id (vpt_index)); 110 O_number_put = O_number_put + 1; 111 end; 112 113 O_code = 0; 114 go to Exit; 115 116 init_put: proc; 117 118 vrm_open_info_ptr = vrm_cursor.open_info_ptr; 119 120 vrm_cursor.switches.shared = vrm_open_info.switches.shared; 121 122 vrm_rel_desc_ptr = vrm_open_info.relation_model_ptr; 123 vrm_com_ptr = vrm_open_info.com_ptr; 124 125 if vrm_com.put_seg_ptr = null () then do; 126 call get_temp_segment_ ("vrm_put", vrm_com.put_seg_ptr, code); 127 if code ^= 0 then call error (code); 128 end; /* then do */ 129 temp_seg_ptr = vrm_com.put_seg_ptr; 130 131 /* Initialize values for structures in the temp seg */ 132 133 bit_len = 9 * vrm_rel_desc.maximum_data_length; 134 cb_number_of_change_bits = vrm_rel_desc.number_attrs; 135 ksl_number_of_values = vrm_rel_desc.number_primary_key_attrs; 136 137 key_list_ptr = temp_seg_ptr; 138 key_list.number_of_keys = vrm_rel_desc.number_sec_indexes; 139 140 i = currentsize (key_list); 141 key_source_list_ptr = addrel (key_list_ptr, i + mod (i, 2)); 142 key_source_list.number_of_values = ksl_number_of_values; 143 144 i = currentsize (key_source_list); 145 kv_ptr = addrel (key_source_list_ptr, i + mod (i, 2)); 146 147 i = currentsize (key_vals); 148 change_bits_ptr = addrel (kv_ptr, i + mod (i, 2)); 149 change_bits.number_of_change_bits = cb_number_of_change_bits; 150 151 i = currentsize (change_bits); 152 tuple_ptr = addrel (change_bits_ptr, i + mod (i, 2)); 153 154 if cb_number_of_change_bits <= 128 then 155 string (change_bits.position) = substr (all_ones, 1, cb_number_of_change_bits); 156 else string (change_bits.position) = substr (all_ones || all_ones, 1, cb_number_of_change_bits); 157 158 end init_put; 159 160 put_one_tuple: proc (I_typed_vector_ptr, O_mrds_id); 161 162 /* Parameters */ 163 164 dcl I_typed_vector_ptr ptr parameter; 165 dcl O_mrds_id bit (36) aligned parameter; 166 167 168 call vrmu_cv_vector_to_tuple (vrm_rel_desc_ptr, tuple_ptr, I_typed_vector_ptr, "0"b /* NOT mod */, tuple_length, code); 169 if code ^= 0 then call error (code); 170 171 bd_ptr = addr (tuple.data); 172 173 do i = 1 to ksl_number_of_values; /* copy out values and build key source list */ 174 vrm_attr_info_ptr = addr (vrm_rel_desc.attr (vrm_open_info.primary_key_info_ptr -> vrm_collection_info.attribute (i).attr_index)); /* to attr info */ 175 key_source_list.val_info.val_ptr (i) = addr (key_vals (i)); /* set source value ptr */ 176 key_source_list.val_info.desc_ptr (i) = addr (vrm_attr_info.descriptor); /* and ptr to descr. */ 177 if vrm_attr_info.varying then do; /* if var. attr. */ 178 offset = tuple.var_offsets (vrm_attr_info.bit_offset); /* bit offset */ 179 key_source_list.val_info.val_ptr (i) = addr (bit_data (offset)); 180 end; /* if varying */ 181 else 182 key_source_list.val_info.val_ptr (i) -> bit_str = 183 substr (data_str, vrm_attr_info.bit_offset, vrm_attr_info.bit_length); 184 end; /* building key source list */ 185 186 187 call vrmu_encode_key (key_source_list_ptr, pri_key, (0), code); 188 if code ^= 0 then call error (code); 189 190 /* Now finish up the header on the primary key */ 191 192 index_ptr = addrel (addr (pri_key), 1); /* past length word of varying string */ 193 index_value_length = 0; /* save warning flag */ 194 index.rel_id = vrm_rel_desc.rel_id; 195 index.index_id = "0"b; 196 197 /* Initialize the key list */ 198 199 if vrm_rel_desc.switches.indexed then do; 200 call vrmu_build_index_list (vrm_rel_desc_ptr, vrm_open_info_ptr, tuple_ptr, change_bits_ptr, key_list_ptr, code); 201 if code ^= 0 then call error (code); 202 end; /* indexed */ 203 204 if vrm_cursor.switches.shared & vrm_cursor.opening_mode = KSQU then call lock; /* Lock file wile we add tuple */ 205 206 call vrmu_add_tuple (vrm_rel_desc_ptr, vrm_cursor.iocb_ptr, addr (pri_key), tuple_id, tuple_ptr, tuple_length, tt_ptr, code); 207 if code ^= 0 then call error (code); 208 209 210 if vrm_rel_desc.switches.indexed then do; /* add indexes if necess. */ 211 call vrmu_add_indexes (vrm_cursor.iocb_ptr, key_list_ptr, tuple_id, code); 212 if code ^= 0 then call error (code); 213 end; /* adding indexes */ 214 if file_locked then call unlock; 215 216 O_mrds_id = tuple_id; 217 218 if vrm_cursor.switches.meter_sw then 219 vrm_meter.last_call_stats.number_tuples_stored = 220 vrm_meter.last_call_stats.number_tuples_stored + 1; 221 222 end put_one_tuple; 223 224 error: proc (ecode); 225 dcl ecode fixed bin (35); 226 O_code = ecode; 227 goto Exit; 228 end error; 229 230 231 232 /* * * * * * * * * * * * * * * * * * * tidy_up * * * * * * * * * * * */ 233 234 tidy_up: proc; 235 236 if file_locked then call iox_$control (iocb_ptr, "set_file_lock", addr (UNLOCK), code); 237 238 if vrm_cursor.switches.meter_sw then do; 239 call cpu_time_and_paging_ (pf_2, t2, pf_dummy); 240 vrm_meter.last_call_stats.last_time_of_stats = clock; 241 242 t3 = t2 - t1; 243 vrm_meter.last_call_stats.vcpu_time = divide (t3, 1000000, 63); 244 vrm_meter.last_call_stats.page_faults = pf_2 - pf_1; 245 vrm_meter.last_call_stats.number_times_used = 1; 246 vrm_meter.total_stats.last_time_of_stats = 0; 247 vrm_meter.total_stats = vrm_meter.total_stats + vrm_meter.last_call_stats; 248 249 end; 250 251 252 end tidy_up; 253 254 /* * * * * * * * * * * * * * lock * * * * * * * * * * * * * * * * */ 255 256 257 lock: proc; 258 259 call iox_$control (iocb_ptr, "set_file_lock", addr (LOCK), code); 260 if code ^= 0 then call error (code); 261 262 file_locked = "1"b; 263 264 if vrm_cursor.switches.meter_sw then 265 vrm_meter.last_call_stats.number_times_locked = 266 vrm_meter.last_call_stats.number_times_locked + 1; 267 268 269 end lock; 270 271 272 273 274 275 276 277 /* * * * * * * * * * * * * * unlock * * * * * * * * * * * * * * * * */ 278 279 unlock: proc; 280 281 if file_locked then do; 282 call iox_$control (iocb_ptr, "set_file_lock", addr (UNLOCK), code); 283 if code ^= 0 then call error (code); 284 end; 285 286 file_locked = "0"b; 287 288 end unlock; 289 290 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.incl.pl1 */ 1 7 1 8 /* Written by Lindsey Spratt, 04/02/82. 1 9*Modified: 1 10*09/01/82 by Lindsey Spratt: Changed value_ptr in simple_typed_vector to be 1 11* unaligned. Changed the type number of the simple_typed_vector to 1 12* "3" from "1". The OLD_SIMPLE_TYPED_VECTOR_TYPE is now an invalid 1 13* type. 1 14**/ 1 15 1 16 /* format: style2,ind3 */ 1 17 dcl 1 simple_typed_vector based (simple_typed_vector_ptr), 1 18 2 type fixed bin (17) unal, 1 19 2 number_of_dimensions 1 20 fixed bin (17) unal, 1 21 2 dimension (stv_number_of_dimensions refer (simple_typed_vector.number_of_dimensions)), 1 22 3 value_ptr ptr unaligned; 1 23 1 24 dcl 1 general_typed_vector based (general_typed_vector_ptr), 1 25 2 type fixed bin (17) unal, 1 26 2 number_of_dimensions 1 27 fixed bin (17) unal, 1 28 2 dimension (gtv_number_of_dimensions refer (general_typed_vector.number_of_dimensions)), 1 29 3 identifier fixed bin (17) unal, 1 30 3 pad bit (18) unal, 1 31 3 value_ptr ptr unal; 1 32 1 33 dcl simple_typed_vector_ptr 1 34 ptr; 1 35 dcl stv_number_of_dimensions 1 36 fixed bin (17); 1 37 1 38 dcl general_typed_vector_ptr 1 39 ptr; 1 40 dcl gtv_number_of_dimensions 1 41 fixed bin (17); 1 42 1 43 dcl ( 1 44 OLD_SIMPLE_TYPED_VECTOR_TYPE 1 45 init (1), /* value_ptr was aligned. */ 1 46 GENERAL_TYPED_VECTOR_TYPE 1 47 init (2), 1 48 SIMPLE_TYPED_VECTOR_TYPE 1 49 init (3) 1 50 ) fixed bin (17) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE - vu_typed_vector.incl.pl1 */ 291 292 2 1 /* BEGIN INCLUDE dm_typed_vector_list.incl.pl1 * * * * * * * * * * * * * * * * */ 2 2 2 3 /* Written by R. Harvey, 09/24/82 2 4*Modified: 2 5*09/27/82 by Matthew Pierret: Changed "max" to "maximum", tvl_number_of_vectors 2 6* to tvl_maximum_number_of_vectors. 2 7**/ 2 8 2 9 /* format: style2,ind3 */ 2 10 dcl 1 typed_vector_list aligned based (typed_vector_list_ptr), 2 11 2 version fixed bin (17), 2 12 2 maximum_number_of_vectors 2 13 fixed bin (35), /* vectors available */ 2 14 2 number_of_vectors fixed bin (35), /* number of vector_ptrs used */ 2 15 2 pad fixed bin (35), /* (even word boundary) */ 2 16 2 vector_ptr (tvl_maximum_number_of_vectors refer (typed_vector_list.maximum_number_of_vectors)) ptr; 2 17 2 18 dcl typed_vector_list_ptr ptr; 2 19 dcl TYPED_VECTOR_LIST_VERSION_1 2 20 fixed bin (17) int static options (constant) init (1); 2 21 dcl tvl_maximum_number_of_vectors fixed bin (35); 2 22 2 23 /* END INCLUDE dm_typed_vector_list.incl.pl1 * * * * * * * * * * * * * * * * */ 293 294 3 1 /* BEGIN INCLUDE FILE - dm_element_id_list.incl.pl1 */ 3 2 3 3 /* DESCRIPTION: 3 4* The element_id_list structure contains an array of element 3 5* identifiers. These identifiers are used as tuple, record or 3 6* element identifiers. This structure is used across the relation_manager_, 3 7* record_manager_ and index_manager_ interfaces. At some time the 3 8* version should be changed to be char(8)aligned, when such a conversion 3 9* can be coordinated with the other structures used at these interfaces. 3 10**/ 3 11 3 12 /* HISTORY: 3 13*Written by Matthew Pierret, 06/06/82. 3 14*Modified: 3 15*12/16/82 by Roger Lackey: Changed number_of_elements to fixed bin (35). 3 16* Did not change version. 3 17*02/11/85 by Matthew Pierret: Added DESCRIPTION, Written by. 3 18**/ 3 19 3 20 /* format: style2,ind3 */ 3 21 dcl 1 element_id_list aligned based (element_id_list_ptr), 3 22 2 version fixed bin (35), 3 23 2 number_of_elements fixed bin (35), 3 24 2 id (eil_number_of_elements refer (element_id_list.number_of_elements)) bit (36) aligned; 3 25 3 26 dcl element_id_list_ptr ptr; 3 27 dcl eil_number_of_elements fixed bin (35); 3 28 dcl ELEMENT_ID_LIST_VERSION_1 3 29 init (1) fixed bin (35); 3 30 3 31 3 32 /* END INCLUDE FILE - dm_element_id_list.incl.pl1 */ 295 296 4 1 /* BEGIN INCLUDE vrm_open_info.incl.pl1 */ 4 2 4 3 /* R. Harvey 82-11-02 4 4* 82-09-82 Roger Lackey: added iocb_list_ptr */ 4 5 4 6 dcl 1 vrm_open_info aligned based (vrm_open_info_ptr), /* Vfile relation description */ 4 7 2 version char (8), /* Version number of this structure */ 4 8 2 opening_id bit (36) aligned, /* Opening id associated with this desc */ 4 9 2 file_uid bit (36) aligned, /* Unique id of msf dir */ 4 10 2 number_of_openings fixed bin, /* Number of separate calls to vrm$open */ 4 11 2 switches, 4 12 3 shared bit (1) unal, /* Open relation in shared mode */ 4 13 3 pad bit (35) unal init ("0"b), /* Unused must be zero */ 4 14 2 database_dir_path char (168) varying, /* Absolute path of database */ 4 15 2 relation_name char (30) varying, /* Name of relation */ 4 16 2 relation_model_ptr pointer, /* Pointer to the relation_model in the relation itself or a temp seg */ 4 17 2 com_ptr pointer, /* Temp seg for cursors and scratch space */ 4 18 2 iocb_list_ptr pointer, /* Pointer to first vrm_iocb_list_block */ 4 19 2 primary_key_info_ptr pointer, /* Special case collection info ptr */ 4 20 2 number_of_index_collections fixed bin, /* Count of index collections (include primary key) */ 4 21 2 index_collection (voi_no_of_index_collections 4 22 refer (vrm_open_info.number_of_index_collections)), 4 23 3 id bit (36), 4 24 3 info_ptr ptr unal; /* Points to more detailed info */ 4 25 4 26 4 27 dcl VRM_OPEN_INFO_VERSION_1 char (8) int static options (constant) init (" 1"); 4 28 dcl vrm_open_info_ptr ptr; 4 29 dcl voi_no_of_index_collections fixed bin; 4 30 4 31 /* END INCLUDE vrm_open_info.incl.pl1 */ 297 298 5 1 /* BEGIN INCLUDE vrm_collection_info.incl.pl1 */ 5 2 5 3 /* R. Harvey 82-11-02 */ 5 4 5 5 5 6 dcl 1 vrm_collection_info aligned based (vrm_collection_info_ptr), 5 7 /* Index collection description */ 5 8 2 record_id unal, 5 9 3 header bit (4) unal, /* collection type */ 5 10 3 id bit (8) unal, /* index id */ 5 11 2 unique bit (1) unal, 5 12 2 primary_key bit (1) unal, /* This is the MRDS primary key collection */ 5 13 2 pad bit (26) unal, 5 14 2 number_of_attributes 5 15 fixed bin, 5 16 2 attribute (vci_no_of_attributes refer (vrm_collection_info.number_of_attributes)), 5 17 3 attr_index fixed bin, /* Attribute number in relation description */ 5 18 3 key_offset fixed bin, /* Offset within key in bits */ 5 19 3 key_bit_len fixed bin ; /* Length of key in bits */ 5 20 5 21 dcl vrm_collection_info_ptr 5 22 ptr; 5 23 dcl vci_no_of_attributes fixed bin; 5 24 dcl vrm_collection_header_type 5 25 bit (4) unal int static options (constant) init ("1100"b); 5 26 dcl VRM_COLLECTION_KEY_HEAD char (16) int static options (constant) init ("@collection_info"); 5 27 5 28 /* END INCLUDE vrm_collection_info.incl.pl1 */ 299 300 6 1 /* BEGIN INCLUDE vrm_rel_desc.incl.pl1 */ 6 2 6 3 /* 83-05-26 Roger Lackey : Added vrm_attr_info.key_head bit for relation_cursors */ 6 4 6 5 dcl 1 vrm_rel_desc based (vrm_rel_desc_ptr), 6 6 2 record_id bit (12) unal, /* Distinguish us from tuples and collection records */ 6 7 2 version char (8), /* Version of this structure */ 6 8 2 file_id bit (7), /* Value of file id from model */ 6 9 2 rel_id bit (12), /* Relation id */ 6 10 2 switches, 6 11 3 MRDS_compatible bit (1) unal, /* For pre-relation_manager_ MRDS */ 6 12 3 stationary_records 6 13 bit (1) unal, /* On = stationary */ 6 14 3 indexed bit (1) unal, /* This relation has attributes with secondary indices */ 6 15 3 pad bit (33) unal, 6 16 2 var_offset fixed bin (35), /* Position of first varying attr */ 6 17 2 maximum_data_length 6 18 fixed bin (35), /* Maximum size of tuple in characters */ 6 19 2 number_primary_key_attrs 6 20 fixed bin, /* Number of attributes which make up the primary key */ 6 21 2 number_sec_indexes fixed bin, /* Number of attributes which have a secondary index */ 6 22 2 last_var_attr_no fixed bin, /* Attr index of last varying attribute */ 6 23 2 number_var_attrs fixed bin, /* Number of varying attributes */ 6 24 2 number_attrs fixed bin, /* Number of attribute in rel */ 6 25 2 attr (vrd_no_of_attrs /* Description of each attribute */ 6 26 refer (vrm_rel_desc.number_attrs)) aligned like vrm_attr_info; 6 27 6 28 dcl 1 vrm_attr_info based (vrm_attr_info_ptr), 6 29 /* Attribute specific info */ 6 30 2 name char (32), /* Name of the attribute */ 6 31 2 descriptor bit (36) aligned, /* domain descriptor */ 6 32 2 varying bit (1) unal, /* ON = This is a varying string */ 6 33 2 key_head bit (1) unal, /* ON = This attr can be a keyhead */ 6 34 2 primary_key_attr bit (1) unal, /* ON = This is a primary key attribute */ 6 35 2 pad bit (15) unal, /* unused */ 6 36 2 index_collextion_ix fixed bin (17) unal, /* Index into vrm_open_info.index_collection array if key_head is on */ 6 37 2 bit_length fixed bin (35), /* Maximum bit length of tuple */ 6 38 2 bit_offset fixed bin (35); /* Offset in tuple if fixed, index to offset in tuple if varying */ 6 39 6 40 6 41 dcl vrm_rel_desc_ptr pointer; 6 42 dcl vrd_no_of_attrs fixed bin; 6 43 dcl VRM_REL_DESC_RECORD_ID bit (12) unal int static options (constant) init ("100000000000"b); 6 44 dcl VRM_REL_DESC_VERSION_1 char (8) int static options (constant) init (" 1"); 6 45 dcl vrm_attr_info_ptr pointer; 6 46 dcl VRM_REL_DESC_KEY char (256) varying int static options (constant) init ("@relation_description"); 6 47 6 48 /* END INCLUDE vrm_rel_desc.incl.pl1 */ 301 302 7 1 /* BEGIN INCLUDE vrm_com.incl.pl1 */ 7 2 7 3 /* Written 82-08-23 by R. Harvey */ 7 4 7 5 dcl vrm_com_ptr ptr; 7 6 dcl 1 vrm_com aligned based (vrm_com_ptr), 7 7 2 get_seg_ptr ptr, /* temp seg for retrieve routines */ 7 8 2 put_seg_ptr ptr, /* temp seg for store routines */ 7 9 2 mod_seg_ptr ptr, /* temp seg for modify routines */ 7 10 2 work_area_ptr ptr, /* freeing area for oid_table sections and rel_descriptors */ 7 11 2 highest_oid bit (36) aligned, /* highest valid oid */ 7 12 2 next_free_oid bit (36) aligned, /* offset of first in free chain */ 7 13 2 first_assigned_oid bit (36) aligned, /* offset of first in assigned chain */ 7 14 2 oid_area area (sys_info$max_seg_size - fixed (rel (addr (vrm_com.work_area_ptr)))); 7 15 7 16 /* END INCLUDE vrm_com.incl.pl1 */ 303 304 8 1 /* BEGIN INCLUDE vrm_cursor.incl.pl1 */ 8 2 8 3 /* 83-05-26 Roger Lackey : Modifyed for relation cursors */ 8 4 8 5 dcl vrm_cursor_ptr pointer; /* Pointer to this structure */ 8 6 8 7 dcl 1 vrm_cursor aligned based (vrm_cursor_ptr), /* vfile relation manager cursor */ 8 8 2 opening_id bit (36) aligned, /* ID of opening associated with this cursor */ 8 9 2 debug_sw unal, /* Undefined MBZ */ 8 10 3 trace_open bit (1) unal, /* Show opening of iocb cursor creation time */ 8 11 3 pad bit (35) unal, 8 12 2 switches, 8 13 3 shared bit (1) unal, /* Other processes can use this relation */ 8 14 3 meter_sw bit (1) unal, /* On = Keep meters for this cursor */ 8 15 3 pad bit (7) unal, /* Unsed */ 8 16 2 opening_mode fixed bin, /* Opening mode for this cursor (8 = KSQR 10 = KSQU) */ 8 17 2 open_info_ptr pointer, /* Pointer to parent opening info structure */ 8 18 2 vrm_relation_desc_ptr pointer, /* Pointer to parent rel desc */ 8 19 2 iocb_ptr pointer, /* Pointer to attach iocb */ 8 20 2 secondary_iocb_ptr ptr, /* Second iocb_ptr used by vrmu_search */ 8 21 2 search_list_ptr ptr, /* Pointer to search_list */ 8 22 2 search_keys_ptr ptr, /* Pointer to search_keys array */ 8 23 2 meter_ptr pointer, /* Pointer metering str if metering is on or null */ 8 24 2 vrm_iocb_list_block_ptr pointer, /* Pointer to vrm_iocb_list_block that contains this cursors iocb */ 8 25 2 vrm_iocb_list_block_iocbs_ix fixed bin; /* Index into list_block.iocbs for location of iocb */ 8 26 8 27 8 28 /* END INCLUDE vrm_cursor.incl.pl1 */ 305 306 9 1 /* BEGIN vrm_tuple.incl.pl1 -- jaw, 7/25/78 */ 9 2 9 3 /* 82-08-27 R. Harvey: taken from mdbm_tuple.incl.pl1 for vfile_relmgr_. 9 4* Modified dimension references to point to entries in vrm_rel_desc. */ 9 5 9 6 9 7 dcl 1 tuple aligned based (tuple_ptr), /* tuple format, all file types */ 9 8 2 rel_id bit (12) unal, /* relation id */ 9 9 2 attr_exists (vrm_rel_desc.number_attrs) bit (1) unal, /* existance flags */ 9 10 2 var_offsets (vrm_rel_desc.number_var_attrs) fixed bin (35) unal, /* offsets for variable attr.; stored as len|value */ 9 11 2 force_even_word (tuple_pad_length) fixed bin (71) aligned, /* pad to even word boundary */ 9 12 2 data char (vrm_rel_desc.maximum_data_length) unal; /* space for data */ 9 13 9 14 9 15 dcl tuple_ptr ptr; 9 16 dcl tuple_length fixed bin (21); /* byte count */ 9 17 9 18 declare tuple_pad_length fixed bin internal static init (0) ; /* minimum array size needed for even word padding */ 9 19 9 20 9 21 9 22 /* END vrm_tuple.incl.pl1 */ 9 23 307 308 10 1 /* BEGIN vrm_index.incl.pl1 -- jaw, 5/12/78 */ 10 2 10 3 /* Renamed 9/29/82 by R. Harvey */ 10 4 10 5 /* This structure defines the header that gets put onto the beginning of 10 6* each key stored into a database */ 10 7 10 8 10 9 dcl 1 index aligned based (index_ptr), /* layout of mdbm_index for all file types */ 10 10 2 rel_id bit (12) unal, /* relation id */ 10 11 2 index_id bit (8) unal, /* id of index within rel */ 10 12 2 mbz bit (7) unal, /* pad to char. */ 10 13 2 index_value char (index_value_length) unal; /* index value; max 253 chars */ 10 14 10 15 dcl index_ptr ptr; 10 16 dcl index_value_length fixed bin (35); 10 17 10 18 /* END vrm_index.incl.pl1 */ 10 19 309 310 11 1 /* BEGIN vrm_key_source_list.incl.pl1 -- jaw, 6/1/78 */ 11 2 11 3 /* HISTORY: 11 4* 11 5* 81-07-18 Jim Gray : added pointer to the rm_attr_info for display purposes 11 6* 11 7* 81-07-19 Jim Gray : added condition that will used against the 11 8* key value for display purposes 11 9* 82-09-29 R. Harvey: Stolen and modified for vfile_relmgr_ 11 10* 11 11**/ 11 12 11 13 11 14 dcl 1 key_source_list aligned based (key_source_list_ptr), /* source info for key encoding */ 11 15 2 number_of_values fixed bin, /* no. values in key */ 11 16 2 val_info (ksl_number_of_values refer (key_source_list.number_of_values)), 11 17 /* 3 condition_code fixed bin, /* encoding for condition used on this key attr */ 11 18 3 val_ptr ptr, /* to value */ 11 19 3 desc_ptr ptr; /* to descriptor */ 11 20 11 21 dcl key_source_list_ptr ptr; 11 22 dcl ksl_number_of_values fixed bin; 11 23 11 24 /* END vrm_key_source_list.incl.pl1 */ 11 25 311 312 12 1 /* BEGIN vrm_key_list.incl.pl1 -- jaw, 1/17/79 */ 12 2 12 3 dcl 1 key_list aligned based (key_list_ptr), /* list of keys for add_key or delete_key */ 12 4 2 number_of_keys fixed bin, /* no. keys in list */ 12 5 2 key_info (kl_number_of_keys refer (key_list.number_of_keys)), 12 6 3 item_index fixed bin, /* attr. index or plink index */ 12 7 3 cand_key bit (1) unal, /* on if key is for candidate key */ 12 8 3 unique_val bit (1) unal, /* on if value must be unique */ 12 9 3 pad bit (34) unal, 12 10 3 vf_info, /* info for vfile control orders */ 12 11 4 input_key bit (1) unal, /* if key val supplied */ 12 12 4 input_desc bit (1) unal, /* if desc. supplied */ 12 13 4 reserved bit (34) unal, 12 14 4 vf_desc, /* vfile_ descriptor */ 12 15 5 comp_no fixed bin (17) unal, 12 16 5 offset bit (18) unal, 12 17 4 key char (256) var; 12 18 12 19 dcl key_list_ptr ptr; 12 20 dcl kl_number_of_keys fixed bin; 12 21 12 22 /* END vrm_key_list.incl.pl1 */ 313 314 13 1 /* BEGIN vrm_change_bits.incl.pl1 -- R. Harvey */ 13 2 13 3 dcl 1 change_bits based (change_bits_ptr), 13 4 2 number_of_change_bits fixed bin (17), 13 5 2 position (cb_number_of_change_bits refer (change_bits.number_of_change_bits)) bit (1) unal; 13 6 13 7 dcl cb_number_of_change_bits fixed bin; 13 8 dcl change_bits_ptr ptr; 13 9 13 10 /* END vrm_change_bits.incl.pl1 */ 315 316 14 1 /* BEGIN INCLUDE vrm_meter.incl.pl1 */ 14 2 14 3 dcl vrm_meter_ptr pointer; 14 4 14 5 dcl 1 vrm_meter aligned based (vrm_meter_ptr), 14 6 2 cursor_name char (32), /* Name of cursor */ 14 7 2 meter_start_time fixed bin (71), 14 8 2 switches, 14 9 3 metering bit (1) unal, /* On = meter being done */ 14 10 3 mbz bit (35) unal, 14 11 2 cursor_ptr ptr, /* Pointer to vrm_cursor structure */ 14 12 2 last_call_stats like statistics, 14 13 2 total_stats like statistics; 14 14 14 15 dcl 1 statistics based, /* Used in like above */ 14 16 2 last_time_of_stats fixed bin (71), /* Last clock value for stats taken */ 14 17 2 vcpu_time float bin (63), /* The vcpu for this cursor */ 14 18 2 page_faults fixed bin (70), /* Page faults for this cursor */ 14 19 2 number_times_locked fixed bin (70), /* Number of time a lock was set */ 14 20 2 number_times_used fixed bin (70), /* Number of time cursor was used */ 14 21 2 num_times_search_called fixed bin (70), /* Number of time vrm_search was called */ 14 22 2 records_searched fixed bin (70), /* The records searched */ 14 23 2 seek_heads fixed bin (70), /* The seek heads done for key searches */ 14 24 2 special_seek_heads fixed bin (70), /* The seek heads done for key searches */ 14 25 2 keys_read fixed bin (70), /* The keys read by key search */ 14 26 2 keys_compared fixed bin (70), /* The keys compared in key search */ 14 27 2 key_hits fixed bin (70), /* The key hits for key search */ 14 28 2 non_key_compares fixed bin (70), /* The non_key compares done for this cursor */ 14 29 2 non_key_hits fixed bin (70), /* The non_key hits for this cursor */ 14 30 2 upper_limit_found_count fixed bin (70), /* The number of times upper limit was exceeded */ 14 31 2 number_items_returned fixed bin (70), /* Number of tuples or tid returned */ 14 32 2 number_tuples_deleted fixed bin (70), /* Number of tuples deleted */ 14 33 2 number_tuples_modified fixed bin (70), /* Number of tuples modified */ 14 34 2 number_tuples_stored fixed bin (70); /* Number of tuples stored */ 14 35 14 36 /* END INCLUDE vrm_meter.incl.pl1 */ 317 318 319 dcl 1 rs, /* Record_status_info */ 320 2 version fixed bin init (2), 321 2 flags aligned, 322 3 lock_sw bit (1) unal init ("0"b), 323 3 unlock_sw bit (1) unal init ("0"b), 324 3 create_sw bit (1) unal init ("0"b), 325 3 locate_sw bit (1) unal init ("1"b), /* Only switch on */ 326 3 inc_ref_count bit (1) unal init ("0"b), 327 3 dec_ref_count bit (1) unal init ("0"b), 328 3 locate_pos_sw bit (1) unal init ("0"b), 329 3 mbz1 bit (29) unal init ("0"b), 330 2 record_length fixed bin (21) init (0), 331 2 max_rec_len fixed bin (21) init (0), 332 2 record_ptr pointer init (null), 333 2 descriptor fixed bin (35), 334 2 ref_count fixed bin (34), 335 2 time_last_modified fixed bin (71), 336 2 modifier fixed bin (35), 337 2 block_ptr pointer ptr unal, 338 2 last_image_modifier fixed bin (35), 339 2 mbz2 fixed bin init (0); 340 341 342 dcl addr builtin; 343 dcl addrel builtin; 344 dcl all_ones bit (128) int static options (constant) init ((128)"1"b); 345 dcl bd_ptr ptr; 346 dcl bit_data (bit_len) bit (1) unal based (bd_ptr); 347 dcl bit_len fixed bin (35); 348 dcl bit_str bit (vrm_attr_info.bit_length) based; 349 dcl cleanup condition; 350 dcl clock builtin; 351 dcl code fixed bin (35); 352 dcl cpu_time_and_paging_ entry (fixed bin, fixed bin (71), fixed bin); 353 dcl currentsize builtin; 354 dcl data_str bit (bit_len) based (bd_ptr); 355 dcl divide builtin; 356 dcl file_locked bit (1); 357 dcl fixed builtin; 358 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 359 dcl i fixed bin (17); 360 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 361 dcl key_vals (ksl_number_of_values) char (vrm_data_$max_kattr_length) based (kv_ptr); /* to hold values so they are aligned */ 362 dcl KSQU fixed bin int static options (constant) init (10); 363 dcl kv_ptr ptr; /* ptr to key values */ 364 dcl LOCK bit (2) aligned int static options (constant) init ("10"b); 365 dcl mod builtin; 366 dcl null builtin; 367 dcl offset fixed bin (35); /* temp attr offset */ 368 dcl pf_1 fixed bin; 369 dcl pf_2 fixed bin; 370 dcl pf_dummy fixed bin; 371 dcl pri_key char (256) var; /* holds encoded primary key */ 372 dcl rel builtin; 373 dcl simple_vector bit (1) aligned; 374 dcl string builtin; 375 dcl substr builtin; 376 dcl t1 fixed bin (71); 377 dcl t2 fixed bin (71); 378 dcl t3 float bin (63); 379 dcl temp_seg_ptr ptr; 380 dcl tt_ptr ptr; /* pointer to tuple in the vfile */ 381 dcl tuple_id bit (36) aligned; 382 dcl UNLOCK bit (2) aligned int static options (constant) init ("00"b); 383 dcl vpt_index fixed bin (24); 384 dcl vrmu_add_indexes entry (ptr, ptr, bit (36) aligned, fixed bin (35)); 385 dcl vrmu_add_tuple entry (ptr, ptr, ptr, bit (36) aligned, ptr, fixed bin (21), ptr, fixed bin (35)); 386 dcl vrmu_build_index_list entry (ptr, ptr, ptr, ptr, ptr, fixed bin (35)); 387 dcl vrmu_cv_vector_to_tuple entry (ptr, ptr, ptr, bit (1) aligned, fixed bin (21), fixed bin (35)); 388 dcl vrmu_encode_key entry (ptr, char (256) varying, fixed bin (35), fixed bin (35)); 389 390 dcl error_table_$unimplemented_version ext fixed bin (35); 391 392 dcl (vrm_data_$max_kattr_length, 393 sys_info$max_seg_size) ext fixed bin (35); 394 395 396 397 end vrm_put_tuple; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/15/86 1437.0 vrm_put.pl1 >special_ldd>install>MR12.0-1127>vrm_put.pl1 291 1 10/14/83 1609.1 vu_typed_vector.incl.pl1 >ldd>include>vu_typed_vector.incl.pl1 293 2 10/14/83 1609.1 dm_typed_vector_list.incl.pl1 >ldd>include>dm_typed_vector_list.incl.pl1 295 3 03/06/85 1031.5 dm_element_id_list.incl.pl1 >ldd>include>dm_element_id_list.incl.pl1 297 4 10/14/83 1609.1 vrm_open_info.incl.pl1 >ldd>include>vrm_open_info.incl.pl1 299 5 10/14/83 1609.1 vrm_collection_info.incl.pl1 >ldd>include>vrm_collection_info.incl.pl1 301 6 10/14/83 1609.1 vrm_rel_desc.incl.pl1 >ldd>include>vrm_rel_desc.incl.pl1 303 7 10/14/83 1609.1 vrm_com.incl.pl1 >ldd>include>vrm_com.incl.pl1 305 8 10/14/83 1609.1 vrm_cursor.incl.pl1 >ldd>include>vrm_cursor.incl.pl1 307 9 10/14/83 1609.1 vrm_tuple.incl.pl1 >ldd>include>vrm_tuple.incl.pl1 309 10 10/14/83 1609.1 vrm_index.incl.pl1 >ldd>include>vrm_index.incl.pl1 311 11 10/14/83 1609.1 vrm_key_source_list.incl.pl1 >ldd>include>vrm_key_source_list.incl.pl1 313 12 10/14/83 1609.1 vrm_key_list.incl.pl1 >ldd>include>vrm_key_list.incl.pl1 315 13 10/14/83 1609.1 vrm_change_bits.incl.pl1 >ldd>include>vrm_change_bits.incl.pl1 317 14 10/14/83 1609.1 vrm_meter.incl.pl1 >ldd>include>vrm_meter.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. ELEMENT_ID_LIST_VERSION_1 000110 automatic fixed bin(35,0) initial dcl 3-28 set ref 103 3-28* I_element_id_list_ptr parameter pointer dcl 80 ref 72 72 102 I_relation_cursor_ptr parameter pointer dcl 35 ref 7 7 42 72 72 99 I_typed_vector_list_ptr parameter pointer dcl 78 ref 72 72 98 I_typed_vector_ptr parameter pointer dcl 36 in procedure "put_tuple" ref 7 7 41 I_typed_vector_ptr parameter pointer dcl 164 in procedure "put_one_tuple" set ref 160 168* KSQU constant fixed bin(17,0) initial dcl 362 ref 204 LOCK 000016 constant bit(2) initial dcl 364 set ref 259 259 O_code parameter fixed bin(35,0) dcl 38 set ref 7 7 44* 66* 72 72 86* 113* 226* O_element_id parameter bit(36) dcl 37 set ref 7 7 43* 64* O_mrds_id parameter bit(36) dcl 165 set ref 160 216* O_number_put parameter fixed bin(35,0) dcl 81 set ref 72 72 86* 110* 110 SIMPLE_TYPED_VECTOR_TYPE constant fixed bin(17,0) initial dcl 1-43 ref 57 TYPED_VECTOR_LIST_VERSION_1 constant fixed bin(17,0) initial dcl 2-19 ref 100 UNLOCK 000003 constant bit(2) initial dcl 382 set ref 236 236 282 282 addr builtin function dcl 342 ref 171 174 175 176 179 192 206 206 236 236 259 259 282 282 addrel builtin function dcl 343 ref 141 145 148 152 192 all_ones 001602 constant bit(128) initial unaligned dcl 344 ref 154 156 156 attr 14 based structure array level 2 dcl 6-5 set ref 174 attr_index 3 based fixed bin(17,0) array level 3 dcl 5-6 ref 174 attribute 3 based structure array level 2 dcl 5-6 bd_ptr 000166 automatic pointer dcl 345 set ref 171* 179 181 bit_data based bit(1) array unaligned dcl 346 set ref 179 bit_len 000170 automatic fixed bin(35,0) dcl 347 set ref 133* 181 bit_length 12 based fixed bin(35,0) level 2 dcl 6-28 ref 181 181 bit_offset 13 based fixed bin(35,0) level 2 dcl 6-28 ref 178 181 bit_str based bit unaligned dcl 348 set ref 181* cb_number_of_change_bits 000142 automatic fixed bin(17,0) dcl 13-7 set ref 134* 149 154 154 156 change_bits based structure level 1 unaligned dcl 13-3 set ref 151 change_bits_ptr 000144 automatic pointer dcl 13-8 set ref 148* 149 151 152 154 156 200* cleanup 000172 stack reference condition dcl 349 ref 47 89 clock builtin function dcl 350 ref 240 code 000200 automatic fixed bin(35,0) dcl 351 set ref 126* 127 127* 168* 169 169* 187* 188 188* 200* 201 201* 206* 207 207* 211* 212 212* 236* 259* 260 260* 282* 283 283* com_ptr 74 based pointer level 2 dcl 4-6 ref 123 cpu_time_and_paging_ 000010 constant entry external dcl 352 ref 51 93 239 create_sw 1(02) 000150 automatic bit(1) initial level 3 packed unaligned dcl 319 set ref 319* currentsize builtin function dcl 353 ref 140 144 147 151 data based char level 2 packed unaligned dcl 9-7 set ref 171 data_str based bit unaligned dcl 354 ref 181 dec_ref_count 1(05) 000150 automatic bit(1) initial level 3 packed unaligned dcl 319 set ref 319* desc_ptr 4 based pointer array level 3 dcl 11-14 set ref 176* descriptor 10 based bit(36) level 2 dcl 6-28 set ref 176 divide builtin function dcl 355 ref 243 ecode parameter fixed bin(35,0) dcl 225 ref 224 226 element_id_list based structure level 1 dcl 3-21 element_id_list_ptr 000106 automatic pointer dcl 3-26 set ref 102* 103 109 error_table_$unimplemented_version 000030 external static fixed bin(35,0) dcl 390 set ref 100* 103* file_locked 000201 automatic bit(1) unaligned dcl 356 set ref 45* 87* 214 236 262* 281 286* flags 1 000150 automatic structure level 2 dcl 319 general_typed_vector_ptr 000102 automatic pointer dcl 1-38 set ref 41* get_temp_segment_ 000012 constant entry external dcl 358 ref 126 i 000202 automatic fixed bin(17,0) dcl 359 set ref 140* 141 141 144* 145 145 147* 148 148 151* 152 152 173* 174 175 175 176 179 181* id 2 based bit(36) array level 2 dcl 3-21 set ref 109* inc_ref_count 1(04) 000150 automatic bit(1) initial level 3 packed unaligned dcl 319 set ref 319* index based structure level 1 dcl 10-9 index_id 0(12) based bit(8) level 2 packed unaligned dcl 10-9 set ref 195* index_ptr 000130 automatic pointer dcl 10-15 set ref 192* 194 195 index_value_length 000132 automatic fixed bin(35,0) dcl 10-16 set ref 193* indexed 3(03) based bit(1) level 3 packed unaligned dcl 6-5 ref 199 210 iocb_ptr 10 based pointer level 2 dcl 8-7 set ref 206* 211* 236* 259* 282* iox_$control 000014 constant entry external dcl 360 ref 236 259 282 key_list based structure level 1 dcl 12-3 set ref 140 key_list_ptr 000140 automatic pointer dcl 12-19 set ref 137* 138 140 141 200* 211* key_source_list based structure level 1 dcl 11-14 set ref 144 key_source_list_ptr 000134 automatic pointer dcl 11-21 set ref 141* 142 144 145 175 176 179 181 187* key_vals based char array unaligned dcl 361 set ref 147 175 ksl_number_of_values 000136 automatic fixed bin(17,0) dcl 11-22 set ref 135* 142 147 173 kv_ptr 000204 automatic pointer dcl 363 set ref 145* 147 148 175 last_call_stats 16 based structure level 2 dcl 14-5 set ref 53* 95* 247 last_time_of_stats 16 based fixed bin(71,0) level 3 in structure "vrm_meter" dcl 14-5 in procedure "put_tuple" set ref 240* last_time_of_stats 64 based fixed bin(71,0) level 3 in structure "vrm_meter" dcl 14-5 in procedure "put_tuple" set ref 246* locate_pos_sw 1(06) 000150 automatic bit(1) initial level 3 packed unaligned dcl 319 set ref 319* locate_sw 1(03) 000150 automatic bit(1) initial level 3 packed unaligned dcl 319 set ref 319* lock_sw 1 000150 automatic bit(1) initial level 3 packed unaligned dcl 319 set ref 319* max_rec_len 3 000150 automatic fixed bin(21,0) initial level 2 dcl 319 set ref 319* maximum_data_length 6 based fixed bin(35,0) level 2 dcl 6-5 ref 133 171 mbz1 1(07) 000150 automatic bit(29) initial level 3 packed unaligned dcl 319 set ref 319* mbz2 15 000150 automatic fixed bin(17,0) initial level 2 dcl 319 set ref 319* meter_ptr 20 based pointer level 2 dcl 8-7 ref 52 94 meter_sw 2(01) based bit(1) level 3 packed unaligned dcl 8-7 ref 49 91 218 238 264 mod builtin function dcl 365 ref 141 145 148 152 null builtin function dcl 366 ref 125 319 number_attrs 13 based fixed bin(17,0) level 2 dcl 6-5 ref 134 171 178 number_of_change_bits based fixed bin(17,0) level 2 dcl 13-3 set ref 149* 151 154 156 number_of_keys based fixed bin(17,0) level 2 dcl 12-3 set ref 138* 140 number_of_values based fixed bin(17,0) level 2 dcl 11-14 set ref 142* 144 number_of_vectors 2 based fixed bin(35,0) level 2 dcl 2-10 ref 108 number_primary_key_attrs 7 based fixed bin(17,0) level 2 dcl 6-5 ref 135 number_sec_indexes 10 based fixed bin(17,0) level 2 dcl 6-5 ref 138 number_times_locked 24 based fixed bin(70,0) level 3 dcl 14-5 set ref 264* 264 number_times_used 26 based fixed bin(70,0) level 3 dcl 14-5 set ref 245* number_tuples_stored 62 based fixed bin(70,0) level 3 dcl 14-5 set ref 218* 218 number_var_attrs 12 based fixed bin(17,0) level 2 dcl 6-5 ref 171 offset 000206 automatic fixed bin(35,0) dcl 367 set ref 178* 179 open_info_ptr 4 based pointer level 2 dcl 8-7 ref 118 opening_mode 3 based fixed bin(17,0) level 2 dcl 8-7 ref 204 page_faults 22 based fixed bin(70,0) level 3 dcl 14-5 set ref 244* pf_1 000207 automatic fixed bin(17,0) dcl 368 set ref 51* 93* 244 pf_2 000210 automatic fixed bin(17,0) dcl 369 set ref 239* 244 pf_dummy 000211 automatic fixed bin(17,0) dcl 370 set ref 51* 93* 239* position 1 based bit(1) array level 2 packed unaligned dcl 13-3 set ref 154* 156* pri_key 000212 automatic varying char(256) dcl 371 set ref 187* 192 206 206 primary_key_info_ptr 100 based pointer level 2 dcl 4-6 ref 174 put_seg_ptr 2 based pointer level 2 dcl 7-6 set ref 125 126* 129 record_length 2 000150 automatic fixed bin(21,0) initial level 2 dcl 319 set ref 319* record_ptr 4 000150 automatic pointer initial level 2 dcl 319 set ref 319* rel_id 2(25) based bit(12) level 2 in structure "vrm_rel_desc" packed unaligned dcl 6-5 in procedure "put_tuple" ref 194 rel_id based bit(12) level 2 in structure "index" packed unaligned dcl 10-9 in procedure "put_tuple" set ref 194* relation_model_ptr 72 based pointer level 2 dcl 4-6 ref 122 rs 000150 automatic structure level 1 unaligned dcl 319 shared 5 based bit(1) level 3 in structure "vrm_open_info" packed unaligned dcl 4-6 in procedure "put_tuple" ref 120 shared 2 based bit(1) level 3 in structure "vrm_cursor" packed unaligned dcl 8-7 in procedure "put_tuple" set ref 120* 204 simple_typed_vector based structure level 1 packed unaligned dcl 1-17 simple_typed_vector_ptr 000100 automatic pointer dcl 1-33 set ref 41* 57 64* simple_vector 000313 automatic bit(1) dcl 373 set ref 57* 59* statistics based structure level 1 unaligned dcl 14-15 string builtin function dcl 374 set ref 154* 156* substr builtin function dcl 375 ref 154 156 181 switches 2 based structure level 2 in structure "vrm_cursor" dcl 8-7 in procedure "put_tuple" switches 5 based structure level 2 in structure "vrm_open_info" dcl 4-6 in procedure "put_tuple" switches 3(01) based structure level 2 in structure "vrm_rel_desc" packed unaligned dcl 6-5 in procedure "put_tuple" t1 000314 automatic fixed bin(71,0) dcl 376 set ref 51* 93* 242 t2 000316 automatic fixed bin(71,0) dcl 377 set ref 239* 242 t3 000320 automatic float bin(63) dcl 378 set ref 242* 243 temp_seg_ptr 000322 automatic pointer dcl 379 set ref 129* 137 total_stats 64 based structure level 2 dcl 14-5 set ref 247* 247 tt_ptr 000324 automatic pointer dcl 380 set ref 206* tuple based structure level 1 dcl 9-7 tuple_id 000326 automatic bit(36) dcl 381 set ref 206* 211* 216 tuple_length 000126 automatic fixed bin(21,0) dcl 9-16 set ref 168* 206* tuple_pad_length constant fixed bin(17,0) initial dcl 9-18 ref 171 tuple_ptr 000124 automatic pointer dcl 9-15 set ref 152* 168* 171 178 200* 206* type based fixed bin(17,0) level 2 packed unaligned dcl 1-17 ref 57 typed_vector_list based structure level 1 dcl 2-10 typed_vector_list_ptr 000104 automatic pointer dcl 2-18 set ref 98* 100 108 109 unlock_sw 1(01) 000150 automatic bit(1) initial level 3 packed unaligned dcl 319 set ref 319* val_info 2 based structure array level 2 dcl 11-14 val_ptr 2 based pointer array level 3 dcl 11-14 set ref 175* 179* 181 var_offsets based fixed bin(35,0) array level 2 packed unaligned dcl 9-7 ref 178 varying 11 based bit(1) level 2 packed unaligned dcl 6-28 ref 177 vcpu_time 20 based float bin(63) level 3 dcl 14-5 set ref 243* vector_ptr 4 based pointer array level 2 dcl 2-10 set ref 109* version based fixed bin(17,0) level 2 in structure "typed_vector_list" dcl 2-10 in procedure "put_tuple" ref 100 version based fixed bin(35,0) level 2 in structure "element_id_list" dcl 3-21 in procedure "put_tuple" ref 103 version 000150 automatic fixed bin(17,0) initial level 2 in structure "rs" dcl 319 in procedure "put_tuple" set ref 319* vpt_index 000327 automatic fixed bin(24,0) dcl 383 set ref 108* 109 109* vrm_attr_info based structure level 1 unaligned dcl 6-28 vrm_attr_info_ptr 000116 automatic pointer dcl 6-45 set ref 174* 176 177 178 181 181 181 vrm_collection_info based structure level 1 dcl 5-6 vrm_com based structure level 1 dcl 7-6 vrm_com_ptr 000120 automatic pointer dcl 7-5 set ref 123* 125 126 129 vrm_cursor based structure level 1 dcl 8-7 vrm_cursor_ptr 000122 automatic pointer dcl 8-5 set ref 42* 49 52 91 94 99* 118 120 204 204 206 211 218 236 238 259 264 282 vrm_data_$max_kattr_length 000032 external static fixed bin(35,0) dcl 392 ref 147 147 175 175 175 vrm_meter based structure level 1 dcl 14-5 vrm_meter_ptr 000146 automatic pointer dcl 14-3 set ref 52* 53 94* 95 218 218 240 243 244 245 246 247 247 247 264 264 vrm_open_info based structure level 1 dcl 4-6 vrm_open_info_ptr 000112 automatic pointer dcl 4-28 set ref 118* 120 122 123 174 200* vrm_rel_desc based structure level 1 unaligned dcl 6-5 vrm_rel_desc_ptr 000114 automatic pointer dcl 6-41 set ref 122* 133 134 135 138 168* 171 171 171 174 178 194 199 200* 206* 210 vrmu_add_indexes 000016 constant entry external dcl 384 ref 211 vrmu_add_tuple 000020 constant entry external dcl 385 ref 206 vrmu_build_index_list 000022 constant entry external dcl 386 ref 200 vrmu_cv_vector_to_tuple 000024 constant entry external dcl 387 ref 168 vrmu_encode_key 000026 constant entry external dcl 388 ref 187 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. GENERAL_TYPED_VECTOR_TYPE internal static fixed bin(17,0) initial dcl 1-43 OLD_SIMPLE_TYPED_VECTOR_TYPE internal static fixed bin(17,0) initial dcl 1-43 VRM_COLLECTION_KEY_HEAD internal static char(16) initial unaligned dcl 5-26 VRM_OPEN_INFO_VERSION_1 internal static char(8) initial unaligned dcl 4-27 VRM_REL_DESC_KEY internal static varying char(256) initial dcl 6-46 VRM_REL_DESC_RECORD_ID internal static bit(12) initial unaligned dcl 6-43 VRM_REL_DESC_VERSION_1 internal static char(8) initial unaligned dcl 6-44 eil_number_of_elements automatic fixed bin(35,0) dcl 3-27 fixed builtin function dcl 357 general_typed_vector based structure level 1 packed unaligned dcl 1-24 gtv_number_of_dimensions automatic fixed bin(17,0) dcl 1-40 kl_number_of_keys automatic fixed bin(17,0) dcl 12-20 rel builtin function dcl 372 stv_number_of_dimensions automatic fixed bin(17,0) dcl 1-35 sys_info$max_seg_size external static fixed bin(35,0) dcl 392 tvl_maximum_number_of_vectors automatic fixed bin(35,0) dcl 2-21 vci_no_of_attributes automatic fixed bin(17,0) dcl 5-23 voi_no_of_index_collections automatic fixed bin(17,0) dcl 4-29 vrd_no_of_attrs automatic fixed bin(17,0) dcl 6-42 vrm_collection_header_type internal static bit(4) initial unaligned dcl 5-24 vrm_collection_info_ptr automatic pointer dcl 5-21 NAMES DECLARED BY EXPLICIT CONTEXT. Exit 000252 constant label dcl 67 ref 114 227 error 001241 constant entry internal dcl 224 ref 100 103 127 169 188 201 207 212 260 283 init_put 000504 constant entry internal dcl 116 ref 61 106 lock 001447 constant entry internal dcl 257 ref 204 put_one_tuple 000672 constant entry internal dcl 160 ref 64 109 put_tuple 000071 constant entry external dcl 7 put_tuples 000264 constant entry external dcl 72 tidy_up 001247 constant entry internal dcl 234 ref 47 67 89 unlock 001522 constant entry internal dcl 279 ref 214 vrm_put_tuple 000105 constant entry external dcl 7 vrm_put_tuples 000300 constant entry external dcl 72 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2032 2066 1607 2042 Length 2556 1607 34 453 223 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME put_tuple 366 external procedure is an external procedure. on unit on line 47 64 on unit on unit on line 89 64 on unit init_put internal procedure shares stack frame of external procedure put_tuple. put_one_tuple internal procedure shares stack frame of external procedure put_tuple. error internal procedure shares stack frame of external procedure put_tuple. tidy_up 88 internal procedure is called by several nonquick procedures. lock internal procedure shares stack frame of external procedure put_tuple. unlock internal procedure shares stack frame of external procedure put_tuple. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME put_tuple 000100 simple_typed_vector_ptr put_tuple 000102 general_typed_vector_ptr put_tuple 000104 typed_vector_list_ptr put_tuple 000106 element_id_list_ptr put_tuple 000110 ELEMENT_ID_LIST_VERSION_1 put_tuple 000112 vrm_open_info_ptr put_tuple 000114 vrm_rel_desc_ptr put_tuple 000116 vrm_attr_info_ptr put_tuple 000120 vrm_com_ptr put_tuple 000122 vrm_cursor_ptr put_tuple 000124 tuple_ptr put_tuple 000126 tuple_length put_tuple 000130 index_ptr put_tuple 000132 index_value_length put_tuple 000134 key_source_list_ptr put_tuple 000136 ksl_number_of_values put_tuple 000140 key_list_ptr put_tuple 000142 cb_number_of_change_bits put_tuple 000144 change_bits_ptr put_tuple 000146 vrm_meter_ptr put_tuple 000150 rs put_tuple 000166 bd_ptr put_tuple 000170 bit_len put_tuple 000200 code put_tuple 000201 file_locked put_tuple 000202 i put_tuple 000204 kv_ptr put_tuple 000206 offset put_tuple 000207 pf_1 put_tuple 000210 pf_2 put_tuple 000211 pf_dummy put_tuple 000212 pri_key put_tuple 000313 simple_vector put_tuple 000314 t1 put_tuple 000316 t2 put_tuple 000320 t3 put_tuple 000322 temp_seg_ptr put_tuple 000324 tt_ptr put_tuple 000326 tuple_id put_tuple 000327 vpt_index put_tuple THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return_mac mdfx1 enable_op ext_entry int_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cpu_time_and_paging_ get_temp_segment_ iox_$control vrmu_add_indexes vrmu_add_tuple vrmu_build_index_list vrmu_cv_vector_to_tuple vrmu_encode_key THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$unimplemented_version vrm_data_$max_kattr_length LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 3 28 000031 319 000033 7 000064 41 000116 42 000123 43 000126 44 000127 45 000130 47 000131 49 000153 51 000157 52 000172 53 000175 57 000223 59 000236 61 000237 64 000240 66 000251 67 000252 68 000256 72 000257 86 000311 87 000314 89 000315 91 000337 93 000343 94 000356 95 000361 98 000407 99 000413 100 000416 102 000430 103 000434 106 000446 108 000447 109 000457 110 000473 111 000500 113 000502 114 000503 116 000504 118 000505 120 000510 122 000515 123 000517 125 000522 126 000526 127 000551 129 000555 133 000560 134 000564 135 000566 137 000570 138 000571 140 000574 141 000577 142 000605 144 000607 145 000612 147 000617 148 000625 149 000632 151 000634 152 000640 154 000645 156 000656 158 000671 160 000672 168 000674 169 000720 171 000724 173 000744 174 000753 175 000761 176 000774 177 000776 178 001002 179 001020 180 001026 181 001027 184 001037 187 001041 188 001057 192 001063 193 001067 194 001070 195 001075 199 001077 200 001102 201 001124 204 001130 206 001140 207 001170 210 001174 211 001200 212 001216 214 001222 216 001225 218 001230 222 001240 224 001241 226 001243 227 001245 234 001246 236 001254 238 001311 239 001316 240 001331 242 001335 243 001342 244 001345 245 001352 246 001354 247 001356 252 001446 257 001447 259 001450 260 001503 262 001507 264 001511 269 001521 279 001522 281 001523 282 001525 283 001560 286 001564 288 001565 ----------------------------------------------------------- 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