すでに似たような回答がありますが
書いてしまったので関数版を
西暦1年1月1日からの日数に換算して引き算するのはどうでしょう?
(下の例では0001/01/00からの日数を求める関数を作っています)
#module
#defcfunc getDay int arg_Year, int arg_Month, int arg_Day
dim DayTable, 12
DayTable = 0,31,59,90,120,151,181,212,243,273,304,334
//DayTable(n)=01/01から満n月までの日数の合計
//例: DayTable(1) = 31 満1月までの日数の合計
// DayTable(3) = 90 満3月までの日数の合計(31+28+31)
//年を日にちに換算
YearToDay = (arg_Year-1)*365//arg_Year年目はまだ365日に達していない
//うるう年の数(4の倍数かつ100の倍数ではない年を閏年、しかし400の倍数であれば閏年)
//あまりは切り捨て
LeapYear = (arg_Year/4) - arg_Year/100 + (arg_Year/400)
//arg_Year年が閏年でも02/28日をすぎていなければ加算しない
//(arg_Month<=2)はなくてもいいけど、あった方が早いかも
if ((arg_Year\4 == 0) && (arg_Month<=2) && ((DayTable(arg_Month-1)+arg_Day) <= 59)):LeapYear--
//求める日数は 365*年数分 + 閏年の分補正 + その年の01/01〜指定した日にちまでの日数
//例 getDay(2014,2,30)
// 2013*365 + 488(2014年までに閏年は488回) + 31(満1月) + 30(指定した日付が30日なので)
Day = YearToDay + LeapYear + DayTable(arg_Month-1) + arg_Day
return Day
#global
//西暦0001/01/00から現在までの日数
ToDay = getDay(gettime(0),gettime(1),gettime(3))
//西暦0001/01/00から2014/02/30までの日数
Day = getDay(2014,2,30)
mes (Day - ToDay)
関数を作りましたが、作らずにそのまま計算しても問題はありません
このプログラムでは2013/9/30→2014/2/30は153日でした
間違いはないと思うのですが、もしかしたら間違いがあるかもしれません
あと、2014年は閏年ではないので02/30は03/02と等しくなるようです
本来はここも2/30を指定した場合エラーを出すべきですが
このままにしておいても問題はないと思います
組み込み用
#module
#defcfunc getDay int arg_Year, int arg_Month, int arg_Day
dim DayTable, 12
DayTable = 0,31,59,90,120,151,181,212,243,273,304,334
YearToDay = (arg_Year-1)*365
LeapYear = (arg_Year>>2) - arg_Year/100 + arg_Year/400
if ((arg_Year\4 == 0) && (arg_Month<=2) && ((DayTable(arg_Month-1)+arg_Day) <= 59)):LeapYear--
return (YearToDay + LeapYear + DayTable(arg_Month-1) + arg_Day)
#global