When rpgc connects to a database that is not Db2 for i, SQL Server, Db2 LUW, or H2, it falls back to the generic backend. The generic backend is best-effort: it announces itself with a runtime warning naming the database it connected to and listing the semantics it cannot guarantee.
The generic backend:
- Adjusts every statement for the connected database. RRN references are refused with a diagnostic - no portable row identity exists.
- Does not apply EBCDIC collation. Keyed access ordering follows the database's default collation, which may differ from IBM i's
*HEX(EBCDIC binary) order. Programs that depend on uppercase-before-lowercase or digit-after-letter ordering may see differentSETLL/CHAIN/READEsequences. - Does not adjust NULL ordering. IBM i sorts NULLs last in ascending order; some databases sort NULLs first. Programs using keyed reads near NULL boundaries may see different positioning.
- Leaves decimal result scale, blank padding, date arithmetic, and error codes to the driver. These are implementation-defined in the SQL standard and are the semantics RPG's behavior depends on most; on an unlisted database they follow the driver rather than IBM i.
- Uses ANSI-standard DDL for identity columns (
GENERATED BY DEFAULT AS IDENTITY) and large payloads (CLOB), which most SQL:2003-compliant databases accept.
Fidelity is verified against Db2 for i; on any other backend see Database Backends for the caveats that bound it.