!--------------------------------------- LICENCE BEGIN -----------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer,
!                     version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer
!version 3 or (at your option) any later version that should be found at:
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software;
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec),
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------


      SUBROUTINE RESIDUALS(columng,columnhr,obsSpaceData) 1,7
!*
!***s/r RESIDUALS  - RESIDUALS
!*
!*Author  : P. Koclas *CMC/CMDA  Nov 1998
!*
!**    Purpose: TRANSFER resduals O-A to O-P for all observations.
!*
      use obsSpaceData_mod
      use columnData_mod
      IMPLICIT NONE

      type(struct_obs) :: obsSpaceData
      type(struct_columnData) :: columng,columnhr
      INTEGER J

      call tmg_start(2,'RESIDUALS')
      WRITE(*,FMT=9000)
 9000 FORMAT(//,3(" *****************"),/," residuals: BEGIN RESIDUAL CALCULATION",/,3(" *****************"),/)
!C
!C*    1. Preliminary initializations
!C     .  ---------------------------
!C
      CALL SIGMAOP(columng,columnhr,obsSpaceData)

      DO j =1,1
         call obs_prnthdr(obsSpaceData,j)
         call obs_prntbdy(obsSpaceData,j)
      END DO

      CALL UPDATE_BURPFILES(obsSpaceData)

      ! deallocate obsSpaceData
      call obs_finalize(obsSpaceData)

      call tmg_stop (2)

      RETURN
      END SUBROUTINE RESIDUALS