

;@/home/mccronep/idl/pmc-projects/child_vdata.pro
;@/home/mccronep/idl/pmc-projects/read_sds.pro
;@/home/mccronep/idl/pmc-projects/util_blank.pro
;@/home/mccronep/idl/pmc-projects/read_meta.pro
;@/home/mccronep/idl/pmc-projects/choose_config.pro
;@/home/mccronep/idl/pmc-projects/util.pro
;@/home/mccronep/idl/pmc-projects/convert_hdf_to_trmm.pro
;@/home/mccronep/idl/pmc-projects/M4B/Replace_Spaces_With_Underscores.pro
;@/home/mccronep/idl/pmc-projects/M4B/Move_files_w_Spaces_2_Underscores.pro

;
;
;
;
; Micelaneous Procedures
;
;
;==-FNMOC/N34D IDL PROGRAM DEFINITION-==========================================
;
;  NAMES:   WWD
;
;  PROGRAM OVERVIEW:
;               (1) WWD deletes all graphics windows in IDL.
;------------------------------------------------------------------------------
; PARAMETER TABLE:
;------------------------------------------------------------------------------
;
; I/O           NAME              TYPE       FUNCTION
;------------------------------------------------------------------------------
;  I          QSCAT Files         input file name
;_______________________________________________________________________________
;==============================================================================
;
;==============================================================================
;-
;
; Programmer: Mr. Paul McCrone     31 August 2009
;
; Modified  : NONE
;==============================================================================
;  NOTE: THIS PROGRAM ASSUMES THE USE OF IDL version 7.0 for RHEL.
;        Linux lx37.uc.nps.edu 2.4.21-40.ELsmp #1 SMP Thu Feb 2 22:22:39 EST 2006 i686 i686 i386 GNU/Linux
;
;        It should work in other UNIX/LINUX when O/S specific spawns are changed.
;
;---------------------------------------------------------------
;
;
;
;---------------------------------------------------------------
;
;
;========================================================================================
;
;

PRO WWD


        WHILE (!D.WINDOW ne -1) DO WDELETE

END


;
;========================================================================================
;========================================================================================
;
;========================================================================================
;

PRO CONTINUE_NOW,ANSWER

;---------------------------------------------------------------------------------------

        valid_selection = 0
        ANSWER = 'n'

        REPEAT BEGIN
               valid_selection = 0

               ; Define KEYBOARD as a string before reading:
               KEYBOARD = ''
               ; Read input from the terminal:
               READ, KEYBOARD, PROMPT='TO CONTINUE THE PROGRAM NOW, HIT <Y> or <y> : '


               ;KEYINPUT=BYTE(KEYBOARD)

               ; KEYBOARD  must be a "Y" or "y"

               IF ((KEYBOARD EQ 'y' ) OR (KEYBOARD EQ 'Y')) THEN BEGIN

                     valid_selection = 1
                     HELP,valid_selection , /str
                     ANSWER=KEYBOARD
                     HELP,ANSWER , /str

               ENDIF

        ENDREP UNTIL ( valid_selection EQ 1 )
 ;---------------------------------------------------------------------------------------

TIMER = systime()
help, TIMER, /str

RETURN
END



;
;========================================================================================
;========================================================================================
;



;========================================================================================
;========================================================================================
;


PRO COMPUTE_PROCEDURE_RUNTIME, TIME_START, TIME_END, pHOURS, pMINUTES, pSECONDS

 ;---------------------------------------------------------------------------------------
 ;
 ; This procedure/subroutine will compute the amount on time needed by the system to
 ; perform the computations. It assumes that you are feeding in the start time and
 ; end time in the format shown below from the IDL 'systime' function:
 ;
 ;                ;=======================================================
 ;                ;IDL> TIME_1= systime()
 ;                ;IDL> help, TIME_1,/str
 ;                ;TIME_1          STRING    = 'Thu Feb  7 17:14:50 2008'
 ;                ;=======================================================
 ;                ;00000000001111111111222222
 ;                ;01234567890123456789012345
 ;                ;Thu Feb  7 17:14:50 2008
 ;                ;=======================================================
 ;
 ; I am going to assume that the procedure will NOT take more than 1 day to run. So I
 ; will not bother to read in the date.  However, I will read in the hours/min/sec
 ; of both the start and end time strings. If there is a situatread_qscat_ascii_protoion where the procedure
 ; starts at 23:59:00 and ends at 00:03:00, I will add 24 hours to the end time.
 ; Then, I will convert start/end times into total seconds.  Then I will determine the
 ; difference in seconds, then convert that difference back to total hours, minutes, and seconds.
 ;
 ;---------------------------------------------------------------------------------------

        start_hours_string = STRMID(TIME_START, 11,2)
          end_hours_string = STRMID(TIME_END,   11,2)

        start_min_string   = STRMID(TIME_START, 14,2)
          end_min_string   = STRMID(TIME_END,   14,2)

        start_sec_string   = STRMID(TIME_START, 17,2)
          end_sec_string   = STRMID(TIME_END,   17,2)

        start_hours = FLOAT(start_hours_string)
          end_hours = FLOAT(end_hours_string)

          start_min = FLOAT(start_min_string)
            end_min = FLOAT(end_min_string)

          start_sec = FLOAT(start_sec_string)
            end_sec = FLOAT(end_sec_string)

        IF (end_hours LT start_hours) THEN end_hours=end_hours+24.0
        total_start_seconds = 0
        total_start_seconds = (start_hours*3600.0)+(start_min*60.0)+start_sec

        total_end_seconds = 0
        total_end_seconds = (end_hours * 3600.0) +(end_min*60.0) + end_sec

        total_diff_seconds=total_end_seconds - total_start_seconds

        IF (total_diff_seconds LT 0) THEN BEGIN
                PRINT, '--error---error--error--error--'
                PRINT, 'There was an error computing processing time. '
        ENDIF

        PRINT, ' '
        PRINT, '----------------------------------------'
        PRINT, 'TOTAL SECONDS OF TIME NEEDED TO PROCESS:'
        PRINT, '----------------------------------------'
         HELP, total_diff_seconds,/str

                pHOURS = LONG(total_diff_seconds/3600.0)

        remaining_secs = total_diff_seconds - (3600.0*pHOURS)

              pMINUTES = LONG(remaining_secs/60.0)

        remaining_secs = total_diff_seconds - (3600.0*pHOURS) - (60.0*pMINUTES)

              pSECONDS = LONG(remaining_secs/1.0)

        PRINT, ' '
        PRINT, ' '
        PRINT, '----------------------------------------'
        PRINT, '----------------------------------------'
        PRINT, 'TOTAL PROCESSING TIME FROM START TO END:  '
        PRINT, '----------------------------------------'

        PRINT, 'HRS: ',pHOURS
        PRINT, 'MIN: ',pMINUTES
        PRINT, 'SEC: ',pSECONDS
        PRINT, '----------------------------------------'
        PRINT, ' '
        PRINT, ' '

RETURN
END

;
;==============================================================================
;========================================================================================
;


;
;
;
;========================================================================================
;
;
;==-FNMOC/N34D IDL PROGRAM DEFINITION-==========================================
;
;  NAME: qscat_ascii_phase
;        A.K.A. "Read Quikscat data from ASCII-Linux only"
;
;  PROGRAM OVERVIEW: Ingests USER selected ASCII Quikscat files
;                    and processes them.
;------------------------------------------------------------------------------
; PARAMETER TABLE:
;------------------------------------------------------------------------------
;
; I/O           NAME              TYPE       FUNCTION
;------------------------------------------------------------------------------
;  I      ASCII Quikscat FILES    ASCII      input file name
;  O          JPG/GTIFF           OUTPUT     IDL SAVE   intermediate step before final
;                                                        image files
;_______________________________________________________________________________
;==============================================================================
;
;==============================================================================
;-
;
; Programmer: Mr. Paul McCrone     31 AUG 2009
;
; Modified  : NONE
;==============================================================================
;  NOTE (1): THIS PROGRAM ASSUMES THE USE OF IDL version 7.0 for REDHAT LINUX 5.
;
;  NOTE (2): THE FOLLOWING PERL SCRIPT IS NEEDED TO RUN THIS PROGRAM:
;            rspc2uscr.pl
;---------------------------------------------------------------
;
;---------------------------------------------------------------
;
;---------------------------------------------------------------
;       VARIABLE DICTIONARY
;---------------------------------------------------------------
;
;       sourcepath      - Path to the sourcecode
;       PNG_PATH        - Path to write out PNG products   PRINT, "The procedure ended at  :",TIME_END
;       GEOTIFF_PATH    - Path to write out GeoTiff products
;       path            - Location of the data
;       filemask        - Identifier used to determine what data
;                         file should be read in.
;       M4B_XSIZE=1024  - Max size of graphical product in x dimension
;       M4B_YSIZE=1024  - Max size of graphical product in y dimension
;       Xsize_of_raw_data - Size of M4B HDF5 SSMI data in x dimension only
;                         - YSIZE version of this is still 1024.
;       i               - Index variable for 'i' loops
;       j               - Index variable for 'j' loops
;       iSTEP           - Step increment for 'i' loops (can be changed if needed)
;       jSTEP           - Step increment for 'j' loops (can be changed if needed)
;       xSTEP           - Step increment for 'x' loops (can be changed if needed)
;       ySTEP           - Step increment for 'y' loops (can be changed if needed)
;
;
;
;
;---------------------------------------------------------------
;
;   PRINT, "The procedure ended at  :",TIME_END
;
;
;BEGIN $MAIN$ PROGRAM

