1 /* ====== BEGIN INCLUDE SEGMENT         apl_operator_table_.incl.pl1 ============================== */
 2 
 3 /* this is the structure of the data base apl_operator_table_, as seen by the apl_lex_ module  */
 4 /* 6/18/73, DAM */
 5 
 6 dcl 1 apl_operator_table_$apl_operator_table_ external static aligned,
 7     2 op_index (0 : (511)  /* or so */  ) fixed bin;        /* indexed by char code or pseudo char code */
 8 
 9 
10 dcl 1 apl_operator_table_$operator_bead_table external static aligned,          /* table of beads, indexed by op_index */
11     2 operator_bead_table(0 : 1000 /* or so */ ) like operator_bead;
12 
13 
14 dcl   apl_operator_table_$inner_product_table external static aligned,          /* hundreds of beads for all possible
15                                                                                    inner products */
16     1 the_inner_product_table aligned based(addr(apl_operator_table_$inner_product_table)),
17     2 inner_product_max_code fixed bin,                     /* max index allowed in this table (both dimensions, its square ) */
18     2 inner_product_table (0 : the_inner_product_table.inner_product_max_code,
19                            0 : the_inner_product_table.inner_product_max_code) like operator_bead;
20 
21 
22 /*** here are some dummy declarations which are just used to avoid using addrel.
23      they are the declarations showing how several related operator beads are grouped together
24      in operator_bead_table ***/
25 
26 /* scalar operator allowing reduction and inner and outer product */
27 
28 dcl 1 scalar_op based aligned,
29      2 first_operator_bead like operator_bead,              /* operator by itself */
30      2 slash_operator_bead like operator_bead,              /* simple reduction */
31      2 slash_hyphen_operator_bead like operator_bead,                 /* reduction on first dimension */
32      2 backslash_operator_bead like operator_bead,                    /* scan */
33      2 backslash_hyphen_operator_bead like operator_bead,   /* scan on first dimension */
34      2 outer_product_operator_bead like operator_bead;                /* degree.OP */
35           /* inner product stuff is elsewhere, in inner_product_table */
36 
37 
38 /* mixed operator that allows brackets */
39 
40 dcl 1 mixed_op based aligned,
41      2 first_operator_bead like operator_bead,              /* with no brackets */
42      2 brackets_operator_bead like operator_bead;           /* OP[dim] form. */
43 
44 
45 /* system variable that may be meaningfully assigned into */
46 /* this includes Quad and QuadQuote as well as QuadIO, SDelta, TDelta, etc. */
47 
48 dcl 1 system_var_op based aligned,
49      2 reference_to like operator_bead,           /* op bead for referring to it */
50      2 assignment_to like operator_bead,                    /* op bead for assigning into it */
51      2 subscripted_assignment_to like operator_bead;        /* op bead for QuadLX[n] -^H<- m, and things like that */
52                                                             /* only present if allow_subscripted_assignment bit is on */
53 
54 /* ------ END INCLUDE SEGMENT           apl_operator_table_.incl.pl1 ------------------------------ */