Posts mit dem Label Programmieren werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Programmieren werden angezeigt. Alle Posts anzeigen

Mittwoch, 8. September 2010

WDSibyl - Delphi Programmierung unter OS/2

Programmieren unter OS/2? Das man OS/2 Heute noch benutzt sollte doch eigentlich schon retro genug sein, aber jetzt auch noch neue Software für OS/2 schreiben? Nun, wem abgedreht noch nicht genug ist, der findet tatsächlich einige brauchbare Entwicklungsumgebungen für OS/2. WDSibly ist eine Delphi-Variante die sowohl unter Windows als auch unter OS/2 läuft, und den Compiler, Debugger, Editor und Source-Browser in einer brauchbaren IDE vereint. Wer noch (wie ich) in der Schule Pascal gelernt hat, wird schnell mit WDSibyl zurecht kommen. Delphi ist ein objekt-orientiertes Pascal, mit dem man schnell und elegant sowohl Kommandozeilen- als auch Desktop-Applikationen entwickeln kann.

WDSibyl ist Open-Source und kann unter http://www.wdsibyl.org/ heruntergeladen werden. Hierfür muss man sich lediglich einmal registrieren. Das WDSibyl Paket enthält sowohl die Windows als auch die OS/2 Variante, lediglich der Installer ist unterschiedlich. Folgende Zip-Archive sollte man sich nun herunterladen:
  • WDSibyl Compiler 3.13 (20100117)
    Dies ist die aktuelle WDSibyl Entwicklungsumgebung mit Delphi-Compiler, Debugger, Editor (IDE) und vielen Beispiel-Projekten. (Der Download funktioniert erst nach Registrierung)

  • WDSibyl Online Help (20100629)
    Die Online-Hilfe ist nicht bestandteil von WDSibyl und muss manuell hinzugefügt werden. Sie ist nicht zwingend für den Betrieb von WDSibyl erforderlich.

  • unixODBC port for OS/2
    Diese Run-Time Library ist zwingend für den Einsatz von WDSibyl unter OS/2 erforderlich und muss vor der Installation des WDSibyl Compilers installiert werden.

  • EMX Runtime, 0.9d fix 4
    Diese Run-Time Library ist ebenfalls zwingend für den Einsatz von WDSibyl unter OS/2 erforderlich und muss ebenfalls vor der Installation des WDSibyl Compilers installiert werden. Für die Installation dieses Pakets wird der Installer WarpIn mit mindestens der Version 0.9.4 benötigt.
Ich habe meine Installation unter Warp 3 durchgeführt. Der Installer benötigt mindestens eine Bildschirmauflösung von 800 x 600 Pixeln. Unter QEMU, wo ich mich immer noch mit einer Auflösung von 640 x 480 Pixeln begnügen muss, war eine Installion nicht möglich, da die Eingabefelder und Buttons des Installers nicht zu erreichen waren. Die Installion unter Warp 3 Fixpack 40 funktionierte mit nur wenigen Problemen. Während der Installation erscheint eine Fehlermeldung das in der PMWINX.DLL ein Problem aufgetreten ist, und das Programm beendet werden muss. Interessanterweise läuft die Installation aber im Hintergrund weiter und der Installer meldet nach erreichen der 100% eine fehlerfreie Installation.

Der Installer erzeugt kein Programm Icon auf dem Desktop. Die Anwendung muss man unter dem Install-Verzeichnis unter BIN suchen und sich selbst eine Referenz auf dem Desktop erstellen. Auf meiner Warp 3 Maschine, einem alten 5x86DX133 (P75 Rating) mit 32 MB RAM läuft die IDE noch brauchbar schnell. Das zusätzliche Hilfe-Paket lies sich nicht installieren. Der Installer meldet zwar, dass er das WDSibyl Verzeichnis gefunden hätte beendet sich aber dann mit einer nicht näher definierten Fehlermeldung.

Dienstag, 14. April 2009

REXX - REstructured eXtended eXecutor

