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

Reply via email to