jtopen/jt400 툴킷을 사용하여 Java에서 IBM i- 시리즈 r5v4 (일명 AS/400) 프로그램을 호출합니다 (실제로는 JRuby이지만 순수한 자바에서 같은 문제). 다른 프로그램의 경우 출력 바이트가 모두 0을 포함하는 반면, 일부 프로그램에서는 제대로 작동합니다. 이는 잘못되었거나 때로는 유효하지 않은 경우도 있습니다 (예 : ZonedDecimal의 경우). ProgramCall, JobList 또는 SYSOPR.MSGQ에 첨부 된 메시지가 없습니다. 왜 이런 일이 일어나는 지 아는 사람이 있습니까? 하지만, 내가 말했듯이Java에서 i-series 프로그램을 호출하면 유효하지 않은 결과가 출력됩니다.
as400 = AS400.new(host, user, password)
call = ProgramCall.new(as400)
call.program = "/QSYS.LIB/LIBRARY_NAME.LIB/PROGRAM_NAME.PGM"
# Prepare converters
text1_converter = AS400Text.new(1)
text3_converter = AS400Text.new(3)
decimal92_converter = AS400ZonedDecimal.new(11, 2)
# Prepare parameters
call.parameter_list = []
# Input parameters
call.parameter_list << ProgramParameter.new(text1_converter.to_bytes('N'))
call.parameter_list << ProgramParameter.new(decimal92_converter.to_bytes(1500.25))
# Output parameters
call.parameter_list << ProgramParameter.new(text3_converter.byte_length)
call.parameter_list << ProgramParameter.new(decimal92_converter.byte_length)
# Execute the call
call.run
# Show the results
puts "Text3 output value: " + text3_converter.to_object(params[2].output_data).to_s
puts "Decimal92 output value: " + decimal92_converter.to_object(params[3].output_data).to_s
, 이것은 일부 프로그램에 대해 잘 작동합니다 :
(나는 자바의 루비 렌더링을 이해할 수있는 라이브러리와 함께 일했다 확실히 사람이야) 일부 코드를 표시하려면 다른 경우params[2].output_data
은 의도 한 결과가 아닌 [0, 0, 0]의 바이트 배열이됩니다. 심지어 악화,
params[3].output_data
은 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]으로 ZonedDecimal.new (9, 2)의 잘못된 바이트 값입니다. 누구든지 나를 도울 수 있습니까?