0

只是一个简短的快速问题。如何将表达式索引到 COBOL 数组中?例如,如果我的 index k=1,我想执行以下操作来查找k=2

element(k+1)

不幸的是,这在 COBOL 中是不可接受的,我想知道是否有其他选择?

4

1 回答 1

3

我不确定为什么你认为这行不通,只要你把它放在 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 的“保留词”。不要简写。使用好的名称,使用有效的间距。它会帮助你稍后理解你的程序,并且会帮助任何需要查看它的人。

于 2013-02-10T13:24:33.970 回答