我正在研究在HP Nonstop上部署的Cobol应用程序。在平台上进行调试时,我遇到以下情况:
IF LABELED-VALUE OF IN-VARIABLE-1 OF PARENT-1 OF GRAND-PARENT THEN
MOVE IN-VARIABLE-2 OF PARENT-2 OF GRAND-PARENT TO OUT-VARIABLE
ELSE
MOVE IN-VARIABLE-1 OF PARENT-1 OF GRAND-PARENT TO OUT-VARIABLE
END-IF
字段定义如下:
01 GRAND-PARENT
03 PARENT-1.
05 IN-VARIABLE-1 PIC 9(3).
88 LABELED-VALUE VALUE 000.
03 PARENT-2.
05 IN-VARIABLE-2 PIC 9(3).
01 OUT-VARIABLE PIC 9(3).
当我评估表达式时,LABELED-VALUE OF IN-VARIABLE-1 OF PARENT OF GRAND-PARENT
调试器告诉我表达式为TRUE
。值为IN-VARIABLE-1 OF PARENT OF GRAND-PARENT
0。因此OUT-VARIABLE
应具有各自的值。但这种情况并非如此; 它总是具有值IN-VARIABLE-1
,逻辑总是进入到ELSE
。
在这里,您可以在执行代码后看到调试器中的情况:到目前为止,我已经尝试过:
IF
以检查特定值,例如IF IN-VARIABLE-1 OF PARENT OF GRAND-PARENT EQUAL ZERO THEN
(ZERO
实际上是的值LABELED-VALUE
)我不是Cobol专家,尽管我认为简单的方法IF
是可以管理的,但无济于事。有人可以帮我吗?
更新:
在调试器中,我可以编辑字段的值。如果我覆盖现有价值000
的IN-VARIABLE-1 OF PARENT-1 OF GRAND-PARENT
再次与0
或000
在如果说之前,则该代码工作正常。WTF?
问题实际上是关于如何IN-VARIABLE-1 OF PARENT-1 OF GRAND-PARENT
初始化的。就我而言,它很可能尚未初始化。在这种情况下,可以通过以下方式解决问题:
IF LABELED-VALUE OF IN-VARIABLE-1 OF PARENT-1 OF GRAND-PARENT OR
IN-VARIABLE-1 OF PARENT-1 OF GRAND-PARENT EQUAL LOW-VALUES
THEN
MOVE IN-VARIABLE-2 OF PARENT-2 OF GRAND-PARENT TO OUT-VARIABLE
ELSE
MOVE IN-VARIABLE-1 OF PARENT-1 OF GRAND-PARENT TO OUT-VARIABLE
END-IF
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句