f_get_month_days.srf 1009 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. $PBExportHeader$f_get_month_days.srf
  2. global type f_get_month_days from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_get_month_days (long arg_mth, ref long arg_ref_days, ref string arg_msg)
  6. end prototypes
  7. global function integer f_get_month_days (long arg_mth, ref long arg_ref_days, ref string arg_msg);Int rslt = 1
  8. Long ll_year,ll_month,ll_lastday
  9. Boolean ifyear = FALSE
  10. ll_month = Long(Right(String(arg_mth),2))
  11. IF Not (ll_month >= 1 AND ll_month <= 12) THEN
  12. arg_msg = '非法的月份'
  13. rslt = 0
  14. GOTO ext
  15. END IF
  16. ll_year = Long(Left(String(arg_mth),4))
  17. IF Mod(ll_year,4) <> 0 THEN
  18. ifyear = FALSE
  19. ELSEIF Mod(ll_year,100) <> 0 THEN
  20. ifyear = TRUE
  21. ELSEIF Mod(ll_year,400) <> 0 THEN
  22. ifyear = FALSE
  23. ELSE
  24. ifyear = TRUE
  25. END IF
  26. CHOOSE CASE ll_month
  27. CASE 1,3,5,7,8,10,12
  28. ll_lastday = 31
  29. CASE 2
  30. IF ifyear THEN
  31. ll_lastday = 29
  32. ELSE
  33. ll_lastday = 28
  34. END IF
  35. CASE 4,6,9,11
  36. ll_lastday = 30
  37. END CHOOSE
  38. arg_ref_days = ll_lastday
  39. ext:
  40. RETURN rslt
  41. end function