COMPILATION LISTING OF SEGMENT mrds_dsl_get_rslt_info Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 08/01/88 1330.8 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* ****************************************************** 10* * * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 mrds_dsl_get_rslt_info: 19 proc; 20 21 exit: 22 return; 23 24 /* HISTORY: 25* 26* 77-05-01 J. C. C. Jagernauth: Initially written. 27* 28* 78-09-01 J. C. C. Jageranuth: Modified for MR7.0. 29* 30* 80-02-26 Lindsey L. Spratt: Modified to fix submodel bug, get_file_rels 31* was using mr_ptr instead of model_files_ptr; due to position in argument 32* lists, mr_ptr and area_ptr were basically the same piece of storage, what's 33* done to one happened to the other. 34* 35* 80-06-01 Jim Gray : Modified to take advantage of the new open_mode info in 36* the dbcb, and return it from the get_pn entry, so that list_db in linus 37* would work as documented. 38* 39* 80-06-02 Jim Gray : Modified to correctly pass back an error code for tne 40* entries get_rels and get_file_relations, when an unknown file name was 41* given on input, instead of passing back the code from close. 42* 43* 80-06-03 Jim Gray : Modified to fix linus submodel bug, during linus_open 44* of a submodel, model_files were getting written on during setting of scope 45* data because of successive calls to get_file_names and get_relation_names, 46* where linus was passing a pointer to a non-freeing area, but the 47* mrds_dsm_dsmd interface expects a freeing area, and was thus doing a free 48* of some temporary storage it used(in mrds_dsm_read_file_rels). the same is 49* true of the dmd_ interface for models, when a cleanup is signaled. The 50* fix(temporaryily) was to install a local area, that is freeing, in this 51* routine to buffer linus from the problem, and do the allocation here into 52* the linus(or other caller) area. 53* 54* 80-12-10 Jim Gray : declared the scope structure passed back by the 55* get_scope_info entry to be "like" the mdbm_scope_info include file 56* structure, which changed to support r-s-m-d scope modes, rather than r-u 57* modes. Linus will now have to call this entry, rather than maintaining 58* it's own internal static scope mode information. 59* 60* 81-02-11 Jim Gray : changed calls to dsmd_, into mrds_dsm_dsmd calls, in 61* order to call internal, not external bound segment names 62* 63* 81-04-22 Jim Gray : removed use of the mrds_dm_get_file_rels module, 64* instead making the relation name(s) returned equal to the input file name, 65* on the premise that blocked files will never be implemented. 66* 67* 81-05-13 Rickie E. Brinegar: added the get_security_info entry to return 68* the mrds_security_info structure which consist of a security bit and an 69* administrator bit. 70* 71* 81-05-14 Rickie E. Brinegar: modified the get_rslt_data procedure to be 72* sensitve to the mdbm_secured and administrator bits in the resultant. No 73* key information is returned, the key head attribute is flagged as being and 74* index, and the domain name is not returned for non-administrators on 75* secured databases. 76* 77* 81-06-08 Davids: removed all references to mrds_dsm_dsmd$* from the 78* get_file_relations entry and just have the code return as the relation name 79* the file name for submodels (this is what the mrds_dsm_dsm code did anyway, 80* also it has already been done for the model). Also changed the get_rels 81* entry so that references to mrds_dsm_dsm$* have been replaced by the 82* internal mrds interface modules. 83* 84* 81-06-16 Rickie E. Brinegar: Changed get_file_names entry to get_rslt_rels 85* and modified get_rslt_rels to call dsl_v1_$get_rslt_rels for old version 86* databases. 87* 88* 81-06-17 Rickie E. Brinegar: Modified the get_rslt_info entry to call 89* dsl_v1_$get_rslt_info for old version databases. At the same time, 90* get_rslt_data was modified to fill in the descriptor information in the 91* rslt_info_structure. Also modified the get_temp_info entry to call 92* dsl_v1_$get_temp_info for old version database. 93* 94* 81-06-19 Rickie E. Brinegar: Removed the unused entries get_rslt_desc, 95* get_temp_desc, get_file_relations and get_rels. 96* 97* 81-08-24 Rickie E. Brinegar: Modified the get_scope_info entry to call 98* dsl_v1_$get_scope_info to get the scope info for old version models, and to 99* convert the old version info structure to a new version info structure. 100* 101* 82-08-20 D. Woodka : Deleted reference to rm_attr_info.bit_offset for 102* DMS conversion. 103* 104* 83-02-18 B. Moberg : Modified to tell users which attributes are part of 105* the key of a relation in a secure database 106* 107* 83-06-20 Davids: Removed check for old version database and the call 108* to v1 code if it was an old version db (old version dbs can no longer 109* be opened) 110**/ 111 112 get_rslt_info: 113 entry (db_index, rel_name, in_area_ptr, out_rslt_ptr, code); 114 115 declare out_rslt_ptr ptr; 116 area_ptr = in_area_ptr; 117 118 /* return attribute info for a permanent relation */ 119 120 call init; /* get dbcb pointer */ 121 122 rmra_ptr = rm_db_info.ra_ptr; /* point to rel array */ 123 do i = 1 to rm_rel_array.num_rels /* locate relation name */ 124 while (rel_name ^= rm_rel_array.name.submodel (i)); 125 end; 126 if i > rm_rel_array.num_rels then do; /* relation is not defined */ 127 code = mrds_error_$undef_rel; 128 rslt_ptr = null; 129 end; 130 else do; 131 rmri_ptr = rm_rel_array.rel_data.ri_ptr (i); /* point to resultant model relation information */ 132 call get_rslt_data (rslt_ptr); /* fill in rslt_info structure */ 133 end; 134 135 out_rslt_ptr = rslt_ptr; 136 137 return; /* end get_rslt_info */ 138 get_temp_info: 139 entry (db_index, rel_index, in_area_ptr, temp_rslt_ptr, code); 140 141 declare temp_rslt_ptr ptr; 142 area_ptr = in_area_ptr; 143 144 /* return attribute info for a temporary relation */ 145 146 call init; /* get dbcb pointer */ 147 148 rmra_ptr = rm_db_info.tra_ptr; 149 if rel_index < 1 | rel_index > mrds_data_$max_temp_rels then do; 150 /* undef temp rel */ 151 code = mrds_error_$undef_temp_rel; 152 rslt_ptr = null; 153 end; 154 else do; /* if is defined */ 155 rmri_ptr = rm_rel_array.rel_data.ri_ptr (rel_index); 156 /* get pointer to temp rel info */ 157 call get_rslt_data (rslt_ptr); 158 end; /* if rel defined */ 159 160 temp_rslt_ptr = rslt_ptr; 161 162 return; /* end get_temp_info */ 163 164 get_scope_info: 165 entry (db_index, in_area_ptr, sci_ptr, code); 166 area_ptr = in_area_ptr; 167 168 /* return scope info for each permanent relation */ 169 170 dcl 1 scp_info aligned like scope_info based (sci_ptr); 171 dcl sci_ptr ptr; 172 173 174 175 176 sci_ptr = null; 177 call init; /* get dbcb pointer */ 178 179 scope_ptr = dbcb.scope_ptr; /* point to scope info structure */ 180 max_file_init = scope_ptr -> scope_info.nfiles; 181 allocate scp_info set (sci_ptr) in (area_ptr -> wk_area); 182 unspec (sci_ptr -> scp_info) = unspec (scope_ptr -> scope_info); 183 /* init user scope_ptr->scope information */ 184 185 get_scope_info_exit: 186 return; /* end get_scope_info */ 187 188 get_pn: 189 entry (db_index, db_path, mode, code); 190 191 /* return the database pathname, and opening mode */ 192 193 declare mode char (20); 194 declare mode_code fixed bin; 195 196 call init; /* get dbcb pointer */ 197 198 db_path = rm_db_info.sm_path; 199 200 /* set the mode argument */ 201 202 mode_code = fixed (dbcb.open_mode); 203 if mode_code = 0 then 204 mode = "Mode not available"; 205 else if mode_code = 1 then 206 mode = "retrieval"; 207 else if mode_code = 2 then 208 mode = "update"; 209 else if mode_code = 3 then 210 mode = "exclusive_retrieval"; 211 else if mode_code = 4 then 212 mode = "exclusive_update"; 213 else mode = "Unknown opening mode"; 214 215 return; /* end get_pn */ 216 217 get_rslt_rels: 218 entry (db_index, in_area_ptr, mr_ptr, code); 219 area_ptr = in_area_ptr; 220 221 222 /* return model or sub-model file names */ 223 224 call init; 225 226 rmra_ptr = rm_db_info.ra_ptr; 227 num_relations_alloc = rm_rel_array.num_rels; 228 allocate model_relations set (mr_ptr) in (area_ptr -> wk_area); 229 do i = 1 to model_relations.nrels; 230 if dbcb.dsm_sw then 231 mr_ptr -> model_relations.relation_name (i) = 232 rm_rel_array.name.submodel (i); 233 else mr_ptr -> model_relations.relation_name (i) = 234 rm_rel_array.rel_data.model_name (i); 235 end; 236 237 return; 238 239 get_db_version: 240 entry (db_index, db_version, code); 241 242 /* return version number of data base manager */ 243 244 dcl db_version fixed bin; 245 246 call init; /* get dbcb pointer */ 247 248 db_version = rm_db_info.db_version; 249 250 return; 251 252 253 /* 81-05-13 Rickie E. Brinegar: Start added code *************************** */ 254 255 get_security_info: 256 entry (db_index, security_info_area_ptr, security_ptr, code); 257 258 dcl (security_info_area_ptr, security_ptr) ptr; 259 260 call init; 261 262 allocate mrds_security_info set (security_ptr) 263 in (security_info_area_ptr -> wk_area); 264 mrds_security_info_ptr = security_ptr; 265 mrds_security_info.db_secure = rm_db_info.mdbm_secured; 266 mrds_security_info.administrator = rm_db_info.administrator; 267 mrds_security_info.pad = "0"b; 268 code = 0; 269 return; 270 271 /* 81-05-13 Rickie E. Brinegar: End added code ***************************** */ 272 273 init: 274 proc; 275 276 /* initialize the dbcb pointer */ 277 278 code = 0; 279 call mu_database_index$get_resultant_model_pointer (db_index, dbcb_ptr); 280 if dbcb_ptr = null then do; /* undefined */ 281 code = mrds_error_$invalid_db_index; 282 go to exit; 283 end; 284 rdbi_ptr = dbcb.rdbi_ptr; 285 286 end init; 287 288 get_rslt_data: 289 proc (rslt_ptr); 290 291 declare rslt_ptr ptr; 292 293 /* fill rslt info structure using the resultant model 294* relation, attribute and domain information */ 295 296 rslt_alloc = rm_rel_info.num_attr; 297 allocate rslt_info set (rslt_ptr) in (area_ptr -> wk_area); 298 rslt_ptr -> rslt_info.num_key_attr = rm_rel_info.nkey_attr; 299 rslt_ptr -> rslt_info.key_length = rm_rel_info.max_key_len; 300 rslt_ptr -> rslt_info.retrieve, rslt_ptr -> rslt_info.total_key = "1"b; 301 rslt_ptr -> rslt_info.modify, rslt_ptr -> rslt_info.store, 302 rslt_ptr -> rslt_info.delete, rslt_ptr -> rslt_info.inversion = "0"b; 303 do i = 1 to rm_rel_info.num_attr; /* init attr info */ 304 rai_ptr = rm_rel_info.attr_ptrs (i); /* point to attribute information */ 305 rdi_ptr = rm_attr_info.domain_ptr; /* point to domain information */ 306 307 /* 81-05-14 Rickie E. Brinegar: Start changed code ************************* */ 308 309 rslt_ptr -> rslt_info.attr.attr_name (i) = rm_attr_info.name; 310 rslt_ptr -> rslt_info.attr.attr_length (i) = rm_attr_info.bit_length; 311 312 rslt_ptr -> rslt_info.attr.inver_flag (i) = rm_attr_info.index_attr; 313 rslt_ptr -> rslt_info.attr.key_flag (i) = rm_attr_info.key_attr; 314 rslt_ptr -> rslt_info.attr.key_attr_order (i) = rm_attr_info.key_order; 315 if ^rm_db_info.mdbm_secured | rm_db_info.administrator then do; 316 rslt_ptr -> rslt_info.attr.domain_name (i) = rm_domain_info.name; 317 end; 318 else do; 319 rslt_ptr -> rslt_info.attr.domain_name (i) = ""; 320 end; 321 322 /* 81-05-14 Rickie E. Brinegar: End changed code *************************** */ 323 324 rslt_ptr -> rslt_info.attr (i).descriptor = rm_domain_info.user_desc; 325 if rslt_ptr -> rslt_info.attr.inver_flag (i) then 326 rslt_ptr -> rslt_info.inversion = "1"b; 327 end; /* attribute loop */ 328 329 end get_rslt_data; 330 331 dcl area_ptr ptr; 332 dcl code fixed bin (35); 333 dcl db_index fixed bin (35); 334 dcl db_path char (168) var; 335 dcl i fixed bin (35); /* internal index */ 336 dcl in_area_ptr ptr; 337 dcl local_area area (4096); 338 dcl mrds_data_$max_temp_rels fixed bin (35) ext; 339 dcl mrds_error_$invalid_db_index fixed bin (35) ext; 340 dcl mrds_error_$undef_rel fixed bin (35) ext; 341 dcl mrds_error_$undef_temp_rel fixed bin (35) ext; 342 dcl mu_database_index$get_resultant_model_pointer entry (fixed bin (35), ptr); 343 dcl rel_index fixed bin (35); /* Input: temp rel index */ 344 dcl rel_name char (*); 345 dcl submodel_iocb_ptr ptr init (null ()); 346 dcl sys_info$max_seg_size fixed bin (35) ext; 347 dcl wk_area area (sys_info$max_seg_size) based (area_ptr); 348 dcl (addr, empty, fixed, null, rel, unspec) builtin; 349 1 1 /* BEGIN INCLUDE FILE mrds_model_relations.incl.pl1 1 2* 1 3* Created October, 1975 for release in MR 4.0 */ 1 4 1 5 dcl 1 model_relations based (mr_ptr), /* structure to return names of all relations in a model */ 1 6 2 nrels fixed bin (10), /* number of relations */ 1 7 2 relation_name (num_relations_alloc refer (model_relations.nrels)) char (32); /* relation names */ 1 8 1 9 dcl num_relations_alloc fixed bin (10); /* number of relations in model for allocation purposes */ 1 10 1 11 dcl mr_ptr ptr; 1 12 1 13 /* END INCLUDE FILE mrds_model_relations.incl.pl1 */ 1 14 350 351 2 1 /* BEGIN mrds_dbcb.incl.pl1 -- jaw, 11/7/78 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(85-11-17,Dupuis), approve(85-12-16,MCR7314), 2 7* audit(86-02-04,Brunelle), install(86-02-05,MR12.0-1013): 2 8* This entry is being made to cover the change made on 85-07-01 by Thanh 2 9* Nguyen. The scopes_changed flag was added to make checking for this 2 10* more efficient (mrds error list #137). 2 11* 2) change(86-06-10,Blair), approve(86-08-07,MCR7491), 2 12* audit(86-08-07,Gilcrease), install(86-08-15,MR12.0-1127): 2 13* Add a bit called dont_check_txn_id to indicate whether or not we should 2 14* care if multiple txns use the same selection_expression. (mrds #156) 2 15* 3) change(87-11-23,Hergert), approve(88-06-28,MCR7903), 2 16* audit(88-06-28,Dupuis), install(88-08-01,MR12.2-1073): 2 17* Added parser_work_area_ptr and mrds_se_info_ptr for new parser. 2 18* END HISTORY COMMENTS */ 2 19 2 20 2 21 /* WARNING 2 22* If the dbcb structure is changed then the mrds_data_ 2 23* item saved_res_version MUST be incremented to invalidate all 2 24* existing saved resultants 2 25**/ 2 26 2 27 /* HISTORY : 2 28* 2 29* modified by Jim Gray - - 80-10-24, to add new_select_expr bit for 2 30* tid_list management 2 31* 2 32* 81-1-9 Jim Gray : added like reference for ease in making the 2 33* phony resultant in mu_database_index, without having the area dcl 2 34* included. 2 35* 2 36* 81-06-17 Roger Lackey : added last_store_rel_name for use by 2 37* mrds_dsl_store 2 38* 2 39* 81-06-26 Roger Lackey : Added no_optimize and print_search_order 2 40* switches 2 41* 2 42* 81-07-06 Jim Gray : added identifier for the current selection 2 43* expression, so that relation statistics can be updated relative 2 44* to number of selection expressions seem. Also removed init for 2 45* last_store_rel_name, as this iw now properly done in 2 46* mrds_dsl_init_res. 2 47* 2 48* 81-07-17 Roger Lackey : added pred_ptr and unused_ptrs. 2 49* 2 50* 82-08-19 Mike Kubicar : added store_vector field. This is needed 2 51* for the conversion to the relation manager. 2 52* 2 53* 82-08-23 Davids: added the relmgr_entries and access_costs 2 54* substructures so that the entries and costs can change 2 55* depending on the type of database that is opened. 2 56* 2 57* 82-09-09 Mike Kubicar : added modify_vector field. This is needed 2 58* since modify uses a different vector type (general) than does store. 2 59* 2 60* 82-09-20 Davids: changed names of (store modify)_vector to 2 61* (store modify)_vector_ptr. Also (delete modify)_tuple_by_id to 2 62* (delete modify)_tuples_by_id. added the element cursor_storage_ptr 2 63* which should be inited to null and will be set by mu_cursor_manager_$get 2 64* during the first call. 2 65* 2 66* 82-09-21 Davids: renamed cursor_storage_ptr to cursor_ptrs_storage_ptr 2 67* since it deals with the pointers to the cursors and not the cursors 2 68* themelves and added the element cursor_storage_area_ptr which points 2 69* to the area where the cursors are kept. 2 70* 2 71* 82-09-22 Davids: renamed the transact_ctl_seg to transactions_needed. 2 72* the transact_ctl_seg always had a value of 0 and really didn't mean 2 73* anything. 2 74* 2 75* 82-09-22 Mike Kubicar : added create_relation, create_index and 2 76* destroy_relation_by_opening to relmgr_entries. They are needed 2 77* by mrds_dsl_define_temp_rel. 2 78* 2 79* 82-09-24 Donna Woodka : added put_tuple to relmgr_entries. It 2 80* is needed by mu_store. 2 81* 2 82* 82-11-12 Davids: changed the declaration of the access_costs from fixed 2 83* bin to float bin since the values are not integers. 2 84* 2 85* 83-02-02 Davids: added the dbc_uid element. This will allow mrds to make 2 86* sure that the dbc_ptr still points to the correct segment. Element was 2 87* added to the end of the structure to allow modules that don't use 2 88* the element to continue to reference the dbcb structure without recompiling. 2 89* 2 90* 83-02-25 Davids: added the concurrency_on and rollback_on elements. These 2 91* are needed so that temp rels can be created with the same file attributes 2 92* as the permanent relations. 2 93* 2 94* 83-05-02 Mike Kubicar : Deleted get_next_search_specification_ptr and 2 95* added the resultant_in_pdir bit. 2 96* 2 97* 83-05-18 Davids: reduced the number of reserved bits to 14 (from 15) and 2 98* added the res_already_made element. 2 99* 2 100* 83-05-24 Mike Kubicar : Updated the relation manager calling sequences. 2 101* 2 102* 83-08-03 Mike Kubicar : Added the element_id_list_segment_ptr and removed 2 103* one of the unused pointers. 2 104* 2 105* 83-09-20 Ron Harvey: Added relmgr_entries.get_population. 2 106* 2 107* 84-08-27 John Hergert: Created compiled_se_info_ptr from unused_ptrs(2) 2 108* leaving unused_ptrs(1). 2 109* 2 110* 85-01-15 Thanh Nguyen: Added the work_area_ptr and removed the last 2 111* unused_ptrs (1). 2 112* 2 113* 85-04-12 Thanh Nguyen: Added user_started_transaction and 2 114* non_shared_to_shared flags. Also added se_transaction_id and some more 2 115* spare ptrs, entries and reserved storages for future enhancement, since 2 116* we changed the saved_res_version from rslt0001 to rslt0002. 2 117* 2 118* 85-07-01 Thanh Nguyen: Added scopes_changed flag. This flag is set by 2 119* common routine of mrds_dsl_set_scope, reset by mrds_dsl_optimize and 2 120* mrds_dsl_gen_srch_prog when building of a new search_vars. 2 121**/ 2 122 2 123 2 124 /* this structure is based on the {unique_name}.mrds.dbcb segment 2 125* that constitutes the non-secure portion of the resultant model that is 2 126* created during the opening of a database. it contains variables that 2 127* are used during the runtime access of the database, and an area 2 128* for evaluation of requests. it points to four other 2 129* segments in the resultant model, {unique_name}.mrds.rdbi, the secure 2 130* portion of the resultant(see mdbm_rm_db_info.incl.pl1), 2 131* {unique_name}.mrds.select, an area for selection expression evaluation, 2 132* {unique_name}.mrds.curdat, and {unique_name}.mrds.stadat, two segments 2 133* used in the elimination of duplicate tuples during a retrieve. 2 134* the dbcb area holds the structure in mdbm_scope_info.incl.pl1 2 135* that is used when the database is using the file scope mechanism 2 136* for concurrency control over file readying. the segment overlayed via 2 137* mrds_dbc.incl.pl1 structure is pointed to and also handles concurrency control, 2 138* across database openings. the pointer to this dbcb structure is kept in a table 2 139* which associates database indexes(returned from a call to dsl_$open), with particular 2 140* opening instances of resultant models. (see mu_database_index routine) */ 2 141 2 142 dcl 1 dbcb aligned based (dbcb_ptr), /* DBCB -- non-secure portion */ 2 143 2 data like dbcb_data, 2 144 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (dbcb.static_area)))); 2 145 2 146 dcl dbcb_ptr ptr; 2 147 2 148 declare 1 dbcb_data based, /* info part of dbcb, separated out so that 2 149* like references can avoid getting the area declaration */ 2 150 2 rdbi_ptr ptr, /* pointer to write protected mdbm_util_ info. */ 2 151 2 range_ptr ptr, /* ptr to range structure, or null */ 2 152 2 select_ptr ptr, /* ptr to select list, or null */ 2 153 2 sv_ptr ptr, /* pointer to search variables */ 2 154 2 so_ptr ptr, /* pointer to search operators */ 2 155 2 ti_ptr ptr, /* pointer to tuple info */ 2 156 2 lit_ptr ptr, /* pointer to the literal area, or null */ 2 157 2 current_ptr ptr, /* ptr to select list resulting from -current clause */ 2 158 2 ss_ptr ptr, /* ptr to select sets block if not simple s.e. */ 2 159 2 retr_info_ptr ptr, /* ptr to retrieve info area */ 2 160 2 trel_info_ptr ptr, /* ptr to retrieve info area */ 2 161 2 sti_ptr ptr, /* pointer to store info */ 2 162 2 dbc_ptr ptr, /* pointer to the data base control segment */ 2 163 2 sfi_ptr ptr, /* points to head of scalar function list */ 2 164 2 scope_ptr ptr, /* points to array of scope tuples */ 2 165 2 select_area_ptr ptr, /* ptr to area for current selection expression allocations */ 2 166 2 current_data_ptr ptr, /* ptr to one of 2 segments used by mrds_dsl_retrieve 2 167* for eliminating duplicate tuples. */ 2 168 2 static_data_ptr ptr, /* ptr to one of 2 segments used by mrds_dsl_retrieve 2 169* for eliminating duplicate tuples. */ 2 170 2 store_area_ptr ptr, /* temp storage area for dsl_$store */ 2 171 2 retrieve_area_ptr ptr, /* temp storage for dsl_$retrieve */ 2 172 2 modify_area_ptr ptr, /* temp storage area for dsl_$modify */ 2 173 2 delete_area_ptr ptr, /* temp storage area for dsl_$delete */ 2 174 2 def_temp_rel_area_ptr ptr, /* temp storage area for dsl_$define_temp_rel */ 2 175 2 pred_ptr ptr, /* Pointer to pred_array */ 2 176 2 store_vector_ptr ptr, /* Vector structure used during store operations */ 2 177 2 modify_vector_ptr ptr, /* Used during modifies */ 2 178 2 element_id_list_segment_ptr ptr, /* Points to the segment used to hold element_id_list structures */ 2 179 2 compiled_se_info_ptr ptr, /* points to the segment containing all info on compiled sexs */ 2 180 2 work_area_ptr ptr, /* Work area for encode/decode value allocations in mu_retrieve */ 2 181 2 se_info_ptr ptr, /* Points to se_info struct. Primarily for error reports */ 2 182 2 parser_work_area_ptr ptr, /* work area for parser */ 2 183 2 reserved_ptrs (4) ptr, /* Reserved for future use */ 2 184 2 another_flag bit (1) unal, /* on if predicate was -another */ 2 185 2 current_flag bit (1) unal, /* on if predicate was -current clause */ 2 186 2 dbc_incr bit (1) unal, /* on if dbc open mode has been incremented for this user */ 2 187 2 delete_flag bit (1) unal, /* On if search was called from mrds_dsl_sec_delete */ 2 188 2 dup_retain bit (1) unaligned, /* On if dup tuples allowed for retrieval */ 2 189 2 prev_select bit (1) unal, /* on if prev. select block processed in this s.e. */ 2 190 2 possible_op bit (1) unal, /* on of arith op. allowed */ 2 191 2 sel_clause bit (1) unal, /* on if currently in select clause */ 2 192 2 dsm_sw bit (1) unal, /* on if data base was opened via data submodel */ 2 193 2 val_rtrv bit (1) unal, /* if s.e. valid for retrieve */ 2 194 2 val_mod bit (1) unal, /* for modify */ 2 195 2 val_del bit (1) unal, /* for delete */ 2 196 2 val_dtr bit (1) unal, /* for define temp rel */ 2 197 2 transactions_needed bit (1) unal, /* On => transaction must be started or in progress does 2 198* not imply that the database is of type page_file */ 2 199 2 open_mode bit (3) unal, /* 0=>unknown, 1=>r, 2=>u, 3=>er, 4=>eu, >4=>bad */ 2 200 2 new_select_expr bit (1) unal, /* on => starting a new tid list management period */ 2 201 2 no_optimize bit (1) unal, /* On => no optimize */ 2 202 2 print_search_order bit (1) unal, /* On => print the search order */ 2 203 2 resultant_in_pdir bit (1) unal, /* On => Temp segments are in the process dir */ 2 204 2 res_already_made bit (1) unal, /* On => resultant has been made based on a saved copy */ 2 205 2 user_started_transaction bit (1) unal, /* On => user already started his own transaction. */ 2 206 2 non_shared_to_shared bit (1) unal, /* On => user changed the scope from non shared to shared 2 207* inside a sequence of -another selection expression. */ 2 208 2 scopes_changed bit (1) unal, /* On => scopes had been changed by set_scopes or delete_scopes */ 2 209 2 dont_check_txn_id bit (1) unal, /* On => cpmd needs same selection exp across multiple txns */ 2 210 2 reserved bit (10) unal, /* reserved for future use */ 2 211 2 nseq_sch fixed bin (35), /* no. tuples located via sequential search */ 2 212 2 nind_sch fixed bin (35), /* no. tuples located via index search */ 2 213 2 nhash_sch fixed bin (35), /* no. tuples located via hash search */ 2 214 2 nlk_sch fixed bin (35), /* no tuples located via link search */ 2 215 2 cur_lit_offset fixed bin (35), /* current bit offset in literal string */ 2 216 2 dbi fixed bin (35), /* database index for this opening */ 2 217 2 last_s_e_id_num fixed bin (35), /* identifying number for last selection expression seen */ 2 218 2 se_transaction_id bit (36) aligned, /* transaction id from beginning of select expression */ 2 219 2 last_store_rel_name char (32), /* Name of relation last used for store */ 2 220 2 cursor_ptrs_storage_ptr ptr, /* pointer to space where cursor ptrs are stored */ 2 221 2 cursor_storage_area_ptr ptr, /* pointer to area where the cursors are kept */ 2 222 2 reserved_words (10) fixed bin (35), /* Reserved for future use */ 2 223 2 relmgr_entries, /* relation manager entries */ 2 224 3 open entry (char (*), char (*), bit (36) aligned, fixed bin (35)), 2 225 3 close entry (bit (36) aligned, fixed bin (35)), 2 226 3 create_cursor entry (bit (36) aligned, ptr, ptr, fixed bin (35)), 2 227 3 destroy_cursor entry (ptr, ptr, fixed bin (35)), 2 228 3 set_scope entry (bit (36) aligned, bit (2) aligned, bit (2) aligned, fixed bin (35)), 2 229 3 delete_tuples_by_id entry (ptr, ptr, fixed bin (35), fixed bin (35)), 2 230 3 modify_tuples_by_id entry (ptr, ptr, ptr, fixed bin (35), fixed bin (35)), 2 231 3 get_tuple_by_id entry (ptr, bit (36) aligned, ptr, ptr, ptr, fixed bin (35)), 2 232 3 get_tuples_by_spec entry (ptr, ptr, ptr, ptr, ptr, fixed bin (35)), 2 233 3 get_tuple_id entry (ptr, ptr, ptr, ptr, fixed bin (35)), 2 234 3 put_tuple entry (ptr, ptr, bit (36) aligned, fixed bin (35)), 2 235 3 get_count entry (ptr, ptr, fixed bin (35), fixed bin (35)), 2 236 3 get_duplicate_key_count entry (ptr, bit (36) aligned, fixed bin (17), fixed bin (35), fixed bin (35)), 2 237 3 get_population entry (ptr, fixed bin (35), fixed bin (35)), 2 238 3 create_relation entry (char (*), char (*), ptr, ptr, bit (36) aligned, bit (36) aligned, fixed bin (35)), 2 239 3 create_index entry (bit (36) aligned, ptr, bit (36) aligned, fixed bin (17), bit (36) aligned, fixed bin (35)), 2 240 3 destroy_relation_by_path entry (char (*), char (*), fixed bin (35)), 2 241 3 reserved_entries (5) entry (), 2 242 2 access_costs, /* access costs for permute */ 2 243 3 total_primary_key_cost float bin, 2 244 3 access_cost float bin, 2 245 3 access_overhead float bin, 2 246 3 us_access_cost float bin, 2 247 3 os_access_cost float bin, 2 248 2 dbc_uid bit (36) aligned, /* uid of the segment containing the dbc structure */ 2 249 2 concurrency_on bit (1) unal, /* "1"b implies dmfile concurrency is being used */ 2 250 2 rollback_on bit (1) unal; /* "1"b iomplies before journaling is to be done */ 2 251 2 252 /* END mrds_dbcb.incl.pl1 */ 2 253 2 254 352 353 3 1 /* BEGIN mdbm_rm_db_info.incl.pl1 -- jaw, 11/7/78 */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(86-08-13,Hergert),, approve(88-06-28,MCR7903), 3 7* audit(88-06-28,Dupuis), install(88-08-01,MR12.2-1073): 3 8* Removed change of 84-11-02. i.e. replaced even_word_pad. 3 9* END HISTORY COMMENTS */ 3 10 3 11 3 12 /* WARNING 3 13* If the rm_db_info structure is changed then the mrds_data_ 3 14* item saved_res_version MUST be incremented to invalidate all 3 15* existing saved resultants 3 16**/ 3 17 3 18 /* DESCRIPTION: This structure is based on a segment 3 19* {unique_name}.mrds.rdbi that represents the secure portion of the 3 20* resultant model that is created partially at database open time, 3 21* (the rm_file_array, and rm_rel_array) and partially at ready_file 3 22* time, (the rm_file_info, rm_rel_info, rm_attr_info, 3 23* rm_domain_info, rm_plink_info and rm_clink_info). it's purpose is 3 24* to provide an efficient means of accessing database model 3 25* information, as seen from the possibly submodel view of the user, 3 26* and his current state of "files readied". it is the secure part 3 27* because it contains the model information which needs to be 3 28* protected from general knowledge, and this segment will 3 29* eventually be capable of being in a lower ring. the structure 3 30* itself points to four arrays that are allocated in it's area, 3 31* that in turn point to the other structures mentions above, also 3 32* allocated in the rm_db_info.static_area. the arrays are the 3 33* rm_file_array, and rm_rel_array. their are a pair for temporary 3 34* relations, initially empty, and a pair for normal model 3 35* files/relations. the normal rm_file_array is initialized to a 3 36* list of all known file names, the rm_rel_array only gets relation 3 37* names as files are readied. the rm_file_array points to 3 38* rm_file_infos for each file (see mdbm_rm_file_info.incl.pl1) and 3 39* the rm_rel_array points to rm_rel_info for each relation 3 40* "readied". (see mdbm_rm_rel_info.incl.pl1). (the arrays are in 3 41* mdbm_rm_file_array.incl.pl1 and mdbm_rm_rel_array.incl.pl1). the 3 42* file infos point to contained rel infos, the rel infos point to 3 43* contained attr infos, and those in turn to domain infos. (see 3 44* mdbm_rm_attr_info.incl.pl1 and mdbm_rm_domain_info.incl.pl1) 3 45* foreign keys are represented by the structures 3 46* mdbm_rm_plink_info.incl.pl1, and mdbm_rm_clink_info.incl.pl1. the 3 47* pathnames of the model and submodel, if any, are also maintained 3 48* in rm_db_info. the pointer to this rm_db_info segment is obtained 3 49* from the dbcb segment tructure(see mrds_dbcb.incl.pl1) see the 3 50* individual include files for further organization information, 3 51* and particular data structures. 3 52* 3 53* HISTORY: 3 54* 3 55* 80-02-01 Jim Gray : Modified to put area on even word boundary, 3 56* so that define_area_ could be used to make it an extensible area 3 57* 3 58* 81-1-9 Jim Gray : added like reference to make the phony 3 59* resultant in mu_database_index easier to keep, since no reference 3 60* to the area is needed. 3 61* 3 62* 81-1-12 Jim Gray : added version of submodel used in opening to 3 63* resultant. 3 64* 3 65* 81-05-13 Rickie E. Brinegar: added the administrator bit to the 3 66* structure. 3 67* 3 68* 81-05-28 Jim Gray : removed pointers to file_arrays, since they 3 69* are now combined into the rel_array. Removed the control file 3 70* info which was unused. Added pointer to head of domain list, 3 71* which is to be used to insure only one copy of each domain info. 3 72* 3 73* 83-05-19 Davids: Added the saved_res_version element. 3 74* 3 75* 84-11-02 Thanh Nguyen: Replaced the even_word_pad by the 3 76* ref_name_proc_ptr to point to list of reference name of the 3 77* check, encode, or decode proc. 3 78* 3 79* CAUTION: The structure entries from db_version to sm_path should 3 80* not be moved or have their declarations changed because they are 3 81* used in the handling of old version database openings. 3 82* 3 83* 3 84**/ 3 85 3 86 dcl 1 rm_db_info aligned based (rdbi_ptr), /* data base info, located at base of res. dm. seg. */ 3 87 2 data like rm_db_info_data, 3 88 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (rm_db_info.static_area)))); 3 89 3 90 dcl rdbi_ptr ptr; 3 91 3 92 declare 1 rm_db_info_data based, /* separate declaration of info, so others can use 3 93* like reference to it without getting the area as well */ 3 94 2 db_version fixed bin, /* version no. of db */ 3 95 2 sm_version fixed bin unal, /* version of submodel used unal, 0 if model opening */ 3 96 2 val_level fixed bin unal, /* validation level for this db. */ 3 97 2 db_path char (168), /* abs. path of db. */ 3 98 2 sm_path char (168), /* path of submodel or model */ 3 99 2 mdbm_secured bit (1) unal, /* ON => database is secured */ 3 100 2 administrator bit (1) unal, /* ON => user is an administrator */ 3 101 2 pad bit (34) unal, /* for future use */ 3 102 2 saved_res_version char (8), /* version of the saved resultant in the 3 103* dbcb and rdbi segments in the db dir */ 3 104 2 domain_list_ptr ptr, /* pointer to head of list of domain_info's */ 3 105 2 ra_ptr ptr, /* pointer to rel. array */ 3 106 2 tra_ptr ptr, /* to rel array for temp rels */ 3 107 2 even_word_pad fixed bin (71) aligned; /* padding to put area on even word boundary */ 3 108 3 109 /* END mdbm_rm_db_info.incl.pl1 */ 3 110 3 111 354 355 4 1 /* BEGIN INCLUDE FILE mrds_rslt_info.incl.pl1 rgl 07/22/77 */ 4 2 4 3 /* Modified by R. Lackey 09/20/76 to handle inverted attributes */ 4 4 4 5 /* Modified by D. Woodka 06/28/82 to fix size condition */ 4 6 4 7 dcl 1 rslt_info aligned based (rslt_ptr), /* resultant information description */ 4 8 2 num_attr fixed bin, /* number of attributes in view */ 4 9 2 num_key_attr fixed bin, /* number of key attributes in data relation */ 4 10 2 key_length fixed bin (35), /* length in bits of key portion of tuple */ 4 11 2 retrieve bit (1) unal, /* retrieve permitted = "1"b */ 4 12 2 modify bit (1) unal, /* modify permitted = "1"b */ 4 13 2 store bit (1) unal, /* store permitted = "1"b */ 4 14 2 delete bit (1) unal, /* delete permitted = "1"b */ 4 15 2 total_key bit (1) unal, /* on if view includes the total key */ 4 16 2 inversion bit (1) unal, /* On if this view contains any inverted attributes */ 4 17 2 reserved bit (30) unal, /* reserved for future use */ 4 18 2 attr (rslt_alloc refer (rslt_info.num_attr)), /* per attribute info */ 4 19 3 attr_name char (32), /* name of attribute */ 4 20 3 domain_name char (32), /* name of underlying domain */ 4 21 3 attr_length fixed bin (18), /* length of attribute data in bits */ 4 22 3 attr_index fixed bin (24), /* index to bit_offset in dbcbrw */ 4 23 3 descriptor bit (36) aligned, /* attribute description */ 4 24 3 key_flag bit (1) unal, /* key attribute = "1"b */ 4 25 3 inver_flag bit (1) unal, /* On if this attribute is inverted */ 4 26 3 unused bit (34) unal, /* reserved for future use */ 4 27 3 key_attr_order fixed bin, /* order no. of this key attr. */ 4 28 3 inver_iocb_index fixed bin; /* Index to inversion iocb in dbcbw */ 4 29 4 30 4 31 4 32 dcl rslt_ptr ptr; 4 33 4 34 dcl rslt_alloc fixed bin; 4 35 4 36 /* END INCLUDE FILE mrds_rslt_info.incl.pl1 */ 4 37 356 357 5 1 /* BEGIN mdbm_rm_rel_info.incl.pl1 -- jaw, 11/16/78 */ 5 2 5 3 /* WARNING 5 4* If the rm_rel_info structure is changed then the mrds_data_ 5 5* item saved_res_version MUST be incremented to invalidate all 5 6* existing saved resultants 5 7**/ 5 8 5 9 /* HISTORY: 5 10* 5 11* Modified by Jim Gray - - May 1980, to include model number of 5 12* attributes, and varying attributes, so that partial view 5 13* submodels will have the info needed to properly set up the 5 14* varying length array headers in the tuple structure. 5 15* 5 16* Modified by Jim Gray - - 80-11-06, to rename r_perm = 5 17* status_perm, s_perm = append_tuple_perm, d_perm = 5 18* delete_tuple_perm, and make m_perm = unused_perm. 5 19* 5 20* 81-01-23 Jim Gray : added bit to indicate whether the last model 5 21* view attribute was varying character or bit, since a partial view 5 22* submodel will not have this information in the resultant, and it 5 23* is needed for determining the new tuple length in mus_mod_ubtup, 5 24* since with exact length storage of varying length attributes, 5 25* each tuple can be a different length, which is can only be 5 26* determined by examining the tuple itself. 5 27* 5 28* 81-01-29 Jim Gray : added curent tuple count, to provide for 5 29* interface to allow temp rel population to be known, and to 5 30* provide a more efficient means of finding an approx. current perm 5 31* relation population. 5 32* 5 33* 81-05-28 Jim Gray : removed structure elements referring to 5 34* blocked files, foreign keys, and ids procedures. Also set number 5 35* of files per rel to a constant of 1. 5 36* 5 37* 81-05-28 Jim Gray : combined data from rm_file_info into this 5 38* structure so that only one structure per relation is needed. 5 39* 5 40* 81-07-02 Jim Gray : added total_key and dup_key vfile statistics 5 41* counts. Also added number of operations count since last 5 42* statistics update, and a time since the statistics were last 5 43* updated. 5 44* 5 45* 81-07-06 Jim Gray : added a per selection expression update 5 46* identifier so that small relations could be updated on a per S.E. 5 47* basis 5 48* 5 49* 82-04-21 R. Lackey : Added number_selected (ri_niocbs_init refer (rm_rel_info.niocbs)) fixed bin (35) 5 50* to end of structure TR 12205 (Suggestion). 5 51* 5 52* 82-08-19 D. Woodka : Removed rm_rel_info.max_data_len field for 5 53* the DMS conversion. 5 54* 5 55* 82-08-30 Davids: added the opening_id element and removed the iocb 5 56* array and the niocb element for DMS conversion. Also removed the 5 57* number_selected array (and ri_niocbs_init) since subsets are not 5 58* going to be used. 5 59* 5 60* 82-09-20 Mike Kubicar : changed rm_rel_info.rel_id to bit (36) aligned 5 61* so that it can be used with relation manager. Also added 5 62* rm_rel_info.primary_key_index_id for relation manager. 5 63* 5 64* 82-09-22 Mike Kubicar : Removed the, now useless, fields var_attr_ptrs, 5 65* nvar_atts, model_nvar_atts. 5 66* 5 67* 82-09-24 Davids: Removed current_key_count and current_dup_key_count 5 68* since the duplicate key count for each secondary index is now being 5 69* kept in the attr_info structure and key_count was only needed to 5 70* help in calculating the average selectivity of each index which 5 71* can now be gotten directly from each index's dup key count. Also 5 72* removed the file_id element since it is no longer needed for 5 73* anything. 5 74* 5 75* 82-09-27 Mike Kubicar : removed file_id_len for the same reason file_id 5 76* was removed. 5 77* 5 78* 82-11-05 Mike Kubicar : added a pointer to an id_list structure to be 5 79* used when retrieving tuples from this relation. 5 80* 5 81* 83-04-06 Davids: Added the scope_flags_ptr which points to the scope_flags structure 5 82* for the relation. Note that this structure is part of the resultant NOT 5 83* part of the db.control structure. The scopes are duplicated in the resultant 5 84* to reduce contention for the db.control structure. Note also that the pointer 5 85* will always point to a scope_flags structure even if no scopes have been 5 86* set on the relation, the structure is allocated when the db is opened. 5 87**/ 5 88 5 89 5 90 /* DESCRIPTION: 5 91* 5 92* This structure is allocated in the area part of the structure in 5 93* mdbm_rm_db_info.incl.pl1 as part of the resultant model created 5 94* at open time for a database. There will be one of these 5 95* rm_rel_info structures for each relation appearing in the 5 96* database view (there may be less than the total in the database 5 97* for a submodel openings). There will also be one for each 5 98* temporary relation currently defined for that opening. 5 99* 5 100* The structure in mdbm_rm_rel_array.incl.pl1 contains pointers to 5 101* all rm_rel_info structures allocated. It is used for searching 5 102* for the appropriate structure. This array is pointed to by 5 103* rm_db_info. There are two arrays, one for perm rels, one for temp 5 104* rels. 5 105* 5 106* The rm_rel_info structure points to the 5 107* mdbm_rm_attr_info.incl.pl1 structures, one for each attribute 5 108* appearing in this view of the relation. Each of these in turn 5 109* point to a mdbm_rm_domain_info.incl.pl1 structure for the domain 5 110* info for each attr. 5 111* 5 112* Most of the other information here deals with specifics of the 5 113* relation's logical definition, such as key and secondary index 5 114* attribute inidicators, security permissions, and tuple physical 5 115* construction details. 5 116* 5 117**/ 5 118 5 119 dcl 1 rm_rel_info aligned based (rmri_ptr), /* relation information */ 5 120 2 name char (32), /* from submodel */ 5 121 2 model_name char (30), /* from model */ 5 122 2 rel_id bit (36) aligned, /* unique id. */ 5 123 2 retrieve bit (1) unal, /* operations allowed by this view */ 5 124 2 modify bit (1) unal, 5 125 2 delete bit (1) unal, 5 126 2 store bit (1) unal, 5 127 2 total_key bit (1) unal, /* on if view includes full primary key */ 5 128 2 indexed bit (1) unal, /* on if exists sec. index */ 5 129 2 mdbm_secured bit (1) unal, /* on if mdbm must check security */ 5 130 2 status_perm bit (1) unal, /* if user has status. perm. */ 5 131 2 append_tuple_perm bit (1) unal, /* if user has store perm. */ 5 132 2 delete_tuple_perm bit (1) unal, /* if user has del. perm. */ 5 133 2 unused_perm bit (1) unal, /* for future use. */ 5 134 2 last_model_attr_char_var bit (1) unal, /* on => last model varying attr is char */ 5 135 2 reserved bit (24) unal, /* for future use */ 5 136 2 num_attr fixed bin, /* total no. of attr. in rel. */ 5 137 2 model_num_attr fixed bin, /* total attrs in model relation */ 5 138 2 nkey_attr fixed bin, /* no. of key attr. */ 5 139 2 model_nkey_attr fixed bin, /* total number of keys in model */ 5 140 2 primary_key_index_id bit (36) aligned, /* Index id of relation's primary key */ 5 141 2 nsec_inds fixed bin, /* no. sec. indexes */ 5 142 2 max_key_len fixed bin (35), /* max length (chars) of primary key */ 5 143 2 current_tuple_population fixed bin (35), /* last known total tuple count for this relation */ 5 144 2 last_statistics_update_count fixed bin, /* number of operations's, since this rels stats were updated */ 5 145 2 last_statistics_update_time fixed bin (71),/* last time this rels stats were updated */ 5 146 2 last_statistics_update_s_e_ref_num fixed bin (35), /* last select expr ID that updated this rels stats */ 5 147 2 ready_mode fixed bin, /* 1 => r, 2 => mr, 3 => u, 4 => l, 5 => sr, 6 => su */ 5 148 2 file_type fixed bin, /* 1 => unblocked, 2 => blocked, 3 => temporary */ 5 149 2 tuple_id_len fixed bin, /* no. bits in local tuple id */ 5 150 2 opening_id bit (36) aligned, /* relation manager opening is */ 5 151 2 key_attr_ptrs (nkey_attr_init refer (rm_rel_info.nkey_attr)) ptr, /* ptrs to key attr. */ 5 152 2 attr_ptrs (natts_init refer (rm_rel_info.num_attr)) ptr, /* ptrs to all attr. */ 5 153 2 id_list_ptr ptr, /* Id list for retrieves from the relation */ 5 154 2 scope_flags_ptr ptr; /* pointer to the scope_flags structure for the rel */ 5 155 5 156 dcl rmri_ptr ptr; 5 157 dcl (nkey_attr_init, 5 158 natts_init, 5 159 nvar_atts_init) fixed bin; 5 160 5 161 /* END mdbm_rm_rel_info.incl.pl1 */ 5 162 5 163 358 359 6 1 /* BEGIN mdbm_rm_domain_info.incl.pl1 -- jaw, 9/26/78 */ 6 2 6 3 /* WARNING 6 4* If the rm_domain_info structure is changed then the mrds_data_ 6 5* item saved_res_version MUST be incremented to invalidate all 6 6* existing saved resultants 6 7**/ 6 8 6 9 /* DESCRIPTION: 6 10* 6 11* This structure is allocated in the mdbm_rm_db_info.incl.pl1 6 12* static area, once per attribute used in a relation in a readied 6 13* file. it is pointed to by the mdbm_rm_attr_info.incl.pl1, and may 6 14* point to mdbm_rm_ck_and_group.incl.pl1 if a "-check" option 6 15* boolean expression was declared for this domain. it contains the 6 16* descriptor for this domain data type, and other resultant model 6 17* information. 6 18* 6 19* 6 20* HISTORY: 6 21* 6 22* 81-05-06 Rickie E. Brinegar: Modified ck_proc, encode_proc, 6 23* decode_proc to be entry variables instead of entry pointers. This 6 24* allows these programs to be written in languages other than pl1. 6 25* 6 26* 81-05-28 Jim Gray : removed unused procedure points, and unused 6 27* check stack structure elements. Also made the descriptors bit 6 28* (36) in this structure, rather than pointers to the descriptors 6 29* elsewhere. Also removed un-needed redundant assign_ parameters, 6 30* that are actually available in the descriptors. 6 31* 6 32* 6 33**/ 6 34 6 35 dcl 1 rm_domain_info aligned based (rdi_ptr), /* domain information */ 6 36 2 name char (32), /* domain name */ 6 37 2 db_desc bit (36), /* to desc. for db. */ 6 38 2 user_desc bit (36), /* desc for user visible data */ 6 39 2 user_bit_len fixed bin, /* storage length of users data */ 6 40 2 ck_proc_entry entry variable, /* to check proc. entry */ 6 41 2 encd_proc_entry entry variable, /* to encode proc entry */ 6 42 2 decd_proc_entry entry variable, /* to decode proc entry */ 6 43 2 ck_proc bit (1) unal, /* Is there a check proc */ 6 44 2 encd_proc bit (1) unal, /* Is there an encode proc */ 6 45 2 decd_proc bit (1) unal, /* Is there a decode proc */ 6 46 2 pad bit (33) unal, 6 47 2 next_domain_ptr ptr ; /* to next domain, in list of all domains */ 6 48 /* to check stack and groups */ 6 49 6 50 6 51 dcl rdi_ptr ptr int automatic init (null ()); 6 52 6 53 /* END mdbm_rm_domain_info.incl.pl1 */ 6 54 6 55 360 361 7 1 /* BEGIN mdbm_rm_attr_info.incl.pl1 -- jaw, 11/16/78 */ 7 2 7 3 /* WARNING 7 4* If the rm_attr_info structure is changed then the mrds_data_ 7 5* item saved_res_version MUST be incremented to invalidate all 7 6* existing saved resultants 7 7**/ 7 8 7 9 /* 7 10* 7 11* Modified by Jim Gray - - 80-11-05, to add mdbm_secured bit, so 7 12* that rm_rel_info does not have to be checked 7 13* 7 14* 81-05-28 Jim Gray : removed structure elements referring to 7 15* foreign keys. 7 16* 7 17* 82-08-19 D. Woodka : removed rm_attr_info.bit_offset for the DMS 7 18* conversion. 7 19* 7 20* 82-09-15 Davids: added the number_of_dups field. 7 21* 7 22* 82-09-20 Mike Kubicar : changed the index_id field to be bit (36) 7 23* aligned. This is to conform with the new definition in the database 7 24* model. Also removed the now useless field varying. 7 25* 7 26* 82-11-05 Davids: added the field model_defn_order and clarified the 7 27* comment for the field defn_order. 7 28* 7 29* 83-05-23 Mike Kubicar : changed number_of_dups to fixed bin (35) since 7 30* that's what relation manager returns. 7 31* 7 32**/ 7 33 7 34 7 35 /* 7 36* this structure is allocated in the static area of 7 37* mdbm_rm_db_info.incl.pl1 once for each attribute per relation in 7 38* a readied file. it in turn points to 7 39* mdbm_rm_domain_info.incl.pl1 for the attributes domain. the 7 40* rm_attr_info is pointed to by mdbm_rm_rel_info.incl.pl1. all 7 41* structures are in the rm_db_info area. the attribute data 7 42* position within a tuple as stored in the data file are kept in 7 43* this resultant model of the attribute. 7 44* */ 7 45 7 46 dcl 1 rm_attr_info aligned based (rai_ptr), /* resultant attr. info */ 7 47 2 name char (32), /* from submodel */ 7 48 2 model_name char (32), /* from model */ 7 49 2 key_attr bit (1) unal, /* if key attribute */ 7 50 2 index_attr bit (1) unal, /* if secondary index */ 7 51 2 read_perm bit (1) unal, /* user has retr. permission */ 7 52 2 modify_perm bit (1) unal, /* user has modify permission */ 7 53 2 mdbm_secured bit (1) unal, /* on => database secured */ 7 54 2 reserved bit (30) unal, /* for future use */ 7 55 2 index_id bit (36) aligned, /* index id if index_attr */ 7 56 2 defn_order fixed bin, /* relative order in which attr is defined in the view */ 7 57 2 key_order fixed bin, /* relative order defined in prim. key */ 7 58 2 bit_length fixed bin (35), /* length if fixed, max. len. if var. */ 7 59 2 domain_ptr ptr, /* to domain info */ 7 60 2 number_of_dups fixed bin (35), /* if the attribute is indexed this will 7 61* be the number of duplicate values, exact 7 62* for a page_file database, an estimate for a vfile type */ 7 63 2 model_defn_order fixed bin; /* relative order in which attr is defined in the model */ 7 64 7 65 dcl rai_ptr ptr int automatic init (null ()); 7 66 7 67 /* END mdbm_rm_attr_info.incl.pl1 */ 7 68 7 69 362 363 8 1 /* BEGIN mdbm_rm_rel_array.incl.pl1 -- jaw, 8/9/78 */ 8 2 8 3 /* WARNING 8 4* If the rm_rel_array structure is changed then the mrds_data_ 8 5* item saved_res_version MUST be incremented to invalidate all 8 6* existing saved resultants 8 7**/ 8 8 8 9 /* HISTORY: 8 10* 8 11* 81-05-28 Jim Gray : added model_name and file_id as part of 8 12* combining funtions of file_array and rel_array into one 8 13* structure. This will only allow 1 relation per file model now. 8 14* Also changed structure to allow more efficient searching 8 15* via and index builtin, rather than a programmed loop. 8 16* Search is now I = index(string(rm_rel_array.name), "!" || in_name) 8 17* with I = ((I - 1) / 33) + 1 to convert from a char to array index. 8 18* 8 19**/ 8 20 8 21 8 22 /* this structure is allocated in the static are of the structure 8 23* in mdbm_rm_db_info.incl.pl1, the secure portion of the database 8 24* resultant model upon opening the database. two copies are 8 25* allocated, one for temporary relations, initially empty, and one 8 26* for relations known to the opener, which has a length sufficient 8 27* for all relations known to the user, but whose names, etc. will 8 28* not be filled in until the file containing that particular 8 29* relation is readied. the rm_db_info structure contains a pointer 8 30* to the rel_arrays, and the array entries, when "readied", point 8 31* to the mdbm_rm_rel_info.incl.pl1 structures containing model 8 32* information about the relation, it's attributes, etc. */ 8 33 8 34 dcl 1 rm_rel_array aligned based (rmra_ptr), /* array of open relations */ 8 35 2 num_rels fixed bin, /* no. rels in db. */ 8 36 2 name (1:rm_num_rels_init refer (rm_rel_array.num_rels)) unal, 8 37 3 mark char (1) unal, /* separator character = "!" */ 8 38 3 submodel char (32) unal, /* name of relation is submodel view, model opening => model name */ 8 39 2 rel_data (rm_num_rels_init refer (rm_rel_array.num_rels)), 8 40 3 model_name char (30), /* name of relation in model */ 8 41 3 ri_ptr ptr unal ; /* pointer to rm_rel_info */ 8 42 8 43 dcl rmra_ptr ptr; 8 44 dcl rm_num_rels_init fixed bin; 8 45 8 46 /* END mdbm_rm_rel_array.incl.pl1 */ 8 47 8 48 364 365 9 1 /* BEGIN mdbm_scope_info.incl.pl1 -- odf 8/8/78 */ 9 2 9 3 /* WARNING 9 4* If the scope_info or scope_flags structure is changed then the 9 5* mrds_data_ item saved_res_version MUST be incremented to invalidate 9 6* all existing saved resultants 9 7**/ 9 8 9 9 /* Modified by Jim Gray - - 80-11-17, to add back store/delete/modify permissions */ 9 10 9 11 /* 80-12-10 Jim Gray : change name of store to append_tuple, delete to delete_tuple, 9 12* modify to modify_attr, retrieve to read_attr, remvoe update, put level 4 9 13* qualifiers for permit/prevent modes and to put pads in standard format */ 9 14 9 15 /* 80-12-11 Jim Gray : added submodel version of file/rel name for convenience */ 9 16 9 17 /* 80-12-22 Jim Gray : added like referenced structure so linus_scope_data.incl 9 18* could make use of it for compatibility. */ 9 19 9 20 /* 81-1-11 Jim Gray : added touched bit to scope_flags, so that 9 21* the fact that null scope has been set can be displayed */ 9 22 9 23 /* 85-04-14 Thanh Nguyen: Made scope_flags to be aligned so we could access the 9 24* prevent flags from any pointer which directly pointed to scope_flags itself 9 25* (i.e rm_rel_info.scope_flags_ptr). */ 9 26 9 27 /* this structure is to be allocated in the mrds_dbcb.incl.pl1 static area, 9 28* and is used to maintain the scope mechanism for file access. 9 29* It contains the scope permit/prevent operations that this user 9 30* has set in his view for this opening instance. */ 9 31 9 32 dcl 1 scope_info aligned based (scope_ptr), /* array of scope tuples for this user */ 9 33 2 mbz1 bit (144), /* Reserved for future use */ 9 34 2 nfiles fixed bin, /* Number of scope tuples in user's scope */ 9 35 2 active_scopes fixed bin, /* number of scopes currently active for a given user */ 9 36 2 scope (max_file_init refer (scope_info.nfiles)), /* defines user's scope of access to files */ 9 37 3 name char (30) aligned, /* filename */ 9 38 3 sm_name char (32), /* name of file(rel) in submodel */ 9 39 3 flags like scope_flags ; 9 40 9 41 9 42 declare 1 scope_flags aligned based, /* common layout of scope flag bits */ 9 43 2 permits, /* modes to permit this user */ 9 44 3 read_attr bit (1) unal, /* read_attr access to this file in scope */ 9 45 3 append_tuple bit (1) unal, /* append_tuple concnrrency permission */ 9 46 3 delete_tuple bit (1) unal, /* delete_tuple concurrency permission on rel */ 9 47 3 modify_attr bit (1) unal, /* modify_attr concurrency permission */ 9 48 3 mbz2 bit (10) unal, /* for expansion of permit ops */ 9 49 2 prevents, /* modes to be denyed to other users */ 9 50 3 read_attr bit (1) unal, /* on if user has prevent on read_attr for this file */ 9 51 3 append_tuple bit (1) unal, /* prevent of append_tuple concurrency */ 9 52 3 delete_tuple bit (1) unal, /* prevent of delete_tuple concurrency */ 9 53 3 modify_attr bit (1) unal, /* prevent of modify_attr concurrency */ 9 54 3 mbz3 bit (10) unal, /* for future prevent concurrency modes */ 9 55 2 touched bit (1) unal, /* on => scope set for this relation */ 9 56 2 mbz4 bit (7) unal ; /* for future flags */ 9 57 9 58 dcl max_file_init fixed bin; /* nbr. of files in data base */ 9 59 dcl scope_ptr ptr init (null ()); /* points to scope_info array */ 9 60 dcl scope_rdy bit (6) unal init ("000011"b) int static options (constant); /* scope file ready modes (5 or 6) */ 9 61 dcl scope_rdy_array (6) bit (1) unal based; /* array format of scope_rdy string */ 9 62 9 63 /* END mdbm_scope_info.incl.pl1 */ 366 367 10 1 /* BEGIN mrds_security_info.incl.pl1 -- reb, 81-05-13 */ 10 2 10 3 /* DESCRIPTION: 10 4* 10 5* The reason for this structure is to return security related information to 10 6* the user. 10 7* 10 8* 10 9* HISTORY: 10 10* 10 11* 81-05-13 Rickie E. Brinegar: Originally written. 10 12* 10 13**/ 10 14 10 15 dcl 1 mrds_security_info based (mrds_security_info_ptr), 10 16 2 db_secure bit (1) unal, /* ON => database is in a secure state */ 10 17 2 administrator bit (1) unal, /* ON => user is currently an administrator */ 10 18 2 pad bit (34) unal; /* reserved for future use */ 10 19 10 20 dcl mrds_security_info_ptr ptr; 10 21 10 22 /* END mdbm_rm_db_info.incl.pl1 */ 10 23 368 369 370 end mrds_dsl_get_rslt_info; 371 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/01/88 1314.0 mrds_dsl_get_rslt_info.pl1 >special_ldd>install>MR12.2-1073>mrds_dsl_get_rslt_info.pl1 350 1 10/14/83 1608.4 mrds_model_relations.incl.pl1 >ldd>include>mrds_model_relations.incl.pl1 352 2 08/01/88 1300.0 mrds_dbcb.incl.pl1 >special_ldd>install>MR12.2-1073>mrds_dbcb.incl.pl1 354 3 08/01/88 1310.7 mdbm_rm_db_info.incl.pl1 >special_ldd>install>MR12.2-1073>mdbm_rm_db_info.incl.pl1 356 4 10/14/83 1609.0 mrds_rslt_info.incl.pl1 >ldd>include>mrds_rslt_info.incl.pl1 358 5 10/14/83 1609.1 mdbm_rm_rel_info.incl.pl1 >ldd>include>mdbm_rm_rel_info.incl.pl1 360 6 10/14/83 1609.1 mdbm_rm_domain_info.incl.pl1 >ldd>include>mdbm_rm_domain_info.incl.pl1 362 7 10/14/83 1609.1 mdbm_rm_attr_info.incl.pl1 >ldd>include>mdbm_rm_attr_info.incl.pl1 364 8 10/14/83 1609.1 mdbm_rm_rel_array.incl.pl1 >ldd>include>mdbm_rm_rel_array.incl.pl1 366 9 04/18/85 1628.1 mdbm_scope_info.incl.pl1 >ldd>include>mdbm_scope_info.incl.pl1 368 10 10/14/83 1608.9 mrds_security_info.incl.pl1 >ldd>include>mrds_security_info.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. administrator 0(01) based bit(1) level 2 in structure "mrds_security_info" packed packed unaligned dcl 10-15 in procedure "mrds_dsl_get_rslt_info" set ref 266* administrator 126(01) based bit(1) level 3 in structure "rm_db_info" packed packed unaligned dcl 3-86 in procedure "mrds_dsl_get_rslt_info" ref 266 315 area_ptr 000102 automatic pointer dcl 331 set ref 116* 142* 166* 181 219* 228 297 attr 4 based structure array level 2 dcl 4-7 attr_length 24 based fixed bin(18,0) array level 3 dcl 4-7 set ref 310* attr_name 4 based char(32) array level 3 dcl 4-7 set ref 309* attr_ptrs based pointer array level 2 dcl 5-119 ref 304 bit_length 24 based fixed bin(35,0) level 2 dcl 7-46 ref 310 code parameter fixed bin(35,0) dcl 332 set ref 112 127* 138 151* 164 188 217 239 255 268* 278* 281* data based structure level 2 in structure "dbcb" dcl 2-142 in procedure "mrds_dsl_get_rslt_info" data based structure level 2 in structure "rm_db_info" dcl 3-86 in procedure "mrds_dsl_get_rslt_info" db_index parameter fixed bin(35,0) dcl 333 set ref 112 138 164 188 217 239 255 279* db_path parameter varying char(168) dcl 334 set ref 188 198* db_secure based bit(1) level 2 packed packed unaligned dcl 10-15 set ref 265* db_version parameter fixed bin(17,0) dcl 244 in procedure "mrds_dsl_get_rslt_info" set ref 239 248* db_version based fixed bin(17,0) level 3 in structure "rm_db_info" dcl 3-86 in procedure "mrds_dsl_get_rslt_info" ref 248 dbcb based structure level 1 dcl 2-142 dbcb_data based structure level 1 unaligned dcl 2-148 dbcb_ptr 010112 automatic pointer dcl 2-146 set ref 179 202 230 279* 280 284 delete 3(03) based bit(1) level 2 packed packed unaligned dcl 4-7 set ref 301* descriptor 26 based bit(36) array level 3 dcl 4-7 set ref 324* domain_name 14 based char(32) array level 3 dcl 4-7 set ref 316* 319* domain_ptr 26 based pointer level 2 dcl 7-46 ref 305 dsm_sw 106(08) based bit(1) level 3 packed packed unaligned dcl 2-142 ref 230 empty builtin function dcl 348 ref 337 fixed builtin function dcl 348 ref 202 i 000104 automatic fixed bin(35,0) dcl 335 set ref 123* 123* 126 131 229* 230 230 233 233* 303* 304 309 310 312 313 314 316 319 324 325* in_area_ptr parameter pointer dcl 336 ref 112 116 138 142 164 166 217 219 index_attr 20(01) based bit(1) level 2 packed packed unaligned dcl 7-46 ref 312 inver_flag 27(01) based bit(1) array level 3 packed packed unaligned dcl 4-7 set ref 312* 325 inversion 3(05) based bit(1) level 2 packed packed unaligned dcl 4-7 set ref 301* 325* key_attr 20 based bit(1) level 2 packed packed unaligned dcl 7-46 ref 313 key_attr_order 30 based fixed bin(17,0) array level 3 dcl 4-7 set ref 314* key_flag 27 based bit(1) array level 3 packed packed unaligned dcl 4-7 set ref 313* key_length 2 based fixed bin(35,0) level 2 dcl 4-7 set ref 299* key_order 23 based fixed bin(17,0) level 2 dcl 7-46 ref 314 local_area 000106 automatic area(4096) dcl 337 set ref 337* max_file_init 010132 automatic fixed bin(17,0) dcl 9-58 set ref 180* 181 181 max_key_len 30 based fixed bin(35,0) level 2 dcl 5-119 ref 299 mdbm_secured 126 based bit(1) level 3 packed packed unaligned dcl 3-86 ref 265 315 mode parameter char(20) packed unaligned dcl 193 set ref 188 203* 205* 207* 209* 211* 213* mode_code 000100 automatic fixed bin(17,0) dcl 194 set ref 202* 203 205 207 209 211 model_name based char(30) array level 3 dcl 8-34 ref 233 model_relations based structure level 1 unaligned dcl 1-5 set ref 228 modify 3(01) based bit(1) level 2 packed packed unaligned dcl 4-7 set ref 301* mr_ptr parameter pointer dcl 1-11 set ref 217 228* 229 230 233 mrds_data_$max_temp_rels 000010 external static fixed bin(35,0) dcl 338 ref 149 mrds_error_$invalid_db_index 000012 external static fixed bin(35,0) dcl 339 ref 281 mrds_error_$undef_rel 000014 external static fixed bin(35,0) dcl 340 ref 127 mrds_error_$undef_temp_rel 000016 external static fixed bin(35,0) dcl 341 ref 151 mrds_security_info based structure level 1 packed packed unaligned dcl 10-15 set ref 262 mrds_security_info_ptr 010136 automatic pointer dcl 10-20 set ref 264* 265 266 267 mu_database_index$get_resultant_model_pointer 000020 constant entry external dcl 342 ref 279 name based char(32) level 2 in structure "rm_domain_info" dcl 6-35 in procedure "mrds_dsl_get_rslt_info" ref 316 name 1 based structure array level 2 in structure "rm_rel_array" packed packed unaligned dcl 8-34 in procedure "mrds_dsl_get_rslt_info" name based char(32) level 2 in structure "rm_attr_info" dcl 7-46 in procedure "mrds_dsl_get_rslt_info" ref 309 nfiles 4 based fixed bin(17,0) level 2 dcl 9-32 set ref 180 181* 182 182 nkey_attr 24 based fixed bin(17,0) level 2 dcl 5-119 ref 298 304 nrels based fixed bin(10,0) level 2 dcl 1-5 set ref 228* 229 null builtin function dcl 348 ref 128 152 176 345 6-51 7-65 9-59 280 num_attr based fixed bin(17,0) level 2 in structure "rslt_info" dcl 4-7 in procedure "mrds_dsl_get_rslt_info" set ref 297* num_attr 22 based fixed bin(17,0) level 2 in structure "rm_rel_info" dcl 5-119 in procedure "mrds_dsl_get_rslt_info" ref 296 303 num_key_attr 1 based fixed bin(17,0) level 2 dcl 4-7 set ref 298* num_relations_alloc 010110 automatic fixed bin(10,0) dcl 1-9 set ref 227* 228 228 num_rels based fixed bin(17,0) level 2 dcl 8-34 ref 123 126 131 155 227 233 open_mode 106(14) based bit(3) level 3 packed packed unaligned dcl 2-142 ref 202 out_rslt_ptr parameter pointer dcl 115 set ref 112 135* pad 0(02) based bit(34) level 2 packed packed unaligned dcl 10-15 set ref 267* ra_ptr 134 based pointer level 3 dcl 3-86 ref 122 226 rai_ptr 010126 automatic pointer initial dcl 7-65 set ref 7-65* 304* 305 309 310 312 313 314 rdbi_ptr 010114 automatic pointer dcl 3-90 in procedure "mrds_dsl_get_rslt_info" set ref 122 148 198 226 248 265 266 284* 315 315 rdbi_ptr based pointer level 3 in structure "dbcb" dcl 2-142 in procedure "mrds_dsl_get_rslt_info" ref 284 rdi_ptr 010124 automatic pointer initial dcl 6-51 set ref 6-51* 305* 316 324 rel_data based structure array level 2 dcl 8-34 rel_index parameter fixed bin(35,0) dcl 343 ref 138 149 149 155 rel_name parameter char packed unaligned dcl 344 ref 112 123 relation_name 1 based char(32) array level 2 packed packed unaligned dcl 1-5 set ref 230* 233* retrieve 3 based bit(1) level 2 packed packed unaligned dcl 4-7 set ref 300* ri_ptr based pointer array level 3 packed packed unaligned dcl 8-34 ref 131 155 rm_attr_info based structure level 1 dcl 7-46 rm_db_info based structure level 1 dcl 3-86 rm_db_info_data based structure level 1 unaligned dcl 3-92 rm_domain_info based structure level 1 dcl 6-35 rm_rel_array based structure level 1 dcl 8-34 rm_rel_info based structure level 1 dcl 5-119 rmra_ptr 010130 automatic pointer dcl 8-43 set ref 122* 123 123 126 131 148* 155 226* 227 230 233 rmri_ptr 010122 automatic pointer dcl 5-156 set ref 131* 155* 296 298 299 303 304 rslt_alloc 010120 automatic fixed bin(17,0) dcl 4-34 set ref 296* 297 297 rslt_info based structure level 1 dcl 4-7 set ref 297 rslt_ptr 010116 automatic pointer dcl 4-32 in procedure "mrds_dsl_get_rslt_info" set ref 128* 132* 135 152* 157* 160 rslt_ptr parameter pointer dcl 291 in procedure "get_rslt_data" set ref 288 297* 298 299 300 300 301 301 301 301 309 310 312 313 314 316 319 324 325 325 sci_ptr parameter pointer dcl 171 set ref 164 176* 181* 182 scope_flags based structure level 1 dcl 9-42 scope_info based structure level 1 dcl 9-32 set ref 182 scope_ptr 010134 automatic pointer initial dcl 9-59 in procedure "mrds_dsl_get_rslt_info" set ref 179* 180 182 9-59* scope_ptr 34 based pointer level 3 in structure "dbcb" dcl 2-142 in procedure "mrds_dsl_get_rslt_info" ref 179 scp_info based structure level 1 dcl 170 set ref 181 182* security_info_area_ptr parameter pointer dcl 258 ref 255 262 security_ptr parameter pointer dcl 258 set ref 255 262* 264 sm_path 54 based char(168) level 3 dcl 3-86 ref 198 store 3(02) based bit(1) level 2 packed packed unaligned dcl 4-7 set ref 301* submodel 1(09) based char(32) array level 3 packed packed unaligned dcl 8-34 ref 123 230 submodel_iocb_ptr 010106 automatic pointer initial dcl 345 set ref 345* temp_rslt_ptr parameter pointer dcl 141 set ref 138 160* total_key 3(04) based bit(1) level 2 packed packed unaligned dcl 4-7 set ref 300* tra_ptr 136 based pointer level 3 dcl 3-86 ref 148 unspec builtin function dcl 348 set ref 182* 182 user_desc 11 based bit(36) level 2 dcl 6-35 ref 324 wk_area based area dcl 347 ref 181 228 262 297 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. addr builtin function dcl 348 natts_init automatic fixed bin(17,0) dcl 5-157 nkey_attr_init automatic fixed bin(17,0) dcl 5-157 nvar_atts_init automatic fixed bin(17,0) dcl 5-157 rel builtin function dcl 348 rm_num_rels_init automatic fixed bin(17,0) dcl 8-44 scope_rdy internal static bit(6) initial packed unaligned dcl 9-60 scope_rdy_array based bit(1) array packed unaligned dcl 9-61 sys_info$max_seg_size external static fixed bin(35,0) dcl 346 NAMES DECLARED BY EXPLICIT CONTEXT. exit 000062 constant label dcl 21 ref 282 get_db_version 000602 constant entry external dcl 239 get_pn 000356 constant entry external dcl 188 get_rslt_data 000711 constant entry internal dcl 288 ref 132 157 get_rslt_info 000070 constant entry external dcl 112 get_rslt_rels 000457 constant entry external dcl 217 get_scope_info 000272 constant entry external dcl 164 get_scope_info_exit 000350 constant label dcl 185 get_security_info 000622 constant entry external dcl 255 get_temp_info 000205 constant entry external dcl 138 init 000661 constant entry internal dcl 273 ref 120 146 177 196 224 246 260 mrds_dsl_get_rslt_info 000054 constant entry external dcl 18 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1262 1304 1072 1272 Length 1730 1072 22 410 170 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mrds_dsl_get_rslt_info 4223 external procedure is an external procedure. init internal procedure shares stack frame of external procedure mrds_dsl_get_rslt_info. get_rslt_data internal procedure shares stack frame of external procedure mrds_dsl_get_rslt_info. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mrds_dsl_get_rslt_info 000100 mode_code mrds_dsl_get_rslt_info 000102 area_ptr mrds_dsl_get_rslt_info 000104 i mrds_dsl_get_rslt_info 000106 local_area mrds_dsl_get_rslt_info 010106 submodel_iocb_ptr mrds_dsl_get_rslt_info 010110 num_relations_alloc mrds_dsl_get_rslt_info 010112 dbcb_ptr mrds_dsl_get_rslt_info 010114 rdbi_ptr mrds_dsl_get_rslt_info 010116 rslt_ptr mrds_dsl_get_rslt_info 010120 rslt_alloc mrds_dsl_get_rslt_info 010122 rmri_ptr mrds_dsl_get_rslt_info 010124 rdi_ptr mrds_dsl_get_rslt_info 010126 rai_ptr mrds_dsl_get_rslt_info 010130 rmra_ptr mrds_dsl_get_rslt_info 010132 max_file_init mrds_dsl_get_rslt_info 010134 scope_ptr mrds_dsl_get_rslt_info 010136 mrds_security_info_ptr mrds_dsl_get_rslt_info THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry ext_entry_desc op_alloc_ op_empty_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. mu_database_index$get_resultant_model_pointer THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. mrds_data_$max_temp_rels mrds_error_$invalid_db_index mrds_error_$undef_rel mrds_error_$undef_temp_rel LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 337 000041 345 000044 6 51 000046 7 65 000047 9 59 000050 18 000053 21 000062 112 000063 116 000111 120 000114 122 000115 123 000120 125 000140 126 000145 127 000150 128 000153 129 000155 131 000156 132 000172 135 000174 137 000177 138 000200 142 000220 146 000223 148 000224 149 000227 151 000236 152 000241 153 000243 155 000244 157 000257 160 000261 162 000264 164 000265 166 000305 176 000310 177 000313 179 000314 180 000317 181 000321 182 000333 185 000350 188 000351 196 000367 198 000370 202 000400 203 000405 205 000414 207 000423 209 000432 211 000441 213 000450 215 000454 217 000455 219 000472 224 000475 226 000476 227 000501 228 000503 229 000515 230 000523 233 000544 235 000570 237 000575 239 000576 246 000613 248 000614 250 000617 255 000620 260 000633 262 000634 264 000644 265 000645 266 000651 267 000654 268 000657 269 000660 273 000661 278 000662 279 000663 280 000675 281 000701 282 000704 284 000705 286 000710 288 000711 296 000713 297 000716 298 000730 299 000733 300 000735 301 000741 303 000751 304 000761 305 000772 309 000774 310 001005 312 001010 313 001014 314 001020 315 001022 316 001032 317 001037 319 001040 324 001044 325 001047 327 001054 329 001061 ----------------------------------------------------------- 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