Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Herausforderungen bei der Anwendungsmigration
Wenn Sie eine Anwendung von EBCDIC zu ASCII migrieren, empfehlen wir Ihnen, alle EBCDIC-Abhängigkeiten in der Anwendung zu analysieren und zu minimieren. Dies beinhaltet die Analyse von Quellcode-Abhängigkeiten und das Sortieren von Sequenzen.
Quellcodeabhängigkeiten.
Es ist wichtig, die Zeichen zu überprüfen, die zur Darstellung numerischer Werte verwendet werden, da diese Zeichen geändert werden, wenn Ihr Quellcode von EBCDIC nach ASCII konvertiert wird. Einige Mainframe-Programmierer verwenden die folgende Technik, um numerische Daten in einem COMP-Feld in einem Copybook oder im Arbeitsspeicher darzustellen, wie das folgende Beispiel zeigt.
01 CHAR-74 PIC 99 COMP VALUE "¢".
In EBCDIC ist der Wert des vorherigen Beispiels X"41" („74“ als Zahl). Wenn die Quelldaten in ASCII konvertiert werden, wird dieses Zeichen in X"5B“ („91“ als Zahl) geändert. Diese Änderung verursacht kein Compilerproblem, kann jedoch zu Programmierproblemen führen, die nur schwer zu debuggen sind. Das folgende Beispiel zeigt eine effektive Lösung, bei der die Quelle so geändert wird, dass sie den tatsächlichen numerischen Wert enthält.
01 CHAR-74 PIC 99 COMP VALUE 74.
Wir empfehlen Ihnen, die Verwendung von eingebetteten Hex-Zeichen zu überprüfen, wie im folgenden Beispiel.
IF WS-DATA(1:1) = X"5B" …
In EBCDIC testet das vorherige Beispiel das erste Zeichen des Feldes, um festzustellen, ob es „$“ ist. Die ASCII-Darstellung von „$“ ist X"24". Das folgende Beispiel zeigt eine effektive Lösung, bei der das vorgesehene Zeichen verwendet wird.
IF WS-DATA(1:1) = "$" …
Nicht alle „X"nn"-Werte verursachen Probleme. Beispielsweise ist die Konstante NIEDRIGER WERT X"00" und HOHER WERT ist X"FF“. NIEDRIGE WERTE (X"00") werden normalerweise verwendet, um binäre Felder ohne Vorzeichen zu initialisieren. Die folgende Anweisung erfordert beispielsweise keine Änderungen.
MOVE ALL X"00" TO WS-DATA
HOHE WERTE (X „FF“) werden manchmal als Datenmarkierungen verwendet, um sicherzustellen, dass Datensätze am Ende einer SORTIERUNG positioniert werden, oder um das Ende einer Datei zu markieren. Die folgende Anweisung erfordert beispielsweise keine Änderungen.
MOVE ALL X"FF" TO WS-DATA
Beide vorherigen Anweisungen funktionieren in einer EBCDIC- oder ASCII-Umgebung auf die gleiche Weise.
Reihenfolge der Zusammenstellung
In EBCDIC stehen alphabetische Zeichen vor numerischen Werten. In ASCII stehen numerische Werte vor den alphabetischen Zeichen. Folglich gibt ein alphanumerisches Schlüsselfeld in VSAM oder einer Datenbank, die eine Mischung aus alphabetischen und numerischen Werten enthält, nach der Migration Daten in unterschiedlicher Reihenfolge zurück. Es wird empfohlen, die Auswirkungen der Sortiersequenzen auf Anwendungsebene zu analysieren, um die richtige Abhilfestrategie zu ermitteln.
Die folgende Tabelle zeigt ein einfaches Beispiel für alphanumerische Daten und die Sortierung dieser Daten in EBCDIC und ASCII.
EBCDIC |
ASCII |
---|---|
A1 |
1A |
A2 |
2B |
1A |
A1 |
2B |
A2 |
Die Sortierreihenfolge wirkt sich auf die Rückgabe der folgenden Elemente aus:
-
Zugriff mit VSAM-Schlüssel (Hinweis: VSAM-Dateien geben Daten in der Reihenfolge zurück, in der die Datei erstellt wurde. Selbst wenn das COBOL-Programm für die Verwendung einer EBCDIC-Sortiersequenz kompiliert wurde, gibt eine mit einer ASCII-Sortiersequenz erstellte VSAM-Datei Daten zurück, indem sie eine ASCII-Sortiersequenz verwendet. Die ASCII-Sortierreihenfolge kann zu Anwendungsproblemen führen.)
-
Interne oder externe SORT-Funktionen
-
Bedingte Anweisungen
-
SQL-Cursor (Hinweis: Ein SQL-Cursor gibt Daten in der Reihenfolge der Sortierreihenfolge zurück, mit der die Datenbank erstellt wurde, es sei denn, die Sortierreihenfolge ist in der DECLARE-Anweisung definiert. Auch wenn das COBOL-Programm so kompiliert ist, dass es eine EBCDIC-Sortierreihenfolge verwendet, gibt eine Datenbank, die mit einer ASCII-Sortierreihenfolge erstellt wurde, Daten unter Verwendung einer ASCII-Sortierreihenfolge zurück. Die ASCII-Sortierreihenfolge kann zu Anwendungsproblemen führen).
Die Sortierung von Sequenzabhängigkeiten kann sich auch über die Anwendung hinaus auf die physische Welt erstrecken. Beispielsweise könnten die Barcodes auf Lagerplätzen in einem Lagerhaus anhand eines EBCDIC-Werts bestellt werden. Wenn Sie die Anwendung auf ASCII umstellen möchten, müssen möglicherweise die Barcodes auf den Lagerplätzen physisch geändert werden.