In a PS file I have XML data as below:
For ex:
(
tab = D2C(9)
lf = D2C(10) /* line feed */
/* Remove both tab and new line characters */
input = CHANGESTR( tab, TRANSLATE( input, tab, lf ), '' )
/* or */
input = CHANGESTR( tab, input, '' )
/* to remove only new line characters */
STRIP only remove leading and/or trailing characters.
Use D2C(13)D2C(10) if the file use carriage return line feed instead just line feed.
The code replace all new line characters with tab and then remove all tab characters as it's easier to parse the code then. I've written a kml2csv parser in rexx that can handle google kmz/kml files.
The OS/2 Classic REXX implementation doesn't contain CHANGESTR. A rexx only solution is very slow for large files, but a C/C++ rexx dll is easy to code (I've written one for that specific purpose) that does the job for large KML-files. Regina REXX and new implementations contain a CHANGESTR-function, but you need to specify a parameter for "new needle" even if it is empty.
You mention Rexx and JCL, I am going to presume those are merely suggestions and not requirements.
I suggest you look to the z/OS Unix System Services utilities for your solution. You mention "huge XML" and if "huge" means "more than 32K" then you will likely find yourself writing your single line of XML to a file in the Unix file system rather than a PS dataset.
An awk script, for example, could do what you want.
You should be clear on the fact that JCL is not, never has been and never will be a programming language. The acronym JCL stands for Job Control Language. You can use JCL to control execution of programs, but you cannot use it to manipulate data in any way. It was never designed to do that.