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

Reply via email to