サンプルスクリプトです
483 の改造
ラベル定義のタイミングでマクロ反映させました
LINE定義のタイミングでマクロ定義実行出来るかも
ここまで来たらアレですねw
変数名と添え字をマクロで管理出来るかもw
分類名と変数名と添え字をセットで管理しなきゃなので
モジュール化したほうがいいかも
dim var4stock_define_value,100,16 repeat 100 i=cnt repeat 16 var4stock_define_value.i.cnt=-1 loop loop var4stock_define_value_counter=0 if flag_on_define==1{ #define value_a 0 #define value_aa1 1 ; var4stock_define_value.label_pc.0=0 } //case 1: my_line=int(__LINE__) //x行でcaseみたいな処理 if flag_on_line_search==1{ pc_stack.hoge_pc=my_line:hoge_pc++ } if flag_on_label_search==1{ if label_pc==num_stack.my_line{ logmes "途中A" mes "途中A" if my_pc_B==1{my_pc_B++:cp1=1:goto *sw_begin } if my_pc_B==2{my_pc_B++:cp2="a":goto *sw_begin } if my_pc_B==3{my_pc_B++:cp3=label_pc:goto *sw_begin } if my_pc_B==4{my_pc_B++:x_label_init cp1,cp2,cp3:goto *sw_begin } if my_pc_B==5{ logmes "途中B":my_pc_B=1:label_pc++:goto *sw_begin }// label } } if flag_on_do==1{ logmes "途中D" logmes ""+num_stack.my_line logmes "pc"+cmd_pc if cmd_pc==num_stack.my_line{ //1 mes "途中inE1" my_pc_B=1:cmd_pc++:goto *sw_begin } } //case 4: my_line=int(__LINE__) //x行でcaseみたいな処理 if flag_on_line_search==1{ pc_stack.hoge_pc=my_line:hoge_pc++ } if flag_on_label_search==1{ if label_pc==num_stack.my_line{ def_call_counter=0 var4stock_define_value.label_pc.def_call_counter=value_aa1 def_call_counter++ ; var4stock_define_value.label_pc.0=value_aa1 // これも可 } } if flag_on_label_search==1{ if label_pc==num_stack.my_line{ if my_pc_B==1{my_pc_B=1:label_pc++:goto *sw_begin }// label } } ; if flag_on_define_call==1{ ; def_call_counter=0 ; var4stock_define_value.label_pc.def_call_counter=value_aa1 ; def_call_counter++ ; var4stock_define_value.label_pc.0=value_aa1 // これも可 ; } if flag_on_do==1{ if cmd_pc==num_stack.my_line{ //4 logmes "inE4" if my_pc_B==1{my_pc_B++:cp1="aa1":goto *sw_begin } if my_pc_B==2{my_pc_B++:cp2=var4stock_define_value.cmd_pc.0: goto *sw_begin } if my_pc_B==3{cr_com=en_get_my_label: my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin } } } //case 5: my_line=int(__LINE__) //x行でcaseみたいな処理 if flag_on_line_search==1{ pc_stack.hoge_pc=my_line:hoge_pc++ } if flag_on_label_search==1{ if label_pc==num_stack.my_line{ if my_pc_B==1{my_pc_B=1:label_pc++:goto *sw_begin } } } if flag_on_do==1{ if cmd_pc==num_stack.my_line{ //5 logmes "inE5" if my_pc_B==1{my_pc_B++:cp1="X足す1":goto *sw_begin } if my_pc_B==2{my_pc_B++:bt_pc_1=my_label: goto *sw_begin } if my_pc_B==3{cr_com=en_button_A my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin } } }