With IBM support and other help, we finally figured this one out, and so I will share it. When you write to a TDQ (Intra partition, Recovery= Logical, TriggerLevel=1, TRANID=XXXX) The Trigger Level is NOT the only thing governing when the TRANID gets kicked off. It is a combination of TriggerLevel and SYNCHPOINT. BOTH must happen before TRANID gets kicked off. And SYNCHpoint can happen at as a result of things other than EXEC CICS SYNCHPOINT, such as some DLI calls, and invocation of some other progams. In my case the program (XXXXXXXX) started to write to the TDQ which set the Trigger level to 1, but the tranid YYYY did NOT start at this point. Then the program XXXXXXXX did IMS DLI call, and thus a SYNCHPOINT happened. At this point YYYY started reading from the TDQ at a faster rate than the program XXXXXXXX was writing into the TDQ. If the report was short, the program XXXXXXXX finished before YYYY and no problem was detected. If the report was longer, it "could" happen that YYYY read the last record from the TDQ and finished. However the program XXXXXXXX kept writing to the now empty TDQ thus setting the Trigger level to 1 again. The next SYNCH happened when the program XXXXXXXX completed, and thus YYYY was released to process the remaining records as a partial report. We started calling this the "bucket brigade" problem. Very hard to duplicate. IBM was very helpful on this one. Remember "This could happen to YOU".
From: John Mattson/Epson To: IBM Mainframe Discussion List <IBM-MAIN@bama.ua.edu> Date: 02/23/2011 08:02 AM Subject: TS41 TDQ triggering before program finishes writing to it Just went from TS22 to TS41 and have a surprise problem. Our program writes a report to a TDQ, and when the report is complete leaves the TDQ, which has a Trigger level of 1. At this point TRANSID starts since the trigger level is reached and it process the record in the TDQ. Up to TS41 it worked fine. Now, it works alright if we do the transactions one at a time (manually). However, if we "batch" a bunch of them to run right after another then the TDQ is "sometimes" triggered before the report record is completly sent to the TDQ, and then the TDQ is read, cleared by the TRANSID trans. The the rest of the record report is written to the TDQ and then read, and a mess is created. Note: The TDQ is INTRA partition, has a TRANSID value, and Tirggerlevel is 1. Note: This system has worked fine until going to TS41 and zOS 1.11 Note: My knowledge of CICS programming is limited. Question is: 1) is this a bug? 2) now do we go about preventing it from happening? Basically the report writing program must remain 'in control' of the TDQ until it completes a full report. ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html