1 /* BEGIN INCLUDE FILE mrds_attribute_list.incl.pl1 - - 81-01-14 Jim Gray */
 2 
 3 /* HISTORY:
 4 
 5    81-01-14 Jim Gray : originally created for the dsl_$get_attribute_list interface.
 6 
 7 */
 8 
 9 /* DESCRIPTION:
10 
11    For a giving database opening via a model or submodel view,
12    this structure contains attribute information for a particular relation.
13    The number of attributes in this model/submodel view of the relation,
14    and the names in both the model and submodel are given
15    (these will be the same if opened with a model view)
16    The name of the domain for each attribute, and the descriptor
17    of the users view of the data type is given, as well as whether the attribute
18    can be used as an indexed attribute.
19 
20    Access information is also returned for various versions of MRDS security, as follows:
21 
22    system_acl entries refers strictly to "rew" type multics acl's.
23    for version 3 access info, attr system_acls are the same as the relation acls,
24    unless the attribute is inverted, in which case it is the acl
25    of the attribute as it appears under the invert_dir in the database.
26 
27    mrds_access entries are version dependent, version 3 databases
28    with mrds_list/set_delete_acl commands used a mrds specific access
29    set of modes of retreive-store-modify-delete.
30    version 4 databases released in MR8 had no mrds specific
31    access, but used system acl's of "rew".
32    version 4 databases for MR9 mrds using submodel security have
33    mrds specific access mode of append/delete_tuple for relations,
34    and read/modify_attr for attributes.
35 
36    effective_access entries use the same units as mrds_access.
37    it is the logical result of applying both mrds and system access,
38    and coming up with a user effective mode of access to the relation/attribute.
39    for version 3 databases, the effective access includes
40    in the relation effective access, the effect that access of inverted attributes
41    in the invert_dir may have.
42 
43 */
44 
45 
46 declare 1 mrds_attribute_list aligned based (mrds_attribute_list_ptr),
47         2 version fixed bin,                                /* version number of this structure */
48         2 access_info_version fixed bin,                    /* version of mrds access modes
49                                                                3 => version 3 db with r-s-m-d access,
50                                                                4 => version 4 MR8 db with r-e-w access,
51                                                                5 => version 4 MR9 db with relation a-d, and attr r-m modes
52                                                                (submodel security) */
53         2 num_attrs_in_view fixed bin,                      /* number of attributes in this view of the relation */
54         2 submodel_view bit (1) unal,                       /* ON => the opening was via a submodel */
55         2 mbz1 bit (35) unal,
56         2 attribute (mrds_attribute_list_num_attrs_init refer (mrds_attribute_list.num_attrs_in_view)),
57           3 model_name char (32),                           /* name of attribute in model */
58           3 submodel_name char (64),                        /* alias name of attribute in submodel, else model name */
59           3 domain_name char (32),                          /* name of the domain for this attribute */
60           3 user_data_type bit (36),                        /* standard multics data descriptor for storage format
61                                                                users view if -decode_dcl, else same as db descriptor */
62           3 system_acl char (8) varying,                    /* the system access from r-e-w modes */
63           3 mrds_access char (8) varying,                   /* version 3 => from r-s-m-d, 4 => from r-e-w, 5 => from r-m */
64           3 effective_access char (8) varying,              /* effect of system + mrds access, in mrds access units */
65           3 indexed bit (1) unal,                           /* ON => this is a secondary index attribute, or a key head */
66           3 mbz2 bit (35) unal ;
67 
68 
69 declare  mrds_attribute_list_num_attrs_init fixed bin ;
70 
71 declare  mrds_attribute_list_ptr ptr ;
72 
73 declare  mrds_attribute_list_structure_version fixed bin init (1) int static options (constant) ;
74 
75 /* END INCLUDE FILE mrds_attribute_list.incl.pl1 */