FlagShip ist eine objektorientierte und prozedurale Programmiersprache, basierend auf xBase, dessen Quellcodes der Compiler ebenfalls übersetzen kann. FlagShip ist als 32- oder 64-Bit-Version für die Betriebssysteme Linux, Unix und Windows verfügbar.
Geschichte
Die erste FlagShip-Version hat multisoft Datentechnik GmbH im Jahre 1992 eingeführt, um Clipper, dBASE III+, FoxBASE, FoxPro und andere Anwendungen auf unterschiedliche Unix-Betriebssysteme, zum Beispiel SCO Unix, AIX, Solaris, HP-UX und Sinix zu portieren. 1995 erschien auch eine Linux-Portierung. Im Jahre 2002 wurde Visual FlagShip (abgekürzt als VFS) für Linux veröffentlicht, ab 2004 ist er auch für die 32/64-Bit-Windows-Betriebssysteme verfügbar (Windows NT, 2000, XP, Vista, 7 und Server 2008).
Programmierung
FlagShip ist ein Programmier- und Entwicklungswerkzeug, das neben professionellen Anwendern auch von erfahrenen Privatanwendern, die ein Datenbankprogramm mit wenig Aufwand erstellen wollen, genutzt wird. Durch die volle Clipper-Kompatibilität ist FlagShip auch geeignet, vorhandene DOS-Anwendungen auf Unix, Linux oder Windows-Betriebssysteme zu portieren.
Visual FlagShip erstellt vollautomatisch aus dem gleichen Quelltext ein GUI-orientiertes oder textuelles Programm. Der Ausführungsmodus (GUI, textuell oder stream für Web) wird bei einer heterogenen Applikation automatisch durch die Umgebung bestimmt, bzw. kann durch Eingabeparameter bei der Kompilierung oder Programmausführung vorgegeben werden.
Folgender Beispielprogrammcode etwa ergibt nach Kompilierung die abgebildeten Programme im GUI- bzw. Textmodus.
USE address ALIAS adr SHARED NEW SET COLOR TO "W+/B,GR+/R,W/B,W/B,GR+/BG" SET GUICOLOR OFF cls @ 1, 0 SAY "Id No. " GET adr->IdNum PICT "999999" VALID IdNum > 0 @ 3, 0 SAY "Company" GET adr->Company @ 3,35 SAY "Branch" GET adr->Branch WHEN !empty(adr->Company) @ 4, 0 SAY "Name " GET adr->Name VALID !empty(adr->Name) @ 4,35 SAY "First " GET adr->First @ 6, 0 SAY "Country" GET adr->Country PICTURE "!" + repli("x",24) @ 8, 0 SAY "Zip " GET adr->Zip PICT "@!" VALID !empty(adr->Zip) @ 9, 0 SAY "City " GET adr->City @ 10, 0 SAY "Street " GET adr->Street @ 6,35,11.4,47 GET adr->Type RADIOGROUP {"Male","Female","Company","None"} @ 7,50 GET adr->Interest CHECKBOX CAPTION "Interested party" @ 8,50 GET adr->Customer CHECKBOX CAPTION "Customer" @ 9,50 GET adr->Reseller CHECKBOX CAPTION "Reseller" @ 10,50 GET adr->Distrib CHECKBOX CAPTION "Distributor" READ