PRO qscat_ascii_phase, TDID, UPHASESPEED

	TIME_START= systime()
	TIME_END= systime()

	help, TIME_START ,/str

	PRINT, "The procedure started at:",TIME_START
	;
	;Clear all graphix windows and define PATH variables.
	;WINDOW
	;

        wwd

	TDID0=N_ELEMENTS(TDID)

	IF (TDID0 EQ 0) THEN TDID='XX'

	help, TDID, /str


        UPHASESPEED0=N_ELEMENTS(UPHASESPEED)

        IF (UPHASESPEED0 EQ 0) THEN UPHASESPEED =0


        help, UPHASESPEED, /str

        ;;;;
        ;;;;INIITIALIZE VARIABLES
        ;;;;

        PI = 3.1415926535897932384626433832795
        DEG2RAD= PI/180

       ;filemask='*.h5'
        filemask='*.quikscat.txt'

        thinning_increment = 15

        ;
	;-----------------------------------------------
	; The variables MINLAT/MAXLAT/MINLNG/MAXLNG
	; are CRITICAL because they define the region
	; in which the data will be displayed.
	; Note:
	; AREA 2:----
	; - The following lats/longs are for the 
	;   Tropical Eastern & Central Atlantic:	
	;        MINLAT= 0
	;        MAXLAT= 30
	;        MINLNG=-70
	;        MAXLNG=-10
	;-----------------------------------------------
	; Area 1:----
        ; - The following lats/longs are for the
        ;   GULF OF MEXICO & CARIBBEAN SEA:
        ;        MINLAT= 0
        ;        MAXLAT= 30
        ;        MINLNG=-100
        ;        MAXLNG=-40
        ;-----------------------------------------------
        ; Area 0:----
        ; - The following lats/longs are for the
        ;   Eastern Seaboard of the US:
        ;        MINLAT=20
        ;        MAXLAT=50
        ;        MINLNG=-90
        ;        MAXLNG=-30
        ;-----------------------------------------------
	;-----------------------------------------------
	;
	;
        ; Change the value of  REGION2SELECT4PLOT to change the area for making qscat products 
	;---------------------------------------------------------------------------------------

        REGION2SELECT4PLOT=2

        MINLAT=0
        MAXLAT=30
        MINLNG=-70
        MAXLNG=-10

	SWITCHERRORONOFF = 0

	;---------------------------------------- BEGIN SWITCH
	;
        SWITCH REGION2SELECT4PLOT  OF
		0: BEGIN
                        PRINT,"YOU SELECTED REGION ZERO."
		        MINLAT=20
		        MAXLAT=50
		        MINLNG=-90
		        MAXLNG=-30
			BREAK
		   END
                1: BEGIN
                        PRINT,"YOU SELECTED REGION One."
                        MINLAT=0
                        MAXLAT=30
                        MINLNG=-100
                        MAXLNG=-40
                        BREAK
                   END
                2: BEGIN
                        PRINT,"YOU SELECTED REGION TWO."
                        MINLAT=0
                        MAXLAT=30
                        MINLNG=-70
                        MAXLNG=-10
                        BREAK
                   END
	ENDSWITCH
	;
	;----------------------------------------END OF SWITCH

        IF ((REGION2SELECT4PLOT LT 0) OR (REGION2SELECT4PLOT GT 2)) THEN BEGIN
	        SWITCHERRORONOFF = 999
	ENDIF

        IF (SWITCHERRORONOFF EQ 999) THEN BEGIN

                PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
                PRINT,' '
                PRINT,'YOU HAVE AN ERROR WITH SELECTING A VALID REGION '
                PRINT,'(((((SELECT A VALID REGION!)))))))))))))))))))) '
                PRINT,'PROGRAM WILL END NOW: no graphics will be made. '
                PRINT,' '
                PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
                GOTO ,CLOSEOUTPROGRAM
        ENDIF ELSE BEGIN
                PRINT,'.......................................................... '
                PRINT,' '
                PRINT, ' VALID REGION SELECTED............. CONTINUE.'
                PRINT,' '
                PRINT,'.......................................................... '
        ENDELSE
	

        LAT_DIFF=MAXLAT-MINLAT
        LON_DIFF=MAXLNG-MINLNG

        IF ((LAT_DIFF LE 0) OR (LON_DIFF LE 0)) THEN BEGIN

                PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
                PRINT,' '
                PRINT,'YOU HAVE AN ERROR WITH MAX/MIN LATS/LONGS '
                PRINT,'MAX LAT  must be greater (less negative) than MIN LAT '
                PRINT,'MAX LONG must be greater (less negative) than MIN LONG '
                PRINT,'PROGRAM WILL END NOW: no graphics will be made. '
                PRINT,' '
                PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
                GOTO ,CLOSEOUTPROGRAM
        ENDIF ELSE BEGIN
                PRINT,'.......................................................... '
                PRINT,' '
                PRINT, ' LATs/LONGs make sense............. CONTINUE.'
                PRINT,' '
                PRINT,'.......................................................... '
        ENDELSE


        lat_spacing=1
        lon_spacing=1
        start_lat_point=-89
        start_lon_point=-179
        ;

        ii=0
        iii=0
        jj=0
        jjj=0
        kk=0
	kkk=0
        xx=0
        xxx=0
        yy=0
        yyy=0
        zz=0
        zzz=0
        A=0
        B=0
        C=0
        D=0
 
        ANGLE=0

        M4B_XSIZE=1024
        M4B_YSIZE=1024
        iSTEP=1
        jSTEP=1
        kSTEP=1
        xSTEP=1
        ySTEP=1
        zSTEP=1

        Xsize_of_raw_data = M4B_XSIZE *2

	XMAX=M4B_XSIZE*2
	YMAX=M4B_YSIZE

        A=1.0*XMAX/(1.0*MAXLNG-MINLNG)
	B=1.0*XMAX*(1.0*MINLNG/(1.0*MINLNG-MAXLNG))

        C=1.0*YMAX/(1.0*MAXLAT-MINLAT)
        D=1.0*YMAX*(1.0*MINLAT/(1.0*MINLAT-MAXLAT))

        help, XMAX, YMAX, /str

	help, A, B, C, D, /str


        ;imagearray=INTARR(Xsize_of_raw_data,M4B_YSIZE)
        ;LAT_array =INTARR(Xsize_of_raw_data,M4B_YSIZE)
        ;LON_array =INTARR(Xsize_of_raw_data,M4B_YSIZE)


        ImageDATA_winid=INTARR(100)
        winid_CTR=0
        ;
        lat_spacing=1
        lon_spacing=1
        start_lat_point=-89
        start_lon_point=-179
        ;

        sourcepath='/h/ochome1/pjmccron/quikscat/idl/'              ;;NPS LINUX for QUIKSCAT
       ;PRINT, "The procedure ended at  :",TIME_END
       ;PNG_PATH=sourcepath+'PNG/M4B/GEO/'                          ;;FNMOC atos2 LINUX
       ;PNG_PATH=sourcepath+'PNG/M4B/DMSP/SSMI/'                    ;;FNMOC atos2 LINUX
        PNG_PATH=sourcepath+'PNG/QUIKSCAT/'                         ;;NPS LINUX
       ;GEOTIFF_PATH=sourcepath+'GEOTIFF/M4B/DMSP/SSMI/85H/'        ;;FNMOC atos2 LINUX
        GEOTIFF_PATH=sourcepath+'GEOTIFF/QUIKSCAT/'                 ;;NPS LINUX

        path='/h/ochome1/pjmccron/quikscat/TXT'

        ;-----------------------------------------------------------------------
        number_elements_Path_array = 15

        path_array = STRARR(number_elements_Path_array)

        ;------------------------------------------------------------------------------------
        ;--  FNMOC atos2 LINUX [ALPHA]  --
        ;------------------------------------------------------------------------------------


        path_array[0] = '/h/ochome1/pjmccron/quikscat/TXT/'
        path_array[1] = '/home/mccronep/idl/pmc-projects/M4B/HDF5/GEO/MET9/'
        path_array[2] = '/home/mccronep/idl/pmc-projects/M4B/HDF5/NOAA/221SNOW/'
        path_array[3] = '/home/mccronep/idl/pmc-projects/M4B/HDF5/NOAA/121SNOW/'
        path_array[4] = '/home/mccronep/idl/pmc-projects/M4B/HDF5/DMSP/'
        path_array[5] = '/home/mccronep/idl/pmc-projects/M4B/HDF5/GEO/FY2D/TEST4JTWC/RGN121/'
        path_array[6] = '/home/mccronep/idl/pmc-projects/M4B/HDF5/GEO/FY2D/TEST4JTWC/RGN421/'
        path_array[7] = '/home/mccronep/idl/pmc-projects/M4B/HDF5/DMSP/KOREA/'
        path_array[8] = '/home/mccronep/idl/pmc-projects/M4B/HDF5/DMSP/SAMPLES/121FINE/'
        path_array[9] = '/home/mccronep/idl/pmc-projects/M4B/HDF5/DMSP/SAMPLES/221FINE/'
        path_array[10]= '/home/mccronep/idl/pmc-projects/M4B/HDF5/DMSP/SAMPLES/421FINE/'
        path_array[11]= '/home/mccronep/idl/pmc-projects/M4B/HDF5/DMSP/SAMPLES/121SMOOTH/'
        path_array[12]= '/home/mccronep/idl/pmc-projects/M4B/HDF5/DMSP/SAMPLES/221SMOOTH/'
        path_array[13]= '/home/mccronep/idl/pmc-projects/M4B/HDF5/DMSP/SSMI/85H/'
        path_array[14]= '/home/mccronep/idl/pmc-projects/M4B/HDF5/DMSP/SSMI/all7/'

        ;------------------------------------------------------------------------------------

        path_selection = 0
        path_array_NO_SPC = STRARR(number_elements_Path_array)

