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