BR 14 will work as well as  J RESUME and is shorter.

Clearing R1 works as well as a separate flag, if you only need to test it in 
one place.

--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי
נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר

________________________________________
From: IBM Mainframe Assembler List <[email protected]> on behalf 
of Martin Trübner <[email protected]>
Sent: Thursday, May 9, 2024 8:37 AM
To: [email protected]
Subject: Re: Does the GET macro indicate EOF?

set the bit as suggested in a separate EOF routine.... if you use the BR
14 to end your EOF handling, you have a bit to test after the GET.

so it looks like this

GET_LOOP  DS 0H

    GET  DCB

RESUME DS 0H

    TM FLAG,BIT

    JO  REAL_EOF

SET_FLAG DS 0H

    OI  FLAG,BIT

    J   RESUME


DCB .... EODAD=SET_FLAG


that way you should be able to work with just one break point at label
RESUME . It comes there with FLAG set once EOF is reached, but also
every time after GET






On 09.05.24 14:18, David Eisenberg wrote:
>> What are you trying to do?<
> I'm trying to overcome a limitation in ASMIDF involving single-stepping 
> through code while debugging. That's the only reason I'm asking about this.
>
> As per the IBM documentation, ASMIDF's single-stepping process involves the 
> automatic placement and removal of breakpoints. To do accomplish that, ASMIDF 
> must predict the next executable instruction, so that it can set a breakpoint 
> on it. When the current instruction is a GET macro, ASMIDF doesn't have the 
> logic to dig out the EODAD and set a temporary breakpoint on that 
> instruction; it only sets the temporary breakpoint on the instruction 
> immediately following the GET.
>
> My GET code is in an external subroutine that is called by other 
> applications. Any developer who single-steps into that subroutine never gets 
> control back from ASMIDF, because the GET loop reads to EOF, and (because 
> there is no automatic breakpoint set on the EODAD) the program runs to 
> completion without stopping.
>
> The entire problem disappears if the EODAD is immediately after the GET, 
> because then the breakpoint will be set and honored in all cases. But if I do 
> it that way, then I have to know whether I reached that instruction because 
> it really is the EOF, or whether the GET returned a record.
>
> I just don't know how to dig what I need out of any control blocks, or 
> whether that information is available. Does the GET return anything I can 
> use? Maybe via R1? Or is there something in the DCB to tell me if I've 
> reached the EOF?
>
> David

Reply via email to