r/cobol • • 56m ago

How long would it take you to build this in Flutter?

Enable HLS to view with audio, or disable this notification

• Upvotes

I built this system with WapForm many years ago in just six months.

Because of a previous failed development project, the customer's users were reluctant to test the new system for an entire year. When they finally started testing, we made over a hundred changes in a single day and went live that same day.

The Flutter version shown here is exported directly from WapForm, not rebuilt from scratch.

Could this be a good approach to COBOL modernization?

Instead of rewriting the entire system, AI could translate COBOL into WapForm definitions and export directly to Flutter.

Would COBOL developers accept this approach? Could running the old and new systems in parallel, validating their results, and migrating incrementally be a practical path forward?


r/cobol • • 18h ago

Looking to Transition into COBOL Development. Where Should I Start?

6 Upvotes

Hi everyone!
I’m looking to transition into COBOL development and would love some guidance from those already working in this field.
Where should I start? What should I study, which courses or resources are best, and how should I practice to become job-ready?
Any advice on learning COBOL, JCL, DB2, CICS, and mainframe basics, would be greatly appreciated.
I’m eager to learn and willing to put in the effort. Any guidance or personal experiences would mean a lot. Thank you! 🙏


r/cobol • • 15h ago

Is switching to HPE NonStop (Tandem COBOL) a good career move?

2 Upvotes

I have around 6 years of experience working on IBM mainframes, primarily with COBOL, JCL, DB2, and banking applications.

I'm considering an opportunity involving Tandem COBOL on the HPE NonStop platform and would like to understand its demand and long-term career prospects before making a decision.

For those who have worked with HPE NonStop or have experience in both ecosystems, I'd appreciate your insights on a few questions:

- Is Tandem COBOL still in demand?

- How does its job market compare with IBM mainframe development in terms of opportunities and career growth?

- Is it a good skill to build for the next 5–10 years, or is it becoming increasingly niche and would put me back in the race?

- Would switching after 6 years of IBM mainframe experience be a sensible career move, or could it limit my future opportunities?

I'm trying to understand whether this switch would be a good long-term decision or whether it would be better to continue building my expertise in IBM mainframes.

I'd appreciate honest opinions, especially from people currently working with these technologies or who have made a similar transition. Thanks!


r/cobol • • 3d ago

Why do people want to replace COBOL so badly?

93 Upvotes

I've been messing around with COBOL a bit, and honestly, the syntax seems pretty easy to understand.

I get that it's old and the ecosystem isn't as convenient as Python or JS, but is that really the main reason people move away from it?

Like, what if the tooling and libraries were actually nice to use? Would people be more open to it, or is there something fundamental I'm missing?


r/cobol • • 3d ago

Easy to use IDE for GnuCOBOL.

2 Upvotes

This is my easy to use IDE for GnuCOBOL.
This is WINIDE - its use is for PC targeted GnuCOBOL programs - as opposed to WINZOS for zOS emulation.
Break points can be set after successful compilation
OR
During runtime execution of the debugger
Both are demonstrated in the video

Compiling is simple, two choices, compile with animation (A) or without animation (M)
If a compilation error is detected the compile pane indicates compiled failed
Use a "V" function code to view the compilation listing
Find error by "F ERR 1"
Start a concurrent edit session - locate the error (from the compile listing), fix the error in the edit session, save the edit session, recompile.

If 'EXEC SQL' is detected in your COBOL source - the DB2 preprocessor and bind are done automatically.

Execution is initiated by eXecuting a .bat file "X"

The editor you use is extensible via an environment setting - the animation always uses the Xpediter like user interface.

The animated debugger is full featured. 
Right clicking a data field name will present a panel to display,  modify, watch . .   the selected data field.
Zoom "Z" animates the program at flank speed
Quite "Q" executes the program  sans the animation - break points are still honored

There are help screens with most of the WINIDE features

IMO it is the best GnuCOBOL IDE targeting PC based applications.
You can even animate programs having a screen section.

I will provide another post that targets zOS emulation

This iis the URL to view the video:

https://connect.flashbackrecorder.com/Default.aspx?id=2jEfosHvw9FyLSX5sI9N2g2

"The owner of this video requires you to login so they can track views."

If you got this message - I apologize - It is no longer necessary

Both WINIDE and WINZOS are available at wincobol.com

Both are FREE ! - No license fee - no maintenance fee


r/cobol • • 3d ago

From WML to Flutter: A Code Generation Example

