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

File RPGLE-在PF中的特定位置(RRN)写入,file,record,opcode,rpgle,rpg,File,Record,Opcode,Rpgle,Rpg,我需要在RRN(相对记录编号)处理的PF中的特定位置(例如:20个位置中的3个)写入新记录。 具体来说,它是一个多成员PF 我该怎么做?你不能 您可以重写现有记录。但在编写新记录时,DB决定将其放在何处 如果您有一个包含5条记录的文件,rrn#1-5。然后删除记录2和记录3。以后不能再添加记录#3 如果文件定义为REUSEDLT(*否),则它将在末尾执行。如果文件被重用lt(*是),则DB可以重用已删除的记录或将其添加到文件末尾。您不能 您可以重写现有记录。但在编写新记录时,DB决定将其放在何处

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

我该怎么做?你不能

您可以重写现有记录。但在编写新记录时,DB决定将其放在何处

如果您有一个包含5条记录的文件,rrn#1-5。然后删除记录2和记录3。以后不能再添加记录#3

如果文件定义为REUSEDLT(*否),则它将在末尾执行。如果文件被重用lt(*是),则DB可以重用已删除的记录或将其添加到文件末尾。

您不能

您可以重写现有记录。但在编写新记录时,DB决定将其放在何处

如果您有一个包含5条记录的文件,rrn#1-5。然后删除记录2和记录3。以后不能再添加记录#3


如果文件定义为REUSEDLT(*否),则它将在末尾执行。如果文件被重用lt(*是),则DB可以重用已删除的记录,或者将其添加到文件末尾。

下面是一个关于注释代码与使用源代码管理(SCM)系统的有趣讨论


这里有一个有趣的讨论,是关于注释代码与使用源代码管理(SCM)系统的比较


我看到你在另一个答案上发表的评论:

我只需将RRN从最低记录移动1,然后添加新记录

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

然后将该记录更新为同一记录

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

希望这有点帮助

我看到你在另一个答案上发表的评论:

我只需将RRN从最低记录移动1,然后添加新记录

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

然后将该记录更新为同一记录

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

希望这有点帮助

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


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

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


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

Hi Charles!我会尽量弄清楚我需要做什么。我必须自动替换源文件中的字符(这就是为什么多成员的原因),但也要通过注释保留记录的早期版本。你会怎么做?我只需将最低记录的RRN移位1,然后添加新记录。@LppEdd您的操作方式与任何源代码编辑器的操作方式相同。将记录读入数组,并在将修改后的数组写回成员时添加新行。所有记录总是在清除成员后写回。对内存中的数组进行修改。只是给你一点“更新”。那时我基本上刚刚开始工作