/***************************************************************************** AUTHOR: Speedy Mercer WEBSITE: http://www.herohog.com E-MAIL: code AT herohog.com LEGAL: This program is provided for FREE. There is NO warranty either written or implied. *****************************************************************************/ /* Convert a Standard Julian Date to a Progress Date Value. Usage Syntax: DEF VAR vJulian AS INTEGER INIT 2453084 NO-UNDO. DEF VAR vDate AS DATE NO-UNDO. RUN FromJulianDate.p (INPUT vJulian, OUTPUT vDate). DISP vDate. */ DEF INPUT PARAM vJulian AS INTEGER NO-UNDO. DEF OUTPUT PARAM vDate AS DATE NO-UNDO. DEF VAR vYear AS INTEGER NO-UNDO. DEF VAR vCentury AS INTEGER NO-UNDO. DEF VAR vDecade AS INTEGER NO-UNDO. DEF VAR vMonth AS INTEGER NO-UNDO. DEF VAR vDay AS INTEGER NO-UNDO. ASSIGN vJulian = vJulian - 1721119 vYear = TRUNCATE(DECIMAL((4 * vJulian - 1) / 146097), 0) vJulian = TRUNCATE(DECIMAL(4 * vJulian - 1 - 146097 * vYear), 0) vDay = TRUNCATE(DECIMAL(vJulian / 4), 0) vJulian = TRUNCATE(DECIMAL((4 * vDay + 3) / 1461), 0) vDay = TRUNCATE(DECIMAL(4 * vDay + 3 - 1461 * vJulian), 0) vDay = TRUNCATE(DECIMAL((vDay + 4) / 4), 0) vMonth = TRUNCATE(DECIMAL((5 * vDay - 3) / 153), 0) vDay = TRUNCATE(DECIMAL(5 * vDay - 3 - 153 * vMonth), 0) vDay = TRUNCATE(DECIMAL((vDay + 5) / 5), 0) vYear = TRUNCATE(DECIMAL(100 * vYear + vJulian), 0). IF vMonth < 10 THEN vMonth = vMonth + 3. ELSE ASSIGN vMonth = vMonth - 9 vYear = vYear + 1. vDate = DATE(STRING(vMonth) + "/" + STRING(vDay) + "/" + STRING(vYear)).