Das mit dem Erhalten der Verbindung stimmt schon, aber das ständige toggeln der Verbindung mit CONNECT ging schon ganz schön auf die Zeit. Ich habe nur ca. 50 Sätze pro Sekunde geschafft.

Die Lösung mit 2 Programmen bringt nur Overhead in der Startphase, da ich die Daten des SELECT's in einem Puffer an das 2. Programm für INSERT übergebe => ca. 200-300 Sätze pro Sekunde.
Alles auf 100MBit-Ethernet !

Desweiteren werden an das 2. Programm ja nur Adressen und nicht die Daten selbst übergeben.

Ausserdem erlaubt die AS/400 mehrere tausend CALLS's pro Sekunde. Da alle OS-Funktionen intern per CALL aufgerufen werden, würde der Overhead gewaltig sein, wenn der CALL nicht als sog. LONG JUMP (C-Sementik) ausgeführt würden.

In der Programm-Initialisierung werden sämtliche Adressen bereits aufgelöst, bei ILE merkt man das bereits daran, dass bei fehlenden Funktionsverweisen das Programm erst gar nicht gestartet wird.
Für externe (OPM) CALL's findet die Auflösung genauso bei der Initialisierung statt, so dass beim tatsächlichen Call ggf. eine MCH-Meldung ausgegeben wird, wenn die Adresse ungültig ist.

Nur die Iniialisierung des gerufenen Programmes dauert etwas (Speicher zuordnen, Referenzen auflösen, usw.) aber beim Verlassen des Programmes kann man die Deaktivierung des Programmes steuern: RPG/LE "*INLR = *OFF", COBOL "EXIT PROGRAM".
Dadurch ist der 2. Aufruf und folgende in der Zeit nicht mehr messbar.