In der ODBC-Config bzw. im Connection-String kannst du Lib und Namen eines SQLPaketes vorgeben.
Per PRTSQLINF kannst du dir diesen Inhalt dann ansehen.

Das Preparen hat damit aber nichts zu tun, da jedes Statement eben erst prepared werden muss.
Durch Zuweisung dern Commandtext-Egenschaft wird der Prepared-Status wieder aufgehoben.
Die AS/400 verwaltet das automatisch.
Wenn du im ODBC-Konfig den DEBUG-Modus anschaltest kannst du im QZDA-Job (WRKOBJLCK MYUSER *USEPRF) im Joblog die SQL's (und auch sonstige Performance-Hinweise) ansehen.

Für jedes SQL wird ein Statementname festgelegt. Ändert sich ein SQL nicht, kann die AS/400 dieses Statement wiederverwenden. Dadurch entfällt das erneute preparen.

Das SQL-Paket dient der AS/400 dazu, SQL's wiederzuerkennen. D.h., dass in diesem Fall eine Zugriffspfad-Analyse nicht mehr durchgeführt werden muss, da dies ja bereits erfolgt ist.

Seit V5R3 ist das aber in den meisten Fällen unerheblich.
Da z.B. MS-Access nicht mit prepares arbeitet, haben die Jungs der AS/400 sich was besonderes überlegt.
Enthält das SQL keine Parametermarker ersetzt die AS/400 alle Variableninhalt durch eben solche, schaut dann im SQL-Paket nach obs das schon gab und schenkt sich dann die weitere Analyse.