| 1 | #include "slalib.h" | 
|---|
| 2 | #include "slamac.h" | 
|---|
| 3 | void slaCalyd ( int iy, int im, int id, int *ny, int *nd, int *j ) | 
|---|
| 4 | /* | 
|---|
| 5 | **  - - - - - - - - - | 
|---|
| 6 | **   s l a C a l y d | 
|---|
| 7 | **  - - - - - - - - - | 
|---|
| 8 | ** | 
|---|
| 9 | **  Gregorian calendar date to year and day in year (in a Julian | 
|---|
| 10 | **  calendar aligned to the 20th/21st century Gregorian calendar). | 
|---|
| 11 | ** | 
|---|
| 12 | **  (Includes century default feature:  use slaClyd for years | 
|---|
| 13 | **   before 100AD.) | 
|---|
| 14 | ** | 
|---|
| 15 | **  Given: | 
|---|
| 16 | **     iy,im,id   int    year, month, day in Gregorian calendar | 
|---|
| 17 | **                       (year may optionally omit the century) | 
|---|
| 18 | **  Returned: | 
|---|
| 19 | **     *ny        int    year (re-aligned Julian calendar) | 
|---|
| 20 | **     *nd        int    day in year (1 = January 1st) | 
|---|
| 21 | **     *j         int    status: | 
|---|
| 22 | **                         0 = OK | 
|---|
| 23 | **                         1 = bad year (before -4711) | 
|---|
| 24 | **                         2 = bad month | 
|---|
| 25 | **                         3 = bad day (but conversion performed) | 
|---|
| 26 | ** | 
|---|
| 27 | **  Notes: | 
|---|
| 28 | ** | 
|---|
| 29 | **  1  This routine exists to support the low-precision routines | 
|---|
| 30 | **     slaEarth, slaMoon and slaEcor. | 
|---|
| 31 | ** | 
|---|
| 32 | **  2  Between 1900 March 1 and 2100 February 28 it returns answers | 
|---|
| 33 | **     which are consistent with the ordinary Gregorian calendar. | 
|---|
| 34 | **     Outside this range there will be a discrepancy which increases | 
|---|
| 35 | **     by one day for every non-leap century year. | 
|---|
| 36 | ** | 
|---|
| 37 | **  3  Years in the range 50-99 are interpreted as 1950-1999, and | 
|---|
| 38 | **     years in the range 00-49 are interpreted as 2000-2049. | 
|---|
| 39 | ** | 
|---|
| 40 | **  Called:  slaClyd | 
|---|
| 41 | ** | 
|---|
| 42 | **  Last revision:   22 September 1995 | 
|---|
| 43 | ** | 
|---|
| 44 | **  Copyright P.T.Wallace.  All rights reserved. | 
|---|
| 45 | */ | 
|---|
| 46 | { | 
|---|
| 47 | int i; | 
|---|
| 48 |  | 
|---|
| 49 | /* Default century if appropriate */ | 
|---|
| 50 | if ( ( iy >= 0 ) && ( iy <= 49 ) ) | 
|---|
| 51 | i = iy + 2000; | 
|---|
| 52 | else if ( ( iy >= 50 ) && ( iy <= 99 ) ) | 
|---|
| 53 | i = iy + 1900; | 
|---|
| 54 | else | 
|---|
| 55 | i = iy; | 
|---|
| 56 |  | 
|---|
| 57 | /* Perform the conversion */ | 
|---|
| 58 | slaClyd ( i, im, id, ny, nd, j ); | 
|---|
| 59 | } | 
|---|