Calendar.bas


Title: Calendar
Description: Displays month-chart

Category: Utilities
Copyright: Bob Riess
Email: riessb@usa.net
Created: May 2001
Version: 1.0
Sbver: 0.8


'#sec:Main
const box=18
const lmar=80-box*7/2
const tmar=34
dim ds(0 to 6),ms(12,2)
for
i=0 to 6 : read ds(i) : next
data "Su","Mo","Tu","We","Th","Fr","Sa"
for
i=1 to 2 : for j=1 to 12 : read ms(j,i)
next
: next
data "January","February","March","April","May","June","July","August","September","October","November","December"
data 31,28,31,30,31,30,31,31,30,31,30,31
repeat
at 3,148
input "Month,Year? ",ln$
cls
if ln$=0 then stop
split ln$,"/,",v
if ubound(v) then
m=val(v(0))
y=val(v(1))
d=(1461*(y+4800+(m-14)\\12)\\4+367*(m-2-12*((m-14)\\12))\\12-3*((y+4900+(m-14)\\12)\\100)\\4+1)%7
ms(2,2)=28+(y%4=0 and (y%100<>0 or y%400=0))
n=ms(m,1)+" "+str$(y)
at 1+(160-txtw(n)-len(n))/2,tmar/2-txth(n)
print cat(1);n;cat(0)
rem # of rows
i=(ms(m,2)+d+6)\\7
rem verticals
for n=0 to 7 : line lmar+box*n,tmar,lmar+box*n,tmar+box*i : next
rem horizontals
for n=0 to i : line lmar,tmar+box*n,lmar+box*7,tmar+box*n : next
for n=0 to 6
at lmar+1+box*n+(box-txtw(ds(n)))/2,tmar-2-txth(ds(n))
print ds(n)
next
for i=0 to ms(m,2)-1
row=(d+i)\\7
col=(d+i)%7
n=str$(i+1)
at lmar+1+box*col+(box-txtw(n))/2,tmar+1+box*row+(box-txth(n))/2
print n
next
endif
until
'

Comments