1 /* BEGIN include file fortran_storage.incl.pl1 */
 2 
 3 /* Created 82-09-21 by T. Oke (UNCA) */
 4 
 5 /* Modification History:
 6 
 7 Modified:  1 October 1982, TO - add pointer_count and pointer entries.
 8 Modified:  9 November 1982, TO - Move pointer_count, add common_link.
 9 */
10 
11 /* Definitions of the structures controlling the creation of and initialization
12    lists for fortran_storage_driver. */
13 
14 /* For VLA entries there may be a number of pointers, each of which points to a
15    single VLA entity within the VLA.  Each such pointer supplies an offset and
16    is stored by 'fortran_storage_'.
17 
18    For VLA COMMON, there is a pointer to the link in the linkage section.  The
19    unsnapped link (which is in the template linkage section) supplies an offset
20    to find the expression_word in the definition section, which offsets to the
21    type_pair, which supplies the initialization information. */
22 
23 dcl 1 create_entry based,                                   /* creation list entry */
24       2 location fixed bin (18) unsigned unaligned,         /* location of base */
25       2 flags unaligned structure,
26         3 auto bit (1) unaligned,                           /* automatic storage entry */
27         3 static bit (1) unaligned,                         /* static storage entry */
28         3 common bit (1) unaligned,                         /* common storage entry */
29         3 LA bit (1) unaligned,                             /* Large Array (255K) */
30         3 VLA bit (1) unaligned,                            /* Very Large Array (>255K) */
31         3 K256 bit (1) unaligned,                           /* alloc 256K segs */
32         3 init bit (1) unaligned,                           /* initialized */
33         3 pad bit (2) unaligned,                            /* FUTURE EXPANSION */
34         3 pointer_count fixed bin (9) unsigned unaligned,   /* number of pointers to fill in */
35       2 length fixed bin (24) aligned,                      /* number of words required */
36       2 next fixed bin (18) unsigned unaligned,             /* offset to next create entry */
37       2 name_length fixed bin (17) unaligned,               /* size of block name field */
38       2 common_link fixed bin (18) unsigned unaligned,      /* location of link if COMMON */
39 
40       2 block_name char (0 refer (create_entry.name_length)),
41       2 pointer_offsets (0 refer (create_entry.pointer_count)) aligned,
42         3 pad bit (12) unaligned,
43         3 offset fixed bin (24) unsigned unaligned;
44 
45 /* Pointers will be created for each VLA sub-entity, so the pointer_count field
46    indicates how many pointers follow the block_name. */
47 
48 
49 
50 
51 /* Initialization data.  The length and datum are bit items, to permit a wide
52    range of inputs.
53 
54    1. A 'repeat' of '0' signifies skipping of 'length' bits.
55    2. A 'length' of '0' signifies the last item of the list.
56 
57    COMMON, VLA's, and LA's, are presumed to start at the base pointer of their
58    particular storage section. */
59 
60 
61 dcl 1 create_init_entry based,
62       2 length fixed bin (35) aligned,            /* size of datum */
63       2 pad bit (6) unaligned,                    /* FUTURE EXPANSION */
64       2 repeat fixed bin (30) unsigned unaligned, /* number of times to repeat datum */
65       2 datum bit (0 refer (create_init_entry.length));
66 
67 
68 /* END include file fortran_storage.incl.pl1 */