2016-07-04 21 views
0

Ich habe eine nicht-verkeilt physische Datei (sagen X) und ich möchte es für den Zugriff nach einem key.I verwendet haben OPNQRYF mit KEYFLD Parameter und teilten es ODP.In RPGLE Programm öffne ich die Datei X in der Ankunftsreihenfolge (dh nicht spezifiziert K auf F specs). Behandelt das RPG-Programm die Aufzeichnungen entsprechend dem Schlüssel oder in der ankommenden Reihenfolge? Auch bin vor mir einen seltsamen Fehler, wenn ich tueKeyed Zugang durch OPNQRYF

Setll 1 XR 
read XR 

Betrachten XR als Aufzeichnungsformat der Datei X.It wird den ersten Datensatz Überspringen und weiter von den zweiten Datensatz zu lesen.

Antwort

2

Wenn Ihre Datei nicht verschlüsselt ist, wird sie in der Ankunftssequenz gelesen.

Für die SETLL, versuchen

SETLL *LOVAL XR

Das ist richtig vor dem ersten Datensatz positionieren sollten.

Wenn Sie über den Schlüssel auf die Datei zugreifen möchten, erstellen Sie eine Ansicht oder logische Datei darüber mit dem gewünschten Schlüssel. Stellen Sie dann sicher, dass Sie es in der F-Spezifikation als codierte Datei angeben. Oder verwenden Sie einfach SQL, um die Datensätze mit ORDER BY-Klausel abzurufen.

+0

im OP Vorgeschlagen ist, dass das Programm von der gemeinsamen genutzten Open Data Path ist das Lesen (ODP), die \ mit einem verschlüsselten Zugriffspfad über die Abfragedatei öffnen (OPNQRYF), anscheinend pro Spezifizierungsfeld Namen (n) erstellt wurde definiert auf dem Schlüsselfeld (KEYFLD) -Parameter. Was zählt, ist das ODP, und nicht, ob die Datei nicht verschlüsselt ist. FWiW, um zum * ersten * Eintrag zu positionieren, benutzen Sie 'SETLL * START X'. FWiW eine VIEW kann nicht eingegeben werden [außer wenn zum Erstellen einer Abfrage ODP verwendet wird]; Das SQL-Äquivalent eines getasteten LF ist der [binary radix] INDEX. – CRPence

+0

Ich kann mich nicht daran erinnern, dass OPNQRYF in der ursprünglichen Frage war. Entweder das oder ich hatte wenig Kaffee. Oder ich habe OPNQRYF schon so lange nicht mehr gesehen, dass ich direkt darüber gelesen habe ... haha ​​.. Danke für den Kommentar, Charles. – bvstone