If you are looking for a more efficient way look at JXLE instruction
On Sat, Oct 3, 2015 at 9:03 AM, Andreas F. Geissbuehler < [email protected]> wrote: > Below, an improvement (i) and a mandatory (m) change suggestion: > >> >> Date: Fri, 2 Oct 2015 13:57:34 -0400 >> From: Scott Ford <[email protected]> >> Subject: Branch table >> >> All: >> >> I am building a branch table like this: >> >> > BTAB DSECT > BADD DS AL4 or Y(..) i Routine address > BFUN DS CL10 Function code > BNXT DS 0AL4 or EQU * i (Align to) Next item > BLEN EQU *-BADD One item length > PROG CSECT , (or LOCTR) > * --------------------------------------------------- > FUNC DS CL(L'BFUN) Input > > FUNCTBL DS 0X i Table > DC AL4(INIT_DSP),CL(L'BFUN)'INIT' > DC AL4(KILL_DSP),CL(L'BFUN)'KILL' > DS 0X i Align end > TBLENT EQU (*-FUNCTBL)/BLEN > * --------------------------------------------------- > LA R4,FUNCTBL Start of table > USING BTAB,R4 > LHI R5,TBLENT Item count > > LOOPTBL DS 0H > CLC FUNC,BFUN This one? > JE FOUND_IT Yes - handle > LA R5,BNXT m incr scan ptr !! > JCT R5,LOOPTBL No - try next > J ENDOFDAYS Not found > > FOUND_IT DS 0H > L R15,BADD Routine address > DROP R4 > BASR R14,R15 Execute routine > * etc... > * --------------------------------------------------- > > If you hae many table entries I'd use Y(..) instead of AL4(..) > > Andreas Geissbuehler >
