NCEPLIBS-w3emc  2.9.2
w3pradat.f
1 !-----------------------------------------------------------------------
2  subroutine w3pradat(idat,cdat)
3 !$$$ SUBPROGRAM DOCUMENTATION BLOCK
4 !
5 ! SUBPROGRAM: W3PRADAT FORMAT A DATE AND TIME INTO CHARACTERS
6 ! AUTHOR: MARK IREDELL ORG: WP23 DATE: 98-01-05
7 !
8 ! ABSTRACT: THIS SUBPROGRAM FORMS VARIOUS CHARACTER STRINGS USEFUL
9 ! IN DESCRIBING AN NCEP ABSOLUTE DATE AND TIME.
10 !
11 ! PROGRAM HISTORY LOG:
12 ! 98-01-05 MARK IREDELL
13 !
14 ! USAGE: CALL W3PRADAT(IDAT,CDAT)
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 ! CDAT CHARACTER*10 (8) STRINGS DESCRIBING DATE AND TIME
23 ! (CDAT(1) IS THE NAME OF THE DAY OF THE WEEK;
24 ! CDAT(2) IS THE NAME OF THE MONTH;
25 ! CDAT(3) IS THE DAY OF MONTH, YEAR;
26 ! CDAT(4) IS THE DATE IN YYYY-MM-DD FORMAT;
27 ! CDAT(5) IS THE DATE IN YYYY.DOY FORMAT;
28 ! CDAT(6) IS THE TIME IN HH:MM:SS FORMAT;
29 ! CDAT(7) IS THE MILLISECONDS IN .XXX FORMAT;
30 ! CDAT(8) IS THE TIME ZONE.)
31 !
32 ! SUBPROGRAMS CALLED:
33 ! IW3JDN COMPUTE JULIAN DAY NUMBER
34 ! W3FS26 YEAR, MONTH, DAY FROM JULIAN DAY NUMBER
35 !
36 ! ATTRIBUTES:
37 ! LANGUAGE: FORTRAN 90
38 !
39 !$$$
40  integer idat(8)
41  character*(*) cdat(8)
42  character*10 ctmp(8)
43  character*10 cmon(12)
44  data cmon/'January ','February ','March ',
45  & 'April ','May ','June ',
46  & 'July ','August ','September ',
47  & 'October ','November ','December '/
48  character*10 cdow(7)
49  data cdow/'Sunday ','Monday ','Tuesday ',
50  & 'Wednesday ','Thursday ','Friday ',
51  & 'Saturday '/
52 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
53 ! get day of week and day of year, convert day of week and month
54 ! to english names, write other formats of date and time, and
55 ! write time zone differential in one of three ways.
56  jldayn=iw3jdn(idat(1),idat(2),idat(3))
57  call w3fs26(jldayn,jy,jm,jd,jdow,jdoy)
58  ctmp(1)=cdow(jdow)
59  ctmp(2)='********'
60  if(idat(2).ge.1.and.idat(2).le.12) ctmp(2)=cmon(idat(2))
61  write(ctmp(3),'(i2,", ",i4)') idat(3),idat(1)
62  write(ctmp(4),'(i4,"-",i2.2,"-",i2.2)') idat(1),idat(2),idat(3)
63  write(ctmp(5),'(i4,".",i3.3)') idat(1),jdoy
64  write(ctmp(6),'(i2.2,":",i2.2,":",i2.2)') idat(5),idat(6),idat(7)
65  write(ctmp(7),'(".",i3.3)') idat(8)
66  if(idat(4).eq.0) then
67  write(ctmp(8),'("UTC")')
68  elseif(mod(idat(4),100).eq.0) then
69  kh=idat(4)/100
70  write(ctmp(8),'("UTC",sp,i3.2,"h")') kh
71  else
72  kh=idat(4)/100
73  km=abs(mod(idat(4),100))
74  write(ctmp(8),'("UTC",sp,i3.2,"h",ss,i2.2,"m")') kh,km
75  endif
76  cdat=ctmp
77 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
78  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