2017-07-10 11 views

回答

6

你要找的文件信息數據結構(INFDS)的相對記錄號(RRN?)

397位。從manual

DCL-F MYFILE DISK(*EXT) INFDS(DBFBK); 

DCL-DS DBFBK; 
    FDBK_SIZE INT(10) POS(367); // Current line num 
    JOIN_BITS INT(10) POS(371); // JFILE bits 
    LOCK_RCDS INT(5) POS(377); // Nbr locked rcds 
    POS_BITS CHAR(1) POS(385); // File pos bits 
    DLT_BITS CHAR(1) POS(384); // Rcd deleted bits 
    NUM_KEYS INT(5) POS(387); // Num keys (bin) 
    KEY_LEN INT(5) POS(393); // Key length 
    MBR_NUM INT(5) POS(395); // Member number 
    DB_RRN INT(10) POS(397); // Relative-rcd-num 
    KEY CHAR(2000) POS(401); // Key value (max size 2000) 
END-DS; 
1

實施例打開文件與InfDs(InfDSk)選項,InfDSk具有限定:

dcl-ds InfDSk qualified ; 
    RRN uns(10) pos(397) ; 
end-ds ; 

記錄號RRN(或RECNO)是可配有:InfDSk.RRN

除了使用RRN,在一個鍵控訪問的文件中,我更喜歡CHAIN到特定的數據結構,然後寫入DS ...

+0

你意識到你可以在有或沒有數據結構的情況下使用RRN。 RRN用於選擇特定記錄,非常類似於密鑰訪問文件中的密鑰。它與檢索數據的存儲位置無關(數據結構與否)。 – jmarkmurphy

+0

上面的例子是獲得完整的10個職位還是隻有前4個字節(64K)的記錄? – danny117

+0

INFDS位置397-400中的4字節或10位無符號值可以具有最多4,294,967,295的值。 –

-1

使用SQL獲取完整的10位數的RRN。

exec sql declare x1 cursor for select rrn(a) rn, a.* from myfile/mlib a; 

exec sql open x1; 

exec sql fetch next from x1 into :myds; 

危險的數據結構的方法只返回四個字節超過64K的記錄397-400物理文件不起作用。

在我們使用整數數據類型之前的早期版本上。

+0

在DS **中返回的4字節整數是** 10個數字......可以具有最多4,294,967,295的值。 – Charles

+0

即使您假定舊的二進制數據類型,它們也支持9位數字,因此您可以索引999,999,999條記錄,而不是64K。 – jmarkmurphy

+0

我只知道在一個地方我是在超時訂單超過65k在一天出現問題。也許那裏的ds被錯誤地定義了。這是RPG II代碼。 – danny117

相關問題