Rocksolid Light

Welcome to RetroBBS

mail  files  register  newsreader  groups  login

Message-ID:  

What we anticipate seldom occurs; what we least expect generally happens. -- Bengamin Disraeli


devel / comp.lang.fortran / converting a 700,000+ line Fortran 77 plus 50,000+ line C++ program to C++, part 2

SubjectAuthor
o converting a 700,000+ line Fortran 77 plus 50,000+ line C++ programLynn McGuire

1
converting a 700,000+ line Fortran 77 plus 50,000+ line C++ program to C++, part 2

<tl9rfh$360ss$2@dont-email.me>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=3214&group=comp.lang.fortran#3214

  copy link   Newsgroups: comp.lang.c++ comp.lang.fortran
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: lynnmcguire5@gmail.com (Lynn McGuire)
Newsgroups: comp.lang.c++,comp.lang.fortran
Subject: converting a 700,000+ line Fortran 77 plus 50,000+ line C++ program
to C++, part 2
Date: Sat, 19 Nov 2022 00:01:20 -0600
Organization: A noiseless patient Spider
Lines: 42
Message-ID: <tl9rfh$360ss$2@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sat, 19 Nov 2022 06:01:21 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="293a208cd5e4ac99d8fd1acb48da6362";
logging-data="3343260"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18irhHj4dz8VH9Su7YH/xy4"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
Thunderbird/102.5.0
Cancel-Lock: sha1:o7NY0CwnJu38g3A+LkryFlpZu34=
Content-Language: en-US
 by: Lynn McGuire - Sat, 19 Nov 2022 06:01 UTC

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

1
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor