7.91.1 OPEN のパラメータ

ALWCPYDTA、

COMMIT、および

FILE

IO_ERROR

IO_STATUS

KEYFLD

OPTIMIZE、

QRYSLT

SEQONLY、

TYPE

USE_OPTION

FILE

開くファイルまたは制御するファイルを指定します。個々のファイルを指定することも、デフォルト値*ALLを指定することもできます。詳細については、「I/Oコマンドでのファイル名の指定」を参照してください。

注:パラメータFILE(*ALL)とUSE_OPTION(*OPNQRYF)を組み合わせて指定することはできません。クエリー・ファイルを開く場合は、FILEパラメータで特定のファイルを指定する必要があります。

移植性に関する考慮事項

Visual LANSAでは、FILE (ライブラリ)はサポートされません。Visual LANSAコード内で使用すると、ビルド警告が生成されます。

USE_OPTION

LANSAがこのファイルを開くときに使用する、開く操作または制御に関連するオプションを指定します。このパラメータに指定できる値は以下のとおりです。

デフォルト値*FIRSTSCREEN(FSS)を指定した場合、このコマンドは「宣言」形式になります。指定したファイルは、最初の画面とユーザーとの対話処理と「並行」して開かれます。すなわち、最初の画面がユーザーに表示され、ユーザーがデータを入力している間にファイルが開かれます。

*IMMEDIATE(IMD)を指定した場合、このコマンドは「実行可能」形式になります。指定したファイルは、直ちに(すなわち、OPENコマンドの実行時に)開かれます。

*ONDEMAND(OND)を指定した場合、このコマンドは「宣言」形式になります。指定したファイルは必要に応じて開かれます。すなわち、ファイルに対する最初のI/O要求により、自動的にファイルが開かれます。ファイルに対してI/O要求が行われない場合、ファイルは開かれません。

*OPNQRYF(UOQ)を指定した場合、このコマンドは「実行可能」形式になります。ファイルを開く間、ファイル内のデータを選択/順序設定するために、IBM iオペレーティング・システム・コマンドOPNQRYFが使用されます。ファイルは、OPENコマンドの実行時に開かれます。

OPNQRYFは、非常に強力で便利なコマンドです。ただし、状況によってはパフォーマンスが大幅に低下することがあります。OPNQRYFコマンドと、関連するパラメータ値およびパフォーマンスへの影響の詳細については、IBM提供の該当のマニュアルを参照してください。

*KEEPOPEN(KPO)を指定した場合、このコマンドは「実行可能」形式になります。ファイルは直ちに(すなわち、OPENコマンドの実行時に)開かれ、明示的なCLOSEコマンドの発行によって閉じられるまで開いたままになります。この方法で開かれたファイルは、LANSA内での明示的なCLOSEコマンドの発行によってのみ閉じることができます。

このオプションで開かれたファイルは、RDMLプログラムの終了時にLANSAが使用する、自動的にファイルを閉じるロジックで閉じることはできません。

通常、このオプションは、頻繁に使用されるファイルを常時開いたままにするために、パフォーマンス上の理由で使用します。

移植性に関する考慮事項

*FIRSTSCREENは無視されます。アプリケーションに対する影響は不明です。

*ONDEMANDは無視されます。アプリケーションに対する影響は不明です。

*OPNQRYFは、IBM iでのみ実行がサポートされます。その他すべてのプラットフォームでは、実行エラーが発生しますが、コードの実行に条件を付けることができます。

*KEEPOPENは無視されます。アプリケーションの検査が必要です。Visual LANSAで使用すると、ビルド警告が生成されます。

IO_STATUS

I/O操作の結果の「戻りコード」を受け取るフィールドの名前を指定します。

デフォルト値*STATUSを指定すると、戻りコードは、#IO$STSという特別なフィールドに保管されます。このフィールドは、他のフィールドと同様にRDMLプログラムで参照できます。

戻りコードを受け取るフィールドとしてユーザー・フィールドを指定する場合、このフィールドは、長さ2文字の英数字フィールドである必要があります。ユーザー・フィールドを指定した場合も、特別なフィールド#IO$STSは更新されます。

値については、「RDML I/O戻りコード」を参照してください。

IO_ERROR

このコマンドの実行時にI/Oエラーが発生した場合に実行するアクションを指定します。

