EBCDIC, read with its copybook
A mainframe unload is a file of fixed-length records in an EBCDIC code page, laid out by a COBOL copybook.
Intact CSV Editor recognises such files on its own, reads them in any of 52 EBCDIC code pages — 037, 273,
500, 1140 and the rest — and cuts each record into fields at the offsets the copybook gives, including binary
(COMP), packed decimal (COMP-3) and zoned decimal numbers.
It writes them back too: Mainframe data in the export sheet writes fixed-length records in the code page you choose, laid out to match a COBOL copybook it can also write for you.
When nobody sent the copybook
A fixed-length file says nothing about where one record ends and the next begins. The app works it out, and when it cannot be sure it shows you: every record length that could be it, likeliest first, three records one under another in a monospaced face — at the right length the fields stand in columns; at a wrong one they walk sideways. The same goes for the code page: every one that can read the file is listed with how well its reading fits.
The layout the app worked out is real — it is what the file was cut by — and Save the Layout as a Copybook
writes it down as COBOL, which every mainframe shop reads and anyone can correct: a packed amount reads as text until
somebody who knows writes COMP-3 beside it. Every copybook that has read a file is kept in File ▸ Copybooks and
offered for the next file whose records are the same length. Variable-length files that still carry their block
descriptors (RECFM=VB) are cut into their records.
Fixed-width text, with layouts you keep
Not every fixed-width file is EBCDIC: bank statements, payroll extracts and old exports put fields at fixed columns in plain text. Define the columns once, save the layout under a name with a note on where it is documented, and share it with the next person who has the same file. Layouts are built in for:
- Swiss ESR V11 credit records — the payment files Swiss banks sent for orange payment slips.
- NACHA ACH files — file, batch and entry records of US bank transfers.
Then treat it like any other table
Filter, sort, validate with column rules, compare with yesterday's unload, query with SQL, and export to CSV, Excel or Parquet for people who have never seen a copybook.