Thanks to everyone for the relevant notes.
Thank you Philippe for your macro.
Mine follows (just for comparison and understanding) but I've preferred yours:

         MACRO                                  
&NAME    TBIT  &ACT,&VAR,&BIT                   
&NAME    LR    R14,&BIT                         
         SR    R15,R15                          
         SRDL  R14,3                            
         LA    R14,&VAR.(R14)                   
         SRL   R15,29                           
         AIF   ('&ACT' EQ 'OFF').OFF            
         IC    R15,=X'8040201008040201'(R15)    
         AIF   ('&ACT' EQ 'TEST').TEST          
         OI    0(R14),*-*                       
         EX    R15,*-4                          
         MEXIT                                  
.TEST    TM    0(R14),*-*                       
         EX    R15,*-4                          
         MEXIT                                  
.OFF     IC    R15,=X'7FBFDFEFF7FBFDFE'(R15)    
         B     N&SYSNDX                         
         NI    0(R14),*-*                       
N&SYSNDX EX    R15,*-4                          
         MEND                                   

Regards
João

-----Mensagem original-----
De: IBM Mainframe Assembler List <[email protected]> Em nome de 
Philippe Leite
Enviada em: quinta-feira, 20 de maio de 2021 15:18
Para: [email protected]
Assunto: Re: Macro to set a bit string

A little fix related to LLILF position:

         MACRO 
         TBIT  &ACTION,&ARRAY,&BIT 
         LCLC  &TBTIX 
&TBTIX   SETC  'TBT'.'&SYSNDX' 
         LR    14,&BIT 
         SRDL  14,3 
         SRL   15,29 
         LAY   1,&ARRAY 
         LA    1,0(14,1) 
         AIF   ('&ACTION' EQ 'ON').ACON 
         AIF   ('&ACTION' EQ 'OFF').ACOFF 
         AGO   .ERROR1 
.ACON    ANOP 
&TBTIX.O DS    0H 
         LLILF 14,X'00000080' 
         LTR   15,15 
         JZ    &TBTIX.R 
&TBTIX.L DS    0H 
         SRL   14,1 
         BCT   15,&TBTIX.L 
&TBTIX.R DS    0H 
         EX    14,&TBTIX.X 
         B     &TBTIX.F 
&TBTIX.X OI    0(1),0 
         AGO   .MEXIT 
.ACOFF   ANOP 
&TBTIX.N DS    0H 
         LLILF 14,X'FFFFFF7F' 
         LTR   15,15 
         JZ    &TBTIX.S 
&TBTIX.M DS    0H 
         SRL   14,1 
         BCT   15,&TBTIX.M 
&TBTIX.S DS    0H 
         EX    14,&TBTIX.Y 
         B     &TBTIX.F 
&TBTIX.Y NI    0(1),0 
         AGO   .MEXIT 
.ERROR1  ANOP 
         MNOTE 8,'*** ACTION PARAMETER INVALID' 
         AGO   .MEXIT 
.MEXIT   ANOP 
&TBTIX.F EQU   * 
         MEND 



Philippe Leite
z/OS System Programmer

Reply via email to