wrf svn trunk commit r4103
[wrffire.git] / wrfv2_fire / var / external / bufr / i4dy.inc
blobb7c10bb8869ae3b7dc785807c77fd2dfd308c697
1       FUNCTION I4DY(IDATE)
3 !$$$  SUBPROGRAM DOCUMENTATION BLOCK
5 ! SUBPROGRAM:    I4DY
6 !   PRGMMR: WOOLLEN          ORG: NP20       DATE: 1998-07-08
8 ! ABSTRACT: THIS FUNCTION CONVERTS AN EIGHT DIGIT INTEGER DATE
9 !   (YYMMDDHH) TO TEN DIGITS (YYYYMMDDHH) USING THE Y2K "WINDOWING"
10 !   TECHNIQUE.  ALL TWO-DIGIT YEARS GREATER THAN "20" ARE ASSUMED TO
11 !   HAVE A FOUR-DIGIT YEAR BEGINNING WITH "19" (1921-1999) AND ALL TWO-
12 !   DIGIT YEARS LESS THAN OR EQUAL TO "20" ARE ASSUMED TO HAVE A FOUR-
13 !   DIGIT YEAR BEGINNING WITH "20" (2000-2020).  IF THE INPUT DATE IS
14 !   ALREADY TEN DIGITS, THIS ROUTINE JUST RETURNS ITS VALUE.
16 ! PROGRAM HISTORY LOG:
17 ! 1998-07-08  J. WOOLLEN -- ORIGINAL AUTHOR
18 ! 1998-11-24  J. WOOLLEN -- MODIFIED TO CONFORM TO THE NCEP 2-DIGIT
19 !                           YEAR TIME WINDOW OF 1921-2020 (BUT
20 !                           INADVERTENTLY SET TO 1911-2010)
21 ! 1998-12-14  J. WOOLLEN -- MODIFIED TO USE 20 AS THE 2-DIGIT YEAR FOR
22 !                           WINDOWING TO A 4-DIGIT YEAR (00-20 ==> ADD
23 !                           2000; 21-99 ==> ADD 1900), THIS WINDOWING
24 !                           TECHNIQUE WAS INADVERTENTLY CHANGED TO 10
25 !                           IN THE PREVIOUS IMPLEMENTATION OF I4DY
26 !                           (1998-11-24)
27 ! 2003-11-04  S. BENDER  -- ADDED REMARKS/BUFRLIB ROUTINE
28 !                           INTERDEPENDENCIES
29 ! 2003-11-04  D. KEYSER  -- MODIFIED DATE CALCULATIONS TO NO LONGER USE
30 !                           FLOATING POINT ARITHMETIC SINCE THIS CAN
31 !                           LEAD TO ROUND OFF ERROR AND AN IMPROPER
32 !                           RESULTING DATE ON SOME MACHINES (E.G.,
33 !                           NCEP IBM FROST/SNOW), INCREASES
34 !                           PORTABILITY; UNIFIED/PORTABLE FOR WRF;
35 !                           ADDED DOCUMENTATION (INCLUDING HISTORY)
37 ! USAGE:    I4DY (IDATE)
38 !   INPUT ARGUMENT LIST:
39 !     IDATE    - INTEGER: DATE (EITHER YYMMDDHH OR YYYYMMDDHH),
40 !                DEPENDING ON DATELEN() VALUE 
42 !   OUTPUT ARGUMENT LIST:
43 !     I4DY     - INTEGER: DATE (YYYYMMDDHH)
45 ! REMARKS:
46 !    THIS ROUTINE CALLS:        None
47 !    THIS ROUTINE IS CALLED BY: CKTABA   CMSGINI  DATEBF   DUMPBF
48 !                               IUPBS01  OPENMB   OPENMG   REWNBF 
49 !                               Also called by application programs.
51 ! ATTRIBUTES:
52 !   LANGUAGE: FORTRAN 77
53 !   MACHINE:  PORTABLE TO ALL PLATFORMS
55 !$$$
57       IF(IDATE.LT.10**8) THEN
58          IY = IDATE/10**6
59          IF(IY.GT.20) I4DY = IDATE + 19*100000000
60          IF(IY.LE.20) I4DY = IDATE + 20*100000000
61       ELSE
62          I4DY = IDATE
63       ENDIF
65       RETURN
66       END FUNCTION I4DY