** m_mi_date : Miladi Tarih ** sh_date : Shemsi Tarih ( Iran Takvimi) private m_mi_date, ref_mi_date m_mi_date = date() set date to mdy private dupper, dlower, quitting store .f. to dupper, dlower, quitting public dmf(12) store 31 to dmf store 30 to dmf(7), dmf(8), dmf(9), dmf(10), dmf(11) store 29 to dmf(12) ref_mi_date = ctod("01/01/1993") private sh_year, mi_days, i sh_year = 1371 mi_days = 0 do case case m_mi_date>ref_mi_date mi_days = m_mi_date-ref_mi_date dupper = .t. case m_mi_date<ref_mi_date mi_days = ref_mi_date-m_mi_date dlower = .t. otherwise sh_date = '71/11/10' sh_month = 11 day_of_m = 10 return sh_date endcase i = 0 do case case dupper if mi_days>78 sh_year = 1372 mi_days = mi_days-78 ref_sh_date = '72/01/01' else quitting = .t. sh_year = 1371 do case case mi_days<=19 i = 10 mi_days = mi_days+11 case mi_days<=49 i = 11 mi_days = mi_days-19 otherwise i = 12 mi_days = mi_days-dmf(11)-19 endcase endif if mi_days>365 sh_year = sh_year+int((mi_days/365)) mi_days = mi_days-int((mi_days/365))*365-int((mi_days/365)/4) endif do while .not. quitting i = i+1 if mi_days<=dmf(i) quitting = .t. else mi_days = mi_days-dmf(i) endif enddo if mi_days<1 if i=1 i = 12 sh_year = sh_year-1 else i = i-1 endif mi_days = dmf(i)+mi_days endif case dlower quitting = .f. i = 10 if mi_days>287 i = 13 mi_days = mi_days-287 else quitting = .t. sh_year = 1371 if mi_days<11 mi_days = 11-mi_days else mi_days = mi_days-10 quitting2 = .f. do while .not. quitting2 i = i-1 if mi_days<=dmf(i) mi_days = dmf(i)-mi_days quitting2 = .t. else mi_days = mi_days-dmf(i) endif enddo mi_days = mi_days+1 endif endif if mi_days>365 sh_year = 1371-int((mi_days/365)) mi_days = mi_days-int((mi_days/365))*365-int((mi_days/365)/4) endif if .not. quitting do while .not. quitting i = i-1 if mi_days<=dmf(i) quitting = .t. else mi_days = mi_days-dmf(i) endif enddo mi_days = dmf(i)-mi_days+1 endif endcase sh_month = i day_of_m = mi_days sh_date = alltrim(str(sh_year))+'/'+iif(len(alltrim(str(i)))=1, '0', '')+alltrim(str(i))+'/'+iif(len(alltrim(str(day_of_m)))=1, '0', '')+alltrim(str(day_of_m)) *sh_date = chrtran(sh_date, '0123456789', '€‚ƒ„…†‡ˆ‰') *?substr(sh_date, 3) return substr(sh_date, 3) endfunc