Struktur des erzeugten C#-Programmes

Pro Eingabekomponente vom Typ COBOL wird eine C#-Datei mit dem Namen der Komponente erzeugt. Die Datei wird in einem Verzeichnis, dessen Name gebildet wird aus dem Typnamen und dem Anwendungsnamen, abgelegt1). So wird zum Beispiel für die EFUN-Komponente AF-KFZ-INFO-BRD aus der Anwendung PRIVAT eine C#-Datei Efun\Privat\AfKfzInfoBrd.cs erzeugt.

Falls in den Datendeklarationen des ursprünglichen COBOL-Codes im Zusammenhang mit der tatsächlichen Nutzung dieser Daten im Code festgestellt wird, dass komplexere Strukturen unterstützt werden müssen, so werden diese in einer separaten C#-Datei erzeugt. Die Datei trägt den Suffix localdata.cs und liegt im gleichen Verzeichnis wie das zugehörige Programmcoding.

Implementierungsklasse

Die Implementierungsklasse trägt den Namen des Bausteins und ist abgeleitet von der dazu passenden Klasse aus der angegebenen Basis-Assembly. Außerdem implementiert die Klasse das Interface ILegacyCobolSupport. Dieses Interface wird unterstützt, um Features zur Verfügung zu stellen, die von der Laufzeit ausschließlich zum Zwecke einer vereinfachten Migration geboten werden. Das Ziel bei einer vollständigen Migration sollte sein, dass dieses Interface schlussendlich aus der migrierten Klasse entfernt werden kann.

Am Anfang der Klasse werden sämtliche Konstanten und lokale Variablen deklariert. Siehe Umsetzung von Datendeklarationen für eine Erläuterung über die Erkennung und Behandlung von COBOL Datendeklarationen. Komplexere Datenstrukturen werden, wie oben beschrieben, getrennt in der localdata.cs deklariert.

Falls der zugrundeliegende Baustein kein TAA-Baustein ist, wird eine statische execute-Methode erzeugt, womit der Baustein von außen aufgerufen werden kann. Für einen TAA-Baustein werden an dieser Stelle diverse Bestandteile generiert, insofern das migrierte Coding diese braucht:

  • Eine Variable TcTimestamp zur Sicherung eines ggf. benutzten Timestamps.
  • Für alle verwendeten lokalen Objekte eine lokale Variable für das Objekt.
  • Für alle ohne Cursor verwendeten Mengenobjekte aus der Schnittstelle (Parameter und globale Objekte) eine lokale Variable, um einen Arbeitsbereich analog der Objektdatenbehandlung in COBOL zu ermöglichen.
  • Falls in dem Baustein weitere TAA-Bausteine gerufen werden, eine LastCallInfo Deklaration zur Unterstützung von COBOL-Abfragen zur Information über den zuletzt ausgeführten TAA-Call.
  • Falls durch irgendwelche Statements benötigt, eine Variable CurrentCondition um die aktuelle resp. zuletzt benutzte Condition zu verwalten.
  • Einen override auf die Basisklassenmethode RunImplementation, um darin Initialisierungen vorzunehmen und anschließend das C#-Pendant der ersten COBOL Section aufzurufen.
  • Falls die Option AutoGetFirst zutrifft, wird eine Methode zur Bestückung der lokalen Arbeitsbereiche mit den Daten der ersten Einträge in den Mengenobjekten der Schnittstellenobjekte erzeugt. Details siehe AutoGetFirst.
  • Falls im Baustein globale Objekte verwendet werden und TAA-Bausteine aufgerufen werden, wird eine Methode zur Aktualisierung der Arbeitsbereiche der globalen Objekte generiert, die an anderer Stelle vom generierten Code aufgerufen werden kann.
  • Zuletzt wird für jede COBOL Section aus der PROCEDURE DIVISION eine Methode mit dem migrierten Inhalt aller enthaltenen Anweisungen generiert. Die erste COBOL Section wird zu einer public Methode, alle anderen sind private.
1)
Das Verzeichnis kann durch ein ggf. installiertes AddIn angepasst werden
cobmig:cs:progstruct:start · Zuletzt geändert: 09.07.2021 16:15

Copyright © 1992-2024 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum