算術文の最適化

可能な場合は常に、オペランドを 2 つ持つ単純な算術文を使用します。

算術文で最高の性能を引き出すための方法です。

可能な場合は常に、オペランドを 2 つ持つ単純な算術文を使用します。次の例は、長さ 4 バイトまでの COMP-5 および COMP-X のデータ項目に対して最適化される演算です。

 MOVE a TO b 
 ADD a TO b 
 SUBTRACT a FROM b 
 MULTIPLY a BY b 
 DIVIDE a INTO b 
 IF a condition b

ここで、

a は 4 バイトまでの長さの数字定数値、またはデータ項目です。

b は 4 バイトまでの長さの数字データ項目です。

その他のデータ項目では、このような単純な演算は複雑な命令よりも速いコードになりますが、COMP-5 または COMP-X の項目で得るほどの利点はありません。 3 つ以上のオペランドを含む、複雑な形式のこのような命令では、上記の単純な形式で得られるような効率的なコードは作成されません。

上記の動詞の GIVING 形式は使用しません。 必要に応じて、一時データ項目を作成し、単純な文をいくつか使用して同じ結果を得ます。 たとえば、次のようにします

 MOVE a TO c
 ADD b TO c

次の文は使用しません。

 ADD a TO b GIVING c

オペランドがすべて同じ型の場合は、GIVING 指定を含む文が最適化されます。

REMAINDER、ON SIZE ERROR、および CORRESPONDING 指定は使用しません。

上記の単純な演算を COMP-5 または COMP-X 項目に使用する場合は、ROUNDED 指定は使用しません。 他の状況では、ROUNDED 指定はパフォーマンスに影響を与えますが、独自のルーチンを使用して結果を四捨五入するよりは、ROUNDED を使用する方が一般的に速くなります。

算術文で、異なるサイズの項目は混合しません。たとえば、すべて 2 バイトの項目か、またはすべて 4 バイトの項目を使用してください。