<VALUE Example Program>

Program value_example
  Integer :: ivar,jvar
  ivar = 17
  jvar = 42
  !
  Call inner(ivar,jvar)
  !
  ! The variable IVAR will still be equal to 17,
  ! but JVAR will have been changed by INNER.
  !
  Print *,ivar,jvar
  !
Contains
  Subroutine inner(a,b)
    Integer,Value :: a
    Integer,Intent(InOut) :: b
    Print *,a,b
    a = a**2  ! Only changes the local copy.
    b = b**2  ! Changes the actual argument.
    Print *,a,b
  End Subroutine
End Program

■ Execution Results

 17 42
 289 1764
 17 1764