[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Dec 2005
    Beiträge
    51

    Question Format Level ID algorithmus

    Es geht um genau das: Die Frage, wie der Format Level Identifier errechnet wird.

    Sicher kommt nun die Frage, wozu das denn ?

    Es ist zwar ganz furchtbar, aber ich versuche das mal zu erklären, hoffentlich ausführlich genug, um die meisten, zu erwartenden Fragen abzudecken:

    Der Kunde (wer sonst) hält hier eine Reihe von in C# geschriebenen Clients vor, die auf PCs laufen und Daten der AS400 verwenden. Es handelt sich dabei um bis zu 10000 gleichzeitig aktive remote-Anwender. Hierzu wird eine Art "self-made" Level-Check eingesetzt, der die Format Level-IDs der AS400 Dateien gegen diejeniger der der Clients prüft.

    Nun kommt der Kracher:

    Die Jungs haben bei der Erstellung der C#-Clients von allen Formaten auf der AS400 die Level-IDs ausgelesen, und FEST in den C# Programmen Hard-Kodiert. Is so, kann ich nix dran machen.

    Soweit wäre das alles einfach nur hässlich, aber noch kein richtiges Problem, denn "es funktioniert doch". Tatsächlich werden hier, bei einer Änderung eines Formats, alle betroffenen Clients auf Source-Basis geändert (neue Level-IDs reingeschrieben) und neu an die rund 10000 Anwender ausgerollt. Auch das scheint zu funktionieren, auch wenn ich den "Architekten" solcher Verbrechen vermutlich ertränken, hängen und vierteilen würde.

    Jetzt aber rächt sich das ganze Ding, weil in Zukunft dieselben Clients auch Daten von anderen (i.e. Linux) System verwenden sollen. Und zwar sollen die Anwender der einen Firma (wie gesagt ein Rechenzentrumsbetrieb) nach wie vor auf der AS400 bleiben, andere aber auf Linux-Systeme gehen. Letzteres ist durchaus OK, weils eben rest mal kleine Piloten braucht um so was umzustellen. Man kann ja schlecht alle Kunden auf einmal über die Klippe stoßen.

    Nur: Die Clients sollen nicht geändert werden. Sie sollen, netzwerkbasiert, einfach ihren alten Scheiß weitermachen, und ihre -hardcodierte- Level-ID auf dem Server abfragen.

    Und das heißt: Die Linux-Server müssten aus Ihren SQL-Daten (Oracle, MariaDB, was auch immer) eine Level-ID errechnen, die möglichst der original ID der AS400 entspricht.

    Grundsätzlich wäre das keine Unmöglichkeit, weil ja die semantischen Zusammenhänge einer Tabellenstruktur im Prinzip auch auf den Linux-Plattformen vorhanden sind: Formatnamen, Felder, deren Längen, Typen und Formate, und deren Reihenfolge z.B.

    Aber ich habe dem Kunden schon gesagt, dass sie da wahrscheinlich vergessen können. Ich finde das ganze Konzept auch schlicht Kagge, aber es gilt die IHS-Theorie: Is Halt So.

    Da ich nun vom Kunden ja dafür bezahlt werde, Lösungen zu finden, frage ich hier eben mal nach: Gibts es ir-gend-eine Chance, den Algorithmus für die Berechnung des Format-Level-Identifiers nachzubauen?

    Gurus, Bitfrickler, Cracks aller Art und Insider bitte ich also herzlich, vorzutreten!

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Da die Id ja nicht im C# errechnet wird sondern nur gegen irgendeine Konstante verglichen wird, brauchst du keine Methode sondern nur eine Zufallszahl, die allerdings mit der Tabelle hart verdrahtet und nie wieder geändert wird.
    Man muss auch nicht dafür sorgen, dass jede Tabelle eine eigene ID hat, da es durchaus dieselbe ID auf mehreren Tabellen gibt.
    Also generiere einfach eine 13-stellige Zufallszahl je Tabelle und gib diese als ID aus.
    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
    Dec 2005
    Beiträge
    51
    So ähnlich wird das wohl ausgehen. Mein Entwurf hier macht das im Prinzip, wobei Dein Vorschlag allerdings noch viel simpler ist. Finde ich gut.

    Kann aber sein, dass der Kunde erst beruhigt ist, wenn es irgendeinen logischen Bezug zur Dateistruktur gibt. ist ein psychologisches Problem, aber wenn er das will, bekommt er das. Das Prinzip bleibt gleich.

    Wer nen Linux-Rechner hat, braucht im Prinzip nur Teile eines Kommentar-befreiten DDS-Formats durch md5sum zu schicken, und fertig ist die Laube.

    Code:
    $ md5sum PF1.DDS 
    935cdf45c1ef93c14a92f1ddcbf2ae74  PF1.DDS
    Trotzdem würde mich, schon aus Neugier, die AS400 Berechnungsmethode der Level-ID interessieren.
    Angehängte Dateien Angehängte Dateien

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Wobei md5 länger als 13 ist, deshalb habe ich diese nicht erwähnt.
    Ob die IBM das jemals offenlegt, zumal die Antwort dann sein wird: wozu? SQL ignoriert dies doch!
    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
    Dec 2005
    Beiträge
    51
    > md5 länger als 13

    Ja ne, klar, aber ist eine Formsache. (md5 modulo 0xFirgendwas) oder so, das wäre nur ein Nebenschauplatz. Die IDs sind übrigens laut IBM auch nicht garantiert eindeutig (wie das bei Hashes eben so ist).

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das hatte ich ja gesagt: "da es durchaus dieselbe ID auf mehreren Tabellen 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
    Mar 2002
    Beiträge
    5.286
    ... vielleicht hilft das ja weiter...

    https://www.ibm.com/support/knowledg...hk.htm#hlvlchk

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. set transaction isolation level
    By sauerm in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 25-10-17, 17:37
  2. security level auf 40 setzen
    By dibe in forum IBM i Hauptforum
    Antworten: 19
    Letzter Beitrag: 21-12-15, 23:48
  3. create tabel ohne level check
    By DEVJO in forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 29-09-15, 15:07
  4. TECHNOLOGY REFRESH Level 8 - Ist IPL nötig zum Anlegen
    By coolie in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 10-10-14, 10:06
  5. Antworten: 3
    Letzter Beitrag: 07-08-14, 16:11

Tags for this Thread

Berechtigungen

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