[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2006
    Beiträge
    348

    Binärer Vergleich zweier *PGM Objekte auf Gleichheit

    Hallo zusammen,

    ich würde gerne auf einer AS/400 feststellen, ob zwei Programmobjekte (*PGM oder auch *SRVPGM) den gleichen ausführbaren Code enthalten.
    Leider hilft mir das Sourceänderungsdatum der enthaltenen *MODULE nicht weiter, da sich dieses Datum ändern kann, jedoch der eigentlich Quellcode gleich bleibt. Das ist der Fall, wenn beispielsweise der Quellcode von einem git respository auf die AS/400 heruntergeladen wird und sich dadurch das Modifikationsdatum ändert.

    Man hat also eine Bibliothek mit allen kompilierten Programmobjekten. Irgendwann wird dann der komplette Quellcode von git nochmals erneut auf die AS/400 überspielt und neu in eine andere Bibliothek kompiliert. Nun möchte man feststellen, welche Programme sich tatsächlich geändert haben, um dann die geänderten Programmobjekte auf das eigentliche Zielsystem zu überspielen.
    Die zu vergleichenden Objekte wurden alle auf der gleichen LPAR mit gleichem Release erstellt. Sollte sich natürlich einmal das Release ändern, jemand mit CHGPGM die Optimierungsstufe ändert oder die Exportkennung eines eingebunden *SRVPGMs sich ändert, so muss das Objekt als "geändert" ermittelt werden.

    Mit DMPOBJ bekommt man leider nur ein Spool. Ein entsprechendes API habe ich leider nicht gefunden.

    Hatte jemand schon mal ein ähnliches Problem?

    Viele Grüße
    Matthias
    Last edited by schatte; 10-09-20 at 15:24. Grund: Codepage Fehler korrigiert.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Nein, das Problem hatte ich bisher nicht.

    Aber es gäbe da einen Umweg:
    Sichere die zu vergleichenden Objekte je in eine SAVF. Diese kannst du native öffnen und dann vergleichen.
    Da alle Informationen (Code/Importe/Exporte/Signaturen) enthalten sind, kannst du eine Differenz ermitteln. Allerdings mit einem Problem:
    Auch das Erstelldatum der Module sowie Sourceinformationen ist Bestandteil des Objekts, und du bekommst somit eine Differenz.
    Berechtigungen sind da ebenso aufgehoben und du bekommst eine Differenz.

    Ich denke, da kommst du um MI-Programmierung kaum herum.
    Hier hat sich schon mal einer Mühe gemacht:
    https://www.mcpressonline.com/progra...rface-of-ibm-i

    Allerdings galt dies noch für V5R3. Möglicherweise hat sich ja nicht so viel geändert.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Apr 2019
    Beiträge
    43
    Naiver Vorschlag:
    Wenn's nur um die Gleichheit zweier Objekte geht, könnte man nur die Größe der Objekte vergleichen?

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Die Größe von Objekten bemisst sich in 4K-Schritten. Da kann ganz schön viel geändert sein.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Apr 2005
    Beiträge
    385
    Hallo,

    es gibt eine Tool Sammlung (for free). diese Berechnet den Hashwert der Objekte und gibt diese aus:

    https://software.projex.com/cmpobj-compare-objects/

    VG
    David

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Hast du dies auch mal ausprobiert in dem du ein Programm in 2 Libs jeweils separat neu erstellst?
    Jedes Modul/Objekt bekommt dann ein geändertes Erstelldatum, dass u.U. in die Berechnung einfließt.
    Ist das nicht der Fall oder kann man das ausschließen, dann erstelle das 2. Programm mit einer minimalen Codeänderung, z.b. statt "Feld += 1" in "Feld += 2" und prüfe dann ob es eine Differenz gibt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Jun 2006
    Beiträge
    348
    Zitat Zitat von ExAzubi Beitrag anzeigen
    Hallo,

    es gibt eine Tool Sammlung (for free). diese Berechnet den Hashwert der Objekte und gibt diese aus:

    https://software.projex.com/cmpobj-compare-objects/

    VG
    David
    Darüber war ich beim Suchen auch gestolpert. Hatte mich jedoch nicht überzeugt, da auch das Sourcedatum/Uhrzeit verglichen wird, was sich in meinem Fall trotz gleicher Source ändern kann.
    Und sollte das Sourcendatum/zeit gleich sein, so bezieht sich das Sourcedatum auch nur auf die Hauptsource des Moduls und nicht auf evtl. rein kopierte Header (*.h).

    Ansonsten schon mal Danke in die Runde für die Hinweise.
    Last edited by schatte; 16-09-20 at 20:20. Grund: Korrektur Codepageprobleme nach erneuter Anmeldung am Forum und Speichern der Antwort.

Similar Threads

  1. Artikel: Agile Softwareentwicklung: 18 Tools im Vergleich
    By NEWSolutions Redaktion in forum NEWSolutions artikel
    Antworten: 0
    Letzter Beitrag: 23-01-18, 12:11
  2. Geschütze Objekte
    By KingofKning in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 20-07-17, 13:42
  3. SQL mit Vergleich ANzahl Sätzen pro Kunde
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 06-06-14, 13:44
  4. Objekte Überwachen
    By homerun in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 25-04-03, 11:37
  5. Gross-/Klein Vergleich ILE RPG
    By cicero22 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 22-04-03, 21:03

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •