機能 |
変更内容 |
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")の記述を追加してください。
|