home *** CD-ROM | disk | FTP | other *** search
- /*------------------------------------------------------------*/
- /* CDATE.C --- Test der Funktion getdate */
-
- #include <stdio.h>
-
- main () {
- char datum[21];
- getdate(datum);
- puts(datum);
- }
-
- int monate[13] ={0,31,59,90,120,151,181,
- 212,243,273,304,334,365};
- char wochentage[] ="MoDiMiDoFrSaSo";
- #define GETDATIME 105 /* BDOS-Call Nr. in CP/M Plus */
-
-
- getdate(string)
- char *string; {
-
- char sec;
- int i, wt;
- int n,j,jahr,lftag, schalt, tag, monat;
- char bcd[4];
-
- sec = Ubdos (GETDATIME, bcd);
- n=ctoi(bcd[1])*256+ctoi(bcd[0]);
- wt=((n+5)%7)*2;
- string[0] = wochentage[wt];
- string[1] = wochentage[wt+1];
- string[2] = string[11] = ' ';
- j=(n+364)%1461; /*lfd. Tag in Olympiade */
- if (j>1095)
- schalt=1;
- else
- schalt=0;
- jahr=((n+364)/1461)*4 + (j-schalt)/365 + 77;
- if (j==1460)
- {tag = 31; monat = 12;}
- else {
- lftag = j%365;
- if (schalt && lftag==59)
- {tag=29; monat=2;}
- else {
- for (monat=0; monat<12; ){
- if (schalt && monat>1) i=1; else i=0;
- if (lftag < (monate[(++monat)]+i)) break;
- }
- tag = lftag - monate[monat-1] - i + 1;
- }
- }
- ito2a(tag,&string[3]);
- string[5]=string[8]='.';
- ito2a(monat,&string[6]);
- ito2a(jahr,&string[9]);
- bcdsplit(&bcd[2], &string[12]);
- string[14] = string[17] =':';
- bcdsplit(&bcd[3], &string[15]);
- bcdsplit(&sec,&string[18]);
- string[20]=0;
- }
-
- bcdsplit(cpin,cpout)
- char *cpin, *cpout; {
-
- *cpout=(*cpin>>4) + '0';
- cpout++;
- *cpout=(*cpin&15) + '0';
- }
-
-
- ctoi(ch)
- char ch; {
-
- if (ch<0) return (ch+256); else return (ch);
- }
-
-
- ito2a(i,a2)
- int i; char *a2; {
-
- *a2 = i/10 + '0';
- a2++;
- *a2 = i%10 + '0';
- }