!----- Ex9_4_1: 成績リスト ----- PROGRAM usage_of_pointer TYPE unit CHARACTER(LEN=12) :: name INTEGER :: mark TYPE(unit), POINTER :: next END TYPE ! CHARACTER(LEN=12) :: namae INTEGER :: tensu TYPE(unit), POINTER :: ent, new, p ALLOCATE(ent); NULLIFY(ent%next) DO PRINT*, "Input name (or [ENTER]-key to stop):" READ(*,'(A)') namae; IF( namae ==' ') EXIT PRINT*, "Input her or his mark:" READ*, tensu CALL rearange END DO ! !----- 出力 p => ent%next DO WHILE( ASSOCIATED(p) ) PRINT "(A12, I4)", p%name, p%mark p => p%next END DO ! CONTAINS SUBROUTINE rearange ALLOCATE(new) new = unit(namae, tensu, ent%next) ent%next => new END SUBROUTINE END