1 /* BEGIN INCLUDE FILE mrds_rst_parse_info.incl.pl1 -- oris, 6/30/78 */ 2 /* modified 9/6/78 -- jeg, for lrk parser - cmdb interface */ 3 /* modified 12/20/78 - - jeg, to add line number info for handlers */ 4 /* modified 3/15/79 - - jeg, to add scanner, semantic, and link handler variables to be allocated in rsc */ 5 /* Modified by Jim Gray - - 23-June-80, to separate max_string_size, 6 and max_line_size mrds_data_ items. */ 7 8 9 10 11 declare 1 domain aligned based (domain_ptr), 12 2 name char (32), /* name of this domain */ 13 2 descriptor bit (36), /* Multics pl1 descriptor for domain type */ 14 2 varying_avg_length fixed bin (24), /* average length of varying strings */ 15 2 options bit (1) unal, /* ON => some option is present */ 16 2 pad bit (35) unal, 17 2 check, 18 3 flag bit (1) unal, /* ON => check option present */ 19 3 pad bit (35) unal, 20 3 stack_ptr ptr, /* pointer to postfix stack 21 holding boolean expression */ 22 3 stack_size fixed binary, /* number of stack elements */ 23 2 check_proc, 24 3 flag bit (1) unal, /* ON => check_proc option is present */ 25 3 pad bit (35) unal, 26 3 path char (168), /* check procedure pathname */ 27 3 entry char (32), /* check procedure entryname */ 28 2 encode_proc, 29 3 flag bit (1) unal, /* ON => encode_proc option is present */ 30 3 pad bit (35) unal, 31 3 path char (168), /* encode procedure pathname */ 32 3 entry char (32), /* encode procedure entryname */ 33 2 decode_proc, 34 3 flag bit (1) unal, /* ON => decode_proc option is present */ 35 3 pad bit (35) unal, 36 3 path char (168), /* decode procedure pathname */ 37 3 entry char (32), /* decode procedure entryname */ 38 2 decode_dcl, 39 3 flag bit (1) unal, /* ON => decode declaration is present */ 40 3 pad bit (35) unal, 41 3 descriptor bit (36), /* decode declaration pl1 descriptor */ 42 2 line_num fixed bin (24) ; /* line of domain name in source */ 43 44 45 declare domain_ptr ptr ; 46 47 48 49 50 51 dcl 1 relation aligned based (relation_ptr), 52 2 a_ptr ptr, /* ptr to attribute list for this relation */ 53 2 name char (32), /* relation name */ 54 2 max_tup fixed bin, /* maximum tuples for this relation if a blocked file */ 55 2 num_items fixed bin, /* number of attributes in this relation */ 56 2 unused bit (36) unal, /* future flags */ 57 2 line_num fixed bin (24) ; /* line of relation name in source */ 58 59 60 dcl relation_ptr ptr; 61 62 63 dcl 1 attribute aligned based (attribute_ptr), 64 2 next ptr, /* ptr to next in list */ 65 2 name char (32), /* name of attribute */ 66 2 pr_key bit (1) unal, /* ON => part of primary key */ 67 2 pad bit (35) unal, 68 2 defn_order fixed bin, /* position within the relation */ 69 2 key_order fixed bin, /* position within the primary key, if a key */ 70 2 line_num fixed bin (24) ; /* line of attribute name in source */ 71 72 73 dcl attribute_ptr ptr; 74 75 76 77 dcl 1 attribute_domain aligned based (attdom_ptr), 78 2 attr char (32), /* attribute name */ 79 2 dom char (32), /* domain name */ 80 2 default bit (1) unal, /* on => defined as default attr, not by source */ 81 2 unused bit (35) unal, /* future flags */ 82 2 line_num fixed bin (24) ; /* line of attribute name in source */ 83 84 dcl attdom_ptr ptr; /* ptr to attribute_domain structure */ 85 86 87 88 89 dcl 1 file aligned based (file_ptr), 90 2 i_ptr ptr, /* ptr to item containing relation name */ 91 2 name char (30), /* file name */ 92 2 type fixed bin, /* blocked or unblocked */ 93 /* type = 1 => unblocked, 94 type = 2 => blocked */ 95 2 ppb fixed bin, /* pages per block, if blocked */ 96 2 hbh fixed bin, /* hash bucket headers per block */ 97 2 block fixed bin, /* blocks per hash bucket headers */ 98 2 num_items fixed bin, /* nbr. items -- relations -- in file */ 99 2 default bit (1) unal, /* on => defined as default file, not by source */ 100 2 unused bit (35) unal, /* future flags */ 101 2 line_num fixed bin (24) ; /* line of file name in source */ 102 103 104 dcl file_ptr ptr; /* ptr to file structure */ 105 106 107 dcl 1 rel_index aligned based (index_ptr), 108 2 i_ptr ptr, /* ptr. to item containing index attr. name */ 109 2 rel_name char (32), /* name of relation being indexed */ 110 2 num_items fixed bin, /* nbr. items -- attributes -- indexed for a relation */ 111 2 unused bit (36) unal, /* future flags */ 112 2 line_num fixed bin (24) ; /* line of relation name in source */ 113 114 115 dcl index_ptr ptr; /* ptr to index structure */ 116 117 118 dcl 1 link aligned based (link_ptr), 119 2 parent_ptr ptr, /* ptr to foreign_key structure cont. parent rel. name */ 120 2 children_ptr ptr, /* ptr. to list of children names for this link */ 121 2 clust_fl bit (1) unal, /* ON => link is clustered in one file */ 122 2 pad bit (35) unal, 123 2 name char (32), /* name of this link */ 124 2 num_children fixed bin, /* number of children for this link's parent */ 125 2 line_num fixed bin (24) ; /* line of link name occurence in source */ 126 127 128 dcl link_ptr ptr; /* ptr to link structure */ 129 130 131 dcl 1 children aligned based (children_ptr), 132 2 next ptr, /* ptr to next in list */ 133 2 child_ptr ptr; /* ptr. to foreign_key struct. containing child rel. name */ 134 135 136 dcl children_ptr ptr; /* ptr to children structure */ 137 138 139 dcl 1 foreign_key aligned based (forkey_ptr), 140 2 i_ptr ptr, /* ptr to item list containing foreign key attributes */ 141 2 rel_name char (32), /* name of parent/child relation */ 142 2 num_items fixed bin, /* nbr of attributes defining this foreign key */ 143 2 unused bit (36) unal, /* future flags */ 144 2 line_num fixed bin (24) ; /* line of relation occurence in source */ 145 146 147 dcl forkey_ptr ptr; /* ptr to foreign_key structure */ 148 149 150 dcl 1 item aligned based (item_ptr), 151 2 next ptr, /* ptr to next item in the list */ 152 2 name char (32), /* name of item -- relation name or attribute name */ 153 2 unused bit (36) unal, /* future flags */ 154 2 line_num fixed bin (24) ; /* line of item occurence in source */ 155 156 157 dcl item_ptr ptr; /* ptr to item structure */ 158 159 160 declare 1 delete_name aligned based (delete_name_ptr), /* overlay for undefine parse information */ 161 2 overlay char (32), /* name portion */ 162 2 unused bit (36) unal, /* future flags */ 163 2 line_num fixed bin (24) ; /* line number of name occurence in source */ 164 165 declare delete_name_ptr ptr ; 166 167 /* scanner variables */ 168 169 declare token char (mrds_data_$max_string_size) varying 170 based (accum_token_ptr) ; /* temp store for accumulating the token */ 171 declare accum_token_ptr ptr internal static ; /* pointer to allocated accumulator store */ 172 declare mrds_data_$max_string_size fixed bin (35) external ; /* max token size in chars */ 173 declare mrds_data_$max_line_size fixed bin (35) ext ; /* max output listing line size */ 174 declare token_length fixed binary (24) ; /* current length of token */ 175 declare output_text char (mrds_data_$max_line_size) varying 176 based (output_text_ptr) ; /* body of text for this line in output listing */ 177 declare output_text_ptr ptr internal static ; /* pointer to allocated output line storage */ 178 declare fixup_token char (token_length) based ; /* saved fixed up version of token */ 179 180 /* semantic variables */ 181 182 declare source_size fixed bin (35) ; /* length of source char string for any_to_any */ 183 declare string_source_ptr ptr ; /* pointer to source for any_to_any conversion */ 184 declare string_source char (source_size) based (string_source_ptr) ; /* storage for expanded string constant */ 185 186 /* link handler variable */ 187 188 declare dom_list_ptr ptr ; /* pointer to domain list element */ 189 declare 1 dom_list based (dom_list_ptr), /* element of parent attr domain ptr list */ 190 2 next ptr, /* pointer to next in order on list */ 191 2 attr_name char (32) aligned, /* parent attr's name */ 192 2 dom_info_ptr ptr ; /* parent attr's domain ptr */ 193 194 /* END INCLUDE FILE mrds_rst_parse_info.incl.pl1 */ 195