! Copyright 2019-2020 Free Software Foundation, Inc. ! ! This program is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 3 of the License, or ! (at your option) any later version. ! ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. ! ! You should have received a copy of the GNU General Public License ! along with this program. If not, see <http://www.gnu.org/licenses/>. program pointers type :: two integer, allocatable :: ivla1 (:) integer, allocatable :: ivla2 (:, :) end type two logical, target :: logv complex, target :: comv character, target :: charv character (len=3), target :: chara integer, target :: intv integer, target, dimension (10,2) :: inta real, target :: realv type(two), target :: twov logical, pointer :: logp complex, pointer :: comp character, pointer :: charp character (len=3), pointer :: charap integer, pointer :: intp integer, pointer, dimension (:,:) :: intap real, pointer :: realp type(two), pointer :: twop nullify (logp) nullify (comp) nullify (charp) nullify (charap) nullify (intp) nullify (intap) nullify (realp) nullify (twop) logp => logv ! Before pointer assignment comp => comv charp => charv charap => chara intp => intv intap => inta realp => realv twop => twov logv = associated(logp) ! Before value assignment comv = cmplx(1,2) charv = "a" chara = "abc" intv = 10 inta(:,:) = 1 inta(3,1) = 3 realv = 3.14 allocate (twov%ivla1(3)) allocate (twov%ivla2(2,2)) twov%ivla1(1) = 11 twov%ivla1(2) = 12 twov%ivla1(3) = 13 twov%ivla2(1,1) = 211 twov%ivla2(2,1) = 221 twov%ivla2(1,2) = 212 twov%ivla2(2,2) = 222 intv = intv + 1 ! After value assignment end program pointers |