-------------------------------------------------------------------------- Software-Info zum Konverter GFA- nach QuickBasic -------------------------------------------------------------------------- Columbus Soft Kinzigweg 1 64297 Darmstadt Tel/Fax: 06151/596875 Die šbertragung von GFA-Programmen auf den PC ist gewiž kein Thema fr vierfarbige Hochglanzprospekte mit vollmundige Versprechungen. Das Programm, welches mit einem Kuž den 'GFA-Frosch' in einen 'PC-K”nig' verwandelt, wird es mit Sicherheit nicht geben. Wer Entt„uschungen und Fehlinvestitionen vermeiden will, ist gut beraten sich zuvor genaue Informationen einzuholen um sich mit den Vor- und Nachteilen der verschiedenen M”glichkeiten vertraut zu machen. In diesem Sinne soll das vorliegende Software-Info Ihrer Orientierung dienen. Zun„chst werden die grunds„tzlichen M”glichkeiten der PC-šbertragung vorgestellt und dargelegt, welche Erfahrungen und šberlegungen zur Entwicklung des QuickBasic-Konverters gefhrt haben. Im zweiten Teil des Infos werden Sie mit den M”glichkeiten und Grenzen des QuickBasic-Konverters bekannt gemacht und erhalten einen detaillierten Einblick in die Arbeitsweise. Auf diese Weise k”nnen Sie sich ein Bild von machen und selbst entscheiden, ob der QuickBasic-Konverter fr Sie das geeignete Hilfsmittel ist. ======================== (A) Zur PC-šbertragung ======================== Vor einigen Jahren stand an der TH Darmstadt die Aufgabe an, ein umfangreiches wissenschaftliches Programmpaket, welches vollst„ndig in GFA-Basic geschrieben war, auf den PC zu bertragen. Auf diese Weise sollte es einem wesentlich gr”žeren Kreis von Studenten und Anwendern zug„nglich gemacht werden. Bei der šberlegung, wie das am besten zu bewerkstelligen w„re, waren die folgenden Eckdaten zu beachten: ++ Die Programme werden st„ndig gewartet und weiterentwickelt. ++ Das GFA-Basic hat sich fr die Programmierung auf dem Atari bestens bew„hrt und sollte m”glichst weiter verwendet werden k”nnen. ++ Ein Umstieg auf eine andere Sprache war jedoch nicht auszuschliežen. Die PC-Version des GFA-BASIC war damals noch nicht auf dem Markt. Dafr wurde von dieser Firma ein C-Konverter angeboten. -------------------- šbertragung nach C -------------------- Da die Sprache C dank des eingebauten Pr„prozessors pr„destiniert ist fr eine parallele Entwicklung auf verschiedenen Systemen, schien der Umstieg auf diese Sprache zusammen mit diesem Konverter die bequemste L”sung des Problems zu sein. Leider erwies sich diese Annahme schnell als Trugschluž. In den Konvertierungsprodukten wurde n„mlich folgende prinzipielle Problematik deutlich: - ein vollst„ndig lauff„higes Konvertierungsprodukt kann nur dadurch erzeugt werden, daž auf eine umfangreiche C-Funktionsbibliothek zurckgegriffen wird. Der gr”žte Teil der Basic-Befehle wird dann durch eine simulierende C-Funktion ersetzt. Die Einfachheit der Sprache C bleibt dabei auf der Strecke. Die šbersetzung ist schwer zu durchschauen und die unweigerlich auftretenden Fehler gerade fr den Basic-Programmierer kaum aufzuspren. - Ein Einstieg in die Sprache C ist hiermit keinesfalls zu erreichen. Kein C-Programmierer wrde je einen derart aufgeblasenen und umst„ndlichen Quelltext erzeugen. Ad„quate Programme in C sehen v”llig anders aus. Die spezifischen Vorteile der Sprache C werden durch ein konvertiertes Basic-Programm niemals sichtbar. Ein Beispiel fr diese Problematik ist die Umwandlung der BASIC-Zeile DIM a$(20) welche in folgenden Befehl umgesetzt wird: aS_f.p.S2 = (char **)B_dim(6,&aS_f,C_HAR,(long)1,(long)20) - Abgesehen von den prinzipiellen Problemen erwies sich der Konverter wegen der st„ndigen Abstrze als praktisch unbrauchbar. Die grunds„tzlichen Nachteile dieses Weges, die auch bei einem ausgereifterem Produkt nicht anders w„ren, liežen eine Fortsetzung dieser Versuche nicht sinnvoll erscheinen. ------------------------------- Ein 'ad„quater' C-šbersetzer? ------------------------------- Die geschilderten Nachteile liežen sich mit einem Konverter beseitigen, welcher einen 'ad„quaten' C-Quelltext erzeugt, d.h. einen C-Code, wie ihn ein C-Programmierer zu dem gegebenen Problem formulieren wrde. Wegen der tiefgreifenden strukturellen Unterschiede von Basic und C (Variablenorganisation, Speicherverwaltung, Stringbehandlung,...) ”nnen auf diese Weise aber praktisch keine lauff„higen Programme produziert werden, sondern es w„ren noch umfangreiche manuelle Nacharbeiten notwendig. Sinnvoll ist diese Art der Konvertierung nur dann, wenn das Quellprogramm ein einziges Mal bertragen werden soll, um dann in C weiterentwickelt zu werden. Vom Arbeitsaufwand her k„me es allerdings einer Neuprogrammierung nahe. Da ein kommerzieller šbersetzer dieser Art nicht existierte, wurde auch dieser Weg nicht weiter verfolgt. ---------------------- šbertragung in BASIC ---------------------- Statt dessen wurde als n„chstes die šbertragungsm”glichkeit in einen der PC-Basic-Dialekte (Turbo, GW, Power, Quick,..) untersucht. Im Vergleich zur C-Konvertierung sind hierbei folgende Vorteile direkt ersichtlich: - Fast alle Programmzeilen k”nnen 1:1 bersetzt werden (d.h. einer Zeile im Quelltext entspricht eine Zeile im Zieltext mit identischer Funktion und minimalen Abweichungen in der Syntax) - Die wenigen Befehle, die es im Ziel-Dialekt nicht gibt, werden mit einfachen Basic-Prozeduren simuliert. Es gibt keine 'black boxes', die dem Programmierer den Durchblick erschweren. - Es muž keine v”llig neue Sprache gelernt werden, so daž das Bearbeiten des bersetzten Textes keine besonderen Schwierigkeiten ergibt. - Beim Austesten des Konvertierungsproduktes muž auf den gewohnten Interpreter-Komfort nicht verzichtet werden. ------------------ Welcher Dialekt? ------------------ Bei der Auswahl des am meisten geeigneten Basic-Dialektes zeigte sich das QuickBasic von Microsoft als beste L”sung was Sprachumfang und Žhnlichkeit angeht. Mittlerweile ist im Lieferumfang des DOS >5.0 das QBasic enthalten, welches bis auf wenige Einschr„nkungen fast identisch zum QuickBasic ist. Hiermit ist ein 'kostenloser Einstieg' m”glich. Als h”herwertige (und entsprechend teurere) Alternative bietet sich das Basic PDS 7.1 (ebenfalls von Micrsosoft) an. Die drei Dialekte sind syntax-kompatibel. Der vergleichsweise hohe Preis der Profi-Version PDS 7.1 (ca.750DM) liegt einerseits in einer umfangreichen mitgelieferten Bibliothek begrndet und zum andern in der wesentlichen besseren Speicherausnutzung, mit der sich die 640kB-Begrenzung nicht so schnell unangenehm bemerkbar macht. ----------------------- šbertragung per Hand? ----------------------- Ein erster Vergleich von GFA- und Quickbasic zeigt: - Eine direkte šbernahme des Quelltextes (Speichern als ASCII-Datei und 'Mergen') ist nicht m”glich. - Eine Anpassung von Hand ist ebenfalls fr keinen der Dialekte sinnvoll, da es kaum eine Zeile des GFA-Basic gibt, die nicht ge„ndert werden mžte. Dies k„me einer Neuprogrammierung gleich. ---------------------------------------- Anforderungen an einen BASIC-Konverter ---------------------------------------- Es mužte also ein Konverter entwickelt werden, der alle notwendigen Žnderungen automatisch durchfhrt. - Die šbertragung muž vollautomatisch und in einem Programmlauf erfolgen. - Manuelle Nacharbeiten sollen nicht notwendig sein. - Der Benutzer muž die šbertragung seinen Bedrfnissen anpassen k”nnen, damit die Verwendung von Toolboxen m”glich ist. - Spezielle PC-Probleme (Modulgr”žen-Begrenzung) mssen ebenfalls automatisch gel”st werden. Der im weiteren vorgestellte Konverter ist unter diesen Gesichtspunkten entwickelt worden. ================================================ (B) Der QuickBasic-Konverter von Columbus Soft ================================================ Mit dem QuickBasic-Konverter sind Sie in der Lage Ihre GFA-Basic- Quelltexte in QuickBasic zu bertragen. Ganz ohne Vorarbeiten geht es natrlich nicht. Lediglich bei GFA-Programmen, die sich eng am Kern der BASIC-Sprache halten ist eine sofortige šbersetzung durchfhrbar. Bei allen anderen Programmen ist eine Vorbereitung des Quelltextes n”tig. Aber: Dieses 'Pr„parieren' muž nur ein einziges Mal durchgefhrt werden. Jeder weitere šbersetzungslauf funktioniert dann auf Anhieb. Der Umfang der Vorbereitung ist natrlich von der Art des Programms abh„ngig: Je mehr Sie systemspezifische Elemente und Befehle verwendet haben desto gr”žer wird der Aufwand. Damit Sie einen genaue Vorstellung davon bekommen, was der Konverter leistet und was fr Sie zu tun bleibt, ist im weiteren die Arbeitsweise detailliert erl„utert. Sie beruht zum einen auf der Strukturanalyse des zu bertragenden Programms und damit verbundenen Žnderungen und zum anderen auf Textmustererkennung und -ersetzungen. ------------------- Strukturanpassung ------------------- In den Bereich der Strukturumwandlung fallen u.a. folgende Žnderungen: - Alle Bezeichner (Variablennamen, Prozedurnamen, Labels,...) werden auf Gltigkeit berprft (Underscores, reservierte Worte, Doppeldeutigkeiten) und gegebenenfalls automatisch ge„ndert. - Die Variablen-Postfixe werden ge„ndert (z.B. Vertauschen von % und &, boolsche Variablen in Integer umwandeln,...) - Alle globalen Variablen werden in den Unterprogrammen deklariert, die LOCAL-Deklarationen dagegen entfernt. - Definitionen von Zeilenfunktionen werden aus Unterprogrammen in das Hauptprogramm verschoben. - Kommentare werden von den Zeilenenden abgeh„ngt (oder auch ganz gel”scht). - Zahlenkonstanten werden umgewandelt. - Unterprogrammaufrufe mit Parametern werden umgewandelt (Der VAR-Befehl in den Prozedurdefinitionen des GFA-Basic existiert nicht. Statt dessen mssen bei jedem Aufruf die betreffenden Parameter geklammert werden). --------------------- Textmusterersetzung --------------------- Der Konverter besitzt einen Textmuster-Ersetzer, mit dem alle weiteren Žnderungen vorgenommen werden k”nnen. Hiermit wird jeder Befehl, der in den beiden Dialekten nicht identisch ist, in einen „quivalenten Befehl oder Ausdruck umgewandelt. Die Ersetzungskommandos sind nicht fest eingebaut, sondern befinden sich in ASCII-Dateien, so daž sie vom Benutzer beliebig editiert und ver„ndert werden k”nnen. Dieses offene Konzept erm”glicht zum Beispiel beliebige Toolboxen zu verwenden und einzubinden. --------------------------------- Einbinden von Ersatz-Prozeduren --------------------------------- Manche Befehle und Funktionen des GFA-Basic lassen sich durch QuickBasic-Prozeduren nachbilden. Diese k”nnen in beliebigen ASCII-Dateien stehen und werden bei Bedarf vom Konverter dem šbersetzten Quelltext angefgt. ------------------ Der Pr„prozessor ------------------ Mit den Pr„prozessor-Befehlen lassen sich unabh„ngig von den vorher erl„uterten Žnderungen beliebige Manipulationen vom Benutzer vornehmen. So k”nnen Programmzeilen oder ganze Teile eliminiert oder eingefgt werden. Dies ist z.B. fr alle Programmteile n”tig, fr die in der anderen Sprache kein Pendant existiert. Als einfachstes Beispiel hierfr sei der SCREEN-Befehl genannt, der in GFA-Basic nicht existiert aber in QuickBasic vor allen Graphik-Ausgaben stehen muž. ------------------ Weitere Aufgaben ------------------ QuickBasic-Programme mssen ab einer bestimmten Gr”že in Module zerlegt werden. Auch diese Aufgabe erledigt der Konverter fr Sie und erstellt darber hinaus eine INCLUDE-Datei, in welcher alle globalen Variablen, sowie alle Prozeduren und Funktionen deklariert werden. Aužerdem wird eine MAKE-Datei (zum gleichzeitigen Laden aller Module in den Interpreter) und eine Batchdatei (zum automatischen Compilieren und Linken der Module) angelegt. ------------------------ Sonstige Eigenschaften ------------------------ Der Konverter ist 'selbstoptimierend', so daž ein zweiter und dritter šbersetzungsvorgang eines Programms in wesentlich krzerer Zeit abl„uft. ---------------------------------- Wofr der Konverter sinnvoll ist ---------------------------------- - Fr die parallele Entwicklung unter TOS und DOS. Denn dank des Pr„prozessors reicht es aus, den Quelltext ein einziges Mal zu pr„parieren. Die weitere Entwicklung kann auf dem Atari stattfinden. Jede neue Version wird auf Knopfdruck bersetzt. Sie verwalten also weiterhin nur einen einzigen Programmtext. - Fr die einmalige šbertragung von mittleren bis grožen Programmen. Denn selbst wenn Ihr Programm in einigen Teilen nicht kompatibel (automatisch bersetzbar) ist, so wird vom Konverter doch fr den grožen Rest ein syntaktisch fehlerloser Code erzeugt, der von Hand nur in tagelanger Tipparbeit erzeugt werden k”nnte. Rechnen Sie selbst aus, wie lange Sie fr das Umschreiben ben”tigen wrden und wieviel Sie somit durch den Konverter sparen. - Fr den Einsteig/Umstieg nach QuickBasic (QBasic,Microsoft Basic). Denn das Handbuch zum Konverter fhrt Sie nicht nur in die Arbeitsweise des Programms ein sondern erl„utert detailliert und anhand von Beispielen die Unterschiede der beiden Dialekte und was beim Umstieg zu beachten ist. ----------------------------------------- Wieviel und was kann bertragen werden? ----------------------------------------- Von den GFA-Befehlen und Funktionen sind etwa die H„lfte in QuickBasic identisch vorhanden oder durch „quivalente Ausdrcke ersetzbar. Weitere 25% lassen sich durch Unterprogramme ersetzen. Fr 10% muž auf Toolboxen zurckgegriffen werden. Die restlichen sind entweder nicht sinnvoll oder nicht bertragbar. Das Handbuch enth„lt eine alphabetische Referenz aller GFA-Befehle, aus welcher Sie fr jeden einzelnen ersehen k”nnen, ob und wie er bertragen werden kann. Men-Befehle k”nnen unter Verwendung externer Toolboxen (nicht im Lieferumfang) realisiert werden. Ebenso Alert- und Fileselectboxen. Programme, in denen Resource-Dateien Verwendung finden, k”nnen nur dadurch bertragen werden, daž die entsprechenden Prozeduren zum Dialoghandling vollst„ndig 'ausgetauscht' werden. ----------- Preis ----------- Der QuickBasic-Konverter l„uft auf allen Rechnern der ST(E)/TT-Serie in s/w und Farbe. Sein Preis betr„gt 128,-DM.