CLOSE
バグ情報_要注意

概要

マシンコードで作成された PowerBuilder システム内で特定の値を指定した場合に、Ceiling 関数が正しく動作しないという不具合が確認されています。

バグ ID11924
製品PowerBuilder
ステータスAppeon にて検証中
バージョン日本語版英語版
12.6 以前××
2017 (R2)
2017 (R3)×
2019×
2021(none)
2022×
◯:修正済み/未発生、×:未修正、-:未確認 (※2017 以外のバージョンについてはリリースされている最新リビジョンでの状況です)

詳細

指定した値によってマシンコードで作成された PowerBuilder システムでは、Ceiling 関数が正しく動作しない/EXE 作成が行えません。

戻り値が 1 つ多い値を返す

下記のケースでは、IDE 上で実行すると戻り値として正しく「5」を返しますが、マシンコードによって作成された PowerBuilder システムでは「6」を返します。

decimal ldc1, ldc2
long ll_res

ldc1 = 25000 
ldc2 = 5000 

// 正しい結果 : 25000 / 5000 = [5]
ll_res = Ceiling(ldc1 / ldc2)

MessageBox("Case1", ll_res)

まったく異なる戻り値を返す

下記のケースでは、IDE 上で実行すると戻り値として正しく「2」を返しますが、マシンコードによって作成された PowerBuilder システムではまったく異なる値(12345 など)を返す等、不正な動作となります。

dec dec1

dec1 = 12345 

MessageBox("Case2.1", Ceiling(1.01))

また下記のケースでは、IDE 上で実行すると戻り値として正しく「0」を返しますが、マシンコードによって作成された PowerBuilder システムではまったく異なる値(-2.56420562898889E-29 など)を返す等、不正な動作となります。

MessageBox("Case2.2", String(Ceiling(-0.1)))

EXE ファイルの作成に失敗する

下記のケースでは、IDE 上で実行すると戻り値として正しく「2」を返しますが、マシンコードで EXE 作成を行うと EXE の作成に失敗します。

// EXE の作成に失敗します 
MessageBox("Case3", Ceiling(1.01))

回避

本不具合に関する回避策はありません。
PowerBuilder システム内で Ceiling 関数を使用されている場合は、コード生成オプションを「マシンコード」ではなく「P コード」を指定して EXE 作成を行ってください。

x instagram facebook youtube