Zum Inhalt springen

funrecycler

Tipps und Tutorials

Primäres Menü
  • Startseite
  • Start
  • 2010
  • Juli
  • 21.
  • VB.net – ascii zu ebcdic converter

VB.net – ascii zu ebcdic converter

iang 21. Juli 2010 4 Minuten gelesen

Wenn ihr zum Beispiel eine keyede DATAQ auf einer AS400 beschreiben wollt, müsst ihr zusätzlich zu den übergebenen Daten noch den Key mit mitsenden. Dieser muss zuvor von ASCII in EBCDIC gewandelt werden. Nun biete .net zwar viele Konverter von Haus aus an aber leider nicht das EBCDIC Format. Wenn ihr noch mehre Keys bestücken wollt, geht dies natürlich wieder am einfachsten über ein Funktion. In Worten: Man übergibt der Funktion ein String Array und erhält ein EBCDIC Byte Array zurück. In meinen Fall möchte ich einen Key mit max. 4 Zeichen konvertieren, meine zu beschreibende DATAQ hat einen Key von max. 4 Zeichen. Das Format beschränkt sich auf 0-9 und A-Z. Wie immer, Kommentare helfen beim späteren zurechtfinden!

Funktion:

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'funktion - ascii zu ebcdic konverter
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Public Function func_ascii_to_ebcdic(sub_text As String)

Funktion definieren, Übergabevariable

Dim str_con(3) As string
Dim ary_translate(35,1) As String

str_con = Rückgabevariable, ary_translate werden die ASCII <> EBCDIC Werte zugewiesen

ary_translate(0,0) = "&HF0"
ary_translate(0,1) = "0"
ary_translate(1,0) = "&HF1"
ary_translate(1,1) = "1"
ary_translate(2,0) = "&HF2"
ary_translate(2,1) = "2"
ary_translate(3,0) = "&HF3"
ary_translate(3,1) = "3"
ary_translate(4,0) = "&HF4"
ary_translate(4,1) = "4"
ary_translate(5,0) = "&HF5"
ary_translate(5,1) = "5"
ary_translate(6,0) = "&HF6"
ary_translate(6,1) = "6"
ary_translate(7,0) = "&HF7"
ary_translate(7,1) = "7"
ary_translate(8,0) = "&HF8"
ary_translate(8,1) = "8"
ary_translate(9,0) = "&HF9"
ary_translate(9,1) = "9"

Nun etwas Copy&Paste Arbeit. Wie ihr sehen könnt, besitzt meine ary_translate Variable nur 2 Werte in der letzteren Dimension. 0 enthält immer den EBCDIC Byte Wert, 1 immer den ACSII Wert.

ary_translate(10,0) = "&HC1"
ary_translate(10,1) = "A"
ary_translate(11,0) = "&HC2"
ary_translate(11,1) = "B"
ary_translate(12,0) = "&HC3"
ary_translate(12,1) = "C"
ary_translate(13,0) = "&HC4"
ary_translate(13,1) = "D"
ary_translate(14,0) = "&HC5"
ary_translate(14,1) = "E"
ary_translate(15,0) = "&HC6"
ary_translate(15,1) = "F"
ary_translate(16,0) = "&HC7"
ary_translate(16,1) = "G"
ary_translate(17,0) = "&HC8"
ary_translate(17,1) = "H"
ary_translate(18,0) = "&HC9"
ary_translate(18,1) = "I"
ary_translate(19,0) = "&HD1"
ary_translate(19,1) = "J"
ary_translate(20,0) = "&HD2"
ary_translate(20,1) = "K"
ary_translate(21,0) = "&HD3"
ary_translate(21,1) = "L"
ary_translate(22,0) = "&HD4"
ary_translate(22,1) = "M"
ary_translate(23,0) = "&HD5"
ary_translate(23,1) = "N"
ary_translate(24,0) = "&HD6"
ary_translate(24,1) = "O"
ary_translate(25,0) = "&HD7"
ary_translate(25,1) = "P"
ary_translate(26,0) = "&HD8"
ary_translate(26,1) = "Q"
ary_translate(27,0) = "&HD9"
ary_translate(27,1) = "R"
ary_translate(28,0) = "&HE2"
ary_translate(28,1) = "S"
ary_translate(29,0) = "&HE3"
ary_translate(29,1) = "T"
ary_translate(30,0) = "&HE4"
ary_translate(30,1) = "U"
ary_translate(31,0) = "&HE5"
ary_translate(31,1) = "V"
ary_translate(32,0) = "&HE6"
ary_translate(32,1) = "W"
ary_translate(33,0) = "&HE7"
ary_translate(33,1) = "X"
ary_translate(34,0) = "&HE8"
ary_translate(34,1) = "Y"
ary_translate(35,0) = "&HE9"
ary_translate(35,1) = "Z"

Die ary_translate Variable enthält nun alle Großbuchstaben und die Ziffern 0 bis 9.

