2016-07-04 116 views
0

我有一個非鍵控物理文件(比如說X),我想根據key來訪問它。我使用了帶KEYFLD參數的OPNQRYF並共享它的ODP。在rpgle程序中我打開文件X在到達序列中(即未在F規格中指定K)。rpg程序是根據密鑰還是以到達的順序處理記錄?我也是面臨的一個奇怪的錯誤,當我做通過OPNQRYF進行鍵控訪問

Setll 1 XR 
read XR 

考慮XR作爲文件X.It的記錄格式是跳過第一個記錄和第二個記錄以後閱讀。

回答

2

如果你的文件沒有被鍵入,它將按照到達順序讀取。

對於SETLL,嘗試

SETLL *LOVAL XR

第一條記錄之前應正確定位。

如果要通過密鑰訪問文件,請使用所需密鑰在其上創建視圖或邏輯文件。然後一定要在F規範中將其指定爲鍵控文件。或者只是使用SQL來檢索ORDER BY子句的記錄。

+0

建議在OP中,程序是從共享Open Data Path(ODP)中讀取的,該Open Data Path是通過Open Query File(OPNQRYF)用鍵控訪問路徑定義\創建的,顯然每個指定的字段名稱在關鍵字段(KEYFLD)參數上。重要的是ODP,而不是「文件沒有鍵入」。 FWiW定位到* first *記錄,使用'SETLL * START X'。 FWiW VIEW不能被鍵入[用於創建查詢ODP時除外];鍵控LF的SQL等價物是[binary radix] INDEX。 – CRPence

+0

我不記得OPNQRYF是在原始問題中。無論是它還是我的咖啡都很低。或者還沒有看到OPNQRYF這麼久,我就讀過它..哈哈..感謝評論,查爾斯。 – bvstone