| Author | 
		  Message
		 | 
		
		  | EricCox | 
		  
		    
			  
				 Posted: Thu Nov 08, 2012 10:09 am    Post subject: Accessing Field in REDEFINES Not Working | 
				     | 
			   
			 
		   | 
		
		
		   Master
 
 Joined: 08 Apr 2011 Posts: 292
  
  | 
		  
		    
			  
				To all,
 
 
I have a COBOL Structure that has three REDEFINES.
 
 
In one scenario I am able to reach REDEFINES number two, find the fields and build the xml/soap output.
 
 
But for some reason when I try to reach into REDEFINES number one I get the standard error:
 
An error occurred whilst navigating to the '3'th path element of the field reference at the given location 
 
 
Here is the statement that is failing. TR_01_DATA is the REDEFINES section.
 
 
   
	| Code: | 
   
  
	
 
SET tr01Count = CAST(InputBody.SDAMSDIO_RESPONSE_MESSAGE.SDAMSDIO_TR_01_DATA.SDAMSDIO_TR_01_NUM_PMTS AS INTEGER);
 
 | 
   
 
 
 
I cast because the mainframers defines NUM_PMTS as a PIC S9(13)V99 COMP-3.
 
 
Can someone give me some hints as what to look for. The strange thing is that I have another REDEFINES at the same location in the COBOL as TR_19 and that works. I can't put my finger on why there is different behavior between the two REDEFINES.
 
 
What should I look for? Am I not referencing the REDEFINE correctly? 
 
 
Here is the REDEFINES:
 
   
	| Code: | 
   
  
	
 
       03  SDAMSDIO-RESPONSE-MESSAGE.
 
         05  SDAMSDIO-TR-HIST-FMT              PIC S9(3) COMP-3.
 
         05  FILLER-SDAMSDIO                   PIC X(50).
 
         05  SDAMSDIO-TR-TRAN-DATA             PIC X(2048).
 
         05  SDAMSDIO-TR-01-DATA             
 
                              REDEFINES SDAMSDIO-TR-TRAN-DATA.
 
           10  SDAMSDIO-TR-01-NUM-PMTS         PIC S9(3) COMP-3.
 
           10  SDAMSDIO-TR-01-PMT-DATE         PIC X(8).
 
           10  FILLER                          PIC X(18).
 
           10  SDAMSDIO-TR-01-NUM-AMTS         PIC S9(3) COMP-3.
 
           10  SDAMSDIO-TR-01-POSTED-DATA OCCURS 20 TIMES.
 
             15  SDAMSDIO-TR-01-TYPE-ID        PIC X(5).
 
             15  SDAMSDIO-TR-01-AMT            PIC S9(13)V99 COMP-3.
 
             15  FILLER                        PIC X(10).
 
           10  FILLER                          PIC X(1558).
 
         05  SDAMSDIO-TR-19-DATA
 
                         REDEFINES SDAMSDIO-TR-TRAN-DATA.
 
           10  SDAMSDIO-TR-19-FEE-TYPE         PIC X(3).
 
           10  SDAMSDIO-TR-19-FEE-CD           PIC 99.
 
           10  SDAMSDIO-TR-19-FEE-DESC         PIC X(15).
 
           10  SDAMSDIO-TR-19-FEE-AMT          PIC S9(11)V99 COMP-3.
 
           10  SDAMSDIO-TR-19-FEE-EARN-TERM    PIC S9(3) COMP-3.
 
           10  SDAMSDIO-TR-19-REGZ-IND         PIC X.
 
           10  FILLER                          PIC X(2018).
 
         05  SDAMSDIO-TR-20-DATA
 
                         REDEFINES SDAMSDIO-TR-TRAN-DATA.
 
           10  SDAMSDIO-TR-20-NUM-AMTS         PIC S9(3) COMP-3.
 
           10  FILLER                          PIC X(48).
 
           10  SDAMSDIO-TR-20-ENTRY       OCCURS 48 TIMES.
 
             15  SDAMSDIO-TR-20-ID             PIC X(5).
 
             15  SDAMSDIO-TR-20-AMT            PIC  S9(13)V99 COMP-3.
 
             15  FILLER                        PIC X(25).
 
           10  FILLER                          PIC X(174).
 
 | 
   
 
 
 
Any help is greatly appreciated.
 
 
Thanks,
 
EMC | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | kimbert | 
		  
		    
			  
				 Posted: Thu Nov 08, 2012 2:47 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Jedi Council
 
 Joined: 29 Jul 2003 Posts: 5543 Location: Southampton 
  | 
		  
		    
			  
				| Which version of WMB, and which domain are you using ( MRM or DFDL presumably)? | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | EricCox | 
		  
		    
			  
				 Posted: Thu Nov 08, 2012 2:50 pm    Post subject: Version | 
				     | 
			   
			 
		   | 
		
		
		   Master
 
 Joined: 08 Apr 2011 Posts: 292
  
  | 
		  
		    
			  
				6.0.0.9 and MRM.
 
 
Yes, I know its not supported. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | fjb_saper | 
		  
		    
			  
				 Posted: Thu Nov 08, 2012 4:49 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Grand High Poobah
 
 Joined: 18 Nov 2003 Posts: 20768 Location: LI,NY 
  | 
		  
		    
			  
				Don't know why you are surprised that one works and the other doesn't.
 
