"IBM Mainframe Assembler List" <ASSEMBLER-LIST@LISTSERV.UGA.EDU> 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. 
*********************************************************************************************

Reply via email to