"IBM Mainframe Assembler List" <[email protected]> wrote on
02/24/2022 11:49:34 AM:
> Why not dispense with MODCB and just modify the RPL yourself using
> IFGRPL DSECT?
Well, it turns out that modifying the IKQRPL DSECT directly saved
2,224 bytes on my program size -- and my program still works (at least, as
much of it as I have tested up to this point). What I previously posted
was replaced by the following, which is 42 source lines shorter. Feel
free to point out any additional improvements that might be made. Thanks,
all.
L R8,FILERPL GET RPL ADDRESS
USING IKQRPL,R8 TEMPORARY ADDRESSABILITY
IF RQARG2,EQ,C'N',OR,RQARG2,EQ,C'P' IF NEXT/PREV
OI RPLOPT1,RPLSEQ SET SEQUENTIAL PROCESSING
NI RPLOPT1,X'FF'-RPLDIR NOT DIRECT PROCESSING
IF RQARG2,EQ,C'P' IF PREV
OI RPLOPT2,RPLBWD SET BACKWARD PROCESSING
ELSE ELSE NEXT
NI RPLOPT2,X'FF'-RPLBWD SET FORWARD PROCESSING
ENDIF ENDIF
ELSE BY KEY/RBA
NI RPLOPT2,X'FF'-RPLBWD SET FORWARD PROCESSING
IF RQARG2,EQ,C'R' BY RBA
NI RPLOPT1,X'FF'-RPLKEY NOT KEY PROCESSING
OI RPLOPT1,RPLADR SET ADR PROCESSING
ELSE BY KEY
OI RPLOPT1,RPLKEY SET KEY PROCESSING
NI RPLOPT1,X'FF'-RPLADR NOT ADR PROCESSING
IF RQARG3,EQ,C'G' IF GTEQ
OI RPLOPT2,RPLKGE SET KGE PROCESSING
NI RPLOPT2,X'FF'-RPLGEN NOT GENERIC PROCESSING
ELSE ELSE EQUAL
NI RPLOPT2,X'FF'-RPLKGE NOT KGE PROCESSING
NI RPLOPT2,X'FF'-RPLGEN NOT GENERIC PROCESSING
ENDIF ENDIF
ENDIF ENDIF
IF FILEOPT,(ON,TM),FILESEQU IF ACCESS IS SEQUENTIAL
OI RPLOPT1,RPLSEQ SET SEQ PROCESSING
NI RPLOPT1,X'FF'-RPLDIR NOT DIR PROCESSING
ELSE ACCESS IS DIRECT
NI RPLOPT1,X'FF'-RPLSEQ NOT SEQ PROCESSING
OI RPLOPT1,RPLDIR SET DIR PROCESSING
ENDIF ENDIF
ENDIF ENDIF
IF FILEOPT,(ON,TM),FILEUPDT IF OPENED FOR UPDATE
OI RPLOPT1,RPLUPD SET UPD PROCESSING
NI RPLOPT2,X'FF'-RPLNSP NOT NSP PROCESSING
NI RPLOPT2,X'FF'-RPLNUP NOT NUP PROCESSING
ELSE ELSE NOT UPDATE
NI RPLOPT1,X'FF'-RPLUPD NOT UPD PROCESSING
IF FILEOPT,(ON,TM),FILESEQU IF ACCESS IS SEQUENTIAL
NI RPLOPT2,X'FF'-RPLNSP NOT NSP PROCESSING
OI RPLOPT2,RPLNUP SET NUP PROCESSING
ELSE ELSE ACCESS IS DIRECT
OI RPLOPT2,RPLNSP SET NSP PROCESSING
NI RPLOPT2,X'FF'-RPLNUP NOT NUP PROCESSING
ENDIF ENDIF
ENDIF ENDIF
DROP R8 REMOVE ADDRESSABILITY
Sincerely,
Dave Clark
--
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300
Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio 45439 USA
(937) 294-5331
*********************************************************************************************
This email message and any attachments is for use only by the named
addressee(s) and may contain confidential, privileged and/or proprietary
information. If you have received this message in error, please
immediately notify the sender and delete and destroy the message and all
copies. All unauthorized direct or indirect use or disclosure of this
message is strictly prohibited. No right to confidentiality or privilege
is waived or lost by any error in transmission.
*********************************************************************************************