Automated Migration From Cobol To Java On Linux 195
Didier DURAND writes "Just published an article about our 100% automated migration from IBM mainframe with Cobol to Linux Java: we could convert of our own application (4 million lines of code) through the tools that we developed. Those tools are open-sourced under GPL for other companies to benefit from them. We save 3 millions euros / year after this migration!"
"Automated" (Score:3, Insightful)
Sounds like it could turn out like WYSIWYG HTML Editor code. Where every word you bold has the bold tags, etc.
Dreamweaver, Word, etc all make some dang ugly HTML.
Re:"Automated" (Score:5, Insightful)
Re: (Score:2)
There's something tragically ironic about the spelling error: "skils"
Re:"Automated" (Score:4, Funny)
Ha, ha! You misspelled skilz!
-dZ.
Re: (Score:2)
Doing things step-by-step like they have done (and, I imagine, intend to continue to do) is a good way of making sure that they're on the right track and p
Re: (Score:3, Insightful)
Assuming the transcoder kept things like variable names, I guess the Java code will be more or less as (un)readable as the original. Maybe a bit worse because of "objectification" overhead without real gain in structure.
So they saved a lot of grunt work (translating to Java without changing the functionality), but there is still a lot to do. As in, reworking the old code to take proper advantage of object orientation.
Re: (Score:2)
If there's a lack of proper skills in COBOL then why is no-one advertising for COBOL programmers anymore? I left IT because I found it impossible to get a COBOL job after Y2K.
Re: (Score:2)
Re: (Score:2)
Took the words out of my mouth..
It makes no sense to me to convert from cobol to most anything, especially when cobol is still a viable product from several vendors. Just get your people some training and start digging thru what you have, and clean it up. Cobol isn't that bad/hard once you know how to code in it.
Re: (Score:2)
to something totally unmaintainable due to lack of readability is not a good trade off.
I'm not sure what you meant. But I second it.
(Automatically) converted code is usually _a_huge_mess_. You lose context, (may lose) variable names, general structure of code, the converter doesn't "think java", some things may be converted to overly complicated pieces, etc, etc Also, the original programmers are subject to restrictions that today we don't have.
Think: string operations, db operations, etc
Re:"Automated" (Score:4, Insightful)
Java is for non-hackers (Score:2)
Java is a perfectly acceptable programming language in many circumstances.
Such as when your programmers aren't really great :p
From http://www.paulgraham.com/gh.html [paulgraham.com]
Of all the great programmers I can think of, I know of only one who would voluntarily program in Java. And of all the great programmers I can think of who don't work for Sun, on Java, I know of zero.
Re: (Score:3, Insightful)
I guess it just goes to show that Paul Graham doesn't know very many great programmers. Either that, or his definition of 'great' is screwed up.
Great programmers use the right tool for the job. Whether that tool is Lisp, Python, Java, or even COBOL doesn't matter. The way I see it, Mr. Graham's constant advocacy of Lisp as the be-all and end-all of programming environments is no better than any other language zealotry. Yes, Lisp has its place. So does Java. A truly great programmer would have the task
Re:"Automated" (Score:4, Interesting)
I felt it had its place but couldn't understand what all the hype was about, and went back to my C++. Now I gather most of my grievances are fixed
Of course, "web hype" sells stuff in IT, just like sex does everywhere else. Witness the current Web 2.0 lunacy, where everyone's excited that we might just finally manage to produce web apps with usability that approaches that of the native applications we had 15 years ago. *sigh*
Re:"Automated" (Score:4, Funny)
He isn't out-of-date. I have to suffer Java 1.6 at my college. The VM is still slow to start, and the GUI libraries still suck.
Re: (Score:2, Informative)
He isn't out-of-date. I have to suffer Java 1.6 at my college. The VM is still slow to start, and the GUI libraries still suck.
Nah, not perfect though, but let's don't hyperbolize it either: it does not sucks really anymore. Personally I write a lot of Swing stuff and I would not say it that sucks as before Java 1.4 times. At least now 1.6 I'd say much better than even GTK or QT. Why?
Because:
Re: (Score:2)
lacked some of the stuff that seemed to me at the time to be important (type-safe generic programming capability)
Without it, you get all the brevity of manifest static typing, i.e. having to type a lot of type names, with all the run-time guarantees of dynamic typing, since you're putting in casts (adding even more typing) everywhere you take stuff out of collections.
Type inference with optional declarations and class-bounded polymorphism ftw: as little typing as you like, as much explicitness as you like, static guarantees, and you can have a List of Fruit which can contain both Apples and Oranges.
It's a real shame J
Re: (Score:2)
There are lots more elegant, reasonably high-performing, cross-platform languages around now. It's probably a much more interesting time to be getting into IT - as long you as you can find a company that actually lets you use the cool new stuff
Re: (Score:2)
1998 called and wants it Java complaints back. Seriously though, if I were looking to port over reams of decades-old legacy code, Java would probably be exactly where I'd want to go. Even the performance hit (and it ain't that much nowadays) would be acceptable simply because I'd be moving to portable platform that would allow me to run the software on everything from x86/x64-based supercomputers and clusters right on down to my own workstation. The whole point of such an exercise isn't just to move thes
Re: (Score:2)
Re:"Automated" (Score:4, Informative)
I've heard this misfound rumor time and again.
Java - when properly written - has been proven to be as fast in file operations, memory access and sequential processing as true "compiled" applications.
The same goes for other JIT languages such as
java's performance depends heavilly on application (Score:2)
I would contend that well written java that has been jited is probablly a bit slower than well written code in a native compiled language but there isn't that much in it and it's hard to compare because the "best" coding methods in the languages are not the same.
However it does have high memory use because of the fact that jited code can't be shared between instances, the large bloat of the standard library, the limited availibility of efficiant data structures (all object types are object references) and t
Re: (Score:2)
I've never understood why the bloated standard library needs to make Java so slow to load.
You need to import every class you use -- it should only be loading the classes (or packages depending on how you import) that you need.
Re: (Score:2)
"sluggish java"??
yes, and they also stated clearly they got better performance after the conversion.
They did some cache architecting, static structures, and the like to accomplish that which I would consider hard to do. Depends on the level of mainframe and load they had I guess.
rd
Re: (Score:3, Insightful)
Don't worry RD - all those guys are full of shit. ...
I tell you what, let's show those guys just how awesome Java is
Let's start with the fundamental awesomeness of Java (over that weak ass C and C++) by listing all the operating systems written completely in Java.
No?
Ok, maybe all the boot loaders written completely in Java.
No?
Hmmm.
Ok, maybe all the space vehicles and satellites running completely on Java.
No?
Shit.
Ok, how about the end-all, be-all of language completeness : this will show them - WHAT LANGUAGE
Re:"Automated" (Score:4, Insightful)
Let's start with the fundamental awesomeness of Java (over that weak ass C and C++) by listing all the operating systems written completely in Java.
What an incredibly stupid test. First, no operating system is written completely in C either. C is not expressive enough for the low-level initialisation code required by most CPUs, so every modern OS begins with some bootstrapping code written in assembler for the host platform. After the CPU is initialised, you can jump to something in a high-level (i.e. not processor dependent) language. For the record, I can name operating systems written in C, Java, C#, Algol*, Lisp*, Smalltalk, Ocaml, Pascal, and even one that has device drivers written in Python.
* For these languages I can name operating systems for specific platforms which didn't need any assembly code for bootstrapping, but that's slightly cheating because they
WHAT LANGUAGE IS THE JAVA RUNTIME WRITTEN IN?
Java mostly, although this depends on the JRE you use. The first JREs were written by Smalltalk and Self hackers. A lot of Smalltalk VMs were all written in Smalltalk, specifically a subset of Smalltalk that was statically compiled (by a compiler written in Smalltalk), which then ran the rest of the environment.
You watch, some day someone is going to invent a nice Java-like language (we can use pretty much the same syntax as Java) that is compiled instead of interpreted and will create native executables that run on the bare metal, something that can be used to write lightning fast applications, and even be used to write Unix and Windows type operating systems
Ah, I see. You're an idiot who confuses a language with an implementation of a language. There's nothing stopping Java from being compiled; gcj produces static binaries from Java code, for example. Objective-C has all of the dynamic features of Java and is statically compiled. I've written a Smalltalk compiler that contains both a JIT and a static compiler, and can produce native object code from Smalltalk. Common Lisp is also statically compiled, and something like the Steel-Bank Common Lisp compiler has similar performance to g++.
Similarly, it's possible to run C in a VM. Last year's LLVM developer meeting demoed a JIT compiler for C. If you do this then you can run all sorts of run-time profiling and dynamic optimisations (just as you typically do for Java).
Re: (Score:2)
Read the comment again.
1996. Sluggish Java.
In 1996 I had a Pentium Pro with 64MB. I also used a SPARC based Ultra 10 (or was it a 5? My memory is a bit flaky...). Yes, Java was sluggish. I would even call it glacial, when compared to C/C++... I don't think it had a JIT, either (Hotspot was released in 2000).
Re:"Automated" (Score:5, Interesting)
Will the conversion program "properly write" its Java code, though? Care to lay odds? Especially considering that most COBOL code still in use is the code that uses COBOL's documented features (what were bugs in IBM 360, until they were written down, used, and so had to be replicated in any "real" COBOL implementation) to ... an unfortunate extent?
The place that I worked at had a project to convert its legacy COBOL to C/C++, and it got to 90% easily, but the last 10% required manual conversion and/or rewriting the converter to handle the "missing" elements. I doubt that conversion to Java will be any more successful, at least on live, rather than sample, code.
Re:mod parent up! (Score:4, Informative)
The JIT code is actually pretty fast. (especially when Hotspot is running in -server mode, which does some impressive optimization)
It just consumes way too much memory, and starts damn slow. (though still faster than C#, in my experience)
A couple times now I've taken base classes and rewritten them in Java to speed them up. ArrayList? Much too slow for my needs, even with a wrapper class ensurance it allocates in large enough chunks. By rewriting it in Java using Object arrays, I saw 60-100% speedups in the get/add methods, translating into roughly a ~2-4% speedup. (mileage may vary depending on workload)
It was about 20000% faster than a default ArrayList - mind you, by default those things allocate in 6-index chunks, so every 6 objects you add it copies the whole ArrayList to a new one, with 6 more spots available. @_@
There's a reason Java got the sluggish reputation, but it's not because the JIT code is slow. It's because the developers can get by with less of an understanding of what goes on behind the scenes, which never turns out good...
Re: (Score:2)
ensuring it allocates in large enough chunks.*
Yet again I have great desire for an edit button!
Re: (Score:2)
Why thank you for that insinuation that I'm perfect!
Implying that I would catch all spelling mistakes in the Preview (if I could just find it) is quite the compliment! I'm glad to be so far above all you mere mortals. :)
Re: (Score:2)
At least I'm not a coward!
</petty_insult>
Hey, this guy [slashdot.org] needs an edit button too!
Re: (Score:2)
mind you, by default those things allocate in 6-index chunks, so every 6 objects you add it copies the whole ArrayList to a new one, with 6 more spots available. @_@
There's a reason Java got the sluggish reputation, but it's not because the JIT code is slow. It's because the developers can get by with less of an understanding of what goes on behind the scenes, which never turns out good...
Huh. You might well be the one who doesn't understand what goes on behind the scenes. Just read the source code:
public void ensureCapacity(int minCapacity) { // ... // ...
int newCapacity = (oldCapacity * 3)/2 + 1;
}
It thus allocates half the current size of the list each time the capacity is reached, and not just 6 slots.
Re: (Score:3, Informative)
Sigh. I've said this 100 times.. server apps (as relevant to this COBOL discussion) don't have startup time. They are up for months at at time (years even). Please distinguish between client-side apps and server-side apps.. As java-programming only exists in client-side-apps these days as server-interfaces (for fast-to-build, yet bug-free coding of mission-critical-apps) and cell-phone-apps (for hardware-portability). For this class of client-s
Re: (Score:3, Informative)
JIT code is slow? Or JITing the code is slow? When I run bench-marks, the average-benchark speed continually gets faster and faster as I increase the number of iterations. This is because the JIT continuously re-assesses basic-blocks to determine if coallesing is worth the expense. This means:
A) code is NOT JIT'd at first, even with -server.. ONLY after a min-number of passes (why JIT initializtion code that'll never run a second time?)
B) book-keeping to determine what to JIT and what not to JIT adds ex
Re: (Score:2)
Re:"Automated" (Score:4, Insightful)
When "everything" is, "It's slow!", yeah.
Yes, yawn, there are some things Java is slow for and that need speed. You shouldn't do those few things in Java. So what if it starts slow? Don't spawn new processes to handle incoming connections. For any given issue there are workarounds. If there are too many issues to justify it, use another tool.
But, please, SHUT THE FUCK UP ABOUT IT!
Seriously, just don't fucking use it. Just because you're too retarded to evaluate tools for the job at hand doesn't mean everyone else is.
Java's not my choice either, but I don't feel the need to find every Java coder I know and rub it in. They're too busy redundantly declaring types to stop to chat anyways...
Re: (Score:2)
Re: (Score:2)
Re: (Score:3, Informative)
...it is usually pretty bloody difficult to just to figure out what the existing system is doing and and why.
You're about the umpteenth post to point to a code readability problem which no one said existed as a reason for conversion.
They stated clearly they were doing this to get off a mainframe and run off of PC server farms to save millions of dollars.
rd
Re: (Score:2)
And yet you'd have to be blind to think there are as many Cobol programmers to read that source as Java programmers. So it couldn't not apply, even if they didn't spell it out.
Besides, you can sort of tell by the type of processes used. People doing these transitions (automated rewrite, emulation, etc) are usually doing it because they've lost the ability to work with the system.
Yes, they might be saving a ton of money on the hardware, but that's not the whole story. If they were comfortable with the system
Re: (Score:2)
Surely you jest -- I can buy a 4 node VMWare cluster including HA storage, software licenses, 128GB total ram, and 32 total cores of CPU processing power
And run the COBOL code using the MicroFocus or AcuCOBOL compilers.
Re:"Automated" (Score:4, Insightful)
The alternative is to maintain a pool of cobol developers to maintain the code instead of hiring (probably much cheaper) Java developers to improve any bad code.
WYSIWYG's are a bad analogy, because it abstracts the process of writing HTML to a tool with the intent of writing HTML. In both cases (by hand or by machine) the results are HTML. With a -converter- like this one, the results may still generate bad code.
Re:"Automated" (Score:4, Insightful)
Cheaper Java programmers compared to what? People who know the code and business rules or people who will take years to learn the code and business rule, by which time they will be just as expensive. BTW, one of the stated goals was to migrate the people as well. That argument is a non-starter.
Cheaper Programmers (Score:2)
And they will get what they pay for..
I just hope its not my bank that tries to go that route.
Re: (Score:2)
This was coded in the 80's or 90's, correct? By senior engineers, at that time?
I'm pretty sure the people that really knew what the code did have long-since retired. ;P
As Java, it's at least a tad more maintainable. They can hire new coders to map out the functionality, and then eventually create a new version from scratch.
And in the meantime, it'll run on and take advantage of new servers.
I don't advocate Java for a lot, but I must say it's one of the best options for webserver craps.
First build the automated test suite.... (Score:2)
Then convert.
While you are at it, benchmark.
The 1990s called... (Score:2)
The 1990s called... they want their "automated convert Xxxx to Java" idea back.
Re: (Score:2)
Dreamweaver, Word, etc all make some dang ugly HTML.
So what? HTML is not meant for pleasing the human eye anyway, it's for the browser's HTML rendering engine.
A modem makes some dang ugly white noise
Re: (Score:2)
But it turns out that human-maintainable code was a high priority.
Then use a Linux COBOL compiler, and convert the code module-by-module to something decent like COBOL-85.
I sense a modest disturbance in the job market... (Score:5, Funny)
Re: (Score:2)
Actually that disturbance was all 9 of the world's still-living Cobol coders.
Re: (Score:3, Interesting)
Make that ten, although I've only coded COBOL at home for fun. Yeah, I'm probably some kind of masochist but I really wanted to give the language a spin and see if it was as horrible as people say it is.
/Mikael
Re: (Score:2)
I don't even think I've seen any COBOL. Is it more obtuse than Erlang looks?
Re: (Score:2)
I'd have to say that I've seen worse languages (x86 asm, I'm looking at you) but it sure wasn't pretty.
/Mikael
Re: (Score:2)
The reason you haven't seen COBOL is that most of it masquerades as JAVA or C# these days. Such are programmers skills (or 5kilz?) these days.
Re: (Score:2)
Re: (Score:2)
Well, with all due respect to wikipedia, in your snippet much of the ugliness is due to (probably intentionally) stupidly named variables. No intelligent developer, of which there are still many in the world, would do anything like naming a variable FOUR-A-C.
In python: this_var = that_var * 5
in COBOL: COMPUTE THIS_VAR = THAT_VAR * 5.
It's verbose, but it's not hugely different, though less feature rich than any modern OOPy language with rich object libs. I work with a bunch of folks for whom COBOL is one o
Re: (Score:2)
It's also quite straightforward and simple. And it does pretty much exactly what it looks like it does.
And it doesn't suffer from rounding issues, dropping pennies from a twenty page business ledger due to the inherent issues in representing fractions in binary.
Disclaimer - I don't actually code in the language, and I will deny knowing about the language if anybody actually tries to force me to program in it.
Re:I sense a modest disturbance in the job market. (Score:2)
Re:I sense a modest disturbance in the job market. (Score:4, Insightful)
My question is, "Do you also convert the CICS calls embedded in the code (and possibly 3270 terminal commands?!?) or is there a Java library to interface with CICS?" My experience with converters is that they follow the 90-10 rule, where they do great with 90% of the code, but that's the easiest, and could almost be done with global Find/Replace. The remaining 10% is why the conversion wasn't already done.
Later . . . Jim
Re: (Score:2)
Yes. Automated tools work iff
a) no external library dependences
b) programmers stuck to a good style.
c) the languages are well-suited to be translated into each other (otherwise the code may be unmaintainable)
and a rewrite of your program every 30 years may save even more future maintainance, because i do not believe that the software will takes the old code *and* split it into classes/sort it to patterns in the same way an (intelligent?) human programmer would. So what you may get is java Code, but very dif
No change in the job market (Score:2)
This looks like a cute toy that will auto-generate some bloated code. No way big iron financial systems are moving to Java, especially auto-generated Java that will perform like crap and be harder to maintain than the COBOL it replaced.
Re:I sense a modest disturbance in the job market. (Score:2)
Nope, we do not fear the dark side for we have seen the light. ( of course that light came from a 3270 in a dark basement 20 years ago... )
Re: (Score:2, Insightful)
No its the other way round. Now we can get rid of all these useless Java programmer, use our Cobol programmers who know what they are doing, and then convert their code to Java so that the PHBs who've been sold on Java can be happy.
Re: (Score:2)
Hey, i based my future plans on learning Cobol and translating it to some of the more modern languges i know.
Thank the Lords of Cobol (Score:3, Funny)
BSG humor is mandatory whenever Cobol comes up...
Re: (Score:2, Insightful)
What do transcoders really buy you? (Score:2, Insightful)
I'll say what they don't buy you: The ability to throw away the old language.
If changes need to be made - and they will - you will want to change the original language not some intermediate that is stilted and hard to read at best and a candidate for an obscufated insert-language-here contest at worst.
What transcoders do buy you:
The ability to compile code on a platform that doesn't have a compiler for your flavor of your language.
Per slide 25 (Score:5, Insightful)
All it appears to be doing is mapping COBOL line of code to Java Line of code, per Slide 25.
This is more about being able to find someone who can read and write java. The code remains procedural, the COBOL programmers do the same stuff, just in Java now.
Here's an example of the code that was spit out:
sql("SELECT * FROM RS0403 WHERE CDPROJ=#1").into(vrs0403a.dvrs0403a).param(1, tuazone.tua_I_Cdproj)
Not to dissuade, but in someways, they avoided doing a rewrite at all cost.
Great if you want to get off legacy systems, but it's not going to magically improve your code base. GIGO rules still apply.
Re: (Score:3, Interesting)
MOVE FW-1ER-OCC-AFF TO J
INITIALIZE SW-SEL-SA02
Either way java seems like an improvement. I know in Cobol you can have expressive variables (readability was one of the original selling points of Cobol), so I'm going to guess that they have such weird looking variables on purpose. If you had decently named variables in the Cobol, it stands to reason that you would be able to have readable code as an output from their tools.
Re: (Score:3, Insightful)
"MOVE FW-1ER-OCC-AFF TO J
INITIALIZE SW-SEL-SA02
Either way java seems like an improvement. "
Yeah,
j = FW-1ER-OCC-AFF;
and
SW-SEL-SA02 = null;
is so much easier to deal with.
COBOL and other old programming environments sucked because they had limited length variable names, and no IDEs to help you keep track of variable names. This forced you to use naming standards to keep track of yourself, of which these names are undoubtedly an example of.
Serious Question Here (Score:5, Interesting)
I can see the possible benefits of no longer relying on aging cobol programmers. I am often dealing with just this issue as I migrate '70's and '80's era systems off off ADABAS and COBOL. However, why would one want to make a one for one class creation of existing mainframe applications. I honestly remember a few programmers I knew doing this right before they retired back in '05. They took a COBOL/IMS application running on an AS390 and turned it into a HTML/ASP.NET application written in C# with IMS and SQL Server on a z890 in virtual MVS and SLES environments. The screens - web based now - were one for one matching with the previous mainframe screens.
My question then too, was why bother?
I just finished a second project in taking a '80's era mainframe application - this one to track the purchase of vital (birth death marriage) records - from mainframe into an n-tier model. Instead of simply copying the mainframe screens we spent time deciding what worked on the mainframe and what didn't. Some of the mainframe concepts - particularly in the public lookup - were fine. They stayed and became web-based applications. Other items were thrown out the window and completely re-worked into a user-friendly and efficient system. (In this case, we used MS
Having done a similar project for real property records in '07, we learned many lessons and were able to reuse assemblies in the new application. In fact, the entire UI, security, printing, data encapsulation, image import (there are over 160M TIFF files in our system), reporting and cashiering/finance/cash handling subsystems are identical and shared among both applications.
I can see possibly wanting to utilize some classes for back end work but wouldn't it be better to review these individually and decide what is best?
Oh, and we're saving roughly $3M/year in mainframe costs.
(Okay, post finished now to wait for someone to mod me as a troll...)
Re: (Score:3, Interesting)
I was wondering that too.
My guess is that the business rules behind the application were known by each of the COBOL programmers. They didn't want to ditch the COBOL guys, but could see the age creeping in. So they decided to switch to Java as a compromise between a expensive rewrite that would render the COBOL programmers mostly useless and business as usual. Hey, you get a modern, functional language that is popular and get transition your COBOL guys into the syntax.
I think it will come back to bite them i
Inline documentation? (Score:2)
What happens to the commenting? Won't this turn into an unreadable turd?
Re: (Score:2)
You obviously didn't read the article. They are turning it into java.
Re: (Score:2)
What about the grey-beards? (Score:2)
But now what will the poor grey-beards do for a living?
Wont' someone please think of the grey-beards?
Re: (Score:2)
But now what will the poor grey-beards do for a living?
They stated clearly they were migrating the people along with it.
For the post before yours, they stated clearly they were doing this for the money it saves them to move from a mainframe to PC server farms.
It's not even really an article to read, just a few bullet points.
rd
Hmmmm. (Score:3, Funny)
I hacked into their source code, and found something a little odd:
That's terrible (Score:4, Funny)
I propose a fix:
Not so fast (Score:2)
This will just carry forward and old bugs and give them life a new in a new executing environment, where no one knows what will happen. Seems like makings for several DailyWTFs to me...
They're all going to be consultants (Score:2)
Every person involved can now go out and be a consultant to other companies that want to migrate off their old Cobol codebase.
Is it certified as a conforming COBOL compiler? (Score:3, Interesting)
I know there is a certification program to check that a commercial COBOL compiler processes the whole language and produces output code that performs correctly. (Can't recall the name at the moment though I think it was in the US government - perhaps in the DoD.) I'm wondering if this tool has been submitted to that and, if so, whether it passed.
I'd occasionally thought it would be a useful thing to do something similar to this (but with ANSI V2 C++, rather than JAVA, as the target language) - and then get the tool certified. With such a certified tool IT administrators could, with confidence, transcode a COBOL application base into a language with multiple commercial and open compilers a long expected support lifetime, generating native code for virtually all possible targets (from PC clusters to current and future mainframes). If the transcoded output doesn't become excessively opaque and class-dependent it could later be warped into a more native form, should that be desirable.
Perhaps this project will be able to actually do it.
Programmer's Cut (Score:2)
And what cut of this savings have your given your programmers who have made it all possible?
Re: (Score:2)
Aside from their paychecks? Why should they get any more than that? Optimizing the environment at all scales $3M/year or $300/year is the job of a good employee. If the people that did this didn't draw a salary but instead asked for a cut of the year-over-year savings then fine, but I suspect they drew a salaey for the conversion.
We did this with a bunch of pascal code (Score:2)
We used p2c to migrate a bunch of pascal code to C many years ago. It was not perfect, but not that bad. You got pretty good at figuring-out the likely places that screwed-up. Also save for the with statements in pascal being translated to accesses to structures, it made relatively readable C.
Re: (Score:2)
Well, to be honest, Pascal and C are similar enough in key respects that translation isn't a big deal. Moving from a procedural language like Cobol to an OOP language like Java is a bit more daunting. Mind you, C++ started out simply as a translater to C with some optimizations, so maybe this problem has been dealt with before.
Re: (Score:2)
Though it looks from the slides that they did in fact translate line by line and did not use any of the object oriented features of java. That would have been like the opposite of another project I was involved in. I wrote a bunch of python code. later it was deemed that perl was known by more of the devs so I would need to translate that to perl. The python code used classes so I translated that by hand into a subset of python that was very procedural. Then I wrote a python script that translated that into
Three Million Euros!? (Score:2)
Holy cow, exactly what was the environment they had that cost $3M Euros/year more than the hand full of Linux boxes they replaced it with?
They could have had a collection of mainframes for $3M Euros, they were vastly under-used if they had that much in savings locked up in that environment.
Their code matches line for line, so they have the most basic of Java code in place of the COBOL code (it likely looks very similar to COBOL code) I guess.
As for the transcoding effort, they could also have fired up any
Re: (Score:3, Interesting)
Re: (Score:2)
Re:Maintenance Maintenance Maintenance (Score:4, Interesting)
I agree with your objections and have seen these problems so many times over the last decade that it is getting hard to believe that someone can't write a decent translator.
Java is usually very easy to refactor (smart editors).
It seems like a two or even three stage pass would work.
Stage one, COBOL to raw java.
Stage two, raw java to better formatted java.
Stage three, better formatted java to even better formatted java.
I wrote an RPG3 to RPG4 converter back in 2000.
It used 5 passes-- each a small simple program.
The result was actually fairly close to procedural java-- if we had decided to go with java, I could have written a 6th program to do that conversion.
Re: (Score:2)
Sort of.
There was a free converter that converted RPGIII to RPGIV if you wanted to have "Rpg3 in Rpg4 format".
But if you wanted improved error handling, files as objects, support for external calls to java, embedded SQL, better transaction control boundaries, you needed to do a more complete conversion.
Re: (Score:2)
What, did IBM pull a VB6 and make RPG3 code non-migratable to 4?
No, they provide a free converter. It's mostly a format change in terms of RPG III code, in other words not rearchitecting to use RPG IV capabilities.
Why the guy has a five pass converter to do the same thing? Don't know, but I presume to rearchitect to use RPG IV capabilities.
Also, everything is totally backwards compatible. One program could contain RPG II, RPG III, RPG IV, and
Re: (Score:2)
I think Java will probably be around for some time to come. It's becoming a pretty major force in embedded devices.
That being said, maybe converting to something like C might guarantee long-term viability.
Re: (Score:2, Funny)
cobol.AddLine("ADD A TO B GIVING RESULT");
cobol.AddLine("PRINT RESULT.");
cobol.Compile();
cobol.Execute();
Re: (Score:2)
I know you were joking, but have you used Java's decimal library before?
Not quite as bad as your fake code, but the difference is... BigDecimal [sun.com] is actually a real class that exists in the Java standard library.
The same code in C#:
(provided you don't overflow the decimal value)
Re: (Score:3, Interesting)
Ha, you think you're joking, don't you? A friend of mine used to work for the Air Force in one of their less high-tech establishments, a place that did inventory. The software, all locally developed, was written in Fortran. However, changing the source and recompiling was extremely tedious since it meant punching new cards, running them through to compile, then running the result of the first run through to link, then running the linked code, then transferring the output to another machine that could print
Re: (Score:2)
You haven't truly lived until you have opened the binaries to your production application in a hex editor and tweaked them to do what you want.
It's better than sex. Well not better than sex with another person, but better than regular solo sex.