;location_of_last_slash

;Now, must select the directory that we intend to use as the source of our data.

        FOR xxxx=0,number_elements_Path_array-1,1 DO BEGIN

                PRINT, "Option nunber ",xxxx,'.is. ' ,path_array[xxxx]

        ENDFOR ;xxxx


       ;------------------------------------------------------------------------
        path_selection  = 0
        valid_selection = 0

        REPEAT BEGIN

               ; Define B as a string before reading:
               KEYBOARD = ''

               ; Read input from the terminal:
               READ, KEYBOARD, PROMPT='Enter Number of directory to be selected: '

               KEY=KEYBOARD

               IF ((KEY EQ '0' ) OR (KEY EQ '10' ) OR  $
                   (KEY EQ '1' ) OR (KEY EQ '11' ) OR  $
                   (KEY EQ '2' ) OR (KEY EQ '12' ) OR  $
                   (KEY EQ '3' ) OR (KEY EQ '13' ) OR  $
                   (KEY EQ '4' ) OR (KEY EQ '14' ) OR  $
                   (KEY EQ '5' ) OR (KEY EQ '6'  ) OR  $
                   (KEY EQ '7' ) OR (KEY EQ '8'  ) OR  $
                   (KEY EQ '9' ) OR (KEY EQ '00' ))    $
                   THEN BEGIN

                     valid_selection = 1
                     HELP,valid_selection , /str
                     path_selection  =0

                     ; Start CASE for KEY
                       CASE KEY OF
                             '0': path_selection  = 0
                             '1': path_selection  = 1
                             '2': path_selection  = 2
                             '3': path_selection  = 3
                             '4': path_selection  = 4
                             '5': path_selection  = 5
                             '6': path_selection  = 6
                             '7': path_selection  = 7
                             '8': path_selection  = 8
                             '9': path_selection  = 9
                            '10': path_selection  = 10
                            '11': path_selection  = 11
                            '12': path_selection  = 12
                            '13': path_selection  = 13
                            '14': path_selection  = 14
                       ELSE:      path_selection  = 0
                       ENDCASE

                     ; END Case

                     HELP,path_selection , /str

               ENDIF

        ENDREP UNTIL ( valid_selection EQ 1 )
;---------------------------------------------------------------------------------------

        PRINT, 'The selected data path to the HDF5 files is:'
        print, path_array[path_selection]

        path='/home/mccronep/idl/pmc-projects/M4B/HDF5/DMSP/'

        path=path_array[path_selection]
;
;Must check this path for files that have spaces. Replace spaces with underscorees.
;
;-------------------------------------------------------------------------------------
;       This runs the "/home/mccronep/perl/spc_2_uscr" PERL script
;       on the sepected directory and ensure that there are no spaces in any of the
;       filenames. This is not a problem for a windows PC, but is a problem
;       if this is running on a UNIX/LINUX system. This PERL script will
;       replace spaces in filenames with underscores ("_").
;-------------------------------------------------------------------------------------

        ;;UNIXCOMMAND = '/home/mccronep/perl/spc_2_uscr '+path    ;;FNMOC atos2 LINUX [ALPHA]
        ;'rspc2uscr_win.pl d: m4b_data SATFOCUS alpha Taiwan'


;        PRINT, '-------------------------------------------------------------------'
;        PRINT, '---START  REPLACING SPACES WITH UNDERSCORES IN ASCII FILENAMES ------'
;        PRINT, '-------------------------------------------------------------------'
;        PRINT, '-------------------------------------------------------------------'

;        path_WO_SPC=path
;        path_WO_SPC=path_array_NO_SPC[path_selection]

       ;Move_files_w_Spaces_2_Underscores, path, 1   ; PRINT ALL MESSAGES
;;;;;;;;;;;        Move_files_w_Spaces_2_Underscores, path, 0   ; DO NOT PRINT MESSAGES

;;;;;ADD THIS IN LATER  --- PJMC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


        cd, sourcepath

        PRINT, '-------------------------------------------------------------------'
       ;PRINT, '---Done REPLACING SPACES WITH UNDERSCORES                    ------'
        PRINT, '-------------------------------------------------------------------'
        PRINT, '-------------------------------------------------------------------'

        ;-----------------------------------------------------------------------

       ;filemask='*.h5'
	filemask='*.quikscat.txt'

        ;;;;
        ;;;;

        cd, path

        QASCIIfiles=FINDFILE(filemask, COUNT=nmbrfilesfound)

        print, 'There are ', nmbrfilesfound ,' files.'

    IF (nmbrfilesfound EQ 0) then BEGIN
            print,'########################################################'
            print,'There are no HDF files present; program terminates now.'
            print,'########################################################'
        RETURN
    ENDIF

    print, '===================================='
    print, 'Here are the Quikscat ASCII files.'
    print, '===================================='
    print, QASCIIfiles
    print, '============================='
    for j=0,nmbrfilesfound-1 do begin
       print,j,'. ',QASCIIfiles(j)
    endfor

