過去のバージョンとの互換性について

Biz/Browser、Biz/Designerをご利用いただき、誠にありがとうございます。
大幅に機能拡張されたver4.0のご利用にあたり、本ドキュメントでは、過去のバージョンとの互換性について説明しています。
ver4.0以前のバージョンで開発されたプログラムをver4.0で利用する際の参考としてください。

過去のバージョンとの互換性について
基本的な互換性 Biz/Designer
過去のバージョンで作成されたプロジェクトファイルは、Biz/Designer ver4.0でも開くことができます。
Biz/Designerは、ファイル形式を判断して、必要に応じて最新バージョンの形式にプロジェクトファイル をコンバートします。

ver2.0で利用されていた CatchEvent, PeekEvent ステートメントや一部の機能がver4.0から廃止されています。 これらの古い形式のステートメントを利用しているプログラムは、Biz/Designer上ではエラーとして報告されますので、 プログラムをver4.0形式に変更するためには、Biz/Designerのエラーレポートを参考にして修正してください。
また、ver2.0と比較してver4.0はエラーチェックが厳格になっています。ver2.0で許容された不正なプログ ラムでも、ver4.0ではエラーが指摘されることがあります。ver4.0へver2.0プログラムを移行するためには この点にも注意してください。

Biz/Browser
Biz/Browser ver4.0はほとんどの場合、ver3.0以降のCRSプログラムをそのまま実行することができます。 しかし、バージョン遷移により一部の機能で仕様が変更されていたり、仕様から削除されているものがあります。
インストール直後の状態では、ver4.0以前のプログラムをサポートする機能が無効となっていますが、 グローバル関数 ChangeProfile() を実行してプロファイルを切り替えることにより、 変更や削除された仕様の一部を従来の仕様に戻すことが可能です。
多くの場合、プロファイルの切り替えによりプログラムを変更することなくver4.0で動作させることができます。 ChangeProfile関数の利用方法はこのドキュメント以外にオンラインマニュアルも参照してください。

CRS言語仕様の変更 CRS言語の仕様がver4.0から拡張されています。また、一部仕様は標準状態では無効となっており、過去の バージョンで作成したプログラムを実行する場合には後述するChangeProfileの利用を必要とする場合が あります。利用するプログラムが、ver4.0で正しく実行できるか充分な検証を行ってください。

以下に言語仕様の変更点を示します。
機能 変更内容
CatchEvent,PeekEventステートメント ver1.0からver2.0までのイベントハンドラの記述ステートメントであったCatchEvent,PeekEventは、 ver3.1までは標準で使用できましたが、ver4.0より無効となっています。

ver4.0からはイベントハンドラは全て「On + イベント名」の名前を持ったFunction形式に統一されま す。
Function形式は、従来のCatchEventやPeekEventに比べて実行効率が高く、また新たに追加された classステートメントとの整合性を保つことができます。classステートメントを利用するためには イベントハンドラは必ず、Function形式で記述するようにしてください。classステートメント内に CatchEventやPeekEventを記述した場合、正常な動作を行うことはできません。

CatchEvent,PeekEventのステートメントを利用したプログラムを実行するためには、 ChangeProfile("3.0.0")または、ChangeProfile("3.1.0")の記述を追加してください。

イベントハンドラ内のEventおよびFromシンボル ver1.0からver2.0までのイベントハンドラ内でのみ有効となるEventシンボルおよびFromシンボルに よりイベントの内容とイベントの発生元を参照できました。ver3.1まではこれらのシンボルは標準で 使用できましたが、ver4.0より無効となっています。

ver4.0からはイベントハンドラFunctionの引数として渡されるイベントオブジェクトを利用する方法 に統一されます。
イベントオブジェクトは、従来のEventやFromシンボルよりもイベントに応じた詳細な内容を保持して いるため、より使いやすい方法です。

Event,Fromのシンボルを利用したプログラムを実行するためには、 ChangeProfile("3.0.0")または、ChangeProfile("3.1.0")の記述を追加してください。

ver2.0用クラス名の置換 ver2.0まで、実行時のクラスをオブジェクトのツリー構造により置換することで、仕様上のクラス数を 抑え、スクリプトの汎用性を高める方針で設計されていました。
この機能により、例えば、RecordオブジェクトをSpreadオブジェクトの子オブジェクトとし配置すれば ver3.0以降のSpreadRowオブジェクトと同等の機能を持つオブジェクトが生成され、Graphオブジェクト の子オブジェクトとして配置すれば、GraphAxisオブジェクトと同等の機能を持つオブジェクトが生成 されていました。

