[Amiga][Down] [Scene] {}
 
[Workshop] 

| Diskarchive | REXX | TCP/IP: Die Exoten |
 
 

[Cover]
[Editorial]
[Inhalt]
[News]
[Hardware]
[Software]
[Workshop]
[Spiele]
[Special]
[Feedback]
[Etc]


REXX - nicht nur am Amiga

 
Jeder, der einen Amiga besitzt, ist wohl schon einmal mit ARexx konfrontiert worden. Wie aber sieht es auf anderen Plattformen mit unserer geliebten Sprache aus? Laufen ARexx-Skripte auch auf einem NT? Dieser Frage bin ich mit meinem Stammtisch-Skript nachgegangen.

 
Nachdem ich den Stammtisch-Artikel in der AmigaScene gelesen hatte, kam ich auf die gloreiche Idee, einen ARexx-Skript zur Berechnung des nächsten Stammtisch-Datums zu schreiben. Und da einer von uns auch einen Rexx- Interpreter am NT laufen hatte, stand einem Test der Kompatibilität nichts mehr im wege. Doch ganz so einfach sollte es dann doch nicht werden.

Als erstes kam gleich mal die Meldung:


157 *-* CALL AddFeiertag("0118", "Peter"born)
Error 37 running C:\STAMM.RX line 157: Unexpected ",", ")", or "]"
Error 37.1:  Unexpected ","

 
Fehler sehe ich da keinen, aber anscheinend darf man keine Klammern für den Funktionsaufruf mit CALL verwenden. Naja, was soll's, hab' ich mir gedacht und die Klammern eben rausgenommen.

Doch da Rexx eben ein Interpreter ist, folgte nach Behebung des ersten Fehlers gleich der nächste:


380 *-* RETURN (arg(1)//4 = 0) & ((arg(1)//100 ~= 0) | (arg(1)//400 = 0))
Error 19 running C:\STAMIBM3.RX line 380:  String or symbol expected
Error 19.909:  String or symbol expected after tilde ("~")

 
Na toll. Der Negator ist am NT auch ein anderer. Wie soll man einen kompatiblen Skript schreiben, wenn sich die Symbole auf den verschiedenen Plattformen nicht gleichen? Wandeln wir das ungleich 0 eben in ein größer 0 um, das funktioniert auch.

 
Danach waren einmal die Syntaxfehler behoben. Doch dann kamen die Probleme mit nicht mehr vorhandenen Funktionen:


29 *-* IF FIND(UPPER(argumente), 'HELP') > 0
Error 43 running C:\STAMIBM3.RX line 29:  Routine not found
Error 43.1:  Could not find routine "UPPER"

 
UPPER gibt's also nicht mehr. Kein Problem, nimmt man eben TRANSLATE.


29 *-* IF FIND(TRANSLATE(argumente), 'HELP') > 0
Error 43 running C:\STAMMIBM.RX line 29:  Routine not found
Error 43.1:  Could not find routine "FIND"

 
FIND ist auch verschwunden? Also das kann nicht mehr so einfach ausgetauscht werden. Um mit meinen Skript kompatibel zu bleiben habe ich die Funktion FIND eben selber programmiert.

Danach hat's endlich funktioniert und der Dieter konnte nun auch auf seinem Laptop den nächsten Stammtisch berechnen lassen.

 
Will man also ein Rexx-Skript auf einem anderen System zum Laufen bringen, muß man noch selbst ein bißchen Hand anlegen. Ein Skript für beide Plattformen ist nur für simplere Aktionen machbar. Am besten ist es, den Skript einmal auf das neue System anzupassen und dann eben zwei verschiedene Skripte verwenden.

Leider ist ARexx und Rexx doch nicht voll kompatibel zueinander. Das liegt wahrscheinlich auch daran, daß ARexx immerhin schon einige Jahre auf dem Buckel hat. Ich bin mal neugierig, ob für OS 3.5 das ARexx auf den neuesten Stand gebracht wird.

Bernd Gollesch ...........


- Stammtisch.rexx berechnet den AmigaStammtisch
- Der exzellente ARexx-Guide von Robin Evans
 
[Up] .... {}