XML handling in REXX or JCL

1k views Asked by At

In a PS file I have XML data as below:

For ex:

(<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>onlinerecharge</display-name>

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>

    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
  <welcome-file>index.jsp</welcome-file>

</welcome-file-list>
</web-app>)

I want data to come into a single line.(without any spaces in between)

So how should i approach? (Rexx or JCL which one will be easy to handle and maintain)

Please tell me how to approach as well.

3

There are 3 answers

0
AudioBubble On

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.

9
Jan-Erik Lärka On
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.

0
cschneid On

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.