COMPILATION LISTING OF SEGMENT mrds_rst_domain_handler Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/16/86 1346.5 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 19 20 /* HISTORY: 21* 22* originally written by jim gray - - october 1978 23* Modified by RDL October 1978 to add define and cmdb code 24* Modified by Jim Gray 3/20/79 - to handle to versions of model and working storage (rsc) 25* 26**/ 27 28 29 mrds_rst_domain_handler: procedure (rsc_ptr, list_ptr); 30 31 32 /* DESCRIPTION: 33* 34* this routine is called by the RMDB/CMDB parser to build/alter 35* the mrds database model based on the parse information passed 36* to it, and which directive called it.(undefine, define, redefine, cmdb) 37* it will be passed only domain information of one of two forms, 38* either a single name to delete, or a structure for defining 39* a new domain, or redefining an existing domain. 40* 41**/ 42 43 /* PARAMETERS: 44* 45* rsc_ptr - - (input) pointer to the common control segment 46* 47* list_ptr - - (input) pointer to either a 32 character domain name, 48* or to a parse_info domain structure describing the domain. 49* the first only occurs with the undefine directive. 50* 51* mdbm_db_model - - (output) the updated model with it's domain information altered 52* 53* gloabl lists - - (output) the database entity list reflecting the changes 54* to the model(used for ease of reference during RMDB/CMDB) 55* 56* error_output - - (output) via calls to mrds_rst_error for error messages 57* 58**/ 59 60 /* REMAINING ERRORS: 61* 62* undefine: 63* 64* the domain name may be the (this may be ignored) 65* the domain may not be defined in the model 66* 67* define, cmdb: 68* 69* the domain name may be the (this can be ignored) 70* the domain may be already defined in the model. 71* the check option stack may have bad(unconverted) constants(this can be ignored) 72* the encode_proc, decode_proc, check_proc pathnames may be invalid 73* (i.e. may not be able to initiate them) 74* 75* redefine: 76* 77* the domain name may be the (this can be ignored). 78* the domain may not be defined in the model. 79* same check and procedure errors as under define. 80* 81* note: where it is stated "(this may be ignored)", this is because 82* a previous error has been issued that will prevent the bad information 83* from ever being built into and used in a valid db_model. 84* 85**/ 86 87 Start: 88 89 directive_ptr = rsc.directive_ptr; /* So we can use directive str */ 90 stmt_ptr = rsc.stmt_ptr; 91 92 if directive.type = UNDEFINE then do; 93 delete_name_ptr = list_ptr; 94 domain_name = delete_name.overlay; 95 end; 96 else do; 97 domain_ptr = list_ptr; 98 domain_name = domain.name; 99 end; 100 101 if rsc.trace_sw then 102 call mrds_rst_meter (rsc_ptr, "mrds_rst_domain_handler", ON /* entrance */, (domain_name)); 103 104 if directive.type = UNDEFINE then do; /* Undefine the domain */ 105 106 /* This is not implemented yet so issue an error */ 107 108 if stmt (directive.type).domain.number > 0 then ; 109 else call error (2, mrds_error_$rst_undone_option, 110 "The domain handler will not implement the ""undefine"" directive" || 111 " until a later release."); 112 113 end; /* END of undefine */ 114 115 if directive.type = DEFINE | directive.type = CMDB then do; /* Define or cmdb section */ 116 117 dbm_ptr = rsc.n_dm_ptr; /* db_model pointer */ 118 119 call mrds_rst_list_element$add /* Add to global domain list */ 120 (domain.name, MAIN_LIST, rsc_ptr, rsc.h_gdom_ptr, gl_ptr, code); 121 if code ^= 0 then do; /* Something wrong happened */ 122 if code = mrds_error_$rst_list_duplicate then 123 call error (2, mrds_error_$domain_already_defined, 124 "The domain """ || rtrim (domain.name) || 125 """ given on line " || ltrim (char (domain.line_num)) || 126 " is already defined" || ", the duplicate will be ignored!!"); 127 else call error (3, code, "Adding " || rtrim (domain.name) || " to gdom_list"); 128 end; 129 130 /* Domain was not found in gdom list so it was added to the gdom list */ 131 132 133 134 /* Fill in list elements in gdom list entry for this domain */ 135 136 gl.type = MAIN_LIST; 137 gl.name = domain.name; 138 gl.item_info_ptr = null (); /* no domain_info pointer yet */ 139 gl.parse_info_ptr = domain_ptr; 140 gl.other_info_ptr = dbm_ptr; 141 gl.item_sub_list_ptr = null; /* No attributes attached to this domain yet */ 142 gl.file_info_ptr = null; 143 gl.file_model_ptr = null; 144 gl.affected = ON; 145 gl.undefine = OFF; 146 gl.redefine = OFF; 147 if directive.type = DEFINE then do; 148 gl.define = ON; 149 gl.cmdb = OFF; 150 end; 151 else do; 152 gl.define = OFF; 153 gl.cmdb = ON; 154 end; 155 gl.superior_assigned = OFF; /* no referencing relations yet */ 156 gl.inferior_assigned = OFF; /* No attributes assigned to this domain yet */ 157 gl.complete = ON; /* domain info assigned */ 158 gl.consistant = ON; /* assume innocent until proven guilty */ 159 gl.reserved = OFF; 160 161 /* allocate a domain info for this domain */ 162 163 db_model_path = rtrim (rsc.temp_dir) || ">db_model"; 164 call mrds_rst_model_alloc (rsc_ptr, db_model_path, DOMAIN_INFO, di_ptr); 165 166 if di_ptr = null () then 167 call model_overflow ("domain_info"); 168 else do; 169 170 171 call init_domain_info; /* Set all default values */ 172 gl.item_info_ptr = di_ptr; 173 call assign_domain_info; /* Fill in domain_info with info from domain structure */ 174 175 /* link the domain info into to the list in definition order */ 176 177 if db_model.domain_ptr = NULL_OFFSET then 178 db_model.domain_ptr = rel (di_ptr); 179 else do; 180 if stmt (directive.type).domain.number > 0 then ; /* not first time */ 181 else do; /* first time, get end of current list */ 182 last_di_ptr = pointer (dbm_ptr, db_model.domain_ptr); 183 do while (last_di_ptr -> domain_info.fwd_thread ^= NULL_OFFSET); 184 last_di_ptr = pointer (dbm_ptr, last_di_ptr -> domain_info.fwd_thread); 185 end; 186 end; 187 last_di_ptr -> domain_info.fwd_thread = rel (di_ptr); /* set old last pointing to new last */ 188 end; 189 last_di_ptr = di_ptr; /* remember new last place on list */ 190 191 192 /* count up the number of domains */ 193 194 db_model.num_domains = db_model.num_domains + 1; 195 196 end; 197 198 end; /* define or cmdb section */ 199 200 if directive.type = REDEFINE then do; /* Redefine section */ 201 202 /* THis directive is not implemented yet -- so issue error msg */ 203 204 if stmt (directive.type).domain.number > 0 then ; 205 else call error (2, mrds_error_$rst_undone_option, 206 "The domain handler will not implement the ""redefine"" directive" || 207 " until a later release."); 208 209 end; /* END of redefine section */ 210 211 exit: /* Only exit from procedure */ 212 if rsc.trace_sw then 213 call mrds_rst_meter (rsc_ptr, "mrds_rst_domain_handler", OFF /* exit */, (domain_name)); 214 return; 215 216 assign_domain_info: proc; 217 218 /* This procedure assignes the information supplied in domain (from parser) 219* to the domain_info elements */ 220 221 domain_info.name = domain.name; 222 domain_info.changer_ptr = db_model.changer_ptr; 223 domain_info.db_desc = domain.descriptor; 224 domain_info.user_desc = domain.descriptor; 225 domain_info.ave_len = domain.varying_avg_length; 226 227 if domain.options then do; /* Some options were supplied */ 228 229 if domain.check.flag then do; /* check option */ 230 if domain.check.stack_ptr = null then domain_info.ck_stack_ptr = NULL_OFFSET; 231 else domain_info.ck_stack_ptr = rel (domain.check.stack_ptr); 232 domain_info.nck_items = domain.check.stack_size; 233 234 call mrds_rst_error (rsc_ptr, 2 /* severity */, mrds_error_$rst_undone_option, 235 "The ""-check"" option given for domain """ || rtrim (domain.name) || 236 """ on line " || ltrim (char (domain.line_num)) || 237 " will not be implemented until a later release."); 238 end; 239 240 241 if domain.check_proc.flag then do; /* check_proc option */ 242 domain_info.check_path_ptr = set_path_entry ((domain.check_proc.path), 243 (domain.check_proc.entry)); 244 end; 245 246 if domain.encode_proc.flag then do; /* encode_proc option */ 247 domain_info.encd_path_ptr = set_path_entry ((domain.encode_proc.path), 248 (domain.encode_proc.entry)); 249 end; 250 251 if domain.decode_proc.flag then do; /* decode_proc option */ 252 domain_info.decd_path_ptr = set_path_entry ((domain.decode_proc.path), 253 (domain.decode_proc.entry)); 254 end; 255 256 if domain.decode_dcl.flag then do; /* decode_dcl option */ 257 domain_info.user_desc = domain.decode_dcl.descriptor; 258 end; 259 260 end; /* END if domain.options then do */ 261 262 263 end assign_domain_info; 264 265 error: proc (sev, cd, msg); 266 267 dcl sev fixed bin; /* (INPUT) Severity level */ 268 dcl cd fixed bin (35); /* (INPUT) error code */ 269 dcl msg char (*); /* (INPUT) specific error information */ 270 271 call mrds_rst_error (rsc_ptr, sev, cd, msg); 272 goto exit; 273 274 end error; 275 276 init_domain_info: proc; 277 278 domain_info.name = " "; 279 domain_info.db_desc_is_ptr = OFF; 280 domain_info.user_desc_is_ptr = OFF; 281 domain_info.db_desc = OFF; 282 domain_info.user_desc = OFF; 283 domain_info.no_conversion = OFF; 284 domain_info.procedures_present = OFF; 285 domain_info.reserved = OFF; 286 domain_info.nck_items = 0; 287 domain_info.ave_len = 0; 288 domain_info.fwd_thread = NULL_OFFSET; 289 domain_info.ck_stack_ptr = NULL_OFFSET; 290 domain_info.check_path_ptr = NULL_OFFSET; 291 domain_info.encd_path_ptr = NULL_OFFSET; 292 domain_info.decd_path_ptr = NULL_OFFSET; 293 domain_info.str_before_path_ptr = NULL_OFFSET; 294 domain_info.str_err_path_ptr = NULL_OFFSET; 295 domain_info.str_after_path_ptr = NULL_OFFSET; 296 domain_info.get_before_path_ptr = NULL_OFFSET; 297 domain_info.get_err_path_ptr = NULL_OFFSET; 298 domain_info.get_after_path_ptr = NULL_OFFSET; 299 domain_info.mod_before_path_ptr = NULL_OFFSET; 300 domain_info.mod_err_path_ptr = NULL_OFFSET; 301 domain_info.mod_after_path_ptr = NULL_OFFSET; 302 domain_info.unused_1 = NULL_OFFSET; 303 domain_info.unused_2 = NULL_OFFSET; 304 domain_info.changer_ptr = NULL_OFFSET; 305 306 307 end init_domain_info; 308 309 set_path_entry: procedure (path, entry) returns (bit (18)); 310 311 /* routine to allocate and fill in the path_entry structure, and return the offset to it */ 312 313 call mrds_rst_model_alloc (rsc_ptr, db_model_path, PATH_ENTRY, path_entry_ptr); 314 315 if path_entry_ptr = null () then do; 316 path_entry_ptr = pointer (null (), NULL_OFFSET); 317 call model_overflow ("path_entry"); 318 end; 319 320 else do; 321 322 /* fill in the supplied path and entry names */ 323 324 path_entry_ptr -> path_entry.path = path; 325 path_entry_ptr -> path_entry.entry = entry; 326 327 end; 328 329 return (rel (path_entry_ptr)); 330 331 332 333 declare path char (168); /* input pathname */ 334 declare entry char (32); /* input entryname */ 335 336 end; 337 338 model_overflow: procedure (struct_cause); 339 340 /* report model capacity exceeded, first time only */ 341 342 if rsc.model_overflow then ; 343 else do; 344 rsc.model_overflow = ON; 345 346 call ioa_$rs ("^a^a^a ^d ^a^a^a", message, message_length, 347 "The domain """, domain.name, """ on line", domain.line_num, 348 "caused an overflow of the db_model while processing the structure """, 349 struct_cause, """."); 350 351 call mrds_rst_error (rsc_ptr, 2 /* severity */, mrds_error_$rst_model_limit, (message)); 352 353 end; 354 355 356 declare struct_cause char (*); /* either "domain_info", or "path_entry" */ 357 358 end; 359 360 dcl (null, rtrim, addr, fixed, rel) builtin; 361 362 dcl NULL_OFFSET bit (18) unal int static options (constant) init ("111111111111111111"b); 363 dcl ON bit (1) internal static options (constant) init ("1"b); /* true state */ 364 dcl OFF bit (1) internal static options (constant) init ("0"b); /* false */ 365 dcl list_ptr ptr; /* (INPUT PARAMETER) */ 366 declare last_di_ptr ptr internal static; /* pointer to last domain_info in list */ 367 368 declare db_model_path char (168); /* path name down to db_model */ 369 declare message_length fixed bin (21); /* length of error specifics message */ 370 dcl code fixed bin (35); /* Error code */ 371 dcl sys_info$max_seg_size ext fixed bin (35);/* System constant */ 372 declare mrds_rst_model_alloc entry (ptr, char (*), fixed bin, ptr); /* model alloc routine */ 373 dcl char builtin; 374 dcl ltrim builtin; 375 dcl pointer builtin; 376 377 declare message char (256) varying;/* specifics of error occurence */ 378 declare domain_name char (32); /* input name for metering */ 379 380 declare mrds_error_$rst_model_limit fixed bin (35) ext; /* model capacity exceededd */ 381 dcl mrds_error_$rst_undone_option fixed bin (35) external; /* option not coded yet */ 382 dcl mrds_error_$rst_list_duplicate ext fixed bin (35); /* Duplicate found in attemp to add to list */ 383 dcl mrds_error_$domain_already_defined ext fixed bin (35); 384 declare ioa_$rs entry options (variable); /* string manipulator */ 385 dcl mrds_rst_list_element$add entry (char (32) aligned, fixed binary, ptr, ptr, ptr, fixed bin (35)); 386 dcl mrds_rst_meter entry (ptr, char (*), bit (1), char (*)); /* metering/tracing routine */ 387 dcl mrds_rst_error entry (ptr, fixed bin, fixed bin (35), char (*)); /* general error handler */ 388 1 1 /* BEGIN INCLUDE FILE mrds_rst_rsc.incl.pl1 RDL 7/7/78 */ 1 2 1 3 /* Modified 8/21/78 by RDL */ 1 4 1 5 /* Modified 9/11/78 by RDL to add directive and stmt pointers */ 1 6 1 7 /* Modified 11/4/78 by RDL to add debug,trace,meter switches 1 8* 1 9* Modified 3/29/79 by RDL to change s_seg_info_ptr to source_seg_ptr 1 10* 1 11* Modified by Jim Gray - - Jan. 1980, to add flags to disallow blocked files, forieng keys, and restructuring. 1 12* 1 13* Modified by Jim Gray - - Feb. 1980, to add command level flag for cmdb subroutine interface. 1 14* 1 15* Modified by Jim Gray - - 80-11-06, to add bit for cmdb -secure option. 1 16* 1 17* 81-05-18 Jim Gray : added bit for max_attributes error message, so that 1 18* it would only be issued on first occurence. 1 19* 1 20* 82-08-19 Davids: added the db_type field. 1 21* 1 22* 83-02-18 Mike Kubicar : Removed the db_type field and added the 1 23* db_relation_mode_flags substructure to define the modes applicable 1 24* to the database's relations. Also removed assorted unsed fields 1 25* (names that included the word unused). 1 26* 1 27**/ 1 28 1 29 dcl 1 rsc based (rsc_ptr), /* Restructuring control info */ 1 30 2 rsc_dir char (200), /* pathname of directory containing rsc segment */ 1 31 2 dbp char (168), /* Database absolute path */ 1 32 2 temp_dir char (168), /* Path name of temp restrucuring directory */ 1 33 2 temp_dir_sw bit (1) unal, /* On => temp dir has been created */ 1 34 2 db_quiesced_sw bit (1) unal, /* On => database has been quiesced */ 1 35 2 o_db_open_sw bit (1) unal, /* On => old database has been opened */ 1 36 2 n_db_open_sw bit (1) unal, /* On => temp database is open */ 1 37 2 listing_seg_sw bit (1) unal, /* On => listing segment has been created */ 1 38 2 skip_scanner_conversion bit (1) unal, /* Skip conversion in scanner */ 1 39 2 cmdb_option bit (1) unal, /* ON => this is a cmdb source, not restructuring */ 1 40 2 trace_sw bit (1) unal, /* On -> trace mode in affect */ 1 41 2 debug_sw bit (1) unal, /* On = debug mode (NOT IMPLEMENTED) */ 1 42 2 meter_sw bit (1) unal, /* On = procedures call metering procedure */ 1 43 2 delete_db_sw bit (1) unal, /* On = delete data base in cleanup */ 1 44 2 model_consistent_sw bit (1) unal, /* On => Model is consistent */ 1 45 2 physical_started_sw bit (1) unal, /* On => Physical restructuring started */ 1 46 2 physical_complete_sw bit (1) unal, /* On => Physical restructuring completed */ 1 47 2 model_overflow bit (1) unal, /* ON => model segment area condition occurred */ 1 48 2 max_files bit (1) unal, /* ON => maximum number of files reached */ 1 49 2 allow_foreign_keys bit (1) unal, /* on => allow foreign key statment */ 1 50 2 foreign_key_seen bit (1) unal, /* on => foreign key definition in source */ 1 51 2 allow_blocked_files bit (1) unal, /* on => allow file statement with blocked option */ 1 52 2 blocked_file_seen bit (1) unal, /* on => blocked file definition in source */ 1 53 2 allow_restructuring bit (1) unal, /* on => allow RMDB entry point */ 1 54 2 command_level bit (1) unal, /* on => called from command unal, not subroutine level */ 1 55 2 secure bit (1) unal, /* on => -secure option given for cmdb */ 1 56 2 max_attrs bit (1) unal, /* on => max attrs/rel or max indexes/rel exceeded */ 1 57 2 db_relation_mode_flags, 1 58 3 dm_file_type bit (1) unal, /* on => relations are dm files */ 1 59 3 protection_on bit (1) unal, /* on => relations need transactions */ 1 60 3 concurrency_on bit (1) unal, /* on => concurrency control enabled */ 1 61 3 rollback_on bit (1) unal, /* on => before journalling is enabled */ 1 62 2 severity_high fixed bin, /* Highest severity level error encountered */ 1 63 2 phase fixed bin, /* 000 = init 1 64* 100 = global list init 1 65* 200 = parse 1 66* 300 = physical init 1 67* 400 = physical */ 1 68 2 h_o_seg_info_ls_ptr ptr, /* Pointer to head of old db seg_info list */ 1 69 2 h_n_seg_info_ls_ptr ptr, /* Pointer to head of new db seg_info list */ 1 70 2 h_gfile_ptr ptr, /* Pointer to head of global file list */ 1 71 2 h_gdom_ptr ptr, /* Pointer to head of global domain list */ 1 72 2 h_gattr_ptr ptr, /* Pointer to head of global attribute list */ 1 73 2 h_grel_ptr ptr, /* Pointer to head of global relation list */ 1 74 2 h_glink_ptr ptr, /* Pointer to head of global link list */ 1 75 2 o_dm_ptr ptr, /* Pointer to old data model seg (dm_model ) */ 1 76 2 n_dm_ptr ptr, /* Pointer to temp data model seg */ 1 77 2 o_fn_hdr_ptr ptr, /* Pointer to head of original file list (fn structure) */ 1 78 2 source_seg_ptr ptr, /* Pointer to source_seg */ 1 79 2 listing_iocb_ptr ptr, /* Pointer to listing segment iocb */ 1 80 2 directive_ptr ptr, /* Pointer to directive type str in mrds_rst_semactics.incl.pl1 */ 1 81 2 stmt_ptr ptr, /* Pointer to statement str in mrds_rst_sematics.incl.pl1 */ 1 82 2 trace_metering_iocb_ptr ptr, /* Pointer to seg used by trace and metering */ 1 83 2 tree_node_area_ptr ptr, /* pointer to working storage for tree nodes */ 1 84 2 tree_data, 1 85 3 seg_info_area_ptr ptr, /* seg info working storage area */ 1 86 3 gl_area_ptr ptr, /* global list data work storage area */ 1 87 3 sl_area_ptr ptr, /* sublist data work storage area */ 1 88 2 parse_info_area_ptr ptr, /* parse interface work area storage */ 1 89 2 static_info_area_ptr ptr, /* directive, stmt and other static work storage area */ 1 90 2 variable_length_area_ptr ptr, /* varibale allocates work storage area */ 1 91 2 other_area_ptr ptr, /* unspecified work area storage */ 1 92 2 wa area (sys_info$max_seg_size - fixed (rel (addr (rsc.wa))) + 1); /* Work area */ 1 93 1 94 dcl rsc_ptr ptr; /* Pointer to base of rsc segment */ 1 95 1 96 1 97 1 98 /* END INCLUDE FILE mrds_rst_rsc.incl.pl1 */ 1 99 389 2 1 /* BEGIN INCLUDE FILE mrds_rst_struct_types.incl.pl1 - - Jim Gray 2/20/79 */ 2 2 2 3 /* these constants are used to identify structures to be allocated 2 4* to the general purpose allocation routines */ 2 5 2 6 /* HISTORY: 2 7* 82-06-28 Roger Lackey : Removed struct types 52, 53, 54, 55, 56, 57, 58 2 8* Type 25 is no longer used and is handled with special code so bounds of 2 9* array could continue to work */ 2 10 2 11 /* PARSE INFO STRUCTURES */ 2 12 2 13 declare DOMAIN fixed bin internal static options (constant) init (1) ; 2 14 declare ATTRIBUTE_DOMAIN fixed bin internal static options (constant) init (2) ; 2 15 declare RELATION fixed bin internal static options (constant) init (3) ; 2 16 declare ATTRIBUTE fixed bin internal static options (constant) init (4) ; 2 17 declare FILE fixed bin internal static options (constant) init (5) ; 2 18 declare ITEM fixed bin internal static options (constant) init (6) ; 2 19 declare LINK fixed bin internal static options (constant) init (7) ; 2 20 declare FOREIGN_KEY fixed bin internal static options (constant) init (8) ; 2 21 declare CHILDREN fixed bin internal static options (constant) init (9) ; 2 22 declare INDEX fixed bin internal static options (constant) init (10) ; 2 23 declare DELETE_NAME fixed bin internal static options (constant) init (11) ; 2 24 declare DOM_LIST fixed bin internal static options (constant) init (12) ; /* in link handler */ 2 25 2 26 /* SEMANTIC STRUCTURES */ 2 27 2 28 declare DIRECTIVE fixed bin internal static options (constant) init (13) ; 2 29 declare STMT fixed bin internal static options (constant) init (14) ; 2 30 2 31 2 32 /* PARSING STRUCTURES */ 2 33 2 34 declare LEX_STACK fixed bin internal static options (constant) init (15) ; 2 35 declare P_STRUCT fixed bin internal static options (constant) init (16) ; 2 36 declare CUR_LEX_TOP fixed bin internal static options (constant) init (17) ; 2 37 declare FIXUP_TOKEN fixed bin internal static options (constant) init (50) ; /* scanner */ 2 38 declare STRING_SOURCE fixed bin internal static options (constant) init (51) ; /* semantics */ 2 39 declare TOKEN fixed bin internal static options (constant) init (18) ; 2 40 declare OUTPUT_TEXT fixed bin internal static options (constant) init (19) ; 2 41 2 42 2 43 /* DB_MODEL STRUCTURES */ 2 44 2 45 declare DB_MODEL fixed bin internal static options (constant) init (0) ; 2 46 declare FILE_INFO fixed bin internal static options (constant) init (1) ; 2 47 declare DOMAIN_INFO fixed bin internal static options (constant) init (2) ; 2 48 declare PATH_ENTRY fixed bin internal static options (constant) init (3) ; 2 49 declare STACK_ITEM fixed bin internal static options (constant) init (4) ; 2 50 declare CONSTANT fixed bin internal static options (constant) init (30) ; 2 51 declare VERSION_STATUS fixed bin internal static options (constant) init (5) ; 2 52 declare CHANGER fixed bin internal static options (constant) init (6) ; 2 53 2 54 2 55 /* FILE_MODEL STRUCTURES */ 2 56 2 57 declare FILE_MODEL fixed bin internal static options (constant) init (7) ; 2 58 declare REL_INFO fixed bin internal static options (constant) init (8) ; 2 59 declare ATTR_INFO fixed bin internal static options (constant) init (9) ; 2 60 declare PARENT_LINK_INFO fixed bin internal static options (constant) init (10) ; 2 61 declare CHILD_LINK_INFO fixed bin internal static options (constant) init (11) ; 2 62 declare ATTR_LIST fixed bin internal static options (constant) init (12) ; 2 63 declare ATD fixed bin internal static options (constant) init (31) ; 2 64 declare COMP_NO_ARRAY fixed bin internal static options (constant) init (32) ; 2 65 declare SORT_KEY fixed bin internal static options (constant) init (13) ; 2 66 declare DUP_PREV fixed bin internal static options (constant) init (14) ; 2 67 declare SELECT_CHAIN fixed bin internal static options (constant) init (15) ; 2 68 2 69 2 70 /* GLOBAL LIST STRUCTURES */ 2 71 2 72 declare GL fixed bin internal static options (constant) init (20) ; 2 73 declare SL fixed bin internal static options (constant) init (21) ; 2 74 declare SEGINFO fixed bin internal static options (constant) init (22) ; 2 75 declare LIST_OVRLY fixed bin internal static options (constant) init (26) ; 2 76 declare SAVED_CHILD_COUNT fixed bin internal static options (constant) init (24) ; /* in global list build */ 2 77 declare NODE fixed bin internal static options (constant) init (23) ; 2 78 2 79 2 80 /* DISPLAY STRUCTURES */ 2 81 2 82 declare DISPLAY_INFO fixed bin internal static options (constant) init (25) ; 2 83 2 84 /* Remove because nolonger used 82-06-28 2 85* NAME_LIST fixed bin internal static options (constant) init (52) ; 2 86* PAI_ARRAY fixed bin internal static options (constant) init (53) ; 2 87* PAR_LK_ATTR_INFO fixed bin internal static options (constant) init (54) ; 2 88* CAI_ARRAY fixed bin internal static options (constant) init (55) ; 2 89* CHILD_LK_ATTR_INFO fixed bin internal static options (constant) init (56) ; 2 90* NAME_TABLE fixed bin internal static options (constant) init (57) ; 2 91* ATTR_TABLE fixed bin internal static options (constant) init (58) ; 2 92**/ 2 93 2 94 /* END INCULDE FILE mrds_rst_struct_types */ 2 95 390 3 1 /* BEGIN INCLUDE FILE mrds_rst_semantics.incl.pl1 jeg 8/31/78 */ 3 2 3 3 /* structure to remember what directives have been seen and are active */ 3 4 3 5 declare 1 directive based (directive_ptr), 3 6 2 type fixed binary, /* stmt structure index for given directive */ 3 7 2 undefine, 3 8 3 active bit (1) unal, 3 9 3 seen bit (1) unal, 3 10 3 pad bit (34) unal, 3 11 2 define, 3 12 3 active bit (1) unal, 3 13 3 seen bit (1) unal, 3 14 3 pad bit (34) unal, 3 15 2 redefine, 3 16 3 active bit (1) unal, 3 17 3 seen bit (1) unal, 3 18 3 pad bit (34) unal, 3 19 2 cmdb, 3 20 3 active bit (1) unal, 3 21 3 seen bit (1) unal, 3 22 3 pad bit (34) unal ; 3 23 3 24 declare directive_ptr ptr internal static ; 3 25 3 26 /* encoding for directive types */ 3 27 3 28 declare UNDEFINE fixed bin internal static options (constant) init (1) ; 3 29 declare DEFINE fixed bin internal static options (constant) init (2) ; 3 30 declare REDEFINE fixed bin internal static options (constant) init (3) ; 3 31 declare CMDB fixed binary internal static options (constant) init (4) ; 3 32 3 33 3 34 /* structure to remember what statements have been seen, are active, 3 35* and how many items are in the statement, and how big the list for the last item was */ 3 36 3 37 declare 1 stmt (4) based (stmt_ptr), 3 38 2 domain, 3 39 3 active bit (1) unal, 3 40 3 pad bit (35) unal, 3 41 3 number fixed binary, 3 42 2 attribute, 3 43 3 active bit (1) unal, 3 44 3 pad bit (35) unal, 3 45 3 number fixed binary, 3 46 2 relation, 3 47 3 active bit (1) unal, 3 48 3 pad bit (35) unal, 3 49 3 number fixed binary, 3 50 2 file, 3 51 3 active bit (1) unal, 3 52 3 pad bit (35) unal, 3 53 3 number fixed binary, 3 54 2 foreign_key, 3 55 3 active bit (1) unal, 3 56 3 pad bit (35) unal, 3 57 3 number fixed binary, 3 58 2 index, 3 59 3 active bit (1) unal, 3 60 3 pad bit (35) unal, 3 61 3 number fixed binary ; 3 62 3 63 /* NOTE: 3 64* active ON => this stmt/directive is currently being processed 3 65* seen ON => this stmt/directive was or is being processed 3 66**/ 3 67 3 68 declare stmt_ptr ptr internal static ; 3 69 3 70 /* END INCLUDE FILE mrds_rst_semantics.incl.pl1 */ 3 71 391 4 1 /* BEGIN INCLUDE FILE mrds_rst_global_lists.incl.pl1 jeg 7/17/78 */ 4 2 4 3 /* note: mrds_rst_list_element$add and delete entries 4 4* makes use of the following structure type correspondence 4 5* 4 6* structure_type = 1 refers to gl (global list element) 4 7* 4 8* structure_type = 2 refers to sl (global sublist element) 4 9* 4 10* structure_type = 3 refers to seg_info(segment information element) 4 11* 4 12**/ 4 13 4 14 4 15 dcl 1 gl aligned based (gl_ptr), /* Template for global list entry */ 4 16 2 type fixed bin, /* structure_type, usefull when overlay used */ 4 17 2 name char (32), /* Item name */ 4 18 2 item_info_ptr ptr, /* Pointer to info structure for this item */ 4 19 2 parse_info_ptr ptr, /* Pointer to info obtained by parsing source */ 4 20 2 other_info_ptr ptr, /* Pointer to additional info str if needed */ 4 21 2 item_sub_list_ptr ptr, /* Pointer to sub list of items if neccessary for this his item */ 4 22 2 file_info_ptr ptr, /* Pointer to file info for this entry */ 4 23 2 file_model_ptr ptr, /* Pointer to file model for this entry */ 4 24 2 affected bit (1) unal, /* ON => affected by some directive */ 4 25 2 cmdb bit (1) unal, /* ON => affected by cmdb directive */ 4 26 2 undefine bit (1) unal, /* ON => affected by undefine directive */ 4 27 2 define bit (1) unal, /* ON => affected by define directive */ 4 28 2 redefine bit (1) unal, /* ON => affected by redefine directive */ 4 29 2 superior_assigned bit (1) unal, /* ON => has parent */ 4 30 2 inferior_assigned bit (1) unal, /* ON => child present */ 4 31 2 complete bit (1) unal, /* ON => all things present */ 4 32 2 consistant bit (1) unal, /* ON => correct model */ 4 33 2 reserved bit (26) unal, /* for future use */ 4 34 2 child_defined bit (1) unal ; /* ON => global element entered by child */ 4 35 4 36 dcl gl_ptr ptr; /* Pointer to gl structure */ 4 37 4 38 4 39 4 40 dcl 1 sl aligned based (sl_ptr), /* Template of sub list entry for global list */ 4 41 2 type fixed bin, /* structure_type, usefull when overlay used */ 4 42 2 name char (32), /* Name of item */ 4 43 2 item_info_ptr ptr, /* Pointer to info structure for this entry */ 4 44 2 parse_info_ptr ptr, /* Pointer to info obtained by parsing source */ 4 45 2 old_other_info_ptr ptr, /* Pointer to old version of other info */ 4 46 2 new_other_info_ptr ptr, /* Pointer to new version of other info */ 4 47 2 global_list_ptr ptr, /* pointer to corresponding global list element */ 4 48 2 reserved bit (36) unal; /* Reserved for future use */ 4 49 4 50 dcl sl_ptr ptr; /* Pointer to sub list structure */ 4 51 4 52 4 53 dcl 1 seg_info based (seg_info_ptr), /* Info about segment initiated */ 4 54 2 name char (32), /* Segment name */ 4 55 2 dir char (168), /* Absolute path of containing directory */ 4 56 2 seg_ptr ptr, /* Pointer to base of segment */ 4 57 2 bcnt fixed bin (24); /* Bit count of segment */ 4 58 4 59 dcl seg_info_ptr ptr; /* Pointer to seg_info str */ 4 60 4 61 4 62 4 63 dcl MAIN_LIST fixed bin internal static options (constant) init (1); 4 64 dcl SUB_LIST fixed bin internal static options (constant) init (2); 4 65 dcl SEG_INFO fixed bin internal static options (constant) init (3); 4 66 4 67 declare 1 list_ovrly aligned based (list_ovrly_ptr), /* overlay for top part of gl and sl list elements */ 4 68 2 type fixed bin, /* structure_type, 1 => gl, 2 => sl */ 4 69 2 name char (32), /* Name of item */ 4 70 2 item_info_ptr ptr, /* pointer to info structure for this entry */ 4 71 2 parse_info_ptr ptr, /* pointer to info obtained by parsing source */ 4 72 2 other_info_ptr ptr ; /* pointer to additional info structure if needed */ 4 73 4 74 declare list_ovrly_ptr ptr ; /* pointer to overlay structure */ 4 75 4 76 4 77 declare saved_child_count fixed bin based (saved_child_count_ptr) ; /* parent link structure child count */ 4 78 declare saved_child_count_ptr ptr ; /* pointer to remembered number of children */ 4 79 4 80 4 81 /* USES AND MEANING OF LIST ELEMENT ENTRIES 4 82* 4 83* DOMAIN GLOBAL LIST -------------------------- 4 84* 4 85* gl.type - - MAIN_LIST 4 86* gl.name - - 32 char domain name 4 87* gl.item_info_ptr - - pointer to domain_info for this domain 4 88* gl.parse_info_ptr - - pointer to parse info structure 4 89* gl.other_info_ptr - - dbm_ptr, pointer to mdbm_db_model 4 90* gl.item_sub_list_ptr - - pointer to sublist of attributes using this domain 4 91* gl.file_info_ptr - - null () 4 92* gl.file_model_ptr - - null () 4 93* gl.superior_assigned - - ON => domain referenced by some relation 4 94* gl.inferior_assigned - - ON => referencing attribute present 4 95* gl.complete - - ON => domain_info present 4 96* gl.consistant - - always ON 4 97* 4 98* DOMAIN GLOBAL LIST "REFERENCING ATTRIBUTES" SUBLIST ---------------- 4 99* 4 100* sl.type - - SUB_LIST 4 101* sl.name - - 32 char attribute name 4 102* sl.item_info_ptr - - pointer to this attribute's attribute_info 4 103* sl.parse_info_ptr - - pointer to parse info structure 4 104* sl.old_other_info_ptr - - null () 4 105* sl.new_other_info_ptr - - pointer to this domain's global list element 4 106* sl.global_list_ptr - - pointer to attribute's global list element 4 107* 4 108* ATTRIBUTE GLOBAL LIST ----------------- 4 109* 4 110* gl.type - - MAIN_LIST 4 111* gl.name - - 32 char attribute name 4 112* gl.item_info_ptr - - pointer to corresponding domain sublist element for this attribute 4 113* gl.parse_info_ptr - - pointer to parse info structure 4 114* gl.other_info_ptr - - domain_info of domain for this attribute 4 115* gl.item_sub_list_ptr - - pointer to sublist of relations that use this attribute 4 116* gl.file_info_ptr - - null (), use pointer(fm_ptr,file_model.fi_ptr) 4 117* gl.file_model_ptr - - null (), use pointer(ai_ptr,0), ai_ptr from corres. rel's attr sublist 4 118* gl.superior_assigned - - ON => relation contains this attribute 4 119* gl.inferior_assigned - - ON => attribute references known domain 4 120* gl.complete - - ON => attr_info present for this attribute 4 121* gl.consistant - - OFF => no domain for this attribute 4 122* 4 123* ATTRIBUTE GLOBAL LIST "USED IN RELATION" SUBLIST ------------------ 4 124* 4 125* sl.type - - SUB_LIST 4 126* sl.name - - 32 char relation name 4 127* sl.item_info_ptr - - pointer to this relation's rel_info 4 128* sl.parse_info_ptr - - pointer to parse info structure 4 129* sl.old_other_info_ptr - - pointer to attribute's attr_info in this relation 4 130* sl.new_other_info_ptr - - pointer to this attribute's global list element 4 131* sl.global_list_ptr - - pointer to relation's global list element 4 132* 4 133* RELATION GLOBAL LIST ------------------- 4 134* 4 135* gl.type - - MAIN_LIST 4 136* gl.name - - 32 char relation name 4 137* gl.item_info_ptr - - pointer to rel_info for this relation 4 138* gl.parse_info_ptr - - pointer to parse info structure 4 139* gl.other_info_ptr - - pointer to global list element of file containing this relation 4 140* gl.item_sub_list_ptr - - pointer to sublist of attributes in this relation 4 141* gl.file_info_ptr - - pointer to file_info of this relation's file 4 142* gl.file_model_ptr - - pointer to file_model of this relation's file 4 143* gl.superior_assigned - - ON => file present to hold this relation 4 144* gl.inferior_assigned - - ON => attribute's present in this relation 4 145* gl.complete - - ON => rel_info assigned to this relation 4 146* gl.consistant - - OFF => no attributes for this relation 4 147* 4 148* RELATION GLOBAL LIST "CONTAINED ATTRIBUTE" SUBLIST ---------------- 4 149* 4 150* sl.type - - SUB_LIST 4 151* sl.name - - 32 char attribute name 4 152* sl.item_info_ptr - - pointer to this attribute's attribute_info 4 153* sl.parse_info_ptr - - pointer to parse info structure 4 154* sl.old_other_info_ptr - - pointer to domain_info for this attribute in old model 4 155* sl.new_other_info_ptr - - pointer to domain_info for this attribute in new model 4 156* sl.global_list_ptr - - pointer to attribute's global list element 4 157* 4 158* FILE GLOBAL LIST ----------------------- 4 159* 4 160* gl.type - - MAIN_LIST 4 161* gl.name - - 30 char file name plus 2 trailing blanks 4 162* gl.item_info_ptr - - pointer to file_info for this file 4 163* gl.parse_info_ptr - - pointer to parse info structure 4 164* gl.other_info_ptr - - null () 4 165* gl.item_sub_list_ptr - - pointer to sublist of relations contained in this file 4 166* gl.file_info_ptr - - pointer to file_info for this file 4 167* gl.file_model_ptr - - pointer to file_model for this file 4 168* gl.superior_assigned - - ON => file_model present for this file 4 169* gl.inferior_assigned - - ON => relation present for this file 4 170* gl.complete - - OFF => not formatted yet 4 171* gl.consistant - - ON => no relations present 4 172* 4 173* FILE GLOBAL LIST "CONTAINED RELATION" SUBLIST ---------------- 4 174* 4 175* sl.type - - SUB_LIST 4 176* sl.name - - 32 char relation name 4 177* sl.item_info_ptr - - relation's rel_info pointer 4 178* sl.parse_info_ptr - - pointer to parse info structure 4 179* sl.old_other_info_ptr - - null () 4 180* sl.new_other_info_ptr - - pointer to file global list element 4 181* sl.global_list_ptr - - pointer to relation's global list element 4 182* 4 183* FOREIGN KEY GLOBAL LIST -------------------- 4 184* 4 185* gl.type - - MAIN_LIST 4 186* gl.name - - 32 char link(foreign key) name, parent_link_info.name 4 187* gl.item_info_ptr - - pointer to parent_link_info for this foreign key 4 188* gl.parse_info_ptr - - pointer to parse info structure 4 189* gl.other_info_ptr - - pointer to parent relation global list element 4 190* gl.item_sub_list_ptr - - pointer to sublist of child relations for this parent 4 191* gl.file_info_ptr - - pointer to file_info for parent relation's file 4 192* gl.file_model_ptr - - pointer to file_model for parent relation's file 4 193* gl.superior_assigned - - ON => parent present 4 194* gl.inferior_assigned - - ON => child present 4 195* gl.complete - - ON => pli_info and cli_info present 4 196* gl.consistant - - ON => rels/attrs found and corres domains match 4 197* gl.child_defined - - ON => not defined by parent, but by one of it's children 4 198* 4 199* FOREIGN KEY GLOBAL LIST CHILDREN SUBLIST 4 200* 4 201* sl.type - - SUB_LIST 4 202* sl.name - - 32 char name of relation representing this child 4 203* sl.item_info_ptr - - pointer to child_link_info for this child 4 204* sl.parse_info_ptr - - pointer to parse info structure 4 205* sl.old_other_info_ptr - - pointer to file_model holding this child relation 4 206* sl.new_other_info_ptr - - pointer to rel_info for this child 4 207* sl.global_list_ptr - - pointer to child relation global list element 4 208* 4 209* NOTE: all pointers are to the new model unless otherwise indicated 4 210* 4 211**/ 4 212 4 213 /* END INCLUDE FILE mrds_rst_global_lists.incl.pl1 */ 4 214 392 5 1 /* BEGIN INCLUDE FILE mrds_rst_parse_info.incl.pl1 -- oris, 6/30/78 */ 5 2 /* modified 9/6/78 -- jeg, for lrk parser - cmdb interface */ 5 3 /* modified 12/20/78 - - jeg, to add line number info for handlers */ 5 4 /* modified 3/15/79 - - jeg, to add scanner, semantic, and link handler variables to be allocated in rsc */ 5 5 /* Modified by Jim Gray - - 23-June-80, to separate max_string_size, 5 6* and max_line_size mrds_data_ items. */ 5 7 5 8 5 9 5 10 5 11 declare 1 domain aligned based (domain_ptr), 5 12 2 name char (32), /* name of this domain */ 5 13 2 descriptor bit (36), /* Multics pl1 descriptor for domain type */ 5 14 2 varying_avg_length fixed bin (24), /* average length of varying strings */ 5 15 2 options bit (1) unal, /* ON => some option is present */ 5 16 2 pad bit (35) unal, 5 17 2 check, 5 18 3 flag bit (1) unal, /* ON => check option present */ 5 19 3 pad bit (35) unal, 5 20 3 stack_ptr ptr, /* pointer to postfix stack 5 21* holding boolean expression */ 5 22 3 stack_size fixed binary, /* number of stack elements */ 5 23 2 check_proc, 5 24 3 flag bit (1) unal, /* ON => check_proc option is present */ 5 25 3 pad bit (35) unal, 5 26 3 path char (168), /* check procedure pathname */ 5 27 3 entry char (32), /* check procedure entryname */ 5 28 2 encode_proc, 5 29 3 flag bit (1) unal, /* ON => encode_proc option is present */ 5 30 3 pad bit (35) unal, 5 31 3 path char (168), /* encode procedure pathname */ 5 32 3 entry char (32), /* encode procedure entryname */ 5 33 2 decode_proc, 5 34 3 flag bit (1) unal, /* ON => decode_proc option is present */ 5 35 3 pad bit (35) unal, 5 36 3 path char (168), /* decode procedure pathname */ 5 37 3 entry char (32), /* decode procedure entryname */ 5 38 2 decode_dcl, 5 39 3 flag bit (1) unal, /* ON => decode declaration is present */ 5 40 3 pad bit (35) unal, 5 41 3 descriptor bit (36), /* decode declaration pl1 descriptor */ 5 42 2 line_num fixed bin (24) ; /* line of domain name in source */ 5 43 5 44 5 45 declare domain_ptr ptr ; 5 46 5 47 5 48 5 49 5 50 5 51 dcl 1 relation aligned based (relation_ptr), 5 52 2 a_ptr ptr, /* ptr to attribute list for this relation */ 5 53 2 name char (32), /* relation name */ 5 54 2 max_tup fixed bin, /* maximum tuples for this relation if a blocked file */ 5 55 2 num_items fixed bin, /* number of attributes in this relation */ 5 56 2 unused bit (36) unal, /* future flags */ 5 57 2 line_num fixed bin (24) ; /* line of relation name in source */ 5 58 5 59 5 60 dcl relation_ptr ptr; 5 61 5 62 5 63 dcl 1 attribute aligned based (attribute_ptr), 5 64 2 next ptr, /* ptr to next in list */ 5 65 2 name char (32), /* name of attribute */ 5 66 2 pr_key bit (1) unal, /* ON => part of primary key */ 5 67 2 pad bit (35) unal, 5 68 2 defn_order fixed bin, /* position within the relation */ 5 69 2 key_order fixed bin, /* position within the primary key, if a key */ 5 70 2 line_num fixed bin (24) ; /* line of attribute name in source */ 5 71 5 72 5 73 dcl attribute_ptr ptr; 5 74 5 75 5 76 5 77 dcl 1 attribute_domain aligned based (attdom_ptr), 5 78 2 attr char (32), /* attribute name */ 5 79 2 dom char (32), /* domain name */ 5 80 2 default bit (1) unal, /* on => defined as default attr, not by source */ 5 81 2 unused bit (35) unal, /* future flags */ 5 82 2 line_num fixed bin (24) ; /* line of attribute name in source */ 5 83 5 84 dcl attdom_ptr ptr; /* ptr to attribute_domain structure */ 5 85 5 86 5 87 5 88 5 89 dcl 1 file aligned based (file_ptr), 5 90 2 i_ptr ptr, /* ptr to item containing relation name */ 5 91 2 name char (30), /* file name */ 5 92 2 type fixed bin, /* blocked or unblocked */ 5 93 /* type = 1 => unblocked, 5 94* type = 2 => blocked */ 5 95 2 ppb fixed bin, /* pages per block, if blocked */ 5 96 2 hbh fixed bin, /* hash bucket headers per block */ 5 97 2 block fixed bin, /* blocks per hash bucket headers */ 5 98 2 num_items fixed bin, /* nbr. items -- relations -- in file */ 5 99 2 default bit (1) unal, /* on => defined as default file, not by source */ 5 100 2 unused bit (35) unal, /* future flags */ 5 101 2 line_num fixed bin (24) ; /* line of file name in source */ 5 102 5 103 5 104 dcl file_ptr ptr; /* ptr to file structure */ 5 105 5 106 5 107 dcl 1 rel_index aligned based (index_ptr), 5 108 2 i_ptr ptr, /* ptr. to item containing index attr. name */ 5 109 2 rel_name char (32), /* name of relation being indexed */ 5 110 2 num_items fixed bin, /* nbr. items -- attributes -- indexed for a relation */ 5 111 2 unused bit (36) unal, /* future flags */ 5 112 2 line_num fixed bin (24) ; /* line of relation name in source */ 5 113 5 114 5 115 dcl index_ptr ptr; /* ptr to index structure */ 5 116 5 117 5 118 dcl 1 link aligned based (link_ptr), 5 119 2 parent_ptr ptr, /* ptr to foreign_key structure cont. parent rel. name */ 5 120 2 children_ptr ptr, /* ptr. to list of children names for this link */ 5 121 2 clust_fl bit (1) unal, /* ON => link is clustered in one file */ 5 122 2 pad bit (35) unal, 5 123 2 name char (32), /* name of this link */ 5 124 2 num_children fixed bin, /* number of children for this link's parent */ 5 125 2 line_num fixed bin (24) ; /* line of link name occurence in source */ 5 126 5 127 5 128 dcl link_ptr ptr; /* ptr to link structure */ 5 129 5 130 5 131 dcl 1 children aligned based (children_ptr), 5 132 2 next ptr, /* ptr to next in list */ 5 133 2 child_ptr ptr; /* ptr. to foreign_key struct. containing child rel. name */ 5 134 5 135 5 136 dcl children_ptr ptr; /* ptr to children structure */ 5 137 5 138 5 139 dcl 1 foreign_key aligned based (forkey_ptr), 5 140 2 i_ptr ptr, /* ptr to item list containing foreign key attributes */ 5 141 2 rel_name char (32), /* name of parent/child relation */ 5 142 2 num_items fixed bin, /* nbr of attributes defining this foreign key */ 5 143 2 unused bit (36) unal, /* future flags */ 5 144 2 line_num fixed bin (24) ; /* line of relation occurence in source */ 5 145 5 146 5 147 dcl forkey_ptr ptr; /* ptr to foreign_key structure */ 5 148 5 149 5 150 dcl 1 item aligned based (item_ptr), 5 151 2 next ptr, /* ptr to next item in the list */ 5 152 2 name char (32), /* name of item -- relation name or attribute name */ 5 153 2 unused bit (36) unal, /* future flags */ 5 154 2 line_num fixed bin (24) ; /* line of item occurence in source */ 5 155 5 156 5 157 dcl item_ptr ptr; /* ptr to item structure */ 5 158 5 159 5 160 declare 1 delete_name aligned based (delete_name_ptr), /* overlay for undefine parse information */ 5 161 2 overlay char (32), /* name portion */ 5 162 2 unused bit (36) unal, /* future flags */ 5 163 2 line_num fixed bin (24) ; /* line number of name occurence in source */ 5 164 5 165 declare delete_name_ptr ptr ; 5 166 5 167 /* scanner variables */ 5 168 5 169 declare token char (mrds_data_$max_string_size) varying 5 170 based (accum_token_ptr) ; /* temp store for accumulating the token */ 5 171 declare accum_token_ptr ptr internal static ; /* pointer to allocated accumulator store */ 5 172 declare mrds_data_$max_string_size fixed bin (35) external ; /* max token size in chars */ 5 173 declare mrds_data_$max_line_size fixed bin (35) ext ; /* max output listing line size */ 5 174 declare token_length fixed binary (24) ; /* current length of token */ 5 175 declare output_text char (mrds_data_$max_line_size) varying 5 176 based (output_text_ptr) ; /* body of text for this line in output listing */ 5 177 declare output_text_ptr ptr internal static ; /* pointer to allocated output line storage */ 5 178 declare fixup_token char (token_length) based ; /* saved fixed up version of token */ 5 179 5 180 /* semantic variables */ 5 181 5 182 declare source_size fixed bin (35) ; /* length of source char string for any_to_any */ 5 183 declare string_source_ptr ptr ; /* pointer to source for any_to_any conversion */ 5 184 declare string_source char (source_size) based (string_source_ptr) ; /* storage for expanded string constant */ 5 185 5 186 /* link handler variable */ 5 187 5 188 declare dom_list_ptr ptr ; /* pointer to domain list element */ 5 189 declare 1 dom_list based (dom_list_ptr), /* element of parent attr domain ptr list */ 5 190 2 next ptr, /* pointer to next in order on list */ 5 191 2 attr_name char (32) aligned, /* parent attr's name */ 5 192 2 dom_info_ptr ptr ; /* parent attr's domain ptr */ 5 193 5 194 /* END INCLUDE FILE mrds_rst_parse_info.incl.pl1 */ 5 195 393 6 1 /* BEGIN INCLUDE FILE mdbm_db_model.incl.pl1 -- jaw, 10/2/78 */ 6 2 6 3 6 4 /****^ HISTORY COMMENTS: 6 5* 1) change(79-02-01,Gray), approve(), audit(), install(): 6 6* modified to save space occupied by model 6 7* 2) change(80-11-03,Gray), approve(), audit(), install(): 6 8* to add mdbm_secured bit in db_model 6 9* 3) change(82-04-09,Davids), approve(), audit(), install(): 6 10* collapsed the following into an unused_offset array: 6 11* chng_before_path_ptr chng_err_path_ptr chng_after_path_ptr 6 12* copy_before_path_ptr copy_err_path_ptr copy_after_path_ptr 6 13* dsply_before_path_pt dsply_err_path_pt dsply_after_path_ptr 6 14* accs_before_path_ptr accs_err_path_ptr accs_after_path_ptr 6 15* unused_1 6 16* Also changed the name of unused_2 to restructuring_history_offset 6 17* and changed the comment on the changer structure to indicate 6 18* that it will contain on database creation information. 6 19* 4) change(82-04-14,Davids), approve(), audit(), install(): 6 20* used one of the unused_offsets to point to a message which indicates 6 21* why the db is inconsistent. The offset will be null when the db is created 6 22* and set the first time the message is used. this is so it will be 6 23* consistent with existing data bases. Also added the message structure. 6 24* 5) change(82-04-28,Davids), approve(), audit(), install(): 6 25* added the undo_request element to the message structure 6 26* 6) change(82-05-04,Davids), approve(), audit(), install(): 6 27* changed unused_offset (12) to last_restructruring_history_offset and 6 28* changed restructuring_history_offset to first_restructuring_history_offset 6 29* 7) change(82-08-19,Davids), approve(), audit(), install(): 6 30* changed the meaning of db_type from 1 => relational and 2 => CODASYL to 6 31* 1 => vfile database and 2 => page_file database. Up to this point all 6 32* database types were equal to 1. 6 33* 8) change(83-02-14,Davids), approve(), audit(), install(): 6 34* changed db_type from a fixed bin unal to a substructure of 18 bit (1) unal 6 35* flags. This will allow information about transactions and dm_file 6 36* concurrency to be independent of the db_type, i.e. vfile or dm_file. The 6 37* change is compatable with all datamodels created by the released version 6 38* of mrds. 6 39* 9) change(83-02-15,Davids), approve(), audit(), install(): 6 40* added the rollback_on flag to the db_type_flags since it appears that you 6 41* can have a dmfile database that requires transactions but does not have any 6 42* journalizing. Also switched the order of the transactions_needed and 6 43* concurrency_on flags - this makes the change compatable with existing 6 44* dmfile databases except when displaying the model since concurrency_on and 6 45* rollback_on will be off in the model even though the dmfile relations had 6 46* them on during creation. 6 47* 10) change(83-02-22,Kubicar), approve(), audit(), install(): 6 48* Removed ctl_file_path_ptr. 6 49* 11) change(85-11-08,Spitzer), approve(85-12-03,MCR7311), 6 50* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 6 51* used 1 unused offset for unreferenced attribute linked lists in db_model, 6 52* 1 unused bit flag in domain_info to indicate an unreferenced domain, 1 bit 6 53* in the flag word for rmdb copying. 6 54* END HISTORY COMMENTS */ 6 55 6 56 6 57 /* this include file contains the structures that go into the make up 6 58* of the "db_model" segment in the model for the database. 6 59* in addition there file_model.m segments, 1 for each database file(see mdbm_file_model.incl.pl1) 6 60* 6 61* the db_model structure goes at the base of the segment, and contains items unique to 6 62* the whole databse. in addition, it has an area of size to fill the 6 63* rest of a segment, that holds the lists of files and domains in the database. 6 64* these lists are singly forward linked lists. all "pointers" in the database model 6 65* are maintained as offsets(bit (18)) from the base of the particular model segment 6 66* since actual pointers are process dependent on segment number. 6 67* the remaining structures are first a path_entry one to save pathnames in, 6 68* and the stack_item and constent structures, used to save a boolean 6 69* expression in polish form, with the stack represented by a linked list. 6 70* the final structure is one for identifying the status of version information */ 6 71 6 72 dcl 1 db_model aligned based (dbm_ptr),/* base of db_model segment, allocated once per database */ 6 73 2 version unal fixed bin, /* data base version, currently 4 */ 6 74 2 db_type_flags unal, 6 75 3 copy_good bit (1) unal, /* "1"b => copy of the db_model is the valid copy */ 6 76 3 unused (13) bit (1) unal, 6 77 3 rollback_on bit (1) unal, /* "1"b => before journaling is to be done */ 6 78 3 concurrency_on bit (1) unal, /* "1"b => dm_file concurrency is being used */ 6 79 3 transactions_needed bit (1) unal, /* "1"b => transactions are needed to reference data */ 6 80 3 vfile_type bit (1) unal, /* "1"b => vfile type relations, "0"b => dm_file type relations */ 6 81 2 uniq_sw_name char (32), /* per database unique attach switch name for files */ 6 82 2 consistant bit (1) unal, /* ON => correctly created/restructured database, ok to open */ 6 83 2 mdbm_secured bit (1) unal, /* on => database has been secured */ 6 84 2 reserved bit (34) unal, /* reserved for flags */ 6 85 2 blk_file_id_len unal fixed bin, /* no. bits required for blocked file id. */ 6 86 2 unblk_file_id_len unal fixed bin, /* number of file id bits, unblocked file */ 6 87 2 num_blk_files unal fixed bin, /* number of blocked files defined in db */ 6 88 2 num_unblk_files unal fixed bin, /* number of unblocked files defined in db */ 6 89 2 num_rels unal fixed bin, /* number of relations defined in db. */ 6 90 2 num_domains unal fixed bin, /* number of domains defined */ 6 91 2 num_dyn_links unal fixed bin, /* no. dynamic links defined */ 6 92 2 max_max_tuples unal fixed bin (35), /* maximum max_tuples across all files */ 6 93 2 pad_1 unal fixed bin (35), /* for future use */ 6 94 2 pad_2 unal fixed bin (35), /* for future use */ 6 95 2 version_ptr bit (18), /* offset to version structure */ 6 96 2 file_ptr unal bit (18), /* offset to first in threaded list of file_infos */ 6 97 2 domain_ptr unal bit (18), /* offset to first in list of domain_infos */ 6 98 2 unreferenced_attribute_ptr unal bit (18), /* offset to first in list of unreferenced attr_infos */ 6 99 2 unused_offsets (11) unal bit (18), /* extra offsets if needed */ 6 100 2 last_restructuring_history_offset unal bit (18), /* offset to last restructuring history entry */ 6 101 2 inconsistent_message_offset unal bit (18), /* offset to message indicating why db is inconsistent */ 6 102 2 first_restructuring_history_offset unal bit (18), /* offset to first restructuring history entry */ 6 103 2 changer_ptr unal bit (18), /* offset to information about db creation */ 6 104 2 dbm_area area (sys_info$max_seg_size - fixed (rel (addr (db_model.dbm_area))) - 1); 6 105 6 106 dcl dbm_ptr ptr; 6 107 6 108 /* the files in the database each have a file_info containing 6 109* their name, the file_model for each file is found by initiating the 6 110* segment "file_name.m" (i.e. the file's name with suffix ".m") 6 111* the file_info list is a singly linked list in definition order */ 6 112 6 113 dcl 1 file_info aligned based (fi_ptr), /* list of file names and numbers */ 6 114 2 file_name char (30), /* name of file */ 6 115 2 file_id bit (36), /* id number of file */ 6 116 2 fwd_ptr unal bit (18), /* thread to next in list */ 6 117 2 unused unal bit (18); /* for future expansion */ 6 118 6 119 dcl fi_ptr ptr; 6 120 6 121 /* each domain used in the database will have a domain info saved in the db_model 6 122* segment. it describes the domain of the given name, and it's options. 6 123* the domain_info's form a singly linked list in definition order */ 6 124 6 125 dcl 1 domain_info aligned based (di_ptr), /* one for each domain defined */ 6 126 2 name char (32), /* name of domain */ 6 127 2 db_desc_is_ptr bit (1) unal, /* on if descriptor is pointer to real desc. */ 6 128 2 user_desc_is_ptr bit (1) unal, /* on if user desc is ptr */ 6 129 2 no_conversion bit (1) unal, /* if no conversion allowed */ 6 130 2 procedures_present bit (1) unal, /* on => ids type procedures present */ 6 131 2 unreferenced bit (1) unal, /* on => this domain is not used in any attribute */ 6 132 2 reserved bit (31) unal, 6 133 2 db_desc bit (36), /* desc. for item in db, or ptr to it */ 6 134 2 user_desc bit (36), /* desc. for user-visible attr, or ptr */ 6 135 2 ave_len fixed bin (35), /* average length of varying string */ 6 136 2 nck_items unal fixed bin, /* no. items in check stack */ 6 137 2 fwd_thread unal bit (18), /* offset to next in list */ 6 138 2 check_path_ptr unal bit (18), /* integ. check proc. */ 6 139 2 ck_stack_ptr unal bit (18), /* to check stack */ 6 140 2 encd_path_ptr unal bit (18), /* encode procedure */ 6 141 2 decd_path_ptr unal bit (18), /* decode procedure */ 6 142 2 str_before_path_ptr unal bit (18), /* proc paths and entries */ 6 143 2 str_err_path_ptr unal bit (18), 6 144 2 str_after_path_ptr unal bit (18), 6 145 2 get_before_path_ptr unal bit (18), 6 146 2 get_err_path_ptr unal bit (18), 6 147 2 get_after_path_ptr unal bit (18), 6 148 2 mod_before_path_ptr unal bit (18), 6 149 2 mod_err_path_ptr unal bit (18), 6 150 2 mod_after_path_ptr unal bit (18), 6 151 2 unused_1 unal bit (18), /* for future expansion */ 6 152 2 unused_2 unal bit (18), 6 153 2 changer_ptr unal bit (18); /* pointer to change_id and chane_time structure */ 6 154 6 155 dcl di_ptr ptr; 6 156 6 157 /* information necessary for attributes that are not used in any relation */ 6 158 6 159 dcl 1 unreferenced_attribute aligned based (ua_ptr), 6 160 2 name char (32), /* name of attribute */ 6 161 2 domain_ptr bit (18) unal, /* to domain_info */ 6 162 2 fwd_thread bit (18) unal, /* to next in list */ 6 163 2 unused (2) bit (18) unal; 6 164 6 165 dcl ua_ptr ptr; 6 166 6 167 6 168 /* space saving pathname$entryname structure, to be allocated 6 169* only when a path$entry has to be saved, else only a bit(18) 6 170* offset takes up space in the main model structure */ 6 171 6 172 declare 1 path_entry based (path_entry_ptr), 6 173 2 path char (168), /* pathname portion of desired path$entry */ 6 174 2 entry char (32), /* entryname portion of desired path$entry */ 6 175 2 reserved unal bit (36); /* for future use */ 6 176 6 177 declare path_entry_ptr ptr; 6 178 6 179 6 180 6 181 6 182 6 183 /* declarations for model of postfix stack holding the check option boolean expression 6 184* the following encoding values indicate the corresponding type of stack element 6 185* 6 186* 1 = 6 187* 2 ^= 6 188* 3 > 6 189* 4 < 6 190* 5 >= 6 191* 6 <= 6 192* 6 193* 10 and 6 194* 20 or 6 195* 30 not 6 196* 6 197* 40 - (minus) 6 198* 6 199* 50 domain variable(same name as domain) 6 200* 6 201* 60 constant(number, bit string, or character string) 6 202* 6 203**/ 6 204 6 205 6 206 declare 1 stack_item based (stack_item_ptr), /* element of stack model list */ 6 207 2 next bit (18), /* link to next in list */ 6 208 2 type fixed binary, /* code for this element type */ 6 209 2 value_ptr bit (18); /* pointer to variable holding value, 6 210* if this is a constant element type */ 6 211 6 212 declare stack_item_ptr ptr; /* pointer to a stack element */ 6 213 6 214 6 215 6 216 declare 1 constant based (constant_ptr), /* variable size space for constant's value storage */ 6 217 2 length fixed bin (35), /* length allocated to hold value */ 6 218 2 value bit (alloc_length refer (constant.length)) aligned; /* value for this constant */ 6 219 6 220 declare constant_ptr ptr; /* pointer to constant's value space */ 6 221 6 222 declare alloc_length fixed binary (35) internal static; /* amount of space to allocate for constant's value */ 6 223 6 224 /* version structure, giving status of source for CMDB/RMDB, 6 225* status of model, and status of resultant */ 6 226 6 227 /* version number is in form MM.N.Y 6 228* where MM is the major version number, N is the minor version alteration, 6 229* and Y is the lastest modification to that alteration, 6 230* where M and N represent numbers 0-9, and Y is a letter */ 6 231 6 232 declare 1 version_status unal based (version_status_ptr), 6 233 2 cmdb_rmdb, 6 234 3 major fixed bin, 6 235 3 minor fixed bin, 6 236 3 modification char (4), 6 237 2 model, 6 238 3 major fixed bin, 6 239 3 minor fixed bin, 6 240 3 modification char (4), 6 241 2 resultant, 6 242 3 major fixed bin, 6 243 3 minor fixed bin, 6 244 3 modification char (4); 6 245 6 246 declare version_status_ptr ptr; 6 247 6 248 6 249 /* maintains information only about the db creation */ 6 250 6 251 declare 1 changer unal based (changer_ptr), 6 252 2 id char (32), 6 253 2 time fixed bin (71), 6 254 2 next bit (18); /* to next in the singly linked list */ 6 255 6 256 declare changer_ptr ptr; 6 257 6 258 6 259 dcl 01 message_str unal based (message_str_ptr), /* general purpose structure to hold messages */ 6 260 02 len fixed bin, /* length of the message */ 6 261 02 text char (message_str_len refer (message_str.len)), /* actual message */ 6 262 02 name char (32), /* name of thing that set the message */ 6 263 02 undo_request char (100), /* rmdb request that will undo the operation 6 264* that caused the database to become inconsistent */ 6 265 02 mbz bit (36); /* for possible extensions, like an offset to another message */ 6 266 6 267 dcl message_str_ptr ptr; /* pointer to the message_str structure */ 6 268 6 269 dcl message_str_len fixed bin; /* initail length of the text string in message_str */ 6 270 6 271 /* END INCLUDE FILE mdbm_db_model.incl.pl1 */ 6 272 6 273 394 395 396 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/16/86 1145.0 mrds_rst_domain_handler.pl1 >special_ldd>install>MR12.0-1187>mrds_rst_domain_handler.pl1 389 1 10/14/83 1609.1 mrds_rst_rsc.incl.pl1 >ldd>include>mrds_rst_rsc.incl.pl1 390 2 10/14/83 1609.0 mrds_rst_struct_types.incl.pl1 >ldd>include>mrds_rst_struct_types.incl.pl1 391 3 10/14/83 1608.4 mrds_rst_semantics.incl.pl1 >ldd>include>mrds_rst_semantics.incl.pl1 392 4 10/14/83 1608.4 mrds_rst_global_lists.incl.pl1 >ldd>include>mrds_rst_global_lists.incl.pl1 393 5 10/14/83 1608.6 mrds_rst_parse_info.incl.pl1 >ldd>include>mrds_rst_parse_info.incl.pl1 394 6 10/16/86 1139.3 mdbm_db_model.incl.pl1 >special_ldd>install>MR12.0-1187>mdbm_db_model.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. CMDB constant fixed bin(17,0) initial dcl 3-31 ref 115 DEFINE constant fixed bin(17,0) initial dcl 3-29 ref 115 147 DOMAIN_INFO 000030 constant fixed bin(17,0) initial dcl 2-47 set ref 164* MAIN_LIST 000027 constant fixed bin(17,0) initial dcl 4-63 set ref 119* 136 NULL_OFFSET constant bit(18) initial unaligned dcl 362 ref 177 183 230 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 316 OFF 000023 constant bit(1) initial unaligned dcl 364 set ref 145 146 149 152 155 156 159 211* 279 280 281 282 283 284 285 ON 000000 constant bit(1) initial unaligned dcl 363 set ref 101* 144 148 153 157 158 344 PATH_ENTRY 000016 constant fixed bin(17,0) initial dcl 2-48 set ref 313* REDEFINE constant fixed bin(17,0) initial dcl 3-30 ref 200 UNDEFINE constant fixed bin(17,0) initial dcl 3-28 ref 92 104 affected 26 based bit(1) level 2 packed unaligned dcl 4-15 set ref 144* ave_len 13 based fixed bin(35,0) level 2 dcl 6-125 set ref 225* 287* cd parameter fixed bin(35,0) dcl 268 set ref 265 271* changer_ptr 24(18) based bit(18) level 2 in structure "domain_info" packed unaligned dcl 6-125 in procedure "mrds_rst_domain_handler" set ref 222* 304* changer_ptr 32(18) based bit(18) level 2 in structure "db_model" packed unaligned dcl 6-72 in procedure "mrds_rst_domain_handler" ref 222 char builtin function dcl 373 ref 122 234 check 14 based structure level 2 dcl 5-11 check_path_ptr 15 based bit(18) level 2 packed unaligned dcl 6-125 set ref 242* 290* check_proc 21 based structure level 2 dcl 5-11 ck_stack_ptr 15(18) based bit(18) level 2 packed unaligned dcl 6-125 set ref 230* 231* 289* cmdb 26(01) based bit(1) level 2 packed unaligned dcl 4-15 set ref 149* 153* code 000153 automatic fixed bin(35,0) dcl 370 set ref 119* 121 122 127* complete 26(07) based bit(1) level 2 packed unaligned dcl 4-15 set ref 157* consistant 26(08) based bit(1) level 2 packed unaligned dcl 4-15 set ref 158* db_desc 11 based bit(36) level 2 dcl 6-125 set ref 223* 281* db_desc_is_ptr 10 based bit(1) level 2 packed unaligned dcl 6-125 set ref 279* db_model based structure level 1 dcl 6-72 db_model_path 000100 automatic char(168) unaligned dcl 368 set ref 163* 164* 313* dbm_ptr 000274 automatic pointer dcl 6-106 set ref 117* 140 177 177 182 182 184 194 194 222 decd_path_ptr 16(18) based bit(18) level 2 packed unaligned dcl 6-125 set ref 252* 292* decode_dcl 252 based structure level 2 dcl 5-11 decode_proc 167 based structure level 2 dcl 5-11 define 26(03) based bit(1) level 2 packed unaligned dcl 4-15 set ref 148* 152* delete_name based structure level 1 dcl 5-160 delete_name_ptr 000272 automatic pointer dcl 5-165 set ref 93* 94 descriptor 10 based bit(36) level 2 in structure "domain" dcl 5-11 in procedure "mrds_rst_domain_handler" ref 223 224 descriptor 253 based bit(36) level 3 in structure "domain" dcl 5-11 in procedure "mrds_rst_domain_handler" ref 257 di_ptr 000276 automatic pointer dcl 6-155 set ref 164* 166 172 177 187 189 221 222 223 224 225 230 231 232 242 247 252 257 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 directive based structure level 1 unaligned dcl 3-5 directive_ptr 000012 internal static pointer dcl 3-24 in procedure "mrds_rst_domain_handler" set ref 87* 92 104 108 115 115 147 180 200 204 directive_ptr 242 based pointer level 2 in structure "rsc" dcl 1-29 in procedure "mrds_rst_domain_handler" ref 87 domain based structure level 1 dcl 5-11 in procedure "mrds_rst_domain_handler" domain based structure array level 2 in structure "stmt" unaligned dcl 3-37 in procedure "mrds_rst_domain_handler" domain_info based structure level 1 dcl 6-125 domain_name 000255 automatic char(32) unaligned dcl 378 set ref 94* 98* 101 211 domain_ptr 22(18) based bit(18) level 2 in structure "db_model" packed unaligned dcl 6-72 in procedure "mrds_rst_domain_handler" set ref 177 177* 182 domain_ptr 000270 automatic pointer dcl 5-45 in procedure "mrds_rst_domain_handler" set ref 97* 98 119 122 122 127 137 139 221 223 224 225 227 229 230 231 232 234 234 241 242 242 246 247 247 251 252 252 256 257 346 346 encd_path_ptr 16 based bit(18) level 2 packed unaligned dcl 6-125 set ref 247* 291* encode_proc 104 based structure level 2 dcl 5-11 entry parameter char(32) unaligned dcl 334 in procedure "set_path_entry" ref 309 325 entry 157 based char(32) level 3 in structure "domain" dcl 5-11 in procedure "mrds_rst_domain_handler" ref 247 entry 52 based char(32) level 2 in structure "path_entry" packed unaligned dcl 6-172 in procedure "mrds_rst_domain_handler" set ref 325* entry 74 based char(32) level 3 in structure "domain" dcl 5-11 in procedure "mrds_rst_domain_handler" ref 242 entry 242 based char(32) level 3 in structure "domain" dcl 5-11 in procedure "mrds_rst_domain_handler" ref 252 file_info_ptr 22 based pointer level 2 dcl 4-15 set ref 142* file_model_ptr 24 based pointer level 2 dcl 4-15 set ref 143* flag 104 based bit(1) level 3 in structure "domain" packed unaligned dcl 5-11 in procedure "mrds_rst_domain_handler" ref 246 flag 21 based bit(1) level 3 in structure "domain" packed unaligned dcl 5-11 in procedure "mrds_rst_domain_handler" ref 241 flag 252 based bit(1) level 3 in structure "domain" packed unaligned dcl 5-11 in procedure "mrds_rst_domain_handler" ref 256 flag 14 based bit(1) level 3 in structure "domain" packed unaligned dcl 5-11 in procedure "mrds_rst_domain_handler" ref 229 flag 167 based bit(1) level 3 in structure "domain" packed unaligned dcl 5-11 in procedure "mrds_rst_domain_handler" ref 251 fwd_thread 14(18) based bit(18) level 2 packed unaligned dcl 6-125 set ref 183 184 187* 288* get_after_path_ptr 21(18) based bit(18) level 2 packed unaligned dcl 6-125 set ref 298* get_before_path_ptr 20(18) based bit(18) level 2 packed unaligned dcl 6-125 set ref 296* get_err_path_ptr 21 based bit(18) level 2 packed unaligned dcl 6-125 set ref 297* gl based structure level 1 dcl 4-15 gl_ptr 000266 automatic pointer dcl 4-36 set ref 119* 136 137 138 139 140 141 142 143 144 145 146 148 149 152 153 155 156 157 158 159 172 h_gdom_ptr 220 based pointer level 2 dcl 1-29 set ref 119* inferior_assigned 26(06) based bit(1) level 2 packed unaligned dcl 4-15 set ref 156* ioa_$rs 000030 constant entry external dcl 384 ref 346 item_info_ptr 12 based pointer level 2 dcl 4-15 set ref 138* 172* item_sub_list_ptr 20 based pointer level 2 dcl 4-15 set ref 141* last_di_ptr 000010 internal static pointer dcl 366 set ref 182* 183 184* 184 187 189* line_num 254 based fixed bin(24,0) level 2 dcl 5-11 set ref 122 234 346* list_ptr parameter pointer dcl 365 ref 29 93 97 ltrim builtin function dcl 374 ref 122 234 message 000154 automatic varying char(256) dcl 377 set ref 346* 351 message_length 000152 automatic fixed bin(21,0) dcl 369 set ref 346* mod_after_path_ptr 23 based bit(18) level 2 packed unaligned dcl 6-125 set ref 301* mod_before_path_ptr 22 based bit(18) level 2 packed unaligned dcl 6-125 set ref 299* mod_err_path_ptr 22(18) based bit(18) level 2 packed unaligned dcl 6-125 set ref 300* model_overflow 206(14) based bit(1) level 2 packed unaligned dcl 1-29 set ref 342 344* mrds_error_$domain_already_defined 000026 external static fixed bin(35,0) dcl 383 set ref 122* mrds_error_$rst_list_duplicate 000024 external static fixed bin(35,0) dcl 382 ref 122 mrds_error_$rst_model_limit 000020 external static fixed bin(35,0) dcl 380 set ref 351* mrds_error_$rst_undone_option 000022 external static fixed bin(35,0) dcl 381 set ref 109* 205* 234* mrds_rst_error 000036 constant entry external dcl 387 ref 234 271 351 mrds_rst_list_element$add 000032 constant entry external dcl 385 ref 119 mrds_rst_meter 000034 constant entry external dcl 386 ref 101 211 mrds_rst_model_alloc 000016 constant entry external dcl 372 ref 164 313 msg parameter char unaligned dcl 269 set ref 265 271* n_dm_ptr 232 based pointer level 2 dcl 1-29 ref 117 name based char(32) level 2 in structure "domain" dcl 5-11 in procedure "mrds_rst_domain_handler" set ref 98 119* 122 127 137 221 234 346* name 1 based char(32) level 2 in structure "gl" dcl 4-15 in procedure "mrds_rst_domain_handler" set ref 137* name based char(32) level 2 in structure "domain_info" dcl 6-125 in procedure "mrds_rst_domain_handler" set ref 221* 278* nck_items 14 based fixed bin(17,0) level 2 packed unaligned dcl 6-125 set ref 232* 286* no_conversion 10(02) based bit(1) level 2 packed unaligned dcl 6-125 set ref 283* null builtin function dcl 360 ref 138 141 142 143 166 230 315 316 num_domains 14(18) based fixed bin(17,0) level 2 packed unaligned dcl 6-72 set ref 194* 194 number 1 based fixed bin(17,0) array level 3 dcl 3-37 ref 108 180 204 options 12 based bit(1) level 2 packed unaligned dcl 5-11 ref 227 other_info_ptr 16 based pointer level 2 dcl 4-15 set ref 140* overlay based char(32) level 2 dcl 5-160 ref 94 parse_info_ptr 14 based pointer level 2 dcl 4-15 set ref 139* path 22 based char(168) level 3 in structure "domain" dcl 5-11 in procedure "mrds_rst_domain_handler" ref 242 path parameter char(168) unaligned dcl 333 in procedure "set_path_entry" ref 309 324 path based char(168) level 2 in structure "path_entry" packed unaligned dcl 6-172 in procedure "mrds_rst_domain_handler" set ref 324* path 170 based char(168) level 3 in structure "domain" dcl 5-11 in procedure "mrds_rst_domain_handler" ref 252 path 105 based char(168) level 3 in structure "domain" dcl 5-11 in procedure "mrds_rst_domain_handler" ref 247 path_entry based structure level 1 packed unaligned dcl 6-172 path_entry_ptr 000300 automatic pointer dcl 6-177 set ref 313* 315 316* 324 325 329 pointer builtin function dcl 375 ref 182 184 316 procedures_present 10(03) based bit(1) level 2 packed unaligned dcl 6-125 set ref 284* redefine 26(04) based bit(1) level 2 packed unaligned dcl 4-15 set ref 146* rel builtin function dcl 360 ref 177 187 231 329 reserved 26(09) based bit(26) level 2 in structure "gl" packed unaligned dcl 4-15 in procedure "mrds_rst_domain_handler" set ref 159* reserved 10(05) based bit(31) level 2 in structure "domain_info" packed unaligned dcl 6-125 in procedure "mrds_rst_domain_handler" set ref 285* rsc based structure level 1 unaligned dcl 1-29 rsc_ptr parameter pointer dcl 1-94 set ref 29 87 90 101 101* 117 119* 119 163 164* 211 211* 234* 271* 313* 342 344 351* rtrim builtin function dcl 360 ref 122 127 163 234 sev parameter fixed bin(17,0) dcl 267 set ref 265 271* stack_ptr 16 based pointer level 3 dcl 5-11 ref 230 231 stack_size 20 based fixed bin(17,0) level 3 dcl 5-11 ref 232 stmt based structure array level 1 unaligned dcl 3-37 stmt_ptr 000014 internal static pointer dcl 3-68 in procedure "mrds_rst_domain_handler" set ref 90* 108 180 204 stmt_ptr 244 based pointer level 2 in structure "rsc" dcl 1-29 in procedure "mrds_rst_domain_handler" ref 90 str_after_path_ptr 20 based bit(18) level 2 packed unaligned dcl 6-125 set ref 295* str_before_path_ptr 17 based bit(18) level 2 packed unaligned dcl 6-125 set ref 293* str_err_path_ptr 17(18) based bit(18) level 2 packed unaligned dcl 6-125 set ref 294* struct_cause parameter char unaligned dcl 356 set ref 338 346* superior_assigned 26(05) based bit(1) level 2 packed unaligned dcl 4-15 set ref 155* temp_dir 134 based char(168) level 2 packed unaligned dcl 1-29 ref 163 trace_sw 206(07) based bit(1) level 2 packed unaligned dcl 1-29 ref 101 211 type based fixed bin(17,0) level 2 in structure "directive" dcl 3-5 in procedure "mrds_rst_domain_handler" ref 92 104 108 115 115 147 180 200 204 type based fixed bin(17,0) level 2 in structure "gl" dcl 4-15 in procedure "mrds_rst_domain_handler" set ref 136* undefine 26(02) based bit(1) level 2 packed unaligned dcl 4-15 set ref 145* unused_1 23(18) based bit(18) level 2 packed unaligned dcl 6-125 set ref 302* unused_2 24 based bit(18) level 2 packed unaligned dcl 6-125 set ref 303* user_desc 12 based bit(36) level 2 dcl 6-125 set ref 224* 257* 282* user_desc_is_ptr 10(01) based bit(1) level 2 packed unaligned dcl 6-125 set ref 280* varying_avg_length 11 based fixed bin(24,0) level 2 dcl 5-11 ref 225 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ATD internal static fixed bin(17,0) initial dcl 2-63 ATTRIBUTE internal static fixed bin(17,0) initial dcl 2-16 ATTRIBUTE_DOMAIN internal static fixed bin(17,0) initial dcl 2-14 ATTR_INFO internal static fixed bin(17,0) initial dcl 2-59 ATTR_LIST internal static fixed bin(17,0) initial dcl 2-62 CHANGER internal static fixed bin(17,0) initial dcl 2-52 CHILDREN internal static fixed bin(17,0) initial dcl 2-21 CHILD_LINK_INFO internal static fixed bin(17,0) initial dcl 2-61 COMP_NO_ARRAY internal static fixed bin(17,0) initial dcl 2-64 CONSTANT internal static fixed bin(17,0) initial dcl 2-50 CUR_LEX_TOP internal static fixed bin(17,0) initial dcl 2-36 DB_MODEL internal static fixed bin(17,0) initial dcl 2-45 DELETE_NAME internal static fixed bin(17,0) initial dcl 2-23 DIRECTIVE internal static fixed bin(17,0) initial dcl 2-28 DISPLAY_INFO internal static fixed bin(17,0) initial dcl 2-82 DOMAIN internal static fixed bin(17,0) initial dcl 2-13 DOM_LIST internal static fixed bin(17,0) initial dcl 2-24 DUP_PREV internal static fixed bin(17,0) initial dcl 2-66 FILE internal static fixed bin(17,0) initial dcl 2-17 FILE_INFO internal static fixed bin(17,0) initial dcl 2-46 FILE_MODEL internal static fixed bin(17,0) initial dcl 2-57 FIXUP_TOKEN internal static fixed bin(17,0) initial dcl 2-37 FOREIGN_KEY internal static fixed bin(17,0) initial dcl 2-20 GL internal static fixed bin(17,0) initial dcl 2-72 INDEX internal static fixed bin(17,0) initial dcl 2-22 ITEM internal static fixed bin(17,0) initial dcl 2-18 LEX_STACK internal static fixed bin(17,0) initial dcl 2-34 LINK internal static fixed bin(17,0) initial dcl 2-19 LIST_OVRLY internal static fixed bin(17,0) initial dcl 2-75 NODE internal static fixed bin(17,0) initial dcl 2-77 OUTPUT_TEXT internal static fixed bin(17,0) initial dcl 2-40 PARENT_LINK_INFO internal static fixed bin(17,0) initial dcl 2-60 P_STRUCT internal static fixed bin(17,0) initial dcl 2-35 RELATION internal static fixed bin(17,0) initial dcl 2-15 REL_INFO internal static fixed bin(17,0) initial dcl 2-58 SAVED_CHILD_COUNT internal static fixed bin(17,0) initial dcl 2-76 SEGINFO internal static fixed bin(17,0) initial dcl 2-74 SEG_INFO internal static fixed bin(17,0) initial dcl 4-65 SELECT_CHAIN internal static fixed bin(17,0) initial dcl 2-67 SL internal static fixed bin(17,0) initial dcl 2-73 SORT_KEY internal static fixed bin(17,0) initial dcl 2-65 STACK_ITEM internal static fixed bin(17,0) initial dcl 2-49 STMT internal static fixed bin(17,0) initial dcl 2-29 STRING_SOURCE internal static fixed bin(17,0) initial dcl 2-38 SUB_LIST internal static fixed bin(17,0) initial dcl 4-64 TOKEN internal static fixed bin(17,0) initial dcl 2-39 VERSION_STATUS internal static fixed bin(17,0) initial dcl 2-51 accum_token_ptr internal static pointer dcl 5-171 addr builtin function dcl 360 alloc_length internal static fixed bin(35,0) dcl 6-222 attdom_ptr automatic pointer dcl 5-84 attribute based structure level 1 dcl 5-63 attribute_domain based structure level 1 dcl 5-77 attribute_ptr automatic pointer dcl 5-73 changer based structure level 1 packed unaligned dcl 6-251 changer_ptr automatic pointer dcl 6-256 children based structure level 1 dcl 5-131 children_ptr automatic pointer dcl 5-136 constant based structure level 1 unaligned dcl 6-216 constant_ptr automatic pointer dcl 6-220 dom_list based structure level 1 unaligned dcl 5-189 dom_list_ptr automatic pointer dcl 5-188 fi_ptr automatic pointer dcl 6-119 file based structure level 1 dcl 5-89 file_info based structure level 1 dcl 6-113 file_ptr automatic pointer dcl 5-104 fixed builtin function dcl 360 fixup_token based char unaligned dcl 5-178 foreign_key based structure level 1 dcl 5-139 forkey_ptr automatic pointer dcl 5-147 index_ptr automatic pointer dcl 5-115 item based structure level 1 dcl 5-150 item_ptr automatic pointer dcl 5-157 link based structure level 1 dcl 5-118 link_ptr automatic pointer dcl 5-128 list_ovrly based structure level 1 dcl 4-67 list_ovrly_ptr automatic pointer dcl 4-74 message_str based structure level 1 packed unaligned dcl 6-259 message_str_len automatic fixed bin(17,0) dcl 6-269 message_str_ptr automatic pointer dcl 6-267 mrds_data_$max_line_size external static fixed bin(35,0) dcl 5-173 mrds_data_$max_string_size external static fixed bin(35,0) dcl 5-172 output_text based varying char dcl 5-175 output_text_ptr internal static pointer dcl 5-177 rel_index based structure level 1 dcl 5-107 relation based structure level 1 dcl 5-51 relation_ptr automatic pointer dcl 5-60 saved_child_count based fixed bin(17,0) dcl 4-77 saved_child_count_ptr automatic pointer dcl 4-78 seg_info based structure level 1 unaligned dcl 4-53 seg_info_ptr automatic pointer dcl 4-59 sl based structure level 1 dcl 4-40 sl_ptr automatic pointer dcl 4-50 source_size automatic fixed bin(35,0) dcl 5-182 stack_item based structure level 1 unaligned dcl 6-206 stack_item_ptr automatic pointer dcl 6-212 string_source based char unaligned dcl 5-184 string_source_ptr automatic pointer dcl 5-183 sys_info$max_seg_size external static fixed bin(35,0) dcl 371 token based varying char dcl 5-169 token_length automatic fixed bin(24,0) dcl 5-174 ua_ptr automatic pointer dcl 6-165 unreferenced_attribute based structure level 1 dcl 6-159 version_status based structure level 1 packed unaligned dcl 6-232 version_status_ptr automatic pointer dcl 6-246 NAMES DECLARED BY EXPLICIT CONTEXT. Start 000256 constant label dcl 87 assign_domain_info 001214 constant entry internal dcl 216 ref 173 error 001524 constant entry internal dcl 265 ref 109 122 127 205 exit 001152 constant label dcl 211 ref 272 init_domain_info 001571 constant entry internal dcl 276 ref 171 model_overflow 001753 constant entry internal dcl 338 ref 166 317 mrds_rst_domain_handler 000251 constant entry external dcl 29 set_path_entry 001660 constant entry internal dcl 309 ref 242 247 252 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2340 2400 2172 2350 Length 2734 2172 40 317 146 6 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mrds_rst_domain_handler 468 external procedure is an external procedure. assign_domain_info internal procedure shares stack frame of external procedure mrds_rst_domain_handler. error 84 internal procedure is called during a stack extension. init_domain_info internal procedure shares stack frame of external procedure mrds_rst_domain_handler. set_path_entry internal procedure shares stack frame of external procedure mrds_rst_domain_handler. model_overflow internal procedure shares stack frame of external procedure mrds_rst_domain_handler. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 last_di_ptr mrds_rst_domain_handler 000012 directive_ptr mrds_rst_domain_handler 000014 stmt_ptr mrds_rst_domain_handler STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mrds_rst_domain_handler 000100 db_model_path mrds_rst_domain_handler 000152 message_length mrds_rst_domain_handler 000153 code mrds_rst_domain_handler 000154 message mrds_rst_domain_handler 000255 domain_name mrds_rst_domain_handler 000266 gl_ptr mrds_rst_domain_handler 000270 domain_ptr mrds_rst_domain_handler 000272 delete_name_ptr mrds_rst_domain_handler 000274 dbm_ptr mrds_rst_domain_handler 000276 di_ptr mrds_rst_domain_handler 000300 path_entry_ptr mrds_rst_domain_handler THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc return_mac tra_ext_1 shorten_stack ext_entry int_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_$rs mrds_rst_error mrds_rst_list_element$add mrds_rst_meter mrds_rst_model_alloc THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. mrds_error_$domain_already_defined mrds_error_$rst_list_duplicate mrds_error_$rst_model_limit mrds_error_$rst_undone_option LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 29 000245 87 000256 90 000263 92 000265 93 000270 94 000273 95 000276 97 000277 98 000302 101 000305 104 000342 108 000346 109 000353 115 000400 117 000406 119 000413 121 000433 122 000435 127 000577 128 000661 136 000662 137 000664 138 000671 139 000673 140 000674 141 000676 142 000677 143 000700 144 000701 145 000703 146 000705 147 000707 148 000713 149 000715 150 000717 152 000720 153 000722 155 000724 156 000726 157 000730 158 000732 159 000734 163 000736 164 000767 166 001014 171 001031 172 001032 173 001035 177 001036 180 001050 182 001057 183 001063 184 001073 185 001076 187 001077 189 001103 194 001106 200 001114 204 001120 205 001125 211 001152 214 001213 216 001214 221 001215 222 001222 223 001225 224 001227 225 001231 227 001233 229 001236 230 001241 231 001250 232 001253 234 001256 238 001411 241 001412 242 001416 246 001437 247 001443 251 001464 252 001470 256 001513 257 001517 263 001522 265 001523 271 001537 272 001566 276 001571 278 001572 279 001576 280 001600 281 001602 282 001603 283 001604 284 001606 285 001610 286 001612 287 001614 288 001615 289 001617 290 001621 291 001623 292 001625 293 001627 294 001631 295 001633 296 001635 297 001637 298 001641 299 001643 300 001645 301 001647 302 001651 303 001653 304 001655 307 001657 309 001660 313 001662 315 001707 316 001713 317 001717 318 001730 324 001731 325 001737 329 001743 338 001753 342 001764 344 001773 346 001775 351 002077 353 002137 358 002140 ----------------------------------------------------------- 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