簡単言語

NO_599

cpxへの代入が定型的なので マクロで短くしました

#module mod_label i_name,i_ID,i_l_value
;i_nameラベル変数の名前
;i_nameラベル変数のID
;i_nameラベル変数の値、コマンド番号を格納する(だったようなw)
#modinit str p_name,int p_ID,int p_l_value
	i_name=p_name
	i_ID=p_ID
	i_l_value=p_l_value
	return
;モジュールのメンバ変数に値を代入。変数とか言って
;代入する命令がないので、定数を格納するかんじだったか、とりあえずで作ってほっといたかw
;getter
#modcfunc local get_i_name
	return i_name
#modcfunc local get_i_ID
	return i_ID
#modcfunc local get_i_l_value
	return i_l_value
#modfunc local set_i_l_value var _p4set_value
	i_l_value = _p4set_value
	return
#modfunc local dump
mes "dump_A"+i_l_value
mes "dump_B"+i_ID
return
#global
#module label_manage
#deffunc local set_ID_sw_zero
;	global fv_ID
	fv_ID=0
	return
#deffunc local x_label_search_init str _p_name,int _p_ID,int _p_l_value,local loc_r
	loc_r=label_search_from_ID_non_error_mes(_p_ID)
	if loc_r==-1{
		newmod o_label,mod_label,_p_name,_p_ID,_p_l_value
		fv_ID++
		return
	}
	dialog "your ID already rgst:"+_p_ID,1
	return
#defcfunc local label_search_from_ID_non_error_mes int _3p_ID,local loc_i,local loc_get_index
	for loc_i,0,fv_ID,1
		loc_get_index=get_i_ID@mod_label(o_label.loc_i)
;		mes "ID"+get_i_ID@mod_variable(o_var.loc_i)
		if loc_get_index==_3p_ID:return loc_i
	next
	return -1
#defcfunc local label_search_from_ID int _3p_ID,local loc_i,local loc_get_index
	for loc_i,0,fv_ID,1
		loc_get_index=get_i_ID@mod_label(o_label.loc_i)
;		mes "ID"+get_i_ID@mod_variable(o_var.loc_i)
		if loc_get_index==_3p_ID:return loc_i
	next
	dialog "don't find from labelID"+_3p_ID,1
	return -1
#defcfunc local is_hit_after_label_search str _4p_name,int _4p_i
	if _4p_i==-1:return -1
	rr_name=get_i_name@mod_label(o_label._4p_i)
	if rr_name==_4p_name:return 1
	dialog "don't hit from labelID"+_4p_i,1
;	dialog ""+rr_name,1
	return -1
#defcfunc local pre_get_x_label_value str __p_name,int __p_ID,local r_name
	r_name=get_i_name@mod_label(o_label.__p_ID)
	if r_name!=__p_name:return -1
	return get_i_l_value@mod_label(o_label.__p_ID)
#defcfunc local get_x_label_value str __p_name,int _p3b_ID,local loc_sch,local loc_hit
	loc_sch=label_search_from_ID@label_manage(_p3b_ID)
	loc_hit=is_hit_after_label_search@label_manage(__p_name,loc_sch)
	if (loc_sch!=-1){
	 	if (loc_hit!=-1){
			return pre_get_x_label_value@label_manage(__p_name,loc_sch)
		}
	}
	return -1
#deffunc local pre_set_x_label_value str __p_name,int __p_ID,var __p4set,local r_name
	r_name=get_i_name@mod_label(o_label.__p_ID)
	logmes ""+__p4set
	logmes ""+r_name
	if r_name!=__p_name:return -1
	set_i_l_value@mod_label o_label.__p_ID,__p4set
	return
#deffunc local set_x_label_value str _p3c_name,int _p3c_ID,var _p3c_4set,local loc_sch_b,local loc_hit_b
	loc_sch_b=label_search_from_ID@label_manage(_p3c_ID)
	loc_hit_b=is_hit_after_label_search@label_manage(_p3c_name,loc_sch_b)
	if (loc_sch_b!=-1){
	 	if (loc_hit_b!=-1){
			pre_set_x_label_value@label_manage _p3c_name,loc_sch_b,_p3c_4set
		}
	}
	return -1
#deffunc local dump
	dump@mod_label o_label.0
	dump@mod_label o_label.1
return
#global
#module mod_variable v_i_name,v_i_ID,v_i_v_value
#modinit str p_name,int p_ID,int p_v_value
	v_i_name=p_name
	v_i_ID=p_ID
	v_i_v_value=p_v_value
	return
