{"id":6881,"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>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.<br \/>\nIn Worten: Man \u00fcbergibt der Funktion ein String Array und erh\u00e4lt ein EBCDIC Byte Array zur\u00fcck.<br \/>\nIn 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.<br \/>\nWie immer, Kommentare helfen beim sp\u00e4teren zurechtfinden!<br \/>\n<!--more-->Funktion:<\/p>\n<pre lang=\"VB\">'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n'funktion - ascii zu ebcdic konverter\n'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\nPublic Function func_ascii_to_ebcdic(sub_text As String)<\/pre>\n<p>Funktion definieren, \u00dcbergabevariable<\/p>\n<pre lang=\"VB\">Dim str_con(3) As string\nDim ary_translate(35,1) As String\n<\/pre>\n<p>str_con = R\u00fcckgabevariable, ary_translate werden die ASCII &lt;&gt; EBCDIC Werte zugewiesen<\/p>\n<pre lang=\"VB\">ary_translate(0,0) = \"&amp;HF0\"\nary_translate(0,1) = \"0\"\nary_translate(1,0) = \"&amp;HF1\"\nary_translate(1,1) = \"1\"\nary_translate(2,0) = \"&amp;HF2\"\nary_translate(2,1) = \"2\"\nary_translate(3,0) = \"&amp;HF3\"\nary_translate(3,1) = \"3\"\nary_translate(4,0) = \"&amp;HF4\"\nary_translate(4,1) = \"4\"\nary_translate(5,0) = \"&amp;HF5\"\nary_translate(5,1) = \"5\"\nary_translate(6,0) = \"&amp;HF6\"\nary_translate(6,1) = \"6\"\nary_translate(7,0) = \"&amp;HF7\"\nary_translate(7,1) = \"7\"\nary_translate(8,0) = \"&amp;HF8\"\nary_translate(8,1) = \"8\"\nary_translate(9,0) = \"&amp;HF9\"\nary_translate(9,1) = \"9\"<\/pre>\n<p>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 lang=\"VB\">ary_translate(10,0) = \"&amp;HC1\"\nary_translate(10,1) = \"A\"\nary_translate(11,0) = \"&amp;HC2\"\nary_translate(11,1) = \"B\"\nary_translate(12,0) = \"&amp;HC3\"\nary_translate(12,1) = \"C\"\nary_translate(13,0) = \"&amp;HC4\"\nary_translate(13,1) = \"D\"\nary_translate(14,0) = \"&amp;HC5\"\nary_translate(14,1) = \"E\"\nary_translate(15,0) = \"&amp;HC6\"\nary_translate(15,1) = \"F\"\nary_translate(16,0) = \"&amp;HC7\"\nary_translate(16,1) = \"G\"\nary_translate(17,0) = \"&amp;HC8\"\nary_translate(17,1) = \"H\"\nary_translate(18,0) = \"&amp;HC9\"\nary_translate(18,1) = \"I\"\nary_translate(19,0) = \"&amp;HD1\"\nary_translate(19,1) = \"J\"\nary_translate(20,0) = \"&amp;HD2\"\nary_translate(20,1) = \"K\"\nary_translate(21,0) = \"&amp;HD3\"\nary_translate(21,1) = \"L\"\nary_translate(22,0) = \"&amp;HD4\"\nary_translate(22,1) = \"M\"\nary_translate(23,0) = \"&amp;HD5\"\nary_translate(23,1) = \"N\"\nary_translate(24,0) = \"&amp;HD6\"\nary_translate(24,1) = \"O\"\nary_translate(25,0) = \"&amp;HD7\"\nary_translate(25,1) = \"P\"\nary_translate(26,0) = \"&amp;HD8\"\nary_translate(26,1) = \"Q\"\nary_translate(27,0) = \"&amp;HD9\"\nary_translate(27,1) = \"R\"\nary_translate(28,0) = \"&amp;HE2\"\nary_translate(28,1) = \"S\"\nary_translate(29,0) = \"&amp;HE3\"\nary_translate(29,1) = \"T\"\nary_translate(30,0) = \"&amp;HE4\"\nary_translate(30,1) = \"U\"\nary_translate(31,0) = \"&amp;HE5\"\nary_translate(31,1) = \"V\"\nary_translate(32,0) = \"&amp;HE6\"\nary_translate(32,1) = \"W\"\nary_translate(33,0) = \"&amp;HE7\"\nary_translate(33,1) = \"X\"\nary_translate(34,0) = \"&amp;HE8\"\nary_translate(34,1) = \"Y\"\nary_translate(35,0) = \"&amp;HE9\"\nary_translate(35,1) = \"Z\"<\/pre>\n<p>Die ary_translate Variable enth\u00e4lt nun alle Gro\u00dfbuchstaben und die Ziffern 0 bis 9.<\/p>\n<pre lang=\"VB\">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<\/pre>\n<p>\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 lang=\"VB\">Return str_con\nEnd Function<\/pre>\n<p>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.<br \/>\nAnwendung: als praktisches Beispiel in dem n\u00e4chsten VB.net Beitrag<br \/>\nIn Deutschland wird das <a title=\"wiki ebcdic\" href=\"http:\/\/de.wikipedia.org\/wiki\/EBCDIC#EBCDIC_273\" target=\"_blank\" rel=\"noopener\">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":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[298,299,689,834,835,863,1494,2820],"class_list":["post-6881","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\/6881","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=6881"}],"version-history":[{"count":0,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/6881\/revisions"}],"wp:attachment":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/media?parent=6881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/categories?post=6881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/tags?post=6881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}