2

我正在尝试将文件从 IFS 发送到我们的 AS/400 系统上的 outq。每当我这样做时,我都会得到我发送的确切信息,以及末尾附加的一行不同长度的“@”符号。

这是我正在使用的命令:

qsh cmd('cat -c /path/test.txt | Rfile -wbQ -c "ovrprtf file(qprint) 
outq(*LIBL/ABCD) devtype(*USERASCII) rplunprt(*no) splfname(test) hold(*no)" 
qprint')

的内容test.txt只是Hello World!

我发送命令时得到的输出是

Hello World!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

我没有在网上找到任何关于类似问题的帖子,并尝试更改值并寻找其他开关以使其正常工作。我所做的一切似乎都无法解决这个问题。

是否有我缺少的命令或开关,或者我那里的东西已经导致了这个?

编辑:

我发现了这个文档,这是我第一次看到提到的这个问题,但它不是很有帮助:

“执行操作命令的消息可能由弹出消息中的一长串“at”符号 (@)组成。(在情境中配置的 Reflex 自动化执行操作命令不存在此问题。)针对此问题的解决方案正在构建中。此问题可能会在产品发布时得到解决。如果您发现此问题,请联系 IBM 软件支持。”</p>

唯一的区别是:1)这不是弹出消息,它是打印出来的。2) 我不相信我们使用 Tivoli Monitoring,尽管我可能是错的。

假设我们确实使用 Tivoli Monitoring,解决方案是什么?在那之后没有其他文档,而且我不是系统管理员,所以我不能亲自致电 IBM 软件支持。假设我们不使用它,还有什么可能导致这个问题?

4

1 回答 1

2

我得到不同的结果,但相似。我用 Windows 资源管理器创建了一个 test.txt,输入 Hello, world!,保存并尝试了脚本。我为“你好,世界!”而胡言乱语。然后是@符号行。

我的系统是 7.3 TR5,CCSID 37(美国英语),我的 IFS 文件是 CCSID 1252(Windows 英语)。如果我使用 CCSID 819 (US ASCII) 的流文件,结果不会改变。

我没有运气修改Rfile开关。

我发现删除 devtype(*userascii) 会产生没有@符号的纯英文打印输出。你真的需要 *USERASCII 吗?我认为这对于 Postscript 等预先格式化的“可打印”文件来说更合适。

编辑:还有一些事情要尝试我不明白为什么 *USERASCII 添加那些 @ 符号;它看起来像一个翻译问题。

我试过了,但仍然得到了额外的 @@@... 你可能不得不使用 TOCCSID() 参数。虽然失败了,但它确实给了我一个想法:如果这些 @ 符号是按原样发送到 *USERASCII 打印流的 EBCDIC 空间怎么办?我们所需要的只是一种只发送流文件中字节数的方法,而无需任何填充。

CRTPF FILE(QTEMP/PRTSTMF) RCDLEN(132)

CPY OBJ('/path/test.txt') TOOBJ('/qsys.lib/qtemp.lib/prtstmf.file/prtstmf.mbr') replace(*yes)

ovrprtf file(qprint) outq(*LIBL/prt3812) devtype(*USERASCII) rplunprt(*no) splfname(test) hold(*no)

cpyf prtstmf qprint

QTEMP/PRSTMF 中的数据是 ASCII 格式的;DSPPFM 显示了这么多。它还显示了一堆空格:毕竟它是一个固定长度的文件。我的下一步是编写一个 RPG 程序来读取流文件并打印它,但 Scott Klement 已经这样做了:http ://www.scottklement.com/PrtStmf.zip

这适用于我的系统:

ovrprtf file(qsysprt) outq(*LIBL/abcd) devtype(*USERASCII) rplunprt(*no) splfname(test) hold(*no)

prtstmf stmf('/path/test.txt') outq(abcd)
于 2019-03-05T16:21:12.120 回答