互換性ページには、以前の4Dバージョンとの互換性を管理するためのパラメーターがまとめられています。ここに表示されるオプションの数は、元のデータベースが作成されたバージョン (2004.x, v11, v12等) や、このデータベースで行われた設定の変更により異なります。
注: このページは現在のバージョンで作成されたデータベース (変換されていないデータベース) には表示されません。
- ダイアログボックスでフィールドを入力可にする: 以前のバージョンでは DIALOG コマンド等で表示されたダイアログボックスでフィールドに値を入力することができませんでした。この制限は 4D 2004 で取り除かれています。データを表示するだけの目的でダイアログにフィールドを表示している場合、以前の動作を保持することができます。バージョン2004に変換されたデータベースではこのオプションが選択され、v2004で作成されたデータベースでは選択されていません。
- ラジオボタンを名前でグループ化する: 以前のバージョンではラジオボタンの排他制御はボタンに割り当てる変数名の先頭バイトで判定されていました (例えば m_button1, m_button2, m_button3 など)。4D 2004以降はフォームエディター上でオブジェクトをグループ化することで排他制御が行われるようになっています。この点については ラジオボタンとピクチャーラジオボタン を参照してください。
この新しいモードはラジオボタン、3Dラジオボタン、ピクチャーラジオボタンで有効です。互換性を保つため、変換されたデータベースでは以前のモードが使用されています。しかしこのオプションの選択を解除すれば新しいモードを使用できます。v2004 で作成されたデータベースでは新しいモードが使用されます。 - PRINT SELECTION中、レコード毎にフォームをリロード: 以前のバージョンの 4Dでは PRINT SELECTION コマンドを使用した印刷中に使用されるフォームは、各レコード毎にリロードされていました。これにより On printing detail フォームイベントで開発者が言語を使用して変更したかもしれないオブジェクトの設定がすべて自動的に再初期化されていました。
パフォーマンスを最適化するためにこのメカニズムは 4D 2004 で取り除かれました。今後はフォームメソッドを使用して 4D開発者が初期化を行わなければなりません。この動作は On display detail フォームイベントを使用するリストフォームと同じです。しかしながらこのオプションを使用して以前の動作を保持することができます。v2004で作成されたデータベースは新しいモードを使用します。
オプションが選択されていない場合、ブラケット記法 ([MAVAR]) を使用します。この記法は以前のバージョンの4D Webサーバーで使用されていたプロプリエタリな方法であり、推奨されません。 - 新しいコンテキスト参照モードを使用しない: このオプションが選択されていない場合、4D WebサーバーはHTMLのベースURLにコンテキスト番号を挿入します。
以前のモードでは、 4D Webサーバーはブラウザーに送信する各項目にコンテキスト番号を送信しており、結果処理が遅くなっていました。しかしながら互換性のためこのオプションが選択されているかもしれません。このオプションを変更した後は設定を有効にするためにデータベースを再起動しなければなりません。 - 未知のURLから"/"を取り除く: 以前の4Dではディスク上に存在しないファイルがURLとしてリクエストされた場合、On Web Authentication や On Web Connection データベースメソッドの$1引数に先頭の"/"が取り除かれたURLが渡されていました。この動作は4D 2004で変更されました。しかし以前の動作に基づいた実装を行っている場合にはこのオプションを選択します。
- 外部からのドラッグ&ドロップを拒否: v11以降、ピクチャーなどのファイルや選択されたテキストオブジェクトなどを4Dにドラッグ&ドロップできるようになりました。変換されたデータベースではこの動作を想定したメソッドが書かれていないために期待した動作とならないかもしれません。このオプションを選択すると外部オブジェクトを4Dフォームにドロップできなくなります。ただしこの場合でも自動ドロップオプションを使用すると外部オブジェクトの挿入が可能である点に留意してください。アプリケーションはドロップされたテキストやピクチャーを解釈します (ドラッグ&ドロップ参照)。
- QUERY BY FORMULAをサーバー上で実行とORDER BY FORMULAをサーバー上で実行: 4D v11より最適化の目的で、フォーミュラによるクエリや並び替えコマンドがサーバー上で実行されるようになりました。そして結果だけがクライアントマシンに返されます。この動作は以下のコマンドで有効です: QUERY BY FORMULA、QUERY SELECTION BY FORMULA、ORDER BY FORMULA。変数が直接フォーミュラ内で使用されている場合、クライアントマシン上の変数値を使用してフォーミュラが呼び出されます。例えば
QUERY BY FORMULA([aTable];[aTable]aField=theVariable)
このコードがサーバー上で実行された場合でも、myvariable変数値はクライアントマシン上のものが使用されます。他方この原則はフォーミュラにメソッドが使用され、そのメソッド内で変数が参照されている場合には当てはまりません。この場合サーバー上で変数が解釈されます。
変換されたデータベースではこの点が考慮されていない可能性があるため、デフォルトでこれらのコマンドはクライアントマシン上でフォーミュラを実行します。新しいモードを使用したい場合はこれらのオプションを明示的に選択します。
注: このオプションはSET DATABASE PARAMETERコマンドで設定することもできます。 - QUERY BY FORMULAでSQL JOINを使用: 4D v11より QUERY BY FORMULA や QUERY SELECTION BY FORMULA コマンドはSQLの結合モデルに基づくJOINを実行するようになりました。これによりストラクチャーエディターで自動リレーションが設定されていなくても [Table_A ]field_X=[Table_B ]field_Y のようなフォーミュラを使用できるようになりました。
既存のデータベースでこの動作が考慮されていない場合、予期しない動作となることがあるため、変換されたデータベースではこの機能がデフォルトで無効にされています。データベースコードを見直した後、このモードを有効にすることを推奨します。
注:
- "SQL JOIN"モードが有効な場合でも、以下のケースでは QUERY BY FORMULA や QUERY SELECTION BY FORMULA コマンドはストラクチャーエディターで設定された自動リレーションを使用します:
- フォーミュラを{field ;comparator ;value}形式に分解できない場合
- 同じテーブルの 2つのフィールドが比較されている場合 - SET DATABASE PARAMETER コマンドを使用してプロセス毎にこのオプションを設定できます。
- トランザクションのネストを許可する: マルチレベルトランザクションのサポートを有効にします。4D v11以降、マルチレベルのトランザクションがサポートされるようになりました。既存のデータベースでこの動作が考慮されていない場合、予期しない動作となることがあるため、変換されたデータベースではこの機能がデフォルトで無効にされています (トランザクションは1レベルに制限されます)。マルチレベルのトランザクションを使用したい場合、このオプションを選択します。
注: このオプションはSQLエンジンで実行されるトランザクションには影響しません。SQLのトランザクションは常にマルチレベルです。 - Unicodeモード: カレントデータベースのUnicodeモードの有効/無効を切り替えます。Unicodeモードではデータベースエンジン、言語、メニューなどでネイティ ブにUnicode文字が処理されます。非Unicodeモードでは日本語環境の場合Shift_JISが使用されます。
この設定に関わらずデータファイルはUnicodeが使用され、文字列の評価にはICUが使用されます。
v2004以前から変換されたデータベースではこのオプションが選択されていません。しかしながらこのオプションを選択し、必要なコードの修正を適用することを強く推奨します。非Unicodeモードを使用しても、過去のバージョンとの完全な互換性は提供されません。
注:
- このオプションを変更した場合、その変更が適用されるためにはアプリケーションを再起動する必要があります。
- このオプションのスコープはデータベースごとです。インタープリターモードではUnicodeモードのデータベースに非Unicodeモードのコンポーネントをインストールしたり、あるいはその逆を行ったりすることが可能です。
- SET DATABASE PARAMETER コマンドを使用してUnicodeモードを設定することができます。
4DにおけるUnicodeサポートについては EXPORT TEXT を参照してください。 - ピリオドとカンマを数値フォーマットのプレースホルダーとして使用する: v11以降、4Dは数値の表示フォーマットにシステムの地域設定パラメーターを使用するようになりました (表示フォーマット の"数値フォーマット"参照)。4Dは自動で数値表示フォーマット中の","を千の位区切り文字、"."を小数点として解釈し、シス テムに設定された記号で置き換えます。以前のバージョンでは数値表示フォーマットでシステムの地域設定は考慮されていませんでした。例えば "###,##0.00" フォーマットは日本語システムでは有効ですが、フランス語システムでは結果が異なっていました。
変換されたデータベースでは互換性保持のためこの新しいメカニズムが無効になっています。 - Web変数に値を自動的に代入する: 以前のバージョンの4Dでは、Webサーバーの標準機構によって、HTTPフォームやGET type URL を使用して送信された変数の値を自動的に4Dプロセス変数へと代入をしていました。インタープリタモードでは、変数同士が同じ名前であれば、受け取った変数の値はどんな値でも4Dプロセス変数へとコピーされました。コンパイルモードでは、変数は事前にCOMPILER_WEB プロジェクトメソッドを使用して宣言しておく必要がありました。
v13.4 以降この機構は廃止予定となり、新しいデータベースでは使用できなくなりました。変換されたデータベースではこの機能は互換性のために、残されてはいますが、互換性のオプションでチェックを外すことによって無効化することができます。今後は代わりに WEB GET VARIABLES または WEB GET BODY PART コマンドの使用が推奨されます。 - 旧式ネットワークレイヤーを使用する(OS X用64-bit版では使用不可): v14 R5以降、4Dアプリケーションは 4D Server とリモートの 4Dマシン間の通信に、ServerNet という新しいネットワークレイヤーを使い始めました。以前のネットワークレイヤーは廃止予定となりますが、既存のデータベースとの互換性を保つために保持は されます。このオプションを使用すると、変換された4D Serverアプリケーションにおいて、必要に応じていつでも以前のネットワークレイヤーを有効化・無効化することができます。例えば、クライアントアプリケーションを移行させるとき(設定 (環境設定) の章を参照して下さい)などに使えます。ServerNet は新規に作成されたデータベースにおいては自動的に使用され、変換されたデータベースにおいては無効化されます(このオプションがチェックされます)。
この設定を変更する際には、その変更が反映されるためにはアプリケーションを再起動する必要があるという点に注意して下さい。接続していたクライアントアプリケーションも新しいネットワークレイヤーで接続するためには全て再起動しなければなりません(ServerNet を使用するために必要な最小限のクライアントのバージョンはあ4D v14 R4です。設定 (環境設定) の章を参照して下さい)。
注:
- このオプションは、SET DATABASE PARAMETER コマンドを使うことによってプログラミングによって管理することもできます。
- タイトルにあるように、このオプションはOS X用4D Server 64-bit版においては無視されます。このプラットフォームではServerNet のみが使用できます。
- メソッドをUnicodeで保存: このオプションを使用すると、4Dメソッドコード文字列をUnicodeで保存できるようになります。4D v15以前のバージョンでは、4Dメソッドコード文字列(式、変数、メソッド名、コメント、等)はカレントのローカルエンコーディングを使用して保存されていました。このエンコーディングは特に4Dコードが異なる国のデベロッパ間で共有されている場合に問題を引き起こす可能性がありました。例えば、フラン スのデベロッパがアクセントを含む4Dコードを書き、イギリスのデベロッパへとデータベースを送った場合、このアクセントは失われていました。コードが日本語版で書かれた場合にも、深刻な問題を引き起こす可能性がありました。メソッドをUnicodeとして保存することにより、こういった問題を全て解決 し、4Dコードを特定のローカルな文字を含んだまま交換することを可能にします。既存のデータベースにおいても、可及的速やかにメソッドに対して Unicodeオプションを有効化することが推奨されます(国際的な環境で仕事をしているのならなおさらです)。
注:
- この機能はランゲージそのものとその解釈に対して適用されます。一部の4Dエディターウィンドウ (プロパティリスト等) では引き続きローカルなエンコーディングを使用するため、一部の文字列が正確に表示されない可能性があります。しかしながら、これはコードの実行には関係しません。
- このオプションはいつでもチェックをしたり外したりすることができます。変更後に保存したメソッドのみが影響を受けます。
アプリケーション配布では新しいアーキテクチャーを使用: このオプションは4D v15 R4以降のアプリケーション全てで利用可能です。これは4Dアプリケーションの配布に関連した新しい機構を有効化または無効化します(これは最終アプリケーションを生成するマシン上で設定する必要があります)。このオプションで管理される機構については、最後に開かれたデータファイル と クライアントアプリケーションによる接続の管理 の章で説明されています。このオプションは変換されたアプリケーションではデフォルトではチェックが外されています。この新しい機構を利用するためには、このオプションを明示的にチェックする必要があります。