Hello all,
We have an inhouse written STC that processes messages from MQ and writes
them to a dataset. This processing goes like this:
1. DYNALLOC on DATA.SET.NAME
a. Request the current generation ( done by putting 0 in DALMEMBR)
b. Specify DALCLOSE (equivalent to FREE=CLOSE)
2. Open the DCB name
3. Write to to it one or more times
4. Close
5. Wait for MQ to send the next request goto #1.
Does anyone know if the FREE=CLOSE process that happens in response to
step 4 is synchronous in nature?
This has been working well for years. Yesterday it began to fail with x'0410'
dec 1040 - Specified ddname unavailable. My current theory is that there
were records piled up in MQ causing #5 to happen immediately. If the free
processing called from step 4 is performed synchronously and not completely
finished when the next DYNALLOC happened, causing the DD name to be still
in use.
The other strange thing we noticed was that we displayed the enqueues and
this process had enqueued on the GDG base and *all* of the generations.
During normal processing this is only enqueued on the GDG base and the
current generation.
Seems to me that proper design would be to acutally code the DYNALLOC to
free the allocation instead of relying on FREE=CLOSE to do it, but before
embarking on that, I'm trying to understand what actually happened.
Thanks in advance for any opinions issued (sorry)
Dana
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html