PDA

View Full Version : SETGT + %EQUAL



Seiten : 1 [2]

B.Hauser
03-04-08, 08:59
... ich könnte jetzt sagen, das war doch schon immer so (auch unter RPGIII)!

Bei RPGIII konnten bei SETLL die Hoch- (Pos.71-72) und die Gleich-(Pos.75-76) Bezugszahl gesetzt werden.

Die Hoch-Bezugszahl ging an, wenn ein folgender Read erfolgreich wäre, was aber nicht heißt, dass es (mindestens) einen Satz mit den entsprechenden Schlüssel-Feldern gibt (was %Found()) entspricht.

Die Gleich-Bezugszahl ging an, wenn ein Chain mit dem gleichen Schlüssel erfolgreich gewesen wäre (was %EQUAL()) entspricht.

Dadurch kann es sein, dass %FOUND() angeht, während %EQUAL() *OFF zurückliefert, was von vielen auch hochkarätigen Schulungsleitern als Bug angeprangert wird. (Obwohl sich zu RPGIII nichts geändert hat.)

Bei SETGT konnte schon immer nur die Hoch-Bezugszahl gesetzt werden, d.h. diese Bezugszahl ging an wenn ein folgener READP erfolgreich wäre (was %Found() entspricht) . Da man beim SETGT eigentlich davon ausgeht, dass man zumindest im letzten Schlüssel-Feld den Maximal-Wert (*HiVal) angibt, damit sicher nach dem letzten Satz positioniert wird, macht die Abfrage nach einem genauen Treffer auch wenig Sinn!

rscheppe
03-04-08, 10:22
...immer wieder interessant, das Forum.
Ich frage mich, warum man beim SETGT nicht einfachheitshalber ohne den *HIVAL im letzten Teilschlüssel auskommen sollte??
Wenn ich mit SETGT arbeite, lasse ich diesen stets weg und wenn ich dann READPE wieder mit diesem Teil-Key mache und mit %EOF abfrage (letzteres habe ich gerade von Euch gelernt - danke nochmals), habe ich doch mein Ergebnis!
Oder setzt bei mir mal wieder die Logik aus?

Fuerchau
03-04-08, 11:22
In diesem Fall gilt *HIVAL als Default.
Klar kannst du diesen weglassen, aber zur Programm-Dokumentation doch ganz hilfreich.