Вызов cl в определенной единице, например, XXX или YYY, используя asp.net C # - PullRequest
0 голосов
/ 21 октября 2019

Я хочу вызвать программу, используя QSYS .-----, но я хочу, чтобы она выполнялась в определенном модуле, например, XXX или YYY или TTT, но она не выполняется

Ниже приведен код в ASP.net C #

As400CMD = "CALL DEVLSLIB/EBANK_REVS";
sql = "CALL QSYS.QCMDEXC('" + As400CMD + "',00000000" + 
         As400CMD.Length.ToString() + ".00000)";
lodbcCommand = new OdbcCommand(sql, DbConn);
lodbcCommand.CommandType = CommandType.Text;
DbConn.Open();
lodbcCommand.ExecuteNonQuery();
DbConn.Close();

, и вызываемый мной CL выполняется нормально, но не в состоянии выполнить последнюю часть, чтобы применить ввод. Но я, кажется, не знаю, как сказать системе, какой блок использовать при вводе

    PGM                                     
           CALL       PGM(EQXREC) PARM(LIBRARY)    
    ENDPGM

1 Ответ

0 голосов
/ 21 октября 2019

Хорошо, я полагаю, вы не знаете общий формат команд IBM i. Вот что:

COMMAND KEYWORD(VALUE) KEYWORD(VALUE) ...

Конструкция KEYWORD(VALUE) подобна параметру, но я не хочу его так называть, потому что в команде вызова есть ключевое слово PARM для параметров. Команда CALL выглядит следующим образом:

CALL PGM(program name) PARM(parameter list)

Иногда вы можете опустить KEYWORD и просто передать некоторые параметры позиционно. Некоторые из KEYWORD должны быть набраны с использованием полного синтаксиса KEYWORD(VALUE). В случае команды CALL KEYWORD s можно опустить, но поскольку значение PARM является списком, оно должно быть заключено в круглые скобки (), например:

CALL program (parameter list)


В вашем примере:
As400CMD = "CALL DEVLSLIB/EBANK_REVS";
sql = "CALL QSYS.QCMDEXC('" + As400CMD + "',00000000" + 
         As400CMD.Length.ToString() + ".00000)";

пытается вызвать программу EBANK_REVS в библиотеке DEVLSLIB без параметров. Кстати, "',00000000" + As400CMD.Length.ToString() + ".00000)" можно заменить на "', " + As400CMD.Length.ToString())". Вам не нужны все эти нули.

Вы не сообщаете нам, какое имя CL вы указали, но если это действительно EBANK_REVS в библиотеке DEVLSLIB, то это все, что вам нужно сделать. Если только вы не сказали нам ничего.

...