With Technology Refresh 6 (TR6) DB2 SQL for IBM i now includes the ability to use long SQL names along side traditional IBM "object names". This means you can specify lengthy SQL names in your SQL statements, and also specify the corresponding name generated for the system's use. This avoids having names like CVT00001, CVT00002 generated when you create a table named (for example) CVTCurrency.
The feature uses the "FOR SYSTEM NAME" clause to identify the IBM i name being associated with the SQL name specified elsewhere on the SQL statement. This does not associate a separate object with the SQL name, it simply allows you to specify what name to use when creating a TABLE, VIEW, INDEX or temp Table. Here's an example that creates a table named "Currency_Conversion" and tells the SQL statement to use "CVTCUR" as the system name (i.e., the IBM i 10-position object name)
CREATE TABLE Currency_Conversion FOR SYSTEM NAME CVTCUR ( cid integer GENERATE ALWAYS AS IDENTITY, CURCODE CHAR(3) NOT NULL DEFAULT "", DOLLAR DECIMAL(15,9), CURRENCY DECIMAL(15,9), PRIMARY KEY (CID) );