Die interne Ein-/Ausgabe ermöglicht den Datentransport von einem Bereich des Arbeitsspeichers zu einem anderen, ohne Benutzung von E/A-Geräten oder externer Speichermedien und erlaubt gleichzeitig die Änderung der Darstellung, z.B. Umwandlung numerischer Daten in Zeichendaten und umgekehrt. Interne Ein-/Ausgabe wird nur mit formatgebundenen READ- und WRITE-Anweisungen vorgenommen und verwendet Variablen vom Typ CHARACTER als ,,interne Dateien``. Diese enthalten einen einzigen Datensatz; Positionierungs- und Statusanweisungen sind daher für interne Dateien sinnlos. Bei der Ausgabe werden die Daten der Formatangabe entsprechend in Zeichen umgewandelt (wie auch bei externen formatierten Dateien) und in der Zeichengröße gespeichert. Bei der Eingabe werden die Zeichen der internen Datei der Formatangabe entsprechend konvertiert und an die in der Eingabeliste stehenden Größen übergeben.
Beispiel:
CHARACTER (LEN=20) :: IntDat
INTEGER :: NR, Neu
IntDat = 'Dies sind 20 Zeichen'
READ (IntDat, 100) NR
WRITE (*,100) NR
100 FORMAT (10X, I2)
Neu = 99
WRITE (IntDat(11:12), 102) Neu
102 FORMAT (I2)
PRINT*, IntDat
erzeugt die Ausgabe
Spalten: 12345678901234567890
20
Dies sind 99 Zeichen