;CONTINUE_NOW,ANSWER

    selectedfile = dialog_pickfile(filter=filemask)

       NO_DATA_IN_REGION_DETECT=0

        IF (selectedfile EQ '') THEN BEGIN

                NO_DATA_IN_REGION_DETECT=1
                PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
                PRINT,' '
                PRINT,'NO QUIKSCAT FILE WAS SELECTED '
                PRINT,' '
                PRINT,'PROGRAM WILL END NOW: no graphics will be made. '
                PRINT,' '
                PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
                GOTO ,CLOSEOUTPROGRAM
        ENDIF ELSE BEGIN
                PRINT,'.......................................................... '
                PRINT,' '
                PRINT, ' A FILE has been selected.'
                PRINT,' '
                PRINT,'.......................................................... '
                NO_DATA_IN_REGION_DETECT=0
        ENDELSE

    print, '===================================='
    print, 'The SELECTED Quikscat ASCII file IS:'
    print, '===================================='
    print, selectedfile
    print, '===================================='

	NUMBER_OF_LINES_IN_FILE = FILE_LINES(selectedfile)

        IF (NUMBER_OF_LINES_IN_FILE LT 1) THEN BEGIN

                NO_DATA_IN_REGION_DETECT=1
                PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
                PRINT,' '
                PRINT,'THERE ARE NO QUIKSCAT OBS IN THIS ASCII FILE '
                PRINT,' '
                PRINT,'PROGRAM WILL END NOW: no graphics will be made. '
                PRINT,' '
                PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
                GOTO ,CLOSEOUTPROGRAM
        ENDIF ELSE BEGIN
                PRINT,'.......................................................... '
                PRINT,' '
                PRINT, 'THERE ARE QUIKSCAT OBS IN THIS REGION IN THiS ASCII FILE.'
                PRINT,' '
                PRINT, 'Attempting to PROCESS OBS now.....'
                PRINT,'.......................................................... '
                NO_DATA_IN_REGION_DETECT=0
        ENDELSE

    print, '=========================================================='
    print, 'The # of lines in the SELECTED Quikscat ASCII file IS:'
    print, '=========================================================='
    print, NUMBER_OF_LINES_IN_FILE
    print, '===================================='

        ;==============================================
        ;
        ; Start the READ_ASCII interface:
	;
        ;==============================================
	; NOTES:
	; I created the quikscat temaplate using:
	; IDL> QUIKSCAT_TEMPLATE = ASCII_TEMPLATE()
	; IDL> PLOT_QUIKSCAT=READ_ASCII('/h/ochome1/pjmccron/quikscat/TXT/20090831.1200.quikscat.txt', $
	;                     TEMPLATE=QUIKSCAT_TEMPLATE)
	;
	; IDL>  print, PLOT_QUIKSCAT
	;
	;IDL> help, PLOT_QUIKSCAT, /str
	;	** Structure <967ebfc>, 7 tags, length=9396420, data length=9396420, refs=1:
	;	   YYYYMMDD        STRING    Array[213555]
	;	   HHMMSS          STRING    Array[213555]
	;	   LATITUDE        FLOAT     Array[213555]
	;	   LONGITUDE       FLOAT     Array[213555]
	;	   WINDSPEED       FLOAT     Array[213555]
	;	   DIRECTION       FLOAT     Array[213555]
	;	   FLAG            LONG      Array[213555]
	;	IDL>
  	; IDL>  save, QUIKSCAT_TEMPLATE, FILENAME="QUIKSCAT_TEMPLATE.sav"

	RESTORE, sourcepath+'QUIKSCAT_TEMPLATE.sav'

	DATA_QUIKSCAT=READ_ASCII(selectedfile,TEMPLATE=QUIKSCAT_TEMPLATE)

	help, DATA_QUIKSCAT, /str

        ;==============================================
	;
        ; END the READ_ASCII interface:
	;
        ;==============================================
        ;

	WSPD=DATA_QUIKSCAT.WINDSPEED
	WDIR=DATA_QUIKSCAT.DIRECTION

	DATE_ARRAY=DATA_QUIKSCAT.YYYYMMDD
	TIME_ARRAY=DATA_QUIKSCAT.HHMMSS

	LAT_RAW  = DATA_QUIKSCAT.LATITUDE
	LONG_RAW = DATA_QUIKSCAT.LONGITUDE

	;u=DATA_QUIKSCAT.WINDSPEED
	;v=DATA_QUIKSCAT.DIRECTION

        uuuu = FLTARR(NUMBER_OF_LINES_IN_FILE)
        vvvv = FLTARR(NUMBER_OF_LINES_IN_FILE)
        xxxx = FLTARR(NUMBER_OF_LINES_IN_FILE)
        yyyy = FLTARR(NUMBER_OF_LINES_IN_FILE)

	THETA=DATA_QUIKSCAT.DIRECTION

	help, WSPD,     /str
	help, WDIR,     /str
	help, THETA,    /str
	help, LAT_RAW,  /str
	help, LONG_RAW, /str
	help, uuuu,     /str
	help, vvvv,     /str
	help, xxxx,     /str
	help, yyyy,     /str

        PRINT, '--------------------------------'
	PRINT, 'The MAX of U is:'
        PRINT, '--------------------------------'
	PRINT, MAX(uuuu)
        PRINT, '================================'
	PRINT,' '
        PRINT, '--------------------------------'
        PRINT, 'The MIN of U is:'
        PRINT, '--------------------------------'
        PRINT, MIN(uuuu)
        PRINT, '================================'
	PRINT,' '
        PRINT, '--------------------------------'
        PRINT, 'The MAX of V is:'
        PRINT, '--------------------------------'
        PRINT, MAX(vvvv)
        PRINT, '================================'
        PRINT,' '
        PRINT, '--------------------------------'
        PRINT, 'The MIN of V is:'
        PRINT, '--------------------------------'
        PRINT, MIN(vvvv)
        PRINT, '================================'
        PRINT, '--------------------------------'
        PRINT, '--------------------------------'

;--------------------------------------------------------------------
;	NOTES:
;IF THETA = 000, THEN V=+WSPD ,U=0
;IF THETA = 090, THEN V=0     ,U=+WSPD
;IF THETA = 180, THEN V=-WSPD ,U=0
;IF THETA = 270, THEN V=0     ,U=-WSPD
;-------------------------------------------
;IF THETA < 90 DEG, THEN
;	ANGLE=90-THETA
;       U IS POS, V is POS
;	U=WSPD*COS(ANGLE*DEG2RAD)
;	V=WSPD*SIN(ANGLE*DEG2RAD)
;-------------------------------------------
;IF THETA > 90 & THETA < 180 DEG, THEN
;	ANGLE=180-THETA
;       U IS POS, V is NEG
;	U=WSPD*SIN(ANGLE*DEG2RAD)
;	V=WSPD*COS(ANGLE*DEG2RAD)*(-1.0)
;-------------------------------------------
;IF THETA > 180 & THETA < 270 DEG, THEN
;	ANGLE=270-THETA
;       U IS NEG, V is NEG
;	U=WSPD*COS(ANGLE*DEG2RAD)*(-1.0)
;	V=WSPD*SIN(ANGLE*DEG2RAD)*(-1.0)
;-------------------------------------------
;IF THETA > 270 & THETA < 360 DEG, THEN
;	ANGLE=90-THETA
;       U IS NEG, V is POS
;	U=WSPD*SIN(ANGLE*DEG2RAD)*(-1.0)
;	V=WSPD*COS(ANGLE*DEG2RAD)
;-------------------------------------------;
;
        PRINT,'<--x-->'

;jj=1.1
;jj=0.1
jj=LONG(0)

NUMBER_OF_LINES_IN_FILE= NUMBER_OF_LINES_IN_FILE-1

     ;================================================
     ; BEGIN jj FOR LOOP #1

     ;FOR jj = 0,NUMBER_OF_LINES_IN_FILE-1 DO BEGIN
     
     REPEAT BEGIN

        ;PRINT,'<--->'
        IF (THETA(jj) GT 360) THEN PRINT,'REVIEW DATA INTEGRITY- WDIR SHOULD NOT EXCEED 360 DEG TRUE.'
        IF (THETA(jj) GT 360) THEN THETA(jj) = THETA(jj) - 360
        ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 	IF (THETA(jj) LT 90) THEN BEGIN
		ANGLE=90.0-THETA(jj)
		;U IS POS, V is POS
		uuuu(jj)=WSPD(jj)*COS(ANGLE*DEG2RAD)*(-1.0)
		vvvv(jj)=WSPD(jj)*SIN(ANGLE*DEG2RAD)*(-1.0)
	ENDIF
        ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        IF ((THETA(jj) GT 90) AND (THETA(jj) LT 180)) THEN BEGIN
                ANGLE=180.0-THETA(jj)
		; U IS POS, V is NEG
                uuuu(jj)=WSPD(jj)*SIN(ANGLE*DEG2RAD)*(-1.0)
                vvvv(jj)=WSPD(jj)*COS(ANGLE*DEG2RAD)*(1.0)
        ENDIF
        ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        IF ((THETA(jj) GT 180) AND (THETA(jj) LT 270)) THEN BEGIN
                ANGLE=270.0-THETA(jj)
                ;U IS NEG, V is NEG
                uuuu(jj)=WSPD(jj)*COS(ANGLE*DEG2RAD)*(1.0)
                vvvv(jj)=WSPD(jj)*SIN(ANGLE*DEG2RAD)*(1.0)
        ENDIF
        ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        IF ((THETA(jj) GT 270) AND (THETA(jj) LT 360)) THEN BEGIN
                ANGLE=360.0-THETA(jj)
                ;U IS POS, V is POS
                uuuu(jj)=WSPD(jj)*SIN(ANGLE*DEG2RAD)*(1.0)
                vvvv(jj)=WSPD(jj)*COS(ANGLE*DEG2RAD)*(-1.0)
        ENDIF
        ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz
        IF (THETA(jj) EQ 0) THEN BEGIN
                uuuu(jj)=0.0
                vvvv(jj)=WSPD(jj)*(-1.0)
        ENDIF
        ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz
        IF (THETA(jj) EQ 90) THEN BEGIN
                uuuu(jj)=WSPD(jj)*(-1.0)
                vvvv(jj)=0.0
        ENDIF
        ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz
        IF (THETA(jj) EQ 180) THEN BEGIN
                uuuu(jj)=0.0
                vvvv(jj)=WSPD(jj)*(1.0)
        ENDIF
        ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz
        IF (THETA(jj) EQ 270) THEN BEGIN
                uuuu(jj)=WSPD(jj)*(1.0)
                vvvv(jj)=0.0
        ENDIF
        ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz
        IF (THETA(jj) EQ 360) THEN BEGIN
                uuuu(jj)=0.0
                vvvv(jj)=WSPD(jj)*(-1.0)
         ENDIF
        ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz

         jj=jj+1

     ENDREP UNTIL ( jj EQ NUMBER_OF_LINES_IN_FILE  )

     ;ENDFOR
     ; END OF jj FOR LOOP #1
     ;================================================

        PRINT, '--------------------------------'
        PRINT, '---AFTER QUIKSCAT PROCESSING----'
        PRINT, '--------------------------------'
        PRINT, '-'
        PRINT, '--------------------------------'
        PRINT, 'The MAX of U is:'
        PRINT, '--------------------------------'
        PRINT, MAX(uuuu)
        PRINT, '================================'
        PRINT,' '
        PRINT, '--------------------------------'
        PRINT, 'The MIN of U is:'
        PRINT, '--------------------------------'
        PRINT, MIN(uuuu)
        PRINT, '================================'
        PRINT,' '
        PRINT, '--------------------------------'
        PRINT, 'The MAX of V is:'
        PRINT, '--------------------------------'
        PRINT, MAX(vvvv)
        PRINT, '================================'
        PRINT,' '
        PRINT, '--------------------------------'
        PRINT, 'The MIN of V is:'
        PRINT, '--------------------------------'
        PRINT, MIN(vvvv)
        PRINT, '================================'
        PRINT, '--------------------------------'
        PRINT, '--------------------------------'

