DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T e

⟦d62b0246f⟧ TextFile

    Length: 15537 (0x3cb1)
    Types: TextFile
    Names: »early.c«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/yearlength/early.c« 

TextFile

#include <stdio.h>


/**********************************************************************
*
* unknown_calendar() -- ignorance place holder
*
*     This is for countries that I don't know about.  It is used for
*   the Muslim, Celtic, Chinese, Mayan, and other calendars.
*
**********************************************************************/
int unknown_calendar(year, change_year)
    int year;
    int change_year;
{
    return(-1);
}


/**********************************************************************
*
* julian() -- return length of year based on Julius Caesar/Sosigenes rule
*
*     Actually could go back to 45 BC, but why?
*     Calling routine allows no years before 1 AD 
*
**********************************************************************/
int julian(year, change_year)
    int year;
    int change_year;
{
    int length = 365;


    if ((year & 03) == 0)
	length = 366;

    if (year == change_year)
	switch (change_year / 100)
	{
	case 20:
		/* 2000 - 2099 */
		/* 2000 is a leap year; fall through */
	case 19:
		/* 1900 - 1999 */
		return(length-13);
	case 18:
		/* 1800 - 1899 */
		return(length-12);
	case 17:
		/* 1700 - 1799 */
		return(length-11);
	case 16:
		/* 1600 - 1699 */
		/* 1600 is a leap year, fall through */
	case 15:
		/* 1500 - 1599 */
		return(length-10);
	}

    return(length);
}


/**********************************************************************
*
* belgium_early() -- handle problem caused by the change to Gregorian
*                    overlapping two years
*
**********************************************************************/
int belgium_early(year, change_year)
    int year;
    int change_year;
{
    /* the days 12/25/1582 - 1/5/1583 were dropped */
    if (year == change_year || year == change_year-1)
        return(360);

    /* do normal Julian rules */
    if ((year & 03) == 0)
	return(366);
    else
	return(365);
}


/**********************************************************************
*
*  canada_early() -- deal with conflict between French rules and
*                    British rules for dates
*
*   France changed to Gregorian 12/10/1582 (Julian)
*   Britain changed to Gregorian 09/05/1752 (Julian)
*   therefore, Canada changed on ??/??/????
*
*   Some guesses can be made based on the individual provinces/territories:
*
*     Alberta                  British rules likely apply
*     British Columbia         British rules definitely apply
*     Manitoba                 likely British rules (def. British after 1763)
*     New Brunswick            France and British alternated control
*     Newfoundland             contested until 1713 when became British
*     Nova Scotia              British after 1713
*     Ontario                  French first then British after 1759
*     Prince Edward Island     follows Ontario rules (?)
*     Quebec                   Britain gained in 1763 with Treaty of Paris
*     Saskatchewan             British rules apply
*     Yukon Territory          first Russian then British after 1840 (?)
*
**********************************************************************/
int canada_early(year, change_year)
    int year;
    int change_year;
{
    /* calculate using British change year for Canada's */
    return(julian(year, change_year));
}


/**********************************************************************
*
* china_early() -- previous to using the Gregorian calendar, China
*                  used a 12 (ordinary year) or 13 (full year) month
*                  calendar that operated in 60 year cycles
*                  Years began with the lunar month that had the sun
*                  enter the zodiacal sign Aquarius
*
*                  Jesuit missionaries tried to reform the calendar
*                  when they arrived in the 1600s.  I haven't found
*                  out the full ramifications of that attempt.  What I
*                  have seen is that the calendar was again changed by
*                  the Chinese after that; this introduced some errors.
*
*                  Now, what that means for converting years is
*                  a lot of work...
*
**********************************************************************/
int china_early(year, change_year)
    int year;
    int change_year;
{
    /* punt */
    return(-1);
}



/**********************************************************************
*
* france_early() -- deal with France's use of the Republic calendar
*                   for the years 1793-1805
*
*    The Revolutionary Calendar was a base 10 calendar.  That is, it
*  had 360 days arranged in 12 months of 30 days plus 5 or 6 unnumbered
*  days that were added to the end of the last month.  Each day was 10
*  hours of 100 minutes of 100 seconds long.
*
*    It was rejected after over a decade of use mainly because of its
*  opposition from religious groups who did not approve of weeks that
*  were seven days long.
*
**********************************************************************/
int france_early(year, change_year)
    int year;
    int change_year;
{
    /* Republic --> Gregorian */
    if (year == 1806)
	return(365);	/* ? */

    /* Republic Calendar -- follows Julian leap-year rule */
    if (year > 1793  ||  year < 1806)
    {
	if ((year & 03) == 0)
	    return(366);
	else
	    return(365);
    }

    /* Gregorian --> Republic */
    if (year == 1793)
	return(365);

    /* Gregorian */
    if (year > 1582  ||  year < 1793)
    {
	if ((year&0x3)==0 && ((year&0xF)==0 || year%100))
	   return(366);
	else
	   return(365);
    }

    /* Julian --> Gregorian */
    if (year == 1582)
	return(365-10);		/* dropped the days 12/10 - 12/20 */

    /* Julian */
    if ((year & 03) == 0)
	return(366);
    else
	return(365);
}


