{"id":1824,"date":"2010-07-21T05:30:06","date_gmt":"2010-07-21T03:30:06","guid":{"rendered":"http:\/\/funrecycler.com\/?p=6881"},"modified":"2010-07-21T05:30:06","modified_gmt":"2010-07-21T03:30:06","slug":"vb-net-ascii-zu-ebcdic-converter","status":"publish","type":"post","link":"https:\/\/funrecycler.com\/index.php\/2010\/07\/21\/vb-net-ascii-zu-ebcdic-converter\/","title":{"rendered":"VB.net &#8211; ascii zu ebcdic converter"},"content":{"rendered":"<p style=\"overflow-wrap:anywhere\">Wenn ihr zum Beispiel eine keyede DATAQ auf einer AS400 beschreiben wollt, m\u00fcsst ihr zus\u00e4tzlich zu den \u00fcbergebenen 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\u00fccken wollt, geht dies nat\u00fcrlich wieder am einfachsten \u00fcber ein Funktion. In Worten: Man \u00fcbergibt der Funktion ein String Array und erh\u00e4lt ein EBCDIC Byte Array zur\u00fcck. In meinen Fall m\u00f6chte ich einen Key mit max. 4 Zeichen konvertieren, meine zu beschreibende DATAQ hat einen Key von max. 4 Zeichen. Das Format beschr\u00e4nkt sich auf 0-9 und A-Z. Wie immer, Kommentare helfen beim sp\u00e4teren zurechtfinden! <\/p>\n<p><!--more--><\/p>\n<p style=\"overflow-wrap:anywhere\">Funktion: <\/p>\n<pre><code>&#x27;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n&#x27;funktion - ascii zu ebcdic konverter\n&#x27;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\nPublic Function func_ascii_to_ebcdic(sub_text As String)<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> Funktion definieren, \u00dcbergabevariable <\/p>\n<pre><code>Dim str_con(3) As string\nDim ary_translate(35,1) As String\n<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> str_con = R\u00fcckgabevariable, ary_translate werden die ASCII &lt;&gt; EBCDIC Werte zugewiesen <\/p>\n<pre><code>ary_translate(0,0) = &quot;&amp;HF0&quot;\nary_translate(0,1) = &quot;0&quot;\nary_translate(1,0) = &quot;&amp;HF1&quot;\nary_translate(1,1) = &quot;1&quot;\nary_translate(2,0) = &quot;&amp;HF2&quot;\nary_translate(2,1) = &quot;2&quot;\nary_translate(3,0) = &quot;&amp;HF3&quot;\nary_translate(3,1) = &quot;3&quot;\nary_translate(4,0) = &quot;&amp;HF4&quot;\nary_translate(4,1) = &quot;4&quot;\nary_translate(5,0) = &quot;&amp;HF5&quot;\nary_translate(5,1) = &quot;5&quot;\nary_translate(6,0) = &quot;&amp;HF6&quot;\nary_translate(6,1) = &quot;6&quot;\nary_translate(7,0) = &quot;&amp;HF7&quot;\nary_translate(7,1) = &quot;7&quot;\nary_translate(8,0) = &quot;&amp;HF8&quot;\nary_translate(8,1) = &quot;8&quot;\nary_translate(9,0) = &quot;&amp;HF9&quot;\nary_translate(9,1) = &quot;9&quot;<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> Nun etwas Copy&amp;Paste Arbeit. Wie ihr sehen k\u00f6nnt, besitzt meine ary_translate Variable nur 2 Werte in der letzteren Dimension. 0 enth\u00e4lt immer den EBCDIC Byte Wert, 1 immer den ACSII Wert. <\/p>\n<pre><code>ary_translate(10,0) = &quot;&amp;HC1&quot;\nary_translate(10,1) = &quot;A&quot;\nary_translate(11,0) = &quot;&amp;HC2&quot;\nary_translate(11,1) = &quot;B&quot;\nary_translate(12,0) = &quot;&amp;HC3&quot;\nary_translate(12,1) = &quot;C&quot;\nary_translate(13,0) = &quot;&amp;HC4&quot;\nary_translate(13,1) = &quot;D&quot;\nary_translate(14,0) = &quot;&amp;HC5&quot;\nary_translate(14,1) = &quot;E&quot;\nary_translate(15,0) = &quot;&amp;HC6&quot;\nary_translate(15,1) = &quot;F&quot;\nary_translate(16,0) = &quot;&amp;HC7&quot;\nary_translate(16,1) = &quot;G&quot;\nary_translate(17,0) = &quot;&amp;HC8&quot;\nary_translate(17,1) = &quot;H&quot;\nary_translate(18,0) = &quot;&amp;HC9&quot;\nary_translate(18,1) = &quot;I&quot;\nary_translate(19,0) = &quot;&amp;HD1&quot;\nary_translate(19,1) = &quot;J&quot;\nary_translate(20,0) = &quot;&amp;HD2&quot;\nary_translate(20,1) = &quot;K&quot;\nary_translate(21,0) = &quot;&amp;HD3&quot;\nary_translate(21,1) = &quot;L&quot;\nary_translate(22,0) = &quot;&amp;HD4&quot;\nary_translate(22,1) = &quot;M&quot;\nary_translate(23,0) = &quot;&amp;HD5&quot;\nary_translate(23,1) = &quot;N&quot;\nary_translate(24,0) = &quot;&amp;HD6&quot;\nary_translate(24,1) = &quot;O&quot;\nary_translate(25,0) = &quot;&amp;HD7&quot;\nary_translate(25,1) = &quot;P&quot;\nary_translate(26,0) = &quot;&amp;HD8&quot;\nary_translate(26,1) = &quot;Q&quot;\nary_translate(27,0) = &quot;&amp;HD9&quot;\nary_translate(27,1) = &quot;R&quot;\nary_translate(28,0) = &quot;&amp;HE2&quot;\nary_translate(28,1) = &quot;S&quot;\nary_translate(29,0) = &quot;&amp;HE3&quot;\nary_translate(29,1) = &quot;T&quot;\nary_translate(30,0) = &quot;&amp;HE4&quot;\nary_translate(30,1) = &quot;U&quot;\nary_translate(31,0) = &quot;&amp;HE5&quot;\nary_translate(31,1) = &quot;V&quot;\nary_translate(32,0) = &quot;&amp;HE6&quot;\nary_translate(32,1) = &quot;W&quot;\nary_translate(33,0) = &quot;&amp;HE7&quot;\nary_translate(33,1) = &quot;X&quot;\nary_translate(34,0) = &quot;&amp;HE8&quot;\nary_translate(34,1) = &quot;Y&quot;\nary_translate(35,0) = &quot;&amp;HE9&quot;\nary_translate(35,1) = &quot;Z&quot;<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> Die ary_translate Variable enth\u00e4lt nun alle Gro\u00dfbuchstaben und die Ziffern 0 bis 9. <\/p>\n<pre><code>For x = 0 To 3\n    For y = 0 To 35\n        If UCase(mid(sub_text, x + 1,1)) = ary_translate(y,1) Then\n            str_con(x) = ary_translate(y,0)\n        End If\n    Next\nNext<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> \u00dcber <em>UCase<\/em> und <em>mid<\/em> nimmt man jeweils ein Zeichen des \u00fcbergebenen Strings und vergleicht diesen \u00fcber die Schleifen mit den entsprechenden Werten in der ary_translate Variable. Bei \u00dcbereinstimmung wird der Byte Wert in die R\u00fcckgabevariable gespeichert. <\/p>\n<pre><code>Return str_con\nEnd Function<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> Wert zur\u00fcckgeben und Funktion beenden. Bei der R\u00fcckgabe handelt es sich um ein Array, dementsprechend wird beim Aufruf als Empfangsvariable auch ein Array erwartet. M\u00f6chtet ihr mehr als 4 Zeichen konvertieren, m\u00fcsst ihr die Arrays auf eure gew\u00fcnschte Gr\u00f6\u00dfe anpassen. Bei nicht vorbestimmten Array Gr\u00f6\u00dfen k\u00f6nnte man auch mit array.length in den Schleifen arbeiten. Anwendung: als praktisches Beispiel in dem n\u00e4chsten VB.net Beitrag In Deutschland wird das <a href=\"http:\/\/de.wikipedia.org\/wiki\/EBCDIC#EBCDIC_273\" style=\"overflow-wrap:anywhere\">EBCDIC Format 273<\/a> verwendet.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn ihr zum Beispiel eine keyede DATAQ auf einer AS400 beschreiben wollt, m\u00fcsst ihr zus\u00e4tzlich zu den \u00fcbergebenen<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[1782,2025,2026,2027,2028,2029,2030,2031],"class_list":["post-1824","post","type-post","status-publish","format-standard","hentry","category-programmieren","tag-ascii","tag-ascii-zu-ebcdic","tag-dataq","tag-dtaq","tag-dtaq-keyed","tag-ebcdic","tag-key-dtaq","tag-vb-net-ebcdic"],"_links":{"self":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/1824","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/comments?post=1824"}],"version-history":[{"count":1,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/1824\/revisions"}],"predecessor-version":[{"id":2836,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/1824\/revisions\/2836"}],"wp:attachment":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/media?parent=1824"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/categories?post=1824"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/tags?post=1824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}