ich hab eine Displayfile, in der ich auf ein Feld in einer mit DDL erzeugten Tabelle referenzieren möchte.
Das Problem, bei kompilieren haut mit der Kompiler "Länge der Schlüsserlwortwertes ungültig" um die Ohren.
Das liegt an einem zu langem Feldnamen, den die Displayfile sich als Alias zu gute machen will. Wenn ich das Alias selbst angebe kommt der gleiche Fehler.
stimmt, mit bigint hab ich den gleichen fehler bekommen.
scheinbar kann im dspf keine referenzierung mit bigint feldern erzeugt werden.
mit numeric gehts:
create table test (verladedokumentation_kategorie_id numeric (18, 0))
das gleiche problem hatte ich schon mal in RPG, als ich testhalber eine sql-tabelle mit einer spalte anlegte, von der die art in RPG gar nicht unterstüzt wurde. entweder ändert der prekompiler die art oder es kommt ein fehler.
Nicht alle Feldtypen werden von DDS unterstützt!
Das hat mit dem langen Namen nichts zu tun.
Man muss wohl die Fehlermeldung genau interpretieren "Länge ...".
create table test (verladedokumentation_kat_id bigint)
dann wird der kram erstellt.
Ich habe auch noch eine andere ID in der Datei die verladedokumentation_api_id auch als BIGINT und das Feld wird ohne Problem akzeptiert.
Und das hat doch was mit den langen Feldnamen zu tun, die legt die DDS nämlich als ALIAS an.
Das stellt man dann fest, wenn auf Felder aus zwei verschiedenen Dateien referiert und die zufälligerweise beide ID heißen, dann muss man eins der beiden Felder mit den Schlüsselwort ALIAS umbenennen.
CREATE TABLE Test
(verladedokumentation_kat_id For VDKID bigint)
Referenziere auf VDKID (oder wie immer der kurze Name sein soll, er darf nur maximal 10 Stellen enthalten).
Für SQL erstellte Tabellen mit Feldnamen länger als 10 Stellen wird automatisch ein System-Name erstellt (Stelle 1-5 des langen Namens + 5-stelliger laufender Zähler z.B. VERLA00017), es sei denn man gibt wie oben gezeigt einen kurzen Namen vor (LangerName FOR SystemName). Für die Referenzierung, wie auch für den Native I/O muss immer der (kurze) System-Name verwendet werden.
wir haben V5R4 dann sollte es doch mit mehr als 30 Stellen gehen, tut es aber nicht, kann man das Verhalten nicht abstellen irgendwie? Ich brauche das blöde Alias nicht.
Bookmarks