call, Call, cAll, CAll, dos, Dos

Thomas Berger ThB at gymel.com
So Okt 20 11:41:34 CEST 2002


Lieber Herr Allers,

> 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

Strenggenommen fehlt auch die Alternative 3:
var "cmd.exe /C sort <xx1.txt >xx2.txt"
(bzw. allgemeiner, vgl. alle Alt-Flexe von vor der Einfuehrung von
"dos":
get env COMSPEC
ins #uxx
var #uxx " /C sort <xx1.txt >xx2.txt"
)

sowie Alternative 4, die ohne Input/Output Redirection, d.h. 
ohne Shell auskommen kann:
var "asort.exe xx1.txt xx2.txt"

> 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 sollte fuer das Betriebssystem die Reihung
cmd.exe /c command.com /c ...

ein Problem sein?


> 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).

In allen Faellen laeuft das aufgerufene Programm (dieser oder jener
Kommandointerpreter, sort.exe direkt) in einem sogenannten Konsolfenster
ab. Aus xdos.rtf:
>>>
dos startet ein minimiertes Fenster und wartet, bis der Vorgang beendet
ist (entspr. cAll)
<<<
das ist wie folgt zu verstehen: bei "dos" startet a99 ein minimirtes 
Fenster, d.h. es blitzt nichts schwarzes auf, unten in der Taskleisten
muessten Sie aber ein bischen Unruhe bemerken. 

Aus xcall.rtf:
>>>
Bei cAll/CAll gilt: Es erscheint kein Fenster für das externe Programm,
dieses
läuft unsichtbar ab (bis auf Symbol in der Task-Leiste). Wenn man dies
macht,
muss man sicher sein, dass das externe Programm nicht anhalten und eine
Nutzerreaktion abwarten wird, sondern automatisch bis zum Ende
durchläuft
<<<

Die Frage ist also, warum cAll kurz ein Fenster aufblitzen laesst.
Das liegt aber moeglicherweise daran, dass unter Win 2000 beim
Aufruf von Command.com intern noch einige Zwischenschritte ablaufen,
vermutlich etwa eine Standardkonsole, die erst command.com in einem
weiteren Fenster aufruft. Es kann auch sein, dass der Aufruf von
command.com in dem Sinne speziell ist, dass zuerst die zugehoerige
pif-Datei (_default.pif) ausgewertet wird und dann erst auf den
Prozess die Minimierungseigenschaft des Aufrufs appliziert wird
(oder umgekehrt).

[Ein analoges Problem war uebrigens (vor den Zeiten von a-dos.fon):
Wie kann ich unter Win'2000 etc. von a99 aus einen Presto-Zugang im
Vollbildmodus eroeffnen, damit auch ein vorangestelltes fontload
funktioniert].

viele Gruesse
Thomas Berger




Mehr Informationen über die Mailingliste Allegro