calendar ← ##.cal date                      ⍝ Calendar.

[cal] is an emulation of Unix shell command cal(1). Right argument [date] may be
one of:

    yyyy        ⍝ year, eg: 1986
    yyyy mm     ⍝ year and month, eg: 2009 12
    mm          ⍝ relative month, 0 means current month, ¯1 means last month ...

[cal] distinguishes the "yyyy" and "mm" cases on range.  If  the  argument  is a
single  number  in  the  range ¯12 to 12, it is interpreted as a relative month.
Otherwise, it is taken as a year. This means that [cal] cannot return a calendar
for the years ¯0012 to 0012.

Requires: →date← →days←

Examples:

      cal 0                 ⍝ current month
   December 2009
Su Mo Tu We Th Fr Sa
       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

      cal ¯1                ⍝ last month
   November 2009
Su Mo Tu We Th Fr Sa
 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

      cal 2                 ⍝ the month after next.
   February 2010
Su Mo Tu We Th Fr Sa
    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

      cal 1985 2            ⍝ calendar for specific month.
   February 1985
Su Mo Tu We Th Fr Sa
                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

    cal 1752 09             ⍝ Sept 1752 was a short month in Merrie England.
   September 1752
Su Mo Tu We Th Fr Sa
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

      cal 2010              ⍝ calendar for a specific year.
                               2010
      January                February                March
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
                1  2       1  2  3  4  5  6       1  2  3  4  5  6
 3  4  5  6  7  8  9    7  8  9 10 11 12 13    7  8  9 10 11 12 13
10 11 12 13 14 15 16   14 15 16 17 18 19 20   14 15 16 17 18 19 20
17 18 19 20 21 22 23   21 22 23 24 25 26 27   21 22 23 24 25 26 27
24 25 26 27 28 29 30   28                     28 29 30 31
31
       April                   May                    June
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
             1  2  3                      1          1  2  3  4  5
 4  5  6  7  8  9 10    2  3  4  5  6  7  8    6  7  8  9 10 11 12
11 12 13 14 15 16 17    9 10 11 12 13 14 15   13 14 15 16 17 18 19
18 19 20 21 22 23 24   16 17 18 19 20 21 22   20 21 22 23 24 25 26
25 26 27 28 29 30      23 24 25 26 27 28 29   27 28 29 30
                       30 31
        July                  August               September
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
             1  2  3    1  2  3  4  5  6  7             1  2  3  4
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    5  6  7  8  9 10 11
11 12 13 14 15 16 17   15 16 17 18 19 20 21   12 13 14 15 16 17 18
18 19 20 21 22 23 24   22 23 24 25 26 27 28   19 20 21 22 23 24 25
25 26 27 28 29 30 31   29 30 31               26 27 28 29 30

      October                November               December
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
                1  2       1  2  3  4  5  6             1  2  3  4
 3  4  5  6  7  8  9    7  8  9 10 11 12 13    5  6  7  8  9 10 11
10 11 12 13 14 15 16   14 15 16 17 18 19 20   12 13 14 15 16 17 18
17 18 19 20 21 22 23   21 22 23 24 25 26 27   19 20 21 22 23 24 25
24 25 26 27 28 29 30   28 29 30               26 27 28 29 30 31
31

⍝ Yves Tanguy points out that while playing on an unlucky date might not improve
⍝ my chances of _winning_ the Rollover Jackpot, doing so might reduce the number
⍝ of other winners with whom I have to share. To this end, Yves suggests playing
⍝ on Friday 13th.

    isFr13←{∨/{6=⍎⍕¯1↑0,⍕⍸13=⍎⍕,⍵}¨2↓1⊂[1]⍵}
    mois←'Jan' 'Fév' 'Mar' 'Avr' 'Mai' 'Juin' 'Juil' 'Août' 'Sept' 'Oct' 'Nov' 'Déc'
    whenFr13←{⍵,mois[⍸⍵∘{isFr13 cal ⍺ ⍵}¨⍳12]}

    whenFr13¨ 2018 2019 2020
┌───────────────┬───────────────┬──────────────┐
│┌────┬───┬────┐│┌────┬────┬───┐│┌────┬───┬───┐│
││2018│Avr│Juil│││2019│Sept│Déc│││2020│Mar│Nov││
│└────┴───┴────┘│└────┴────┴───┘│└────┴───┴───┘│
└───────────────┴───────────────┴──────────────┘

See also: Dates date days

Back to: contents

Back to: Workspaces