# QuickBASIC

Microsoft QuickBASIC ist eine BASIC-Entwicklungsumgebung für MS-DOS, Mac OS und OS/2.
QuickBASIC ermöglicht das Kompilieren von Basic-Code in ausführbare Dateien sowie in Module und Bibliotheken. Die letzte erschienene Version ist QuickBASIC Extended 7.1 PDS (Professional Development System), die unter anderem mit Unterstützung für das ISAM-Dateiformat und einer verbesserten Speicherverwaltung ausgeliefert wird. QBasic, welches mit MS-DOS ab Version 5 mitgeliefert war, basierte auf QuickBASIC 4.5.
Des Weiteren erschien 1988 mit Microsoft QuickBASIC 1.00 auch eine Version für den Apple Macintosh.

## Geschichte
### DOS

Die 1985 erschienene erste Version des QuickBASIC-Compilers enthielt noch keine integrierte Entwicklungsumgebung, diese wurde mit der Version 2 mitgeliefert. Es unterstützte EGA-Grafikkarten. Die Version 3 kam mit zwei EXE-Dateien, QB.EXE und QB87.EXE. Letztere unterstütze den mathematischen Coprozessor. Mit QuickBASIC 3 wurden neue Kontrollstrukturen eingeführt, SELECT CASE, DO … LOOP, dazu wurden Konstanten (CONST) unterstützt. Die IDE wurde um einen Debugger erweitert, mit der das Setzen von Breakpoints und eine Variablen-Inspektion möglich war. Die IDE der 1987 ausgelieferten Version 4 konnte Syntaxfehler während des Bearbeitens erkennen und enthielt einen ausgebauten Debugger und eine neue Onlinehilfe. Der Compiler ermöglicht via CALL- bzw. CALLS-Anweisung den Aufruf von Funktionen aus statischen Bibliotheken, sofern diese zuvor mit DECLARE und der korrekten Aufrufkonvention deklariert wurden. Diese können auch in einer anderen Hochsprache (z. B. C++) entwickelt sein. Die letzte Version, 4.5 enthielt eine komplette Befehlsreferenz, die mit der kontextsensitiven Hilfe aufgerufen werden konnte.
QuickBASIC wurde durch BASIC PDS 7 und 7.1 ergänzt, welches parallel zu QuickBASIC 4.5 vermarktet wurde. Die IDE aus QuickBASIC wurde bei 7.1 weiterverwendet. Die darauffolgende und letzte für DOS erschienene Basic-Version seitens Microsoft war Visual Basic für DOS 1.0, welches beide Produktlinien ablöste. QuickBASIC-Programme laufen auf diesen neueren Versionen.

### Macintosh

QuickBASIC für den Apple Macintosh bündelte den Basic-3.0-Interpreter und den Basic-1.0-Compiler, welche vorher separat verkauft worden waren. Unterstützt wurden die Betriebssystemversion von System 4.1 bis System 6, mit dem Update auf 1.00e dann auch System 7. Allerdings war es nur auf Macintoshs mit den Motorola-Prozessoren 68000 und 68020 lauffähig. Hierbei musste die 32-Bit-Adressierung deaktiviert werden, was auf Maschinen mit dem 68040 nicht mehr möglich war.

## Funktionalitäten

Einige weitere Funktionalitäten heben QuickBASIC von anderen Basic-Distributionen ab:
* Durch eine maus- und menügesteuerte Oberfläche lässt sich der Quelltext komfortabel bearbeiten.
* In die Entwicklungsumgebung ist eine Online-Dokumentation aller Funktionen integriert.
* Kontrollstrukturen wie DO und SELECT machen Sprunganweisungen mit GOTO weitgehend überflüssig.
* QuickBASIC unterstützt Unterprogramme. Es wird unterschieden zwischen Unterprogrammen mit Rückgabewert (Funktionen) und solchen ohne Rückgabewert (Prozeduren). Unterprogramme werden in separaten Fenstern bearbeitet, so dass ein übersichtlicher Programmaufbau möglich ist. Besonders durch diese Unterstützung der prozeduralen Programmierung entfällt die Notwendigkeit, mit Zeilennummern als Labels und vielen GOSUB-Anweisungen zu arbeiten.

## Kompatibilität

QuickBASIC war bis von einigen Ausnahmen abgesehen weitgehend kompatibel zu GW-BASIC. QBasic-Programme laufen auch auf QuickBASIC 4.5. QuickBASIC-Programme laufen grundsätzlich auch unter Visual Basic für MS-DOS 1.00.
Für die Unterstützung von Hercules-Grafikkarten musste unter QuickBASIC 4.5 das TSR-Programm msherc.com im Voraus gestartet sein.

## Microsoft BASIC Professional Development System

