将 IFS 文件发送到 Outq 打印“@”符号行
Sending IFS File to Outq Prints Line of "@" Symbols
我正在尝试将文件从 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!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
我没有在网上找到任何关于类似问题的帖子,并尝试更改值并寻找其他开关以使其正常工作。我所做的一切似乎都无法解决问题。
是否有我遗漏的命令或开关,或者我那里的东西已经导致了这个?
编辑:
我发现this documentation这是我第一次看到提到这个问题,但它不是很有帮助:
“采取行动命令的消息可能包含 一长串 "at" 符号 (@) 在弹出消息中。 (在情境中配置的 Reflex 自动化 Take Action 命令不存在此问题。)此问题的解决方案正在构建中。此问题可能会在产品发布时得到解决。如果您看到此问题,请联系 IBM 软件支持。”
唯一的区别是:1) 这不是弹出消息,它是打印出来的。 2) 我不相信我们使用 Tivoli Monitoring,虽然我可能是错的。
假设我们使用 Tivoli Monitoring,解决方案是什么?除此以外没有其他文档,而且我不是系统管理员,所以我无法亲自致电 IBM 软件支持。假设我们不使用它,还有什么可能导致这个问题?
我得到不同的结果,但相似。我用 Windows Explorer 创建了一个 test.txt,输入 Hello, world!,保存并尝试脚本。我对 'Hello, world!' 和 @ 符号行感到胡言乱语。
我的系统是 7.3 TR5,CCSID 37(美国英语),我的 IFS 文件是 CCSID 1252(Windows 英语)。如果我使用 CCSID 819 (US ASCII) 的流文件,结果没有改变。
我没有运气修改 Rfile 开关。
我发现删除 devtype(*userascii) 会生成没有 @ 符号的纯英语打印输出。你真的需要 *USERASCII 吗?我认为对于预先格式化的 'print-ready' 文件(如 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/PRTSTMF中的数据为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)
我正在尝试将文件从 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!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
我没有在网上找到任何关于类似问题的帖子,并尝试更改值并寻找其他开关以使其正常工作。我所做的一切似乎都无法解决问题。
是否有我遗漏的命令或开关,或者我那里的东西已经导致了这个?
编辑:
我发现this documentation这是我第一次看到提到这个问题,但它不是很有帮助:
“采取行动命令的消息可能包含 一长串 "at" 符号 (@) 在弹出消息中。 (在情境中配置的 Reflex 自动化 Take Action 命令不存在此问题。)此问题的解决方案正在构建中。此问题可能会在产品发布时得到解决。如果您看到此问题,请联系 IBM 软件支持。”
唯一的区别是:1) 这不是弹出消息,它是打印出来的。 2) 我不相信我们使用 Tivoli Monitoring,虽然我可能是错的。
假设我们使用 Tivoli Monitoring,解决方案是什么?除此以外没有其他文档,而且我不是系统管理员,所以我无法亲自致电 IBM 软件支持。假设我们不使用它,还有什么可能导致这个问题?
我得到不同的结果,但相似。我用 Windows Explorer 创建了一个 test.txt,输入 Hello, world!,保存并尝试脚本。我对 'Hello, world!' 和 @ 符号行感到胡言乱语。
我的系统是 7.3 TR5,CCSID 37(美国英语),我的 IFS 文件是 CCSID 1252(Windows 英语)。如果我使用 CCSID 819 (US ASCII) 的流文件,结果没有改变。
我没有运气修改 Rfile 开关。
我发现删除 devtype(*userascii) 会生成没有 @ 符号的纯英语打印输出。你真的需要 *USERASCII 吗?我认为对于预先格式化的 'print-ready' 文件(如 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/PRTSTMF中的数据为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)