Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

[ Image Added |../../index.htm#lansa/function_p.htm]
現在地:

Anchor
_Ref428888467
_Ref428888467
Anchor
_

...

Toc139468688
_

...

Toc139468688
7.63.1 FUNCTION のパラメータ

OPTIONS
RCV_DS
RCV_LIST
TRIGGER

Anchor
FUNCTION_OPTIONS
FUNCTION_OPTIONS
OPTIONS
最大9個のオプションを指定できます。このパラメータで指定できる値は以下のとおりです。
*NOMESSAGES
プログラムに対し、呼び出し元からのメッセージの経路付けや呼び出し元への経路付けが要求されません(失敗しない場合)。このオプションを指定すると、コンパイル済みRDMLファンクションで使用される開始時および終了時のリソースを低減することができます。
このオプションを指定した場合、保留中の開発者メッセージは検査されません。これにより、開発者サービスが実行されている実稼動環境において頻繁に使用/呼び出されるファンクションのパフォーマンスを高めることができます。
*DEFERWRITE

移植性に関する考慮事項

Visual LANSAコードで使用した場合は無視され、アプリケーションには何の効果もありません。

...

このプログラム内でDISPLAY、REQUEST、またはPOP_UPコマンドに情報を提供するIBM i表示ファイルで常にDFRWRT(*YES) パラメータが使用されます。このオプションを指定すると、プログラムがデバイスの応答を待機する時間を短縮できます。
POP_UPコマンドを使用するプログラムや、リモートで接続されたデバイスと情報をやり取りするプログラムでは、このオプションを使用してください。
*HEAVYUSAGEおよび*LIGHTUSAGE
関連付けられたプロセスで使用されるオプションに関わらず、コンパイル済みRDMLファンクションでは、HEAVY使用 (高使用頻度) オプションまたは LIGHT使用 (低使用頻度) オプションが使用されます。 高使用頻度オプションおよび低使用頻度オプションの詳細については、「&<a href="l4wtgu05_0090.htm"&>\[使用頻度\]&</a&>」を参照してください。
高使用頻度オプションおよび低使用頻度オプションの詳細については、「」を参照してください。
デフォルトでは、RDMLXファンクションは、呼び出し間で状態を維持することに注意してください。状態を維持しない場合は、*DYNAMICのコンポーネントを使用してください。
*DBOPTIMIZEまたは*DBOPTIMISE

移植性に関する考慮事項

Visual LANSAおよびRDMLXコードで使用した場合は無視され、アプリケーションには何の効果もありません。

 
RDMLファンクションは、I/Oモジュールによってデータベース・ファイルにアクセスせず、直接I/O技術によってOPTIMIZEデータベース・アクセスを行います。
このオプションを指定すると、アプリケーションのパフォーマンスが高まりますが、多数の検討事項および制約が適用されます。
このオプションを使用する前に、『LANSA/AD ユーザーガイド』の&<a href="../../../lansa010/content/lansa/ugubc_c10070.htm"&>「
*DBOPTIMIZE/*DBOPTIMIZE_BATCH の使用」&</a&>を読むことを強くお勧めします。 を読むことを強くお勧めします。
*DBOPTIMIZE_BATCHまたは*DBOPTIMISE_BATCH

...

RDMLファンクションは、I/Oモジュールによってデータベース・ファイルにアクセスせず、大量の更新または削除操作を含むバッチ処理に最適な直接I/O技術によってOPTIMIZEデータベース・アクセスを行います。
このオプションを指定すると、バッチ・アプリケーションのパフォーマンスが高まりますが、多数の検討事項および制約が適用されます。
このオプションを使用する前に、『LANSA/AD ユーザーガイド』の&<a href="../../../lansa010/content/lansa/ugubc_c10070.htm"&>「*DBOPTIMIZE/*DBOPTIMIZE_BATCH の使用」&</a&>を読むことを強くお勧めします。 を読むことを強くお勧めします。
*PGMCOMMIT

移植性に関する考慮事項

Visual LANSAおよびRDMLXコードで使用した場合は無視され、アプリケーションには何の効果もありません。ビルド警告が生成されます。

 
あらゆるタイプの更新処理のためにこのRDMLファンクションが開いたすべてのファイルに対して個々のプログラム・レベルのコミット制御が要求されます。
このオプションを指定すると、コミット制御の状況/自動コミット・オプションに関する個々のデータベース・ファイルの定義またはRDMLコマンドが上書きされて置き換えられます。
また、オペレーティング・システムのコミット制御機能は、RDMLファンクションによって自動的に開始/終了します。詳細については、『LANSA/AD ユーザーガイド』の「&<a href="../../../lansa010/content/lansa/ladtgubh_0160.htm"&>ユーザー出口 F@BGNCMT - コミット制御の開始&</a&>」および「&<a href="../../../lansa010/content/lansa/ladtgubh_0155.htm"&>ユーザー出口 F@ENDCMT - コミット制御の終了&</a&>」を参照してください。 ユーザー出口 F@BGNCMT - コミット制御の開始」および「ユーザー出口 F@ENDCMT - コミット制御の終了」を参照してください。
ユーザーの責任において、適切なトランザクションの境界でCOMMITおよびROLLBACKコマンドを実行してください。
この機能は、主にバッチ処理を対象としています。
このオプションを使用する前に、『LANSA/AD ユーザーガイド』の「&<a href="../../../lansa010/content/lansa/ugubc_c10060.htm"&>コミット制御を使用する&</a&>」を十分に読むことを強くお勧めします。 コミット制御を使用する」を十分に読むことを強くお勧めします。
*PGMCOMMITを指定すると、*DBOPTIMIZEオプションが実際に指定されているかどうかに関わらず、*DBOPTIMIZEが自動的に使用されます。
*NOPGMCOMMIT

...

上記の条件が満たされていない状況で*MLOPTIMIZEを使用しても問題はありませんが、警告メッセージが発行され、*MLOPTIMIZE要求は無視されます。
*ALP_SYSTEM_VARIABLE
このファンクションは、(英数字変数のみを対象とした)システム変数評価ファンクションになります。このオプションを指定する場合は、オプション*DIRECTも指定してください。
*NUM_SYSTEM_VARIABLE
このファンクションは、(数値システム変数のみを対象とした)システム変数評価ファンクションになります。このオプションを指定する場合は、オプション*DIRECTも指定してください。
*ALP_FIELD_VALIDATE
このファンクションは、(英数字フィールドのみを対象とした)複雑ロジック検査ファンクションになります。
詳細については、『LANSA/AD ユーザーガイド』の「&<a href="../../../lansa010/content/lansa/ugub_20012.htm"&>複雑なロジック検査&</a&>」を参照してください。このオプションを指定する場合は、オプション複雑なロジック検査」を参照してください。このオプションを指定する場合は、オプション*DIRECTも指定してください。
*NUM_FIELD_VALIDATE
このファンクションは、(数値フィールドのみを対象とした)複雑ロジック検査ファンクションになります。
詳細については、『LANSA/AD ユーザーガイド』の「&<a href="../../../lansa010/content/lansa/ugub_20012.htm"&>複雑なロジック検査&</a&>」を参照してください。このオプションを指定する場合は、オプション複雑なロジック検査」を参照してください。このオプションを指定する場合は、オプション*DIRECTも指定してください。
*ALP_FIELD_VALIDATEおよび*NUM_FIELD_VALIDATEに関する技術ノート
複雑ロジック妥当性検査ファンクションでは、フィールド長および小数点以下桁数が異なるフィールドを処理できますが、タイプは同じでなければなりません。FUNCTIONコマンドで*ALP_FIELD_VALIDATEオプションを指定すると、これが英数字フィールドの妥当性検査を行うファンクションであることが示されます。また、FUNCTIONコマンドで*NUM_FIELD_VALIDATEオプションを指定した場合は、数値フィールドの妥当性検査を行うファンクションであることが示されます。
妥当性検査ファンクション内でフィールド名、フィールド長、およびフィールド値にアクセスするには、データ・ディクショナリに以下のフィールドが定義されている必要があります。

...

上記の制約に従わないと、構文検査時に致命的エラーが発生します。
ユーザー定義レポート属性および外部プリンター・ファイルの詳細については、『LANSA/AD ユーザーガイド』の&<a href="../../../lansa010/content/lansa/ugubc_c10140.htm"&>「ユーザー定義レポート属性」&</a&>を参照してください。 「ユーザー定義レポート属性」を参照してください。
*BUILTIN
このファンクションは組み込み関数になります。
詳細については、「&<a href="dsnbi_0005.htm"&>独自の組み込み関数の作成&</a&>」を参照してください。このオプションを指定する場合は、独自の組み込み関数の作成」を参照してください。このオプションを指定する場合は、*DIRECTも指定してください。
*STRICT_NULL_ASSIGN
非NULL可能フィールドに*SQLNULLを割り当てるとエラーになります。
デフォルトの動作はこれほど厳密ではなく、*SQLNULL値を非NULL可能フィールドに割り当てると、*NULLとして扱われます。各フィールド・タイプにおける*NULL値の定義については、「7NULL値の定義については、「7.12.1 CHANGE のパラメータ 」を参照してください。
厳密なNULLの割り当てとデフォルトの動作の詳細については、「&<a href="l4wtgu01_0255.htm"&>SQL Nullが可能なフィールドの割り当て、条件、式&</a&>」を参照してください。SQL Nullが可能なフィールドの割り当て、条件、式」を参照してください。

Anchor
FUNCTION_RCV_DS
FUNCTION_RCV_DS
RCV_DS
ファンクションが受け取ることのできる、最大20のデータ構造名を指定できます。このパラメータを使用する際は、以下の点に注意してください。
各データ構造名は、LANSAに定義されている物理ファイルの名前でなければなりません。
このパラメータを使用する場合は、FUNCTION OPTIONS(*DIRECT)を指定する必要があります。
特別な*EXCHANGEオプションが使用されている場合を除き、データ構造を受け取るファンクションには、コンパイル中にプロセス・メニュー(またはアクション・バー)から直接アクセスできないことを示すフラグが立てられます。
このようなファンクションは、プロセス・メニューまたはアクション・バーから直接呼び出すのではなく、正しいデータ構造を(正しい順序で)渡す別のファンクションから呼び出す必要があります。
指定された物理ファイル内のフィールド(すなわちデータ構造)を受け取るには、ファンクション内のどこかでそのフィールドを参照する必要があります。参照しないと、フィールドを受け取ることができません。このことは、呼び出し元ファンクションにも当てはまります。ファイルから渡すことができるのは実フィールドのみで、仮想フィールドは渡すことができません。
また、データ構造の、CALLコマンドのPASS_DSパラメータでの指定順序および呼び出されるファンクションのFUNCTIONコマンドの RCV_DSパラメータでの指定順序も重要です。データ構造の順序は、呼び出されるファンクションおよび呼び出し元ファンクションにおいて同じでなければなりません。同じでないと、エラーが発生する可能性があります。
同様に、データ構造のレイアウトが変更された場合、変更されたデータ構造が操作可能になった後に、RCV_DSまたはPASS_DSパラメータでそのデータ構造を参照するすべてのファンクションを再コンパイルする必要があります。
RCV_DSパラメータの最初の引数として、*EXCHANGEという特殊なオプションを使用できます(RCV_DS(*EXCHANGE CUSMST PRODMST)など)。これは、指定されたデータ構造が渡され、実際のパラメータとしてではなく、「交換リスト」タイプの構造を介して戻されることを示します。
この機能は非常に特殊で、以下の条件に正確に適合しているファンクションでのみ使用するように設計されています。ファンクションが以下の条件に正確に適合していない限り、このオプションを使用しないでください。

...

Anchor
FUNCTION_RCV_LIST
FUNCTION_RCV_LIST
RCV_LIST
最大 20 個の作業リスト名を指定できます。このパラメータを使用する際は、以下の点に注意してください。
指定する各作業リストは、ファンクション内で定義されていなければなりません。
このパラメータを使用する場合は、FUNCTION OPTIONS(*DIRECT)を指定する必要があります。
作業リストを受け取るファンクションには、コンパイル時にメイン・メニューからアクセスできないことを示すフラグが立てられます。このようなファンクションは、メニューからではなく、正しい作業リストを渡す別のファンクションから呼び出す必要があります。
呼び出されるファンクションと呼び出し元ファンクションの両方で、作業リストに同じ属性が定義されている必要があります。そうでないと、エラーが発生します。
また、作業リストの、呼び出し元ファンクションのPASS_LSTパラメータでの指定順序および呼び出されるファンクションのRCV_LISTでの指定順序も重要です。作業リストの順序は、呼び出されるファンクションおよび呼び出し元ファンクションにおいて同じでなければなりません。同じでないと、エラーが発生する可能性があります。
Anchor
FUNCTION_TRIGGER
FUNCTION_TRIGGER
TRIGGER
このファンクションが、データ・ディクショナリ・フィールドまたはデータベース・ファイルの「トリガー」として機能することを指定すために使用します。
デフォルト値 *NONE を指定した場合、このファンクションはトリガー・ファンクションではありません。
*FIELD を指定した場合、このファンクションはデータ・ディクショナリ・レベルのトリガーとして機能します。関連付けるデータ・ディクショナリ・フィールドもこのパラメータで指定する必要があります。
*FILE を指定した場合、このファンクションはデータベース・レベルのトリガーとして機能します。関連付けるデータベース・ファイル名もこのパラメータで指定する必要があります。指定するファイルは物理ファイルでなければなりません。
詳細については、「&<a href="l4wtgu02_0055.htm"&>トリガー&</a&>」を参照してください。トリガー」を参照してください。
ファンクションをトリガー・ファンクションとして定義する場合、以下のガイドラインに従う必要があります。

...

ファンクションをトリガー・ファンクションとして定義する場合、多くの状況で以下のガイドラインに従う必要があります。

  • &<a href="l4wtgu02_0055.htm"&>トリガー&</a&>」を読んで、トリガーの定義方法と使用方法を理解してください。トリガー」を読んで、トリガーの定義方法と使用方法を理解してください。
  • オプション *NOMESSAGES および *MLOPTIMIZE を使用してください。
  • オプション *HEAVYUSAGE および *DBOPTIMIZE の使用を検討することもできます。
  • 直接または間接を問わず、トリガーがリンクされている、またはリンクされるデータベース・ファイルにアクセスしないでください。
  • トリガーが頻繁かつ継続的に呼び出される場合は、リソースを大量に消費する操作は避けてください。このような操作を実行すると、関連付けられたファイルへのアクセス速度が低下します。
  • 再帰的なファンクション呼び出しを記述することは可能ですが、実行の段階で失敗します。例えば、ファイルAへの挿入中に呼び出されたフィールド・トリガー・ファンクションがファイルBにデータを挿入しようとすると、それ自体が呼び出されて再帰的な状況になり、失敗します。

[ Image Added |../../index.htm#lansa/function_p.htm]