<HTML> <BODY BGCOLOR=#ccccdd LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE>
<A NAME='DA_OBS_DIAGNOSTICS'><A href='../../html_code/sound/da_obs_diagnostics.inc.html#DA_OBS_DIAGNOSTICS' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>

subroutine da_obs_diagnostics(num_sound, ob, iv, re),10

   !-----------------------------------------------------------------------
   ! Purpose: TBD
   !-----------------------------------------------------------------------

   implicit none

   integer,                    intent(in) :: num_sound
   type (residual_sound_type), intent(in) :: ob(:)
   type (sound_type),          intent(in) :: iv(:)
   type (residual_sound_type), intent(in) :: re(:)

   integer :: n, k
   integer :: sound_diag_unit1
   integer :: sound_diag_unit2
   integer :: sound_diag_unit3
   integer :: sound_diag_unit4

   if (trace_use) call da_trace_entry("da_obs_diagnostics")

   call da_get_unit(sound_diag_unit1)
   call da_get_unit(sound_diag_unit2)
   call da_get_unit(sound_diag_unit3)
   call da_get_unit(sound_diag_unit4)
   open(unit=sound_diag_unit1,file="sound_diag1",status="replace") 
   open(unit=sound_diag_unit2,file="sound_diag2",status="replace") 
   open(unit=sound_diag_unit3,file="sound_diag3",status="replace") 
   open(unit=sound_diag_unit4,file="sound_diag4",status="replace") 

   do n = 1, num_sound
      do k = 1, iv(n) % info % levels
         if (iv(n) % u(k) % qc &gt;= obs_qc_pointer) then
            write(unit=sound_diag_unit1,fmt='(a5,2f9.3,5f17.7,i8)') &amp;
               iv(n) % info % id, &amp;   ! Station
               iv(n) % info % lat, &amp;  ! Latitude
               iv(n) % info % lon, &amp;  ! Longitude
               iv(n) % p(k), &amp;        ! Obs Pressure
               ob(n) % u(k), &amp;        ! O
               iv(n) % u(k) % inv, &amp;  ! O-B
               re(n) % u(k), &amp;        ! O-A
               iv(n) % u(k) % error, &amp;! Obs error
               iv(n) % u(k) % qc      ! QC flag
         end if

         if (iv(n) % v(k) % qc &gt;= obs_qc_pointer) then
            write(unit=sound_diag_unit2,fmt='(a5,2f9.3,5f17.7,i8)') &amp;
               iv(n) % info % id, &amp; ! Station
               iv(n) % info % lat, &amp;  ! Latitude
               iv(n) % info % lon, &amp;  ! Longitude
               iv(n) % h(k), &amp;        ! Obs Pressure
               ob(n) % v(k), &amp;        ! O
               iv(n) % v(k) % inv, &amp;  ! O-B
               re(n) % v(k), &amp;        ! O-A
               iv(n) % v(k) % error, &amp;! Obs error
               iv(n) % v(k) % qc      ! QC flag
         end if

         if (iv(n) % t(k) % qc &gt;= obs_qc_pointer) then
            write(unit=sound_diag_unit3,fmt='(a5,2f9.3,5f17.7,i8)') &amp;
               iv(n) % info % id, &amp; ! Station
               iv(n) % info % lat, &amp;  ! Latitude
               iv(n) % info % lon, &amp;  ! Longitude
               iv(n) % h(k), &amp;        ! Obs Pressure
               ob(n) % t(k), &amp;        ! O
               iv(n) % t(k) % inv, &amp;  ! O-B
               re(n) % t(k), &amp;        ! O-A
               iv(n) % t(k) % error, &amp;! Obs error
               iv(n) % t(k) % qc      ! QC flag
         end if

         if (iv(n) % q(k) % qc &gt;= obs_qc_pointer) then
            write(unit=sound_diag_unit4,fmt='(a5,2f9.3,5f17.7,i8)') &amp;
               iv(n) % info % id, &amp; ! Station
               iv(n) % info % lat, &amp;  ! Latitude
               iv(n) % info % lon, &amp;  ! Longitude
               iv(n) % h(k), &amp;        ! Obs Pressure
               ob(n) % q(k), &amp;        ! O
               iv(n) % q(k) % inv, &amp;  ! O-B (kg/kg)
               re(n) % q(k), &amp;        ! O-A
               iv(n) % q(k) % error, &amp;! Obs error (kg/kg)
               iv(n) % q(k) % qc      ! QC flag 
         end if              
      end do
   end do

   !  End of file markers:
   write(unit=sound_diag_unit1,fmt='(a5,2f9.3,5f17.7,i8)') &amp;
     '00000',0.0,0.0,0.0,0.0,0.0,0.0,0.0,0

   write(unit=sound_diag_unit2,fmt='(a5,2f9.3,5f17.7,i8)') &amp;
     '00000',0.0,0.0,0.0,0.0,0.0,0.0,0.0,0

   write(unit=sound_diag_unit3,fmt='(a5,2f9.3,5f17.7,i8)') &amp;
     '00000',0.0,0.0,0.0,0.0,0.0,0.0,0.0,0

   write(unit=sound_diag_unit4,fmt='(a5,2f9.3,5f17.7,i8)') &amp;
      '00000',0.0,0.0,0.0,0.0,0.0,0.0,0.0,0

   close(sound_diag_unit1)
   close(sound_diag_unit2)
   close(sound_diag_unit3)
   close(sound_diag_unit4)
   call da_free_unit(sound_diag_unit1)
   call da_free_unit(sound_diag_unit2)
   call da_free_unit(sound_diag_unit3)
   call da_free_unit(sound_diag_unit4)

   if (trace_use) call da_trace_exit("da_obs_diagnostics")

 end subroutine da_obs_diagnostics