<quote who="Mark Johnson">
> I agree. Be careful to not trip over a record written in later frames.
> Although WRITE after DELETE prevents the problem.
>
> I have an observed question. Is there any MV flavor that requires the null
> expression for DICT with opening the DATA level of a file. I stopped using
> that unnecessary code over 20 years ago and don't think it's required
> anywhere.
>
> Plus, all seem to support OPEN "DICT CUSTOMER" having both in one pair of
> quotes without the comma. The OPEN "","CUST" just looks extraneous and
> illustrates being taught something once and not realizing that the teacher
> may have been limited.

I don't know the answer, but as the original poster of the question, I
have just a bit of history:

I started on PICK native machines, which were upgraded to AIX boxes
running uniVerse shortly thereafter (UV5.3) and learned how to program
better on that platform. I'm not a programmer; I use programming to solve
problems. Just a bit different way of looking at the world, IMO.

The point? I remember figuring out at one release of UV (don't remember
which; 6.N? 7.N) that I could use SINGLE QUOTES instead of DOUBLE QUOTES
when doing:

OPEN '','FILE'  . . .
rather than
OPEN "","FILE"  . . .

That saved me at least one keypress per quote...

KLP

> Just asking.
>
> ----- Original Message -----
> From: "Derek Falkner" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Monday, December 13, 2004 11:15 AM
> Subject: RE: [U2] LOOP or GOTO on READNEXT
>
>
>> Karl,
>>
>> I cannot speak to the issue of speed but I am concerned about the safety
> of
>> either process; I believe you may end up with missing employees!
>>
>> I believe the BASIC SELECT sets a pointer at the start of group 1 and
> steps
>> it through each item in that group before moving on to group 2. What
>> could
>> happen is that the record with the new 6 digit key is written to a later
>> group and the item with the old key is deleted. Later, the SELECT would
> pick
>> up the new employee and, even though it already has a 6-digit key, would
>> write it back to the file and then immediately delete it!
>>
>> I would prefer to see a TCL-style SELECT be performed instead of the
>> BASIC
>> SELECT, e.g. PERFORM "SELECT CUSTEMP" instead of SELECT CF. This will
>> definitely not select any of the newly-created items, though it would
>> also
>> fail if any employees on file already had 6-digit keys.
>>
>> Alternatively, you could check the new item key differs from the
>> original
>> item key before deleting an item.
>> E.g.    write REC on CF,NK
>>          if K # NK then
>>             delete CF,K
>>          end
>>
>> If my understanding of the BASIC SELECT is wrong I would be happy if
> someone
>> on this list could enlighten me.
>>
>> Oh, and I must add that I much prefer the LOOP ... REPEAT syntax too! I
>> wouldn't imagine there would be much difference in speed and I find it
>> easier to write/debug.
>>
>> Thanks for the interesting question!
>>
>> Derek Falkner
>> Kingston, Ontario, Canada
>>
>>
>> -----Original Message-----
>> From: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] On Behalf Of
>> [EMAIL PROTECTED]
>> Sent: Monday, December 13, 2004 10:33 AM
>> To: [EMAIL PROTECTED]
>> Subject: [U2] LOOP or GOTO on READNEXT
>>
>>
>> I've seen 2 ways to read a client key, change the length to 6 digits,
>> then
>> write it back out, delete the old one and move on:
>>
>> EXAMPLE 1 of 2:
>> !(FIXEMPNO) - Fix the employee number length
>>       open '','CUSTEMP' to CF else stopm 'Not'
>>       select CF
>> 10:   readnext K else stop
>>       read REC from CF,K then
>>          NK = fmt(K,"R%6")
>>          write REC on CF,NK
>>          delete CF,K
>>       end
>>       go 10
>>    end
>>
>> EXAMPLE 2 of 2:
>> !(FIXEMPNO) - Fix the employee number length
>>       DONE = 0
>>       open '','CUSTEMP' to CF else stopm 'Not'
>>       select CF
>>       loop
>>          readnext K else DONE = 1
>>       read REC from CF,K then
>>          NK = fmt(K,"R%6")
>>          write REC on CF,NK
>>          delete CF,K
>>       end
>>       repeat
>>    end
>>
>> My intent is not to start a religious discussion about GO or GOTOs
>> because
> I
>> see that method all over the place and regardless of why, who or
>> whatever,
>> my question is, which is faster. (I prefer using loop..repeat syntax,
> FWIW).
>>
>> --
>> Karl L. Pearson
>> Director of IT,
>> ATS Industrial Supply
>> Direct: 801-978-4429
>> Toll-free: 800-789-9300 1,29
>> Fax: 801-972-3888
>> http://www.atsindustrial.com
>> [EMAIL PROTECTED]
>> -------
>> u2-users mailing list
>> [EMAIL PROTECTED]
>> To unsubscribe please visit http://listserver.u2ug.org/
>> -------
>> u2-users mailing list
>> [EMAIL PROTECTED]
>> To unsubscribe please visit http://listserver.u2ug.org/
> -------
> u2-users mailing list
> [EMAIL PROTECTED]
> To unsubscribe please visit http://listserver.u2ug.org/
>


-- 
Karl L. Pearson
Director of IT,
ATS Industrial Supply
Direct: 801-978-4429
Toll-free: 800-789-9300 1,29
Fax: 801-972-3888
http://www.atsindustrial.com
[EMAIL PROTECTED]
-------
u2-users mailing list
[EMAIL PROTECTED]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to