ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » CWF Parser / writer error?

Post new topic  Reply to topic
 CWF Parser / writer error? « View previous topic :: View next topic » 
Author Message
MrSmith
PostPosted: Tue May 13, 2008 1:32 am    Post subject: CWF Parser / writer error? Reply with quote

Master

Joined: 20 Mar 2008
Posts: 215

Hi,

Below is the output of a trace for which i am intrigued
Broker V5 + CSD10 on Windows XP

As you will see the output tree shows a field BalanceBreakdownDetailsUnit
whose value and properties in the MRM are a 18 byte 6 virtual decimal places right justified (default for decimal) with '0' padding element whose value is 18 characters, so why does the CWF writer (output below) seem to have trimmed the initial zeros leaving 15 characters then left justify it and then what looks to me as to have added the 6 additional zeros to the right hand side thus making the field value to long for the element. If i do not generate this value and just create the element with 18 x 0 within the ESQL it works fine but if i substitute it for 18 x 1's it left justifies it again and fails.

trace output:
(0x01000021):MRM = (
(0x01000000):FINV535MsgRecordTDS = (
(0x03000000):SenderMasterRef = 'ABCDEFGHIJKLMNOP'
(0x03000000):CreationDate = '20020721'
(0x03000000):CreationTime = '083530'
(0x03000000):PreviousReference = 'ABCDEFGHIJKLMNOP'
(0x03000000):RelatedReference = 'ABCDEFGHIJKLMNOP'
(0x03000000):Pagenumber = '00001'
(0x03000000):LastPageIndicator = 'YES'
(0x03000000):Reference_35 = 'ABCDEFGHIJKLMNOPQRST123456789012345'
(0x03000000):StatementDate = '20020225'
(0x03000000):StatementTime = '000000'
(0x03000000):Frequency = 'YEAR'
(0x03000000):UpdateType = 'COMP'
(0x03000000):StatementBasis = 'CONT'
(0x03000000):ActivityIndicator = 'YES'
(0x03000000):AuditedIndicator = 'YES'
(0x03000000):AccountDetailIdent = 'ABCDEFGHIJKLMNOPQRST123456789012345'
(0x03000000):FungibleIndicator = 'YES'
(0x03000000):AggregateQuantityUnit = '000000001234123457'
(0x03000000):AvailableQuantityUnit = '000000000000000000'
(0x03000000):NotAvailableQuantityUnit = '000000000000000000'
(0x03000000):HoldingValue = '000000000628400'
(0x03000000):HoldingValueCurrencyCode = 'EUR'
(0x03000000):BookValue = '000000006283400'
(0x03000000):BookValueCurrencyCode = 'EUR'
(0x03000000):FinancialInstrumentIdent_1 = 'ISIN'
(0x03000000):FinancialInstrumentIdent_2 = 'US31333L82 '
(0x03000000):FinancialInstrumentIdent_3 = 'ABCDEFGMNOPQRST123456789012345 '
(0x03000000):FinancialInstrumentIdent_4 = 'ABCDEFGHIJST123456789012345 '
(0x03000000):PriceDetailsAmount = '000000666880000'
(0x03000000):PriceDetailsCurrency = 'EUR'
(0x03000000):PriceDetailsType = 'BIDE'
(0x03000000):ForeignExchangeDetailsUnitCurrency = 'USD'
(0x03000000):ForeignExchangeDetailsQuotedCurrency = 'USD'
(0x03000000):ForeignExchangeDetailsExchangeRate = '000000000600000'
(0x03000000):BalanceBreakdownDetailsUnit = '000123456789123457'
(0x03000000):BalanceBreakdownDetailsSubBalanceType = 'BLOK'
(0x03000000):SenderDN_XMLCounterParty = 'ou=efs,o=bbhcus3i,o=swift '
(0x03000000):Format_Indicator = 'X'
(0x03000000):CarriageReturnLineFeed = '
'
)

CWF writer error:

ConversionException BIP5507E: Data conversion failed: input data too long.
Input type : 'string'
Output type : 'external decimal'
Maximum expected length : 18
Data value : '123456789123457000000'
A data conversion during reading or writing of a message failed because the input data was too long for the output data type.


Have read that there is some conversion on external decimal types but why does it convert all the other decimals in this structure without issue, I have gone back to the message set and made sure the right justify is selected to ensure it wasn't trying to left justify the value and zero fill.

Thanks.
Back to top
View user's profile Send private message
kimbert
PostPosted: Tue May 13, 2008 3:28 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

Must be logical<->physical education week...

Look in your message definition. What simple type does BalanceBreakdownDetailsUnit have? What ESQL type are you using when you set its value?
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Tue May 13, 2008 3:42 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

kimbert wrote:
Must be logical<->physical education week...


When does the trial edition get available, again?
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
MrSmith
PostPosted: Tue May 13, 2008 4:19 am    Post subject: Reply with quote

Master

Joined: 20 Mar 2008
Posts: 215

kimbert wrote:
Must be logical<->physical education week...

Look in your message definition. What simple type does BalanceBreakdownDetailsUnit have? What ESQL type are you using when you set its value?


The simple type is a xsd:decimal set at 18 bytes of which there is a virtual decimal point implied at 6 characters from the right withinh the messageset. On re-reading the manuals to ensure I am quoting correctly this would read that if I supplied a value as i do of '000123456789123457' to the parser then the virtual decimal point id placed 6 characyters from the right thus resulting in 000123456789.123457 is this not correct? The value that is supplied, is supplied to the parser without a physical decimal point because the application accepting the message ultimately does not want physical decimal points. The message set has been configured such to ensure that the correct scale was being supplied (verification). It would aid me more if i had information to understand that parsers writing process, if the parser was applying this sset to an incoming string of '000123456789123457' supplied from whereever it knows where to place the decimal point based on the virtual setting and this is verified when viewed in trace therefore why is it not correct to assume that the same is for the outgoing write, why has it decided to take 000123456789123457 (which is already 18 characters) and left justify it and add 6 trailing zeros. Enlighten me if i am being thick but I just don't see it

Quote:
When does the trial edition get available, again?

Sorry Jeff I don't folow this comment at all.
Back to top
View user's profile Send private message
kimbert
PostPosted: Tue May 13, 2008 4:43 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

You are assigning a string value to a decimal field. Try assigning the correct logical value in the logical message tree, rather than the physical value which you want the parser to output. In other words, stop trying to do the parser's job.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » CWF Parser / writer error?
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.