Hallo zusammen:
Ich habe diesen Artikel hier genau verfolgt und versuchte nun, eine RPG Procedure von einem Java Pgm aufzurufen , habe aber große Probleme mit der Parameterübergabe:

Ich schicke 4 numerische Parameter mit Werten in das Serviceprogramm und möchte dafür eine Objektbezeichnung alphanumerisch 28 Stellen zurückbekommen.

1. Procedure
getObjektBez B Export
getObjektBez PI
p#firma 2 0 value
p#obj 7 0 value
p#objA 1 0 value
p#objG 1 0 value
p#obbzg 28


ListObstdp Chain(N) OBSTDP
If not %found(Obstdp)
eval p#obbzg = *blanks
Else
eval p#obbzg = %trim(Obbzg)
Endif
getObjektBez E

2. Java Aufruf

public String sucheObjektAdresse() ...

AS400PackedDecimal converter1 = new AS400PackedDecimal(2, 0);
AS400PackedDecimal converter2 = new AS400PackedDecimal(7, 0);
AS400PackedDecimal converter3 = new AS400PackedDecimal(1, 0);
AS400PackedDecimal converter4 = new AS400PackedDecimal(1, 0);
AS400Text obBzg = new AS400Text(28);

ProgramParameter parameterList=new ProgramParameter[5];


parameterList[0]=new ProgramParameter(converter1.toBytes((Integer.parse Int(oFirma.getText()))));
parameterList[1]=new ProgramParameter(converter2.toBytes(Integer.parseI nt(oObjekt.getText())));
parameterList[2]=new ProgramParameter(converter3.toBytes(Integer.parseI nt(oObjektArt.getText())));
parameterList[3]=new ProgramParameter(converter4.toBytes(Integer.parseI nt(oObjektGeshh.getText())));

auch so habe ich es probiert:
parameterList[0]=new ProgramParameter(converter1.toBytes(01)); parameterList[1]=new ProgramParameter(converter2.toBytes(0002215));
usw.

System.out.println(parameterList.toString());
das steht: [Lcom.ibm.as400.access.ProgramParameter;@842e74

und auch im Debug werden keine Werte in den Feldern angezeigt (parameterList)


AS400 system=new AS400("xxx");
system.setUserId("xxx");
system.setPassword("xxx");
ServiceProgramCall sPGMCall=new ServiceProgramCall(system, "/QSYS.LIB/STAMOBJ.LIB/S_TESTDP.SRVPGM", parameterList);
sPGMCall.setProcedureName("GETOBJEKTBEZ");


if (sPGMCall.run() != true){
AS400Message messageList = sPGMCall.getMessageList();
for (int i = 0; i < messageList.length; ++i){
System.out.println(messageList[i].getText());
}
}

Es kommt die Fehlermeldung: locals variables are unavailable


1. Frage: Was mache ich da falsch ?

2. Frage:
Was muss ich angeben im Java Code, dass mir der 5. Parameter richtig mitgeschickt (obBzg) wird bzw. wie lese ich den zurückgeschickten Parameter wieder aus ?

Vielen Dank für die HIlfe
mfg
boonkelz