Cobol 大型机 - 执行不同的索引 - 显示

Posted

技术标签:

【中文标题】Cobol 大型机 - 执行不同的索引 - 显示【英文标题】:Cobol Mainframe - perform varying Index - display 【发布时间】:2017-10-01 00:46:59 【问题描述】:

所以我刚刚开始在 Z/OS 上学习 COBOL。我已经使用视觉 cobol 做了很多事情;但是,这仍然是完全不同的。

我需要显示一个从索引 1 开始并显示到索引为 50 的表格

     PERFORM VARYING W03-SUBJ-INDX FROM 1 BY 1
 UNTIL W03-SUBJ-INDX = 50                 
 DISPLAY W03-SUBJ-TABLE                   
 END-PERFORM   

这是我目前的方法,我也尝试过

     PERFORM VARYING W03-SUBJ-INDX FROM 1 BY 1
 UNTIL W03-SUBJ-INDX = 50                 
 DISPLAY W03-SUBJ-TABLE(w03-subj-indx)                   
 END-PERFORM 

顶部示例仅显示第一个索引项(预期)-第二个示例给我一个错误,指出“)”是意外的。

任何帮助将不胜感激。我被告知我必须使用索引

【问题讨论】:

W03-SUBJ-TABLE 的工作存储定义是什么? (预期的)部分并不是真正预期的。鉴于该代码片段,期望是显示整个表格组,49 次。 如果没有此表的有效存储布局,我们真的无法为您提供帮助。还包括实际的编译错误会有很长的路要走。 另外,您应该显示索引 50,还是仅显示 1 到 49? 【参考方案1】:

所以关于您现有的代码......在 Enterprise Cobol 解析器的某些版本中存在一些问题......

DISPLAY W03-SUBJ-TABLE(w03-subj-indx) 

可能会这样工作:

DISPLAY W03-SUBJ-TABLE ( w03-subj-indx )

Enterprise Cobol 编译器的某些版本在没有空格的情况下无法很好地解析。这在进行引用修改时尤其重要,但也适用于表。

试一试,YMMV。

【讨论】:

【参考方案2】:

您没有提及您使用的是哪个编译器版本,但曾经有一个——我不记得是哪个版本了——那是带有下标和参考修改的古怪。

尝试插入一些空格:

DISPLAY W03-SUBJ-TABLE ( w03-subj-indx ) 

另外,确保 W03-SUBJ-TABLE 是数组,而不是包含数组的组项。

【讨论】:

以上是关于Cobol 大型机 - 执行不同的索引 - 显示的主要内容,如果未能解决你的问题,请参考以下文章

如何自动化 jcl 在大型机上运行 cobol 程序

如何将 Cobol 响应中的签名显示字段解码为 Java 中的 BigDecimal

如何在大型机 COBOL 中“休眠”?

如何在大型机ispf中列出项目中的所有cobol程序

C -> 大型机上的 COBOL 跨语言通信

古老的编程语言仍然对大公司至关重要。但没人想学习它们, COBOL编程语言