11. Anlage | ||||||
|
||||||
11.6. Anlage F "Informationssysteme"
Die Anlage "Informationssysteme" erleichtert die Entwicklung kommerzieller Anwendungen in Ada, die traditionell in COBOL geschrieben wurden. Sie stellt Möglichkeiten zur Berechnung und berichtsorientierten Ausgabe von dezimalen Zahlen zur Verfügung:
Die Regeln für die aufbereiteten Ausgaben basieren auf COBOL (ANSI X3.23:1985, bestätigt von der ISO als ISO 1989-1985), mit folgenden Unterschieden:
Eine Attributvereinbarungsklausel legt die Grundzahl für einen dezimalen Untertyp fest. Machine_Radix kann für einen ersten dezimalen Untertyp mit einer Attributvereinbarungsklausel (attribute_definition_clause <BNF>) festgelegt werden. Der Ausdruck einer solchen Klausel muß statisch sein, und die Werte müssen 2 oder 10 sein. Ein Wert von 2 ergibt einen binären Basisbereich; ein Wert von 10 ergibt einen dezimalen Bereich. Für die interne Darstellung von Objekten des Untertyps S sollte "packed decimal" verwendet werden, wenn S'Machine_Radix = 10 gilt. Beispiel:
Das Paket "Decimal" vereinbart eine Menge von Konstanten, die die implementierungs-abhängige Ausdehnung für dezimale Typen festlegen, und eine generische Prozedur für die dezimale Division. Das Bibliothekspaket "Decimal" hat folgende Vereinbarung:
Die Entscheidung, ob bei der Division gerundet oder abgeschnitten wird, wird entweder durch die Anwendung des Funktionsattributes Quotient_TypeRound oder durch die Anwendung der Konvertierung Quotient_Type auf den Ausdruck Dividend/Divisor erreicht. Die Kindpakete "Text_IO.Editing" und "Wide_Text_IO.Editing" unterstützen die formatierte und lokal bestimmte Ausgabe von dezimalen Daten, die auf Musterzeichenketten basiert. Aufbereitete Ausgabe für dezimale Daten:
Die Pakete für die Zeichen- und Zeichenkettenbehandlung in Anlage A "Vordefinierte Sprachumgebung" sind auch für Informationssysteme wichtig. Wenn COBOL (beziehungsweise C) in der Zielumgebung weit verbreitet ist, sollten Implementierungen, die die Anlage F "Informationssysteme" verwirklichen, das Kindpaket "Interfaces.COBOL" (beziehungsweise C) bereitstellen, das in Anlage B festgelegt ist, sodaß Ada-Programme Schnittstellen zu dieser Sprache haben können. Aufbereitete Ausgabe für dezimale Typen Die Kindpakete "Text_IO.Editing" und "Wide_Text_IO.Editing" sehen die lokal bestimmte formatierte Textausgabe vor, die als aufbereitete Ausgabe (edited output) bekannt ist. Eine aufbereitete Ausgabezeichenkette ist eine Funktion eines numerischen Wertes, programmabhängigen lokalen Elementen (program-specifiable locale elements) und einem Steuerungswert für das Format. Der numerische Typ ist von einem dezimalen Typ. Die lokalen Elemente sind:
Jedes lokale Element hat einen Standardwert, der ersetzt oder explizit überschrieben werden kann. Der Wert für die Formatsteuerung ist vom privaten Typ Picture (Muster). Er bestimmt die Zusammensetzung der aufbereiteten Ausgabezeichenkette und steuert die Form und die Position des Vorzeichens, die Position der lokalen Elemente und der dezimalen Ziffern, die An- oder Abwesenheit einer Radixmarkierung, die Unterdrückung von führenden Nullen und das Einfügen besonderer Zeichenwerte. Ein Musterobjekt (picture object) wird aus einem Zeichenkettenwert und einem booleschen Wert zusammengesetzt. Die Musterzeichenkette (picture string) dient als Schablone für die aufbereitete Ausgabezeichenkette. Der boolesche Wert legt fest, ob eine Zeichenkette mit allen Leerzeichen erzeugt wird, wenn die Zahl 0 ist. Die Musterzeichenkette enthält eine Folge von Symbolen aus einem oder zwei Zeichen, wobei jedes als Platzhalter für ein Zeichen oder eine Zeichenkette an der entsprechenden Stelle in der aufbereiteten Ausgabezeichenkette dient. Die Symbole für die Musterzeichenkette werden in mehrere Kategorien eingeteilt. Die Einteilung ergibt sich aus der Wirkung auf die aufbereitete Ausgabenzeichenkette. Syntaktische Kategorien Dezimale Ziffer "9" Radixsteuerung "." "V" Vorzeichensteuerung "+" "-" "<" ">" "CR" "DB" Währungssteuerung "$" "#" Nullunterdrückung "Z" "*" Einfache Einfügung "_" "B" "0" "/" Die Einträge können groß oder klein geschrieben werden. Gemischte oder kleingeschriebene Formen von "CR" und "DB" und kleingeschriebene Formen von "V", "Z" und "B" haben die gleiche Wirkung wie die großgeschriebenen Formen. Ein Beispiel für eine Musterzeichenkette ist <###Z_ZZ9.99>. Wenn die Währungszeichenkette "FF", das Trennungszeichen "," und die Radixmarkierung "." ist, dann sind die Musterzeichenketten für die dezimalen Werte 32.10 und -5,432.10 "bbFFbbb32.10b" beziehungsweise "(bFF5,432.10)", wobei "b" das Leerzeichen angibt. Die generischen Pakete "Text_IO.Decimal_IO" und "Wide_Text_IO.Decimal_IO" (siehe Ein/Ausgabe für reelle Typen Anlage A) stellen die Texteingabe und nicht aufbereitete Textausgabe für dezimale Typen zur Verfügung. Eine Musterzeichenkette ist vom Typ Standard.String, sowohl für Text_IO.Editing als auch für Wide_Text_IO.Editing. |
||||||
|