This time, I'll keep it short, and just show the simplest COS iterator. Because in these examples, I am using Caché ObjectScript and not Caché Objects I have no objects to encapsulate index state. So I will use call-by-reference to allow a single Next() function to return both the index and the value of each record which are declared in the caller.
For a simple single key global (here called ^xs) the definition of the iterator is this :
StartIterator(&i)
set i = ""
quit
Next(&i,&val)
set i=$order(^xs(i))
if i="" { quit 0 }
set val=$get(^xs(i))
quit 1
And we can use it like so :
test()
new i,val
do StartIterator(.i)
while $$Next(.i,.val) {
write !, i_" : "_val ; example "do something"
}
quit
You'll see that test(), which represents some kind of business logic, has no direct mention of ^xs and no commitment to its structure (except that there is a single index, i which steps through it).
OK, that's the basic idea. It should be reasonably self-evident if you've even started working with Caché. Next episode, I'll delve into the uglier problems of multi-key globals.
See? Told you this would be a quick one. :-)
Nenhum comentário:
Postar um comentário