From my understanding — one of the things that contribute to the difficulty of migrating away from mainframes is the change in the consistency model — going from mainframe to pretty much anything else seems to involve:First note, when it comes to getting old cobol apps off the mainframe, the options are 'rehosting', 'migrating', and rewriting. Rehosting is taking your cobol and data and running it all off the mainframe. A couple of companies offer solutions to run mainframe cobol apps on the jvm (compile cobol to jvm bytecode), or compile and run them on some unix flavor. Open/Gnu Cobol is used this way by at least one vendor.
Migrating to another language involves rewriting in two main ways: source to source translating the cobol to the other language, or actually defining a project and doing a full rewrite from the ground up, using the idioms and best practices of the host language. I've seen cobol applications source translated to java using the RES 'open cobol to java' (on sourceforge for the curious), and the resulting java code looks like assembler.
Also note that some of these applications are massive in scope, they've grown organically over decades to encompass business processes for entire industries. There was never a single design document. So, rewrites are generally out of the question. One can sometimes read about boondoggle migration projects cancelled after $100 milions being spent, with nothing to show for it.
Of your two points about data consistency, your first point is irrelevant, your second point is really not relevant either. There three types of data store on mainframes. Flat files, key value tables ie VSAM (think Berkley DB, with fixed length records), and rdbms (either oracle or DB2) Note I'm leaving out outliers like Datacom and IMS as they're very uncommon now. The database is generally not an obstacle in re-hosting mainframe apps, or in source to source translation. They can be a problem in a rewrite because the schema is usually all jacked due to decades of cruft. VSAM can be replaced with dumb tables in a db or berkley db as mentioned. The amount of data stored generally isn't a problem, especially not nowadays.
But yeah, you've got a point, this legacy cobol situation is getting really stupid at this point. I had the oppurtunity to ask a VP once "why source translate to java when you can run cobol in a jvm like microfocus offering y?" His response was "customers don't want to hear cobol, we had to go to java." Nevermind the generated java was a nightmare, and technological dead end.
These types of migration projects used to be pretty common around the Y2K era, but I see them coming back around again now, because as said, the situation is getting stupid.
I tend to think now that a source to source translation to a more cobol style representation in the host language, that would be maintainable and enhanceble by cobol programmers with very little retraining may be the way to go. Then you get to keep you domain knowledge and investment in legacy code. But no one is doing this.