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