PDA

View Full Version : Darstellungsproblem aus !!! wird ]]]



harkne
21-06-07, 10:00
Hallo zusammen,

ich habe folgendes Problem:

Im SDA habe ich drei Ausrufezeichen als konstanten Text angegeben.

Also
Status soll geändert werden !!!

Im SEU ist dieser Text immer noch so zu sehen.

Ruf ich jetzt das Programm auf welches mir die Maske zeigt sieht man da aber

Status soll geändert werden ]]]

Kann mir jemand sagen an was das liegt ?

Vielen Dank für Eure Mühe

Viele Grüsse Harald

Fuerchau
21-06-07, 10:13
Wieder einmal eine Sache der CCSID.
Welche CCSID hat die Quell-Datei ?
Welche CCSID hat dein Job ?
Welche Hostpage hat deine 5250-Sitzung ?

Grundsätzlich gilt:
Zur Compilezeit werden Konstanten in die Job-CCSID übersetzt, zur laufzeit dann nicht mehr.

CCSID's werden nur übersetzt beim Lesen/Schreiben von
- DB
- MSGF's

Deshalb:
Nach Möglichkeit Konstanten in Dateien (für DSPF's in MSGF's mit gültiger CCSID) auslagern und eben zur Laufzeit laden.

An KEINER Stelle (DB/JOB) sollte CCSID 65535 (*HEX) vorkommen.

Am besten auch den Systemwert QCCSID korrekt setzen.

harkne
21-06-07, 12:10
Da hat er mal wieder recht der Herr Fuerchau ;-)

QDDSSRC hat CCSID 37 Job hat 500

Kann ich die CCSID einfach von 37 auf 500 ändern oder muß ich da auf irgendwas Rücksicht nehmen. Nicht das der dann anfängt Zeichen zu ändern

Fuerchau
21-06-07, 13:15
Nunja, normalerweise funktioniert die Wandlung von 37 zu 500 und zurück.
Wie allerdings steht dein Terminal ?
Auf 500 oder 273 ?

Zwischen Terminal und Job gibts da keine Codewandlung.
Also:
Terminal 273, Job 500, DB 37 =>
Das System glaubt, dass du 500er-Code eingibst, was aber tatsächlich 273 ist.
Beim Schreiben in die DB wird von 500 in 37 gewandelt.
Nun kommts auf den Compile an.
Im Dialog wieder von 37 in 500, im Batch hängts meist vom Systemwert ab.

Der Rest .....

Wichtig:
Job-CCSID und Terminal-Codepage müssen identisch sein !!!

Ein CHGPF der SRC betrifft ALLE Member und führt dann ggf. wieder zur falschen Darstellung (aus ! wird dann sofort wieder ]).

harkne
21-06-07, 13:32
Job und Terminal stimmen. (Denke ich - wenn ich die 5250 Emmulation aufrufe und unter Konfiguration nachschaue steht da Host-Codepage: 500) Beide 500 nur Bildschirmdatei steht auf 37.
Jetzt hab ich bemerkt dass ich die CCSID nicht ändern kann weil die Meldung kommt das die 37 direkt bei der Erstellung der Datei angegeben wurde. Jetzt hab ich versucht eine zweite QDDSSRC zu erstellen und die Member zu kopieren, dann passiert natürlich wieder der Fehler daß er jetzt gleich die !!! in ]]] umsetzt und diese jetzt bereits in der Quelle stehen. Aber egal da kann man ja notfalls danach suchen.
Es sei denn es gibt noch eine andere Möglichkeit.

Vielen Dank für die Hilfe

Fuerchau
21-06-07, 13:54
Das ist so der korrekte Weg.
Anschließend halt die Quelle korrigieren.

Aber nochmal:
Besser wäre es, Texte zur Laufzeit aus einer MSGF mit CCSID per MSGID zu laden. Laufzeitprobleme gibts dabei nicht.

harkne
22-06-07, 07:46
Ich hab noch eine Frage. Ich habe gerade bemerkt dass die QRPGLESRC die CCSID 65535 hat. Du (Fuerchau) hast oben geschrieben das man diese CCSID nie verwenden sollte. Was ist genau das Problem mit dieser CCSID ?

Fuerchau
22-06-07, 10:28
65535 heißt *HEX und unterliegt damit keinerlei Code-Wandlung beim Zugriff.

Beim ODBC-Zugriff z.B. wird ohne speziellen Eingriff in EBCDIC übertragen an statt in ANSI.
Mit Eingriff wird aber default 037 verwendet, was wiederum Umlaute und Sonderzeichen nicht korrekt verwendet.

Solange du in einer geschlossenen Welt bleibst hast du keine Probleme.
Aber wer lebt schon für sich alleine.