REXX <-> REGINA

(DE) System, Installation, Konfiguration, Hardware, Treiber, Netzwerk, Virtualisierung, etc.
(EN) System, Installation, Configuration, Hardware, Drivers, Network, Virtualisation, etc.
Antworten
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

REXX <-> REGINA

Beitrag von wilfried »

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.
Benutzeravatar
LotharS
Beiträge: 970
Registriert: So 29. Dez 2013, 20:07
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von LotharS »

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? :D
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... :ugeek:
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 :P

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

Viel Erfolg.
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag von wilfried »

Hallo Lothar,
LotharS hat geschrieben: Aber warum so bange? :D
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... :ugeek:
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 :P

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

Viel Erfolg.
Vielen Dank für Deine aufmunternden Worte und den detailierten "Schlachtplan"!
Das hebe ich mir für später auf, erstmal werde ich nun Regina eine Chance geben.
Benutzeravatar
Frank Wochatz
Beiträge: 1112
Registriert: So 22. Dez 2013, 22:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von Frank Wochatz »

Ein "Search & Replace" dauert auch bei 8000 Zeilen nicht die Ewigkeit. Wo besteht die Gefahr?
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag von wilfried »

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.
Benutzeravatar
LotharS
Beiträge: 970
Registriert: So 29. Dez 2013, 20:07
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von LotharS »

wilfried hat geschrieben:Label und Variablennamen zur Laufzeit zusammengebastelt und mit INTERPRET ausgeführt werden..
Ach du Schreck... :roll:
Ich glaube. wir hatten uns vor Ewigkeiten zu selten am Kaffeeautomaten getroffen. :D
wilfried hat geschrieben: Da gibt es schon genug Möglichkeiten den Überblick zu verlieren oder sich "intelektuell" abzuarbeiten.
Ich sag' ja immer: Murphys Law = "Wer programmieren kann, der tut es auch". Der liebe Gott bestraft sofort nur die kleinen Sünden :twisted:

Jedenfalls viel Glück mit REGINA. Hoffentlich funktioniert damit alles genau wie mit REXX gewünscht: ohne "Basteln" ;)
Benutzeravatar
Frank Wochatz
Beiträge: 1112
Registriert: So 22. Dez 2013, 22:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von Frank Wochatz »

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 :)
Benutzeravatar
LotharS
Beiträge: 970
Registriert: So 29. Dez 2013, 20:07
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von LotharS »

Frank Wochatz hat geschrieben: ein unproblematisches Sonderzeichen, welches sonst im Skript nicht vorkommt
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: 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.
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 eigenen ;) - Code vernünftig zu reanimieren). Und wenn man noch einen Editor nimmt, dessen Syntaxcoloring man anpassen könnte, umso einfacher fürs Auge. *)
Aber stimmt, REXX ist schon mächtig, manchmal seehr. :) Vielleicht stellt sich ja heraus, dass die "eleganten Tricks" nur endlich viele und modular eingegrenzt (und kommentiert...) sind?

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 :D

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?) :idea:
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag von wilfried »

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!
Markus
Beiträge: 77
Registriert: Mo 23. Dez 2013, 16:32

Beitrag von Markus »

LotharS hat geschrieben: Und wenn man noch einen Editor nimmt, dessen Syntaxcoloring man anpassen könnte, umso einfacher fürs Auge.
Auch wenn es aus de Win-Welt ist, schau dir doch mal Notepad++ an.
Eventuell geht auch Vim, wobei ich damit noch nicht gearbeitet habe.
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag von wilfried »

Für alle die es interessiert, seit wenigen Stunden ist Regina 3.8 für OS/2 verfügbar.
Danke Mark.
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag von wilfried »

Gerade Regina 3.9.1 gesaugt.
Antworten