MS-DOS oder UCSD-Entscheidungshilfen für die Anwendungsprogrammierung:

Pseudo-Code erleichtert Software-Anpassung

09.08.1985

Nicht nur über einzelne Befehle oder Dienstprogramme, sondern fast alle Möglichkeiten, die die Betriebssysteme PC-DOS ( = MS-DOS) und UCSD in der Anwendungsprogrammierung bieten, schlüsseln Rainer Dapper* und Hartmut Krins* in ihrem Vergleich auf.

Das Dilemma ist immer das gleiche. Einerseits benötigt man ein Werkzeug, welches einfach in der Handhabung und dennoch leistungsfähig ist, andererseits kann vom Endanwender bei der täglichen Arbeit nicht erwartet werden, daß er sich Kenntnisse über das zugrunde liegende Betriebssystem aneignet, um seine Programme zu nutzen. Um die Leistungsfähigkeit eines Betriebssystems in dieser Richtung bewerten zu können, ist zumindest ein Bezugspunkt zu einem anderen Betriebssystem notwendig. Aus diesem Grunde sollen im folgenden die Möglichkeiten des UCSD-p-Betriebssystems an denen von PC-DOS beziehungsweise MS-DOS gemessen werden, wobei wir PC-DOS und MS-DOS als gleichwertig berichten.

Die Programmiersprache Pascal bietet sich als Vergleichskriterium besonders an, da sie eine der weitverbreitetsten Programmiersprachen auf den heutigen Mikrocomputern ist. Weiterhin ist das UCSD-p-System von Pascal kaum zu trennen; sie sind so eng verbunden, daß sie als eine Einheit zu betrachten sind.

Heute existieren trotz aller Standardisierungsbemühungen (ISO-Standard) eine ganze Reihe von Pascal-Dialekten wie:

* UCSD-Pascal von University of California at San Diego

* MS-Pascal von Microsoft

* MT + -Pascal von Digital Research

* Turbo-Pascal von Borland.

Dialog mehr nutzen

Das UCSD-System und UCSD-Pascal wurden an der Universität von San Diego/Kalifornien in dem Bestreben entwickelt, mit Pascal die Möglichkeiten der Dialogverarbeitung mehr als bisher zu nutzen. Diese Forderung stellte sich insbesondere aus der zunehmenden Verbreitung von Kleincomputern, mit denen die Rechnerleistung aus dem Rechenzentrum heraus direkt an den Arbeitsplatz gebracht wurde. Stapelverarbeitung war nicht mehr gefragt. Später wurden auch Fortran und Basic unter dem UCSD-System angeboten. Einige Hardwarehersteller wählten das UCSD-System oder Varianten davon zu ihrem Standardbetriebssystem, so zum Beispiel Apple. Auch das Macintosh-Operating-System basiert auf UCSD und die Hauptsprache vom Mac ist Pascal.

Mit Erscheinen des IBM PC auf dem Markt wurde neben dem von IBM favorisierten Betriebssystem PC-DOS ebenfalls eine Version des UCSD-Pascal für den IBM PC angeboten. Jedoch fördert IBM dieses Betriebssystem in keiner Weise und der Marktanteil des UCSD-p-Systems ist relativ gering (unter 10 Prozent aller PC-lnstallationen).

Mittlerweile existiert für den IBM PC eine zweite Version des UCSD-p-Systems, die sich hauptsächlich in ihrer Kompatibilität zu PC-DOS vom ursprünglichen System unterscheidet. Dies drückt sich bereits im Namen aus: DOS-hosted-UCSD-p-System.

Zunächst: Wofür steht das "p" in UCSD-p-System? Während andere Compiler in Verbindung mit einem Linker den Source eines Programmes direkt in einen lauffähigen Maschinencode übersetzen, ist die Philosophie des p-Systems eine andere. Da bisher Compiler maschinenabhängig sind, das heißt, Compiler sind auf einen ganz bestimmten Prozessor zugeschnitten (beispielsweise auf den 8088 von Intel im IBM), muß für jeden Prozessor ein neuer Compiler geschrieben werden.

Nicht im Maschinencode

