PDA

View Full Version : Fehler bei SQLRPGLE Compiler



Joe
10-06-10, 11:18
Hallo Forum.

Ich habe folgende Konstellation auf einem System mit
V5R4:

Programm in einer Testbibliothek mit folgender Anweisung:
Update YPFSISA set SISA03 = :ArchivBez !! Substring(Sisa03, 61, 2940) Where...

Das Programm wird problemlos kompiliert.

Anschliessend kopiere ich das Programm in die Produktivbibliothek auf dem gleichen System (d.h. nur die Quellbibliothek wird geändert) und kompiliere erneut.
Ergebnis:
SQL-Vorkompilierung ist fehlgeschlagen.
Position 9 UPDATE gilt für die gesamte Tabelle. Position 48 Token ! ungültig. Gültige Token:
<ENDE DER ANWEiSUNG>

Hat jemand eine Idee?

Gruß Joe

B.Hauser
10-06-10, 11:27
!! ist nicht international und kann nicht in allen Umgebungen verwendet werden. In manchen Umgebungen muss stattdessen || verwendet werden.

Um dem Ganzen Hickhack zu entgehen ersetzte einfach die doppelten Ausfrufezeichen durch Concat und schon hast Du nirgends Probleme.

Birgitta

Joe
10-06-10, 12:06
!! ist nicht international und kann nicht in allen Umgebungen verwendet werden. In manchen Umgebungen muss stattdessen || verwendet werden.

Um dem Ganzen Hickhack zu entgehen ersetzte einfach die doppelten Ausfrufezeichen durch Concat und schon hast Du nirgends Probleme.

Birgitta

Hallo Birgitta.

Danke für den Hinweis mit Concat. Das hat geklappt.

|| hatte ich bereits probiert, was aber nicht funktionierte.

Aber trotzdem: warum wird das Programm mit der !!-Anweisung auf der gleichen Maschine aus Bibl. A
kompiliert und nicht aus Bibl. B ??

Auf dem System läuft eine Software "*NOMAX" die
ein Backup-System synchronisiert. Kann da evtl. der Grund liegen.

Ich bin jedenfalls ratlos.

Gruß Joe

Fuerchau
10-06-10, 12:15
Das liegt ggf. an der CCSID der SRC-PF. Vielleicht ist diese ja unterschiedlich?

Pikachu
10-06-10, 12:16
Vermutlich ist es auch eine andere Quellendatei, in die der Quelltext des Programms kopiert wird, und da ist wahrscheinlich die CCSID eine andere.

Joe
10-06-10, 12:32
Danke an alle.

Natürlich die CCSID.
1 x 65535 und 1 x 273

Fuerchau
10-06-10, 13:09
Selbst wenn die CCSID's identisch wären und der Compile erfolgreich ist, kannst du zur Laufzeit dann Fehler bekommen.
Das PGM-Objekt unterliegt zur Laufzeit keiner Codewandlung.
Ist deine Job-CCSID zur Laufzeit abweichend zur Compilezeit, fliegt dir der SQL auch wieder um die Ohren, da CCSID-spezifische Zeichen, wie !! oder ||, (varianter Zeichensatz) in der CCSID des Jobs an SQL übergeben werden müssen.