#author("2018-01-05T15:00:11+09:00","","")
[[簡単言語]]
**NO_594_SUBR [#u12556e2]
モジュール。マイナーアップデートです
登録する時、番号が登録されてるか調べるようにしました
 #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
 ;変数をIDだけでも名前だけで識別してるわけでもなく
 ;IDを渡して返ってきた名前と引数で指定した名前が等しい時 指定が正しい。としています
 ;IDだけだと間違いやすく
 ;名前だけだと検索するのに時間がかかるので
 ;取得はめんどくさいですが
 ;二つのやり方のいいとこどりとなっています
 set_ID_sw_zero@label_manage
 ; x_label_init@label_manage "x",3,10
 ; x_label_init@label_manage "y",6,20
 x_label_search_init@label_manage "x",3,10
 x_label_search_init@label_manage "y",6,20
 x_label_search_init@label_manage "z",3,30;error
 dump@label_manage
 	l1=pre_get_x_label_value@label_manage("x",0)
 	l2=pre_get_x_label_value@label_manage("y",1)
 ;	l3=pre_get_x_label_value@label_manage("xx",3);error
 ;	l4=pre_get_x_label_value@label_manage("x",9);error
 	dump@label_manage
 sch1=label_search_from_ID@label_manage(3)
 mes "search "+sch1
 sch2=label_search_from_ID@label_manage(6)
 mes "search "+sch2
 sch3=label_search_from_ID@label_manage(9);error
 mes "search "+sch3
 mes "hit"+is_hit_after_label_search@label_manage("x",sch1)
 mes "hit"+is_hit_after_label_search@label_manage("xx",sch1);error
 mes "hit"+is_hit_after_label_search@label_manage("y",sch2)
 mes "hit"+is_hit_after_label_search@label_manage("z",sch3);error
 	v1=0
 	v2=0
 	v1=get_x_label_value@label_manage("x",3)
 	v2=get_x_label_value@label_manage("y",6)
 	v3=get_x_label_value@label_manage("z",9);error
 	dump@label_manage
 ;	sch1=var_search_from_ID@variable_manage(1)
 ;	mes "search "+sch1
 ;	hit1=is_hit_after_var_search@variable_manage("x",sch1)
 ;	mes "hit"+hit1
 ;	if (sch1!=-1)&&(hit1!=-1){
 ;		v1=get_x_var_value@variable_manage("x",sch1)
 ;	}
 ;	sch2=var_search_from_ID@variable_manage(6)
 ;	mes "search "+sch2
 ;	hit2=is_hit_after_var_search@variable_manage("y",sch2)
 ;	mes "hit"+hit2
 ;	if (sch2!=-1)&&(hit2!=-1){
 ;		v2=pre_get_x_var_value@variable_manage("y",sch2)
 ;	}
 	f1=100
 	set_x_label_value@label_manage "x",3,f1
 	f2=200
 	set_x_label_value@label_manage "y",6,f2
 	f3=300
 	set_x_label_value@label_manage "z",9,f3;error
 	dump@label_manage
 ;	sch1=var_search_from_ID@variable_manage(1)
 ;	mes "search "+sch1
 ;	hit1=is_hit_after_var_search@variable_manage("x",sch1)
 ;	mes "hit"+hit1
 ;	if (sch1!=-1)&&(hit1!=-1){
 ;;		v1=get_x_var_value@variable_manage("x",hit1)
 ;		pre_set_x_var_value@variable_manage "x",sch1,v1
 ;	}
 ;;	set_x_var_value@variable_manage "x",1,v1
 ;	sch2=var_search_from_ID@variable_manage(6)
 ;	mes "search "+sch2
 ;	hit2=is_hit_after_var_search@variable_manage("y",sch2)
 ;	mes "hit"+hit2
 ;	if (sch2!=-1)&&(hit2!=-1){
 ;;		v2=get_x_var_value@variable_manage("y",hit2)
 ;		pre_set_x_var_value@variable_manage "y",sch2,v2
 ;	}
 ;;	set_x_var_value@variable_manage "y",6,v2
 ;	mes v1
 ;	mes v2
 ;	dump@variable_manage
 ;	button "NEXT",*l_add
 ;	stop