program data_hora

! objetivo: obter a data e a hora do sistema operacional

! data de criação:  2 Fev 02

! última alteração: 3 Fev 02

! autor: Carlos Henrique Marchi

! -----------------------------------------------

! inclusão de módulos do Fortran90

use msflib  ! para o comando setexitqq

use msfwin  ! para o comando setwindowtext

! -----------------------------------------------

! definição das variáveis

integer*4 :: var(8) ! data e hora
integer*4 :: fim    ! fecha framewindow

character*20 :: caso  ! nome do arquivo de saída

character*50 :: title ! título 
character*62 :: head  ! título + dia

character*12 :: dia                     ! data da simulação
character*8  :: hora                    ! horário da simulação

character*20 :: vardate,vartime,varzone ! data e hora

character*70 :: note_caso               ! notepad + caso

character*2  :: aux1,aux2             
character*4  :: aux3
character*50 :: aux

logical :: dos  ! acessa prompt dos
logical :: name ! nome da framewindow

!-------------------------------------------------

! define o nome da janela do programa

  name = setwindowtext(gethwndqq(qwin$framewindow),  &
         "Escreve a data e a hora num arquivo"C)

! -----------------------------------------------

! dados

  caso  = 'saida.txt'

  title = 'escreve data e hora num arquivo'

! -----------------------------------------------

  open(10,file=caso)  ! cria um arquivo com o nome da variável "caso"

  ! le do sistema operacional a data e o horario
  ! no formato do comando "date_and_time"
  ! (mostrar comando no Reference)
  call date_and_time(vardate,vartime,varzone,var)

  ! manipula as informações de data e horário para 
  ! escrevê-las no padrão desejado
  ! o comando "adjustl" remove todos os caracteres em branco a esquerda de uma string
  write(aux,*) var(3)		 ! dia, uso de arquivo interno
  aux1 = trim(adjustl(aux))
  write(aux,*) var(2)        ! mês
  aux2 = trim(adjustl(aux))
  write(aux,*) var(1)        ! ano
  aux3 = trim(adjustl(aux))

  ! concatena três variáveis numa só
  dia = '('//trim(aux1)//'/'//trim(aux2)//'/'//aux3//')'
  ! para verificar efeito do comando "trim"
!  dia = '('//aux1//'/'//aux2//'/'//aux3//')'    

  write(aux,*) var(5)		 ! hora
  aux1 = trim(adjustl(aux))
  write(aux,*) var(6)        ! minuto
  aux2 = trim(adjustl(aux))
  write(aux,*) var(7)        ! segundo
  aux3 = trim(adjustl(aux))
  
  hora = trim(aux1)//':'//trim(aux2)//':'//aux3

  write(10,18) dia, hora
  18 format(/,5x,'Dia = ',a12,5x,'Hora = ',a8)
  
  head = trim(title) //" "// dia

  write(10,19) head
  19 format(/,5x,a62)

  close(10)

! -----------------------------------------------

  note_caso = 'notepad '//caso

  ! comando "systemqq" abre janela do "dos" e executa o comando entre parênteses
  dos = systemqq(note_caso) ! abre o arquivo de saída

! -----------------------------------------------

  ! fecha a janela do programa
  fim = setexitqq(qwin$exitnopersist) 

end
