#!/usr/bin/perl

########################################################
# Autor(a): Lucas Moreira de Araujo Conçalves          #
#------------------------------------------------------#
# Data: //2008                                         #
#------------------------------------------------------#
# Descricao:                                           #
#                                                      #
#                                     #                #
#------------------------------------------------------#
# Modificacoes:                                        #
#                                                      #
#                                                      #
########################################################

# Bibliotecas Utilizadas
#-----------------------

#use strict;     # Obriga a declarar todas as variaveis
use Env::Sourced ("/home/gempak/NAWIPS/Gemenviron.profile");

use Getopt::Std;   # Biblioteca para argumentos de linha de comando
use Time::Local;   # Biblioteca padrao para processar data e hora
                   # Exemplo $time=timelocal($seg,$min,$horas,$dia,$mes-1,$ano-1900);
                   #     OU  $time=timegm($seg,$min,$horas,$dia,$mes-1,$ano-1900);
                   #
                   # Exemplo 2 > Somando 24 horas a uma data
                   # my $newtime=$time + 60*60*24;
                   #
                   #Exemplo 3 < subtraindo 10 minutos
                   # my $newtime=$time -60*10;
                   #
                   # Exemplo 4 Imprimindo a data
                   # print scalar(localtime($timei)),"\n";
                   #
                   # Exemplo 5 Comparando datas
                   #   if (($timef > $time) && ($timei< $time)  {
                   #
use Cwd;           # biblioteca para obter o path ou diretorio de trabalho
use Glib;          # Biblioteca de  de subrotinas de uso geral
use Convert_arc;   # Modulo para conversao de arquivos de diferentes formatos
use POSIX;
use Date::Manip;

        use vars qw($opt_t); # opcao para entrar com data maunalmente
        use vars qw($opt_s); # Opcao para roda com data do sistema

        my $ano;
        my $mes;
        my $dia;
        my $hora;
        my $minuto;
        my $obsdate; # Data da obsevacao no calendario juliano a partir do ano de 1900
        my $tipo_dado;
        my $timewindow;
        my $narq;
	my $data1;
        my $data2;
        #my $hf;
        my $hratual;
        my $date1;
        my $date2;



#---------------------------

#my $arq_out="$ENV{HOME}/resultados";

#----------------------------------------------------------------------------------------
 &getopts('t:s') ||die "Erro: Nao existe essa opcao! Digite -h para Ajuda\n";

 # Opcao  -T ( Roda o programa para uma data especifica )
        #------------------------------------------------------
        if("$opt_t")
        {
                my $anomesdia=$opt_t;
                print "$0,$1,$2\n";
                print "$opt_t,$anomesdia\n";
                $anomesdia=~ /(\d\d\d\d)(\d\d)(\d\d)(\d\d)/;
                #$ano="$1";
                #$mes="$2";
                #$dia="$3";
                #$hora="$4";
                #$obsdate=timelocal(0,0,$hora,$dia,$mes-1,$ano-1900);
                $arqent="/data/ldm/gempak/ship/".$anomesdia."_sb.gem";
                $narq="$anomesdia";
		#$data=
        }

 # {Opcao -S [ Roda o programa para a data do sistema (horario sinoptico mais proximo)]
    #------------------------------------------------------------------------------------
        # -Obtem a data e hora do sistema
        # -Converte a hora para horario sinotico mais proximo
        # -Converte data para calendario juliano

        if("$opt_s")
        {

                $mes = strftime('%m', gmtime(time));
                $ano = strftime('%Y', gmtime(time));
                $dia = strftime('%d', gmtime(time));
                $hora= strftime('%H', gmtime(time));
                $arqent="BUOY";


		$hratual=$ano.$mes.$dia.$hora.":00".":00";
		$date1 = DateCalc("$hratual","- 6 hour",\$err);
		$date1 =~ /(\d{4})(\d{2})(\d{2})(\d{2}):\d{2}:\d{2}/;
                $varano=$1;
                $varmes=$2;
                $vardia=$3;
                $var=$4;
                $nome = $vardia.$var;
                $nomef = $nome.$dia.$hora;
                print "NOME FINAL $nomef\n";

                 $varf= $hora;

                 if($hora == "03")
                 {
                        @array=(21,22,23,"00","01","02");

                        foreach $teste(@array)
                        {

                                if($teste=~ /^0/)
                                {
                                        $narq= "/data/ldm/gempak/ship/".$ano.$mes.$dia.$teste."_sb.gem";
                                        $arqs= $ano.$mes.$dia.$teste."_ship.txt";

                                }
                                else
                                {

                                        $narq= "/data/ldm/gempak/ship/".$varano.$varmes.$vardia.$teste."_sb.gem";
                                        $arqs= $varano.$varmes.$vardia.$teste."_ship.txt";
                                }
				 #---------------------------
                                # Insere os dados no GEMPAK
                                # --------------------------
                                system(` $ENV{'GEMEXE'}/sflist << EOF
                                 SFFILE  = $narq
                                 AREA    = DSET
                                 DATTIM  = ALL
                                 SFPARM  = SLAT;SLON;SELV;PRES;PMSL;UWND;VWND;TMPK;DWPK;TOST
                                 OUTPUT  = f /resultados/ship/$arqs
                                 IDNTYP  = STNM

                                 r

                                 e
                                 EOF`);

                                system(` cat resultados/ship/$arqs >>resultados/ship/$nomef_ship.txt `);


                        }
		}
		 else
                 {
                        foreach $teste($var..$hora-1)
                        {

                                if ($teste<10)
                                {
                                        $teste="0".$teste;
                                }




				$narq= "/data/ldm/gempak/ship/".$ano.$mes.$vardia.$teste."_sb.gem";
			#	print "$narq\n";
				$arqs= $ano.$mes.$dia.$teste."_ship.txt";
			#	print "$arqs\n";
				#print "$var\n";
				

				#---------------------------
				# Insere os dados no GEMPAK
				# --------------------------
				system(` $ENV{'GEMEXE'}/sflist << EOF
 				 SFFILE  = $narq
 				 AREA    = DSET
 				 DATTIM  = ALL
 				 SFPARM  = SLAT;SLON;SELV;PRES;PMSL;UWND;VWND;TMPK;DWPK;TOST
 				 OUTPUT  = f /resultados/ship/$arqs
 				 IDNTYP  = STNM

 				 r

 				 e
				 EOF`);
			        print "ARQUIVO: $arqs ---> $nomef_ship \n\n";	
				system(` cat resultados/ship/$arqs >>resultados/ship/$nomef"_ship.txt"`);


			}
		}



        }

