1

我的 PS 数据集中有 XML 数据,如下所示,格式与我的 PS 中的以下格式相同,示例如下:

(**<?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>`enter code here`
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>**)

我想要的是我希望整个 XML 进入一行,中间没有任何中断,我只需要在大型机上做那件事。我们有没有办法在 REXX 或 JCL 中做到这一点,我希望我的输出与 PS 中的一样:

http://www.w3.org ......等等

4

1 回答 1

1

这似乎是一个奇怪的要求。XML 文档往往相当“长”,因此输出记录长度至少需要与您将处理的最大 XML 文档一样长。在 IBM z/os 下,我假设您将在其下运行,PS 记录大小有 32K 的限制。当心这个限制。

无论如何,请尝试以下 REXX exec。更改 ALLOCATED 数据集名称 (HLQ.XML.INHLQ.XML.OUT) 以满足您的需要,它会将输入数据集中的所有记录连接成一条记录并将其写入输出数据集。

/* REXX */  
'ALLOCATE DA(''HLQ.XML.IN'') F(XMLIN) SHR'  
'ALLOCATE DA(''HLQ.XML.OUT'') F(XMLOUT) OLD'  
'EXECIO * DISKR XMLIN(FINIS STEM REC.'  
XOUT = ''  
DO I = 1 TO REC.0    
  XOUT = XOUT || STRIP(REC.I)  
END  
QUEUE XOUT  
'EXECIO * DISKW XMLOUT(FINIS'  
'FREE DDNAME(XMLIN)'  
'FREE DDNAME(XMLOUT)'  
RETURN  

注意:需要在运行此 exec 之前创建输出数据集,如果没有,则只需更改 ALLOCATE 语句以使用您需要的任何数据集属性创建它。

于 2013-09-13T17:56:24.097 回答