Path: ...!3.eu.feeder.erje.net!feeder.erje.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: baf 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: References: 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: 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").