Deutsch   English   Français   Italiano  
<lphq4tFfkg7U1@mid.individual.net>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!3.eu.feeder.erje.net!feeder.erje.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: baf <baf@nowhere.com>
Newsgroups: comp.lang.fortran
Subject: Re: I am getting a strange error when compiling abcpar.f in gfortran
Date: Tue, 12 Nov 2024 11:55:10 -0800
Lines: 81
Message-ID: <lphq4tFfkg7U1@mid.individual.net>
References: <vgu0rm$16rop$1@dont-email.me> <vgujmr$1dl89$1@dont-email.me>
 <lpg9ioF8j1eU1@mid.individual.net> <vgut91$1fga5$1@dont-email.me>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: individual.net y7k9PsKnPqCQ7pC0TBAKbgaHocDlXM9HgwCQVeaDr2bCKRP8vn
Cancel-Lock: sha1:0mck6iMwfZWhtrGACcAfvm001+M= sha256:BnTk5khuZI5TVDhP+6dO7PfIZsml02bPevuBWo6V+70=
User-Agent: Mozilla Thunderbird
Content-Language: en-US
In-Reply-To: <vgut91$1fga5$1@dont-email.me>
Bytes: 3765

On 11/11/2024 10:40 PM, Lynn McGuire wrote:
> On 11/12/2024 12:06 AM, baf wrote:
>> On 11/11/2024 7:57 PM, Lynn McGuire wrote:
>>> On 11/11/2024 4:35 PM, Lynn McGuire wrote:
>>>> I am getting a strange error when compiling abcpar.f in gfortran:
>>>>
>>>>
>>>> Compiling .\CHM\VALIEQ\abcpar.f
>>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
>>>> - - - - - -
>>>> dii.inc:30:10:
>>>> Error: 'abcpar' of module 'aaa_modules', imported at (1), is also 
>>>> the name of the current program unit
>>>> Error: Last command making (build\abcpar.o) returned a bad status
>>>> Error: Make execution terminated
>>>> * Failed *
>>>>
>>>>
>>>> C     aaa_modules.f
>>>> C  list of interfaces in a module for CHM / DII code compiling
>>>>        MODULE aaa_modules
>>>>            implicit none
>>>>            INTERFACE
>>>>              SUBROUTINE ABCPAR(ISW,IRETST,IR,IC,PAR,IPHASE)
>>>>                INTEGER(KIND=8) :: ISW
>>>>                INTEGER(KIND=8) :: IRETST
>>>>                INTEGER(KIND=8) :: IR
>>>>                INTEGER(KIND=8) :: IC
>>>>                REAL(KIND=8) :: PAR
>>>>                INTEGER(KIND=8) :: IPHASE
>>>>              END SUBROUTINE ABCPAR
>>>>            END INTERFACE
>>>> ...
>>>>        END MODULE aaa_modules
>>>>
>>>>
>>>>        SUBROUTINE ABCPAR (ISW, IRETST, IR, IC, PAR, IPHASE)
>>>>        INCLUDE 'dii.inc'
>>>> ...
>>>>        return
>>>>        end
>>>>
>>>>
>>>> C  dii.inc
>>>>        use aaa_modules
>>>> C        force all variables to be declared
>>>>        implicit none
>>>>
>>>>
>>>> Thanks,
>>>> Lynn McGuire
>>>
>>> Apparently, the current subroutine being compiled cannot have an 
>>> interface in the module being USEd.
>>>
>>> The Metcalf Fortran 95 book says that I can exempt the current 
>>> subroutine from the USE by:
>>>
>>> USE module_name, exempt_this_one => name
>>>
>>> where name is the name of current subroutine or function without the 
>>> file suffix and without the path.
>>>
>>> I just need a way to generalize the name and __FILE__ does not work.
>>>
>>> Lynn
>>>
>>>
>> If all of your general purpose subroutines and functions are in 
>> modules, you don't need interfaces for them (one of the advantages of 
>> modules).
> 
> I have 6,000 subroutines in 5,000 files.  All I did was put interfaces 
> for about 2,600 of the subroutines into a single module.
> 
> Lynn
> 
A better alternative would be to put the subroutines in the module and 
USE the module. Then you don't need the interfaces (the compiler gets 
all of the interface information "automagically").