;CONTINUE_NOW,ANSWER

;-------------------------------------------------------
;OK, we know WHERE the wind reports are, but we need them
;located in the right place on the graphical image.
;
; Assumptions:
;---------------
; 1. The ORIGIN of the graphic (0,0) is in the LOWER 
;    LEFT-HAND CORNER. This will be referred to as
;    the 'Graphic ORIGIN' or as the 'GOR'. 
; 2. The Y-variable ('yyyy' here) of the graphical image
;    increases as you do UP the image from top to bottom
; 3. The X-variable ('xxxx' here) of the graphical image
;    increases as you go over from left edge to right edge.
; 4. The farthest corner of the graphical image is located
;    at (XMAX,YMAX), which is the TOP RIGHT HAND CORNER
;    of the image. This will be referred to as
;    the 'Graphic FAR POINT' or as the "GFP".
; 5. We will convert each longitude to an 'x' graphical 
;    coordinate using the relation x=B +A*(LONGitude).
; 6. We will convert each latitude to a 'y' graphical
;    coordinate using the relation y=D +C*(LATitude).
; 7. We already calculated A/B/C & D earlier. 	 
;-------------------------------------------------------

	OBS_COUNT_IN_REGION=LONG(0)

	help, OBS_COUNT_IN_REGION, /str

	PRINT,"============================================================================================"	
	PRINT,"jj","xxxx","LONG_RAW","yyyy","LAT_RAW","OBS_COUNT_IN_REGION","DATE","TIME"
	PRINT,"============================================================================================"	
	

     ;================================================
     ; BEGIN jj  REPEAT/UNTIL LOOP #2

     jj=LONG(0)

		;NUMBER_OF_LINES_IN_FILE= NUMBER_OF_LINES_IN_FILE-1

     REPEAT BEGIN

      ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz

       IF ((LAT_RAW(jj) GT MINLAT) AND (LAT_RAW(jj) LT MAXLAT)) THEN BEGIN
       		IF ((LONG_RAW(jj) GT MINLNG) AND (LONG_RAW(jj) LT MAXLNG)) THEN BEGIN
                	; 
                	xxxx(jj)=B + (A*LONG_RAW(jj))
                	yyyy(jj)=D + (C*LAT_RAW(jj))
			;
			OBS_COUNT_IN_REGION =   OBS_COUNT_IN_REGION + 1
			;

        		PRINT,jj,xxxx(jj),LONG_RAW(jj),yyyy(jj),LAT_RAW(jj),OBS_COUNT_IN_REGION,DATE_ARRAY(jj),' ',TIME_ARRAY(jj)


       		ENDIF    ; LONG_RAW
       ENDIF ELSE BEGIN  ; LAT_RAW
                        ;
                        xxxx(jj)=0
                        yyyy(jj)=0
                        ;
       ENDELSE

      ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz

         jj=jj+1

     ENDREP UNTIL ( jj EQ NUMBER_OF_LINES_IN_FILE  )

        PRINT,"============================================================================================"
        PRINT,"============================================================================================"
        PRINT,"============================================================================================"


     ; END OF jj REPEAT/UNTIL LOOP #2
     ;================================================

        help, OBS_COUNT_IN_REGION, /str

;---------------------------------------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------------------------------------
; Check values of X/Y to see if they make sense on a basic level.
;---------------------------------------------------------------------------------------------------------------------------------

	MAXxxxx=MAX(xxxx)
	MINxxxx=MIN(xxxx)
	MAXyyyy=MAX(yyyy)
	MINyyyy=MIN(yyyy)


        PRINT, '--------------------------------'
        PRINT, '---AFTER LAT/LONG PROCESSING----'
        PRINT, '--------------------------------'
        PRINT, '-'
        PRINT, '--------------------------------'
        PRINT, 'The MAX of x is:'
        PRINT, '--------------------------------'
        help, MAXxxxx,/str
        PRINT, '================================'
        PRINT,' '
        PRINT, '--------------------------------'
        PRINT, 'The MIN of x is:'
        PRINT, '--------------------------------'
        HELP, MINxxxx,/str
        PRINT, '================================'
        PRINT,' '
        PRINT, '--------------------------------'
        PRINT, 'The MAX of y is:'
        PRINT, '--------------------------------'
        HELP, MAXyyyy,/str
        PRINT, '================================'
        PRINT,' '
        PRINT, '--------------------------------'
        PRINT, 'The MIN of y is:'
        PRINT, '--------------------------------'
        HELP, MINyyyy,/str
        PRINT, '================================'
        PRINT, '--------------------------------'
        PRINT, '--------------------------------'

;CONTINUE_NOW,ANSWER


;---------------------------------------------------------------------------------------------------------------------------------

        NO_DATA_IN_REGION_DETECT=0
        help, OBS_COUNT_IN_REGION, /str

        IF ((MAXxxxx EQ 0) AND (MINxxxx EQ 0) AND (MAXyyyy EQ 0) AND (MINyyyy EQ 0) AND (OBS_COUNT_IN_REGION EQ 0)) THEN BEGIN

            	NO_DATA_IN_REGION_DETECT=1
		PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' 
		PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' 
		PRINT,' '
            	PRINT,'THERE ARE NO QUIKSCAT OBS IN THE DEFINED REGION IN THIS ASCII FILE '
		PRINT,' '
		PRINT,'PROGRAM WILL END NOW: no graphics will be made. '
		PRINT,' '
		PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' 
		PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' 
		GOTO ,CLOSEOUTPROGRAM
        ENDIF ELSE BEGIN
                PRINT,'.......................................................... '
                PRINT,' '
		PRINT, 'THERE ARE QUIKSCAT OBS IN THIS REGION IN THiS ASCII FILE.'
                PRINT,' '
		PRINT, 'Attempting to make plots now.....'
                PRINT,'.......................................................... '
	        NO_DATA_IN_REGION_DETECT=0
	ENDELSE

;---------------------------------------------------------------------------------------------------------------------------------

        IF ((MAXxxxx EQ 0) AND (MINxxxx EQ 0) AND (MAXyyyy EQ 0) AND (MINyyyy EQ 0) AND (OBS_COUNT_IN_REGION GT 0)) THEN BEGIN

                NO_DATA_IN_REGION_DETECT=0
                PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
                PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
                PRINT,' '
                PRINT,'AN UNKNOWN ERROR CONDITION HAS BEEN DETECTED IN THIS ASCII FILE -CODE ALPHA'
                PRINT,'REVIEW THE FORMATTING OF THE FILE. IS IT CORRECT? '
                PRINT,'PROGRAM WILL END NOW (Gracefully): no graphics will be made. '
                PRINT,' '
                PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
                PRINT,'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
                GOTO ,CLOSEOUTPROGRAM
        ENDIF ELSE BEGIN
                PRINT,'.......................................................... '
                PRINT,' '
                PRINT, 'THERE ARE NO OBVIOUS ERRORS IN THiS ASCII FILE (YET).'
                PRINT,' '
                PRINT, 'Attempting to make plots now.....'
                PRINT,'.......................................................... '
                NO_DATA_IN_REGION_DETECT=0
        ENDELSE

