|
역시 [건우아빠]님께서 코치 한대로 만들었습니다.
아래의 양력->음력을 반대로
// 양력일자를 음력일자료 변환 // 양력일자 음력일자 // of_solarForlunar ( Ref String as_solarday, String as_lunarday ) integer i_rtn integer YoonYN // 윤년 여부를 저장하는 변수 1=윤년, 0=평년 integer ly, lm, ld // 전해온 음력 인자값을 저장할 년, 월, 일 임시변수 String sy, sm, sd // 계산된 양력 년, 월, 일을 저장할 변수 long y1, m1, i, j, y2, y3, leap // 임시변수 long l, m, n, o, mm, td String ls_lunarday String ls_akk[], ls_aweek[], ls_amd[]
// 작업할 일자 만들기 ls_lunarday = as_lunarday
/* 이부분은 함수처리 알아서 ls_lunarday = of_change_string(ls_lunarday,',','') ls_lunarday = of_change_string(ls_lunarday,'-','') ls_lunarday = of_change_string(ls_lunarday,'/','') ls_lunarday = of_change_string(ls_lunarday,'.','') ls_lunarday = of_change_string(ls_lunarday,' ','') */ if Len(ls_lunarday) <> 8 then of_msgbox('날자를 잘못입력했습니다.') return -1 end if sy = mid(ls_lunarday,1,4) sm = mid(ls_lunarday,5,2) sd = mid(ls_lunarday,7,2)
if integer(sy) < 1841 or 2043 < integer(sy) then of_msgbox('1841년 에서 2043년 까지 계산할수 없습니다.') return -1 end if
// 음력 윤달 상수와 요일, 말일 정의 of_solarTolunarconstant( ls_akk, ls_aweek, ls_amd ) //하단에 있습니다.
TRY ly = integer(sy) lm = integer(sm) ld = integer(sd) y1 = ly - 1841 // 1841년부터 현재가지 년도 차이 m1 = lm - 1 // 전월 leap = 0 // 전월이 윤달인지 검사 o = ( y1 * 12 ) + m1 if integer(ls_akk[o]) > 2 then YoonYn = of_IsYoonYear ( integer(ly) )//하단에 있습니다. leap = YoonYn end if // 전월의 일자 수 if leap = 1 then choose case integer(ls_akk[o]) case 3 ; mm = 29 case 4 ; mm = 30 case 5 ; mm = 29 case 6 ; mm = 30 end choose else choose case integer(ls_akk[o]) case 1 ; mm = 29 case 2 ; mm = 30 case 3 ; mm = 29 case 4 ; mm = 29 case 5 ; mm = 30 case 6 ; mm = 30 end choose end if // 전년도 까지의 알수 구하기 td = 0 for i = 1 to y1 l = ( i - 1 ) * 12 for j = 1 to 12 o = l + j choose case integer(ls_akk[o]) case 1 ; td = td + 29 case 2 ; td = td + 30 case 3 ; td = td + 58 case 4 ; td = td + 59 case 5 ; td = td + 59 case 6 ; td = td + 60 end choose next next //전월까지 일수 더하기 for j = 1 to m1 o = ( y1 * 12 ) + j choose case integer(ls_akk[o]) case 1 ; td = td + 29 case 2 ; td = td + 30 case 3 ; td = td + 58 case 4 ; td = td + 59 case 5 ; td = td + 59 case 6 ; td = td + 60 end choose next // 금일까지 더하기 td = td + ld + 22
y1 = 1840 do while true y1 ++ YoonYn = of_IsYoonYear ( integer(y1) ) //하단에 있습니다. if YoonYn = 1 then y2 = 366 else y2 = 365 end if
if td <= y2 then exit end if td = td - y2 loop
sy = String(y1) ls_amd[2] = String( y2 - 337 ) m1 = 0 do while true m1 ++ if td <= long(ls_amd[m1]) then exit end if td = td - long(ls_amd[m1]) loop
sm = String( m1 ) sd = String( td ) y3 = long ( sy ) td = ( y3 * 365 ) + long( y3 / 4 ) - long( y3 / 100 ) + long( y3 / 400 ) for i = 1 to long ( sm ) td = td + long (ls_amd[i]) next
td = td + long ( sd )
as_solarday = String(y3,'0000') as_solarday += String(long(sm),'00') as_solarday += String(long(sd),'00') CATCH (RunTimeError Err) i_rtn = of_systemerrordisplay ( Err ) // 이부분은 양략->음력 부분에 있습니다. as_lunarday = '' END TRY return i_rtn //===========================================
//of_solarTolunarconstant( ref string as_akk[], ref string as_aweek[], ref string as_amd[] ) String ls_kk, ls_week, ls_md String ls_akk[], ls_aweek[], ls_amd[] //1841 ls_kk = "1,2,4,1,1,2,1,2,1,2,2,1," ls_kk += "2,2,1,2,1,1,2,1,2,1,2,1," ls_kk += "2,2,2,1,2,1,4,1,2,1,2,1," ls_kk += "2,2,1,2,1,2,1,2,1,2,1,2," ls_kk += "1,2,1,2,2,1,2,1,2,1,2,1," ls_kk += "2,1,2,1,5,2,1,2,2,1,2,1," ls_kk += "2,1,1,2,1,2,1,2,2,2,1,2," ls_kk += "1,2,1,1,2,1,2,1,2,2,2,1," ls_kk += "2,1,2,3,2,1,2,1,2,1,2,2," ls_kk += "2,1,2,1,1,2,1,1,2,2,1,2," //1851 ls_kk += "2,2,1,2,1,1,2,1,2,1,5,2," ls_kk += "2,1,2,2,1,1,2,1,2,1,1,2," ls_kk += "2,1,2,2,1,2,1,2,1,2,1,2," ls_kk += "1,2,1,2,1,2,5,2,1,2,1,2," ls_kk += "1,1,2,1,2,2,1,2,2,1,2,1," ls_kk += "2,1,1,2,1,2,1,2,2,2,1,2," ls_kk += "1,2,1,1,5,2,1,2,1,2,2,2," ls_kk += "1,2,1,1,2,1,1,2,2,1,2,2," ls_kk += "2,1,2,1,1,2,1,1,2,1,2,2," ls_kk += "2,1,6,1,1,2,1,1,2,1,2,2," //1861 ls_kk += "1,2,2,1,2,1,2,1,2,1,1,2," ls_kk += "2,1,2,1,2,2,1,2,2,3,1,2," ls_kk += "1,2,2,1,2,1,2,2,1,2,1,2," ls_kk += "1,1,2,1,2,1,2,2,1,2,2,1," ls_kk += "2,1,1,2,4,1,2,2,1,2,2,1," ls_kk += "2,1,1,2,1,1,2,2,1,2,2,2," ls_kk += "1,2,1,1,2,1,1,2,1,2,2,2," ls_kk += "1,2,2,3,2,1,1,2,1,2,2,1," ls_kk += "2,2,2,1,1,2,1,1,2,1,2,1," ls_kk += "2,2,2,1,2,1,2,1,1,5,2,1," //1871 ls_kk += "2,2,1,2,2,1,2,1,2,1,1,2," ls_kk += "1,2,1,2,2,1,2,1,2,2,1,2," ls_kk += "1,1,2,1,2,4,2,1,2,2,1,2," ls_kk += "1,1,2,1,2,1,2,1,2,2,2,1," ls_kk += "2,1,1,2,1,1,2,1,2,2,2,1," ls_kk += "2,2,1,1,5,1,2,1,2,2,1,2," ls_kk += "2,2,1,1,2,1,1,2,1,2,1,2," ls_kk += "2,2,1,2,1,2,1,1,2,1,2,1," ls_kk += "2,2,4,2,1,2,1,1,2,1,2,1," ls_kk += "2,1,2,2,1,2,2,1,2,1,1,2," //1881 ls_kk += "1,2,1,2,1,2,5,2,2,1,2,1," ls_kk += "1,2,1,2,1,2,1,2,2,1,2,2," ls_kk += "1,1,2,1,1,2,1,2,2,2,1,2," ls_kk += "2,1,1,2,3,2,1,2,2,1,2,2," ls_kk += "2,1,1,2,1,1,2,1,2,1,2,2," ls_kk += "2,1,2,1,2,1,1,2,1,2,1,2," ls_kk += "2,2,1,5,2,1,1,2,1,2,1,2," ls_kk += "2,1,2,2,1,2,1,1,2,1,2,1," ls_kk += "2,1,2,2,1,2,1,2,1,2,1,2," ls_kk += "1,5,2,1,2,2,1,2,1,2,1,2," //1891 ls_kk += "1,2,1,2,1,2,1,2,2,1,2,2," ls_kk += "1,1,2,1,1,5,2,2,1,2,2,2," ls_kk += "1,1,2,1,1,2,1,2,1,2,2,2," ls_kk += "1,2,1,2,1,1,2,1,2,1,2,2," ls_kk += "2,1,2,1,5,1,2,1,2,1,2,1," ls_kk += "2,2,2,1,2,1,1,2,1,2,1,2," ls_kk += "1,2,2,1,2,1,2,1,2,1,2,1," ls_kk += "2,1,5,2,2,1,2,1,2,1,2,1," ls_kk += "2,1,2,1,2,1,2,2,1,2,1,2," ls_kk += "1,2,1,1,2,1,2,5,2,2,1,2," //1901 ls_kk += "1,2,1,1,2,1,2,1,2,2,2,1," ls_kk += "2,1,2,1,1,2,1,2,1,2,2,2," ls_kk += "1,2,1,2,3,2,1,1,2,2,1,2," ls_kk += "2,2,1,2,1,1,2,1,1,2,2,1," ls_kk += "2,2,1,2,2,1,1,2,1,2,1,2," ls_kk += "1,2,2,4,1,2,1,2,1,2,1,2," ls_kk += "1,2,1,2,1,2,2,1,2,1,2,1," ls_kk += "2,1,1,2,2,1,2,1,2,2,1,2," ls_kk += "1,5,1,2,1,2,1,2,2,2,1,2," ls_kk += "1,2,1,1,2,1,2,1,2,2,2,1," //1911 ls_kk += "2,1,2,1,1,5,1,2,2,1,2,2," ls_kk += "2,1,2,1,1,2,1,1,2,2,1,2," ls_kk += "2,2,1,2,1,1,2,1,1,2,1,2," ls_kk += "2,2,1,2,5,1,2,1,2,1,1,2," ls_kk += "2,1,2,2,1,2,1,2,1,2,1,2," ls_kk += "1,2,1,2,1,2,2,1,2,1,2,1," ls_kk += "2,3,2,1,2,2,1,2,2,1,2,1," ls_kk += "2,1,1,2,1,2,1,2,2,2,1,2," ls_kk += "1,2,1,1,2,1,5,2,2,1,2,2," ls_kk += "1,2,1,1,2,1,1,2,2,1,2,2," //1921 ls_kk += "2,1,2,1,1,2,1,1,2,1,2,2," ls_kk += "2,1,2,2,3,2,1,1,2,1,2,2," ls_kk += "1,2,2,1,2,1,2,1,2,1,1,2," ls_kk += "2,1,2,1,2,2,1,2,1,2,1,1," ls_kk += "2,1,2,5,2,1,2,2,1,2,1,2," ls_kk += "1,1,2,1,2,1,2,2,1,2,2,1," ls_kk += "2,1,1,2,1,2,1,2,2,1,2,2," ls_kk += "1,5,1,2,1,1,2,2,1,2,2,2," ls_kk += "1,2,1,1,2,1,1,2,1,2,2,2," ls_kk += "1,2,2,1,1,5,1,2,1,2,2,1," //1931 ls_kk += "2,2,2,1,1,2,1,1,2,1,2,1," ls_kk += "2,2,2,1,2,1,2,1,1,2,1,2," ls_kk += "1,2,2,1,6,1,2,1,2,1,1,2," ls_kk += "1,2,1,2,2,1,2,2,1,2,1,2," ls_kk += "1,1,2,1,2,1,2,2,1,2,2,1," ls_kk += "2,1,4,1,2,1,2,1,2,2,2,1," ls_kk += "2,1,1,2,1,1,2,1,2,2,2,1," ls_kk += "2,2,1,1,2,1,4,1,2,2,1,2," ls_kk += "2,2,1,1,2,1,1,2,1,2,1,2," ls_kk += "2,2,1,2,1,2,1,1,2,1,2,1," //1941 ls_kk += "2,2,1,2,2,4,1,1,2,1,2,1," ls_kk += "2,1,2,2,1,2,2,1,2,1,1,2," ls_kk += "1,2,1,2,1,2,2,1,2,2,1,2," ls_kk += "1,1,2,4,1,2,1,2,2,1,2,2," ls_kk += "1,1,2,1,1,2,1,2,2,2,1,2," ls_kk += "2,1,1,2,1,1,2,1,2,2,1,2," ls_kk += "2,5,1,2,1,1,2,1,2,1,2,2," ls_kk += "2,1,2,1,2,1,1,2,1,2,1,2," ls_kk += "2,2,1,2,1,2,3,2,1,2,1,2," ls_kk += "2,1,2,2,1,2,1,1,2,1,2,1," //1951 ls_kk += "2,1,2,2,1,2,1,2,1,2,1,2," ls_kk += "1,2,1,2,4,2,1,2,1,2,1,2," ls_kk += "1,2,1,1,2,2,1,2,2,1,2,2," ls_kk += "1,1,2,1,1,2,1,2,2,1,2,2," ls_kk += "2,1,4,1,1,2,1,2,1,2,2,2," ls_kk += "1,2,1,2,1,1,2,1,2,1,2,2," ls_kk += "2,1,2,1,2,1,1,5,2,1,2,2," ls_kk += "1,2,2,1,2,1,1,2,1,2,1,2," ls_kk += "1,2,2,1,2,1,2,1,2,1,2,1," ls_kk += "2,1,2,1,2,5,2,1,2,1,2,1," //1961 ls_kk += "2,1,2,1,2,1,2,2,1,2,1,2," ls_kk += "1,2,1,1,2,1,2,2,1,2,2,1," ls_kk += "2,1,2,3,2,1,2,1,2,2,2,1," ls_kk += "2,1,2,1,1,2,1,2,1,2,2,2," ls_kk += "1,2,1,2,1,1,2,1,1,2,2,1," ls_kk += "2,2,5,2,1,1,2,1,1,2,2,1," ls_kk += "2,2,1,2,2,1,1,2,1,2,1,2," ls_kk += "1,2,2,1,2,1,5,2,1,2,1,2," ls_kk += "1,2,1,2,1,2,2,1,2,1,2,1," ls_kk += "2,1,1,2,2,1,2,1,2,2,1,2," //1971 ls_kk += "1,2,1,1,5,2,1,2,2,2,1,2," ls_kk += "1,2,1,1,2,1,2,1,2,2,2,1," ls_kk += "2,1,2,1,1,2,1,1,2,2,2,1," ls_kk += "2,2,1,5,1,2,1,1,2,2,1,2," ls_kk += "2,2,1,2,1,1,2,1,1,2,1,2," ls_kk += "2,2,1,2,1,2,1,5,2,1,1,2," ls_kk += "2,1,2,2,1,2,1,2,1,2,1,1," ls_kk += "2,2,1,2,1,2,2,1,2,1,2,1," ls_kk += "2,1,1,2,1,6,1,2,2,1,2,1," ls_kk += "2,1,1,2,1,2,1,2,2,1,2,2," //1981 ls_kk += "1,2,1,1,2,1,1,2,2,1,2,2," ls_kk += "2,1,2,3,2,1,1,2,2,1,2,2," ls_kk += "2,1,2,1,1,2,1,1,2,1,2,2," ls_kk += "2,1,2,2,1,1,2,1,1,5,2,2," ls_kk += "1,2,2,1,2,1,2,1,1,2,1,2," ls_kk += "1,2,2,1,2,2,1,2,1,2,1,1," ls_kk += "2,1,2,2,1,5,2,2,1,2,1,2," ls_kk += "1,1,2,1,2,1,2,2,1,2,2,1," ls_kk += "2,1,1,2,1,2,1,2,2,1,2,2," ls_kk += "1,2,1,1,5,1,2,1,2,2,2,2," //1991 ls_kk += "1,2,1,1,2,1,1,2,1,2,2,2," ls_kk += "1,2,2,1,1,2,1,1,2,1,2,2," ls_kk += "1,2,5,2,1,2,1,1,2,1,2,1," ls_kk += "2,2,2,1,2,1,2,1,1,2,1,2," ls_kk += "1,2,2,1,2,2,1,5,2,1,1,2," ls_kk += "1,2,1,2,2,1,2,1,2,2,1,2," ls_kk += "1,1,2,1,2,1,2,2,1,2,2,1," ls_kk += "2,1,1,2,3,2,2,1,2,2,2,1," ls_kk += "2,1,1,2,1,1,2,1,2,2,2,1," ls_kk += "2,2,1,1,2,1,1,2,1,2,2,1," //2001 ls_kk += "2,2,2,3,2,1,1,2,1,2,1,2," ls_kk += "2,2,1,2,1,2,1,1,2,1,2,1," ls_kk += "2,2,1,2,2,1,2,1,1,2,1,2," ls_kk += "1,5,2,2,1,2,1,2,2,1,1,2," ls_kk += "1,2,1,2,1,2,2,1,2,2,1,2," ls_kk += "1,1,2,1,2,1,5,2,2,1,2,2," ls_kk += "1,1,2,1,1,2,1,2,2,2,1,2," ls_kk += "2,1,1,2,1,1,2,1,2,2,1,2," ls_kk += "2,2,1,1,5,1,2,1,2,1,2,2," ls_kk += "2,1,2,1,2,1,1,2,1,2,1,2," //2011 ls_kk += "2,1,2,2,1,2,1,1,2,1,2,1," ls_kk += "2,1,6,2,1,2,1,1,2,1,2,1," ls_kk += "2,1,2,2,1,2,1,2,1,2,1,2," ls_kk += "1,2,1,2,1,2,1,2,5,2,1,2," ls_kk += "1,2,1,1,2,1,2,2,2,1,2,2," ls_kk += "1,1,2,1,1,2,1,2,2,1,2,2," ls_kk += "2,1,1,2,3,2,1,2,1,2,2,2," ls_kk += "1,2,1,2,1,1,2,1,2,1,2,2," ls_kk += "2,1,2,1,2,1,1,2,1,2,1,2," ls_kk += "2,1,2,5,2,1,1,2,1,2,1,2," //2021 ls_kk += "1,2,2,1,2,1,2,1,2,1,2,1," ls_kk += "2,1,2,1,2,2,1,2,1,2,1,2," ls_kk += "1,5,2,1,2,1,2,2,1,2,1,2," ls_kk += "1,2,1,1,2,1,2,2,1,2,2,1," ls_kk += "2,1,2,1,1,5,2,1,2,2,2,1," ls_kk += "2,1,2,1,1,2,1,2,1,2,2,2," ls_kk += "1,2,1,2,1,1,2,1,1,2,2,2," ls_kk += "1,2,2,1,5,1,2,1,1,2,2,1," ls_kk += "2,2,1,2,2,1,1,2,1,1,2,2," ls_kk += "1,2,1,2,2,1,2,1,2,1,2,1," //2031 ls_kk += "2,1,5,2,1,2,2,1,2,1,2,1," ls_kk += "2,1,1,2,1,2,2,1,2,2,1,2," ls_kk += "1,2,1,1,2,1,5,2,2,2,1,2," ls_kk += "1,2,1,1,2,1,2,1,2,2,2,1," ls_kk += "2,1,2,1,1,2,1,1,2,2,1,2," ls_kk += "2,2,1,2,1,4,1,1,2,1,2,2," ls_kk += "2,2,1,2,1,1,2,1,1,2,1,2," ls_kk += "2,2,1,2,1,2,1,2,1,1,2,1," ls_kk += "2,2,1,2,5,2,1,2,1,2,1,1," ls_kk += "2,1,2,2,1,2,2,1,2,1,2,1," //2041 ls_kk += "2,1,1,2,1,2,2,1,2,2,1,2," ls_kk += "1,5,1,2,1,2,1,2,2,2,1,2," ls_kk += "1,2,1,1,2,1,1,2,2,1,2,2" ls_week = "일,월,화,수,목,금,토" ls_md = "31,0,31,30,31,30,31,31,30,31,30,31" // String을 배열로 변경 of_StringToArray(ls_kk, ',', ls_akk ) of_StringToArray(ls_week, ',', ls_aweek) of_StringToArray(ls_md, ',', ls_amd )
as_akk = ls_akk as_aweek = ls_aweek as_amd = ls_amd
return 0
//=============================================
// 윤년인지를 판단하는 함수 // integer of_IsYoonYear ( ai_Year ) integer i_rtn if mod(ai_Year,4 ) <> 0 then i_rtn = 0 elseif mod(ai_Year,100) <> 0 then i_rtn = 1 elseif mod(ai_Year,400) <> 0 then i_rtn = 0 else i_rtn = 1 end if
return i_rtn |