Microsoft Small Basic

Program Listing: VRZ516-0
' http://technet.microsoft.com/en-us/library/ee198902.aspx
' http://www.merlyn.demon.co.uk/batfiles.htm
' http://www.merlyn.demon.co.uk/vb-dates.htm

' formatdatetime(date,vblongdate)
' formatdatetime(date,vbshortdate)

' eg ...>cscript.exe //nologo Calendar.vbs 1 2010
' ...>cscript.exe //nologo Calendar.vbs [MM YYYY]

Option Explicit
Dim X, Mo, Yr, KW, YS, MN, WD, LD, Wk, D
Set X = WScript.Arguments : '' WScript.Echo "Parameter:", X(0), X(1)

'If X.Count < 2 Then
' WScript.Echo (" MonthCalender: (" & WeekDayName(WeekDay(Now), True) & Date & ")" & vbCrLf & _
' " ..>cscript //nologo " & WScript.ScriptName & " [MM YYYY]" & vbCrLf & _
' " ---------------------")
' WScript.Quit
'End If

If X.Count <> 2 Then
Mo = Month(Now)
Yr = Year(Now)
KW = Right(100 + DatePart("ww", Now, vbMonday, vbFirstFullWeek), 2)
WScript.Echo (" MonthCalender (Today ist " & FormatDateTime(Now, vbLongDate) & ", CW " & KW & ")" & vbCrLf & _
" Syntax: [cscript //nologo] " & WScript.ScriptName & " [MM YYYY]" & vbCrLf & _
" ------------------------")
Else
Mo = X(0) : Yr = X(1)
End If
Set X = Nothing

YS = "JanFebMarAprMayJunJulAugSepOctNovDec"
MN = Mid(YS, 3*Mo-2, 3) : if MN="" then MN = Mo '' Month Name
WScript.echo " ", MN, " ", Yr
WScript.echo " CW Mo Tu We Th Fr Sa So"
WD = WeekDay(DateSerial(Yr, Mo, 1), 2) '' Weekday Number from 1st (1st in Month)
LD = Day(DateSerial(Yr, Mo+1, 0)) '' Last Day Number in Month
Wk = Left(" ", (WD-1)*3) '' Previous Month Spaces-String
' WScript.Echo "WD: " & WD & "LD: " & LD

For D = 1 To LD
Wk = Wk & " " & Right(100+D, 2) : WD = WD + 1
If (WD=8) or (D=LD) Then
WScript.Echo " " & Right(100 + DatePart("ww", DateValue(D & "." & Mo & "." & Yr), vbMonday, vbFirstFullWeek), 2) & " " & Wk
WD = WD-7 : Wk = ""
End If
Next