#modcfunc local get_i_name
	return v_i_name
#modcfunc local get_i_ID
	return v_i_ID
#modcfunc local get_i_v_value
	return v_i_v_value
#modfunc local set_i_v_value var _p4set_value
	v_i_v_value = _p4set_value
	return
#modfunc local dump
mes "dump_A"+v_i_v_value
mes "dump_B"+v_i_ID
return
#global
#module variable_manage
#deffunc local set_ID_sw_zero
	fv_ID=0
	return
#deffunc local x_var_search_init str _p_name,int _p_ID,int _p_v_value,local loc_r
	loc_r=var_search_from_ID_non_error_mes(_p_ID)
	if loc_r==-1{
		newmod o_var,mod_variable,_p_name,_p_ID,_p_v_value
		fv_ID++
		return
	}
	dialog "your ID already rgst:"+_p_ID,1
	return
#deffunc local x_var_init str _p_name,int _p_ID,int _p_v_value
	newmod o_var,mod_variable,_p_name,_p_ID,_p_v_value
;	mes get_i_ID@mod_variable(o_var.fv_ID)
	fv_ID++
	return
#defcfunc local var_search_from_ID_non_error_mes int _3p_ID,local loc_i,local loc_get_index
	for loc_i,0,fv_ID,1
		loc_get_index=get_i_ID@mod_variable(o_var.loc_i)
;		mes "ID"+get_i_ID@mod_variable(o_var.loc_i)
		if loc_get_index==_3p_ID:return loc_i
	next
	return -1
#defcfunc local var_search_from_ID int _3p_ID,local loc_i,local loc_get_index
	for loc_i,0,fv_ID,1
		loc_get_index=get_i_ID@mod_variable(o_var.loc_i)
;		mes "ID"+get_i_ID@mod_variable(o_var.loc_i)
		if loc_get_index==_3p_ID:return loc_i
	next
	dialog "don't find from varID"+_3p_ID,1
	return -1
#defcfunc local is_hit_after_var_search str _4p_name,int _4p_i
	if _4p_i==-1:return -1
	rr_name=get_i_name@mod_variable(o_var._4p_i)
	if rr_name==_4p_name:return 1
	dialog "don't hit from varID"+_4p_i,1
;	dialog ""+rr_name,1
	return -1
#deffunc local set_x_var_value str _p3c_name,int _p3c_ID,var _p3c_4set,local loc_sch_b,local loc_hit_b
	loc_sch_b=var_search_from_ID@variable_manage(_p3c_ID)
	loc_hit_b=is_hit_after_var_search@variable_manage(_p3c_name,loc_sch_b)
	if (loc_sch_b!=-1){
		if (loc_hit_b!=-1){
			pre_set_x_var_value@variable_manage _p3c_name,loc_sch_b,_p3c_4set
		}
	}
	return -1
#defcfunc local pre_get_x_var_value str __p_name,int __p_ID,local r_name
	r_name=get_i_name@mod_variable(o_var.__p_ID)
	if r_name!=__p_name:return -1
	return get_i_v_value@mod_variable(o_var.__p_ID)
#deffunc local pre_set_x_var_value str __p_name,int __p_ID,var __p4set,local r_name
	r_name=get_i_name@mod_variable(o_var.__p_ID)
	logmes ""+__p4set
	logmes ""+r_name
	if r_name!=__p_name:return -1
	set_i_v_value@mod_variable o_var.__p_ID,__p4set
	return
#defcfunc local get_x_var_value str __p_name,int _p3b_ID,local loc_sch,local loc_hit
	loc_sch=var_search_from_ID@variable_manage(_p3b_ID)
	loc_hit=is_hit_after_var_search@variable_manage(__p_name,loc_sch)
	if (loc_sch!=-1){
		if (loc_hit!=-1){
			return pre_get_x_var_value@variable_manage(__p_name,loc_sch)
		}
	}
	return -1
#deffunc local dump
	dump@mod_variable o_var.0
	dump@mod_variable o_var.1
return
#global
dim pc_stack,500
n_pc_stack=0
hoge_pc=1

dim num_stack,500
repeat length(num_stack)
num_stack.cnt=-1
loop

//	line search のみ有効
flag_on_do=0
flag_on_line_search=1
flag_on_label_search=0

