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

Der Standardwert für v60NumWithCharBehavior richtet sich nach der Builddeskriptoroption vagCompatibility:
  • 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

Wenn v60NumWithCharBehavior mit YES definiert ist, können Sie folgende Vergleiche vornehmen:
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.

Ist v60NumWithCharBehavior mit YES definiert, ordnet EGL über eine Byte-Verschiebung einen Wert des Typs NUM zu einem Wert des Typs CHAR zu.
num_var NUM = -4;
char_var CHAR(1);

char_var = num_var; // value of char_var is 't'
Der Wert für 'char_var' lautet:
  • + 't' (x'74') im Debugger und in der Java™-Generierung
  • + 'M' (x'D4') in der generierten COBOL
Diese Werte zeigen, wie unterschiedlich negative Zahlen in ASCII und EBCDIC dargestellt werden.

Beim Verhalten von Version 7 ergäbe sich der Wert '4' für char_var.