Specify REFR on the link-edit step:
 
' //LNKEDT  EXEC PGM=IEWL,                                   '
                                               
' //             PARM='NOLIST,XREF,LET,NCAL,RENT,REFR,REUS', '
 
CP
 

On 05/09/2019 22:48, Charles Mills wrote:
> And of course, specifying RENT does not make the code reentrant. It's a help. 
> It flags some violations, and that's a help, but it misses a lot, and does 
> not "do" anything to your code, unlike the RENT option in higher-level 
> languages. IBM macros are fond of the form
>
> BAL 1,*+8
> DC  A(0)
> ST  n,0(0,1)
>
> And while that is a violation and will lead to a S0C4 (generally) during 
> execution, the assembler RENT option will not flag it. (It also drives the 
> i-cache logic crazy and is a performance killer, but that is different topic.)
>
> Charles
>
>
> -----Original Message-----
> From: IBM Mainframe Discussion List [mailto:[email protected]] On 
> Behalf Of Jesse 1 Robinson
> Sent: Thursday, September 5, 2019 2:06 PM
> To: [email protected]
> Subject: Re: MPF Exit calling System REXX - S0C4 abend
>
> System exits in general need to be reentrant. You should add the RENT option 
> on the ASM step as well to make sure you don't have any violations, which 
> will likely lead to S0C4 in otherwise sound code. 
>
> -----Original Message-----
> From: IBM Mainframe Discussion List <[email protected]> On Behalf Of 
> Sebastian Welton
> Sent: Thursday, September 5, 2019 6:21 AM
> To: [email protected]
> Subject: (External):Re: MPF Exit calling System REXX - S0C4 abend
>
> Definitely, see below (formatting is probably stuffed I'm afraid), compiled 
> using the standard ASMAC found in PROCLIB (no overriding ASMAOPT or other 
> parameters) and link with RENT, INCLUDE(ASMAOBJ) and SETCODE AC(0). I have 
> now found out where the original came from and am doing further research on 
> it as well, thanks.
>
> Sebastian.
>
> GENMSGTR TITLE 'GENMSGTR'                                                 
> GENMSGTR CSECT                                                            
> GENMSGTR RMODE 31                                                         
> GENMSGTR AMODE ANY                                                        
> R0       EQU   0                       REGISTER 0                         
> R1       EQU   1                       REGISTER 1                         
> R2       EQU   2                       REGISTER 2                         
> R3       EQU   3                       REGISTER 3                         
> R4       EQU   4                       REGISTER 4                         
> R5       EQU   5                       REGISTER 5                         
> R6       EQU   6                       REGISTER 6                         
> R7       EQU   7                       REGISTER 7                         
> R8       EQU   8                       REGISTER 8                         
> R9       EQU   9                       REGISTER 9                         
> R10      EQU   10                      REGISTER 10                        
> R11      EQU   11                      REGISTER 11                        
> R12      EQU   12                      REGISTER 12                        
> R13      EQU   13                      REGISTER 13                        
> R14      EQU   14                      REGISTER 14                        
> R15      EQU   15                      REGISTER 15                        
>          STM   R14,R12,12(R13)         SAVE CALLERS REGS                  
>          USING GENMSGTR,R12            ADDRESSABILITY                     
>          LR    R12,R15                 SET BASE ADDRESS                   
>          LR    R2,R1                   SAVE PARAMETER REGISTER            
>          L     R1,=A(@DSECTE-@DSECT)   CALCULATE STORAGE LENGTH           
>          STORAGE OBTAIN,LENGTH=(R1)    GET SOME VS                  
>          ST    R1,8(,R13)              FORWARD POINTER              
>          ST    R13,4(,R1)              BACKWARD POINTER             
>          LR    R13,R1                  POINT TO SAVE AREA           
>          LR    R1,R2                   RESTORE PARAMETER REGISTER   
>          B     EYEBALLE                SKIP CONSTANTS               
> EYEBALL  DS    0H                                                   
>          DC    C'=====> GENMSGTR D=&SYSDATE T=&SYSTIME ROB ===='  
> EYEBALLE DS    0H                                                   
>          USING @DSECT,R13              ADDRESSABILITY               
>          SR    R11,R11                 CLEAR RETURN CODE            
> *                                                                   
>          L     R9,0(,R1)               POINT TO CTXT                
>          USING CTXT,R9                 ADDRESSABILITY               
>          L     R8,CTXTTXPN             WAS THERE A MESSAGE?         
>          LTR   R8,R8                   SINGLE OR FIRST LINE WTO?    
>          BNZ   RETURN                  NO - EXIT                    
>          L     R8,CTXTTXPJ             POINT TO MAJOR               
>          USING CTXTATTR,R8             ADDRESSABILITY               
>          LA    R7,@ARGLST              POINT TO AXREXX ARG LIST     
>          USING AXRARGLST,R7            ADDRESSABILITY               
>          MVI   @ARGLST,X'00'                                        
>          MVC   @ARGLST+1(AXRARGLST_LEN),@ARGLST                     
>          MVC   AXRARGLSTID,=A(AXRARGLSTACRO) MOVE IN EYECATCHER     
>          LA    R1,AXRARGLSTCURVER      VERSION 0                    
>          ST    R1,AXRARGLSTVER         SAVE VERSION                 
>          LA    R1,1                    SINGLE ARGUMENT              
>          STH   R1,AXRARGLSTNUMBER      SAVE NUMBER OF ARGUMENTS     
>          SLR   R1,R1                   CLEAR ERROR FLAG             
>          STH   R1,AXRARGLSTENTRYINERROR SAVE ERROR FLAG             
>          ST    R1,AXRARGLSTRSV2        SAVE RESERVED VALUE          
>          LA    R6,@ARG1                POINT TO ARGUMENT 1          
>          USING AXRARGENTRY,R6          ADDRESSABILITY               
>          MVI   @ARG1,X'00'                                          
>          MVC   @ARG1+1(AXRARGENTRY_LEN),@ARG1                       
>          SLR   R1,R1                   CLEAR ADDRESS HIGH           
>          ST    R1,AXRARGADDRHIGH       SAVE ADDRESS HIGH            
>          LA    R1,CTXTTMSG             POINT TO WTO                 
>          ST    R1,AXRARGADDRLOW        SAVE ADDRESS                      
>          LA    R1,L'CTXTTMSG           POINT TO LENGTH OF WTO            
>          ST    R1,AXRARGLENGTH         SAVE LENGTH                       
>          MVI   AXRARGTYPE,AXRARGTYPECHAR SET ARGUMENT TYPE TO CHAR       
>          OI    AXRARGINPUTFLGS1,AXRARGINPUT FLAG INPUT ARGUMENT          
>          AXREXX REQUEST=EXECUTE,                                       X 
>                SECURITY=BYAXRUSER,                                     X 
>                TSO=YES,                                                X 
>                SYNC=NO,                                                X 
>                NAME=VNAME,                                             X 
>                REXXARGS=@ARGLST,                                       X 
>                MF=(E,AXREXXL)          INITIATE SYSTEM REXX PGM          
>          LTR   R15,R15                 HOW DID WE DO?                    
>          BZ    RETURN                  GREAT!                            
>          ABEND 1,REASON=(R0)           ABEND REASON IS REXX REASON       
>          LA    R11,8                   SET BAD RETURN CODE               
> *                                                                        
> RETURN   DS    0H                                                        
>          LR    R1,R13                  POINT TO AREA TO BE FREED         
>          L     R13,4(,R13)             RSTR CALLING PROGS SAVE AREA      
>          L     R0,=A(@DSECTE-@DSECT)   GET STORAGE LENGTH                
>          STORAGE RELEASE,LENGTH=(R0),ADDR=(R1) FREE UP THE VS            
>          LR    R15,R11                 MOVE RETURN CODE TO R15           
>          L     R14,12(,R13)            RESTORE CALLERS R14               
>          LM    R0,R12,20(R13)          RESTORE CALLERS R0-R12            
>          BR    R14                     RETURN TO CALLER                       
>                                    
> *              STORAGE DEFINITIONS                                    *  
>          DS    0D                                                        
> VNAME    DC    CL8'GENMSGRX    NAME OF SYSTEM REXX PROGRAM        
> *                                                                        
>          LTORG ,                                                        
> *              DUMMY SECTIONS                                         * 
> @DSECT   DSECT                                                          
> @DSECTSA DS    18F                                                      
> *------*                                                                
> @ARGLST  DS    CL(AXRARGLST_LEN)      ARGLIST LENGTH                    
> @ARG1    DS    CL(AXRARGENTRY_LEN)    ARGENTRY LENGTH                   
> RC       DS    1F                                                       
> *------*                                                                
> @DSECTE  EQU   *                                                        
> *                                                                       
>          AXREXX  MF=(L,AXREXXL)                                         
> *                                                                       
>          AXRZARG DSECT=YES,AXRARGLST=YES,AXRARGENTRY=YES,AXRDIAG=YES    
> *                                                                       
>          IEZVX100                                                       
> *                                                                       
>          END                                                            
>
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO IBM-MAIN
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO IBM-MAIN
> .
>

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to