PDA

View Full Version : Geschlüsselte Datei nicht sortiert



_MG_
31-01-17, 13:24
Hallo zusammen,

ich hätte eine kurze Verständnisfrage.
Ich habe eine Datei die mir in der Dateibeschreibung (dspfd) als geschlüsselt angezeigt wird.

Lasse ich mir jedoch mit 5 den Inhalt der Teildatei anzeigen, oder wähle mit SQL alle Datensätze aus, so ist die Sortierreihenfolge eine ganz andere.

1. Wie ist das möglich?
2. Kann man auf solch eine Datei dann trotzdem geschlüsselt zugreifen (setll, reade etc)?

Danke im Voraus!

B.Hauser
31-01-17, 14:08
Auf eine geschlüsselte Datei kann man immer mit native I/O in RPG und Cobol zugreifen.
Der Schlüssel ist nur zum Zugriff da.

Die Daten selber werden in Eingangsfolge in die Datei geschrieben, d.h. hinten angefügt. Sofern die Datei/Tabelle mit REUSEDLT(*YES) definiert ist, werden zunächst die Lücken, die gelöschte Datensätze hinterlassen haben ausgefüllt.

Erfolgt der Zugriff über SQL, so entscheidet der Query Optimizer ob die Daten nach Eingangsfolge (Table Scan) oder über einen Zugriffsweg (Index Access) erfolgt. Werden die Daten in einer bestimmten Reihenfolge benötigt, so muss man in SQL immer einen ORDER BY hinzufügen, anderenfalls besteht keine Garantie, dass die Daten immer in der gewünschten Reihenfolge ausgegeben werden.

Birgitta

Fuerchau
31-01-17, 14:13
DSPPFM zeigt die Daten in Speicherfolge.
Da man REUSEDLT(*YES) bei Schlüsseldateien immer verwenden sollte (bei SQL-Tables default), musst du beim Zugriff per RLA über eine LF bzw. per Key (SETLL/READN) oder bei SQL einen Order By angeben.
Ansonsten ist die Sortierung nicht definiert und hängt von vielen Faktoren ab.

_MG_
31-01-17, 15:15
...alles klar, verstehe. Danke für die Erläuterungen.

Pikachu
01-02-17, 10:46
Interessant dazu ist auch der Parameter FROMRCD des Befels CPYF (http://www.rpgpgm.com/2015/08/speeding-up-cpyf.html).