> Can you provide some type of call hierarchy diagram (labeling the various
> levels with Language/Run time environment used) so we can see how program
> flow from top to bottom?
> Thanks.
C main:
Declare a suitable C variable, say a char[8]
Call ISPLINK to VDEFINE the variable to ISPF setting typ
>If that's the cast you need CEEPIPI. Call it once to initialize the
>persistent LE environment and then to call your routine with the
>environment token. You will have to stash away the environment token
>somewhere, name/token services should work.
CEEPIPI will initialise me *another* LE environm
>IMO, writing an exit in LE C/C++ just isn't worth the hassle. To write a
>proper glue code stub you will need to call your C program via the LE
>CEEPIPI service. Trying to get the CAA from the TCB is a shot in the
>dark as each ISPF screen runs in a subtask, and IIRC using the SELECT
>CMD(...) ser
rate LE
enclave is really not helpful anyhow as I want access to the global variables
that I might have set before I called into ISPF.
Any wisdom would be gratefully received.
Tom Quarendon.
Don't think it is actually reentrancy that was my problem. I thin kmy
problem is my inability to determine where my problem is.
I've got quite a complicated environment (c, c++ and assembler, xplink,
c linkage le compliant, and plain os linkage), so detemining why my
program falls over is rather
That was a deliberate bug left in to test how much notice you where
paying :-)
I did indeed mean
USING FRED,11
I've still got an issue, but I need to refine exactly what it is...
Cheers.
Gerhard Postpischil wrote:
Tom Quarendon wrote:
does I get a segmentation violation at the
I've got an issue trying to make use of a piece of assembler code that's
coded in a non-reentrant style. Specifically the code doesn't allocate a
save area dynamically, it just allocates space in the CSECT for it. I've
got a driver program in C that's trying to call the code and when it
does I
It turns out that the problem is that I was executing some channel
programs, and subsequently calling EOV without first WAITing for the
programs to finish.
Word from IBM is that EOV will purge any outstanding programs, halting
them, and not posting the ECB on the basis that you called EOV so you
ter wait on the ECB to see it's complete
4. check the completion code and sense bytes for error.
which is basically what the documentation says to do isn't sufficient.
You need an unspecified step 2a, "check for some unknown conditions and
perform some unspecified reco
We use gmake on z/OS -- there's no installation necessary per-se -- it's
just a single binary executable.
You can get the source and/or compiled executable from
http://www-03.ibm.com/servers/eserver/zseries/zos/unix/redbook/index.html#gmake
along with a whole bunch of other useful gnu stuff.
-
Don't confuse random access with BDAM.
We'll you'll have to tell me what I am confusing then because I don't
understand what you mean.
Educate me on the difference between direct access and random access then.
No, there is a TTR.
No, there is a TTTR. I'm using the offset +12 CVTPCNVT entry poin
I'd expect better performance from ESDS or RSDS than from EXCP.
Not in our experience. We've tried all possible forms of I/O and LDS was
certainly the best when it comes to VSAM. zFS is implemented as VSAM LDS
files and I assume that they know what they are doing. from recollectin
ESDS and RR
I think you missed the point - no dynamic allocation, as that
would just get you back where you started. All you need is
another DD, with DISP=OLD, and no catalog access (i.e., explicit
unit and volume) to modify the JFCB for. OPEN won't know or care
that it's a multi-volume DS, and just build the
As I see it you've been trying to fit a square peg into a round hole.
Doesn't seem like square peg and round hole to me, actually it all seems
to work quite neatly, just so long as the dataset is DISP=OLD.
Try something completely different: let your current output file be DD
OUTFILE, with DI
What you should see is a single DEB that shows ALL the extents, on ALL
the volumes. you should be able to loop through all the extent
descriptors in the DEB, calculating the extent numbers and CCHHR values
in a fairly simple fashion. This will also help you detrmine the correct
extent number. T
I don't know how to open the data set in such a way, nor do I see why you
need to do so. Suppose there are 16 volumes in the data set and each volume
has 16 extents. Your DCB has a DDNAME=WHATEVER. Your DD statement for
WHATEVER points to the data set name. You OPEN the DCB. Your DEB th
I think that you misunderstand.
No.
Then I misunderstand you then.
Don't confuse random access with direct access.
I don't think I am. I'm not trying to use BDAM. However I am trying to
access a direct access storage device with EXCP, non sequentially, i.e
randomly. How do you think I'm c
I've tried a number of things, but typically just
VOLUME=SER=(volser1,volser2,volser3,volser3)
I've also tried
UNIT=(SYSDA,4)
VOLUME=(,,,4)
and I get the same problem.
J R wrote:
Are you specifying vol-count on your allocation?
What does your allocation look like?
___
What Shmuel was pointing out that if you have the data set open
normally, the DEB will have extent entries for each extent on each
volume. Then the M will point to the m+1 th extent of the data set; if
the DS has one extent per volume, then M=2 will address the 3rd volume,
etc.
If you've been
Probably because you're using the wrong tool.
And the "correct" tool in your opinion is?
What do you mean by that? The OPENJ does not[1] change the TIOT, so you're
still pointing to the same UCB's as before. Since MVS no longer supports
mountable DASD, that means that you can only succeed in ch
r.
Anyhow.
Thanks for the help.
Tom Quarendon wrote:
Right. I think that's what I need. Thanks.
Just for completeness I guess
0 ==> PSA
PSATOLD ===>A(TCB)
(more for my own benifit that bit).
__
This email ha
Right. I think that's what I need. Thanks.
Just for completeness I guess
0 ==> PSA
PSATOLD ===>A(TCB)
(more for my own benifit that bit).
Tom Harper wrote:
Tom,
TCBTCT ==> A(SMFTCT)
TCTCRTBL ==> A(TCTCORE)
Then TCTIOTBL ==> A(TCTTIOT)
And TCTIODSP is the start of the DD lookup table
Then TC
Is there any way if finding out what the EXCP count for the program that
I'm running currently is? I've searched the IBM documentation and I
don't seem to be able to find anything obvious. What I want to do is
break down the program for diagnostic purposes and produce a print out
after each "st
I don't have access to my docs right now, otherwise I would have
specified the bit, but JFCVSL sounds correct. It needs to be set on any
OPEN when there is a changed data set name or serial. I seem to recall
setting it for a changed member name also.
I've tried setting the JFCBVSL flag before
Dumb question: While you're doing this random access, is there any data
at the points you're trying to access? Most, though perhaps not all,
random access dataset have data pre-loaded, or at least the areas being
accesses are pre-formatted. We need more information about what you're
trying to a
I haven't and maybe that what my problem is.
The documentation as far as I can see makes no mention of that, at least
not in the example in chapter 7 of DFSMSdfp Advanced Services.
Do you mean the JFCVSL bit in JFCBTSDM? You mean that the problem is
that it doesn't realise that I've added a ne
I'm trying to write some code that performs random access I/O on a multi
volume dataset using a technique similar to that described in chapter 7
of DFSMSdfp Advanced Services, and am having mixed results.
The code all works just fine, so long as the dataset I'm dealing with
exists already, or
I have a quick question about how JFCBX control blocks are chained
together.
If a dataset has more than 5 volume serial numbers, the JFCBEXAD field
in the JFCB gives the SVA of the first JFCBX control block which
contains overflow volume serial number information.
However the definition of the
then you might
want to try creating at least one PAV alias for device X.
I guess this maybe anwsers one of my fundamental questions about PAV.
There is something that needs to be configured on the machine in order
to exploit PAV? The system programmer needs to set up aliases to certain
devi
There's no reason you can't issue multiple EXCP's against the same DCB
before issuing any WAIT's. IOS will queue the requests in the order they
are received and if the requests are eligible for PAV processing, IOS
will take care of it for you. Much ado about nothing here ?? Remember
that even w
> You need to support MIDALs in your channel program in order to obtain
> minimum elapsed time if your data is ever attached to the LPAR via
> FICON channels. That means you must use some access method other
> than EXCP. EXCPVR and STARTIO will work, but they are both
> authorized. Always an
> XDAP is just a fancy form of EXCP, with the XDAP macro generating the
> channel program. Rather than going Class-C, I would expect it to be
> extended, along with basic EXCP, to handle 31 bit addresses and
> Format-1 Channel Programs.
Yes, XDAP is just a "helper" for writing your (simple) chann
> It sounds like you're using Seek-SearchID-Tic-WriteCKD(s) (a.k.a. CKD
> channel programs)
I am using Locate Record-Write programs. The effect is the same in the
sense that the Locate Record performs a seek and establishes orientation
and you want to try and avoid doing anything that resets o
Using command and data chaining, you can write a whole cylinder with a
single EXCP. That enough?
You can write a whole extent as far as I understand it if you want to.
(EXCP automatically executes a Define Extent based on the initial seek
address you give it, and whilst it doesn't say so explici
But I can write a single channel program that performs one disk seek
followed by writing multiple records to multiple consecutive tracks,
without intervening seeks. That's going to be quicker than executing
multiple channel programs each of which does a seek and then a single
write. It IS quick
You can reduce the EXCP count to zero, if you want to go that far, by using
STARTIO. However, there is no automatic support for data set extend with
STARTIO. The mechanism in SMF that counts EXCPs attempts really to count blocks
transferred rather than invocations of EXCP. It all depends o
Since I got such a good response from the last question, here's another.
My understanding of channel program execution is that there is one queue
per UCB, i.e per volume. In other words there isn't a huge amount to be
gained by executing lots of concurent channel programs to the same file
(you
I was managing my DCBFDAD field, and I was setting the flags corretly
(or rather just leaving them well alone). The problem I was having was
that I was openning the dataset for UPDAT rather than OUTPUT. Doesn't
seem to make a difference to what you're allowed to do with EXCP (you
can still exec
I looked at XDAP, but the fact that you can't extend the dataset is a
problem. Also I wanted to be able to be optimal in terms of reading and
writing multiple blocks at a time to reduce the EXCP count as much as
possible. EXCP is the only think that gives you this level of control.
(IBM Mainfr
Gerhard Postpischil wrote:
Tom Quarendon wrote:
IIRC, there is a bit in the DCB that indicates that the last access was
a write; it's set by the xSAM routines, but needs to be explicitly set
when you're using XDAP or EXCP (I don't have access to my materials
right now, sorry)
We tried various things originally, and VSAM LDS is the best fit as far
as a VSAM file goes, and we've got an implementation of what we ned
using VSAM LDS and it works fine (copes with >4GB files multivolume
easily without having to do anything in the application, just so long as
you don't use DIV
It does work, however there seem to be some restrictions, like the need
to close and reopen the dataset using BSAM in order to extend the file.
It's also unclear how well BDAM supports large files (multi volume,
large format, etc). Addressing is either by TTR, limiting to 65636
tracks, and else wh
I'm writing some code to do random access file I/O using EXCP and
generally all is going well, but I have a couple of issues.
I'm managing the dcbfdad field of the DCB as I write the dataset, but
the ISPF dialogs always report that the dataset space utilisation is 0.
Allocation reports OK, but
43 matches
Mail list logo