Mark, You are coding a length (the 2) in the 2nd operand of your LH instruction...that 2 is being used by the machine as register 2. LH always loads two bytes.
Mike Shaw MVS/QuickRef Support Chisoft On Tue, Jun 4, 2024, 1:38 PM Mark Young <[email protected]> wrote: > Thanks for all the replies. See the code sample below. I'm getting stuck > trying to get the length for the next table entry into R8 so the BXLE > instruction loop the correct length. Let me know if I'm on the correct > path, or I'm in never never land. Also, the --->>> <<<--- is > where I think I'm getting stuck. > > TESTBXLE CSECT , > TESTBXLE AMODE 31 > TESTBXLE RMODE ANY > SAVE (14,12),,TESTBXLE*&SYSDATE*&SYSTIME > BALR R12,0 R12 - BASE REGISTER > USING *,R12 ESTABLISH ADDRESSABILITY > ST R13,SAVEAREA+4 SAVEAREA > LA R13,SAVEAREA POINTERS > * > CHKOPTS1 LA R7,TABLE1+4 ADDRESS OF FIRST ELEMENT > LH R8,TABLE1+2 LENGTH OF TABLE ENTRY > LA R9,TABLE1+2 ADDRESS OF BEGINNING OF TABLE > AH R9,TABLE1 CALC ADDR OF END OF TABLE > LOOP1 CLC 0(9,R7),=C'FFFFFFFFF' > BE FOUND ENTRY FOUND = RC=0 > --->>> LH R8,0(2,R7) <<<--- POINT TO LENGTH OF NEXT ENTRY > BXLE R7,R8,LOOP1 LOOPING UNTIL OPT FOUND > B NOTFND ENRTY NOT FOUND ? RC=8 > * > FOUND L R13,SAVEAREA+4 > RETURN (14,12),RC=0 > * > NOTFND L R13,SAVEAREA+4 > RETURN (14,12),RC=8 > * > PRINT NOGEN > YREGS > SAVEAREA DS 18F > TABLE1 DS 0F > DC XL2'008F' > DC XL2'000E',CL14'AAAAAAAAAAAAAA' > DC XL2'000F',CL15'BBBBBBBBBBBBBBB' > DC XL2'0011',CL17'CCCCCCCCCCCCCCCCC' > DC XL2'000D',CL13'DDDDDDDDDDDDD' > DC XL2'0017',CL23'EEEEEEEEEEEEEEEEEEEEEEE' > DC XL2'0009',CL9'FFFFFFFFF' > DC XL2'0013',CL19'GGGGGGGGGGGGGGGGGGG' > DC XL2'0019',CL25'HHHHHHHHHHHHHHHHHHHHHHHHH' > DC XL2'0008',CL8'IIIIIIII' > END TESTBXLE > > > Thanks, > Mark. >
