|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Parsing an EDI message which has non standard delimiters. |
« View previous topic :: View next topic » |
Author |
Message
|
mpriest |
Posted: Fri Mar 19, 2004 3:21 am Post subject: Parsing an EDI message which has non standard delimiters. |
|
|
Newbie
Joined: 15 Jan 2003 Posts: 7
|
Hi,
Still working in MQSI v2.1. Looking at TDS messages.
We are receiving EDI messages from a third party who use "non standard" delimiters - namely
- x'1F' for : (EDIFACT_CS)
- x'1C' for ' (EDIFACT_GROUP_TERM)
- x'1D' for + (EDIFACT_DS)
I'm trying to develop a message set to parse these messages.
I started out by taking a copy of the message and changing the delimiter characters to the "default". Got to the point where I can parse the messages.
I then started trying to use the raw messages. First I changed the EDIFACT part of the message types to use alternate mnemomics as defined in the Working with Messages Appendix B.
Thus I'm trying :-
<FS> for x'1C' (')
<GS> for x'1D' (+)
<US> for x'1F' ( : )
This works fine for the + and : delimiters. However it does not work for the Group Separator '.
I only use this in the overall Type for the EDI message. The EDIFACT tag for this has had the following details set up by me :-
Tag Data Separator <GS>
Data Element Separation - Tagged Delimited
Delimiter <FS>
When I put a trace node on the message, it shows that the parser reads past the end of the UNH segment into the UNT segment - ignoring the x'1c' separator.
If I tweak the message to replace any instances of x'1c' with ' and adjust the message set to have Delimiter <EDIFACT_GROUP_TERM> on the overall Type then the message is parsed correctly.
I could of course search the message for all instances of x'1c' and replace it with ', but this is not a pretty or efficient solution.
Anyone got any ideas what I can do to persuade the parser to recognise x'1c' as the Edifact Group Terminator ?? |
|
Back to top |
|
 |
wooda |
Posted: Fri Mar 19, 2004 5:28 am Post subject: |
|
|
 Master
Joined: 21 Nov 2003 Posts: 265 Location: UK
|
Hi -
My undertanding is that EDIFACT use's a service string in the header to define the characters to be used for EDIFACT_CS, EDIFACT_DS and EDIFACT_GROUP_TERM for that particular message.
I believe this is supported by TDS.
If you set the service string field to type string and set the TDS property "Interpret Element Value" to "Edifact Service String". Then the service string should be interpretted correctly and the EDIFACT delimiters assigned dynamically. |
|
Back to top |
|
 |
mpriest |
Posted: Fri Mar 19, 2004 7:09 am Post subject: Thanks for the suggestion - not sure it will work |
|
|
Newbie
Joined: 15 Jan 2003 Posts: 7
|
Zanda,
Thanks for the suggestion. However I'm not sure whether this will work. Interepret Element Value is as the Element level. It also only seems to be available at the level off a simple element e.g. one of type STRING.
I don't want to have to define an extra element for the delimiter, I would have thought this should be defined at compund type level. Am I missing something ?
The manual seems to imply that you can override a Mnemonic with the service string, but doesn't specify how you do it ("Working with Messages"). I shall dig somemore. In the meantime, anyone out there done this
Also done a bit more digging - the supplier isn't adding the ServiceStringAdvice UNA. Strictly they shoud as they are using non standard characters for the EDIFACT delimiters. I shall have a whinge at them.
This still leaves the question, why doesn't the parser cope with my giving it <FS> as the equivalenet of x'1c' (it copes with <GS> for x'1d' and US for <1f>
I've proved that I'm on the correct lines by using a Compute Node to convert all instances of x'1c' to x'27' (ASCII '). The message is then parsed successfully.
Regards - Marc |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
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
|
|
|
|