MOD ざざん

HSP_2014_FILE_get_two_youso_code.hsp

簡易言語 製作中に書いたモジュール
/* addとsubのTEST
sdim sc_C,2000
sc_C={"MN,&+LDI,        int,10
MN,&+DISP
MN,&+ST,        int,0x2000
MN,&+LDI,       int,20
MN,&+DISP
MN,&+ADD,       int,0x2000
MN,&+DISP
MN,&+LDI,       int,30
MN,&+DISP
MN,&+ST,        int,0x3000
MN,&+LDI,       int,50
MN,&+DISP
MN,&+SUB,       int,0x3000
MN,&+DISP"}
//*/
;sdim one_code,64,4096,2
;dim line4one_code,4096
;sc_C="abc\ncde,fff\naaa,bbb,ccc"
;sc_C="aaa,bbb,ccc,ddd,eee,fff"
;logmes ""+get_two_youso_code(sc_C,one_code,line4one_code)

#module m_get_two_youso_code
#defcfunc local trim_and_split var p_s,array p_ar,local loc_t_1st,local loc_t_2nd
                loc_t_1st=strtrim(p_s,3,' ')
                loc_t_2nd=strtrim(loc_t_1st,3,'\t')
        
;               sdim loc_u,256,64
                split loc_t_2nd,",",p_ar
                return stat

#defcfunc get_two_youso_code var p_src,array p_one_code,array p_line4one_code,local loc_read_line,local loc_code_index,local loc_s,local loc_t_1st,local loc_t_2nd,local loc_u,local loc_l_u,local loc_4cmp_mul2,local loc_4index

        sdim p_one_code,64,4096,2
        dim  p_line4one_code,4096
        loc_read_line=0
        loc_code_index=0
        notesel p_src
        
        repeat notemax
                noteget loc_s,loc_read_line
                sdim loc_u,256,64
                loc_l_u=trim_and_split@m_get_two_youso_code(loc_s,loc_u)
        
                if loc_l_u\2==1:dialog "get_two_youso_code内のerror\nこの行の要素の数が奇数です\n2要素で1単位なので要素の数は奇数にして下さい\nline:"+(loc_read_line+1)+" num:"+loc_l_u,1
                loc_4cmp_mul2=2
                loc_4index=0
                while loc_l_u >= loc_4cmp_mul2
                        p_one_code.loc_code_index.0=loc_u.loc_4index:loc_4index++
                        p_one_code.loc_code_index.1=loc_u.loc_4index:loc_4index++
                        p_line4one_code.loc_code_index=loc_read_line+1
                        loc_code_index++
                        loc_4cmp_mul2+=2
                wend
                loc_read_line++
        loop
/*      dump
        repeat 4096
                if p_one_code.cnt.0!=""{
                        logmes ""+cnt+",0:"+p_one_code.cnt.0
                        logmes ""+cnt+",1:"+p_one_code.cnt.1
                        logmes ""+cnt+",line:"+p_line4one_code.cnt
                }
        loop
//*/
return loc_code_index
#global

README