Raincode Sort, the DFSORT-compatible sort utility
The professional editions of the Raincode Legacy Compilers include a DFSORT-compatible sort utility. It can be used to port complex mainframe batch jobs to the .NET and Azure platforms.
Why it works
- Native .NET implementation
- Available in both 32 and 64 bits mode, for blazingly fast in-memory sort whenever applicable
- Heavily multi-threaded, for top-notch performance when used with modern multi-core architectures
- Recognizes the full DFSORT syntax, including merge, filtering, stable sorting, etc.
- Reuses the wealth of file access mechanisms provided for the Raincode compilers for ultimate flexibility (sequential, indexed, through an external file handler, etc.)
- Supports multiple encodings, including ASCII and EBCDIC, both for data and collating orders.
This utility is fully integrated in the Raincode compilers for internal sorts (SORT verb in COBOL, PLISRTx builtins in PL/I) to ensure guaranteed consistency and equivalent performance levels across-the-board.
The Raincode Sort in video
Raincode Sort is the sorting component of the Raincode stack.
Raincode Sort is available as both a standalone utility, emulating the behavior of the mainframe DFSORT program, and as the implementation behind sorting in Raincode supported legacy languages.
This enables us to guarantee that performance, behavior and supported features will be consistent in all use cases.
In a similar fashion, Raincode Sort uses the same I/O routines as legacy language runtimes so any dataset written by a program can be read by Raincode Sort without risk of mangling, record truncation, etc.
Conversely, datasets produced by Raincode Sort can also be processed by legacy programs without risk.
Raincode Sort can scale to big datasets, without being limited by available RAM.
It is also optimized to minimize and even avoid disk usage when possible to improve performance.
Multi-threading is used to take full advantage of multi-core architectures.
For small datasets (or small parts of big datasets), the underlying .Net array sort, non-concurrent but optimized to the machine architecture, is used.
For bigger datasets, a highly efficient concurrent implementation written in native .Net code is used. It takes advantage of available memory and CPU resources to reach impressive speeds.
For even bigger datasets, temporary files are used in a fast n-ary merging strategy.
This layered structure allows us to give you the best performance, whatever your scenario.
Raincode Sort’s goal is to be fully compatible with existing mainframe sorting utilities.
This includes not only sorting itself, but also input and output transformations, dataset filtering, joining and merging, etc.