Anmelden

View Full Version : Mailversand von *DOC aus IFS mit ASCII Zeichen



seppiii
10-12-07, 21:50
Hallo zusammen,

die Tipps im Forum haben mir bisher bei diesem Problem sehr weitergeholfen, aber mittlerweile bin ich Ratlos:

Um was geht es:
Ich erstelle aus einer RPG Anwendung ein Document in IFS.


* Define open attributes
c eval oflag = O_WRONLY + O_Create +
c O_TextData + O_TRUNC + O_Codepage
c
c
c
* Define Mode attributes
c eval Mode = S_IRWXU + S_IRWXO
c eval $ftpfile = @GetEDIFile(ftpfil:send#)
c eval file = '/' +%trim(histlib) +
c '/' + 'UPEDI' + '/' + %trim($ftpfile)

c eval fd = open(%trim(file):OFlag:
c Mode:CodePage)
c


Der Wert Codepage ist zur Zeit auf



d CodePage s 10u 0 inz(37)

ich hab es aber auch mit


d CodePage s 10u 0 inz(1252)


versucht.

Die Datei doc wird erstellt nach
/QDSL/Fld/doc

Das klappt auch wunderbar, aber!

Wenn ich Codepage 37 (Epsidik) nehme, kann man den Inhalt im IFS wunderbar lesen.(Ausschnitt)


************Beginning of data**************
020094 20071
A400483191385 00002+000000000


Nach einem Download via FTP auf einen Windows Rechner, läßt sich die Datei ohne Probleme mit dem Texteditor öffnen und lesen.

Nehme ich Codepage 1252 (eigentlich ja ASCII), sieht das erstellte Dokument so aus: (nur ein Ausschnitt)




************Beginning of data**************
ðòððùô@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@òð ð÷ñòñðð
Áôððôøóñùñóøõ@@@@@@@@@@@@@@@@@ððð òNððððððððððððð
ãÅâã@ä×âò@âÁåÅÙ@@@@@@@@@@@@@@@@@@@@Ô ÅÄÉÁ@ÔÁÙÒã@ÂÅ


und genauso kommt es mit FTP dann auch am Windows Rechner an. (die Codepage des Files ist nach dem erstellen
Coded character set ID . . . . . . . . : 5348 , das ist 1252 mit € Zeichen)

Mein Ziel ist es aber, die Datei als Mail zu verschicken, und zwar so, das die Datei richtig (also lesbar) ankommt. Dazu benutze ich nach dem Erstellen in meinem RPGLE Programm den Befehl:



c eval cmd = 'sbmjob job(EDIMAIL) ' +
c 'cmd(SNDDST TYPE(*DOC) TOINTNET(('+
c '''' + %trim(email) + '''' + ')) ' +
c 'DSTD(''UPEDI'') ' +
C 'MSG(''UPEDI for ' +
C %TRIM(#DATE10) + ''') ' +
c 'DOC('+ DOSNAME +')' +
c ' FLR(UPEDI)' +
c ') jobd(CINJOBD) ' +
c 'jobq(QBATCH2) inllibl(*current)' +
c ' USER(MESSAGE)'


Ausgeschrieben lautet er so:

sbmjob job(EDIMAIL) cmd(SNDDST TYPE(*DOC)
TOINTNET(('x@y.com')) DSTD('EDI') MSG('UPEDI
for 10.12.2007') DOC(UP10125) FLR(UPEDI)) jobd(CINJOBD)jobq(QBATCH2)
inllibl(*current) USER(MESSAGE)

Ich habe den Job mit user message submitted, da mit es auch mit jedem Anwender funktioniert. Das ergebnis ist aber ohne submit das Selbe.

Die Mail kommt auch an, aber es ist egal mit welcher CODEPAGE, mann kann es nicht lesen.

Erzeuge ich dagegen das doc mit Codepage 37 und lade es dann per FTP nach Windows, kann ich die Datei lesen und ohne Probleme auch per Mail verschicken (natürlich manuell :( ).


Meine Frage:
Weis jemand, was ich machen kann/muss/soll, damit die Mail vernünftig beim Empfänger ankommt? (Ohne manuelles zutun). Läuft da vielleicht schon beim Erstellen was falsch?

Ich habe es mal versucht, ein Streamfile im IFS zu erstellen, dieses per FTP vom IFS zur "normalen" AS/400 zurück zu schieben (in ein File), es in ein PC Dokument umzuwandeln und es dann wegzuschicken. Das klappt, aber es darf dann höchstens 32600 (oder so) Zeichen lang sein. Das reicht manchmal nicht.

Vielen Dank für euere Hilfe.


seppiii

Fuerchau
10-12-07, 21:55
Das liegt daran, dass QDLS keine CCSID unterstützt. Die C-Routinen machen die Codewandlung automatisch.
FTP kann jedoch keine CCSID erkennen, so dass automatisch EBCDIC angenommen wird.

Entweder du überträgst binär oder du verwendest ein anderes IFS (z.B. "/Home/MyVerz").

seppiii
11-02-08, 09:01
Vielen, vielen Dank.
Das wars, das hat wirklich geholfen.

An das naheliegensde denkt man manchsmal nicht.