5.15.1 .NET Web サービ スでの ト レース ツールの使用
9.3 PowerBuilder 9.0 以前か ら の移行
9.3.1 イ ンポー ト フ ァ イル サイ ズの制限
PowerBuilder 10.0 以降のバージ ョ ン で Unicode が利用で き る よ う にな り ま し た。 アプ リ ケーシ ョ ン で ImportFile メ ソ ッ ド を使用 し て、 と て も 大 き なテ キ ス ト フ ァ イ ル (お よ そ 839,000 行) をデー タ ウ ィ ン ド ウ やデー タ ス ト アに イ ン ポー ト す る 場合、ImportFile はエ ラ ー コ ー ド -15 を返 し ます。PowerBuilder の ANSI バージ ョ ン では、 大 き な テ キ ス ト フ ァ イ ルを イ ン ポー ト す る こ と がで き ま し た。
9.3.2 Unicode の変更 (IM)
PowerBuilder 10 以降のバージ ョ ン か ら 、Unicode が利用で き る よ う に な り ま し た。PowerBuilder 10 以降の PBL の ソ ース コ ー ド は UTF-16LE でエ ン コ ー ド さ れ ます。 UTF-16LE は、 リ ト ル エ ンデ ィ ア ン フ ォ ー マ ッ ト (複合バ イ ト の数値を最下位のバ イ ト か ら 格納す る ) でのバ イ
ト シーケ ン ス と し て UTF-16 コ ー ド 単位のシーケ ン ス を シ リ ア ラ イ ズ す る Unicode エ ン コ ーデ ィ ン グ方式です。
PowerBuilder の以前のバージ ョ ン で開発 さ れた PBLは、 ANSI ま たは DBCS 形式の ソ ース コ ー ド を含んでい ます。 アプ リ ケーシ ョ ン を PowerBuilder 11 移行のバージ ョ ンへ移行す る と 、 まず最初に今ま で と 同様に各 PBL を最新バージ ョ ン の PowerBuilder へ移行 し ます。 その次 に、 PowerBuilder は ソ ース コ ー ド を ANSI ま たは DBCS か ら Unicode へ変換 し 、 フル構築を行い、 同 じ フ ァ イ ルに ソ ース コ ー ド を保存 し ます。
こ の変更の結果、 新 し い関数がい く つか追加 さ れて、 フ ァ イ ル関連の 関数 と 外部関数呼び出 し の構文でい く つか変更が行われ ま し た。 こ れ ら の変更の詳細については、 オ ン ラ イ ン ヘルプの新機能の説明の中 の Unicode のサポー ト の関す る 項目 と 、 『アプ リ ケーシ ョ ン テ ク ニ ッ
ク』 マニ ュ アルの Unicode に関す る 節を参照 し て く だ さ い。
9.3.3 文字列操作関数の処理の変更
以前のバージ ョ ンの PowerBuilder では、Len、Mid、 お よ び Pos な ど の 文字列操作関数は、 文字列内のバ イ ト 数を返 し た り 、 ま たは引数 と し てバ イ ト 数を使っ てい ま し た。 PowerBuilder 10 以降では、 文字列操作 関数は文字数を返 し た り 、 引数 と し て文字数を と る よ う に変更 さ れ ま し た。
シ ン グルバ イ ト 文字セ ッ ト (SBCS) の環境で作業 し てい る 場合、 ア プ リ ケーシ ョ ン では こ れ ら の変更に よ る 影響はほ と ん ど あ り ません。
こ れは以前のバージ ョ ンの PowerBuilder では、 バ イ ト 数 と 文字数は等 し いためです。
し か し 、2 バ イ ト 文字セ ッ ト (DBCS) 環境で作業 し てい る 場合、 以 下の 2 点において変更に よ る 影響があ り ます。
• LenW やPosW な ど、 接尾辞 W (「wide」 関数) が付 く 文字列操作 関数は、 以前のバージ ョ ンの PowerBuilder では、2 バ イ ト 文字で 処理 し てい ま し た。PowerBuilder 10 以降では、 こ れ ら の関数は接 尾辞 W が付かない関数 と ま っ た く 同 じ 動作を し ます。 こ れ ら の関 数は引 き 続 き 使用で き ますが、 非推奨の関数であ り 、 下位互換性 のためにのみ保持 さ れてい ます。
• DBCS 環境で、Len 関数や Pos 関数な ど、 接尾辞 W が付かない種 類の関数を使い、 文字ではな く バ イ ト を使用 し て文字列で作業 し ていた場合、 コ ー ド を変更 し て接尾辞 A が付 く 新 し いバージ ョ ン の関数を使 う 必要があ り ます。
現行バージ ョ ン に移行 ダ イ ア ロ グボ ッ ク ス の [DBCS 文字列を操作す る 関数を自動的に変換] チ ェ ッ ク ボ ッ ク ス を オ ン にす る と 、 文字列操 作関数の ど ち ら かのバージ ョ ンが含まれ る すべての行の コ ー ド が出力
ウ ィ ン ド ウ に表示 さ れ ます。
現行バージ ョ ン に移行 ダ イ ア ロ グボ ッ ク ス の [DBCS 文字列を操作す る 関数を自動的に変換] チ ェ ッ ク ボ ッ ク ス を オ ン にす る と 、 コ ー ド が 自動的に変更 さ れ ます。 た と えば、Len のすべての イ ン ス タ ン ス は LenA に変更 さ れ、LenW のすべての イ ン ス タ ン ス は Len に変更 さ れ ま す。
次の表は、 接尾辞 W が付 く 文字列関連の関数の一覧です。
PowerBuilder 10 以降では、 対応す る 各関数は SBCS と DBCS の ど ち ら の環境で も 同 じ 動作を し ます。 ま た、 表では、 ど の関数に接尾辞 A が 付 き 、DBCS 環境において文字ではな く バ イ ト を使っ て文字列を操作 す る か を示 し ます。
関数 解説
Fill と FillW 結果の文字列が指定の長 さ にな る ま で指定 さ
れた文字を繰 り 返 し 、 指定 さ れた長 さ の文字 列を作成す る 。 指定 さ れたバ イ ト 長で文字列 を格納す る には、 ヘルプの索引の FillA を参照
Left と LeftW 文字列の先頭か ら 指定 さ れた文字数を返す。
文字列か ら 指定 さ れたバ イ ト 数を返すには、
ヘルプの索引の LeftA を参照
LeftTrim と LeftTrimW 先頭の空白を削除 し た文字列の コ ピーを返す
9.3.4 移行時に自動的に変更 さ れる こ と
以前のバージ ョ ンか ら アプ リ ケーシ ョ ン を移行す る と き に、 ソ ース コ ー ド は Unicode に変換 さ れて、 さ ら に自動的に ソ ース コ ー ド に以下 の変更 も 行われ ます。
• string デー タ 型、char デー タ 型、 ま たは構造体デー タ 型を返す外 部関数宣言に対 し て、 あ る いは引数 と し て string 値、char 値、
structure 値を持つ外部関数宣言に対 し て ALIAS FOR
"functionname;ansi" 句 が追加 さ れ ます。 こ れに よ り 、 引数や戻 り 値を ANSI と し て取 り 扱 う こ と を明示 し ます。 すでに ALIAS FOR 句が指定 さ れてい る 場合には、;ansi のみ追加 さ れ ます。関数名に
;ansi が追加 さ れていない場合には、 文字列は Unicode と し て扱 われ ます。
Len と LenW 文字列の長 さ を文字数で返す。 文字列の長 さ をバ イ ト で返すには、LenA を参照。 ただ し 、 引数に Blob 型が指定 さ れた場合は、Len、
LenA、LenW のすべてでバ イ ト 数を返す
Match と MatchW 文字列値に、 指定 し た文字パ タ ーンが含まれ
てい る か ど う かを判別す る
Mid とMidW 文字列の指定の位置か ら 、 指定 さ れた文字数 を返す。 文字列か ら 指定 さ れたバ イ ト 数を返 すには、 ヘルプの索引の MidA を参照 Pos と PosW 文字か ら な る 検索開始の引数を使い、 文字か
ら な る 文字列か ら 1 つの文字列を検索す る 。 バ イ ト か ら な る 検索開始の引数を使っ て文字 列か ら 1 つの文字列を検索す る には、 ヘルプ の索引の PosA を参照
Replace と ReplaceW 指定の位置か ら 指定 さ れた文字数分の文字列 を置 き 換え る 。 指定 さ れたバ イ ト 数分の文字 列を置 き 換え る には、 ヘルプの索引の ReplaceA を参照
Right と RightW 文字列の末尾か ら 指定 さ れた文字数を返す。
文字列か ら 指定 さ れたバ イ ト 数を返すには、
ヘルプの索引の RightA を参照
RightTrim とRightTrimW 末尾の空白を削除 し た文字列の コ ピーを返す
Trim と TrimW 先頭 と 末尾の空白を削除 し た文字列の コ ピー
を返す
関数 解説
• FromAnsi 関数、FromUnicode 関数、ToAnsi 関数、 お よ び ToUnicode 関数は、PowerBuilder の将来のバージ ョ ン でサポー ト さ れな く な
り ます。 移行ツールは、 こ れ ら の関数を Blob 関数ま たは String 関 数の適切な構文に置 き 換え ます。
すでに PowerBuilder 10 に PBL の移行を行っ ていた場合には、 コ ー ド への変更はあ り ません。
DBCS 環境では、 現行バージ ョ ン に移行 ダ イ ア ロ グボ ッ ク ス で
[DBCS文字列を操作す る 関数を自動的に変換] チ ェ ッ ク ボ ッ ク ス を チ ェ ッ ク す る と 、Unicode を サポー ト す る ために必要な変更に応 じ て コ ー ド を修正す る こ と がで き ます。SBCS 環境では、 こ のチ ェ ッ ク は 不要です。
チ ェ ッ ク を し た場合、LenW 関数や RightTrimW 関数 と い っ た
PowerScript の文字列を処理す る 関数か ら 接尾辞 「W」 を取 り 除 き 、Fill 関数、Left 関数、Len 関数、Mid 関数、Pos 関数、Replace 関数、Right 関数 名の後ろ に接尾辞 「A」 を付加 し ます。 こ れ ら の文字列を処理す る 関 数への変更は、 デー タ ウ ィ ン ド ウ 式関数に対 し て も 行われ る と マニ ュ アルに記述 し て あ り ます。 し か し 、 移行処理時に、 デー タ ウ ィ ン ド ウ 式関数に対 し て こ れ ら の変更は自動的には行われ ません。
9.3.5 Web タ ーゲ ッ ト と JSP タ ーゲ ッ ト の移行
PowerDynamo を使用す る Web タ ーゲ ッ ト は、 直接 PowerBuilder 10 以 降へ移行す る こ と はで き ないため、 必ず JavaServer Pages や Active Server Pages な ど のかわ り のモデルを使用 し て書 き 直す必要があ り ま す。PowerBuilder を使用 し て作成 し た PowerDynamo Web サ イ ト を JSP へ変換す る 方法については、Sybase Support Web サイ ト の 「Converting Web Target Pages from Dynamo to JSP」
http://www.sybase.com/detail?id=1032355 を参照 し て く だ さ い。
以前の PowerBuilder バージ ョ ン で Web デー タ ウ ィ ン ド ウ を使用 し て作 成 さ れた Web タ ーゲ ッ ト と JSP タ ーゲ ッ ト は、 HTMLGenerator110 コ ン ポーネ ン ト を使用す る よ う に修正す る 必要があ り ます。
多 く のそのほか Web タ ーゲ ッ ト と JSP タ ーゲ ッ ト は変更せずに PowerBuilder 10 以降で開いて配布す る こ と がで き ます。 例外について は、 次の 「JSP オブジ ェ ク ト モデルの変更」 を参照 し て く だ さ い。 万 が一に備え て、 変更を行 う 前に タ ーゲ ッ ト デ ィ レ ク ト リ のバ ッ ク ア ッ プ コ ピーを と る よ う に し ます。
9.3.6 JSP オブ ジ ェ ク ト モデルの変更
JSP オブジ ェ ク ト モデル内のグ ロ ーバル制御変数は、 JSP ページの ス
レ ッ ド セーフ を行 う ために、 ロ ーカル変数に変更 さ れ ま し た。 サー バ サ イ ド イ ベン ト のほかの コ ン ト ロ ールを参照す る 場合には、 文字 列 "psPage" を使用 し て コ ン ト ロ ール名を修飾す る 必要があ り ます。
例えば、 以前の リ リ ース では、 ボ タ ンの ServerAction イ ベン ト の以下 の コ ー ド でシ ン グル ラ イ ン エデ ィ ッ ト コ ン ト ロ ールの内容を設定 し てい ま し た。
sle_1.value = "abc";
PowerBuilder 11 (お よ び PowerBuilder 9 Build 7151 以降) では、 今ま で のかわ り に以下の よ う に記述 し ます。
psPage.sle_1.value = "abc";
[CR 340985]
9.3.7 オブ ジ ェ ク ト プ ロパテ ィ の DBCS のテキス ト が正 し く 表示 さ れない (IM)
DBCS アプ リ ケーシ ョ ンは、 DBCS 互換 ロ ケールのオペレーテ ィ ン グ シ ス テ ム上であれば正常に移行を行 う こ と がで き ます。 し か し 、 英語 ロ ケールのオペレーテ ィ ン グ シ ス テ ム上では、 オブジ ェ ク ト の フ ォ ン ト プ ロ パテ ィ が DBCS 文字を サポー ト し ていない フ ォ ン ト に設定 し て あ る 場合に、 DBCS 文字は文字化け し て表示 さ れ ます。 こ の問題 を回避す る ためには、 移行後に フ ォ ン ト を Tahoma に変更 し ます。
[CR 355908]
9.3.8 XML 文字列エ ン コ ーデ ィ ング
PowerBuilder では、XML パーサは windows-1253 の よ う な8 ビ ッ ト 文 字 コ ー ド を使用 し た文字列の解析を行 う こ と がで き ません。 例えば、
以下の よ う な宣言の文字列を解析す る こ と がで き ません。
string ls_xml ls_xml += &
'<?xml version="1.0" encoding="windows-1253"?>' UTF16-LEの よ う な Unicode エ ン コ ーデ ィ ン グの値を使用す る 必要が あ り ます。