Software Development

Redesign and reengineering of legacy applications as well as software development based on C, C++, Perl, Java, and Eclipse in both Windows and Linux environments.

PMS

Infolytics AG has developed a universal tool for migrations: PMS.

With PMS formal texts such as 3G-languages, JCL and SQL can readily be analyzed and transformed.

This tool forms the technical basis for software migrations. For example, with it a converter was developed that can transform 3000 JSP programs (Jackson Structured Programming) automatically into structured COBOL.

The Pattern Match Services (PMS) are a powerful tool set for analysis of arbitrary sources such as programs, scripts, text files etc. with the aid of patterns. But with the aid of patterns PMS can not only find the matching locations but transform the source according to the matching locations or generate new output files based on them.

PMS can reasonably be used everywhere that programs or other source files are to be searched systematically and should be processed automatically as the result of the analysis. The most common application cases are

  • Source code migration from one programming language into another (e.g. Assembler to COBOL),
  • the mapping of sources from one “dialect” into another (e.g. ADABAS D SQL into MaxDB SQL) or
  • the transformation of data types in programs (e.g. 2-digit years into 4-digit or 4-byte integer to 8-byte).

But an intelligent full-text search with subsequent classification and/or indexing of the documents (e.g. HTML or XML files) can easily be achieved with the aid of PMS. The transformation or generation of the result documents can for its part be controlled by complex rules — for example to ensure that the result conforms to a prescribed grammar.

The Patterns of PMS represent search and conversion rules. Although they have similarities with regular expressions, they considerably exceed their functionality. A few differentiating characteristics:

  • Nesting of rules: rules formulated with the aid of patterns may be nested to arbitrary depth. Once defined, patterns can then be a component of other patterns.
  • Syntax similar to (extended) “Backus-Naur-Form”: this makes it possible to define options, repetitions (possibly precisely quantified) and alternatives.
  • Recursive backtracking: Analysis according to the Trial-and-Error Principle ensures that all conceivable solution paths are attempted.
  • Associative or approximative search: Besides exact searches patterns also enable approximative (or error-tolerant) searching. For this PMS provides the possibility of specifying a similarity measure.

Beyond this patterns are in large measure maintainable and may be re-used in the most variable contexts.

PMS is available in various configuration levels and license models:

  • Enterprise version, consisting of rule editor and components needed to embed the generated code in diverse host languages
  • Stand-alone developer version (Java-based)
  • Plug-in for Eclipse
  • Run-Time Environment to execute PMS programs