Ich kann allerdings einen externen Dienstleister nicht verklickern, dass er die Spalte einfach weglassen oder beim Insert DEFAULT angeben soll, da dieses (wieder mal) nicht standard ist.
Dann leg halt eine View an, in der alle Spalten außer der Identity Spalte und anderen Spalten, die automatisch generiert werden (ab 7.3) definiert sind. Die Inserts erfolgen nicht direkt in die physische Datei/Tabelle (was generell sowieso keine gute Idee ist), sondern über die View.

Woher weißt Du eigentlich dass der Sonderwert DEFAULT nicht Standard ist, könnte es nicht sein, dass andere Datenbanken-Hersteller den DEFAULT einfach nicht integriert haben, da ihre Datenbanken nicht nach Standard funktionieren?

Da du nun auf den Begriff "DEFAULT" beim Insert hinweist stellt sich mir die Frage, wie ich diesen
a) im ILE/RPG
b) beim CPYF
Habe ich bereits in meinem 1. Post gesagt!
Wenn Du einen Satz mit RPG schreibst bleibt das ID-Feld einfach 0 oder wird explizit mit clear initialisiert. Mehr nicht!
Die folgenden 3 Zeilen sind ein Auszug unserer Anwendung aus einer ganz normalen RPG-Prozedur, in der ein Datensatz in eine Tabelle mit Idenitity Column geschrieben wird. (Die Identitity Spalte ist allerdings NICHT mit implicitly hidden definiert)
Code:
          Clear GblDSDWACTLOGP.ACID;
          Write  DWACTLOGF GblDSDWACTLOGP;                                   

           Exec SQL Set :RtnId = Identity_Val_Local();
Beim CPYF habe ich bereits gesagt, dass man mit *MAP/*DROP kopiert, also, dass die Spalte erst gar nicht übergeben wird. Sollte man jedoch mit CPYF in eine Datei mit Identity Column kopieren wollen und die Spalte ist vorhanden und man will die Original-Werte beibehalten, führt man zunächst einen ALTER TABLE aus und konvertiert GENERATE ALWAYS in GENERATE BY DEFAULT. Nach dem Kopieren wird zurückgestellt. Man sollte allerdings dann den Anfangs-Wert für die ID im Anschluss einstellen.

Was die Defintion der Identity Spalte als Implicitly Hidden angeht.
Führ doch einfach die folgenden Satements aus und schau Dir das Ergebnis an:

Code:
Create Table YourSchema.myTable
(MyInt   Integer Not NULL Default 0,
 MyChar  VarChar(10) not NULL default '')
; 

Commit;

Insert into YourSchema.MyTable 
Values(100, 'AAA'), (200, 'BBB'), (300, 'CCC')
;

Commit;

Create Table YourSchema.MyTableX
(MyInt  Integer      Not NULL Default 0,
 MyId   Integer      Generated Always as Identity IMPLICITLY HIDDEN,
 MyChar VarChar(10)  not NULL Default '');

Commit; 
 
Select * from YourSchema.Mytablex; 
Select MyId, a.* from YourSchema.MyTablex a;
  

Insert into YourSchema.MyTableX
Select * from YourSchema.MyTable;

Commit;

Select MyId, a.* from YourSchema.MyTablex a;

Delete from YourSchema.mytable;
 
Commit;

Insert into YourSchema.myTable

Commit;

Select * from YourSchema.mytablex;

Ich lasse mich gerne überzeugen wenn du mir eine Lösung bringst, die folgende Bedingung erfüllt:

- sichtbare Identity-Spalte
- generate always (also unabhängig davon ob das Feld mit oder ohne Inhalt angegeben wurde)
Wie wär's mit ausprobieren?

Birgitta