Client Java and unbound array

I got an error message when I try to call a Natural RPC server from my Java client application.

The error is:

Caused by: Broker Error 1014 0969: NATUARL RPC Server returns: SYENTG1N 9999 NAT0969 Dynamic parameter 68 mismatch (Subprogram SYENTG1N/SYGA/22/9)
at com.softwareag.entirex.aci.bl.a(Unknown Source)
at com.softwareag.entirex.aci.RPCService.a(Unknown Source)
at com.softwareag.entirex.aci.RPCService.callServer(Unknown Source)
at be.vlan.syga2.Syga2.syentg1n(Syga2.java:3541)

The problem concern an unbound array defined at the end of the Parameter Data Area.

Here you are the corresponding IDL file :
Program ‘SYENTG1N’ Is
Define Data Parameter
1 SYENTG1N-IN
2 #ACTION (A1)
2 #CKEY (AV)
2 #CORD (A1)
1 SYENTG1A
2 CENTGES (A3)
2 CSTEGES (A3)
2 LENTGES (AV)
2 ICFDANN (A1)
2 CTYP-ENTGES (A1)
2 ITYPEDT (A1)
2 ITYPSIT (A1)
2 ITYPATL (A1)
2 ITYPIMP (A1)
2 ITYPDIV (A1)
2 CDE_SOC (A3)
2 NRUE (A6)
2 XNOMRUE (AV)
2 POS_CODE (A5)
2 XNOMVIL (AV)
2 POS_PAY_CODE (A3)
2 NTEL (AV)
2 NFAX (AV)
2 NDERLSC (N3.0)
2 NDERANCPC (AV)
2 NDERANCPA (AV)
2 NDERCLC (N7.0)
2 MLIMSUPFAC (N7.2)
2 MSUPFAC (N7.2)
2 MSUPRBJ (N7.2)
2 MSUPPARNTN (N7.2)
2 DJNO (D)
2 QJUSCOI (N1.0)
2 CVLNDEF (A1)
2 CPRT1 (A4)
2 CPRT2 (A4)
2 CPRT3 (A4)
2 CPRT4 (A4)
2 CPRT5 (A4)
2 CRID1 (A3)
2 CRID2 (A3)
2 CRID3 (A3)
2 CRID4 (A3)
2 CRID5 (A3)
2 CCLSPRT (A1)
2 CCLSJOB (A1)
2 IMONMUL (A1)
2 CANAENTGES (A3)
2 NTVACLC (AV)
2 CLIBLU (AV)
2 CLIBLU2 (AV)
2 CTYPTSFATL (A1)
2 NJOUAFFDAT (N1.0)
2 CATLDFT (A3)
2 DMAJSTA (A6)
2 DCRE (D)
2 CUSRCRE (A8)
2 DMOD (D)
2 CUSRMOD (A8)
2 DANU (D)
2 CUSRANU (A8)
2 IANU (A1)
2 DRECHLD (T)
2 DPROPAR (D)
2 IMAJSTA (A1)
2 MNETFIC (P7.2)
2 MCTLPLFCDE (P7.0)
1 SYENTG1A-I
2 #NISNREC (P10.0)
2 #XKEY (A32)
2 #XKEY-FIND (A32)
1 ERROR Out
2 #E-OCCURED (L)
2 #E-CPGMERR (AV)
2 #E-CCATERR (AV)
2 #E-NLIGERR (N4)
2 ERROR-XARRAY (/1:V)
3 #E-CFIELD (AV)
3 #E-NERR (I4)
3 #E-XDSCERR (AV)
End-Define

The problem is certainly with ERROR-XARRAY. I don’t know how I must define the ERROR-XARRAY in my Java client.

The call could be work because when I try the tester generated by EntireX Workbench, all it’s ok.

My Java RPC client is on a Windows XP Pro station.
My Natural RPC server is on a AIX5.2 running with EXX721 & NAT61119.

Someone having already experience with unbound array could help me?

What is the definition of this parameter in Natural ?

You can see the definition in the IDL file:

2 ERROR-XARRAY (/1:V)
3 #E-CFIELD (AV)
3 #E-NERR (I4)
3 #E-XDSCERR (AV)

Or if you prefer here you are the corresponding part of the Parameter Data Area:

2 ERROR-XARRAY (1:*)
3 #E-CFIELD A DYNAMIC /*A32
3 #E-NERR I 4
3 #E-XDSCERR A DYNAMIC /*A79

The definitions are okay. I tested with EXX 732 (IDL Tester) and NAT 622 both on Windows and it works.

You said that it works with the Java Tester ? That’s strange because the Java Tester is using the same Syga2.java program. Or are you running the Java Tester not against the Natural RPC Server?

What is important is that you have to use the new Natural RPC Version 6.1.1, Natural Unix 611 is using the old RPC Version 5.1.1 as a default:

Note:
The default installation of Natural Version 6.1.1 will use the old Natural RPC version.
For details on installing the new Natural RPC with Natural Version 6.1.1, see Natural RPC Installation below.

To activate the new Natural RPC, you must relink your Natural and set the new make parameter rpc=611.
If you do not specify the installation parameter rpc, the current Natural RPC Version 5.1.1 is installed (default).

We have already relink the Natural RPC with Natural Version 6.1.1 this morning (to be sure). The error is always the same. As the Tester generated by SAG is working then my Java program sould go also.

Of course I use the same Syga2.java (generated by SoftwareAG) to run the Tester and to use with my Java application. But perhaps something is wrong in my Java client concerning the usage of this Java library and this unbound array defined as output parameter.

This is rather strange, because in both cases Syga2.java is doing the call to Natural and I do not see how this could result in the NAT0969 error in only one case.
Please make sure that you do not have 2 different versions of the Syga2.java. If you still get the error you should run the Natural RPC Server with tracing enabled, there must be some difference in the way Natural is called by the RPC client. Or do you run multiple RPC Servers with the same server name ?

The problem has been identified:

The IDL file used by the Tester was not the same that one used by our Java Client.
Currently we are using EntireX Natural IDL Generator on Windows to generate the IFL file. After the developer mustn’t forget to transfer the file to the AIX server where the corresponding Java classes will be generated.

Is it possible now on AIX to generate in batch mode those IDL files?

With EntireX 7.3 all Workbench functionality (including extraction to an IDL and generation from an IDL) is Eclipse based.

The Eclipse Workbench is officially not released on AIX. IBM provides an Eclipse 3.1 for AIX and the EntireX plugins should work in this environment but this is not supported.

However, what is officially supported on AIX is the command-line mode of the Workbench.
So you need to download an Eclipse for AIX, install the EntireX plugins (they are platform-independent) and then use the command-line mode as described in http://techcommunity.softwareag.com/ecosystem/documentation/crossvision/eli/workbench/workbench_commandLine.htm.