PowerBuilder Function Trial Close Date gf_trial_close_date
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Function Name : gf_trial_close_date // Argument Name : as_dayname, Arg Type : String, Pass By : Value // ad_testdate, Arg Type : Date, Pass By : Value // Return Type : Date // // Purpose: returns the date that is the closest day name (as_dayname) // to as_testdate /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Arguments: as_dayname a valid name of a day (Sunday, Monday, ...) // ad_testdate any valid date // // Returns: date the date which is: // 1) the closest date to as_test date AND // 2) which has the same day name as as_dayname /////////////////////////////////////////////////////////////////////////////////////////////////////////////// Integer li_testdate Integer li_dayname Integer li_difference // Obtain the day number of ad_testdate and as_dayname li_testdate = DayNumber (ad_testdate) Choose Case as_dayname Case 'Sunday' li_dayname = 1 Case 'Monday' li_dayname = 2 Case 'Tuesday' li_dayname = 3 Case 'Wednesday' li_dayname = 4 Case 'Thursday' li_dayname = 5 Case 'Friday' li_dayname = 6 Case 'Saturday' li_dayname = 7 End Choose // If ad_testdate is already the same day name as as_dayname, then // return ad_testdate, else calculate the closest date. If li_dayname = li_testdate Then Return ad_testdate Else li_difference = li_dayname - li_testdate If li_difference < -3 Then li_difference = li_difference + 7 Else If li_difference > 3 Then li_difference = li_difference - 7 End If End If Return RelativeDate (ad_testdate, li_difference) End If |
Good Luck!