home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / c / date.lha / Date / C / src / test.c < prev   
Encoding:
C/C++ Source or Header  |  1995-02-01  |  17.0 KB  |  521 lines

  1.  #include <stdio.h>
  2.  #include "Date.h"
  3.  #ifdef _AMIGA
  4.    #ifdef LIBTEST
  5.      #include "Date_pragmas.h"
  6.      #include <proto/exec.h>
  7.    #endif
  8.  #endif
  9.  
  10.  
  11.  int readintyear(void)
  12.  
  13.  {int year=0;
  14.  
  15.   printf("(integer)year: ");
  16.   scanf("%d",&year);
  17.   return(year);
  18.  }
  19.  
  20.  
  21.  unsigned short readshortcardmonth(void)
  22.  
  23.  {unsigned int month=0;
  24.  
  25.   printf("(shortcard)month: ");
  26.   scanf("%u",&month);
  27.   return((unsigned short)month);
  28.  }
  29.  
  30.  
  31.  unsigned short readshortcardday(void)
  32.  
  33.  {unsigned int day=0;
  34.  
  35.   printf("(shortcard)day: ");
  36.   scanf("%u",&day);
  37.   return((unsigned short)day);
  38.  }
  39.  
  40.  
  41.  Weekdays readweekday(void)
  42.  
  43.  {unsigned int wday=0;
  44.  
  45.   do
  46.    {printf("weekday: 1=Monday; ...7=Sunday: ");
  47.     scanf("%u",&wday);
  48.    }
  49.   while (wday > 7);
  50.   return((Weekdays)wday);
  51.  }
  52.  
  53.  
  54.  Weekdays readintdays(void)
  55.  
  56.  {int days=0;
  57.  
  58.   printf("(integer)days: ");
  59.   scanf("%d",&days);
  60.   return(days);
  61.  }
  62.  
  63.  
  64.  unsigned int readcardyear(void)
  65.  
  66.  {unsigned int year=0;
  67.  
  68.   printf("(cardinal)year: ");
  69.   scanf("%u",&year);
  70.   return(year);
  71.  }
  72.  
  73.  
  74.  unsigned long readlongcarddays(void)
  75.  
  76.  {unsigned long day=0;
  77.  
  78.   printf("(longcard)days: ");
  79.   scanf("%u",&day);
  80.   return(day);
  81.  }
  82.  
  83.  
  84.  unsigned short readshortcardhour(void)
  85.  
  86.  {unsigned int hour=0;
  87.  
  88.   printf("(shortcard)hour: ");
  89.   scanf("%u",&hour);
  90.   return((unsigned short)hour);
  91.  }
  92.  
  93.  
  94.  unsigned short readshortcardmin(void)
  95.  
  96.  {unsigned int min=0;
  97.  
  98.   printf("(shortcard)min: ");
  99.   scanf("%u",&min);
  100.   return((unsigned short)min);
  101.  }
  102.  
  103.  
  104.  unsigned short readshortcardsec(void)
  105.  
  106.  {unsigned int sec=0;
  107.  
  108.   printf("(shortcard)sec: ");
  109.   scanf("%u",&sec);
  110.   return((unsigned short)sec);
  111.  }
  112.  
  113.  
  114.  float readrealtime(void)
  115.  
  116.  {float jd=0.0;
  117.  
  118.   printf("(real)time: ");
  119.   scanf("%f",&jd);
  120.   return(jd);
  121.  }
  122.  
  123.  
  124.  short readshortintdegree(void)
  125.  
  126.  {int degree=0;
  127.  
  128.   printf("(shortint)degree: ");
  129.   scanf("%d",°ree);
  130.   return((short)degree);
  131.  }
  132.  
  133.  
  134.  unsigned long readlongcardsecs(void)
  135.  
  136.  {unsigned long secs=0;
  137.  
  138.   printf("(longcard)secs: ");
  139.   scanf("%u",&secs);
  140.   return(secs);
  141.  }
  142.  
  143.  
  144.  float readrealmeridian(void)
  145.  
  146.  {float jd=0.0;
  147.  
  148.   printf("(real)meridian: ");
  149.   scanf("%f",&jd);
  150.   return(jd);
  151.  }
  152.  
  153.  
  154.  float readrealpos(void)
  155.  
  156.  {float jd=0.0;
  157.  
  158.   printf("(real)ps: ");
  159.   scanf("%f",&jd);
  160.   return(jd);
  161.  }
  162.  
  163.  
  164.  Languages readlanguage(void)
  165.   {
  166.    unsigned int lang=0;
  167.  
  168.   do
  169.    {printf("language: 0=locale.library; 1=English; 2=Deutsch; 3=francais; 4=espanol: ");
  170.     scanf("%u",&lang);
  171.    }
  172.   while (lang > 4);
  173.   return((Languages)lang);
  174.   }
  175.  
  176.  
  177.  unsigned long readjd(void)
  178.   {
  179.    unsigned long jd=0;
  180.  
  181.    printf("(unsigned long)jd: ");
  182.    scanf("%u",&jd);
  183.    return(jd);
  184.   }
  185.  
  186.  
  187.  MoonPhases readmoonphase(void)
  188.  
  189.  {unsigned int moon=0;
  190.  
  191.   do
  192.    {printf("moon: 0=new; 1=first quarter; 2=full; 3=last quarter: ");
  193.     scanf("%u",&moon);
  194.    }
  195.   while (moon > 3);
  196.   return((MoonPhases)moon);
  197.  }
  198.  
  199.  
  200.  void main(void)
  201.  
  202.  {unsigned int        input=0,repeat=0;
  203.   Weekdays        wd;
  204.   unsigned short    d=0,m=0,h=0,s=0,len,d2,m2,h2,s2;
  205.   int            y=0,y2;
  206.   char                  text[20];
  207.   unsigned long        jd;
  208.  
  209.   #ifndef __SASC_650
  210.     _DateInit();
  211.   #endif
  212.   #ifdef _AMIGA
  213.     #ifdef LIBTEST
  214.       static struct Library *DateBase;
  215.  
  216.       DateBase = OpenLibrary("date.library",0);
  217.       if (DateBase != NULL)
  218.        {
  219.     #endif
  220.   #endif
  221.   do
  222.    {printf("----------------------------------------------------------------\n");
  223.     printf("01 : JulianLeapYear            | 02 : GregorianLeapYear\n");
  224.     printf("03 : HeisLeapYear              | 04 : JulianMonthDays\n");
  225.     printf("05 : GregorianMonthDays        | 06 : HeisMonthDays\n");
  226.     printf("07 : JulianYearDays            | 08 : GregorianYearDays\n");
  227.     printf("09 : HeisYearDays              | 10 : JulianDayDiff\n");
  228.     printf("11 : GregorianDayDiff          | 12 : HeisDayDiff\n");
  229.     printf("13 : CompareDates              | 14 : CompareTimes\n");
  230.     printf("15 :                           | 16 : JulianWeekday\n");
  231.     printf("17 : GregorianWeekday          | 18 : HeisWeekday\n");
  232.     printf("19 : JulianDaysBeforeWeekday   | 20 : GregorianDaysBeforeWeekday\n");
  233.     printf("21 : HeisDaysBeforeWeekday     | 22 : JulianDaysAfterWeekday\n");
  234.     printf("23 : GregorianDaysAfterWeekday | 24 : HeisDaysAfterWeekday\n");
  235.     printf("25 : JulianDiffDate            | 26 : GregorianDiffDate\n");
  236.     printf("27 : HeisDiffDate              | 28 : JYearToScaliger\n");
  237.     printf("29 : GYearToScaliger           | 30 : HYearToScaliger\n");
  238.     printf("31 : ScaligerYearToJ           | 32 : ScaligerYearToG\n");
  239.     printf("33 : ScaligerYearToH           | 34 : JSYearToJD\n");
  240.     printf("35 : GSYearToJD                | 36 : HSYearToJD\n");
  241.     printf("37 : JDtoMJD                   | 38 : MJDtoJD\n");
  242.     printf("39 : JulianToJD                | 40 : GregorianToJD\n");
  243.     printf("41 : HeisToJD                  | 42 : TimeToJD\n");
  244.     printf("43 : JDToTime                  | 44 : GregorianMoonAge\n");
  245.     printf("45 : GregorianEaster           | 46 : TimeZoneFactor\n");
  246.     printf("47 : LMT                       | 48 : TimeToSec\n");
  247.     printf("49 : SecToTime                 | 50 : JulianWeek\n");
  248.     printf("51 : GregorianWeek             | 52 : HeisWeek\n");
  249.     printf("53 : WeekdayText               | 54 : MonthText\n");
  250.     printf("55 : WeekdayShortText          | 56 : MonthShortText\n");
  251.     printf("57 : JDToJulian                | 58 : JDToGregorian\n");
  252.     printf("59 : JDToHeis                  | 60 : JulianEaster\n");
  253.     printf("61 : HeisEaster                | 62 : GregorianMoonPhase\n");
  254.     printf("00 : Quit\n");
  255.     printf("It's your turn: ");
  256.     scanf("%u",&input);
  257.     printf("----------------------------------------------------------------\n");
  258.     do
  259.      {switch (input)
  260.         {
  261.          case  0 : break;
  262.          case  1 : if (JulianLeapYear(readintyear()))
  263.                      printf("TRUE\n");
  264.                 else
  265.                   printf("FALSE\n");
  266.                break;
  267.          case  2 : if (GregorianLeapYear(readintyear()))
  268.                  printf("TRUE\n");
  269.                 else
  270.                   printf("FALSE\n");
  271.                    break;
  272.          case  3 : if (HeisLeapYear(readintyear()))
  273.                   printf("TRUE\n");
  274.                 else
  275.                   printf("FALSE\n");
  276.                break;
  277.          case  4 : printf("%u\n",JulianMonthDays(readshortcardmonth(),readintyear()));
  278.                    break;
  279.          case  5 : printf("%u\n",GregorianMonthDays(readshortcardmonth(),readintyear()));
  280.                    break;
  281.          case  6 : printf("%u\n",HeisMonthDays(readshortcardmonth(),readintyear()));
  282.                    break;
  283.          case  7 : printf("%u\n",JulianYearDays(readintyear()));
  284.                    break;
  285.          case  8 : printf("%u\n",GregorianYearDays(readintyear()));
  286.                break;
  287.          case  9 : printf("%u\n",HeisYearDays(readintyear()));
  288.                break;
  289.          case 10 : printf("%d\n",JulianDayDiff(readshortcardday(),readshortcardmonth(),readintyear(),readshortcardday(),readshortcardmonth(),readintyear()));
  290.                break;
  291.          case 11 : printf("%d\n",GregorianDayDiff(readshortcardday(),readshortcardmonth(),readintyear(),readshortcardday(),readshortcardmonth(),readintyear()));
  292.                break;
  293.          case 12 : printf("%d\n",HeisDayDiff(readshortcardday(),readshortcardmonth(),readintyear(),readshortcardday(),readshortcardmonth(),readintyear()));
  294.                break;
  295.          case 13 : printf("Date1:\n");
  296.                    d = readshortcardday();
  297.                    m = readshortcardmonth();
  298.                    y = readintyear();
  299.                    printf("Date2:\n");
  300.                    d2 = readshortcardday();
  301.                    m2 = readshortcardmonth();
  302.                    y2 = readintyear();
  303.                    printf("\nDate1 ");
  304.                    if (CompareDates(d,m,y,d2,m2,y2) == -1)
  305.                      printf("<");
  306.                    else if (CompareDates(d,m,y,d2,m2,y2) == 1)
  307.                      printf(">");
  308.                    else
  309.                      printf("=");
  310.                    printf(" Date2\n");
  311.                break;
  312.          case 14 : printf("Time1:\n");
  313.                    h = readshortcardhour();
  314.                    m = readshortcardmin();
  315.                    s = readshortcardsec();
  316.                    printf("Time2:\n");
  317.                    h2 = readshortcardhour();
  318.                    m2 = readshortcardmin();
  319.                    s2 = readshortcardsec();
  320.                    printf("\nTime1 ");
  321.                    if (CompareTimes(h,m,s,h2,m2,s2) == -1)
  322.                      printf("<");
  323.                    else if (CompareTimes(h,m,s,h2,m2,s2) == 1)
  324.                      printf(">");
  325.                    else
  326.                      printf("=");
  327.                    printf(" Time2\n");
  328.                break;
  329.          case 15 :
  330.                break;
  331.          case 16 : wd = JulianWeekday(readshortcardday(),readshortcardmonth(),readintyear());
  332.                      switch (wd)
  333.                        {case dayerr    : printf("dayerr!\n");
  334.                                    break;
  335.                       case Monday    : printf("Monday\n");
  336.                                    break;
  337.                       case Tuesday   : printf("Tuesday\n");
  338.                                    break;
  339.                       case Wednesday : printf("Wednesday\n");
  340.                                    break;
  341.                       case Thursday  : printf("Thursday\n");
  342.                                    break;
  343.                       case Friday    : printf("Friday\n");
  344.                                    break;
  345.                       case Saturday  : printf("Saturday\n");
  346.                                    break;
  347.                       case Sunday    : printf("Sunday\n");
  348.                                        break;
  349.                       default        : printf("Illegal Code!\n");
  350.                      }
  351.                break;
  352.          case 17 : wd = GregorianWeekday(readshortcardday(),readshortcardmonth(),readintyear());
  353.                      switch (wd)
  354.                        {case dayerr    : printf("dayerr!\n");
  355.                                    break;
  356.                       case Monday    : printf("Monday\n");
  357.                                    break;
  358.                       case Tuesday   : printf("Tuesday\n");
  359.                                    break;
  360.                       case Wednesday : printf("Wednesday\n");
  361.                                    break;
  362.                       case Thursday  : printf("Thursday\n");
  363.                                    break;
  364.                       case Friday    : printf("Friday\n");
  365.                                    break;
  366.                       case Saturday  : printf("Saturday\n");
  367.                                    break;
  368.                       case Sunday    : printf("Sunday\n");
  369.                                        break;
  370.                       default        : printf("Illegal Code!\n");
  371.                      }
  372.                break;
  373.          case 18 : wd = HeisWeekday(readshortcardday(),readshortcardmonth(),readintyear());
  374.                      switch (wd)
  375.                        {case dayerr    : printf("dayerr!\n");
  376.                                    break;
  377.                       case Monday    : printf("Monday\n");
  378.                                    break;
  379.                       case Tuesday   : printf("Tuesday\n");
  380.                                    break;
  381.                       case Wednesday : printf("Wednesday\n");
  382.                                    break;
  383.                       case Thursday  : printf("Thursday\n");
  384.                                    break;
  385.                       case Friday    : printf("Friday\n");
  386.                                    break;
  387.                       case Saturday  : printf("Saturday\n");
  388.                                    break;
  389.                       case Sunday    : printf("Sunday\n");
  390.                                        break;
  391.                       default        : printf("Illegal Code!\n");
  392.                      }
  393.                break;
  394.          case 19 : printf("%u\n",JulianDaysBeforeWeekday(readshortcardday(),readshortcardmonth(),readintyear(),readweekday()));
  395.                break;
  396.          case 20 : printf("%u\n",GregorianDaysBeforeWeekday(readshortcardday(),readshortcardmonth(),readintyear(),readweekday()));
  397.                break;
  398.          case 21 : printf("%u\n",HeisDaysBeforeWeekday(readshortcardday(),readshortcardmonth(),readintyear(),readweekday()));
  399.                break;
  400.          case 22 : printf("%u\n",JulianDaysAfterWeekday(readshortcardday(),readshortcardmonth(),readintyear(),readweekday()));
  401.                break;
  402.          case 23 : printf("%u\n",GregorianDaysAfterWeekday(readshortcardday(),readshortcardmonth(),readintyear(),readweekday()));
  403.                break;
  404.          case 24 : printf("%u\n",HeisDaysAfterWeekday(readshortcardday(),readshortcardmonth(),readintyear(),readweekday()));
  405.                break;
  406.          case 25 : JulianDiffDate(readshortcardday(),readshortcardmonth(),readintyear(),readintdays(),&d,&m,&y);
  407.                    printf("%u.%u.%d\n",d,m,y);
  408.                break;
  409.          case 26 : GregorianDiffDate(readshortcardday(),readshortcardmonth(),readintyear(),readintdays(),&d,&m,&y);
  410.                    printf("%u.%u.%d\n",d,m,y);
  411.                break;
  412.          case 27 : HeisDiffDate(readshortcardday(),readshortcardmonth(),readintyear(),readintdays(),&d,&m,&y);
  413.                    printf("%u.%u.%d\n",d,m,y);
  414.                break;
  415.          case 28 : printf("%u\n",JYearToScaliger(readintyear()));
  416.                break;
  417.          case 29 : printf("%u\n",GYearToScaliger(readintyear()));
  418.                break;
  419.          case 30 : printf("%u\n",HYearToScaliger(readintyear()));
  420.                break;
  421.          case 31 : printf("%d\n",ScaligerYearToJ(readcardyear()));
  422.                break;
  423.          case 32 : printf("%d\n",ScaligerYearToG(readcardyear()));
  424.                break;
  425.          case 33 : printf("%d\n",ScaligerYearToH(readcardyear()));
  426.                break;
  427.          case 34 : printf("%u\n",JSYearToJD(readcardyear()));
  428.                break;
  429.          case 35 : printf("%u\n",GSYearToJD(readcardyear()));
  430.                break;
  431.          case 36 : printf("%u\n",HSYearToJD(readcardyear()));
  432.                break;
  433.          case 37 : printf("%u\n",JDtoMJD(readlongcarddays()));
  434.                break;
  435.          case 38 : printf("%u\n",MJDtoJD(readlongcarddays()));
  436.                break;
  437.          case 39 : printf("%u\n",JulianToJD(readshortcardday(),readshortcardmonth(),readintyear()));
  438.                break;
  439.          case 40 : printf("%u\n",GregorianToJD(readshortcardday(),readshortcardmonth(),readintyear()));
  440.                break;
  441.          case 41 : printf("%u\n",HeisToJD(readshortcardday(),readshortcardmonth(),readintyear()));
  442.                break;
  443.          case 42 : printf("%f\n",TimeToJD(readshortcardhour(),readshortcardmin(),readshortcardsec()));
  444.                    break;
  445.          case 43 : JDToTime(readrealtime(),&h,&m,&s);
  446.                    printf("%u:%u:%u\n",h,m,s);
  447.                break;
  448.          case 44 : printf("%u\n",GregorianMoonAge(readshortcardday(),readshortcardmonth(),readintyear()));
  449.                break;
  450.          case 45 : GregorianEaster(readintyear(),&d,&m);
  451.                    printf("%u.%u.\n",d,m);
  452.                break;
  453.          case 46 : printf("%d\n",TimeZoneFactor(readshortintdegree()));
  454.                break;
  455.          case 47 : printf("%d\n",LMT(readlongcardsecs(),readrealmeridian(),readrealpos()));
  456.                break;
  457.          case 48 : printf("%u\n",TimeToSec(readshortcardhour(),readshortcardmin(),readshortcardsec()));
  458.                break;
  459.          case 49 : SecToTime(readlongcardsecs(),&h,&m,&s);
  460.                    printf("%u:%u:%u\n",h,m,s);
  461.                break;
  462.      case 50 : printf("%u\n",JulianWeek(readshortcardday(),readshortcardmonth(),readintyear()));
  463.            break;
  464.      case 51 : printf("%u\n",GregorianWeek(readshortcardday(),readshortcardmonth(),readintyear()));
  465.            break;
  466.      case 52 : printf("%u\n",HeisWeek(readshortcardday(),readshortcardmonth(),readintyear()));
  467.            break;
  468.      case 53 : len = WeekdayText(readweekday(),text,readlanguage());
  469.                printf("%u : %s\n",len,text);
  470.                break;
  471.      case 54 : len = MonthText(readshortcardmonth(),text,readlanguage());
  472.                printf("%u : %s\n",len,text);
  473.                break;
  474.      case 55 : len = WeekdayShortText(readweekday(),text,readlanguage());
  475.                printf("%u : %s\n",len,text);
  476.                break;
  477.      case 56 : len = MonthShortText(readshortcardmonth(),text,readlanguage());
  478.                printf("%u : %s\n",len,text);
  479.                break;
  480.      case 57 : JDToJulian(readjd(),&d,&m,&y);
  481.                printf("%u.%u.%d\n",d,m,y);
  482.                break;
  483.      case 58 : JDToGregorian(readjd(),&d,&m,&y);
  484.                printf("%u.%u.%d\n",d,m,y);
  485.                break;
  486.      case 59 : JDToHeis(readjd(),&d,&m,&y);
  487.                printf("%u.%u.%d\n",d,m,y);
  488.                break;
  489.      case 60 : JulianEaster(readintyear(),&d,&m);
  490.                    printf("%u.%u.\n",d,m);
  491.                break;
  492.      case 61 : HeisEaster(readintyear(),&d,&m);
  493.                    printf("%u.%u.\n",d,m);
  494.                break;
  495.      case 62 : jd = GregorianMoonPhase(readshortcardday(),readshortcardmonth(),readintyear(),readmoonphase());
  496.                JDToGregorian(jd,&d,&m,&y);
  497.                printf("%u.%u.%d\n",d,m,y);
  498.                break;
  499.          default : printf("Wong number! Try again!\n");
  500.         }
  501.       if (input > 0)
  502.         {printf("0 : Menu; >0 : test again - ");
  503.          scanf("%u",&repeat);
  504.         }
  505.       else
  506.         repeat = 0;
  507.      }
  508.     while (repeat != 0);
  509.    }
  510.   while (input != 0);
  511.   #ifndef __SASC_650
  512.     _DateCleanup();
  513.   #endif
  514.   #ifdef _AMIGA
  515.     #ifdef LIBTEST
  516.         CloseLibrary(DateBase);
  517.        }
  518.     #endif
  519.   #endif
  520.  }
  521.