簡単な質問です。式をCOBOL配列にどのようにインデックス付けしますか?たとえば、私のインデックスの場合、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」は別のものであり、2番目の添え字です。
コンパイラによっては、次のコードを記述できる場合があります。
MOVE ELEMENT(k++1) ...
あなたはコンパイラからのうめき声に我慢しなければならないかもしれません、そして私はそれがうまくいかないかもしれないと思います。しかし、それはCobolを書くための恐ろしい方法です。
ELEMENTのような名前は使用しないことをお勧めします。将来のある時点で、Cobolの「予約語」として表示される可能性が非常に高くなります。速記しないでください。適切な名前を使用し、有効な間隔を使用します。それはあなたが少し後であなたのプログラムを理解するのを助け、そしてそれを見なければならない他の人を助けるでしょう。