Prepare
- Upload Progress data files
Progress OpenEdge (formerly Progress 4GL) is an application development platform and database management system widely used for mission-critical business applications.
What You Can Upload
.dbdatabase files.ddata files / data extents.ststructure files- ZIP archive with complete database files
What You Get Out
DataMeans extracts your data into multiple modern formats:
| Output | Description |
|---|---|
csv/{TableName}.csv | One CSV file per table with all row data |
xlsx/{TableName}.xlsx | Excel workbook per table |
xls/{TableName}.xls | Legacy Excel format per table |
json/{TableName}.json | JSON array of records per table |
json/{TableName}.jsonl | Newline-delimited JSON (streaming-friendly) |
postgres.sql | PostgreSQL CREATE TABLE + INSERT statements |
schema/schema-graph.json | Relationship graph for visualization |
schema/er-model.json | ER model for diagram tools |
report.json | Structured extraction report |
report.md | Human-readable extraction summary |
How to Export / Obtain Files
- Stop the Progress database or create a backup
- Locate the
.dband associated data extent files - Include
.ststructure file if available - Create a ZIP with all database files
- Upload the ZIP to DataMeans
Alternative: Use proutil to dump data to .d files:
proutil dbname -C dump tablename tablename.d
Supported Features
- Full schema extraction (tables, indexes, constraints)
- Progress data type conversion
- Sequence mapping
- Relationship preservation
- Multiple data extents
Known Limitations
- Triggers and stored procedures documented but not converted
- Application-level logic requires manual migration
- Very large databases may need chunked exports
Troubleshooting
| Issue | Solution |
|---|---|
| Database locked | Stop database or use backup copy |
| Missing extents | Include all .d1, .d2, etc. files |
| Schema incomplete | Include .st structure file |
Last updated: January 2026
Overview
Progress 4GL (now OpenEdge ABL) is a fourth-generation programming language and database platform developed by Progress Software Corporation. It combines a relational database with an English-like programming language for rapid business application development. The database uses a proprietary format optimized for transactional processing and complex business logic.
History and Background
- 1981: Progress Software founded as Data Language Corporation (DLC) by MIT graduates including Joseph Alsop, Clyde Kessel, and Chip Ziering.
- 1984: First commercial version of Progress ships for Unix.
- 1987: Company renamed Progress Software, after its flagship product.
- 1993: Progress Version 7 adds GUI development for Windows and Motif.
- 1995: Progress Version 8 introduces component-based visual development.
- 1998: Progress Version 9 introduces Type I storage areas.
- 2003: OpenEdge 10 released, the first OpenEdge-branded version, introducing Type II storage areas.
- 2005: OpenEdge 10.1 adds object-oriented language extensions.
- 2006: Progress 4GL renamed OpenEdge ABL (Advanced Business Language).
- 2009: OpenEdge 10.2 released; release 10.2B adds Transparent Data Encryption for data at rest.
- 2011: OpenEdge 11 introduces multi-tenant database tables.
- 2014: OpenEdge 11.5 introduces the Pacific Application Server for OpenEdge (PASOE).
- 2017: OpenEdge 11.7, a long-term support release, introduces Change Data Capture.
- 2019: OpenEdge 12 adds a multi-threaded database server.
- 2022: OpenEdge 12.5 adds an ABL API for Apache Kafka messaging.
- 2024: OpenEdge 12.8 adds Dynamic Data Masking and OpenTelemetry-based application observability.
- 2026: OpenEdge 13.0 released, resolving the year-2038 problem by widening on-disk time values from 32 to 64 bits.
File Format Specifications
Database Files:
.db: Database control area, a binary table of contents listing every area and extent.d1,.d2, etc.: Data extents holding table data, indexes, and LOBs.b1,.b2, etc.: Before-image extents used to undo incomplete transactions.a1,.a2, etc.: After-image extents for roll-forward recovery.lg: Text log file recording significant database events.lk: Lock file created at session startup, recording whether the database is open in single-user or multi-user mode.st: Structure description file, a text file defining the database's areas and extents.tn: Transaction log extents (fixed-length only) listing committed two-phase commit transactions
Storage Architecture:
- Block-based storage with configurable block sizes (1KB, 2KB, 4KB, or 8KB)
- B-tree indexes for fast lookups
- Record-level locking for concurrency
- Default block size of 4KB on Windows and Linux, 8KB on UNIX
- Databases divided into storage areas composed of one or more extents
- Up to 32,000 storage areas per database, of which 31,994 can hold application data
- Up to 1,024 extents per area and 1TB per extent; Type II areas can reach about 1PB with large files enabled
- Records per block configurable in powers of two from 1 to 256, defaulting to 64 for 8KB blocks and 32 for other block sizes
File Structure:
- Schema stored within the database's schema area
- Compiled ABL code in
.rfiles (r-code) - Data dictionary for metadata management
- Audit trails and security settings
- Replication and high-availability configurations
- Limits of 32,767 table definitions and 32,767 indexes per database
- Up to 1,000 fields per table through ABL, or 500 through the SQL engine
- Index entries of at most 16 fields each
Data Types and Structures
| Type | Size | Description |
|---|---|---|
| CHARACTER | Variable | Text strings up to 32KB |
| LONGCHAR | Variable | Character data exceeding the 32KB CHARACTER limit |
| INTEGER | 1-4 bytes | 32-bit signed integers |
| INT64 | 1-8 bytes | 64-bit signed integers (added in OpenEdge 10.1B) |
| DECIMAL | Variable | Fixed-point decimals, up to 50 digits with up to 10 decimal places |
| DATE | 1-4 bytes | Stored as an integer count of days |
| DATETIME | Date + 4 bytes | Date and time in milliseconds from midnight |
| DATETIME-TZ | Date + 8 bytes | Date/time with time zone offset from UTC in minutes |
| LOGICAL | 1-2 bytes | Boolean (yes/no) |
| BLOB | Up to 1GB | Binary large objects |
| CLOB | Up to 1GB | Character large objects |
| RAW | Variable | Raw binary data |
| RECID | 4 bytes | Legacy record pointer; can be stored in database fields |
| ROWID | Variable | Portable record pointer; cannot be stored in database fields |
Database Objects:
- Tables: Primary data containers
- Indexes: B-tree structures for performance
- Sequences: Auto-incrementing number generators (32-bit and 64-bit)
- Triggers: ABL schema triggers and Java-based SQL triggers
- Stored Procedures: Java routines executed by the SQL engine
- Views: Virtual tables defined through the SQL engine
Version Differences
| Version | Year | Key Features | File Format |
|---|---|---|---|
| Progress V7 | 1993 | GUI for Windows and Motif | Pre-storage-area format |
| Progress V8 | 1995 | Visual development; AppServer (8.2) | Single- or multi-volume structure |
| Progress V9 | 1998 | Dynamic queries, Java Open Client | Type I storage areas (CONV89 upgrade) |
| OpenEdge 10 | 2003 | Web services, ProDataSets | Type II storage areas (CONV910 upgrade) |
| OpenEdge 10.1 | 2005 | Object-oriented ABL | INT64 data type added in 10.1B |
| OpenEdge 10.2 | 2009 | GUI for .NET (10.2A); Transparent Data Encryption (10.2B) | Optional encrypted on-disk storage (TDE, 10.2B) |
| OpenEdge 11 | 2011 | Multi-tenant tables | Per-tenant partitions; CONV1011 upgrade |
| OpenEdge 11.7 | 2017 | Change Data Capture | No format change within Release 11 |
| OpenEdge 12 | 2019 | Multi-threaded database server | Conversion from Release 11 required |
| OpenEdge 12.8 | 2024 | Dynamic Data Masking, OpenTelemetry support | No conversion within Release 12 |
| OpenEdge 13.0 | 2026 | FIPS 140-3 support; multi-threaded backup by default | 64-bit time values in master blocks and extent headers (year-2038 fix) |
Compatibility Notes:
- Databases can be upgraded but not downgraded; reverting requires a restore from backup
- The database format changes between major releases; PROUTIL conversion utilities (CONV89, CONV910, CONV1011, CONV1112) upgrade databases in place
- Minor releases share a format; a database created under any Release 11.x can be opened by any other 11.x release without conversion
- Some data types require minimum versions; INT64 fields require OpenEdge 10.1B or later
- Single-volume Version 8 databases must be converted to multi-volume structure before upgrading to Version 9
- Migration utilities are provided for major-version upgrades
Technical References
- Progress Documentation
- Wikipedia: Progress Software
- Wikipedia: OpenEdge Advanced Business Language
- OpenEdge Database Essentials: Database File Structure
- OpenEdge Life Cycle
To learn how to use this format with DataMeans, see the User Guide.