call, Call, cAll, CAll, dos, Dos

Anando Eger anando at aneg-dv.de
So Okt 20 10:13:57 CEST 2002


Hallo Herr Allers,

Sie fragten:

> Warum unterscheiden sich die Varianten A, B, C, D, F und H - zumindest 
> beim gegebenen Beispiel und meinen Beobachtungen nach - nur um Nuancen? 

Weil sie alle einen Kommandointerpreter nachladen - aber mit verschiedenen
Randbedingungen - die aber je nach gewünschtem Ergebnis wichtig sind:

Das große/kleine "c" bei Call/call unterscheidet das Verhalten nach Start des
externen Programmes: bei groß-"C" wartet a99 _nicht_, bis das ext. Programm
fertig ist. Wenn man also das Ergebnis eines Sortiervorgangs im Flex 
weiterverarbeiten will, _muss_ man "dos" oder c[A|a]ll verwenden, ansonsten
läuft das flex-Programm weiter obwohl z.B. asort noch nicht fertig ist.

> Warum funktionieren die Varianten G und H?

Die erzeugen nur eine 2-fache Schachtelung des Kommandointerpreter-
aufrufs. Z.B. ist "command /c command /c befehl" syntaktisch richtig
und funktioniert so auch. Das zweite "command /c" ist nur überflüssig
und braucht etwas Hauptspeicher ...

Viele Grüße
Anando Eger


------ ursprüngliche Mail ---------
> In dem Angebot zur Ausführung externer Kommandos (call, dos etc.) 
> habe ich mich noch nie so
> richtig zurechtgefunden. Ausgangspunkt meiner jüngsten Verständnisprobleme 
> war der Versuch, einen DOS-Sortiervorgang _ohne_ das typische sekundenlange 
> Aufblitzen eines schwarzen DOS-Fensters ablaufen zu lassen. Ich dachte, 
> daß das mit einem der dos- und call-Flexbefehle zu machen sein müßte.
> 
> Um alle Möglichkeiten einmal durchzuprobieren, habe ich mir unter der 
> Demo-Datenbank mit
> a99.exe vom 16.10.2002 (und unter Windows 2000) folgende Flexdatei zurechtgemacht:
> 
> var "tit k?"
> f\if empty jump nichts
> xport f xx1.txt
> :naechst
> next\if no jump weiter
> perf schreib
> jump naechst
> :weiter
> close res\close x
> 
> // Von den folgenden beiden Befehlszeilen immer nur eine aktivieren!
> 
> //Alternative 1: Aktivieren Für Varianten A-D und G und H:
> var "command.com /C sort <xx1.txt >xx2.txt"
> 
> //Alternative 2: Aktivieren für Varianten E und F:
>      var "sort <xx1.txt >xx2.txt"
> 
> //Von den folgenden 8 Befehlszeilen immer nur eine aktiviert halten!
> 
> //Variante A
> call
> //Variante B
>     Call
> //Variante C
>     cAll
> //Variante D
>     CAll
> 
> //Variante E (mit Alternative 2)
>     dos
> //Variante F (mit Alternative 2)
>     Dos
> 
> //Variante G (mit Alternative 1)
>     dos
> //Variante H (mit Alternative 1)
>     Dos
> 
> mes Fertig!!!
> jump testend
> :schreib
> var #20 n\write
> return
> :testend
> //Trick, damit man im Schreibfeld immer gleich den Aufruf
> //für den nächsten Testschritt stehen hat:
> var "X test.flx"\sho iv
> end
> 
> Ergebnis:
> 
> Bei Variante E und G läuft das Sortieren tatsächlich und wie angestrebt 
> ohne Aufscheinen eines schwarzen DOS-Fensters ab.
> 
> Fragen:
> 
> Warum funktionieren die Varianten G und H? Denn bei den Befehlen 'dos' 
> und 'Dos' wird doch der Kommando-Interpreter sozusagen a99-seitig (also 
> festverdrahtet) vor den Aufruf des
> externen Programmes gesetzt, was in Verbindung mit Alternative 1 zu 
> Problemen führen müßte?
> 
> Warum unterscheiden sich die Varianten A, B, C, D, F und H - zumindest 
> beim gegebenen Beispiel und meinen Beobachtungen nach - nur um Nuancen? 
> (Ein schwarzes DOS-Fenster lassen z.B. alle aufblitzen).
> 
> (Richtig sortieren tun die Ausgangsdatei xx1.txt übrigens alle Varianten).
> 
> Mit verständnishungrigen Grüßen:
> 
> Heinrich Allers
> 
> allers at t-online.de, http://home.t-online.de/home/allers
> Die Welt hat sich am 11.9.2001 nicht verändert, sondern
> uns ist einmal mehr gezeigt worden, daß sie verändert
> werden muß / El mundo no ha cambiado el 11.9.2001, sino
> nos fue demostrado una vez más que tiene que ser
> cambiado




Mehr Informationen über die Mailingliste Allegro