8. 移行の問題
8.4 PowerBuilder 7 以前か らの移行
8.4.3 予約語
例外処理を サポー ト す る ために PowerBuilder 8 で新 し い予約語を PowerScript 言語に追加 し ま し た。 既存のアプ リ ケーシ ョ ンの識別子 と し て新 し い予約語 (TRY、CATCH、FINALLY、THROW、 お よ び
THROWS) の う ちのいずれか を使用す る 場合は、 それ ら に矛盾 し ない
名前を付けて、 こ れ ら の識別子を変更 し なければな り ません。 新規作 成 ダ イ ア ロ グ ボ ッ ク ス の [ツール] タ ブページで利用で き る マ イ グ レーシ ョ ン ア シ ス タ ン ト を実行 し て新 し い予約語の不正な使用を検 索で き ます。
8.4.4 ト ラ ン スポー ト オブ ジ ェ ク ト は廃止
ト ラ ン ス ポー ト オブジ ェ ク ト お よ びそれに関連 し たプ ロ パテ ィ と メ ソ ッ ド は、PowerBuilder 8 以降で廃止 さ れ、PowerBuilder 9.0 か ら 削除 さ れ ま し た。 こ のオブジ ェ ク ト は、 分散型 PowerBuilder アプ リ ケー シ ョ ン で使用 さ れてい ま し た。 分散型 PowerBuilder に使用 さ れていて 廃止 さ れたプ ロ パテ ィ と メ ソ ッ ド は以下の と お り です。
• Application オブジ ェ ク ト の ConnectionBegin イ ベン ト と ConnectionEnd イ ベン ト
• Connection オブ ジ ェ ク ト の GetServerInfo 関数、RemoteStopConnection 関数、RemoteStopListening 関数
• Proxy オブ ジ ェ ク ト の SetConnect オブジ ェ ク ト
• Connection オブジ ェ ク ト の ConnectString プ ロ パテ ィ と Trace プ ロ パテ ィ
• ConnectionInfo 構造体
JavaBeans プ ロ キ シ と Web.PB ジ ェ ネ レー タ も 分散 PowerBuilder アプ リ ケーシ ョ ン で使用 さ れてい ま し たが、 削除 さ れ ま し た。
8.4.5 SystemError イ ベン ト の変更
PowerBuilder 7 以前では、Error イ ベン ト や ExternalException イ ベン ト で捕捉で き ないエ ラ ーが発生 し た場合、 アプ リ ケーシ ョ ンの SystemError イ ベン ト がただちに起動 さ れ ます。SystemError イ ベン ト に処理すべ き コ ー ド がない場合は、 アプ リ ケーシ ョ ンは終了 し ます。
それ以外の場合は、 SystemError イ ベン ト 実行後、 エ ラ ーが発生 し た コ ー ド に制御が戻 り ます。
PowerBuilder 8 以降では、 例外処理 メ カ ニズ ムに よ っ て、 あ る いは Error イ ベン ト や ExternalException イ ベン ト で捕捉で き ないエ ラ ーが発 生 し た場合、 ス ク リ プ ト は終了 し 、 コ ール ス タ ッ ク が解放 さ れ ます。
ス ク リ プ ト 内の Triggerevent 呼び出 し の結果 と し てエ ラ ーが発生 し た 場合は、 呼び出 し を行っ た ス ク リ プ ト は終了 し 、 コ ール ス タ ッ ク が解 放 さ れ ます。 ほ と ん ど の場合、SystemError イ ベン ト は コ ール ス タ ッ
ク が空にな る ま で起動 さ れ ません。 レ ス ポ ン ス ウ ィ ン ド ウ の イ ベン ト がエ ラ ーを引 き 起 こ し た場合、SystemError イ ベン ト は レ ス ポ ン ス ウ ィ ン ド ウ イ ベン ト が終了す る と 直ちに起動 さ れ ます。
動作上の こ の変更のために、 エ ラ ー と な っ た ス テー ト メ ン ト に続 く コ ー ド は、SystemError イ ベン ト の起動後は実行 さ れ ません (以前の リ リ ース では実行 さ れ ま し た)。 こ の変更は、 エ ラ ーが発生 し た ス ク リ プ ト に制御を戻す と い う 以前の動作に依存 し てい る アプ リ ケーシ ョ ン に大 き な影響があ り ます。 こ の動作に依存 し てい る コ ー ド は、
PowerBuilder 8 以降で修正す る 必要があ り ます。
TRY/CATCH ブ ロ ッ ク でエ ラ ーが発生す る か も し れない コ ー ド を ラ ッ プ し て潜在的なエ ラ ーを処理す る こ と で、 実行時エ ラ ーが発生す る 時 にSystemError イ ベン ト が発生 し ない よ う にで き ます。 捕捉で き ない 例外を処理す る ために、SystemError イ ベン ト を記述す る のが望ま し いで し ょ う 。SystemError イ ベン ト が呼び出 さ れた後はアプ リ ケー シ ョ ン の実行を続けないで く だ さ い。SystemError イ ベン ト では後処 理を行っ て、 アプ リ ケーシ ョ ン を中断 さ せ る よ う に し ます。
8.4.6 IsValid 関数の変更
IsValid 関数は、 現在 PowerObject 型に変換で き ない Any 型の引数を渡 さ れた場合に false を返 し ます。PowerBuilder 7 以前では、IsValid 関数 に無効なオブジ ェ ク ト を渡す と シ ス テ ム エ ラ ーが発生 し ま し た。 前 節のSystemError イ ベン ト の変更に も 注意 し て く だ さ い。
8.4.7 カ ラ ー オプ シ ョ ンの書式の変更
[デザ イ ン|オプシ ョ ン|オブジ ェ ク ト の色] を選択 し て、 デー タ ベース ペ イ ン タ かSQL Select ペ イ ン タ でグ ラ フ ィ カルな テーブルを表 示す る 各 コ ン ポーネ ン ト のカ ス タ ム カ ラ ーを指定で き ます。 こ こ で 指定 し た色は、PB.INI フ ァ イ ルの [Database] セ ク シ ョ ン に保存 さ れ
ます。 コ ン ト ロ ールで使用可能な Windows シ ス テ ム カ ラ ーお よ びカ ス タ ム カ ラ ーが増え た こ と をサポー ト す る ために、PowerBuilder 8 以 降で こ れ ら の色を保存す る 書式を変更 し ま し た。 以下は、
PowerBuilder 7 PB.INI フ ァ イ ルのキーを表す行の色の定義例です。
ForeignKeyLineColor=0 0 255
IndexKeyLineColor=255 0 0 PrimaryKeyLineColor=0 128 0
以下は、PowerBuilder 8 以降の PB.INI フ ァ イ ルの上記に対応す る 項目 です。
ForeignKeyLineColor=16711680 IndexKeyLineColor=255
PrimaryKeyLineColor=32768
PowerBuilder 7 PB.INI フ ァ イ ル、 ま たはその [Database] セ ク シ ョ ン を 使用す る 場合、PowerBuilder 8 以降では最初に [Database] セ ク シ ョ ン の色の設定をすべて削除す る 必要があ り ます。 こ れを行わない場合 は、 使用 し た色は PowerBuilder 8 以降で読み取れないテーブルを作成 し ます。 PowerBuilder 8 以降の [オブジ ェ ク ト の色] プ ロ パテ ィ シー
ト のカ ス タ ム カ ラ ーを リ セ ッ ト で き ます。
8.4.8 Web デー タ ウ ィ ン ド ウ移行の問題
PowerBuilder 7.0.2 C3 よ り 前の リ リ ース で、Netscape レ ン ダ リ ン グの問 題に対応 し た場合、 今回の リ リ ース では Netscape レ ン ダ リ ン グが改善
さ れたため正 し く 動作 し ない こ と があ り ます。
特に スペース のみを含む計算フ ィ ール ド やテ キ ス ト フ ィ ール ド を使 用 し てい る 場合、Web デー タ ウ ィ ン ド ウ ジ ェ ネ レー タ は こ れ ら の フ ィ ール ド に対 し て table エ ン ト リ を作成 し 、 テーブルを 2 倍の幅に し て表示 し ます。 こ の よ う にな っ た場合は、 こ のプ レース ホルダの フ ィ ール ド を削除 し て、 標準の レ イ ア ウ ト を使用 し ます。
8.4.9 空の DataObject プ ロパテ ィ へのデー タ ウ ィ ン ド ウ メ ソ ッ ド の戻 り 値
PowerBuilder 8.0.2 以降では、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールやデー タ ス ト アへ割 り 振 ら れたデー タ ウ ィ ン ド ウ オブジ ェ ク ト が無い時に返 さ れ る 値は、 表 5 に表示 さ れてい る よ う に メ ソ ッ ド に対 し て標準化 さ れてい ます。 こ れ ら の戻 り 値のい く つかは、PowerBuilder7以前の リ
リ ース の戻 り 値 と は異な り ます。
表 5: データウィンドウが割り振られていないときの戻り値
8.4.10 ScrollNextRow と ScrollPriorRow の動作の変更
PowerBuilder 8 以降では、 デー タ ウ ィ ン ド ウ メ ソ ッ ド の ScrollNextRow お よ び ScrollPriorRow は下記の順で イ ベン ト を発生 さ せます。
RowFocusChanging RowFocusChanged ItemFocusChanged ScrollVertical
PowerBuilder 7 以前では、 ScrollVertical イ ベン ト が、 ほかの イ ベン ト の 引 き 金 と な っ てい ま し た。 ScrollVertical イ ベン ト で、 も はや こ れ ら の 方法を使用す る こ と はで き ません。 使用す る と 、 デー タ ウ ィ ン ド ウ の 最後ま たは最初の行にた ど り 着 く ま で、 同 じ 一連の イ ベン ト が繰 り 返
し 発生 し ます。 [CR 323263]
8.4.11 OpenSheet 関数の動き を変更
PowerBuilder 8 以降では、OpenSheet 関数お よ び OpenSheetWithParm 関 数は、 処理失敗時に -1 を戻すかわ り に実行時エ ラ ーを送出 し てい ま
し た。 た と えば、 オプシ ョ ンの windowtype 引数が不正な場合に発生 し ます。 確実に こ のエ ラ ーを捕 ら え る ために、 戻 り 値のチ ェ ッ ク に加え て try-catch 文で呼び出 し を囲みます。
integer li_ret try
li_ret = OpenSheet(w_child, "w_child_1", &
MDI_User, 2, Original!)
if li_ret <> 1 then MessageBox("OpenSheet 失敗", &
"引数のチ ェ ッ ク") catch (RuntimeError rt)
MessageBox("OpenSheet 失敗", rt.GetMessage() )
メ ソ ッ ド 戻 り 値
AcceptText 1
DeleteRow -1
GetItemDate, GetItemDateTime, GetItemDecimal, GetItemNumber, GetItemStatus, GetItemTime
null
GetItemString 空の文字列
InsertRow -1
Retrieve -1
SelectRow 1
Update 1
// 処理エ ラ ー end if
[CR 303560]
8.4.12 LenW 関数の仕様変更
LenW 関数で blob 型のデー タ の長 さ を求め る 場合、PowerBuilder 7 以 前のバージ ョ ン では、 日本語が含ま れ る か否かにかかわ ら ず、blob 型 のデー タ のバ イ ト 数を返 し てい ま し たが、 PowerBuilder 8.0 以降、 文 字数を返す よ う にな り ま し た。 バ イ ト 数を求め る 場合は、LenW 関数 のかわ り に Len 関数を使用す る こ と がで き ます。