0

我在尝试做的事情上需要帮助,但在任何地方都找不到帮助。

我正在尝试通过 ISPF 将文件上传到主机(ISPF -> 命令 -> “将文件发送到主机”)。我遇到的问题是文件的长度可变(它是通过 SH 脚本从 DB2 数据库导出的)并且运行不正常。

我的意思是:在 Windows 中,文件如下所示:

This is line one
This is the second line
And this is the third

但在 Host 中,它总是以这样的方式结束:

This is line one This is
the second line and this
is the third

或类似的,取决于我在分配数据集时设置的“记录长度”。

我不知道问题是否在于我如何在 Host 上创建文件。如果问题出在发送参数上……或者可能出在 TXT 文件上。

我尝试使用不同的记录格式(F、FB、V、VB)创建数据集,并且一切都相同。并且还尝试在这里修改发送参数: 发送参数

并检查了txt文件,但似乎还可以。

好吧,提前感谢您的帮助!并为我糟糕的英语感到抱歉。

更新 03/18

你好!我仍在努力解决这个问题。但现在我有更多的信息!

似乎问题出在导出的文件中,而不是终端的配置。

我正在使用 linux 脚本从 DB2 数据库中导出文件,并且正在尝试从 Windows PC(具有 E3270 终端)上传它。我读了很多,并注意到从 DB2 导出到 linux 的文件仅使用“换行”代码来标记行尾(十六进制中的 0A),而 Windows 使用“回车 + 换行”(即“0D 0A"(十六进制))。

问题可能存在吗?

我尝试使用 Windows 创建一个新的 txt 文件(每行以 0D 0A 结尾).. 效果很好!但是我尝试修改导出的文件..在最后添加一个“空格”,然后用 0D 更改那个空格十六进制(20)(所以我有 0D 0A ..它没有让我“添加”一个新的六)..但它没有用。那..把我扔掉整个理论哈哈,但也许我做错了什么。

非常感谢!

4

1 回答 1

1

从主机输出中,文件(数据集)被认为是 24 的固定长度。它需要在发送中指定为变量 (VB)。

从这里Personal Communications 6.0.0>Product Documentation>Books>Emulator User's Reference>Transferring Files看来您可以按照以下方式指定:-

记录格式

当未指定 APPEND 用于文件传输时,仅对 VM/CMS 和 MVS/TSO 有效。您可以选择以下任何一项:

Default
Fixed (fixed length)
Variable (variable length)
Undefined (undefined mode for MVS/TSO only)

如果您选择默认值,记录格式将由主机系统自动选择。

为 VM 文件传输指定变量可以有效地使用主机磁盘空间。逻辑记录长度 (LRECL)

当未指定 APPEND 用于文件传输时,仅对 VM/CMS 和 MVS/TSO 有效。

在 LRECL 文本框中输入要使用的逻辑记录长度(主机记录字节数)。如果将变量和未定义模式指定为记录格式,则逻辑记录长度是文件内的最大记录长度。最大值为 32767。

从工作站发送到主机系统的文件的记录长度可能超过此处指定的逻辑记录长度。如果是这样,主机文件传输程序将文件除以逻辑记录长度。

当从工作站向主机发送文本文件时,如果文本文件包含 2 字节的工作站代码(如汉字代码),则由于插入了 SO 和 SI,文件的记录长度会发生变化。

要将包含长记录的文件发送到主机系统,请指定足够长的逻辑记录长度。

因为工作站文件的记录长度超过了逻辑记录长度,所以如果每条记录被分割,信息不会正常出现。要显示消息,请将以下规范添加到工作站配置文件的 [Transfer] 项:

DisplayTruncateMessage = Y

由于我没有访问权限,因此我实际上无法进一步研究,但我确实记得使用文件传输可能会有些混乱。

我建议将32767与variable一起用作 LRECL,并可能查看已链接的整个页面。PC端的东西必须知道如何转换文件(即在LF确定记录的长度并在记录前加上该记录长度(如果我没记错的话2字节/一个字))所以你可能不得不使用变量与另一个可选参数结合使用。

如果您点击链接,您将看到记录格式是定义传输类型的一部分,您可能必须按照以下方式定义传输类型:-

Click Edit -> Preferences -> Transfer from the session window.
Click the tab for your host type or modem protocol.

The property page for the selected host or modem protocol opens. The items that appear depend on the selected host system.
Enter transfer-type names in the Transfer Type box, or select them from the drop-down list.
Select or enter the required items (see Items to Be Specified).

To add or replace a transfer type, click Save. To delete a transfer type, click Delete.
A dialog box displays, asking for confirmation. Click OK.
于 2016-03-14T23:13:23.267 回答