$PBExportHeader$f_get_month_day.srf global type f_get_month_day from function_object end type forward prototypes global function integer f_get_month_day (long arg_mth, integer arg_type, ref datetime arg_ref_datetime, ref string arg_msg) end prototypes global function integer f_get_month_day (long arg_mth, integer arg_type, ref datetime arg_ref_datetime, ref string arg_msg);Int rslt = 1 Long ll_year,ll_month,ll_lastday Boolean ifyear = FALSE ll_year = Long(Left(String(arg_mth),4)) ll_month = Long(Right(String(arg_mth),2)) IF Not (ll_month >= 1 AND ll_month <= 12) THEN arg_msg = '非法的月份' rslt = 0 GOTO ext END IF CHOOSE CASE arg_type CASE 0 //当月第一天 arg_ref_datetime = datetime(date(string(ll_year,'0000') + '-'+string(ll_month,'00') + '-01'),time(0)) CASE 1 //当月最后一天 IF Mod(ll_year,4) <> 0 THEN ifyear = FALSE ELSEIF Mod(ll_year,100) <> 0 THEN ifyear = TRUE ELSEIF Mod(ll_year,400) <> 0 THEN ifyear = FALSE ELSE ifyear = TRUE END IF CHOOSE CASE ll_month CASE 1,3,5,7,8,10,12 ll_lastday = 31 CASE 2 IF ifyear THEN ll_lastday = 29 ELSE ll_lastday = 28 END IF CASE 4,6,9,11 ll_lastday = 30 END CHOOSE arg_ref_datetime = datetime(date(string(ll_year,'0000') + '-'+string(ll_month,'00') + '-'+string(ll_lastday,'00')),time('23:59:59')) END CHOOSE ext: RETURN rslt end function