Use the IBM-supplied IEABRCX copy member (Found in SYS1.MACLIB; IEABRCX DEFINE, 
then IEABRCX ENABLE) to convert base-reg branches to relative branches.

I also recommend using SYSSTATE ARCHLVL=2 or even 3 if your hardware is current 
enough.  YMMV.

Be careful using BAKR/PR - you must use them in pairs, and the default number 
of linkage stack levels available by default is (I think) less than 20.

LEV0  other code here
LEV1  BAKR . . . 
. . . . .
LEV2  BAKR . . . 
. . . . .
          PR
. . . . .
          PR
LEV0 continues here 

HTH

Peter

-----Original Message-----
From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of 
Chris P Fried
Sent: Wednesday, March 15, 2023 2:48 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Routine using TIMEUSED called Statically gets different results

EXTERNAL EMAIL

Regarding: 

AGAIN  TIMEUSED  ...  
     JNZ  Again

Versus
AGAIN TIMEUSED .. 
     CFI  R15,8
     BE AGAIN 


I used CFI because it is an immediate instruction.    That instruction is not 
going to need the literal pool.  I also used that instruction because it is my 
understanding that TIMEUSED set  the Return Code.   I used the CFI to trigger a 
condition code that could be checked.   Looking at the expansion of the 
TIMEUSED macro below, will the condition code set by the LTR at address 1E 
still be in effect?    Is that why you suggested  just JNZ after the TIMEUSED 
macro?


I created the base register out of habit.    That is what I was taught to do 30 
plus years ago.  However, in this situation it is required. 

The macro uses a branch with offset. 

                                     14 AGAIN  TIMEUSED  STORADR=(R2),L
                                     15+*        MACDATE 04/06/2005    
00000A                               17+AGAIN    DS    0H              
00000A 58E0 0010            00010    18+         L     14,16(0,0)      
00000E 58EE 0304            00304    19+         L     14,772(14,0)    
000012 58EE 00F4            000F4    20+         L     14,244(14,0)    
000016 4100 0001            00001    21+         LA    0,1             
00001A B218 E000      00000          22+         PC    0(14)           
00001E 12FF                          23+         LTR   15,15           
000020 0000 0000            00000    24+         BNZ   *+8             
** ASMA307E No active USING for operand *+8                            
** ASMA435I Record 671 in SYS1.MACLIB(TIMEUSED) on volume: VTMVSC      
000024 9001 2000            00000    25+         STM   0,1,0(R2)       




I am very interested in the BAKR and PR instructions.    I am seen them 
mentioned but I have not researched them. 

However when I ran a version of the program using BAKR and PR, the program 
abended with S0E0  Reason=30 

Which means:  "A stacking instruction was issued when the linkage stack was 
full."


Is it possible that this error occurs because the TIMEUSED macro uses the PC 
instruction? 
--


This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to