-
 Zitat von camouflage
So wie ich es verstehe, musst du statischen Text welchen du an ein Dokument anhängst, verarbeiten.
Wieso machst du nicht dafür für jede Sprache ein IFS-File, welches du dann mit UTF8 oder was auch immer einlesen kannst. Damit du das File in der Anwendung findest, kannste ja immer noch eine Tabelle mit Sprache/Ablageort erstellen. (Google: Klement IFS)
Danke für die Idee. Es sind aber leider ein paar zu viele Texte, als dass ich diese Lösung präferieren würde.
 Zitat von Fuerchau
Kommt immer drauf an, wie komplex man die Aufgabe versteht.
Sicherlich kann ich die DPSF mit dem Typ G13488 die Eingabe und Ausgabe der Terminalcodepage in das Programm in UCS2 bekommen und mit der DB verwalten.
Für alle Nicht-G-Felder gilt aber weiterhin, dass der Job in Terminal-CCSID sein muss und die Konvertierbarkeit von/zur DB gewährleistet sein muss.
Dies funktioniert ausschließlich mit kompatiblen CCSID.
Job 870 und DB 273 scheitert einfach, dann ist eben UCS2/Unicode erforderlich.
Wenn ich dies beherzige und die gleichzeitige Darstellung von ost-/west-/sonstigen Sprachen nicht erforderlich ist, kann man das durchaus machen.
Wie kann man das machen?
Ich kann das Programm so gestalten, dass immer nur eine Sprache erfasst werden kann. Die Sprache steht auch mit in der PF.
-
Voraussetzung ist natürlich, dass die Jobumgebung zum User passt.
Da kann man über die Spracheinstellung im USRPRF und Systemwerte entsprechende Einstellungen für die automatische Anpassung der Job-CCSID machen.
Die 5250-Sitzung des Users muss dann ebenso der Sprache zugeordnet sein.
Beispiel:
User Deutsch = Job 273 = Codepage 1141
User Französisch = Job 297 = Codepage 1147
User Polnisch = Job 870 = Codepage 1153
Alleine durch die Möglichkeit, dass der Job mal in 273/297 (Westeuropa) oder in 870 (Osteuropa) sein kann, darf die DB nicht mit 273 erstellt sein.
Neutrale Zeichenfelder, also invariante Zeichen, sollten in 65535 erstellt werden (hier gibts aber ODBC-Probleme), alle anderen Zeichenfelder müssen in Unicode (UCS2/UTF16) erstellt werden.
Dann kann man durchaus zwischen Unicode und DSPF (nicht Unicode) Daten austauschen.
Wichtig ist natürlich, dass bei der falschen CCSID-Quelle (also deutschen Daten auf polnischen Sitzungen und umgekehrt) Verfälschungen passieren.
Wenn du die Sprache in der PF hast, kannst du ja eine Änderung der Daten ablehnen, eine Anzeige wäre da unschädlich.
Ein generelles Problem hast du natürlich mit dem Rest der Anwendung.
Schließlich müssen sich alle Programme wärend der Sitzung so verhalten. Du kannst es nicht auf eine Datei beschränken.
Sobald ein Programm in einer Umgebung (Job 870, Datei 273) aufgerufen wird, fällt der Open schon auf die Nase.
-
Danke für die Antwort. Ich hatte deinen letzten Kommentar so verstanden, dass es nicht nur um die Darstellung, sondern auch um die Änderbarkeit in verschiedenen Sprachen geht. Also unabhängig von der Sitzungs- und Job-Einstellung. Habe ich dann falsch verstanden.
Diese Lösung werde ich wohl einsetzen. Anzeige immer, Ändern nur bei bestimmten Sprachen. Die anderen Sprachen werden wir dann erst mal mit SQL "erfassen" und dann später mal mit einem .NET-Programm.
-
Auch da musst du allerdings aufpassen!
Machst du z.B. im iSeries Navigator per SQL einen
insert into mytable (text) values('griechische zeichen')
Wird der reine SQL-Text als SBCS an die AS/400 übergeben und mit der Default-CCSID (bei QCCSID 65535 wird dies ggf. 037 sein) übergeben und damit geht dein kyrillisch verloren.
Auch wenn ich mich nun selber bewerbe, du kannst es mit meinem Upload/400 tun:
Erfasse die Fremdsprachen entsprechend in Excel (das kann Unicode), lege die sprachspezifischen Felder als Unicodefelder (UCS2) an und lade die Daten dann per Upload/400 auf die AS400.
Dann bleibt es auch Unicode / UCS2.
-
 Zitat von Fuerchau