#define ctype l_avoid(%1) goto *l_a_%1
#define ctype catch_l_avoid(%1)*l_a_%1
#define ctype l_def(%1)*l_def_%1
#define ctype l_def_go(%1) *l_def_%1
#define switch_set_B my_pc_B
#define eq_B(%1) case %1:my_pc_B++:
#define eq_B_one(%1,%2) case %1:my_pc_B++:%2:goto *sw_begin:
;goto *l_def_A
;goto l_def(A)
;l_def(E):
;*l_def_B
;x_label_init@mod_label 1,"a",1 ;0
;x_label_init@mod_label 0,"aa1",11 ;1
;x_label_init@mod_label 0,"ab1",13 ;2
;x_label_init@mod_label 0,"ax1a",15 ;3
dim one_code,256
x=0
f_stop=0
//	ボタンによって選択される選択肢のID
selected_btnext="a"

#enum nop=0
#enum en_get_my_label
#enum en_button_A
#enum en_button_B
#enum en_cls0
#enum en_objsize
#enum en_pos
#enum en_mes
#enum en_stop
#enum en_goto
#enum en_calc

my_pc=1
my_pc_B=1
flag_on_l_search=1 
goto *@f
*search_l_end
flag_on_l_search=0
	goto *sw_begin
*@
	flag_on_line_search=1
if 0{
	*count_b
	flag_on_line_search=0
	flag_on_label_search=1
	flag_on_do=0
	label_pc=1
}
if 0{
	*count_c
	flag_on_line_search=0
	flag_on_label_search=0
	flag_on_do=1
	cmd_pc=1
}
*sw_begin
	await 1
;	logmes "BEGIN"
goto *sbr_end
*sbr_l_search
	if flag_on_line_search==1{
		pc_stack.hoge_pc=my_line:hoge_pc++
	}
	return
*sbr_lab_search
	if flag_on_label_search==1{
		if label_pc==num_stack.my_line{
			if my_pc_B==1{;logmes "途中C":
				my_pc_B=1:label_pc++:goto *sw_begin	}// label
		}
	}
	return
*sbr_do
	if flag_on_do==1{
;		logmes "途中D"
;		logmes ""+num_stack.my_line
;		logmes "pc"+cmd_pc
		if cmd_pc==num_stack.my_line{
;		logmes "途中inE1"
			my_pc_B=1:cmd_pc++:goto *sw_begin
		}
	}
	return
;*flag_clear
;	on_flag_on_line_search=0
;	on_flag_on_label_search=0
;	on_flag_on_do==0
;	return
	
*sbr_end



// case 1:
// def label
my_line=int(__LINE__)
;	on_flag_on_line_search=1
;	on_flag_on_label_search=1
;	on_flag_on_do=1

	gosub *sbr_l_search
	gosub *sbr_do

	if flag_on_label_search==1{
		if label_pc==num_stack.my_line{	logmes "途中A"
			switch my_pc_B			
				eq_B_one 1,cp1="a" :eq_B_one 2,cp2=1 :eq_B_one 3,cp3=label_pc
				eq_B 4:x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin
				eq_B 5:logmes "途中B":my_pc_B=1:label_pc++:goto *sw_begin
			swend
		}	
	}
	
;	gosub *flag_clear
	
// case 2:
// cls 0
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			logmes "途中inE2"
			if my_pc_B==1{cr_com=en_cls0:
				my_pc_B=1:cmd_pc++:goto *com_sw	}
;			cmd_pc++:	
;			cr_com=en_cls0:
			goto *com_sw
			goto *sw_begin
		}
	}
	
// case 3:
// objsize
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1=120 :eq_B_one 2,cp2=24
				eq_B 3:cr_com=en_objsize:
					my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
			swend
		}
	}		
// case 4:
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
// read label
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			logmes "inE4"
			switch my_pc_B
				eq_B_one 1,cp1="aa1" :eq_B_one 2,cp2=11
				eq_B 3:cr_com=en_get_my_label:
					goto *com_sw: goto *sw_begin
			swend
		}
	}	
// button	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			logmes "inE5"
			switch my_pc_B
				eq_B 4:cp1="X足す1":goto *sw_begin
				eq_B 5:bt_pc_1=my_label: goto *sw_begin
				eq_B 6:cr_com=en_button_A
					my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
			swend
		}
	}
// case 5:
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
// read label	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1="ab1" :eq_B_one 2,cp2=12
				eq_B 3:cr_com=en_get_my_label:
					goto *com_sw: goto *sw_begin
			swend
		}
	}	
// button
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B 4:cp1="X引く1":goto *sw_begin
				eq_B 5:bt_pc_2=my_label: goto *sw_begin
				eq_B 6:cr_com=en_button_B
					my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
			swend
		}
	}
// case 6:
// pos
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1=150 :eq_B_one 2,cp2=0
				eq_B 3:cr_com=en_pos
					my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
			swend
		}
	}
