REXX <-> REGINA
REXX <-> REGINA
Hallo Forum,
ich pflege hier ein "altes Schätzchen", das seinen Ursprung auf dem Host hat und sehr umfänglich (>8000 Zeilen) ist.
Dummerweise wird '$' bei der Namensbildung für Variablen und Labels verwendet.
Das macht unter REXX für OS/2 sowie OOREXX unter Windows Probleme.
Ein Change-All kommt erstmal nicht in Frage, ist mir zu gefährlich.
Kennt jemand einen Trick das '$'-Zeichen zu legitimieren?
Bisher kenne ich nur den Ausweg über REGINA, dort wird das '$' toleriert.
ich pflege hier ein "altes Schätzchen", das seinen Ursprung auf dem Host hat und sehr umfänglich (>8000 Zeilen) ist.
Dummerweise wird '$' bei der Namensbildung für Variablen und Labels verwendet.
Das macht unter REXX für OS/2 sowie OOREXX unter Windows Probleme.
Ein Change-All kommt erstmal nicht in Frage, ist mir zu gefährlich.
Kennt jemand einen Trick das '$'-Zeichen zu legitimieren?
Bisher kenne ich nur den Ausweg über REGINA, dort wird das '$' toleriert.
Hallo Wilfried,
das $-Zeichen hat in REXX noch eine spezielle Bedeutung, sh. Rexx Tipps und Tricks. Irgendwelches Verbiegen auf dem heimischen Rechner - sofern überhaupt möglich - wäre eventuell fatal, und machte das Script kaum portierbar. Ich würde da nichts verbiegen und mich strikt an die generelle Syntax halten.
Aber warum so bange?
Als ersten Schritt würde ich in einer Kopie das $-Zeichen überall ersetzen durch ein auffälligeres "DOLLAR?_" (das wäre erlaubt).
Als zweiten Schritt mir dann überlegen, wie ich (Variablen und) Labels etwas unterschiedlicher optisch kennzeichne...
Als drittes mir die Labels vornehmen und sukzessive gescheit umbenennen (nicht gerade mit "change all"
), denn das dürfte die Minderzahl sein.
Abschließend den Rest sukzessive oder auf einmal in etwas weniger Künstliches ändern.
Und wer weiß, was man dabei an bisher gut versteckten "Optimierungsmöglichkeiten" entdeckt
Das "alte Schätzchen" wird für OS/2 wahrscheinlich sowieso noch an anderen Stellen minutiös aufzuhübschen sein
Viel Erfolg.
das $-Zeichen hat in REXX noch eine spezielle Bedeutung, sh. Rexx Tipps und Tricks. Irgendwelches Verbiegen auf dem heimischen Rechner - sofern überhaupt möglich - wäre eventuell fatal, und machte das Script kaum portierbar. Ich würde da nichts verbiegen und mich strikt an die generelle Syntax halten.
Aber warum so bange?

Als ersten Schritt würde ich in einer Kopie das $-Zeichen überall ersetzen durch ein auffälligeres "DOLLAR?_" (das wäre erlaubt).
Als zweiten Schritt mir dann überlegen, wie ich (Variablen und) Labels etwas unterschiedlicher optisch kennzeichne...

