我正在尝试使用Python和ftplib自动从az/os PDS下载一些文本文件.
由于主机文件是EBCDIC,我不能简单地使用FTP.retrbinary().
FTP.retrlines()当与open(file,w).writelines一起用作其回调时,当然不提供EOL.
所以,对于初学者来说,我已经提出了这段"看起来对我好"的代码,但由于我是一个相对的Python noob,有人能提出更好的方法吗?显然,为了保持这个简单的问题,这不是最后的,钟声和口哨的事情.
非常感谢.
#!python.exe
from ftplib import FTP
class xfile (file):
def writelineswitheol(self, sequence):
for s in sequence:
self.write(s+"\r\n")
sess = FTP("zos.server.to.be", "myid", "mypassword")
sess.sendcmd("site sbd=(IBM-1047,ISO8859-1)")
sess.cwd("'FOO.BAR.PDS'")
a = sess.nlst("RTB*")
for i in a:
sess.retrlines("RETR "+i, xfile(i, 'w').writelineswitheol)
sess.quit()
Run Code Online (Sandbox Code Playgroud)
更新:Python 3.0,平台是Windows XP下的MingW.
z/os PDS具有固定的记录结构,而不是依赖行结尾作为记录分隔符.但是,z/os FTP服务器在文本模式下传输时,会提供记录结尾,其后退()剥离.
结账更新:
这是我修改后的解决方案,它将成为持续开发的基础(例如,删除内置密码):
import ftplib
import os
from sys import exc_info
sess = ftplib.FTP("undisclosed.server.com", "userid", "password")
sess.sendcmd("site sbd=(IBM-1047,ISO8859-1)")
for dir in ["ASM", "ASML", "ASMM", "C", "CPP", "DLLA", "DLLC", "DLMC", "GEN", "HDR", "MAC"]: …
Run Code Online (Sandbox Code Playgroud) 我必须在zOS中创建一个动态链接的库.有哪些选项可以传递给编译器.
另外,如何检查zOS中的库是否与其他库动态链接[相关].我们在linux中有ldd,它显示了这种联系.我们在zOS土地上有'ldd'等价物吗?
我是一个Unix黑客,所以每当我想运行一些SQL时,我就会运行一个脚本.我用我的查询调用DB2并将stdout转储到文件中.非常尼安德特人,但它的确有效.我有一个带varchar(28672)的表.该字段永远不会那么长,但db2将其格式化为28k宽.
显然,我更改了我的查询以选择substr(field,1,100)来获得字段的开头,这就是它返回的内容,只是前100个字符,但它仍然将输出的字段格式化为28672个字符.知道如何使其格式化为数据输出的大小?
我在测试BizTalk中的MQSC适配器以与Z/OS主机上的队列进行通信时遇到问题.
测试参数:通过Biztalk I(强制)发送消息时停止并启动主机通道,以模仿主机IPL.
在这种情况下,我经历了以下结果:
有时在主机MQ上没有取消注释消息.
即使频道再次启动.这样我就不知道消息是否已被Biztalk处理.
问题有没有办法确保消息始终在Host MQ上提交,或者如果未提交,仍然可以在MQ上使用
一旦我遇到重复的消息,一旦消息丢失,
因为这些事情每次只发生一次.我希望在我的测试应用程序/程序中发现问题.
这不是一个问题,但如果其他人遇到了我想知道的相同错误.
测试设置
端口配置
接收位置
发送端口
我问自己一个关于z/os日志的问题:
我只是想知道所有开始的操作是否总是被$ HASP373和IEF403I调用?对于由$ HASP395和IEF404I调用的状态Ended?
是否有一种 SQL 方法可以显示 DB2 Z/OS 中表或视图上的权限?我想实现这样的目标:
select * from sysibm.magic_table where table_name = 'users'
|TABLE_NAME|PRIVILEGE_TYPE|USER_OR_GROUP_NAME|
| USERS| INSERT| ANDI|
| USERS| SELECT| ADMINS|
Run Code Online (Sandbox Code Playgroud)
那可能吗?
我正在尝试在 cobol 中进行 hello world 的链接,如本教程中所示,我可以编译程序并成功获取 project.group.OBJ 中的新成员,但是当我将它与
LINK project.group.OBJ(Member) lib('cee.sceelked')
Run Code Online (Sandbox Code Playgroud)
我得到以下信息:
IEW2278I B352 INVOCATION PARAMETERS - TERM
IEW2606S 4B39 MODULE INCORPORATES VERSION 3 PROGRAM OBJECT FEATURES AND CANNOT
BE SAVED IN LOAD MODULE FORMAT.
IEW2008I 0F03 PROCESSING COMPLETED. RETURN CODE = 12.
Run Code Online (Sandbox Code Playgroud)
我意识到在 4(前景)选项中,链接编辑器在左侧显示一个星号:“7 *Binder/Link editor”,表示“不支持打包数据”。
错误是因为这个吗?“不支持打包数据”是什么意思?我可以毫无问题地访问该选项。
搜索我找到了一个链接,它表明“正在尝试以与正在使用的功能不兼容的格式保存模块”,但我不知道所使用的功能是什么意思。它是否与链接时应该放置的数据集加载的类型有关?我搞不清楚了。
我们正在开发SQL
使用SQL
. ODBC drivers
我们正在研究扩展到 的可能性DB2
,但我读到有多个版本可用。DB2
对于LUW
、对于iSeries
和对于 z/OS。
这些版本的功能SQL
有什么差异吗?SQL/PLSQL
作为 ISV,是否有可能获得DB2
用于iSeries
或z/OS
我一直在阅读有关链接和加载(操作系统主题之一,不是特定于任何语言)的内容,我在没有任何先前参考的情况下遇到过这个术语"加载模块".根据我对其使用方式的理解,它似乎是编译和链接后的最终产品(也许是可执行文件).我试过谷歌,这个术语似乎与COBOL语言有关,并且没有特定于COBOL的规范,所以,我在这里发布这个,以便知道你们之前是否有人听过这个并且启发我.
假设我有一个 COBOL 模块 X,它被另一个程序 Y 调用。
如何在 X 中识别 Y 的名称?
我当然可以在链接部分将它传递给每个子模块,但我宁愿依靠更具程序性的方式来处理这个问题,而不是开发人员正确编码一些文字。
但是有没有任何已知的方法可以有效地做到这一点?也许一些晦涩的 LE 功能或要读取的特定控制块?
所有程序都使用 Enterprise COBOL 在 z/OS 上批量运行。