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