COMPILATION LISTING OF SEGMENT mrds_dsm_dsmd Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/18/85 1019.3 mst Thu 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_dsm_dsmd: proc; 19 20 /* DESCRIPTION: 21* 22* This routine is obsolete, it is maintained to provide 23* compatability with MR8.0 and earlier releases. 24* 25* Known Bugs: 26* 27* Other Problems: 28* 29* HISTORY 30* 31* 76-12-01 Weeldreyer: Modified to add get_dsm_relations entry 32* 33* 80-08-01 Spratt: Changed calls to module names from dsmd_ 34* . entries, and add ext iocb_ptr for submodels 35* 36* 80-11-07 Gray: Added sub_err_ additional detail for when a 37* . submodel points to a database, that no longer exists in 38* . the same place 39* 40* 80-12-31 Davids: added the entry get_dsm_file_rels. This entry is 41* . basicly a stub so that linus can open via a submodel 42* . without having to be changed. 43* . 44* . Added the description, Known Bugs, and Other Problems 45* . sections and reformated the history section. 46* 47* 81-01-05 Davids: changed the name of this module to 48* . mrds_dsm_dsmd_ so that we could write a transfer vector 49* . called dsmd_ so that we would be consistant with how the 50* . rest of mrds works. 51* 52* . added the internal variable a_code to the procedure 53* . cleanup_handler so that it does not return incorrect 54* . values of code back to the user. 55* 56* 81-01-20 Davids: removed the call to mrds_dsm_validate_header 57* . since mrds_dsm_read_header now validates the header as 58* . it reads it. 59* 60* 81-01-22 Davids: changed mrds_dsm_open_read to mrds_dsm_open$read 61* 62* 81-01-26 Davids: changed the name from mrds_dsm_dsmd_ to 63* . mrds_dsm_dsmd 64* 65* . deleted the unused entry points get_mode, 66* . get_submodel_pn, validate_rel, and validate_rel_close. 67* 68* . modified the open_dsm_read entry to remove code that was 69* . needed to support the operation of validate_rel. 70* 71* . modified the declaration section to remove unused 72* . declarations, including several include files. 73* 74* 81-01-27 Davids: implemented an internal working area based on a 75* . temp segment gotten at open time. 76* 77* . implemented the entries get_dsm_header_record_ptr, 78* . get_relation_block_ptr, and get_dsm_relation_names_ptr. 79* . these entries are for mrds code use only and will not be 80* . documented in the manual. 81* 82* . implemented the mapping from the relation_block 83* . structure to the mrds_dsm_relation_str structure in the 84* . get_relation entry. 85* 86* 81-01-29 Davids: implemented the mapping from the 87* . mrds_dsm_relation_names structure to the 88* . dsm_display_rels structure in the dsm_get_relations 89* . entry 90* 91* 81-01-30 Davids: implemented the header_info, relation_data, and 92* . attribute_data entries. 93* 94* . alphabetized entries. 95* 96* 81-02-03 Davids: The open entry point was checking to see if the 97* . submodel was already open before it tried to open it 98* . rather than checking to see that no submodel was open. I 99* . introduced this bug was changing from the mode to the 100* . submodel_already_open variable. 101* 102* 81-02-04 Davids: Removed the entries attribute_data, 103* . get_dsm_header_record_ptr, get_dsm_relation_names_ptr, 104* . get_relation_block_ptr, header_info, and relation_data. 105* . These entries will be moved into a new mrds_dsm_dsi 106* . module. 107* 108* 81-02-05 Davids: The force_close_dsm was removed since it was not 109* . documented and is not used by internal mrds code. 110* 111* 81-05-21 Rickie E. Brinegar: Modified to use the changed 112* . mrds_dsm_relation_names.incl.pl1 which changed 113* . dsm_relation_names to mrds_dsm_relation_names. 114* 115* 81-06-01 Davids: Modified so that the header structure returned 116* . from the mrds_dsm_read_header call is translated into 117* . the structure to be returned to the user rather than 118* . just passing the pointer back. At the moment the two 119* . structures are the same but that may not always be the 120* . case. 121* 122* 81-06-08 Davids: Made the close_dsm entry call 123* . mrds_dsm_close$force rather than mrds_dsm_close 124* 125* . removed checks for and processing of long relation and 126* . attribute names in the get_dsm_relations and 127* . get_relation entries (long names are not possible). 128* 129* . Made security sensitive, i.e. if the database that the 130* . submodel references is secure and the caller is not a 131* . DBA the model names passed back by get_relation are 132* . spaces. 133**/ 134 135 /* PARAMETER */ 136 137 dcl area_ptr ptr; /* (input) pointer to area to allocate structures */ 138 dcl code fixed bin (35); /* (output) error code */ 139 dcl display_rels_ptr ptr; /* (output) pointer to the dsm_display_rels str */ 140 dcl dsm_file_name char (*); /* (input) file whose relations are to be returned */ 141 dcl mrds_dsm_header_ptr ptr init (null ());/* pointer to the mrds_dsm_header str */ 142 dcl dsm_relation_name char (*); /* (input) relation whose relation data is to be returned */ 143 dcl header_record_ptr ptr; /* (output) pointer to the dsm_header_record str */ 144 dcl rstr_ptr ptr; /* (output) pointer to the dsm_relation_str structure */ 145 dcl submodel_pn char (*); /* (input) path to submodel */ 146 147 /* AUTOMATIC */ 148 149 dcl a_code fixed bin (35); /* internal error code */ 150 dcl db_path char (168); /* path to the submodels database */ 151 dcl i fixed bin; /* loop index */ 152 dcl temp_sm_pn char (168); /* absolute path of submodel */ 153 154 /* BASED */ 155 156 dcl area area (sys_info$max_seg_size) based (area_ptr); /* space to allocate structures whose pointers 157* will be returned to the caller */ 158 dcl work_area area (sys_info$max_seg_size) based (work_area_ptr); 159 /* space to allocate structures for internal use */ 160 161 /* BUILTIN */ 162 163 dcl empty builtin; 164 dcl null builtin; 165 166 /* CONDITION */ 167 168 dcl cleanup condition; 169 170 /* CONSTANT */ 171 172 dcl DSM_SUFFIX char (32) varying internal static options (constant) init ("dsm"); 173 174 /* ENTRY */ 175 176 dcl absolute_pathname_$add_suffix entry (char (*), char (*), char (*), fixed bin (35)); 177 dcl get_temp_segment_ entry (char (*), pointer, fixed bin (35)); 178 dcl mrds_dsm_close$force entry (ptr); 179 dcl mrds_dsm_determine_auth_sec entry (char (*), char (*), char (*)) returns (bit (1)); 180 dcl mrds_dsm_get_relation_names entry (ptr, ptr, ptr, fixed bin (35)); 181 dcl mrds_dsm_open$read entry (char (*), ptr, fixed bin (35)); 182 dcl mrds_dsm_read_header entry (ptr, ptr, ptr, fixed bin (35)); 183 dcl mrds_dsm_read_header$db_path entry (ptr, char (168), fixed bin (35)); 184 dcl mrds_dsm_read_relation entry (char (*), ptr, ptr, ptr, fixed bin (35)); 185 dcl release_temp_segment_ entry (char (*), pointer, fixed bin (35)); 186 187 /* EXTERNAL */ 188 189 dcl mrds_error_$incorrect_dsmd_seq fixed bin (35) external static; 190 dcl sys_info$max_seg_size fixed bin (35) external static; 191 192 /* INTERNAL */ 193 194 dcl iocb_ptr internal static ptr init (null); 195 dcl mask_model_info bit (1) unaligned internal static init ("0"b); 196 dcl submodel_already_open bit (1) internal static init ("0"b); 197 dcl work_area_ptr ptr internal static init (null ()); 198 1 1 /* BEGIN INCLUDE FILE mrds_dsm_display_rels.incl.pl1 -- jaw, 12/6/76 */ 1 2 1 3 dcl 1 dsm_display_rels based (drel_ptr), /* user specified relations foor display */ 1 4 2 nrels fixed bin, /* number of relations */ 1 5 2 relation (nrels_alloc refer (dsm_display_rels.nrels)) char (32); /* relation names */ 1 6 1 7 dcl nrels_alloc fixed bin; 1 8 1 9 dcl drel_ptr ptr; 1 10 1 11 /* END INCLUDE FILE mrds_dsm_display_rels.incl.pl1 */ 1 12 199 200 2 1 /* BEGIN INCLUDE FILE mrds_dsm_header.incl.pl1 2 2* 2 3*This include file is for internal MRDS use only - it is not to be 2 4*documented in any user manual. 2 5* 2 6*81-06-01 Davids: This is a copy of the mrds_dsm_header_str 2 7*include file, it is to be used by all mrds routines. The 2 8*structure name has been changed from dsm_header_record to 2 9*mrds_dsm_header to avoid conflicts when both this include file 2 10*and mrds_dsm_header_str are included (mrds_dsm_dsmd). 2 11**/ 2 12 2 13 dcl 1 mrds_dsm_header based, /* header structure for a MRDS submodel */ 2 14 2 dsm_generator_version fixed bin init (0), /* version number of submodel created by CMDSM */ 2 15 2 date_time_generated fixed bin (71) init (0), /* convert data to binary form of creation time */ 2 16 2 database_pn char (168) init (""), /* pathname of database this submodel is valid for */ 2 17 2 name char (32) init (""), /* identifying name for this header structure */ 2 18 2 num_of_relations fixed bin (35) init (0), /* number of relations in submodel view of database */ 2 19 2 creator_id char (32) init ("") ; /* the person.project.tag of the submodel creator */ 2 20 2 21 /* END INCLUDE FILE mrds_dsm_header.incl.pl1 */ 201 202 3 1 /* BEGIN INCLUDE FILE mrds_dsm_header_str.incl.pl1 3 2* 3 3* Created October, 1975 for release in MR 4.0 3 4* Modified December, 1976 by Roger Lackey to add creator_id 3 5* 3 6* 81-01-23 Jim Gray : added initialization to 0, instead of to current version, etc. 3 7* Also cleaned up comments for structure components. 3 8**/ 3 9 3 10 dcl 1 dsm_header_record based, /* header structure for a MRDS submodel */ 3 11 2 dsm_generator_version fixed bin init (0), /* version number of submodel created by CMDSM */ 3 12 2 date_time_generated fixed bin (71) init (0), /* convert data to binary form of creation time */ 3 13 2 database_pn char (168) init (""), /* pathname of database this submodel is valid for */ 3 14 2 name char (32) init (""), /* identifying name for this header structure */ 3 15 2 num_of_relations fixed bin (35) init (0), /* number of relations in submodel view of database */ 3 16 2 creator_id char (32) init ("") ; /* the person.project.tag of the submodel creator */ 3 17 3 18 /* END INCLUDE FILE mrds_dsm_header_str.incl.pl1 */ 203 204 4 1 /* BEGIN INCLUDE FILE mrds_dsm_relation_names.incl.pl1 -- nsd 81/01/12 */ 4 2 4 3 /* 4 4*This include file is for internal mrds use only. It is used to 4 5*return an array of submodel relation names. 4 6* 4 7*HISTORY 4 8* 4 9*81-01-12 Davids: written 4 10* 4 11*81-09-14 Davids: changed relation to char (32) from char (64). 64 4 12*was a proposed maximum but could not be implemented. Several 4 13*modules would not compile when compiled with -prefix stringsize 4 14*becuase they made assignments of the form char (32) = char (64). 4 15**/ 4 16 4 17 dcl 1 mrds_dsm_relation_names based (mrds_dsm_relation_names_ptr), 4 18 2 nrels fixed bin, 4 19 2 relation (mrds_dsm_relation_names_nrels_alloc refer (mrds_dsm_relation_names.nrels)) char (32); 4 20 4 21 dcl mrds_dsm_relation_names_nrels_alloc fixed bin; 4 22 4 23 dcl mrds_dsm_relation_names_ptr ptr; 4 24 4 25 /* END INCLUDE FILE mrds_dsm_relation_names.incl.pl1 */ 4 26 205 206 5 1 /* BEGIN INCLUDE FILE mrds_dsm_rel_str.incl.pl1 5 2* 5 3* Created October, 1975 for release in MR 4.0 */ 5 4 5 5 dcl 1 dsm_relation_str based, /* dsm relation structure */ 5 6 2 key, /* vfile_ key */ 5 7 3 submodel_rel_name char (32), /* Submodel_relation name */ 5 8 2 record, /* vfile record */ 5 9 3 model_rel_name char (32), /* Model relation name */ 5 10 3 no_attributes fixed bin, /* Number of attribute in this relation */ 5 11 3 attribute_info (dsm_num_attr_alloc refer (no_attributes)), 5 12 4 submodel_att_name char (32), /* Submodel attribute name */ 5 13 4 model_att_name char (32); /* Model attribute name */ 5 14 5 15 dcl dsm_num_attr_alloc fixed bin; /* Number of attributes in relation for allocation purposes */ 5 16 5 17 /* END INCLUDE FILE mrds_dsm_rel_str.incl.pl1 */ 5 18 207 208 6 1 /* BEGIN INCLUDE FILE mrds_dsm_rel_block.incl.pl1 6 2* 6 3* Created October, 1975 for release in MR 4.0 6 4* 6 5* The relation_block contains the relation name and the attribute 6 6* names and access information 6 7* 6 8* HISTORY 6 9* 6 10* 80-04-10 Spratt: changed to have version number, be explicitly 6 11* . based, use an automatic variable in the refer for num of 6 12* . attributes, add access flags for rel and attr's, remove 6 13* . attr key flags. This is for the first Attribute Level 6 14* . Security version of MRDS. 6 15* 6 16* 81-01-14 Davids: increased submodel rel and attr names to 64 6 17* . characters and made dsm_rel_name char varying. changed 6 18* . access bits from a bit string to individually named 6 19* . flags. 6 20**/ 6 21 6 22 dcl relation_block_ptr ptr; 6 23 dcl rb_number_of_attributes fixed bin (35); 6 24 dcl RELATION_BLOCK_VERSION_1 fixed bin (35) internal static options (constant) init (1); 6 25 6 26 dcl 1 relation_block based (relation_block_ptr), 6 27 /* Relation block */ 6 28 2 version fixed bin (35), 6 29 2 dsm_rel_name char (64) varying, /* Data submodel relation name */ 6 30 2 dm_rel_name char (32), /* Data model relation name */ 6 31 2 rel_access unal, 6 32 3 append bit (1), 6 33 3 delete bit (1), 6 34 3 null bit (1), 6 35 3 mbz1 bit (33), 6 36 2 no_rb_attributes fixed bin, /* The number of attributes in this relation */ 6 37 2 attribute_info (rb_number_of_attributes refer (relation_block.no_rb_attributes)), 6 38 3 dsm_attr_name char (64) varying, /* Data submodel attribute name */ 6 39 3 attr_access unal, /* Data submodel attribute flags */ 6 40 4 read bit (1), 6 41 4 modify bit (1), 6 42 4 null bit (1), 6 43 4 mbz2 bit (33), /* For future use */ 6 44 3 dm_attr_name char (32) varying, /* Data model attribute name */ 6 45 3 dm_attr_flags, /* Data model attribute flags */ 6 46 4 mbz3 bit (36); /* For future use */ 6 47 6 48 /* END INCLUDE FILE mrds_dsm_rel_block.incl.pl1 */ 6 49 209 210 211 close_dsm: entry (code); 212 213 if submodel_already_open 214 then do; 215 call mrds_dsm_close$force (iocb_ptr); 216 submodel_already_open = "0"b; 217 call release_temp_segment_ ("mrds_dsm_dsmd", work_area_ptr, a_code); 218 work_area_ptr = null (); 219 mask_model_info = "0"b; 220 end; 221 else code = mrds_error_$incorrect_dsmd_seq; 222 223 return; 224 225 get_dsm_file_rels: entry (dsm_file_name, area_ptr, display_rels_ptr, code); 226 227 /* 228* For internal mrds use only. Not to be documented in any user manual. 229* 230* Because each file has only 1 relation in it and the file name is 231* the same as the relation name there is no reason to query the 232* submodel about anything. 233**/ 234 235 if submodel_already_open 236 then do; 237 nrels_alloc = 1; 238 allocate dsm_display_rels in (area); 239 display_rels_ptr = drel_ptr; 240 dsm_display_rels.relation = dsm_file_name; 241 code = 0; 242 end; 243 else do; 244 code = mrds_error_$incorrect_dsmd_seq; 245 display_rels_ptr = null (); 246 end; 247 248 return; 249 250 get_dsm_header: entry (area_ptr, header_record_ptr, code); 251 252 253 254 255 header_record_ptr = null (); 256 code = 0; 257 if ^submodel_already_open 258 then code = mrds_error_$incorrect_dsmd_seq; 259 else do; 260 call mrds_dsm_read_header (work_area_ptr, mrds_dsm_header_ptr, iocb_ptr, code); 261 if code = 0 262 then do; 263 allocate dsm_header_record in (area) set (header_record_ptr); 264 header_record_ptr -> dsm_header_record.dsm_generator_version = 265 mrds_dsm_header_ptr -> mrds_dsm_header.dsm_generator_version; 266 header_record_ptr -> dsm_header_record.date_time_generated = 267 mrds_dsm_header_ptr -> mrds_dsm_header.date_time_generated; 268 header_record_ptr -> dsm_header_record.database_pn = 269 mrds_dsm_header_ptr -> mrds_dsm_header.database_pn; 270 header_record_ptr -> dsm_header_record.name = 271 mrds_dsm_header_ptr -> mrds_dsm_header.name; 272 header_record_ptr -> dsm_header_record.num_of_relations = 273 mrds_dsm_header_ptr -> mrds_dsm_header.num_of_relations; 274 header_record_ptr -> dsm_header_record.creator_id = 275 mrds_dsm_header_ptr -> mrds_dsm_header.creator_id; 276 277 free mrds_dsm_header_ptr -> mrds_dsm_header; 278 end; 279 end; 280 281 return; 282 283 get_dsm_relations: entry (area_ptr, display_rels_ptr, code); 284 285 if submodel_already_open 286 then do; 287 call mrds_dsm_get_relation_names (work_area_ptr, mrds_dsm_relation_names_ptr, iocb_ptr, code); 288 if code = 0 289 then do; 290 nrels_alloc = mrds_dsm_relation_names.nrels; 291 allocate dsm_display_rels in (area); 292 do i = 1 to nrels_alloc; 293 dsm_display_rels.relation (i) = mrds_dsm_relation_names.relation (i); 294 end; 295 end; 296 297 if mrds_dsm_relation_names_ptr ^= null () 298 then free mrds_dsm_relation_names_ptr -> mrds_dsm_relation_names; 299 end; 300 else code = mrds_error_$incorrect_dsmd_seq; 301 302 if code = 0 303 then display_rels_ptr = drel_ptr; 304 else display_rels_ptr = null (); 305 306 return; 307 308 get_relation: entry (dsm_relation_name, area_ptr, rstr_ptr, code); 309 310 if submodel_already_open 311 then do; 312 call mrds_dsm_read_relation (dsm_relation_name, work_area_ptr, relation_block_ptr, iocb_ptr, code); 313 if code = 0 314 then do; 315 dsm_num_attr_alloc = relation_block.no_rb_attributes; 316 allocate dsm_relation_str in (area) set (rstr_ptr); 317 rstr_ptr -> dsm_relation_str.key.submodel_rel_name = relation_block.dsm_rel_name; 318 if mask_model_info 319 then rstr_ptr -> dsm_relation_str.record.model_rel_name = ""; 320 else rstr_ptr -> dsm_relation_str.record.model_rel_name = relation_block.dm_rel_name; 321 do i = 1 to rstr_ptr -> dsm_relation_str.no_attributes; 322 rstr_ptr -> dsm_relation_str.record.attribute_info (i).submodel_att_name = 323 relation_block.attribute_info (i).dsm_attr_name; 324 if mask_model_info 325 then rstr_ptr -> dsm_relation_str.record.attribute_info (i).model_att_name = ""; 326 else rstr_ptr -> dsm_relation_str.record.attribute_info (i).model_att_name = 327 relation_block.attribute_info (i).dm_attr_name; 328 end; 329 end; 330 331 if relation_block_ptr ^= null () 332 then free relation_block_ptr -> relation_block; 333 334 end; 335 else code = mrds_error_$incorrect_dsmd_seq; 336 337 return; 338 339 open_dsm_read: entry (submodel_pn, code); 340 341 if submodel_already_open 342 then code = mrds_error_$incorrect_dsmd_seq; 343 else do; 344 on condition (cleanup) call cleanup_handler; 345 call absolute_pathname_$add_suffix (submodel_pn, (DSM_SUFFIX), temp_sm_pn, code); 346 if code ^= 0 347 then do; 348 call cleanup_handler; 349 return; 350 end; 351 352 call mrds_dsm_open$read (temp_sm_pn, iocb_ptr, code); 353 if code ^= 0 354 then do; 355 call cleanup_handler; 356 return; 357 end; 358 359 submodel_already_open = "1"b; 360 361 call get_temp_segment_ ( based char(32) initial level 2 in structure "mrds_dsm_header" packed unaligned dcl 2-13 in procedure "mrds_dsm_dsmd" ref 274 database_pn 4 based char(168) initial level 2 in structure "dsm_header_record" packed unaligned dcl 3-10 in procedure "mrds_dsm_dsmd" set ref 263* 268* database_pn 4 based char(168) initial level 2 in structure "mrds_dsm_header" packed unaligned dcl 2-13 in procedure "mrds_dsm_dsmd" ref 268 date_time_generated 2 based fixed bin(71,0) initial level 2 in structure "mrds_dsm_header" dcl 2-13 in procedure "mrds_dsm_dsmd" ref 266 date_time_generated 2 based fixed bin(71,0) initial level 2 in structure "dsm_header_record" dcl 3-10 in procedure "mrds_dsm_dsmd" set ref 263* 266* db_path 000103 automatic char(168) unaligned dcl 150 set ref 369* 375* display_rels_ptr parameter pointer dcl 139 set ref 225 239* 245* 283 302* 304* dm_attr_name 56 based varying char(32) array level 3 dcl 6-26 ref 326 dm_rel_name 22 based char(32) level 2 packed unaligned dcl 6-26 ref 320 drel_ptr 000240 automatic pointer dcl 1-9 set ref 238* 239 240 291* 293 302 dsm_attr_name 34 based varying char(64) array level 3 dcl 6-26 ref 322 dsm_display_rels based structure level 1 unaligned dcl 1-3 set ref 238 291 dsm_file_name parameter char unaligned dcl 140 ref 225 240 dsm_generator_version based fixed bin(17,0) initial level 2 in structure "mrds_dsm_header" dcl 2-13 in procedure "mrds_dsm_dsmd" ref 264 dsm_generator_version based fixed bin(17,0) initial level 2 in structure "dsm_header_record" dcl 3-10 in procedure "mrds_dsm_dsmd" set ref 263* 264* dsm_header_record based structure level 1 unaligned dcl 3-10 set ref 263 dsm_num_attr_alloc 000244 automatic fixed bin(17,0) dcl 5-15 set ref 315* 316 316 dsm_rel_name 1 based varying char(64) level 2 dcl 6-26 ref 317 dsm_relation_name parameter char unaligned dcl 142 set ref 308 312* dsm_relation_str based structure level 1 unaligned dcl 5-5 set ref 316 empty builtin function dcl 163 ref 367 get_temp_segment_ 000020 constant entry external dcl 177 ref 361 header_record_ptr parameter pointer dcl 143 set ref 250 255* 263* 264 266 268 270 272 274 i 000155 automatic fixed bin(17,0) dcl 151 set ref 292* 293 293* 321* 322 322 324 326 326* iocb_ptr 000010 internal static pointer initial dcl 194 set ref 215* 260* 287* 312* 352* 369* 383 383* 389* key based structure level 2 packed unaligned dcl 5-5 mask_model_info 000012 internal static bit(1) initial unaligned dcl 195 set ref 219* 318 324 375* 390* model_att_name 31 based char(32) array level 4 packed unaligned dcl 5-5 set ref 324* 326* model_rel_name 10 based char(32) level 3 packed unaligned dcl 5-5 set ref 318* 320* mrds_dsm_close$force 000022 constant entry external dcl 178 ref 215 383 mrds_dsm_determine_auth_sec 000024 constant entry external dcl 179 ref 375 mrds_dsm_get_relation_names 000026 constant entry external dcl 180 ref 287 mrds_dsm_header based structure level 1 unaligned dcl 2-13 ref 277 mrds_dsm_header_ptr 000100 automatic pointer initial dcl 141 set ref 141* 260* 264 266 268 270 272 274 277 mrds_dsm_open$read 000030 constant entry external dcl 181 ref 352 mrds_dsm_read_header 000032 constant entry external dcl 182 ref 260 mrds_dsm_read_header$db_path 000034 constant entry external dcl 183 ref 369 mrds_dsm_read_relation 000036 constant entry external dcl 184 ref 312 mrds_dsm_relation_names based structure level 1 unaligned dcl 4-17 ref 297 mrds_dsm_relation_names_ptr 000242 automatic pointer dcl 4-23 set ref 287* 290 293 297 297 mrds_error_$incorrect_dsmd_seq 000042 external static fixed bin(35,0) dcl 189 ref 221 244 257 300 335 341 name 56 based char(32) initial level 2 in structure "mrds_dsm_header" packed unaligned dcl 2-13 in procedure "mrds_dsm_dsmd" ref 270 name 56 based char(32) initial level 2 in structure "dsm_header_record" packed unaligned dcl 3-10 in procedure "mrds_dsm_dsmd" set ref 263* 270* no_attributes 20 based fixed bin(17,0) level 3 dcl 5-5 set ref 316* 321 no_rb_attributes 33 based fixed bin(17,0) level 2 dcl 6-26 ref 315 331 nrels based fixed bin(17,0) level 2 in structure "dsm_display_rels" dcl 1-3 in procedure "mrds_dsm_dsmd" set ref 238* 240 291* nrels based fixed bin(17,0) level 2 in structure "mrds_dsm_relation_names" dcl 4-17 in procedure "mrds_dsm_dsmd" ref 290 297 nrels_alloc 000236 automatic fixed bin(17,0) dcl 1-7 set ref 237* 238 238 290* 291 291 292 null builtin function dcl 164 ref 141 218 245 255 297 304 331 383 386 388 389 num_of_relations 66 based fixed bin(35,0) initial level 2 in structure "mrds_dsm_header" dcl 2-13 in procedure "mrds_dsm_dsmd" ref 272 num_of_relations 66 based fixed bin(35,0) initial level 2 in structure "dsm_header_record" dcl 3-10 in procedure "mrds_dsm_dsmd" set ref 263* 272* record 10 based structure level 2 unaligned dcl 5-5 relation 1 based char(32) array level 2 in structure "dsm_display_rels" packed unaligned dcl 1-3 in procedure "mrds_dsm_dsmd" set ref 240* 293* relation 1 based char(32) array level 2 in structure "mrds_dsm_relation_names" packed unaligned dcl 4-17 in procedure "mrds_dsm_dsmd" ref 293 relation_block based structure level 1 unaligned dcl 6-26 ref 331 relation_block_ptr 000246 automatic pointer dcl 6-22 set ref 312* 315 317 320 322 326 331 331 release_temp_segment_ 000040 constant entry external dcl 185 ref 217 386 rstr_ptr parameter pointer dcl 144 set ref 308 316* 317 318 320 321 322 324 326 submodel_already_open 000013 internal static bit(1) initial unaligned dcl 196 set ref 213 216* 235 257 285 310 341 359* 385* submodel_att_name 21 based char(32) array level 4 packed unaligned dcl 5-5 set ref 322* submodel_pn parameter char unaligned dcl 145 set ref 339 345* submodel_rel_name based char(32) level 3 packed unaligned dcl 5-5 set ref 317* sys_info$max_seg_size 000044 external static fixed bin(35,0) dcl 190 ref 367 temp_sm_pn 000156 automatic char(168) unaligned dcl 152 set ref 345* 352* 375* work_area based area dcl 158 set ref 367* work_area_ptr 000014 internal static pointer initial dcl 197 set ref 217* 218* 260* 287* 312* 361* 367 386 386* 388* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. RELATION_BLOCK_VERSION_1 internal static fixed bin(35,0) initial dcl 6-24 mrds_dsm_relation_names_nrels_alloc automatic fixed bin(17,0) dcl 4-21 rb_number_of_attributes automatic fixed bin(35,0) dcl 6-23 NAMES DECLARED BY EXPLICIT CONTEXT. cleanup_handler 001172 constant entry internal dcl 381 ref 344 348 355 364 372 close_dsm 000052 constant entry external dcl 211 get_dsm_file_rels 000137 constant entry external dcl 225 get_dsm_header 000245 constant entry external dcl 250 get_dsm_relations 000361 constant entry external dcl 283 get_relation 000501 constant entry external dcl 308 mrds_dsm_dsmd 000040 constant entry external dcl 18 open_dsm_read 000706 constant entry external dcl 339 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1546 1614 1252 1556 Length 2172 1252 46 342 273 6 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mrds_dsm_dsmd 223 external procedure is an external procedure. on unit on line 344 64 on unit cleanup_handler 82 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 iocb_ptr mrds_dsm_dsmd 000012 mask_model_info mrds_dsm_dsmd 000013 submodel_already_open mrds_dsm_dsmd 000014 work_area_ptr mrds_dsm_dsmd STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mrds_dsm_dsmd 000100 mrds_dsm_header_ptr mrds_dsm_dsmd 000102 a_code mrds_dsm_dsmd 000103 db_path mrds_dsm_dsmd 000155 i mrds_dsm_dsmd 000156 temp_sm_pn mrds_dsm_dsmd 000236 nrels_alloc mrds_dsm_dsmd 000240 drel_ptr mrds_dsm_dsmd 000242 mrds_dsm_relation_names_ptr mrds_dsm_dsmd 000244 dsm_num_attr_alloc mrds_dsm_dsmd 000246 relation_block_ptr mrds_dsm_dsmd THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return enable shorten_stack ext_entry ext_entry_desc int_entry alloc_based free_based empty THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_$add_suffix get_temp_segment_ mrds_dsm_close$force mrds_dsm_determine_auth_sec mrds_dsm_get_relation_names mrds_dsm_open$read mrds_dsm_read_header mrds_dsm_read_header$db_path mrds_dsm_read_relation release_temp_segment_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. mrds_error_$incorrect_dsmd_seq sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 141 000033 18 000037 211 000046 213 000063 215 000066 216 000074 217 000076 218 000122 219 000125 220 000126 221 000127 223 000131 225 000132 235 000162 237 000165 238 000167 239 000201 240 000202 241 000231 242 000233 244 000234 245 000236 248 000240 250 000241 255 000260 256 000263 257 000264 260 000272 261 000306 263 000310 264 000334 266 000336 268 000341 270 000344 272 000347 274 000351 277 000354 281 000356 283 000357 285 000376 287 000401 288 000415 290 000417 291 000421 292 000433 293 000441 294 000451 297 000453 299 000464 300 000465 302 000467 304 000474 306 000476 308 000477 310 000522 312 000525 313 000555 315 000557 316 000562 317 000575 318 000602 320 000611 321 000614 322 000623 324 000641 326 000653 328 000662 331 000664 334 000676 335 000677 337 000701 339 000702 341 000725 344 000733 345 000755 346 001013 348 001016 349 001022 352 001023 353 001044 355 001046 356 001052 359 001053 361 001056 362 001102 364 001104 365 001110 367 001111 369 001115 370 001130 372 001132 373 001136 375 001137 379 001170 381 001171 383 001177 385 001211 386 001213 388 001244 389 001247 390 001250 391 001251 ----------------------------------------------------------- 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