Path: ...!weretis.net!feeder9.news.weretis.net!news.quux.org!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Lynn McGuire Newsgroups: comp.lang.fortran Subject: Re: I am getting a strange error when compiling abcpar.f in gfortran Date: Tue, 12 Nov 2024 14:43:20 -0600 Organization: A noiseless patient Spider Lines: 86 Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Tue, 12 Nov 2024 21:43:22 +0100 (CET) Injection-Info: dont-email.me; posting-host="e65e33b4f0c03cfa18bf3263781018f9"; logging-data="1875219"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19tMBfEgxvIvO6z/9QQdMgrnavpMpSaUes=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:MaXidqi2WXe1dvb8N4NxXqwbms8= In-Reply-To: Content-Language: en-US Bytes: 4257 On 11/12/2024 1:55 PM, baf wrote: > 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"). 850,000 lines of code in a single file ? That would be a mess. Lynn