Calendar - for "REAL" programmers: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 1,916: | Line 1,916: | ||
</pre> |
</pre> |
||
=={{header|M2000 Interpreter}}== |
|||
Console 132 characters by 43 lines. Six columns for months. |
|||
<lang M2000 Interpreter> |
|||
MODULE CALENDAR (YEAR, LOCALEID) { |
|||
FUNCTION GETMAX(YEAR, MONTH) { |
|||
A=DATE(STR$(YEAR)+"-"+STR$(MONTH)+"-1") |
|||
MAX=32 |
|||
DO { |
|||
MAX-- |
|||
M=VAL(STR$(CDATE(A,0,0,MAX), "M")) |
|||
} UNTIL M=MONTH |
|||
=MAX+1 |
|||
} |
|||
FUNCTION SKIPMO(YEAR, MONTH) { |
|||
A=DATE(STR$(YEAR)+"-"+STR$(MONTH)+"-1") |
|||
=(VAL(STR$(A, "W"))-8) MOD 7 +7 |
|||
} |
|||
FUNCTION TITLE$(A$) { |
|||
=UCASE$(LEFT$(A$,1))+LCASE$(MID$(A$, 2)) |
|||
} |
|||
LOCALE LOCALEID |
|||
CURSOR 0,HEIGHT-1 ' LAST LINE, SO EACH NEW LINE SCROLL ALL LINES UP |
|||
PRINT OVER $(2), YEAR |
|||
PRINT |
|||
FOR J=0 TO 1 { |
|||
PRINT |
|||
FOR I=1 TO 6 { |
|||
MONTH=I+J*4 |
|||
PRINT PART @((I-1)*22), $(2,21), UCASE$(LOCALE$(55+MONTH)) |
|||
} |
|||
PRINT |
|||
DIM SKIP(1 TO 6), COUNT(1 TO 6), D(1 TO 6)=1 |
|||
FOR I=1 TO 6 { |
|||
MONTH=I+J*6 |
|||
IF I>1 THEN PRINT " "; |
|||
FOR K=42 TO 48 :PRINT UCASE$(LEFT$(LOCALE$(K),2));" ";:NEXT K |
|||
SKIP(I)=SKIPMO(YEAR, MONTH) |
|||
COUNT(I)=GETMAX(YEAR, MONTH) |
|||
} |
|||
PRINT |
|||
FOR I=1 TO 6 { |
|||
IF I>1 THEN PRINT " "; |
|||
FOR K=1 TO 7 { |
|||
SKIP(I)-- |
|||
IF SKIP(I)>0 THEN PRINT " "; :CONTINUE |
|||
COUNT(I)-- |
|||
PRINT FORMAT$("{0::-2} ", D(I)); |
|||
D(I)++ |
|||
} |
|||
} |
|||
PRINT |
|||
PRINT @(0) |
|||
FOR M=1 TO 5 { |
|||
FOR I=1 TO 6 { |
|||
IF I>1 THEN PRINT " "; |
|||
FOR K=1 TO 7 { |
|||
COUNT(I)-- |
|||
IF COUNT(I)<0 THEN PRINT " "; : CONTINUE |
|||
PRINT FORMAT$("{0::-2} ", D(I)); |
|||
D(I)++ |
|||
} |
|||
} |
|||
PRINT |
|||
} |
|||
} |
|||
} |
|||
FORM 132,43 |
|||
CALENDAR 1969, 1033 ' ENGLISH |
|||
K=KEY$ ' WAIT KEY |
|||
CALENDAR 2018, 1032 ' GREEK |
|||
</lang> |
|||
=={{header|Perl}}== |
=={{header|Perl}}== |