从ftp卸载文件并在主机中重命名



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

我想创建一个主机jcl来获取这个变量名的文件,并将其重命名为主机文件。我该怎么做?

谢谢当做Chuchito

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

步骤2:处理文件的内容以生成FTP控制卡(至少对于GET)。生成的GET格式为GET 20130814_XX_YY_20130814152345"HLQ.MAINFRAM.DATASET",其中服务器名称来自STEP1中生成的文件,本地(大型机)文件可以硬编码,或者在需要灵活性的情况下提供给生成。

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

规范中没有任何内容吗?

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

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

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

事实上,服务器可以创建一个固定的文件名,它实际上是要在大型机上运行的JCL!!!该文件将包括//SYSIN DD*和GET命令!大型机上载此文件并按原样将其提交给作业读取器,然后作业读取器在大型机上运行。此作业(由服务器创建,但在大型机上运行)的最后一步是将一个空的JCL文件通过FTP发送回服务器,这样服务器就"知道"大型机已经上载了文件。

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

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

有了作业调度程序,每天两次上传到大型机就很容易了。这可能会解决希望在文件名中包含时间时所表达的任何顾虑。

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

  • 后台TSO步骤

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

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

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

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

(2) 备选方案:REXX和COBOL

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

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

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

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

希望这能有所帮助。

最新更新