只是一个简短的快速问题。如何将表达式索引到 COBOL 数组中?例如,如果我的 index k=1
,我想执行以下操作来查找k=2
element(k+1)
不幸的是,这在 COBOL 中是不可接受的,我想知道是否有其他选择?
我不确定为什么你认为这行不通,只要你把它放在 Cobol 语句中。
ID DIVISION.
PROGRAM-ID. SUBMOD.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A-NICELY-NAMED-TABLE.
05 FILLER OCCURS 2 TIMES.
10 A-NICELY-NAMED-ENTRY PIC X.
01 ANOTHER-PIECE-OF-DATA PIC X VALUE SPACE.
01 A-NICELY-NAMED-SUBSCRIPT BINARY
PIC 9(4).
LINKAGE SECTION.
01 L-INPUT PIC X(4).
01 L-TO-HEX PIC BXBXBXBX.
PROCEDURE DIVISION USING L-INPUT L-TO-HEX.
MOVE "A" TO A-NICELY-NAMED-ENTRY ( 1 )
MOVE "B" TO A-NICELY-NAMED-ENTRY ( 2 )
MOVE 1 TO A-NICELY-NAMED-SUBSCRIPT
IF A-NICELY-NAMED-ENTRY ( A-NICELY-NAMED-SUBSCRIPT + 1 )
EQUAL TO "B"
MOVE A-NICELY-NAMED-ENTRY
( A-NICELY-NAMED-SUBSCRIPT + 1 )
TO ANOTHER-PIECE-OF-DATA
END-IF
DISPLAY ">" ANOTHER-PIECE-OF-DATA "<"
GOBACK
.
输出是:
>B<
参考您的评论,这无论如何都不是“严格”的事情。就是“+1”是一回事,是“相对下标”,而“+1”是另外一回事,是第二个下标。
根据您的编译器,您可以编写以下代码:
MOVE ELEMENT(k++1) ...
你可能不得不忍受编译器的一些抱怨,我想在某些情况下它可能不起作用。然而,这将是编写 Cobol 的一种可怕的方式。
我建议不要使用像 ELEMENT 这样的名称。太可能在未来某个时候出现为 Cobol 的“保留词”。不要简写。使用好的名称,使用有效的间距。它会帮助你稍后理解你的程序,并且会帮助任何需要查看它的人。