Here is my submission for the Advanced Event 4 in the Microsoft Scripting Games 2008.
1: '*********************************************************************
2: ' Script Name: Event4.vbs
3: ' Version: 1.1
4: ' Author: Perry Harris (PHactotum)
5: ' Updated: 1:30 AM Friday, February 22, 2008
6: ' Purpose: Solves the 2008 winter Scripting Games Advance Event 4: Image is Everything
7: '
8: ' Usage: cscript Event4.vbs
9: ' Notes:
10: ' Keywords:
11: ' versioning: 1.0 Original release
12: ' 1.1 Modified to put lines in our calendar using + - and |
13: '*********************************************************************
14: Option Explicit
15: Dim intYear, i, intMonth
16: Dim strText
17: Dim StartDate, EndDate, CurrDate
18: Dim intLeft, intRight
19: Dim a
  20:  
21: 'Get the desired Month and Year for the Calendar
22: WScript.StdOut.Write "Please enter Month/Year using numeric digits: "
  23: strText = WScript.StdIn.ReadLine
  24:  
25: 'Assuming the user used a / as the separator
26: a = split(strText,"/")
  27: intMonth = a(0)
  28: intYear = a(1)
  29:  
30: 'Start our Calendar on the first day of the given month and year
  31: StartDate = DateSerial(intYear,intMonth,1)
32: EndDate = DateSerial(Year(DateAdd("m",1,StartDate)),Month(DateAdd("m",1,StartDate)),1)
  33:  
34: 'Write Top border
  35: WScript.StdOut.Write chr(43)
36: WScript.StdOut.Write string(41,chr(45))
  37: WScript.StdOut.WriteLine chr(43)
  38:  
39: 'Write out our Month and Year
  40: WScript.StdOut.Write chr(124)
41: intLeft = (41 - Len(MonthName(intMonth) & " " & Year(StartDate))) /2
42: intRight = 41 - Len(MonthName(intMonth) & " " & Year(StartDate)) - intLeft
  43: WScript.StdOut.Write space(intLeft)
44: WScript.StdOut.Write MonthName(intMonth) & " " & Year(StartDate)
  45: WScript.StdOut.Write space(intRight)
  46: WScript.StdOut.WriteLine chr(124)
  47: WScript.StdOut.WriteLine chr(124) & space(41) & chr(124)
  48:  
49: 'Yes, we could have used a function for these three lines seeing as we use them repeatedly
  50: WScript.StdOut.Write chr(43)
51: WScript.StdOut.Write string(41,chr(45))
  52: WScript.StdOut.WriteLine chr(43)
  53:  
  54:  
55: 'Write out our days of the week tab separated and in abbreviated form
56: For i = 1 to 7
57: WScript.StdOut.Write chr(124) & space(1) & WeekDayName(i,True) & space(1)
58: next
  59: WScript.StdOut.WriteLine chr(124)
60: 'And again these three lines
  61: WScript.StdOut.Write chr(43)
62: WScript.StdOut.Write string(41,chr(45))
  63: WScript.StdOut.WriteLine chr(43)
  64:  
  65:  
  66:  
67: 'Pad the first week
  68: i = 0
69: While i < Weekday(StartDate) - 1
  70:     WScript.StdOut.Write chr(124) & space(5)
  71:     i = i + 1
72: wend
  73:  
74: 'Print The Days
  75: CurrDate = StartDate
76: While CurrDate < EndDate
77: If Weekday(CurrDate) = 7 then
  78:         WScript.StdOut.WriteLine Chr(124) & LeftPad(Day(CurrDate),4) & space(1) & chr(124)
79: else
  80:         WScript.StdOut.Write chr(124) & LeftPad(day(CurrDate),4) & space(1)
81: end if
82: CurrDate = DateAdd("d",1,CurrDate)
83: Wend
  84:  
85: 'Pad the last week
86: If Weekday(CurrDate) > 1 then ' If we are at 1, we don't want to print a blank row
87: While Weekday(CurrDate) < 7
  88:         WScript.StdOut.Write chr(124) & space(5)
89: CurrDate = DateAdd("d",1,CurrDate)
90: wend
  91: WScript.StdOut.WriteLine chr(124) & space(5) & chr(124)
92: end if
  93:  
94: 'One more time
  95: WScript.StdOut.Write chr(43)
96: WScript.StdOut.Write string(41,chr(45))
  97: WScript.StdOut.WriteLine chr(43)
  98:  
  99:  
 100:  
101: 'This is used to right justify the dates under the three letter abbreviations for the days of the week.
102: Function LeftPad(strText,intWidth)
 103:     LeftPad = Space(intWidth - Len(strText)) & strText
104: end function
I spent a little extra time on this one. I had a calendar that looked just like their example:
| C:\scripts>cscript Event4-1.vbs Please enter Month/Year using numeric digits: 2/2008 February 2008 | 
But I thought I'd like to take it up a notch. I like calendars with grid lines:
| C:\scripts>cscript Event4.vbs Please enter Month/Year using numeric digits: 2/2008 +-----------------------------------------+ | February 2008 | | | +-----------------------------------------+ | Sun | Mon | Tue | Wed | Thu | Fri | Sat | +-----------------------------------------+ | | | | | | 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 | | +-----------------------------------------+ |