Maybe drop the REUSE directive on the alloc call?
Keven Hall
                
                

                
        




On Mon, Feb 19, 2018 at 7:19 AM -0600, "Gary Freestone" <maz...@iinet.net.au> 
wrote:










Sorry guys.  Wrong forum.  Apologies.

Gary Freestone

-----Original Message-----
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU]
On Behalf Of Gary Freestone
Sent: Tuesday, 20 February 2018 12:04 AM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: BPXWDYN - Bug or no bug ?

These days we are opting for BPXWDYN in our REXXs instead of TSO ALLOC.  One
of the main reason for the switch is BPXWDYN's ability to return the DDNAME
it allocated via the RTDDN parameter.

 

Chasing down a bug in my code lead me to discover an idiosyncrasy with
BPXWDYN that I think is a bug, but maybe not. So I'm seeking your opinions. 

 

If I have the following

 

Call bpxwdyn "Alloc rtddn(dd) da('any.dataset.name') shr reuse"

Say 'DDname allocated is 'dd

Call bpxwdyn "Free fi("dd")"

 

Running this exec gives something like "DDname allocated is SYS00746"

 

However, if any.dataset.name is already allocated to an alternate DDNAME
that is not in concatenation then, instead of allocating a new DDname it
just returns the DDNAME of the existing allocation. 

You can see this with this code

 

Address tso "alloc fi(abug) da('any.dataset.name') shr resue"

Call bpxwdyn "Alloc rtddn(dd) da('any.dataset.name') shr reuse"

Say 'DDname allocated is 'dd

Call bpxwdyn "Free fi("dd")"

And you will get "DDname allocated is ABUG"

 

Problem is because I'm not getting a new allocation my FREE is freeing up a
DDNAME allocated by a totally different process.  In my case causing an
abend sometime later because a DDname that should be allocated is not.

 

This doesn't seem right to me.  An "ALLOC" should do a new allocation every
time.   Comments

 

Gary Freestone   

  

 

 

Reply via email to