Das Problem:
Beim Aufruf befinden sich zwischen dem ersten '§' und 'BLDP' zwei Leerzeichen.
Im aufgerufenen Prozess kommt aber nur noch ein führendes Leerzeichen an.
Kennt jemand dieses Phänomen und vielleicht auch noch einen einfachen Trick?
Ich schrecke noch vor dem Umbau der Parameterübergabe über Queue oder Datei zurück.
das man beim Parsen aufpassen muss wenn Leerzeichen wichtig sind, ist mir klar.
Es handelt sich um ein Vispro/REXX-Projekt.
Unter Vispro wird die Parameterleiste in der Variable Topic bereitgestellt.
Der Display dieser Variable vor dem Parsen zeigt das zu diesem Zeitpunkt schon Leerzeichen fehlen.
Für mich ist der Übeltäter cmd.exe oder der Start-Befehl.
Ich werde mal versuchen die wichtigen Leerzeichen durch einen Platzhalter zu ersetzen und erst im aufgerufenen Prozess nach dem Parsen wieder zu entfernen.
wilfried » Mo 6. Jul 2015, 17:35 hat geschrieben:Ich werde mal versuchen die wichtigen Leerzeichen durch einen Platzhalter zu ersetzen und erst im aufgerufenen Prozess nach dem Parsen wieder zu entfernen.
Genauso funktioniert es.
Vor dem Aufruf alle wichtigen Leerzeichen mit
CMD zerlegt die Parameter schon von alleine in Parameter, ob man will oder nicht. Das bedeutet dann, dass nach jedem Leerzeichen ein neuer Parameter beginnt. Mehrere Leerzeichen werden dabei als eines gewertet.
Um dieses zu verhindern, kann man eigentlich nur die Parameterliste mit "..." maskieren, wobei diese Anführuungszeichen selbst dann auch abgetrennt werden. Die andere Möglichkeit ist die von Dir gewählte, wobei mal das eine und mal das eine weniger schlimm ist. Eine saubere Lösung gibt es mit CMD nicht.
es gibt da in Rexx noch andere Probleme, zB. können keine URLs korrekt als Parameter übergeben werden.
Da macht es Sinn, statt Parameter auf andere Möglichkeiten der Datenübergabe zu setzen. Stichtwort Interpozesskommunikation.
Eine Möglichkeit wären temporäre Dateien mit den Daten (Holzhammermethode, einfach aber funktional). Oder zB. Queues oder Pipes (eleganter, keine HD Operationen)
PS: Eine weitere Lösung und ein Beispiel zu Übergabe "unmöglicher" Parameter findest Du in Rexx Tipps & Tricks unter "Workaround for the // limitation". Dort wird das mit einer Umgebungsvariablen gemacht, in die die Daten geschrieben werden.