*IF DEF,FLUXPROC                                                           FPANCTIM.2      
C ******************************COPYRIGHT******************************    FPANCTIM.3      
C (c) CROWN COPYRIGHT 1998, METEOROLOGICAL OFFICE, All Rights Reserved.    FPANCTIM.4      
C                                                                          FPANCTIM.5      
C Use, duplication or disclosure of this code is subject to the            FPANCTIM.6      
C restrictions as set forth in the contract.                               FPANCTIM.7      
C                                                                          FPANCTIM.8      
C                Meteorological Office                                     FPANCTIM.9      
C                London Road                                               FPANCTIM.10     
C                BRACKNELL                                                 FPANCTIM.11     
C                Berkshire UK                                              FPANCTIM.12     
C                RG12 2SZ                                                  FPANCTIM.13     
C                                                                          FPANCTIM.14     
C If no contract has been raised with this copy of the code, the use,      FPANCTIM.15     
C duplication or disclosure of it is strictly prohibited.  Permission      FPANCTIM.16     
C to do so must first be obtained in writing from the Head of Numerical    FPANCTIM.17     
C Modelling at the above address.                                          FPANCTIM.18     
C ******************************COPYRIGHT******************************    FPANCTIM.19     
C                                                                          FPANCTIM.20     
C Programming standard: Unified Model Documentation Paper No 3             FPANCTIM.21     
C                       Version No 1 15/1/90                               FPANCTIM.22     
C History:                                                                 FPANCTIM.23     
C version  date         change                                             FPANCTIM.24     
C 4.5      03/09/98     New code                                           FPANCTIM.25     
C                                                                          FPANCTIM.26     
! Author:     M. J. Bell                                                   FPANCTIM.27     
!----------------------------------------------------------------------    FPANCTIM.28     
! contains progam:   set_ancillary_time                                    FPANCTIM.29     
!                                                                          FPANCTIM.30     
! Purpose: Flux processing routine.                                        FPANCTIM.31     
!          Writes namelists which determine the validity times in the      FPANCTIM.32     
!          fixed headers of the FOAM flux ancillary files                  FPANCTIM.33     
!----------------------------------------------------------------------    FPANCTIM.34     

      Program set_ancillary_time                                           ,6FPANCTIM.35     
                                                                           FPANCTIM.36     
      implicit none                                                        FPANCTIM.37     
                                                                           FPANCTIM.38     
! declaration of globals                                                   FPANCTIM.39     
                                                                           FPANCTIM.40     
*CALL CUNITNOS                                                             FPANCTIM.41     
*CALL CREFTIM                                                              FPANCTIM.42     
                                                                           FPANCTIM.43     
! declaration of local scalars                                             FPANCTIM.44     
                                                                           FPANCTIM.45     
      integer fvhh,fvdd,fvmm,fvyy    ! first validity time                 FPANCTIM.46     
      integer lvhh,lvdd,lvmm,lvyy    ! last validity time                  FPANCTIM.47     
      integer ivhh,ivdd,ivmm,ivyy    ! interval between fields in file     FPANCTIM.48     
                                                                           FPANCTIM.49     
      logical year360                ! true for 360-day calendar           FPANCTIM.50     
                                                                           FPANCTIM.51     
      integer first_vt_offset        ! offset in hours of first validity   FPANCTIM.52     
                                     ! time from reference time            FPANCTIM.53     
                                                                           FPANCTIM.54     
      integer last_vt_offset         ! offset in hours of first validity   FPANCTIM.55     
                                     ! time from reference time            FPANCTIM.56     
                                                                           FPANCTIM.57     
      integer imins, isecs           ! minutes and seconds discarded       FPANCTIM.58     
                                                                           FPANCTIM.59     
      integer icode                  ! error return code; > 0 => error     FPANCTIM.60     
                                                                           FPANCTIM.61     
                                                                           FPANCTIM.62     
! declaration of namelists                                                 FPANCTIM.63     
                                                                           FPANCTIM.64     
      namelist /offset_vt/ first_vt_offset,last_vt_offset                  FPANCTIM.65     
                                                                           FPANCTIM.66     
      namelist /first_vt/ fvhh,fvdd,fvmm,fvyy                              FPANCTIM.67     
      namelist /last_vt/  lvhh,lvdd,lvmm,lvyy                              FPANCTIM.68     
      namelist /interval/ year360,ivhh,ivdd,ivmm,ivyy                      FPANCTIM.69     
                                                                           FPANCTIM.70     
! declaration of externals                                                 FPANCTIM.71     
      external open_file, readhk, add_hours                                FPANCTIM.72     
!----------------------------------------------------------------------    FPANCTIM.73     
                                                                           FPANCTIM.74     
! 0. Preliminaries                                                         FPANCTIM.75     
      icode = 0                                                            FPANCTIM.76     
                                                                           FPANCTIM.77     
! 1. Open files for input and output                                       FPANCTIM.78     
                                                                           FPANCTIM.79     