Thumbnail
0 Upvotes

r/cobol • • 3d ago

wapform_flutter

Thumbnail
1 Upvotes

r/cobol • • 4d ago

COBOL → AI → WapForm → Flutter: An Alternative Approach to Legacy Modernization

0 Upvotes

What if modernizing a COBOL system didn't have to start with rewriting everything from scratch?

I'm the creator of WapForm, a development framework built around WML, a declarative application-definition language.

My approach explores a different path:

COBOL → AI → WapForm → Flutter

Instead of asking AI to translate an entire legacy system directly into another programming language, the idea is to establish an intermediate application definition that can target different platforms.

WapForm already has a WML-to-Flutter code generation workflow. Applying this approach to existing COBOL systems is the next challenge: mapping business logic, data structures, and application behavior into WML, then validating the results against the original system.

This is an ongoing engineering direction, not a claim that every COBOL system can already be converted automatically.

Here's a video introducing the approach:

https://youtu.be/AQEowueepcY

I'd love to hear from COBOL developers and enterprise architects:

What is the hardest part of modernizing a legacy COBOL application?

Would an intermediate application-definition layer be useful?

What would you need to see in a proof of concept before considering this approach?

I'm interested in honest technical feedback and real-world experiences.


r/cobol • • 8d ago

COBOL: REDEFINES Clause

12 Upvotes

Mastering COBOL: The Power of the REDEFINES Clause

Ever wondered how to interpret the exact same chunk of memory in two completely different ways without allocating a single extra byte?

In mainframe applications, managing storage efficiently is everything. That is where the COBOL REDEFINES clause comes into play. It allows multiple data items to share the same physical memory space, giving you the flexibility to overlay structures—like converting an alphanumeric string into numeric sub-fields or handling variable record formats.

In my latest video, I break down:

-> Exactly how the REDEFINES syntax works

-> Crucial compiler rules you must follow (like handling level numbers and size limitations)

-> Practical, real-world project scenarios

If you want to sharpen your mainframe COBOL programming skills or need a quick refresher, check out the full tutorial here:

Watch the video on YouTube: https://www.youtube.com/watch?v=XbYteTi9d28


r/cobol • • 8d ago

Career in COBOL

31 Upvotes

I've been working as a Business Data Analyst for the past 2 years and 3 months, and before that, I spent nearly to 6 years as a Software Developer, specialising in VB.NET and SQL.

Throughout my career in SQL I've been involved in developing, maintaining and troubleshooting our nightly ELT process, using our bespoke ELT software and SQL Server. I'm comfortable working with existing codebases, investigating issues and maintaining business-critical systems.

Recently, I've become increasingly interested in COBOL and mainframe development, and I'm seriously considering pursuing it as the next step in my career.

However, I'm struggling to work out how to break into the industry. Most of the COBOL positions I've come across seem to require several years of commercial COBOL or mainframe experience, and there don't appear to be many junior opportunities available.

I'm based in the UK, and ideally I'd like to make the transition without having to start my career over again, particularly given my existing development experience.

I'd be interested to hear from anyone currently working with COBOL or IBM mainframes.

  • How did you get into the industry?
  • Would my previous software development and SQL experience be relevant to employers?
  • What would you recommend learning beyond COBOL itself, such as JCL, z/OS, Db2 or CICS?
  • Are there realistic routes into the industry for experienced developers who haven't worked with COBOL professionally?
  • Is it realistic to transition without taking a significant salary reduction?

I'm happy to dedicate time to studying and building my knowledge independently. I'm just unsure how to turn that into an actual career opportunity.

Any advice or experiences would be appreciated.


r/cobol • • 12d ago

I tested LLM translations of COBOL to Python against GnuCOBOL on hidden inputs. Plain Python passed ~99% of the shown examples but only 82-91% of the hidden tests.

11 Upvotes

I've been building cobol-equiv, an open-source harness that checks whether a Python translation of a COBOL program behaves exactly like the original, using GnuCOBOL as the oracle. It comes with a small Python runtime for COBOL numeric semantics (PICTURE, COMP-3, ROUNDED, SIZE ERROR), validated against GnuCOBOL on 9,769 generated cases with 0 disagreements on 3.1.2.

Then I used it to measure LLM translations. 50 programs: 30 public ones (Rosetta Code and Open Mainframe Project examples) and 20 written for the repo. One model, 3 attempts per program, protocol fixed before any run. The translator saw the COBOL source and two example input/output pairs; scoring was on hidden inputs (generated plus PICTURE boundary values).

