1

私は主に2つの関数を呼び出しています。(Decrypt) と呼ばれる 2 番目の関数は、その内部で最初の関数 (Encrypt) を呼び出します。したがって、ここでは Encrypt が 2 回呼び出されています。メインで 1 回、次に Decrypt で 1 回。

問題は、この方法で機能することを拒否することです。Encrypt がメインで使用されると、プログラムのどこでも Encrypt を使用できなくなります。変数がまだ使用されているようで、新しい変数を渡すことができません。

たとえば、メイン関数から Encrypt を削除し、Decrypt のみを呼び出すと、正常に動作します。理由がわかりません。

IDENTIFICATION DIVISION.
PROGRAM-ID. CAESER-1-CIPHER.
DATA DIVISION.
PROCEDURE DIVISION
CALL 'ENCRYPT' USING BY CONTENT INPUTE CIPHERE.
CALL 'DECRYPT' USING BY CONTENT INPUTD CIPHERD.
STOP RUN.

IDENTIFICATION DIVISION.
PROGRAM-ID. ENCRYPT.
DATA DIVISION.
PROCEDURE DIVISION BLAH BLAH
BLAH BLAH COMPUTE
END PROGRAM ENCRYPT.

IDENTIFICATION DIVISION.
PROGRAM-ID. DECRYPT.
DATA DIVISION.
PROCEDURE DIVISION BLAH BLAH
CALL 'ENCRYPT' USING BY CONTENT BLAH BLAH
EXIT PROGRAM.
END PROGRAM DECRYPT.
4

3 に答える 3

0

暗号化関数でインスタンス化されたデータはまだ残っています。それらをリセットする必要があります。したがって、Encrypt の任意の数の PIC は、関数の開始時に 0 に設定する必要がありました。そうしないと、まだデータが保存されています。

例:

COMPUTE MYNUM1 = 0
COMPUTE MYNUM2 = 0
COMPUTE MYNUM3 = 0
MOVE '' TO MYVARSTRING
于 2013-04-25T20:11:53.483 に答える