ビット単位操作 (接頭部 NOT、2 項演算子 AND、2 項演算子 OR、およ び 2 項演算子 EXCLUSIVE OR) は、多くの場合、ライブラリー・ルーチンを呼び出すと評価されます。ただし、これらの操作は、次のいずれかの条件が真である場合に、ライブラリーが呼び出されずに処理されます。
特定の割り当て、式、および組み込み関数参照の場合は、コンパイラーがライブラリー・ルーチンの呼び出しを生成します。これらの呼び出しを回避すると、一般的にコードの実行速度が速くなります。
コンパイラーがこのような呼び出しを生成する時点を判断の助けとして、ライブラリー・ルーチンを使って変換が行われるときにはいつでも、コンパイラーがメッセージを生成します。インラインで生成されたコードを用いて実行される変換を表 27 に示します。
多くのストリング処理組み込み関数は、ライブラリー・ルーチンへの呼び出しを通じて評価されますが、一部はライブラリーを呼び出すことなく処理されます。表 28 では、これらの組み込み関数と、それらがインラインで処理される条件をリストします。
| ストリング関数 | コメントおよび条件 |
|---|---|
| BOOL | 3 番目の引数が定数の場合。また、最初の 2 つの引数は、どちらも bit(1) であるか、またはどちらも aligned bit(n) でなければなりません (n は 8、16、または 32)。関数はまた、ビット単位の 2 項演算に削減することができ、かつ両方の引数 aligned bit である場合には、インラインで処理されます。 |
| COPY | 最初の引数の型が character の場合。 |
| EDIT | 最初の引数が REAL FIXED BIN の場合、SIZE 条件は無効であり、2 番目の引数はすべて 9 からなる定数ストリングです。 |
| HIGH | 常時 |
| INDEX | 渡される引数が 2 つのみで、それらの型が character の場合。 |
| LENGTH | 常時 |
| LOW | 常時 |
| MAXLENGTH | 常時 |
| SEARCH | 渡される引数が 2 つのみで、それらの型が character の場合。 |
| SEARCHR | 渡される引数が 2 つのみで、それらの型が character の場合。 |
| SUBSTR | STRINGRANGE が無効の場合。 |
| TRANSLATE | 2 番目と 3 番目の引数が定数の場合。 |
| TRIM | 渡される引数が 1 つのみで、その型が character の場合。 |
| UNSPEC | 常時 |
| VERIFY | 渡される引数が 2 つのみで、それらの型が character の場合。 |
| VERIFYR | 渡される引数が 2 つのみで、それらの型が character の場合。 |