我想构建一个计算批处理流的关键批处理的小应用程序。作为输入,我需要使用大型机数据集。如果可能的话,是动态的,也就是我可以选择当时适用的字段。
我已经在互联网上搜索过,但没有找到适合我想做的事情。有没有办法做到这一点?
我在大型机库中有一个数据集,我想将该文件 ftp 到 Excel。
在大型机上将文件转换为 CSV(例如,通过 REXX exec、z/OS UNIX shell 脚本或Lua4z程序),然后通过 FTP 将该 CSV 文件插入 Excel。
您无需将 CSV 文件传输到 PC 的文件系统,然后作为单独的步骤在 Excel 中打开它。
相反,您将 CSV 的 FTP(或 HTTP)URL 定义为 Excel 中的数据源。此技术的一个优点是您可以从该 URL 刷新数据,而无需在 Excel 中重新应用格式。
网上有各种各样的教程可以做到这一点。
简单来说:
在“导入文本文件”对话框的“文件名”文本框中,输入 CSV 文件的 FTP URL。例如:
(这假设您的大型机配置为允许使用此路径的 FTP。)
主机名 (zos1) 后面的两个连续斜杠 (/) 字符指示路径引用 z/OS UNIX 文件 (/u/me/data.csv)。
CSV 文件必须位于 z/OS UNIX 路径中。FTP 客户端不接受诸如 'me.csv(data)' 之类的 MVS 样式 (dsname) 路径(即使是 URL 编码;也就是说,单引号转义为 %27);相比之下,cURL 接受这样的路径就好了。
大型机上的 CSV 文件必须是 ASCII 编码,而不是 EBCDIC。(在这里,我使用的术语 ASCII 不准确:您想要的精确字符编码取决于您 PC 的设置。您可能需要 Windows-1252。)这是因为 FTP 客户端将默认传输类型设置为二进制。
要刷新数据,将当前数据替换为新 FTP 请求的结果:在数据选项卡上,单击全部刷新。数据被替换;单元格格式保持不变。
(严格来说,我的意思是 ISO-8859,而不是 ASCII。)
假设您有生成以 EBCDIC 编码的 CSV 文件的 JCL。您希望通过 FTP 将该 CSV 文件作为 ASCII 编码的 z/OS UNIX (zFS) 文件提供给 Excel。
将输出 CSV 文件的现有 DD 语句替换为以下 DD 语句:
//OUTCSV DD PATH='/u/me/data-ebcdic.csv',
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
// PATHDISP=(KEEP,DELETE),
// PATHMODE=(SIRUSR,SIWUSR,SIRGRP),
// FILEDATA=TEXT
将 ddname 替换为OUTCSV
您的 ddname,将 zFS 文件路径/u/me/data-ebcdic.csv
替换为您要使用的路径。
由于该FILEDATA=TEXT
参数,生成的 CSV 文件将在每行末尾有一个 X'15' 字节。
将以下步骤附加到您的 JCL:
//ICONV EXEC PGM=IKJEFT01
//SYSTSIN DD *
BPXBATCH sh iconv -f IBM-037 -t iso8859-1 +
/u/me/data-ebcdic.csv +
> /u/me/data-ascii.csv
/*
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
如果您想知道为什么我iconv
通过 调用 shell 命令BPXBATCH
,请执行以下操作:
//ICONV EXEC PGM=EDCICONV
// PARM=('FROMCODE(IBM-037),TOCODE(iso8859-1)')
不太奏效:它保留了 X'15' 字节,而iconv
作为 shell 命令运行时正确地将它们转换为 X'0A'。(z/OS 2.2。)
您在评论中有一些很好的信息,共识似乎是转换为 CSV(或 TSV 以避免在您的数据中嵌入逗号)是最简单的途径。这是从另一个答案复制的更多信息...
我强烈建议您将文件转换为文本格式,然后再将它们传输到具有不同代码页的另一个框中。尝试处理混合文本(必须翻译其代码页)和二进制(不得翻译其代码页但可能必须从大端转换为小端)比预先进行转换更难。
转换很可能通过大型机上的 SORT 实用程序完成。大型机 SORT 实用程序往往具有广泛的数据操作功能。您可以使用其他机制(其他实用程序、以您选择的语言编写的自定义代码、购买的软件包),但这是我们在这些情况下倾向于做的事情。
将平面文件转换为所有数据都是文本后,您可以通过 FTP 或 SFTP 或 FTPS 传输它们。
...感谢您回来并添加更多信息。希望这里的人提供了足够的信息来帮助您解决问题。
XML 将是另一种可能的面向文本的解决方案。创建会花费更多精力,但您可以在 Excel 中设计电子表格并保存为 XML 文档,然后编写程序以使用大型机数据集中的数据生成 xml 文本。虽然这比简单的 CSV 或 TSV 文件更难实现,但它具有实现 CSV 文件无法实现的电子表格公式和属性的优势。另一个优点是,您可以将 XML 文档附加到 SMTP 电子邮件注释中,然后以“电子表格格式”将文档交付给您的客户。