! sysdep.f90 - module providing interface for system dependent procedures
! Copyright (C) GFD Dennou Club, 2004.  All rights reserved
!
!=begin
!= module sysdep
!It provides interface for system dependent procedures.
!In other words, there is interface declaration of a function and subroutines
!whose feature is regarded as system dependent.
!Implementation of these procedures are given in files with corresponding name
!(i.e. that begins with (({sysdep}))-).
!
!Note that a procedure with one name may have several implementations.
!
!The (({sysdep})) has no dependence to other modules.
!=end

module sysdep

    !=begin
    !== procedure interface
    !=end

    private
    public:: AbortProgram

    !=begin
    !--- AbortProgram(str) subroutine
    !    ((|str|)) is (({character(len = *)})).
    !    ((*AbortProgram*)) terminates program.
    !    It is a generic name of a subroutine.
    !    In fact, the subroutine was given another name ((<SysdepAbort>)),
    !    in order to make it easier to find the source code.
    !    Though many implementations are trying to set exit code
    !    other than zero, that should ((*not*)) be relied upon.
    !=end

    interface AbortProgram
        subroutine SysdepAbort(string)
            character(len = *):: string
        end subroutine
    end interface

end module