UCSD-Pascal jedoch wird nicht in einen Maschinencode übersetzt, sondern in einen sogenannten Pseudo-Code (p-Code). Dieser Pseudo-Code ist auf eine virtuelle Maschine zugeschnitten. Der p-Code muß zur Laufzeit mit Hilfe eines p-Code-Interpreters in Maschinencode übersetzt werden. Der Nachteil liegt sofort auf der Hand.

Programme, die zur Laufzeit interpretiert werden müssen, sind immer langsamer als direkt in Maschinencode übersetzte Programme. Dies gilt insbesondere für rechenintensive Programme. Aus unserer Erfahrung treten jedoch bei kaufmännischen Anwendungen mehr Zugriffe auf Datenbestände als intensive Rechenoperationen auf, so daß dieser Nachteil hier nicht besonders ins Gewicht fällt.

Außerdem ist der p-Code sehr kompakt, da er ohne Laufzeit-Bibliothek gespeichert wird, so daß man sogar auf den 360-KB-Disketten des IBM relativ große Programme abspeichern kann. Die Laufzeitbibliothek wird erst zur Ausführungszeit dazugeladen.

Der Vorteil des p-Codes liegt in der Portabilität und der Schnelligkeit der Anpassung an neue Maschinen oder Prozessoren. Da der p-Code genormt ist, genügt für die Umstellung auf eine neue Maschine oder Prozessor nur ein neuer p-Code-Interpreter. Dieser ist jedoch wesentlich leichter und schneller zu erstellen als ein Compiler, der den Programmtext in Maschinensprache übersetzen muß.

Einheitliche Oberfläche

Das UCSD-p-System macht für den Anwender den Eindruck eines geschlossenen Systems mit einheitlicher Benutzeroberfläche. während unter PC-DOS die Entscheidung getroffen werden muß, welcher Editor, Compiler oder Assembler verwendet werden soll, erübrigt sich diese Entscheidung beim UCSD-p-System. Alle drei Programme gehören zum Lieferumfang. Das System verfügt über Bibliotheksroutinen, die unter anderem Grafik und Dateimanagement unterstützen.

Eine der Stärken des UCSD-Pascal ist die Arbeit mit langen Integerzahlen (bis 32 signifikante Dezimalstellen im Gegensatz zu 10 bei den meisten PC-DOS Pascal-Dialekten). Gerade für kaufmännische Anwendungen ist dies ein großer Vorteil. Es können eigene Bibliotheken erstellt werden, die mit einem leistungsfähigen Library-Manager einfach zu handhaben sind. Dieses in sich geschlossene System ermöglicht eine menügesteuerte Führung durch das gesamte Betriebssystem, da alle Schnittstellen eindeutig definiert sind. Dadurch ist dem Programmierer jedoch auch die Möglichkeit genommen, etwa einen anderen Editor einzusetzen.

Der Vorteil der einheitlichen Benutzeroberfläche wird von den Herstellern des UCSD-p-Systems ähnlich wie von den Herstellern von Turbo-Pascal genutzt. Sollte beispielsweise während der Compilation eines Programms ein Fehler entdeckt werden, kann der Programmierer sofort in den Editor wechseln und direkt an die Stelle geführt, welche die Fehlermeldung verursachte.

Sollte während der Laufzeit ein Fehler auftreten (Runtime-Error), so stürzt das System ebenfalls wie unter PC-DOS ab, jedoch erscheint eine Meldung am Monitor, die Ort und Art des aufgetretenen Fehlers angibt. Die Spezifikation des Fehlers erhält neben dem Programmsegment und der Prozedur auch noch die Byte-Nummer. In Verbindung mit einem ausführlichen Compilerlisting lassen sich hiermit aufgetretene Fehler relativ schnell finden. Der Debugger ist leistungsfähig, jedoch auf den p-Code abgestimmt.

Das UCSD-p-System benötigt und unterstützt 128 KB Hauptspeicher. Sollte der Rechner über mehr Speicher verfügen, kann der Rest als virtuelle Diskette genutzt werden. Weiterhin kann ein Teil des Hauptspeichers als Druckerspooler angelegt werden, so daß ein Druckvorgang auch im Hintergrund laufen kann.

