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

Re: Marshaller_toDateTime parameters options



Uh, what I great Christmas gift!

It had to be something like that. But no problem. Things like that just
happen. So forget my last reply that I sent while you found the answer to
the problem.

Regards,

Thomas.

Am 01.12.2014 18:15, schrieb Maria Orcy Rosar:
> Thomas,
> Thank you for your help!  but was my mistake, after making the code changes you suggested I forgot to compile WSDL2R98
> And link to service program WSDL2RPGRT
> 
> Problem solved, date now has no time zone.
> 
> Thanks again
> 
> Maria Orcy Rosar
> City Furniture - IT Department
>  
> 
> -----Original Message-----
> From: Maria Orcy Rosar 
> Sent: Monday, December 01, 2014 8:50 AM
> To: HTTPAPI and FTPAPI Projects
> Cc: Tomas Martinez
> Subject: RE: Marshaller_toDateTime parameters options
> 
> 
> Thomas,
> I believe the error is on getXmlTimeZone procedure when is trying to Get and Verify the time zone indicator (line7480 on code below)
> 
> 7469.00     select;                                                       
> 7470.00     when (i_timeZone = WSDL_NO_TIMEZONE);                         
> 7471.00        return'';                                                  
> 7472.00     when (i_timeZone = WSDL_LOCAL_TIMEZONE);                      
> 7473.00        timeZone = f_rtvSysval_char('QUTCOFFSET');                 
> 7474.00     other;                                                        
> 7475.00        timeZone = i_timeZone;                                     
> 7476.00     endsl;                                                        
> 7477.00                                                                   
> 7478.00     // Get and verify time zone indicator                         
> 7479.00     char = %subst(timeZone: 1: 1);                                
> 7480.00     if (not isStartOfTimezone(char));                             
> 7481.00        clear USR5005;                                             
> 7482.00        USR50051 = char;                                           
> 7483.00        AppMsg_sendEscMsgAndDump(AppMsg_new('USR5005': USR5005));  
> 7484.00     endif;                                                        
> 
> On isStartOfTimezone procedure there is no code for NO TIME ZONE; therefore it returns CFalse causing the error message to be sent.
> 
> 
> 
> Thank you,
> Maria Orcy Rosar
> City Furniture - IT Department
>  
> 
> -----Original Message-----
> From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Thomas Raddatz
> Sent: Friday, November 28, 2014 11:33 AM
> To: HTTPAPI and FTPAPI Projects
> Subject: Re: Marshaller_toDateTime parameters options
> 
> Maria,
> 
> Are you sure that the start of your getXmlTimeZone() procedure matches the following one?
> 
>  /FREE
> 
>     select;
>     when (i_timeZone = WSDL_NO_TIMEZONE);
>        return '';
>     when (i_timeZone = WSDL_LOCAL_TIMEZONE);
>        timeZone = f_rtvSysval_char('QUTCOFFSET');
>     other;
>        timeZone = i_timeZone;
>     endsl;
> 
>     // Get and verify time zone indicator
>     char = %subst(timeZone: 1: 1);
>     if (not isStartOfTimezone(char));
>        clear USR5005;
>        USR50051 = char;
>        AppMsg_sendEscMsgAndDump(AppMsg_new('USR5005': USR5005));
>     endif;
> 
> USR5023 is a generic escape message that is sent from an error handler for unexpected errors. But the second level text "The following error message prevented ..." implies message USR5005 was send from getXmlTimeZone().
> 
> As far as I can see that can happen only when the "when" statement for "WSDL_NO_TIMEZONE" is missing. Actually getXmlTimezone() started like this:
> 
>  /FREE
> 
>     if (i_timeZone = WSDL_LOCAL_TIMEZONE);
>        timeZone = f_rtvSysval_char('QUTCOFFSET');
>     else;
>        timeZone = i_timeZone;
>     endif;
> 
> But I asked you change to what is shown above when I mentioned:
> 
> Changed getXmlTimeZone(), replaced first if/endif block:
>  B01     select;
>  X01     when (i_timeZone = WSDL_NO_TIMEZONE);
>             return '';
>  X01     when (i_timeZone = WSDL_LOCAL_TIMEZONE);
>             timeZone = f_rtvSysval_char('QUTCOFFSET');
>  X01     other;
>             timeZone = i_timeZone;
>  E01     endsl;
> 
> Maybe that you missed that?
> 
> But I also should change message USR0023, because "Failed unmarshalling"
> pointed me to the wrong direction.
> 
> Regards,
> 
> Thomas.
> 
> Am 28.11.2014 14:34, schrieb Maria Orcy Rosar:
>> Good Morning, On behalf of Tomas I ran again the request, below are 
>> the job log details.
>>
>> HTTPAPI Ver 1.24 released 2012-01-23 OS/400 Ver V7R1M0
>>
>> New iconv() objects set, PostRem=819. PostLoc=0. ProtRem=819.
>> ProtLoc=0
>>
>> WSDL2RPG Ver 1.15.9.a released 2013-09-27 (V7R1M0)
>>
>> ** 2014-11-28-08.27.22.095000: Entering 
>> BasicHttpBinding_IApplication_SubmitPartialCreditCardApplication(),
>> compiled for V7R1M0 New iconv() objects set, PostRem=1208. PostLoc=0.
>> ProtRem=819. ProtLoc=0
>>
>> WSDL2RPG: call stack frames: Program      Library      Act.Group
>> Statement    Procedure QCMD         QSYS         *DFTACTGRP
>> /0519 QUICMENU     QSYS         *DFTACTGRP        /00C1 QUIMNDRV
>> QSYS         *DFTACTGRP        /0610 QUIMGFLW     QSYS
>> *DFTACTGRP        /04D7 QUICMD       QSYS         *DFTACTGRP
>> /056F QUOCPP       QPDA         *DFTACTGRP        /0E4C QUOCMD
>> QSYS         *DFTACTGRP        /01EA QUOCPP       QPDA
>> *DFTACTGRP        /0E4C QUOCMD       QSYS         *DFTACTGRP
>> /01EA FIPROAPP     MARIAOLIB    *DFTACTGRP
>> _QRNP_PEP_FIPROAPP FIPROAPP     MARIAOLIB    *DFTACTGRP   49000
>> FIPROAPP FIPRO10T     MARIAOLIB    *NEW
>> _QRNP_PEP_FIPRO10T FIPRO10T     MARIAOLIB    *NEW         41300
>> FIPRO10T FIPRO        MARIAOLIB    *NEW         91400
>> BasicHttpBinding_IApplication_SubmitPartialCreditCardApplication 
>> WSDL2RPGRT   WSDL2RPG     *NEW         445800
>> WSDL2R98_Marshaller_toDateTime WSDL2RPGRT   WSDL2RPG     *NEW
>> 747700       WSDL2R98_getXmlTimeZone WSDL2RPGRT   WSDL2RPG     *NEW
>> 35200        WSDL2R90_AppMsg_sendEscMsgAndDump WSDL2RPGRT   WSDL2RPG
>> *NEW         39300        WSDL2R71_http_DebugLog_dumpCallStack 
>> WSDL2RPGRT   WSDL2RPG     *NEW         20200
>> WSDL2R80_CallStack_dump
>>
>>
>>
>> WSDL2RPG: call stack frames: Program      Library      Act.Group
>> Statement    Procedure QCMD         QSYS         *DFTACTGRP
>> /0519 QUICMENU     QSYS         *DFTACTGRP        /00C1 QUIMNDRV
>> QSYS         *DFTACTGRP        /0610 QUIMGFLW     QSYS
>> *DFTACTGRP        /04D7 QUICMD       QSYS         *DFTACTGRP
>> /056F QUOCPP       QPDA         *DFTACTGRP        /0E4C QUOCMD
>> QSYS         *DFTACTGRP        /01EA QUOCPP       QPDA
>> *DFTACTGRP        /0E4C QUOCMD       QSYS         *DFTACTGRP
>> /01EA FIPROAPP     MARIAOLIB    *DFTACTGRP
>> _QRNP_PEP_FIPROAPP FIPROAPP     MARIAOLIB    *DFTACTGRP   49000
>> FIPROAPP FIPRO10T     MARIAOLIB    *NEW
>> _QRNP_PEP_FIPRO10T FIPRO10T     MARIAOLIB    *NEW         41300
>> FIPRO10T FIPRO        MARIAOLIB    *NEW         91400
>> BasicHttpBinding_IApplication_SubmitPartialCreditCardApplication 
>> WSDL2RPGRT   WSDL2RPG     *NEW         446800
>> WSDL2R98_Marshaller_toDateTime WSDL2RPGRT   WSDL2RPG     *NEW
>> 35200        WSDL2R90_AppMsg_sendEscMsgAndDump WSDL2RPGRT   WSDL2RPG
>> *NEW         39300        WSDL2R71_http_DebugLog_dumpCallStack 
>> WSDL2RPGRT   WSDL2RPG     *NEW         20200
>> WSDL2R80_CallStack_dump
>>
>>
>> WSDL2RPG: USR5023: Failed unmarshalling value '*N' of field '*N'. 
>> Cause . . . . . :   The following error message prevented the value of
>> field '*N' from being retrieved from XPath '*N/*N'. Message text  . :
>> Time zone indicator * does not match one of the expected value of: Z,
>> - or + received from procedure: BASICS1R1_f_sndPgmMsg and statement:
>> 54400 ** 2014-11-28-08.30.13.861000: Leaving
>> BasicHttpBinding_IApplication_SubmitPartialCreditCardApplication()
>>
>> Thank you, Maria Orcy Rosar City Furniture - IT Department
>>
>> -----Original Message----- From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
>> [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
>> thomas.raddatz@xxxxxxxxxxx Sent: Thursday, November 27, 2014 2:41 AM
>> To: HTTPAPI and FTPAPI Projects Subject: RE: Marshaller_toDateTime 
>> parameters options
>>
>> Tomas,
>>
>> At least we are one step further, because now you got an error when 
>> unmarshalling a value. That means, that you received a response from 
>> the server!
>>
>> Please enable the debug log, call the web service again and eventually 
>> send the log to me. For now I have no idea how to make my test web 
>> service not to add the timezone portion, which makes it difficult to 
>> test. Also I need to know the exact data type that you received from 
>> the server.
>>
>> At the moment I assume that it is a time value that causes the error, 
>> because the XML time format (e.g. 16:29:59) does not match the ISO 
>> format, that %time() expects. Hence it might be the
>> UnMarshaller_toTime() that fails working when no timezone information 
>> is available:
>>
>> other; time = %time(inTimeShort.value);     // no time zone inf.
>> available endsl;
>>
>> On the other hand that cannot be the truth, because the unmarshaller 
>> calls parseXmlTime() to convert the time to ISO format.
>>
>> The UnMarshaller_toDate() unmarshaller should work just fine, because 
>> the XML date format (e.g. 2014-11-29) equals the ISO format:
>>
>> other; date = %date(inDate.value);    // no time zone inf. available 
>> endsl;
>>
>> The same should be true for UnMarshaller_toDateTime(), because it 
>> calls adjustTimestamp(), if no timezone is present:
>>
>> other; timestamp = adjustTimestamp(inTimestamp); // no time zone inf.
>> available endsl;
>>
>> I am stuck. I cannot reproduce the problem with the debugger, but the 
>> debug log should tell us the truth.
>>
>> Regards,
>>
>> Thomas.
>>
>>
>>> Tomas Martinez <Tomasm@xxxxxxxxxxxxxxxxxx> hat am 26. November 2014 
>>> um 22:28 geschrieben:
>>>
>>>
>>> Thomas, Thanks for the detail instructions. I made the changes and 
>>> everything compiled properly. But it looks like there is still 
>>> something missing because it doesn't like the fact the that TimeZone 
>>> is not there.
>>>
>>> We keep getting this error:
>>>
>>> WSDL2RPG: USR5023: Failed unmarshalling value '*N' of field '*N'. 
>>> Cause . . . . . : The following error message prevented the value of 
>>> field '*N' from being retrieved from XPath '*N/*N'. Message text .
>>> : Time zone indicator * does not match one of the expected value of:
>>> Z, - or +
>>>
>>> Thanks,
>>>
>>> Tomas Martinez -----Original Message----- From:
>>> ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
>>> [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Thomas 
>>> Raddatz Sent: Tuesday, November 25, 2014 8:44 AM To: HTTPAPI and 
>>> FTPAPI Projects Subject: Re: Marshaller_toDateTime parameters options
>>>
>>> Tomas,
>>>
>>> Today there is no option to restrict the time zone portion from being 
>>> added to date and time values. But it is not that difficult to add 
>>> it.
>>>
>>> On my development system I changed the following source members:
>>>
>>> TYPES_H: --------
>>>
>>> Added: D WSDL_NO_TIMEZONE... D C '*NONE'
>>>
>>> WSDL2R98: ---------
>>>
>>> Changed Marshaller_toDate(), added %trimR): B01 if (%parms() >= 
>>> p_timeZone); value = value + %trimR(getXmlTimeZone(i_timeZone)); X01 
>>> else; value = value + %trimR(getXmlTimeZone(WSDL_LOCAL_TIMEZONE));
>>> E01 endif;
>>>
>>> Changed Marshaller_toTime(), added %trimR): B01 if (%parms() >= 
>>> p_timeZone); value = value + %trimR(getXmlTimeZone(i_timeZone)); X01 
>>> else; value = value + %trimR(getXmlTimeZone(WSDL_LOCAL_TIMEZONE));
>>> E01 endif;
>>>
>>> Changed getXmlTimeZone(), replaced first if/endif block: B01 select;
>>> X01 when (i_timeZone = WSDL_NO_TIMEZONE); return ''; X01 when 
>>> (i_timeZone = WSDL_LOCAL_TIMEZONE); timeZone = 
>>> f_rtvSysval_char('QUTCOFFSET'); X01 other; timeZone = i_timeZone;
>>> E01 endsl;
>>>
>>>
>>> With these changes in place you can add WSDL_NO_TIMEZONE to the 
>>> procedure calls of your marshaller procedures like this:
>>>
>>> Before:
>>>
>>> '<tns1:date>' + Marshaller_toDate(
>>> i_impl_echoDateTime.aDateTimeStructure.date ) + '</tns1:date>' +
>>>
>>> After:
>>>
>>> '<tns1:date>' + Marshaller_toDate(
>>> i_impl_echoDateTime.aDateTimeStructure.date : WSDL_NO_TIMEZONE ) + 
>>> '</tns1:date>' +
>>>
>>> I am going to make my changes available with 1.16beta7 soon. But of 
>>> course you can modify your copy of WSDL2RPG right now.
>>>
>>> Regards,
>>>
>>> Thomas.
>>>
>>> Am 25.11.2014 01:45, schrieb Tomas Martinez:
>>>> Hi,
>>>>
>>>> Marshaller_toDateTime() returns the Time zone if not provided, is 
>>>> there a way have it NOT return the time zone?
>>>>
>>>>
>>>> The web service we are connecting to is having problems processing 
>>>> the time stamp that contains the Time Zone for certain fields and 
>>>> have asked us to stop sending it.
>>>>
>>>>
>>>> Thanks you in advance for your help.
>>>>
>>>> Tomas T. Martinez | IT Department |Senior Systems Analyst City 
>>>> Furniture | 6701 N Hiatus Road | Tamarac, FL 33321 | 
>>>> [1]www.cityfurniture.com
>>>>
>>>> References
>>>>
>>>> 1. http://www.cityfurniture.com/
>>>>
>>>>
>>>>
>>>> --------------------------------------------------------------------
>>>>
>>>>
> --
>>>> - This is the FTPAPI mailing list. To unsubscribe, please go to: 
>>>> http://www.scottklement.com/mailman/listinfo/ftpapi
>>>> --------------------------------------------------------------------
>>>>
>>>>
> --
>>>> -
>>>>
>>> ---------------------------------------------------------------------
>>> -
>>>
>>>
> - This is the FTPAPI mailing list. To unsubscribe, please go to:
>>> http://www.scottklement.com/mailman/listinfo/ftpapi
>>> ---------------------------------------------------------------------
>>> -
>>>
>>>
> -
>>> ---------------------------------------------------------------------
>>> -
>>>
>>>
> - This is the FTPAPI mailing list. To unsubscribe, please go to:
>>> http://www.scottklement.com/mailman/listinfo/ftpapi
>>> ---------------------------------------------------------------------
>>> --
>>
>>>
> -----------------------------------------------------------------------
>> This is the FTPAPI mailing list.  To unsubscribe, please go to: 
>> http://www.scottklement.com/mailman/listinfo/ftpapi
>> ----------------------------------------------------------------------
>> -
>>
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list.  To unsubscribe, please go to:
> http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list.  To unsubscribe, please go to:
> http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------
> 
-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------