/*********************************************************
*																			*
*						PROGRAMM :			dt							*
*					===========================					*
*																			*
*		compile: AZTEC_C +l				link:	-m -lc			*
*																			*
*		Autor	:	JAN Andreas Neuper	Datum	: 03/09/1989	*
*																			*
*	Bem.:	kurzer Code, lange Sourcedatei, nicht optimiert	*
*																			*
*********************************************************/

#include <exec/types.h>
#include	<libraries/dos.h>
#include	<functions.h>

char	str[]	= " 00:00:00 Uhr, am ";
char	str2[] = " den    ";
char	str3[] = " 1989;";
char	str4[] = ".Tag und ";
char	str5[] = ".Woche\n";
short	ylen[] = { 365,365,366,365 };
char	mlen[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
char	*wday[] = { "Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"};
char	*month[] = { "Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember" };

put(str)
void *str;
{	void *fhd;
	fhd = Open("*",MODE_OLDFILE);
	Write(fhd,str,strlen(str));
	Close(fhd);
}

long	artic(n,string,val,fmt)
long	n,val;
BOOL	fmt;
char	*string;
{	
	if(val>99) string[n++] = val/100+'0';
	if(val>9) string[n++] = (val%100)/10+'0';
	else if(fmt) n++;
	string[n++] = val%10+'0';
	return(n);
}

_main(argc,argv)
int	argc;
char	*argv;	/* diese Zeile ist OK ! keine [], da _main; argc ist Dummy */
{	int	register	i;
	long	ptr[3];
	long	year,days,week;
	short	mon=0;

	DateStamp(ptr);
	artic(1,str,ptr[1]/60,TRUE);										/*	Uhrzeit	*/
	artic(4,str,ptr[1]%60,TRUE);
	artic(7,str,ptr[2]/50,TRUE);
	put(str);

	put(wday[ptr[0]%7]);												/*	 Wochentag	*/
	/* ¡ Woche beginnt mit Sonntag ! ==> 'Woche'	*/

	days = ptr[0];		/* +1 wegen Datumsbeginn am 1.1.78	*/		/*	Datum	*/
	days++;
	year = 978;																	/*	Jahr	*/
	for(i=0;days>(long)ylen[i%4];i++)	{	year++;days -= (long)ylen[i%4];}
		/* soll nur bis 2399 A.D. gelten	*/
	if(i%4==2) mlen[1] = 29;												/*	Monat	*/
	week = days;
	for(i=0;days>(long)mlen[i];i++) {mon++;days -= (long)mlen[i];}
	str2[days = artic(5,str2,days,FALSE)] = '.';			/*	Tag  im  Monat	*/
	str2[days+1] = 0;
	put(str2);												/* Ausgabe  des  Datums	*/ 
	put(month[mon]);
	if (year>=1000) str3[1] = '2';
	artic(2,str3,year%1000,FALSE);
	put(str3);
	str[artic(1,str,week,FALSE)] = 0;						/* Tag des Jahres	*/
	put(str);put(str4);
	str[artic(1,str,week/7+1,FALSE)] = 0;				/*  Woche des Jahres	*/
	put(str);put(str5);
}
