Build1 distinct publisher3 min readUpdated
A UK migration guide puts a mid-size mainframe move at one to two years. The stated failure modes are packed-decimal typing and business logic nobody documented, not the target language.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
A UK enterprise guide published on dev.to has put numbers on something that usually arrives as a vague board request: a mid-size COBOL to Java migration typically costs £200,000 to £800,000 and takes one to two years, with the data access layer and undocumented business logic named as the biggest risks [1][2]. That moves the conversation from platform strategy to budgeting, which is where these programmes are actually won or lost.
Treat the range as an anchor rather than a quote. It is four times as wide at the top as at the bottom [3], and the schedule range doubles independently, so the implied monthly burn runs from about £8,300 to about £67,000, a spread of roughly eight times [4]. A number that loose is not a costing; it is a statement that scope discovery has not happened yet. Anyone approving spend against it should expect the discovery work to be the first line item.
The technical failure mode the guide treats as most important is arithmetic typing. COBOL `PIC 9` clauses and `COMP-3` packed-decimal fields hold exact base-10 values, which is what financial systems require [5]. Java's `double` and `float` use binary IEEE 754 floating point and will introduce rounding errors in monetary calculations [6]. The correct mapping is `BigDecimal`, with scale and precision carried over from the original `PIC` clause [7], and according to the guide any migration that converts `COMP-3` to `double` to keep the code simple is introducing production defects [8]. `BigDecimal` is more verbose because it is an object with an explicit API rather than a primitive [9], which is the stated reason some organisations already on .NET prefer C# and its native `decimal` type [10]. That is a real trade: verbosity you can review versus rounding you cannot see until a reconciliation fails.
The second failure mode is the one you cannot buy your way out of. Strong static typing catches whole categories of error at compile time, which matters when translating decades of business logic that no one fully documents [11]. Note the framing: the type system is a partial mitigation for missing documentation, not a substitute for it.
On approach, the guide describes three options with different risk and cost profiles, automated conversion, parallel rewrite, and incremental strangler fig, and says most UK enterprises use a hybrid [12]. Automated conversion done well yields idiomatic Java 17 with typed fields and structured exception handling; done naively it produces an unreadable transliteration that is harder to maintain than the COBOL it replaced [13]. No tool produces a finished system [14]. `EXEC SQL` against DB2, `EXEC CICS`, and VSAM have no drop-in Java equivalent and need deliberate redesign onto JDBC, JPA/Hibernate, or Spring Data [15]. Copybooks, including nested ones, must be resolved [16], and EBCDIC fixed-width layouts need explicit conversion to Unicode and typed models [17].
What to watch in any proposal built on these figures: whether the quote separates discovery from conversion, whether the acceptance criteria include decimal-exact reconciliation against the mainframe rather than test pass rates, and how the CICS and VSAM redesign is priced [15][2]. Those three lines explain the gap between £200,000 and £800,000 [1].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
The data access layer and undocumented business logic are named as the biggest risks in a COBOL to Java migration.
COBOL PIC 9 clauses and COMP-3 packed-decimal fields represent exact base-10 values, which is what financial systems require.
Java's primitive double and float types use binary (IEEE 754) floating point and will introduce rounding errors in monetary calculations.
The correct mapping for COBOL decimal fields is Java's BigDecimal, with matching scale and precision from the original PIC clause.
Automated conversion done well produces idiomatic Java 17 with proper class structure, typed fields, BigDecimal for packed decimal and structured exception handling; done naively it produces an unreadable transliteration that is harder to maintain than the original COBOL.
No conversion tool produces a finished system.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One vendor-authored guide; sound semantics, unsourced economics
All 18 ledger claims come from a single dev.to guide with no second publisher, no data appendix and a body truncated before the cost table. The technical core — exact base-10 COMP-3/PIC versus binary IEEE 754 double/float, BigDecimal mapping, no drop-in Java equivalent for EXEC SQL/EXEC CICS/VSAM — is checkable against language and platform behaviour and is internally consistent. The commercial core — the £200k–£800k band, one-to-two-year schedule, hybrid prevalence, Java as most common destination — is asserted with no sample, methodology or citation. Evidence therefore sits below midpoint: credible engineering guidance, unverified numbers.
No deployment, release or usage evidence supplied
The source describes a migration tool's capabilities and generic approach patterns but supplies no dated release, no named enterprise deployment, no migration count, no benchmark and no usage disclosure. The only quasi-adoption statement — 'most UK enterprises use a hybrid' — is an unquantified assertion. There is nothing to measure adoption from without inferring facts the source does not provide.
Numbers and market claims overstate a sober technical core
Positive but moderate. The guide's engineering content is understated rather than hyped — it concedes that no tool produces a finished system, that naive conversion is worse than the original COBOL, and that parallel runs double operating cost. The overstatement sits in the quantified and market layers: a headline price tag whose top is 4x its bottom and whose implied monthly burn spans eight-fold, a 'most UK enterprises use a hybrid' prevalence claim with no data, a 'most common destination' ranking with no market figures, and a tool positioned as 'what good automation looks like' with zero measured outcomes. Precision of presentation exceeds precision of evidence.
Vendor guide recommending its own conversion tool
The guide is published on the Mecanik dev.to account and, immediately after stating that no tool produces a finished system, presents the Mecanik COBOL-to-Java tool as the exemplar of good automation, itemising AST construction, semantic analysis, BigDecimal mapping, COPY/REPLACE resolution and a Migration Report. It also cross-links the same author's COBOL-to-C# guide, so both sides of the language choice route back to the publisher's funnel. The stated cost band functions as a qualification anchor for prospective migration buyers. No independent validation or commercial disclosure accompanies any of it, which puts incentive alignment high.
Single publisher, no corroboration, split reliability
Confidence is constrained by structure: one source, one publisher, no adoption evidence, and a truncated body. It is not lower because a substantial fraction of the ledger consists of verifiable language and platform semantics that would survive removal of the vendor's authority, and because the guide is internally candid about tooling limits. Anyone acting on the numbers should seek an independent cost baseline before treating them as a benchmark.
product
Hypercubic's $5.3M bet: the hard part of COBOL migration is reading the code, not writing it1 distinct publisher
build
The proxy in your call path decides whether @Transactional does anything at all1 distinct publisher
build
The @Version field that guarded nothing: JPA counters, bulk UPDATEs and quietly missing clicks1 distinct publisher
build
In Spring, the hook you need is decided by the clock, not by the name1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 20, 2026