View Full Version : 10stellige Integer -Zahl im RPG
Hallo,
ich habe ein Problem bei der Verwendung eines 10-stelligen Integerfeldes.. Die Datei ist mit SQL generiert und diese hat als Schlüsselfeld besagtes Integer-Feld.
Wenn ich nun aus dem RPG dieses Feld benutze (zum lesen, positionieren), dann kann ich immer nur 9-stellige Zahlen benutzen (weil es ja als Binärfeld dem RPG zur Verfügung gestellt wird und das hat nur max. 9 Stellen). Gehen tut da garnix mehr.
Gibts da einen Workaround, mit dem ich die Datei trotzdem noch im RPG verwenden kann?
Nur im RPGLE, dort wird das Feld als:
D MyInt 10I 0
definiert.
tja,
wenn ich das 10I 0 - Feld als Schlüssel benutzen will, dann gibt es eine Fehlermeldung, dass die Länge nicht mit der des Schüsselfeldes der Datei übereinstimmt. Das Feld ist für RPGLE ja auch "nur" 9 Stellen groß.
Ich werde mein Glück mal mit embedded SQL probieren.
Danke für den Tip
Jürgen
Das liegt leider an den nativen Datei-IO-Interfaces, die mit solchen Definitionen scheinbar nicht zurechtkommen (bzw. daran, dass der RPGLE-Compiler an dieser Stelle nicht erweitert wurde).
Die neuen Feldtypen sind mit SQL für Dateien und ansonsten nur als interne Arbeitsfelder verwendbar.
Bei SQL kann ich sogar mit 10-stellig gezonten/gepackten Feldern arbeiten, es erfolgt dann halt eine Umsetzung und ggf. ein SQL-Fehler, wenn die Umsetzung zum Feldüberlauf führt.
tja,
wenn ich das 10I 0 - Feld als Schlüssel benutzen will, dann gibt es eine Fehlermeldung, dass die Länge nicht mit der des Schüsselfeldes der Datei übereinstimmt. Das Feld ist für RPGLE ja auch "nur" 9 Stellen groß.
Ich werde mein Glück mal mit embedded SQL probieren.
Danke für den Tip
Jürgen
Hallo alle zuammen,
es ist natürlich möglich Feld-Inhalte aus Integer Feldern, mit einem Wert > als 999.999.999 einzulesen und zu verarbeiten.
Dazu muss lediglich das Schlüssel-Wort EXTBININT(*YES) in den H-Bestimmungen angegeben werden.
Ist dieses Schlüssel-Wort nicht oder mit *NO angegeben, werden Integer Felder in extern beschriebenen Dateien in gepackte Felder umgesetzt. Wird EXTBININT(*YES) angegeben werden Binär- bzw. Integer-Felder in extern beschriebenen Dateien wie folgt umgesetzt:
Binär-Felder mit weniger oder gleich 4-Stellen und ohne Nachkomma-Stellen bzw. SMALINT Felder in SQL werden in 5P 0 konvertiert.
Binär-Felder mit mehr als 4-Stellen und ohne Nach-Kommastellen bzw. INTEGER Felder in SQL werden in 10P 0 konvertiert.
Felder, die in SQL mit BIGINT definiert wurden werden in 20P 0 konvertiert.
(Wird für die Datei eine externe Datenstruktur definiert werden die einzelnen Integer Felder mit 5I 0, 10I 0 bzw. 20I 0 definiert)