Rational Developer for System z
PL/I for Windows, Version 7.6, プログラミング・ガイド

ライブラリー・ルーチンの呼び出しの回避

ビット単位操作 (接頭部 NOT、2 項演算子 AND、2 項演算子 OR、およ び 2 項演算子 EXCLUSIVE OR) は、多くの場合、ライブラリー・ルーチンを呼び出すと評価されます。ただし、これらの操作は、次のいずれかの条件が真である場合に、ライブラリーが呼び出されずに処理されます。

特定の割り当て、式、および組み込み関数参照の場合は、コンパイラーがライブラリー・ルーチンの呼び出しを生成します。これらの呼び出しを回避すると、一般的にコードの実行速度が速くなります。

コンパイラーがこのような呼び出しを生成する時点を判断の助けとして、ライブラリー・ルーチンを使って変換が行われるときにはいつでも、コンパイラーがメッセージを生成します。インラインで生成されたコードを用いて実行される変換を表 27 に示します。

表 27. 変換がインラインで処理される条件
ターゲット ソース 条件
fixed bin(p1,q1)
fixed bin(p2,q2)
float(p2)
bit(1)
bit(n) aligned
char(1)
pic'(n)9'
pic'(n)Z(m)9'
常時
SIZE が無効の場合
常時
n が既知であり
n <= 31 の場合

CONV が無効の場合
n <= 6 の場合

n + m <= 6 の場合
fixed dec(p1,q1) fixed dec(p2,q2) 特に高速なライブラリー・ルーチンを使用して実行される
float(p1)
fixed bin(p2,q2)
float(p2)
bit(1)
bit(n) aligned
char(1)
pic'(n)9'
pic'(n)Z(m)9'
常時
常時
常時
n が既知であり
n <= 31 の場合

CONV が無効の場合
n <= 6 の場合

n + m <= 6 の場合
pictured fixed pictured fixed ピクチャーが一致する場合
pictured float pictured float ピクチャーが一致する場合
char
char nonvarying
char varying
char varyingz
pictured fixed
pictured float
pictured char
常時
常時
常時
常時
常時
常時
pictured char pictured char ピクチャーが一致する場合
bit(1) nonvarying bit(1) nonvarying 常時
bit(n) nonvarying bit(m) nonvarying 注参照
注:
以下のすべてが適用される場合
1) ソースとターゲットはバイト整合
2) n と m は既知
3) mod(m,8)=0 または n=m またはソースが定数
4) mod(n,8)=0 またはターゲットが STATIC 属性、AUTOMATIC 属性、
または CONTROLLED 属性を持つスカラー

多くのストリング処理組み込み関数は、ライブラリー・ルーチンへの呼び出しを通じて評価されますが、一部はライブラリーを呼び出すことなく処理されます。表 28 では、これらの組み込み関数と、それらがインラインで処理される条件をリストします。

表 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 の場合。

Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)