Ab der Version 2.0 gehört die Scriptsprache REXX mit zum Lieferumfang von OS/2. REXX hat seine Wurzeln im Großrechnerbereich und wurde von IBM nach OS/2 protiert. Sie lässt sich durch das hinzufügen von zusätzlichen Libraries (DLLs) beliebig erweitern womit man Sie als alternative zu einem Shell-Skript einsetzen, aber auch eigene Anwendungen mit ihr erstellen kann. REXX ist eine strukturierte Programmiersprache sie sehr einfach zu erlernen und zu lesen ist und wurde auf viele Plattformen portiert. Wie PERL hat REXX seine Stärke in der Stringverarbeitung.
Ein REXX Programm kann mit jedem beliebigen Text-Editor erstellt werden. In der ersten Zeile muss immer ein Kommentar /* ... */ stehen, damit die OS/2 Shell erkennt, dass es sich um ein REXX Skript handelt. REXX kennt 23 Instruktionen und einen Datentyp, den String. Variablen sind Typenlos und der Inhalt einer Variable kann sich im Laufe des Programms bzw. bei der Programmausführung beliebig ändern. REXX kennt keine Arrays, dafür können Variablen eine oder mehrere, durch einen "." getrennte Endungen haben mit denen man sich Ein- bzw. Mehrdimensionale dynamische Hashtables mit der gleichen Funktion eines Arrays erzeugen kann. Ich möchte hier einen kurzen Auszug aus dem Grund-Wortschatz von REXX Funktionen geben:
  • IF ... THEN ... ELSE
    Die Anweisung prüft, ob die Bedingung die hinter IF steht wahr ist. Ist dies der Fall, wird die Anweisung ausgeführt, die hinter THEN steht. Ist die Bedingung falsch, wird die Anweisung ausgeführt, die hinter ELSE steht.

  • SELECT WHEN ... THEN ... WHEN ... THEN ... OTHERWISE ... END
    Die Anweisung SELECT fasst mehrere Bedingung zusammen. Jede Bedingung wird durch eine WHEN geprüft. Ist diese Bedingung wahr wird die hinter den THEN stehende Anweisung ausgeführt. Es ist möglich, dass mehrere Bedingungen wahr sind. In diesem Fall werden deren Anweisung ebenfalls ausgeführt. In dem Fall, dass keine Bedingung wahr ist, wird die Anweisung hinter OTHERWISE ausgeführt.

  • DO (FOREEVER, UNTIL, WHILE, X=Y TO Z) ... LEAVE ... END
    Die Anweisung DO kann alleine und in Kombination mit den Bedingungen die in Klammern angeführt sind angewendet werden.
    DO FOREEVER ist eine Endlosschleife die unendlich durchlaufen wird.
    DO UNTIL ist eine Schleife, die solange durchlaufen wird bis die Bedingung hinter UNTIL erfüllt/wahr ist.
    DO WHILE ist eine Schleife die solange durchlaufen wird die die Bedingung hinter WHILE nicht mehr erfüllt/wahr ist.
    DO X=Y TO Z ist die klassische FOR ... NEXT Schleife. X bekommt einen Startwert Y und iteriert zu Z. Hat X den Wert von Z erreicht wird die Schleife verlassen.
    Die Anweisung LEAVE kann innerhalb der DO-Schleife aufgerufen werden. Der Aufruf führt dazu, dass die DO Schleife verlassen wird.

  • ARG
    Diese Anweisung liest ein oder mehrere Argumenten ein, die zusammen mit dem REXX Programmaufruf eingegeben wurden.

  • PARSE
    Liest einen oder mehrere Strings von der Tastatur ein und ordnet diese Variablen zu.

  • SAY "..." "..."
    Gibt einen oder mehre Strings oder Ausdrücke aus.

  • CALL
    Mit CALL kann eine REXX Sub-Routine aufgerufen werden. Der Name der Sub-Routine definiert sich aus dem Namen des LABELS das unmittelbar über dem Funktionsaufruf von PROCEDURE steht. Mit dem Funktionsaufruf können optional auch eine Reihe von Argumenten mitgegeben werden.

  • PROCEDURE ... EXPOSE ... ARG ... RETURN
    Die Funktion PROCEDURE kann direkt hinter einem definierten LABEL angegeben werden. Innerhalb dieser Sub-Routine können neue Variablen definiert werden, die nur in dieser Routine ihre Gültigkeit haben. Der Routine können wie einem REXX Programm Argumente (ARG) übergeben werden, mit die die Routine arbeiten kann. Mit der Anweisung RETURN wird die Sub-Routine wieder verlassen. Mit EXPOSE kann man externe Variablen definieren die innerhalb der Sub-Routine modifiziert werden können.

  • SYMBOL
    Prüft ab eine Symbol oder Variable eine gültige Zuordnung bzw. Definition besitzt. Die Funktion gibt BAD, VAR oder LIT zurück. Mit dieser Funktion kann man z.B. überprüfen, ob eine Variable schon eine gültige Initialisierung besitzt. Eine uninitialisierte Variable gibt immer ihren eigenen Namen als Inhalt zurück.

  • EXIT
    Verlässt das laufende Programm.
Unter OS/2 gibt es die GUI Anwendung PMREXX mit der man sich im Detail die Ausgaben eines REXX- Programms anschauen und Debuggen kann. Das Programm wird nicht standardmäßig Installiert und muss über die Installationsoption nachinstalliert werden, wenn man keine OS/2- Vollinstallation ausgewählt hat. Darüber hinaus gibt es unter OS/2 die Möglichkeit auch GUI-Anwendungen mit REXX zu erstellen. Das VREXX Toolkit stellt hierfür die entsprechenden Funktionen zur Verfügung. Watcom VX-REXX ist eine Visuelle Entwicklungsumgebung, mit der man seine sein Presentation Manager Anwendungen über eine GUI zusammen klicken kann. Hiermit wird auch heute noch an eComStation entwickelt. Leider gibt es diese Entwicklungsumgebung nur als Demo-Version zum Download. Wer sich fragt, wo REXX heute noch eingesetzt wird, findet hier einen ausführlichen Artikel.

[UPDATE] Und dann gibt es noch DrDialog den man bei Hobbes und OS2 Site herunterladen kann. Mit dieser REXX-Entwicklungsumgebung lassen sich ebenfall GUI-Anwendungen unter OS/2 Warp erstellen. Ein ausführliche 14teilige Anleitung und eine Einführung in REXX hat Thomas Klein für den Voice-Newsletter erstellt. Es folgen die Links auf die einzelnen Teile:
(Danke an Warpcafe für den Tip)