Rexx: Problem mit hex-00 im String
Verfasst: Sa 27. Jun 2020, 19:10
Eine Frage an die Rexxperten unter uns:
Heute bin ich beim Testen einer Rexx-Prozedur ins Grübeln gekommen...
In der OS2.INI kommen Schlüsselwerte vor, die aus mit '00'x aneinander geketteten Teilstrings bestehen. Das funktioniert auch. Dies sei im folgenden simplen Script nachgestellt, mit eingestreuten 'SAY's zum Testen: Der simple Output auf der Kommandozeile wie erwartet (das '00'x ist ja nicht druckbar):
Eigentlich aber soll die Funktion (so ähnlich...) unter PM-Kontrolle laufen, (konkret war's VisproRexx, aber) PMRexx reicht. Wer mag bitte selber probieren: Der Output sieht anders aus! Und noch anders wenn ich unter PMRexx trace. => Was mag nur der Grund sein??
Mir ist so weit klar, dass man einen 'String' an eine _externe_ Funktion \0-terminiert übergeben soll. Dieses Prinzip scheint sich unter PM auf 'say' (oder genauso 'lineout') auszuwirken; aber nur da, denn der volle String war ja gemäß 'parse var ...' intakt.
Nicht dass ich dieses "Problem" nicht notfalls zu umgehen wüsste, aber länger genervt hat mich der seltsame Test doch. Hab' ich irgendeine Dokumentation dazu übersehen?
Heute bin ich beim Testen einer Rexx-Prozedur ins Grübeln gekommen...
In der OS2.INI kommen Schlüsselwerte vor, die aus mit '00'x aneinander geketteten Teilstrings bestehen. Das funktioniert auch. Dies sei im folgenden simplen Script nachgestellt, mit eingestreuten 'SAY's zum Testen:
Code: Alles auswählen
/* aabb.cmd */
a0='AA'
b0='BB'
say 'a0='a0
say 'b0='b0
x0='00'x
s0=a0||x0||b0||x0
say 's0='s0
parse var s0 a1 '00'x b1 '00'x .
say 'a1='a1
say 'b1='b1
exit
Code: Alles auswählen
[C:\]aabb
a0=AA
b0=BB
s0=AA BB
a1=AA
b1=BB
Mir ist so weit klar, dass man einen 'String' an eine _externe_ Funktion \0-terminiert übergeben soll. Dieses Prinzip scheint sich unter PM auf 'say' (oder genauso 'lineout') auszuwirken; aber nur da, denn der volle String war ja gemäß 'parse var ...' intakt.
Nicht dass ich dieses "Problem" nicht notfalls zu umgehen wüsste, aber länger genervt hat mich der seltsame Test doch. Hab' ich irgendeine Dokumentation dazu übersehen?