I/Oエラーは、「致命的」エラーと見なされます。ファイルが見つからなかった、ファイルが壊れている、ファイルを割り当てることができない、などがこれに該当します。これらのタイプのエラーが発生すると、ファンクションにおいて、そのファイルが関与しているすべての処理が停止します。

デフォルト値*ABORTを指定すると、ファンクションが異常終了し、I/Oエラーの性質を示すエラー・メッセージが発行されます。

*NEXTを指定すると、制御が次のコマンドに渡されます。*NEXTは、デフォルトのABORTを使用するのではなく、エラー・メッセージをRDMLで処理し、次にABORTで処理できるようにすることを目的としています(LANSA/ADおよびVisual LANSAの処理を続行することもできますが、この方法でLANSAを使用することはお勧めしません)。
データベース操作から返されるERは致命的エラーです。この場合、LANSAは、処理が続行されないものと想定します。IOモジュールがリセットされ、以降のIOは、そのファイルでこれまでにIOが行われなかったかのように実行されます。そのため、ファイルの状態について推定を行わないでください。例えば、最後に読み取られたレコードは設定されません。IO_ERRORの特別なケースとして、TRIG_RETCでERを返すようトリガー・ファンクションがコード化されている場合があります。上記の説明は、このケースにも当てはまります。
したがって、LANSAでは、さらにIOを実行する前にABORTまたはEXIT以外の何らかの処理を実行する目的で、トリガー・ファンクションから返された戻りコードERを使用しないことをお勧めします。

*RETURNを指定すると、プログラム・メインラインでは制御が呼び出し元に戻され、サブルーチンでは制御が呼び出し元ルーチンまたはプログラム・メインラインに戻されます。

上記の値をどれも使用しない場合は、制御を渡す先の有効なコマンド・ラベルを指定してください。

QRYSLT

移植性に関する考慮事項

LANSA/スーパーサーバー経由でIBM iサーバーを使用しない限り、現在のリリースのVisual LANSAではサポートされません。

QRYSLT('=EXCHANGE')の使用はRDMLフィールドでのみサポートされます。RDMLXの交換リストにフィールドを配置すると、交換リストに配置された値から末尾ブランクが切り捨てられます。

このパラメータは、USE_OPTION(*OPNQRYF)パラメータと組み合わせて使用した場合のみ有効です。それ以外の場合は無視されます。ファイル内のデータへのアクセス・パスを作成する際にOPNQRYFコマンドで使用する選択条件を指定するために使用します。

以下のように英数字リテラルを指定することもできます。

OPEN FILE(STATES) USE_OPTION(*OPNQRYF) QRYSLT('STATE *EQ "NSW"')
 

または、以下のように、選択条件が保持されているフィールドの名前を指定することもできます。

