#!/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"`); } } }