;---------------------------------------------------------------------------------------------------------------------------------
;CONTINUE_NOW,ANSWER

;---------------------------------------------------------------------------------------------------------------------------------

       	;IF (MINyyyy LT 0) THEN BEGIN
       
		;yyyy = yyyy + ABS(MINyyyy)
		;yyyy = yyyy + ABS(MINyyyy)
	
	;ENDIF

        ;IF (MINxxxx LT 0) THEN BEGIN

                ;xxxx = xxxx + ABS(MINxxxx)
                ;xxxx = xxxx + ABS(MINxxxx)

        ;ENDIF

;==================================================================================================
;---------------------------------------------------------------------------------------------------------------------------------
; Check values of X/Y to see if they make sense on a basic level.
;---------------------------------------------------------------------------------------------------------------------------------

        MAXxxxx=MAX(xxxx)
        MINxxxx=MIN(xxxx)
        MAXyyyy=MAX(yyyy)
        MINyyyy=MIN(yyyy)


        PRINT, '--------------------------------'
        PRINT, '---AFTER 2nd LAT/LONG PROCESSING----'
        PRINT, '--------------------------------'
        PRINT, '-'
        PRINT, '--------------------------------'
        PRINT, 'The MAX of x is:'
        PRINT, '--------------------------------'
        help, MAXxxxx,/str
        PRINT, '================================'
        PRINT,' '
        PRINT, '--------------------------------'
        PRINT, 'The MIN of x is:'
        PRINT, '--------------------------------'
        HELP, MINxxxx,/str
        PRINT, '================================'
        PRINT,' '
        PRINT, '--------------------------------'
        PRINT, 'The MAX of y is:'
        PRINT, '--------------------------------'
        HELP, MAXyyyy,/str
        PRINT, '================================'
        PRINT,' '
        PRINT, '--------------------------------'
        PRINT, 'The MIN of y is:'
        PRINT, '--------------------------------'
        HELP, MINyyyy,/str
        PRINT, '================================'
        PRINT, '--------------------------------'
        PRINT, '--------------------------------'

        help, xxxx,     /str
        help, yyyy,     /str

;CONTINUE_NOW,ANSWER


;---------------------------------------------------------------------------------------------------------------------------------

;==================================================================================================

;==================================================================================================
;==================================================================================================

     ;================================================
     ; BEGIN jj  REPEAT/UNTIL LOOP #3
     ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

     u_array=fltarr(XMAX,YMAX)
     v_array=fltarr(XMAX,YMAX)

     jj=LONG(0)

     REPEAT BEGIN

      ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz

       IF ((LAT_RAW(jj) GT MINLAT) AND (LAT_RAW(jj) LT MAXLAT)) THEN BEGIN
                IF ((LONG_RAW(jj) GT MINLNG) AND (LONG_RAW(jj) LT MAXLNG)) THEN BEGIN
                        ;
                        u_array(xxxx(jj),yyyy(jj))=uuuu(jj)
                        v_array(xxxx(jj),yyyy(jj))=vvvv(jj)
                        ;
                ENDIF    ; LONG_RAW
       ENDIF ELSE BEGIN  ; LAT_RAW
                        ;
                        u_array(xxxx(jj),yyyy(jj))=-9999
                        v_array(xxxx(jj),yyyy(jj))=-9999
                        ;
       ENDELSE

      ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz

         jj=jj+1

     ENDREP UNTIL ( jj EQ NUMBER_OF_LINES_IN_FILE  )

     ; END OF jj REPEAT/UNTIL LOOP #3
     ;================================================

;velovect,u_array,v_array, MISSING=9999

;plot,u_array(WHERE(u_array NE -9999)),v_array(WHERE(u_array NE -9999))

;CONTINUE_NOW,ANSWER

;==================================================================================================
;==================================================================================================

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; INFO I NEED ON FILES.        
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ID4NEWFILE='data'

lengthoffile=STRLEN(selectedfile)

ID4NEWFILE='scat_data_'+STRMID(selectedfile,lengthoffile-26,13)+'Z_'+TDID

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	winid_CTR=0
        ImageDATA_winid=INTARR(100)

     ;;;START GRAPHICAL WINDOW DEFINITION
        TITLESTRING='IMAGE-> '+ STRCOMPRESS(STRING(winid_CTR))
        WINDOW, /free,title=TITLESTRING, xs=XMAX+1, ys=YMAX+1, xpos=0, ypos=0,/PIXMAP
       ;WINDOW, /free,title=TITLESTRING, xs=XMAX+1, ys=YMAX+1, xpos=0, ypos=0
             ImageDATA_winid(winid_CTR)=!D.WINDOW
             winid_CTR=winid_CTR+1 ; ALWAYS INCREMENT WINDOW ID COUNTER.
        ;;;END GRAPHICAL WINDOW DEFINITION

	!P.BACKGROUND=255

	white_display_array=INTARR(XMAX,YMAX)
	white_display_array=white_display_array+255

	TV,white_display_array


     ;================================================
     ; BEGIN jj  REPEAT/UNTIL LOOP #4
     ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

     jj=LONG(0)

	ufactor=0.0
	ut=0.0
	vfactor=0.0
	vt=0.0
	;distance_scaling_factor=60.0
	;distance_scaling_factor=1000.0
	distance_scaling_factor=40.0/1.0

     REPEAT BEGIN

      ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz

        ufactor=0.0
        ut=0.0
        vfactor=0.0
        vt=0.0
	HYPOTENUSE=0.0
        

        IF (thinning_increment LE 0 ) THEN BEGIN
		thinning_increment = 1
	ENDIF

       IF ((LAT_RAW(jj) GT MINLAT) AND (LAT_RAW(jj) LT MAXLAT)) THEN BEGIN
                IF ((LONG_RAW(jj) GT MINLNG) AND (LONG_RAW(jj) LT MAXLNG)) THEN BEGIN
                        ;

			HYPOTENUSE= SQRT((uuuu(jj)*uuuu(jj)) + (vvvv(jj)*vvvv(jj) ))
		        ut=(uuuu(jj)/HYPOTENUSE) * distance_scaling_factor
		        ;ut=uuuu(jj)/distance_scaling_factor
        		
			vt=(vvvv(jj)/HYPOTENUSE )  * distance_scaling_factor
        		;vt=vvvv(jj)/distance_scaling_factor

        		ufactor=ut/1.0
        		vfactor=vt/1.0


			;
			;NOTES: the COLOR variable is as follows:
			;	  0=BLACK
			;       125=RED
			;       255-Brighter Red
			;


                        ARROW,xxxx(jj),yyyy(jj),xxxx(jj)+ufactor,yyyy(jj)+vfactor,COLOR=25

			;
                ENDIF    ; LONG_RAW
       ENDIF   ; LAT_RAW

      ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz

         ;jj=jj+1
         jj=jj+ thinning_increment


     ENDREP UNTIL ( jj GE NUMBER_OF_LINES_IN_FILE  )

     ; END OF jj REPEAT/UNTIL LOOP #4
     ;================================================

;CONTINUE_NOW,ANSWER

;==================================================================================================
;==================================================================================================

;TEST PLOT

TLAT0=1.0
TLAT1=15.0
TLON0=-69.0
TLON1=-50.0

TX0=0.0
TY0=0.0
TX1=0.0
TY1=0.0

TX0=1.0*((1.0*B)+(1.0*A*(TLON0)))
TY0=1.0*((1.0*D)+(1.0*C*(TLAT0)))
TX1=1.0*((1.0*B)+(1.0*A*(TLON1)))
TY1=1.0*((1.0*D)+(1.0*C*(TLAT1)))

;ARROW,TX0,TY0,TX1,TY1,COLOR=255,/SOLID
;ARROW,TX0,TY0,TX1,TY1,COLOR=255,/SOLID,THICK=3

