作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下午好,我正在分析 COBOL 中的一些遗留代码,发现了这个我无法理解的特定案例。
000610 IF EIBCALEN = 0 00061011
000700 EXEC CICS 00070000
000800 SEND MAP('TCHM144') 00080007
001100 END-EXEC. 00110000
001110 ELSE 00111013
001111 IF EIBAID = DFHCLEAR OR DFHPF2 OR DFHPF3 00111113
001112 EXEC CICS SEND FROM(WS-CHAR) 00111213
001113 LENGTH(LENGTH OF WS-CHAR) 00111313
001114 ERASE 00111413
001115 END-EXEC. 00111513
001116 EXEC CICS RETURN END-EXEC. 00111613
001120* MAPONLY ERASE FREEKB 00112002
001200 EXEC CICS 00120000
001300 RETURN TRANSID('TCE4') 00130000
001400 END-EXEC. 00140000
001500 GOBACK. 00150012
据我所知,在 IF 语句的正文中有一个句点会在最高级别关闭 IF 之前的句子,但在这种情况下,IF 正文中包含的 END-EXEC 后面跟着一个句点,以下是上面提到的逻辑将结束句子,ELSE 将不会被引用到任何 IF。我是正确的还是在特定情况下可以这样做?谢谢。
最佳答案
整个EXEC
结束分隔符期间的语句将被代码替换。这类似于 COPY
发生的情况。声明。在下面,COPY
语句复制包含没有分隔符的简单添加指令的文本。在预处理期间,COPY
语句替换为文本。 EXEC
也是如此声明。只要EXEC
语句不引入任何分隔句点,规则为COBOL
关于 sentence
的结尾不适用。
正如@cschneid 所建议的那样,查看 list 以了解对该源代码做了什么。
以下是 COPY
的示例声明。请注意,分隔符句点对编译没有影响。
来源:
data division.
working-storage section.
1 a pic 9 value 0.
1 b pic 9 value 0.
procedure division.
begin.
display 'A: ' a
display 'B: ' b
if a = b
copy a.
else
copy b.
end-if
display 'A: ' a
display 'B: ' b
stop run
.
列表:
1 data division.
2 working-storage section.
3 1 a pic 9 value 0.
4 1 b pic 9 value 0.
5 procedure division.
6 begin.
7 display 'A: ' a
8 display 'B: ' b
9 if a = b
* 10 copy a.
11 add 1 to a
12 else
* 13 copy b.
14 add 1 to b
15 end-if
16 display 'A: ' a
17 display 'B: ' b
18 stop run
19 .
输出:
A: 0
B: 0
A: 1
B: 0
关于if-statement - IF 语句主体中的 CICS 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58914680/
我是一名优秀的程序员,十分优秀!