
マシンコードで作成された PowerBuilder システム内で特定の値を指定した場合に、Ceiling 関数が正しく動作しないという不具合が確認されています。
| バグ ID | 11924 |
| 製品 | PowerBuilder |
| ステータス | Appeon にて検証中 |
| バージョン | 日本語版 | 英語版 |
|---|---|---|
| 12.6 以前 | × | × |
| 2017 (R2) | - | - |
| 2017 (R3) | × | - |
| 2019 | × | - |
| 2021 | (none) | - |
| 2022 | × | - |
指定した値によってマシンコードで作成された PowerBuilder システムでは、Ceiling 関数が正しく動作しない/EXE 作成が行えません。
下記のケースでは、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)))
下記のケースでは、IDE 上で実行すると戻り値として正しく「2」を返しますが、マシンコードで EXE 作成を行うと EXE の作成に失敗します。
// EXE の作成に失敗します MessageBox("Case3", Ceiling(1.01))
本不具合に関する回避策はありません。
PowerBuilder システム内で Ceiling 関数を使用されている場合は、コード生成オプションを「マシンコード」ではなく「P コード」を指定して EXE 作成を行ってください。