Teileweise bist du auf dem richtigen Weg.

Das Startprogramm:
Wenn das Startprogramm in einer Lib steht, die geschützt ist (*PUBLIC *EXCLUDE) kann dieses erst gar nicht zur Ausführung kommen (kein Zugriff auf die Lib).
Also:
Das Startprogramm muss schon mal in eine Lib mit *PUBLIC *USE !

Für Dialogprogramme ist das dann soweit in Ordnung.

Aber wie siehts beim Batch aus ?
Batch kennt kein Startprogramm !!!
Meistens wird ein Programm als Batch vom aktuellen User übergeben. Dieses Programm muss natürlich in einer Lib mit *PUBLIC *USE liegen und die gleichen Bedingungen wie das Dialog-Startprogramm aufweisen (*OWNER usw.), es ist ja schließlich das Startprogramm des Batchjobs.

Verwendest du JOBD's ? Dann benötigt der Benutzer auch *USE-Berechtigung an diesen Objekten, da diese zum initialisieren eines Job's benötigt werden.

Die Anwendung muss also in mind. 2 Lib's getrennt werden.
1. Daten-Lib (*PUBLIC *EXCLUDE)
2. PGM-Lib (*PUBLIC *USE) *USE ist deshalb wichtig, damit keine Benutzer die Lib verändern kann, dies heisst auch hinzufügen/löschen von Objekten ist nicht erlaubt.

Es reicht nur die sog. Start-Programme in die PGM-Lib zu legen. Wenn diese allerdings nicht immer alle bekannt sind, eben alle PGM'e rein umd mit *OWNER-Ausführung kennzeichnen.

Dein FTP/ODBC/DRDA-Problem ist damit gelöst.

Bleibt nur noch dein Anmelde-Problem

Ach ja, einen hab ich noch:
*ALLOBJ-Berechtigung macht alles kaputt !