1 /* BEGIN INCLUDE FILE ... pascal_symbol_node.incl.pl1 */
  2 
  3 /****^  HISTORY COMMENTS:
  4   1) change(86-09-15,JMAthane), approve(86-09-15,MCR7525),
  5      audit(86-09-15,Martinson), install(86-11-12,MR12.0-1208):
  6      Added size_is_encoded field in header.
  7                                                    END HISTORY COMMENTS */
  8 
  9 /* Written January 1983 by Melanie Weaver */
 10 /* Added size_is_encoded field in header May 85. JMAthane */
 11 
 12      dcl     1 pascal_symbol_node_header aligned based,
 13                2 flags              unaligned,              /* indicate which pieces the node contains */
 14                  3 version_flag     bit (1) unaligned,      /* always "0"b for post-version II PL/I format */
 15                  3 aligned          bit (1) unaligned,
 16                  3 packed           bit (1) unaligned,
 17                  3 in_with_block    bit (1) unaligned,
 18                  3 name_next        bit (1) unaligned,
 19                  3 base_type_info   bit (1) unaligned,
 20                  3 address          bit (1) unaligned,
 21                  3 father_brother   bit (1) unaligned,
 22                  3 son_level        bit (1) unaligned,
 23                  3 father_type_successor bit (1) unaligned,
 24                  3 size             bit (1) unaligned,
 25                  3 offset           bit (1) unaligned,
 26                  3 subrange_limits  bit (1) unaligned,
 27                  3 array_info       bit (1) unaligned,
 28                  3 variant_info     bit (1) unaligned,
 29                  3 size_is_encoded  bit (1) unaligned,
 30                  3 pad              bit (2) unaligned,
 31                2 version            fixed bin (17) unaligned, /* version of this node format */
 32                2 type               fixed bin (17) unaligned, /* (extended) data type */
 33                2 type_offset        fixed bin (18) unsigned unaligned; /* rel ptr to type node */
 34 
 35      dcl     1 pascal_name_next     aligned based,
 36                2 name               fixed bin (18) unsigned unaligned, /* rel ptr to acc name */
 37                2 next_token         fixed bin (18) unsigned unaligned; /* rel ptr to next of same class */
 38 
 39      dcl     1 pascal_base_type_info aligned based,
 40                2 base_type          fixed bin (17) unaligned, /* type of type */
 41                2 base_type_offset   fixed bin (18) unsigned unaligned;
 42 
 43      dcl     1 pascal_address       aligned based,
 44                2 location           fixed bin (18) unsigned unaligned, /* location in storage class */
 45                2 class              fixed bin (6) unsigned unaligned, /* storage class */
 46                2 use_digit          bit (1) unaligned,
 47                2 units              bit (2) unaligned,      /* addressing units */
 48                2 offset_is_encoded  bit (1) unaligned,      /* "1"b if pascal_offset is encoded */
 49                2 pad                bit (8) unaligned;
 50 
 51      dcl     1 pascal_father_brother aligned based,
 52                2 father             fixed bin (18) unsigned unaligned, /* rel ptr to father node */
 53                2 brother            fixed bin (18) unsigned unaligned; /* rel ptr to brother node */
 54 
 55      dcl     1 pascal_son_level     aligned based,
 56                2 son                fixed bin (18) unsigned unaligned, /* rel ptr to son node */
 57                2 level              fixed bin (6) unsigned unaligned, /* record level; also enum. type elt. */
 58                2 pad                bit (12) unaligned;
 59 
 60      dcl     1 pascal_father_type_successor aligned based,
 61                2 father_type        fixed bin (17) unaligned,
 62                2 successor          fixed bin (18) unsigned unaligned;
 63 
 64      dcl     pascal_size            fixed bin (35) based;   /* precision, string size, etc. */
 65 
 66      dcl     pascal_offset          fixed bin (35) based;   /* offset from address */
 67 
 68      dcl     1 pascal_subrange_limits aligned based,
 69                2 flags              aligned,
 70                  3 lower_bound_is_encoded bit (1) unaligned,
 71                  3 upper_bound_is_encoded bit (1) unaligned,
 72                  3 pad              bit (34) unaligned,
 73                2 subrange_lower_bound
 74                                     fixed bin (35),
 75                2 subrange_upper_bound
 76                                     fixed bin (35);
 77 
 78      dcl     1 pascal_array_info    aligned based,          /* info about array subscripts */
 79                2 access_info        aligned,
 80                  3 ndims            fixed bin (6) unsigned unaligned, /* number of dimensions */
 81                  3 use_digit        fixed bin (1) unsigned unaligned, /* if "1"b and units are half words,
 82                                                                   units are really digits */
 83                  3 array_units      fixed bin (2) unsigned unaligned,
 84                  3 virtual_origin_is_encoded
 85                                     bit (1) unaligned,
 86                  3 pad              bit (26) unaligned,
 87                2 virtual_origin     fixed bin (35),
 88                2 bounds             (nd refer (pascal_array_info.access_info.ndims))
 89                                     aligned,
 90                  3 lower            fixed bin (35),
 91                  3 upper            fixed bin (35),
 92                  3 multiplier       fixed bin (35),
 93                  3 subscript_type   fixed bin (17) unaligned,
 94                  3 subscript_type_offset
 95                                     fixed bin (18) unsigned unaligned,
 96                  3 flags            aligned,
 97                    4 lower_is_encoded
 98                                     bit (1) unaligned,
 99                    4 upper_is_encoded
100                                     bit (1) unaligned,
101                    4 multiplier_is_encoded
102                                     bit (1) unaligned,
103                    4 pad            bit (33) unaligned;
104 
105      dcl     1 pascal_variant_info  aligned based,          /* info to locate a record's variants */
106                2 number_of_variants
107                                     fixed bin (17) unaligned,
108                2 pad                bit (18) unaligned,
109                2 first_value_in_set fixed bin (35) unaligned, /* value corresponding to the first bit in set stings  */
110                2 case               (nvariants refer
111                                     (pascal_variant_info.number_of_variants)),
112                  3 set_offset       fixed bin (18) unsigned unaligned, /* bit string specifies cases;
113                                                                    set's base type is this node's type */
114                  3 brother          fixed bin (18) unsigned unaligned; /* rel ptr to brother for this variant */
115 
116      dcl     1 pascal_encoded_value aligned based,          /* extended encoded value format */
117                2 code               bit (6) unaligned,      /* tells how to interpret the other fields */
118                2 (n1, n2)           bit (6) unaligned,
119                2 n3                 fixed bin (18) unsigned unaligned;
120 
121      dcl     nvariants              fixed bin (17);
122      dcl     nd                     fixed bin (6) unsigned;
123 
124 
125 
126 /* END INCLUDE FILE ... pascal_symbol_node.incl.pl1 */