Anmelden

View Full Version : CPYFRMSTMF aus Unicode Text Datei



easchbac
24-04-09, 08:31
hallo,

ich hätte eine frage... ich versuche in einem meiner programme eine .txt-datei (aus einer excel-datei in unicode-text datei gespeichert) mit dem befehl CPYFRMSTMF (CPYFRMSTMF FROMSTMF(&SOURCEPATH) TOMBR(&DESTPATH) MBROPT(*ADD)
STMFCODPAG(*PCASCII) TABEXPN(*NO) ) in eine temporärdatei CSV_TEMP auf der AS400 zu kopieren. die txt-quelldatei sieht auch noch ok aus, nach dem cpyfrmstmf stehen jedoch alle felder in den sätzen mit blanks getrennt im zielfile:

zeile im txt-file: 123 FIRMA XYZ ...
zeile in csv_temp: 1 2 3 F I R M A X Y Z ...

bei der weiterverarbeitung treten dadurch logischerweise fehler auf.

wenn ich die excel-datei am beginn jedoch in eine txt-datei (tabstopp-getrennt) speichere (also nicht unicode text), funktioniert alles wunderbar.

ich hoffe euch ist jetzt alles unklar ;-)...

danke und bin für jeden tipp dankbar.

lg ernst

Fuerchau
24-04-09, 08:35
UNICODE ist ein 2-Byte-Zeichensatz. Excel gibt als je Zeichen 2 Byte aus.
*PCASCII geht aber von normalem 1-Byte-Zeichensatz aus. Du musst also beim Import die CCSID für UCS2 13488 angeben.

easchbac
24-04-09, 09:15
... muss ich dann die CCSID beim befehl CPYFRMSTMF angeben (mit DBFCCSID ??)...

easchbac
24-04-09, 10:24
... muss ich dann die CCSID beim befehl CPYFRMSTMF angeben (mit DBFCCSID ??)...

Fuerchau
24-04-09, 11:18
STMFCODPAG benennt die CCSID der Quelldaten, DBFCCSID die der Zieldaten (falls deine Datei keine eigene CCSID hat).

easchbac
08-05-09, 11:09
hallo, ich habs leider immer noch nicht zum laufen gebracht mit unicode-txt. ich machs mit dem csv-file folgend:

CHGVAR VAR(&SOURCEPATH) VALUE('/idaten/' *CAT &SRCFILE *TCAT '.csv')

CHGVAR VAR(&DESTPATH) VALUE('/QSYS.LIB/QTEMP.LIB/CSV_TEMP.FILE/CSV_TEMP.MBR')

CRTPF FILE(QTEMP/CSV_TEMP) RCDLEN(2000) CCSID(*HEX)

CPYFRMSTMF FROMSTMF(&SOURCEPATH) TOMBR(&DESTPATH) MBROPT(*ADD) STMFCODPAG(*PCASCII) TABEXPN(*NO)


wie soll ich das CPYFRMSTMF für dei unicode variante zusammensetzen?????

danke und lg

Fuerchau
08-05-09, 11:33
STMFCODPAG(13488) DBFCCSID(273)

Da du die PF mit CCSID(65535) erstellst (per CRTPF gehts nicht anders) musst du die DBFCCSID z.B. 273 für deutsch angeben.

easchbac
11-05-09, 07:05
guten morgen,

ich rufe nun den befehl wie folgt auf:
CPYFRMSTMF FROMSTMF('/idaten/KB-IMPORTE/226_AVALE_UNI.txt')
TOMBR('/QSYS.LIB/QTEMP.LIB/CSV_TEMP.FILE/CSV_TEMP.MBR') MBROPT(*ADD)
STMFCODPAG(13488) DBFCCSID(273)

... und bekomme folgenden fehler:
'umsetzung der ccsid wird nicht unterstützt'.

Fuerchau
11-05-09, 09:38
Stimmt leider.
Die CPYxxxSTMF unterstützten das nicht.
Du musst hierfür CPYFRMIMPF bzw. CPYTOIMPF verwenden.

Allerdings musst du die Zieldatei mit einer gültigen CCSID anlegen, *HEX (65535) funktioniert da nicht.