コード・フラグメントによる仮想列を使用すると、RDMLX コードを指定して、テーブルから読み取る際に仮想列の値を設定したり、テーブルに書き込む際に実列の値を設定したりできます。
コード・フラグメントは、RDML/X コマンドのすべてはサポートしません。If、Case、Dountil、Dowhile、Change、Assign などに限りコード・フラグメントを作成できます。
コード・フラグメントには、実行時にテーブル内のすべての列への読み取り専用アクセス権があります。仮想列の複雑なコーディングやテーブル内のフィールドの更新にトリガー・ファンクションを使用することができます。
コード・フラグメントを指定するには、[詳細] タブの [仮想列タイプ] ドロップダウン・リストで [コードフラグメント] を選択します。[詳細] タブで [レコード読込み後に値を設定] のオプションを選択すると、[仮想列の設定] の関連タブが表示されます。仮想列の値を設定するために使用するコード・フラグメントを入力します。通常、コード・フラグメントは、テーブル上の 1 つ以上の実列から派生しますが、システム変数、言語変数、および作業フィールドを使用することもできます。
[テーブル書込み前に実列へ値を設定] オプションを選択すると、[物理列の設定] の関連タブが表示されます。実列の値を設定するために使用するコード・フラグメントを入力します。通常、コード・フラグメントは、現在の仮想列から派生します。
以下の例では、最初のオプションのみを選択しているため、[仮想列の設定] タブのみが表示されています。
両方のオプションを選択すると、両方のタブが表示されます。
2 番目のオプションのみを選択すると、[物理列の設定] タブのみが表示されます。
コード・フラグメントと結合
コード・フラグメントでは、結合より厳密な制御が可能で、多様性に富んでいます。以下の結合の例では、同じ情報を使用して (単純に定義の逆を適用して) 実列および仮想列の値を設定しています。この場合、同様の結果は得られますが、まったく同じ結果にはなりません。
コード・フラグメントは以下のとおりです。
#fullname := #surname + ' , ' + #givename
この結果はTurner , Scottです。
一方、姓と氏名を結合すると、TurnerScottになります。
また、以下も参照してください。