【发布时间】:2014-09-06 15:23:29
【问题描述】:
我有一个 EBCDIC 编码的大型机文件,我需要将其转换为 ASCII 格式。我可以使用哪些库/工具来做到这一点。我最熟悉Python。
我收到的文件里面有一本cookbook,可以用来解析文件(部分如下)。
类型:“C”、“P”和“B”是什么意思?我猜 C = 字符,B = 字节,P = 压缩数?
1:----------------------------------------------------------------------------------------------------------------------------------:
:LAYOUT NAME: B224E DATE: 02/20/14 PAGE 7 OF 14:
: ------- -------- --- ---:
:COBOL: PAN-NAME: NONE COPYLIB-NAME: RECB224E :
: -------------------- -------------------- :
:BAL : PAN-NAME: NONE COPYLIB-NAME: NONE :
:------------------------------------------------------------------------------:
:TYPE OF RECORD: EXTENDED SORT KEY AREA - SEGMENT "A" (OPTIONAL) :
:------------------------------------------------------------------------------:
:POSITION : LENGTH : TYPE : DESCRIPTION :
:----------:--------:------:---------------------------------------------------:
: : : : :
: : : : :
: : : : :
:001 - 001 : 1 : C : SEGMENT IDENTIFIER - "A" :
: : : : :
:002 - 003 : 2 : P : SEGMENT LENGTH :
: : : : :
:004 - ??? : ??? : C : EXTENDED SORT KEY AREA :
: : : : :
【问题讨论】:
-
这是一个愚蠢的想法,如果您有压缩十进制和二进制字段,这将不起作用。查看最近标记为
ebcdic的问题以获取更多详细信息。不要这样做。不要被给你文件的人骗了。他们应该为您提供纯文本文件,并且文件传输过程应该进行转换。其他任何事情都应该通过审核。审计员:“所以,你收到一个数据文件,然后在对其进行任何操作之前对其进行更改?”你:“是的,我也从网上找了一些随机代码来做这件事”。审核员移除大红色记号笔,在页面上绘制 A4 大小的X。 -
是的,它会起作用的,作为一个物种,我们已经在许多混合架构上这样做了 30 多年,尤其是对于 IBM 主机和英特尔客户。该文件必须在字段级别进行映射,并为每个字段应用转换。有时这被称为模板。有许多 ETL 产品可以在消费者层面做到这一点。尤其是“数据阶段”。您可以使用 Python 从头开始执行此操作,因为文本和数字字段应该可以轻松地从 IBM037 或 IBM500 映射到 ascii。二进制文件通常会设置大小(半字向上)。 P 的按位算术。
标签: python ascii mainframe ebcdic