/* juldate.c - convert dates */ Julian_to_Gregorian(inday, year, month, day) /* julian day to month and day */ register short int inday; int *year, *month, *day; { register short int leap_year, m; static short month_days[] = { /* in leap year */ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366}; #define APRIL 92 #define JUNE 183 #define SEPTEMBER 275 leap_year = ((*year % 4) == 0); /* approximately */ if (!leap_year && (inday > 59)) inday++; if (inday < JUNE) m = (inday < APRIL) ? 0 : 3; else m = (inday < SEPTEMBER) ? 6 : 9; for ( ; inday > month_days[m]; m++); /* find month */ *day = inday - month_days[m-1] + 1; *month = m; }