SUBROUTINE rearrange IMPLICIT NONE ALLOCATE(new) p => ent DO WHILE( ASSOCIATED(p%next)) ! (1)(3) IF ( tensu > p%next%mark ) EXIT ! (2) p => p%next END DO new = unit(namae, tensu, p%next) ! (4) p%next => new ! (5) END SUBROUTINE