John McKown wrote:

>As an example of (1), I quite often do:

>        CALL PROGRAM,(PARM1,PARM2),VL
>        CHI  R15,=Y(MAXENTRIES)
>        JH   INVALID_RC
>        B    *+4(R15)
>START   J    RC0
>        J    RC4
>        J    RC8
>MAXENTRIES EQU *-START/4

There's no need for a based branch: just write

        JH   INVALID_RC  (as before)
        LARL  0,START
        AR   15,0
        BR   15
START   J    RC0
        J    RC4
        J    RC8

You can check that the return code is a multiple of 4 with a TMLL
instruction:

        TMLL  15,B'0011'
        JNZ     BadRetCode

Reply via email to