Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

7.63.1 FUNCTION のパラメータ

OPTIONS

RCV_DS

RCV_LIST

TRIGGER


Anchor
OPTIONS
OPTIONS
OPTIONS

最大9個のオプションを指定できます。このパラメータで指定できる値は以下のとおりです。 

...

プログラムに対し、呼び出し元からのメッセージの経路付けや呼び出し元への経路付けが要求されません(失敗しない場合)。このオプションを指定すると、コンパイル済みRDMLファンクションで使用される開始時および終了時のリソースを低減することができます。 

このオプションを指定した場合、保留中の開発者メッセージは検査されません。これにより、開発者サービスが実行されている実稼動環境において頻繁に使用このオプションを指定した場合、保留中の開発者メッセージは検査されません。これにより、開発者サービスが実行されている実稼動環境において頻繁に使用/呼び出されるファンクションのパフォーマンスを高めることができます。 

...

このプログラム内でDISPLAY、REQUEST、またはPOP_UPコマンドに情報を提供するIBM i表示ファイルで常にDFRWRT(*YES) パラメータが使用されます。このオプションを指定すると、プログラムがデバイスの応答を待機する時間を短縮できます。

POP_UPコマンドを使用するプログラムや、リモートで接続されたデバイスと情報をやり取りするプログラムでは、このオプションを使用してください。 UPコマンドを使用するプログラムや、リモートで接続されたデバイスと情報をやり取りするプログラムでは、このオプションを使用してください。 

*HEAVYUSAGEおよび*LIGHTUSAGE 

...

高使用頻度オプションおよび低使用頻度オプションの詳細については、[6.1.5 使用頻度]を参照してください。

デフォルトでは、RDMLXファンクションは、呼び出し間で状態を維持することに注意してください。状態を維持しない場合は、*DYNAMICのコンポーネントを使用してください。 

...

