Article View: bit.listserv.asm370
Article #366Re: IEANTRT troubles
From: Craddock, Chris
Date: Tue, 20 Sep 2005 14:47
Date: Tue, 20 Sep 2005 14:47
70 lines
4843 bytes
4843 bytes
>
> I have a service provider that places some data in SP 227
> and later puts the address of the above location in a N/T
> pair:
>
> CALL IEANTCR,(LLEVEL,LNAME,LTOKEN,LPERSOPT,LRETCODE)
>
> LLEVEL DC A(IEANT_SYSTEM_LEVEL)
> LPERSOPT DC A(IEANT_NOPERSIST)
> LNAME DC CL16'SP00001'
> LRETCODE DS F
> LTOKEN DS 0XL16
> DS1ADDR DS A
> DS XL12
Are you sure? This would be a non-reentrant call. That may work, but it
can also fail in surprising ways.
> In the client I am trying to obtain the address through:
> CALL IEANTRT,(LLEVEL,LNAME,TOKEN,RETCODE)
^^^^^
> Initially I defined all parms in absolute storage. But I got an
0C4-11.
Did the IEANTRT call get the S0C4, or did you get it in your own code?
S0C4-11 is a reference to an invalid address. Presumably you specified
an invalid address in a parameter. Based on the DC's above, I would
guess you meant to specify LTOKEN, not TOKEN. Maybe TOKEN was a valid
symbol in your program, but just not the thing you wanted.
If you had got a S0C4-4 that would mean the storage address could not be
fetched or stored into and I might suspect a different problem. Or not.
Chances are you're just passing a bad address and the system is getting
a program check when it tries to reference it.
> later I placed just LLEVEL & LNAME in absolute storage while token &
> retcode
> are defined through a DSECT mapping to a storage obtained as follows:
> GETMAIN R,LV=LOCMLEN,SP=0
Making your program reentrant is a good idea, but it's probably not the
root cause of your problem in this case. Anyway, using the "R" form of
GETMAIN is a bad idea because it expands as an SVC 10 - which only gets
you 24-bit storage no matter what AMODE you are in. It's probably no big
deal, but I would use "RU" instead of "R". That way you get SVC 120.
> But the assembly fails with:
>
> 000080 00000000 67+ DC A(TOKEN)
> PR
> ** ASMA032E Relocatable value found when absolute value required -
TOKEN
> ** ASMA435I Record 176 in SYS1.MACLIB(IHBOPLTX)
You're suffering the initial pains of getting comfortable with reentrant
coding. Reentrancy, like pregnancy, is an all or nothing deal. You have
to put the data into the working storage by using instructions like;
LA R0,TOKEN -> TOKEN
ST R0,PARMAREA Save in parm area
Also, if you're going to be reentrant, you also have to make the CALL
macro reentrant. That means using the MF=L form to reserve storage for
the parameter list and then using the MF=(E,...) form to point to the
storage you reserved for the parameters and complete the parmlist and
make the call. You can read about it in the assembly language services
guide. But back to the problem at hand... why are you calling the symbol
"LTOKEN" in one place and "TOKEN" in another?
CC
Technical Details
Message-ID:
<E9DE7963E5EA6546B42A979EC28B4D011565DCFE@hou-ex-02.adprod.bmc.com>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!newsfeed.news2me.com!peer01.west.cox.net!cox.net!hwmnpeer01.phx!hwmedia!newsfeed1.easynews.com!easynews.com!easynews!sn-xit-03!sn-xit-08!sn-xit-14!supernews.com!149.173.6.116.MISMATCH!foggy!vm.sas.com!bmc.com!Chris_CraddockShow Full Headers
Complete Article Headers
X-Google-Thread: fcdcb,72645f6509f487f6
X-Google-Attributes: gidfcdcb,public
X-Google-Language: ENGLISH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!newsfeed.news2me.com!peer01.west.cox.net!cox.net!hwmnpeer01.phx!hwmedia!newsfeed1.easynews.com!easynews.com!easynews!sn-xit-03!sn-xit-08!sn-xit-14!supernews.com!149.173.6.116.MISMATCH!foggy!vm.sas.com!bmc.com!Chris_Craddock
From: "Craddock, Chris" <Chris_Craddock@bmc.com>
Newsgroups: bit.listserv.asm370
Subject: Re: IEANTRT troubles
Date: Tue, 20 Sep 2005 09:47:56 -0500
Organization: SAS Inc.
Lines: 70
Sender: IBM Mainframe Assembler List <ASSEMBLER-LIST@LISTSERV.UGA.EDU>
Message-ID: <E9DE7963E5EA6546B42A979EC28B4D011565DCFE@hou-ex-02.adprod.bmc.com>
NNTP-Posting-Host: mozart.unx.sas.com
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Trace: foggy.unx.sas.com 1127228034 25227 10.19.150.41 (20 Sep 2005 14:53:54 GMT)
X-Complaints-To: usenet@unx.sas.com
NNTP-Posting-Date: Tue, 20 Sep 2005 14:53:54 +0000 (UTC)
Comments: Gated by NETNEWS@VM.SAS.COM
Return-Path: <owner-assembler-list@LISTSERV.UGA.EDU>
X-MimeOLE: Produced By Microsoft Exchange V6.0.6603.0
Content-class: urn:content-classes:message
Thread-Topic: IEANTRT troubles
Thread-Index: AcW9UJgjDkQtRh4STSSpe8r7v7cgZwAnzV1g
X-OriginalArrivalTime: 20 Sep 2005 14:47:56.0404 (UTC)
FILETIME=[49931B40:01C5BDF2]
X-Spamicity: Yes, tests=bogofilter, spamicity=0.999000, version=0.94.14
X-MIME-Autoconverted: from quoted-printable to 8bit by listserv.cc.uga.edu id
j8KEm1Ik004736
Approved-By: "Craddock, Chris" <Chris_Craddock@BMC.COM>
Return-Path: owner-assembler-list@LISTSERV.UGA.EDU
X-Mime-Autoconverted: from 8bit to 7bit by mime827
Originator: daemon@mozart.unx.sas.com