Anonymous user
Calendar - for "REAL" programmers: Difference between revisions
Calendar - for "REAL" programmers (view source)
Revision as of 09:42, 22 February 2013
, 11 years agoAdded Vedit macro language
(Added X86 Assembly) |
(Added Vedit macro language) |
||
Line 1,030:
20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28
27 28 29 30 31 24 25 26 27 28 29 30 29 30 31
</pre>
=={{header|Vedit macro language}}==
In [[Calendar]] task, standard calendar.vdm macro was called to draw one month calendar.
The version here is stand-alone and contains subroutine DRAW_CALENDAR to draw one month calendar.
In addition, short commands are used here. (Normally, long versions of command words are used in RC tasks for readability.)
Vedit macro language is case insensitive, but it is normal practice to write short commands in upper case.
<lang vedit>BS(BF)
CFT(22)
#3 = 6 // NUMBER OF MONTHS PER LINE
#2 = 1969 // YEAR
#1 = 1 // STARTING MONTH
IC(' ', COUNT, #3*9) IT("[SNOOPY]") IN(2)
IC(' ', COUNT, #3*9+1) NI(#2) IN
REPEAT(12/#3) {
REPEAT (#3) {
BS(BF)
CALL("DRAW_CALENDAR")
RCB(10, 1, EOB_POS, COLSET, 1, 21)
BQ(OK)
#5 = CP
RI(10)
GP(#5)
EOL IC(9)
#1++
}
EOF IN(2)
}
RETURN
:DRAW_CALENDAR:
NUM_PUSH(4,20)
#20 = RF
BOF DC(ALL)
NI(#1, LEFT+NOCR) IT("/1/") NI(#2, LEFT+NOCR)
RCB(#20, BOL_POS, EOL_POS, DELETE)
#10 = JDATE(@(#20))
#4 = #2+(#1==12)
NI(#1%12+1, LEFT+NOCR) IT("/1/") NI(#4, LEFT+NOCR)
RCB(#20, BOL_POS, CP, DELETE)
#11 = JDATE(@(#20)) - #10
#12 = JDATE()
#7 = (#10-1) % 7
IF (#1==1) { RS(#20," JANUARY ") }
IF (#1==2) { RS(#20," FEBRUARY") }
IF (#1==3) { RS(#20," MARCH ") }
IF (#1==4) { RS(#20," APRIL ") }
IF (#1==5) { RS(#20," MAY ") }
IF (#1==6) { RS(#20," JUNE ") }
IF (#1==7) { RS(#20," JULY ") }
IF (#1==8) { RS(#20," AUGUST ") }
IF (#1==9) { RS(#20,"SEPTEMBER") }
IF (#1==10) { RS(#20," OCTOBER ") }
IF (#1==11) { RS(#20," NOVEMBER") }
IF (#1==12) { RS(#20," DECEMBER") }
IT(" ") RI(#20) IN
IT(" MO TU WE TH FR SA SU") IN
IT(" --------------------") IN
IC(' ', COUNT, #7*3)
#6 = 0
FOR (#8 = 1; #8 <= #11; #8++) {
NI(#8, COUNT, 3)
IF (#8+#10-1 == #12) { #6 = CP }
#5 = (#8+#10+6-1) % 7
IF (#5 == 6) { IN }
}
IT(" ")
REG_EMPTY(#20)
NUM_POP(4,20)
RETURN </lang>
<pre>
[SNOOPY]
1969
JANUARY FEBRUARY MARCH APRIL MAY JUNE
MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU
-------------------- -------------------- -------------------- -------------------- -------------------- --------------------
1 2 3 4 5 1 2 1 2 1 2 3 4 5 6 1 2 3 4 1
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29
31 30
JULY AUGUST SEPTEMBER OCTOBER NOVEMBER DECEMBER
MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU
-------------------- -------------------- -------------------- -------------------- -------------------- --------------------
1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 1 2 1 2 3 4 5 6 7
7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28
28 29 30 31 25 26 27 28 29 30 31 29 30 27 28 29 30 31 24 25 26 27 28 29 30 29 30 31
</pre>
|