/**********************************************************************
*
* german_early() -- deal with problem of country adopting the
*                   Gregorian calendar in parts
*
*  Gregorian calendar was adopted in overlapping parts:
*      10/16/1583   Bavaria
*      11/14/1583   the Catholic population
*       3/01/1682   Strassburg
*      11/15/1699   the Protestant population
*      12/12/1700   Utrecht
*
*  I have the last date (1700) in the table for the entire country.
*  If you want more accuracy in dealing with the partial changes,
*  make modifications to the country table and the following code.
*
**********************************************************************/
int german_early(year, change_year)
    int year;
    int change_year;
{
    /* deal with change-over date */
    if (year == change_year)
	return(366-11);			/* 1700 is a leap year */

    /* else, do normal Julian rules */
    if ((year & 03) == 0)
	return(366);
    else
	return(365);
}



/**********************************************************************
*
* greece_early() -- country did not change all at one time
*
*    The changes that occurred are:
*
*        07/15/1916  Calendar change adopted by all except...
*        09/30/1923  ...the Greek Church, which finally accepted it
*
*    The table uses the latter date.  Hack this if you don't like it.
*    A warning:  one reference seemed to indicated (it wasn't clear if
*    it had been just proposed or it was accepted) that Greece is using a
*    modified Julian calendar that has two leap centuries out of *nine*.
*    If this is true, then dates after 2800 will be different from
*    the Gregorian calendar.
*
**********************************************************************/
int greece_early(year, change_year)
    int year;
    int change_year;
{
    /* do change-over year */
    if (year == change_year)
	return(365-13);		/* 1923 was not a leap year */

    /* do normal Julian rules */
    if ((year & 03) == 0)
	return(366);
    else
	return(365);
}


/**********************************************************************
*
* iran_early() -- uses the Monarchic Calendar
*
*  I don't know how if or when Gregorian was used.  The Muslim
*  calendar may still be used (it is a 12 month calendar with a 30
*  year cycle;  eleven days are added over the cycle) for daily or
*  religious or even Government functions.
*
**********************************************************************/
int iran_early(year, change_year)
    int year;
    int change_year;
{
    return(-1);
}


/**********************************************************************
*
* japan_early() -- deal with Japanese lunar calendar
*
*   Unfortunately, I have been unable to find any detailed information
*   on the calendar used prior to the adoption of the Gregorian calendar.
*
*   If anyone has some info, I'd like to receive it.
*
**********************************************************************/
int japan_early(year, change_year)
    int year;
    int change_year;
{
    return(-1);
}


/**********************************************************************
*
* netherlands_early() -- deal with scattered adoption
*
*  Adoption of the Gregorian calendar went by the following cities:
*     12/15/1582   Holland, Zeeland, Brabant, Vlaandern
*     06/30/1700   Gelerland
*     11/30/1700   Utrecht, Overijisol
*     12/31/1700   Friesland, Groningen
*     01/12/1701   Entire country consistent
*
**********************************************************************/
int netherlands_early(year, change_year)
    int year;
    int change_year;
{
    /* Use date of total country adoption -- 1701 */
    if (year == change_year)
	return(365 - 11);

    /* do normal Julian rules */
    if ((year & 03) == 0)
	return(366);
    else
	return(365);
}


/**********************************************************************
*
* poland_early() -- deal with country's partial adoption dates
*
*  Dates for adoption are
*      11/01/1582   Catholics (and Protestants?) adopt
*      03/18/1918   Russian Poland changes (Civil War split)
*      05/??/1923   Orthodox members adopt
*
**********************************************************************/
int poland_early(year, change_year)
    int year;
    int change_year;
{
    /* Use date of total country adoption -- 1923 */
    if (year == change_year)
	return(365 - 13);

    /* do normal Julian rules */
    if ((year & 03) == 0)
	return(366);
    else
	return(365);
}


