Seit es SQL gibt, wird NAMING zwischen SYS und SQL unterschieden. Im ODBC-Treiber (seit V5R1) hat man die DFTRDBCOL nur neu mit aufgenommen um die gleichen Funktionen wie direkt auf der AS/400 zu unterstützen (siehe z.B. CRTSQLRPG).

Früher war bei NAMING=SQL die Standardlib der Name des USERS !

Da aber Programme nicht nur unter einem User laufen sollten, ist das ein Problem. Mit DFTRDBCOL kann ich nun die Lib gezielt vorgeben, so dass auch verschiedene User mit der gleichen Lib arbeiten können.

Dies gilt aber nur für unqualifizierte SQL's (also ohne Lib).

Bei NAMING=SYS habe ich zwar diese Problem nicht, da unqualifizierte SQL's über LIBL gesucht werden, es kann aber zum Problem werden, wenn die Applikationsdateien z.B. kopiert werden und dann (ganz zufällig) in der CURLIB des Users landen.

Und nun ?

Deshalb ist der DTFRDBCOL ganz vernünftig um unqualifizierte SQL's verwenden zu können !
Nur dann kann ich relativ variable Anwendungen entwickeln, die je nach ODBC-Einstellung mit unterschiedlichen Lib's arbeiten kann.

Da stellt sich wieder die Frage, was ich mache, wenn eine Anwendung ihre Daten in mehrere Lib's verstreut ?

Tipp:

Wenn ich mit DAO arbeite, kann ich per "RegisterDatabase" einen korrekten ODBC-Eintrag erstellen und ggf. korrigieren.

Bei ADO kann ich die Libl direkt mittels der Connection-Properties einstellen.

Somit hat ein Anwender keine Chance, meine Libl's zu verbiegen und ich kann mit unqualifizierten SQL's arbeiten.