program tipos

! objetivo: definir um tipo novo de variável

! data de criação:  13 Fev 02

! última alteração: 13 Fev 02

! autor: Carlos Henrique Marchi

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

! inclusão de módulos do Fortran90

use msflib  ! para encerramento do programa

use msfwin  ! para o comando setwindowtext

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

! definição das variáveis

implicit none

integer   :: n               ! número de elementos dos vetores
integer   :: i               ! número do elemento dos vetores

! define um novo tipo de variável: vetor
type socios
  integer       :: numero ! ordem de filiação
  integer       :: idade
  character(10) :: nome
  real*8        :: saldo
end type

type (socios),dimension(:),allocatable :: socio

integer*4 :: fim ! fecha framewindow

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

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

! define o nome da janela do programa

  name = setwindowtext(gethwndqq(qwin$framewindow),  &
         "VETORES"C)

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

  ! *** leitura dos dados ***

  ! vê o conteúdo do arquivo "dados.txt" com o programa NOTEPAD
  dos = systemqq( 'notepad dados.txt' )    

  open(10,file='dados.txt')  ! abre o arquivo "dados.txt"

  read(10,*) n

  ! aloca memória para o vetor socio
  allocate ( socio(n) )

  do i = 1, n
    read(10,*) socio(i).numero
    read(10,*) socio(i).nome
    read(10,*) socio(i).idade
    read(10,*) socio(i).saldo
  end do

  close(10)

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

  ! *** escreve a variável socio num arquivo ***

  open(20,file='saida.txt')  ! abre o arquivo "saida.txt"

  do i = 1, n
    write(20,30) socio(i).numero, socio(i).nome,   &
                 socio(i).idade,  socio(i).saldo
  end do

  write(20,*)
  write(20,*) socio(n)

  close(20)

  30 format (//,'Número = ',i4,/,  &
                'Nome   = ',a10,/, &
                'Idade  = ',i4,/,  &
                'Saldo  = ',1pe12.3)

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

  ! *** lê o conteúdo do arquivo "saida.txt" ***

  dos = systemqq( 'notepad saida.txt' )  

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

  ! desaloca memória para o vetor socio
  deallocate ( socio )

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

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

end
