L17 : Pointers in NPROMA routines ********************************* The use of Fortran pointers in compute NPROMA routines should be forbidden except for the following pattern: .. code-block:: fortran SUBROUTINE GPRCP_EXPL (YDCST, YDCPG_BNDS, YDCPG_OPTS, PCP, PR, PKAP, YDVARS, KGFLTYP) REAL(KIND=JPRB),OPTIONAL,TARGET,INTENT(OUT) :: PCP(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) REAL(KIND=JPRB),OPTIONAL,TARGET,INTENT(OUT) :: PR(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) REAL(KIND=JPRB),OPTIONAL, INTENT(OUT) :: PKAP(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) REAL(KIND=JPRB), POINTER :: ZR(:,:) REAL(KIND=JPRB), TARGET :: ZR0(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) IF (PRESENT (PR)) THEN ZR => PR ELSEIF (PRESENT (PKAP)) THEN ZR => ZR0 ELSE CALL ABOR1 ('GPRCP_EXPL: EXPECTED PR OR PKAP') ENDIF And such pointers should always point to arrays with the same shapes.