Dateneingabe meint ein Verfahren, einem laufenden Programm Daten zur Verfügung zu stellen.
Datenausgabe meint ein Verfahren, das Ergebnisse eines Programms lesbar macht oder dauerhaft speichert.
In Algol 60 waren zunächst keine Verfahren für die Dateneingabe und die Datenausgabe beschrieben. Diese Auslassung war kein Versehen, sondern dem Umstand geschuldet, dass die Dateneingabe und die Datenausgabe auf den Rechnern der 1950-er Jahre sehr unterschiedlich erfolgte. Standardisierte Verfahren für Eingabe und Ausgabe standen noch nicht zur Verfügung.
In späterer Zeit wurden zwei Vorschläge für die Vereinheitlichung der Eingabe und der Ausgabe gemacht:
Der einfachere, von einer Kommission der IFIP erarbeitete, Vorschlag umfasst Prozeduren für die Eingabe und die Ausgabe einzelner Werte, die Ausgabe von Feldern sowie für die Ausgabe von Zeichenreihen.
IFIP Workgroup 2.1 Report on Input-Output Procedures for ALgol 60 Num. Math. Vol. 6, p. 454, Communications of the ACM, Vol. 7, October, 1964 p. 628-630 Digitalisat
Der aufwändigere Vorschlag von Donald Knuth enthält Ausgabeprozeduren, die Abbildungszeichen für die Datenformatierung vorsehen.
Donald Knuth: A Proposal For Input-Output Conventions In ALGOL 60 Communications of the ACM Vol. 7, No. 5, May, 1964, pp. 273-283 Digitalisat
Modified Report on theAlgorithmic Language Alogl 60 Appendix 2 - The Environmental Block enthält die Definitionen jener Ein- und Ausgabeprozeduren, die im MARST-Compiler und im IBM-Compiler realisiert sind.
Sowohl der marst-Compiler als auch der frei verfügbare IBM-Compiler für die Systeme IBM/360, IBM/370 realisieren nur den einfacheren Vorschlag der IFIP, der keine Hilfsmittel für die Datenaufbereitung vorsieht.
Ein- und Ausgabeprozeduren
ininteger(<kanal-nro>, <integer variable>) | Einlesen einer ganzen Zahl |
inreal(<kanal-nro>, <real variable>) | Einlesen einer Gleitkommazahl |
outinteger(<kanal-nro>, <integer ausdruck>) | Ausgabe einer ganzen Zahl in die laufende Ausgabezeile |
outreal(<kanal-nro>, <real ausdruck>) | Ausgabe einer Gleitkommazahl in die laufende Ausgabezeile |
inarray(<kanal-nro>, <reelle feldvariable>) | Einlesen der Elemente eines Feldes reeller Zahlen |
outarray(<kanal-nro>, <reelle feldvariable>) | Ausgeben der Elemente eines Feldes reeller Zahlen |
Der Standardkanal für die Dateneingabe hat die Kanalnummer 0, der Standardkanal für die Datenausgabe die Kanalnummer 1.