11. Anlage
 
zurück
11.1.5 Ein-/Ausgabe


In Ada basieren fast alle Ein- und Ausgaben auf Formen von Dateizugriffen und dafür sind mehrere Pakete definiert:
  • das generische Paket Sequential_IO,
  • das generische Paket Direct_IO,
  • das generische Paket Storage_IO,
  • die Pakete Text_IO und Wide_Text_IO
  • die Pakete Streams.Stream_IO und Text_IO.Text_Streams.
Die vordefinierten Ausnahmen bezüglich Ein- und Ausgaben sind im Paket IO_Exceptions enthalten.

Alle Ein- und Ausgaben zur externen Umgebung eines Programms können externe Dateien verwenden. Eine externe Datei kann alles außerhalb des Programms sein, daß einen Wert liefern oder empfangen kann, dies kann z. B. eine Ein-/Ausgabeschnittstelle, eine Datei auf der Festplatte oder auch ein anderes Programm sein. Eine externe Datei hat einen Namen, durch den sie eindeutig identifiziert wird sowie systemabhängige Eigenschaften, z. B. die physische Organisation oder Zugriffsrechte.

Ein- und Ausgaben sind Operationen auf Dateiobjekten, den internen Repräsentationen der externen Dateien. Ein- und Ausgaben können sequentiell, d. h. in der Reihenfolge, in der sie in der Datei enthalten sind, direkt, d. h. durch Angabe der Position in der Datei oder textorientiert, d. h. durch Angabe von Seiten-, Zeilen- und Spaltennummer, erfolgen. Die möglichen Zugriffsarten sind abhängig von der externen Datei.

Für sequentiellen Zugriff auf Werte eines Typs aus einem Element wird das Paket Sequential_IO verwendet. Nach der Instantiierung mit dem gewünschten Typ stehen ein Dateityp (File_Type) und die Funktionen zum Dateizugriff (Open, Close, Read, Write usw.) zur Verfügung. Für direkten Zugriff auf die selben Werte wird das Paket Direct_IO verwendet. Auch dieses muß mit dem gewünschten Typ instantiiert werden.

Für Ein- und Ausgaben in Textform, also Informationen in menschenlesbarer Form, werden die nichtgenerischen Pakete Text_IO und Wide_Text_IO verwendet, der Zugriff erfolgt hierbei auf einzelne Zeichen oder Zeichenketten aus der Datei. Zur Ein- und Ausgabe von Streams wird das Paket Streams.Stream_IO verwendet.

Bevor Ein- und Ausgaben auf ein Dateiobjekt möglich sind, muß dieses einer externen Datei zugewiesen werden. Solange die Verbindung existiert, wird die Datei als "offen" bezeichnet.
Eine Datei kann entweder als Eingabedatei, Ausgabedatei oder als Erweiterungsdatei (bzw. Ein- und Ausgabedatei bei Direct_IO) geöffnet werden. Der Zugriffsmodus einer geöffneten Datei kann, abhängig vom Aufbau der externen Datei und der Unterstützung des Betriebssystems, während des Programmablaufs geändert werden.


Gemeinsame Dateibenutzung

Durch die Definition von Ada ist nicht vorgegeben, ob auf eine externe Datei über mehrere Dateiobjekte zugegriffen werden kann. Wenn eine Implementierung den mehrfachen Zugriff unterstützt gelten folgende Bedingungen:
Operationen über ein Dateiobjekt beeinflussen nicht die aktuellen Spalten-, Zeilen- und Seitennummern der anderen Dateiobjekte, die auf die gleiche externe Datei zugreifen.
Die Standardein- und -ausgabedateien sind getrennte Dateien, somit hat ein Zugriff auf eine der Dateien keinen Zugriff auf die andere Datei. Es kann zwar die gleiche physische Datei verwendet werden, aber ein Schreibzugriff auf die Standardausgabe hat keinen Einfluß auf die Positionierung in der Standardeingabe.
Bei Stream-Dateien und Direktzugriffsdateien ist der aktuelle Index eine Eigenschaft des Dateiobjekts und wird nicht durch die Positionierung in einem anderen Dateiobjekt beeinflußt. Die aktuelle Größe hingegen ist eine Eigenschaft der externen Datei und betrifft alle Dateiobjekte, die auf diese Datei zugreifen. Wenn also beim Schreiben über ein Dateiobjekt ein Eintrag am Ende der Datei angehängt wird, ist dieser sofort für alle anderen Dateiobjekte zugreifbar.


 
zurück
 Index   Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.