2013-05-23 8 views
1

Занято попыткой Call RPG function from Java и получено this Пример от JamesA. Но теперь у меня возникли проблемы, вот мой код:Java ProgramCall.run зависает

AS400 system = new AS400("MachineName"); 
ProgramCall program = new ProgramCall(system);  
    try 
    { 
     // Initialise the name of the program to run. 
     String programName = "/QSYS.LIB/LIBNAME.LIB/FUNNAME.PGM"; 
     // Set up the 3 parameters. 
     ProgramParameter[] parameterList = new ProgramParameter[2]; 
     // First parameter is to input a name. 
     AS400Text OperationsItemId = new AS400Text(20); 
     parameterList[0] = new ProgramParameter(OperationsItemId.toBytes("TestID")); 
     AS400Text CaseMarkingValue = new AS400Text(20); 
     parameterList[1] = new ProgramParameter(CaseMarkingValue.toBytes("TestData")); 

     // Set the program name and parameter list.   
     program.setProgram(programName, parameterList); 
     // Run the program. 
     if (program.run() != true) 
     { 
      // Report failure. 
      System.out.println("Program failed!"); 
      // Show the messages. 
      AS400Message[] messagelist = program.getMessageList(); 
      for (int i = 0; i < messagelist.length; ++i) 
      { 
       // Show each message. 
       System.out.println(messagelist[i]); 
      } 
     } 
     // Else no error, get output data. 
     else 
     { 
      AS400Text text = new AS400Text(50); 
      System.out.println(text.toObject(parameterList[1].getOutputData())); 
      System.out.println(text.toObject(parameterList[2].getOutputData())); 
     } 
    } 
    catch (Exception e) 
    { 
     //System.out.println("Program " + program.getProgram() + " issued an exception!"); 
     e.printStackTrace(); 
    } 
    // Done with the system. 
    system.disconnectAllServices(); 

Применение Висит на этой линии if (program.run() != true), и я ждать около 10 минут, а затем я прекратить применение.

Любая идея, что я делаю неправильно?

Редактировать
Вот сообщение о журнале работы:

запрос клиента - запуск программы QSYS/QWCRTVCA.
Запрос клиента - запустить программу LIBNAME/FUNNAME.
Файл P6CASEL2 в библиотеке * LIBL не найден или файл встроенных данных отсутствует. Сообщение об ошибке CPF4101 появилось во время OPEN.
Невозможно разрешить объект YOBPSSR. Тип и подтип X'0201' Орган

FUNNAME вставить строку в таблицу P6CASEPF через представление под названием P6CASEL2. P6CASEL2 находится в другой библиотеке, скажем, LIBNAME2. Возможно ли установить JobDescription?

ответ

1

Таким образом, я видел, что моя проблема в том, что мой список библиотек не настроен, и по какой-то причине пользователь, которого мы используем, не имеет описания работы. Таким образом, чтобы по прибывшему этому я добавил следующий код перед вызовом program.run()

CommandCall command = new CommandCall(system); 
command.run("ADDLIBLE LIB(LIBNAME)"); 
command.run("ADDLIBLE LIB(LIBNAME2)"); 

Это просто добавить Имя_библиотеки и LIBNAME2 в список библиотек пользователя.

2

Уверены ли вы, что FUNNAME.PGM заканчивается и не вешается с MSGW? Проверьте QSYSOPR за любые сообщения.


Class ProgramCall:

Примечание: Когда программа запускается в работу сервера хоста, список библиотеки будет первоначальный список библиотек указано в описании работы в профиле пользователя.

+0

Посмотрел журналы работы, обновил мой вопрос с сообщением об ошибке, которое я нашел. – ZioN

 Смежные вопросы

  • Нет связанных вопросов^_^