NCEPLIBS-w3emc  2.9.2
w3valdat.f
1 !-----------------------------------------------------------------------
2  logical function w3valdat(idat)
3 !$$$ SUBPROGRAM DOCUMENTATION BLOCK
4 !
5 ! SUBPROGRAM: W3VALDAT DETERMINE THE VALIDITY OF A DATE AND TIME
6 ! AUTHOR: MARK IREDELL ORG: WP23 DATE: 98-01-05
7 !
8 ! ABSTRACT: THIS LOGICAL FUNCTION RETURNS TRUE IF THE INPUT IS A VALID
9 ! NCEP ABSOLUTE DATE AND TIME.
10 !
11 ! PROGRAM HISTORY LOG:
12 ! 98-01-05 MARK IREDELL
13 !
14 ! USAGE: ...=W3VALDAT(IDAT)
15 !
16 ! INPUT VARIABLES:
17 ! IDAT INTEGER (8) NCEP ABSOLUTE DATE AND TIME
18 ! (YEAR, MONTH, DAY, TIME ZONE,
19 ! HOUR, MINUTE, SECOND, MILLISECOND)
20 !
21 ! OUTPUT VARIABLES:
22 ! W3VALDAT LOGICAL TRUE IF IDAT IS A VALID NCEP DATE AND TIME
23 !
24 ! SUBPROGRAMS CALLED:
25 ! IW3JDN COMPUTE JULIAN DAY NUMBER
26 ! W3FS26 YEAR, MONTH, DAY FROM JULIAN DAY NUMBER
27 ! W3REDDAT REDUCE A TIME INTERVAL TO A CANONICAL FORM
28 !
29 ! ATTRIBUTES:
30 ! LANGUAGE: FORTRAN 90
31 !
32 !$$$
33  integer idat(8)
34  real rinc1(5),rinc2(5)
35  integer jdat(8)
36 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
37 ! essentially move the date and time by a zero time interval
38 ! and see if the same date and time is returned
39  rinc1(1)=0
40  rinc1(2:5)=idat(5:8)
41  call w3reddat(-1,rinc1,rinc2)
42  jldayn=iw3jdn(idat(1),idat(2),idat(3))+nint(rinc2(1))
43  call w3fs26(jldayn,jdat(1),jdat(2),jdat(3),jdow,jdoy)
44 ! the time zone is valid if it is in signed hhmm format
45 ! with hh between -23 and 23 and mm equal to 00 or 30
46  jdat(4)=mod(idat(4)/100,24)*100+mod(mod(idat(4),100),60)/30*30
47  jdat(5:8)=nint(rinc2(2:5))
48  w3valdat=all(idat.eq.jdat)
49 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
50  end
w3fs26
subroutine w3fs26(JLDAYN, IYEAR, MONTH, IDAY, IDAYWK, IDAYYR)
Computes year (4 digits), month, day, day of week, day of year from julian day number.
Definition: w3fs26.f:56
iw3jdn
function iw3jdn(IYEAR, MONTH, IDAY)
Computes julian day number from year (4 digits), month, and day.
Definition: iw3jdn.f:42