-
Convertierung nach ASCII HEX Code
Hallo zusammen,
ich muss in einem RPG Programm einen String
als ASCI HEX umsetzten.
Hat jemand von euch Idee wie man das am einfachtsen lösen könnte?
Beispiel: TeSt
Soll sein im ASCII
54655374
Gruß
Michael
-
Hallo Michael
Die APIs QDCXLATE und iconv stehen beispielsweise zur Verfügung. Oder Du kannst das CCSID-Konzept verwenden.
Gruss
Jan
-
mh...
besteht das Problem noch?
Ich würde mir da einfach ein kleines Progrämmchen basteln und das über eine Programmladezeittabelle lösen.
Sagt man doch so?
Anbei mal ein kleiner Entwurf, aber Achtung! Ist erstens nicht lauffähig und zweitens nach Oldstyle programmiert sprich mit zwei einfachen eindimensionalen Tabellen.
Und die Formatierung stimmt nicht.
Aber ich denke, so ist es am verständlichsten.
Also der Weg wäre dann:
Inputstring Buchstabe für Buchstabe auseinander nehmen.
Dann den Buchstaben in der Tabelle suchen.
Mit dem gefundenen Platz den Wert (FoundVal) aus zweiter Tabelle holen.
Fertig.
Ist bestimmt schlechter Stil, aber da keiner antwortet ist der schlechteste Vorschlag besser als nix denke ich.
kuempi
PHP-Code:
D InLen S 10I 0
D InChar S 1
D Pos S 5 P 0
D ST1 S 1 DIM(134) CTDATA PERRCD(1)
D ST2 S 2 DIM(134) CTDATA PERRCD(1)
C DO InLen Pos
C EVAL InChar = %SUBST(InString : Pos :1)
C EXSR GETVAL
C ENDDO
C GETVAL BEGSR
C Z-ADD 1 IDX 3 0
C InChar LOOKUP ST1(IDX) 9595
C MOVEL ST2(IDX) FoundVal
C ENDSR
** ST1
a
b
c
....usw
A
B
C
....usw
** ST2
61
62
63
....usw
41
42
43
-
Schön für die Mühe, aber ich denke QDCXLATE war schon das Richtige.
Flexibler ist hier das Convert a Graphic Character String (CDRCVRT, QTQCVRT) API
, da man keine TBL-Objekte mehr benötigt.
-
Hier ein kleines Beispiel mit QDCXLATE.
Code:
d Translate PR ExtPgm('QDCXLATE')
d Length 5P 0 const
d Data 640A options(*varsize)
d Table 10A const
d string s 256a
/free
Translate(256 : string : 'QASCII'); // EBCDIC -> ASCII
/end-free
Die Tabelle QASCII ist in der Bibliothek QSYS vorhanden.
Gruss
Jan
-
Hallo zusammen,
vielen Dank für die Hilfestellung.
Nach einigem Kampf und Hilfe anderer Kollegen sind
wir jetzt ein bischen weiter.
Hier ist der bisherige Lösungsansatz
PHP-Code:
D Translate PR EXTPGM('QDCXLATE')
D TLen 5P 0 CONST
D Buff 32766A OPTIONS(*VARSIZE)
D Table 10A CONST
PHP-Code:
c eval #buff ='Der Wolfgang ist super'
C callp Translate(%len(%trim(#buff))
C :#BUFF :'QTCPASC')
C/EXEC SQL
c+ set :xhex = hex(trim(:#buff))
C/END-EXEC
Gruß
Michael
-
%trim ist soweit gefährlich, dass die Länge falsch berechnet wird, wenn Leerzeichen am Anfang stehen.
%checkr(' ':MyVar) wäre die bessere Alternative, wenn Leerzeichen am Ende nicht übersetzt werden müssen.
QDRCVRT ist insoweit besser, wenn verschiedene JOB-CCSID's relevant werden können und das Ziel ggf. Windows (1252) statt 850 wie in QTCPASC nötig sein sollte.
-
%trim ist soweit gefährlich, dass die Länge falsch berechnet wird, wenn Leerzeichen am Anfang stehen.
%checkr(' ':MyVar) wäre die bessere Alternative, wenn Leerzeichen am Ende nicht übersetzt werden müssen.
... ich würde %TrimR bevorzugen.
Birgitta
Similar Threads
-
By TARASIK in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 14-01-08, 09:02
-
By stoerfang in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 13-12-06, 11:22
-
By kug in forum NEWSboard Drucker
Antworten: 4
Letzter Beitrag: 23-09-06, 07:40
-
By Matthias.Hayn in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 08-05-06, 10:05
-
By Burgy Zapp in forum Intern - Hilfe - Feedback - Tests-Forum
Antworten: 0
Letzter Beitrag: 07-05-04, 15:56
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