condition shown examples hidden tests (public / own programs)
C: plain Python, stdlib only 98.9% / 100% 91.1% / 81.7%
A: with the COBOL-semantics runtime 98.9% / 98.3% (after fixing my bug, see below)
B: A plus up to 3 repair rounds with test diffs 100% / 100%, all after one round

What broke the plain-Python translations was not logic, it was COBOL semantics: - ACCEPT into 9(5)V9(3) cuts the input to the receiver length, so the last decimal digit is dropped. The translation kept it. - An 11-character input into 9(10) loses a digit on the left. - A negative zero printed as "-0", where GnuCOBOL edits zero without a sign. - Non-numeric input converted differently.

The embarrassing part: the runtime I gave the model had a bug. CobDecimal compared objects by identity and had no ordering, so most failures in condition A (crashes and two infinite loops) were mine, not the model's. The pre-registered numbers stay primary in the repo, and a corrected sensitivity analysis is published next to them, with every verdict that flips listed.

Limits, plainly: small corpus, one model on one date, GnuCOBOL instead of an IBM compiler, attempts of the same program are not independent, and at program level the A vs C difference is not statistically significant.

Repo, protocol, raw prompts and replies, and the verifier: https://github.com/abdulazizbalu/cobol-equiv

I'd really value critique from people who work with COBOL: which semantic traps would you add, and if you have small, deterministic programs under a permissive license, I'd like to add them to the public track.


r/cobol • • 17d ago

Gitgalaxy: a repo scanner that supports CICS estates

4 Upvotes

I've been building GitGalaxy, an air-gapped scanner that builds a structural model of COBOL/CICS estates: byte-level layouts (every USAGE, REDEFINES, ODO, SYNC), copybooks, PERFORM/CALL/LINK/XCTL graphs, COMMAREA contracts, CICS/Db2/IMS/MQ operations, and compile options with their source.

Fact Count Agreement
Data items 8,065 100%
PIC clauses 5,925 99.9%
USAGE 978 99.8%
REDEFINES 238 100%
EXEC CICS commands 611 100%
CALL/LINK/XCTL 155 100%
PERFORM/GO TO edges 1,733 99.5%
MOVE pairs 8,785 99.4%

The data is sufficient in scope to act as a generator for a deterministic translator (no LLM) generates Java from the model. Then both the original (on GnuCOBOL plus our CICS/Db2 models) and the Java run the same scenarios, compared byte for byte. Of 117 programs in 5 public estates (CardDemo, CBSA, GenApp and others), 75 translate whole and 62 behave identically on every scenario. Four outside parsers (Cobrix, Che4z and others) also agree with the model at 96–100%.

Semantics that bit us: TRUNC(STD) vs BIN, COMP-1/2 as IBM hex float, negative zero through a truncating MOVE, EBCDIC code pages × DECIMAL-POINT IS COMMA.

repo


r/cobol • • 20d ago

COBOL level 66 - RENAMES Clause

2 Upvotes

RENAMES Clause:

The COBOL RENAMES clause (level number 66) creates alternative logical groupings or overlapping views of existing data items within a record without changing physical storage.

Syntax:

66 data-name-1 RENAMES data-name-2 [THROUGH | THRU data-name-3]

* Must use the special level number 66.

* Must immediately follow the last data description entry of the logical record.

https://www.youtube.com/watch?v=GE_MEelNXeA


r/cobol • • 28d ago

Our 1990s COBOL ERP only allowed 3 ODBC connections, so we taught Python to read its data files directly

29 Upvotes

TL;DR: Our ERP stores everything in AcuCOBOL Vision files. The only official way in was a 3-seat ODBC driver that was always maxed out and occasionally crashed. We reverse engineered the file format, now read the raw .dat files directly (read-only), and mirror 66 tables into Postgres every 5 minutes in about 35 seconds. It took a few weeks, one scary mistake, and a lot of verification.

The setup

We're a small food manufacturer running an ERP that's been around since the 90s. Under the hood it's AcuCOBOL, and every table is a Vision indexed file: a .dat with the records and a .vix with the index.

Everything modern we run (dashboards, EDI, order imports, a wholesale portal) reads a Postgres mirror of the ERP. That mirror used to be fed by a bridge over ODBC, through a vendor driver licensed at 3 concurrent seats. Those seats were spoken for all day by shipping stations and automation, the ODBC server is a single-threaded binary from 2014 that pegs one core, and a full refresh took hours. When it fell over, everything downstream went stale.