// case 7:
// mes
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B 1:cp1="ボタンを押してください":goto *sw_begin
				eq_B 2:cr_com=en_mes
					my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
			swend
		}
	}	
// case 8:
// stop
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			if my_pc_B==1{cr_com=en_stop
				my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin	}
		}
	}	
// case 9:"aa1"
// def label
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_do
	
	if flag_on_label_search==1{
		if label_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1="aa1" :eq_B_one 2,cp2=11 :eq_B_one 3,cp3=label_pc
				eq_B 4:x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin
			swend
		}
		if label_pc==num_stack.my_line{
;x_var_search_init@variable_manage "x",1,2
			switch my_pc_B
				eq_B_one 5,cp1="x" :eq_B_one 6,cp2=10 :eq_B_one 7,cp3=0
				eq_B 8:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin
			swend
		}
		if label_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 9,cp1="y" :eq_B_one 10,cp2=20 :eq_B_one 11,cp3=0
				eq_B 12:x_var_search_init@variable_manage cp1,cp2,cp3
					my_pc_B=1:label_pc++:goto *sw_begin
			swend
		}
	}
// case 10:
// calc
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
	//	変数値取得
	if flag_on_do==1{
;	v1=get_x_var_value@variable_manage("x",1)
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1="x" :eq_B_one 2,cp2=10
				eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
			swend
			switch my_pc_B
				eq_B_one 4,cp1="y" :eq_B_one 5,cp2=20
				eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
			swend
;			switch my_pc_B
;				eq_B 1:reg1=x:goto *sw_begin
;				eq_B 2:reg2=y:goto *sw_begin
;			swend
		}
	}	
	//	演算
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B 7:reg3=reg1+1:goto *sw_begin
				eq_B 8:reg2+=2:goto *sw_begin
				eq_B 9:cr_com=en_calc:goto *com_sw: goto *sw_begin
			swend
		}
	}	
	//	代入
	if flag_on_do==1{
;	set_x_var_value@variable_manage "x",1,v1
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 10,cp1="x" :eq_B_one 11,cp2=10 :eq_B_one 12,cp3=reg3
				eq_B 13:set_x_var_value@variable_manage cp1,cp2,cp3:goto *sw_begin
			swend
			switch my_pc_B
				eq_B_one 14,cp1="y" :eq_B_one 15,cp2=20 :eq_B_one 16,cp3=reg2
				eq_B 17:set_x_var_value@variable_manage cp1,cp2,cp3:
					logmes "通過check B"
					my_pc_B=1:cmd_pc++:goto *sw_begin
			swend
		}
	}
// case 11:
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search

// read label	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1="ax1a" :eq_B_one 2,cp2=21
				eq_B 3:cr_com=en_get_my_label:
					goto *com_sw: goto *sw_begin
			swend
		}
	}	
	
// goto
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			if my_pc_B==4{
				logmes ""+my_label:my_pc_B=1:cp1=my_label:cr_com=en_goto:goto *com_sw: goto *sw_begin	}
		}
	}
// case 12:"ab1"
// def label
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_do
	
	if flag_on_label_search==1{
		if label_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1="ab1" :eq_B_one 2,cp2=12 :eq_B_one 3,cp3=label_pc
				eq_B 4:x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin
				eq_B 5:my_pc_B=1:label_pc++:goto *sw_begin
			swend
		}
	}
// case 13:
// calc
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
	//	変数値取得
	if flag_on_do==1{
;	v1=get_x_var_value@variable_manage("x",1)
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1="x" :eq_B_one 2,cp2=10
				eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
			swend
			switch my_pc_B
				eq_B_one 4,cp1="y" :eq_B_one 5,cp2=20
				eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
			swend
;			switch my_pc_B
;				eq_B 1:reg1=x:goto *sw_begin
;				eq_B 2:reg2=y:goto *sw_begin
;			swend
		}
	}	
	//	演算
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B 7:reg3=reg1-1:goto *sw_begin
				eq_B 8:reg2-=2:goto *sw_begin
				eq_B 9:cr_com=en_calc:goto *com_sw: goto *sw_begin
			swend
		}
	}	
	//	代入
	if flag_on_do==1{
;	set_x_var_value@variable_manage "x",1,v1
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 10,cp1="x" :eq_B_one 11,cp2=10 :eq_B_one 12,cp3=reg3
				eq_B 13:set_x_var_value@variable_manage cp1,cp2,cp3:goto *sw_begin
			swend
			switch my_pc_B
				eq_B_one 14,cp1="y" :eq_B_one 15,cp2=20 :eq_B_one 16,cp3=reg2
				eq_B 17:set_x_var_value@variable_manage cp1,cp2,cp3:
					logmes "通過check B"
					my_pc_B=1:cmd_pc++:goto *sw_begin
			swend
		}
	}
