首页 > 解决方案 > 用于 SYSPRINT 或 SYSOUT 直接显示的大型机 Unix 代码页

问题描述

您好,这是我对 StackOverflow 的第一个问题,不确定论坛和主题。

在使用 Visual Studio Code 和 Putty for Unix 参与 Open Mainframe 计划时,我用 COBOL 开发了一个示例程序,显示国际谚语(目前为德语、英语、法语、西班牙语、拉丁语)。它可以通过 JCL 批处理到文件并从 REXX 调用来正常工作。在文件中,我看不到非英语的特殊字符,但我在 PL/1 中的双程序中获得了幸运的一击(做同样的事情并在 REXX 中显示特殊字符)。

现在我的问题是:我还尝试通过 mvscmd 从 Unix bash 脚本调用。到目前为止它有效,但没有向我显示特殊字符。好的,我有最后一次机会从 Python 调用 mvscmd。或者,我可以将文件从 MVS 传输到 unix(出于任何原因,它会自动转换并且我会看到我的特殊字符内容)。处理的地方在哪里?科博尔?(正如我所说,出于任何原因 PL/1 都可以做到。我只在 PL/1 中使用标准放置编辑与在 Cobol 中显示)。转换 Sysprint/Sysout?有没有专家可以帮帮我?

标签: unixcobolmainframecodepages

解决方案


这是我的 REXX 正在做的伎俩

/* rexx */
ARG PARM1 PARM2

PARAMETER = '/Z08800.FYD.DATA'

If Length(PARM1) > 0
   Then PARAMETER = PARAMETER","PARM1
If Length(PARM2) > 0
   Then PARAMETER = PARAMETER","PARM2
PARAMETER = "'"PARAMETER"'"

Address TSO "Alloc File(sysprint) Dataset(*)"
Address TSO "Alloc File(sysin) Dummy"

Address TSO "Call fyd.load(saypli)" PARAMETER

Address TSO "Free  File(sysprint)"
Address TSO "Free  File(sysin)"

现在是另一个负载,PL/1 - 但 COBOL 对 Sysout 而不是 Sysprint 执行相同的操作。

它显示在我的 REXX 终端中,该终端也由 ISPF 调用,然后在编辑面板中显示为 3.4。该程序没有手动输入,但读取文件。是的,这里没有分配这些说法,我通过动态分配来阅读它们,但我的字符串从哪里到 DISPLAY / PUT EDIT 并不重要


推荐阅读