* Ancient Fortran, help please @ 2004-12-18 4:51 Benjamin Joseph 0 siblings, 0 replies; 5+ messages in thread From: Benjamin Joseph @ 2004-12-18 4:51 UTC (permalink / raw) To: gcc-help Guys, I have this horrible fortran problem. I've got this ancient fortran code that refuses to compile any compiler except Intel Fortran Compiler--which is a problem because the computer we're running on is an Opteron, which is an AMD chipset. If I try to compile it with g77 I get the following error: ------------ DATA TYPE /'VHF ','MINITRCK','C-BAND ','S-BAND ', ^ Type disagreement between expressions at (?) and (^) ------------ I've searched the archives and have gotten some useful information, but it doesn't seem to solve the problem. Here's the relevant post: http://gcc.gnu.org/ml/gcc/1999-11n/msg00535.html If anyone can point me in the right direction I would be eternally grateful. -Ben ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Ancient Fortran, help please @ 2004-12-18 9:54 Bud Davis 2004-12-18 19:22 ` Benjamin Joseph 0 siblings, 1 reply; 5+ messages in thread From: Bud Davis @ 2004-12-18 9:54 UTC (permalink / raw) To: gcc-help; +Cc: benjo H Ben, On first glance you have a mismatch between the type of a variable and the data you are trying to initialize. But, in most cases, we here at gcc-help give erroneous advice when all we see is a code fragment. If you could make us a small, "should be compilable" fragment showing both the declaration and the data statement, maybe we can help out. Here is an example that I think shows your problem, but it works !! $ cat data.f INTEGER T DATA T /'VHF '/ PRINT*,T END $ g77 data.f $ ./a.out 541476950 also the output of "g77 --version" can be useful. --bud ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Ancient Fortran, help please 2004-12-18 9:54 Bud Davis @ 2004-12-18 19:22 ` Benjamin Joseph 2004-12-19 0:35 ` Bud Davis 0 siblings, 1 reply; 5+ messages in thread From: Benjamin Joseph @ 2004-12-18 19:22 UTC (permalink / raw) To: Bud Davis; +Cc: gcc-help Ooops. Yeah that might help. Here's a complete picture of this section of code: -----------beginning of file----------------- BLOCK DATA BNCSRC IMPLICIT REAL*8 (A-H,O-Z) INTEGER*2 ITABL, ITABL1, ITABL2 LOGICAL*1 OTABL COMMON /BIAS/ TYPE(25), ITABL(5,25), OTABL(5,20) DIMENSION ITABL1(5,14), ITABL2(5,11) EQUIVALENCE ( ITABL(1,1), ITABL1(1,1)) , * ( ITABL(1,15), ITABL2(1,1)) DATA TYPE /'VHF ','MINITRCK','C-BAND ','S-BAND ', 1 'USB30 ','USB85 ','VLFS ','ATS ', 2 'ATS GRDD','NDS ','SRE ','LASER ', 3 'OPTICAL ','X-Y MMMM',' ',' ', 4 ' ',' ',' ',' ', 5 'PCE ','LANDMARK','OABIAS ','LANDMRK2', 6 'HAP ' / some more stuff involving ITABL,ITABL1,ITABLE2... -------------EOF--------------------------------- Here is the output of g77 --version GNU Fortran (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3) Copyright (C) 2004 Free Software Foundation, Inc. --------------------------------------------- It looks like it's just defining a variable TYPE with a character array. Anyway, as far as compilability is concerned, this works for Intel Fortran Compiler 8.1. Thanks for your patience. -Ben On Sat, 18 Dec 2004, Bud Davis wrote: > H Ben, > > On first glance you have a mismatch between the type of a variable and > the data you are trying to initialize. > > But, in most cases, we here at gcc-help give erroneous advice when all > we see is a code fragment. If you could make us a small, "should be > compilable" fragment showing both the declaration and the > data statement, maybe we can help out. > > Here is an example that I think shows your problem, but it works !! > > $ cat data.f > > INTEGER T > DATA T /'VHF '/ > PRINT*,T > END > $ g77 data.f > $ ./a.out > 541476950 > > also the output of "g77 --version" can be useful. > > > --bud > > > > > > > > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Ancient Fortran, help please 2004-12-18 19:22 ` Benjamin Joseph @ 2004-12-19 0:35 ` Bud Davis 2004-12-19 3:48 ` Benjamin Joseph 0 siblings, 1 reply; 5+ messages in thread From: Bud Davis @ 2004-12-19 0:35 UTC (permalink / raw) To: Benjamin Joseph; +Cc: gcc-help On Sat, 2004-12-18 at 13:22, Benjamin Joseph wrote: > > It looks like it's just defining a variable TYPE with a character array. > Anyway, as far as compilability is concerned, this works for Intel Fortran > Compiler 8.1. > TYPE is declared by default to be of type REAL*8 by the IMPLICIT REAL statement on line 2. the Intel compiler is quite forgiving. to work with g77 you will have to declare TYPE to be of an INTEGER or CHARACTER type. It should be a very surgical and safe change, as it makes no sense to either use or set TYPE(1) with a double precision real :) BLOCK DATA BNCSRC IMPLICIT REAL*8 (A-H,O-Z) INTEGER*8 TYPE there is good information in the g77 info page concerning running code from other fortran compilers. -finit-local-zero and -fno-automatic are two options that are defaults for other compilers. you might want to think about these a bit before digging deep into the code if the runtime results are not as expected. nothing to do with the current issue, just something to keep in mind. don't let this little incompatibility dissuade you from using g77. IMHO g77 is the most robust and flexible F77 compiler available. HTH, bud davis ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Ancient Fortran, help please 2004-12-19 0:35 ` Bud Davis @ 2004-12-19 3:48 ` Benjamin Joseph 0 siblings, 0 replies; 5+ messages in thread From: Benjamin Joseph @ 2004-12-19 3:48 UTC (permalink / raw) To: Bud Davis; +Cc: gcc-help That worked! Thank you, -Ben On Sat, 18 Dec 2004, Bud Davis wrote: > On Sat, 2004-12-18 at 13:22, Benjamin Joseph wrote: > >> >> It looks like it's just defining a variable TYPE with a character array. >> Anyway, as far as compilability is concerned, this works for Intel Fortran >> Compiler 8.1. >> > > TYPE is declared by default to be of type REAL*8 by the IMPLICIT REAL > statement on line 2. > > the Intel compiler is quite forgiving. to work with g77 you will have to > declare TYPE to be of an INTEGER or CHARACTER type. > > It should be a very surgical and safe change, as it makes no sense > to either use or set TYPE(1) with a double precision real :) > > BLOCK DATA BNCSRC > IMPLICIT REAL*8 (A-H,O-Z) > INTEGER*8 TYPE > > > there is good information in the g77 info page concerning > running code from other fortran compilers. -finit-local-zero > and -fno-automatic are two options that are defaults for other > compilers. you might want to think about these a bit before > digging deep into the code if the runtime results are not as > expected. nothing to do with the current issue, just something to keep > in mind. > > don't let this little incompatibility dissuade you from using > g77. IMHO g77 is the most robust and flexible F77 compiler > available. > > > HTH, > bud davis > > > > > > > ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2004-12-19 3:48 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2004-12-18 4:51 Ancient Fortran, help please Benjamin Joseph 2004-12-18 9:54 Bud Davis 2004-12-18 19:22 ` Benjamin Joseph 2004-12-19 0:35 ` Bud Davis 2004-12-19 3:48 ` Benjamin Joseph
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).