2017-07-10 13 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個の物理的なファイルが動作しない4つのバイトを返します。

以前のバージョンでは整数データ型よりも前に使用されていました。

+0

DS **で返される4バイトの整数は** 10桁です。最大値は4,294,967,295です。 – Charles

+0

古いバイナリデータ型を前提としていても、9桁の数字をサポートしているため、64Kではなく999,999,999レコードのインデックスを作成できます。 – jmarkmurphy

+0

私はちょうど1つの場所で知っていました。たぶんそこにあるdsが間違って定義されていたかもしれません。それはRPG IIコードでした。 – danny117

関連する問題