[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: WSDL2RPG - Version 1.1 available



Scott,

I am almost shocked, because I successfully called "GetWeatherByZipCode" and "GetWeatherByPlaceName". Sine I have a few days off I have not much time left for WSDL2RPG. There are too much other things that we (family) want to do. However I guess that I can look at the problem next weekend. Please let me know what operations you selected to call. Did you post the your command string completely (WSDL2RPG ...)?

I know about the "RNF0501" problem and the only way to get around it is to change the values of the DIM_* constants to reduce the array size. You may also specify a lower default value at the command prompt.

I am also thinking about to use a dynamic array but I am not sure whether this is a good idea. Actually it does not make things easier (using procedures to get your values).

Sorry but I must close for know.

Thomas.


Scott Klement schrieb:
Hi Thomas,

I tried the new version of WSDL2RPG (version 1.1) against the same web service as before. It no longer gets stuck in a loop (which is good), but now it crashes with the following:

WSDL2RPG URL('http://www.webservicex.net/WeatherForecast.asmx?wsdl') SRCFILE(ISNMAG/QRPGLESRC) SRCMBR(TRWEATHER *YES)
Length of varying length variable is out of range.
Ownership of object QTES665759 in QGPL type *DTAQ changed.
Ownership of object QTESUSRSP in QTEMP type *USRSPC changed.
The call to main ended in error (C G D F).
C
The call to main ended in error (C G D F).
C
Application error.  RNX0115 unmonitored by WSDL2RPG at statement
   0000012500, instruction X'0000'.


Additional Message Information Message ID . . . . . . : RNX0115 Date sent . . . . . . : 03/25/08 Time sent . . . . . . : 16:52:16 Message . . . . : Length of varying length variable is out of range. Cause . . . . . : The length of a varying length character or DBCS variable is less than 0 or greater than its declared maximum length in RPG procedure WSDL2R91_Q in program WSDL2RPG/WSDL2RPG. Recovery . . . : Contact the person responsible for program maintenance to determine the cause of the problem. I ran it in debug... and found the error was in the QName_toString() procedure. The problem appears that the parameter passed into this procedure (the Wsdl_QName_t structure) had never been initialized, and was set to all blanks. This resulted in the VARYING lengths set to x'4040' which was too large... and caused the error.

This is a kludge, but I stuck the following code into the routine as a workaround:

P QName_toString...
P                 B                   export
  *
D QName_toString...
D                 PI                         like(wsdl_name_t       )
D  i_qName                            const  likeds(wsdl_qName_t    )
  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  /FREE

     initializeModule();

     // ******** Additions by Scott:
     if %subst(i_qname:1:2) = x'4040';
         return '';
     endif;
     if %subst(i_qname:513:2) = x'4040';
         return i_qName.lName;
     endif;
     // ******* end of additions:

     if (i_qName.ns = '');
        return i_qName.lName;
     else;                                       	
        return i_qName.ns + ':' + i_qName.lName;
     endif;

  /END-FREE
  *
P QName_toString...
P                 E

I'm sure that you can come up with a better fix than that... but it was a quick way for me to move on to the next step (there's a lot of code in WSDL2RPG, and debugging it properly would've taken a long time.)

After making that change, WSDL2RPG generates a web service stub... but the code that it generates won't compile.

Here's the error from the compile listing:

       RNF0501 20      2 Length of character item exceeds 65535; length
defaults to 65535.

It appears to be referring to the following code:

  D tns_RpgArrayOfWeatherData_t...
  D                 DS                  based(pDummy)
  D                                     qualified
  D  item                               likeds(tns_WeatherData_t)
  D                                     dim(DIM_A1)
  D  x                            10I 0

Because data structure names can be used as character strings in RPG, the total size of the above DS must be 65535 or smaller. (Unless you're at V6R1!!) For reference, here are the fields that make up the above DS:

  D tns_WeatherData_t...
  D                 DS                  based(pDummy)
  D                                     qualified
  D  Day                         128A   varying
  D  MaxTemperatureC...
  D                              128A   varying
  D  MaxTemperatureF...
  D                              128A   varying
  D  MinTemperatureC...
  D                              128A   varying
  D  MinTemperatureF...
  D                              128A   varying
  D  WeatherImage                128A   varying

  D DIM_A1          C                   128

So, tns_WeatherData_t is 780 bytes long. Multiply that by 128, and you get 99840... too large for a 65535 string. I can solve the problem by changing the code for this DS and the value for DIM_A1... but I wonder if there isn't an alternate way to code this so that this sort of thing wouldn't be necessary.

Any ideas?



Thomas Raddatz wrote:
Hi folks,

I released WSDL2RPG V1.1. You can download WSDL2RPG from my Freeware page at http://www.tools400.de.

I fixed a bug in the subfile program as well as a bug reported by Scott a few days ago. I also created a MS-DOS batch file to ease uploading WSDL2RPG to a System i. (@Scott: I used your batch file as a starting point and hope you do not mind it.)

Regards,

Thomas.

-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------