! 1.1 open housekeeping file                                               FPANCTIM.80     
      call open_file(UnitHK, 'Formatted  ', 'Unknown', icode)              FPANCTIM.81     
      if ( icode .ne. 0 ) then                                             FPANCTIM.82     
        write(6,*) ' ERROR: set_ancillary_time: 1.1 ',                     FPANCTIM.83     
     #             ' unable to open housekeeping file'                     FPANCTIM.84     
        go to 9999                                                         FPANCTIM.85     
      end if                                                               FPANCTIM.86     
                                                                           FPANCTIM.87     
                                                                           FPANCTIM.88     
!  open Validity time selection file                                       FPANCTIM.89     
      call open_file(UnitVT, 'Formatted  ', 'Unknown', icode)              FPANCTIM.90     
      if ( icode .ne. 0 ) then                                             FPANCTIM.91     
        write(6,*) ' ERROR: set_ancillary_time: 1.2 ',                     FPANCTIM.92     
     #             ' unable to open Validity time selection file'          FPANCTIM.93     
        go to 9999                                                         FPANCTIM.94     
      end if                                                               FPANCTIM.95     
                                                                           FPANCTIM.96     
! open output file for ancillary file validity times namelist              FPANCTIM.97     
      call open_file(UnitVTOut, 'Formatted  ', 'Unknown', icode)           FPANCTIM.98     
      if ( icode .ne. 0 ) then                                             FPANCTIM.99     
        write(6,*) ' ERROR: set_ancillary_time: 1.3 ',                     FPANCTIM.100    
     #             ' unable to open Validity times output file'            FPANCTIM.101    
        go to 9999                                                         FPANCTIM.102    
      end if                                                               FPANCTIM.103    
                                                                           FPANCTIM.104    
                                                                           FPANCTIM.105    
! 1. Read house keeping file to set reference date                         FPANCTIM.106    
      RefSec = 0                                                           FPANCTIM.107    
      RefMin = 0                                                           FPANCTIM.108    
      call readhk(UnitHK, RefHour, RefDay, RefMonth, RefYear,icode)        FPANCTIM.109    
                                                                           FPANCTIM.110    
! Read offset_vt  namelist                                                 FPANCTIM.111    
      first_vt_offset =  0                                                 FPANCTIM.112    
      last_vt_offset =  0                                                  FPANCTIM.113    
                                                                           FPANCTIM.114    
      read ( UnitVT, offset_vt )                                           FPANCTIM.115    
      write ( 6, offset_vt )                                               FPANCTIM.116    
                                                                           FPANCTIM.117    
! Read interval namelist                                                   FPANCTIM.118    
                                                                           FPANCTIM.119    
      year360=.false.                                                      FPANCTIM.120    
      ivhh=0                                                               FPANCTIM.121    
      ivdd=0                                                               FPANCTIM.122    
      ivmm=0                                                               FPANCTIM.123    
      ivyy=0                                                               FPANCTIM.124    
                                                                           FPANCTIM.125    
      read ( UnitVT, interval )                                            FPANCTIM.126    
      write ( 6, interval )                                                FPANCTIM.127    
                                                                           FPANCTIM.128    
! Set first validity time                                                  FPANCTIM.129    
      call add_hours (                                                     FPANCTIM.130    
*CALL AREFTIM                                                              FPANCTIM.131    
     #  fvyy, fvmm, fvdd, fvhh, imins, isecs,                              FPANCTIM.132    
     #  first_vt_offset )                                                  FPANCTIM.133    
                                                                           FPANCTIM.134    
      write (6, first_vt)                                                  FPANCTIM.135    
                                                                           FPANCTIM.136    
! Set last validity time                                                   FPANCTIM.137    
      call add_hours (                                                     FPANCTIM.138    
*CALL AREFTIM                                                              FPANCTIM.139    
     #  lvyy, lvmm, lvdd, lvhh, imins, isecs,                              FPANCTIM.140    
     #  last_vt_offset )                                                   FPANCTIM.141    
                                                                           FPANCTIM.142    
      write (6, last_vt)                                                   FPANCTIM.143    
                                                                           FPANCTIM.144    
! Write output namelists                                                   FPANCTIM.145    
                                                                           FPANCTIM.146    
      write ( UnitVTOut, first_vt )                                        FPANCTIM.147    
      write ( UnitVTOut, interval )                                        FPANCTIM.148    
      write ( UnitVTOut, last_vt )                                         FPANCTIM.149    
                                                                           FPANCTIM.150    
! close files                                                              FPANCTIM.151    
      close (UnitHK)                                                       FPANCTIM.152    
      close (UnitVT)                                                       FPANCTIM.153    
      close (UnitVTOut)                                                    FPANCTIM.154    
                                                                           FPANCTIM.155    
9999  continue                                                             FPANCTIM.156    
                                                                           FPANCTIM.157    
      stop                                                                 FPANCTIM.158    
      end                                                                  FPANCTIM.159    
!----------------------------------------------------------------------    FPANCTIM.160    
*ENDIF                                                                     FPANCTIM.161