|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
CREATE FIELD causing BIP2432E when deploying flow in WMQI2.1 |
« View previous topic :: View next topic » |
Author |
Message
|
saltyg |
Posted: Wed Jan 14, 2004 5:03 am Post subject: CREATE FIELD causing BIP2432E when deploying flow in WMQI2.1 |
|
|
Newbie
Joined: 14 Jan 2004 Posts: 2
|
I'm working on a prototype where I have a message that has been constructed from a number of record from a multi format file. I'm treating this message as a blob and because each row from the file has a fixed length I'm attempting to parse the message a record at a time using the CREATE FIELD operation for the correct record format. Currently I'm only trying to process a single 100byte message to try and keep things simple.
However, when I deploy the message flows I get the BIP2432E error with the following details -
BIP2432E: (39, 56) : The correlation name 'Message_Set_001' is not valid. Those in scope are: Environment, InputLocalEnvironment, OutputLocalEnvironment, InputRoot, InputBody, InputProperties, OutputRoot, InputExceptionList, OutputExceptionList, InputDestinationList, OutputDestinationList, I, b, s, x, _encoding, _ccsid, Ref1.
The first element of a field reference must be a valid correlation name, from those in scope. This message may sometimes be due to an incorrectly formed or spelled expression which is not intended to be a field reference being parsed as if it were a field reference because the parser does not recognize it.
Correct the syntax of the expression and redeploy the message flow.
The associated EQSL for this is as follows
DECLARE I INTEGER;
SET I = 1;
WHILE I < CARDINALITY(InputRoot.*[]) DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I=I+1;
END WHILE;
-- Enter SQL below this line. SQL above this line might be regenerated, causing any modifications to be lost.
-- The file is passed to WMQI as a single message. This is initially interpreted
-- as a blob. This is because there are different message formats, and different sequences of
-- these formats that can be applied to an inbound message.
--
-- The first thing to do is to extract the first hundred characters this contains file level
-- information, that will be used later in processing the message.
-- The next step is to extract each row from the file message and create a field for that
-- row type, this is achieved using the Createfield esql operation and the MRM for the
-- the appropriate row type.
DECLARE b BLOB;
DECLARE s BLOB;
DECLARE x INTEGER;
DECLARE _encoding INTEGER;
DECLARE _ccsid INTEGER;
DECLARE Ref1 REFERENCE TO OutputRoot.NSCC.Entry[1];
-- Set defaults
SET _encoding = 285;
SET _ccsid = 285;
-- Set blob to be input message.
SET b = BITSTREAM(InputBody);
-- extract first 100 bytes
SET x = 1;
SET s = SUBSTRING(b FROM x FOR 100);
-- apply format for this string
CREATE NEXTSIBLING OF Ref1 PARSE(s, _encoding, _ccsid, Message_Set_001, Record_Format_001, Record_Format_001_Type);
Any help to be able to solve this would be most appreciated.
Graham Saltern |
|
Back to top |
|
 |
wooda |
Posted: Wed Jan 14, 2004 7:50 am Post subject: |
|
|
 Master
Joined: 21 Nov 2003 Posts: 265 Location: UK
|
In you PARSE clause try encasing the values Message_Set_001, Record_Format_001 and Record_Format_001_Type in single quotes.
eg.
CREATE NEXTSIBLING OF Ref1 PARSE(s, _encoding, _ccsid, 'Message_Set_001', 'Record_Format_001', 'Record_Format_001_Type'); |
|
Back to top |
|
 |
Missam |
Posted: Wed Jan 14, 2004 8:42 am Post subject: |
|
|
Chevalier
Joined: 16 Oct 2003 Posts: 424
|
Hi,
In your code
Code: |
DECLARE Ref1 REFERENCE TO OutputRoot.NSCC.Entry[1];
|
and
Code: |
CREATE NEXTSIBLING OF Ref1 PARSE(s, _encoding, _ccsid, Message_Set_001, Record_Format_001, Record_Format_001_Type);
|
if you debug your code you'll know
The first statement will fail because there is no field OutputRoot.NCCC.Entry[1]
obviously you statement saying CREATE NEXTSIBLING will also fail.
So first try creating the OutputRoot.NCCC.Entry[1]
then reference ref1 to it and try to create siblings
and what is OutputRoot.NCCC..?? do you mean OutputRoot.MRM.NCCC
Thanx
sam |
|
Back to top |
|
 |
saltyg |
Posted: Mon Feb 16, 2004 8:08 am Post subject: |
|
|
Newbie
Joined: 14 Jan 2004 Posts: 2
|
Thanks for the replies, however it seems that the problem was more fundamental, I wasn't running with the right CSD. This has now been rectified (I'm now on CSD06).
The final change was to use the lastchild reference in the create field statement rather than the nextsibling reference.
Once again many thanks for the replies |
|
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
|
|
|
|