1 /* BEGIN INCLUDE FILE -- abs_io_expand.incl.pl1 -- 07/07/80  S. Herbst */
 2 
 3 /* Added label_search_values 10/06/82 S. Herbst */
 4 /* Added next_begin_pos 04/29/83 S. Herbst */
 5 /* Added trace_lines.by_control_arg 03/20/84 S. Herbst */
 6 
 7 
 8 dcl expand_data_ptr ptr;
 9                                                             /* In comments, (Input), (Output) and (I/O) refer
10                                                                to how abs_io_expand_ sees the item. */
11 dcl 1 expand_data aligned based (expand_data_ptr),
12    2 version fixed bin,                                     /* = 1 */
13    2 abs_data_ptr ptr,                                      /* ptr back to abs_data for this invocation of ec */
14    2 expand_data_ptr ptr,                                   /* ptr to data maintained by abs_io_expand_ */
15    2 next_expand_data_ptr ptr,                              /* ptr to this structure for next &proc or &fcn */
16    2 last_expand_data_ptr ptr,                              /* ptr to this structure for outer proc or fcn */
17    2 area_ptr ptr,                                          /* ptr to area in which to allocate args */
18 
19    2 input_pos fixed bin (21),                              /* current character position in input file (I/O) */
20    2 caller_buffer_info,
21     3 caller_buffer_ptr ptr,                                /* caller's buffer for returned line (Input) */
22     3 caller_buffer_len fixed bin (21),                     /* character size of buffer (Input) */
23     3 caller_actual_len fixed bin (21),                     /* number of chars returned (Output) */
24    2 allocated_buffer_info,
25     3 allocated_ptr ptr,                                    /* ptr to expand_'s allocated rest-of-line (I/O) */
26     3 allocated_len fixed bin (21),                         /* length of rest-of-line (I/O) */
27     3 allocated_buffer_len fixed bin (21),                  /* original allocated size (Output) */
28 
29    2 trace_lines,                                           /* tracing info for command or input lines */
30     3 by_control_arg bit (1) unaligned,                     /* ON if trace mode was specified by ec control arg */
31     3 on bit (1) unaligned,                                 /* ON to trace at all */
32     3 expand fixed bin (3) unaligned,                       /* 1=unexpanded, 2=expanded, 3=all, 4=both */
33     3 pad1 bit (66) unaligned,                              /* pad to double word */
34     3 iocb ptr,                                             /* IOCB to put trace on */
35     3 prefix char (32) varying,                             /* prefix for &trace tracing, eg. "COMMAND: " */
36     3 pad2 bit (36),
37 
38    2 predicate_values,
39     3 is_absin bit (1),                                     /* &is_absin, ON if absentee (Input) */
40     3 is_af bit (1),                                        /* &is_af, ON if ec active function (Input) */
41     3 is_input bit (1),                                     /* &is_input_line, ON if input line */
42     3 pad bit (33),
43    2 first_loop_ptr ptr,                                    /* ptr to first iteration loop activation (I/O) */
44    2 first_block_ptr ptr,                                   /* ptr to first &do block (I/O) */
45 
46    2 label_search_values,
47     3 searching_for char (200),                             /* label being searched for ($skip) */
48     3 (next_begin_pos,                                      /* position of next &begin */
49        next_do_pos,                                         /* position of next &do */
50        next_end_pos,                                        /* position of next &end */
51        next_label_pos,                                      /* position of next &label */
52        next_quote_pos,                                      /* position of next &" */
53        next_comment_pos) fixed bin (21),                    /* position of next &- */
54 
55    2 expander_output,                                       /* returned by abs_io_expand_ after parsing */
56     3 this_statement,
57      4 pos fixed bin (21),                                  /* beginning of current (parsed) statement */
58      4 len fixed bin (21),                                  /* length of entire statement */
59      4 keyword_len fixed bin (21),                          /* length of just the keyword portion */
60      4 action fixed bin,                                    /* semantic number of this keyword */
61     3 semant_info,
62      4 semantics fixed bin,                                 /* additional information for the code that implements */
63      4 modifier fixed bin,                                  /* and more info for certain ones */
64      4 flag fixed bin,                                      /* what can I say? */
65     3 arg_info,
66      4 arg_ptr ptr,                                         /* ptr to single arg if keyword takes only one (Output) */
67      4 arg_len fixed bin (21),                              /* length of single arg (Output) */
68      4 parsed_args_ptr ptr,                                 /* points to parsed_args structure if >1 args (Output) */
69     3 next_statement like expand_data.this_statement,       /* next statement info (look-ahead) (Output) */
70     3 expanded_sw bit (1),                                  /* ON if expand_ had to expand label stmt (Output) */
71     3 error_msg char (168) aligned;                         /* diagnosis if abs_io_expand returns code ^= 0 */
72 
73 
74 dcl parsed_args_count fixed bin;
75 dcl parsed_args_ptr ptr;
76 
77 dcl 1 parsed_args aligned based (parsed_args_ptr),
78    2 count fixed bin,                                       /* number of arguments */
79    2 array (parsed_args_count refer (parsed_args.count)),
80     3 ptr ptr unaligned,                                    /* ptr to the argument */
81     3 len fixed bin (21),                                   /* length of the argument */
82     3 quote_count fixed bin,                                /* number of internal quote chars (for allocating &r) */
83     3 flags bit (36) aligned;                               /* reserved for specific types of args */
84 
85 dcl expand_data_version_2 fixed bin int static options (constant) init (2);
86 
87 /* END INCLUDE FILE abs_io_expand.incl.pl1 */