PDA

View Full Version : Zeichenumsetzung x'41' auf Blank



bernd_at
27-08-10, 10:51
Hallo zusammen,

ich muss für eine Schnittstelle eine Datei mit fixer Satzlänge erstellen. Die Datei wird mit dem RequiredBlank x'41' an der letzten Stelle gekennzeichnet, damit die Sätze danach abgeschnitten werden beim Befehl:
CPYTOSTMF STMFCODPAG(*STDASCII) ENDLINFMT(*CRLF)

Wie schaffe ich es, dass auf der Zieldatei das X'41' auf ein "echtes" Blank ersetzt wird?

Danke für eure Unterstützung.

Fuerchau
27-08-10, 11:09
Du darfst dann kein x'41' in deine Datei schreiben.

bernd_at
27-08-10, 12:15
Du darfst dann kein x'41' in deine Datei schreiben.

Das war die falsche Antwort ;-)

Wie bekomme ich sonst Blanks nach dem letzten Zeichen in die Datei, damit ich am Ende zu der gewünschten fixen Satzlänge komme ?

Fuerchau
27-08-10, 12:28
Das ist schon die richtige Antwort.
Der CPY-Befehl kann keine Zeichenersetzung durchführen.
Da dein ENDLINFMT aber *CRLF ist, werden Leerzeichen am Ende entfernt.
Mit *FIXED bekommst du aber kein *CRLF.
Lösung:
Schreibe das CRLF an Stelle des X'41' ans Ende deiner Sätze und gib mit *FIXED dann aus.

Machst du eine Code-Wandlung musst du CRLF in EBCDIC X'0D25' ausgeben, ansonsten in ASCII X'0D0A'.

bernd_at
27-08-10, 13:15
Das ist schon die richtige Antwort.
Der CPY-Befehl kann keine Zeichenersetzung durchführen.
Da dein ENDLINFMT aber *CRLF ist, werden Leerzeichen am Ende entfernt.
Mit *FIXED bekommst du aber kein *CRLF.
Lösung:
Schreibe das CRLF an Stelle des X'41' ans Ende deiner Sätze und gib mit *FIXED dann aus.

Machst du eine Code-Wandlung musst du CRLF in EBCDIC X'0D25' ausgeben, ansonsten in ASCII X'0D0A'.


Danke dir, ich wollte nur die Änderung der Datei umgehen.

Dabei kommt mir noch diese Frage hoch: wozu brauche ich dann das x'41' ?

Danke dir nochmals für die Nachhilfe !

Fuerchau
27-08-10, 13:54
Ich weiß ja nicht, wie du auf das x'41' gekommen bist.
Ich kann nur vermuten, dass damit eben die Leereichen vor dem X'41' erhalten bleiben sollten, da dieses nun mal kein Blank ist und in EBCDIC nicht dargestellt wird.

Allerdings kannst du im CPYTOSTMF auch explizit eine Tabelle angeben.
Die Tabelle QUSRSYS/Q273337437 (PC-ASCII-Englisch) bzw. QUSRSYS/Q273337850 (PC-ASCII-Deutsch) wandelt X'41' auch in Blank X'20' um.

Versuchs doch mal damit.
Ich weiß allerdings nicht, wann der CPY-Befehl die Leerzeichen abschneidet.
Probleme gibts auch ggf. mit Umlauten.