Case Translation Question

I apologize if this has been discussed before (I DID do various searches in several NATURAL Forums, but came up empty). The issue:

My NATURAL program is calling a Web Service from mainframe NATURAL on z/OS. I am running an XML/SOAP RPC server on my workstation. I have generated the IDL from a WSDL (in the EntireX Perspective of Eclipse/NaturalONE), and from the IDL I have generated the NATURAL RPC Client to the mainframe – all is well and everything is working as it should, EXCEPT:

The Web Service is expecting mixed case “units of weight” (e.g., “Grams”). When I put “Grams” in the mainframe map, it gets translated to “GRAMS”, which the Web Service does not like. So, I have set %L in the NATURAL client session – No Good. I have put SET CONTROL ‘L’ in both the program and subprogram – No Good. I have put (AD=W) in the attribute definition of the map fields – No Good. I have done ALL of that simultaneously – No Good. In all cases m/f NATURAL still translates to upper case before sending to EntireX Broker (I don’t think it is Broker doing this). In all cases I get a very specific message from the Web Service, which states “Instance validation error: ‘GRAMS’ is not a valid value for WeightUnit.”

So, the question is: How can I force NATURAL to accept the field as-entered with no lower-to-upper-case translation? I have successfully called other Web Services in this way with no issues. Also, I have tested the Web service in question from Eclipse, and it works. I can produce the same error without NATURAL being in the picture.

UPDATE: I also tried modifying the PDA to have the parameter fileds passed “BY VALUE” rather than by REFERENCE, and then re-STOWing everything, but to no avail. The UNITS are still getting to the Web service as “GRAMS” instead of “Grams”.

Hi STomsko,
Well, I tried to reproduce your problem and I think I did OK :slight_smile: Bottom line: I put AD parameter on my MAP to AD=MIT, and I got back the UPPERCASE input; however, after REMOVING T (AD=MI) (as it stated on the NAT documentation)
"… Lower and upper case translation are controlled by the terminal commands %L and %U as well as the attributes AD=T and AD=W. "

I got the mixed case result.
Perhaps, it may help you.

Best regards,

Natural wouldn’t ignore your request for mixed-case input, so it must be the TP monitor or your terminal emulator translating the text before Natural sees it. Check your emulator’s settings and try using TSO instead of CICS (that was a guess).

Just to add to Nikolay’s post;

AD=T says translate lower case to upper case

AD= W is the default. It says lower case will not be translated.

HOWEVER; to make AD=W “functional”, you must have the profile parameter LC=ON.

Pursuant to Ralph’s posting; what is your terminal emulator? I have seen this the source of problems identical to yours. Nothing Natural does will have any effect if all characters are coming in as caps.