从 unix 到大型机的 LFTP ASCII 错误

LFTP ASCII Error from unix to mainframe

我正在尝试使用 lftp 来 ftp 从 unix(UTF-8) 到大型机 (gdg) 的文件。所以下面的命令适用于较小的文件。大型机要求文件处于 ascii 模式。当文件变大时,我认为 ftp 被破坏并且 lftp 中的 ascii 选项无法正常工作。正在寻找一些解决方案。

命令:

lftp -c "open -u user,password -p 21 server.example.ORG; site LRECL=10200; put -a /home/user/example_2018-02-01-09-46-05.txt -o \'C00000.000000.0000(+1)\';bye"

错误:

put: cannot seek on data source

问题:space 中的 运行 个大型机。

解决方案:基于以下答案。我减少了 LRECL=750 以保存 space 并且 ascii 模式能够再次工作。

z/OS 和大多数(所有?)分布式操作系统之间的一个区别是需要指定 space 您的数据集将占用多少。可能存在一个默认值,即您的“较小”数据集不会超过而您的“较大”数据集会超过。

尝试指定 SITE commands 以分配更多 space。

您可能需要咨询大型机存储管理员,看看是否有您应该指定为 SITE 命令的 DATACLAS。 DATACLAS 包括 space 分配等等。

没有 DATACLAS,通常人们对文件中存在的记录数有一个很好的了解,并且可以计算出需要多少块或磁道或柱面。

通常您可以利用系统确定的块大小,其中 z/OS 会为您计算最佳块大小。您应该在 modern DASD 上使用的最大块大小是 27998 字节,这是半个轨道的大小。您的 LRECL 是 10200。27998 / 10200 是 2.74,所以 2 条记录将适合一个块,4 条记录在一个轨道上。那里有相当多的浪费 space。

如果您的文件中有 1000 条记录,您可以指定...

pri=250 sec=25 tracks

...作为您的 SITE 命令的一部分。这将为您的主要分配提供 1000 个记录,并可能为 slop 提供 15 个次要分配。您不能保证获得次要分配,因此通常最好尝试为整个数据集指定足够大的主要分配。对于 100,000 条记录的大文件,您可以指定...

pri=1700 sec=170 cylinders

...因为一个柱面有 15 个磁道。我来自哪里,这是一个相当大的数据集。

虽然 JCL 有一个用于 space 分配的 RLSE 参数,它说要释放(解除分配)未使用的主 space,但我在执行相同功能的 SITE 命令中看不到任何内容。通常有人为分配的 space 付费,即使它是空的。一些商店安排了释放未使用但已分配 space 的作业。所有这些都是说,只要在您的分配中投入一堆 space 并称其为成功,因为 FTP 作品可能会让您不受支付账单的人的欢迎。

所有这些磁盘 space 分配的东西都可以追溯到磁盘以今天的标准来看非常昂贵的时候。