是否可以通过RPGILE中的物理文件获取指针读取的位置?

Is it possible to get the position of the pointer reading through a Physical File in RPGILE?

在RPGLE中是否可以通过物理文件获取指针读取的位置?

这样我就可以存储该位置并稍后返回?

您正在查找相关记录号(RRN?)

文件信息数据结构 (INFDS) 的位置 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

在键控访问的文件中,我更喜欢使用 CHAIN 而不是使用 RRN,而不是特定的数据结构,然后再编写 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;

危险仅限数据结构方法returns 超过 64k 记录的四字节 397-400 物理文件不起作用。

在我们使用的整数数据类型之前的早期版本中。