From b8c3d75700896da2822d5e3ac1796395b09ef506 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Tue, 21 Jun 2022 22:46:54 +0200 Subject: [PATCH] [skip sc] enforce interfaces (quick fix: declare as external) --- src/CLI.f90 | 2 +- src/HDF5_utilities.f90 | 2 +- src/IO.f90 | 2 +- src/LAPACK_interface.f90 | 10 +++++----- src/Marc/DAMASK_Marc.f90 | 8 ++++---- src/Marc/discretization_Marc.f90 | 2 +- src/Marc/element.f90 | 2 +- src/Marc/materialpoint_Marc.f90 | 2 +- src/YAML_parse.f90 | 4 ++-- src/YAML_types.f90 | 2 +- src/config.f90 | 2 +- src/constants.f90 | 2 +- src/discretization.f90 | 2 +- src/geometry_plastic_nonlocal.f90 | 2 +- src/grid/DAMASK_grid.f90 | 2 +- src/grid/FFTW.f90 | 2 +- src/grid/VTI.f90 | 2 +- src/grid/base64.f90 | 2 +- src/grid/discretization_grid.f90 | 2 +- src/grid/grid_damage_spectral.f90 | 2 +- src/grid/grid_mech_FEM.f90 | 2 +- src/grid/grid_mech_spectral_basic.f90 | 2 +- src/grid/grid_mech_spectral_polarisation.f90 | 2 +- src/grid/grid_thermal_spectral.f90 | 2 +- src/grid/spectral_utilities.f90 | 2 +- src/grid/zlib.f90 | 4 ++-- src/homogenization.f90 | 2 +- src/lattice.f90 | 2 +- src/material.f90 | 2 +- src/materialpoint.f90 | 2 +- src/math.f90 | 2 +- src/mesh/DAMASK_mesh.f90 | 2 +- src/mesh/FEM_quadrature.f90 | 2 +- src/mesh/FEM_utilities.f90 | 7 ++++++- src/mesh/discretization_mesh.f90 | 4 +++- src/mesh/mesh_mech_FEM.f90 | 11 ++++++++++- src/parallelization.f90 | 2 +- src/phase.f90 | 2 +- src/polynomials.f90 | 2 +- src/prec.f90 | 2 +- src/quit.f90 | 2 +- src/results.f90 | 2 +- src/rotations.f90 | 4 ++-- src/signals.f90 | 2 +- src/system_routines.f90 | 18 +++++++++--------- 45 files changed, 79 insertions(+), 63 deletions(-) diff --git a/src/CLI.f90 b/src/CLI.f90 index cc73365d6..ee1555cb2 100644 --- a/src/CLI.f90 +++ b/src/CLI.f90 @@ -18,7 +18,7 @@ module CLI use parallelization use system_routines - implicit none + implicit none(type,external) private integer, public, protected :: & CLI_restartInc = 0 !< Increment at which calculation starts diff --git a/src/HDF5_utilities.f90 b/src/HDF5_utilities.f90 index c905164c2..eab1ca73f 100644 --- a/src/HDF5_utilities.f90 +++ b/src/HDF5_utilities.f90 @@ -18,7 +18,7 @@ module HDF5_utilities use prec use parallelization - implicit none + implicit none(type,external) private !-------------------------------------------------------------------------------------------------- diff --git a/src/IO.f90 b/src/IO.f90 index 9b9b9d563..31bb0ed2d 100644 --- a/src/IO.f90 +++ b/src/IO.f90 @@ -12,7 +12,7 @@ module IO use prec - implicit none + implicit none(type,external) private character(len=*), parameter, public :: & diff --git a/src/LAPACK_interface.f90 b/src/LAPACK_interface.f90 index 43ddb5771..cc451b59c 100644 --- a/src/LAPACK_interface.f90 +++ b/src/LAPACK_interface.f90 @@ -8,7 +8,7 @@ module LAPACK_interface pure subroutine dgeev(jobvl,jobvr,n,a,lda,wr,wi,vl,ldvl,vr,ldvr,work,lwork,info) use prec - implicit none + implicit none(type,external) character, intent(in) :: jobvl,jobvr integer, intent(in) :: n,lda,ldvl,ldvr,lwork @@ -22,7 +22,7 @@ module LAPACK_interface pure subroutine dgesv(n,nrhs,a,lda,ipiv,b,ldb,info) use prec - implicit none + implicit none(type,external) integer, intent(in) :: n,nrhs,lda,ldb real(pReal), intent(inout), dimension(lda,n) :: a @@ -33,7 +33,7 @@ module LAPACK_interface pure subroutine dgetrf(m,n,a,lda,ipiv,info) use prec - implicit none + implicit none(type,external) integer, intent(in) :: m,n,lda real(pReal), intent(inout), dimension(lda,n) :: a @@ -43,7 +43,7 @@ module LAPACK_interface pure subroutine dgetri(n,a,lda,ipiv,work,lwork,info) use prec - implicit none + implicit none(type,external) integer, intent(in) :: n,lda,lwork real(pReal), intent(inout), dimension(lda,n) :: a @@ -54,7 +54,7 @@ module LAPACK_interface pure subroutine dsyev(jobz,uplo,n,a,lda,w,work,lwork,info) use prec - implicit none + implicit none(type,external) character, intent(in) :: jobz,uplo integer, intent(in) :: n,lda,lwork diff --git a/src/Marc/DAMASK_Marc.f90 b/src/Marc/DAMASK_Marc.f90 index 28cdf9223..01eb8c5ef 100644 --- a/src/Marc/DAMASK_Marc.f90 +++ b/src/Marc/DAMASK_Marc.f90 @@ -25,7 +25,7 @@ module DAMASK_interface use ifport, only: & CHDIR - implicit none + implicit none(type,external) private logical, protected, public :: symmetricSolver @@ -210,7 +210,7 @@ subroutine hypela2(d,g,e,de,s,t,dt,ngens,m,nn,kcus,matus,ndi,nshear,disp, & use materialpoint_Marc use OMP_LIB - implicit none + implicit none(type,external) integer, intent(in) :: & ! according to MSC.Marc 2012 Manual D ngens, & !< size of stress-strain law nn, & !< integration point number @@ -382,7 +382,7 @@ subroutine flux(f,ts,n,time) use homogenization use discretization_Marc - implicit none + implicit none(type,external) real(pReal), dimension(6), intent(in) :: & ts integer, dimension(10), intent(in) :: & @@ -409,7 +409,7 @@ subroutine uedinc(inc,incsub) use materialpoint_Marc use discretization_Marc - implicit none + implicit none(type,external) integer, intent(in) :: inc, incsub integer :: n, nqncomp, nqdatatype integer, save :: inc_written diff --git a/src/Marc/discretization_Marc.f90 b/src/Marc/discretization_Marc.f90 index 8886e3ebb..a0667d049 100644 --- a/src/Marc/discretization_Marc.f90 +++ b/src/Marc/discretization_Marc.f90 @@ -17,7 +17,7 @@ module discretization_Marc use geometry_plastic_nonlocal use results - implicit none + implicit none(type,external) private real(pReal), public, protected :: & diff --git a/src/Marc/element.f90 b/src/Marc/element.f90 index b53322f34..2940704bd 100644 --- a/src/Marc/element.f90 +++ b/src/Marc/element.f90 @@ -5,7 +5,7 @@ module element use IO - implicit none + implicit none(type,external) private !--------------------------------------------------------------------------------------------------- diff --git a/src/Marc/materialpoint_Marc.f90 b/src/Marc/materialpoint_Marc.f90 index 2ad98109d..72c718a87 100644 --- a/src/Marc/materialpoint_Marc.f90 +++ b/src/Marc/materialpoint_Marc.f90 @@ -23,7 +23,7 @@ module materialpoint_Marc use discretization use discretization_Marc - implicit none + implicit none(type,external) private real(pReal), dimension (:,:,:), allocatable, private :: & diff --git a/src/YAML_parse.f90 b/src/YAML_parse.f90 index 67abfdd90..e7d64770d 100644 --- a/src/YAML_parse.f90 +++ b/src/YAML_parse.f90 @@ -12,7 +12,7 @@ module YAML_parse use system_routines #endif - implicit none + implicit none(type,external) private public :: & @@ -24,7 +24,7 @@ module YAML_parse subroutine to_flow_C(flow,length_flow,mixed) bind(C) use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR, C_PTR - implicit none + implicit none(type,external) type(C_PTR), intent(out) :: flow integer(C_INT), intent(out) :: length_flow diff --git a/src/YAML_types.f90 b/src/YAML_types.f90 index e685209e6..e9bdff88d 100644 --- a/src/YAML_types.f90 +++ b/src/YAML_types.f90 @@ -11,7 +11,7 @@ module YAML_types use IO use prec - implicit none + implicit none(type,external) private type, abstract, public :: tNode diff --git a/src/config.f90 b/src/config.f90 index 78723c19f..5c31e3b25 100644 --- a/src/config.f90 +++ b/src/config.f90 @@ -9,7 +9,7 @@ module config use results use parallelization - implicit none + implicit none(type,external) private class(tNode), pointer, public :: & diff --git a/src/constants.f90 b/src/constants.f90 index 1effb8d95..7d1892e9d 100644 --- a/src/constants.f90 +++ b/src/constants.f90 @@ -5,7 +5,7 @@ module constants use prec - implicit none + implicit none(type,external) public real(pReal), parameter :: & diff --git a/src/discretization.f90 b/src/discretization.f90 index 95fd39fd5..f24b0eadf 100644 --- a/src/discretization.f90 +++ b/src/discretization.f90 @@ -7,7 +7,7 @@ module discretization use prec use results - implicit none + implicit none(type,external) private integer, public, protected :: & diff --git a/src/geometry_plastic_nonlocal.f90 b/src/geometry_plastic_nonlocal.f90 index 571ca2e6a..09c40f8b3 100644 --- a/src/geometry_plastic_nonlocal.f90 +++ b/src/geometry_plastic_nonlocal.f90 @@ -9,7 +9,7 @@ module geometry_plastic_nonlocal use prec use results - implicit none + implicit none(type,external) public integer, protected :: & diff --git a/src/grid/DAMASK_grid.f90 b/src/grid/DAMASK_grid.f90 index 0d41338a1..c36a4eeb2 100644 --- a/src/grid/DAMASK_grid.f90 +++ b/src/grid/DAMASK_grid.f90 @@ -30,7 +30,7 @@ program DAMASK_grid use grid_thermal_spectral use results - implicit none + implicit none(type,external) type :: tLoadCase type(tRotation) :: rot !< rotation of BC diff --git a/src/grid/FFTW.f90 b/src/grid/FFTW.f90 index e552e78e0..5df432061 100644 --- a/src/grid/FFTW.f90 +++ b/src/grid/FFTW.f90 @@ -5,7 +5,7 @@ module FFTW3 use, intrinsic :: ISO_C_binding - implicit none + implicit none(type,external) public include 'fftw3-mpi.f03' diff --git a/src/grid/VTI.f90 b/src/grid/VTI.f90 index a5918137e..98cb55e54 100644 --- a/src/grid/VTI.f90 +++ b/src/grid/VTI.f90 @@ -8,7 +8,7 @@ module VTI use base64 use IO - implicit none + implicit none(type,external) private public :: & diff --git a/src/grid/base64.f90 b/src/grid/base64.f90 index 448f57d2a..6e580f043 100644 --- a/src/grid/base64.f90 +++ b/src/grid/base64.f90 @@ -7,7 +7,7 @@ module base64 use prec use IO - implicit none + implicit none(type,external) private character(len=*), parameter :: & diff --git a/src/grid/discretization_grid.f90 b/src/grid/discretization_grid.f90 index 916cf6e69..565695bb8 100644 --- a/src/grid/discretization_grid.f90 +++ b/src/grid/discretization_grid.f90 @@ -23,7 +23,7 @@ module discretization_grid use discretization use geometry_plastic_nonlocal - implicit none + implicit none(type,external) private integer, dimension(3), public, protected :: & diff --git a/src/grid/grid_damage_spectral.f90 b/src/grid/grid_damage_spectral.f90 index dc21a1a2c..55e442106 100644 --- a/src/grid/grid_damage_spectral.f90 +++ b/src/grid/grid_damage_spectral.f90 @@ -22,7 +22,7 @@ module grid_damage_spectral use YAML_types use config - implicit none + implicit none(type,external) private type :: tNumerics diff --git a/src/grid/grid_mech_FEM.f90 b/src/grid/grid_mech_FEM.f90 index 52be43362..4734d87a2 100644 --- a/src/grid/grid_mech_FEM.f90 +++ b/src/grid/grid_mech_FEM.f90 @@ -27,7 +27,7 @@ module grid_mechanical_FEM use discretization use discretization_grid - implicit none + implicit none(type,external) private type(tSolutionParams) :: params diff --git a/src/grid/grid_mech_spectral_basic.f90 b/src/grid/grid_mech_spectral_basic.f90 index 7931be0c7..a9582ebb9 100644 --- a/src/grid/grid_mech_spectral_basic.f90 +++ b/src/grid/grid_mech_spectral_basic.f90 @@ -26,7 +26,7 @@ module grid_mechanical_spectral_basic use homogenization use discretization_grid - implicit none + implicit none(type,external) private type(tSolutionParams) :: params diff --git a/src/grid/grid_mech_spectral_polarisation.f90 b/src/grid/grid_mech_spectral_polarisation.f90 index 198e333d5..c6d3c82e2 100644 --- a/src/grid/grid_mech_spectral_polarisation.f90 +++ b/src/grid/grid_mech_spectral_polarisation.f90 @@ -26,7 +26,7 @@ module grid_mechanical_spectral_polarisation use homogenization use discretization_grid - implicit none + implicit none(type,external) private type(tSolutionParams) :: params diff --git a/src/grid/grid_thermal_spectral.f90 b/src/grid/grid_thermal_spectral.f90 index 8483fe336..391d80b9d 100644 --- a/src/grid/grid_thermal_spectral.f90 +++ b/src/grid/grid_thermal_spectral.f90 @@ -25,7 +25,7 @@ module grid_thermal_spectral use YAML_types use config - implicit none + implicit none(type,external) private type :: tNumerics diff --git a/src/grid/spectral_utilities.f90 b/src/grid/spectral_utilities.f90 index 2e00c10f4..9bd0a2348 100644 --- a/src/grid/spectral_utilities.f90 +++ b/src/grid/spectral_utilities.f90 @@ -22,7 +22,7 @@ module spectral_utilities use discretization use homogenization - implicit none + implicit none(type,external) private !-------------------------------------------------------------------------------------------------- diff --git a/src/grid/zlib.f90 b/src/grid/zlib.f90 index 10a62a55b..f0fc274ed 100644 --- a/src/grid/zlib.f90 +++ b/src/grid/zlib.f90 @@ -5,7 +5,7 @@ module zlib use prec - implicit none + implicit none(type,external) private public :: & @@ -15,7 +15,7 @@ module zlib subroutine inflate_C(s_deflated,s_inflated,deflated,inflated) bind(C) use, intrinsic :: ISO_C_Binding, only: C_SIGNED_CHAR, C_INT64_T - implicit none + implicit none(type,external) integer(C_INT64_T), intent(in) :: s_deflated,s_inflated integer(C_SIGNED_CHAR), dimension(s_deflated), intent(in) :: deflated diff --git a/src/homogenization.f90 b/src/homogenization.f90 index 290f3de9b..b1e462794 100644 --- a/src/homogenization.f90 +++ b/src/homogenization.f90 @@ -18,7 +18,7 @@ module homogenization use results use lattice - implicit none + implicit none(type,external) private type :: tState diff --git a/src/lattice.f90 b/src/lattice.f90 index 2c2da345d..5339dc9ac 100644 --- a/src/lattice.f90 +++ b/src/lattice.f90 @@ -13,7 +13,7 @@ module lattice use math use rotations - implicit none + implicit none(type,external) private !-------------------------------------------------------------------------------------------------- diff --git a/src/material.f90 b/src/material.f90 index eafc411cd..1ec844382 100644 --- a/src/material.f90 +++ b/src/material.f90 @@ -14,7 +14,7 @@ module material use discretization use YAML_types - implicit none + implicit none(type,external) private type, public :: tRotationContainer diff --git a/src/materialpoint.f90 b/src/materialpoint.f90 index d83307738..5b8b690e0 100644 --- a/src/materialpoint.f90 +++ b/src/materialpoint.f90 @@ -31,7 +31,7 @@ module materialpoint use discretization_grid #endif - implicit none + implicit none(type,external) public contains diff --git a/src/math.f90 b/src/math.f90 index a814d7b99..d11ad1565 100644 --- a/src/math.f90 +++ b/src/math.f90 @@ -12,7 +12,7 @@ module math use YAML_types use LAPACK_interface - implicit none + implicit none(type,external) public #if __INTEL_COMPILER >= 1900 ! do not make use of associated entities available to other modules diff --git a/src/mesh/DAMASK_mesh.f90 b/src/mesh/DAMASK_mesh.f90 index f0f2a872e..5489ac36e 100644 --- a/src/mesh/DAMASK_mesh.f90 +++ b/src/mesh/DAMASK_mesh.f90 @@ -20,7 +20,7 @@ program DAMASK_mesh use FEM_Utilities use mesh_mechanical_FEM - implicit none + implicit none(type,external) type :: tLoadCase real(pReal) :: time = 0.0_pReal !< length of increment diff --git a/src/mesh/FEM_quadrature.f90 b/src/mesh/FEM_quadrature.f90 index f519dc377..a2217847a 100644 --- a/src/mesh/FEM_quadrature.f90 +++ b/src/mesh/FEM_quadrature.f90 @@ -5,7 +5,7 @@ module FEM_quadrature use prec - implicit none + implicit none(type,external) private integer, parameter :: & diff --git a/src/mesh/FEM_utilities.f90 b/src/mesh/FEM_utilities.f90 index 4e31a0475..60a95d83c 100644 --- a/src/mesh/FEM_utilities.f90 +++ b/src/mesh/FEM_utilities.f90 @@ -21,7 +21,7 @@ module FEM_utilities use homogenization use FEM_quadrature - implicit none + implicit none(type,external) private logical, public :: cutBack = .false. !< cut back of BVP solver in case convergence is not achieved or a material point is terminally ill @@ -65,6 +65,11 @@ module FEM_utilities type(tComponentBC), allocatable, dimension(:) :: componentBC end type tFieldBC + external :: & + PetscSectionGetFieldComponents, & + PetscSectionGetFieldDof, & + PetscSectionGetFieldOffset + public :: & FEM_utilities_init, & utilities_constitutiveResponse, & diff --git a/src/mesh/discretization_mesh.f90 b/src/mesh/discretization_mesh.f90 index b898c4e6b..fe101ba6b 100644 --- a/src/mesh/discretization_mesh.f90 +++ b/src/mesh/discretization_mesh.f90 @@ -25,7 +25,7 @@ module discretization_mesh use YAML_types use prec - implicit none + implicit none(type,external) private integer, public, protected :: & @@ -52,6 +52,8 @@ module discretization_mesh real(pReal), dimension(:,:,:), allocatable :: & mesh_ipCoordinates !< IP x,y,z coordinates (after deformation!) + external :: & + DMView ! ToDo: write interface public :: & discretization_mesh_init, & mesh_FEM_build_ipVolumes, & diff --git a/src/mesh/mesh_mech_FEM.f90 b/src/mesh/mesh_mech_FEM.f90 index 5f02011eb..22af0a709 100644 --- a/src/mesh/mesh_mech_FEM.f90 +++ b/src/mesh/mesh_mech_FEM.f90 @@ -26,7 +26,7 @@ module mesh_mechanical_FEM use homogenization use math - implicit none + implicit none(type,external) private !-------------------------------------------------------------------------------------------------- @@ -67,6 +67,15 @@ module mesh_mechanical_FEM logical :: ForwardData real(pReal), parameter :: eps = 1.0e-18_pReal + external :: & + PetscSectionGetNumFields, & + PetscFESetQuadrature, & + PetscFEGetDimension, & + PetscFEDestroy, & + PetscSectionGetDof, & + PetscFEGetDualSpace, & + PetscDualSpaceGetFunctional + public :: & FEM_mechanical_init, & FEM_mechanical_solution, & diff --git a/src/parallelization.f90 b/src/parallelization.f90 index d631711d8..d2c982d1d 100644 --- a/src/parallelization.f90 +++ b/src/parallelization.f90 @@ -18,7 +18,7 @@ module parallelization use prec - implicit none + implicit none(type,external) private #ifndef PETSC diff --git a/src/phase.f90 b/src/phase.f90 index af7197f7b..f9f3a8125 100644 --- a/src/phase.f90 +++ b/src/phase.f90 @@ -19,7 +19,7 @@ module phase use HDF5 use HDF5_utilities - implicit none + implicit none(type,external) private type :: tState diff --git a/src/polynomials.f90 b/src/polynomials.f90 index e04db16f5..eeb4152f2 100644 --- a/src/polynomials.f90 +++ b/src/polynomials.f90 @@ -8,7 +8,7 @@ module polynomials use YAML_parse use YAML_types - implicit none + implicit none(type,external) private type, public :: tPolynomial diff --git a/src/prec.f90 b/src/prec.f90 index 73563d4f2..963391c39 100644 --- a/src/prec.f90 +++ b/src/prec.f90 @@ -15,7 +15,7 @@ module prec use PETScSys #endif - implicit none + implicit none(type,external) public ! https://stevelionel.com/drfortran/2017/03/27/doctor-fortran-in-it-takes-all-kinds diff --git a/src/quit.f90 b/src/quit.f90 index aa8bcb0fb..3a46658e2 100644 --- a/src/quit.f90 +++ b/src/quit.f90 @@ -12,7 +12,7 @@ subroutine quit(stop_id) #endif use HDF5 - implicit none + implicit none(type,external) integer, intent(in) :: stop_id integer, dimension(8) :: dateAndTime integer :: err_HDF5 diff --git a/src/results.f90 b/src/results.f90 index cf1b4de5c..6849d7577 100644 --- a/src/results.f90 +++ b/src/results.f90 @@ -21,7 +21,7 @@ module results use DAMASK_interface #endif - implicit none + implicit none(type,external) private integer(HID_T) :: resultsFile diff --git a/src/rotations.f90 b/src/rotations.f90 index f6ef57783..83d945ea9 100644 --- a/src/rotations.f90 +++ b/src/rotations.f90 @@ -50,7 +50,7 @@ module rotations use IO use math - implicit none + implicit none(type,external) private real(pReal), parameter :: P = -1.0_pReal !< parameter for orientation conversion. @@ -796,7 +796,7 @@ end function conjugateQuaternion subroutine selfTest() type(tRotation) :: R - real(pReal), dimension(4) :: qu, ax + real(pReal), dimension(4) :: qu real(pReal), dimension(3) :: x, eu, v3 real(pReal), dimension(3,3) :: om, t33 real(pReal), dimension(3,3,3,3) :: t3333 diff --git a/src/signals.f90 b/src/signals.f90 index 7db101f94..3f0397d3d 100644 --- a/src/signals.f90 +++ b/src/signals.f90 @@ -6,7 +6,7 @@ module signals use prec use system_routines - implicit none + implicit none(type,external) private logical, volatile, public, protected :: & diff --git a/src/system_routines.f90 b/src/system_routines.f90 index a74c2e417..3ce6ba6ce 100644 --- a/src/system_routines.f90 +++ b/src/system_routines.f90 @@ -7,7 +7,7 @@ module system_routines use prec - implicit none + implicit none(type,external) private public :: & @@ -27,7 +27,7 @@ module system_routines function setCWD_C(cwd) bind(C) use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR - implicit none + implicit none(type,external) integer(C_INT) :: setCWD_C character(kind=C_CHAR), dimension(*), intent(in) :: cwd @@ -36,7 +36,7 @@ module system_routines subroutine getCWD_C(cwd, stat) bind(C) use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR use prec - implicit none + implicit none(type,external) character(kind=C_CHAR), dimension(pPathLen+1), intent(out) :: cwd ! NULL-terminated array integer(C_INT), intent(out) :: stat @@ -45,7 +45,7 @@ module system_routines subroutine getHostName_C(hostname, stat) bind(C) use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR use prec - implicit none + implicit none(type,external) character(kind=C_CHAR), dimension(pStringLen+1), intent(out) :: hostname ! NULL-terminated array integer(C_INT), intent(out) :: stat @@ -54,7 +54,7 @@ module system_routines subroutine getUserName_C(username, stat) bind(C) use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR use prec - implicit none + implicit none(type,external) character(kind=C_CHAR), dimension(pStringLen+1), intent(out) :: username ! NULL-terminated array integer(C_INT), intent(out) :: stat @@ -62,28 +62,28 @@ module system_routines subroutine signalint_C(handler) bind(C) use, intrinsic :: ISO_C_Binding, only: C_FUNPTR - implicit none + implicit none(type,external) type(C_FUNPTR), intent(in), value :: handler end subroutine signalint_C subroutine signalusr1_C(handler) bind(C) use, intrinsic :: ISO_C_Binding, only: C_FUNPTR - implicit none + implicit none(type,external) type(C_FUNPTR), intent(in), value :: handler end subroutine signalusr1_C subroutine signalusr2_C(handler) bind(C) use, intrinsic :: ISO_C_Binding, only: C_FUNPTR - implicit none + implicit none(type,external) type(C_FUNPTR), intent(in), value :: handler end subroutine signalusr2_C subroutine free_C(ptr) bind(C,name='free') use, intrinsic :: ISO_C_Binding, only: C_PTR - implicit none + implicit none(type,external) type(C_PTR), value :: ptr end subroutine free_C