Die Programmierung unter UCSD-Pascal ermöglicht eine Segmentierung der Prozeduren, vergleichbar mit Overlay-Strukturen unter anderen Pascal-Dialekten. Anders als bei solchen Overlay-Strukturen hat der Programmierer beim IBM PC jedoch nur wenig Einfluß auf die Speicherverwaltung der Segmente.

Zudem setzt die Segmentierung Erfahrung voraus, denn geht man mit der Programmgröße bis an die Kapazitätsgrenze des Hauptspeichers, so kann es in Einzelfällen zu nicht reproduzierbaren Programmabstürzen kommen, die auf eine fehlerhafte Segmentverwaltung des Systems im Grenzbereich schließen lassen.

Festplatten und Diskettenformate unter dem UCSD-p-System sind anders aufgebaut als unter PC-DOS, womit eine Inkompatibilität schon vorgeplant ist. Die Disketten können bis maximal 400 KB unter UCSD gegenüber 360 KB unter PC-DOS formatiert werden. Ein Teil oder die gesamte Festplatte des IBM PC kann zu einer UCSD Partition deklariert werden, womit dieser Teil aber der Kontrolle von PC-DOS entzogen ist.

Damit entfällt jedoch die Möglichkeit, von PC-DOS die UCSD-Partition auf Tape-Streamer zu sichern. Da in der Vergangenheit kaum ein Anbieter von Streamern eine Sicherungslösung für den UCSD-Bereich der Festplatte anbot, mußten alle Programme zur Sicherung der Datenbestände von Festplatte auf Diskette selbst geschrieben werden.

Zudem stellt das UCSD-p-System auch keine Dienstprogramme zur Verfügung, mit denen große Dateien auf mehrere Disketten aufgebrochen werden können. Hier liegt ein deutliches Manko von UCSD, denn PC-DOS stellt mit Backup und Restore entsprechende Utilities zur Verfügung.

Während unter PC-DOS die Speichermedien ohne Reorganisation vollgeschrieben werden können, ist dies bei dem UCSD-p-System nicht möglich. Unter PC-DOS werden die Dateien, wenn kein zusammenhängender Platz auf dem Speichermedium vorhanden ist, gestückelt abgelegt. Erst wenn das Speichermedium tatsächlich voll ist, erscheint eine diesbezügliche Fehlermeldung. Anders bei dem UCSD-p-System.

Dateien können nur in zusammenhängenden Bereichen gespeichert werden. So kann es vorkommen, daß der Gesamtplatz auf dem Speichermedium ausreicht, er jedoch nicht zusammenhängend ist, so daß die Datei wegen mangelnden Platzes nicht gespeichert werden kann. Das Betriebssystem bietet aus diesem Grunde die Möglichkeit, verstreute freie Teile des Speichermediums wieder zusammenzufügen ("Krunch").

Bei Datenbankanwendungen unter UCSD-p-System muß aus diesem Grund von vorneherein die Größe des zu belegenden Datenraums festgelegt werden, um ein späteres "krunchen" zu vermeiden. Als Beispiel sollen die Datenbanksysteme "System-B" oder Bense KG und "Adimens" von ADI gelten. Bei beiden Datenbanksystemen muß bei der Definition der Datenbankstruktur die Größe des Datenraumes festgelegt werden. Beide Datenbanksysteme besitzen außerdem eine Schnittstelle zum UCSD-Pascal.

Keine dynamische Verwaltung

Im Gegensatz zu Subdirectories unter PC-DOS kennt das UCSD-p-System Volumes. Diese Volumes lassen sich zwar ähnlich handhaben wie Subdirectories, jedoch muß wie bei allen Dateien unter UCSD beim Anlegen eine maximale Größe angegeben werden, also wieder keine dynamische Speicherverwaltung wie bei PC-DOS.

