Re: MPF Exit calling System REXX - S0C4 abend

2019-09-16 Thread Jon Perryman
 >  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

2019-09-06 Thread Peter Relson
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

2019-09-06 Thread Seymour J Metz
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

2019-09-06 Thread Seymour J Metz
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

2019-09-06 Thread Seymour J Metz
> 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

2019-09-06 Thread Steve Smith
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

2019-09-06 Thread Vernooij, Kees (ITOP NM) - KLM
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

2019-09-06 Thread Sebastian Welton
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

2019-09-06 Thread Vernooij, Kees (ITOP NM) - KLM
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

2019-09-06 Thread Vernooij, Kees (ITOP NM) - KLM
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

2019-09-06 Thread Binyamin Dissen
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

2019-09-06 Thread Sebastian Welton
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

2019-09-05 Thread Leonardo Vaz
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

2019-09-05 Thread Steve Smith
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

2019-09-05 Thread CM Poncelet
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

2019-09-05 Thread Charles Mills
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

2019-09-05 Thread Jesse 1 Robinson
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

2019-09-05 Thread Binyamin Dissen
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

2019-09-05 Thread Tom Marchant
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

2019-09-05 Thread Sebastian Welton
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

2019-09-05 Thread Vernooij, Kees (ITOP NM) - KLM
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

2019-09-05 Thread scott Ford
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

2019-09-05 Thread scott Ford
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

2019-09-05 Thread Tom Marchant
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

2019-09-05 Thread Sebastian Welton
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

2019-09-05 Thread Tony Thigpen

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

2019-09-05 Thread Sebastian Welton
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