| Author | 
		  Message
		 | 
		
		  | akir | 
		  
		    
			  
				 Posted: Fri Mar 28, 2008 9:35 am    Post subject: CWF Logical Tree - Message Definition Mismatch | 
				     | 
			   
			 
		   | 
		
		
		    Acolyte
 
 Joined: 28 Jun 2007 Posts: 51
  
  | 
		  
		    
			  
				Hello All,
 
I have a Target message set generated from Cobol Copy Book.
 
To one of the type in the Message ,I have assigned N cardinality as (-1).
 
I have an XML message from Source which is mapped onto this Structure.
 
The output from Debug Perspective is same as Expected Result but the MQOutput Node is throwing the error  "CWF Logical Tree - Message Definition Mismatch" .
 
In the ESQL Code before this MQOutput node, I have manually set sizes required for target Structure.(I think this should be taken care by Message Set itself...However Iam setting it manually....)
 
The entire Exception tree is shown below.
 
 
Thanks and regards,
 
Anand Kiran Sade.
 
   
	| Code: | 
   
  
	
 
ExceptionList
 
   RecoverableException
 
      File = F:\\build\\S600_P\\src\\DataFlowEngine\\ImbDataFlowNode.cpp
 
      Line = 616
 
      Function = ImbDataFlowNode::createExceptionList
 
      Type = ComIbmMQInputNode
 
      Name = com/mck/jnsnso/MF125_DTC_FEOP_JNSNSO_MF#FCMComposite_1_1
 
      Label = com.mck.jnsnso.MF125_DTC_FEOP_JNSNSO_MF.JNSNSO.DTC.OUTBOUND.SPEC.QA
 
      Catalog = BIPv600
 
      Severity = 3
 
      Number = 2230
 
      Text = Node throwing exception
 
      RecoverableException
 
         File = F:\\build\\S600_P\\src\\DataFlowEngine\\ImbMqOutputNode.cpp
 
         Line = 782
 
         Function = ImbMqOutputNode::evaluate
 
         Type = ComIbmMQOutputNode
 
         Name = com/mck/jnsnso/MF125_DTC_FEOP_JNSNSO_MF#FCMComposite_1_2
 
         Label = com.mck.jnsnso.MF125_DTC_FEOP_JNSNSO_MF.JNSNSO.FEOP.INBOUND.SPEC.QA
 
         Catalog = BIPv600
 
         Severity = 3
 
         Number = 2230
 
         Text = Caught exception and rethrowing
 
         ParserException
 
            File = F:\\build\\S600_P\\src\\MTI\\MTIforBroker\\MtiImbParser2\\MtiImbParser.cpp
 
            Line = 1711
 
            Function = MtiImbParser::refreshBitStreamFromElements - 9 par
 
            Type = ComIbmComputeNode
 
            Name = com/mck/jnsnso/MF125_DTC_FEOP_JNSNSO_MF#FCMComposite_1_3
 
            Label = com.mck.jnsnso.MF125_DTC_FEOP_JNSNSO_MF.Map_DTC_To_FEOP
 
            Catalog = BIPv600
 
            Severity = 3
 
            Number = 5286
 
            Text = ImbRecoverableException caught from worker when attempting to write out the bitstream.
 
            Insert
 
               Type = 5
 
               Text = BD127_FEOP_JNSNSO_MS
 
            Insert
 
               Type = 2
 
               Text = 1
 
            Insert
 
               Type = 5
 
               Text = CWF1
 
            Insert
 
               Type = 5
 
               Text = msg_TOFEOP
 
            ParserException
 
               File = F:\\build\\S600_P\\src\\cpi\\pwf\\cwf\\cwfworker.cpp
 
               Line = 415
 
               Function = CWFWorker::write
 
               Type = 
 
               Name = 
 
               Label = 
 
               Catalog = BIPv600
 
               Severity = 3
 
               Number = 5167
 
               Text = CWF General Error
 
               Insert
 
                  Type = 2
 
                  Text = 0
 
               Insert
 
                  Type = 5
 
                  Text = CWFWorker::write
 
               Insert
 
                  Type = 5
 
                  Text = msg_TOFEOP
 
               ParserException
 
                  File = F:\\build\\S600_P\\src\\cpi\\pwf\\cwf\\cwfmessage.cpp
 
                  Line = 618
 
                  Function = CMessage::write
 
                  Type = 
 
                  Name = 
 
                  Label = 
 
                  Catalog = BIPv600
 
                  Severity = 3
 
                  Number = 5350
 
                  Text = CWF Writing error
 
                  Insert
 
                     Type = 2
 
                     Text = 0
 
                  Insert
 
                     Type = 5
 
                     Text = CWFWorker::parseNext
 
                  Insert
 
                     Type = 5
 
                     Text = msg_TOFEOP
 
                  Insert
 
                     Type = 5
 
                     Text = /msg_TOFEOP/TRAILER
 
                  ParserException
 
                     File = F:\\build\\S600_P\\src\\cpi\\pwf\\cwf\\cwfcontext.cpp
 
                     Line = 323
 
                     Function = CContext::CheckDefaultValue
 
                     Type = 
 
                     Name = 
 
                     Label = 
 
                     Catalog = BIPv600
 
                     Severity = 3
 
                     Number = 5344
 
                     Text = CWF Logical Tree - Message Definition Mismatch
 
                     Insert
 
                        Type = 5
 
                        Text = msg_TOFEOP
 
                     Insert
 
                        Type = 5
 
                        Text = 79^RECORDTYPE
 
 | 
   
 
  Last edited by akir on Fri Mar 28, 2008 11:38 am; edited 1 time in total | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | Jenney | 
		  
		    
			  
				 Posted: Fri Mar 28, 2008 10:18 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Voyager
 
 Joined: 25 Apr 2007 Posts: 83 Location: Melbourne 
  | 
		  
		    
			  
				| Did you check what data you are getting in that field RECORDTYPE, does it match to your defined data type. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | wbi_telecom | 
		  
		    
			  
				 Posted: Fri Mar 28, 2008 10:22 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Disciple
 
 Joined: 15 Feb 2006 Posts: 188 Location: Harrisburg, PA 
  | 
		  
		    
			  
				Are you changing the message set that you have created from the copybook for cardinality? We generally do not change it. If the copybook has "occurs" for any field, its already taken care off while importing. 
 