Da jedes Volume über seinen logischen Namen angesprochen werden kann, ermöglicht dies andererseits dem Programmierer eine Fehlerbehandlung, die den Endanwender vor einer falschen Diskettenbedienung schützt. Dieser Komfort kann unter PC-DOS nur simuliert werden. Weitere Schwierigkeiten treten auf, wenn unter UCSD-Pascal auf PC-DOS formatierte Daten zugegriffen werden soll. Es gibt hier sehr wenig Unterstützung von seiten des Betriebssystems. Dateien müssen in umständlicher Weise konvertiert werden. Andererseits kann von PC-DOS überhaupt nicht auf UCSD-Dateien zugegriffen werden.

Den Kornfort, den PC-DOS mit der Erstellung von Batch-Dateien bietet, vermißt man sofort beim UCSD-p-System. Die Möglichkeiten der Exec-Dateien sind bei weitem nicht so ausgefeilt. Dafür bietet das UCSD-p-System die Möglichkeit des sogenannten "System.Menu". Dies ist ein Programm, das bei Systemstart automatisch ausgeführt wird und das der Endanwender nicht in Richtung Betriebssystem verlassen kann. Er kann demnach nicht wie bei PC-DOS die Betriebssystemebene erreichen und an den Dateien "herumspielen".

Viele dieser Einschränkungen, die sich negativ bei dem UCSD-p-System bemerkbar machen, werden durch eine neuere Entwicklung aufgehoben. Das DOS-Hosted-UCSD-p-System arbeitet auf DOS-formatierten Speichermedien. Dabei wird das Betriebssystem dem ursprünglichen PC-DOS aufgepfropft. Die eingerichteten Volumes sind dann wieder unter PC-DOS wie DOS-Dateien manipulierbar und können somit wie DOS-Dateien abgespeichert werden. Unter dem ursprünglichen UCSD-p-System geschriebene Pascal-Programme müssen in einigen Fällen für das DOS-Hosted-System neu compiliert werden. Änderungen des Source-Codes sind nur in Ausnahmefällen nötig (etwa bei speziellen Funktionen zur Bildschirmsteuerung).

Für welches Betriebssystem soll man sich nun entscheiden? Dies kommt immer auf die Anforderungen des Gesamtprojektes an Handelt es sich bei dem Projekt um eine Insellösung, müssen die Daten des Projektes nicht oder nur in geringem Maße anderen Standardprodukten unter anderen Betriebssystemen verfügbar gemacht werden, so bietet sich durchaus das UCSD-p-System an. Für kleinere bis mittlere Datenbankanwendungen lohnt sich der Einsatz des UCSD-p-Systems, zumal dann als Werkzeug Datenbanksysteme wie System-B oder auch Adimens zur Verfügung stehen, die unter PC-DOS hinsichtlich Programmierkomfort, Flexibilität und Leistungsfähigkeit unserer Ansicht nach wenig Konkurrenten haben. Bei größeren Anwendungen in bezug auf Datenmenge oder Programmiergröße sowie die benötigten Schnittstellen nach "draußen" ist dagegen PC-DOS mit Datenbanksystemen wie Dataflex von Data Access deutlich im Vorteil. Dataflex verwendet in der Programmierschnittstelle MT + -Pascal.

So merkwürdig es klingt, der niedrige Verbreitungsgrad des UCSD-p-Systems hat für den Anwendungsprogrammierer seine Vorteile. Da der Endanwender im allgemeinen mit dem Kauf eines IBM-PC auch das Betriebssystem PC-DOS erwirbt, hat er hier die Möglichkeit, alle Dateien zu manipulieren (Stichwort: Erase *. *). Da helfen auch die besten Autoexec-Routinen nichts, denn sobald er das System mit der gekauften PC-DOS Version startet, kann er alle Funktionen des Betriebssystems benutzen. Anders beim UCSD-p-System: Da er im allgemeinen nicht über die Voll-, sondern lediglich über eine Runtime-Version verfügt, kommt er nicht unkontrolliert an die Datenbestände. Somit kann der Anwendungsprogrammierer geschlossene Systeme aufbauen, die der Endanwender nicht verlassen kann.

*Rainer Dapper ist Projektleiter bei der GVR Datensysteme GmbH, Düsseldorf, Dr. Hartmut Krins Leiter der Softwareabteilung des Unternehmens.