Thanks Peter,

I tested the program with your suggested updates and it worked. I tried all
the entries in the table and it worked for all of them.
Thanks again for your help. Very much appreciated.

Thanks,
Mark.
.

On Wed, Jun 5, 2024 at 3:42 AM Peter Vels <[email protected]> wrote:

> Hi Mark,
>
> Try this:
>
> <snip>
> CHKOPTS1 LA    R7,TABLE1+4             ADDRESS OF FIRST ELEMENT
>          LH    R8,TABLE1+2             LENGTH OF TABLE ENTRY
>          LR    R6,R8                   SAVE R8 FOR LATER
>          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'
>          JE    FOUND                   ENTRY FOUND = RC=0
> * --->>>   LH    R8,0(2,R7)  <<<---      POINT TO LENGTH OF NEXT ENTRY
>          LR    R8,R6                   RESTORE R8
>          LH    R6,0(R8,R7)             PUT THE NEXT LENGTH INTO R6
>          LA    R7,2(R7)                SKIP OVER THE LENGTH FIELD
>          BXLE  R7,R8,LOOP1             LOOPING UNTIL OPT FOUND
> <snip>
>
> I don't like that I used an extra register, R6, so I'm hoping someone can
> improve it.
>
> Peter
>
> On Wed, 5 Jun 2024 at 03:58, Mike Shaw <[email protected]> wrote:
>
> > 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.
> > >
> >
>

Reply via email to