Erst mal noch folgendes zur Vorbereitung:

Embedded SQL erstellt ein programminternes SQLPKG, dass du per

CRTSQLPKG PGM(MYPGM)
RDB(SYSTEM_X)
USER(MYUSER)
PASSWORD(mypassw)

auf dem Zielsystem erstellen musst.
Ggf. macht das die SQL-Runtime inzwischen automatisch.

Dieses SQLPKG wird mit *Public *EXLUDE erstellt, die Lib ist per Default QGPL (kann per "set option" geändert werden).

Nach jeder Umwandlung des Programmes ist leider die Signatur des SQLPKG's immer eine andere, so dass das Paket neu erstellt werden muss.

Deshalb macht es auch keinen Sinn, das Programm jeweils auf SystemA und SystemB neu zu wandeln, da der eine dem anderen das SQLPKG durch Neuerstellung auf SystemC wieder wegnimmt.
Durch *PUBLIC *EXCLUDE fehlt aber ggf. die Berechtigung zum Ersetzen des SQLPKG's.

Die Compileroption RDBCNNMTH dient wirklich nur dem Compiler um die SQL's zu analysieren, Beschreibungen zu laden usw., deshalb ist diese zur Laufzeit nicht mehr relevant.

CONNECT RESET geht natürlich erst, wenn du vorher bereits einen CONNECT TO erfolgreich durchgeführt hast.

Zur Performance ist da leider noch was zu sagen:

Wenn du in einem Programm mit 2 RDB's (fern und lokal) gelichzeitig arbeiten willst, wirst du dich ganz schön wundern.
Jeder CONNECT TO prüft natürlich erneut die Berechtigung und das SQLPKG auf dem Zielrechner und ist deshalb arg langsam.
Solltest du also häufig zwischen CONNECT TO und CONNECT RESET wechseln bricht die Performance drastisch ein.

Ich habe deshalb für solche Aufgaben immer 2 Programme mit jeweils getrennten benannten ACTGRP's erstellt.
Programm A arbeitet mit der fernen DB und ruft Programm B mit der lokalen DB auf. Dies ist um Faktoren schneller.
Ausserdem enthebt mich dieses der Umschaltproblematik und der ggf. unterschiedlichen Journale, da jede ACTGRP in einem anderen Journal aufgezeichnet werden darf (A remote, B lokal).