/**********************************************************************
*
* sweden_early() -- deal with bouncing leap day
*
*  Sweden took a half-step towards Gregorian but then retreated (think
*  of it as sort of a single partner polka).
*
*       1700 -- made this year a non-leap year by dropping Feb 29th
*       1712 -- went back to Julian calendar by making a Feb 30th !!
*  2/18/1753 -- adopted Gregorian
*
**********************************************************************/
int sweden_early(year, change_year)
    int year;
    int change_year;
{
    if (year == change_year)
	return(365 - 11);

    if (year == 1700)
	return(365);

    if (year == 1712)
	return(367);

    /* do normal Julian rules */
    if ((year & 03) == 0)
	return(366);
    else
	return(365);
}


/**********************************************************************
*
* switzerland_early() -- deal with scattered adoption in country
*
*  Districts and their adoption dates (I had conflicting sources for
*  the spelling of the district names)
*
*  Catholic districts 
*     01/22/1584  Fribourg, Lucerne, Schwyz, Solothurn, Unterwalden, Uri, Zug
*     01/17/1597  Appenzell
*     03/01/1656  Valais (part did early in 1622)
*
*  Protestant districts 
*     01/01/1701  Baselstradt, Bern, Biel, Cargous, Geneva, Neuchatel,
*                 Schaffhausen, Thurgan, and Zurich
*     12/20/1723  Appenzell
*     01/12/1724  Glarus, St. Galen
*     02/17/1812  Grisons
*
**********************************************************************/
int switzerland_early(year, change_year)
    int year;
    int change_year;
{
    /* Use date of total country adoption -- 1724 (a leap year) */
    if (year == change_year)
	return(366 - 11);

    /* do normal Julian rules */
    if ((year & 03) == 0)
	return(366);
    else
	return(365);
}


/**********************************************************************
*
* turkey_early() -- deal with scattered adoption of new calendar
*
*  Adoption seemed to depend on regional background
*
*      1908  people with a European heritage
*      1917  people with a Asian heritage (might be 1914)
*
**********************************************************************/
int turkey_early(year, change_year)
    int year;
    int change_year;
{
    /* Use date of total country adoption -- 1917 */
    if (year == change_year)
	return(365 - 13);

    /* do normal Julian rules */
    if ((year & 03) == 0)
	return(366);
    else
	return(365);
}


/**********************************************************************
*
* usa_early() -- deal with state differences
*
*  The USA, for the most part, followed Great Britain's lead in the
*  adoption of the the Gregorian calendar in 1752.  However, not all
*  current states were part of the "country" at that time.  An easy
*  lie is to say that all parts of the yet-to-be USA changed over on
*  that date.  States like California were not even settled until
*  about 1770.
*
*  The exceptions to the 1752 rule:
*
*  Alaska was owned by Russia until 1867. (see Russia's rules)
*  Hawaii was an independent country that adopted Gregorian in 1893(?).
*
*  The non-states that operate under US protection are likewise exceptions
*  to the rule (luckily, some were not inhabited or we'd have to hypnotise
*  the native population to change their memory of previous calendars:-):
*
*  American Samoa became possesion 1899.
*  Baker, Howland, and Jarvis Islands became possesions 1857(?).
*  Panama Canal Zone was a possesion 1903-1979 (?).
*  Canton and Enderbury Islands - 1939.
*  Great Corn and Little Corn - leased from Nicaraugua for 99 years in 1914.
*  Guam - obtained in 1898, lost to Japan 1941, regained in 1944.
*  Johnston Island - came with Hawaii
*  Midway Islands - 1867
*  Phillipine Islands - was US territory 1898-1946
*  Puerto Rico - Spain ceded to US in 1898
*  Trust Territories of the Pacific (approx 2000 islands in W. Pacific)-1947
*  Virgin Islands - bought from Denmark in 1917
*  Wake Island - got from Spain 1898, Japan took 1941, regained in 1945
*
**********************************************************************/
int usa_early(year, change_year)
    int year;
    int change_year;
{
    /* this is for the majority of the cases,  change if desired */
    if (year == change_year)	/* 1752 */
	return(366 - 11);

    /* do normal Julian rules */
    if ((year & 03) == 0)
	return(366);
    else
	return(365);
}


/**********************************************************************
*
* ussr_early() -- deal with scattered adoption of new calendar
*
* The changing calendar for the Soviet Union reflects a country
* that was undergoing great changes.  The dates of change are:
*
*   1/1/1918 -- Western part changes to Gregorian
*   2/5/1920 -- Eastern part changes to Gregorian
*       1929 -- Entire country changed to a 5 day week and new calendar
*       1932 -- Entire country changed to a 6 day week and new calendar
*  6/27/1940 -- Chucked the non-standard calendar and returned to Gregorian
*
**********************************************************************/
int ussr_early(year, change_year)
    int year;
    int change_year;
{
    /* the above is the present and total knowledge I have on the */
    /* calendars used....  So, I'll punt and return(-1);          */
    return(-1);
}