On 11/23/2022 5:36 PM, Tran Quoc Viet wrote:
> On Saturday, November 19, 2022 at 1:01:25 PM UTC+7, Lynn McGuire wrote:
>> We are converting a 700,000+ Fortran 77 lines of code plus 50,000+ C++
>> lines of code engineering software product to C++. With all that code,
>> we produce four Win32 EXEs and three Win32 DLLs. My goal is to add four
>> Win64 EXEs and three Win64 DLLs to the product with the same
>> capabilities as the Win32 versions (console, windowed, Excel callable,
>> Excel embeddable). Plus support for Unicode named files and Unicode
>> file paths.
>>
>> I am using a customized version of f2c at the moment to automate 80% of
>> the conversion from F77 to C++. I have added support for logical*8,
>> changed the output file from *.c to *.cpp, added an include for the
>> Fable fem.hpp template library, removed the trailing underscores from
>> the subroutine and common block names, removed the ftnlen arguments from
>> the character arguments, converted all F77 comments to the // instead of
>> the /* */, and a few other items. If desired, I am willing to post a
>> copy of my modified f2c on my website with the source code.
>>
https://netlib.org/f2c/ >>
https://en.wikipedia.org/wiki/F2c >>
>> f2c does not get me totally there. The Fortran character strings were
>> poorly handled so they will probably needed fixing for proper sizing and
>> alignment. The f2c i/o code is crap so I take the original F77 i/o code
>> and translate it by hand. The arrays in the argument list are still
>> based at an index of one so I convert those to base index of zero by
>> hand. All of the local and common block arrays were converted to a base
>> index of zero by f2c. I add the new *.cpp file to my Visual Studio
>> project. I then add the new function prototypes to my prototypes.h file
>> and I add any new common block structures to my commons.h file. I then
>> compile and fix until I get a clean compile.
>>
>> I have converted over 29,000 lines of F77 code to C++ now. Almost a
>> hundred subroutines and several dozen common blocks. Most are compiling
>> cleanly in Visual C++ 2015. My testing is working well with the
>> problems being in the character string area. I am still aiming for
>> Christmas for completing the small data analysis program in my
>> calculation engine. It is somewhere around 150,000 lines of F77 code.
>> Tough to tell since it shares so much code with my big calculation
>> engine which is around 600,000 lines of F77 code and 50,000 lines of
>> C++. They share about 75,000 lines of F77 and C++ code.
>>
>> Thanks,
>> Lynn
> Thank you for sharing your experience on that tough work. For years I > had also paid lots of effort to convert all F77 codes to modern Fortran and I stopped that job because I found its nonsense. Is that how we are removing Fortran from its world?
> I am having problems mixing C++ and Fortran code in Visual Studio so I
> am trying to move to all C++. I suspect if I was all Fortran then my
> life would be easier.
> Lynn
I am back on this project again. I have converted over 100,000 lines of the F77 code to C++ now and am debugging character string issues.
I tried GFortran and GCC with Simply Fortran for a long while but the debugging is simply horrible. And I was rewriting too much of the C++ code from F77 to F2003+.
Lynn