;==================================================================================================
;==================================================================================================
;
;Now we will make lat/long hash lines every 10 degrees, on the image.
;

	lltt=0.0
	llgg=0.0

	MOD_lltt=0
	MOD_llgg=0

	HX0=0.0
	HY0=0.0
	HX1=0.0
	HY1=0.0

        FOR lltt=MINLAT+1,MAXLAT-1,1 DO BEGIN
        	FOR llgg=MINLNG+1,MAXLNG-1,1 DO BEGIN

	 	       MOD_lltt=lltt MOD 10.0
	 	       MOD_llgg=llgg MOD 10.0

			IF  ((MOD_lltt EQ 0) AND (MOD_llgg EQ 0)) then BEGIN

				HX0=1.0*((1.0*B)+(1.0*A*(llgg)))
				HY0=1.0*((1.0*D)+(1.0*C*(lltt)))-15
				HX1=1.0*((1.0*B)+(1.0*A*(llgg)))
				HY1=1.0*((1.0*D)+(1.0*C*(lltt)))+15

				;ARROW,HX0,HY0,HX1,HY1,COLOR=255,/SOLID,THICK=3
				plots,[HX0,HX1],[HY0,HY1],color=0,thick=10,/DEVICE


                                HX0=1.0*((1.0*B)+(1.0*A*(llgg)))-15
                                HY0=1.0*((1.0*D)+(1.0*C*(lltt)))
                                HX1=1.0*((1.0*B)+(1.0*A*(llgg)))+15
                                HY1=1.0*((1.0*D)+(1.0*C*(lltt)))

                                ;ARROW,HX0,HY0,HX1,HY1,COLOR=255,/SOLID,THICK=3
                                plots,[HX0,HX1],[HY0,HY1],color=0,thick=10,/DEVICE

			ENDIF ; END of MOD_lltt/MOD_llgg test

        	ENDFOR ;llgg
        ENDFOR ;lltt


;==================================================================================================

Stringxyout='Scat Winds(Earth Relative) :'+ID4NEWFILE

;XYOUTS, 1, 1, Stringxyout , CHARSIZE=12, CHARTHICK=4, color=128
XYOUTS, 0, 0, Stringxyout , CHARSIZE=3, CHARTHICK=4, color=128



;==================================================================================================

                ;
                ;NOW MAKE PNG FILES.
                ;

               ;PNG_PRJ_IMAGE_ARRAY = CONGRID (PRJ_IMAGE_ARRAY, JTMXS+1, M4B_YSIZE+1)
                PNG_PRJ_IMAGE_ARRAY = TVRD()

		FILENAME_STRING=ID4NEWFILE

                FILENAME=PNG_PATH+FILENAME_STRING+'_QUIKSCAT.PNG'
                PRINT, 'Writting the following PNG file (W/ LAT/LON ticks only ):'
                HELP, FILENAME,/str
                WRITE_PNG,FILENAME,PNG_PRJ_IMAGE_ARRAY


