Version 6.3.8 für Windows
 —  Leitfaden zur Programmierung  —

Betriebssystemkommandos aus einem Natural-Programm absetzen

Mit dem Natural-User-Exit SHCMD können Sie direkt aus einem Natural-Programm heraus ein Betriebssystemkommando absetzen.

Dieses Dokument behandelt folgende Themen:


Syntax

CALL 'SHCMD' 'command' ['option']

Seitenanfang

Parameter

command

command wird vom Betriebssystem ausgeführt. Um Kommandos auszuführen (zum Beispiel DIR oder DEL) müssen Sie auch den Systemkommandointerpreter angeben.

Weitere Informationen siehe Beispiele unten.

option

option beschreibt wie das Kommando ausgeführt werden soll. Dieser Parameter ist optional. Die folgenden Optionen stehen zur Verfügung:

Siehe Parameter-Optionen unten.

Seitenanfang

Parameter-Optionen

Die folgenden Optionen stehen zur Verfügung:

Option Beschreibung
ASYNCH Natural wartet nicht bis das Kommando vollständig ausgeführt wurde. Diese Art der Verarbeitung wird asynchrone Verarbeitung genannt.
NOSCREENIO Diese Option wird benutzt, um die von dem Kommando generierte Ausgabe zu verstecken. Die versteckte Ausgabe wird an das Null-Device umgeleitet.
SYNCH Natural wartet bis das Kommando vollständig ausgeführt wurde. Diese Art der Verarbeitung wird synchrone Verarbeitung genannt. Dies ist der Standard.

Anmerkung:
Die Optionen ASYNCH und SYNCH dürfen nicht gleichzeitig gesetzt werden.

Seitenanfang

Return-Codes

Die folgenden Return-Codes stehen zur Verfügung:

Return-Code Beschreibung
0 Kommando wurde erfolgreich ausgeführt.
4 Unerlaubter SHCMD-Parameter wurde angegeben.
Alle anderen Betriebssystemabhängiger Fehlercode.

Seitenanfang

Beispiele

Das Betriebssystemkommando DIR ausführen, um den Inhalt eines Verzeichnisses anzuzeigen:

CALL 'SHCMD''CMD.EXE /C DIR'

Den Return-Code mit der Natural-Funktion RET abfragen:

RESET rc (I4)  
CALL 'SHCMD''CMD.EXE /C DIR'  
rc = RET( 'SHCMD' )                   /* retrieve return code  
IF rc <> 0 THEN                       /* in case of an error  
DISPLAY "Error occurred during SHCMD" /* display an error message

Ein Kommando, das Leerzeichen enthält, wird in Anführungszeichen angegeben. Im folgenden Beispiel wird Microsoft Excel aufgerufen:

RESET #cmd (A253)
MOVE '"C:\Program Files\Microsoft Office\Office\EXCEL.EXE"' to #cmd
CALL "SHCMD" #cmd "ASYNCH"

In diesem Fall muss der Parameter TQ (Anführungszeichen übersetzen) auf OFF gesetzt werden, damit die Anführungszeichen nicht entfernt werden.

Um vom Parameter TQ unabhängig zu sein, können Sie den hexadezimalen ASCII-Code für Anführungszeichen (H'22') am Anfang und Ende des Kommandos einfügen:

RESET #cmd (A253)
MOVE H'22' - "C:\Program Files\Microsoft Office\Office\EXCEL.EXE" - H'22' to #cmd
CALL "SHCMD" #cmd "ASYNCH"

Seitenanfang