🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: bit.listserv.asm370
Article #366

Re: IEANTRT troubles

#366
From: Craddock, Chris
Date: Tue, 20 Sep 2005 14:47
70 lines
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_Craddock

Show 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