「%EVAL関数」と「%SYSEVALF関数」を紹介していきます。
以下のプログラムと実行ログをご覧ください。
%put 10 + 200 ;
ログ 10 + 200 |
「10 + 200」 を計算して 「210」 とログに出力されることを期待しましたが、実際は文字がそのまま返されています。
このような場合、%EVAL関数や%SYSEVALF関数が使えます。
%EVAL( 演算内容 )
|
- 中に書かれた演算を実行する。ただし整数のみ。
- 割り算等で結果が小数になる場合は、小数部分が破棄されてしまう。
- 「2 = 2.0」や「a < b」のように値に小数や文字を含む場合、文字値として評価を行います。
(つまり「2」と「2.0」は異なる文字値として評価される)
%SYSEVALF( 演算内容 )
|
- 中に書かれた演算を実行する。浮動小数点の演算が可能。
- 浮動小数点の演算後、BEST32形式に変換された値が返される。
%EVAL関数の例
%put %eval( 10 + 200 ) ;
%put %eval( 1 < 2 ) ;
%put %eval( 2 = 2.0 ) ;
ログ210 1 0 |
補足 ・・・ 「1 < 2」 のような論理式の場合、論理式が真(true) の場合 「1」が返され、偽(false) の場合 「0」が返されます。
%SYSEVALF関数の例
%put %sysevalf( 0.1 + 0.2 ) ;
%put %sysevalf( 2 = 2.0 ) ; 0.3 1 |
2. マクロの登録と実行
3. 定位置パラメータ
4. キーワードパラメータ
5. クォート処理
6. クォート処理2
7. ループ処理
8. 条件分岐処理
9. ドット
10. &&
11. 演算評価
12. 補足
0 件のコメント:
コメントを投稿