ver3.1までは、このクラス置換機能が標準で有効となっていましたが、ver4.0からは無効となります。 SpreadRowオブジェクトを生成するためには、必ずSpreadRowクラスか、その派生クラスを明示する必要が あります。
本来、Spreadの子オブジェクトとしてSpreadRowの他にRecordを配置したり、SpreadRowの子オブジェクト にStringやNumberオブジェクトを配置して表示されないデータとしてアプリケーションで利用するこ とが可能な仕様ですが、クラス置換機能によりこうしたオブジェクト配置が制約となっていました。 ver4.0からクラス置換機能を無効とすることで、より有効なオブジェクト配置が可能となります。

ver2.0のクラス置換を前提とした古いプログラムをver4.0で実行するためには、ChangeProfile("3.0.0") または、ChangeProfile("3.1.0")の記述を追加してください。

クラスシンボルスコープの変更 ver3.1まで、クラス定数やスタティックメソッドを参照する場合、そのクラスのオブジェクトスコープ 内であってもクラス名を明示する必要がありました。

ver4.0よりこうしたシンボルは、オブジェクトツリーの上位を検索する前に解決されるようになり、ク ラス名明示は不要となり、プログラム作成がより簡便化され、また再利用性が高められました。

従来のクラス名で明示した記述は、ver4.0でも同じように動作し、互換性が保たれています。
逆に、クラス名を明示していない場合、オブジェクトツリーの上位にクラス定数またはスタティックメソ ッドど同名のオブジェクトがある場合、ver3.1までは上位のオブジェクトが参照されましたが、ver4.0 よりクラス定数またはスタティックメソッドが優先して検索されます。

この仕様拡張を無効にする方法は用意されていません。クラス定数やスタティックメソッドと同じ名前 でオブジェクト名を定義している場合、プログラムの変更が必要となります。

パッケージ仕様の拡張 ver3.1まで、パッケージを定義することができませんでしたが、ver4.0より、CRSスクリプトにより独自の パッケージを定義することが可能となりました。

この仕様拡張は、ver3.0以降のプログラムであれば影響を受けることはありません。 ver3.0では、importステートメントにより、Recordで表現されたデータをロードしていましたが、ver4.0 のプログラムを作成する場合は、packageをimportするようにしてください。

この仕様拡張を無効にする方法は用意されていません。

クラス仕様の拡張 ver3.1まで、クラスを定義することができませんでしたが、ver4.0より、CRSスクリプトにより独自のクラ スを定義することが可能となりました。

この仕様拡張により、ver3.1までは予約語ではなかったclassが予約語に変更されました。また、オブジェ クトの種類を示すプロパティとしてclassプロパティが用意されていましたが、ClassNameプロパティに名称 が変更されました。
また、ver3.1まではクラス名はコンパイル時に正当性の確認が行われましたが、ver4.0より実行時に正当性 の確認が行われるように変更されました。誤ったクラス名を記述した場合、従来とは異なるタイミングでエ ラー報告が行われます。

ver4.0以前のプログラムでclassと言う名前のオブジェクトや変数を利用している場合、別の名前に変更す る必要があります。 また、オブジェクトのclassプロパティを参照している場合、ClassNameに変更する必要があります。

ChangeProfile("3.0.0")または、ChangeProfile("3.1.0")を実行することで、この仕様拡張の内、オブジェ クトのClassNameプロパティをClassシンボルで参照することが可能となります。 ただし、classと言う名前のオブジェクトや変数を利用可能にする方法はありません。

importステートメントの拡張 ver3.1まで、importには、インポートするURL兼オブジェクト名となるシンボルを記述しましたが、ver4.0より 従来の記述方法に加えて、文字列リテラルによりURLを記述できるようになりました。

この仕様拡張により、importを記述したCRSファイルと異なるディレクトリやサーバに置かれているファイル でも、インポートすることが可能となりました。
また、ver4.0より複数のCRSファイルやイメージファイルを圧縮したアーカイブファイル(*.carファイル) をインポート可能となりました。

この仕様拡張は、ver3.0以降のプログラムであれば影響を受けることはありません。

配列化オブジェクト ver3.1まで、配列化したオブジェクトにindexプロパティとlengthプロパティが常に付加されましたが、 ver4.0より配列要素(添え字を使ったオブジェクトの指定で参照されます)と配列定義(添え字を使わな いオブジェクトの指定で参照されます)でこれらのプロパティの付加状態が変わります。

配列要素にはindexプロパティのみが付加され、配列定義にはlengthプロパティだけが付加されます。 従来は、正式な仕様として明記されていませんが、配列要素のlengthは常に配列全体の大きさを示し、 配列定義のindexは-1を示していました。

配列のこのような動作を前提に作成されたプログラムをver4.0で実行するためには、 ChangeProfile("3.0.0")または、ChangeProfile("3.1.0")の記述を追加してください。

オブジェクトの挙動の変更点 以下にオブジェクトの挙動の変更点を説明します。
機能 変更内容
クラスの明確化 従来のBiz/Browserは、オブジェクトは全て独立したクラスとして表現されていましたが、ver4.0より オブジェクトの派生関係が明確に定義されました。 例えば、TextBoxクラスの場合、Object -> NetObject -> DisplayObject -> FocusObject -> EditObject -> TextBox の派生関係を持っています。

