我写了下面的程序,我很困惑,为什么当我编译程序时,我得到一个错误,说A-COL(1,1)不是数值,而显示A-COL(1,1)给我1.
IDENTIFICATION DIVISION.
PROGRAM-ID. TEST1.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DIFF PIC 9(3).
01 ARRAY.
05 A-ROW OCCURS 99 TIMES.
10 A-COL OCCURS 2 TIMES.
15 TABLE-CONTENT PIC 9(3).
PROCEDURE DIVISION.
MOVE 1 TO A-COL(1,1).
MOVE 2 TO A-COL(2,1).
DISPLAY A-COL(1,1).
COMPUTE DIFF = A-COL(1,1) - A-COL(2,1).
DISPLAY DIFF.
STOP RUN.
Run Code Online (Sandbox Code Playgroud)
将A-COL定义更改为
"10 A-COL PIC 9(3) OCCURS 2 TIMES."
Run Code Online (Sandbox Code Playgroud)
并删除TABLE-CONTENT.
组变量被认为是字母数字(X类型),因此不能用于计算.
或者,您可以这样做 - 使用实际数字字段引用地址位置.
PROCEDURE DIVISION.
MOVE 1 TO TABLE-CONTENT(1,1).
MOVE 2 TO TABLE-CONTENT(2,1).
DISPLAY A-COL(1,1).
COMPUTE DIFF = TABLE-CONTENT(1,1) - TABLE-CONTENT(2,1).
DISPLAY DIFF.
Run Code Online (Sandbox Code Playgroud)
您也可以DIFF签名.
附加信息
A-COL(1,1)显示"1",因为它将数据存储为"1xx",其中x =空格.那不是数值.当您在此处运行解决方案时,您会注意到显示行产生"001".