Not quite. Using array + total length in the odd register would give you an extra iteration with garbage. Normal practice is to point it at the last entry, but since the entries are variable length, just cut it back by 1 and all will be cool.
-- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר ________________________________________ From: IBM Mainframe Assembler List <[email protected]> on behalf of [email protected] <[email protected]> Sent: Wednesday, May 29, 2024 6:43 PM To: [email protected] Subject: Re: BXLE usage assistance The BXLE will work in this case, it is clearly explained in the Principles of Operation manual. End the loop with BXLE R1,R3,LOOP R3 must be an even register, then R3 shall hold the increment and R3+1 the compare value. Before the LOOP set R3+1 = array + total length, and R1 = start of first entry (the length field). Before the end of LOOP set R3 = the entry length The BXLE will then update R1 with the entry length and point to the next entry, and branch back to LOOP. It will fall thru when the content of R1 reaches the content of R3+1. Gunnar -----Original Message----- From: IBM Mainframe Assembler List <[email protected]> On Behalf Of Mark Sent: Wednesday, May 29, 2024 9:03 PM To: [email protected] Subject: BXLE usage assistance Hello, I'm writing an exit where I have to scan through an array of variable length entries in a table where the format is as below (all the entires are readable characters) First 2 bytes = total length of array in hex then 2 bytes for length of first entry in hex First Entry in table 2 bytes for length of 2nd entry in hex 2nd entry in table 2 bytes for length of 3rd entry in hex 3rd entry in table. repeats until end of array. I'm thinking a BXLE will work, but getting stuck on exactly how to code it. any help is greatly appriciated. Thanks, Mark. .
