Я написал Программу для кодирования некоторых Строк.Я пишу 2-ю Программу, чтобы вызвать этот инструмент кодирования.Здесь я создаю массив (A_FELDER) и заполняю его некоторым текстом.В следующем Point 1 вы можете увидеть мой инструмент кодирования.В Point 2 вы не можете увидеть объявление из моего массива и FOR-LOOP.И в Точка 3 вызов в Инструмент кодирования.
Прежде чем я вызову Инструмент, в моем массиве будет три набора данных.Когда инструмент кодирования успешно запущен, мой массив (A_FELDER) пуст.
Я пытался изменить * INLR = * ON;возвращать.Но я получаю тот же результат.Также я создаю второй массив и записываю данные в этот массив.Тот же результат, пустой массив.
Я изменяю свой инструмент кодирования на Программу после параметров.Мой массив (A_FELDER) имеет три набора данных.Итак, мое предположение: вызов Java очищает некоторое хранилище, и мой массив не может найти его место.
Точка 1
D Verschl S O Class(*Java:'eirich.verschl.Verschl')
D $input S 1024a
D $output S 1024a
D new_Verschl PR O EXTPROC(*JAVA:
D 'eirich.verschl.Verschl'
D :*CONSTRUCTOR)
D encrypt PR O EXTPROC(*JAVA:
D 'eirich.verschl.Verschl':
D 'encrypt')
D CLASS (*JAVA:'java.lang.String')
D arg0 O CLASS (*JAVA:'java.lang.String')
C *entry plist
C parm $input
C parm $output
/Free
//Generate new Object named Verschl
Verschl = new_Verschl();
//Trim and create Java String from input Parm
fldjString = makestring(%trimr($input));
// ENCRYPT java String
fldjString2 = encrypt(Verschl:fldjString);
//Convert jString in Alpha
fldBty = cvtToBytes(fldjString2);
//return value for call pgm
$output = fldBty;
Точка 2
D*
D A_FELDER S 256A DIM(20)
D*
C EVAL A_FELDER(1) = KOFIRM
C EVAL A_FELDER(2) = HEAUNR
C EVAL A_FELDER(3) = KOAUNR
C*
C FOR COUNT = 1 TO %ELEM(A_FELDER)
C*
C IF A_FELDER(COUNT) <> *BLANKS
C*
C EVAL I_UNVERSCHL_J = A_FELDER(COUNT)
C EXSR DATAENCRYPT
C EVAL A_FELDER(COUNT) = I_VERSCHL
C*
C ENDIF
C*
C ENDFOR
Точка 3
C DATAENCRYPT BEGSR
C*
C EVAL $INPUT_JAVA = I_UNVERSCHL_J
C EVAL $OUTPUT_JAVA = ''
C*
C CALL(E) 'WD20001JR'
C PARM $INPUT_JAVA
C PARM $OUTPUT_JAVA
C*
C EVAL I_VERSCHL = $OUTPUT_JAVA
C*
C ENDSR
Итак, я хочу зашифровать свои строки и записать их в этот массив (A_FELDER).Но после вызова программы у меня есть пустой массив.Остальные поля не пусты.Сохранить переменные массива AS400, отличные от обычных переменных?
Мне так сложно описать эту проблему, поэтому мне очень жаль моего плохого английского.