COBOL中的数据类型
我已经写了下面的程序,我很困惑为什么当我编译程序时,我得到一个错误,说A-COL(1,1)不是一个数值,而显示A-COL(1,1)给我1COBOL中的数据类型,cobol,gnucobol,Cobol,Gnucobol,我已经写了下面的程序,我很困惑为什么当我编译程序时,我得到一个错误,说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.
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.
将A列定义更改为
"10 A-COL PIC 9(3) OCCURS 2 TIMES."
并删除表格内容
组变量被视为字母数字(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.
另外,您可能需要对DIFF
进行签名
补充资料
A-COL(1,1)
显示“1”,因为它将数据存储为“1xx”,其中x=空格。这不是一个数值。在这里运行解决方案时,您会注意到显示行生成“001”。保持工作存储结构不变。但是,您的数据元素不是A列,而是内容。因此,请使用-CONTENT,而不是A-COL
IDENTIFICATION DIVISION.
PROGRAM-ID. TEST1.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DIFF PIC S9(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 TABLE-CONTENT ( 1 1 )
MOVE 2 TO TABLE-CONTENT ( 2 1 )
DISPLAY
">"
TABLE-CONTENT ( 1 1 )
"<"
COMPUTE DIFF = TABLE-CONTENT ( 1 1 )
- TABLE-CONTENT ( 2 1 )
DISPLAY
">"
DIFF
"<"
STOP RUN
.
识别部门。
程序ID.TEST1。
数据司。
工作和储存科。
01不同图片S9(3)。
01阵列。
05排
发生99次。
10 A柱
发生2次。
15表格内容图9(3)。
程序司。
将1移动到表格内容(1)
移动2到表格内容(2 1)
展示
">"
表1-1内容(1)
""
差异
“哪一行给了您错误?似乎已经解决了问题,但您知道我为什么不应该这样写吗?您不能在计算中引用组级项,因为组项被视为字母数字项,并且您不能对字母数字项执行算术运算。因此,这会引发编译时错误。谢谢,我不理解。”W