从 ile RPG 调用 Java set 和 get 方法
Calling Java set and get Method from ile RPG
我正在与 ile RPG 和 Java 进行交叉交流。
我想在带有一些字符串参数的 .jar 文件中调用 Class
并想 return 一个字符串到我的 RPG 程序。
我的设置方法出现问题。我无法从 RPG 中调用此方法。
我的 "getOut()" 方法调用运行良好。我得到了正确的 jString。
CLASSPATH设置正确
看看我的代码:
RPG代码:
D FirstCall S O Class(*Java:'FirstCall')
D FirstCall1 S LIKE(FirstCall)
D*
D* Constructor in .jar File
D new_FirstCall PR O EXTPROC(*Java:
D 'FirstCall'
D :*CONSTRUCTOR)
D*
D* Create Java String Object
D makestring PR O EXTPROC(*JAVA:
D 'java.lang.String':
D *CONSTRUCTOR)
D bytes 30A CONST VARYING
D*
D* Prototype for Java String's getBytes method
D cvtToBytes PR 30A EXTPROC(*JAVA:
D 'java.lang.String':
D 'getBytes')
D Varying
D*
D* Get Methode in .jar File //this work well
D getOut PR o EXTPROC(*JAVA:
D 'FirstCall':
D 'getOut')
D Class (*JAVA:'java.lang.String')
D*
D* Set Methode in .jar File //Here i have some problems
D setOut PR O EXTPROC(*JAVA:
D 'FirstCall':
D 'setOut')
D Class (*Java:'java.lang.String')
D*
C* Parameter
C *entry plist
C parm $input
C parm $output
/Free
exSr setCLASSPATH;
FirstCall = new_FirstCall();
fldjString = makestring(%trimr($input));
//Set Method call
setOut(FirstCall:fldjString);
fldjString2 = getOut(FirstCall);
fldBty = cvtToBytes(fldjString);
$output = fldBty;
*INLR = *ON;
/End-Free
Java代码:
public class FirstCall
{
public String sOut;
public static void main(String[] args) throws Exception{
}
public FirstCall(){
}
public String getOut(){
return sOut;
}
public void setOut(String sIn){
sOut = sIn + " - java";
}
}
你像 getOut 一样声明 setOut...RPG 等待一个字符串 return 并且没有参数要传递...
您必须像这样更改您的声明:
D setOut PR EXTPROC(*JAVA:
D 'FirstCall':
D 'setOut')
D strparm O Class (*Java:'java.lang.String')
D CONST
如果您还需要这样的 return 参数 (STRING):
D setOut PR O EXTPROC(*JAVA:
D 'FirstCall':
D 'setOut')
D Class (*Java:'java.lang.String')
D strparm O Class (*Java:'java.lang.String')
D CONST
setOut 原型不应有 return 值。从 setOut 行中删除 "O"。
D setOut PR EXTPROC(*JAVA:
D 'FirstCall':
D 'setOut')
D strparm O Class (*Java:'java.lang.String')
D CONST
我正在与 ile RPG 和 Java 进行交叉交流。 我想在带有一些字符串参数的 .jar 文件中调用 Class 并想 return 一个字符串到我的 RPG 程序。
我的设置方法出现问题。我无法从 RPG 中调用此方法。
我的 "getOut()" 方法调用运行良好。我得到了正确的 jString。 CLASSPATH设置正确
看看我的代码:
RPG代码:
D FirstCall S O Class(*Java:'FirstCall')
D FirstCall1 S LIKE(FirstCall)
D*
D* Constructor in .jar File
D new_FirstCall PR O EXTPROC(*Java:
D 'FirstCall'
D :*CONSTRUCTOR)
D*
D* Create Java String Object
D makestring PR O EXTPROC(*JAVA:
D 'java.lang.String':
D *CONSTRUCTOR)
D bytes 30A CONST VARYING
D*
D* Prototype for Java String's getBytes method
D cvtToBytes PR 30A EXTPROC(*JAVA:
D 'java.lang.String':
D 'getBytes')
D Varying
D*
D* Get Methode in .jar File //this work well
D getOut PR o EXTPROC(*JAVA:
D 'FirstCall':
D 'getOut')
D Class (*JAVA:'java.lang.String')
D*
D* Set Methode in .jar File //Here i have some problems
D setOut PR O EXTPROC(*JAVA:
D 'FirstCall':
D 'setOut')
D Class (*Java:'java.lang.String')
D*
C* Parameter
C *entry plist
C parm $input
C parm $output
/Free
exSr setCLASSPATH;
FirstCall = new_FirstCall();
fldjString = makestring(%trimr($input));
//Set Method call
setOut(FirstCall:fldjString);
fldjString2 = getOut(FirstCall);
fldBty = cvtToBytes(fldjString);
$output = fldBty;
*INLR = *ON;
/End-Free
Java代码:
public class FirstCall
{
public String sOut;
public static void main(String[] args) throws Exception{
}
public FirstCall(){
}
public String getOut(){
return sOut;
}
public void setOut(String sIn){
sOut = sIn + " - java";
}
}
你像 getOut 一样声明 setOut...RPG 等待一个字符串 return 并且没有参数要传递...
您必须像这样更改您的声明:
D setOut PR EXTPROC(*JAVA:
D 'FirstCall':
D 'setOut')
D strparm O Class (*Java:'java.lang.String')
D CONST
如果您还需要这样的 return 参数 (STRING):
D setOut PR O EXTPROC(*JAVA:
D 'FirstCall':
D 'setOut')
D Class (*Java:'java.lang.String')
D strparm O Class (*Java:'java.lang.String')
D CONST
setOut 原型不应有 return 值。从 setOut 行中删除 "O"。
D setOut PR EXTPROC(*JAVA:
D 'FirstCall':
D 'setOut')
D strparm O Class (*Java:'java.lang.String')
D CONST