Projekte

COBOL-Programme nach DELPHI umgesetzt

Problem I (Speichermanagement)

Die Umsetzung von COBOL-Programmen in eine andere Programmiersprache ist sehr problematisch, da das Speichermanagement von COBOL so in keiner anderen Programmiersprache Anwendung findet.

D.h. um ein COBOL-Programm umsetzen zu können bedarf es erst einmal die Möglichkeit das Speichermanagement abzubilden. Dazu entwickelten wir eine Funktionsbibliothek, mit welcher das Anlegen, Auslesen und Speichern von Daten analog der Vorgehensweise in COBOL möglich ist.

Besonderheiten hier waren die Abbildung von internen Tabellen (OCCURS…), die nochmalige Definition eines Speicherbereichs (REDEFINES…) und die Unterdefinition von Variablen.

Auszug aus einem COBOL-Programm:

       05 ART-TEXT                PIC X(30).
       05 FILLER                  REDEINFES ART-TEXT.
          07 ART-LAENGEX          PIC X(4).
         
07 FILLER              REDEFINES ART-LAENGEX.
            
09 ART-LAENGE        PIC 9(4).
          07 FILLER               PIC X.
          07 ART-LAENGE-MM-TEXT   PIC XX.
         
07 FILLER               PIC X.
          07 ART-BREITEX          PIC X(4).
          07 FILLER               REDEFINES ART-BREITEX.
             09 ART-BREITE        PIC X(4).
          07 ART-BREITE-MM-TEXT   PIC XX.
          07 FILLER               PIC X(16).
       06 FILLER                         REDEFINES ART-TEXT.
          07 ART-TEXT-ZEICHEN     PIC X                     OCCURS 30.

Problem II (der "GO TO"-Befehl)

Die nächste Hürde war der "GO TO"-Befehl: Mit diesem besteht die Möglichkeit innerhalb eines Programms, bzw. einer Prozedur an definierte Punkte (Labels) zu springen.

Was die wenigsten wissen: DELPHI unterstützt den GOTO-Befehl ebenfalls!!! D.h. hier konnte durch Defintion der LABELS eine 1:1-Umsetzung erfolgen!

Problem III (Die Befele START, READ, READ NEXT und WRITE)

Die letzte Hürde waren das Lesen und Schreiben der Daten, da diese nicht mehr in Dateien, sondern in SQL-Server-Tabellen gespeichert waren.

Hier war es unumgänglich jeden LESE- und SCHREIB-Befehl in neue Prozeduren, bzw. Funktionen umzusetzen, was aber nur ca. 2% der eigentlichen Umsetzungen waren.

Das Ergebnis

COBOL:

       MOVE WS-ARTNR TO ARTIKEL-ARTNR.
       MOVE ZERO     TO ARTIKEL-ARTNR-SUBNR.
       START ARTIKEL KEY NOT LESS ARTIKEL-KEY.
       IF DATEI-STATUS = "99" GO TO A999.

       READ ARTIKEL NEXT AT END
          GO TO A999.

       IF ARTIKEL-ARTNR NOT = WS-ARTNR
          GO TO A999.

DELPHI:

       MOVEVAR('WS-ARTNR','ARTIKEL-ARTNR');
       MOVECONST(ZERO    ,*ARTIKEL-ARTNR-SUBNR');
       if not START_ARTIKEL() then
          GOTO A999;

       if not READ_ARTIKEL_NEXT() then
          GO TO A999;

       if GETVAR('ARTIKEL-ARTNR') <> GETVAR('WS-ARTNR') then
          GOTO A999;

 

News
BüroWARE 5.4
BüroWARE-Version 5.4 wurde freigegeben...
zusätzliche BüroWARE Zertifizierungen
BüroWARE Factory & BüoWARE Fashion
Interview-Software für Marktforschungsinstitut
BETA-Test WEB-basierender CATI-Software
COBOL to DELPHI
COBOL-Batch-Programme nach Delphi und SQL-Server umgesetzt
NEWS-Archiv
inside on GmbH · Engerstr. 50 · 32051 Herford · +49 (52 21) 12 20 80