home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cenvi23.zip / COMPDATE.CMM < prev    next >
Text File  |  1995-09-18  |  2KB  |  58 lines

  1. // CompDate.cmm - Compare two dates, using exit code to indicate if
  2. // ver.1          before date, on date, or after date.
  3. //                Exit: 0 if date1 < date2
  4. //                      1 if date1 = date2
  5. //                      2 if date1 > date2
  6. //                      3 if error on date input
  7. //
  8.  
  9. Instructions()
  10. {
  11.    puts(`CompDate - Compare two dates`)
  12.    puts("\a")
  13.    puts(`USAGE: CEnvi CompDate date1 [date2]`)
  14.    puts(``)
  15.    puts(`WHERE: date1 - first date in MM/DD/YY or MM/DD/YYYY format`)
  16.    puts(`       date2 - second date in MM/DD/YY or MM/DD/YYYY format; optional,`)
  17.    puts(`               if not supplied then used today's date`)
  18.    puts(``)
  19.    puts(`EXIT: Exit codes may be the followin`)
  20.    puts(`         0:   date1 < date2`)
  21.    puts(`         1:   date1 = date2`)
  22.    puts(`         2:   date1 > date2`)
  23.    puts(`         3:   date1 or date2 invalid`)
  24.    puts(``)
  25.    exit(3);
  26. }
  27.  
  28. main(argc,argv)
  29. {
  30.    if ( argc == 2 ) {
  31.       date1 = ConvertDateToYYYYMMDD(argv[1]);
  32.       // no date2 supplied, so use current time
  33.       strftime(date2,"%Y%m%d",localtime(time()));
  34.    } else if ( argc == 3 ) {
  35.       // date1 and date2 are supplied
  36.       date1 = ConvertDateToYYYYMMDD(argv[1]);
  37.       date2 = ConvertDateToYYYYMMDD(argv[2]);
  38.  
  39.    } else {
  40.       // invalid input
  41.       Instructions();
  42.    }
  43.    // return comparisons of dates, return 0, 1, or 2
  44.    if ( comp = strcmp(date1,date2) )
  45.       comp = ( comp < 0 ) ? -1 : 1 ;
  46.    return comp + 1;
  47. }
  48.  
  49. ConvertDateToYYYYMMDD(mmddyy)
  50. {
  51.    if ( 3 != sscanf(mmddyy,"%d/%d/%d",Month,Day,Year) )
  52.       Instructions();
  53.    if ( Year < 1000 )   // always use 4-digit year
  54.       Year += ( Year < 20 ) ? 2000 : 1900 ;
  55.    sprintf(yyyymmdd,"%04d%02d%02d",Year,Month,Day);
  56.    return yyyymmdd;
  57. }
  58.