PL/I-Konvertierung

Konvertieren PL/I nach Java oder .NET

CodeLiberator konvertiert Mainframe- oder Open-System-PL / I-Anwendungen in Java- oder .NET-Plattformen, einschließlich Geschäftslogik, Datenzugriff und Benutzerschnittstelle.
Bei der Migration der zugrunde liegenden Datenbank werden die Datenzugriffsanweisungen ordnungsgemäß konvertiert. Dies hängt von der Zieldatenbank ab, bei der es sich um relationale Engines (Oracle, DB2 / UDB, MSSQL usw.), aber auch um NoSQL-Lösungen oder einfache Dateien handeln kann. Wir unterstützen verschiedene Datenzugriffstypen, z. B. getrenntes DAO, um es transparent zu halten, oder Standard-SQL.
Verschiedene Arten von Benutzerschnittstellenlösungen, die normalerweise mit PL / I geliefert werden, z. CICS / BMS oder IMS / DC werden ebenfalls in das Ziel konvertiert, das JSF oder plattformunabhängiges HTML / JavaScript (reaktive Programmierung) sein kann.
Genau wie bei anderen Sprachkonvertierungen werden alle PL / I-spezifischen Sprachelemente (Attribute, Datentypen, Funktionen, Kontrollstrukturen) vollständig von der Lösung unterstützt, unter anderem ALIGNED, POINTER und GOTO. CodeLiberator kann während der Konvertierung mehrere Muster für die Verwaltung der INCLUDE-Dateien und anderer Vorprozessoren von PL / I anwenden, um ein angemessenes Gleichgewicht zwischen wartbarem Code und der Beibehaltung des Code-Wiederverwendungskonzepts zu finden. Die Syntax und Struktur des Codes ist sowohl für neue Entwickler als auch für PL / I-Programmierer unkompliziert und einfach zu befolgen und spiegelt die Namenskonvention und die Struktur der ursprünglichen Programme wider.


Welche PL / I-Quellen sollten als der richtige Eingang für die Konvertierung verwendet werden?

news-image-2Eine der interessantesten Herausforderungen bei der PL / I-Konvertierung nach Java sind Vorprozessoranweisungen wie% INCLUDE,% DECLARE,% ACTIVATE,% IF -% THEN -% ELSE,% DO -% END usw.

Wenn die PL / I-Quellen Präprozessoranweisungen (Prozeduren) enthalten, unterscheidet sich der „Source-Code“ offensichtlich von dem Code, der schließlich an den PL / I-Compiler übergeben wird. Diese Präprozessor-Anweisungen / -Prozeduren werden unmittelbar vor dem Kompilieren ausgeführt und können den Source-Code durch Hinzufügen oder Entfernen von Codeteilen ändern. Die Frage ist also, welcher Code als Eingabe für eine Sprachkonvertierung verwendet werden soll, der Code vor oder der nach der PL / I-Vorverarbeitung?

Unter Berücksichtigung der zukünftigen Wartbarkeit von Java und der Machbarkeit einer automatisierten Konvertierung in Java ist es am besten, eine Kombination von Quellen vor und nach der Vorverarbeitung zu verwenden. Es ist nicht ungewöhnlich, dass PL / I-basierte Systeme und Anwendungen mehrere Millionen LoC enthalten. Der Prozess zur Entscheidung zwischen einer Vor-Nach-PL / I-Vorverarbeitung sollte ebenfalls automatisiert werden.


Wenn Quellen vor der PL / I-Vorverarbeitung als Eingabe für die Konvertierung von PL / I in Java verwendet werden sollen

Das Konzept für die Vorverarbeitung dient hauptsächlich drei Zielen: Wiederverwendung von Code, Verbesserung der Wartbarkeit, Steigerung der Leistung. Das einfachste Beispiel hierfür ist der % INCLUDE-Prozessor, der eine hocheffiziente Wiederverwendung von Code ermöglicht. Wenn immer möglich, muss das separate Programm- und Include-Dateikonzept von jeder Migrationslösung auf Java beibehalten werden, da sonst die Wartbarkeit der Zielanwendung insgesamt erheblich beeinträchtigt wird. Wenn die PL / I-Konvertierungslösung diese Funktion nicht automatisch unterstützt, ist dies ein ernstes Risiko für das PL / I-Migrationsprojekt!


Wenn Quellen nach der PL / I-Vorverarbeitung als Eingabe für die Konvertierung von PL / I nach Java verwendet werden sollen

