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