Re: MPF Exit calling System REXX - S0C4 abend
> On Friday, September 6, 2019, 11:43:00 AM PDT, Peter Relson > wrote: > Does it need saying that you ought to have your own recovery and take your > own SVC Dump to meet your own diagnostic needs? MPF processing is also used for Netview message processing and has some basic abend recovery. That recovery will only allow a certain number of that specific abend before disabling your exit for that message. As for using system REXX in MPF, remember that REXX might not be compatible with all messages. For instance, messages produced by device recovery. I'm not familiar with system REXX internals so I can't say where the problems may occur. Also be aware that this is running on the SSI with inconsistent environment. Messages produced in a standard environment will probably work fine while the more obscure environments could fail for various reasons. In other words, you should test for all possible messages otherwise you run the risk of abends. Jon. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
Does it need saying that you ought to have your own recovery and take your own SVC Dump to meet your own diagnostic needs? >From what was presented, we know the following: Page fault occurred (Program check 11, resulting in 0C4-11) at 1ECDE102 At a time when the difference between register C and the error PSW was x'DA'. On a D7D710001000 instruction. While that is not in the "source", there is one in the expansion of AXREXX. Where the most recent branch before that was at 1ECDE05E The error is here LR1,=A(@DSECTE-@DSECT) CALCULATE STORAGE LENGTH ... @DSECTE EQU * * AXREXX MF=(L,AXREXXL) The STORAGE OBTAIN for dynamic storage does not cover the storage needed for the AXREXX list form. @DSECTE's equate needs to be after the AXREXX list form. Sometimes you're lucky and it doesn't blow up because you might be overwriting beyond what you obtained but staying in the same page. Actually, I consider that unlucky. Sometimes you go beyond the bounds of the page into a non-getmained page and it blows up. Peter Relson z/OS Core Technology Design -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
RENT will (sometimes) catch violations of refreshability; it does not catch violation of reentrancy other than (some) self modifying code. The OP's problem is a reentrancy violation[1] that the assembler does not and cannot catch. [1] Well, technically the two exits are different routines, but it's still a failure to serialize. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List on behalf of Jesse 1 Robinson Sent: Thursday, September 5, 2019 5:05 PM To: IBM-MAIN@LISTSERV.UA.EDU 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 On Behalf Of Sebastian Welton Sent: Thursday, September 5, 2019 6:21 AM To: IBM-MAIN@LISTSERV.UA.EDU 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,R12ADDRESSABILITY LRR12,R15 SET BASE ADDRESS LRR2,R1 SAVE PARAMETER REGISTER L R1,=A(@DSECTE-@DSECT) CALCULATE STORAGE LENGTH STORAGE OBTAIN,LENGTH=(R1)GET SOME VS STR1,8(,R13) FORWARD POINTER STR13,4(,R1) BACKWARD POINTER LRR13,R1 POINT TO SAVE AREA LRR1,R2 RESTORE PARAMETER REGISTER B EYEBALLESKIP CONSTANTS EYEBALL DS0H DCC'=> GENMSGTR D= T= ROB ' EYEBALLE DS0H USING @DSECT,R13 ADDRESSABILITY SRR11,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 LAR7,@ARGLST POINT TO AXREXX ARG LIST USING AXRARGLST,R7ADDRESSABILITY MVI @ARGLST,X'00' MVC @ARGLST+1(AXRARGLST_LEN),@ARGLST MVC AXRARGLSTID,=A(AXRARGLSTACRO) MOVE IN EYECATCHER LAR1,AXRARGLSTCURVER VERSION 0 STR1,AXRARGLSTVER SAVE VERSION LAR1,1SINGLE ARGUMENT STH R1,AXRARGLSTNUMBER SAVE NUMBER OF ARGUMENTS SLR R1,R1 CLEAR ERROR FLAG STH R1,AXRARGLSTENTRYINERROR SAVE ERROR FLAG STR1,AXRARGLSTRSV2SAVE RESERVED VALUE LAR6,@ARG1POINT TO ARGUMENT 1 USING AXRARGENTRY,R6 ADDRESSABILITY MVI @ARG1,X'00' MVC @ARG1+1(AXRARGENTRY_LEN),@ARG1 SLR R1,R1 CLEAR ADDRESS HIGH STR1,AXRARGADDRHIGH SAVE ADDRESS HIGH LAR1,CTXTTMSG POINT TO WTO STR1,AXRARGADDRLOWSAVE ADDRESS LAR1,L'CTXTTMSG POINT TO LENGTH OF WTO STR1,AXRARGLENGTH SAVE LENGTH MVI AXRARGTYPE,AXRARGTYPECHAR SET ARGUMENT TYPE TO CHAR OIAXRARGINPUTFLGS1,AXRARGINPUT FLAG INPUT ARGUMENT AXREXX REQUEST=EXECUTE, X SECURITY=BYAXRUSER, X TSO=
Re: MPF Exit calling System REXX - S0C4 abend
Well, to make up for that it does flag some things that are not reentrancy violations. Nobody's prefect. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List on behalf of Charles Mills Sent: Thursday, September 5, 2019 5:48 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: MPF Exit calling System REXX - S0C4 abend 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:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Jesse 1 Robinson Sent: Thursday, September 5, 2019 2:06 PM To: IBM-MAIN@LISTSERV.UA.EDU 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 On Behalf Of Sebastian Welton Sent: Thursday, September 5, 2019 6:21 AM To: IBM-MAIN@LISTSERV.UA.EDU 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,R12ADDRESSABILITY LRR12,R15 SET BASE ADDRESS LRR2,R1 SAVE PARAMETER REGISTER L R1,=A(@DSECTE-@DSECT) CALCULATE STORAGE LENGTH STORAGE OBTAIN,LENGTH=(R1)GET SOME VS STR1,8(,R13) FORWARD POINTER STR13,4(,R1) BACKWARD POINTER LRR13,R1 POINT TO SAVE AREA LRR1,R2 RESTORE PARAMETER REGISTER B EYEBALLESKIP CONSTANTS EYEBALL DS0H DCC'=> GENMSGTR D= T= ROB ' EYEBALLE DS0H USING @DSECT,R13 ADDRESSABILITY SRR11,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 LAR7,@ARGLST POINT TO AXREXX ARG LIST USING AXRARGLST,R7ADDRESSABILITY MVI @ARGLST,X'00' MVC @ARGLST+1(AXRARGLST_LEN),@ARGLST MVC AXRARGLSTID,=A(AXRARGLSTACRO) MOVE IN EYECATCHER LAR1,AXRARGLSTCURVER VERSION 0 STR1,AXRARGLSTVER SAVE VERSION LAR1,1SINGLE ARGUMENT STH R1,AXRARGLSTNUMBER SAVE NUMBER OF ARGUMENTS SLR R1,R1 CLEAR ERROR FLAG STH R1,AXRARGLSTENTRYINERROR SAVE ERROR FLAG STR1,AXRARGLSTRSV2SAVE RESERVED VALUE LAR6,@ARG1POINT TO ARGUMENT 1 USING AXRARGENTRY,R6 ADDRESSABILITY MVI @ARG1,X'00' MVC @ARG1+1(AXRARGENTRY_LEN),@ARG1 SLR R1,R1 CLEAR ADDRESS HIGH
Re: MPF Exit calling System REXX - S0C4 abend
> the PRIME DIRECTIVE is "Nothing shall ever change", In some alternate universe, perhaps. Some of the disruptive changes are even documented. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List on behalf of Steve Smith Sent: Thursday, September 5, 2019 8:46 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: MPF Exit calling System REXX - S0C4 abend Most popular IBM macros will produce better code than that if you specify SYSSTATE ARCHLVL=2 or better. It is unfortunate that isn't the default, but the PRIME DIRECTIVE is "Nothing shall ever change", lest someone reassembles their 1967 source, and something is different, no matter how trivial. It probably required the Board of Directors to sign-off on changing PUT & GET to allow AMODE 31 code to use them. sas On Thu, Sep 5, 2019 at 5:48 PM 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 -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
The code is not self-modifying, and the S0C4 information given plainly shows that's not the problem. You cannot get a PIC of 11 by self-modification. sas On Thu, Sep 5, 2019 at 11:37 PM Leonardo Vaz wrote: > Specifying RSECT instead of CSECT will make the section read-only, might > help catching something. > > Regards, > Leonardo Vaz > > -Original Message- > From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On > Behalf Of CM Poncelet > Sent: Thursday, September 05, 2019 8:43 PM > To: IBM-MAIN@LISTSERV.UA.EDU > Subject: Re: MPF Exit calling System REXX - S0C4 abend > > 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:IBM-MAIN@LISTSERV.UA.EDU] > On Behalf Of Jesse 1 Robinson > > Sent: Thursday, September 5, 2019 2:06 PM > > To: IBM-MAIN@LISTSERV.UA.EDU > > 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 On > Behalf Of Sebastian Welton > > Sent: Thursday, September 5, 2019 6:21 AM > > To: IBM-MAIN@LISTSERV.UA.EDU > > Subject: (External):Re: MPF Exit calling System REXX - S0C4 abend > > -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
Possible, but still this must run serialized, so both exits cannot run together and modify each other's view of the message. Kees. > -Original Message- > From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On > Behalf Of Sebastian Welton > Sent: 06 September, 2019 11:49 > To: IBM-MAIN@LISTSERV.UA.EDU > Subject: Re: MPF Exit calling System REXX - S0C4 abend > > For some reason, the message being trapped was also defined in EDGRMM with > the MNTMSG command which if I understand the manual correctly, updates the > message so presumably it must be intercepting the message at some point to > make the changes. > > Seb. > > -- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN For information, services and offers, please visit our web site: http://www.klm.com. This e-mail and any attachment may contain confidential and privileged material intended for the addressee only. If you are not the addressee, you are notified that no part of the e-mail or any attachment may be disclosed, copied or distributed, and that any other action related to this e-mail or attachment is strictly prohibited, and may be unlawful. If you have received this e-mail by error, please notify the sender immediately by return e-mail, and delete this message. Koninklijke Luchtvaart Maatschappij NV (KLM), its subsidiaries and/or its employees shall not be liable for the incorrect or incomplete transmission of this e-mail or any attachments, nor responsible for any delay in receipt. Koninklijke Luchtvaart Maatschappij N.V. (also known as KLM Royal Dutch Airlines) is registered in Amstelveen, The Netherlands, with registered number 33014286 -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
For some reason, the message being trapped was also defined in EDGRMM with the MNTMSG command which if I understand the manual correctly, updates the message so presumably it must be intercepting the message at some point to make the changes. Seb. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
Yes, and as s consequence, if he does not receive an 0C4, he will probably be clearing someone else's storage. however the relation with 'the other subsystem' is also interesting. Kees. > -Original Message- > From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On > Behalf Of Binyamin Dissen > Sent: 06 September, 2019 11:23 > To: IBM-MAIN@LISTSERV.UA.EDU > Subject: Re: MPF Exit calling System REXX - S0C4 abend > > Actually, you are incorrect. > > The code is modifying storage beyond its area. Depending on how storage is > set > up, it is possible that the area will be on a page that is resolvable or > not. > > On Fri, 6 Sep 2019 04:08:37 -0500 Sebastian Welton > wrote: > > :>Thanks to everyone who responded and although he tried out all the > options provided, nothing actually worked however it looks like it is > working now. The first step was to implement the original it was based > upon from the Redbook and that worked fine out of the box. I then looked > at what messages he was processing via MPF and saw a couple that looked > familiar as being used by another subsystem which also 'traps' messages. > Once I removed the startup of the STC and all references to it in PARMLIB > (IEFSSN in particular), no more abends occurred. So it basically wasn't > the fault of the code (apparently he has coded MPF exits before, just > wanted to try a different method and to use System REXX) but the > interaction with other subsystems. Personally I could have done this with > System Automation in a couple of minutes but this is a good learning curve > for both of us in particular during the investigation. Once again, many > thanks to everyone who took the time and effort to reply, it > was > much > :>appreciated and did help in furthering our education (particularly me.) > :> > :>Seb. > :> > :>-- > :>For IBM-MAIN subscribe / signoff / archive access instructions, > :>send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > > -- > Binyamin Dissen > http://www.dissensoftware.com > > Director, Dissen Software, Bar & Grill - Israel > > > Should you use the mailblocks package and expect a response from me, > you should preauthorize the dissensoftware.com domain. > > I very rarely bother responding to challenge/response systems, > especially those from irresponsible companies. > > -- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN For information, services and offers, please visit our web site: http://www.klm.com. This e-mail and any attachment may contain confidential and privileged material intended for the addressee only. If you are not the addressee, you are notified that no part of the e-mail or any attachment may be disclosed, copied or distributed, and that any other action related to this e-mail or attachment is strictly prohibited, and may be unlawful. If you have received this e-mail by error, please notify the sender immediately by return e-mail, and delete this message. Koninklijke Luchtvaart Maatschappij NV (KLM), its subsidiaries and/or its employees shall not be liable for the incorrect or incomplete transmission of this e-mail or any attachments, nor responsible for any delay in receipt. Koninklijke Luchtvaart Maatschappij N.V. (also known as KLM Royal Dutch Airlines) is registered in Amstelveen, The Netherlands, with registered number 33014286 -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
Interesting twist in the problem. Good to know how you eliminated the problem, but as a real sysprog I am curious what the cause of the problem was. How could the other subsystem interfere with the MPF exit? How does it 'trap' the message? It looks like it is not serialized with the MPF exit, so it could change things, while the MPF exit was working on it. Can you give a clue? Kees. > -Original Message- > From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On > Behalf Of Sebastian Welton > Sent: 06 September, 2019 11:09 > To: IBM-MAIN@LISTSERV.UA.EDU > Subject: Re: MPF Exit calling System REXX - S0C4 abend > > Thanks to everyone who responded and although he tried out all the options > provided, nothing actually worked however it looks like it is working now. > The first step was to implement the original it was based upon from the > Redbook and that worked fine out of the box. I then looked at what > messages he was processing via MPF and saw a couple that looked familiar > as being used by another subsystem which also 'traps' messages. Once I > removed the startup of the STC and all references to it in PARMLIB (IEFSSN > in particular), no more abends occurred. So it basically wasn't the fault > of the code (apparently he has coded MPF exits before, just wanted to try > a different method and to use System REXX) but the interaction with other > subsystems. Personally I could have done this with System Automation in a > couple of minutes but this is a good learning curve for both of us in > particular during the investigation. Once again, many thanks to everyone > who took the time and effort to reply, it was much appreciated and did > help in furthering our education (particularly me.) > > Seb. > > -- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN For information, services and offers, please visit our web site: http://www.klm.com. This e-mail and any attachment may contain confidential and privileged material intended for the addressee only. If you are not the addressee, you are notified that no part of the e-mail or any attachment may be disclosed, copied or distributed, and that any other action related to this e-mail or attachment is strictly prohibited, and may be unlawful. If you have received this e-mail by error, please notify the sender immediately by return e-mail, and delete this message. Koninklijke Luchtvaart Maatschappij NV (KLM), its subsidiaries and/or its employees shall not be liable for the incorrect or incomplete transmission of this e-mail or any attachments, nor responsible for any delay in receipt. Koninklijke Luchtvaart Maatschappij N.V. (also known as KLM Royal Dutch Airlines) is registered in Amstelveen, The Netherlands, with registered number 33014286 -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
Actually, you are incorrect. The code is modifying storage beyond its area. Depending on how storage is set up, it is possible that the area will be on a page that is resolvable or not. On Fri, 6 Sep 2019 04:08:37 -0500 Sebastian Welton wrote: :>Thanks to everyone who responded and although he tried out all the options provided, nothing actually worked however it looks like it is working now. The first step was to implement the original it was based upon from the Redbook and that worked fine out of the box. I then looked at what messages he was processing via MPF and saw a couple that looked familiar as being used by another subsystem which also 'traps' messages. Once I removed the startup of the STC and all references to it in PARMLIB (IEFSSN in particular), no more abends occurred. So it basically wasn't the fault of the code (apparently he has coded MPF exits before, just wanted to try a different method and to use System REXX) but the interaction with other subsystems. Personally I could have done this with System Automation in a couple of minutes but this is a good learning curve for both of us in particular during the investigation. Once again, many thanks to everyone who took the time and effort to reply, it was much :>appreciated and did help in furthering our education (particularly me.) :> :>Seb. :> :>-- :>For IBM-MAIN subscribe / signoff / archive access instructions, :>send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- Binyamin Dissen http://www.dissensoftware.com Director, Dissen Software, Bar & Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
Thanks to everyone who responded and although he tried out all the options provided, nothing actually worked however it looks like it is working now. The first step was to implement the original it was based upon from the Redbook and that worked fine out of the box. I then looked at what messages he was processing via MPF and saw a couple that looked familiar as being used by another subsystem which also 'traps' messages. Once I removed the startup of the STC and all references to it in PARMLIB (IEFSSN in particular), no more abends occurred. So it basically wasn't the fault of the code (apparently he has coded MPF exits before, just wanted to try a different method and to use System REXX) but the interaction with other subsystems. Personally I could have done this with System Automation in a couple of minutes but this is a good learning curve for both of us in particular during the investigation. Once again, many thanks to everyone who took the time and effort to reply, it was much appreciated and did help in furthering our education (particularly me.) Seb. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
Specifying RSECT instead of CSECT will make the section read-only, might help catching something. Regards, Leonardo Vaz -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of CM Poncelet Sent: Thursday, September 05, 2019 8:43 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: MPF Exit calling System REXX - S0C4 abend 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:IBM-MAIN@LISTSERV.UA.EDU] On > Behalf Of Jesse 1 Robinson > Sent: Thursday, September 5, 2019 2:06 PM > To: IBM-MAIN@LISTSERV.UA.EDU > 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 On Behalf Of > Sebastian Welton > Sent: Thursday, September 5, 2019 6:21 AM > To: IBM-MAIN@LISTSERV.UA.EDU > 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,R12ADDRESSABILITY > LRR12,R15 SET BASE ADDRESS > LRR2,R1 SAVE PARAMETER REGISTER > L R1,=A(@DSECTE-@DSECT) CALCULATE STORAGE LENGTH > STORAGE OBTAIN,LENGTH=(R1)GET SOME VS > STR1,8(,R13) FORWARD POINTER > STR13,4(,R1) BACKWARD POINTER > LRR13,R1 POINT TO SAVE AREA > LRR1,R2 RESTORE PARAMETER REGISTER > B EYEBALLESKIP CONSTANTS > EYEBALL DS0H > DCC
Re: MPF Exit calling System REXX - S0C4 abend
Most popular IBM macros will produce better code than that if you specify SYSSTATE ARCHLVL=2 or better. It is unfortunate that isn't the default, but the PRIME DIRECTIVE is "Nothing shall ever change", lest someone reassembles their 1967 source, and something is different, no matter how trivial. It probably required the Board of Directors to sign-off on changing PUT & GET to allow AMODE 31 code to use them. sas On Thu, Sep 5, 2019 at 5:48 PM 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 -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
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:IBM-MAIN@LISTSERV.UA.EDU] On > Behalf Of Jesse 1 Robinson > Sent: Thursday, September 5, 2019 2:06 PM > To: IBM-MAIN@LISTSERV.UA.EDU > 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 On Behalf Of > Sebastian Welton > Sent: Thursday, September 5, 2019 6:21 AM > To: IBM-MAIN@LISTSERV.UA.EDU > 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,R12ADDRESSABILITY > LRR12,R15 SET BASE ADDRESS > LRR2,R1 SAVE PARAMETER REGISTER > L R1,=A(@DSECTE-@DSECT) CALCULATE STORAGE LENGTH > STORAGE OBTAIN,LENGTH=(R1)GET SOME VS > STR1,8(,R13) FORWARD POINTER > STR13,4(,R1) BACKWARD POINTER > LRR13,R1 POINT TO SAVE AREA > LRR1,R2 RESTORE PARAMETER REGISTER > B EYEBALLESKIP CONSTANTS > EYEBALL DS0H > DCC'=> GENMSGTR D= T= ROB ' > EYEBALLE DS0H > USING @DSECT,R13 ADDRESSABILITY > SRR11,R11 CLEAR RETURN CODE > * > L R9,0(,R1) POINT TO CTXT
Re: MPF Exit calling System REXX - S0C4 abend
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:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Jesse 1 Robinson Sent: Thursday, September 5, 2019 2:06 PM To: IBM-MAIN@LISTSERV.UA.EDU 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 On Behalf Of Sebastian Welton Sent: Thursday, September 5, 2019 6:21 AM To: IBM-MAIN@LISTSERV.UA.EDU 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,R12ADDRESSABILITY LRR12,R15 SET BASE ADDRESS LRR2,R1 SAVE PARAMETER REGISTER L R1,=A(@DSECTE-@DSECT) CALCULATE STORAGE LENGTH STORAGE OBTAIN,LENGTH=(R1)GET SOME VS STR1,8(,R13) FORWARD POINTER STR13,4(,R1) BACKWARD POINTER LRR13,R1 POINT TO SAVE AREA LRR1,R2 RESTORE PARAMETER REGISTER B EYEBALLESKIP CONSTANTS EYEBALL DS0H DCC'=> GENMSGTR D= T= ROB ' EYEBALLE DS0H USING @DSECT,R13 ADDRESSABILITY SRR11,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 LAR7,@ARGLST POINT TO AXREXX ARG LIST USING AXRARGLST,R7ADDRESSABILITY MVI @ARGLST,X'00' MVC @ARGLST+1(AXRARGLST
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 On Behalf Of Sebastian Welton Sent: Thursday, September 5, 2019 6:21 AM To: IBM-MAIN@LISTSERV.UA.EDU 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,R12ADDRESSABILITY LRR12,R15 SET BASE ADDRESS LRR2,R1 SAVE PARAMETER REGISTER L R1,=A(@DSECTE-@DSECT) CALCULATE STORAGE LENGTH STORAGE OBTAIN,LENGTH=(R1)GET SOME VS STR1,8(,R13) FORWARD POINTER STR13,4(,R1) BACKWARD POINTER LRR13,R1 POINT TO SAVE AREA LRR1,R2 RESTORE PARAMETER REGISTER B EYEBALLESKIP CONSTANTS EYEBALL DS0H DCC'=> GENMSGTR D= T= ROB ' EYEBALLE DS0H USING @DSECT,R13 ADDRESSABILITY SRR11,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 LAR7,@ARGLST POINT TO AXREXX ARG LIST USING AXRARGLST,R7ADDRESSABILITY MVI @ARGLST,X'00' MVC @ARGLST+1(AXRARGLST_LEN),@ARGLST MVC AXRARGLSTID,=A(AXRARGLSTACRO) MOVE IN EYECATCHER LAR1,AXRARGLSTCURVER VERSION 0 STR1,AXRARGLSTVER SAVE VERSION LAR1,1SINGLE ARGUMENT STH R1,AXRARGLSTNUMBER SAVE NUMBER OF ARGUMENTS SLR R1,R1 CLEAR ERROR FLAG STH R1,AXRARGLSTENTRYINERROR SAVE ERROR FLAG STR1,AXRARGLSTRSV2SAVE RESERVED VALUE LAR6,@ARG1POINT TO ARGUMENT 1 USING AXRARGENTRY,R6 ADDRESSABILITY MVI @ARG1,X'00'
Re: MPF Exit calling System REXX - S0C4 abend
Well, you might want to include AXREXXL in your getmained area. On Thu, 5 Sep 2019 08:21:05 -0500 Sebastian Welton wrote: :>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,R12ADDRESSABILITY :> LRR12,R15 SET BASE ADDRESS :> LRR2,R1 SAVE PARAMETER REGISTER :> L R1,=A(@DSECTE-@DSECT) CALCULATE STORAGE LENGTH :> STORAGE OBTAIN,LENGTH=(R1)GET SOME VS :> STR1,8(,R13) FORWARD POINTER :> STR13,4(,R1) BACKWARD POINTER :> LRR13,R1 POINT TO SAVE AREA :> LRR1,R2 RESTORE PARAMETER REGISTER :> B EYEBALLESKIP CONSTANTS :>EYEBALL DS0H :> DCC'=> GENMSGTR D= T= ROB ' :>EYEBALLE DS0H :> USING @DSECT,R13 ADDRESSABILITY :> SRR11,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 :> LAR7,@ARGLST POINT TO AXREXX ARG LIST :> USING AXRARGLST,R7ADDRESSABILITY :> MVI @ARGLST,X'00' :> MVC @ARGLST+1(AXRARGLST_LEN),@ARGLST :> MVC AXRARGLSTID,=A(AXRARGLSTACRO) MOVE IN EYECATCHER :> LAR1,AXRARGLSTCURVER VERSION 0 :> STR1,AXRARGLSTVER SAVE VERSION :> LAR1,1SINGLE ARGUMENT :> STH R1,AXRARGLSTNUMBER SAVE NUMBER OF ARGUMENTS :> SLR R1,R1 CLEAR ERROR FLAG :> STH R1,AXRARGLSTENTRYINERROR SAVE ERROR FLAG :> STR1,AXRARGLSTRSV2SAVE RESERVED VALUE :> LAR6,@ARG1POINT TO ARGUMENT 1 :> USING AXRARGENTRY,R6 ADDRESSABILITY :> MVI @ARG1,X'00' :> MVC @ARG1+1(AXRARGENTRY_LEN),@ARG1 :> SLR R1,R1 CLEAR ADDRESS HIGH :> STR1,AXRARGADDRHIGH SAVE ADDRESS HIGH
Re: MPF Exit calling System REXX - S0C4 abend
On Thu, 5 Sep 2019 13:42:36 +, Vernooij, Kees (ITOP NM) - KLM wrote: >The offset in the module is 0DA. In your assembler listing you can see which >instruction it is. >The failing instruction is 4110 D088: LA R1,136(R13) No. LA does not cause a PIC 11, though instruction fetch for the LA could. The PIC 11 was caused by a D7 instruction (XC). The other clue is ILC=6. The assembler source that was sent doesn't have an XC instruction in it. >This is loading the address of a fullword at +136 the workarea. Right R13+136. Not 216 or whatever I said before. >The savearea goes to +132, so this is @ARGLST. If the abend was in the assembler code that was sent, I might agree, except that the save area is 72 bytes (18F), not 132 bytes. -- Tom Marchant -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
Thanks Tom, I agree with all of that which is why he is doing it on what could be termed a 'sandbox' system. As I said, I have found the original code by searching Google for keywords and it seems to have come from a Redbook: http://www.redbooks.ibm.com/abstracts/redp4590.html?Open which was written by IBM'ers however this was on a lot older version of z/OS so I've asked him to check what differences there are between that version and the one he is working on. He should also back out the changes he made and try the original code to see if that works on the test system. Sebastian. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: MPF Exit calling System REXX - S0C4 abend
The offset in the module is 0DA. In your assembler listing you can see which instruction it is. The failing instruction is 4110 D088: LA R1,136(R13) This is loading the address of a fullword at +136 the workarea. The savearea goes to +132, so this is @ARGLST. Not exactly a reason for a 0C4. Do you have the register values of the abend, especially R13? Kees. > -Original Message- > From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On > Behalf Of Sebastian Welton > Sent: 05 September, 2019 15:21 > To: IBM-MAIN@LISTSERV.UA.EDU > Subject: 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,R12ADDRESSABILITY > LRR12,R15 SET BASE ADDRESS > LRR2,R1 SAVE PARAMETER REGISTER > L R1,=A(@DSECTE-@DSECT) CALCULATE STORAGE LENGTH > STORAGE OBTAIN,LENGTH=(R1)GET SOME VS > STR1,8(,R13) FORWARD POINTER > STR13,4(,R1) BACKWARD POINTER > LRR13,R1 POINT TO SAVE AREA > LRR1,R2 RESTORE PARAMETER REGISTER > B EYEBALLESKIP CONSTANTS > EYEBALL DS0H > DCC'=> GENMSGTR D= T= ROB ' > EYEBALLE DS0H > USING @DSECT,R13 ADDRESSABILITY > SRR11,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 > LAR7,@ARGLST POINT TO AXREXX ARG LIST > USING AXRARGLST,R7ADDRESSABILITY > MVI @ARGLST,X'00' > MVC @ARGLST+1(AXRARGLST_LEN),@ARGLST > MVC AXRARGLSTID,=A(AXRARGLSTACRO) MOVE IN EYECATCHER > LAR1,AXRARGLSTCURVER VERSION 0 > STR1,AXRARGLSTVER SAVE VERSION > LAR1,1SINGLE ARGUMENT > STH R1,AXRARGLSTNUMBER SAVE NUMBER OF ARGUMENTS > SLR R1,R1 CLEAR ERROR FLAG > STH R1,AXRARGLSTENTRYINERROR SAVE ERROR FLAG > STR1,AXRARGLSTRSV2SAVE RESERVED VALUE > LAR6,@ARG1POINT TO ARGUMENT 1 > USING AXRARGENTRY,R6 ADDRESSABILITY > MVI @ARG1,X'00' > MVC @ARG1+1(AXRARGENTRY_LEN),@ARG1 > SLR R1,R1 CLEAR ADDRESS HIGH > STR1,AXRARGADDRHIGH SAVE ADDRESS HIGH > LAR1,CTXTTMSG POINT TO WTO > STR1,AXRARGADDRLOWSAVE ADDRESS > LAR1,L'CTXTTMSG POINT TO LENGTH OF WTO > STR1,AXRARGLENGTH SAVE LENGTH > MVI AXRARGTYPE,AXRARGTYPECHAR SET ARGUMENT TYPE TO CHAR > OIAXRARGINPUTFLGS1,AXRARGINPUT FLAG INPUT ARGUMENT > AXREXX REQUEST=EXECUTE, X >SECURITY=BYAXRUSER, X >TSO=YES,
Re: MPF Exit calling System REXX - S0C4 abend
I agree with Tom, same mindset here also. On Thu, Sep 5, 2019 at 9:28 AM scott Ford wrote: > Sebastian, > > Did you assemble and link/bind the below code ? If so the failing > instruction should match the output and point you to where the issue is > ...so you can debug it. > > Scott > > On Thu, Sep 5, 2019 at 9:21 AM Sebastian Welton > wrote: > >> 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,R12ADDRESSABILITY >> LRR12,R15 SET BASE ADDRESS >> LRR2,R1 SAVE PARAMETER REGISTER >> L R1,=A(@DSECTE-@DSECT) CALCULATE STORAGE LENGTH >> >> STORAGE OBTAIN,LENGTH=(R1)GET SOME VS >> STR1,8(,R13) FORWARD POINTER >> STR13,4(,R1) BACKWARD POINTER >> LRR13,R1 POINT TO SAVE AREA >> LRR1,R2 RESTORE PARAMETER REGISTER >> B EYEBALLESKIP CONSTANTS >> EYEBALL DS0H >> DCC'=> GENMSGTR D= T= ROB ' >> EYEBALLE DS0H >> USING @DSECT,R13 ADDRESSABILITY >> SRR11,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 >> LAR7,@ARGLST POINT TO AXREXX ARG LIST >> USING AXRARGLST,R7ADDRESSABILITY >> MVI @ARGLST,X'00' >> MVC @ARGLST+1(AXRARGLST_LEN),@ARGLST >> MVC AXRARGLSTID,=A(AXRARGLSTACRO) MOVE IN EYECATCHER >> LAR1,AXRARGLSTCURVER VERSION 0 >> STR1,AXRARGLSTVER SAVE VERSION >> LAR1,1SINGLE ARGUMENT >> STH R1,AXRARGLSTNUMBER SAVE NUMBER OF ARGUMENTS >> SLR R1,R1 CLEAR ERROR FLAG >> STH R1,AXRARGLSTENTRYINERROR SAVE ERROR FLAG >> STR1,AXRARGLSTRSV2SAVE RESERVED VALUE >> LAR6,@ARG1POINT TO ARGUMENT 1 >> USING AXRARGENTRY,R6 ADDRESSABILITY >> MVI @ARG1,X'00' >> MVC @ARG1+1(AXRARGENTRY_LEN),@ARG1 >> SLR R1,R1 CLEAR ADDRESS HIGH >> STR1,AXRARGADDRHIGH SAVE ADDRESS HIGH >> LAR1,CTXTTMSG POINT TO WTO >> STR1,AXRARGADDRLOWSAVE ADDRESS >> LAR1,L'CTXTTMSG POINT TO LENGTH OF WTO >> STR1,AXRARGLENGTH SAVE LENGTH >> MVI AXRARGTYPE,AXRARGTYPECHAR SET ARGUMENT TYPE TO CHAR >> OIAXRARGINPUTFLGS1,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? >> BZRETURN GREAT! >> ABEND 1,REASON=(R0) ABEND
Re: MPF Exit calling System REXX - S0C4 abend
Sebastian, Did you assemble and link/bind the below code ? If so the failing instruction should match the output and point you to where the issue is ...so you can debug it. Scott On Thu, Sep 5, 2019 at 9:21 AM Sebastian Welton wrote: > 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,R12ADDRESSABILITY > LRR12,R15 SET BASE ADDRESS > LRR2,R1 SAVE PARAMETER REGISTER > L R1,=A(@DSECTE-@DSECT) CALCULATE STORAGE LENGTH > STORAGE OBTAIN,LENGTH=(R1)GET SOME VS > STR1,8(,R13) FORWARD POINTER > STR13,4(,R1) BACKWARD POINTER > LRR13,R1 POINT TO SAVE AREA > LRR1,R2 RESTORE PARAMETER REGISTER > B EYEBALLESKIP CONSTANTS > EYEBALL DS0H > DCC'=> GENMSGTR D= T= ROB ' > EYEBALLE DS0H > USING @DSECT,R13 ADDRESSABILITY > SRR11,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 > LAR7,@ARGLST POINT TO AXREXX ARG LIST > USING AXRARGLST,R7ADDRESSABILITY > MVI @ARGLST,X'00' > MVC @ARGLST+1(AXRARGLST_LEN),@ARGLST > MVC AXRARGLSTID,=A(AXRARGLSTACRO) MOVE IN EYECATCHER > LAR1,AXRARGLSTCURVER VERSION 0 > STR1,AXRARGLSTVER SAVE VERSION > LAR1,1SINGLE ARGUMENT > STH R1,AXRARGLSTNUMBER SAVE NUMBER OF ARGUMENTS > SLR R1,R1 CLEAR ERROR FLAG > STH R1,AXRARGLSTENTRYINERROR SAVE ERROR FLAG > STR1,AXRARGLSTRSV2SAVE RESERVED VALUE > LAR6,@ARG1POINT TO ARGUMENT 1 > USING AXRARGENTRY,R6 ADDRESSABILITY > MVI @ARG1,X'00' > MVC @ARG1+1(AXRARGENTRY_LEN),@ARG1 > SLR R1,R1 CLEAR ADDRESS HIGH > STR1,AXRARGADDRHIGH SAVE ADDRESS HIGH > LAR1,CTXTTMSG POINT TO WTO > STR1,AXRARGADDRLOWSAVE ADDRESS > LAR1,L'CTXTTMSG POINT TO LENGTH OF WTO > STR1,AXRARGLENGTH SAVE LENGTH > MVI AXRARGTYPE,AXRARGTYPECHAR SET ARGUMENT TYPE TO CHAR > OIAXRARGINPUTFLGS1,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? > BZRETURN GREAT! > ABEND 1,REASON=(R0) ABEND REASON IS REXX REASON > LAR11,8 SET BAD RETURN CODE > * > RETURN DS0H > LRR1,R13 POINT TO AREA TO BE FREED > L R13,4(,R13)
Re: MPF Exit calling System REXX - S0C4 abend
On Thu, 5 Sep 2019 04:39:12 -0500, Sebastian Welton wrote: >A colleague of mine has been developing an MPF exit which calls System REXX but this seems to have thrown up a weird type of error. >The program compiles fine That is irrelevant. >upon the first two invocations of the exit a S0C4 with reason code 11 >abend occurs but after reactivating the exit again, it all works fine. It is very unlikely that it works fine. More likely the S0C4 did not occur because the code was "lucky" enough to have addressed storage that had been allocated by some program, and it likely clobbered that storage. >Neither of us is an experienced assembler programmer but looking >through the code it seems fine: It is not "fine". A programming error caused S0C4 abends due to referencing unallocated storage and attempting to modify it. MPF exits receive control in key 0 Supervisor state. Frankly, an inexperienced assembler programmer with limited, if any, debugging experience should not be writing such code. >Time of Error Information > PSW: 07041000 8000 1ECDE102 > Instruction length: 06 Interrupt code: 0011 > Failing instruction text: 60224110 D088D7D7 10001000 > Translation exception address: _1F701800 > Breaking event address: _1ECDE05E This gives a clue. The failing instruction was D7D710001000 to clear storage pointed to by register 1 for a length of 216 bytes. Register 1 may be pointing to offset X'88' after the address in register 13. Either the address or the length is wrong. Or both. >we're going on the possibility that the error lies elsewhere. The error is in your (or your colleague's) program. >Any pointers, hints or tips would be gratefully accepted. Do not implement this exit on any system that you care about. If you want an MPF exit, or any other system exit, you need to find someone with experience writing and debugging key zero supervisor state code. -- Tom Marchant -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
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,R12ADDRESSABILITY LRR12,R15 SET BASE ADDRESS LRR2,R1 SAVE PARAMETER REGISTER L R1,=A(@DSECTE-@DSECT) CALCULATE STORAGE LENGTH STORAGE OBTAIN,LENGTH=(R1)GET SOME VS STR1,8(,R13) FORWARD POINTER STR13,4(,R1) BACKWARD POINTER LRR13,R1 POINT TO SAVE AREA LRR1,R2 RESTORE PARAMETER REGISTER B EYEBALLESKIP CONSTANTS EYEBALL DS0H DCC'=> GENMSGTR D= T= ROB ' EYEBALLE DS0H USING @DSECT,R13 ADDRESSABILITY SRR11,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 LAR7,@ARGLST POINT TO AXREXX ARG LIST USING AXRARGLST,R7ADDRESSABILITY MVI @ARGLST,X'00' MVC @ARGLST+1(AXRARGLST_LEN),@ARGLST MVC AXRARGLSTID,=A(AXRARGLSTACRO) MOVE IN EYECATCHER LAR1,AXRARGLSTCURVER VERSION 0 STR1,AXRARGLSTVER SAVE VERSION LAR1,1SINGLE ARGUMENT STH R1,AXRARGLSTNUMBER SAVE NUMBER OF ARGUMENTS SLR R1,R1 CLEAR ERROR FLAG STH R1,AXRARGLSTENTRYINERROR SAVE ERROR FLAG STR1,AXRARGLSTRSV2SAVE RESERVED VALUE LAR6,@ARG1POINT TO ARGUMENT 1 USING AXRARGENTRY,R6 ADDRESSABILITY MVI @ARG1,X'00' MVC @ARG1+1(AXRARGENTRY_LEN),@ARG1 SLR R1,R1 CLEAR ADDRESS HIGH STR1,AXRARGADDRHIGH SAVE ADDRESS HIGH LAR1,CTXTTMSG POINT TO WTO STR1,AXRARGADDRLOWSAVE ADDRESS LAR1,L'CTXTTMSG POINT TO LENGTH OF WTO STR1,AXRARGLENGTH
Re: MPF Exit calling System REXX - S0C4 abend
A copy of the assembler listing might be helpful. Tony Thigpen Sebastian Welton wrote on 9/5/19 5:39 AM: A colleague of mine has been developing an MPF exit which calls System REXX but this seems to have thrown up a weird type of error. The program compiles fine, is placed in LNKLST, MPFLST is updated and so on however upon the first two invocations of the exit a S0C4 with reason code 11 abend occurs but after reactivating the exit again, it all works fine. Neither of us is an experienced assembler programmer but looking through the code it seems fine: Eventually I managed to get a dump which throws up the following information: Dump Title: COMPON=CNZ,COMPID=SC1CK,ISSUER=CNZMIREC,MODULE=CNZS1MPF+1B46CF1A,ABEND=S00C4,REASON=0011 PIDS/5752SC1CK RIDS/GENMSGTR#L AB/S00C4 PRCS/0011 REGS/0C0DA RIDS/CNZMIREC#R Symptom Description --- --- PIDS/5752SC1CK Program id: 5752SC1CK RIDS/ITCAUTOT#L Load module name: GENMSGTR AB/S00C4System abend code: 00C4 PRCS/0011 Abend reason code: 0011 REGS/0C0DA Register/PSW difference for R0C: 0DA RIDS/CNZMIREC#R Recovery routine csect name: CNZMIREC OTHER SERVICEABILITY INFORMATION Recovery Routine Label: CNZMIPCE Subfunction: Consoles SERVICEABILITY INFORMATION NOT PROVIDED BY THE RECOVERY ROUTINE Csect name Date Assembled Module Level Time of Error Information PSW: 07041000 8000 1ECDE102 Instruction length: 06 Interrupt code: 0011 Failing instruction text: 60224110 D088D7D7 10001000 Translation exception address: _1F701800 Breaking event address: _1ECDE05E Basically the MPF exit just traps certain messages which are then passed to a System REXX, evaluated and then an action is performed depending upon certain criteria so nothing really too complex and as I said, it works once the initial 2 failures have gone by. We've looked at the CTXT Data Areas and the code looks fine in regards to that so we're going on the possibility that the error lies elsewhere. Just for information, this is running on z/OS 2.3 but on a ZD system (allows him to develop this type of stuff without affecting anyone else) with 24GB of memory allocated. Looking at the S0C4 error code, we also suspect that it is the second problem although the program does obtain storage: • Page-translation exception. This error is caused by one of the following: o A program that was running disabled attempted to reference storage while that storage was paged out. To correct the error, page-fix the storage before a program running disabled attempts to reference it. o A program attempted to reference storage that had not been obtained. To correct the error, allocate the storage before attempting to reference it. o A program running in a subspace attempted to reference storage that was not accessible to the subspace at the time of error. To correct the error, ensure that the program running in a subspace references only the storage assigned to that subspace, or storage that can be referenced by all subspaces. I'm not too sure where he obtained the initial assembler program from but am told that it worked elsewhere and I can post excerpts here if required. Any pointers, hints or tips would be gratefully accepted. Sebastian. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
MPF Exit calling System REXX - S0C4 abend
A colleague of mine has been developing an MPF exit which calls System REXX but this seems to have thrown up a weird type of error. The program compiles fine, is placed in LNKLST, MPFLST is updated and so on however upon the first two invocations of the exit a S0C4 with reason code 11 abend occurs but after reactivating the exit again, it all works fine. Neither of us is an experienced assembler programmer but looking through the code it seems fine: Eventually I managed to get a dump which throws up the following information: Dump Title: COMPON=CNZ,COMPID=SC1CK,ISSUER=CNZMIREC,MODULE=CNZS1MPF+1B46CF1A,ABEND=S00C4,REASON=0011 PIDS/5752SC1CK RIDS/GENMSGTR#L AB/S00C4 PRCS/0011 REGS/0C0DA RIDS/CNZMIREC#R Symptom Description --- --- PIDS/5752SC1CK Program id: 5752SC1CK RIDS/ITCAUTOT#L Load module name: GENMSGTR AB/S00C4System abend code: 00C4 PRCS/0011 Abend reason code: 0011 REGS/0C0DA Register/PSW difference for R0C: 0DA RIDS/CNZMIREC#R Recovery routine csect name: CNZMIREC OTHER SERVICEABILITY INFORMATION Recovery Routine Label: CNZMIPCE Subfunction: Consoles SERVICEABILITY INFORMATION NOT PROVIDED BY THE RECOVERY ROUTINE Csect name Date Assembled Module Level Time of Error Information PSW: 07041000 8000 1ECDE102 Instruction length: 06 Interrupt code: 0011 Failing instruction text: 60224110 D088D7D7 10001000 Translation exception address: _1F701800 Breaking event address: _1ECDE05E Basically the MPF exit just traps certain messages which are then passed to a System REXX, evaluated and then an action is performed depending upon certain criteria so nothing really too complex and as I said, it works once the initial 2 failures have gone by. We've looked at the CTXT Data Areas and the code looks fine in regards to that so we're going on the possibility that the error lies elsewhere. Just for information, this is running on z/OS 2.3 but on a ZD system (allows him to develop this type of stuff without affecting anyone else) with 24GB of memory allocated. Looking at the S0C4 error code, we also suspect that it is the second problem although the program does obtain storage: • Page-translation exception. This error is caused by one of the following: o A program that was running disabled attempted to reference storage while that storage was paged out. To correct the error, page-fix the storage before a program running disabled attempts to reference it. o A program attempted to reference storage that had not been obtained. To correct the error, allocate the storage before attempting to reference it. o A program running in a subspace attempted to reference storage that was not accessible to the subspace at the time of error. To correct the error, ensure that the program running in a subspace references only the storage assigned to that subspace, or storage that can be referenced by all subspaces. I'm not too sure where he obtained the initial assembler program from but am told that it worked elsewhere and I can post excerpts here if required. Any pointers, hints or tips would be gratefully accepted. Sebastian. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN