I've a checkpoint restart program.Flow of the program is like this,
GN call to DB1.
increase counter by 1
GHU call to DB1.
REPL call to DB1.
if counter > 5
again GN call to DB1.
It is working fine till counter reache 5.ie. am geeting the problem after checkpointing.Following is the logic in CHKP-call-DB1-para.
issue a check point call to DB1. Now it lost all the pointers to DB1.So we need to reset the ponter at the current record.For doing that am issuing a GU call with the saved key. This should position the pointer at the check pointed record and then again GN calls will be issued as usual.
But this GU call is returning 'GE', eventhough the record exists in DB1.
Also the GN and GHU for the same key eas successful. But for the same key GU is returning GE.
We are sure that it is not the problem with the program. This code is working fine in production. We are testing it in BTSB. Either it will be DBD/PSB/BTSB environment proble. Did anybody faced a similar case ever? We checked the PSB and DBD many times and foun that it is okay
Joined: 01 Mar 2006 Posts: 288 Location: Basel, Switzerland
you have to make a qualifiesdssa call to dl1.
because your first call must be a GU, because
after checkpoint the position is lost and you
have to reposition. this also beacause with
checkpointing, your program is enabled for
restart after any abend. therefore on the checkpoint
write out in the restart-area your last key accessed,
and then a GU with GT on this key.
Ya Martin.We are doing the same. We are reading the saved key and reposition the pointer with a qualified GU call. This code is working in production.But in BTSB environment this GU call returns 'GE' eventhough it is present in data base. Also the previous GN and GHU calls were successfull for the same key.
FYI.. The issue was with the BTSB ID we used. The DBD lib used for loading data in to BTSB and DBD lib used for running the program were different.I re-organized the BTSB ID with same DBD lib.Now it's working with same program