Page 1 of 2
XML and Mixed Case
Posted:
Fri Mar 16, 2012 10:48 pm
by dekberg
I am trying to output XML from a COBOL program and even though I define my variables as Mixed Case when the XML is created using the generate XML statement the label names are changed to all Upper Case. I have tried different compiler options with no luck.
Has anyone ran into this and know of a solution to this?
I am using IBM Enterprise COBOL for z/OS 3.4.1
Re: XML and Mixed Case
Posted:
Fri Mar 16, 2012 11:50 pm
by Robert Sample
What is your COBOL compiler LANGUAGE option? From the COBOL
Language Reference manua (emphasis added)l:
6.2.41.5 XML element name formation
In the XML documents that are generated from identifier-2, the XML element tag names are derived from the name of the data item specified by identifier-2 and from any eligible data-names that are subordinate to identifier-2 as follows:
The exact mixed-case spelling of data-names from the data description entry is retained. The spellings from any references to that data item (for example, in an OCCURS DEPENDING ON clause) are not used.
Data-names that start with a digit are prefixed by an underscore. For example, the data-name '3D' becomes XML tag name '_3D'.
| Data-names that start with the characters 'xml', in any combination of | uppercase and lowercase, are prefixed by an underscore. For example, | the data-name 'Xml' becomes XML tag name '_Xml'.
Names of data items that are found at run time to contain characters that are illegal in XML version 1.0 content are prefixed by 'hex.', and the content itself is expressed in hexadecimal.
Re: XML and Mixed Case
Posted:
Mon Mar 19, 2012 11:28 pm
by dekberg
it is set to (EN). But everything for my tagnames are still changed to all uppercase.
Re: XML and Mixed Case
Posted:
Mon Mar 19, 2012 11:58 pm
by Ed Goodman
If you look at the compiled listing for the program, are the names still mixed case? (Maybe you're pulling the wrong copybooks)
How are you looking at the generated XML? I'm thinking there may be a program in the middle somewhere being 'helpful' and converting things to uppercase. (Some terminal emulators have a "show all caps" switch buried in their settings)
Try putting some lowercase DATA in the fields and see if that is getting changed too. Also, try some DISPLAY statements immediately after the generate call. (Hard code some lower case letters in the displays to be double-sure)
It's all about isolating the problem. Chances are really good that the IBM COBOL GENERATE statement is working as designed. So there must be something else going on.
Re: XML and Mixed Case
Posted:
Tue Mar 20, 2012 6:38 pm
by dekberg
In the compile listing the names are changed to upper case.
I am not using copybooks, everything is defined within my working storage.
I call a program that writes the data to a datacom program. I am also using display statements after the XML Generate statement to show the contents.
The data itself is not getting changed to uppercase and also my display statement with mixed case does not get changed to upper case. Just the variable names that XML uses as the TAGS are getting converted.
Re: XML and Mixed Case
Posted:
Tue Mar 20, 2012 7:20 pm
by Ed Goodman
OK then, we have isolated the problem a little bit. If the listing shows the fields as upper case, then you know it's happening during the compile. You can pretty much ignore the XML workings until you figure the compile part out.
If you look at your source code, are the fields still lower case? (Nothing in your editor changed them) If you are moving the source code before the compile, check there too.
If you compile a small, simple program with mixed case field names, do they also get converted to upper? (remove all XML calls)
Re: XML and Mixed Case
Posted:
Tue Mar 20, 2012 7:52 pm
by dekberg
OK I tried a smaller program and the same thing happens. If the lower case is a comment or within quotes then it stays lower case. it seems like it is jsut my field names and keywords that get converted. I changed the Identification to lower case and it converted it to upper case also.
There are 3 steps in my compile.
the first step is the META COBOL TRANSLATOR, this listing shows everything as I have it in my program (No converting of the lower-case to upper-case)
the second step is the COBOL COMPILE step, this is where the listing shows the converting of lower to upper and it is uses the IGYCRCTL program.
the third step is the Link Edit Step.
Re: XML and Mixed Case
Posted:
Tue Mar 20, 2012 9:16 pm
by dekberg
OK - I switched my layouts to a copybook and it works OK using it that way. But I would still think that you should be able to define it within your program and it would work the same way, (Not using copybooks).
Re: XML and Mixed Case
Posted:
Tue Mar 20, 2012 10:02 pm
by BillyBoyo
Can you show us the compile options and the compiler version from the output listing, please. I'm not sure how using a copybook would make it different either, so it is interesting...
Re: XML and Mixed Case
Posted:
Wed Mar 21, 2012 5:15 pm
by dekberg
PP 5655-G53 IBM Enterprise COBOL for z/OS 3.4.1
Options in effect:
NOADATA
NOADV
APOST
ARITH(COMPAT)
NOAWO
BUFSIZE(4096)
NOCICS
CODEPAGE(1140)
NOCOMPILE(S)
NOCURRENCY
DATA(31)
NODATEPROC
DBCS
NODECK
NODIAGTRUNC
NODLL
NODUMP
DYNAM
NOEXIT
NOEXPORTALL
NOFASTSRT
FLAG(I,I)
NOFLAGSTD
INTDATE(LILIAN)
LANGUAGE(EN)
LIB
LINECOUNT(60)
NOLIST
NOMAP
NOMDECK
NONAME
NSYMBOL(NATIONAL)
NONUMBER
NUMPROC(NOPFD)
OBJECT
OFFSET
NOOPTIMIZE
OUTDD(SYSOUT)
PGMNAME(COMPAT)
NORENT
RMODE(AUTO)
NOSEQUENCE
SIZE(MAX)
SOURCE
SPACE(1)
NOSQL
NOSSRANGE
NOTERM
NOTEST
NOTHREAD
TRUNC(STD)
NOVBREF
NOWORD
XREF(FULL)
YEARWINDOW(1900)
ZWB