您可以使用 RPG 将附加行附加到打印机文件吗?

Can you use RPG to append additional lines to a printer file?

有没有办法在打印机文件的末尾附加额外的行?我用来创建打印机文件的大多数技术(RPG O 规范,写入外部定义的文件)都会导致每个程序只有一个输出文件。我想在一个程序或过程中写一些行,然后让另一个程序或过程打开文件并写额外的行。

具体用例是有一个 "order header" 对于多个报告来说是相同的,其中的行项目数据是特定于报告的。我想我可以将所有这些都保存在一个大型程序中,报告变体在单独的 RPG 子例程中,但我喜欢从几个不同的程序中调用通用目的 header 的模块化,将来可能还会有其他报告。

系统的体系结构可能会阻止这种类型的技术,因为我不清楚如何保持文件打开并传递它或打开一个已关闭的文件,该文件已放入输出 queue.我过去使用过 CPYSPLF,虽然我可能可以用它来读取以前写的内容,但创建一个文件似乎毫无意义,关闭它,将它复制到 QTEMP,读取它,然后 re-write 它到另一个文件, 然后删除第一个打印机文件。或许还有其他我没有想到的方法。

是的,这当然是do-able...
现代方式
利用 LIKEFILE 关键字将打开的打印机文件作为参数传递。 见 https://www.itjungle.com/2012/03/21/fhg032112-story01/

老派方式
创建一个发出 OVRPRTF FILE(PRNTFILE) SCHEDULE(*FILEEND) SHARE(*YES) 然后调用 PGM1 和 PGM2 的 CL 程序; PGM1 需要让 PRTF 打开,所以不要在 PGM1 中设置 *LR。

这是一篇文章: https://www.itjungle.com/2011/05/11/fhg051111-story02/