1

我每天通过 ftp 传送一个文件。该文件每天都没有相同的名称。它有创建的日期和时间。例如,今天文件的名称为 20130814_XX_YY_20130814152345,创建时间为 15:23:45,明天文件的名称为 20130815_XX_YY_20130815152421。_XX_YY_ 总是一样的,但时间每天都会改变。

我想创建一个主机 jcl,它使用变量名获取此文件并将其重命名为主机文件。我怎样才能做到这一点 ?

谢谢你问候楚奇托

4

4 回答 4

3

STEP1:您可以在FTP中使用LS写入磁盘,这样您就可以拥有一个带有文件名的文件。然后获取该文件。

第 2 步:处理文件的内容以生成 FTP 控制卡(至少对于 GET)。生成的 GET 格式为 GET 20130814_XX_YY_20130814152345 'HLQ.MAINFRAM.DATASET',其中服务器名称来自 STEP1 中的 GETted 文件,本地(大型机)文件可以硬编码,或者提供给生成(如果灵活)是必须的。

第 3 步:使用生成的控制卡再次运行 FTP。

规范中没有任何内容吗?

于 2013-08-15T23:02:24.587 回答
2

有时我们会制造复杂性,其中“开箱即用”的解决方案会大大简化生活。

帖子更新后,我现在更好地理解了这个问题。

如果名称需要如此具体,那么另一个建议的解决方案(如果我理解的话)是在服务器上有一个固定的文件名,其中包含要上传的文件名列表。

事实上,服务器可以创建一个固定的文件名,它是真正的 JCL 在大型机上运行!!!该文件将包含 //SYSIN DD * 和 GET 命令!大型机上传此文件并按原样提交给作业阅读器,然后作业阅读器在大型机上运行。此作业的最后一步(由服务器创建,但在大型机上运行)是将一个空的 JCL 文件通过 FTP 传回服务器,这样服务器“知道”大型机已上传文件。

或者,为什么非Z\os系统需要用时间信息来命名文件?如果大型机每天处理文件,那么 date 就足够了。

通过这种更改,大型机可以可靠地预测当天的文件名,生成适当的 GET 命令并运行。

使用作业调度程序,每天两次上传到大型机会很容易。这可能会解决在文件名中包含时间的愿望所表达的任何问题。

于 2013-08-26T18:48:07.697 回答
1

通过后台 TSO 步骤运行 Rexx 步骤:

然后,您可以运行listcat来获取所有文件。您可以将 listcat 输出写入文件并将其读入或通过 Address 命令或OutTrap 函数捕获输出。

然后使用标准的 TSO 重命名命令。

或者,您可以运行 ISPF 后台 rexx 程序并使用 ISPF 等效项来获取文件名

于 2013-08-14T23:44:47.923 回答
0

(1) 真正的解决方案应该是通过大型机作业的调度工具。这些工具提供了处理您所描述的格式的功能。

(2) 替代品:REXX 和 COBOL

(3) 如果您不想更喜欢 REXX,这里简要介绍一下如何使用 COBOL 动态创建 JCL:

  • 将读取“模板”JCL 的 COBOL 程序。
  • 使用 INSPECT / REPLACE,您可以用填充了您选择的日期的字符串替换原型(如果您希望 COBOL 代码在日期选择上灵活,您也可以将其作为简单的 SYSIN 参数提供)
  • 现在您的格式化 JCL 已准备就绪,您可以将其写入输出流

//OUTFILE DD SYSOUT=(INTRDR, ) 或 //OUTFILE DD SYSOUT=( ,INTRDR)

写入 INTRDR(内部阅读器)的任何内容都会直接发送给 JES 提交您的工作!

希望这可以帮助。

于 2013-08-15T09:39:46.993 回答