问题标签 [comp-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
20653 浏览

c# - C#:将 COMP-3 压缩十进制转换为人类可读的值

我有一系列来自大型机的 ASCII 平面文件,由 C# 应用程序处理。引入了带有压缩十进制 (COMP-3) 字段的新提要,该字段需要转换为数值。

文件正在通过 FTP 传输,使用 ASCII 传输模式。我担心二进制字段可能包含将被解释为非常低的 ASCII 代码或控制字符而不是值的内容 - 或者更糟糕的是,可能会在 FTP 过程中丢失。

更重要的是,这些字段被读取为字符串。我可能可以灵活地解决这部分问题(即某种类型的流),但业务会给我带来阻力。

要求为“从 HEX 转换为 ASCII”,但显然这没有产生正确的值。任何帮助,将不胜感激; 只要您可以解释转换过程的逻辑,它就不需要特定于语言。

0 投票
5 回答
33497 浏览

ssis - 将 COMP-3 压缩十进制字段解释为数值

我正在创建一个 SSIS 包以从一系列字帖文件中读取未打包的数据。我不确定对以下字段定义的正确解释,并希望有人知道:

FIELD-NAME-1 PIC S9(15)V9(3) COMP-3。
FIELD-NAME-2 PIC S9(3)V9(8) COMP-3。
FIELD-NAME-3 PIC S9(3)V9(6) COMP-3。

数据以固定宽度的文本存储。上述字段的数据具有以下长度:

字段名称 1:19 字段名称 2:11 字段名称 3:9

我不确定如何解释小数位和符号。

任何帮助将不胜感激。

亲切的问候,火腿

0 投票
1 回答
2212 浏览

comp-3 - 将解压缩的 Packed Decimal Comp-3 数据转换为双精度

我有一个固定宽度的文本文件,它已从 Comp-3 数据解压缩为固定宽度的字符串。

我需要知道如何解释以下字段:

这些在我的平面文件中显示为:

我需要知道上面的数字代表什么。

它是否正确:

谢谢您的帮助。火腿

0 投票
2 回答
13916 浏览

c# - 在 ASCII 转换中解压缩 EBCDIC 压缩十进制 (COMP-3)

在 .NET 中使用 Jon Skeet 的 EBCDIC 实现来读取使用 FTP 从大型机系统以二进制模式下载的 VSAM 文件。它非常适合以这种编码方式读取/写入,但它没有任何东西可以读取压缩十进制值。我的文件包含这些,我需要将它们解包(显然以更多字节为代价)。

我怎样才能做到这一点?

我的字段定义为PIC S9(7)V99 COMP-3.

0 投票
1 回答
512 浏览

ruby-on-rails - 是否存在将数字转换为 comp-3/压缩十进制格式的现有 gem 或脚本?

继续我将 COBOL 转换为 Ruby 程序的冒险,我必须将十进制数字转换为 comp-3/压缩十进制格式。任何人都知道这样做的简单 Ruby 脚本或 gem 吗?伯恩斯

0 投票
1 回答
515 浏览

ruby - 是否存在将 comp-3/压缩十进制格式转换为数字的现有 gem 或脚本?

我开始了将 COBOL 程序转换为 Ruby 程序的新冒险,我必须将 aa comp-3/压缩十进制格式转换为数字。

之前的另一篇文章中,有一些代码可以从数字转换为 comp-3,但不能反过来。

0 投票
1 回答
5261 浏览

sql - SQL 如何获得 COMP-3 压缩十进制?

我正在创建一个包含一些信息的 ASCII 输出文件,并且我的两个字段要求日期和时间位于压缩十进制字段 (COMP-3) 中。我正在使用 SQL 和 SSIS 来生成我的文件。

我搜索了多个站点,但仍然无法弄清楚如何将日期/时间转换为压缩十进制字段。任何帮助将不胜感激。

以下站点http://www.simotime.com/datapk01.htm#TablePackedDecimal提供了有关打包字段的信息。我了解如何使用打包字段,但并不真正了解如何打包字段。谢谢!

0 投票
5 回答
6029 浏览

format - COBOL COMP-3 数字格式问题

我有一个混合了文本和数字字段的 cobol“磁带格式”转储。我正在将 C# 中的文件作为二进制数组(字节数组)读取。我有复印本,格式在文本字段上排列得很好。还有许多 COMP-3 字段。这些字段中的数据似乎与任何 BCD 格式都不匹配。我知道数据应该是什么,并且我有 COMP-3 的原始字节。我尝试先转换为 EBCDIC,但没有产生更好的结果。关于如何以其他方式在内部存储 COMP-3 编号的任何想法?以下是 PIC、原始数据和预期数字的三个示例。我知道我的字段位置是正确的,因为数字的两侧都有 alpha 数据,并且所有排列都正确。

第一个示例:字段的 PIC 为 9(9) COMP-3 数据有 5 个字节,十六进制值为 02 01 20 91 22 结果数据应为日期 (00CCYYMMDD)。这个特定的日期应该是 3-17-14。

第二个例子:字段的 PIC 是 S9(3) COMP-3 数据有 2 个字节,十六进制值是 0A 14 结果值应该在 900 到 999 之间 我的理解是“S”表示最后一个半字节应该是 0xC 或 0xD 来表示 + 或 -

第三个例子:字段的 PIC 是 S9(15)V99 COMP-3 数据有 9 个字节,十六进制值是 00 00 00 00 00 00 01 80 0C 结果值应该是 12.00

好的,感谢那些回应的人,因为他们为我指明了正确的方向。这确实是一个 ASCII/EBCDIC 表示问题。BCD 存储在 EBCDIC 中。使用 ASCII 到 EBCDIC 转换表会产生格式正确的 BCD 数字:

我用这个链接来映射数据:http ://shop.alterlinks.com/ascii-table/ascii-ebcdic-us.php

我的数据:0A 14 转换:25 3C(原来 253 是一个有效值,规范是错误的)C = +,一切都好

我的数据:01 80 0C(不包括前导零) 转换:01 20 0C 12.00 C = +,隐含 2 位格式,一切都好

我的数据:02 01 20 91 22 转换:02 01 40 31 7F 2014/03/17(F 是未使用的半字节),一切都很好

0 投票
2 回答
523 浏览

c# - In SQL Server, I need to pack 2 characters into 1 character, similar to HEX. How?

I have a SQL Server table that has a column in it that is defined as Binary(7). It is updated with data from a Cobol program that has Comp-3 data (packed decimal). I wrote a C# program to take a number and create the Comp-3 value. I have it available to SQL Server via CLR Integration. I'm able to access it like a stored procedure.

My problem is, I need to take the value from this program and save it in the binary column. When I select a row of data that is already in there, I am seeing a value like the following:

0x00012F0000000F

The value shown is COBOL comp-3 (packed decimal) data, stored in the SQL table. Remember, this field is defined as Binary(7). There are two values concatenated and stored here. Unsigned value 12, and unsigned value 0.

I need to concatenate 0x00012F (length of 3 characters) and 0x0000000F (length of 4 characters) together and write it to the column.

My question is two part.

1) I am able to return a string representation of the Comp-3 value from my program. But, I'm not sure if this is the format I need to return to make this work. What format should I return to SQL, so it can be used correctly?

2) What do I need to do to convert this to make it work?

I hope I was clear enough. It's a lot to digest...Thanks!

0 投票
3 回答
4717 浏览

python - 在 Python 中解码 ASCII 文件中的 COMP-3 压缩字段?

我有一个以前是 EBCDIC 编码文件的文件,它使用dd转换为 ASCII 。但是,有些行包含我想阅读的 COMP-3 压缩字段。

例如,我想解码的行之一的字符串表示是:

我要读取的字段由 指定PIC S9(09) COMP-3 POS. 3,即从第三个字节开始的字段,解码时长九个字节(因此,根据COMP-3 规范,编码时长五个字节)。

我了解 COMP-3 规范,并且我也知道对于这一特定行,该字段的整数值应该是315,但我不知道要做什么才能实际解码该字段。我也不确定将文件转换dd为 ASCII 的事实是否存在问题。

以前有没有人研究过类似的问题,或者我有什么明显的遗漏?谢谢!