Wird der reine SQL-Text als SBCS an die AS/400 übergeben und mit der Default-CCSID (bei QCCSID 65535 wird dies ggf. 037 sein) übergeben und damit geht dein kyrillisch verloren.
Wie kann ich das prüfen? Ich hatte es nämlich genau so getestet, wie du das oben beschrieben hast und danach passten die Daten. Die Ausgabe mit select sah genauso aus, wie ich es eingegeben hatte.
-
a) mit welchem Programm (STRSQL, also 5250, Navigator)
b) CCSID's der Datei, des Jobs, ggf. Connection-Einstellung
Alternativ muss per Navigator auch "insert into MyTable (Text) values(N'Sprachtext')" funktionieren.
Die Konstante in N'...' wird als UTF16 interpretiert und das Zielfeld sollte auch N[VAR]CHAR definiert sein.
-
Über den Navigator, wie du geschrieben hattest.
Der Job hat CCSID 273.
Die Datei zeigt über DSPFD keine CCSID, da es verschiedene sind.
Die betroffene Spalte zeigt über DSPFFD:
ID des codierten Zeichensatzes . . . . . : 13488
UCS2- oder Unicode-Konvertierung . . . . : *CONVERT
Die Spalte ist im DDS definiert als:
A TEST 100G CCSID(13488)
Im Navigator selbst habe ich nur diese Daten gefunden. An der Connection selbst sehe ich nichts entsprechendes. Gibt es noch mehr?
Die JDBC-Eigenschaften aus "SQL-Prozeduren ausführen" zeigen package ccsid: 13488
SQL-Details für Job zeigt nach einem Insert, die Anweisungs-CCSID 273 an. Nach einem Select die 13488.
-
OK, da der Navigator ja mit Java umgeht, wird es wohl so sein, dass der SQL als UCS2-String an die AS/400 gesendet wird. Im OLEDB/ODBC ist das nämlich nicht standard.
Nur so zur Sicherheit kannst du die Konstanten ja trotzdem mal mit N'...' auf UCS2 erzwingen.
Dies sollte dann mit jeder Anwendung funktionieren, wenn keine Parametermarker verwendet werden können.
-
 Zitat von Fuerchau
Im OLEDB/ODBC ist das nämlich nicht standard.
Gut zu wissen (für später). Worauf muss ich da achten? Ist das die Einstellung "CCSID für SQL-Anweisung"?
-
Das weiß ich nicht auswendig, schau mal in die Doku:
http://www-01.ibm.com/support/docvie...d=nas8N1017400
Ggf. gibts da auch schon eine neuere.
-
Ich habe ein unerwartetes Problem mit der PRTF. Glaube ich.
Ich hatte zu dem Thema einiges gelesen und dachte es müsste so funktionieren.
Ich habe das erst mal auf ein sehr einfaches Beispiel heruntergebrochen.
PF:
PHP-Code:
A R TESTPFA A TEST 100G CCSID(13488)
PRTF:
PHP-Code:
A R TEST A TEXT 100G 1FONTNAME('Monotype Sans WT SC' + A (*POINTSIZE 12.0)) A CCSID(13488 *NOCONVERT) A SPACEA(1)
CRTPRTF mit DEVTYPE(*AFPDS)
Auszug aus RPG:
PHP-Code:
setll 1 TESTPF.TESTPFA; for i = 1 to 24; read TESTPF.TESTPFA DS_TESTPF; DS_TESTPRTF.TEXT = DS_TESTPF.TEST; write TESTPRTF.TEST DS_TESTPRTF; endfor;
Die PF habe ich dann wie vorher erwähnt per SQL mit Daten gefüllt. Per select sieht der Inhalt gut aus.
Der erzeugte Spool ist aber nicht lesbar. Ich nahm an, das wäre normal, wegen der UCS-Daten. Aber es soll wohl nicht normal sein.
Was mache ich hier noch falsch?
Similar Threads
-
By dibe in forum NEWSboard Programmierung
Antworten: 20
Letzter Beitrag: 25-02-16, 15:33
-
By DEVJO in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 11-09-15, 18:45
-
By petzi-mg in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 06-11-14, 07:51
-
By HEMO in forum NEWSboard Server & Hardware Markt
Antworten: 0
Letzter Beitrag: 03-04-03, 14:20
-
By alex in forum NEWSboard Drucker
Antworten: 4
Letzter Beitrag: 14-03-02, 17:26
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks