【问题标题】:Sending IFS File to Outq Prints Line of "@" Symbols将 IFS 文件发送到 Outq 打印“@”符号行
【发布时间】:2019-03-04 15:50:24
【问题描述】:

我正在尝试将文件从 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 自动化执行操作命令不存在此问题。)针对此问题的解决方案正在构建中。此问题可能会在产品发布时得到解决。如果您发现此问题,请联系 IBM 软件支持。”

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

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

【问题讨论】:

  • 它与 Tivoli 无关。这些都是普通的 IBM i 命令。

标签: printing ibm-midrange qshell


【解决方案1】:

我得到不同的结果,但相似。我用 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/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)

【讨论】:

  • 删除 DEVTYPE(*USERASCII) 导致文件卡在 outq 中...每次我尝试释放它时,它都会回到被保留状态。我尝试了其他设备类型:AFPDS 给我随机字符,IPDS 不让我释放,SCS 给我不同的随机字符,LINE 不会释放,AFPDSLINE 也不会。
  • 检查 QSYSOPR 消息队列 (DSPMSG QSYSOPR) 中的消息,并检查写入器的作业日志(WRKWTR nnnnn,F17,选项 10)。查看详细消息,F10。这将为您提供有关为什么不打印输出的线索。系统和流文件的CCSID是什么?
  • 嗯,当我完全省略 DEVTYPE 时,它看起来现在只是默认为 *SCS。当我查看编写器的作业日志时,它没有给我新的错误,但在过去的某些时候它说“SCS 数据流无效。转换数据时发生错误”。这没有意义吗,因为我试图直接发送文本文件?流文件CCSID为1252,系统为65535。
  • 65535 的系统可能是您的结果与我的结果不同的原因。 65535 意味着(二进制,不翻译)即使很难翻译成美国英语。大多。我编辑了答案以获得更多建议。释放假脱机文件时,编写器的作业日志将给出错误。如果它无法处理文件,它会发出该消息并保存假脱机文件 - 使其“卡住”。
  • Scott Klement 解决方案奏效了!没有@符号。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 2018-01-01
  • 1970-01-01
相关资源
最近更新 更多