11. Anlage | ||||||
|
||||||
11.2.3 COBOL-Schnittstellenpaket Das COBOL-Schnittstellenpaket erlaubt es einem Ada-Programm, Daten als Parameter einem COBOL-Programm zu übergeben. Ein Ada-Programm ist in der Lage, Datensätze zu lesen, die von einem COBOL-Programm erzeugt und in Dateien oder Datenbanken abgelegt wurden. Es können auch Datensätze im COBOL-Format ausgegeben werden. Dezimale Festpunkttypen eines Ada-Programms (decimal_fixed_point_definition <BNF>) können in oder von einer Darstellung in COBOL konvertiert werden. Damit ein existierendes COBOL-Programm aufgerufen und diesem Parameter übergeben werden können, stellt das Paket "Interfaces.COBOL" Typen zur Verfügung, die in einem Ada-Programm zur Deklaration von Parametern von Unterprogrammen verwendet werden können, deren Rümpfe in COBOL implementiert sind. Diese Typen stellen eine Abbildung auf die alphanumerischen und numerischen Daten in COBOL dar. Für alphanumerische Daten werden verschiedene Typen zur Verfügung gestellt. Da der Typ "character" in COBOL nicht unbedingt dem Typ "character" in Ada entsprechen muß, ist im Paket "Interfaces.COBOL" ein eigener COBOL-Typ "cobol_character" definiert. Für die Abbildung von Instanzen des Ada-Typs "character" auf Instanzen des Typs "cobol_character" wird ein Reihungstyp "Ada_To_COBOL" bereitgestellt. Die Elemente dieses Reihungstyps entsprechen dem Zeichensatz des COBOL-Typs "character". Um das zu einem Ada-Zeichen korrespondierende COBOL-Zeichen zu erhalten, wird das Ada-Zeichen als Index auf die Variable "Ada_To_COBOL" angewendet. Für die umgekehrte Richtung existiert die Reihung COBOL_To_Ada", die entsprechend angewendet wird. In COBOL können numerische Daten in einer "Display"-Darstellung und in einer "Computational"-Darstellung vorliegen. Die dezimalen Festpunkttypen von Ada (decimal_fixed_point_definition <BNF>) eignen sich zur Repräsentation numerischer Daten. Um numerische Daten in Ada an ein COBOL-Programm zu übergeben, müssen diese von der dezimalen Ada-Darstellung in die entsprechende Darstellung konvertiert werden, die auf der COBOL-Seite erwartet wird. Computational-Darstellung kommadarstellungen in COBOL wie "floating" bzw. "long_floating" werden durch Gleitkommazahlen in Ada modelliert. Konvertierungen zwischen Gleitkommadarstellungen in COBOL und dezimalen Ada-Typen erhält man direkt, da der Typname als Konvertierungsfunktion dient. Binärdarstellungen wie "binary" bzw. "long_binary" werden durch einen Ada-Typ "integer" modelliert. Eine Konvertierung zwischen "binary" und einem dezimalen Typ in Ada erfolgt durch die Instantiierung des generischen Pakets "Decimal_Conversions" und die Anwendung der Funktion "To_Binary" bzw. "To_Decimal". Display-Darstellung Display-Darstellungen für numerische Daten werden durch einen numerischen Reihungstyp modelliert. Konvertierungen zwischen Display-Darstellungen und dezimalen Typen erfolgen durch Instantiierung des generischen Pakets "Decimal_Conversions" und die Anwendung der Funktionen "To_Display" bzw. "To_Display". Ein Parameter der Konvertierungsfunktion gibt die gewünschte Interpretation der Daten an. Das Pragma "Convention (COBOL, T)" wird auf einen Verbundtyp T angewendet, um eine COBOL-ähnliche Darstellung für das Objekt vom Verbundtyp T zu erhalten. Das Paket "Interfaces.COBOL" erlaubt es, Daten von Dateien oder Datenbanken zu bearbeiten, die von einem COBOL-Programm generiert wurden. Für alphanumerische Daten oder numerische Daten, die in Display- oder gepacktem Format vorliegen, ist die Vorgehensweise die gleiche wie bei der Parameterübergabe: Instantiierung des generischen Pakets "Decimal_Conversions" und Verwenden der entsprechenden Konvertierungsfunktionen. Ein Parameter der Konvertierungsfunktion gibt die gewünschte Interpretation der Daten an (höher- versus niederwertiges Byte zuerst). Beispiel:
|
||||||
|