[1375] システム変数について
投稿者:山
2009/06/29 17:53:00
ようやくシステム変数の組込みが終わりました。下記に示すような感じで
使用します。上にある#defineは、システムのヘッダーファイルになり。
#includeされます。 また今回は日本語プログラムにするとこんな感じに
なります。と言った感じのプログラムリストです。
システム変数は宣言だけが違い、多少特殊ですが普通の変数と同じように
使用できます。なおかつスレッドセーフで使用できます。
//-- システム変数定義ヘッダーファイル --------------
#define システム変数 sysval
#define 生成 1 // システム変数使用
#define 廃棄 2 // システム変数廃棄
#define クリア 3 // システム変数を初期化
#define リスト 4 // システム変数のリスト宣言
#define 辞書 5 // システム変数の辞書宣言(予約)
#define 昇順ソート 6 // システム変数をソート
#define 降順ソート 7 // システム変数をソート
#define システム変数検索 sysval_find
#define 線形 1 // システム変数リストを線形検索
#define 二分 2 // システム変数リストを二分検索
#define 辞書 3 // システム変数辞書検索(予約)
#define システム変数リスト挿入 sysval_push_list
#define システム変数リスト取出 sysval_pop_list
#define 先頭 1 // システム変数リストの先頭
#define 最後 2 // システム変数リストの最後
//-- 日本語定義ヘッダーファイル ------------------
#define メイン main
#define 表示 print
#define 文字列 string
#define 整数 int
//------------------------------------------------
//-- 日本語で書いた場合 -----------------
整数 表示(文字列 str);
整数 システム変数(文字列 str,整数 type);
整数 メイン()
{
システム変数("AAS001",生成);
システム変数("AAI001-ACI005",生成);
システム変数("BAD001-BCD005",生成);
システム変数("CAS001-CCS005",生成);
AAS001 = "testdata";
表示("AAS001 = " + AAS001 + "--\n\n");
AAI001[3][1] = 33;
BAD002[2] = 3.2;
CAS003[1] = "aaa";
表示("AAI001 = " + AAI001[3][1] + "--\n\n");
表示("BAD002 = " + BAD002[2] + "--\n\n");
表示("CAS003 = " + CAS003[1] + "--\n\n");
}
//-----------------------------------
↓
↓まったく同じプログラムで英語で書いた場合
↓
//-----------------------------------
int print(string str);
int sysval(string str,int type);
int main()
{
sysval("AAS001",CREATION);
sysval("AAI001-ACI005",CREATION);
sysval("BAD001-BCD005",CREATION);
sysval("CAS001-CCS005",CREATION);
AAS001 = "testdata";
print("AAS001 = " + AAS001 + "--\n\n");
AAI001[3][1] = 33;
BAD002[2] = 3.2;
CAS003[1] = "aaa";
print("AAI001 = " + AAI001[3][1] + "--\n\n");
print("BAD002 = " + BAD002[2] + "--\n\n");
print("CAS003 = " + CAS003[1] + "--\n\n");
}
-----------------------------------
↓
↓日本語版も英語版まったく同じ下記のコードになります。
↓
------------------------------------
1:*** 一般関数情報ダンプ ******************
1:int main()
1:*** 配列定数 数 = 0 **********
1:*** 文字列 数 = 23 ***
1: 0: "main"
1: 1: "AAS001"
1: 2: "sysval"
1: 3: "AAI001-ACI005"
1: 4: "sysval"
1: 5: "BAD001-BCD005"
1: 6: "sysval"
1: 7: "CAS001-CCS005"
1: 8: "sysval"
1: 9: "testdata"
1: 10: "AAS001 = "
1: 11: "--
"
1: 12: "print"
1: 13: "aaa"
1: 14: "AAI001 = "
1: 15: "--
"
1: 16: "print"
1: 17: "BAD002 = "
1: 18: "--
"
1: 19: "print"
1: 20: "CAS003 = "
1: 21: "--
"
1: 22: "print"
1:*** 使用予定のスタックサイズ = 1292
1:*** 関数コードのディスアセンブラ size = 223
1: 0 push_string_const 1
1: 3 push_int_1byte 1
1: 5 call_function 2 0 0 2
1: 14 pop
1: 15 push_string_const 3
1: 18 push_int_1byte 1
1: 20 call_function 4 0 0 2
1: 29 pop
1: 30 push_string_const 5
1: 33 push_int_1byte 1
1: 35 call_function 6 0 0 2
1: 44 pop
1: 45 push_string_const 7
1: 48 push_int_1byte 1
1: 50 call_function 8 0 0 2
1: 59 pop
1: 60 push_string_const 9
1: 63 pop_sysval_str 3-0-1
1: 68 push_string_const 10
1: 71 push_sysval_str 3-0-1
1: 76 add_string
1: 77 push_string_const 11
1: 80 add_string
1: 81 call_function 12 0 0 1
1: 90 pop
1: 91 push_int_1byte 33
1: 93 push_sysval_array 1-0-1
1: 98 push_int_1byte 3
1: 100 push_array_int 1
1: 102 push_int_1byte 1
1: 104 pop_array_int
1: 105 push_double_8byte 3.200000e+000
1: 114 push_sysval_array 2-52-2
1: 119 push_int_1byte 2
1: 121 pop_array_double
1: 122 push_string_const 13
1: 125 push_sysval_array 3-104-3
1: 130 push_int_1byte 1
1: 132 pop_array_string
1: 133 push_string_const 14
1: 136 push_sysval_array 1-0-1
1: 141 push_int_1byte 3
1: 143 push_array_int 1
1: 145 push_int_1byte 1
1: 147 push_array_int 0
1: 149 cast_int_to_string
1: 150 add_string
1: 151 push_string_const 15
1: 154 add_string
1: 155 call_function 16 0 0 1
1: 164 pop
1: 165 push_string_const 17
1: 168 push_sysval_array 2-52-2
1: 173 push_int_1byte 2
1: 175 push_array_double 0
1: 177 cast_double_to_string
1: 178 add_string
1: 179 push_string_const 18
1: 182 add_string
1: 183 call_function 19 0 0 1
1: 192 pop
1: 193 push_string_const 20
1: 196 push_sysval_array 3-104-3
1: 201 push_int_1byte 1
1: 203 push_array_string 0
1: 205 add_string
1: 206 push_string_const 21
1: 209 add_string
1: 210 call_function 22 0 0 1
1: 219 pop
1: 220 push_int_1byte 0
1: 222 return
1:*** 行情報 数 = 14 ***
1: 20: from 0 size 15
1: 21: from 15 size 15
1: 22: from 30 size 15
1: 23: from 45 size 15
1: 24: from 60 size 8
1: 25: from 68 size 23
1: 26: from 91 size 14
1: 27: from 105 size 17
1: 28: from 122 size 11
1: 29: from 133 size 32
1: 30: from 165 size 28
1: 31: from 193 size 27
1: 154: from 220 size 2
1: 32: from 222 size 1
1:*** end of main() --------------
--------------------------------------------------