问题标签 [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.
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!
python - 压缩十进制到分区十进制或十进制转换python
我需要在python中编写代码,它将打包的十进制数据转换为分区十进制或十进制数据。如果有人已经为它编写了函数,请帮助我。
提前致谢。
java - 如何将简单的 Java 字符串转换为压缩十进制格式的 EBCDIC
我必须将文件中的所有数据转换为压缩十进制格式的 EBCDIC。
文件中的所有数据都是简单的文本格式。
据我所知,我们需要先将 ASCII 转换为 EBCDIC Cp1047 或其他格式,然后应用“压缩十进制”逻辑/代码。(可能是我错了)
转换后的格式应该是“C3 C5 40 F0 C9 F8”(即EBCDIC压缩十进制格式)
type-conversion - COBOL DATATYPE CONVERSION:将 DDMMYY 中的日期转换为 3 字节的压缩十进制
我有一个要求,我想将数字格式的日期(DDMMYY)移动到 3 个字节的压缩十进制/comp-3 中。必须将日期移动到仅为其分配 3 个字符/字节的文件中。这是我尝试过的。
我没有在输出中获得所需的值。怎么做到呢?
r - 如何在 R 中读取压缩十进制/压缩整数格式
我必须从一个古老的固定宽度表中读取数据。一些字段采用 IBM 压缩十进制格式,我不知道如何获取这些数字。
例如,我的输入文件的一行可能如下所示:
其中‘ëm§1
实际上是数字 3153947 的压缩十进制表示。SAS 可以通过以下方式正确读取该字段INPUT gew pd4.4
任何人都有这个问题的经验?
php - 使用 PHP 解压大型机压缩十进制 (BCD)
我从大型机获得了一个数据文件。我已经用 PHP 处理了 EBCDIC 到 latin1 的转换。但是现在这个打包的十进制字段就剩下了。
例如,数字 12345 被打包成 3 个字节,看起来像:x'12345C'
负数就像:x'12345D'
所以右半字节告诉标志。有没有办法用 PHP 轻松做到这一点?
现在我这样做:
结果是:
现在我可以检查最后一个标志是 C 还是 D 并手动完成。但也许有更好的解决方案?
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,这可能会使您的解决方案比我的更困难。
arrays - 谁能告诉我这个 RPGLE 数组有什么问题?
有一个看起来像这样的打印机文件:
Units、Count 和 Total 字段被映射到数据结构中,并覆盖有这样的数组定义:
经过一些处理后,当我在打印机文件的详细信息行上处理 WRITE 时,我收到“十进制数据错误”。
令我感到非常惊讶的是,数组 COUNTAR 和 TOTALAR 的数据类型似乎是“Packed”,尽管之前定义的所有变量 COUNT、COUNTnn、TOTAL 和 TOTALnn 都是“分区的”并且数据结构 COUNTDS 和 TOTALDS 是“Char”。
打包数据映射到打印机文件的输出缓冲区,导致“十进制数据错误”。
为什么这些数组突然变成“打包”数据格式?
ascii - 使用 Java 解压缩 COMP-3 数字
ascii - 使用 Record Editor/Jrecord 解压缩 COMP-3 数字
我创建了基于 cobol 抄写本的布局。
布局快照:
我尝试加载数据也选择相同的布局,它给我一些列的错误结果。我尝试使用所有二进制数字类型。
- 阶级秩序边缘
- DIV-NO-EDG
- Office-NO-EDG
- REG-AREA-NO-EDG
- 城市无边缘
- 县无边缘
- BILS-Count-EDG
- 修订量-边缘
- 使用数量-EDG
- 气体-CCF-EDG
输入文件可以在下面的附件中找到
或者
https://drive.google.com/open?id=0B-whK3DXBRIGa0I0aE5SUHdMTDg
预期输出: