Don't know what it's worth, but I'm quite sure that you can read a directory
of a PDS simply by issuing fopen on it as a binary file - like this

directory = fopen ("dd:pdsfile", "rb");

that is, if you don't specify member names in parantheses, you get the directory of the PDS.

And, yes, if you specify dd:dsname on fopen, there will be no DYNALLOC etc. and no SYSxxxxx ddnames, because there is already a ddname. I understand that those "synthetic" ddnames like SYS00001 etc. are only needed, if you specify dsnames on fopen. Or, another case, if you do output to stdout by printf, for example, but SYSPRINT is already
blocked (used, opened) by PL/1 (for example).

Kind regards

Bernd



Am 30.04.2012 22:20, schrieb Charles Mills:
Thanks!

At least too many OPEN's is better than too many DYNALLOC's *and* too many
OPEN's.

There isn't a way to update (or get) the PDS directory user data
Not a huge deal to write your own BPAM library, but I agree. When I first
came to z/OS C/C++ about two years ago I was surprised that there were not
more z/OS-specific library routines (or z/OS-specific enhancements to the
inherited-from-UNIX library routines).

Charles

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf
Of Kirk Wolf
Sent: Monday, April 30, 2012 11:11 AM
To: IBM-MAIN@bama.ua.edu
Subject: Re: Does C/LE open of DD:ddname(member) use SVC 99 or FIND?

Charles,

I'm nearly certain that it doesn't do a SVC99 when you are using fopen with
a DDNAME

But it does seem to do a OPEN/BLDL/POINT....STOW/CLOSE    for each fopen()
/ fclose()  using //DD:MYDD(MEM)

IMO, there are a couple of important missing things:

1) There isn't a way to update (or get) the PDS directory user data when
processing the member with fopen()/fclose().

2) You would really like to be able to do this:

fopen(//DD:MYDD(MEM1), ...)
freopen(//DD:MYDD(MEM2), ....)

so that the freopen() caused a STOW (if opened update) and a BLDL/POINT,
and avoided the cost of a complete OPEN/CLOSE path.    I don't think that
it does that.

So, for my money, better BPAM support would be nice.

Kirk Wolf
Dovetailed Technologies
http://dovetail.com

On Mon, Apr 30, 2012 at 11:45 AM, Charles Mills<charl...@mcn.org>  wrote:

Does anyone *know* whether a C/C++ Language Environment fopen() of a
filename of the form DD:ddname(member) use an OPEN of ddname followed
by a BLDL or FIND for member (the way any reasonable programmer would)
or does it do a whole new DYNALLOC for dsname(member)? (Seems like a
dumb question, but FTP does it that way, so stranger things have
happened.)

My *interpretation* of the allocation messages - I don't see allocate
and de-allocate messages for a SYSnnnnn that appears to be for member
- leads me to believe that C/C++ LE does it right. But I could be
reading it wrong.
Does anyone *know*?

Thanks,
Charles



----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN

Reply via email to