有没有办法像其他语言一样在 COBOL 中记录变量?

问题描述 投票:0回答:3
我知道有

DISPLAY

 语句可以让你“记录”任何变量值。然而,我的问题是:有没有办法做类似 PHP 中的 
var_dump
 或 JavaScript 中的 console.log 的事情,当你给它们一个变量时,它们会打印值和变量名称。

假设我有以下数据:

01 MY-DATA. 05 FIRST-PART PIC X(05) VALUE 'DATA1'. 05 SECOND-PART PIC X(05) VALUE 'DATA2'.
我的问题是:有没有办法在我的日志上有类似的东西(通过一次调用和任何给定的变量):

'MY-DATA:' 'FIRSTPART : DATA1' 'SECOND PART: DATA2'
    
cobol mainframe cobol85
3个回答
4
投票
不适用于任何当前支持的大型机 IBM COBOL 编译器(我看到您已用“大型机”标记了您的问题)。

曾经有 EXHIBIT 语句,但在 Enterprise COBOL 中“未实现”。该链接上有一些关于您自己实现类似功能的讨论。

我为自己编写了一个 ISPF 编辑宏,以生成 COBOL 代码来执行等效的 DISPLAY,如上面的 IBM 文档链接所示。

过度杀戮就是调用 CEE3DMP,但众所周知,我在沮丧时会过度杀戮。

您也许可以使用其他更精细的语言环境

转储服务

之一,例如 CEEVDMP 或 CEEHDMP。

使用 Enterprise COBOL V6R1,您可以在 MY-DATA 上使用 JSON GENERATE 语句,然后将输出从 UTF-16 转换为 EBCDIC,然后显示它。

3
投票
Working-storage section. 01 MY-DATA. 05 FIRST-PART PIC X(05) VALUE 'DATA1'. 05 SECOND-PART PIC X(05) VALUE 'DATA2'. 1 i pic 9999 comp. 1 jn pic N(100). Procedure division. example. json generate jn from MY-DATA count i display function display-of(jn(1:i)) stop run.

输出将如下所示:

{"MY-DATA":{"FIRST-PART":"DATA1","SECOND-PART":"DATA2"}}

这并不完全是你想要的,但它“更接近”。您可以轻松地将上面的示例更改为一个部分,然后您可以执行它(这就像“单个调用”)
    


© www.soinside.com 2019 - 2024. All rights reserved.