Def*_*con 0 unix ascii mainframe utf-8 lftp
我正在尝试使用lftp将文件从unix(UTF-8)ftp到大型机(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"
Run Code Online (Sandbox Code Playgroud)
错误:
put: cannot seek on data source
Run Code Online (Sandbox Code Playgroud)
问题:大型机空间不足.
解决方案:基于以下答案.我减少了LRECL = 750以节省空间,并且ascii模式能够再次工作.
z/OS与大多数(全部?)分布式操作系统之间的一个区别是需要指定数据集占用的空间大小.您的"较小"数据集可能没有超出您的"较大"数据集的默认位置.
尝试指定SITE命令以分配更多空间.
您可能需要与大型机存储管理员核实是否存在您应该指定为SITE命令的DATACLAS.DATACLAS包括空间分配等.
如果没有DATACLAS,通常人们对文件中存在的记录数量非常了解,并且可以计算需要多少块或轨道或柱面.
通常,您可以利用System Determined Blocksize,其中z/OS为您计算最佳块大小.您应该在现代DASD上使用的最大块大小是27998字节,这是半轨的大小.你的LRECL是10200. 27998/10200是2.74所以2个记录适合一个块,4个在轨道上.那里有相当多的浪费空间.
如果您的文件中有1000条记录,则可以指定...
pri=250 sec=25 tracks
...作为SITE命令的一部分.这将为您的主要分配提供1000条记录,并为slop提供15条二级分配.您无法保证获得辅助分配,因此通常最好尝试为整个数据集指定足够大的主分配.对于100,000条记录的大型文件,您可以指定...
pri=1700 sec=170 cylinders
...因为一个圆柱体有15个轨道.我来自哪里这是一个非常大的数据集.
虽然JCL具有用于空间分配的RLSE参数,该参数表示释放(解除分配)未使用的主空间,但我在SITE命令中看不到执行相同功能的任何内容.通常有人为分配的空间付费,即使它是空的.一些商店有预定的工作,释放未使用但分配的空间.所有这一切都是说,只是在你的分配上抛出一堆空间并称之为成功,因为FTP工作可能会让你不受任何人支付账单的影响.
所有这些磁盘空间分配的东西都可追溯到当今标准的磁盘价格令人难以置信的昂贵时.