问题标签 [packed-decimal]

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 投票
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 投票
1 回答
1835 浏览

python - 压缩十进制到分区十进制或十进制转换python

我需要在python中编写代码,它将打包的十进制数据转换为分区十进制或十进制数据。如果有人已经为它编写了函数,请帮助我。

提前致谢。

0 投票
1 回答
2871 浏览

java - 如何将简单的 Java 字符串转换为压缩十进制格式的 EBCDIC

我必须将文件中的所有数据转换为压缩十进制格式的 EBCDIC。

文件中的所有数据都是简单的文本格式。

据我所知,我们需要先将 ASCII 转换为 EBCDIC Cp1047 或其他格式,然后应用“压缩十进制”逻辑/代码。(可能是我错了)

转换后的格式应该是“C3 C5 40 F0 C9 F8”(即EBCDIC压缩十进制格式)

0 投票
3 回答
2049 浏览

type-conversion - COBOL DATATYPE CONVERSION:将 DDMMYY 中的日期转换为 3 字节的压缩十进制

我有一个要求,我想将数字格式的日期(DDMMYY)移动到 3 个字节的压缩十进制/comp-3 中。必须将日期移动到仅为其分配 3 个字符/字节的文件中。这是我尝试过的。

我没有在输出中获得所需的值。怎么做到呢?

0 投票
0 回答
520 浏览

r - 如何在 R 中读取压缩十进制/压缩整数格式

我必须从一个古老的固定宽度表中读取数据。一些字段采用 IBM 压缩十进制格式,我不知道如何获取这些数字。

例如,我的输入文件的一行可能如下所示:

其中‘ëm§1实际上是数字 3153947 的压缩十进制表示。SAS 可以通过以下方式正确读取该字段INPUT gew pd4.4

任何人都有这个问题的经验?

0 投票
2 回答
1197 浏览

php - 使用 PHP 解压大型机压缩十进制 (BCD)

我从大型机获得了一个数据文件。我已经用 PHP 处理了 EBCDIC 到 latin1 的转换。但是现在这个打包的十进制字段就剩下了。

例如,数字 12345 被打包成 3 个字节,看起来像:x'12345C'

负数就像:x'12345D'

所以右半字节告诉标志。有没有办法用 PHP 轻松做到这一点?

现在我这样做:

结果是:

现在我可以检查最后一个标志是 C 还是 D 并手动完成。但也许有更好的解决方案?

0 投票
1 回答
2894 浏览

c# - 如何在 C# 中将 Cobol COMP 字段输出转换为可读的十进制?

在将 cobol 程序转换为 C# 时,我遇到了 COMP:

我花了几个小时研究 COMP。大多数搜索都会产生关于 COMP-3 的信息,或者提到 COMP 是二进制转换。但是,cobol 程序的 COMP 输出是非 COMP 字段,后跟(括号之间):

( F ” " )

而实际值都是 0.00,除了 var13 是 64.70

注意:这些是从 Notepad++ 复制的值。另外,请注意,我对 cobol 知之甚少。

如何从 COMP 转换为十进制?理想情况下,我也可以将十进制转换为 COMP,因为我需要将内容恢复为相同的格式。

我尝试使用以下方法以二进制形式读取数据:


编辑:在正确的轨道上

感谢@piet.t 和@jdweng 的帮助。

虽然此测试代码仍然存在问题,但这应该可以帮助我所在位置的任何人解决他们的问题:


编辑2:试图找到问题

问题:每个值后面似乎都跟着一些垃圾值,这些值被打印为下一个 int32。

实际值:

输出(带填充):

记事本++(复制)表示:

Notepad++(视觉)表示:


编辑3:解决方案!

@piet.t 一切正常。感谢您对我的第一个问题的有用回答!这个问题是 cobol 程序特有的。我被引导相信 Var14 始终为 0,但是:

我使用RecordEdit更轻松地调整数据(警告:程序在某些地方有点奇怪)并注意到“垃圾”值的奇怪趋势。

我的问题的真正解决方案是我几天前制作的第一个 EDIT 中的代码:/.

注意:我还必须使用一个换行符,我没有在该代码中添加它。为此,只需添加另一个reader.ReadBytes(1);.

注意 2:您可能需要查看EBDCDIC和/或Endianness,这可能会使您的解决方案比我的更困难。

0 投票
2 回答
482 浏览

arrays - 谁能告诉我这个 RPGLE 数组有什么问题?

有一个看起来像这样的打印机文件:

Units、Count 和 Total 字段被映射到数据结构中,并覆盖有这样的数组定义:

经过一些处理后,当我在打印机文件的详细信息行上处理 WRITE 时,我收到“十进制数据错误”。

令我感到非常惊讶的是,数组 COUNTAR 和 TOTALAR 的数据类型似乎是“Packed”,尽管之前定义的所有变量 COUNT、COUNTnn、TOTAL 和 TOTALnn 都是“分区的”并且数据结构 COUNTDS 和 TOTALDS 是“Char”。

打包数据映射到打印机文件的输出缓冲区,导致“十进制数据错误”。

为什么这些数组突然变成“打包”数据格式?

0 投票
4 回答
5199 浏览

ascii - 使用 Java 解压缩 COMP-3 数字

我有一个包含一些 COMP-3 编码字段的文件。有人可以告诉我如何在下面的线程中测试这段代码吗?

如何使用 Java 解压缩 COMP-3 数字?

我试过的代码是

BufferedReader br = new BufferedReader(new FileReader(FILENAME))) {

上面的代码没有给出正确的结果。我尝试单列进行转换,但它没有返回正确的结果。我的输入栏 在此处输入图像描述

输入文件看起来像

在此处输入图像描述

我尝试了 JRecord 传递 cbl copybook 和数据文件,它生成的 Java 代码给出的结果不同生成的输出 在此处输入图像描述

所需输出

在此处输入图像描述

cbl 抄本如下图所示

在此处输入图像描述

0 投票
1 回答
960 浏览

ascii - 使用 Record Editor/Jrecord 解压缩 COMP-3 数字

我创建了基于 cobol 抄写本的布局。

布局快照:

在此处输入图像描述

我尝试加载数据也选择相同的布局,它给我一些列的错误结果。我尝试使用所有二进制数字类型。

  1. 阶级秩序边缘
  2. DIV-NO-EDG
  3. Office-NO-EDG
  4. REG-AREA-NO-EDG
  5. 城市无边缘
  6. 县无边缘
  7. BILS-Count-EDG
  8. 修订量-边缘
  9. 使用数量-EDG
  10. 气体-CCF-EDG

结果快照 在此处输入图像描述

输入文件可以在下面的附件中找到

在此处输入链接描述

或者

https://drive.google.com/open?id=0B-whK3DXBRIGa0I0aE5SUHdMTDg

预期输出:

在此处输入图像描述

相关线程 Unpacking COMP-3 digit using Java