Als drittes mir die Labels vornehmen und sukzessive gescheit umbenennen (nicht gerade mit "change all"

Abschließend den Rest sukzessive oder auf einmal in etwas weniger Künstliches ändern.
Und wer weiß, was man dabei an bisher gut versteckten "Optimierungsmöglichkeiten" entdeckt

Das "alte Schätzchen" wird für OS/2 wahrscheinlich sowieso noch an anderen Stellen minutiös aufzuhübschen sein

Viel Erfolg.
Hallo Lothar,
Das hebe ich mir für später auf, erstmal werde ich nun Regina eine Chance geben.
Vielen Dank für Deine aufmunternden Worte und den detailierten "Schlachtplan"!LotharS hat geschrieben: Aber warum so bange?![]()
Als ersten Schritt würde ich in einer Kopie das $-Zeichen überall ersetzen durch ein auffälligeres "DOLLAR?_" (das wäre erlaubt).
Als zweiten Schritt mir dann überlegen, wie ich (Variablen und) Labels etwas unterschiedlicher optisch kennzeichne...![]()
Als drittes mir die Labels vornehmen und sukzessive gescheit umbenennen (nicht gerade mit "change all"), denn das dürfte die Minderzahl sein.
Abschließend den Rest sukzessive oder auf einmal in etwas weniger Künstliches ändern.
Und wer weiß, was man dabei an bisher gut versteckten "Optimierungsmöglichkeiten" entdeckt![]()
Das "alte Schätzchen" wird für OS/2 wahrscheinlich sowieso noch an anderen Stellen minutiös aufzuhübschen sein
Viel Erfolg.
Das hebe ich mir für später auf, erstmal werde ich nun Regina eine Chance geben.
- Frank Wochatz
- Beiträge: 1142
- Registriert: So 22. Dez 2013, 22:04
- Wohnort: Berlin
- Kontaktdaten:
Ein "Search & Replace" dauert auch bei 8000 Zeilen nicht die Ewigkeit. Wo besteht die Gefahr?
Hallo Frank,
die Gefahr besteht darin, das Label und Variablennamen zur Laufzeit zusammengebastelt und mit INTERPRET ausgeführt werden. Ausserdem enthält der Code Logik um die Unterschiede unter TSO, Linux, Windows und OS/2 zu beachten. Da gibt es schon genug Möglichkeiten den Überblick zu verlieren oder sich "intelektuell" abzuarbeiten.
Da Regina 3.7 für OS/2 verfügbar ist und das $-Zeichen unterstützt, hab ich mich gefragt warum das REXX unter OS/2 das nicht kann.
die Gefahr besteht darin, das Label und Variablennamen zur Laufzeit zusammengebastelt und mit INTERPRET ausgeführt werden. Ausserdem enthält der Code Logik um die Unterschiede unter TSO, Linux, Windows und OS/2 zu beachten. Da gibt es schon genug Möglichkeiten den Überblick zu verlieren oder sich "intelektuell" abzuarbeiten.
Da Regina 3.7 für OS/2 verfügbar ist und das $-Zeichen unterstützt, hab ich mich gefragt warum das REXX unter OS/2 das nicht kann.
Ach du Schreck...wilfried hat geschrieben:Label und Variablennamen zur Laufzeit zusammengebastelt und mit INTERPRET ausgeführt werden..

Ich glaube. wir hatten uns vor Ewigkeiten zu selten am Kaffeeautomaten getroffen.

Ich sag' ja immer: Murphys Law = "Wer programmieren kann, der tut es auch". Der liebe Gott bestraft sofort nur die kleinen Sündenwilfried hat geschrieben: Da gibt es schon genug Möglichkeiten den Überblick zu verlieren oder sich "intelektuell" abzuarbeiten.

Jedenfalls viel Glück mit REGINA. Hoffentlich funktioniert damit alles genau wie mit REXX gewünscht: ohne "Basteln"

- Frank Wochatz
- Beiträge: 1142
- Registriert: So 22. Dez 2013, 22:04
- Wohnort: Berlin
- Kontaktdaten:
Hello again,
ev. bin ich naiv, aber wenn Du das $ überall (!) gegen ein anderes Zeichen (zB. ein unproblematisches Sonderzeichen, welches sonst im Skript nicht vorkommt) austauschst, dann sollten auch Sachen wie Interpret und Zusammensetzungen keine Probleme machen. Um ev. Probleme mit Variablenlängen oder String-Schablonen zu umgehen, würde ich dabei ein Zeichnen nur gegen ein anderes austauschen (also nicht wie oben vorgeschlagen, das $ gegen eine Zeichenkette austauschen. Zusätzlich könnte man nochmal abchecken, ob das $ ev. in anderer Kodierung verwedet wird - zB. in Hex. Unwahrscheinlich - aber zur Sicherheit. Einzig wenn spezielle Eigenschaften des $ in dem Skript benutzt werden (welche auch immer das unter anderen Systemen sein mögen), dürfte es Probleme geben. Nur dann gibt garantiert auch Problem mit Regina und dem $.
Also bevor ich jetzt mit Regina rumwurschteln würde, womit Du Dir eine zweite, parallele Rexxumgebung aufbaust (womöglich mit anderen Einschränkungen), würde ich mit Search+Replace eine Kopie des Skriptes einfach mal ändern und ausprobieren was passiert, der Aufwand ist minimal. Was soll denn da passieren?
Ich will Dich aber nicht überreden
ev. bin ich naiv, aber wenn Du das $ überall (!) gegen ein anderes Zeichen (zB. ein unproblematisches Sonderzeichen, welches sonst im Skript nicht vorkommt) austauschst, dann sollten auch Sachen wie Interpret und Zusammensetzungen keine Probleme machen. Um ev. Probleme mit Variablenlängen oder String-Schablonen zu umgehen, würde ich dabei ein Zeichnen nur gegen ein anderes austauschen (also nicht wie oben vorgeschlagen, das $ gegen eine Zeichenkette austauschen. Zusätzlich könnte man nochmal abchecken, ob das $ ev. in anderer Kodierung verwedet wird - zB. in Hex. Unwahrscheinlich - aber zur Sicherheit. Einzig wenn spezielle Eigenschaften des $ in dem Skript benutzt werden (welche auch immer das unter anderen Systemen sein mögen), dürfte es Probleme geben. Nur dann gibt garantiert auch Problem mit Regina und dem $.
Also bevor ich jetzt mit Regina rumwurschteln würde, womit Du Dir eine zweite, parallele Rexxumgebung aufbaust (womöglich mit anderen Einschränkungen), würde ich mit Search+Replace eine Kopie des Skriptes einfach mal ändern und ausprobieren was passiert, der Aufwand ist minimal. Was soll denn da passieren?
Ich will Dich aber nicht überreden

Erlaubt in REXX sind in Symbolen nur ? ! _ . Ob in den 8000 LOC deren Trefferquote gleich Null ist, wäre zu untersuchen...Frank Wochatz hat geschrieben: ein unproblematisches Sonderzeichen, welches sonst im Skript nicht vorkommt
Eigentlich ging es mir darum, zunächst nur irgendeine unverwechselbare Ersetzung zu nehmen, die beim Inspizieren des Codes ins Auge springt (sowas habe ich öfters gemacht, um einen alten fremden - oder eigenenFrank Wochatz hat geschrieben: Um ev. Probleme mit Variablenlängen oder String-Schablonen zu umgehen, würde ich dabei ein Zeichnen nur gegen ein anderes austauschen (also nicht wie oben vorgeschlagen, das $ gegen eine Zeichenkette austauschen.

Aber stimmt, REXX ist schon mächtig, manchmal seehr.

Aber Wilfried kennt mich ja, dass auch ich nie jemanden überrede; das klappt bei gestandenen Entwicklern sowieso nicht. Sondern nur davon überzeugen, mutig zu bleiben

Edit: *) Diese so Ersetzung würde sukzessive natürlich durch eine konfliktfreie "richtige" ersetzt, und dann sähe ich jeden Tag, was ich inspiziert und geschafft bzw. noch zu klären habe (oder gar zu korrigieren?)

Hallo Frank, Hallo Lothar,
erstmal die gute Nachricht, das "alte Schätzchen" läuft mit REGINA einwandfrei. Hatte ich auch, vor einigen Jahren unter Windows und Linux, schonmal so am Rennen.
Für den Notfall hätte ich '$' nach '!' umgestellt, '_' ist hier nicht mehr frei. Dagegen spricht aber, das der Host '!' für Konkatenation und die Oder-Verknüpfung im REXX verwendet. Damit wird ein Global-Change '|' nach '!' unmöglich. Ausserdem kann ich momentan nicht ausprobieren ob '!' in Variablen und Labeln auf dem Host funktioniert.
Ein weiterer Grund warum ich nur im Notfall migrieren will:
Es gibt eine ganze Reihe von Eingabedateien die das "Schätzchen" verarbeiten muss in denen auch '$' verwendet wird. Damit ginge die übergreifende Kompatibilität verloren. Andere Nutzer würden zu Umstellungsarbeiten gezwungen.
Das nur zur Erklärung warum ich so "Beratungsresistent" bin.
Danke fürs Mitdenken!
erstmal die gute Nachricht, das "alte Schätzchen" läuft mit REGINA einwandfrei. Hatte ich auch, vor einigen Jahren unter Windows und Linux, schonmal so am Rennen.
Für den Notfall hätte ich '$' nach '!' umgestellt, '_' ist hier nicht mehr frei. Dagegen spricht aber, das der Host '!' für Konkatenation und die Oder-Verknüpfung im REXX verwendet. Damit wird ein Global-Change '|' nach '!' unmöglich. Ausserdem kann ich momentan nicht ausprobieren ob '!' in Variablen und Labeln auf dem Host funktioniert.
Ein weiterer Grund warum ich nur im Notfall migrieren will:
Es gibt eine ganze Reihe von Eingabedateien die das "Schätzchen" verarbeiten muss in denen auch '$' verwendet wird. Damit ginge die übergreifende Kompatibilität verloren. Andere Nutzer würden zu Umstellungsarbeiten gezwungen.
Das nur zur Erklärung warum ich so "Beratungsresistent" bin.

Danke fürs Mitdenken!
Für alle die es interessiert, seit wenigen Stunden ist Regina 3.8 für OS/2 verfügbar.
Danke Mark.
Danke Mark.
Gerade Regina 3.9.1 gesaugt.