For x = 0 To 3
    For y = 0 To 35
        If UCase(mid(sub_text, x + 1,1)) = ary_translate(y,1) Then
            str_con(x) = ary_translate(y,0)
        End If
    Next
Next

Über UCase und mid nimmt man jeweils ein Zeichen des übergebenen Strings und vergleicht diesen über die Schleifen mit den entsprechenden Werten in der ary_translate Variable. Bei Übereinstimmung wird der Byte Wert in die Rückgabevariable gespeichert.

Return str_con
End Function

Wert zurückgeben und Funktion beenden. Bei der Rückgabe handelt es sich um ein Array, dementsprechend wird beim Aufruf als Empfangsvariable auch ein Array erwartet. Möchtet ihr mehr als 4 Zeichen konvertieren, müsst ihr die Arrays auf eure gewünschte Größe anpassen. Bei nicht vorbestimmten Array Größen könnte man auch mit array.length in den Schleifen arbeiten. Anwendung: als praktisches Beispiel in dem nächsten VB.net Beitrag In Deutschland wird das EBCDIC Format 273 verwendet.

Beitragsnavigation

Zurück: Parkour video from the 1930s
Weiter: Update – VB.net – ascii zu ebcdic converter

Verwandte Geschichten

wetterGW2

Davis Vantage Pro2 im Smart Home: ein kürzerer Weg für die eigenen Wetterdaten

iang 10. Oktober 2026
platformio-logo.17fdc3bc

Installation von Plattform.io unter Linux

iang 18. Oktober 2018

Powertracking mit einem Garmin eTrex Vista HCx ohne geocache_visits.txt

iang 9. Dezember 2013
Neueste Beiträge
  • Davis Vantage Pro2 im Smart Home: ein kürzerer Weg für die eigenen Wetterdaten
  • ARISS/ISS-SSTV unter Ubuntu empfangen: SDRangel mit Doppler-Korrektur, PipeWire und QSSTV
  • Synology: Benutzerpasswort per SSH ändern
  • CHIRP-Unterstützung für den Yaesu FT-991A
  • Meshcore nRF52840 OTA Firmware update. Repeater
Archive
  • Oktober 2026
  • September 2026
  • Juli 2026
  • Februar 2026
  • November 2025
  • Oktober 2025
  • August 2025
  • Februar 2024
  • Januar 2024
  • Oktober 2023
  • Juli 2023
  • Januar 2023
  • Juni 2020
  • April 2020
  • Januar 2020
  • August 2019
  • Mai 2019
  • März 2019
  • Dezember 2018
  • November 2018
  • Oktober 2018
  • September 2018
  • Juni 2014
  • Mai 2014
  • April 2014
  • März 2014
  • Januar 2014
  • Dezember 2013
  • November 2013
  • Oktober 2013
  • Juli 2013
  • April 2013
  • März 2013
  • Januar 2013
  • Dezember 2012
  • November 2012
  • September 2012
  • August 2012
  • Juli 2012
  • Juni 2012
  • Mai 2012
  • April 2012
  • März 2012
  • Februar 2012
  • Januar 2012
  • Dezember 2011
  • November 2011
  • Oktober 2011
  • September 2011
  • August 2011
  • Juli 2011
  • Juni 2011
  • Mai 2011
  • April 2011
  • März 2011
  • Februar 2011
  • Januar 2011
  • Dezember 2010
  • November 2010
  • Oktober 2010
  • September 2010
  • August 2010
  • Juli 2010
  • Juni 2010
  • Mai 2010
  • April 2010
  • März 2010
  • Februar 2010
  • Januar 2010
  • Dezember 2009
  • November 2009
  • Oktober 2009
  • September 2009
  • August 2009
  • Juli 2009
  • Juni 2009
  • Mai 2009
  • April 2009
  • März 2009
Kategorien
  • Allgemein
  • Amateurfunk
  • Android
  • AVR
  • CNC
  • Computer & Technik
  • Datenleck
  • Games
  • Grafik
  • GSM
  • Hardware
  • Kniffe und Tricks
  • Linux
  • Mac
  • meshcore
  • Mikrokontroller
  • misc
  • Politik
  • Programmieren
  • Reviews
  • Software
  • Technik, Trends & News
  • Techniknews
  • Tools
  • Tutorial
  • Video
  • Webseiten
  • yvotd

Das hast du vielleicht versäumt

wetterGW2

Davis Vantage Pro2 im Smart Home: ein kürzerer Weg für die eigenen Wetterdaten

iang 10. Oktober 2026
ChatGPT-Bild-4.-Okt.-2026-18_58_22

ARISS/ISS-SSTV unter Ubuntu empfangen: SDRangel mit Doppler-Korrektur, PipeWire und QSSTV

iang 4. Oktober 2026
syno

Synology: Benutzerpasswort per SSH ändern

iang 9. September 2026
chirp

CHIRP-Unterstützung für den Yaesu FT-991A

iang 21. Juli 2026
Urheberrecht © Alle Rechte vorbehalten. | MoreNews von AF themes.