***********************************************************
* 1B01 VIRS data check                
* FORTRAN version                  98/06/24  Y.Suzuki@restec
*
*    Listing 1B01 metadata information, latitude, longitude, 
*    scan time and radiance.
*
*USAGE:
*        f_1b01rd '1B01_File_Name'
*
*  This program is FREEWARE, so there is NO SUPPORT.
************************************************************

#include "TKfortranDeclare.h"
#include "IO.h"
#include "IO_VIRS.h"

c     Variables related to toolkit 
      record /WRAPPER_HANDLE/   granuleHandle1B01
      record /L1B_01_SWATHDATA/ read_L1B01_data
      record /DATE_STR/  beginDate
      record /TIME_STR/  beginTime
      record /DATE_STR/  endDate
      record /TIME_STR/  endTime

c     Other variables
      integer status
      character*100 argv(1)
      character*50 granuleID, algorithmID, 
     *             algorithmVersion, toolkitVersion


c     Define input and output file names 
      marg = iargc()
      if( marg .ne. 1 ) then
          write(6,*) ' USAGE : f_1b01rd 1B01_FileName '
          stop 
      end if
      call getarg( 1, argv(1) )

c     Open input file
      write(6,*) argv(1)
      status = TKopen( argv(1), TK_L1B_01, TK_READ_ONLY, 
     *                 granuleHandle1B01)
      if(status .ne. TK_SUCCESS) then
         write(6,*) ' TRMM file open error'
         stop 
      end if

c     check metadata 

      status = TKreadMetadataInt(granuleHandle1B01,
     *                   TK_BEGIN_DATE, beginDate)                 
      status = TKreadMetadataInt(granuleHandle1B01,
     *                   TK_BEGIN_TIME, beginTime)
      status = TKreadMetadataInt(granuleHandle1B01,
     *                   TK_END_DATE, endDate)
      status = TKreadMetadataInt(granuleHandle1B01,
     *                   TK_END_TIME, endTime)

      write(6,'(1x,a,i4,a,i2,a,i2)') 
     *           ' beginDate        = ',beginDate.tkyear,'/',
     *            beginDate.tkmonth,'/', beginDate.tkday
      write(6,'(1x,a,i4,a,i2,a,i2)') 
     *           ' beginTime        = ',beginTime.tkhour,':',
     *            beginTime.tkminute,':', beginTime.tksecond
      write(6,'(1x,a,i4,a,i2,a,i2)') 
     *           ' endDate          = ',endDate.tkyear,'/',
     *            endDate.tkmonth,'/', endDate.tkday
      write(6,'(1x,a,i4,a,i2,a,i2)') 
     *           ' endTime          = ',endTime.tkhour,':',
     *            endTime.tkminute,':', endTime.tksecond

      status = TKreadMetadataInt(granuleHandle1B01,
     *                   TK_ORBIT_SIZE, iorbitSize)
      write(6,*) ' orbitSize        = ', iorbitSize
      numberOfScan = iorbitSize 

      status = TKreadMetadataChar(granuleHandle1B01,
     *                   TK_GRANULE_ID, granuleID)
      status = TKreadMetadataChar(granuleHandle1B01,
     *                   TK_ALGORITHM_ID, algorithmID)
      status = TKreadMetadataChar(granuleHandle1B01,
     *                   TK_ALGORITHM_VERSION, algorithmVersion)
      status = TKreadMetadataChar(granuleHandle1B01,
     *                   TK_TOOLKIT_VERSION, toolkitVersion)
      write(6,*) ' granuleID        = ',  granuleID
      write(6,*) ' algorithmID      = ', algorithmID
      write(6,*) ' algorithmVersion = ', algorithmVersion
      write(6,*) ' toolkitVersion   = ', toolkitVersion

c   read scan by scan  */

c     scan loop
      do 10 iScan=1,numberOfScan

       status = TKreadScan(granuleHandle1B01,read_L1B01_data) 

       if( status .ne. TK_SUCCESS ) then
         write(6,*) ' Read Scan Error'
       else

c        angle loop
         do 20 i=1,261

         write(6,600) iScan, numberOfScan,
c                                     UTC seconds of the day
     *                read_L1B01_data.scanTime, i,
c                                     Latitude (deg)
     *                read_L1B01_data.geolocation(1,i),
c                                     Longitude (deg)
     *                read_L1B01_data.geolocation(2,i)
  600    format( ' scan = ',i5,'/',i5,'  ScanTime : ',f9.3,
     *           '  IFOV : ',i3,'  Lat,Lon : ',f9.3,',',f9.3)

c            radiance (mW cm^-2 um^-1 sr^-1) multiplied by a scale factor
c            scale factors are 500, 1000, 100000, 10000, and 10000 
         write(6,610) (read_L1B01_data.channels(j,i),j=1,5)
  610    format( 5(1x,f9.5) )

   20    continue
       end if
   10 continue

c     close TRMM data 
      status = TKclose(granuleHandle1B01)

      stop
      end