从 ILE C (AS/400 C) 中的其他 c 程序调用 c 程序

call c program from other c program in ILE C (AS/400 C)

我需要从 AS/400 中的 c 程序调用已编译的 c 程序,通过引用传递参数。我首先尝试 as/400 中的这段代码应该调用一个程序:

#include <unistd.h>
 
int main(void) {
  char *programName = "ls";
  char *arg1 = "-lh";
  char *arg2 = "/home";
 
  execlp(programName, programName, arg1, arg2, NULL);
 
  return 0;
}

在 linux 中有效,但 as400 无法识别“execlp”。

在 COBOL 中,我可以轻松调用 C 编译的程序,通过引用传递参数,这是我需要的,如下所示:

 CALL "MYPROGRAM" USING BY REFERENCE ARG1, ARG2.

我想过使用 system(),但我无法通过引用传递变量。有什么想法吗?

使用#pragma将程序名定义为大写并设置链接为OS

#include <decimal.h>  

// -------------------- qcmdexc -------------------------------
#pragma map( qcmdexc, "QCMDEXC" )                              
#pragma linkage( qcmdexc, OS )                                 
void qcmdexc( char[], decimal(15,5)) ;                              

decimal(15,5) x = 30d ;    
char        cmds[256] ;  

// dlyjob 5 seconds                                        
strcpy( cmds, "dlyjob dly(5)                         " ) ; 
qcmdexc( cmds, x ) ;

您调用的程序是 C 程序应该无关紧要。所有 ILE 程序都具有相同的界面。