Die letzte Version von Microsoft QuickBASIC wurde 1990 unter dem Namen Microsoft BASIC Professional Development System (PDS) 7.1 veröffentlicht. Die folgenden Funktionen wurden neu hinzugefügt oder gegenüber früheren Versionen verbessert:
* Erweiterung der Entwicklungsumgebung Programmer’s WorkBench (PWB) und des Debuggers. Die PWB-Entwicklungsumgebung ermöglicht die Kombination von Programmfragmenten, die in unterschiedlichen Programmiersprachen entwickelt wurden (Mixed-Language Programming). Neben QuickBASIC werden die Programmiersprachen Microsoft Macro Assembler (MASM), Microsoft C/C++, FORTRAN und COBOL unterstützt.
* Diverse Verbesserungen des Compilers und dem Speichermanagement.
* Index Sequential Access Method (ISAM) wird auch unter OS/2 vollständig unterstützt.
* Mit der Anweisung REDIM PRESERVE können Arrays neu dimensioniert werden, ohne das bestehende Einträge verloren gehen.
* Parameter von Funktionen und Prozeduren können mit dem Schlüsselwort BYVAL als Wertparameter (Call By Value) übergeben werden. Zuvor wurden sie stets als Referenzparameter (Call By Reference) übergeben.
* Neue Funktionen zur Dateiverwaltung: DIR$, CURDIR$ und CHDRIVE.
* Neuer Datentyp Currency.
* Fehlerbehandlung auf Prozedur-Ebene mit der Anweisung ON LOCAL ERROR. Früher fand sie stets auf Modul-Ebene statt. Eine lokale Fehlerbehandlung überschreibt die Fehlerbehandlung auf Modul-Ebene.
* Unterstützung von statischen Arrays in Strukturen.
* Verbesserte Fehlerbehandlung bei der Kommunikation mit Geräten über die RS-232-Schnittstellen (COM-Ports): ERDEV und ERDEV$.
* Neue Bibliotheken für Datumsberechnungen, Matrix-Arithmetik und Finanzmathematik.
* Bibliotheken für Grafiken und rudimentäre zeichenorientierte Benutzerschnittstellen (TUI).

## QuickBASIC heute

Nach der Einführung von Visual Basic wurde QuickBASIC nicht mehr weiterentwickelt. QuickBASIC fehlt die Unterstützung für viele Möglichkeiten moderner Betriebssysteme, wie zum Beispiel nebenläufige Prozesse, hohe Bildschirmauflösungen im Grafikmodus oder das automatische Erstellen von Dialogfenstern. Letzteres wurde für den Textmodus von MS-DOS mit Visual Basic für MS-DOS eingeführt.
Trotzdem wurde QuickBASIC wie auch QBasic noch lange Zeit verwendet, und zahlreiche private Webseiten beschäftigten sich mit dem Thema. Dies war vor allem auf die leichte Erlernbarkeit und die große Verbreitung in der Vergangenheit zurückzuführen. Mittlerweile gibt es eine Menge BASIC-Dialekte, auf die viele der ehemaligen QuickBASIC-Programmierer umgestiegen sind. Durch die fehlende Unterstützung MS-DOS-basierter Programme unter 64-Bit-Betriebssystemen entfiel auch die Möglichkeit, QuickBASIC-Programme unter diesen Betriebssystemen ohne Emulator auszuführen, und das Interesse an QuickBASIC nahm ab.
QuickBASIC sowie QBasic konnten in der Virtual DOS Machine, die in 32-Bit-Betriebssystemen der Windows-NT-Familie enthalten war, sowie heute noch in dem freien DOS-Emulator DOSBox und in virtuellen Maschinen, in denen auch MS-DOS ausgeführt werden kann, ausgeführt werden.
Darüber hinaus gibt es einen quelloffenen 32-Bit-Compiler namens FreeBASIC, der auf QuickBASIC aufbaut, und insbesondere mit der Compileroption ("-lang qb") auch die meisten QuickBASIC oder QBasic Programme kompiliert.

### QB64

2007 erschien die freie Software QB64 von Rob Galleon, das eine Portierung von QuickBASIC für 64-Bit-Betriebssysteme darstellt. QB64 übersetzt die in QuickBASIC verfassten Quelltexte nach C++ und erstellt daraus ausführbare Programme, die auf 32- und 64-Bit-Betriebssystemen lauffähig sind. Im Gegensatz zu anderen freien BASIC-Versionen führt QB64 fast alle Programme, die für QuickBASIC 4.5, QBasic oder GW-BASIC geschrieben wurden, ohne weitere Anpassungen aus. QBX-Dateien von Basic PDS werden nicht unterstützt. Hinzu kommen umfangreiche Erweiterungen der ursprünglichen Sprache, um moderne Betriebssystemfunktionen zu unterstützen, beispielsweise ein Netzwerk-Stack, Grafikfunktionen bis 32-Bit-Farbtiefe und Unterstützung der Zwischenablage, sowie Unterstützung für OpenGL. QB64 wird auch in Versionen für Linux und Mac OS X veröffentlicht. Da das Programm quelloffen ist, kann der Quelltext von QB64 auch für andere Betriebssysteme kompiliert werden.