7.72.2 OPENについてのコメント/警告
· 対話型RDMLプログラム内で明示的なOPENコマンドがコーディングされていないファイルは、OPEN USE_OPTION(*FIRSTSCREEN)コマンドが使用されたかのように開かれます。
· バッチRDMLプログラム内で明示的なOPENコマンドがコーディングされていないファイルは、OPEN USE_OPTION(*ONDEMAND)コマンドが使用されたかのように開かれます。
· ファイルがすでに開いている場合、OPENコマンドまたは要求は無視されます。ただし、*OPNQRYFオプションが指定されている場合は例外です。この場合、開いているファイルが閉じ、適切なOPNQRYFパラメータを使用して再度開かれます。
また、すでに開いているファイルに対して*KEEPOPENオプションを使用すると、そのファイルを明示的なCLOSEコマンドでのみ閉じることができることを示すフラグが立てられます。このファイルは(*OPNQRYFオプションを使用した場合のように)実際に閉じてから再度開かれることはありませんが、明示的なCLOSE要求が発行されない限り閉じることができないよう内部的にタグ付けされます。
ファイルは2通りの方法で閉じることができます。
· 1つは、通常のRDMLプログラム終了ロジックによって自動的にファイルを閉じる(CLOSE)方法です。
· もう1つは、RDMLプログラム内で明示的なCLOSEコマンドを発行する方法です。
RDMLプログラムは、通常の方法で終了するときに、使用していたすべてのデータベース・ファイルを自動的に閉じようとします。ただし、以下のいずれかの条件に該当する場合、ファイルを閉じる要求は無視されます。
· ファイルがすでに閉じられているか開かれていない
· 関連付けられたプロセスが高使用頻度オプションを使用している
· ファイルが*KEEPOPENオプションで開かれている
· ファイルを閉じようとしているファンクションが、そのファイルを最初に開いたファンクションではない
· 明示的なCLOSEコマンド(すなわち、RDMLプログラムにコーディングされているもの)は、ファイルがすでに閉じている場合のみ無視されます。それ以外の状況では、そのファイルが*KEEPOPENオプションを使用して開かれた場合でも、また他のプログラムによって開かれた場合でも、ファイルを強制的に閉じます。
· RDMLが参照している、明示的に(すなわちOPENコマンドによって)開かれる前または自動的に開かれる(すなわち最初の画面対話処理時の)前のファイルは、「必要に応じて」自動的に開かれます。すなわち、閉じているファイルに対してI/O操作を実行しようとすると、そのファイルが自動的に開かれます。
· USE_OPTION(*OPNQRYF)を使用する場合は、RDMLプログラムに明示的なCLOSEコマンドをコーディングすることをお勧めします。これにより、OPNQRYFコマンドによって作成される一時アクセス・パスが破棄されます。
また、(特別な*FILEパラメータではなく)明示的なKEYFLDパラメータと組み合わせて*OPNQRYFオプションを使用した後は、単純なSELECTループによって、OPNQRYFコマンドで作成された一時アクセス・パスからすべてのレコードを読み取ることをお勧めします。
WITH_KEYパラメータが指定されたSELECTコマンド(またはその他のI/Oコマンド)を使用しようとすると、I/Oモジュールが使用するファイル・キーが、OPNQRYFコマンドで作成される一時ファイルの実際のキーと一致しないため、予期しない結果になる可能性があります。
· USE_OPTION(*FIRSTSCREEN)パラメータを使用すると、ユーザーに最初の画面を表示する際に、開く操作が「並行」して試行されます。この画面は、プログラムで実際に実行される最初のDISPLAY、REQUEST、またはPOP_UPコマンドです(プログラム内に最初にコーディングされているものとは限りません)。
また、このオプションを使用すると、関連付けられたSystem i表示ファイル内でDFRWRT (画面書き込みを読み取りまで延期)オプションを使用できないため、通信回線のパフォーマンスがわずかに低下することがあります。
DFRWRTパラメータの詳細については、IBM提供の該当のマニュアルに記載されているSystem i CRTDSPFコマンドに関するセクションを参照してください。
手作業で表示ファイルをDFRWRT(*YES)に変更しようとすると、この「並行」機能が完全に無効になり、ユーザーは、ファイルが開かれるまで、最初の画面が表示されるのを待つ必要があります。