Author |
Message
|
sshaker |
Posted: Fri Feb 21, 2003 12:49 pm Post subject: process not starting from mainframe to aix |
|
|
 Disciple
Joined: 20 Sep 2002 Posts: 185
|
hi
we are trying to create and start a process on aix wf box and sending an xml message from mainframe cobol program. we are getting the following error in reply to queue. the same message we tried sending thru windows to aix.. and it is creating the process instance. looks mainframe is the culprit. can somebody show some light on what we are missing..
regards
shaker
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- This document is generated by a MQSeries Workflow Version 3.3.2 server -->
- <WfMessage>
- <WfMessageHeader>
<ResponseRequired>No</ResponseRequired>
</WfMessageHeader>
- <GeneralError>
- <Exception>
<Rc>1100</Rc>
- <Parameters>
<Parameter>Fatal Error at (line 1, char 56): Invalid document structure</Parameter>
</Parameters>
<MessageText>FMC01100E Incorrect XML document. The message that is returned by the XML parser is: Fatal Error at (line 1, char 56): Invalid document structure</MessageText>
<Origin>/projects/fmc/drvp/lbld/v332/src/fmcmflme.cxx(124)</Origin>
</Exception>
</GeneralError>
</WfMessage> _________________ shaker |
|
Back to top |
|
 |
Ratan |
Posted: Fri Feb 21, 2003 1:16 pm Post subject: |
|
|
 Grand Master
Joined: 18 Jul 2002 Posts: 1245
|
I have no mainframe experience but I guess it is because of the XML file coming out of Mainframe. Analyze the XML input you are giving to workflow. To do this change the input queue to some thing else other than EXEXMLINPUTQ and see if the XML message is correct(no special characters appear). Or take down your Workflow server, provide input from your Mainframe cobol program, and read the EXEXMLIPUTQ to see if the XML is correct.
-Laze |
|
Back to top |
|
 |
jmac |
Posted: Fri Feb 21, 2003 1:57 pm Post subject: |
|
|
 Jedi Knight
Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC
|
Are you converting the EBCDIC to ASCII? _________________ John McDonald
RETIRED |
|
Back to top |
|
 |
clindsey |
Posted: Fri Feb 21, 2003 2:30 pm Post subject: |
|
|
Knight
Joined: 12 Jul 2002 Posts: 586 Location: Dallas, Tx
|
I think John has the right answer, but you don't need to worry about the convert if you specify the message format as MQFMT-STRING. Then the execution server will perform a Get with Convert and do the conversion for you.
Charlie |
|
Back to top |
|
 |
sshaker |
Posted: Fri Feb 21, 2003 3:48 pm Post subject: |
|
|
 Disciple
Joined: 20 Sep 2002 Posts: 185
|
thnx for quick responses:
laze: i tried to look-into the message... even i tried to use the same message thru windows and it is working fine.. when i said in my query that i did try the message in windows.. i captured the message in xmlq and sent it thru windows .. it is creating the process instance..
jmac: explicitly, i am not converting into ascii....
charlie: ur right .. i dont have to worry about conversion.. as i am using MQFMT-STRING ..
then what can be the reason.. my concentration is in message format .. i am assuming that the problem lies some where there.. as the message is perfect when fired from windows..
hope to hear from u guys and others..
regards
shaker _________________ shaker |
|
Back to top |
|
 |
Ratan |
Posted: Fri Feb 21, 2003 4:07 pm Post subject: |
|
|
 Grand Master
Joined: 18 Jul 2002 Posts: 1245
|
This is interesting. what is the character at (line 1, char 56).
This is definetly an error in the XML format. Just to make sure did you get the message out from EXEXMLINPUTQ on AIX Server and resent the same message from windows? In that case your MQMD must have changed. Check the MQMD from both the systems.
-Laze |
|
Back to top |
|
 |
vennela |
Posted: Fri Feb 21, 2003 5:01 pm Post subject: |
|
|
 Jedi Knight
Joined: 11 Aug 2002 Posts: 4055 Location: Hyderabad, India
|
I think you should also set your ccsid (MQMD-CODEDCHARACTERSETID) apart from format(MQFMT-STRING).
-------
Venny |
|
Back to top |
|
 |
sshaker |
Posted: Fri Feb 21, 2003 8:13 pm Post subject: |
|
|
 Disciple
