forked from DonovanChan/fmfunctions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDatesFromLoop.calc
50 lines (43 loc) · 1.29 KB
/
DatesFromLoop.calc
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
Let ( [
start = GetAsDate ( startDate ) ;
dayOfWeek = DayOfWeek ( start ) ;
isWeekend =
Case (
omitWeekends ;
dayOfWeek = 7 or dayOfWeek = 1 ;
0
) ;
isOmitted = ValueCount ( FilterValues ( omitDateNumberList ; GetAsNumber ( start ) ) ) > 0 ;
result =
Case (
isWeekend or isOmitted ;
previousResults ;
List ( previousResults ; start )
) ;
resultCount = ValueCount ( result )
] ;
Case (
resultCount ≥ Abs ( numberOfDaysToReturn ) ;
result ;
DatesFromLoop (
start + If ( numberOfDaysToReturn < 0 ; -1 ; 1 ) ;
numberOfDaysToReturn ;
omitWeekends ;
omitDateNumberList ;
result
)
)
)
/* —————————————————————————————— //
NAME:
DatesFromLoop ( startDate ; numberOfDaysToReturn ; omitWeekends ; omitDateNumberList ; previousResults )
PURPOSE:
Performs recursive operation for DatesFromStart(). Returns list of dates as specified.
EXAMPLES:
DatesFromLoop ( "10/2/2010" ; 2 ; 1 ; 0 ; "10/1/2010" ) = "10/1/2010¶10/4/2010"
DatesFromLoop ( "10/2/2010" ; -2 ; 1 ; 0 ; "10/1/2010" ) = "10/1/2010¶9/30/2010"
HISTORY:
Created: 2010-Oct-15 12h11 PST — Donovan A. Chandler
NOTE:
omitHolidays parameter currently not supported.
*/