0
只是一個簡短的快速問題。 如何將表達式編入COBOL數組? 例如,如果我的索引k=1
,我想做到以下幾點找到k=2
COBOL表達式作爲表數組中的索引
element(k+1)
元素很不幸,這是不能接受的COBOL和我想知道是否有任何替代?
只是一個簡短的快速問題。 如何將表達式編入COBOL數組? 例如,如果我的索引k=1
,我想做到以下幾點找到k=2
COBOL表達式作爲表數組中的索引
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的「保留字」。不要簡寫。使用好的名字,使用有效的間距。它可以幫助你稍後瞭解你的程序,並且會幫助其他任何必須查看它的人。
其實你是對的。這只是參數中有空間的問題。忽略了那裏語言的嚴謹性。謝謝! – 2013-02-10 13:52:17
此外,雖然我不確定,但如果您使用「真正的」索引(如在INDEXED BY ...)我認爲這將無法正常工作。沒有嘗試過,所以我不是100%確定的。 – mswanberg 2013-02-10 16:03:33
它也適用於INDEXED BY。因爲編譯器會認爲它是一個格式錯誤的數據名稱的一部分,所以如果你想要「負面的」相對下標,你不能以同樣難看的方式「壓縮」。 「下標」意味着使用「下標」或「索引」。 「相對下標」適用於下標,因此適用於下標或索引。 – 2013-02-10 16:24:42