parm gpdate=1, delta=0, _rt_Date="_lftoday", entry="MaIn", month=1,day=1 if "!entry" = "DaTe2NuM" then setvar _fa_Tmp SETVAR(_fa_Yr, !gpdate) -1 setvar !_rt_Date _fa_Tmp*365+(_fa_Tmp/4)-(_fa_Tmp/100)+(_fa_Tmp/400) +!day setvar _fa_Tmp 0 while setvar (_fa_Tmp,_fa_Tmp + 1) < !month do setvar !_rt_Date !_rt_Date + ![STR(_fa_Mdays,(_fa_Tmp LSL 1),2)] endwhile if !month > 2 AND !_fa_YearIsLeap then setvar !_rt_Date !_rt_Date + 1 endif return # elseif "!entry" = "NuM2DaTe" then setvar _fa_Yr !_rt_Date / 366 xeq !hpfile _fa_Yr, delta, "_fa_Age2", "DaTe2NuM", 1, 1 setvar _fa_dtDiff _fa_Age1 - _fa_Age2 + 1 # echo Diff/age1/age2: !_fa_dtDiff, !_fa_Age1, !_fa_Age2 while _fa_dtDiff > 0 do setvar _fa_Decr 365 if !_fa_YearIsLeap then setvar _fa_Decr _fa_Decr + 1 endif setvar _fa_dtDiff _fa_dtDiff - _fa_Decr setvar _fa_Yr _fa_Yr + 1 endwhile setvar _fa_Yr _fa_Yr - 1 setvar _fa_Daysz _fa_dtDiff + _fa_Decr setvar _fa_T1 0 if !_fa_YearIsLeap then setvar _fa_T1 1 endif setvar _fa_T2 0 if _fa_Daysz > 59 + _fa_T1 then setvar _fa_T2 2 - _fa_T1 endif setvar _fa_Mday _fa_Daysz + _fa_T2 setvar _fa_Month ((_fa_Mday + 91)*100)/3055 setvar _fa_Mday (_fa_Mday + 91) - ((_fa_Month * 3055)/100) setvar _fa_Month _fa_Month - 2 setvar !_rt_Date "!_fa_Yr" + RHT("0!_fa_Month",2) + RHT("0!_fa_Mday",2) return # #-- Main, outer, block. else setvar _fa_YearIsLeap & "(!!_fa_Yr MOD 4=0) AND (!!_fa_Yr MOD 100 <>0 OR !!_fa_Yr MOD 400=0)" if !gpdate = 1 then setvar _lftoday ![RHT(hpdatef,4)+RHT("0!hpmonth",2)+RHT("0!hpdate",2)] else setvar _lftoday !gpdate endif setvar _fa_Month (_lftoday mod 10000)/100 setvar _fa_date (_lftoday mod 100) setvar _fa_Year (_lftoday / 10000) setvar _fa_Mdays '#312831303130313130313031' # xeq !hpfile _fa_Year, delta, "_fa_Age1", "DaTe2NuM", _fa_Month, _fa_date setvar _fa_Age1 _fa_Age1 + !delta xeq !hpfile _fa_Year, delta, "_fa_Age1", "NuM2DaTe", _fa_Month, _fa_date setvar !_rt_Date !_fa_Age1 if BOUND(traceon) AND traceon then echo The new date is: ![RHT("000!_fa_Age1",8)] *** else deletevar _fa_@ endif endif