PROGRAM argumentti IMPLICIT NONE REAL, DIMENSION(5) :: t1, t2 EXTERNAL vaihda t1 = -1 t1(2) = 3 t2 = 2 CALL suorita(vaihda, t1, t2) WRITE (*,*) t1 WRITE (*,*) t2 CONTAINS SUBROUTINE suorita(operaatio, t1, t2) IMPLICIT NONE EXTERNAL operaatio REAL, DIMENSION(:), INTENT(INOUT) :: t1, t2 INTEGER :: i IF (SIZE(t1) /= SIZE(t2)) THEN STOP 't1 ja t2 erisuuret!' END IF DO i = 1, SIZE(t1) CALL operaatio(t1(i),t2(i)) END DO END SUBROUTINE suorita END PROGRAM argumentti SUBROUTINE vaihda(a,b) IMPLICIT NONE REAL :: a, b REAL :: apu apu = a a = b b = apu END SUBROUTINE vaihda