"Ubergabe von Umgebungsvariable an CockPit

thomas at mpim-bonn.mpg.de thomas at mpim-bonn.mpg.de
Do Mai 23 16:09:43 CEST 1996


Herr Allers schrieb:

> Das ist daran zu sehen, da"s beim CockPit-Aufruf erst dann nicht
> mehr das Fehlen von UIFC beklagt wird, wenn man in der Zeile
> 
>    P %fp%\allegro
> 
> von Hand (editierend) den Umgebungsvariablenstellvertreter durch
> den Festplattenkennbuchstaben ersetzt!

Interessant ist vor allem, dass die Zeile 'P' in der Vorgabendatei
ueberhaupt zum tragen kommt...

Wie ist es denn bei:
%-p%\acp.exe -oCP.OPT -p%-p% %1 %2 %3 %4 %5 %6 %7 %8 %9 -S 
?

Nach meinen Erfahrungen macht ACP _nichts_ mit Platzhaltern fuer
Umgebungsvariable in der CP.OPT.
Das ist allerdings problemlos, solange es sich um Menuepunkte handelt
oder den Namen der Datenbank, der ja nur in CCC.BAT hineingesetzt
wird und dann vom Kommandointerpreter expandiert. Die Funktion 
'Editieren mit TAB' funktioniert dann allerdings nicht, denn:

Auch die Setzungen fuer 'E' und 'V' duerfen z.B. auch keine 
Umgebungsvariable enthalten, da dies Beispiele fuer Programmaufrufe 
sind, die ACP direkt (ohne Umweg ueber Command.COM) generiert.

Es waere natuerlich wirklich schoen, wenn beim Einlesen von CP.OPT
Umgebungsvariable expandiert wuerden. Umgekehrt gab es aber immer
die Restriktion, dass die "Kommandos" in den Menuepunkten nicht
besonders lang sein durften. Da war ich immer froh, einen langen
Pfad durch eine Umgebungsvariable 'abkuerzen' zu koennen, da ich
ja wusste, dass sie _nicht_ expandiert wird. 
Ausserdem werden ja manche Umgebungsvariable durch Cockpit erst 
gesetzt und zwischendurch veraendert. Ein Menuepunkt
R Indexparameter editieren, x %-D%\%-b%.%-K1%pi, ...
kann ja nur vernuenftig funktionieren, wenn Umgebungsvariable 
_nicht_ expandiert werden.

Es bleibt die Moeglichkeit, die Variablen spaeter zu ersetzen,
naemlich dann, wenn Aufrufe generiert werden, oder Dateien gesucht
oder..., also eine recht komplizierte Sache.

Die letzte Moeglichkeit ist dann nur noch, in CP.OPT mit zwei
Sorten Umgebungsvariablen mit unterschiedlicher Syntax zu arbeiten: 
Solche, die beim Einlesen ersetzt werden, heissen dann $(-P)
oder so. Dafuer brauchen Sie aber keine Aenderungen in ACP.EXE.
lassen Sie doch einfach (nicht getestet) die CP.OPT aktuell
generieren:

perl -p -l -e"s/\\\$\((\S*)\)/$ENV{$1}/g;" vorbild.opt>cp.opt



Viele Gruesse
Thomas Berger




Mehr Informationen über die Mailingliste Allegro