Alpha文字列とパックされた小数点を両方のアルファ文字列を含む混合DB2フィールドの挿入
-
20-12-2019 - |
質問
下記は、システム全体の毎月 Progision>項目をレンダリングする責任があるAS / 400のDB2テーブルの表/ファイルレイアウトです。典型的な表レイアウトに慣れていない人は、通常3列の列があることを知っておく必要があります.F00001、K00001、F00002。時々4分の1が私たちの中に現れる(K00002)。私たちのシステムでは、F00002は通常、私が指定した名前、位置、長さ、およびデータ型を提供している複数のサブフィールドを保持します。 Notes列のラベルの付いたNotes列のラベルの付いたものは、データの観点から重要ではないが、まだ適切にある必要があるため、EBCDIC文字でゼロ化された、または「間隔を置いて配置」を意味します。
Field Pos. Len. Name Type Notes
---------------------------------------------
F00001 1 2 MACT Alpha Activity Code, Always 1 or 9 (active/inactive)
K00001 1 20 MITEM Alpha Item Number
K00001 21 2 MP Alpha Unknown title, Always 'P'
K00001 23 2 MPITCL Alpha Unknown title, Always 'P' or 'I'
F00002 1 8 MSTDAT Integer Promotion Start Date, MMDDYY0F
F00002 9 8 MEXDAT Integer Promotion End Date, MMDDYY0F
F00002 17 8 MLIST Decimal Amount to be subtracted from original price
F00002 25 8 MRETAL Decimal Fluff, 0000000f
F00002 33 8 MCOST Decimal Fluff, 0000000f
F00002 41 10 MQTY Decimal Fluff, 000000000f
F00002 51 6 MPCHNG Integer Fluff, 00000f
F00002 57 12 MNPEFT Alpha Fluff, 404040404040
F00002 69 8 MNSTDT Integer Fluff, 0000000f
F00002 77 8 MNEXDT Integer Fluff, 0000000f
F00002 85 8 MNLST Decimal Fluff, 0000000f
F00002 93 8 MPNRTL Integer Fluff, 0000000f
F00002 101 8 MNCOST Decimal Fluff, 0000000f
F00002 109 8 ZZ14 Alpha Fluff, 40404040
F00002 117 8 MALPHA Alpha Fluff, 40404040
F00002 125 170 ZZ64 Alpha Fluff, 40404040404040...
.
これらのプロモーション開始/終了日を挿入する問題を解決しています。
列F00002にデータを文字列として挿入する場合は、自動的にEBCDIC番号に変換します。
INSERT INTO "SH.PROM" (F00001,K00001,F00002) VALUES ('1','0000620311PP','0201140F0228140F...')
.
(*** F00002の挿入データの末尾のドットは、残りが上記のファイル/テーブルレイアウトの後に続くことを意味します。)
とF00002はそれを試してみるためだけに整数として:
INSERT INTO "SH.PROM" (F00001,K00001,F00002) VALUES ('1','0000620311PP',0201140...)
.
列は左の埋められたゼロを省略し、それを再度EBCDIC文字に変換します。
これは、既存のF00002フィールドと2つの役立つリスホットの例です。 ">最初の second :
08 01 13 0f 01 31 14 0f 00 00 38 0f 00 00 00 0f 00 00 00 0f 00 00 06 80 0f 00 00 0f f0 f0 f0 f0 f0 f0 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 0f 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
.
データストアが正しく保存されるようにこのF00002フィールドを挿入する方法を教えてください。
解決
正しい解決策は、データ記述仕様(DDS)。
レガシープログラムには、外部で説明されているファイルにアクセスする問題がありません。
外部的に説明されると、通常、フィールドにアクセスし、データベースハンドルの変換を可能にします。
あなたが始めるためのサンプルです。私が数値フィールドの小数点以下の桁数で推測したプログラムソースから実際の入力仕様がありません。
A R PROM
A MACT 2A
A MITEM 20A
A MP 2A
A MPITCL 2A
A MSTDAT 8S 0
A MEXDAT 8S 0
A MLIST 8S 2
A MRETAL 8S 2
A MCOST 8S 2
A MQTY 10S 0
A MPCHNG 6S 0
A MNPEFT 12A
A MNSTDT 8S 0
A MNEXDT 8S 0
A MNLST 8S 2
A MPNRTL 8S 2
A MNCOST 8S 2
A ZZ14 8A
A MALPHA 8A
A ZZ64 170A
A K MITEM
A K MP
A K MPITCL
. 所属していません StackOverflow