This is the way the product works.
 
The redefines is translated as a CHOICE.
 
Once you have selected one branch on the choice you have chosen. There is no going back and saying, sorry I wanted the other one, or sorry I wanted a mix of 2 and 3....
 
 
Tell you what: keep it as tran Data and parse this (with a parse statement) 3 ways )  This way you should have access to all 3. However it might not work as the data may throw  exceptions if a parsed field expects numeric and gets rubbish. Remember this is a GIGO system... 
 
 
Have fun   _________________ MQ & Broker admin | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | kimbert | 
		  
		    
			  
				 Posted: Fri Nov 09, 2012 1:16 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Jedi Council
 
 Joined: 29 Jul 2003 Posts: 5543 Location: Southampton 
  | 
		  
		    
			  
				Aha! Thanks Vitor! I didn't realise that EricCox was attempting to access two different branches of the same choice in the same message tree. 
 
 
@EricCox: Vitor is correct - if you really need to access the choice in two different ways ( why? ) then you will need to parse the input document twice. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | EricCox | 
		  
		    
			  
				 Posted: Fri Nov 09, 2012 4:44 am    Post subject: Two Different Transactions | 
				     | 
			   
			 
		   | 
		
		
		   Master
 
 Joined: 08 Apr 2011 Posts: 292
  
  | 
		  
		    
			  
				The scenario I spoke about is two different transactions with two different sections of the REDEFINES used in each one.
 
 
One transaction reaching to REDEFINES two works. One transaction reaching to REDEFINES one fails.
 
 
I can't figure out why. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | EricCox | 
		  
		    
			  
				 Posted: Fri Nov 09, 2012 11:05 am    Post subject: Invalid Packed Decimal Makes Parser Bomb | 
				     | 
			   
			 
		   | 
		
		
		   Master
 
 Joined: 08 Apr 2011 Posts: 292
  
  | 
		  
		    
			  
				Will this error make the whole COBOL message unusable?
 
 
In the scenario that works, with its REDEFINES, there are no OCCURS that have this error. In the scenarios that fail the parser throws errors.
 
 
Here is how rfhutil complains about it. 
 
 
I am assuming this is fatal and makes the entire structure unreadable?
 
 
There are instances above #7 that hold valid data. But these unused instances seem to be initialized with invalid data.
 
 
   
	| Code: | 
   
  
	
 
10   970    23         7 SDAMSDIO-TR-01-POSTED-DATA
 
 
15   970     5 CHAR    7 SDAMSDIO-TR-01-TYPE-ID              
 
 
***** RFHUtil format error - Invalid Packed Decimal data in next field
 
 
15   975     8 PD      7 SDAMSDIO-TR-01-AMT             4040404040404040
 
 
15   983    10 CHAR    7 FILLER                                   
 
 
10   993    23         8 SDAMSDIO-TR-01-POSTED-DATA
 
 
15   993     5 CHAR    8 SDAMSDIO-TR-01-TYPE-ID              
 
 
***** RFHUtil format error - Invalid Packed Decimal data in next field
 
 
15   998     8 PD      8 SDAMSDIO-TR-01-AMT             4040404040404040
 
 
15  1006    10 CHAR    8 FILLER                                   
 
 
 | 
   
 
 
 
Here is how Message Broker complains about it:
 
 
   
	| Code: | 
   
  
	
 
 ConversionException  BIP5505E: Data conversion failed: data invalid.  
 
                                       Type of data being read : ''packed decimal, no sign found ''  
 
                                       Data                    : ''0x4040404040404040'' 
 
                                       A data conversion during reading or writing of a message failed because the input data was invalid for the output data type.
 
 | 
   
 
 
 
Thanks[/code] | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | fjb_saper | 
		  
		    
			  
				 Posted: Sat Nov 10, 2012 1:13 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Grand High Poobah
 
 Joined: 18 Nov 2003 Posts: 20768 Location: LI,NY 
  | 
		  
		    
			  
				Cobol is tricky like that.
 
If you have say a set number of occurs (10) but only the 2 first ones are meaninful you can access your structure.
 
 
In XML parsing the whole structure (all 10 rows) needs to be correctly initialized otherwise it won't parse.
 
 
Tell your mainframe friends they need to initialize each row with an empty(initialized) structure before entering the relevant values...
 
 
Check also how your structure defines a null value for these fields.
 
 
Have fun  
 
 
@kimbert  do I need to get you a pair of glasses?    
 
All Hail Vitor! _________________ MQ & Broker admin | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | Vitor | 
		  
		    
			  
				 Posted: Sat Nov 10, 2012 3:10 pm    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Grand High Poobah
 
 Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA 
  | 
		  
		    
			  
				
   
	| fjb_saper wrote: | 
   
  
	@kimbert  do I need to get you a pair of glasses?    
 
All Hail Vitor! | 
   
 
 
 
Slightly worried now. My plan for world domination is supposed to be secret.
 
 
Or at least hopefully you're just obliquely referring to an email i got a while back on which I'm waiting to hear more. _________________ Honesty is the best policy.
 
Insanity is the best defence. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | 
		    
		   |