!
! Questão 3 da Lista 08 de exercícios para sala de aula - Capítulo F90/*
!
PROGRAM ATUALIZA_ALUNOS_ORDEDNADO
! ESTE PROGRAMA CRIA UM NOVO ARQUIVO, ALUNOS2.DAT  COM OS &
! ALUNOS ANTERIORES E OS NOVOS
   IMPLICIT NONE
   INTEGER :: MATRICA, MATRICB
   CHARACTER (LEN = 20) :: NOMEA, NOMEB
   REAL :: NOTA1A, NOTA2A, NOTA3A, MEDIAA, NOTA1B, NOTA2B, NOTA3B

! PREPARAÇÃO DOS DOIS ARQUIVOS  
   OPEN (10, FILE='ALUNOS.DAT')
   OPEN (20, FILE='ALUNOS2.DAT')
   
! LE O PRIMEIRO DE CADA
   READ (10, 1) MATRICA, NOMEA, NOTA1A, NOTA2A, NOTA3A, MEDIAA
   1 FORMAT(I8, A20, 4F4.1)
   WRITE (*, *) "INFORME O NOME, MATRICULA E TRES NOTAS DOS ALUNOS.&
   & TERMINE COM UM ALUNO DE NOME FIM"
   READ(*,"(A20)") NOMEB
 ! ATUALIZA
   DO WHILE ((NOMEA .NE. "FIM") .AND. (NOMEB .NE. "FIM"))
     IF (NOMEA .LT. NOMEB) THEN
       WRITE(20, 1) MATRICA, NOMEA, NOTA1A, NOTA2A, NOTA3A, MEDIAA
       READ (10, 1) MATRICA, NOMEA, NOTA1A, NOTA2A, NOTA3A, MEDIAA
     ELSE
       READ (*, *) MATRICB, NOTA1B, NOTA2B, NOTA3B
       WRITE(20, 1) MATRICB, NOMEB, NOTA1B, NOTA2B, NOTA3B, (NOTA1B+NOTA2B+NOTA3B)/3
       WRITE (*, *) "INFORME O NOME, MATRICULA E TRES NOTAS DOS ALUNOS.&
   & TERMINE COM UM ALUNO DE NOME FIM"
       READ(*, "(A20)")NOMEB
       END IF
    END DO
! FECHAMENTO DAS DUAS ENTRADAS
IF (NOMEA .NE. "FIM") THEN
   DO WHILE (NOMEA .NE. "FIM")
      WRITE(20, 1) MATRICA, NOMEA, NOTA1A, NOTA2A, NOTA3A, MEDIAA
      READ (10, 1) MATRICA, NOTA1A, NOTA2A, NOTA3A, MEDIAA 
   END DO     
   ELSE
      DO WHILE (NOMEB .NE. "FIM")
        WRITE (*, *) "INFORME O NOME, MATRICULA E TRES NOTAS DOS ALUNOS.&
   & TERMINE COM UM ALUNO DE NOME FIM"
        READ (*, *) MATRICB, NOTA1B, NOTA2B, NOTA3B
        WRITE(20, 1) MATRICB, NOMEB, NOTA1B, NOTA2B, NOTA3B, (NOTA1B+NOTA2B+NOTA3B)/3
        READ(*,"(A20)") NOMEB        
      END DO
END IF  
WRITE (20, 1) 0, NOMEA, 0., 0., 0., 0.
ENDFILE 10
ENDFILE 20
STOP 
END PROGRAM ATUALIZA_ALUNOS_ORDEDNADO