I don't object to using the length attribute this way, but with another
macro, you can avoid that.  We have a set of macros that define, test, set,
or clear flags very easily, but use a definition macro works like so:
&name @FLAG &value
&name._A EQU *-1
&name._V EQU &value

The other macros look like (e.g.):
  @SETFLAG FLAGX
and generate:
 OI    FLAGX_A,FLAGX_V

@CLRFLAG would produce NI    FLAGX_A,255-FLAG_V (of course).
You still have to code a DC B or something before the @FLAG macros,
labelled or not.  So, otherwise it works the same as using the length
attribute.

There are slight pros & cons to each, so I guess it comes down to
preference or possibly local standards.

sas



On Wed, Aug 16, 2023 at 10:08 AM Dave Clark <[email protected]>
wrote:

> "IBM Mainframe Assembler List" <[email protected]> wrote on
> 08/16/2023 10:05:25 AM:
> > I can see that point.
>
>
>         So, now my three macros follow this pattern -- pending further
> recommendations.  Thanks.
>
>          MACRO
> &LABEL   TF    &FLAG,&BAD              TEST FLAG BIT(S)
>          AIF   (T'&BAD EQ 'O').GOOD
>          MNOTE 12,'TOO MANY OPERANDS SPECIFIED'
>          MEXIT
> .GOOD    AIF   (T'&FLAG NE 'O').BEGIN
>          MNOTE 12,'AN OPERAND IS REQUIRED'
>          MEXIT
> .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> .* This is a simple macro to make it easier to accurately manipulate *
> .* a bit flag definition just by  the equated bit mask name -- i.e., *
> .* the macro does not need to know  the name of the actual flag byte *
> .* nor the flag byte even have to have a name at all.                *
> .*                                                                   *
> .* As presented by the late Dr. John Ehrman of IBM at SHARE.         *
> .*                                                                   *
> .* The idea is,  you can have a  definition similar to either of the *
> .* following.  The actual flag byte does not need a name but you can *
> .* specify one if you want it  to  show up in the cross-reference or *
> .* if you want the equated  bit  masks  to follow the flag byte def- *
> .* inition.   The equated bit masks then take on the location of the *
> .* flag byte and the length of  the  equated  bit mask is set to the *
> .* bit mask, itself.                                                 *
> .*                                                                   *
> .* FLAG1    EQU   *,B'00000001'                                      *
> .* FLAG2    EQU   *,B'00000010'                                      *
> .* FLAG3    EQU   *,B'00000100'                                      *
> .* FLAG4    EQU   *,B'00001000'                                      *
> .* FLAG5    EQU   *,B'00010000'                                      *
> .* FLAG6    EQU   *,B'00100000'                                      *
> .* FLAG7    EQU   *,B'01000000'                                      *
> .* FLAG8    EQU   *,B'10000000'                                      *
> .*          DS    BL1           MY FLAG BYTE                         *
> .*                                                                   *
> .* MYFLAG   DS    BL1           MY FLAG BYTE                         *
> .* FLAG1    EQU   MYFLAG,B'00000001'                                 *
> .* FLAG2    EQU   MYFLAG,B'00000010'                                 *
> .* FLAG3    EQU   MYFLAG,B'00000100'                                 *
> .* FLAG4    EQU   MYFLAG,B'00001000'                                 *
> .* FLAG5    EQU   MYFLAG,B'00010000'                                 *
> .* FLAG6    EQU   MYFLAG,B'00100000'                                 *
> .* FLAG7    EQU   MYFLAG,B'01000000'                                 *
> .* FLAG8    EQU   MYFLAG,B'10000000'                                 *
> .*                                                                   *
> .* NOTE:  See also the SF macro and the CF macro.                    *
> .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> .BEGIN   ANOP
> &LABEL   TM    &FLAG,L'&FLAG           TEST FLAG BIT(s)
>          MEND
>
> Sincerely,
>
> Dave Clark
> --
> int.ext: 91078
> direct: (937) 531-6378
> home: (937) 751-3300
>
> Winsupply Group Services
> 3110 Kettering Boulevard
> Dayton, Ohio  45439  USA
> (937) 294-5331
>
>
>
>
>
>
> *********************************************************************************************
> This email message and any attachments is for use only by the named
> addressee(s) and may contain confidential, privileged and/or proprietary
> information. If you have received this message in error, please
> immediately notify the sender and delete and destroy the message and all
> copies. All unauthorized direct or indirect use or disclosure of this
> message is strictly prohibited. No right to confidentiality or privilege
> is waived or lost by any error in transmission.
>
> *********************************************************************************************
>

Reply via email to