news-image-2
In Fällen, in denen die PL / Quelldatei nicht als syntaktisch korrekte und vollständige Einheit analysiert werden kann, ist die technisch sinnvolle Codekonvertierung der ursprünglichen Quelldatei nicht möglich und die Quelldatei muss nach der PL / I-Vorverarbeitung konvertiert werden.

Dieser Ansatz kann auch erforderlich sein, wenn die Konvertierung nicht verarbeiteter Quelldateien zu inakzeptablen Nebenwirkungen führt. Nebenwirkungen dieses Falls werden dadurch verursacht, dass die Ausführung von Anweisungen, die ursprünglich in der Vorverarbeitungsphase abgelegt wurden, auf die Ausführungszeit der Anwendung im Zielszenario verschoben wird. Der Effekt kann konvertierter Code mit schlechter Wartbarkeit oder schlechter Leistung sein.

LiberatorWorkbench ermöglicht den menschlichen Eingriff in die Konvertierungsregeln von PL / I nach Java. Wenn also Code mit geringer Qualität oder Leistung durch die Standardkonvertierungsalgorithmen (Quelldateien vor der Vorverarbeitung) erzeugt wird, kann er von Konvertierungsexperten geändert werden, um das richtige Gleichgewicht zu finden.
Der PL / I-Vorprozessor ermöglicht mehrere Sprachkonstruktionen, die aus Sicht der Codekonvertierung eine sinnvolle Konvertierung nicht verarbeiteter Quelldateien nach Java verhindern.


Konvertierung von PL / I-spezifischen Elementen nach Java

Die Konvertierung von PL / I-Code in ein funktional äquivalentes System in Java kann als erfolgreich angesehen werden, wenn das Zielsystem in allen Phasen der Ausführung mit den Ursprünglichen identischen Daten und Services bereitstellt. Folglich muss die richtige Konvertierungstechnologie in der Lage sein, alle PL / I-spezifischen Konstrukte in einem bestimmten Format zu implementieren. Die wichtigsten PL / I-spezifischen Sprachelemente werden von FreeSofts LiberatorWorkbench in verschiedenen Phasen und auf verschiedene Arten behandelt.
Diese Elemente werden in der Code-Konvertierungsphase oder von bestimmten Dienstprogrammen verwaltet:

  • Standardattribute
  • Deklarationen, die LIKE-Attribute enthalten
  • Eine Auflösung von nicht vollständig qualifizierten Namen
  • Identifikation von Datentypen für alle Symbole (Variablen, Literale, Funktionen)
  • Dynamisch zugewiesene Variablen
  • Variierbares Scoping
  • Identifikation von Array Querschnitt Referenzen
  • GOTO-Label-Konstrukte – Code-Slicing, Ausnahmen usw.
  • Methoden aus ON-Bedingungen erstellen
  • Bitgenaue Implementierung von PL / I-Datentypen
  • Dynamische Zuweisung / Entfernung und Verwendung von Variablen
  • Behandlung von Array Querschnitt Referenzen
  • PL / I I / O-Operationen (Stream, Record, …), Abhängigkeiten vom Betriebssystem (z. B. Pfadnamenformat)
  • implizite Typkonvertierungen
  • Bitgenaue Implementierung von integrierten PL / I-Funktionen / Pseudovariablen (SUBSTR, INDEX, UNSPEC usw.)

Anpassung von PL / I-Konvertierungsprozessen

Die Code-Konvertierungstechnologie von FreeSoft wurde entwickelt und implementiert, um die Anpassung von Regeln in allen Phasen (Parsen, Modellieren, Codegenerieren) des Konvertierungsprozesses an spezifische Client-Anforderungen für die Zielarchitektur und die Codesyntax zu ermöglichen.

In den Anfangsphasen liegen die Regeln fest, welcher Status der Quelldateien (vor oder nach der PL / I-Vorverarbeitung) als Eingabe für die Konvertierung verwendet wird. Die LiberatorWorkbench-Engine akzeptiert auch Listen, um eine Gruppe von Quellen zu definieren, die nach der Vorverarbeitung entnommen werden sollen.

In der Modellierungsphase können auch benutzerdefinierte Regeln für die Zwischencodemodelle durch Refactoring ausgeführt werden.
Schließlich verwenden wir zur Codegenerierung auch vordefinierte benutzerdefinierte Regeln und Muster, z. Namenskonventionen, Syntax für verschiedene Anweisungen, Muster für externe Aufrufe (Serviceaufrufe) usw.


Zögern Sie nicht, eine Beispielkonvertierung anzufordern, indem Sie uns ein paar PL / I-Programme zusenden oder sich für eine Demonstration anmelden, damit wir Sie durch den Konvertierungsprozess von PL / I nach Java führen können.