Function Week Of Month
&& FUNCTION WeekOfMonth
&& PARAMETERS _Date,_Mode
&& Nilai RETURN tergantung PARAMETER _Mode
&& jika _Mode=0 Nilai RETURN Numerik, yaitu : -1,1,2,3,4,5
&& jika _Mode=1 Nilai RETURN karakter, yaitu :
&& "" jika error atau
&& "1'st of MonthName" atau "2'nd of MonthName" dst s/d "5'th of MonthName"
&& jika _Mode= 2 dst Nilai RETURN karakter seperti pada _Mode=1 tapi ada tambahan bulan/tahun
FUNCTION WeekOfMonth
PARAMETERS _Date,_Mode
PRIVATE _Date,_Hr,_Bl,_Th,_DateTest,_MingguKe,_Balik,_Mode
IF VARTYPE(_Mode)<>"N"
_Mode=0
ENDIF
IF VARTYPE(_Date)<>"D"
RETURN IIF(_Mode=0,-1,"")
ENDIF
_SetDate=SET("Date")
_SetCentury=SET("CENTURY")
SET DATE ITALIAN
SET CENTURY ON
_Hr=DAY(_Date)
_Bl=MONTH(_Date)
_Th=YEAR(_Date)
_DateTest=CTOD("01"+"-"+PADL(_Bl,2,"0")+"-"+PADL(_Th,4,"0"))
_MingguKe=1
DO WHILE _DateTest<_Date
_DateTest=_DateTest+1
IF DOW(_DateTest)=1
_MingguKe=_MingguKe+1
ENDIF
ENDDO
IF !EMPTY(_SetDate)
SET DATE &_SetDate
ENDIF
IF !EMPTY(_SetCentury)
SET CENTURY &_SetCentury
ENDIF
_Balik=-1
DO CASE
CASE _Mode=1
DO CASE
CASE _MingguKe=1
_Balik="1'st of "+CMONTH(_Date)
CASE _MingguKe=2
_Balik="2'nd of "+CMONTH(_Date)
CASE _MingguKe=3
_Balik="3'th of "+CMONTH(_Date)
CASE _MingguKe=4
_Balik="4'th of "+CMONTH(_Date)
OTHERWISE
_Balik="5'th of "+CMONTH(_Date)
ENDCASE
CASE _Mode=2
DO CASE
CASE _MingguKe=1
_Balik=CMONTH(_Date)+" 1'st"
CASE _MingguKe=2
_Balik=CMONTH(_Date)+" 2'nd"
CASE _MingguKe=3
_Balik=CMONTH(_Date)+" 3'th"
CASE _MingguKe=4
_Balik=CMONTH(_Date)+" 4'th"
OTHERWISE
_Balik=CMONTH(_Date)+" 5'th"
ENDCASE
CASE _Mode=3
DO CASE
CASE _MingguKe=1
_Balik=PADL(_Th,4,"0")+" "+CMONTH(_Date)+" 1'st"
CASE _MingguKe=2
_Balik=PADL(_Th,4,"0")+" "+CMONTH(_Date)+" 2'nd"
CASE _MingguKe=3
_Balik=PADL(_Th,4,"0")+" "+CMONTH(_Date)+" 3'th"
CASE _MingguKe=4
_Balik=PADL(_Th,4,"0")+" "+CMONTH(_Date)+" 4'th"
OTHERWISE
_Balik=PADL(_Th,4,"0")+" "+CMONTH(_Date)+" 5'th"
ENDCASE
OTHERWISE
_Balik=_MingguKe
ENDCASE
RETURN _Balik
&& PARAMETERS _Date,_Mode
&& Nilai RETURN tergantung PARAMETER _Mode
&& jika _Mode=0 Nilai RETURN Numerik, yaitu : -1,1,2,3,4,5
&& jika _Mode=1 Nilai RETURN karakter, yaitu :
&& "" jika error atau
&& "1'st of MonthName" atau "2'nd of MonthName" dst s/d "5'th of MonthName"
&& jika _Mode= 2 dst Nilai RETURN karakter seperti pada _Mode=1 tapi ada tambahan bulan/tahun
FUNCTION WeekOfMonth
PARAMETERS _Date,_Mode
PRIVATE _Date,_Hr,_Bl,_Th,_DateTest,_MingguKe,_Balik,_Mode
IF VARTYPE(_Mode)<>"N"
_Mode=0
ENDIF
IF VARTYPE(_Date)<>"D"
RETURN IIF(_Mode=0,-1,"")
ENDIF
_SetDate=SET("Date")
_SetCentury=SET("CENTURY")
SET DATE ITALIAN
SET CENTURY ON
_Hr=DAY(_Date)
_Bl=MONTH(_Date)
_Th=YEAR(_Date)
_DateTest=CTOD("01"+"-"+PADL(_Bl,2,"0")+"-"+PADL(_Th,4,"0"))
_MingguKe=1
DO WHILE _DateTest<_Date
_DateTest=_DateTest+1
IF DOW(_DateTest)=1
_MingguKe=_MingguKe+1
ENDIF
ENDDO
IF !EMPTY(_SetDate)
SET DATE &_SetDate
ENDIF
IF !EMPTY(_SetCentury)
SET CENTURY &_SetCentury
ENDIF
_Balik=-1
DO CASE
CASE _Mode=1
DO CASE
CASE _MingguKe=1
_Balik="1'st of "+CMONTH(_Date)
CASE _MingguKe=2
_Balik="2'nd of "+CMONTH(_Date)
CASE _MingguKe=3
_Balik="3'th of "+CMONTH(_Date)
CASE _MingguKe=4
_Balik="4'th of "+CMONTH(_Date)
OTHERWISE
_Balik="5'th of "+CMONTH(_Date)
ENDCASE
CASE _Mode=2
DO CASE
CASE _MingguKe=1
_Balik=CMONTH(_Date)+" 1'st"
CASE _MingguKe=2
_Balik=CMONTH(_Date)+" 2'nd"
CASE _MingguKe=3
_Balik=CMONTH(_Date)+" 3'th"
CASE _MingguKe=4
_Balik=CMONTH(_Date)+" 4'th"
OTHERWISE
_Balik=CMONTH(_Date)+" 5'th"
ENDCASE
CASE _Mode=3
DO CASE
CASE _MingguKe=1
_Balik=PADL(_Th,4,"0")+" "+CMONTH(_Date)+" 1'st"
CASE _MingguKe=2
_Balik=PADL(_Th,4,"0")+" "+CMONTH(_Date)+" 2'nd"
CASE _MingguKe=3
_Balik=PADL(_Th,4,"0")+" "+CMONTH(_Date)+" 3'th"
CASE _MingguKe=4
_Balik=PADL(_Th,4,"0")+" "+CMONTH(_Date)+" 4'th"
OTHERWISE
_Balik=PADL(_Th,4,"0")+" "+CMONTH(_Date)+" 5'th"
ENDCASE
OTHERWISE
_Balik=_MingguKe
ENDCASE
RETURN _Balik
0 komentar:
Posting Komentar