Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Vorverarbeitung und Nachverarbeitung

Die Funktionen "Vorverarbeitung" und "Nachverarbeitung" erlauben es, mit Hilfe eines Dateiübertragungs-Auftrags im lokalen und im fernen System beliebige Kommandos (Betriebssystemkommandos, Prozeduren, ...) zu starten. Die Kommandos werden statt des Dateinamens an das entsprechende System übergeben. Dabei gilt Folgendes:

  • Der Dateiname muss in Anführungszeichen (") eingeschlossen (Unix- und Windows-Systeme) bzw. als C-String angegeben werden (BS2000-Systeme, z/OS).

  • Das erste Zeichen ist ein Pipe-Zeichen ’|‘. Darauf folgen die Kommandos getrennt durch ’;‘ (bzw. ’&’ oder ’&&’ in Windows-Systemen, wobei der Kommandostring in diesem Fall mit cmd /c beginnen muss). Die maximale Länge der Vor- bzw. Nachverarbeitungskommandos ist begrenzt durch die maximale Länge des Dateinamens.

    Wenn anstelle des Pipe-Zeichens die Zeichenfolge ’|&’ angegeben wird, dann ist der Übertragungsauftrag wiederanlauffähig, siehe "Vorverarbeitung und Nachverarbeitung".

Die Vorverarbeitung übergibt das Ergebnis an die Standardausgabe des Systems (SYSLST auf BS2000, SYSPRINT auf z/OS, stdout auf Unix-Systemen und Windows), die Nachverarbeitung liest die Daten von der Standardeingabe des betreffenden Systems (SYSIN auf BS2000, SYSTSIN auf z/OS, stdin auf Unix-Systemen und Windows). Die Standardaus-/eingabe unterstützt jedoch in der Regel nicht alle auf dem jeweiligen System möglichen Dateiformate. Diese Einschränkung können Sie vermeiden, indem Sie anstelle der Standardaus-/eingabe die Variable %TEMPFILE verwenden. Dies hat den Vorteil, dass beliebige Dateiformate verwendet werden können. Auch wenn ein Vorverarbeitungskommando nicht auf Standardausgabe ausgeben, bzw. ein Nachverarbeitungskommando nicht von Standardeingabe lesen kann, hilft in der Regel die Angabe von %TEMPFILE in den Aufrufparametern.

Vorverarbeitung und Nachverarbeitung sind Teil der Auftragsklammer. Der Auftraggeber erhält also immer eine Rückmeldung über den erfolgreichen bzw. erfolglosen Abschluss der Vor-/Nachverarbeitung.

Folgendes ist bei Verwendung der Vor- und Nachverarbeitungsfunktion zu beachten:

  • Die Vor-/Nachverarbeitung läuft als Teil der Dateiübertragung unter der selben Zugangsberechtigung ab wie diese. Diese Angaben stehen entweder explizit im Dateiübertragungsauftrag oder in der USER-ADMISSION eines Berechtigungsprofils.

  • Wird der Auftrag über ein FTAC-Profil abgewickelt, so muss im Profil die Funktion FILE-PROCESSING zugelassen, oder ein Dateinamenspräfix mit Pipe-Zeichen '|' am Beginn festgelegt sein.

  • Bei nicht wiederanlauffähigen Vor-/Nachverarbeitungen muss die Verbindung zum Partner bestehen bleiben, bis die gesamte Verarbeitung abgeschlossen ist.

Wiederanlauffähigkeit bei Vor- und Nachverarbeitung

Bei wiederanlauffähiger Vor- und Nachverarbeitung werden die Daten zur Übergabe zwischen openFT und dem Verarbeitungskommando immer in einer temporären Datei abgelegt. Dadurch gliedert sich der Auftrag in 3 Phasen: Vorverarbeitung, Übertragung, Nachverarbeitung.

Die Wiederanlauffähigkeit einer Vor- oder Nachverarbeitung wird erreicht, indem Sie beim Übertragungskommando zusätzlich ein "&" vor dem Vor- bzw. Nachverarbeitungskommando angeben. Dabei verhalten sich Aufträge mit openFT-Partnern wie folgt:

  • Verbindungsverlust während der Vorverarbeitung:
    Geht beim Ausführen des Vorverarbeitungskommandos die Verbindung verloren, dann wird das Kommando auch nach dem Verbindungsverlust noch vollständig ausgeführt. Bei einem Wiederanlauf nach Beendigung des Kommandos wird die temporäre Datei übertragen.

  • Verbindungsverlust während der Übertragung:
    In diesem Fall führt openFT für die temporäre Datei wie üblich einen Wiederanlauf durch.

  • Verbindungsverlust während der Nachverarbeitung:
    Geht die Verbindung während der Nachverarbeitung verloren, dann wird das Nachverarbeitungskommando noch vollständig ausgeführt. Bei einem Wiederanlauf werden dann alle restlichen, zum openFT-Auftrag gehörenden Aktionen durchgeführt (z.B. eine Folgeverarbeitung oder die Ergebnismeldung an den Partner).

Hinweise für BS2000-Systeme

Das openFT-Subsystem kann nicht beendet werden, so lange es noch wiederanlauffähige Aufträge gibt, deren Vor- oder Nachverarbeitung noch nicht abgeschlossen ist. Dauert dies zu lange, kann der Systemverwalter die zu den Aufträgen gehörenden Batch-Jobs abbrechen (CANCEL-Kommando). In diesem Fall wird beim Neustart von openFT die Meldung FTR2083 ausgegeben.

Sind beim Beenden des openFT mit STOP-FT noch wiederanlauffähige Aufträge aktiv, die sich in der Kommandoausführungsphase befinden, dann wird der Shutdown um bis zu 2 Minuten verzögert. Ist die Kommandoausführung nach 2 Minuten noch nicht abgeschlossen, wird openFT beendet, beim nächsten START-FT wird der Auftrag abgebrochen.

Hinweise für Unix- und Windows-Systeme

Die temporäre Datei wird im Verzeichnis .openFTTmp gespeichert und erst nach ordnungsgemäßer oder fehlerhafter Beendigung des Kommandos wieder gelöscht.

.openFTTmp wird von openFT neu angelegt, falls es noch nicht existiert. Es befindet sich im Home-Verzeichnis des jeweiligen Benutzers. Auf dem lokalen Rechner ist dies der Benutzer, unter dessen Kennung der Auftrag gestartet wurde. Auf dem fernen Rechner ist es der Benutzer, dessen Kennung angegeben wurde bzw. dem die angegebene Zugangsberechtigung gehört.

Wenn bei einem openFT-Shutdown noch wiederanlauffähige Aufträge aktiv sind und sich in der Kommandoausführungsphase befinden, wird der Shutdown um bis zu 10 Minuten verzögert, um die Kommandos noch fertig auszuführen. Ein Kommando zum Beenden des openFT-Servers bleibt solange "hängen", die Eingabeaufforderung erhält man erst, wenn der Serverprozess beendet ist.

Serverfunktion für ferne Kommandoausführung (ftexec)

Eine spezielle Form der Vorverarbeitung ist die Serverfunktion für die ferne Kommandoausführung (Kommando ftexec für Unix-/Windows-Systeme, EXECUTE-REMOTE-CMD für BS2000 und FTEXEC für z/OS ). Dieses Kommando ermöglicht es, auf einem fernen System Kommandos auszuführen. Der Exit-Code sowie die Ausgaben von stdout und stderr (Windows- und Unix-Systeme), SYSLST und SYSOUT ( BS2000) bzw. STDOUT=SYSPRINT und STDERR=SYSTSPRT (z/OS) werden am lokalen Rechner ausgegeben. Damit verhält sich dieses Kommando wie eine Ausführung der entsprechenden Kommandos am lokalen Rechner.