2

我正在尝试通过 C# 应用程序中的 SQL 查询来更新 COBOL 打包字段。目前,COBOL 压缩字段存储在 MS SQL 数据库的字符列 (char(50)) 中。

COBOL 数据类型 = 4 字节二进制数(“PIC S9(9) COMP”):

我可以使用以下语句来提取数据。我不确定如何扭转这个数据更新过程。

CAST(CAST(SUBSTRING({Column Name},{Start},4) AS VARBINARY(4)) AS BIGINT) AS {Alias_Name}

有什么建议么?

谢谢,

布伦南·曼

4

2 回答 2

1

答案来晚了。但无论如何......这里是:如果它确实是 PIC S9(9) COMP 而不是 COMP-3,那么它不是一个“险恶的”COBOL 压缩字段,而是一个简单的 4 字节整数!

于 2010-02-17T13:38:07.710 回答
0

万一有人需要这个......这是C#的解决方案

 public string ConvertToFourByteBinaryNumber(Int32 value)
    {
        byte[] intBytes = BitConverter.GetBytes(value);

        Array.Reverse(intBytes); // IsLittleEndian

        return Encoding.Default.GetString(intBytes);
    }

    public string ConvertToEightByteBinaryNumber(long value)
    {
        byte[] intBytes = BitConverter.GetBytes(value);

        Array.Reverse(intBytes); // IsLittleEndian

        return Encoding.Default.GetString(intBytes);
    }
于 2018-03-15T23:09:59.090 回答