The error indicates that the message that you create does not match the message set. The error seems to be in 79^RECORDTYPE  field in the msg_TOFEOP message. Put a trace node and see how your message looks like in the trace, compare it with the message set layout. 
 
 
Cheers, | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | akir | 
		  
		    
			  
				 Posted: Fri Mar 28, 2008 11:21 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Acolyte
 
 Joined: 28 Jun 2007 Posts: 51
  
  | 
		  
		    
			  
				
   
	| wbi_telecom wrote: | 
   
  
	| Are you changing the message set that you have created from the copybook for cardinality?  | 
   
 
 
Yes that is what I am doing exactly.
 
How can I place cardinality for N times in Cobol Copy Book 
 
 
I know that these are the ways to do that.
 
 
   
	| Code: | 
   
  
	| DETAILS OCCURS 1 TO 100 TIMES DEPENDING ON H1-DET-COUNT. | 
   
 
 
 
   
	| Code: | 
   
  
	| DETAILS OCCURS 1 TO 100 TIMES | 
   
 
 
 
But the requirement is that the output cardinality should depend on the cardinality of Input Structure.
 
For Ex:If I have 2 items in Input --> I should have 2 DETAILS in Output. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | wbi_telecom | 
		  
		    
			  
				 Posted: Fri Mar 28, 2008 11:32 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Disciple
 
 Joined: 15 Feb 2006 Posts: 188 Location: Harrisburg, PA 
  | 
		  
		    
			  
				As I said you should not be changing anything in the message set after the copybook is imported successfully. When you map the XML message loop thru the number of instaces and map them to the respective copybook fields. CWF message is a fixed length message so if some field occurs 100 times...it will occur 100 times regardless of what you have in your incoming message.
 
 
Hope it clarifies....
 
Cheers, | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | akir | 
		  
		    
			  
				 Posted: Fri Mar 28, 2008 11:45 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Acolyte
 
 Joined: 28 Jun 2007 Posts: 51
  
  | 
		  
		    
			  
				
   
	| wbi_telecom wrote: | 
   
  
	 if some field occurs 100 times...it will occur 100 times regardless of what you have in your incoming message.
 
 | 
   
 
 
 
I cannot for sure say that it occurs a fixed number of times.( like 100) 
 
 
It depends on the cardinality of Input Structure.
 
 
For Ex:If I have 2 items in Input --> I should have 2 DETAILS in Output.
 
 
Thanks and Regards,
 
Anand Kiran Sade | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | wbi_telecom | 
		  
		    
			  
				 Posted: Fri Mar 28, 2008 12:02 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Disciple
 
 Joined: 15 Feb 2006 Posts: 188 Location: Harrisburg, PA 
  | 
		  
		    
			  
				I know that your input cardinality will be anything between 1 and 100 but copybook works in a differnt way...
 
There is a difference between XML and CWF messages. CWF messages MUST have the number of bytes as present in the copybook . If you have 2 fields populated then the 98 remaining will have defaults in them.(we use spaces or zeros depending on datatype). Unless your message matches the copybook layout...you are going to get the CWF mismatch error. 
 
Here is what I would do
 
1) Import the copybook with occurs in it
 
2)While importing set default values to null fields. (last screen in importer)
 
3)Map the number I have in the input to output fields
 
4) The broker will set the others to default 
 
 
 
if you want to reduce the size of your output message, You might want to talk to mainframe guys and ask them about "Occurs depending". What this means is your cardinality on mainframe will be part of a field in the copybook which occurs before the repeating structure.....you need to have broker 6.0 or higher for this...
 
 
Cheers, | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | kimbert | 
		  
		    
			  
				 Posted: Fri Mar 28, 2008 12:30 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Jedi Council
 
 Joined: 29 Jul 2003 Posts: 5543 Location: Southampton 
  | 
		  
		    
			  
				
   
	| Quote: | 
   
  
	 the requirement is that the output cardinality should depend on the cardinality of Input Structure.
 
For Ex:If I have 2 items in Input --> I should have 2 DETAILS in Output. | 
   
 
You have two options:
 
a) If the repeating structure is the final structure in the message, then you can set maxOccurs to -1 ( i.e. unbounded ).
 
b) Otherwise, you must use OCCURS DEPENDING ON, as wbi_telecom suggests.
 
 
This is just common sense, by the way. It is obviously impossible to parse a sequence of fixed-length fields without some way of knowing how many times each field occurs. a) uses the end of the bitstream to indicate the final occurence. b) uses a numeric field earlier in the message. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | 
		    
		   |