1 /*  START OF:       azm_va_args.incl.pl1                      *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */
 2 
 3 /* This is a structure for argument processing of virtual addresses (VAs) and its related arguments.
 4    These related arguments can be a an offset modifier EXP which can be a positive or negative
 5    octal number and a RANGE can be specified. Both EXP and RANGE are optional arguments. The VA
 6    must always be specified. These three args are non-positional on the request line but there
 7    is an implicit order among the three. The first non-control argument on the request line must be
 8    a VA. The second non-control argument on the request line can be a EXP or a RANGE. If it is a
 9    RANGE then an EXP cannot be specified. In other words, a EXP must follow a VA.
10 */
11 
12 /* Created: 22 MAY 84 by BLB */
13 
14 dcl 1 va_args                           aligned,
15                                                   /* fully resolved segment number of the virtual address  */
16       2 segno                           fixed bin (18) aligned,
17                                                   /* fully resolved offset of the virtual address  */
18       2 offset                          fixed bin(18) unaligned,
19                                                   /* offset modifier (+N, -N) of the virtual address  */
20       2 offset_modifier                 fixed bin(18),
21                                                   /* The range of the addr area specified  */
22       2 range                           fixed bin(18) unaligned,
23       2 va_switches                     unaligned,
24         3 valid_va                      bit (1) unaligned,  /* on if valid virtual address                    */
25         3 valid_modifier                bit (1) unaligned,  /* on if valid offset modifier                    */
26         3 valid_range                   bit (1) unaligned,  /* on if valid range                              */
27         3 modifier_before_indirect      bit(1) unaligned,  /* on if the offset modifier is specified */
28                                                             /* before indirection eg. A|B+10,*                */
29         3 va_pad                        bit (32) unaligned, /* must be zero                                   */
30       2 va_position                     aligned,            /* index into the argument list for:              */
31         3 va_idx                        fixed bin,          /* virtual address                                */
32         3 mod_idx                       fixed bin,          /* the offset modifier index                      */
33         3 range_idx                     fixed bin,          /* the range argument index                       */
34       2 resolved_va                     ptr,                /* The resolved virtual address                   */
35       2 ecode                           fixed bin(35),      /* error code                                     */
36       2 error_msg                       char(80) var,       /* error message                                  */
37       2 va_string                       char(256) var;      /* The complete virtual address after parsing thru the args. */
38 
39 dcl 1 va                                based (va_args_ptr) like va_args;
40 dcl va_args_ptr                         ptr;
41 
42 /*  END OF:         azm_va_args.incl.pl1                      *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */