RPGLEの物理ファイルを介してポインタの読み取り位置を取得できますか?RPGILEの物理ファイルを介してポインタの読み取り位置を取得できますか?
私はそのポジションを保存して後でそれに戻ることができますか?
RPGLEの物理ファイルを介してポインタの読み取り位置を取得できますか?RPGILEの物理ファイルを介してポインタの読み取り位置を取得できますか?
私はそのポジションを保存して後でそれに戻ることができますか?
あなたはファイル情報データ構造(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;
から
例InfDs(InfDSk)
オプションを使用してファイルを開き、InfDSkはで定義:
dcl-ds InfDSk qualified ;
RRN uns(10) pos(397) ;
end-ds ;
レコード番号RRN(又はRECNO)で利用可能である:InfDSk.RRN
RRNを使用する代わりに、アクセスされたファイルで、私は特定のデータ構造に対してCHAINを優先し、後でDSを書きます...
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つのバイトを返します。
以前のバージョンでは整数データ型よりも前に使用されていました。
DS **で返される4バイトの整数は** 10桁です。最大値は4,294,967,295です。 – Charles
古いバイナリデータ型を前提としていても、9桁の数字をサポートしているため、64Kではなく999,999,999レコードのインデックスを作成できます。 – jmarkmurphy
私はちょうど1つの場所で知っていました。たぶんそこにあるdsが間違って定義されていたかもしれません。それはRPG IIコードでした。 – danny117
データ構造の有無にかかわらずRRNを使用できることを理解してください。 RRNは、キー付きアクセスファイルのキーとよく似た特定のレコードを選択するために使用されます。それは、検索されたデータがどこに格納されるか(データ構造かどうか)とは関係ありません。 – jmarkmurphy
上記の例では、完全に10個の位置か、最初の4バイト(64K)のレコードだけが得られますか? – danny117
INFDSの397〜400桁の4バイトまたは10桁の符号なし値は、4,294,967,295までの値を持つことができます。 –