2007年02月09日
d4_orders.4gl
IBM Informix 4GL 7.32 に含まれている demo4 の日本語サンプルコードをコンパイルして動作させると、レポート出力結果の金額値出力部分に数値が表示されず、こんな感じになってしまうのに気づきました。
==== ここから (手を抜いてHTML化したので、単語間の空白が詰まってしまいました。ご了承ください。)
-------------------------------------------------------------------------------
# 品番 メーカ 品目名 数量 単価 単位 単位 説明 金 額
1 01 HRO 野球グローブ(軟 2 ******* 箱 10 個/ケース ***********
-------------------------------------------------------------------------------
合 計: ***********
送 料: ***********
-----------
総合計:***********
==== ここまで
調べてみると、d4_orders.4glに、Informix 4GL version 4の日本語化仕様に沿った記述が入っていました。このままではversion 7 でコンパイルした場合に正しく動作しないですね。
version 7.32.xC3までの製品に含まれる、日本語版のd4_orders.4gl では、レポート関数内で、金額型数値の書式指定文字列に、"\" ( 円マーク ) を使用していますが、これは、version 7 では "$" を使用すべきですね。
正しく書式指定文字列を直してあげたら、こんな感じに、無事レポート出力が正常になりました。
======= ここから
-------------------------------------------------------------------------------
# 品番 メーカ 品目名 数量 単価 単位 単位 説明 金 額
1 01 HRO 野球グローブ(軟 2 \75000 箱 10 個/ケース \150000
-------------------------------------------------------------------------------
合 計: \150000
送 料: \5250
-----------
総合計:\155250
======= ここまで
以下、修正内容です。
( ujis 版のソースコード
% cd $INFORMIXDIR/demo/fgl/ja_jp/e007
% diff d4_orders.4gl ~/fixed/d4_orders-for-v7.4gl
464c464
< USING "\\\\\\\\\\\\\\"," ",x.最小販売単位," ",x.単位内容
," ";
---
> USING "$$$$$$$"," ",x.最小販売単位," ",x.単位内容," ";
466c466
< USING "\\\\\\\\\\\\\\\\\\\\\\"
---
> USING "$$$$$$$$$$$"
473c473
< PRINT COLUMN 60, " 合 計: ",calc_total USING
"\\\\\\\\\\\\\\\\\\\\\\"
---
> PRINT COLUMN 60, " 合 計: ",calc_total USING "$$$$$$$$$$$"
476c476
< x.運賃 USING "\\\\\\\\\\\\\\\\\\\\\\"
---
> x.運賃 USING "$$$$$$$$$$$"
479c479
< PRINT COLUMN 60, " 総合計: ",calc_total USING
"\\\\\\\\\\\\\\\\\\\\\\"
---
> PRINT COLUMN 60, " 総合計: ",calc_total USING "$$$$$$$$$$$"
==== ここから (手を抜いてHTML化したので、単語間の空白が詰まってしまいました。ご了承ください。)
-------------------------------------------------------------------------------
# 品番 メーカ 品目名 数量 単価 単位 単位 説明 金 額
1 01 HRO 野球グローブ(軟 2 ******* 箱 10 個/ケース ***********
-------------------------------------------------------------------------------
合 計: ***********
送 料: ***********
-----------
総合計:***********
==== ここまで
調べてみると、d4_orders.4glに、Informix 4GL version 4の日本語化仕様に沿った記述が入っていました。このままではversion 7 でコンパイルした場合に正しく動作しないですね。
version 7.32.xC3までの製品に含まれる、日本語版のd4_orders.4gl では、レポート関数内で、金額型数値の書式指定文字列に、"\" ( 円マーク ) を使用していますが、これは、version 7 では "$" を使用すべきですね。
正しく書式指定文字列を直してあげたら、こんな感じに、無事レポート出力が正常になりました。
======= ここから
-------------------------------------------------------------------------------
# 品番 メーカ 品目名 数量 単価 単位 単位 説明 金 額
1 01 HRO 野球グローブ(軟 2 \75000 箱 10 個/ケース \150000
-------------------------------------------------------------------------------
合 計: \150000
送 料: \5250
-----------
総合計:\155250
======= ここまで
以下、修正内容です。
( ujis 版のソースコード
% cd $INFORMIXDIR/demo/fgl/ja_jp/e007
% diff d4_orders.4gl ~/fixed/d4_orders-for-v7.4gl
464c464
< USING "\\\\\\\\\\\\\\"," ",x.最小販売単位," ",x.単位内容
," ";
---
> USING "$$$$$$$"," ",x.最小販売単位," ",x.単位内容," ";
466c466
< USING "\\\\\\\\\\\\\\\\\\\\\\"
---
> USING "$$$$$$$$$$$"
473c473
< PRINT COLUMN 60, " 合 計: ",calc_total USING
"\\\\\\\\\\\\\\\\\\\\\\"
---
> PRINT COLUMN 60, " 合 計: ",calc_total USING "$$$$$$$$$$$"
476c476
< x.運賃 USING "\\\\\\\\\\\\\\\\\\\\\\"
---
> x.運賃 USING "$$$$$$$$$$$"
479c479
< PRINT COLUMN 60, " 総合計: ",calc_total USING
"\\\\\\\\\\\\\\\\\\\\\\"
---
> PRINT COLUMN 60, " 総合計: ",calc_total USING "$$$$$$$$$$$"
円マークもバックスラッシュとして表示されてしまいましたね。たびたびの手抜き入力済みません。
Posted by oninit at 23:23│Comments(0)
│ちょっと細かいテックネタ
※このブログではブログの持ち主が承認した後、コメントが反映される設定です。