0

簡単な質問です。式をCOBOL配列にどのようにインデックス付けしますか?たとえば、私のインデックスの場合、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」は別のものであり、2番目の添え字です。

コンパイラによっては、次のコードを記述できる場合があります。

MOVE ELEMENT(k++1) ...

あなたはコンパイラからのうめき声に我慢しなければならないかもしれません、そして私はそれがうまくいかないかもしれないと思います。しかし、それはCobolを書くための恐ろしい方法です。

ELEMENTのような名前は使用しないことをお勧めします。将来のある時点で、Cobolの「予約語」として表示される可能性が非常に高くなります。速記しないでください。適切な名前を使用し、有効な間隔を使用します。それはあなたが少し後であなたのプログラムを理解するのを助け、そしてそれを見なければならない他の人を助けるでしょう。

于 2013-02-10T13:24:33.970 に答える