2013-02-10 31 views
0

只是一個簡短的快速問題。 如何將表達式編入COBOL數組? 例如,如果我的索引k=1,我想做到以下幾點找到k=2COBOL表達式作爲表數組中的索引

element(k+1) 

元素很不幸,這是不能接受的COBOL和我想知道是否有任何替代?

回答

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的「保留字」。不要簡寫。使用好的名字,使用有效的間距。它可以幫助你稍後瞭解你的程序,並且會幫助其他任何必須查看它的人。

+1

其實你是對的。這只是參數中有空間的問題。忽略了那裏語言的嚴謹性。謝謝! – 2013-02-10 13:52:17

+0

此外,雖然我不確定,但如果您使用「真正的」索引(如在INDEXED BY ...)我認爲這將無法正常工作。沒有嘗試過,所以我不是100%確定的。 – mswanberg 2013-02-10 16:03:33

+0

它也適用於INDEXED BY。因爲編譯器會認爲它是一個格式錯誤的數據名稱的一部分,所以如果你想要「負面的」相對下標,你不能以同樣難看的方式「壓縮」。 「下標」意味着使用「下標」或「索引」。 「相對下標」適用於下標,因此適用於下標或索引。 – 2013-02-10 16:24:42