内部式処理を使用してのパフォーマンスの向上
単純な基準では、File Manager は REXX を呼び出す必要もなく、内部で式を処理できます。これにより、レコード識別およびレコード選択基準の処理が高速化される可能性があります。式が内部処理に適格でない場合は、関連するパネルで ENTER を押したときに、File Manager がメッセージ「REXX が必要」を表示します。この場合、REXX が不要になるように式を変更するか、あるいは内部処理ではなく REXX 処理で式を使用するかを選択できます。
内部処理に適格な式は、以下の項目のみで構成する必要があります。
- リテラル・ストリング: これには、通常の引用符で囲まれたストリングがバイナリー・ストリングおよび 16 進数ストリングとともに含まれています。リテラル・ストリングについて詳しくは、REXX 式の概要を参照してください。
- 数値: REXX とは異なり、内部式処理プログラムが文字タイプと数値タイプを識別します。内部処理で正しい数値が確実に使用されるようにするには、数値データを引用符なしストリングとして入力してください。
例えば、内部式処理プログラムはストリング
5
を数値として扱い、5 の値を持つ他の数値と等しいとします。ただし、ストリング'5'
は文字データとして扱われ、X'F5' を含むストリングと等しいとします (厳密でない比較では、前後のブランクは無視されます)。REXX は、両方のストリングを同じに扱い、これらを文字データとして処理しますが、適切なコンテキストでは数値としてこれらのストリングが扱われるようにします。浮動小数点数値以外は 31 小数桁数に制限され、浮動小数点数値は倍精度浮動小数点数として保管できる数の範囲に制限されます。内部処理プログラムと REXX が浮動小数点数の処理方法で異なる点について詳しくは、浮動小数点数の処理を参照してください。
- 比較演算子: 内部式処理プログラムはすべての REXX 比較演算子をサポートします。
内部処理プログラムは、両方のオペランドが数値であるか、または数値データを含むときには (数値フィールドの定様式参照、または数値形式設定タイプを指定する FLD 参照) 数値比較を実行し、両方のオペランドがビット・フィールドのときにはビット比較を実行し、それ以外の場合には文字比較を実行します。
両方のオペランドの値が同じ場合、そのデータの長さやタイプに関係なく、数値比較は一致します。ビット比較は、両方のビット・フィールドが同じときのみ一致します。フィールドが同じ長さでない場合には長いほうのフィールドの先行ゼロは無視されます。文字比較は、2 つのストリングが同一の場合のみ一致します。ただし、先行ブランクおよび末尾ブランクは、厳密でない演算子によって無視されます。内部式処理プログラムは EBCDIC 標準照合シーケンスに従ってバイトごとに文字ストリングを比較し、短いほうのストリングがそのストリング長の終わりまで長いほうのストリングと一致すると、長いほうのストリングはより大きいと考えられます。
- 論理演算子: 内部処理プログラムが許可する論理演算子は、AND (&)、OR (|)、排他 OR (&&)、および NOT (¬ または ¥) のみです。
- 算術接頭演算子: プラス (+) とマイナス (-) 演算子は、10 進数の前 (符号を示す)、および REXX 構文によって定義される浮動小数点数値の前と内部で使用することができます。
- File Manager フィールド参照: ID 基準または選択基準の評価の際、内部式処理プログラムは定様式参照と不定形式参照の両方をサポートします。FASTREXX プロシージャーでは、フィールド参照はサポートされません。
- 関数呼び出し: 次の関数は、 内部で処理される式に組み込むことができます。
- CMP_DATE
- CMP_TIME
- FLD
- FLD_CO
- FLD_TM
- FLD_TYPE
- FLDI
- FLDO
- I_LENGTH
- O_LENGTH
- PRTCOUNT
- RECSIN
- RECSOUT
- SEGCNT
- SEGNO
- TESTC
- TESTN
- TFLD
- 括弧
次の規則は、FASTREXX プロシージャー内の IF-THEN-ELSE ステートメントで条件を作成する場合にも当てはまります。
関連概念