The idea

The files are just bytes on a share. If we could decode them ourselves, we wouldn't need a seat at all.

What made it possible: the ODBC product ships its own catalog describing every record layout. For each table it lists every field with its byte offset, length, PIC clause, usage, decimal places and date format. That's basically the COBOL copybooks in queryable form, so we never had to guess a field.

Cracking the file format

Vision files have a header area, then records stored in slots, each with a small header of its own. Where the records start, how big that per-record header is, and the stride between records all vary by file. So instead of hand-deriving 66 of them, we wrote a generator: try candidate layouts, decode a sample, and score how many decoded rows exactly match known-good rows pulled over ODBC. The winner goes into a config, and nothing gets in without validating against live data.

Making it safe to cut over

This is the part that actually took the time. We ran the reader in shadow for weeks next to the old bridge:

  • every night, a full row-hash comparison of every table, with both pipelines normalized the same way
  • every two hours during business hours, count checks and field-by-field spot checks on the busiest tables
  • a gate: 10 consecutive clean business-hours cycles on the order header file before we'd switch
  • the reader code and configs are hashed together, so any change resets the streak

What it looks like now

  • 66 tables re-checked every 5 minutes, about 35 seconds per sweep
  • each record's raw bytes are fingerprinted, and only rows that actually changed get written
  • files are opened read-only, and the reader never touches the ODBC service (4 small tables still ride the old path while we finish them)
  • a row only gets deleted after it's missing from the source on two consecutive sweeps, so one bad read can't wipe live data

Things that bit us

  • Live users lock records. Someone editing an order holds a byte-range lock on part of the file, and any read that hits it fails. We retry with backoff and treat a lock as "no data this pass," not an error. Once a desktop session died mid-edit and its server-side runtime held a lock for five and a half hours.
  • Files change under you. We check size and mtime before and after each read and retry if they moved.
  • REDEFINES. Two fields describing the same bytes, and the catalog's ordering of the tie isn't something you can derive.
  • "Last synced" changed meaning. The old bridge rewrote every row on every pass, so a timestamp meant "last checked." Ours only writes changes, so it means "last changed." Four freshness monitors started calling quiet tables dead, and all of them had to be repointed at the reader's own heartbeat.
  • Our own big mistake. During cleanup we deleted about 1.4M rows we believed were stale leftovers. We'd found them by comparing against the reader's output, but the reader deliberately skips very old records, so everything older than that cutoff looked "missing." It was real history. Every deleted row had been copied aside first, so it came back as archive tables. Lesson: an anti-join only tells you something is stale if both sides cover the same key range.
  • Bloat. The old bridge rewriting every row every 15 minutes for months left some Postgres tables 7x their real size. One night of compaction took the database from 45 GB to 32 GB.

How it got built

Full disclosure: most of the reverse engineering and code was done pair-programming with Claude. It was great at grinding through byte offsets and writing verification harnesses. It was also the one that made the delete mistake, and the one that dug it back out, which honestly felt about right for a pair programmer.

Happy to answer questions if anyone else is stuck feeding a COBOL system through an ODBC straw.


r/cobol • • 28d ago

Any Tandem / HPE Nonstop COBOL Developers out there?

9 Upvotes

Looking for advice, maybe even. short term engagement for one of two experienced Nonstop COBOL developers. I won't lie, right now our opportunity is quite wide and I'm open to ideas, but there may also be scope to build a fairly recurring bit of work. Anyone interested in discussing please reach out. Coming from a HPE Nonstop company working with Customers all round the world.


r/cobol • • 29d ago

Looking for Mainframe opportunities in Europe

7 Upvotes

Hello people. Posting for any Mainframe opportunities in Europe for myself.

My background: I have 15+ years of industry experience working on Mainframes. Mostly my roles have been around 8 years experience in Development. Remaining close to 5 years in Production support - L2/L3 Oncall etc. I was also part of migration of DB2 z/OS to LUW.

I have worked for multiple clients, projects, geographies from diverse backgrounds. Banking, Insurance, Manufacturing, Utilities are the areas I mainly worked in Dev/Production support. Currently I am supporting a Mortgage application for a Large Danish bank. I can adapt to any domain/projects easily and I am sincere at my work.

