Hi Firstly READU will not execute the ELSE clause when the item is locked. It will just sit there and wait for the lock to be released.
Regardless if it is a bug or not, your piece of code just doesn't make sense. What do you actually try to achieve? You try to read a record and when it doesn't exist you want to set the variable to null, right? So you use READU CITEM FROM FILE THEN ... END ELSE CITEM = '' instead of CITEM = '' READU CITEM FROM FILE THEN ... END and your problem is solved. I always use the ELSE clause with any READ BTW Regards Mecki Buss, Troy (Logitek Systems) wrote: > Thanks for the replies... > > In this example I was using, the ID was not on file, so it would not > have taken the LOCKED clause. I just added the locked clause to my > actual failing code to test the theory and it still takes the ELSE > clause because the record is truly not on file. > > I tried George's idea of using named common and the problem still > happens. > > One last clarification, the problem seems to occur if the READ statement > is a READU. If the statement is a regular READ, it does not happen. > > -Troy > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of David Jordan > Sent: Tuesday, December 22, 2009 1:23 PM > To: U2 Users List > Subject: Re: [U2] [UV] odd problem with read statement assigning > variablewith random data with else clause in pick flavor > > Hi Troy > > The problem with that code is that the else clause is taken when the > record is locked. You are assuming if the else clause is taken that the > record does not exist, which is not a safe assumption. I would suggest > > Readu citem from fv, key locked > * locked options > End then > * then options > End else > Citem = "" > end > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Buss, Troy > (Logitek Systems) > Sent: Wednesday, 23 December 2009 7:59 AM > To: [email protected] > Subject: [U2] [UV] odd problem with read statement assigning variable > with random data with else clause in pick flavor > > We are running universe 10.2.10 in pick flavor. > > > > I have a program (part of a 4gl subroutine) that simplified does the > following: > > > > CITEM = "" > > READU CITEM FROM F.FILE, CID THEN > > END ELSE > > IF CITEM # "" THEN PRINT "CITEM IS NOT NULL!" > > END > > > > According to the documentation, when running in pick flavor, the value > of CITEM is unchanged if the read fails. > > > > What happens is that CITEM is sometimes assigned to a random value and > not NULL. Right now it is being assigned to zero. Last week, this > same CITEM was being assigned to an escape sequence (about 8 characters > long) when the read failed. > > > > CITEM is a non-named common variable. This issues does NOT happen if > CITEM is not a common variable. > > > > The result also has varied if I use READU vs READ. Clearly there is a > bug here in retaining the value of CITEM with a READ statement in pick > flavor. Unfortunately, I have not been able to create a simple example > to reproduce this problem outside of the 4gl. And this does not happen > in all the code, only in one section so far and IS reproducible in this > one case from logon session to logon session. > > > > Any ideas? > > > > -Troy > > > > _______________________________________________ > U2-Users mailing list > [email protected] > http://listserver.u2ug.org/mailman/listinfo/u2-users > _______________________________________________ > U2-Users mailing list > [email protected] > http://listserver.u2ug.org/mailman/listinfo/u2-users > _______________________________________________ > U2-Users mailing list > [email protected] > http://listserver.u2ug.org/mailman/listinfo/u2-users > > _______________________________________________ U2-Users mailing list [email protected] http://listserver.u2ug.org/mailman/listinfo/u2-users
