Clipper (Programmiersprache)
# Clipper (Programmiersprache)

Clipper ist eine Programmiersprache und ein Compiler. Die Programmiersprache wird synonym auch als xBase bezeichnet, nicht zu verwechseln mit Produkt Xbase++.

## Geschichte

Die erste Clipper-Version wurde im Winter 1985 von der Firma Nantucket herausgebracht. Sie unterstützte in der Anfangszeit hauptsächlich die dBASE-Programmiersprache. Dieses begründete sich darin, dass die Entwickler von Clipper ursprünglich Angestellte der Firma Ashton-Tate waren, die das überaus erfolgreiche Datenbankprogramm dBASE entwickelte, mit der bekanntesten und erfolgreichsten Version III Plus. Diese Entwickler hatten erfolglos einen Compiler gefordert, der den Code schützt und unveränderlich macht.

Die erstellten Anwendungen waren eigenständig, und es wurde nicht mehr jeweils für jeden Arbeitsplatz eine dBASE-Lizenz benötigt. Nachdem ursprünglich der reine dBASE-Sprachumfang unterstützt wurde, entwickelte der Compiler schnell ein eigenes Leben in der Entwicklung, und es wurden Alleinstellungsmerkmale hinzugefügt. Die bekannteste Version hieß "Sommer 87". Im weiteren Entwicklungsverlauf wurde die Clipper-Sprache objektorientiert (jedoch nur mit vier Klassen und ohne die Möglichkeit, eigene Klassen zu erzeugen) und lehnte sich der Sprache C an. Die bekanntesten Versionen hier wurden 5.01 und 5.2, während der letzten Version 5.3 kein großer Erfolg beschieden wurde. Der Hauptgrund hierfür lag darin, dass inzwischen die DOS-Ära beendet wurde und Windows zum beherrschenden Betriebssystem wurde. Clipper ist jedoch rein zeichenorientiert. In Version 5.3 wurde der Versuch unternommen, graphische Strukturen einzubinden. Diese basierten jedoch noch immer auf MS-DOS, nicht auf Windows.

Die Firma Nantucket wurde 1992 von Computer Associates aufgekauft. In der Folgezeit wurde Clipper weiterentwickelt und zu einem allgemeinen Datenbank-Entwicklungswerkzeug. Clipper ist eine Hochsprache, die mit anderen Programmiersprachen wie BASIC, Pascal und C vergleichbar ist. Zusätzlich hat Computer Associates ab 1994 Clipper mit dem neuen eigenständigen Produkt Visual Objects von einer prozeduralen Sprache zu einer objektorientierten Sprache weiterentwickelt. Visual Objects blieb jedoch ein Nischenprodukt, das später unter dem Namen "Vulcan" weitergeführt wurde.

Der erste Versuch, Clipper-Programme nach Windows zu portieren, wurde von Alaska Software unternommen, einem deutschen Unternehmen. Das Produkt Xbase++ erlaubt es, vorhandene Clipper-Programme bis einschließlich Version 5.2 sofort in ein reines 32-Bit-Programm zu übersetzen. Der Sprachumfang wurde stark erweitert, sodass neben dem reinen Clipper-Funktionsumfang weitere Funktionen etwa für graphische Ausgaben und ActiveX hinzugefügt wurden. Zusätzlich stehen die Funktionen aus den Clipper-Tools zur Verfügung.

Die Firma Multisoft lieferte seit 1992 die kompatible Entwicklungsumgebung FlagShip, die Clipper-Anwendungen (Sommer'87 bis 5.3) auf Linux, Unix oder MS-Windows übersetzt, und diese 32-Bit oder 64-Bit Programme sowohl textuell als auch in einer GUI-Umgebung ausführen kann.

Seit 1999 gibt es mit Harbour auch einen freien Compiler. Ende 2001 wurde dann das xHarbour-Projekt ins Leben gerufen.

Harbour erzeugt im Gegensatz zum Clipper-Compiler keine Objektdateien, sondern C Quellcode. Dieser kann mit verschiedenen C-Compilern kompiliert werden. Die ursprüngliche Harbourversion unterstützte genauso wie der Clipper-Compiler keine GUI, sondern nur Konsolenanwendungen.

Seit 2002 gibt es das freie Harbour MiniGUI (HMG) Programmpaket, das neben Harbour ein Windows API für eine Grafische Benutzeroberfläche, einen C-Compiler (MinGW) und eine IDE enthält. Aktuelle Version ist HMG 3.5 von 2017. Die aktuellste Entwicklung ist HMG extended.

## Beispiele in Clipper

Ein einfaches Hallo-Welt-Programm:

Eine einfache Datenbank-Eingabemaske:

### Makro Operator &

Eines der mächtigsten Werkzeuge und Besonderheit der Programmiersprache ist der Makro Operator (runtime compiler).

Hiermit lassen sich sämtliche im Programm eingebundenen Funktionen zur Laufzeit aufrufen.

