home *** CD-ROM | disk | FTP | other *** search
- #!/usr/local/bin/kermit +
-
- ; c a l e n d a r
- ;
- ; Prints a calendar of the given month of the given year, or if no year
- ; and month given, of the current month. To print a single month, e.g.
- ; March 2002:
- ;
- ; calendar 2002 3
- ;
- ; To print a year (e.g. 2002):
- ;
- ; for \%i 1 12 1 { take calendar 2002 \%i }
- ;
- ; Requires: C-Kermit 8.0 or later or K95 1.1.21 or later.
- ; Illustrates: Date arithmetic using Modified Julian Date (MJD).
- ; Author: F. da Cruz, Columbia University, March 2002.
- ;
- local mm yyyy yyyymm dayone \&m[] \%a \%d \%e \%i \%s ; Local variables
- dcl \&m[] = Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ; Month names
-
- ; Validate arguments...
-
- define usage {
- if def \%1 echo \%1
- exit 1 Usage: \fbasename(\v(cmdfile)) yyyy mm
- }
- switch \v(argc) {
- :1, .\%1 := \:(\v(ndate)[1:4]), .\%2 := \:(\v(ndate):[5:2]), break
- :3, break
- :default, usage
- }
- if not numeric \%1 usage "Year not numeric"
- if not numeric \%2 usage "Month not numeric"
- if ( < \%1 1859 || > \%1 9999 ) usage "Year out of range (1859-9999)"
- if ( < \%2 1 || > \%2 12 ) usage "Month out of range (1-12)"
-
- ; Interpret arguments...
-
- .mm := \flpad(\%2,2,0) ; 2-digit month
- .yyyy := \%1 ; 4-digit year
- .yyyymm := \m(yyyy)\m(mm) ; Month and year
- .dayone := \m(yyyymm)01 ; First day of month
-
- .\%d ::= \fmjd(\m(dayone) +1month) - \fmjd(\m(dayone)) ; Days in month
- .\%e := \fnday(\m(dayone)) ; Day of week of first day of month
- .\%s ::= \fmod((7-\%e),7) ; Day of week of Saturday
-
- ; Print calendar...
-
- echo ; Heading
- echo " \&m[\%2] \%1"
- echo " S M T W T F S"
- xecho "\frepeat({ },\%e)" ; Spacer for first week
-
- for \%i 1 \%d 1 { ; Loop for each day of month
- xecho \flpad(\%i,3) ; Print the day number
- if == \fmod(\%i,7) \%s echo ; End of week - start new line
- }
- if != \fmod(\%i,7) (\%s+1) echo ; If week ended on Saturday
-
- echo ; Blank line at end
- if kerbang exit 0
-