リンク
インターシステムズ(日) └日本語ドキュメント インターシステムズ(US) (有)エムブイビイ ダイナシステム(株) Googleグループ(英語) Googleグループ(日本語) George James Software cache'infoアーカイブ 【広告】
|
マクロを使ってプログラミングを効率化するUse macro.
Cache' Object Scriptではマクロを使用することができます。 マクロとは簡単に言うと、コンパイル時にプログラムを整形する機能です。コンパイル時に処理されるので、実行の際に性能は低下しません。 #defineによる置き換え
マクロの中で最も使われるものが、#defineと$$$による文字列の置き換えです。
他の言語でいうCONSTと同じイメージです。 #define 宣言名 置換文字 で宣言し $$$宣言名 をコンパイル時に置換文字に置き換えます。 // 消費税率 8% #define TaxRate 1.08 getTaxPrice(val) Public { Quit val * $$$TaxRate // この行は置き換えにより Quit val * 1.08 としてコンパイルされる } USER> Write $$getTaxPrice^test(1000)
getTaxPrice関数に1000を渡すと、TaxRateの倍率1.05倍した値となる、1080が返されました。1080 消費税率が10%に変わった場合は、#defineの値を 1.08 から 1.10 に変更してから、ルーチンをコンパイルする必要があります。 #defineは定数の置き換えだけではなく、関数の呼出をすることができます。
#; $H形式をYYYYMMDD形式に変換する
関数を置換対象とする場合、引数は%horoのように%付きで宣言する必要があります。#define Horo2YYYYMMDD(%horo) $ZDate(%horo,8) test() Public { Set h = $H Write $$$Horo2YYYYMMDD(h) // この行はコンパイル時に Write $ZDate(h,8) に置換される } さらに、#defineは定数や関数に限らず、コマンドまで含めて置換することができます。 #define WriteCConsoleLog(%lv,%msg) Do $ZU(9,"",%msg,0,%lv) test() Public { $$$WriteCConsoleLog(1,"書込みテスト") } インクルードファイルの作成と使用
マクロを利用してプログラミングを行うと、複数のプログラムで同じマクロの宣言を行う場面が数多く出てきます。
こういった場合にはインクルードファイルと呼ばれるものを作成し、そこに共通で使用する宣言を記述すると便利です。 インクルードファイルは、次のような手順で作成します。
インクルードファイルの例 インクルードファイル AAA.inc を各プログラムで参照するには、次のように記述します。
記述する場所は各ファイルの先頭です。 システムのマクロ
ドキュメントを参照していると、クラスの戻り値が正常かどうか判定している部分で$$$OKというマクロを使用していることがよくあります。
これは%occStatus.incというシステム・インクルードファイルで定義されています。 mac形式では自動的にインクルードされないので、必要であれば #define %occInclude とファイル先頭に書くとよいでしょう。 そのほかのマクロ
#Define以外にも多くのマクロが用意されています。マニュアルへ
個人的には以下のものをよく使います。
|