1. Bitanweisungen
Bisher wurde bei den Bitanweisungen
SET BIT i OF f [TO g] und GET BIT i OF f [INTO g] geprüft, ob das Feld f zeichenartig ist, wobei üblicherweise auch X-Felder, X-Strings und flache Strukturen als zeichenartig betrachtet wurden. Für UP ist dies nicht mehr sinnvoll, da einerseits die Typen X und XSTRING nicht mehr als zeichenartig gelten, anderseits der bitweise Zugriff auf zeichenartige Felder oder Strukturen nicht mehr unabhängig von der Plattform ist. Deshalb muß bei diesen Operationen in UP das Feld f vom Typ X oder XSTRING sein.Bei den Bitmaskenoperationen
f O x, f Z x und f M x waren bisher für den linken Operanden f alle zahlartigen und damit auch alle characterartigen Typen erlaubt. In UP muß der Operand f nun den Typ X oder XSTRING haben.2. Addition von Feldfolgen
Bei der Addition von Feldfolgen sind in UP Einschränkungen für folgende Anweisungen verbindlich:
ADD n1 THEN n2 UNTIL nz [ ACCORDING TO sel ] GIVING m
...ADD n1 THEN n2 UNTIL nz TO m [ RANGE str ].
ADD n1 FROM i1 GIVING m [ RANGE str ].
3. Schleifen
Schleifen mit dem Zusatz VARY oder VARYING sind auch für Unicode problematisch, weil einerseits ein typgerechter Zugriff auf Speicherinhalte nicht sichergestellt ist, andererseits Seicher ungewollt überschrieben werden kann.
DO
... VARYING f FROM f1 NEXT f2.Bei dieser Anweisung müssen die Felder f, f1 und f2 zueinander typkompatibel sein. Um das Überschreiben von Speicherinhalten zu verhindern, wird bei den folgenden Anweisungen implizit oder explizit ein RANGE für zulässige Zugriffe eingeführt:
DO
... TIMES VARYING f FROM f1 NEXT f2 [ RANGE f3 ].WHILE
... VARY f FROM f1 NEXT f2 [ RANGE f3 ].Es wird wiederum ein Syntax- oder Laufzeitfehler ausgelöst, falls f1 oder f2 nicht von f3 umfaßt werden. Fehlt der Zusatz RANGE, dann wird dieser aus
FROM f1 NEXT f2 implizit so bestmmt:Wird als RANGE-Zusatz eine tiefe Struktur angegeben, dann wird bei jedem Schleifendurchlauf geprüft, daß innerhalb des gerade überstrichenen Bereiches keine Feld- und Objektreferenzen, Tabellen oder Strings liegen.
4. Erzeugung von Unterprogrammen
Bei der automatischen Erzeugung von Unterprogrammen mittels Anweisung
GENERATE SUBROUTINE POOL itab NAME name erbt das generierte Programm den Inhalt des Unicode-Flags des generierenden Programms.5. Abspeichern von Programmen
Bei der automatischen Erzeugung von Programmen mittels Anweisung
INSERT REPORT prog FROM itab werden wie bisher Default-Werte für den TRDIR-Eintrag gesetzt. Diese Anweisung erhält unter anderem den neuen Zusatz UNICODE ENABLING uc, mit dem das Unicode-Flag des eingefügten Reports den Wert von uc erhält. Fehlt dieser Zusatz, dann wird nach folgendem Muster verfahren:6. Typisierung bei GET/SET PARAMETER
Bei den Anweisungen
GET PARAMETER ID pid FIELD f und GET PARAMETER ID pid FIELD f muß f zeichenartig sein. Für die Ablage nicht zeichenartiger Felder und Strukturen können EXPORT- und IMPORT-Anweisungen benutzt werden.7. Nicht erreichbare Anweisungen
Nicht erreichbare Anweisungen führen in Unicode-Programmen zu einem Syntaxfehler. In Nicht-Unicode-Programmen gab dies bisher nur eine Syntaxwarnung.
8. Funktionsbausteine mit falschen Parameternamen
Der Aufruf eines Funktionsbausteins, dessen Parameternamen statisch als Literal oder als Konstante angegeben werden, führt in Unicode-Programmen zu einer behandelbaren Ausnahme, wenn ein falscher Parametername angegeben wird. Dies gilt nur für Funktionsbausteine, die nicht via Remote Function Call aufgerufen werden. In Nicht-Unicode-Programmen wurde ein falscher Name bisher ignoriert.