PDA

View Full Version : Konvertierung



Bratmaxxe
09-11-07, 13:29
Moin zusammen,

ich stehe wie ein Ochs vorm Berg und komme nicht weiter...

Folgendes Anliegen:

In einem 1200 großen Feld steht ein Hexstring - den ich mittlerweile konvertieren kann:




....5...10...15...20...25...30...35...40...45...50 ...55...60
1 'ó© K ~Í© Û'
61 'ÁÃ:uÅÁËuÑËȧ íáâ ÑËÈá íáâ { '
121 'ÑËÈ ÑËÈ íáâ ÑËȧ íáâ § ÑËÈ '
181 'ÑËÈ íáâ ÑËÈ ÑËÈ ÑËÈ ÑËÈ '
241 'ÑËÈ íáâ ÑËÈ ÑËÈ ÑËÈ ÑËÈ '
301 ' ÑËÈ íáâ ÑËÈ ÑËÈ ÑËÈ '
361 'ÑËÈ< ÑËÈË íáâ ÑËÈ íáâ ÑËÈ '
421 'ÑËÈ ÑËÈ ÑËÈ ÑËÈ ÑËÈË Ë ÑËÈ '
481 ' ÑËÈ íáâ ÑËÈ íáâ ÑËÈ íáâ '
541 ' ÑËÈ ÑËÈ ÑËÈï íáâ ï ÑËÈ íáâ '
601 ' ÑËÈ ÑËÈ ÑËÈ» íáâ i ÑËÈ- íáâ '




nach-->




....5...10...15...20...25...30...35...40...45...50 ...55...60
1 '31313020CE0431343120B4003131302028053132312010FF3 1333120D200'
61 '313332201E0031343120590131313020750331343120B4003 1313020FB04'
121 '313431200D0265667A20A40167657320A401697374207C005 54542202C00'
181 '3132312033006973742045005545422002003132312043003 13332200200'
241 '697374202B00313231202B006973742009005545422009003 13332200900'
301 '697374207C00554542201800313231207C006973742003003 13231200300'
361 '697374202300554542201200313231201800313332200B006 97374200800'
421 '6973742005003132312005006973742027006973742009003 13231200900'
481 '697374202E00554542202E00313332202E006973742015003 13231201500'
541 '6973742008003132312008006973742009003132312009006 97374201000'
601 '313231201000697374202000554542201600313231200A003 13332201600'



Konvertiert wurde mit der folgenden Funktion:




* (Hexadezimal to char)
D cvtHexToChar pr extproc('cvthc')
D Char * value
D Hex * value
D CharSize 10i 0 value




Die ersten beiden Stellen aus dem konvertierten String (31) repräsentieren nun ein Character

<TABLE id=table1 cellSpacing=0 cellPadding=0 width="30%" border=1><TBODY><TR><TH width="12%" rowSpan=2>Character</TH><TH width="24%" colSpan=2>EBCDIC 37</TH><TH width="12%" rowSpan=2>ASCII 819</TH><TH width="12%" rowSpan=2>QASCII</TH><TH width="12%" rowSpan=2>QTCPASC</TH><TH width="12%" rowSpan=2>ASCII 367</TH><TH width="24%" colSpan=2>UTF-8</TH><TH width="24%" colSpan=2>UTF-16</TH><TH width="12%" rowSpan=2>UCS-2</TH></TR><TR><TH width="12%">Hex</TH><TH width="12%">Dec</TH><TH width="12%">Hex</TH><TH width="12%">Dec</TH><TH width="12%">Hex</TH><TH width="12%">Dec</TH></TR></TBODY></TABLE>
<TABLE id=table1 cellSpacing=0 cellPadding=0 width="30%" border=1><TBODY><TR><TD align=middle width="12%" bgColor=white>1</TD><TD align=middle width="12%" bgColor=white>x'F1'</TD><TD align=middle width="12%" bgColor=white>241</TD><TD align=middle width="12%" bgColor=white>x'31'</TD><TD align=middle width="12%" bgColor=white>x'31'</TD><TD align=middle width="12%" bgColor=white>x'31'</TD><TD align=middle width="12%" bgColor=white>x'31'</TD><TD align=middle width="12%" bgColor=white>x'31'</TD><TD align=middle width="12%" bgColor=white>000049</TD><TD align=middle width="12%" bgColor=white>x'0031'</TD><TD align=middle width="12%" bgColor=white>00049</TD><TD align=middle width="12%" bgColor=white>x'0031'</TD></TR></TBODY></TABLE>

Tabelle einzusehen unter:
EBCDIC to ASCII Conversion Table (http://www.rpgiv.com/rpg-lab/showascii)

x'31' ist demnach als Character eine 1


Nur wie komme ich jetzt auf die 1 ???

Über Hilfe wäre ich dankbar,

Gruß und schönes Wochenende
Bratmaxxe

Fuerchau
09-11-07, 14:09
Ich nehme mal an, dass dein 1200-byte-Feld bereits ASCII-Daten enthält.

Du musst also nur QDCXLATE aufrufen um von ASCII nach EBCDIC umzuwandeln.

Besser gehts jedoch mit folgendem API:

Convert a Graphic Character String (CDRCVRT, QTQCVRT) API (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/apis/CDRCVRT.htm)

Bratmaxxe
13-11-07, 10:54
Danke Dir Fuerchau,

das API CDRCVRT (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/apis/CDRCVRT.htm) funktioniert bestens...

Gruß
Bratmaxxe