home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************/
- /* *** fulldte.c *** */
- /* */
- /* This function converts a julian day number ( 1 = 1st day AD ), */
- /* into an equivalent gregorian date descriptive phraze of the form: */
- /* */
- /* "Wednesday September 16, 1987" ( example ) */
- /* */
- /* The input values, in their proper order, are: */
- /* */
- /* 1. the julian date to be converted ( unsigned long ) */
- /* */
- /* 2. a pointer to the output character string. ( char * ) */
- /* */
- /* The length, in ASCII characters, of the output string is returned */
- /* by the function upon completion, expressed as an unsigned integer. */
- /* */
- /* WARNING - the character string pointed to must be dimensioned to */
- /* at least 29 characters, or a memory overwrite may occur. */
- /* */
- /************************************************************************/
-
- extern int dow( unsigned long );
- extern char *jtog( unsigned long, char *, unsigned int );
-
- int fulldte( julian, dtestr )
-
- long julian;
- char *dtestr;
-
- {
- static char *daynme[7] = { "Sunday", "Monday", "Tuesday",
- "Wednesday", "Thursday", "Friday",
- "Saturday" };
- static char *mosnme[12] = { "January", "February", "March",
- "April", "May", "June",
- "July", "August", "September",
- "October", "November", "December" };
-
- static char **text[2] = { daynme, mosnme };
-
- int i, j, k, strt, dtearr[4];
-
- dtearr[0] = dow( julian );
- jtog( julian, (char *)&dtearr[1], 0 );
- --dtearr[1];
-
- for ( i = j = k = 0; i < 2; k = 0, ++i )
- {
- while ( text[i][dtearr[i]][k] )
- dtestr[j++] = text[i][dtearr[i]][k++];
- dtestr[j++] = ' ';
- }
-
- for ( strt = 0, i = 2; i < 4; ++i )
- {
- for ( k = 1000; k; dtearr[i] %= k, k /= 10 )
- {
- if ( strt = strt || dtearr[i] / k )
- dtestr[j++] = (char)( dtearr[i] / k + 48 );
- }
-
- if ( i == 2 ) dtestr[j++] = ',';
-
- dtestr[j++] = ' ';
- }
-
- dtestr[--j] = '\0';
-
- return( j );
- }