// case 14
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
// read label
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1="ax1a" :eq_B_one 2,cp2=21
				eq_B 3:cr_com=en_get_my_label:
					goto *com_sw: goto *sw_begin
			swend
		}
	}	
// goto
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			if my_pc_B==4{logmes ""+my_label:my_pc_B=1:cp1=my_label:cr_com=en_goto:goto *com_sw: goto *sw_begin	}
		}
	}
// case 15:"ax1a"
// def label
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_do
	
	if flag_on_label_search==1{
		if label_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1="ax1a" :eq_B_one 2,cp2=21 :eq_B_one 3,cp3=label_pc
				eq_B 4:x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin
				eq_B 5:my_pc_B=1:label_pc++:goto *sw_begin
			swend
		}
	}
// case 16
// cls 0
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			if my_pc_B==1{cr_com=en_cls0:
				my_pc_B=1:cmd_pc++:goto *com_sw	:goto *sw_begin}
		}
	}
// case 17
// objsize
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1=120 :eq_B_one 2,cp2=24
				eq_B 3:cr_com=en_objsize:
					my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
			swend
		}
	}		
// case 18
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
// read label
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1="a" :eq_B_one 2,cp2=1
				eq_B 3:cr_com=en_get_my_label:
					goto *com_sw: goto *sw_begin
			swend
		}
	}	
// button
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B 4:cp1="NEXT":goto *sw_begin
				eq_B 5:bt_pc_1=my_label: goto *sw_begin
				eq_B 6:cr_com=en_button_A
					my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
			swend
		}
	}
// case 19
// pos
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1=150 :eq_B_one 2,cp2=0
				eq_B 3:cr_com=en_pos
					my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
			swend
		}
	}
// case 20
// mes
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			switch my_pc_B
				eq_B_one 1,cp1="x" :eq_B_one 2,cp2=10
				eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
			swend
			switch my_pc_B
				eq_B_one 4,cp1="y" :eq_B_one 5,cp2=20
				eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
			swend
			switch my_pc_B
			eq_B 7:cp1="Xの値は"+reg1+"です":goto *sw_begin
			eq_B 8:cr_com=en_mes
				my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
			swend
		}
	}	
// case 21
// stop
my_line=int(__LINE__)
	gosub *sbr_l_search
	gosub *sbr_lab_search
	
	if flag_on_do==1{
		if cmd_pc==num_stack.my_line{
			if my_pc_B==1{cr_com=en_stop
				logmes "in stop A"
				my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin	}
		}
	}	
//if flag_on_label_search==1:mes 6:goto *_2do
//	pc_stack dump	
if flag_on_line_search==1{
	mes "dump"
	repeat 30
	logmes ""+cnt+" "+pc_stack.cnt
	loop

	repeat 30
	if pc_stack.cnt!=0{
		num_stack(pc_stack.cnt)=cnt
	}
	loop

	repeat 500
	logmes ""+cnt+":"+num_stack.cnt
	loop
}
;mes 6
;	goto *sw_begin	
;}
if flag_on_line_search==1{
;	logmes "B"
	goto *count_b
}
if flag_on_label_search==1{
	goto *count_c
}
mes "stop"
stop

*com_sw
switch cr_com
case en_get_my_label:	my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
case en_button_A:	button cp1,*bt_hoge_1:swbreak
case en_button_B:	button cp1,*bt_hoge_2:swbreak
case en_cls0:	cls 0:swbreak
case en_objsize:objsize cp1,cp2:swbreak
case en_pos:	pos cp1,cp2:swbreak
case en_mes:	mes ""+cp1:swbreak
case en_stop:	f_stop=1:swbreak
case en_calc:	goto *sw_begin
case en_goto:	cmd_pc=cp1:goto *sw_begin
swend
if f_stop==1:f_stop=0:stop
goto *sw_begin

*get_my_label
	my_label=get_x_label_l_value@mod_label(cp1,cp2)
;	my_label=get_x_label_l_value@mod_label("a",0)
	goto *sw_begin
*bt_hoge_1
;	mes my_pc
;	mes bt_pc_1
	cmd_pc=bt_pc_1
	goto *sw_begin
*bt_hoge_2
	cmd_pc=bt_pc_2
	goto *sw_begin
*sw_end
	stop