Auch die Uhr der AS/400 ist grundsätzlich in lokaler Zeit.
Selbst die MI-Funktion für Uhrzeit holt sich eben die aktuelle Systemzeit.
Für das Umrechnen in UTC ist jedes Programm dann selbst verantwortlich.
Da es nur einen QUTCOFFSET-Wert gibt muss man eben selber in UTC umrechnen.
Stellt man diesen um, liefert die Zeitfunktion immer noch die selbe Zeit.

Lediglich die C-Funktion time() rechnet die Systemzeit über QUTCOFFSET bzw. die ENVVAR TZ (TIMZON) die Zeit in Sekunden seit dem 1.1.1970 um (Unix-Funktion), was dann mittels localtime() wieder zurückgerechnet werden muss.

Mehrzeitzonenverwaltung muss in einer Anwendung korrekt implemetiert werden um dem gerecht werden zu können, da eben auch die HLL/SQL-Funktionen (insbesonders Default-Timestamps beim Insert) nur die aktuelle Systemzeit (unabhängig von QUTCOFFSET bzw TZ) abgreifen.
Während der Sommerzeit-Umstellung (zwischen 2 und 3 Uhr) hat man nämlich leider keine korrekte Sortierung nach Timestamp in einer Tabelle, da diese Stunde doppelt vorkommt.