このオプションを使用する前に、『LANSA/AD ユーザーガイド』の「の「*DBOPTIMIZE/*DBOPTIMIZE_BATCH の使用」を読むことをの使用」を読むことを強くお勧めします

*DBOPTIMIZE_BATCHまたは*DBOPTIMISE_BATCH

...

このオプションを指定すると、バッチ・アプリケーションのパフォーマンスが高まりますが、多数の検討事項および制約が適用されます。 

このオプションを使用する前に、『LANSA/AD ユーザーガイド』の「ユーザーガイド』の「*DBOPTIMIZE/*DBOPTIMIZE_BATCH の使用」を読むことをの使用」を読むことを強くお勧めします

*PGMCOMMIT

移植性に関する考慮事項

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

...

また、オペレーティング・システムのコミット制御機能は、RDMLファンクションによって自動的に開始/終了します。詳細については、『LANSA/AD ユーザーガイド』の「ユーザー出口 F@BGNCMT - コミット制御の開始」および「およびユーザー出口 F@ENDCMT - コミット制御の終了」を参照してください。を参照してください。

ユーザーの責任において、適切なトランザクションの境界でCOMMITおよびROLLBACKコマンドを実行してください。 

...

このオプションを使用する前に、『LANSA/AD ユーザーガイド』の「コミット制御を使用する」を十分に読むことを強くお勧めします

*PGMCOMMITを指定すると、*DBOPTIMIZEオプションが実際に指定されているかどうかに関わらず、*DBOPTIMIZEが自動的に使用されます。 

...

このファンクションを別のファンクションから直接呼び出したり、このファンクションがプロンプト・キー要求に直接応じたりできるようになります。 

Note

注:注意:すべてのRDMLXファンクションは、*DIRECTを使用する必要があります。これにより、移植されたIBM i RDMLファンクションが固有なものになります。

このオプションを指定することにより、このファンクションを別の呼び出し元ファンクションから直接呼び出したり、このファンクションがプロンプト・キー要求に直接応じたりできるようになります。 このオプションを指定することにより、このファンクションを別の呼び出し元ファンクションから直接呼び出したり、このファンクションがプロンプト・キー要求に直接応じたりできるようになります。 

この段階では、これがこのファンクションを呼び出す完全に有効な方法かどうかは重要ではありません。このオプションは、単に、必要に応じてファンクションを直接呼び出すことができることを示すものです。 

...

詳細については、『LANSA/AD ユーザーガイド』の「複雑なロジック検査」を参照してください。このオプションを指定する場合は、オプション*DIRECTも指定してください。

...

このファンクションは、(数値フィールドのみを対象とした)複雑ロジック検査ファンクションになります。 

詳細については、『LANSA詳細については、『LANSA/AD ユーザーガイド』の「ユーザーガイド』の「複雑なロジック検査」を参照してください。このオプションを指定する場合は、オプション*DIRECTも指定してください。

...

  • VALFLD$NM A(10):妥当性検査対象のフィールドの名前
  • VALFLD$LN P(7,0):妥当性検査対象のフィールドの長さ
  • VALFLD$DP P(7,0):妥当性検査対象のフィールドの小数点以下桁数 VALFLD$AV A(256) 現在のフィールド値(英数字フィールドおよび*Char/*String フィールドの最初の 256 バイトのみ)
    Note

    注: 注意:特別な値 *SQLNULL は、CALLBACK ファンクション内で *Char/*String フィールドとして評価されません。これは、VALFLD$AV のタイプが *Alpha だからです。

  • VALFLD$AV A(256):現在のフィールド値(英数字フィールド)
  • VALFLD$NV P(30,9):現在のフィールド値(数値フィールド)
  • VALFLD$RT A(1):戻りコード

...

ファンクションに*ALP_FIELD_VALIDATEまたは*NUM_FIELD_VALIDATEのいずれかのオプションを指定した場合、以下の内容は技術上の制約ではなく、設計上の制約です。この機能を正しく使用するために、以下に注意してください。VALIDATEのいずれかのオプションを指定した場合、以下の内容は技術上の制約ではなく、設計上の制約です。この機能を正しく使用するために、以下に注意してください。

  • 複雑ロジック妥当性検査ファンクション内では、DISPLAY、REQUEST、またはPOP_UPコマンドを使用できません。
  • 複雑な検証処理が必要な場合であっても、ファンクション内から他のプロセス/ファンクションを呼び出す(CALL)ことはできません。ただし、3GLプログラムを呼び出すことは可能です。
  • アクション・バー・プロセス内に、複雑ロジック妥当性検査ファンクションを記述できません。これは、アクション・バー内からこれらのファンクションを参照できないということではなく、アクション・バー・タイプのプロセスの一部として複雑ロジック・ファンクションを定義できないということです。
  • 複雑ロジック妥当性検査ファンクションには、オプションRCV_DSまたはRCV_LISTを指定できません。
  • 連携するプロセスにパラメータを渡すことはできません。
  • 交換リストは使えません。これにより、妥当性検査の独立性を高め、モジュール性を保証しています。
  • 再帰的なファンクション呼び出しを記述することは可能ですが、実行の段階で失敗します。例えば、ファイルAへの挿入中に呼び出された妥当性検査ファンクションがファイルBにデータを挿入しようとすると、それ自体が呼び出されて再帰的な状況になり、失敗する可能性があります。
  • 複雑ロジック妥当性検査ファンクションでは、オプション*DBOPTIMIZEおよび*NOMESSAGESを使用することをお勧めします。使用頻度の高い妥当性検査ファンクションでは、*HEAVYUSAGEの使用を検討することもできます。
  • 多言語アプリケーションで使う場合は、ぜひとも多言語アプリケーションで使う場合は、ぜひとも*MLOPTIMIZE オプションを指定することを推奨します。

*MINI_SCREEN

移植性に関する考慮事項

アプリケーションがIBM i ベースで、画面パネル・サイズが標準的な24行×80列よりも小さい「小型」または「パームトップ」デバイスで使用する場合を除き、このオプションを使用しないでください

通常のフル・パネルのDISPLAYまたはREQUESTコマンドが含まれるファンクションでは、このオプションを使用しないでください。 

GUI 対応のファンクションでは、このオプションを使用しないでください。Visual

アプリケーションがIBM i ベースで、画面パネル・サイズが標準的な24行×80列よりも小さい「小型」または「パームトップ」デバイスで使用する場合を除き、このオプションを使用しないでください。

通常のフル・パネルのDISPLAYまたはREQUESTコマンドが含まれるファンクションでは、このオプションを使用しないでください。 

GUI 対応のファンクションでは、このオプションを使用しないでください。Visual LANSAコード内で使用すると無視され、ビルド警告が生成されます。

...

  • 境界線が表示されません。
  • 1 行目の1列目の位置までウィンドウを左寄せできます。
  • 境界線のないウィンドウにより、一般的なポップアップ・ウィンドウではなく、「小型」全画面パネルの表示が生成されます。
  • ポップアップ・ウィンドウ内に表示されるブラウズ・リストでは、すべてのフィールドの欄見出しがブランクで上書きされ、ブラウズ・リストと見出し領域が通常の分割線によって区切られません。
    そのため、手作業で定義したテキストを「見かけ上の」欄見出しとして指定することができます。この機能は、ブラウズ・リスト内のすべてのフィールドで欄見出しがブランクに上書きされている場合のみ使用されます。また、通常の分割線を、画面パネル内でブラウズ・リストを「押し下げる」目標位置として使用できないため、画面ペインターでまったく新しいテキスト行を挿入することは困難です。新しいテキスト行を挿入するには、RDMLエディターに戻り、FIELDSリストの末尾で見出し領域に「ダミー」フィールドを定義して、画面ペインターを再度呼び出します。これにより、ダミー・フィールドが配置され、画面パネル内でブラウズ・リストが「押し下げ」られます。その後、作成した新しい行に必要なテキスト
    そのため、手作業で定義したテキストを「見かけ上の」欄見出しとして指定することができます。この機能は、ブラウズ・リスト内のすべてのフィールドで欄見出しがブランクに上書きされている場合のみ使用されます。また、通常の分割線を、画面パネル内でブラウズ・リストを「押し下げる」目標位置として使用できないため、画面ペインターでまったく新しいテキスト行を挿入することは困難です。新しいテキスト行を挿入するには、RDMLエディターに戻り、FIELDSリストの末尾で見出し領域に「ダミー」フィールドを定義して、画面ペインターを再度呼び出します。これにより、ダミー・フィールドが配置され、画面パネル内でブラウズ・リストが「押し下げ」られます。その後、作成した新しい行に必要なテキスト/フィールドを追加/移動します。また、「ダミー」フィールドを削除することもできます。 

    この機能を大規模に使用する場合は、"ET" (テンプレートの実行)エディター・アクションから呼び出せるようにアプリケーション・テンプレートを構成することを強くお勧めします。このようなテンプレートを使用すれば、ブラウズ・リスト部分を必要な開始行まで押し下げ、見出し領域にフィールドエディター・アクションから呼び出せるようにアプリケーション・テンプレートを構成することを強くお勧めします。このようなテンプレートを使用すれば、ブラウズ・リスト部分を必要な開始行まで押し下げ、見出し領域にフィールド/テキストを挿入するための十分なスペースを確保するための1つ以上の初期「ダミー」フィールドを含む、すべての「小型画面」用の「標準レイアウト」を構成することができます。

...

LANSAにより、RDMLファンクション用のIBM i 固有の外部プリンター・ファイルが生成され、使用されます。このオプション単独では利点がありませんが、RDMLファンクション内でユーザー定義レポート属性を使用するために指定する必要があります。 このオプションを指定すると、ファンクションがIBM

このオプションを指定すると、ファンクションがIBM i プラットフォームに依存するようになります。 プラットフォームに依存するようになります。 

*OS400_EXT_PRINTを指定する場合、以下のような制約が適用されます。

...

上記の制約に従わないと、構文検査時に致命的エラーが発生します。

ユーザー定義レポート属性および外部プリンター・ファイルの詳細については、『LANSAユーザー定義レポート属性および外部プリンター・ファイルの詳細については、『LANSA/AD ユーザーガイド』の「ユーザー定義レポート属性」を参照してください。ユーザーガイド』の「ユーザー定義レポート属性」を参照してください。

*BUILTIN 

このファンクションは組み込み関数になります。 

詳細については、「独自の組み込み関数の作成」を参照してください。このオプションを指定する場合は、*DIRECTも指定してください。

...

デフォルトの動作はこれほど厳密ではなく、*SQLNULL値を非NULL可能フィールドに割り当てると、*NULLとして扱われます。各フィールド・タイプにおける*NULL値の定義については、「7.12.1 CHANGE のパラメータ」を参照してください。

厳密なNULLの割り当てとデフォルトの動作の詳細については、「SQL Nullが可能なフィールドの割り当て、条件、式」を参照してください。

Anchor
RCV_DS
RCV_DS
RCV_DS

ファンクションが受け取ることのできる、最大20のデータ構造名を指定できます。このパラメータを使用する際は、以下の点に注意してください。 

...

指定された物理ファイル内のフィールド(すなわちデータ構造)を受け取るには、ファンクション内のどこかでそのフィールドを参照する必要があります。参照しないと、フィールドを受け取ることができません。このことは、呼び出し元ファンクションにも当てはまります。ファイルから渡すことができるのは実フィールドのみで、仮想フィールドは渡すことができません。 を受け取るには、ファンクション内のどこかでそのフィールドを参照する必要があります。参照しないと、フィールドを受け取ることができません。このことは、呼び出し元ファンクションにも当てはまります。ファイルから渡すことができるのは実フィールドのみで、仮想フィールドは渡すことができません。 

また、データ構造の、CALLコマンドのPASS_DSパラメータでの指定順序および呼び出されるファンクションのFUNCTIONコマンドの RCV_DSパラメータでの指定順序も重要です。データ構造の順序は、呼び出されるファンクションおよび呼び出し元ファンクションにおいて同じでなければなりません。同じでないと、エラーが発生する可能性があります。 

同様に、データ構造のレイアウトが変更された場合、変更されたデータ構造が操作可能になった後に、RCV_DSまたはPASS_DSパラメータでそのデータ構造を参照するすべてのファンクションを再コンパイルする必要があります。 

RCV_DSパラメータの最初の引数として、*EXCHANGEという特殊なオプションを使用できますEXCHANGEという特殊なオプションを使用できます(RCV_DS(*EXCHANGE CUSMST PRODMST)など)。これは、指定されたデータ構造が渡され、実際のパラメータとしてではなく、「交換リスト」タイプの構造を介して戻されることを示します。 

この機能は非常に特殊で、以下の条件に正確に適合しているファンクションでのみ使用するように設計されています。ファンクションが以下の条件に正確に適合していない限り、このオプションを使用しないでください。この機能は非常に特殊で、以下の条件に正確に適合しているファンクションでのみ使用するように設計されています。ファンクションが以下の条件に正確に適合していない限り、このオプションを使用しないでください

  • ファンクションがメニューまたはアクション・バーから直接呼び出されること。この機能は、このようなファンクションが、EXCHANGEコマンドによって多数のフィールドを交換しなくても、ファンクション間で一連のデータ構造を「交換」できるようにするために用意されたものです。
  • ファンクションが他のファンクションから呼び出されないこと。呼び出し元が通常の方法でデータ方法を直接渡せる場合は、このオプションを使用する必要はありません。

...

  • 交換領域を検索、クリア、および変更するのは、RCV_DS(*EXCHANGE .....)を使用しているファンクションのみです。このオプションを使用していないファンクションは、交換領域に何の影響も与えません。
  • 交換領域の最大長は9999バイトです。合計長がこの制限を超える一連のデータ構造を使用しようとすると、アプリケーションが失敗します。
  • 交換領域への実際の保管は、M@EXCHDSという付属プログラムによって実行されます。IBM i オペレーティング・システム環境でのパフォーマンスを最適化し、PAG (プロセス・アクセス・グループ)の「穴」を避けるために、このプログラムには、LANSAの呼び出し前の「穴」を避けるために、このプログラムには、LANSAの呼び出し(システムのサイン・オン中など)に使用可能な「開く」および「閉じる」オプションが用意されています。この「開く」および「閉じる」オプションでは LANSAの規則に従い、開く場合はCALL M@EXCHDS (X'00')、閉じる場合はCALL M@EXCHDS (X'FF')が実行されます。明らかに、閉じる操作によって交換領域はクリアされます。LANSA RDMLファンクション内からM@EXCHDSを呼び出さないでください。これらのタイプの呼び出しは、実際にこの機能を使用するために必要なものではなく、その使用を最適化するためのものです。RDMLファンクション内からM@EXCHDSを呼び出さないでください。これらのタイプの呼び出しは、実際にこの機能を使用するために必要なものではなく、その使用を最適化するためのものです。
  • RCV_DS(*EXCHANGE ....) は、通常の RCV_DS(.....) パラメータほど効率的ではありませんが、EXCHANGE コマンドで多数のフィールドを処理するよりも効率的です。

Anchor
RCV_LIST
RCV_LIST
RCV_LIST

最大 20 個の作業リスト名を指定できます。このパラメータを使用する際は、以下の点に注意してください。 

...

また、作業リストの、呼び出し元ファンクションのPASS_LSTパラメータでの指定順序および呼び出されるファンクションのRCV_LISTでの指定順序も重要です。作業リストの順序は、呼び出されるファンクションおよび呼び出し元ファンクションにおいて同じでなければなりません。同じでないと、エラーが発生する可能性があります。

Anchor
TRIGGER
TRIGGER
TRIGGER

このファンクションが、データ・ディクショナリ・フィールドまたはデータベース・ファイルの「トリガー」として機能することを指定すために使用します。

...

*FILE を指定した場合、このファンクションはデータベース・レベルのトリガーとして機能します。関連付けるデータベース・ファイル名もこのパラメータで指定する必要があります。指定するファイルは物理ファイルでなければなりません。

詳細については、「トリガー」を参照してください。

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

  • パラメータ RCV_LIST(#TRIG_LIST) を使用してください。
  • パラメータ RCV_DS は使用しないでください。
  • オプション *DIRECT も使用する必要があります。
  • オプション xxx_SYSTEM_VARIABLE または xxx_FIELD_VALIDATE は使用しないでください。
  • リスト #TRIG_LIST が、DEF_LIST コマンドで DEF_LIST NAME(#TRIG_LIST) TYPE(*WORKING) ENTRYS(2) として定義されている必要があります。また、FIELDS パラメータにフィールドを含めないでください。必要なフィールドは自動的に追加されます。
  • DISPLAY、 REQUEST、または POP_UP コマンドは使用できません。これは、意図的に適用されている設計/使用上の制約で、将来的なバージョンで排除される可能性があります。
  • 別のプロセス/ファンクションを呼び出す (CALL) ことはできません。これは、意図的に適用されている設計/使用上の制約で、将来的なバージョンで排除される可能性があります。
  • 組み込み関数 CALL_SERVER_FUNCTION を使用してスーパーサーバー経由でファンクションを呼び出す場合、リスト#TRIG_LISTをサーバー・ファンクションに渡さないでください。
  • アクション・バー・プロセス内でトリガー・ファンクションを定義することはできません。これは、アクション・バー内からこれらのファンクションを参照できないということではなく、アクション・バー・タイプのプロセスの一部としてトリガー・ファンクションを定義できないということです。
  • 関連付けられたプロセスではパラメータを使用できません。
  • 交換リストは使えません。これは、トリガー・ファンクションの設計および使用における独立性とモジュール性を確保するために意図的に適用されている設計/使用上の制約です。

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

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