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