{"id":5673,"date":"2010-03-17T10:23:04","date_gmt":"2010-03-17T08:23:04","guid":{"rendered":"http:\/\/funrecycler.com\/?p=5673"},"modified":"2010-03-17T10:23:04","modified_gmt":"2010-03-17T08:23:04","slug":"vb-net-as400-dataq-lesen-schreiben","status":"publish","type":"post","link":"https:\/\/funrecycler.com\/index.php\/2010\/03\/17\/vb-net-as400-dataq-lesen-schreiben\/","title":{"rendered":"VB.net &#8211; AS400 DATAQ lesen &amp; schreiben"},"content":{"rendered":"<p>Zugegeben, dieses Tutorial richtet sich nicht an den Hobby Programmierer. Die meisten Nerds werden eine AS400 von IBM nicht im Keller stehen haben. F\u00fcr alle die aber in ihrer Firma mit solch einer Datenbankmaschine arbeiten, k\u00f6nnte der folgende Code ganz n\u00fctzlich sein.<br \/>\nDATAQs auf der AS400 stellen eine praktische Schnittelle dar, welche sich lesen und beschreiben lassen. Dabei existieren 2 verschiedene Arten. DATAQ keyed und FIFO (first in, first out), letzteres werde ich per VB.net ansprechen um Daten direkt in meinen Programm zu verwenden.<br \/>\n<!--more--><strong>cwbx.dll<\/strong><br \/>\nDie cwbx.dll ist unsere Schnittstelle zur AS400. Diese Datei ist im ISeries Client enthalten und muss als Addin in das Projekt eingebunden werden.<br \/>\n<a href=\"http:\/\/funrecycler.com\/wp-content\/uploads\/2010\/03\/dataq.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5710\" title=\"dataq\" src=\"http:\/\/funrecycler.com\/wp-content\/uploads\/2010\/03\/dataq.png\" alt=\"\" width=\"482\" height=\"411\" \/><\/a><br \/>\nSharpDevelop &gt; Projekt &gt; Refernez hinzuf\u00fcgen &gt; .net Assemblybrowser<br \/>\nZu finden ist die cwbx.dll bei einer Standartinstalltion unter C:\\Programme\\IBM\\Client Access\\Shared.<br \/>\n<strong>Funktion DATAQ lesen<\/strong><br \/>\nF\u00fcr die Verbindung zur AS400 werden mehrere Variablen ben\u00f6tigt. Eine Verbindung kann nur aufgebaut werden wenn User, Passwort, DATQ Name, Bibliothek und DNS\/IP der AS400 bekannt sind.<br \/>\nDiese Variablen kann man nun direkt in die Funtkion schrieben oder global definieren. In diesen Beispiel kommen sie in meine Funktion.<br \/>\nHinweis: Das Passwort sollte nicht im Quellcode definiert werden. Dies macht das Programm unflexibel. \u00c4ndern sich Verbindungseigenschaften muss das Programm neu erstellt werden. Auch aus Sicherheitsgr\u00fcnden nicht zu empfehlen.<\/p>\n<pre lang=\"VB\">Public Function func_as400_read_dtaq\n'var\nDim AS400_User As String = \"Benutzer\"\nDim AS400_Password As String = \"Passwort\"\nDim AS400_Queue As String = \"DATAQ\"\nDim AS400_Libary As String = \"BIBLIOTHEK\"\nDim AS400_Name As String = \"AS400\"\nDim DATAQ_result As string\n'konverter f\u00fcr die empfangenen daten\nDim conv As New cwbx.StringConverterClass\n'als object definieren\nDim as400 As new cwbx.AS400System\n'dtaq ohne key\nDim dtaq As New cwbx.DataQueueClass\n'object best\u00fccken, as400, benutzer, passwort\nWith as400\n    .Define(AS400_Name)\n    .UserID = AS400_User\n    .Password = AS400_Password\nEnd With\n'verbinden\nas400.Connect(cwbx.cwbcoServiceEnum.cwbcoServiceDataQueues)\n'Bibliothek und dtaq zuweisen\ndtaq.LibraryName = AS400_Libary\ndtaq.QueueName = AS400_Queue\n'dtaq der 400 zurodnen\ndtaq.system = as400\n'try f\u00fcr fehlerbehandlung\ntry\n    'daten \u00fcber den konverter als string speichern\n    DATAQ_result = conv.FromBytes(dtaq.Read)\n    return DATAQ_result\nCatch\n    DATAQ_result = \"DATAQ ist leer\"\n    return DATAQ_result\nEnd Try\n'verbindung schliessen\nas400.Disconnect (cwbx.cwbcoServiceEnum.cwbcoServiceDataQueues)\nEnd Function<\/pre>\n<p>Wird die Funktion aufgerufen, liest sie den ersten Satz in der DATAQ. Anschlie\u00dfend wird dieser Satz automatisch aus der DATAQ gel\u00f6scht.<br \/>\n<strong>Funktion DATAQ schreiben<\/strong><br \/>\nUm nun Daten in eine DATAQ zu schreiben, bedarf es nur ein paar kleinen \u00c4nderungen. Die Anmeldung und die Verbindungsdefinition gleicht der DATAQ lesen Funktion.<br \/>\nDer Funktion wird der zuschreibende String \u00fcbergeben<\/p>\n<pre lang=\"VB\">Public Sub func_as400_write_dtaq(sub_send As String)\n'var\nDim AS400_User As String = \"Benutzer\"\nDim AS400_Password As String = \"Passwort\"\nDim AS400_Queue As String = \"DATAQ\"\nDim AS400_Libary As String = \"BIBLIOTHEK\"\nDim AS400_Name As String = \"AS400\"\nDim DATAQ_result As string\nDim conv As New cwbx.StringConverterClass\nDim as400 As new cwbx.AS400System\nDim dtaq As New cwbx.DataQueueClass\nWith as400\n    .Define(AS400_Name)\n    .UserID = AS400_User\n    .Password = AS400_Password\nEnd With\nas400.Connect(cwbx.cwbcoServiceEnum.cwbcoServiceDataQueues)\ndtaq.LibraryName = AS400_Libary\ndtaq.QueueName = AS400_Queue\ndtaq.system = as400\n'string in die DATAQ schreiben\ndtaq.Write(conv.ToBytes(sub_send))\n'verbindung schliessen\nas400.Disconnect (cwbx.cwbcoServiceEnum.cwbcoServiceDataQueues)\nEnd Sub<\/pre>\n<p>Aufruf mit \u00dcbergabe String.<\/p>\n<pre lang=\"VB\">Call func_as400_write_dtaq(\"DATAQ beschreiben mit VB.net\"<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Zugegeben, dieses Tutorial richtet sich nicht an den Hobby Programmierer. Die meisten Nerds werden eine AS400 von IBM<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,14],"tags":[295,672,2194,2815,2817,2823,3042],"class_list":["post-5673","post","type-post","status-publish","format-standard","hentry","category-computer-und-technik","category-programmieren","tag-as400-dataq","tag-cwbx-dll","tag-read-dataq","tag-vbnet","tag-vb-net-as400","tag-vb-net-read-dtaq","tag-write-dataq"],"_links":{"self":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/5673","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=5673"}],"version-history":[{"count":0,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/5673\/revisions"}],"wp:attachment":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/media?parent=5673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/categories?post=5673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/tags?post=5673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}