Some additional prohibitions apply to PURE functions that do not apply to PURE subroutines. Most notably, a PURE subroutine may modify its arguments, whereas a PURE function may not do so. The programmer must take responsibility for checking these conditions. Illegal use of the PURE attribute is not detected by the compiler, and may result in incorrect program results. The compiler makes a generalized version of the subprogram that can accept whatever mapping the arguments have when passed in.
Transcriptive distribution is specified with an asterisk.
This specifies that the dummy argument should be distributed in the same way as the actual. Using transcriptive mappings forces the compiler to generate code that is generalized for any possible alignment, which may be less efficient. The best performance is obtained by explicitly specifying data mapping for the subprogram. In the preceding example, the array U was aligned with another array T . When explicit directives are used, the template must be declared in the subroutine.