title: Fortran Compiler Terminology: Dummy Variables and Attributes
body: <p>Can someone explain to me what sort of an abstraction in the parser / compiler a dummy variable or attribute corresponds to?</p>
  
  <pre><code>      PURE SUBROUTINE F(X, Y)
          IMPLICIT NONE
          REAL, INTENT(INOUT) :: X, Y, C
  C        REAL :: A, B
  C        REAL, SAVE :: C = 3.14E0
          PARAMETER (C = 3.14E0, X = 32, Y = X)
          X = Y + 2 * SIN(Y)
        END
  </code></pre>
  
  <hr>
  
  <pre><code>cetin@unique:~/lab/secret/tapenade$ gfortran -x f77 -c 1.f 
  1.f:6.37:
  
          PARAMETER (C = 3.14E0, X = 32, Y = X)                           
                                      1
  Error: PARAMETER attribute conflicts with DUMMY attribute in 'x' at (1)
  1.f:3.38:
  
          REAL, INTENT(INOUT) :: X, Y, C                                  
                                       1
  Error: Symbol at (1) is not a DUMMY variable
  </code></pre>
  
  <hr>
  
  <pre><code>cetin@unique:~/lab/secret/tapenade$ ifort -c 1.f
  1.f(3): error #6451: A dummy argument name is required in this context.   [C]
          REAL, INTENT(INOUT) :: X, Y, C
  -------------------------------------^
  1.f(6): error #6406: Conflicting attributes or multiple declaration of name.   [X]
          PARAMETER (C = 3.14E0, X = 32, Y = X)
  -------------------------------^
  1.f(6): error #6406: Conflicting attributes or multiple declaration of name.   [Y]
          PARAMETER (C = 3.14E0, X = 32, Y = X)
  ---------------------------------------^
  1.f(6): error #6592: This symbol must be a defined parameter, an enumerator, or an argument of an inquiry function that evaluates to a compile-time constant.   [X]
          PARAMETER (C = 3.14E0, X = 32, Y = X)
  -------------------------------------------^
  compilation aborted for 1.f (code 1)
  </code></pre>