COMPILATION LISTING OF SEGMENT mrds_dm_display_history Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/16/86 1339.9 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 mrds_dm_display_history: proc (I_mrds_dm_display_info_ptr, O_err_msg, O_err_code); 8 9 /* BEGIN_DESCRIPTION 10* 11* The purpose of this procedure is to display the restrucutring history 12* maintained in the db_model. If the database has not been restructured it 13* says so. If the database has been restructured more then once the list of 14* entries are displayed in reverse chronalogical order. 15* 16* . END_DESCRIPTION */ 17 18 19 /****^ HISTORY COMMENTS: 20* 1) change(82-06-02,Lackey), approve(), audit(), install(): 21* written. 22* 2) change(82-07-14,Lackey), approve(), audit(), install(): 23* changed length of entry_dis.inv from 40 chars to 64 chars to eliminate 24* a stringsize condition. 25* 3) change(85-12-03,Spitzer), approve(85-12-03,MCR7311), 26* audit(86-09-15,Gilcrease), install(86-10-16,MR12.0-1187): 27* Add more operation strings. 28* END HISTORY COMMENTS */ 29 30 31 /* PARAMETERS */ 32 33 dcl I_mrds_dm_display_info_ptr ptr parameter; 34 dcl O_err_code fixed bin (35) parameter; 35 dcl O_err_msg char (*) parameter; 36 37 O_err_code, code = 0; 38 O_err_msg = ""; 39 mrds_dm_display_info_ptr = I_mrds_dm_display_info_ptr; 40 dbm_ptr = mrds_dm_display_info.dbm_ptr; 41 iocb_ptr = mrds_dm_display_info.output_iocb_ptr; 42 43 if mrds_dm_display_info.version ^= MRDS_DM_DISPLAY_INFO_VERSION_1 then do; 44 O_err_msg = "For mrds_dm_display_info.version"; 45 O_err_code = error_table_$unimplemented_version; 46 end; 47 48 49 /* Check for no restructuring */ 50 51 else if db_model.last_restructuring_history_offset = NULL_OFFSET then 52 call ioa_$ioa_switch (iocb_ptr, 53 "^/Database has never been restructured.^/^a", 54 mrds_dm_display_info.db_path); 55 56 57 58 59 /* Display list in reverse order */ 60 61 else do; 62 63 call ioa_$ioa_switch (iocb_ptr, "^/HISTORY:"); 64 65 do rmdb_history_entry_ptr = pointer (dbm_ptr, db_model.last_restructuring_history_offset) 66 repeat pointer (dbm_ptr, rmdb_history_entry.offset_to_previous_entry) 67 while (rel (rmdb_history_entry_ptr) ^= NULL_OFFSET); 68 69 entry_dis.id = rmdb_history_entry.user_id; 70 call date_time_ (rmdb_history_entry.date_time_restructured, entry_dis.dt); 71 entry_dis.op = OPERATION_NAME (rmdb_history_entry.operation); 72 if RELATION_OPERATIONS (rmdb_history_entry.operation) then 73 rel_name = "RELATION: "; 74 else rel_name = ""; 75 if (ATTRIBUTE_OPERATIONS (rmdb_history_entry.operation) & ^(RELATION_OPERATIONS (rmdb_history_entry.operation)) 76 & ^(RENAME_OPERATIONS (rmdb_history_entry.operation))) 77 then rel_name = "DOMAIN: "; 78 if RENAME_OPERATIONS (rmdb_history_entry.operation) 79 then rel_name = "OLD NAME: "; 80 entry_dis.inv = rel_name || rmdb_history_entry.object_name; 81 82 call iox_$put_chars (iocb_ptr, addr (entry_dis), 83 length (string (entry_dis)), code); 84 if code ^= 0 then do; 85 O_err_msg = "While doing a put chars"; 86 O_err_code = code; 87 return; 88 end; 89 90 if rmdb_history_entry.secondary_object_name ^= "" then do; 91 if (ATTRIBUTE_OPERATIONS (rmdb_history_entry.operation) & ^(RENAME_OPERATIONS (rmdb_history_entry.operation))) then 92 attr_name = "ATTRIBUTE:"; 93 else if RENAME_OPERATIONS (rmdb_history_entry.operation) then 94 attr_name = "NEW NAME: "; 95 else attr_name = ""; 96 97 call ioa_$ioa_switch (iocb_ptr, "^21x^a^39t^a", 98 attr_name, rmdb_history_entry.secondary_object_name); 99 end; 100 101 end; 102 103 call ioa_$ioa_switch (iocb_ptr, ""); /* Add line feed at end */ 104 end; 105 106 107 return; 108 109 110 dcl addr builtin; 111 dcl attr_name char (32) varying; 112 dcl code fixed bin (35); 113 dcl date_time_ entry (fixed bin (71), char (*)); 114 dcl error_table_$unimplemented_version fixed bin (35) ext static; 115 dcl ioa_$ioa_switch entry () options (variable); 116 dcl iocb_ptr ptr; 117 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 118 dcl length builtin; 119 dcl NULL_OFFSET bit (18) int static options (constant) init ((18)"1"b); 120 dcl pointer builtin; 121 dcl rel builtin; 122 dcl rel_name char (32) varying; 123 dcl string builtin; 124 dcl sys_info$max_seg_size fixed bin (35) ext static; 125 126 dcl 1 entry_dis unaligned, /* Entry display */ 127 2 l1 char (22) init (" 128 Restructured by:"), 129 2 id char (32), 130 2 l2 char (22) init (" 131 Restructured on:"), 132 2 dt char (16), 133 2 l3 char (22) init (" 134 Operation:"), 135 2 op char (32), 136 2 l4 char (22) init (" 137 Involving:"), 138 2 inv char (64), 139 2 nl char (1) init (" 140 "); 141 142 /* NOTE: The RELATION_OPERATIONS and OPERATION_NAME dimentions must be kept the same */ 143 144 dcl RELATION_OPERATIONS (11) bit (1) int static options (constant) init ( 145 "1"b, "1"b, "1"b, "1"b, 146 "0"b, "0"b, "0"b, "0"b, 147 "0"b, "0"b, "1"b); 148 149 dcl ATTRIBUTE_OPERATIONS (11) bit (1) int static options (constant) init ( 150 "0"b, "0"b, "1"b, "1"b, 151 "1"b, "1"b, "0"b, "0"b, 152 "1"b, "0"b, "0"b); 153 154 dcl RENAME_OPERATIONS (11) bit (1) int static options (constant) init ( 155 "0"b, "0"b, "0"b, "0"b, 156 "0"b, "0"b, "0"b, "0"b, 157 "1"b, "1"b, "1"b); 158 dcl OPERATION_NAME (11) char (32) int static options (constant) init ( 159 "ADD RELATION", "DELETE RELATION", 160 "ADD INDEX", "DELETE INDEX", 161 "ADD ATTRIBUTE", "DELETE ATTRIBUTE", 162 "ADD DOMAIN", "DELETE DOMAIN", 163 "RENAME ATTRIBUTE", "RENAME DOMAIN", 164 "RENAME RELATION"); 165 1 1 /* BEGIN INCLUDE mrds_dm_display_info.incl.pl1 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(85-12-07,Spitzer), approve(85-12-07,MCR7311), 1 7* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 1 8* Add flag fields for unreferenced objects and crossrefs. 1 9* END HISTORY COMMENTS */ 1 10 1 11 1 12 dcl 1 mrds_dm_display_info aligned based (mrds_dm_display_info_ptr), 1 13 2 version fixed bin, 1 14 2 output_iocb_ptr ptr, /* Output iocb pointer */ 1 15 2 db_path char (168) unal, /* Absolute pathname of the database */ 1 16 2 temp_dir_path char (168) unal, /* Absolute pathname of temp dir */ 1 17 2 work_area_ptr ptr, /* Pointer to freeing area */ 1 18 2 dbm_ptr ptr, /* Pointer to the db_model of the database */ 1 19 2 sw, /* Control switches */ 1 20 3 default bit (1) unal, /* Neither -long or -brief */ 1 21 3 long bit (1) unal, /* On = long mode */ 1 22 3 cmdb bit (1) unal, /* On = cmdb type output */ 1 23 3 names_only bit (1) unal, /* Only the name for either relation, attribute, domain, index 1 24* name_list is pointer to by mrds_dm_display_info.name_list_ptr */ 1 25 3 domains bit (1) unal, /* Domain info only */ 1 26 3 attribute bit (1) unal, /* Attibute info only */ 1 27 3 relation bit (1) unal, /* Relation info only */ 1 28 3 index bit (1) unal, /* Index relation info only */ 1 29 3 history bit (1) unal, /* On = list history */ 1 30 3 header bit (1) unal, /* On = display header */ 1 31 3 unreferenced_domains bit (1) unal, /* On = display only unreferenced domains */ 1 32 3 unreferenced_attributes bit (1) unal, /* On = display only unreferenced attributes */ 1 33 3 domain_xref bit (1) unal, /* On = display a domain crossreference */ 1 34 3 attribute_xref bit (1) unal, /* On = display an attribute crossreference */ 1 35 3 all_xref bit (1) unal, /* On = display a complete crossreference */ 1 36 3 mbz bit (21) unal, /* Unnused must be zeros */ 1 37 /* The following are pointer to name list like 1 38* name_list structure below */ 1 39 1 40 2 dom_name_list_ptr ptr, /* Pointer to domain name list */ 1 41 2 attr_name_list_ptr ptr, /* Pointer to attribute name list */ 1 42 2 rel_name_list_ptr ptr, /* Pointer to relation name list */ 1 43 2 index_name_list_ptr ptr, /* Pointer to index rel name list */ 1 44 1 45 2 xref_iocb_ptr ptr, /* Pointer to database xref */ 1 46 2 xref_name char (32) unaligned; /* Name of xref file created */ 1 47 1 48 dcl 1 name_list aligned based (name_list_ptr), /* General name list */ 1 49 2 num_names fixed bin, /* Number of names in list */ 1 50 2 name (num_names_alloc refer (name_list.num_names)) char (32); 1 51 1 52 dcl mrds_dm_display_info_ptr pointer; 1 53 dcl name_list_ptr pointer; 1 54 dcl MRDS_DM_DISPLAY_INFO_VERSION_1 int static options (constant) init (1); 1 55 dcl num_names_alloc fixed bin; 1 56 1 57 /* END INCLUDE mrds_dm_display_info.incl.pl1 */ 166 167 2 1 /* BEGIN INCLUDE FILE rmdb_history_entry.incl.pl1 -- nsd, 82-04-09 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(75-01-01,WhoKnows), approve(), audit(), install(): 2 7* Written. 2 8* 2) change(85-12-03,Spitzer), approve(85-12-03,MCR7311), 2 9* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 2 10* Added RMDB_ADD_(ATTR DMN)_OP, RMDB_RN_(ATTR DMN REL)_OP. 2 11* END HISTORY COMMENTS */ 2 12 2 13 2 14 /* 2 15* This include file contains the rmdb_history_entry structure which 2 16* is used for maintaining a history of the databases restructuring 2 17* events. It also contains a set of constants used in loading the 2 18* structure. 2 19* 2 20* The restructuring history is applied against the database as a 2 21* whole instead of against each structure in the db_model and file 2 22* models which was the approach originally implemented but never 2 23* really used (except to record the database creation). This is 2 24* because 1 database restructuring event, i.e. adding a new index 2 25* to a relation will change several of the structures in the model. 2 26* 2 27* For a detailed explaination of the use of this structure and the 2 28* constants see the rmdb_add_rmdb_event module. 2 29**/ 2 30 2 31 dcl 01 rmdb_history_entry aligned based (rmdb_history_entry_ptr), 2 32 02 user_id char (32), /* person_id.project_id.tag */ 2 33 02 date_time_restructured fixed bin (71), 2 34 02 type_of_object_restructured fixed bin, /* taken from constants below */ 2 35 02 object_name char (32), 2 36 02 operation fixed bin, /* taken from constants below */ 2 37 02 secondary_object_name char (32), /* i.e. name of attr just indexed in a restructured relation */ 2 38 02 offset_to_next_entry bit (18) unal, 2 39 02 offset_to_previous_entry bit (18) unal; 2 40 2 41 2 42 dcl rmdb_history_entry_ptr ptr; 2 43 2 44 2 45 dcl RMDB_DOMAIN_TYPE init (1) fixed bin internal static options (constant); 2 46 dcl RMDB_ATTR_TYPE init (2) fixed bin internal static options (constant); 2 47 dcl RMDB_REL_TYPE init (3) fixed bin internal static options (constant); 2 48 2 49 2 50 dcl RMDB_ADD_REL_OP init (1) fixed bin internal static options (constant); 2 51 dcl RMDB_DEL_REL_OP init (2) fixed bin internal static options (constant); 2 52 dcl RMDB_ADD_IDX_OP init (3) fixed bin internal static options (constant); 2 53 dcl RMDB_DEL_IDX_OP init (4) fixed bin internal static options (constant); 2 54 dcl RMDB_ADD_ATTR_OP init (5) fixed bin int static options (constant); 2 55 dcl RMDB_DEL_ATTR_OP init (6) fixed bin int static options (constant); 2 56 dcl RMDB_ADD_DMN_OP init (7) fixed bin int static options (constant); 2 57 dcl RMDB_DEL_DMN_OP init (8) fixed bin int static options (constant); 2 58 dcl RMDB_RN_ATTR_OP init (9) fixed bin int static options (constant); 2 59 dcl RMDB_RN_DMN_OP init (10) fixed bin int static options (constant); 2 60 dcl RMDB_RN_REL_OP init (11) fixed bin int static options (constant); 2 61 2 62 /* END INCLUDE FILE rmdb_history_entry.incl.pl1 */ 168 169 3 1 /* BEGIN INCLUDE FILE mdbm_db_model.incl.pl1 -- jaw, 10/2/78 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(79-02-01,Gray), approve(), audit(), install(): 3 6* modified to save space occupied by model 3 7* 2) change(80-11-03,Gray), approve(), audit(), install(): 3 8* to add mdbm_secured bit in db_model 3 9* 3) change(82-04-09,Davids), approve(), audit(), install(): 3 10* collapsed the following into an unused_offset array: 3 11* chng_before_path_ptr chng_err_path_ptr chng_after_path_ptr 3 12* copy_before_path_ptr copy_err_path_ptr copy_after_path_ptr 3 13* dsply_before_path_pt dsply_err_path_pt dsply_after_path_ptr 3 14* accs_before_path_ptr accs_err_path_ptr accs_after_path_ptr 3 15* unused_1 3 16* Also changed the name of unused_2 to restructuring_history_offset 3 17* and changed the comment on the changer structure to indicate 3 18* that it will contain on database creation information. 3 19* 4) change(82-04-14,Davids), approve(), audit(), install(): 3 20* used one of the unused_offsets to point to a message which indicates 3 21* why the db is inconsistent. The offset will be null when the db is created 3 22* and set the first time the message is used. this is so it will be 3 23* consistent with existing data bases. Also added the message structure. 3 24* 5) change(82-04-28,Davids), approve(), audit(), install(): 3 25* added the undo_request element to the message structure 3 26* 6) change(82-05-04,Davids), approve(), audit(), install(): 3 27* changed unused_offset (12) to last_restructruring_history_offset and 3 28* changed restructuring_history_offset to first_restructuring_history_offset 3 29* 7) change(82-08-19,Davids), approve(), audit(), install(): 3 30* changed the meaning of db_type from 1 => relational and 2 => CODASYL to 3 31* 1 => vfile database and 2 => page_file database. Up to this point all 3 32* database types were equal to 1. 3 33* 8) change(83-02-14,Davids), approve(), audit(), install(): 3 34* changed db_type from a fixed bin unal to a substructure of 18 bit (1) unal 3 35* flags. This will allow information about transactions and dm_file 3 36* concurrency to be independent of the db_type, i.e. vfile or dm_file. The 3 37* change is compatable with all datamodels created by the released version 3 38* of mrds. 3 39* 9) change(83-02-15,Davids), approve(), audit(), install(): 3 40* added the rollback_on flag to the db_type_flags since it appears that you 3 41* can have a dmfile database that requires transactions but does not have any 3 42* journalizing. Also switched the order of the transactions_needed and 3 43* concurrency_on flags - this makes the change compatable with existing 3 44* dmfile databases except when displaying the model since concurrency_on and 3 45* rollback_on will be off in the model even though the dmfile relations had 3 46* them on during creation. 3 47* 10) change(83-02-22,Kubicar), approve(), audit(), install(): 3 48* Removed ctl_file_path_ptr. 3 49* 11) change(85-11-08,Spitzer), approve(85-12-03,MCR7311), 3 50* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 3 51* used 1 unused offset for unreferenced attribute linked lists in db_model, 3 52* 1 unused bit flag in domain_info to indicate an unreferenced domain, 1 bit 3 53* in the flag word for rmdb copying. 3 54* END HISTORY COMMENTS */ 3 55 3 56 3 57 /* this include file contains the structures that go into the make up 3 58* of the "db_model" segment in the model for the database. 3 59* in addition there file_model.m segments, 1 for each database file(see mdbm_file_model.incl.pl1) 3 60* 3 61* the db_model structure goes at the base of the segment, and contains items unique to 3 62* the whole databse. in addition, it has an area of size to fill the 3 63* rest of a segment, that holds the lists of files and domains in the database. 3 64* these lists are singly forward linked lists. all "pointers" in the database model 3 65* are maintained as offsets(bit (18)) from the base of the particular model segment 3 66* since actual pointers are process dependent on segment number. 3 67* the remaining structures are first a path_entry one to save pathnames in, 3 68* and the stack_item and constent structures, used to save a boolean 3 69* expression in polish form, with the stack represented by a linked list. 3 70* the final structure is one for identifying the status of version information */ 3 71 3 72 dcl 1 db_model aligned based (dbm_ptr),/* base of db_model segment, allocated once per database */ 3 73 2 version unal fixed bin, /* data base version, currently 4 */ 3 74 2 db_type_flags unal, 3 75 3 copy_good bit (1) unal, /* "1"b => copy of the db_model is the valid copy */ 3 76 3 unused (13) bit (1) unal, 3 77 3 rollback_on bit (1) unal, /* "1"b => before journaling is to be done */ 3 78 3 concurrency_on bit (1) unal, /* "1"b => dm_file concurrency is being used */ 3 79 3 transactions_needed bit (1) unal, /* "1"b => transactions are needed to reference data */ 3 80 3 vfile_type bit (1) unal, /* "1"b => vfile type relations, "0"b => dm_file type relations */ 3 81 2 uniq_sw_name char (32), /* per database unique attach switch name for files */ 3 82 2 consistant bit (1) unal, /* ON => correctly created/restructured database, ok to open */ 3 83 2 mdbm_secured bit (1) unal, /* on => database has been secured */ 3 84 2 reserved bit (34) unal, /* reserved for flags */ 3 85 2 blk_file_id_len unal fixed bin, /* no. bits required for blocked file id. */ 3 86 2 unblk_file_id_len unal fixed bin, /* number of file id bits, unblocked file */ 3 87 2 num_blk_files unal fixed bin, /* number of blocked files defined in db */ 3 88 2 num_unblk_files unal fixed bin, /* number of unblocked files defined in db */ 3 89 2 num_rels unal fixed bin, /* number of relations defined in db. */ 3 90 2 num_domains unal fixed bin, /* number of domains defined */ 3 91 2 num_dyn_links unal fixed bin, /* no. dynamic links defined */ 3 92 2 max_max_tuples unal fixed bin (35), /* maximum max_tuples across all files */ 3 93 2 pad_1 unal fixed bin (35), /* for future use */ 3 94 2 pad_2 unal fixed bin (35), /* for future use */ 3 95 2 version_ptr bit (18), /* offset to version structure */ 3 96 2 file_ptr unal bit (18), /* offset to first in threaded list of file_infos */ 3 97 2 domain_ptr unal bit (18), /* offset to first in list of domain_infos */ 3 98 2 unreferenced_attribute_ptr unal bit (18), /* offset to first in list of unreferenced attr_infos */ 3 99 2 unused_offsets (11) unal bit (18), /* extra offsets if needed */ 3 100 2 last_restructuring_history_offset unal bit (18), /* offset to last restructuring history entry */ 3 101 2 inconsistent_message_offset unal bit (18), /* offset to message indicating why db is inconsistent */ 3 102 2 first_restructuring_history_offset unal bit (18), /* offset to first restructuring history entry */ 3 103 2 changer_ptr unal bit (18), /* offset to information about db creation */ 3 104 2 dbm_area area (sys_info$max_seg_size - fixed (rel (addr (db_model.dbm_area))) - 1); 3 105 3 106 dcl dbm_ptr ptr; 3 107 3 108 /* the files in the database each have a file_info containing 3 109* their name, the file_model for each file is found by initiating the 3 110* segment "file_name.m" (i.e. the file's name with suffix ".m") 3 111* the file_info list is a singly linked list in definition order */ 3 112 3 113 dcl 1 file_info aligned based (fi_ptr), /* list of file names and numbers */ 3 114 2 file_name char (30), /* name of file */ 3 115 2 file_id bit (36), /* id number of file */ 3 116 2 fwd_ptr unal bit (18), /* thread to next in list */ 3 117 2 unused unal bit (18); /* for future expansion */ 3 118 3 119 dcl fi_ptr ptr; 3 120 3 121 /* each domain used in the database will have a domain info saved in the db_model 3 122* segment. it describes the domain of the given name, and it's options. 3 123* the domain_info's form a singly linked list in definition order */ 3 124 3 125 dcl 1 domain_info aligned based (di_ptr), /* one for each domain defined */ 3 126 2 name char (32), /* name of domain */ 3 127 2 db_desc_is_ptr bit (1) unal, /* on if descriptor is pointer to real desc. */ 3 128 2 user_desc_is_ptr bit (1) unal, /* on if user desc is ptr */ 3 129 2 no_conversion bit (1) unal, /* if no conversion allowed */ 3 130 2 procedures_present bit (1) unal, /* on => ids type procedures present */ 3 131 2 unreferenced bit (1) unal, /* on => this domain is not used in any attribute */ 3 132 2 reserved bit (31) unal, 3 133 2 db_desc bit (36), /* desc. for item in db, or ptr to it */ 3 134 2 user_desc bit (36), /* desc. for user-visible attr, or ptr */ 3 135 2 ave_len fixed bin (35), /* average length of varying string */ 3 136 2 nck_items unal fixed bin, /* no. items in check stack */ 3 137 2 fwd_thread unal bit (18), /* offset to next in list */ 3 138 2 check_path_ptr unal bit (18), /* integ. check proc. */ 3 139 2 ck_stack_ptr unal bit (18), /* to check stack */ 3 140 2 encd_path_ptr unal bit (18), /* encode procedure */ 3 141 2 decd_path_ptr unal bit (18), /* decode procedure */ 3 142 2 str_before_path_ptr unal bit (18), /* proc paths and entries */ 3 143 2 str_err_path_ptr unal bit (18), 3 144 2 str_after_path_ptr unal bit (18), 3 145 2 get_before_path_ptr unal bit (18), 3 146 2 get_err_path_ptr unal bit (18), 3 147 2 get_after_path_ptr unal bit (18), 3 148 2 mod_before_path_ptr unal bit (18), 3 149 2 mod_err_path_ptr unal bit (18), 3 150 2 mod_after_path_ptr unal bit (18), 3 151 2 unused_1 unal bit (18), /* for future expansion */ 3 152 2 unused_2 unal bit (18), 3 153 2 changer_ptr unal bit (18); /* pointer to change_id and chane_time structure */ 3 154 3 155 dcl di_ptr ptr; 3 156 3 157 /* information necessary for attributes that are not used in any relation */ 3 158 3 159 dcl 1 unreferenced_attribute aligned based (ua_ptr), 3 160 2 name char (32), /* name of attribute */ 3 161 2 domain_ptr bit (18) unal, /* to domain_info */ 3 162 2 fwd_thread bit (18) unal, /* to next in list */ 3 163 2 unused (2) bit (18) unal; 3 164 3 165 dcl ua_ptr ptr; 3 166 3 167 3 168 /* space saving pathname$entryname structure, to be allocated 3 169* only when a path$entry has to be saved, else only a bit(18) 3 170* offset takes up space in the main model structure */ 3 171 3 172 declare 1 path_entry based (path_entry_ptr), 3 173 2 path char (168), /* pathname portion of desired path$entry */ 3 174 2 entry char (32), /* entryname portion of desired path$entry */ 3 175 2 reserved unal bit (36); /* for future use */ 3 176 3 177 declare path_entry_ptr ptr; 3 178 3 179 3 180 3 181 3 182 3 183 /* declarations for model of postfix stack holding the check option boolean expression 3 184* the following encoding values indicate the corresponding type of stack element 3 185* 3 186* 1 = 3 187* 2 ^= 3 188* 3 > 3 189* 4 < 3 190* 5 >= 3 191* 6 <= 3 192* 3 193* 10 and 3 194* 20 or 3 195* 30 not 3 196* 3 197* 40 - (minus) 3 198* 3 199* 50 domain variable(same name as domain) 3 200* 3 201* 60 constant(number, bit string, or character string) 3 202* 3 203**/ 3 204 3 205 3 206 declare 1 stack_item based (stack_item_ptr), /* element of stack model list */ 3 207 2 next bit (18), /* link to next in list */ 3 208 2 type fixed binary, /* code for this element type */ 3 209 2 value_ptr bit (18); /* pointer to variable holding value, 3 210* if this is a constant element type */ 3 211 3 212 declare stack_item_ptr ptr; /* pointer to a stack element */ 3 213 3 214 3 215 3 216 declare 1 constant based (constant_ptr), /* variable size space for constant's value storage */ 3 217 2 length fixed bin (35), /* length allocated to hold value */ 3 218 2 value bit (alloc_length refer (constant.length)) aligned; /* value for this constant */ 3 219 3 220 declare constant_ptr ptr; /* pointer to constant's value space */ 3 221 3 222 declare alloc_length fixed binary (35) internal static; /* amount of space to allocate for constant's value */ 3 223 3 224 /* version structure, giving status of source for CMDB/RMDB, 3 225* status of model, and status of resultant */ 3 226 3 227 /* version number is in form MM.N.Y 3 228* where MM is the major version number, N is the minor version alteration, 3 229* and Y is the lastest modification to that alteration, 3 230* where M and N represent numbers 0-9, and Y is a letter */ 3 231 3 232 declare 1 version_status unal based (version_status_ptr), 3 233 2 cmdb_rmdb, 3 234 3 major fixed bin, 3 235 3 minor fixed bin, 3 236 3 modification char (4), 3 237 2 model, 3 238 3 major fixed bin, 3 239 3 minor fixed bin, 3 240 3 modification char (4), 3 241 2 resultant, 3 242 3 major fixed bin, 3 243 3 minor fixed bin, 3 244 3 modification char (4); 3 245 3 246 declare version_status_ptr ptr; 3 247 3 248 3 249 /* maintains information only about the db creation */ 3 250 3 251 declare 1 changer unal based (changer_ptr), 3 252 2 id char (32), 3 253 2 time fixed bin (71), 3 254 2 next bit (18); /* to next in the singly linked list */ 3 255 3 256 declare changer_ptr ptr; 3 257 3 258 3 259 dcl 01 message_str unal based (message_str_ptr), /* general purpose structure to hold messages */ 3 260 02 len fixed bin, /* length of the message */ 3 261 02 text char (message_str_len refer (message_str.len)), /* actual message */ 3 262 02 name char (32), /* name of thing that set the message */ 3 263 02 undo_request char (100), /* rmdb request that will undo the operation 3 264* that caused the database to become inconsistent */ 3 265 02 mbz bit (36); /* for possible extensions, like an offset to another message */ 3 266 3 267 dcl message_str_ptr ptr; /* pointer to the message_str structure */ 3 268 3 269 dcl message_str_len fixed bin; /* initail length of the text string in message_str */ 3 270 3 271 /* END INCLUDE FILE mdbm_db_model.incl.pl1 */ 3 272 3 273 170 171 172 end mrds_dm_display_history; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/16/86 1142.7 mrds_dm_display_history.pl1 >special_ldd>install>MR12.0-1187>mrds_dm_display_history.pl1 166 1 10/16/86 1140.1 mrds_dm_display_info.incl.pl1 >special_ldd>install>MR12.0-1187>mrds_dm_display_info.incl.pl1 168 2 10/16/86 1139.6 rmdb_history_entry.incl.pl1 >special_ldd>install>MR12.0-1187>rmdb_history_entry.incl.pl1 170 3 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. ATTRIBUTE_OPERATIONS 000131 constant bit(1) initial array unaligned dcl 149 ref 75 91 I_mrds_dm_display_info_ptr parameter pointer dcl 33 ref 7 39 MRDS_DM_DISPLAY_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 1-54 ref 43 NULL_OFFSET constant bit(18) initial unaligned dcl 119 ref 51 65 OPERATION_NAME 000000 constant char(32) initial array unaligned dcl 158 ref 71 O_err_code parameter fixed bin(35,0) dcl 34 set ref 7 37* 45* 86* O_err_msg parameter char unaligned dcl 35 set ref 7 38* 44* 85* RELATION_OPERATIONS 000132 constant bit(1) initial array unaligned dcl 144 ref 72 75 RENAME_OPERATIONS 000130 constant bit(1) initial array unaligned dcl 154 ref 75 78 91 93 addr builtin function dcl 110 ref 82 82 attr_name 000100 automatic varying char(32) dcl 111 set ref 91* 93* 95* 97* code 000111 automatic fixed bin(35,0) dcl 112 set ref 37* 82* 84 86 date_time_ 000010 constant entry external dcl 113 ref 70 date_time_restructured 10 based fixed bin(71,0) level 2 dcl 2-31 set ref 70* db_model based structure level 1 dcl 3-72 db_path 4 based char(168) level 2 packed unaligned dcl 1-12 set ref 51* dbm_ptr 000224 automatic pointer dcl 3-106 in procedure "mrds_dm_display_history" set ref 40* 51 65 65 101 dbm_ptr 132 based pointer level 2 in structure "mrds_dm_display_info" dcl 1-12 in procedure "mrds_dm_display_history" ref 40 dt 23 000125 automatic char(16) level 2 packed unaligned dcl 126 set ref 70* entry_dis 000125 automatic structure level 1 packed unaligned dcl 126 set ref 82 82 82 82 error_table_$unimplemented_version 000012 external static fixed bin(35,0) dcl 114 ref 45 id 5(18) 000125 automatic char(32) level 2 packed unaligned dcl 126 set ref 69* inv 52 000125 automatic char(64) level 2 packed unaligned dcl 126 set ref 80* ioa_$ioa_switch 000014 constant entry external dcl 115 ref 51 63 97 103 iocb_ptr 000112 automatic pointer dcl 116 set ref 41* 51* 63* 82* 97* 103* iox_$put_chars 000016 constant entry external dcl 117 ref 82 l1 000125 automatic char(22) initial level 2 packed unaligned dcl 126 set ref 126* l2 15(18) 000125 automatic char(22) initial level 2 packed unaligned dcl 126 set ref 126* l3 27 000125 automatic char(22) initial level 2 packed unaligned dcl 126 set ref 126* l4 44(18) 000125 automatic char(22) initial level 2 packed unaligned dcl 126 set ref 126* last_restructuring_history_offset 31 based bit(18) level 2 packed unaligned dcl 3-72 ref 51 65 length builtin function dcl 118 ref 82 82 mrds_dm_display_info based structure level 1 dcl 1-12 mrds_dm_display_info_ptr 000220 automatic pointer dcl 1-52 set ref 39* 40 41 43 51 nl 72 000125 automatic char(1) initial level 2 packed unaligned dcl 126 set ref 126* object_name 13 based char(32) level 2 dcl 2-31 ref 80 offset_to_previous_entry 34(18) based bit(18) level 2 packed unaligned dcl 2-31 ref 101 op 34(18) 000125 automatic char(32) level 2 packed unaligned dcl 126 set ref 71* operation 23 based fixed bin(17,0) level 2 dcl 2-31 ref 71 72 75 75 75 78 91 91 93 output_iocb_ptr 2 based pointer level 2 dcl 1-12 ref 41 pointer builtin function dcl 120 ref 65 101 rel builtin function dcl 121 ref 65 rel_name 000114 automatic varying char(32) dcl 122 set ref 72* 74* 75* 78* 80 rmdb_history_entry based structure level 1 dcl 2-31 rmdb_history_entry_ptr 000222 automatic pointer dcl 2-42 set ref 65* 65* 69 70 71 72 75 75 75 78 80 90 91 91 93 97* 101 secondary_object_name 24 based char(32) level 2 dcl 2-31 set ref 90 97* string builtin function dcl 123 ref 82 82 user_id based char(32) level 2 dcl 2-31 ref 69 version based fixed bin(17,0) level 2 dcl 1-12 ref 43 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. RMDB_ADD_ATTR_OP internal static fixed bin(17,0) initial dcl 2-54 RMDB_ADD_DMN_OP internal static fixed bin(17,0) initial dcl 2-56 RMDB_ADD_IDX_OP internal static fixed bin(17,0) initial dcl 2-52 RMDB_ADD_REL_OP internal static fixed bin(17,0) initial dcl 2-50 RMDB_ATTR_TYPE internal static fixed bin(17,0) initial dcl 2-46 RMDB_DEL_ATTR_OP internal static fixed bin(17,0) initial dcl 2-55 RMDB_DEL_DMN_OP internal static fixed bin(17,0) initial dcl 2-57 RMDB_DEL_IDX_OP internal static fixed bin(17,0) initial dcl 2-53 RMDB_DEL_REL_OP internal static fixed bin(17,0) initial dcl 2-51 RMDB_DOMAIN_TYPE internal static fixed bin(17,0) initial dcl 2-45 RMDB_REL_TYPE internal static fixed bin(17,0) initial dcl 2-47 RMDB_RN_ATTR_OP internal static fixed bin(17,0) initial dcl 2-58 RMDB_RN_DMN_OP internal static fixed bin(17,0) initial dcl 2-59 RMDB_RN_REL_OP internal static fixed bin(17,0) initial dcl 2-60 alloc_length internal static fixed bin(35,0) dcl 3-222 changer based structure level 1 packed unaligned dcl 3-251 changer_ptr automatic pointer dcl 3-256 constant based structure level 1 unaligned dcl 3-216 constant_ptr automatic pointer dcl 3-220 di_ptr automatic pointer dcl 3-155 domain_info based structure level 1 dcl 3-125 fi_ptr automatic pointer dcl 3-119 file_info based structure level 1 dcl 3-113 message_str based structure level 1 packed unaligned dcl 3-259 message_str_len automatic fixed bin(17,0) dcl 3-269 message_str_ptr automatic pointer dcl 3-267 name_list based structure level 1 dcl 1-48 name_list_ptr automatic pointer dcl 1-53 num_names_alloc automatic fixed bin(17,0) dcl 1-55 path_entry based structure level 1 packed unaligned dcl 3-172 path_entry_ptr automatic pointer dcl 3-177 stack_item based structure level 1 unaligned dcl 3-206 stack_item_ptr automatic pointer dcl 3-212 sys_info$max_seg_size external static fixed bin(35,0) dcl 124 ua_ptr automatic pointer dcl 3-165 unreferenced_attribute based structure level 1 dcl 3-159 version_status based structure level 1 packed unaligned dcl 3-232 version_status_ptr automatic pointer dcl 3-246 NAME DECLARED BY EXPLICIT CONTEXT. mrds_dm_display_history 000257 constant entry external dcl 7 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1000 1020 706 1010 Length 1272 706 20 236 72 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mrds_dm_display_history 198 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mrds_dm_display_history 000100 attr_name mrds_dm_display_history 000111 code mrds_dm_display_history 000112 iocb_ptr mrds_dm_display_history 000114 rel_name mrds_dm_display_history 000125 entry_dis mrds_dm_display_history 000220 mrds_dm_display_info_ptr mrds_dm_display_history 000222 rmdb_history_entry_ptr mrds_dm_display_history 000224 dbm_ptr mrds_dm_display_history THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. date_time_ ioa_$ioa_switch iox_$put_chars THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 7 000253 126 000272 37 000310 38 000313 39 000317 40 000322 41 000324 43 000326 44 000331 45 000336 46 000340 51 000341 63 000371 65 000411 69 000423 70 000427 71 000444 72 000453 74 000467 75 000470 78 000510 80 000517 82 000535 84 000557 85 000561 86 000567 87 000570 90 000571 91 000576 93 000616 95 000626 97 000627 101 000661 103 000670 107 000705 ----------------------------------------------------------- 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