RPGLE - 在PF中的特定位置(RRN)写入

时间:2016-07-12 20:49:12

标签: file record opcode rpgle rpg

我需要在RRN(相对记录号)处理的PF中的特定位置(例如:20个中的3个)写一个新记录。 具体来说,它是一个多成员PF。

我该怎么做?

4 个答案:

答案 0 :(得分:2)

以下是关于使用源代码管理(SCM)系统评论代码的有趣讨论。

Why unused code should be deleted?

答案 1 :(得分:1)

你不能。

您可以重写现有记录。但是在编写新记录时,数据库会决定它的放置位置。

如果您有一个包含5条记录的文件,请输入#1-5。你删除记录2& 3.您以后不能再次添加记录#3。

如果文件被定义为REUSEDLT(* NO),那么它就会结束。如果文件是REUSEDLT(* YES),则DB可以重用已删除的记录,或者可以将其添加到文件的末尾。

答案 2 :(得分:1)

源物理文件(PF-SRC)的默认描述[即由创建源物理文件(CRTSRCPF)命令创建的系统提供的定义具有行编号的源序列(SRCSEQ)字段,允许插入十分之一和百分之一,作为SrcSeq的任何整数行号的偏移量。插入新的记录并在现有行号的值之间插入行号,可以使用重组物理文件成员(RGZPFM)重新排序这些行,并指定键控源逻辑文件(LF-SRC),已将SRCSEQ定义为物理源成员的密钥;即每个重组请求的密钥文件(KEYFILE)参数上的LF规范,可选地,源更新选项(SRCOPT)的值为* SRCSEQ,以实现所需的源序列编号(SRCSEQ)默认或明确指定重新组织请求。

可以通过执行[原子]:将原始源数据的副本复制到临时文件中来制作完整的效果,从而制作偏移行数记录的插入[即]现有记录之间的新SeqNbr]到临时副本中,在临时副本中更新到SrcDta以获取任何特定的旧SeqNbr值,清除原始源,然后将已更新的临时副本中的有序源数据复制到原始源成员中。实际上,按照@ user2338816模仿“任何源编辑器的方式”可以更改数据,同时还允许插入行。

答案 3 :(得分:0)

我看到你发布的另一个答案的评论:

  

我只是将RRN从最低记录中移除一个,然后添加新记录。

不确定这是否相关,但您可以将记录(通过RRN)复制到文件的末尾 - 您甚至可以更改它以便插入到另一个文件中? (如源历史文件)

INSERT INTO YOURFILE                                     
      SELECT * FROM YOURFILE WHERE RRN(YOURFILE) = 40

然后更新该记录相同的记录

UPDATE UCWSDTLS SET SRCDTA = 'Whatever' WHERE RRN(UCWSDTLS) = 40

希望这有点帮助