IFS Fortran Standard

List of rules:

  • L1 : implicit none
  • L2 : use module, only
  • L3 : global variables
  • L4 : new language features
  • L5 : argument INTENT
  • L6 : OPTIONAL argument position
  • L7 : OPTIONAL argument keyword usage
  • L8 : copying allocatable arrays
  • L9 : interfaces for routines
  • L10 : declaration syntax
  • L11 : array syntax
  • L12 : array declarations in NPROMA routines
  • L13 : array declarations in parallel routines
  • L14 : notations
  • L15 : dummy/actual array dimensions
  • L16 : INTENT attribute in NPROMA routines
  • L17 : Pointers in NPROMA routines
  • L18 : Design of NPROMA routines
  • L19 : Design of derived types
  • I1 : naming of variables, subroutines, modules
  • I2 : KIND specification
  • I3 : derived types in modules
  • I4 : Excessively long interfaces
  • I5 : MPL and message passing
  • I6 : MPL and string argument
  • I7 : DRHOOK instrumentation
  • SC1 : horizontal indexing
  • SC2 : horizontal looping
  • SC3 : function calls from inside KPROMA loops
  • SC4 : no horizontal indirection
  • S1 : END IF / ENDIF
  • S2: order of argument declarations
  • S3 : line continuation
  • S4: no unqualified END statements
  • S5 : unused variables
  • S6 : no TABS
  • Coding norms 2011 rules
    • R1 : Encapsulation rules
    • R2 : Subroutine length
    • R3 : Cosmetic changes
    • R4 : Unused variables
    • R5 : Variable name suffixes
    • R6 : Array syntax
    • R7 : Cut-n-paste
    • R8 : LECMWF variable
    • R9 : LELAM variable
    • R10 : LFI or GRIB
    • R11 : message passing
    • R12 : Derived types in a module
    • R13 : Code must be threadsafe
    • R14 : Abnormal termination
    • R15 : The save statement
    • R16 : argument passing characteristics
    • R17 : SELECT CASE
    • R18 : include interfaces
    • R19 : number of arguments to routines
    • R20 : names of variables
    • R21 : Name prefixes and suffixes
    • R22 : Aladin routine names
    • R23 : NULOUT & NULERR usage
    • R24 : universal constants
    • R25 : MPL string argument
    • R26 : code structure and file location
    • R27 : namelist usage
    • R28 : DATA statement
    • R29 : F90 free format
    • R30 : consistent style
    • R31 : no TAB usage
    • R32 : IMPLICIT NONE
    • R33 : no hard-coded array dimensions
    • R34 : “::” notation
    • R35 : mandatory KIND specification
    • R36 : USE, ONLY
    • R37 : PARAMETER wherever possible
    • R38 : variable name prefixes
    • R39 : banned statements
    • R40 : no implicit array sizing
    • R41 : automatic and allocatable arrays
    • R42 : deallocation of allocatables
    • R43 : comparison operators
    • R44 : value comparisons
    • R45 : argument intents are compulsory
    • R46 : order of optional arguments
    • R47 : ENDIF / END IF
    • R48 : removal of dead code
IFS Fortran Standard
  • Coding norms 2011 rules
  • View page source

Coding norms 2011 rules

  • R1 : Encapsulation rules
  • R2 : Subroutine length
  • R3 : Cosmetic changes
  • R4 : Unused variables
  • R5 : Variable name suffixes
  • R6 : Array syntax
  • R7 : Cut-n-paste
  • R8 : LECMWF variable
  • R9 : LELAM variable
  • R10 : LFI or GRIB
  • R11 : message passing
  • R12 : Derived types in a module
  • R13 : Code must be threadsafe
  • R14 : Abnormal termination
  • R15 : The save statement
  • R16 : argument passing characteristics
  • R17 : SELECT CASE
  • R18 : include interfaces
  • R19 : number of arguments to routines
  • R20 : names of variables
  • R21 : Name prefixes and suffixes
  • R22 : Aladin routine names
  • R23 : NULOUT & NULERR usage
  • R24 : universal constants
  • R25 : MPL string argument
  • R26 : code structure and file location
  • R27 : namelist usage
  • R28 : DATA statement
  • R29 : F90 free format
  • R30 : consistent style
  • R31 : no TAB usage
  • R32 : IMPLICIT NONE
  • R33 : no hard-coded array dimensions
  • R34 : “::” notation
  • R35 : mandatory KIND specification
  • R36 : USE, ONLY
  • R37 : PARAMETER wherever possible
  • R38 : variable name prefixes
  • R39 : banned statements
  • R40 : no implicit array sizing
  • R41 : automatic and allocatable arrays
  • R42 : deallocation of allocatables
  • R43 : comparison operators
  • R44 : value comparisons
  • R45 : argument intents are compulsory
  • R46 : order of optional arguments
  • R47 : ENDIF / END IF
  • R48 : removal of dead code
Previous Next

© Copyright 2024-, ECMWF, Météo-France.

Built with Sphinx using a theme provided by Read the Docs.

Accessibility - Privacy - Terms of use - Contact us