Rashid
Rashid is the site where the famous „Rosetta Stone“ was discovered, which bore the same text in Greek, Demotic, and hieroglyphs. This finally allowed for the deciphering of hieroglyphs. Since code transformation is also the process of converting from one language to another, and we sometimes feel a bit like code archaeologists, the name for our transformation tool is a perfect fit. Rashid is a collection of rule sets for a wide variety of tasks. Here is a small selection to reflect this diversity:
- Assembler to Cobol or C
- Easytrieve, Pacbase and CA-Earl to Cobol
- Refactoring of generated Cobol-Code, e.g. from CA-GEN or DELTA
- PL/I or REXX to Java
- Natural to Cobol or Java
- replace Natural reporting mode with strucured mode
- replace CICS Macro Level with command level
- Various job control languages to Bash
- NatStar to Java
- Interpretation of CICS tables, various DB schemes
- API like DB2, Oracle, IMS, CICS etc.
The ability to process many different languages and source code artifacts allows an application’s code to be processed as a whole. It doesn’t need to be separated by language or technical topic. For example, an application can be transformed as a whole, even if it contains COBOL, PL/I, Assembler, Easytrieve, job control procedures, utility parameters, file and database access, etc.: everything can be processed in the same run. Furthermore, modifications can be made across languages and systems because Rashid has all the necessary information in its metadata.
We have a few conversion examples available for download:
Modernization of data storage
Since Rashid knows every field in every program and every structure via the stored metadata, it is relatively easy to optimize data storage as part of a modernization.

Accesses that previously might have been to a traditional file can thus be transformed into accesses to a database or an in-memory file as part of the modernization process. This metadata is also useful when selecting test data and scenarios.

Queries on the metadata make it easy to determine where write or read access to files or fields occurs. This allows for better test coverage. It also makes it possible to change field formats or similar actions throughout an entire application.
