sysVar.sqlData
sysVar.sqlData は、構造化レコードで、
sqlLib.sqlData 構造化レコードに定義されている同一のシステム変数が含まれています。
両レコードの変数は、ユーザー・プログラムがリレーショナル・データベースにアクセスした後、更新されます。
2 つのレコード間の差は以下のとおりです。
- sysVar.sqlData の有効範囲は、 実行可能コードを含むメインのパーツ (プログラム、ライブラリー、サービス、またはハンドラー) に制限されます。 例えば、programA が programB を呼び出し、両方のプログラムがリレーショナル・データベースにアクセスする場合、各プログラムは sysVar.sqlData の専用コピーを所有します。 programB に設定された値は、programA に戻ると使用できません。
- sqlLib.sqlData の有効範囲は、実行単位内の全プログラムでグローバルです。 例えば、programA が programB を呼び出し、両方のプログラムがリレーショナル・データベースにアクセスする場合、programB におけるリレーショナル・データベースの最後のアクセスによって設定された値は、 programA へ戻った直後から次のリレーショナル・データベース・アクセスまでは programA で使用できます。
いずれの場合も、変数の値は、セグメント化された converse にわたって保存されません。
レコード構造については、sqlLib.sqlData (EGL システム変数)を参照してください。
EGL は、VisualAge® Generator および EGL の旧リリースとの互換性のために sysVar.sqlData を保持しています。加えて、SQL 情報の有効範囲を単一のプログラムに限定したい場合、 または COBOL 生成を使用する場合は、sysVar.sqlData を使用します。
EGL は I4GL との互換性のために sqlLib.sqlData を保持します。また、Java™ 生成およびライブラリー関数を使用して SQL 入出力を実行している場合、呼び出し側の関数に戻った後、sqlLib.sqlData を使用してライブラリー関数の SQL 結果を検査することができます。
セグメント化された converse にわたって値が保存されるかどうか
いいえ
互換性
| プラットフォーム | 問題 |
|---|---|
| Java 生成 | Java では、sqlcode、sqlstate、sqlerrd[2]、sqlerrd[3]、および sqlwarn[2] のみを設定します。 Java では、sqlca データ構造は、各入出力操作でデータベースとの間で受け渡しが行われません。 そのため、EGL によって設定可能なフィールドの設定が行われます。ユーザーはその他のフィールドを変更できますが、 EGL Java ではそれらを使用しません。 |