为什么PC-to-AS400,ASCII FTP传输导致AS400端的文件增长非常大?

Jon*_*ent 3 ibm-midrange

GIVEN:我最好是AS400平台的新手

问题:我们需要将可变宽度,管道分隔的ASCII文件从Windows 2003服务器传输到在V6R1上运行的FTP服务器.文件到达并正确转换为EBCDIC,但它们非常庞大.3.5Mb文件成为200+ Mb成员.9Gb文件失败,因为我们碰到某种方式的配额.

有趣的事实:当以二进制模式(无翻译)完成时,文件在服务器端显示为FILENAME.FILE,其中一个成员名为FILENAME.MBR.传输大小是正确的,但由于ASCII编码,本机工具无法读取该文件.

有趣的事实:这已经在三台V6R1机器上尝试过,结果相同.所以我很确定这是我不太了解的正常行为.

我的直觉是,服务器正在扩展文件,因为它向它添加了新行 - 但我真的没有更好的猜测.有没有人见过这种行为,你知道如何避免这种行为吗?

提前感谢任何花时间做出贡献的人.我很感激.

dmc*_*dmc 6

IBM i FTP服务器可以处理"经典"QSYS.LIB文件系统中的对象(其中有诸如驻留在单层库中的文件之类的对象)或集成文件系统上的流文件(类似的分层文件系统)到Windows和Unix中使用的内容).

听起来您正在将文件发送到QSYS.LIB文件系统中的物理文件(PF).PF具有固定长度的记录,因此您可能会在大多数记录的末尾看到一些松弛空间.您可以使用DSPFDCL命令查看PF中的记录数和记录长度.

如果要将文件发送到PF,FTP服务器默认为名称格式0,即QSYS.LIB文件系统.在这种模式下,您将发送给PF,例如:

SEND myfile.txt DMCLIB/MYFILE.MYMBR
Run Code Online (Sandbox Code Playgroud)

如果要将文件发送到流文件,则必须先向FTP服务器发送命令:

QUOTE SITE NAMEFMT 1
Run Code Online (Sandbox Code Playgroud)

这会将FTP服务器切换到IFS命名模式.因此,当您发送文件时,您需要指定要将其发送到的目录.例如:

SEND myfile.txt /home/dmc/myfile.txt
Run Code Online (Sandbox Code Playgroud)

如果您要发送可变长度记录,那么IFS流文件将不会像您在物理文件中看到的那样松弛.

如果管道分隔文件包含单个布局,则可以使用CPYFRMIMPFCL命令将其映射到具有实际记录格式的PF,这可能是更"原生"的方式.但是,如果它是一种更复杂的文件格式,您可能必须编写一个ILE RPG程序来将流文件转换为它需要的任何形式. 以下是一些有关从ILE RPG访问流文件的精彩教程.

另请注意,QUOTE HELP从命令行FTP客户端连接时,您可以使用该命令从IBM i FTP服务器中看到一些有趣的帮助信息.