CHANGE FIELD(#SELECTION) TO('STATE *EQ "NSW"')
OPEN FILE(STATES) USE_OPTION(*OPNQRYF) QRYSLT(#SELECTION)
 

または、以下のように交換リストを利用することもできます。

OPEN FILE(STATES) USE_OPTION(*OPNQRYF) QRYSLT('=EXCHANGE')
 

2番目の方法では、RDMLプログラムで実行時に選択条件を変更できます。フィールド#SELECTIONの内容を変更することで、プログラムが実際に選択するデータを変更することが可能です。これは、OPNQRYFコマンドで提供される強力な機能の1つです。Visual LANSAでは、SELECT_SQLコマンドによってこれと同様の動作が実行されますが、利用できるのはIBM i上のRDMLXオブジェクトのみです。以下は、クロスプラットフォーム・コードの例です。クロスプラットフォームで動作するクエリーを作成する際は十分に注意してください。特に、リテラルを一重引用符で囲み、ファイルをIBM i上で閉じてください。

EXECUTE SUBROUTINE(QUOTE) WITH_PARMS('NSW' #QUOTED)
USE BUILTIN(BCONCAT) WITH_ARGS('STATE =' #QUOTED) TO_GET(#SELECTION)
IF COND('*CPUTYPE *NE AS400')
   SELECT_SQL FIELDS(#STATE) FROM_FILES((#STATES)) WHERE(#SELECTION)
      DISPLAY FIELDS(#STATE)
   ENDSELECT
ELSE
   OPEN FILE(STATES) USE_OPTION(*OPNQRYF) QRYSLT(#SELECTION)
   SELECT FIELDS(#STATE) FROM_FILE((#STATES))
      DISPLAY FIELDS(#STATE)
   ENDSELECT   
   CLOSE FILE(STATES) 
ENDIF
SUBROUTINE NAME(QUOTE) PARMS((#TEXT1 *RECEIVED) (#TEXT2 *RETURNED))
USE BUILTIN(TCONCAT) WITH_ARGS(*QUOTE #TEXT1 *QUOTE) TO_GET(#TEXT2)
ENDROUTINE
 

3番目の方法では、各フィールドに最大256文字まで指定でき、クエリー選択を定義するために必要な数だけ交換フィールドを指定できます。'=EXCHANGE'はEXCHANGEコマンドと組み合わせて使用します。クエリー選択が複雑で、その定義に256文字以上必要な場合は、2番目の方法よりこの方法の方が適しています。3番目の方法は、IBM i上でローカル実行する場合のみサポートされます。Visual LANSAから使用する場合は、以下の例に示すように、LANSA/スーパーサーバーを介してIBM iファンクションを実行する必要があります。

注:QRYSLTパラメータ内での"記号(二重引用符)の使用に注意してください。OPNQRYFでは、"記号(二重引用符)を'記号(一重引用符)と同じように使用できます。LANSAからOPNQRYFを使用する場合は、英数字リテラルへのコーディングが容易なことから"記号の方が適しています。

この例では、フィールド名STATEの前に# (ハッシュ(シャープ))記号がありません。これは、実際の選択要求がLANSAではなくOPNQRYFコマンドに対して行われるためです。

QRYSLTパラメータの詳細、このパラメータの値、動作、およびサポートされるオプションについては、IBM提供の該当のマニュアルに記載されているOPNQRYFコマンドに関するセクションを参照してください。

KEYFLD

このパラメータは、USE_OPTION(*OPNQRYF)パラメータと組み合わせて使用した場合のみ有効です。それ以外の場合は無視されます。

このパラメータは、ファイル内のデータへのアクセス・パスを作成する際にOPNQRYFコマンドで使用するキー・フィールドを指定するために使用します。これにより、ファイル内のデータに、要求されたキー順でアクセスできるようになります。以下のように英数字リテラルとして指定することもできます。

OPEN FILE(STATES) USE_OPTION(*OPNQRYF) 
     KEYFLD('STATE POSTCD')
 

または、以下のように、キー・フィールドが保持されているフィールドの名前を指定することもできます。

CHANGE FIELD(#ORDER_BY) TO('STATE POSTCD')
OPEN FILE(STATES) USE_OPTION(*OPNQRYF) KEYFLD(#ORDER_BY)
 

2番目の方法を使用した場合、キー・フィールド(すなわち、ファイルのデータの処理順序)をプログラムで実行時に変更できます。フィールド#ORDER_BYの内容を変更することで、ファイルSTATESからレコードが処理される順序を動的に変更することが可能です。これは、OPNQRYFコマンドで提供されるもう1つの強力な機能です。

また、この例では、フィールド名STATEおよびPOSTCDの前に# (ハッシュ(シャープ))記号が付いていないことに注意してください。これは、実際のキー/順序要求がLANSAではなくOPNQRYFコマンドに対して行われるためです。

KEYFLDパラメータの詳細、このパラメータの値、動作、およびサポートされるオプションについては、IBM提供の該当のマニュアルに記載されているOPNQRYFコマンドに関するセクションを参照してください。

移植性に関する考慮事項

LANSA/スーパーサーバー経由でIBM iサーバーを使用しない限り、現在のリリースのVisual LANSAではサポートされません。

ALWCPYDTA、

OPTIMIZE、

SEQONLY、

COMMIT、および

TYPE

これらのパラメータは、USE_OPTION(*OPNQRYF)パラメータと組み合わせて使用した場合のみ有効です。それ以外の場合は無視されます。

これらのパラメータの詳細、これらパラメータの値、動作、およびサポートされるオプションについては、IBM提供の該当のマニュアルに記載されているOPNQRYFコマンドに関するセクションを参照してください。

移植性に関する考慮事項

LANSA/スーパーサーバー経由でIBM iサーバーを使用しない限り、これらのパラメータは現在のリリースのVisual LANSAではサポートされません。