PDA

View Full Version : Logical Files mit "s" oder "o"



Brownie
27-10-02, 19:42
hi board,

hat jemand Erfahrungen mit omit oder select bei logical files. ich gebe in der lf z.b. select an (feld im key definiert) und stelle fest, dass trotztdem die ganze datei durchgelesen wird. (ist grosse datei).
ich hätte gedacht, dass die logical nur die sätze enthält, die dem selectwert entsprechen.
vielen dank und happy halloween
brownie, dem's jetzt schon graut!

Gerlitz
27-10-02, 21:19
Funktionieren tut bei mir z.B. diese Datei:

A*
A* ----------
A R ARTF PFILE(ART)
A* ----------
A*
A K ASFIRM
A K ASARTA
A*
A S ASARTA RANGE(' ' '100000 ')

Und

A S ASARTA CMP(LT '100000 ')
A S ASARTA CMP(GT '900000 ')

bewirkt, daß nur Sätze kleiner 100000 ODER größer als 900000 ausgewählt werden.

Dagegen bewrikt

A S ASARTA CMP(GE '100000 ')
A ASARTA CMP(LE '900000 ')

daß alle Sätze größer 100000 UND kleiner als 900000 ausgewählt werden.

Um die UND-Bedingung zu erreichen, wurde das "S" vor dem zweiten ASARTA wegelassen.

Gruß

Matthias

Brownie
28-10-02, 13:05
Hallo Matthias,

danke für die schnelle Antwort. Meine Logical sieht genauso aus. Ein query auf die logische zeigt, dass es auch funktioniert. muss wohl ein problem im ile-rpg sein (von mir). wie sieht denn dort deine "F-Zeile" aus.

Danke und Gruss aus Nürnberg
Brownie

Fuerchau
29-10-02, 09:20
Inwieweit eine Select/Omit-Defnition wirkt, kann man mittels RUNQRY direkt ermitteln.
Unabhängig davon gilt immer:

Die Datei mit Schlüssel definieren, im RPG(/LE) die Datei als IF (Input File) und nicht IP (Input Primary) definieren und mittels SETLL und READE (auch verkürzte Schlüssel) die Bearbeitung auf das notwändige beschränken !

B.Hauser
29-10-02, 10:52
Nur so ein Verdacht:
Verarbeitest Du zufällig in deinem Programm mehrere logische Dateien mit dem gleichen Record-Format auf die gleiche physische Datei?
(oder auch die physiche und mindestens eine logische)

Wenn ja musst Du mindestens 1 Format in den F-Bestimmungen umbenannt haben (Schlüssel-Wort RENAME).

Kann es weiter sein, dass Du bei deiner Leseoperation nicht das umbenannte Format, sondern das Original-Format verwendest, und somit die falsche logische Datei verarbeitest?

Birgitta

Brownie
30-10-02, 08:37
Hi *all,

danke für alle antworten.

der vorschlag von fuerchau wars. hatte die datei mit ip gelesen und da liest er scheinbar, obwohl die logische ja felder omitted resp. included, a l l e sätze.

ich verstehs zwar nicht ganz, denn wenn ich mit setll und read arbeite brauche ich s/o in der logischen eigentlich nicht.
Oder entgeht mir da etwas.

Danke und Gruss
brownie

Fuerchau
30-10-02, 09:05
Wenn in der Dateibestimmung die LF benannt wird, dann wird auch mit IP (input Primary)nur das gelesen, was in der LF definiert ist.

Aber:

Da man ja nicht unbedingt ALLE Sätze dieser LF benötigt und ggf. per Übergabeparameter (*ENTRY) die Datensätze zusätzlich mittels IF einschränkt, liest man nun mal mehr als man für die Aufgabe benötigt.

Tipp:

Wenn man unbedingt mit IP arbeiten will, in einem vorgeschalteten CLP mittels OPNQRYF die Daten selektieren:

PGM

OVRDBF ... SHARE(*YES)
OPNQRYF
CALL PGMXY
CLOF

ENDPGM