Ich habe das seiner Zeit ohne Pointer und Masochismus einfach mit einem SQL-RPGLE gelöst.
Ob das elegant ist - keine Ahnung. War aber zielführend, nicht teuer, und hatte funktioniert
Für jedes Feld der zu untersuchenden Datei ...
Code:SELECT CAST(COLUMN_TEXT AS CHARACTER (50) ccsid 273), SYSTEM_COLUMN_NAME, SYSTEM_TABLE_NAME FROM QSYS2/SYSCOLUMNS WHERE SYSTEM_TABLE_NAME = 'DeineTabelle' AND SYSTEM_TABLE_SCHEMA = 'DeineLib'
... ein SQL-Vergleich auf Feldunterschiede durchführen
... anschließend Fetch into dieses SQL in eine interne DS (hier sqlsatz)Code:SELECT CASE WHEN %trim(p$Datei1) + '.' + %trim(p$Feld) + ' <> ' + %trim(p$Datei2) + '.' + %trim(p$Feld) + ' THEN ' + p$Feld ELSE ' ' END ... n mal für jedes Feld ... FROM p$Datei1 LEFT OUTER JOIN p$Datei2 ON ... WHERE ...
Die Felder mit Datenänderung stehen dann als Feldname jeweils in einem Element von sqxxx.Code:d sqlsatz ds d sq001 70 d sq002 70 ... d sq250 70 d sqlsatzx ds d sqxxx 70 dim(250) ... c+ FETCH NEXT FROM xyz into :sqlsatz ... c move sqlsatz sqlsatzx
Also alles lesen wo sqxxx(p$Counter) <> *blanks ist und ggf. für die Subfileanzeige mit SQL die Vorher/Nachher Werte dieses speziellen Feldes ermitteln.
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)




Mit Zitat antworten
Bookmarks