Dynamisches Lesen von COBOL Neudefinition mit C #
Ich erstelle ein C # -Programm, mit dem ein in COBOL geschriebenes IBM HOST-Copybook dynamisch gelesen und daraus eine SQL-Tabelle generiert werden kann. Sobald die Tabelle generiert ist, kann ich eine Datei in mein Programm hochladen und es liest, konvertiert von IMB-37 und fügt die Datei in diese SQL-Tabelle ein. Bisher kann ich fast alles verarbeiten, obwohl ich mit REDEFINES auf einige Probleme stoße.
Beispielsweise
10 SOME-FIELD PIC 9(3) COMP-3. SCRRB205
4117 10 SOME-OTHER-FIELD REDEFINES 3041-17
4117 SOME-FIELD PIC X(2). 3041-17
Ich verstehe, dass die Neudefinierung in diesem Fall die Stelle des darüber liegenden Feldes einnimmt, obwohl ich nicht verstehe, wie der Compiler weiß, ob er die Neudefinierung verwenden soll oder nicht. Ich gehe davon aus, dass es in diesem Fall daran liegt, dass die erste Zahl eine Zahl ist, bei der die zweite ein Zeichen ist, obwohl sie im folgenden Beispiel alle Zeichen verwenden.
05 STREET-ADDRESS.
10 ADDRESS-LINE-1 PIC X(20).
10 ADDRESS-LINE-2 PIC X(20).
05 PO-BOX REDEFINES STREET-ADDRESS PIC X(40).
Ich habe versucht, die Neudefinitionen einfach zu ignorieren, da sie immer den gleichen Platz beanspruchen, aber in dem Fall, in dem das ursprüngliche Feld gepackt und das neu definierte nicht vorhanden ist, muss ich nicht wissen, wann das Feld entpackt werden soll.
Jede Hilfe dabei wäre erstaunlich, Jungs!