I went with a more simple example for explanation purposes above but to answer some of your questions I am going to have to revert back to using the real transactions.
Natural and RPC Server info
In one environment we are running NAT V8231, Natural RPC Server V8231 on MVS/ESA
In one environment we are running NAT V4263, Natural RPC Server V633 on MVS/ESA
Both environment have the same issue.
IDL from transaction
1 I00080N1-IN
2 EOB-INFORMATION
3 CLAIM-NUM (A10)
3 POL-NUM (A10)
3 USER-ID (A3)
3 LINE-INFORMATION-CNT (I4)
3 LINE-INFORMATION (/1:V)
4 FROM-DATE (D)
4 TO-DATE (D)
4 OTHER-INCOME-CNT (I4)
4 OTHER-INCOME (/1:V)
5 OTHER-INCOME-SOURCE-CODE (A4)
5 OTHER-INCOME-AMT (N9.2)
Using this transaction LINE-INFORMATION is always ok. OTHER-INCOME is the one that gets nulled when there is not a consistent number of them on each instance of LINE-INFORMATION. (If there are 2 OTHER-INCOME’s on every LINE-INFORMATION then we are ok. If there are 2 OTHER-INCOME’s on one LINE-INFORMATION and 1 OTHER-INCOME’s on the rest of the LINE-INFORMATIONs, then we get null in all OTHER-INCOME elements.)
There is no error. I can just see in the logs that the values that were passed in are being seen/interpreted as null.
Log examples can been viewed below this message.
Have not modified any XML mapping. IS is calling the mainframe (Natural). When I debug I can see the values being mapped properly from Flow input to the adapter input but can see the null occuring in the logs. There is not an error thrown during execution only noticed due to missing data on the mainframe. Then came to the logs to track the data and noticed this issue. I have also found other transaction that have the same structure of a dynamic array inside a dynamic array and ran tests on them. They are also experiencing it so it is more than just this one instance of the problem.
Let me know if I can provide anything else or if you have any ideas. Appreciate any time you have for me on this. Thank you.
Joe
Failed example:
2014-01-06 10:14:18 [ADA.0800.0444I] WmEntireX: IDataMarshaller: getValue(>>>BasicData:FROM-DATE=Jul 31, 2013,TO-DATE=Aug 20, 2013, OTHER-INCOME-CNT=2<<<, OTHER-INCOME) = null
2014-01-06 10:14:18 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createValue(>>>BasicData:FROM-DATE=Jun 29, 2013,TO-DATE=Jul 5, 2013<<<, OTHER-INCOME-CNT, 2
2014-01-06 10:14:18 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createStructureHandle()
2014-01-06 10:14:18 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createValue(>>>BasicData:<<<, OTHER-INCOME-SOURCE-CODE,
2014-01-06 10:14:18 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createValue(>>>BasicData:OTHER-INCOME-SOURCE-CODE=<<<, OTHER-INCOME-AMT, 0.00
2014-01-06 10:14:18 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createStructureHandle()
2014-01-06 10:14:18 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createValue(>>>BasicData:<<<, OTHER-INCOME-SOURCE-CODE,
2014-01-06 10:14:18 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createValue(>>>BasicData:OTHER-INCOME-SOURCE-CODE=<<<, OTHER-INCOME-AMT, 0.00
Good Example
2014-01-06 10:13:47 [ADA.0800.0444I] WmEntireX: IDataMarshaller: getValue(>>>BasicData:FROM-DATE=Jul 31, 2013,TO-DATE=Aug 20, 2013,OTHER-INCOME-CNT=2,OTHER-INCOME=[0]>>>BasicData:OTHER-INCOME-SOURCE-CODE=UI,OTHER-INCOME-AMT=1000<<<,[1]>>>BasicData:OTHER-INCOME-SOURCE-CODE=OD,OTHER-INCOME-AMT=800<<<<<<, OTHER-INCOME) = [Lcom.wm.data.IData;@6a57183c
2014-01-06 10:13:47 [ADA.0800.0444I] WmEntireX: IDataMarshaller: getValue(>>>BasicData:OTHER-INCOME-SOURCE-CODE=UI,OTHER-INCOME-AMT=1000<<<, OTHER-INCOME-SOURCE-CODE) = UI
2014-01-06 10:13:47 [ADA.0800.0444I] WmEntireX: IDataMarshaller: getValue(>>>BasicData:OTHER-INCOME-SOURCE-CODE=UI,OTHER-INCOME-AMT=1000<<<, OTHER-INCOME-AMT) = 1000
2014-01-06 10:13:47 [ADA.0800.0444I] WmEntireX: IDataMarshaller: getValue(>>>BasicData:OTHER-INCOME-SOURCE-CODE=OD,OTHER-INCOME-AMT=800<<<, OTHER-INCOME-SOURCE-CODE) = OD
2014-01-06 10:13:47 [ADA.0800.0444I] WmEntireX: IDataMarshaller: getValue(>>>BasicData:OTHER-INCOME-SOURCE-CODE=OD,OTHER-INCOME-AMT=800<<<, OTHER-INCOME-AMT) = 800
2014-01-06 10:13:47 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createValue(>>>BasicData:FROM-DATE=Jul 31, 2013,TO-DATE=Aug 20, 2013<<<, OTHER-INCOME-CNT, 2
2014-01-06 10:13:47 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createStructureHandle()
2014-01-06 10:13:47 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createValue(>>>BasicData:<<<, OTHER-INCOME-SOURCE-CODE, UI
2014-01-06 10:13:47 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createValue(>>>BasicData:OTHER-INCOME-SOURCE-CODE=UI<<<, OTHER-INCOME-AMT, 1000.00
2014-01-06 10:13:47 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createStructureHandle()
2014-01-06 10:13:47 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createValue(>>>BasicData:<<<, OTHER-INCOME-SOURCE-CODE, OD
2014-01-06 10:13:47 [ADA.0800.0444I] WmEntireX: IDataMarshaller: createValue(>>>BasicData:OTHER-INCOME-SOURCE-CODE=OD<<<, OTHER-INCOME-AMT, 800.00