Could you show us the two sides of the calls; both the CALLNAT and the PDA of the subprogram?
Are all the values being passed by the default linkage (reference) , or are you using by value or by value result?
are there any arrays being passed? If so, are they variable arrays (eg; 1:v)
Have you tried to run just the subprogram that adds the record with a “driver” that has the same CALLNAT as the CALLNAT’er that you are using (in other words, cut out the web front end)