SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
day_of_week.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 !################################################
6 SUBROUTINE day_of_week(PYEAR, PMONTH, PDAY, PDOW)
7 !################################################
8 !! DAY_OF_WEEK
9 !!
10 !! PURPOSE
11 !! -------
12 !! DAY_OF_WEEK COMPUTES THE DAY OF THE WEEK BASED UPON THE GIVEN DATE,
13 !! MONTH AND YEAR. IT USES THE ZELLER CONGRUENCE ALGORITHIM.
14 !! PDAY IS THE DAY OF THE MONTH, 1 - 31
15 !! PMONTH IS THE MONTH OF THE YEAR, 1 - 12
16 !! PYEAR IS THE YEAR, E.G., 1977
17 !! IT RETURNS 1 FOR SUNDAY, 2 FOR MONDAY, ETC.
18 !!
19 !! AUTHOR
20 !! ------
21 !! G. Pigeon *Météo-France*
22 !!
23 !! MODIFICATIONS
24 !! -------------
25 !! Original 02/2010
26 
27 USE yomhook ,ONLY : lhook, dr_hook
28 USE parkind1 ,ONLY : jprb
29 !
30 !! DECLARATION
31 IMPLICIT NONE
32 !! 1. declaraction of arguments
33 INTEGER,INTENT(IN) :: pyear !current year (UTC)
34 INTEGER,INTENT(IN) :: pmonth!current month (UTC)
35 INTEGER,INTENT(IN) :: pday !current day (UTC)
36 INTEGER,INTENT(OUT):: pdow !current day of the week
37 !!
38 !! 2. declaration of local variables
39 INTEGER :: day, yr, mn, n1, n2
40 REAL(KIND=JPRB) :: zhook_handle
41 IF (lhook) CALL dr_hook('DAY_OF_WEEK',0,zhook_handle)
42 !
43 yr = pyear
44 mn = pmonth
45 
46 ! IF JANUARY OR FEBRUARY, ADJUST MONTH AND YEAR
47 
48 IF (mn .LE. 2) THEN
49  mn = mn + 12
50  yr = yr - 1
51 END IF
52 n1 = (26 * (mn + 1)) / 10
53 n2 = (125 * yr) / 100
54 day = pday + n1 + n2 - (yr / 100) + (yr / 400) - 1
55 pdow = mod(day, 7) + 1
56 !
57 IF (lhook) CALL dr_hook('DAY_OF_WEEK',1,zhook_handle)
58 !
59 END SUBROUTINE day_of_week
subroutine day_of_week(DATE, MONTH, YEAR, DOW)