;==================================================================================================
;==================================================================================================


        ;GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF
        ;
        ;      NOW MAKE GEOTIFF FILES.
        ;
        ;GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF
        ;llllllllllll
        ;
        ;
        ; This is an axample of the structure / tags / keys needed to make a geotiff.
        ; The example come from Mark Conners work @ AFWA.
        ;IDL>     HELP, GTIFF_STRCT ,/str
        ;** Structure <822a9a4>, 5 tags, length=80, data length=78, refs=1:
        ;   MODELPIXELSCALETAG
        ;                   DOUBLE    Array[3]
        ;   MODELTIEPOINTTAG
        ;                   DOUBLE    Array[6, 1]
        ;   GTMODELTYPEGEOKEY
        ;                   INT              2       NOTE:this does not seem to change
        ;   GTRASTERTYPEGEOKEY
        ;                   INT              1       NOTE:this does not seem to change
        ;   GEOGRAPHICTYPEGEOKEY
        ;                   INT           4326       NOTE:this does not seem to change
        ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\`
        ;IDL>     HELP, GTIFF_STRCT.MODELPIXELSCALETAG ,/str
        ;<Expression>    DOUBLE    = Array[3]
        ;IDL>     Print, GTIFF_STRCT.MODELPIXELSCALETAG
        ;    0.0065000001    0.0065019508       0.0000000
        ;IDL>     Print, GTIFF_STRCT.MODELTIEPOINTTAG
        ;       500.00000       384.50000       0.0000000       44.250000       35.500000       0.0000000
        ;
        ;       500.00000 (0,0) I think this is a horizontal scale fator of some sort.
        ;       384.50000 (1,0) "   "    "    " " vertical   "  "    "    "   "   "
        ;       0.0000000 (2,0) ?????
        ;       44.250000 (3,0) I believe that this is the center point long.
        ;       35.500000 (4,0) I believe that this is the center point lat.
        ;       0.0000000 (5,0) ?????
	;


                mdlpixlscltg_array = FLTARR(3)

                mdlpixlscltg_array(0) = 1.0*(1.0*MAXLNG-MINLNG)/(XMAX*1.0) ; This is the scale in the X dimension
                mdlpixlscltg_array(1) = 1.0*(1.0*MAXLAT-MINLAT)/(YMAX*1.0) ; This is the scale in the Y dimension
                mdlpixlscltg_array(2) = 0.0000000                          ; This remains zero unless you need
                                                                           ; a vertical dimension

                print,' '
                PRINT,'scale-0- is: ', mdlpixlscltg_array(0)
                PRINT,'scale-1- is: ', mdlpixlscltg_array(1)
                PRINT,'scale-2- is: ', mdlpixlscltg_array(2)
                print, ' '


                mdltipttg_array    = FLTARR(6,1)
               ;mdltipttg_array    = FLTARR(6,2)

                ;mdltipttg_array(0,0)=M4B_XSIZE/2.0
                mdltipttg_array(0,0)=XMAX/1.0
                ;mdltipttg_array(1,0)=M4B_YSIZE/2.0
                mdltipttg_array(1,0)=YMAX/1.0
                mdltipttg_array(2,0)=0.00000                   ; This remains zero unless you need
                                                               ; a vertical dimension
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                ;mdltipttg_array(3,0)=(MINLON_B+MAXLON_B)/2.0
;                mdltipttg_array(3,0)=MINLON_B/1.0              ;This means the lefthand most edge of the image.
;                                                               ;
;                ;mdltipttg_array(4,0)=(MINLAT_B+MAXLAT_B)/2.0
;                mdltipttg_array(4,0)=MAXLAT_B/1.0              ;This means the uppermost edge of the image.
;                                                               ;So,this is the upper lefthand corner of the map.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                mdltipttg_array(3,0)=MAXLNG/1.0              ;This means the righthand most edge of the image.
                                                               ;
                mdltipttg_array(4,0)=MINLAT/1.0              ;This means the lowermost edge of the image.
                                                               ;So,this is the lower righthand corner of the map.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



                mdltipttg_array(5,0)=0.00000                   ; This remains zero unless you need
                                                               ; a vertical dimension


                print,' '
                PRINT,'tiept-0-0- is: ',  mdltipttg_array(0,0)
                PRINT,'tiept-1-0- is: ',  mdltipttg_array(1,0)
                PRINT,'tiept-2-0- is: ',  mdltipttg_array(2,0)
                PRINT,'tiept-3-0- is: ',  mdltipttg_array(3,0)
                PRINT,'tiept-4-0- is: ',  mdltipttg_array(4,0)
                PRINT,'tiept-5-0- is: ',  mdltipttg_array(5,0)
                print, ' '

                GEOTIFF_STRUCTURE = {MODELPIXELSCALETAG:mdlpixlscltg_array , $
                                     MODELTIEPOINTTAG:mdltipttg_array      , $
                                     GTMODELTYPEGEOKEY:          2         , $
                                     GEOGRAPHICTYPEGEOKEY:    4326         , $
                                     GTRASTERTYPEGEOKEY:         1           $
                                     }

                HELP, GEOTIFF_STRUCTURE , /str

                GTIF_FLNAM = selectedfile

               ;TIFF_FILE_NAME = GEOTIFF_PATH+FILENAME_STRING+'_GT.tif'
                TIFF_FILE_NAME = GEOTIFF_PATH+FILENAME_STRING+'_GT.tif'

                PRINT, 'Writting the following GeoTIFF file (w/lat/long ticks only):'
                HELP, TIFF_FILE_NAME,/str

               ;TIFF_IMAGE_ARRAY = REVERSE(byte(PRJ_IMAGE_ARRAY),2)
                TIFF_IMAGE_ARRAY = PNG_PRJ_IMAGE_ARRAY

                 WRITE_TIFF,TIFF_FILE_NAME,TIFF_IMAGE_ARRAY,COMPRESSION=2,GEOTIFF=GEOTIFF_STRUCTURE



;==================================================================================================
;==================================================================================================
;Now, we will subtract the phase speed.  I will assume that it is in meters/sec as entered on the
;command line. 
;
;==================================================================================================
;==================================================================================================

;
;Convert Meters per Second to Knots ... 1 Meter per Second = 1.9438444924406 Knots
;

        UPHASESPEEDx=UPHASESPEED*(1.9438444924406)

	uuuu=uuuu-(UPHASESPEEDx*1.0)

;==================================================================================================
;==================================================================================================
; We need to replot everything with new (u,v) ordered pair.
;
;--------------------------------------------------------------------------------------------------

     ;;;START GRAPHICAL WINDOW DEFINITION
        TITLESTRING='PHASE SPEED ADJUSTED IMAGE-> '+ STRCOMPRESS(STRING(winid_CTR))
        WINDOW, /free,title=TITLESTRING, xs=XMAX+1, ys=YMAX+1, xpos=0, ypos=0,/PIXMAP
       ;WINDOW, /free,title=TITLESTRING, xs=XMAX+1, ys=YMAX+1, xpos=0, ypos=0
             ImageDATA_winid(winid_CTR)=!D.WINDOW
             winid_CTR=winid_CTR+1 ; ALWAYS INCREMENT WINDOW ID COUNTER.
        ;;;END GRAPHICAL WINDOW DEFINITION

	!P.BACKGROUND=255

	;white_display_array=INTARR(XMAX,YMAX)
	;white_display_array=white_display_array+255

	TV,white_display_array

     ;================================================
     ; BEGIN jj  REPEAT/UNTIL LOOP #5-P
     ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

     jj=LONG(0)

	ufactor=0.0
	ut=0.0
	vfactor=0.0
	vt=0.0
	;distance_scaling_factor=60.0
	;distance_scaling_factor=1000.0
	distance_scaling_factor=40.0/1.0

     REPEAT BEGIN

      ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz

        ufactor=0.0
        ut=0.0
        vfactor=0.0
        vt=0.0
	HYPOTENUSE=0.0

        IF (thinning_increment LE 0 ) THEN BEGIN
		thinning_increment = 1
	ENDIF

       IF ((LAT_RAW(jj) GT MINLAT) AND (LAT_RAW(jj) LT MAXLAT)) THEN BEGIN
                IF ((LONG_RAW(jj) GT MINLNG) AND (LONG_RAW(jj) LT MAXLNG)) THEN BEGIN
                        ;

			HYPOTENUSE= SQRT((uuuu(jj)*uuuu(jj)) + (vvvv(jj)*vvvv(jj) ))
		        ut=(uuuu(jj)/HYPOTENUSE) * distance_scaling_factor
		        ;ut=uuuu(jj)/distance_scaling_factor
        		
			vt=(vvvv(jj)/HYPOTENUSE )  * distance_scaling_factor
        		;vt=vvvv(jj)/distance_scaling_factor

        		ufactor=ut/1.0
        		vfactor=vt/1.0


			;
			;NOTES: the COLOR variable is as follows:
			;	  0=BLACK
			;       125=RED
			;       255-Brighter Red
			;


                        ARROW,xxxx(jj),yyyy(jj),xxxx(jj)+ufactor,yyyy(jj)+vfactor,COLOR=25

			;
                ENDIF    ; LONG_RAW
       ENDIF   ; LAT_RAW

      ;zzzzzzzzzzzzzzzzzzzzzzzzzzzzz

         ;jj=jj+1
         jj=jj+ thinning_increment

     ENDREP UNTIL ( jj GE NUMBER_OF_LINES_IN_FILE  )

     ; END OF jj REPEAT/UNTIL LOOP #5-P
     ;================================================

;CONTINUE_NOW,ANSWER
;==================================================================================================
;==================================================================================================
;
;Now we will make lat/long hash lines every 10 degrees, on the image.
;

	lltt=0.0
	llgg=0.0

	MOD_lltt=0
	MOD_llgg=0

	HX0=0.0
	HY0=0.0
	HX1=0.0
	HY1=0.0

        FOR lltt=MINLAT+1,MAXLAT-1,1 DO BEGIN
        	FOR llgg=MINLNG+1,MAXLNG-1,1 DO BEGIN

	 	       MOD_lltt=lltt MOD 10.0
	 	       MOD_llgg=llgg MOD 10.0

			IF  ((MOD_lltt EQ 0) AND (MOD_llgg EQ 0)) then BEGIN

				HX0=1.0*((1.0*B)+(1.0*A*(llgg)))
				HY0=1.0*((1.0*D)+(1.0*C*(lltt)))-15
				HX1=1.0*((1.0*B)+(1.0*A*(llgg)))
				HY1=1.0*((1.0*D)+(1.0*C*(lltt)))+15

				;ARROW,HX0,HY0,HX1,HY1,COLOR=255,/SOLID,THICK=3
				plots,[HX0,HX1],[HY0,HY1],color=0,thick=10,/DEVICE


                                HX0=1.0*((1.0*B)+(1.0*A*(llgg)))-15
                                HY0=1.0*((1.0*D)+(1.0*C*(lltt)))
                                HX1=1.0*((1.0*B)+(1.0*A*(llgg)))+15
                                HY1=1.0*((1.0*D)+(1.0*C*(lltt)))

                                ;ARROW,HX0,HY0,HX1,HY1,COLOR=255,/SOLID,THICK=3
                                plots,[HX0,HX1],[HY0,HY1],color=0,thick=10,/DEVICE

			ENDIF ; END of MOD_lltt/MOD_llgg test

        	ENDFOR ;llgg
        ENDFOR ;lltt

;==================================================================================================
;==================================================================================================

Stringxyout='Scat Winds adjusted for Phase speed:'+STRING(UPHASESPEED)+" m/s. "+ID4NEWFILE

;XYOUTS, 1, 1, Stringxyout , CHARSIZE=12, CHARTHICK=4, color=128
XYOUTS, 0, 0, Stringxyout , CHARSIZE=3, CHARTHICK=4, color=128

;==================================================================================================
;==================================================================================================

                ;
                ;NOW MAKE PNG FILES.
                ;

               ;PNG_PRJ_IMAGE_ARRAY = CONGRID (PRJ_IMAGE_ARRAY, JTMXS+1, M4B_YSIZE+1)
                PNG_PRJ_IMAGE_ARRAY = TVRD()

		FILENAME_STRING=ID4NEWFILE

                FILENAME=PNG_PATH+FILENAME_STRING+'_QSCAT_PHASE.PNG'
                PRINT, 'Writting the following PNG file (W/ LAT/LON ticks only ):'
                HELP, FILENAME,/str
                WRITE_PNG,FILENAME,PNG_PRJ_IMAGE_ARRAY


;==================================================================================================
;==================================================================================================
;GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF
;
;      NOW MAKE GEOTIFF FILES.
;
;GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF-GEOTIFF
;llllllllllll

                HELP, GEOTIFF_STRUCTURE , /str
                TIFF_FILE_NAME = GEOTIFF_PATH+FILENAME_STRING+'_PHASE_GT.tiff'       

                PRINT, 'Writting the following GeoTIFF file (w/lat/long ticks only):'
                HELP, TIFF_FILE_NAME,/str

               ;TIFF_IMAGE_ARRAY = REVERSE(byte(PRJ_IMAGE_ARRAY),2)
                TIFF_IMAGE_ARRAY = PNG_PRJ_IMAGE_ARRAY

                 WRITE_TIFF,TIFF_FILE_NAME,TIFF_IMAGE_ARRAY,COMPRESSION=2,GEOTIFF=GEOTIFF_STRUCTURE



;==================================================================================================
;==================================================================================================


;==================================================================================================
;==================================================================================================

;=================NEXT TO LAST ITEM        =====================================
;=================DETERMINE PROGRAM RUNTIME=====================================
;=================DO THIS LAST BEFORE PROGRAM ENDS==============================

CLOSEOUTPROGRAM:

   PRINT, "The procedure started at:",TIME_START

   TIME_END= systime()

   PRINT, "The procedure ended at  :",TIME_END

   pHOURS   = 0
   pMINUTES = 0
   pSECONDS = 0

   COMPUTE_PROCEDURE_RUNTIME, TIME_START, TIME_END, pHOURS, pMINUTES, pSECONDS


cd, sourcepath
;STOP
;RETURN
END

;=================END OF THE PROGRAM===========================================
;=================END OF THE PROGRAM===========================================
;=================END OF THE PROGRAM===========================================
;=================END OF THE PROGRAM===========================================
;=================END OF THE PROGRAM===========================================
;=================END OF THE PROGRAM===========================================
;=================END OF THE PROGRAM===========================================
;=================END OF THE PROGRAM===========================================
;=================END OF THE PROGRAM===========================================
;=================END OF THE PROGRAM===========================================
;
;mccronep@bsd1u[/gpfs3/home/mccronep/idl/pmc-projects]->
;
;