各クラスではクラス固有の機能のみ実装され、共通の機能はベースクラスで実装されています。 このようなクラスの整理により、一部のクラスにプロパティやメソッドがver4.0より追加されているものが あります。

ver4.0以前のプログラムを実行する場合、こうしたプロパティやメソッドの追加により、追加されたものと 同じ名前のオブジェクトをプログラムで使用していた場合、オブジェクトの検索結果が変ってしまう事があ ります。
プロパティ名とオブジェクト名が重複してプログラムの実行結果に影響を与えている場合、プログラムの変 更が必要となります。

追加された内容の 詳細は、各クラスのマニュアルを参照してください。

TabFormクラス 従来のTabFormは、WidthとHeightプロパティを更新可能でしたが、ver4.0より更新不可となっています。

ChangeProfile("3.0.0")または、ChangeProfile("3.1.0")により従来の挙動に戻すことが可能です。

Spreadクラス 従来はSpread.ValueやSpread.ColumnPositionに不正な値を設定してもエラーとはなりませんでしたが、 ver4.0よりエラーとなります。

ChangeProfile("3.0.0")または、ChangeProfile("3.1.0")により従来の挙動に戻すことが可能です。

Docクラス
(SVG表示)
SVGエンジンを大幅に見直しており高精度な表示を行います。従来はSVGの印刷や表示を行う際に、 文字列処理精度に問題があり、出力デバイスの解像度により文字間隔が変ってしまうことがあり ました。

ver4.0以前のプログラムを実行する場合、SVGによる文字列の表示、印刷結果が異なることがあり ます。SVGの描画処理に問題がある場合、文字列の長さに余裕を持つようにプログラムの変更が必 要になります。

//.SYS SYS.SERVERおよびSYS.SERVER_PORTは、従来、最初にログインしたサーバに関する情報を保持していましたが、 ver4.0より、これらのオブジェクトを参照したCRSプログラム自身の情報が保持されます。

上記表は、ver4.0以前のプログラムの実行で、仕様変更による影響を受ける部分です。この他に、 追加された仕様や変更された機能もありますので、個々のクラスのマニュアルにより確認してください。

ChangeProfile関数について
プロファイルの変更により以下の機能が影響を受けます。
機能 プロファイル
3.0.0 3.1.0 4.0.0
起動時の背景色 薄い青 薄い青 濃い青
CatchEvent,PeekEventステートメントの利用 有効 有効 無効
イベントハンドラ内のEvent,Fromシンボルの利用 有効 有効 無効
ver2.0用クラス名の置換(Spreadの子となるRecordをSpreadRowに置換など) 有効 有効 無効
Object.classNameプロパティをObject.classとして参照する機能 有効 有効 無効
配列定義オブジェクトのindexプロパティの利用 有効 有効 無効
配列要素オブジェクトのlengthプロパティの利用 有効 有効 無効
LabelのVerticalAlignを画面上で有効にする 無効 有効 有効
Spread.valueに実際の行数以上の値を設定したとき、例外を発生する機能 無効 無効 有効
Spread.ColumnPositionに指定可能な値以外を設定したとき、例外を発生する機能 無効 無効 有効
TabFrom.Width,TabForm.Heightへの値設定で、例外を発生する機能 無効 無効 有効

また、ver4.0.6.0より、ver3.xとの印刷結果の互換性を高めるため以下の機能が影響するようになりました。
機能 プロファイル
3.0.0 3.1.0 4.0.0
フォントサイズの内部精度 整数 整数 浮動少数
文字列のレイアウト算出に使用する基準解像度 90DPI 90DPI 96DPI
SVGButtonの罫線の印刷 なし なし あり

どのプロファイルでも、クラスセットやインタプリタの基本的な挙動はver4.0の挙動となります。 プロファイル機能は、Biz/Browserのバージョンの遷移で変更された仕様をできるだけ吸収する目的で 用意された機能です。上記表意外で新たに追加された機能は有効となります。 プロファイルを3.0.0と設定した場合でも、Biz/Browser ver3.0.0と完全に同じ挙動とはなりませんのでご注意ください。

プロファイルの設定はプロセス単位に独立しているため、複数のBiz/Browserを起動する場合、個々のBiz/Browserに対して それそれChangeProfileを実行する必要があります。また、指定したプロファイルは次回の起動時には引き継がれません。

利用例
ChangeProfileはCRSスクリプトのコンパイル動作へも影響します。従って、ChangeProfileを実行する 場合、必ずシステムの最初のスクリプトで実行するようにしてください。
通常は、login()で最初にロードされる、キャッシュ制御用のプログラムに記述します。

	if( //.SYS.CLIENT_VERSION >= 3.11 ) {
		ChangeProfile("3.1.0");
	}