2017-04-12 19 views
0

主机中可变块文件的前4个字节包含有关记录和块的信息。我可以通过FTP或FTPS从大型机的可变块文件中读取数据。但是,如果我不在每个记录中追加空格,则试图写回数据,然后数据混乱。只有当我在每个记录中追加空格时,我才会得到预期的输出。有什么办法可以在变量块文件的前四个字节中写入记录信息?通过FTP/FTPS将数据写入主机的可变块文件

+0

请改善你的问题 - 这很难理解。你在编程什么语言?你的数据看起来如何?什么应该是在最初的领域?你的代码在哪里? –

+0

请确切地说明你在做什么。你是否使用类似curl的包来通过编程使用FTP协议?您是否将FTP作为开始步骤和结束步骤,并在中间进行处理? @MarkSetchell是正确的,你所说的没有任何意义。 – zarchasmpgmr

+0

你使用什么FTP命令?你正在写一个现有的数据集还是创建一个新的数据集? –

回答

0

目前尚不清楚你在做什么,并试图完成。我假设你通过FTP从VB(或者可能是VBS)大型机数据集中提取了一些数据。然后在非大型机平台上处理它,然后将其FTP回来。

如果您希望能够读取块并成功记录超出平台的长度,则需要使用RECFM = U引用FTP作业中的大型机数据集。请注意,这需要您从主机端启动FTP,我不相信您可以执行FTP获取并从VB(S)文件保留块/记录长度。然而,您可能首先将大型机上的文件复制到RECFM = U文件,然后将FTP下载。再次,需要在大型机方面采取行动来调整数据以供您使用。

当你把它放回去时,你可能有类似的问题。坦率地说,我没有尝试过对RECFM = VB文件进行PUTTING,以了解大型机FTP服务器是否会默认为您正确记录/块长度,但听起来可能不是。因此,如果你必须以编程方式管理你的非平台代码中的记录/块的长度(这可能听起来并不那么微不足道),但是我的猜测是你将会拥有放入已具有正确RECFM的预分配文件。您可能可以使用报价网站命令(IIRC)正确分配新数据集,但我没有尝试过。

总之,RECFM = U可以让你获得块/记录的长度,把它们放回来可能会更棘手。但我并不确定这个方向。

取决于你想要做什么,它可能更容易在大型机上处理数据。尤其是如果您的代码是Java:IBM使JZOS类可用,这使得读取大型机上的大型机数据集变得非常容易。

+0

我已经使用JZOS类在大型机平台上读取和写入VB文件。但在目前的情况下,我需要通过FTP读取VB并在Windows平台上处理它,并再次通过FTP以相同的顺序回写VB文件。目前我可以读取VB文件的每个记录长度,但是如果我没有在VB文件中追加空格,写回它的时候,数据是混乱的 –