# Using Standard Features and Extensions

## Standard Features

Use standard language features to achieve the greatest degree of portability for your Intel® Fortran programs. You can design a robust implementation to improve the portability of your program, or you can choose to use extensions to the standard to increase the readability, functionality, and efficiency of your programs.

You can request that the compiler warn you about program syntax that violates the standard's numbered syntax rules and constraints. While this does not insure that the program as a whole is standard-conforming, it can help to avoid many possible compatibility issues. The /stand (Windows*) or -std (Linux* and macOS) options enable this checking, and you can specify the desire standard to check against. If you do not specify a standard, Fortran 2018 is used.

You can use the standard-semantics compiler option to enable all of the options that implement the current Fortran Standard behavior of the compiler where those differ from the compiler's default.

## Standard Extensions

Not all extensions to the Fortran standard cause problems when porting to other platforms. Many extensions are supported on a wide range of platforms, and if a system you are porting a program to supports an extension, there is no reason to avoid using it. There is no guarantee, however, that the same feature on another system will be implemented in the same way as with Intel® Fortran. Only the Fortran standard is guaranteed to coexist uniformly on all platforms.

The Intel® Fortran Compiler supports many language extensions on multiple platforms, including Linux*, macOS, and Microsoft Windows* operating systems. The Intel® Fortran Language Reference Manual identifies whether each language element is supported on other platforms.

It is a good programming practice to declare any external procedures either in an EXTERNAL statement or in a procedure interface block, for the following reasons:

- The newer Fortran standards have added many new intrinsic procedures to the language.

  Programs that conformed to earlier Fortran Standards (such as FORTRAN 77) may include non-intrinsic functions or subroutines having the same name as new Fortran Standard procedures.

- Some processors include nonstandard intrinsic procedures that might conflict with procedure names in your program.

If you do not explicitly declare the external procedures and the name duplicates an intrinsic procedure, the processor calls the intrinsic procedure, not your external routine. For more information on how the Intel® Fortran Compiler resolves name definitions, see Resolving Procedure References.

Parent topic: Understanding Fortran Language Standards

## See Also

stand compiler option
standard-semantics compiler option
Resolving Procedure References