Joined: 20 Sep 2002 Posts: 185
|
hi
thnx for the response..
vennela: i tried setting different ccsids.. can u pl let me know what is the right ccsid for mvs to aix via mqbridge.. i tried 37 and other possible ccsids from mq prg guide ref.. but no use..
will appendix a in wf prg guide help in any way? do i need to set something else in <?xml version="1.0" encoding="UTF-8" ?>
laze: i am just copying the message and using rfhutil to formulate a message along with MQMD with default code page value of widows which is 437 and it is working fine.. the point is it is working fine in windows.. the problem is it is not working on aix where it is supposed to create a PI.. as u mentioned i am copying the message from xmlq by stopping the server..
i will check again there may be a character/special char at position 56!!
looks i am coming close to the solution..
regards
shaker _________________ shaker |
|
Back to top |
|
 |
vennela |
Posted: Fri Feb 21, 2003 9:15 pm Post subject: |
|
|
 Jedi Knight
Joined: 11 Aug 2002 Posts: 4055 Location: Hyderabad, India
|
shaker:
I am not too sure about ccsid... I was just guessing.
I did a test by putting a message on iSeries and getting it on Windows without any ccsid and it worked just fine. Maybe MQFMT-STRING is enough.
There is no specail character at that column. I guess it is new line feed or carriage return.
Am I understanding you right:
1. You have put a message on MVS and it's being sent to MQWF on Windows and you can start the ProcessInstance.
2. You have put a message on MVS and it's being sent to MQWF on AIX and you can't start the ProcessInstance.
I don't think there is anything wrong with the XML message.
Can you put the message without any line feeds.
Where are you getting the original message from. What I mean is, if the XML message is sent from somewhere to MVS and you are trying to GET that message and resend it to AIX.
-------
Venny |
|
Back to top |
|
 |
sshaker |
Posted: Fri Feb 21, 2003 9:50 pm Post subject: |
|
|
 Disciple
Joined: 20 Sep 2002 Posts: 185
|
hi vennela
my cobol program on mainframe preparing create and start xml message and putting into local queue..which is transmitted via mq bridge and channel to exexmlinputq on wf aix box.. and i am getting the error which i mentioned earlier..
then, i wanted to check whether anything wrong with the message being put onto xmlq..
i am stopping the server and capturing the xml message.. copying it.. putting to aix box via rfhutil.. this time it is working fine.. that means there is nothing wrong with the message when it was put thru windows platform..
hope u got the point.. i do believe that there shouldnt be any problem with ccsid as long as i use string in format..
any more thoughts ??
regards
shaker _________________ shaker |
|
Back to top |
|
 |
clindsey |
Posted: Sat Feb 22, 2003 9:51 am Post subject: |
|
|
Knight
Joined: 12 Jul 2002 Posts: 586 Location: Dallas, Tx
|
sshaker,
Looks like the 56th character is the 'newline' character. The qmgr must be converting this to x'0D0A' which is a good newline or eol for Windows but not for unix. I would guess that rfhutil is smart enough to allow for the extra 0D and then it converts to just a 0A which causes the correct behavior. Sounds like the xml parser may not be as forgiving.
First, make sure that your cobol code is just using a normal carriage control for eol and not writing binaray eol chars. This should put a x'15' in the stream. I would assume this is what you are doing. Also set the message ccsid to MQCCSID-Q-MGR to let the queue manager use it's ccsid. If you don't set it at all, this is the default behavior. Again, you are most likely doing one of these already.
There is a config parameter you can set that instructs MQ how to handle the EBCDIC newline. By default, it is not set. Go to /var/mqm and edit the file mqs.ini. Under the AllQueueManagers stanza, see if you have an entry for ConvEBCDICNewline. If there is one, it must be set to a bad value.
The possible values are:
NL_TO_LF - Convert EBCDIC NewLine (X'15') to ASCII Line feed (X'0A').
TABLE - Use the Windows NT conversion tables
ISO - Convert ISO CCSID's using the TABLE method; convert all other CCSID's using the NL_TO_LF method.
Table is a bad choice for unix. I would recommend you try with both NL_TO_LF and ISO to see if this will resolve the problem. If the entry is not there just add a line following AllQueueManagers:, i.e.
AllQueueManagers:
DefaultPrefix=/var/mqm
ConvEDCDICNewline=NL_TO_LF
You will need to stop the queue manager and restart it to pick up the change
Hope this helps,
Charlie |
|
Back to top |
|
 |
sshaker |
Posted: Sat Feb 22, 2003 12:06 pm Post subject: |
|
|
 Disciple
Joined: 20 Sep 2002 Posts: 185
|
Hi charlie,
hope this will help me.. i will try the same and come back to u.
thnx a ton for the detailed mail.
regards
shaker _________________ shaker |
|
Back to top |
|
 |
|