CLFI? LOCTR?
-- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 ________________________________________ From: IBM Mainframe Assembler List [[email protected]] on behalf of Jon Perryman [[email protected]] Sent: Monday, May 3, 2021 11:53 PM To: [email protected] Subject: Re: [PossibleSpam] Re: AREAD question AREAD is not recommended for Tony's situation. Instead, follow the standard assembler conventions and the code will be clean and readable for assembler. Here is how I would implement Tony's PERFORM_ON macro. Jon. PERFORM_ON (R3),BAD_VALUE=ERRNO_20000,BRTABLE=( INITAPI, 00 ACCEPT, 01 BIND, 02 CLOSE, 03 CONNECT, 04 FCNTL) 05 MACRO &NAME PERFORM_ON &ADDR,&BAD_VALUE=,BRTABLE= .* SAME AS PERFORM_ON &GOBAD SETC 'A&SYSNDX' AIF ('&BAD_VALUE' EQ '' ).NOBV &GOBAD SETC '&BAD_VALUE' .NOBV ANOP ST R15,R15_LAST Not sure why MACPARM L,R15,&ADDR TMLL R15,3 Valid 4 byte offset? JNZ &GOBAD Invalid, go abend CL R15,=A(D&SYSNDX-B&SYSNDX) < 0 or > branch table size? JH &GOBAD Invalid, go abend L R15,B&SYSNDX.(R15) BASR R14,R15 call function J D&SYSNDX A&SYSNDX DC X'0000' FORCE ABEND B&SYSNDX DS 0F &CNT SETA 1 .NEXT ANOP DC A(&BRTABLE(&CNT)) Branch table entry &CNT SETA &CNT+1 AIF (&CNT LT K'&BRTABLE).NEXT D&SYSNDX DS 0H MEND
