v60NumWithCharBehavior
Die Builddeskriptoroption v60NumWithCharBehavior wirkt sich auf die EGL-Handhabung des Typs NUM in Zuordnungen und Vergleichen aus.
Ab Version 7 wird der Typ NUM in Zuordnungen und Vergleichen mit CHAR-Werten von EGL wie andere numerische Typen behandelt.
Ist die Builddeskriptoroption v60NumWithCharBehavior mit YES definiert, entspricht die EGL-Verarbeitung von Variablen des Typs NUM der in früheren Versionen und in VisualAge Generator üblichen Verarbeitung. Die Unterschiede im Verhalten sind subtil und komplex. Definieren Sie diese Option nur mit YES, wenn VisualAge Generator emuliert werden muss. Weitere Informationen hierzu können Sie den in diesem Abschnitt angegebenen Beispielen entnehmen.
VisualAge Generator und Version 6.0 verhalten sich für generierte OBOL-Programme beim Verschieben und Zuweisen von Daten unterschiedlich. In VisualAge Generator wurde das Zeichen des numerischen Werts im Gegensatz zu Version 6.0 nicht vor dem Verschieben oder Zuweisen der Daten geändert. Anders gesagt, wurde in VisualAge Generator eine Byte-Verschiebung mit keinerlei Änderungen durchgeführt, während in Version 6.0 zwar auch eine Byte-Verschiebung stattfindet, jedoch erst, nachdem das Zeichen als anzeigbarer NUM-Wert festgelegt wurde. In den meisten Fällen ist dieser Unterschied nicht offensichtlich, er kann sich jedoch auf Verschiebungen auswirken, wenn das NUM-Feld ein Byte enthält, dessen höchstwertiges Halbbyte ein heximales C (x'Cx') enthält. Wenn das gewünschte Ergebnis ist, das Verhalten von VisualAge vollständig zu emulieren, muss der zusätzliche symbolische Parameter VAGNUMWITHCHARBEHAVIOR daher auch auf den Wert 'YES' gesetzt werden.
Die Option v60NumWithCharBehavior kann sich auf das Verhalten anderer Builddeskriptoroptionen, z. B. spacesZero und blanksAsZero, auswirken. Weitere Informationen hierzu finden Sie in spacesZero und blanksAsZero.
Werte
- NO
- EGL behandelt den Typ NUM wie die übrigen numerischen Typen.
- YES
- EGL behandelt den Typ NUM wie in VisualAge Generator üblich.
Standardwert
- Ist vagCompatibility mit YES definiert, lautet der Standardwert für v60NumWithCharBehavior YES.
- Ist vagCompatibility mit NO definiert, lautet der Standardwert für v60NumWithCharBehavior NO.
Manuelles Definieren der Option
In den meisten Fällen ist es nicht erforderlich, die Builddeskriptoroption v60NumWithCharBehavior manuell zu definieren.
- Wenn Sie eine Migration von VisualAge Generator vorgenommen haben, können Sie auf ein manuelles Definieren von v60NumWithCharBehavior verzichten, da die Option automatisch mit YES definiert wird, wenn vagCompatibility mit YES definiert ist.
- Wenn Sie keine Migration von VisualAge Generator vorgenommen haben, können Sie auf ein manuelles Definieren von v60NumWithCharBehavior verzichten, da die Option automatisch mit NO definiert wird, wenn vagCompatibility mit NO definiert ist.
- Beim Schreiben neuer Anwendungen, bei denen die Arbeitsbereichsvorgabe vagCompatibility mit YES definiert ist, müssen Sie die Builddeskriptoroptionen v60NumWithCharBehavior und vagCompatibility explizit mit NO definieren, wenn Sie nicht das Standardverhalten von VisualAge Generator übernehmen möchten.
Beispiele
if( "2009-03-26" > 0)
...
end
Die Null wird für den Vergleich in "0" geändert. Beim Verhalten von Version 7 ist 0 eine Zahl und der Vergleich schlägt fehl, da "2009-03-26" eine ungültige Zahl ist.
num_var NUM = -4;
char_var CHAR(1);
char_var = num_var; // value of char_var is 't'
- + 't' (x'74') im Debugger und in der Java™-Generierung
- + 'M' (x'D4') in der generierten COBOL
Beim Verhalten von Version 7 ergäbe sich der Wert '4' für char_var.