I am currently based out of India and looking for opportunities to work at onsite in Europe for long-term (preferably Nordics but not necessary). If you have a role within your teams or know a position where I can fit, please DM me. I can share my CV/CL/LinkedIn etc. for interview and we can take it from there. Would be grateful for any help. Thank you for the read.


r/cobol • • Sep 27 '26

CP/M-80 MS-COBOL v4.65 alternative sorting method without the MS-SORT package

Thumbnail
1 Upvotes

r/cobol • • Sep 21 '26

JCL Batch Job Dependency and Scheduling Optimizer

10 Upvotes

Is there anything like this in the current mainframe/COBOL industry? I am planning to develop something like this.


r/cobol • • Sep 18 '26

Help required on CP/M-80 compiling COBOL program with MS-COBOL v6.65

Thumbnail
9 Upvotes

r/cobol • • Sep 17 '26

Where do I start?

25 Upvotes

Hey everyone,

I’ve recently entered the world of banking (retail side) and have become incredibly intrigued by COBOL. I’ve never coded before but I’d really like to learn COBOL and hopefully make a career out of it. Any advice, warning, and helpful tutorials you have found in your journey with the language would be immensely appreciated.


r/cobol • • Sep 16 '26

Cobol Fundamentals in under 2 hours

Thumbnail youtu.be
49 Upvotes

Hey everyone, just published this video covering basics of cobol like pic, arithmetic, signs, storage, and much more.

First time taking the courage to put my face in video :D

Also do explore my platform. My platforms lets you execute cobol code, in an ide like environment.
It has a Pull request review component, vibe coding lessons that you won't find anywhere in any platform. Took me ~10 months to build it from scratch.


r/cobol • • Sep 15 '26

How realistic would a job in Cobol be?

45 Upvotes

Im a recent CS grad and live in a major north American banking hub (Charlotte). I keep hearing conflicting stories about "Oh all the banks/gov need young people to keep the systems going!" And "Dont bother, its a waste of time and impossible to break into anyway." I dont have any experience with the language or accompanying frameworks. Would it be worthwhile to try and learn in hopes of employment?


r/cobol • • Sep 04 '26

Tired of wrestling with EBCDIC and COMP-3 dumps? Built an offline parser GUI tool

1 Upvotes
Hey everyone,



If you've ever had to extract and analyze data from mainframe dumps, you know the headache of dealing with packed decimals (COMP-3), binary integers (COMP), and EBCDIC character encodings (IBM037, IBM1147).



Uploading sensitive banking/insurance extracts to online web converters is often a strict compliance violation (GDPR, PCI-DSS).



I built a lightweight, 100% offline desktop tool called COBOL Bridge:

- Drag & drop your .cpy Copybook and raw binary .dat file.

- Parses signed packed decimals (S9(9)V99 COMP-3), binary fields, and text accurately.

- Exports directly to CSV, JSON, and SQLite.

- Generates Pydantic (Python) or TypeScript models from copybooks in 1 click.

- Runs locally without sending a single byte to the cloud.



Available on Gumroad: gewa7.gumroad.com/l/bkzyiv



Would love to hear your thoughts and what specific COBOL clauses you deal with most often!

r/cobol • • Sep 04 '26

Tired of wrestling with EBCDIC and COMP-3 dumps? Built an offline parser GUI tool

1 Upvotes
If you've ever had to extract and analyze data from mainframe dumps, you know the headache of dealing with packed decimals (`COMP-3`), binary integers (`COMP`), and EBCDIC character encodings (IBM037, IBM1147).



Uploading sensitive banking/insurance extracts to online web converters is often a strict compliance violation (GDPR, PCI-DSS).



I built a lightweight, 100% offline desktop tool called 
**COBOL Bridge**
:

- 
**Drag & drop**
 your `.cpy` Copybook and raw binary `.dat` file.

- Parses signed packed decimals (`S9(9)V99 COMP-3`), binary fields, and text accurately.

- Exports directly to 
**CSV, JSON, and SQLite**
.

- Generates 
**Pydantic (Python)**
 or 
**TypeScript**
 models from copybooks in 1 click.

- Runs locally without sending a single byte to the cloud.



You can check it out here: https://gewa7.gumroad.com/l/bkzyiv



Would love to hear your thoughts and what specific COBOL clauses you deal with most often!

r/cobol • • Aug 31 '26

Space Invaders in COBOL on a 3270 - M248

Thumbnail youtube.com
20 Upvotes

New video from Moshix!