COMPILATION LISTING OF SEGMENT vrm_modify_by_id Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/23/85 1345.2 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 vrm_modify_tuples_by_id: modify_tuples_by_id: proc (I_cursor_ptr, element_id_list_ptr, I_typed_vector_ptr, O_number_of_tuples_modified, O_code); 8 9 /* . BEGIN_DESCRIPTION 10* 11* Modify the tuples identified in the element_id_list to have the attributes 12* and values specified in the general_typed_vector. The number of tuples 13* modified will be returned. 14* 15* . END_DESCRIPTION 16**/ 17 18 /* History: 19* 20* 82-09-28 R. Harvey: Initially written. 21* 82-11-16 Roger Lackey : Added new call to metering and locking 22* 83-01-04 Roger Lackey : changed the way that the tuple was copied from 23* the data file to temp space to use the length of the vfile record instead 24* of the max_tuple_length. 25* 26* 83-02-16 Roger Lackey : Added check for zero length record after call to record status. 27* 28* 84-12-19 Thanh Nguyen : Added code to continue on to the next tuple if the 29* tuple was deleted by another parallel process in share mode and stop the 30* premature tuple_not_found. 31**/ 32 33 /* vrm_modify_tuples_by_id: proc (I_cursor_ptr, element_id_list_ptr, I_typed_vector_ptr, O_number_of_tuples_modified, O_code); */ 34 35 36 /* dcl element_id_list_ptr ptr parameter; broken rule due to allocation dependency of vfile_desc_list */ 37 dcl I_typed_vector_ptr ptr parameter; 38 dcl I_cursor_ptr ptr parameter; 39 dcl O_number_of_tuples_modified fixed bin (35) parameter; 40 dcl O_code fixed bin (35) parameter; 41 42 43 general_typed_vector_ptr = I_typed_vector_ptr; 44 vrm_cursor_ptr = I_cursor_ptr; 45 O_number_of_tuples_modified = 0; /* true so far */ 46 47 file_locked = "0"b; 48 49 on cleanup call tidy_up; 50 51 if element_id_list.version ^= ELEMENT_ID_LIST_VERSION_1 52 then call error (error_table_$unimplemented_version); 53 54 call init_modify; 55 56 do i = 1 to element_id_list.number_of_elements; 57 58 tid_ptr = addr (element_id_list.id (i)); 59 vfd_ptr = addr (vfile_desc); 60 61 vfile_desc = 0; 62 vfd.comp_number = tid.comp_num; 63 vfd.comp_offset = tid.offset; 64 65 call modify_one_tuple (element_id_list.id (i), vfile_desc, general_typed_vector_ptr); 66 O_number_of_tuples_modified = i; 67 end; 68 69 O_code = 0; 70 71 Exit: call tidy_up; 72 return; 73 74 init_modify: proc; 75 76 if vrm_cursor.switches.meter_sw then do; 77 78 call cpu_time_and_paging_ (pf_1, t1, pf_dummy); 79 vrm_meter_ptr = vrm_cursor.meter_ptr; 80 vrm_meter.last_call_stats = 0; 81 end; 82 83 if general_typed_vector.type ^= GENERAL_TYPED_VECTOR_TYPE 84 then call error (error_table_$unimplemented_version); 85 86 vrm_open_info_ptr = vrm_cursor.open_info_ptr; 87 vrm_cursor.switches.shared = vrm_cursor.open_info_ptr -> vrm_open_info.switches.shared; 88 89 vrm_rel_desc_ptr = vrm_cursor.vrm_relation_desc_ptr; 90 vrm_com_ptr = vrm_open_info.com_ptr; 91 92 if vrm_com.mod_seg_ptr = null () then do; 93 call get_temp_segment_ ("vrm_modify", vrm_com.mod_seg_ptr, code); 94 if code ^= 0 then call error (code); 95 end; 96 temp_seg_ptr = vrm_com.mod_seg_ptr; 97 98 add_key_list_ptr = temp_seg_ptr; 99 add_key_list_ptr -> key_list.number_of_keys = vrm_rel_desc.number_sec_indexes; 100 101 i = currentsize (add_key_list_ptr -> key_list); 102 103 delete_key_list_ptr = addrel (add_key_list_ptr, i); 104 delete_key_list_ptr -> key_list.number_of_keys = vrm_rel_desc.number_sec_indexes; 105 106 change_bits_ptr = addrel (delete_key_list_ptr, i); 107 change_bits.number_of_change_bits = vrm_rel_desc.number_attrs; 108 109 i = currentsize (change_bits); 110 tuple_ptr = addrel (change_bits_ptr, i + mod (i, 2)); 111 112 string (change_bits.position) = "0"b; 113 114 /* Now insure that the primary key is not being modified (and set up change bits as well) */ 115 vrm_collection_info_ptr = vrm_open_info.primary_key_info_ptr; 116 do i = 1 to general_typed_vector.number_of_dimensions; 117 attr_no = general_typed_vector.dimension (i).identifier; 118 119 do z = 1 to vrm_collection_info.number_of_attributes; 120 if attr_no = vrm_collection_info.attribute (z).attr_index then 121 call error (mdbm_error_$mod_key_attr); 122 end; 123 124 change_bits.position (attr_no) = "1"b; 125 end; 126 127 string (rs_info.flags) = "0"b; /* Clear flags */ 128 rs_info.locate_sw = "1"b; /* set for search by descriptor */ 129 130 end init_modify; 131 132 modify_one_tuple: proc (element_id, vfile_descriptor, general_typed_vector_ptr); 133 134 /* Parameters */ 135 136 dcl element_id bit (36) aligned parameter; 137 dcl vfile_descriptor fixed bin (35) parameter; 138 dcl general_typed_vector_ptr ptr parameter; 139 140 141 rs_info.descriptor = vfile_descriptor; /* This is record to locate */ 142 143 if vrm_cursor.switches.shared then do; 144 if vrm_cursor.opening_mode = KSQU then call lock; 145 end; 146 147 call iox_$control (vrm_cursor.iocb_ptr, "record_status", addr (rs_info), code); 148 if code ^= 0 then call error (error_table_$no_record); 149 else if vrm_cursor.switches.shared then 150 if rs_info.record_length = 0 | rs_info.block_ptr -> block_head.is_this_block_free 151 then go to exit_of_modify_one_tuple; 152 153 tuple_ptr -> tuple_templet = rs_info.record_ptr -> tuple_templet; /* Copy tuple to workspace */ 154 155 if vrm_rel_desc.switches.indexed then do; 156 call vrmu_build_index_list (vrm_rel_desc_ptr, vrm_open_info_ptr, tuple_ptr, change_bits_ptr, delete_key_list_ptr, code); 157 if code ^= 0 then call error (code); 158 end; 159 160 call vrmu_cv_vector_to_tuple (vrm_rel_desc_ptr, tuple_ptr, general_typed_vector_ptr, "1"b /* MODIFY */, tuple_length, code); 161 if code ^= 0 then call error (code); 162 163 if vrm_rel_desc.switches.indexed then do; 164 call vrmu_build_index_list (vrm_rel_desc_ptr, vrm_open_info_ptr, tuple_ptr, change_bits_ptr, add_key_list_ptr, code); 165 if code ^= 0 then call error (code); 166 end; 167 168 169 if vrm_rel_desc.switches.indexed then do; 170 call vrmu_delete_indexes (vrm_cursor.iocb_ptr, delete_key_list_ptr, element_id, code); 171 if code ^= 0 then call error (code); 172 end; 173 174 call iox_$rewrite_record (vrm_cursor.iocb_ptr, tuple_ptr, tuple_length, code); 175 if code ^= 0 then call error (code); 176 177 if vrm_rel_desc.switches.indexed then do; 178 call vrmu_add_indexes (vrm_cursor.iocb_ptr, add_key_list_ptr, element_id, code); 179 if code ^= 0 then call error (code); 180 end; 181 182 exit_of_modify_one_tuple: 183 184 if vrm_cursor.switches.shared then call unlock; 185 186 if vrm_cursor.switches.meter_sw then 187 vrm_meter.last_call_stats.number_tuples_modified = 188 vrm_meter.last_call_stats.number_tuples_modified + 1; 189 190 end modify_one_tuple; 191 192 error: proc (ecode); 193 194 dcl ecode fixed bin (35); 195 196 if ecode = error_table_$no_record then O_code = dm_error_$no_tuple_id; 197 else O_code = ecode; 198 199 go to Exit; 200 201 end error; 202 203 204 205 /* * * * * * * * * * * * * * * * * * * tidy_up * * * * * * * * * * * */ 206 207 tidy_up: proc; 208 209 if file_locked then call iox_$control (iocb_ptr, "set_file_lock", addr (UNLOCK), code); 210 211 if vrm_cursor.switches.meter_sw then do; 212 call cpu_time_and_paging_ (pf_2, t2, pf_dummy); 213 vrm_meter.last_call_stats.last_time_of_stats = clock; 214 215 t3 = t2 - t1; 216 vrm_meter.last_call_stats.vcpu_time = divide (t3, 1000000, 63); 217 vrm_meter.last_call_stats.page_faults = pf_2 - pf_1; 218 vrm_meter.last_call_stats.number_times_used = 1; 219 vrm_meter.total_stats.last_time_of_stats = 0; 220 vrm_meter.total_stats = vrm_meter.total_stats + vrm_meter.last_call_stats; 221 222 end; 223 224 225 end tidy_up; 226 227 /* * * * * * * * * * * * * * lock * * * * * * * * * * * * * * * * */ 228 229 230 lock: proc; 231 232 call iox_$control (iocb_ptr, "set_file_lock", addr (LOCK), code); 233 if code ^= 0 then call error (code); 234 235 file_locked = "1"b; 236 237 if vrm_cursor.switches.meter_sw then 238 vrm_meter.last_call_stats.number_times_locked = 239 vrm_meter.last_call_stats.number_times_locked + 1; 240 241 242 end lock; 243 244 245 246 247 248 249 250 /* * * * * * * * * * * * * * unlock * * * * * * * * * * * * * * * * */ 251 252 unlock: proc; 253 254 if file_locked then do; 255 call iox_$control (iocb_ptr, "set_file_lock", addr (UNLOCK), code); 256 if code ^= 0 then call error (code); 257 end; 258 259 file_locked = "0"b; 260 261 end unlock; 262 263 1 1 /* BEGIN INCLUDE dm_typed_vector_list.incl.pl1 * * * * * * * * * * * * * * * * */ 1 2 1 3 /* Written by R. Harvey, 09/24/82 1 4*Modified: 1 5*09/27/82 by Matthew Pierret: Changed "max" to "maximum", tvl_number_of_vectors 1 6* to tvl_maximum_number_of_vectors. 1 7**/ 1 8 1 9 /* format: style2,ind3 */ 1 10 dcl 1 typed_vector_list aligned based (typed_vector_list_ptr), 1 11 2 version fixed bin (17), 1 12 2 maximum_number_of_vectors 1 13 fixed bin (35), /* vectors available */ 1 14 2 number_of_vectors fixed bin (35), /* number of vector_ptrs used */ 1 15 2 pad fixed bin (35), /* (even word boundary) */ 1 16 2 vector_ptr (tvl_maximum_number_of_vectors refer (typed_vector_list.maximum_number_of_vectors)) ptr; 1 17 1 18 dcl typed_vector_list_ptr ptr; 1 19 dcl TYPED_VECTOR_LIST_VERSION_1 1 20 fixed bin (17) int static options (constant) init (1); 1 21 dcl tvl_maximum_number_of_vectors fixed bin (35); 1 22 1 23 /* END INCLUDE dm_typed_vector_list.incl.pl1 * * * * * * * * * * * * * * * * */ 264 265 2 1 /* *********************************************************** 2 2* * * 2 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 2 4* * * 2 5* *********************************************************** */ 2 6 /* BEGIN INCLUDE FILE - vu_typed_vector.incl.pl1 */ 2 7 2 8 /* Written by Lindsey Spratt, 04/02/82. 2 9*Modified: 2 10*09/01/82 by Lindsey Spratt: Changed value_ptr in simple_typed_vector to be 2 11* unaligned. Changed the type number of the simple_typed_vector to 2 12* "3" from "1". The OLD_SIMPLE_TYPED_VECTOR_TYPE is now an invalid 2 13* type. 2 14**/ 2 15 2 16 /* format: style2,ind3 */ 2 17 dcl 1 simple_typed_vector based (simple_typed_vector_ptr), 2 18 2 type fixed bin (17) unal, 2 19 2 number_of_dimensions 2 20 fixed bin (17) unal, 2 21 2 dimension (stv_number_of_dimensions refer (simple_typed_vector.number_of_dimensions)), 2 22 3 value_ptr ptr unaligned; 2 23 2 24 dcl 1 general_typed_vector based (general_typed_vector_ptr), 2 25 2 type fixed bin (17) unal, 2 26 2 number_of_dimensions 2 27 fixed bin (17) unal, 2 28 2 dimension (gtv_number_of_dimensions refer (general_typed_vector.number_of_dimensions)), 2 29 3 identifier fixed bin (17) unal, 2 30 3 pad bit (18) unal, 2 31 3 value_ptr ptr unal; 2 32 2 33 dcl simple_typed_vector_ptr 2 34 ptr; 2 35 dcl stv_number_of_dimensions 2 36 fixed bin (17); 2 37 2 38 dcl general_typed_vector_ptr 2 39 ptr; 2 40 dcl gtv_number_of_dimensions 2 41 fixed bin (17); 2 42 2 43 dcl ( 2 44 OLD_SIMPLE_TYPED_VECTOR_TYPE 2 45 init (1), /* value_ptr was aligned. */ 2 46 GENERAL_TYPED_VECTOR_TYPE 2 47 init (2), 2 48 SIMPLE_TYPED_VECTOR_TYPE 2 49 init (3) 2 50 ) fixed bin (17) internal static options (constant); 2 51 2 52 /* END INCLUDE FILE - vu_typed_vector.incl.pl1 */ 266 267 3 1 /* BEGIN INCLUDE vrm_cursor.incl.pl1 */ 3 2 3 3 /* 83-05-26 Roger Lackey : Modifyed for relation cursors */ 3 4 3 5 dcl vrm_cursor_ptr pointer; /* Pointer to this structure */ 3 6 3 7 dcl 1 vrm_cursor aligned based (vrm_cursor_ptr), /* vfile relation manager cursor */ 3 8 2 opening_id bit (36) aligned, /* ID of opening associated with this cursor */ 3 9 2 debug_sw unal, /* Undefined MBZ */ 3 10 3 trace_open bit (1) unal, /* Show opening of iocb cursor creation time */ 3 11 3 pad bit (35) unal, 3 12 2 switches, 3 13 3 shared bit (1) unal, /* Other processes can use this relation */ 3 14 3 meter_sw bit (1) unal, /* On = Keep meters for this cursor */ 3 15 3 pad bit (7) unal, /* Unsed */ 3 16 2 opening_mode fixed bin, /* Opening mode for this cursor (8 = KSQR 10 = KSQU) */ 3 17 2 open_info_ptr pointer, /* Pointer to parent opening info structure */ 3 18 2 vrm_relation_desc_ptr pointer, /* Pointer to parent rel desc */ 3 19 2 iocb_ptr pointer, /* Pointer to attach iocb */ 3 20 2 secondary_iocb_ptr ptr, /* Second iocb_ptr used by vrmu_search */ 3 21 2 search_list_ptr ptr, /* Pointer to search_list */ 3 22 2 search_keys_ptr ptr, /* Pointer to search_keys array */ 3 23 2 meter_ptr pointer, /* Pointer metering str if metering is on or null */ 3 24 2 vrm_iocb_list_block_ptr pointer, /* Pointer to vrm_iocb_list_block that contains this cursors iocb */ 3 25 2 vrm_iocb_list_block_iocbs_ix fixed bin; /* Index into list_block.iocbs for location of iocb */ 3 26 3 27 3 28 /* END INCLUDE vrm_cursor.incl.pl1 */ 268 269 4 1 /* BEGIN vrm_tuple.incl.pl1 -- jaw, 7/25/78 */ 4 2 4 3 /* 82-08-27 R. Harvey: taken from mdbm_tuple.incl.pl1 for vfile_relmgr_. 4 4* Modified dimension references to point to entries in vrm_rel_desc. */ 4 5 4 6 4 7 dcl 1 tuple aligned based (tuple_ptr), /* tuple format, all file types */ 4 8 2 rel_id bit (12) unal, /* relation id */ 4 9 2 attr_exists (vrm_rel_desc.number_attrs) bit (1) unal, /* existance flags */ 4 10 2 var_offsets (vrm_rel_desc.number_var_attrs) fixed bin (35) unal, /* offsets for variable attr.; stored as len|value */ 4 11 2 force_even_word (tuple_pad_length) fixed bin (71) aligned, /* pad to even word boundary */ 4 12 2 data char (vrm_rel_desc.maximum_data_length) unal; /* space for data */ 4 13 4 14 4 15 dcl tuple_ptr ptr; 4 16 dcl tuple_length fixed bin (21); /* byte count */ 4 17 4 18 declare tuple_pad_length fixed bin internal static init (0) ; /* minimum array size needed for even word padding */ 4 19 4 20 4 21 4 22 /* END vrm_tuple.incl.pl1 */ 4 23 270 271 5 1 /* BEGIN INCLUDE vrm_open_info.incl.pl1 */ 5 2 5 3 /* R. Harvey 82-11-02 5 4* 82-09-82 Roger Lackey: added iocb_list_ptr */ 5 5 5 6 dcl 1 vrm_open_info aligned based (vrm_open_info_ptr), /* Vfile relation description */ 5 7 2 version char (8), /* Version number of this structure */ 5 8 2 opening_id bit (36) aligned, /* Opening id associated with this desc */ 5 9 2 file_uid bit (36) aligned, /* Unique id of msf dir */ 5 10 2 number_of_openings fixed bin, /* Number of separate calls to vrm$open */ 5 11 2 switches, 5 12 3 shared bit (1) unal, /* Open relation in shared mode */ 5 13 3 pad bit (35) unal init ("0"b), /* Unused must be zero */ 5 14 2 database_dir_path char (168) varying, /* Absolute path of database */ 5 15 2 relation_name char (30) varying, /* Name of relation */ 5 16 2 relation_model_ptr pointer, /* Pointer to the relation_model in the relation itself or a temp seg */ 5 17 2 com_ptr pointer, /* Temp seg for cursors and scratch space */ 5 18 2 iocb_list_ptr pointer, /* Pointer to first vrm_iocb_list_block */ 5 19 2 primary_key_info_ptr pointer, /* Special case collection info ptr */ 5 20 2 number_of_index_collections fixed bin, /* Count of index collections (include primary key) */ 5 21 2 index_collection (voi_no_of_index_collections 5 22 refer (vrm_open_info.number_of_index_collections)), 5 23 3 id bit (36), 5 24 3 info_ptr ptr unal; /* Points to more detailed info */ 5 25 5 26 5 27 dcl VRM_OPEN_INFO_VERSION_1 char (8) int static options (constant) init (" 1"); 5 28 dcl vrm_open_info_ptr ptr; 5 29 dcl voi_no_of_index_collections fixed bin; 5 30 5 31 /* END INCLUDE vrm_open_info.incl.pl1 */ 272 273 6 1 /* BEGIN INCLUDE vrm_collection_info.incl.pl1 */ 6 2 6 3 /* R. Harvey 82-11-02 */ 6 4 6 5 6 6 dcl 1 vrm_collection_info aligned based (vrm_collection_info_ptr), 6 7 /* Index collection description */ 6 8 2 record_id unal, 6 9 3 header bit (4) unal, /* collection type */ 6 10 3 id bit (8) unal, /* index id */ 6 11 2 unique bit (1) unal, 6 12 2 primary_key bit (1) unal, /* This is the MRDS primary key collection */ 6 13 2 pad bit (26) unal, 6 14 2 number_of_attributes 6 15 fixed bin, 6 16 2 attribute (vci_no_of_attributes refer (vrm_collection_info.number_of_attributes)), 6 17 3 attr_index fixed bin, /* Attribute number in relation description */ 6 18 3 key_offset fixed bin, /* Offset within key in bits */ 6 19 3 key_bit_len fixed bin ; /* Length of key in bits */ 6 20 6 21 dcl vrm_collection_info_ptr 6 22 ptr; 6 23 dcl vci_no_of_attributes fixed bin; 6 24 dcl vrm_collection_header_type 6 25 bit (4) unal int static options (constant) init ("1100"b); 6 26 dcl VRM_COLLECTION_KEY_HEAD char (16) int static options (constant) init ("@collection_info"); 6 27 6 28 /* END INCLUDE vrm_collection_info.incl.pl1 */ 274 275 7 1 /* BEGIN INCLUDE vrm_rel_desc.incl.pl1 */ 7 2 7 3 /* 83-05-26 Roger Lackey : Added vrm_attr_info.key_head bit for relation_cursors */ 7 4 7 5 dcl 1 vrm_rel_desc based (vrm_rel_desc_ptr), 7 6 2 record_id bit (12) unal, /* Distinguish us from tuples and collection records */ 7 7 2 version char (8), /* Version of this structure */ 7 8 2 file_id bit (7), /* Value of file id from model */ 7 9 2 rel_id bit (12), /* Relation id */ 7 10 2 switches, 7 11 3 MRDS_compatible bit (1) unal, /* For pre-relation_manager_ MRDS */ 7 12 3 stationary_records 7 13 bit (1) unal, /* On = stationary */ 7 14 3 indexed bit (1) unal, /* This relation has attributes with secondary indices */ 7 15 3 pad bit (33) unal, 7 16 2 var_offset fixed bin (35), /* Position of first varying attr */ 7 17 2 maximum_data_length 7 18 fixed bin (35), /* Maximum size of tuple in characters */ 7 19 2 number_primary_key_attrs 7 20 fixed bin, /* Number of attributes which make up the primary key */ 7 21 2 number_sec_indexes fixed bin, /* Number of attributes which have a secondary index */ 7 22 2 last_var_attr_no fixed bin, /* Attr index of last varying attribute */ 7 23 2 number_var_attrs fixed bin, /* Number of varying attributes */ 7 24 2 number_attrs fixed bin, /* Number of attribute in rel */ 7 25 2 attr (vrd_no_of_attrs /* Description of each attribute */ 7 26 refer (vrm_rel_desc.number_attrs)) aligned like vrm_attr_info; 7 27 7 28 dcl 1 vrm_attr_info based (vrm_attr_info_ptr), 7 29 /* Attribute specific info */ 7 30 2 name char (32), /* Name of the attribute */ 7 31 2 descriptor bit (36) aligned, /* domain descriptor */ 7 32 2 varying bit (1) unal, /* ON = This is a varying string */ 7 33 2 key_head bit (1) unal, /* ON = This attr can be a keyhead */ 7 34 2 primary_key_attr bit (1) unal, /* ON = This is a primary key attribute */ 7 35 2 pad bit (15) unal, /* unused */ 7 36 2 index_collextion_ix fixed bin (17) unal, /* Index into vrm_open_info.index_collection array if key_head is on */ 7 37 2 bit_length fixed bin (35), /* Maximum bit length of tuple */ 7 38 2 bit_offset fixed bin (35); /* Offset in tuple if fixed, index to offset in tuple if varying */ 7 39 7 40 7 41 dcl vrm_rel_desc_ptr pointer; 7 42 dcl vrd_no_of_attrs fixed bin; 7 43 dcl VRM_REL_DESC_RECORD_ID bit (12) unal int static options (constant) init ("100000000000"b); 7 44 dcl VRM_REL_DESC_VERSION_1 char (8) int static options (constant) init (" 1"); 7 45 dcl vrm_attr_info_ptr pointer; 7 46 dcl VRM_REL_DESC_KEY char (256) varying int static options (constant) init ("@relation_description"); 7 47 7 48 /* END INCLUDE vrm_rel_desc.incl.pl1 */ 276 277 8 1 /* BEGIN vrm_change_bits.incl.pl1 -- R. Harvey */ 8 2 8 3 dcl 1 change_bits based (change_bits_ptr), 8 4 2 number_of_change_bits fixed bin (17), 8 5 2 position (cb_number_of_change_bits refer (change_bits.number_of_change_bits)) bit (1) unal; 8 6 8 7 dcl cb_number_of_change_bits fixed bin; 8 8 dcl change_bits_ptr ptr; 8 9 8 10 /* END vrm_change_bits.incl.pl1 */ 278 279 9 1 /* BEGIN vrm_key_list.incl.pl1 -- jaw, 1/17/79 */ 9 2 9 3 dcl 1 key_list aligned based (key_list_ptr), /* list of keys for add_key or delete_key */ 9 4 2 number_of_keys fixed bin, /* no. keys in list */ 9 5 2 key_info (kl_number_of_keys refer (key_list.number_of_keys)), 9 6 3 item_index fixed bin, /* attr. index or plink index */ 9 7 3 cand_key bit (1) unal, /* on if key is for candidate key */ 9 8 3 unique_val bit (1) unal, /* on if value must be unique */ 9 9 3 pad bit (34) unal, 9 10 3 vf_info, /* info for vfile control orders */ 9 11 4 input_key bit (1) unal, /* if key val supplied */ 9 12 4 input_desc bit (1) unal, /* if desc. supplied */ 9 13 4 reserved bit (34) unal, 9 14 4 vf_desc, /* vfile_ descriptor */ 9 15 5 comp_no fixed bin (17) unal, 9 16 5 offset bit (18) unal, 9 17 4 key char (256) var; 9 18 9 19 dcl key_list_ptr ptr; 9 20 dcl kl_number_of_keys fixed bin; 9 21 9 22 /* END vrm_key_list.incl.pl1 */ 280 281 10 1 /* BEGIN INCLUDE vrm_com.incl.pl1 */ 10 2 10 3 /* Written 82-08-23 by R. Harvey */ 10 4 10 5 dcl vrm_com_ptr ptr; 10 6 dcl 1 vrm_com aligned based (vrm_com_ptr), 10 7 2 get_seg_ptr ptr, /* temp seg for retrieve routines */ 10 8 2 put_seg_ptr ptr, /* temp seg for store routines */ 10 9 2 mod_seg_ptr ptr, /* temp seg for modify routines */ 10 10 2 work_area_ptr ptr, /* freeing area for oid_table sections and rel_descriptors */ 10 11 2 highest_oid bit (36) aligned, /* highest valid oid */ 10 12 2 next_free_oid bit (36) aligned, /* offset of first in free chain */ 10 13 2 first_assigned_oid bit (36) aligned, /* offset of first in assigned chain */ 10 14 2 oid_area area (sys_info$max_seg_size - fixed (rel (addr (vrm_com.work_area_ptr)))); 10 15 10 16 /* END INCLUDE vrm_com.incl.pl1 */ 282 283 11 1 /* BEGIN INCLUDE FILE - dm_element_id_list.incl.pl1 */ 11 2 11 3 /* DESCRIPTION: 11 4* The element_id_list structure contains an array of element 11 5* identifiers. These identifiers are used as tuple, record or 11 6* element identifiers. This structure is used across the relation_manager_, 11 7* record_manager_ and index_manager_ interfaces. At some time the 11 8* version should be changed to be char(8)aligned, when such a conversion 11 9* can be coordinated with the other structures used at these interfaces. 11 10**/ 11 11 11 12 /* HISTORY: 11 13*Written by Matthew Pierret, 06/06/82. 11 14*Modified: 11 15*12/16/82 by Roger Lackey: Changed number_of_elements to fixed bin (35). 11 16* Did not change version. 11 17*02/11/85 by Matthew Pierret: Added DESCRIPTION, Written by. 11 18**/ 11 19 11 20 /* format: style2,ind3 */ 11 21 dcl 1 element_id_list aligned based (element_id_list_ptr), 11 22 2 version fixed bin (35), 11 23 2 number_of_elements fixed bin (35), 11 24 2 id (eil_number_of_elements refer (element_id_list.number_of_elements)) bit (36) aligned; 11 25 11 26 dcl element_id_list_ptr ptr; 11 27 dcl eil_number_of_elements fixed bin (35); 11 28 dcl ELEMENT_ID_LIST_VERSION_1 11 29 init (1) fixed bin (35); 11 30 11 31 11 32 /* END INCLUDE FILE - dm_element_id_list.incl.pl1 */ 284 285 12 1 /* BEGIN mdbm_rs_info.incl.pl1 -- jaw, 6/15/78 (from mda, 6/15/77) */ 12 2 12 3 dcl 1 rs_info aligned, 12 4 2 version fixed init (2), /* must be set to 1 or 2 (Input) */ 12 5 2 flags aligned, 12 6 3 lock_sw bit (1) unal, /* Input -- if ="1"b try to lock record */ 12 7 3 unlock_sw bit (1) unal, /* Input -- if ="1"b try to unlock record */ 12 8 3 create_sw bit (1) unal, /* Input--if set creat new record */ 12 9 3 locate_sw bit (1) unal, /* Input--if set causes current rec to be 12 10* located outside the index by descrip, or created without key */ 12 11 3 inc_ref_count bit (1) unal, /* Input--bump reference count of record, if stationary */ 12 12 3 dec_ref_count bit (1) unal, /* Input--decrement ref count if this flag set and 12 13* record stationary */ 12 14 3 locate_pos_sw bit (1) unal, /* Input--if set the record_length is taken 12 15* as an input arg. spec. the abs. logical record position 12 16* \ to which both current and next will be set */ 12 17 3 mbz1 bit (29) unal, /* must be set to "0"b, reserved for future use */ 12 18 2 record_length fixed (21), /* length in bytes, Input if create_sw set */ 12 19 2 max_rec_len fixed (21), /* max length of contained record 12 20* Input if create_sw is set--overrides min_block_size */ 12 21 2 record_ptr ptr, /* points to first byte of record--will be word aligned */ 12 22 2 descriptor fixed (35), /* Input if locate_sw set and create_sw="0"b */ 12 23 2 ref_count fixed (34), /* Output--should match number of keys on this record-- 12 24* = -1 if non-stationary record */ 12 25 2 time_last_modified fixed (71), /* Output */ 12 26 2 modifier fixed (35), /* Output--also Input when locking */ 12 27 2 block_ptr ptr unal, /* Output */ 12 28 2 mbz2 (2) fixed init (0, 0); 12 29 12 30 /* END mdbm_rs_info.incl.pl1 */ 12 31 286 287 13 1 /* BEGIN INCLUDE vrm_meter.incl.pl1 */ 13 2 13 3 dcl vrm_meter_ptr pointer; 13 4 13 5 dcl 1 vrm_meter aligned based (vrm_meter_ptr), 13 6 2 cursor_name char (32), /* Name of cursor */ 13 7 2 meter_start_time fixed bin (71), 13 8 2 switches, 13 9 3 metering bit (1) unal, /* On = meter being done */ 13 10 3 mbz bit (35) unal, 13 11 2 cursor_ptr ptr, /* Pointer to vrm_cursor structure */ 13 12 2 last_call_stats like statistics, 13 13 2 total_stats like statistics; 13 14 13 15 dcl 1 statistics based, /* Used in like above */ 13 16 2 last_time_of_stats fixed bin (71), /* Last clock value for stats taken */ 13 17 2 vcpu_time float bin (63), /* The vcpu for this cursor */ 13 18 2 page_faults fixed bin (70), /* Page faults for this cursor */ 13 19 2 number_times_locked fixed bin (70), /* Number of time a lock was set */ 13 20 2 number_times_used fixed bin (70), /* Number of time cursor was used */ 13 21 2 num_times_search_called fixed bin (70), /* Number of time vrm_search was called */ 13 22 2 records_searched fixed bin (70), /* The records searched */ 13 23 2 seek_heads fixed bin (70), /* The seek heads done for key searches */ 13 24 2 special_seek_heads fixed bin (70), /* The seek heads done for key searches */ 13 25 2 keys_read fixed bin (70), /* The keys read by key search */ 13 26 2 keys_compared fixed bin (70), /* The keys compared in key search */ 13 27 2 key_hits fixed bin (70), /* The key hits for key search */ 13 28 2 non_key_compares fixed bin (70), /* The non_key compares done for this cursor */ 13 29 2 non_key_hits fixed bin (70), /* The non_key hits for this cursor */ 13 30 2 upper_limit_found_count fixed bin (70), /* The number of times upper limit was exceeded */ 13 31 2 number_items_returned fixed bin (70), /* Number of tuples or tid returned */ 13 32 2 number_tuples_deleted fixed bin (70), /* Number of tuples deleted */ 13 33 2 number_tuples_modified fixed bin (70), /* Number of tuples modified */ 13 34 2 number_tuples_stored fixed bin (70); /* Number of tuples stored */ 13 35 13 36 /* END INCLUDE vrm_meter.incl.pl1 */ 288 289 290 291 dcl 1 tid aligned based (tid_ptr), /* MRDS tuple id (tid) */ 292 2 non_std_desc bit (1) unal, /* Non-standard descriptor bit */ 293 2 temp bit (1) unal, /* On if temp relation */ 294 2 file_id bit (7) unal, /* File id from mrds db_model file_id_list */ 295 2 comp_num bit (10) unal, /* Component number */ 296 2 offset bit (17) unal; /* Offset within component */ 297 298 dcl tid_ptr pointer; 299 300 301 dcl 1 vfd aligned based (vfd_ptr), /* Vfile desc */ 302 2 pad_1 bit (8) unal, 303 2 comp_number bit (10) unal, /* Component number */ 304 2 comp_offset bit (17) unal, /* Offset with in component */ 305 2 pade_2 bit (1) unal; 306 307 dcl vfd_ptr pointer; /* Pointer to vfd structure */ 308 309 dcl 1 block_head based, /* block header of vfile */ 310 2 is_preceding_block_free 311 bit (1) unal, 312 2 is_this_block_free bit (1) unal, 313 2 block_size fixed (19) unal, 314 2 flags, 315 3 lock_flag bit (1) unal, 316 3 stationary bit (1) unal, 317 3 indirect bit (1) unal, 318 3 after_applies bit (1) unal, 319 3 pad bit (6) unal, 320 3 excess_words fixed (3) unal, /* only used in indirect allocations */ 321 2 prev_free_block fixed (18) aligned, 322 2 next_free_block fixed (18) aligned; 323 324 dcl add_key_list_ptr ptr; 325 dcl attr_no fixed bin (17); 326 dcl cleanup condition; 327 dcl clock builtin; 328 dcl code fixed bin (35); 329 dcl cpu_time_and_paging_ entry (fixed bin, fixed bin (71), fixed bin); 330 dcl delete_key_list_ptr ptr; 331 dcl divide builtin; 332 dcl file_locked bit (1); 333 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 334 dcl i fixed bin (35); 335 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 336 dcl iox_$rewrite_record entry (ptr, ptr, fixed bin (21), fixed bin (35)); 337 dcl KSQU fixed bin int static options (constant) init (10); 338 dcl LOCK bit (2) aligned int static options (constant) init ("10"b); 339 dcl pf_1 fixed bin; 340 dcl pf_2 fixed bin; 341 dcl pf_dummy fixed bin; 342 dcl t1 fixed bin (71); 343 dcl t2 fixed bin (71); 344 dcl t3 float bin (63); 345 dcl temp_seg_ptr ptr; 346 dcl tuple_templet char (rs_info.record_length) based; 347 dcl UNLOCK bit (2) aligned int static options (constant) init ("00"b); 348 dcl vrmu_add_indexes entry (ptr, ptr, bit (36) aligned, fixed bin (35)); 349 dcl vrmu_build_index_list entry (ptr, ptr, ptr, ptr, ptr, fixed bin (35)); 350 dcl vrmu_cv_vector_to_tuple entry (ptr, ptr, ptr, bit (1) aligned, fixed bin (21), fixed bin (35)); 351 dcl vrmu_delete_indexes entry (ptr, ptr, bit (36) aligned, fixed bin (35)); 352 dcl vfile_desc fixed bin (35) aligned; 353 dcl z fixed bin; 354 355 dcl ( 356 dm_error_$no_tuple_id, 357 error_table_$unimplemented_version, 358 error_table_$no_record, 359 mdbm_error_$mod_key_attr, 360 sys_info$max_seg_size 361 ) fixed bin (35) ext static; 362 363 dcl (addrel, addr, currentsize, fixed, mod, null, rel, string) builtin; 364 365 366 end vrm_modify_tuples_by_id; 367 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/23/85 1341.9 vrm_modify_by_id.pl1 >spec>on>mrds.pbf-04/23/85>vrm_modify_by_id.pl1 264 1 10/14/83 1609.1 dm_typed_vector_list.incl.pl1 >ldd>include>dm_typed_vector_list.incl.pl1 266 2 10/14/83 1609.1 vu_typed_vector.incl.pl1 >ldd>include>vu_typed_vector.incl.pl1 268 3 10/14/83 1609.1 vrm_cursor.incl.pl1 >ldd>include>vrm_cursor.incl.pl1 270 4 10/14/83 1609.1 vrm_tuple.incl.pl1 >ldd>include>vrm_tuple.incl.pl1 272 5 10/14/83 1609.1 vrm_open_info.incl.pl1 >ldd>include>vrm_open_info.incl.pl1 274 6 10/14/83 1609.1 vrm_collection_info.incl.pl1 >ldd>include>vrm_collection_info.incl.pl1 276 7 10/14/83 1609.1 vrm_rel_desc.incl.pl1 >ldd>include>vrm_rel_desc.incl.pl1 278 8 10/14/83 1609.1 vrm_change_bits.incl.pl1 >ldd>include>vrm_change_bits.incl.pl1 280 9 10/14/83 1609.1 vrm_key_list.incl.pl1 >ldd>include>vrm_key_list.incl.pl1 282 10 10/14/83 1609.1 vrm_com.incl.pl1 >ldd>include>vrm_com.incl.pl1 284 11 03/06/85 1031.5 dm_element_id_list.incl.pl1 >ldd>include>dm_element_id_list.incl.pl1 286 12 10/14/83 1609.0 mdbm_rs_info.incl.pl1 >ldd>include>mdbm_rs_info.incl.pl1 288 13 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 000122 automatic fixed bin(35,0) initial dcl 11-28 set ref 51 11-28* GENERAL_TYPED_VECTOR_TYPE constant fixed bin(17,0) initial dcl 2-43 ref 83 I_cursor_ptr parameter pointer dcl 38 ref 7 7 44 I_typed_vector_ptr parameter pointer dcl 37 ref 7 7 43 KSQU constant fixed bin(17,0) initial dcl 337 ref 144 LOCK 000014 constant bit(2) initial dcl 338 set ref 232 232 O_code parameter fixed bin(35,0) dcl 40 set ref 7 7 69* 196* 197* O_number_of_tuples_modified parameter fixed bin(35,0) dcl 39 set ref 7 7 45* 66* UNLOCK 000004 constant bit(2) initial dcl 347 set ref 209 209 255 255 add_key_list_ptr 000150 automatic pointer dcl 324 set ref 98* 99 101 103 164* 178* addr builtin function dcl 363 ref 58 59 147 147 209 209 232 232 255 255 addrel builtin function dcl 363 ref 103 106 110 attr_index 3 based fixed bin(17,0) array level 3 dcl 6-6 ref 120 attr_no 000152 automatic fixed bin(17,0) dcl 325 set ref 117* 120 124 attribute 3 based structure array level 2 dcl 6-6 block_head based structure level 1 unaligned dcl 309 block_ptr 13 000124 automatic pointer level 2 packed unaligned dcl 12-3 set ref 149 change_bits based structure level 1 unaligned dcl 8-3 set ref 109 change_bits_ptr 000116 automatic pointer dcl 8-8 set ref 106* 107 109 110 112 124 156* 164* cleanup 000154 stack reference condition dcl 326 ref 49 clock builtin function dcl 327 ref 213 code 000162 automatic fixed bin(35,0) dcl 328 set ref 93* 94 94* 147* 148 156* 157 157* 160* 161 161* 164* 165 165* 170* 171 171* 174* 175 175* 178* 179 179* 209* 232* 233 233* 255* 256 256* com_ptr 74 based pointer level 2 dcl 5-6 ref 90 comp_num 0(09) based bit(10) level 2 packed unaligned dcl 291 ref 62 comp_number 0(08) based bit(10) level 2 packed unaligned dcl 301 set ref 62* comp_offset 0(18) based bit(17) level 2 packed unaligned dcl 301 set ref 63* cpu_time_and_paging_ 000010 constant entry external dcl 329 ref 78 212 currentsize builtin function dcl 363 ref 101 109 delete_key_list_ptr 000164 automatic pointer dcl 330 set ref 103* 104 106 156* 170* descriptor 6 000124 automatic fixed bin(35,0) level 2 dcl 12-3 set ref 141* dimension 1 based structure array level 2 packed unaligned dcl 2-24 divide builtin function dcl 331 ref 216 dm_error_$no_tuple_id 000030 external static fixed bin(35,0) dcl 355 ref 196 ecode parameter fixed bin(35,0) dcl 194 ref 192 196 197 element_id parameter bit(36) dcl 136 set ref 132 170* 178* element_id_list based structure level 1 dcl 11-21 element_id_list_ptr parameter pointer dcl 11-26 ref 7 7 51 56 58 65 error_table_$no_record 000034 external static fixed bin(35,0) dcl 355 set ref 148* 196 error_table_$unimplemented_version 000032 external static fixed bin(35,0) dcl 355 set ref 51* 83* file_locked 000166 automatic bit(1) unaligned dcl 332 set ref 47* 209 235* 254 259* flags 1 000124 automatic structure level 2 dcl 12-3 set ref 127* general_typed_vector based structure level 1 packed unaligned dcl 2-24 general_typed_vector_ptr parameter pointer dcl 138 in procedure "modify_one_tuple" set ref 132 160* general_typed_vector_ptr 000100 automatic pointer dcl 2-38 in procedure "modify_tuples_by_id" set ref 43* 65* 83 116 117 get_temp_segment_ 000012 constant entry external dcl 333 ref 93 i 000167 automatic fixed bin(35,0) dcl 334 set ref 56* 58 65 66* 101* 103 106 109* 110 110 116* 117* id 2 based bit(36) array level 2 dcl 11-21 set ref 58 65* identifier 1 based fixed bin(17,0) array level 3 packed unaligned dcl 2-24 ref 117 indexed 3(03) based bit(1) level 3 packed unaligned dcl 7-5 ref 155 163 169 177 iocb_ptr 10 based pointer level 2 dcl 3-7 set ref 147* 170* 174* 178* 209* 232* 255* iox_$control 000014 constant entry external dcl 335 ref 147 209 232 255 iox_$rewrite_record 000016 constant entry external dcl 336 ref 174 is_this_block_free 0(01) based bit(1) level 2 packed unaligned dcl 309 ref 149 key_list based structure level 1 dcl 9-3 set ref 101 last_call_stats 16 based structure level 2 dcl 13-5 set ref 80* 220 last_time_of_stats 64 based fixed bin(71,0) level 3 in structure "vrm_meter" dcl 13-5 in procedure "modify_tuples_by_id" set ref 219* last_time_of_stats 16 based fixed bin(71,0) level 3 in structure "vrm_meter" dcl 13-5 in procedure "modify_tuples_by_id" set ref 213* locate_sw 1(03) 000124 automatic bit(1) level 3 packed unaligned dcl 12-3 set ref 128* mbz2 14 000124 automatic fixed bin(17,0) initial array level 2 dcl 12-3 set ref 12-3* 12-3* mdbm_error_$mod_key_attr 000036 external static fixed bin(35,0) dcl 355 set ref 120* meter_ptr 20 based pointer level 2 dcl 3-7 ref 79 meter_sw 2(01) based bit(1) level 3 packed unaligned dcl 3-7 ref 76 186 211 237 mod builtin function dcl 363 ref 110 mod_seg_ptr 4 based pointer level 2 dcl 10-6 set ref 92 93* 96 null builtin function dcl 363 ref 92 number_attrs 13 based fixed bin(17,0) level 2 dcl 7-5 ref 107 number_of_attributes 2 based fixed bin(17,0) level 2 dcl 6-6 ref 119 number_of_change_bits based fixed bin(17,0) level 2 dcl 8-3 set ref 107* 109 112 number_of_dimensions 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 2-24 ref 116 number_of_elements 1 based fixed bin(35,0) level 2 dcl 11-21 ref 56 number_of_keys based fixed bin(17,0) level 2 dcl 9-3 set ref 99* 101 104* number_sec_indexes 10 based fixed bin(17,0) level 2 dcl 7-5 ref 99 104 number_times_locked 24 based fixed bin(70,0) level 3 dcl 13-5 set ref 237* 237 number_times_used 26 based fixed bin(70,0) level 3 dcl 13-5 set ref 218* number_tuples_modified 60 based fixed bin(70,0) level 3 dcl 13-5 set ref 186* 186 offset 0(19) based bit(17) level 2 packed unaligned dcl 291 ref 63 open_info_ptr 4 based pointer level 2 dcl 3-7 ref 86 87 opening_mode 3 based fixed bin(17,0) level 2 dcl 3-7 ref 144 page_faults 22 based fixed bin(70,0) level 3 dcl 13-5 set ref 217* pf_1 000170 automatic fixed bin(17,0) dcl 339 set ref 78* 217 pf_2 000171 automatic fixed bin(17,0) dcl 340 set ref 212* 217 pf_dummy 000172 automatic fixed bin(17,0) dcl 341 set ref 78* 212* position 1 based bit(1) array level 2 packed unaligned dcl 8-3 set ref 112* 124* primary_key_info_ptr 100 based pointer level 2 dcl 5-6 ref 115 record_length 2 000124 automatic fixed bin(21,0) level 2 dcl 12-3 set ref 149 153 153 record_ptr 4 000124 automatic pointer level 2 dcl 12-3 set ref 153 rs_info 000124 automatic structure level 1 dcl 12-3 set ref 147 147 shared 5 based bit(1) level 3 in structure "vrm_open_info" packed unaligned dcl 5-6 in procedure "modify_tuples_by_id" ref 87 shared 2 based bit(1) level 3 in structure "vrm_cursor" packed unaligned dcl 3-7 in procedure "modify_tuples_by_id" set ref 87* 143 149 182 statistics based structure level 1 unaligned dcl 13-15 string builtin function dcl 363 set ref 112* 127* switches 5 based structure level 2 in structure "vrm_open_info" dcl 5-6 in procedure "modify_tuples_by_id" switches 3(01) based structure level 2 in structure "vrm_rel_desc" packed unaligned dcl 7-5 in procedure "modify_tuples_by_id" switches 2 based structure level 2 in structure "vrm_cursor" dcl 3-7 in procedure "modify_tuples_by_id" t1 000174 automatic fixed bin(71,0) dcl 342 set ref 78* 215 t2 000176 automatic fixed bin(71,0) dcl 343 set ref 212* 215 t3 000200 automatic float bin(63) dcl 344 set ref 215* 216 temp_seg_ptr 000202 automatic pointer dcl 345 set ref 96* 98 tid based structure level 1 dcl 291 tid_ptr 000144 automatic pointer dcl 298 set ref 58* 62 63 total_stats 64 based structure level 2 dcl 13-5 set ref 220* 220 tuple_length 000106 automatic fixed bin(21,0) dcl 4-16 set ref 160* 174* tuple_ptr 000104 automatic pointer dcl 4-15 set ref 110* 153 156* 160* 164* 174* tuple_templet based char unaligned dcl 346 set ref 153* 153 type based fixed bin(17,0) level 2 packed unaligned dcl 2-24 ref 83 vcpu_time 20 based float bin(63) level 3 dcl 13-5 set ref 216* version based fixed bin(35,0) level 2 in structure "element_id_list" dcl 11-21 in procedure "modify_tuples_by_id" ref 51 version 000124 automatic fixed bin(17,0) initial level 2 in structure "rs_info" dcl 12-3 in procedure "modify_tuples_by_id" set ref 12-3* vfd based structure level 1 dcl 301 vfd_ptr 000146 automatic pointer dcl 307 set ref 59* 62 63 vfile_desc 000204 automatic fixed bin(35,0) dcl 352 set ref 59 61* 65* vfile_descriptor parameter fixed bin(35,0) dcl 137 ref 132 141 vrm_attr_info based structure level 1 unaligned dcl 7-28 vrm_collection_info based structure level 1 dcl 6-6 vrm_collection_info_ptr 000112 automatic pointer dcl 6-21 set ref 115* 119 120 vrm_com based structure level 1 dcl 10-6 vrm_com_ptr 000120 automatic pointer dcl 10-5 set ref 90* 92 93 96 vrm_cursor based structure level 1 dcl 3-7 vrm_cursor_ptr 000102 automatic pointer dcl 3-5 set ref 44* 76 79 86 87 87 89 143 144 147 149 170 174 178 182 186 209 211 232 237 255 vrm_meter based structure level 1 dcl 13-5 vrm_meter_ptr 000142 automatic pointer dcl 13-3 set ref 79* 80 186 186 213 216 217 218 219 220 220 220 237 237 vrm_open_info based structure level 1 dcl 5-6 vrm_open_info_ptr 000110 automatic pointer dcl 5-28 set ref 86* 90 115 156* 164* vrm_rel_desc based structure level 1 unaligned dcl 7-5 vrm_rel_desc_ptr 000114 automatic pointer dcl 7-41 set ref 89* 99 104 107 155 156* 160* 163 164* 169 177 vrm_relation_desc_ptr 6 based pointer level 2 dcl 3-7 ref 89 vrmu_add_indexes 000020 constant entry external dcl 348 ref 178 vrmu_build_index_list 000022 constant entry external dcl 349 ref 156 164 vrmu_cv_vector_to_tuple 000024 constant entry external dcl 350 ref 160 vrmu_delete_indexes 000026 constant entry external dcl 351 ref 170 z 000205 automatic fixed bin(17,0) dcl 353 set ref 119* 120* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. OLD_SIMPLE_TYPED_VECTOR_TYPE internal static fixed bin(17,0) initial dcl 2-43 SIMPLE_TYPED_VECTOR_TYPE internal static fixed bin(17,0) initial dcl 2-43 TYPED_VECTOR_LIST_VERSION_1 internal static fixed bin(17,0) initial dcl 1-19 VRM_COLLECTION_KEY_HEAD internal static char(16) initial unaligned dcl 6-26 VRM_OPEN_INFO_VERSION_1 internal static char(8) initial unaligned dcl 5-27 VRM_REL_DESC_KEY internal static varying char(256) initial dcl 7-46 VRM_REL_DESC_RECORD_ID internal static bit(12) initial unaligned dcl 7-43 VRM_REL_DESC_VERSION_1 internal static char(8) initial unaligned dcl 7-44 cb_number_of_change_bits automatic fixed bin(17,0) dcl 8-7 eil_number_of_elements automatic fixed bin(35,0) dcl 11-27 fixed builtin function dcl 363 gtv_number_of_dimensions automatic fixed bin(17,0) dcl 2-40 key_list_ptr automatic pointer dcl 9-19 kl_number_of_keys automatic fixed bin(17,0) dcl 9-20 rel builtin function dcl 363 simple_typed_vector based structure level 1 packed unaligned dcl 2-17 simple_typed_vector_ptr automatic pointer dcl 2-33 stv_number_of_dimensions automatic fixed bin(17,0) dcl 2-35 sys_info$max_seg_size external static fixed bin(35,0) dcl 355 tuple based structure level 1 dcl 4-7 tuple_pad_length internal static fixed bin(17,0) initial dcl 4-18 tvl_maximum_number_of_vectors automatic fixed bin(35,0) dcl 1-21 typed_vector_list based structure level 1 dcl 1-10 typed_vector_list_ptr automatic pointer dcl 1-18 vci_no_of_attributes automatic fixed bin(17,0) dcl 6-23 voi_no_of_index_collections automatic fixed bin(17,0) dcl 5-29 vrd_no_of_attrs automatic fixed bin(17,0) dcl 7-42 vrm_attr_info_ptr automatic pointer dcl 7-45 vrm_collection_header_type internal static bit(4) initial unaligned dcl 6-24 NAMES DECLARED BY EXPLICIT CONTEXT. Exit 000227 constant label dcl 71 ref 199 error 001100 constant entry internal dcl 192 ref 51 83 94 120 148 157 161 165 171 175 179 233 256 exit_of_modify_one_tuple 001062 constant label dcl 182 ref 149 init_modify 000234 constant entry internal dcl 74 ref 54 lock 001320 constant entry internal dcl 230 ref 144 modify_one_tuple 000545 constant entry internal dcl 132 ref 65 modify_tuples_by_id 000060 constant entry external dcl 7 tidy_up 001116 constant entry internal dcl 207 ref 49 71 unlock 001375 constant entry internal dcl 252 ref 182 vrm_modify_tuples_by_id 000071 constant entry external dcl 7 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1700 1740 1451 1710 Length 2414 1451 40 440 226 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME modify_tuples_by_id 300 external procedure is an external procedure. on unit on line 49 64 on unit init_modify internal procedure shares stack frame of external procedure modify_tuples_by_id. modify_one_tuple internal procedure shares stack frame of external procedure modify_tuples_by_id. error internal procedure shares stack frame of external procedure modify_tuples_by_id. tidy_up 88 internal procedure is called by several nonquick procedures. lock internal procedure shares stack frame of external procedure modify_tuples_by_id. unlock internal procedure shares stack frame of external procedure modify_tuples_by_id. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME modify_tuples_by_id 000100 general_typed_vector_ptr modify_tuples_by_id 000102 vrm_cursor_ptr modify_tuples_by_id 000104 tuple_ptr modify_tuples_by_id 000106 tuple_length modify_tuples_by_id 000110 vrm_open_info_ptr modify_tuples_by_id 000112 vrm_collection_info_ptr modify_tuples_by_id 000114 vrm_rel_desc_ptr modify_tuples_by_id 000116 change_bits_ptr modify_tuples_by_id 000120 vrm_com_ptr modify_tuples_by_id 000122 ELEMENT_ID_LIST_VERSION_1 modify_tuples_by_id 000124 rs_info modify_tuples_by_id 000142 vrm_meter_ptr modify_tuples_by_id 000144 tid_ptr modify_tuples_by_id 000146 vfd_ptr modify_tuples_by_id 000150 add_key_list_ptr modify_tuples_by_id 000152 attr_no modify_tuples_by_id 000162 code modify_tuples_by_id 000164 delete_key_list_ptr modify_tuples_by_id 000166 file_locked modify_tuples_by_id 000167 i modify_tuples_by_id 000170 pf_1 modify_tuples_by_id 000171 pf_2 modify_tuples_by_id 000172 pf_dummy modify_tuples_by_id 000174 t1 modify_tuples_by_id 000176 t2 modify_tuples_by_id 000200 t3 modify_tuples_by_id 000202 temp_seg_ptr modify_tuples_by_id 000204 vfile_desc modify_tuples_by_id 000205 z modify_tuples_by_id THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return mod_fx1 enable ext_entry int_entry clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cpu_time_and_paging_ get_temp_segment_ iox_$control iox_$rewrite_record vrmu_add_indexes vrmu_build_index_list vrmu_cv_vector_to_tuple vrmu_delete_indexes THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$no_tuple_id error_table_$no_record error_table_$unimplemented_version mdbm_error_$mod_key_attr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 28 000036 12 3 000040 7 000053 43 000077 44 000103 45 000106 47 000107 49 000110 51 000132 54 000146 56 000147 58 000161 59 000166 61 000170 62 000171 63 000176 65 000203 66 000215 67 000220 69 000225 71 000227 72 000233 74 000234 76 000235 78 000241 79 000254 80 000257 83 000305 86 000324 87 000327 89 000335 90 000337 92 000342 93 000346 94 000373 96 000377 98 000402 99 000403 101 000406 103 000411 104 000414 106 000417 107 000423 109 000426 110 000432 112 000442 115 000447 116 000452 117 000467 119 000500 120 000511 122 000525 124 000527 125 000534 127 000541 128 000542 130 000544 132 000545 141 000547 143 000551 144 000555 147 000561 148 000616 149 000630 153 000642 155 000650 156 000654 157 000675 160 000701 161 000725 163 000731 164 000735 165 000756 169 000762 170 000766 171 001005 174 001011 175 001027 177 001033 178 001037 179 001056 182 001062 186 001067 190 001077 192 001100 196 001102 197 001112 199 001114 207 001115 209 001123 211 001162 212 001167 213 001202 215 001206 216 001213 217 001216 218 001223 219 001225 220 001227 225 001317 230 001320 232 001321 233 001356 235 001362 237 001364 242 001374 252 001375 254 001376 255 001400 256 001435 259 001441 261 001442 ----------------------------------------------------------- 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