Regarding question #2. DB2 always stores dates in the same internal format using a 4 byte numeric field (2 numeric digits per byte). It is similar to OS/390 packed decimal without the sign in the last half byte. This is of little concern to you since you never see the date in DB2 internal format. Anytime a date column is returned to an application, or anytime you supply data to be inserted, it is always in character format of 10 bytes in length (which includes dash, slash, or period separators).
The string representation of date that you see is normally the default format of date/time values associated with the territory code of the application, unless overridden by specification of the DATETIME option when the program is precompiled or bound to the database. I believe that you can bind the CLI package with the desired DATETIME option also (or other package used to access DB2 dynamically).
In addition, the is can be overridden in any SQL statement with the following command:
SELECT CHAR(date-column, USA) FROM table-name
will return the date in USA format (MM/DD/YYYY) even if that is not the default. Other formats include ISO, EUR, JIS, or a site defined format. Check the SQL Reference Vol I for more information.
When inserting data, you can supply any of the above formats (YYYY-MM-DD, MM/DD/YYYY, etc) and DB2 will automatically recognize it properly as a date and store in the internal DB2 format. You do not have to identify the format to DB2 so long as it is one of the defined external formats for date, even if it is not the default for your installation.
M. A. Feldman
IBM Certified DBA on DB2 for Linux, UNIX, and Windows
IBM Certified DBA on DB2 for z/OS and OS/390