Hallo Zusammen,

ich habe ein Trigger Programm welches an verschiedenen Dateien hängt.
Dieses Trigger Programm empfängt den jeweiligen Datensatz (before/after) als Pointer.
Der Pointer wiederum wird in eine String Variable übergeben.
Im Debug liegt dann der gesamte Datensatz als String vor. Man kann alle Daten lesen.
Ein Dateifeld ist vom Typ BigInt. Dieses wird mir bereits im Debug als ? dargestellt.
Definiere ich die Dateistruktur mit 'extname' und übergebe dann den String direkt in die Struktur, wird das BigInt Feld ohne Probleme übergeben. Wenn ich versuche mit %subst o.ä. den Wert einzeln aus dem String zu extrahieren schlägt dies fehl. Entweder es kommt ein Abbruch oder der Wert ist falsch/nicht lesbar o.ä. (je nach Befehl).

Dies ist erstmal das grundsätzliche Problem.
Nachfolgend mal ein paar Bilder dazu.

Entsprechende Datei um die es geht ist ein SQL Table.
Das Feld ist wie folgt definiert:

eindeutigeID for AKID bigint generated always as identity (start with 1 increment by 1 cycle),


Nun der Prozedur Auszug mit Dateistruktur bei welchem es problemlos funktioniert.

// Prozedur zur Ermittlung der Eindeutige ID des Datensatzes.
dcl-proc pr_ErmittleEindeutigeSatzId_1;

dcl-pi *n like(eindeutigeId);
datenVorVorgang pointer const;
datenNachVorgang pointer const;
dateiBibliothek char(10) const;
dateiName char(10) const;
end-pi;

dcl-s daten char(900) based(datenNachVorgangLokal);
dcl-s startPosition int(5) inz(777);
dcl-s laengeInBytes int(10) inz(8);
dcl-s eindeutigeId varchar(100) inz;

// Eindeutige ID aus den Pointer Informationen extrahieren.
datenNachVorgangLokal = datenNachVorgang;
eindeutigeId = %subst(daten: startPosition: laengeInBytes);

return eindeutigeId;
end-proc;


Nun der Prozedur Auszug bei dem das Feld einzeln extrahiert werden soll.
Hier funktioniert es nicht.

// Prozedur zur Ermittlung der Eindeutige ID des Datensatzes.
dcl-proc pr_ErmittleEindeutigeSatzId_1;

dcl-pi *n like(eindeutigeId);
datenVorVorgang pointer const;
datenNachVorgang pointer const;
dateiBibliothek char(10) const;
dateiName char(10) const;
end-pi;

dcl-s daten char(900) based(datenNachVorgangLokal);
dcl-s startPosition int(5) inz(777);
dcl-s laengeInBytes int(10) inz(8);
dcl-s eindeutigeId varchar(100) inz;

// Eindeutige ID aus den Pointer Informationen extrahieren.
datenNachVorgangLokal = datenNachVorgang;
eindeutigeId = %subst(daten: startPosition: laengeInBytes);

return eindeutigeId;
end-proc;



Bin für jeden Hinweis dankbar!


Gruß
Muller