IDL generation with EntireX Communicator Java Wrapper

We’re using the EntireX Communicator Java Wrapper eclipse plugin to generate IDL and Java Client Objects. We have build a small sample program with different datatypes and we’re trying to generate the IDL.

DEFINE DATA                                                                
PARAMETER                                                                  
1 #LET (A02)                                                               
1 #PAY (A02/1:10)                                                          
1 #DAT (D)                                                                 
1 #PAC (P05,2)                                                             
1 #TAB (13)                                                                
  2 #TA1 (A35)                                                             
  2 #TA2 (N03)                                                             
1 #TAB2                                                                    
  2 #TA3 (A35/13)                                                          
  2 #TA4 (N03/13)                                                          
1 #TIME (T)                                                                
1 #NUM-SIGN (N02)                                                          
*
...

The IDL generated does not seems to be correct :

/* Generated by Software AG, EntireX Importtool for Natural (7.2.1.30) - (1.22) 
/*
/* Filename : CBRNNPAYB.idl
/* Date     : Wed Feb 08 13:55:34 CET 2006

library 'XXXXXX-D' is

	program 'CBRNNPAY' is
		define data parameter
		1 #LET 	  (A2)	In Out
		1 #PAY 	  (A2/10)	In Out
		1 #DAT 	  (D)	In Out
		1 #PAC 	  (P0)	In Out
		1 #TA1 	  (A35)	In Out
		1 #TA2 	  (N3)	In Out
		1 #TAB2 		In Out
			2 #TA3 	  (A35/13)
			2 #TA4 	  (N3/13)
		1 #TIME 	  (T)	In Out
		1 #NUM-SIGN 	  (N2)	In Out
		end-define


/* end of CBRNNPAYB.idl

For example, the first table does not appears, the packed P05,2 is transformed to P0.

Has anyone experienced theese problems are did you find any workaround.

Thanks for your help

G.

My first choice of a workaround would be the standard natural IDLgenerator.
This works OK on the definitions !

The only problem I had was that DC in the definition is comma, and in my current set up it is full stop.
Perhaps you should check the parameter for the RPC-server !
Finn

Looks like you found two bugs in the IDL generation.

Please try the following work-arounds:

Replace #PAC (P05,2) with #PAC (P05.2)
Replace #TAB (13) with #TAB (/13)

Hope this helps.

We have done some tests following your recommendations :

Replace #TAB (13) with #TAB (/13) :
This workaround is working fine, we decided to change this in our natural programs to have a well generated IDL.

Replace #PAC (P05,2) with #PAC (P05.2) :
Doing this, we need to change the configuration of the library. This is not possible for us, we decided to correct manually the IDL generated.

Do you have an idea when a new patch will be available with the corrections?

Thanks for your help

G.

I found a strange behaviour with the Time Fields :

Using the parameter below we want to use a time field to store time without date :


...
1 #TAB2
  2 #TA3 (A35/13)
  2 #TA4 (N03/13)
1 #TIME (T)
1 #NUM-SIGN (N02)
...
MOVE EDITED '1539' TO #TIME (EM=HHII)                                      
...

I’ve set the entirex.trace=2 to check the data transmitted from the host .The time seems to be transmitted by the broker but with some strange date information, and the Java Date printed in the sysout is wrong : time is 00:00:00.


000004F0     34372B30 35332B30  31332B30 30302B30  |47+053+013+000+0|
00000500     30302B30 30302B30  30302B30 30302B30  |00+000+000+000+0|
00000510     30302B30 30302B30  30302B30 30303030  |00+000+000+00000|
00000520     30303031 30313135  33393030 302D3137  |0001011539000-17|
2006-02-22 12:17:19.427/main   SEND returns: EC=00000000,TXT=Successful response,RETL=1328,UOWST=RECV_NONE
----------------------------------------------
Date returned : Sat Jan 01 00:00:00 CET 1 
----------------------------------------------

If we store some date information in the Natural procedure,

...
MOVE EDITED '200602221539' TO #TIME (EM=YYYYMMDDHHII)
...

then the time in the Java Date Object is correct.


00000500     30302B30 30302B30  30302B30 30302B30  |00+000+000+000+0|
00000510     30302B30 30302B30  30302B30 30303230  |00+000+000+00020|
00000520     30363032 32323135  33393030 302D3137  |0602221539000-17|
2006-02-22 14:26:47.302/main   SEND returns: EC=00000000,TXT=Successful response,RETL=1328,UOWST=RECV_NONE
----------------------------------------------
Date returned : Wed Feb 22 15:39:00 CET 2006 
----------------------------------------------

Is it mandatory to have date information in a time field ?
Thanks for your help !

G.

For EntireX a TIME value is always a DATE plus time information.

For details see the EntireX documentation:

[i]The data type T has two different meanings:

* A time-only meaning, which transfers a time without a date. The time-only meaning always uses the invalid date 1.1.000 for the date part. The time part has a value range from 00:00:00.0 to 23:59:59.9. [b]This time-only meaning is not supported by EntireX.[/b]

* A timestamp meaning consisting of a date and time.
  The supported range is from 1.1.0001 0:00:00.0 up to 31.12.9999 23:59:59.9. Dates BC (before the birth of Christ) are not supported.

  It is also possible to transfer 1.1.0000 0:00:00.0 as a value. This is a special value (because there is no year 0) and denotes no time is given. The 'no time' value is the internal state of a #TIME (Natural type T) variable after a RESET #TIME is executed within Natural programs. The target language environment determines how 'no time' is handled.  See the notes under data type "T" in the section Mapping EntireX IDL Data Types to the target language C, Java or .NET.[/i]

Thanks for your quick reply

G.