問題タブ [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 投票する
4 に答える
22024 参照

numeric - SYNCSORTを使用して、特定の符号値でPacked Decimalフィールドをフォーマットするにはどうすればよいですか?

SYNCSORTを使用して、すべてのPackedDecimalフィールドを負の符号値に強制したいと思います。重要な要件は、2番目のニブルが16進数の「D」でなければならないことです。私にはうまくいく方法がありますが、それはあまりにも複雑に思えます。KISSの原則に沿って、誰かがより良い方法を持っていることを望んでいます。おそらく最後の4ビットにビットマスクを使用していますか?これが私が思いついたコードです。もっと良い方法はありますか?

0 投票する
3 に答える
6488 参照

c# - アンパックされた 10 進数を COMP-3 に変換する方法は?

COMP フィールドの変換について質問しましたが、回答がありませんでした。

stack-overflow がこの質問に役立つことを願っています。

COMP-3を10進数に変換することに成功しました。アンパックされた 10 進数を COMP-3 に変換する際に、任意の高レベル プログラミング言語で、できれば Java または c#.net で助けてください。

0 投票する
2 に答える
3902 参照

c# - パック10進数を使用してEBCDICでファイルをエンコードするC#

外部エンティティ用にファイルを準備する必要があります。このエンティティは COBOL を使用する IBM メインフレームを使用しており、ファイルを EBCDIC でエンコードする必要があります。C#でファイルを作成しています。これは 2 つの部分からなる質問だと思います...まず、以下のコードは、ファイルが読み取り可能な方法で生成されることを保証するのに十分ですか?

次に、ファイル内のいくつかのフィールドには、S(9)13 COMP-3 形式のパック 10 進数が必要です。すでに EBCDIC エンコーディングを指定しているので、次のように 10 進数 (例: 1234500000001) をファイルに書き込むことはできますか?

...そして、生成されたファイルで正しく表示されますか?

EBCDIC または COMP-3 で何もしたことがありません。

0 投票する
4 に答える
7210 参照

decimal - 1 つのファイルにパック 10 進数と通常のテキストを含めるにはどうすればよいですか?

いくつかの列がパック 10 進数形式で、いくつかの列が通常の数値形式である固定幅ファイルを生成する必要があります。生成できました。ファイルを圧縮して、メインフレーム チームに渡しました。彼らはそれをインポートしてファイルを解凍し、EBCDIC に変換しました。問題なくパック 10 進列を取得できましたが、通常の数値フィールドは混乱しているようで、読み取ることができませんでした。ファイルをメインフレームに送信する前に、ファイルを処理/圧縮する際に必要な特定のことはありますか? COMP3 パック 10 進数を使用しています。現在は Windows XP で作業していますが、実際の運用は RHEL で行う予定です。

助けてくれてありがとう。これは緊急です。


2011 年 6 月 6 日に編集:

HEXをONにするとこんな感じ。

最初の行の「A」にはわずかなアクセントがあるため、実際の大文字の A ではありません。

210003166 は未加工の 10 進数です。comp3 変換前のパック 10 進数の値は 000000002765000 です (必要に応じて先行ゼロを無視できます)。


更新 2: 2011 年 6 月 7 日 これは、メインフレームにロードされるファイルを作成する際に変換する方法です。ファイルには、識別番号と金額の 2 つの列が含まれています。識別番号は comp3 変換を必要とせず、金額は comp3 変換を必要とします。Comp3 変換は、Oracle SQL の最後で実行されます。変換を実行するためのクエリは次のとおりです。

クエリを実行した後、Java で次のことを行います。

このようにして生成されたテキスト ファイルは、winzip ツールによって手動で圧縮され、メインフレーム チームに提供されます。メインフレーム チームはファイルをメインフレームにロードし、HEXON でファイルを参照します。

さて、ゾーン 10 進数の上位 4 ビットの変換についてですが、ファイルに正しく変換する前に変換する必要がありますか? または、メインフレーム側でフリッピングを適用する必要がありますか? 今のところ、次のコードを使用して Java 側で反転を行いました。

識別子は Java の終わりで 21000316F になり、それがファイルに書き込まれます。ファイルをメインフレーム チームに渡し、HEXON での出力を待っています。何か不足している場合はお知らせください。ありがとう。


更新 3: 2011 年 6 月 9 日

OK、メインフレームの結果が得られました。私は今これをやっています。

そして、次の出力が得られます。

私は何か非常に悪いことをしているに違いない!

更新 4: 2011 年 6 月 14 日

このクエリは、James の提案を使用した後に解決されました。現在、以下のコードを使用していますが、期待される出力が得られます。

0 投票する
1 に答える
5261 参照

sql - SQL COMP-3 パック 10 進数を取得するには?

いくつかの情報を含む ASCII 出力ファイルを作成していますが、2 つのフィールドでは日付と時刻をパック 10 進数フィールド (COMP-3) にする必要があります。SQL と SSIS を使用してファイルを生成しています。

複数のサイトを検索しましたが、日付/時刻をパック 10 進数フィールドに変換する方法がまだわかりません。どんな助けでも大歓迎です。

次のサイトhttp://www.simotime.com/datapk01.htm#TablePackedDecimalは、Packed フィールドに関する情報を提供しています。パックされたフィールドがどのように使用されるかは理解していますが、フィールドをパックする方法はよくわかりません。ありがとう!

0 投票する
2 に答える
3142 参照

java - COBOLデータ型変換:数値からパックされた数値、パックされた日付COMP-3

数値をPACKEDDEMCIMALに変換しようとしています。ウェブ調査番号から、123はパック番号として123D(負の数の場合はC)になります。私の質問は、「これは正しいPACKED DECIMALですか?」です。私が州を持っているという要件があるので、日付は3バイトのパックされた数値で格納され、長さは2桁だけです。

私の疑問を説明またはクリアしてください。

0 投票する
3 に答える
268 参照

cobol - COBOL パックされたデータ型: Type = P5

これは、COBOL の専門家にとって非常に基本的な質問かもしれません。しかし、私は今日までCOBOLとは何の関係もありませんでした。文字位置に基づいていくつかのファイルを処理しています。ファイルはメインフレーム マシンから送信されており、このような内容のレイアウト ファイルがあります。


位置 : 長さ : タイプ : 説明
----------:--------:------:---------------- ---------------

61-70 : 10 : P5 : FIELD-1 9(13)V(05)

71-80 : 10 : P5 : フィールド-2 9(13)V(05)

81-81 : 1 : A/N : フラグ

82-84 : 3 : N : 日数 9(3)

タイプ A/N は英数字であることを理解しています。N は数値を意味し、P はパックされたデータ型を意味します。私が理解していないのは、P5の意味です。Pの次にくる5の意味は?

0 投票する
4 に答える
13964 参照

ascii - Javaを使用してCOMP-3桁を解凍するには?

巨大なメイン​​フレーム ファイルがあり、そのファイルには圧縮された数字がいくつかあります。Javaを使用して次の数字を解凍する方法を知りたいですか?

パックデジット :?

数字のアンパックに関するチュートリアルを読み、数字のアンパックに必要なバイト数をカウントする次のルールを見つけました。

total_number_of_bytes = (no. of digits + 1) / 2

数字をアンパックするために次のコードを書きました:

このプログラムは、整数型の値に対しては正しく機能しますが、浮動小数点型の値に対しては機能しません。

私のプログラムが正しいかどうか誰か教えてください。

0 投票する
0 に答える
277 参照

php - 16 進数としての php 文字列

16 進文字のような ASCII 数字 (文字ではない) を書かなければなりません。1 バイトには 2 桁 (半バイトごとに 1 つ) が含まれている必要があります。これが、ファイルに書き込むために '0665879955443322' を持っている文字列であり、この結果が 06 65 87 99 55 44 33 22 (8 バイト) であるとします。(パック形式のように)似たようなことをするこの例を試します

php

今、うまくいかない私のコード!

$a $b $c をバイトのように転送する方法は?

色々ありがとう

0 投票する
2 に答える
523 参照

c# - SQL Server では、HEX と同様に、2 文字を 1 文字にパックする必要があります。どのように?

Binary(7) として定義されている列を含む SQL Server テーブルがあります。これは、Comp-3 データ (パック 10 進数) を持つ COBOL プログラムからのデータで更新されます。数値を取得して Comp-3 値を作成する C# プログラムを作成しました。CLR統合を介してSQL Serverで利用できます。ストアドプロシージャのようにアクセスできます。

私の問題は、このプログラムから値を取得してバイナリ列に保存する必要があることです。既にそこにあるデータの行を選択すると、次のような値が表示されます。

0x00012F0000000F

表示されている値は、SQL テーブルに格納されている COBOL comp-3 (パック 10 進数) データです。このフィールドは Binary(7) として定義されていることに注意してください。2 つの値が連結され、ここに格納されます。符号なし値 12、および符号なし値 0。

0x00012F (長さ 3 文字) と 0x0000000F (長さ 4 文字) を連結して列に書き込む必要があります。

私の質問は 2 つの部分です。

1) プログラムから Comp-3 値の文字列表現を返すことができます。しかし、これがこの作業を行うために返す必要がある形式であるかどうかはわかりません。SQL を正しく使用するには、どの形式で SQL に返す必要がありますか?

2) これを変換して機能させるにはどうすればよいですか?

私が十分に明確だったことを願っています。消化するのは大変です...ありがとう!