When writing to a Transient Data Queue, if the NOSPACE condition is returned should it be guaranteed that all the...
PREVIOUS data written to the queue was successfully written? We are experiencing a problem here where an amount of data equal to the TD queue's dataset's blocksize times the number of buffers is lost when a NOSPACE condition is raised.
I assume the question relates to extrapartition TD given the reference to blocksize and number of buffers.
We use QSAM "put locate" mode which enables records to be moved directly from the application buffer to the QSAM buffer regardless of the RMODE of the application buffer. Each QSAM PUT "commits" the record last moved to the buffer. When the buffer is full QSAM invokes lower level services to write the block to the data set returns a pointer to the next buffer in the pool provided that buffer is not being written to the data set.
We raise the NOSPACE condition when the DCB abend exit is entered for an x37 abend. If you have filled all currently allocated space for your data set, QSAM puts the buffer into a state of error. Further action is deferred as long as possible. QSAM wants to dry up its queues by ensuring successful completion of as many buffers as possible before dealing with this space problem. QSAM continues accepting data until it has run out of buffers. Then it analyzes the problem but if it is unable to resolve the problem it invokes the CICS DCB ABEND exit routine and the data in the buffers will be lost.
In short, the function is working as designed. To avoid data loss you should ensure that there is sufficient space available. It would also be possible to work with unblocked records in a single buffer but I do not recommend this because the effect on CICS performance will almost certainly be unacceptable.
Dig Deeper on IBM system z and mainframe systems
Related Q&A from Robert Crawford
For better mainframe capacity planning, how do I convert CPU hours to MIPS? And is there a way to calculate the relationship between MIPS and MSUs? Continue Reading
I have two years of experience in mainframe technology, currently working as a mainframe developer. I want to change to Java technology. Continue Reading
I want to replicate DB2 from the mainframe to an AIX box since it's cheaper and the copy can be used for testing. Is this possible? Continue Reading
Have a question for an expert?
Please add a title for your question
Get answers from a TechTarget expert on whatever's puzzling you.