Start Page

News

DV-Beratung Dieter Bender

 

Diese Seite ist ständig im Aufbau! - deshalb heisst sie auch News und nicht Olds

 

The ending story?

Das New Solutions System i Forum ist wieder einmal im Nirwana verschwunden. Bis auf weiteres haben wir einen Ersatz auf xobor installiert (http://as400forum.xobor.de/). Sollte das zur Dauerlösung werden, bisher hoffen wir noch auf die Wiederauferstehung des gewohnten Forums, werden wir auf HTTPS umstellen und eine eigene Domain einrichten. Verbreitet trotzdem schon mal die neue Adresse, damit wir die Community am Leben erhalten können.

The never ending Story Programm.

Eigentlich bin ich ja langsam in einem Alter, in dem andere Menschen aufhören zu arbeiten, aber solange mir das ganze noch Spass macht, denke ich nicht ans aufhören - könnte zur never ending Story werden, einmal nicht von Michael Ende.

Beim Stichwort Never ending Story fallen mir sofort NEPs (never ending programms) ein. Ein lieber Freund und Kollege, der leider nicht mehr unter uns weilt, ein Meister der trickreichen Programmierung, hatte da die Idee mit den nicht unter zu kriegenden Programmen. Die haben mich immer an den Wettlauf zwischen Hase und Igel erinnert; hat man einen von diesen unkaputtbaren Jobs gecanceled, war er sofort wieder da. Der dahinter stehende Trick war verblüffend einfach: Das nicht endend sollende Programm wurde in eine JOBQ submitted, die nur einen Job reinließ und hat sich als erstes gleich nochmal submitted. Brach das Programm ab, durch eine innere oder äußere Ursache, rutschte der Reservejob hinterher und setzte als erstes wieder seinen Nachfolger in die JOBQ. Natürlich hatte Michael auch noch einen Command parat, der die benötigte JOBQ nebst Subsystem, wenn das noch nicht existierte, erstellte und es gab einen Command zum beenden solch eines Jobs. Für letzteres wurde die JOBQ angehalten, der Job gecanceled und die Reserve aus der JOBQ genommen. Mit einer Variante dessen konnte man auch mehrere gleichartige Listener durch eine JOBQ schleusen.

Nun braucht ja ArdGate AppServer4RPG und letzterer einen permanent laufenden Serverdienst, der die vorgestartete JVM bereit hält, die dann die Java Anfragen abarbeitet. Kürzlich habe ich dann noch für einen Kunden ein Programm geschrieben, das AS/400 Dateien per Trigger remote auf eine MS SQL oder Oracle Datenbank repliziert. Da IBM das nicht so einfach haben will, darf man aus einem Trigger keinen connect absetzen, was man aber durch einen lauernden Batchjob wieder getopped kriegt. Jetzt braucht man aber noch ein Never ending Programm, bei hohem Transfervolumen vielleicht auch gleich mehrere. Das kann man zwar auch mit Autostart Job Einträgen, Schedule Einträgen und was nicht allem machen, aber wenn dann ein Listener abbricht oder abgebrochen wird, dann hilft das alles wieder nix.

An diesem Punkt fielen mir dann wieder die Unkaputtbaren ein - ich wollte das allerdings wieder einmal ein wenig schlanker haben und weil ich sowieso in allen Programmen einen Exithandler drin habe, war die Idee naheliegend das damit zu machen: Was am Anfang geht, sollte auch am Ende möglich sein. Ich habe dann den kompletten Mechanismus noch rauszentralisiert in ein kleines Programm STRNEP. Selbiges hat dann 4 Parameter: Name des aufzurufenden Programms, Bibliothek des Programms, Name der JOBQ, Bibliothek der JOBQ. Jetzt muss man nur noch eine JOBQ haben, die die Jobs reinlässt. Ich bevorzuge ein eigenes Subsystem für die NEPs mit einer JOBQ, die unbegrenzt reinlässt. Zum schlafen legen fährt man das Subsystem runter und alle NEPs setzen sich beim Ende wieder in die JOBQ rein, sodass sie nach STRSBS bin schon da rufen, deswegen fiel mir da immer der Wettlauf zwischen Hase und Igel ein. Überleben tut das Ganze dann selber PWRDWNSYS *immed, falls das Subsystem aus QSTRUP gestartet wird - und finden tut man das ganze hier:
QRPGLEH.CEE4RAGE
QRPGLEH.SYSTEM
QRPGLEH.QMHSNDPM
QRPGLESRC.STRNEP
Bequem umwandeln kann man sich das dann wieder mit CRTCPP, ebenfalls zu finden in diesem Theater.

(Februar 2018)

Im Westen nichts Neues?

Da habe ich doch kürzlich mal in den remake eines Klassikers reingesehen, Who Knew You Could Do That with RPG IV? Modern RPG for the Modern Programmer und finde da dann im Kapitel über RPG - Java Integration: RPG IV calling Java: Although calling RPG IV from Java can be done in various simple ways, calls in the other direction are not as easy. Although RPG IV contains built-in support for accessing Java objects and methods, there are various problems with the use of that support. Because that support results in a JVM for each job, you are likely to have problems with scalability. A preferred approach is to start a server in a JVM that can process requests in different threads and send messages to that server. This approach scales much better because you have only one JVM running. The messaging can be done with data queues, IBM MQ, or sockets. Die Lernfähigkeit von IBM ist ja grenzenlos - und dann auch noch so schnell, schließlich rede ich mir da seit 1998 den Mund franselig und jetzt, wo der Start der JVM nur noch zig Sekunden statt einiger Minuten dauert, merken die auch, dass das bei einer vorgstarteten JVM egal ist. Als ich mir dann das Beispielprogramm angesehen habe, bin ich erst mal erschrocken - irgendwie mache ich mir das viel einfacher im AppServer4RPG und dann ist meine OpenSource auch noch universeller und erweiterbar. Bei genauerem Hinsehen bin ich dann allerdings zu dem Befund gekommen, dass die Programme im redbook doch ein wenig umständlich zu sein scheinen, aber vielleicht lässt sie das wichtiger aussehen - so eine Art Steinmeier Effekt.

Überhaupt scheint Erleuchtung über IBM gekommen zu sein, plötzlich braucht man das /free und /end-free nicht mehr, nachdem mir die Möchtegern Hüter des blauen Grals immer erzählt haben wie toll und wie wichtig und wie notwendig das sei, wenn ich wieder mal darüber gelästert habe. Jetzt gibt es ja sogar das fully-full-totally free RPG, damit ich wieder was zu lästern habe. Statt einem D in Loch 6 darf man jetzt dcl an (fast) beliebiger Stelle ablochen und statt die jedem bekannte Ganzzahltypen short, int, long und bigint heißen jetzt int(3), int(5), int(10) und int(20), kann ja nicht sein, dass man das so macht, wie andere seit 40 Jahren. Bin mal neugierig wie lange es dauert, bis man das überflüssige DCL wenigstens bei Einzelvariablen weglassen darf. Zu richtiger Hochform ist man dann beim DCL-SUBF aufgelaufen, da steckt bestimmt wieder eine Kantinenwette dahinter, dass die RPG Community alles mit Begeisterung frisst, egal wie unsinnig und umständlich das ist. Wäre ja auch ein dicker Hund, wenn jeder hergelaufenen C Programmierer so ein RPG Programm auf Anhieb verstehen würde. Zum Trost der Hardliner sei da gesagt: es gibt ja immer noch MR im Cyclus und wenn ich auf Visual RPG umsteigen muss...

(Januar 2017)

Neues im Bereich Schulungen

Das man bei mir Schulungen zum Thema SQL im heterogenen Umfeld bekommen kann, ist eigentlich so selbsverständlich, dass ich mir bisher nicht die Mühe gemacht habe, das extra anzukündigen, schließlich bin ich der Autor von ArdGate und seit Jahren im Bereich Schulungen tätig. Jetzt habe ich da einfach mal ein Paket geschnürt und auf meiner Seite Schulungen veröffentlicht. Da diese Schulung auf Ihre konkrete Umgebung abgestellt sein soll, macht das natürlich nur Inhouse Sinn und bedarf einer gewissen Abstimmung im Vorfeld, aber dafür haben Sie am Ende der Schulung nicht nur das Wissen wie es geht, sondern können direkt loslegen mit embedded SQL, QMQRY und interaktivem SQL auf andere Datenbanken in Ihrem Unternehmen zuzugreifen, mit vergleichbarem Programmieraufwand und Perfomance, wie Sie es vom Zugriff auf die DB2 Ihrer AS/400 gewöhnt sind.

Dieses Angebot bekommen Sie nur bei mir und ich kann Ihnen versichern, dass diese Schulung genauso viel Spass macht, wie meine anderen Schulungen (auch wenn es genauso anstrengend wird), nur so kann dabei wirklich was rüberkommen.

(April 2014)

FAQ Java auf AS/400 und ORA-01000

Mein Spamfänger hat so seine Hochs und Tiefs; neulich hatte er wieder ein Tief und hat eine von diesen Wir verbessern Ihr Suchmaschinen Ranking Mails durchgelassen. Die wollten mich damit ködern, dass ich bei den Suchwörtern Java, RPG, ILE nicht auf den ersten 10 stehe, habe ich dann mal ausprobiert, wiewohl das ja wenig hilft, da sich Google ja auch die vermutete Suchhistorie des Benutzers merkt und auswertet - jedenfalls bin ich über meine eigene FAQ gestolpert, wobei ich dann bemerkt habe, dass die länger nicht überarbeitet wurde. Kurze Rede langer Sinn, oder auch umgekehrt, ich habe das nachgeholt und den V7R1 Stand eingearbeitet.

Ansonsten habe ich mich wieder mal intensiver mit Oracle beschäftigt, ist ja auch so eine Art V7R1 Problem, zumindest für diejenigen, die mit Oracle Access Manager for AS/400 aus RPG auf eine Oracle Datenbank zugreifen, das geht nämlich ab V7R1 nicht mehr. Oracle hat nicht nur den das Produkt abgekündigt und den Service eingestellt, sondern das Ding geht unter V7R1 wohl auch nicht mehr, wer da wem ein Ei auf die Schienen genagelt hat, ob IBM Oracle oder umgekehrt, oder ob da gleich zwei Eier auf der Schiene befestigt sind, eins links und eins rechts oder beide auf derselben Seite, das ist dem Kunden meist ziemlich egal, er braucht halt eine Lösung und da ist ArdGate das naheliegendste: es ist funktional sehr vergleichbar, der Umstellungsaufwand ist minimal bis überschaubar, es kann sogar mehr als Oracle und ist auch noch Open Source, hat eine breite Installationsbasis und etliche Umstellungen gerade von OAM hinter sich. Jetzt hatte ich gerade wieder einmal mit einem Umsteiger zu tun, der bei den Volumentests dann die bei Javaprogrammierern sattsam bekannte ORA-01000 Meldung (zuviele offene Cursor) zu sehen bekam. Letztlich brachte eine Vereinfachung der Programme dann die Lösung des Problems, das auch mit etwas nachlässigem Umgang mit SQL Fehlercodes zusammenhing (SQLCODE sollte man schon abfragen und WHENEVER schadet wie jedes GOTO oft mehr als es nutzt). Mir hat das dann ein paar Stunden Beschäftigung mit Oracle eingebracht, da ich das Problem bei mir reproduzierbar machen wollte, was mir aber ohne WHENEVER nur schwer gelang, aber immerhin sprang dabei noch ein kleinerer Bugfix an ArdGate raus.

(April 2014)

CommandGate oder run, Java run!

Vor gut vier Wochen bekam ich eine Mail aus Israel, mit dem Betreff: Keep my jvm "alive". Absender war ein frustrierter IBM Business Partner, dem die Begeisterung über die grandiose und immer besser werdende Java Performance auf der AS/400 in Frust umgeschlagen war, angeichts von Antwortzeiten im mittleren Sekundenbereich. Vordergründig betrachtet sagt sich schnell 10 Sekunden sind doch nicht viel, aber wenn man das dann mindestens 5000 mal pro Stunde braucht, dann wird man schon blass vor Neid, wenn man dieselbe Aktion auf einer Windows oder Linux Büchse in Sekunden Bruchteilen erledigt bekommt. Als treuer tiefblau gefärbter hatte der Kollege bereits allerhand ausprobiert: RUNJVA war zu langsam, Versuchen mit JNI Aufrufen aus RPG mangelte es an Stabilität und es gab Probleme mit dem Classpath (Was dem einen sin Uhl, ist dem andern sin Nachtigall), sogar Scott Klements Empfehlungen mit unixcmd war er gefolgt.

Ohne große Begeisterung habe ich die Mail als freundlicher Mensch beantwortet, das roch doch alles erst einmal nach einem dilletantischen Versuch eine Java Komponente als ausführbares Java Programm zu tarnen, um es dann aus RPG oder gar CL mit RUNJVA aufzurufen. Nach ein, zwei Mails hin und retour, stellte sich dann heraus, dass hier Java Command Line Utilities aufgerufen werden sollten, von denen es mittlerweile ein paar in durchaus seriösen Open Source Projekten gibt. Da ich ja an der HTML2PDF Stelle schon einmal an sowas rumgebastelt hatte, überlegte ich, ob man das nicht ein wenig generischer lösen könte - und wer mich kennt, den wird es nicht überraschen, dass ich konnte.

Eine erste kurze Evaluation brachte das für mich nicht überraschende Ergebnis, dass sich die Laufzeiten auf Holger's Büchse (Frohe Weihnachten, lieber Holger) um den Faktor 20 verbesserten, sprich: aus 10 Sekunden wurden dann ein paar Zehntelsekunden, locker genug für 5000 pro Stunde! Ich habe das dann als generischen Command RUNJAVARUN implementiert, der solche Java Commandline Utilities um eben diesen Faktor schneller laufen lässt, am liebsten hätte ich ja den OS/400 command in CRWJVA (crawl Java) umbenannt, aber das wäre ja beim nächsten Release auch dann wieder weg gewesen, wenn das immer noch so langsam ist.

Beim rumspielen mit dem neuen Command ist mir dann aufgefallen, dass selbst verbreitete Java Tools zuweilen nicht Java like entwickelt sind, nicht nur jtOpen (die Dollschachtel), die in den Quellen nach den ersten Java Versuchen von RPG Programmierern aussieht, sondern auch richtige Java Libraries. PDFBox, immerhin mittlerweile bei Apache gelandet, ruft an mehreren Ecken lustig System.exit() auf und entzieht mit dem entladen der JVM nicht nur CommandGate das Hemd unter den vier Buchstaben, die eigentlich fünf sind, weg, sondern bring auch einen einen Application Server in Schwierigkeiten - und dann ist dieses Tool auch noch beleidigt, wenn man das zu verhindern versucht. In diesem Fall darf man PDFBox nicht aufrufen, sondern Overlay und die anderen Tools der zweiten Ebene benutzen und wenn man dann die korrekte Anzahl Parameter mitgibt, dann klappts.

Dann gibt es auch noch Command Line Tools, die hinterrücks was über stdout zurückgeben, was natürlich mit einer prestarted JVM im Multithreading auch nicht geht, aber vielleicht gibt es da nächstes Jahr was zu Weihnachten. Fast überflüssig zu erwähnen, dass in selbstgetrickten Programmen auch kein System.exit() aufrufen darf.

Apropos Weihnachten, damit ich zum Fest nicht mit leeren Händen dastehe, habe ich das als Geschenk verpackt und zum Download anzubieten. (Weihnachten 2013) In diesem Sinne, frohes Fest und einen guten Rutsch!

(Dezember 2013)

Neues von der JVA oder AppServer4RPG

Dieser Tage bekam ich eine Anfrage bezüglich Generierung von PDF aus HTML und wie lange sowas dauert, nicht zu programmieren, sondern aus RPG aufzurufen. Als Referenz wurde mir eine Zeit im Minutenbereich benannt, erforderlich war die Generierung von 10.000 Dokumenten in einer Nacht; die Bemerkung mit der Mittsommernacht habe ich dann gerade noch runtergeschluckt, man weiß ja nie wieviel und/oder welchen Humor potentielle Kunden so haben und wer war schon mal in Hammerfest und den Kalauer mit dem Nachtjob, den man nur im Winter laufen lassen kann, weil da die Nächte länger sind, kennt auch nicht jeder.

Programmiert ist sowas schnell, zumindest in Java, da gibt es ja die OpenSource Bibliotheken iText und Flying Saucer, die sowas gemeinsam in einem Java 5 Zeiler hinkriegen. Das Ganze in eine Mini Java Applikation eingepackt und aus einem CL oder RPG mit RUNJVA aufgerufen - und das war's. Selbst letzteres gibt es auch noch als Open Source und per Internet hat man das auch im Maus-umdrehen über den großen Teich geholt. Ich habe das dann selber mal mit einem Beispiel ausprobiert, in den Minutenbereich bin ich nicht gekommen, aber so eine gute halbe Minute dauerte das dann schon und mir fiel wieder ein, warum man den Befehl RUNJVA genannt hat und warum mich das an Knast erinnert, da kommt man auch so schnell nicht wieder raus. Ich habe das dann mal in einem kleinen Java Programm auf einem Windoofen Rechner probiert, da dauerte das allenfalls ein paar Zehntel Sekunden.

Eine nähere Untersuchung förderte dann Bekanntes ans Tageslicht: starten der JVM und laden der erforderlichen Klassen dauert eben ein wenig auf einer AS/400, da hilft auch kein Geeier, eh man nicht 400 mal "I" gerufen hat, ist so eine JVM nicht in den Hauptspeicher zu bewegen - und dann geht die Arbeit erst los. 10 Tausend Dokumente sind dann 10 Tausend JVMs, die da nacheinander gestartet werden wollen, was dann 4 Millonen Eiern entspricht und wenn dann 25 uneinsichtige Anwender das dann auch noch gleichzeitig versuchen, müssen 10 Tausend Eier gleichzeitig in den Hauptspeicher, was das Hardware Budget um ein paar Hunderttausend Eier aufbläht, eigentlich wäre das ein Fall für eine Einweisung in die JVA, wenn sich Marketiers solche JVA Befehle andere Leute einfallen lassen, dann ginge das auch ganz fix schneller, ohne Geeier und die AS/400 würde immer noch AS/400 heißen.

Ich habe dann mal eine kleine Beta Applikation geschrieben, die das über AppServer4RPG macht. Dafü braucht man dann 2 PORDS2POJO Klassen, die aus dem binären Huddel, der sich in RPG Datenstruktur nennt, die haben feinsinnigen Humor gehabt, die RPG Erfinder, eine Java Bean machen, beziehungsweise verhuddeln. Dann braucht man Java seitig noch einen Eventhandler und einen Eintrag in den global.properties. Auf der RPG Seite baut man dann noch ein SRVPGM als Schnittstellenprogramm. Hat mich alles in allem ungefähr einen halben Tage gekostet plus ein wenig für das Deployment und den Test. Resultat der ganzen Arie: benutzt man das Tor zu Java, bleibt einem der Knast erspart: die Zeit für die Konvertierung desselben Dokumentes ist von einer halben Minute unter eine Sekunde geschrumpft. Kaum macht man es richtig, schon funktionierts, wie eine alte Programmierer Weisheit das so nennt.

Das kommt natürlich auch als Open Source raus, wenn ich die ganzen Eierschalen hier wieder weg geräumt habe, wem das zu lange dauert, kann mich ja mal anmailen, vielleicht geht es dann schneller.

(Januar 2012)

Rollenspiele im Freien

Open Air Roll playing Games, oder auch RPG OA, ist ja was ganz, ganz, ganz Neues, und weil ja jetzt die Zeit der Gänse ist, dachte ich mir ... Naja, zumindest der Name ist neu, früher hieß das ja SPECIAL Datei und immerhin hat man das ein wenig aufgebohrt, um Features, die man nicht wirklich braucht. Jetzt habe ich auf der Common Jako zwei junge, begeisterte Kollegen getroffen, die damit so eine Art WebFacing gemacht haben; ist sicherlich toll, wenn gerade junge Leute mit solchem Bastelkram was hinbekommen und wenn die Anwender das mögen - war ja eine Inhouse Lösung und die Anwendung steht ja damit nicht in echter Konkurrenz zu Event driven Anwendungen - vielleicht sollte ich doch mal was schreiben über das RPG Anwendungsmodell, MVC und Ereignis Steuerung und moderne Software Ergonomie.

Beim Stichwort vielleicht sollte ich mal - habe ich mich mal hingesetzt und meine Java FAQ ein wenig komplettiert und eine Abschnitt über ArdGate zugefügt, sowie die JNI Calls aus RPG auf aktuellen Stand gebracht. Die Sonderlocken nehmen da ja ab, seitdem man die AIX JVM nehmen kann, die ist nämlich wirklich vom Feinsten - obwohl man sich dann auch überlegen kann eine p-only dafür einzusetzen und vom Ersparten ein wenig in eine stärkere CPU zu stecken.

Beim nachtragen der aktuelleren Vorträge ist mir dann aufgefallen, dass ich vielleicht die 50 bei Common noch vollkriege - solange mir noch was einfällt und das zuhören noch Spass macht...

(November 2011)

Who is Dieter Bender?

Nachdem ich ja die Common Konferenz in Amiland von meiner Agenda gestrichen hatte, war ich nun in Mailand und habe einen Vortrag über ArdGate gehalten. Die italienischen Commonisten, oder zumindest ein Teil davon, haben der IBM lastigen Fraktion der Euro-Commonisten einen kompletten OpenSource Stream schmackhaft gemacht, oder sollte man untergejubelt sagen und das kann man nur unterstützen, Treppenwitz am Rande: das war dann der Ersatz für den p-Stream, sicherlich eine grandiose Lösung. Der Vortrag war auf englisch angesagt und damit begannen die Herausforderungen bereits im Vorfeld. Auf deutsch sagt sich "A-err-dee-gaeit" ganz gut, aber die 1 zu 1 Übersetzung in "Aei-aar-die-gaeit" gaeit einem schon weniger flott von den Lippen. Rettung brachte dann die italienisch-englische Variante, bei der Abkürzungen als Wort gelesen werden und "Ard-gaeit" ist einfach und klingt eingängig.

Ein gewisses Lampenfieber vor dem Vortrag blieb dann dennoch nicht aus, so oft mache ich das ja auch nicht, einen Vortrag in einer fremden Sprache zu halten und meine Vorträge in meiner Muttersprache leben auch zuweilen vom Wortwitz, auch wenn mancher dann ein Gesicht macht, als ob er Kalauer nicht mag. Zuweilen kommt einem aber die Situation zu Hilfe und in Mailand war es die Übersetzerin, die die Aufgabe hatte simultan in italienische zu übersetzen, das man sich dann bei Bedarf von einem kleinen Mann ins Ohr flüstern lassen konnte. Ihre zu Beginn geäußerte Bitte "to speak slow, because italian needs 30% more words than english", wurde von mir gekontert mit "that doesn't matter, it's spoken 60% faster" ersparte mir einen weiteren running Gag zum Start und ich hatte mich und meine Zuhörer damit akklimatisiert. Da nach meinem Vortrag Schluss war und bis zum Beginn der Happy hour - meet the experts, noch 15 Minuten Zeit, konnte ich Dank der Hilfe von Andrea Ribuoli, der mit mit seinem UMTS Stick zu einer Internet Verbindung verhalf, noch eine kurze Life Demo anschließen und aus dem interaktiven SQL auf Holger Scherers public AS/400 in MySQL Tabellen auf meinem Netbook rummalen, um zu demonstrieren wie einfach es ist von der AS/400 auf beliebige andere Datenbanken zuzugreifen, wenn man sich nicht mit Work-arounds begnügen will, für die man zum Teil noch richtig Geld auf den Tisch legen darf.

Die Happy hour wurde dann noch zum Highlight für mich, neben interessanten Fachgesprächen, vorwiegend über ArdGate und dessen Möglichkeiten, brachte diese mir noch die Bekanntschaft mit Paul Tuohy, der am nächsten Tag die RPG Fahne hissen sollte. Paul kam im Schlepptau von Ranga an, um der Frage "Who is Dieter Bender?" auf den Grund zu kommen. Leider sind wir über die formelle Vorstellung und ein wenig Smalltalk nicht hinausgekommen, hätte eine interessante Diskussion werden können, so rätsele ich jetzt noch ein wenig, welcher meiner Beiträge in welchem der amerikanischen Foren die Neugier hervorgerufen haben könnte, das enfant terrible der Community kennen zu lernen.

(Juni 2011)

Neues von ArdGate

Meine Buchhaltung hat meiner Marketing Abteilung mitgeteilt, dass ein wenig Aktivität nicht schaden könnte und dann hat sich ja mittlerweile auch wieder genug ereignet, um wieder mal in die Tasten zu greifen...

Beim lesen ist mir aufgefallen, dass ja beim letzten Mal der weitere Gang mit Common noch offen geblieben ist. Common USA hatte zu meiner Überraschung beide eingereichten Vorträge angenommen. Meine Überraschung war so groß dass ich erst im nachhinein angefangen habe zu rechnen und dann zu dem Schluss gekommen bin, dass ich das bleiben lasse. Bei den Konditionen von Common USA, da zahlt man nicht nur komplett alle Reisekosten und Spesen, was ja auch schon ein ansehnlicher Betrag ist, sondern bringt effektiv noch zusätzlich Geld mit, dass man dort einen Vortrag halten darf, ist das nicht nur kaufmännisch für eine One-Man-Show wie mich nicht vertretbar, sondern halten mich auch grundsätzliche Überlegungen davon ab, mich auf so etwas einzulassen. Das entspricht nicht meinen Vorstellungen von fairer Partnerschaft und diese Kriterien führen allenfalls zu einer starken Gewichtung von Marketing orientierten Vorträgen und das ganze erinnert mich dann eher an die Heizdecken Verkaufsveranstaltungen auf den nicht auszurottenden Kaffeefahrten für Senioren. Ich hatte seinerzeit den Vortrag auch noch für die europäische Common Konferenz in Mailand angeboten und dort ebenfalls eine Zusage bekommen. Das ist zwar kaufmännisch ebenfalls grenzwertig, aber die Bedingungen sind fairer und Mailand nicht nur näher, sondern auch touristisch und kulinarisch interessanter, zumindest für mich. So sitze ich nun an der Übersetzung meiner Unterlagen und am feilen an meinem Vortragsstil in einer fremden Sprache.

Was die Weiterentwicklung von ArdGate angeht, hängt das Projekt im Moment ein wenig. Bedingt durch den Einstieg zusätzlicher Leute, gab es eine Phase der heftigeren Aktivität, in der viel angefangen wurde, von dem nichts fertig geworden ist, dummerweise auch beim deployment und das hat die Sache ein wenig ins holpern gebracht - und dann ist da ja immer noch die kaufmännische Seite und was in Projekten momentan so gerade gefragt ist. Momentan scheint es so zu sein, dass von einigen Leuten mit ArdGate gearbeitet wird und die mehr oder weniger bekannten Work arounds benutzt werden, wie dynamic SQL anstatt static, oder cast für nicht unterstützte Datentypen, oder packed Variablen nur mit ungerader Länge deklarieren. Erstaunt bin ich immer wieder, wie geduldig sich manche Leute Tage abmühen ArdGate selber zu installieren, anstatt sich das von einem machen und erklären zu lassen, der was davon versteht,; da könnte man sich für einen Überschaubaren Betrag viel Zeit sparen, aber vielleicht ist ja für manchen der Weg das Ziel.

Ideen gibt es genug, dringend wäre die commit Baustelle, zu der ich aber momentan wenig Lust verspüre, das ist wieder Bitgefummel und Bitverdreherei, bis sich der Magen umdreht. Mehr Hang hätte ich schon AppServer4RPG zu überarbeiten, die DataQs rauszuwerfen und das Threading und Session Management komplett auf Tomcat oder einen anderen Application Server zu verlagern, aber als akademische Übung hat das noch zu wenig Priorität, aber vielleicht ändert sich das noch, ich hatte da bei einem Kunden neulich eine interessante Fachdiskussion...

(Mai 2011)

ArdGate

Nachdem ArdGate mittlerweile 3 Monate veröffentlicht ist, ist es Zeit für eine erste Zwischenbilanz. Mein erstes Presse Release der Ankündigung traf nur partiell auf Interesse, was mich zunächst erstaunte, wurde mir im Verlaufe meiner Vorbereitungen für meine Vorstellung von ArdGate auf der Common Jahreskonferenz klarer. Für meinen Vortrag habe ich mich einmal mit den Alternativen beschäftigt und da gibt es neben einem OpenSource Angebot auch kommerzielle Angebote von Centurio über JDBCR4 bis WebSphere Federation Server. Vergleicht man die unterschiedlichen Lösungen miteinander, dann werden dort unterschiedliche Ansätze unternommen, um von AS/400 auf andere Datenbanken zuzugreifen und mit ArdGate habe ich in ein Wespennest gestochen. ArdGate ist nicht nur konkurrenzfähig, sondern hat momentan eindeutig die Nase vorn. Es ist das einzige Angebot, das komplett auf der AS/400 läuft und mit dem man mit allen SQL Interfaces der AS/400 auf alle relevanten Datenbanken des Marktes zugreifen kann. Nicht nur dass Alternativen teils erhebliches Geld kosten könnten, werden teils eigene proprietäre Schnittstellen definiert, teils auf weniger Datenbanken zugreifen können, einige erfordern sogar Gateway Rechner, teils mit der Installation einer weiteren Datenbank.

Mittlerweile ist immerhin neben den Ankündigungen in den Foren, Newsgroups und Mailinglisten ein Artikel bei mcpressonline erschienen und für die NewSolutions habe ich selber einen Beitrag geschrieben, der zugesagt aber noch nicht erschienen ist. Die erste Präsentation habe ich bei dem Common Anwenderkreis in Koblenz gehalten und dort in gut 2 Stunden nicht nur die Technologie vorgestellt, sondern live installiert und praktisch vorgeführt. Da kommt man sich schon ein wenig wie ein Zauberer vor, wenn man am grünen Bildschirm im STRSQL Tabellen in einer Oracle, MySQL und MS SQL Server Datenbank anlegt, dort Sätze einfügt, die man sich anschließend im Oracle & Co. wieder anzeigen lässt, dort verändert und sich diese änderungen im STRSQL wieder anzeigen lässt, inklusive Unterstützung von F4 zur Anzeige von Feldauswahlen.

Bei der Common Jahreskonferenz habe ich in meinem Vortrag Database Connectivity DB2/400 als Client die komplette Palette der Möglichkeiten dargestellt, der Schwerpunkt des Vortrags lag dann auf der Darstellung der Zugriffe aus embedded SQL in RPG über ArdGate auf JDBC Datenbanken zuzugreifen. Bei 50 Minuten Zeit ist der Spielraum für eine Live Vorführung ein wenig knapp, ich habe dann im Foyer noch ein paar Interessenten ArdGate live vorgeführt, mit Notebook und Holger Scherers AS/400 via WLAN.

Seitdem ich meine Zugänge zu den amerikanischen Mailinglisten und Foren wieder reaktiviert und komplettiert habe, um dort ebenfalls ArdGate anzukündigen, mische ich dort zuweilen wieder ein wenig mit, wobei ich immer wieder feststelle dass dort wesentlich mehr religiöser Eifer an den Tag gelegt wird, alles und jedes schön zu reden, was das größte und blaueste Wesen offenbart hat, oder gerade offenbart, oder auch nur vermeintlich morgen offenbaren könnte. Zuweilen habe ich dort den Eindruck, dass man dort neue Ideen erst gar nicht zur Kenntnis nehmen will. Sollte mich wundern, wenn mein Vortragsangebot auf der amerikanische Common Jahreskonferenz ArdGate vorzustellen, angenommen wird. Was zumindest über die Aktivitäten dort erreicht wurde, ich habe Rückmeldung über eine Installation von ArdGate in Italien und in Holland. Und die Downloadzahlen auf der SourceForge Seite von AppServer4RPG, haben sich seit der Veröffentlichung von ArdGate mehr als verdoppelt und bewegen sich auf die 1000 zu.

(November 2010)

Transparent Gateway, oder doch wieder Hammerfest?

Der Tip mit dem ARDPGM von Dr. Ugo aus Modena ließ mich nur vorübergehend los und nach Hammerfest fahren, aber bereits auf der Rückfahrt, zwischen lauter Rentnern auf der Hurtigrute - in Norwegen heißt ein Postschiff wirklich hurtig, was auf norwegisch auch hurtig heißt - packte mich schon wieder das ARD Fieber. Nun will ich die mehr oder weniger geneigten Leser, manch einer stöbert auch auf meinen Seiten, um seinen Blutdruck in Fahrt zu bringen, nicht mit meinen Eigen Motivations Techniken langweilen und nicht weiter von Quijote und den Windmühlen reden (ich habe viele davon in den letzten Tagen gesehen, nicht in Norwegen, sondern in den Parameterschnittstellen des SQL Client Integration Exit Programs, auch *ARDPGM genannt) und zu den Resultaten kommen. Der Traum von dem einfachen Zugriff von einer AS/400 auf alle anderen Datenbanken ist ausgeträmt - er ist bereits Realität geworden.

Nun ist mein Transparent Gateway schon soweit fertig, dass man damit bereits fast alles mit entfernten Datenbanken machen kann, wenn auch noch nicht der komplette Sprachumfang von SQL abgedeckt ist, aber bei SQL gibt es ja zuweilen mehrere Wege zum Ziel. Im Programm und am interaktiven prompt sieht das genauso aus, als ob man auf die Datenbank einer anderen AS/400 per SQL zugreifen will, man macht zuerst einen CONNECT und ab da geht es weiter, wie mit der lokalen Datenbank. Selbst mit Query und QMQRY kann man jetzt auf MySql, Oracle, MS SQL Server und jede andere Datenbank für die es einen JDBC Treiber gibt, zugreifen, fast als ob es die lokalen Daten wären. Das Projekt ist in einem Tempo durchgerauscht, dass es nicht einmal einen Namen hat und publiziert habe ich es als Beta auf SourceForge im Projekt appserver4rpg.

Seitdem das Projektteam Zuwachs bekommen hat, stehen die Quellen des aktuellsten Standes der Entwicklung immer im CVS auf SourceForge zur Verfügung. Als Reaktion auf eine Anfrage, die ich per eMail zu AppServer4RPG unlängst bekommen habe, habe ich den AppServer4RPG zur WebAnwendung erweitert und ein Deployment als war Archive zusammengestellt. Damit gibt es jetzt auch die M�lichkeit AppServer4RPG in einen WebContainer zu deployen, z.B.: Tomcat, oder WebSphere. Hört sich auf dem ersten Ohr kompliziert an, hat aber was; man kopiert das AppServer4RPG.war Archiv in das Verzeichnis webapps und der WebServer erstellt automatisch die lauffähige Anwendung und startet sie. Werden weitere Komponenten, wie zum Beispiel JDBC Treiber benötigt, kopiert man diese in das Verzeichnis WEB-INF/lib der Anwendung und Tomcat findet das automatisch. Die alte Form als eigenständige Java Anwendung wird für Versionen weiter bereit gestellt. Außerdem habe ich eine Anregung von Aaorn Bartell aus seinem Artikel im System i Network AppServer4RPG: Open-Source Communication Between RPG and Java aufgenommen und den RPG Teil zusätzlich zu den Quellen als SaveFile bereit gestellt und das ganze mit dem war Archiv zusammen gezipt. Nach der Umstellung des Deployments auf Ant, werde ich jetzt in kürzerem Turnus deployen und diese Zip Files mit Datum versehen. Die Installations Doku ist erweitert und in die Begrüßungsseite der Tomcat Applikation gewandert, ist aber auch im Zip File als index.html leicht zu finden. Die Distribution erfolgt jetzt über Sourceforge, auf meiner Webseite ist nur einAusschnitt oder link vorgesehen.

Die Installations und Konfigurations Anleitung ist in englisch verfasst und gegenwärtig liegt dort auch die Priorität, es sei denn, es finden sich noch weitere Mittäter, ich freue mich auch über "Praktikanten", womit ich RPG/Java Umsteiger verstehe, die sich Praxis in einem professionellen Projekt erarbeiten wollen. Deutsche Unterlagen sind in jedem Fall im Herbst zu erwarten, da ich gegenwärtig plane Ardgate auf der Common Jahreskonferenz vorzustellen. Wem das Ardgate zu schwierig erscheint, oder wer sich zu späet; entschließt, ich plane durchaus weiter Applikationen auf der Basis von AppServer4RPG bereit zu stellen und performantere und stabilere Alternativen zur Einbindung von Java Funktionalitäten anzubieten, als das embedded Java in RPG leisten kann. Konzeptionell ist eMail Unterstützung bereits skizziert, aber es bietet sich da sicherlich noch mehr an, nicht zuletzt WebServices! Naja, mit den Projektnamen hapert es jetzt immer noch, bei mir heißt das ArdGate mal weiterhin Hammerfest - und als logo kann ich ja dann vielleicht den Eisbär nehmen, als Ehrenmitglied des zugehörigen Clubs darf ich das ja sicherlich.

(August 2010)

Hammerfest

Rein beruflich beschäftigt sich unsereins ja überwiegend mit absurden Dingen, schließlich werden mit EDV überwiegend Probleme gelöst, die man ohne EDV nicht hätte. Deshalb muss man ab and an was vernünftiges machen, wie zum Beispiel 2 Tage lang ein Essen vorzubereiten, das dann in 2 Stunden gegessen ist. Oder in 3 Wochen 3315 km mit dem Fahrrad fahren. Weil es mir zu langweilig erschien 8281 und eine halbe Runde auf der Aschenbahn des Sportplatzes zu drehen, ich habe mich da keineswegs verrechnet, sondern 1,2 km Weg zum Sportplatz und den Rückweg nach Hause einberechnet, habe ich lange nachgedacht wie man diese Strecke zusammen bekommen kann.

Neapel ist für die einfache Strecke nicht weit genug und dann ist da noch dieses Sprichwort Neapel sehen und dann sterben und das bei meinen Erfahrungen mit dem Fahrrad und italienischen Lastwagen, da hätte mich beinahe schon einmal einer platt gefahren. Brindisi habe ich auch verworfen, das reicht immer noch nicht, hin und zurück ist etwas zu reichlich und außerdem weiß man ja nicht, ob einen die italienische Mafia zur Russenmafia zurück lässt, eine deutsche Mafia gibt es ja nicht, das brauchen wir nicht, bei uns ist auch das Verbrechen von Hause aus schon besser organisiert.

300 mal von Krofdorf-Gleiberg nach Gießen und zurück hätte zwar gepasst und wer beides kennt, fährt auch immer wieder zurück, was dagegen sprach war der zu hohe Radweg Anteil, das Geholper ist für die Gelenke nicht gut und die Glasscherben, mit denen die Radwege bei uns übersät sind, sind für die Reifen schädlich und die zu erwartende Anzahl der Platten schadet wieder dem Budget für solche Unternehmungen. Deutsche Radwege sind Reperaturfrei, selbige unterbleiben einfach, werden nur an Ostern, aber nicht an Feiertagen gekehrt, Schnee wird nur im Sommer geräumt, dafür wird das Gras bevorzugt im Winter gemäht. Wichtig ist nur die Beschilderung, damit Benutzungspflicht vorliegt, ganz im Sinne der Erfinder der Radwege und der Benutzungspflicht Zeigen wir dem staunenden Ausländer einen neuen Beweis für ein aufstrebendes Deutschland, in dem der Kraftfahrer nicht nur auf den Autobahnen, sondern auf allen Straßen durch den Radfahrer freie, sichere Bahn findet. (Aus einer Presseerklärung des Reichsverkehrsministeriums zur Einführung der allgemeinen Radwegebenutzungspflicht in der RStVO vom 1.Okt. 1934).

Was nach Süden nicht passt, nach Westen erst recht nicht, geht vielleicht nach Norden, also entstand bereits vor vielen Jahren die Idee für das Projekt Hammerfest, das dann trotz noch vorhandener zeitlicher Spielräume vor knapp 2 Jahren auf die Agenda 2010 gesetzt wurde. Dabei spielte nicht nur eine Rolle, dass ich mit dem Projekt Hammerfest und dieser Terminierung dazu beitragen wollte, das Jahr 2010 und dessen Agenda etwas zu rehabilitieren, was kann das Jahr 2010 schließlich dafür, was ihm da alles so auf die Agenda gesetzt wurde.

Meine Entscheidung für Hammerfest, wo andere zum Nordkapp fahren, hat bei mir schon Tradition; als ich mit meinem Bruder vor 40 Jahren mit einer alten 16 PS Ente gen Norden fuhr, entschieden wir uns auch gegen das touristische Kunstziel und für die Traditionsreiche alte Stadt Hammerfest. Mir hat diese Entscheidung dieses Jahr sogar die Ehrenmitgliedschaft in The Royal and Ancient Polar Bear Society eingebracht, so angetan waren die von der Anreise mit dem Fahrrad und dem von Bender-DV gesponsorten Trikot.

Zu meinem Glück ist Google Earth noch kein Life Dienst, dann kann man solche Projekte nicht mehr durchführen, wenn meine Familie mich auf manchen Abschnitten der schwedischen E4 mit dem Fahrrad gesehen hätte, die hätten sich ein Netz eingepackt, ins Auto gesetzt und den Verückten sofort eingefangen. Wobei zur Ehrenrettung der Skandinavier gesagt sei, dass man auf den meist Verkehrsarmen Landstraßen dort sehr gut Rad fahren kann - man merkt dort deutlich, dass es wenig Radfahrer gibt und diese dort eher auf der roten Liste stehen, als zum Abschuss frei gegeben sind und es drängt die Verkehrspolitiker auch weniger etwas gegen die Radfahrer zu unternehmen, wie zum Beispiel Radwege bauen.

Die Königsetappe, wenn man denn die unangenehmste so nennen will, war übrigens bereits am dritten Tag zu absolvieren. Hamburg wird weitgehend unterschätzt und schlägt alles. Paris Roubaix hat nur 49,8 km Kopfsteinpflaster, eine Durchquerung von Hamburg weist auf Hamburgs Radwegen, selbst ohne die für Ortsfremde obligatorischen Umwege mehr als 50 km davon auf, und was die zu absolvierenden Höhenmeter angeht, bereits 5 cm Geholper pro Meter Radweg, ergeben pro Kilometer 50 Höhenmeter, was bei 50 km 2500 m ausmacht, das Stilfser Joch, mein bisher höchster Pass, den ich mit dem Fahrrad bewältigt habe, hat dagegen nur 1400 m Höhendifferenz auf 14 km aufzuweisen. Als ich diese Etappe bezwungen hatte, wusste ich: Hammerfest - ich komme!

(Juli 2010)

Transparent Gateway for DB2/400

Als Grenzgänger zwischen RPG und Java, oder sollte ich lieber zwischen Java und RPG sagen, bin ich ja öfter mit Schnittstellen beschäftigt. Meistens sind das Anforderungen Daten aus Sequel Server, Oracle, Mysql oder ähnlichem auf die AS/400 zu bringen und ich habe in diesem Bereich unterschiedliche Lösungen implementiert und auch meine Open Source Seite hat davon profitiert. Bei einer der letzten Anfragen ging es um Oracle und letztlich hat man sich für Oracles Transparent Gateway for DB2/400 entschieden. Sicherlich ein eleganter Weg, falls man die Kosten nicht scheut.

Der Ansatzpunkt bei dem Gateway ist, eine Datenbank auf der AS/400 über das Remote Database Directory verfügbar zu machen, so dass man anschließend per Connect an diese Datenbank verbinden kann und mit anderen SQL Anweisungen auf diese Datenbank zugreifen kann. Problempunkt der ganzen Angelegenheit ist allerdings die fehlende Unterstützung wichtiger Datenbanken für diesen Weg. Ein vielversprechender Weg ist hier auf den ersten Blick Derby, das DRDA unterstützt und JDBC spricht. Das hält zwar dem zweiten Blick nicht Stand, aber die Idee eines Transparent Gateway for DB2/400 to JDBCwäre nicht nur für Zugriffe aus RPG auf (fast) beliebige Datenbanken, sondern auch für Java Aufrufe aus RPG der Königsweg.

Bei solchen Ideen frage ich mich immer, warum in Rochester niemand auf solche Ideen kommt und immer dann ist der Schmäh, der keine Wiener Erfindung ist, sondern aus Hessen dorthin verbracht wurde und seitdem hier seltener geworden ist, nicht fern.

Er kanns nicht lassen

Beim einfügen des Links in die Leitseite vom Textarchiv habe ich selbiges auch mit meinen älteren Beiträgen vervollständigt.

hier geht's zum (aktualisierten) Text Archiv

(Mai 2010)

Frühjahrsputz in der GNULIB

Kürzlich habe ich wieder mal ein wenig in diversen Foren geblättert, gelesen, hie und da den Kopf geschüttelt und ab und an ein paar Antworten gepostet. Hin und wieder schließe ich dann mit mir selber Wetten ab welche der vorgeschlagenen Varianten nachher genommen wird und immer dann, wenn ich den Kopf schüttele, würde ich die Wette gegen mich selber gewinnen, die umständlichste Variante findet dann Gnade vor den Augen des Fragers, den ich von Anfang an in Verdacht hatte eine Bestätigung erheischen zu wollen. Ich habe schon oft darüber nachgedacht woher dieser Hang zum Komplizierten kommen mag, warum das einfachere oft verschmäht wird. Auffallend ist jedenfalls, dass diese Scheu vor dem einfachen auf der Plattform AS/400 weit verbreitet ist und das einzige, was mir da als möglicher Grund eingefallen ist, sind die APIs.

API heißt ja eigentlich auf deutsch Programmierschnittstelle, ist also nichts anderes als ein aufrufbares Programm, aber wozu braucht man dann ganze Kurse für Fortgeschrittene dafür, wie man ein Programm aufruft? Das muss was mit dem angeblich doch der Vergangenheit angehörenden kalten Krieg zu tun haben, war doch früher eine Universalbegründung für umständliche Programmierung just to fool the Russians, die sind allerdings heute ohnehin verwirrt genug, aber vielleicht wird das ja heute immer noch beibehalten, oder erneut gepflegt, just to fool the Taliban! Heute fühlte ich mich gleich doppelt an APIs erinnert, nicht nur aus dem bereits dargelegten Grund, sondern auch, weil das Thema API in einem Forum direkt adressiert wurde. Bei dieser Gelegenheit erinnerte ich mich daran, dass ich vor einiger Zeit mal ein Serviceprogramm APILIST geschrieben hatte, das den ganzen Userspace Krempel kapselt.

Das habe ich dann jetzt mal ausgegraben, ein Verwendungsbeispiel dazu geschrieben und ab damit auf die Open Source Seite, damit die RPG Fraktion auch wieder mal was neues bekommt, weil soviel neues kommt da im Augenblick von mir jedenfalls nicht nach. Beim Thema Neues: V7R1 sieht nicht schlecht aus, da tut sich im Rahmen der Plattform Konsolidierung scheints einiges, vielleicht mache ich da doch mal ein kritisches Resumee zu, wenn ich zwischen bezahlter Arbeit und Radsport Training mal dazu komme.

hier geht's zur APILIST

Bei der Gelegenheit habe ich gleich noch einen Bugfix meines Vectors auf meine Webseite übertragen. Einem Kollegen der meine Hashtable schon länger als Ersatz für ein Subfile in einem Guiifizierten (vielleicht besser DDS-desinfizierten) Programm benutzt, habe ich kürzlich den Vector als performantere Variante für diesen Zweck empfohlen und er hat mir dann kurz später zum Dank eine Fehlermeldung per Mail zukommen lassen, die ich mit einem Hotfix beantwortet habe, was ich nunmehr hier nachziehen möchte.

Vector aktualisiert

(April 2010)

Land in Sicht, willkommen auf Java

Zu Beginn des Java Zeitalters auf der AS/400 kam ich mir zuweilen als einsamer Rufer in der Wüste vor, wenn ich die zu damaliger Zeit unverschämt miese Performance von Java auch als solche bezeichnete. Da wurden dann oft von Leuten, die noch nie selber ein anderes Java Programm als HelloWorld geschrieben hatten die abenteuerlichsten Rezepte und Stories verbreitet, die mich immer an Knast erinnerten, obwohl ich nie in selbigem gesessen hatte, assoziierte ich mit JVA immer Justiz Vollzugsanstalt. Je mehr CRTJVAPGM, DSPJVAPGM und WasWeissIchNochAllesJVAPGM durch die heiße Luft schwirrte, dachte ich damals bei mir, solange Java auf der AS/400 als was besonderes dargestellt wird, ist diese Maschine noch nicht auf Java gelandet. Nunmehr neigt sich diese Phase wohl endgültig dem Ende zu, Java ist in Sicht! Nachdem Aaron Bartell meinen AppServer4RPG in seinem Blog vorgestellt hatte, was ich an den sprunghaft gestiegenen Downloadzahlen auf SourceForge bemerkte, schaue ich ab und zu mal bei ihm vorbei. Dabei fiel mir dann kürzlich das Programm einer Tagung in Amiland auf (es war nicht Common), das ich mir aus Interesse ansah, wo ich gerade dabei war, schaute ich auch mal bei Common in Amiland vorbei und da war ein Vortrag angekündigt, der sich damit beschäftigte die JVM bei IBM Rechnern für die Hardware zu vereinheitlichen, was für die AS/400 heißt, dass die Sonderlocken verschwinden und die AS/400 die (hoffentlich unkastrierte) JVM der p (besser bekannt als RS 6000) bekommt. Land in Sicht, herzlich willkommen auf Java!

Meine Marketing Abteilung hat wieder mal interveniert und mir gesagt, dass wir diese Webseite ja nicht aus Jux und Dollerei machen, oder zu meiner persönlichen Selbstdarstellung, sondern dass wir mit interessanten Inhalten und nützlichen Informationen Imagewerbung betreiben und da seien solche Döntjes nicht ausreichend für die Erzielung nachhaltiger Effekte und ich solle doch gefälligst wieder mal in meinen Schubladen kramen und ich habe gekramt und diesmal in der Schublade, die manchmal KnowHow und manchmal gewusst wie heißt.

Integration von WebServices in RPG Anwendungen

(Februar 2010)

Schulungen überarbeitet

Nachdem es erneut geschneit hat, habe ich die Zeit genutzt meine Schulungsseite zu überarbeiten und zu aktualisieren. An manchen Stellen habe ich ein wenig gestrafft, an anderen Stellen ergänzt, es bleibt aber dabei, dass alle Themen bei Inhouse Kursen in den Grenzen meines Wissens und Wollens anpassbar und verhandelbar sind, soweit die inhaltliche Konzeption erhalten bleibt. Neu hinzu gekommen sind die Themen WebServices und .NET Integration, sowie die Aufnahme des Themas AppServer4RPG in die entsprechenden Java Kurse. Die RPG Kurse sind mittlerweile ebenfalls aktualisiert und dabei von der Konzeption leicht überarbeitet worden.

Bei den Themen Java Einsteiger, ILE RPG, SQL Basis Themen plane ich wieder einmal Kurse für Einzelbuchungen wobei ich für Frühbucher Preskriptionen attraktive Konditionen anzubieten habe, Anfrage per Mail willkommen.

(Januar 2010)

Der ungewollte Jahresrückblick

Wieder mal so ein nicht beabsichtigter Jahresrückblick; obwohl ich mir bei jedem Beitrag vornehme den nächsten nicht erst wieder zu schreiben wenn das schlechte Gewissen oder nachlassender Arbeitsdruck mich dazu treiben, denn eigentlich schreibe ich lieber an dieser Seite als an manchem Programm, aber alles aussuchen kann man sich nicht immer und in jeder Situation. Trotzdem ist es gerade jetzt wieder einmal soweit, im Winter fahre ich ungerne raus, die Feiertage sind vorbei und das Firlefanzamt ist auch fürs erste ruhig gestellt und angesammelt hat sich im letzten Jahr soviel, dass ich eigentlich jederzeit in lockerer Folge einen Beitrag hätte verfassen können.

Mein letzter Beitrag in dieser Rubrik und da insbesondere der Vector, den ich als Bonbon dort mit verpackt hatte, führte erst einmal dazu, dass sich Mihael Schmidt, eine der positivsten Erscheinungen der AS/400 OpenSource Scene in diesem unseren Lande (wie der Dicke einst seinen Sprachfehler kaschierte - Deutchland hätte für einen Bundeskanzler doch ein wenig albern geklungen) mit mir in Verbindung setzte, da er ebenfalls einen Vector (und viele andere interessante Komponenten) als Open Source veröffentlicht hat. Es ist uns zwar (noch) nicht gelungen unsere Komponenten zu konsolidieren und zusammen zu legen, aber die Diskussion in der deutschen Freeware Scene gewinnt langsam neue Qualitäten und ich bin schon ein wenig stolz darauf, dass es mir dieses Jahr gelungen ist sowohl Mihael als auch Thomas Raddatz zu Vorträgen auf der Common Jahreskonferenz zu gewinnen und damit die Konferenz auch zu einem Treffpunkt und zur Plattform des Open Source Gedankens zu machen. Wo ich gerade dabei war, habe ich auch noch Baldur Fürchau dazu überredet dort einen Vortrag zu präsentieren, Birgitta Hauser und Holger Scherer waren ja schon öfter dort vertreten und somit hatten wir neben der Spitze der Open Source auch noch die Aktivsten des AS/400 Forums ebenfalls auf der Konferenz. Vielleicht gelingt es mir ja auch noch in diesem Dreieck von Common, Forum und Open Source eine Portal als Einstiegspunkt für nicht kommerzielle Angebote im AS/400 Umfeld zu etablieren.

Eine Anfrage bezüglich Aufruf von AS/400 Programmen als stored Procedure aus .Net nutzte ich dazu mich etwas intensiver mit C# auseinander zu setzen, nachdem ich zuvor bereits einmal ein VB Programm nach RPG portiert hatte. VB haftet für mich als gelernten Fortran Programmierer, auch wenn das fast ewig her ist, immer noch der Geruch eines Fortran für Arme und Kranke an, während C# auf mich eher den Eindruck eines Java Plagiats machte, wobei auch hier, wie so oft, das Plagiat nicht an das Original heranreicht. Was mich schon ein wenig erschütterte war die Einbindung des Datenbanktreibers in die Applikation, nicht nur bedingt durch den ADO Treiber von V5R4 musste dieser bereits zur Compile Zeit geoutet werden, was doch deutlich hinter den Java Möglichkeiten zurück bleibt. Mit dem V6R1 Treiber soll das wohl besser werden, da dieser die aktuelle ADO.NET Spezifikation unterstützt; getestet habe ich das noch nicht, aber an die selbstregistrierenden Treiber von Java reicht dies nicht ran.

Die Folgezeit gab mir wieder Gelegenheit mit meinem AppServer4RPG weiter zu arbeiten, der Hintergrund dazu war die Einbindung von WebServices in die grün gefärbte Welt; nachdem es sich mittlerweile sogar in der tief blau gefärbten Welt herumgesprochen hat, dass es mit der RPG java Integration ala Toolbox und RPG Java Calls per JNI nicht so weit her ist, ist die Suche nach griffigeren Alternativen doch naheliegend. Immer wieder interessant ist es das aufeinander treffen zweier Welten zu erleben, wenn man RPG und Java Leute an einen Tisch bekommt; die Denke ist schon sehr unterschiedlich und die Ansätze der AS/400 Fraktion setzen selbst mich immer wieder in Erstaunen; ein Beispiel dafür ist die Frage in einem Workshop ob man die DataQ des AppServer4RPG nicht größer machen könnte, man denke da so an 20.000 statt 512, oder vielleicht noch ein wenig mehr, damit man auch breitere Datenschnittstellen implementieren könne; dieser Frage gedenke ich künftig zu entgehen, indem ich einen Paketierungsmechanismus einbaue und RPG seitig eine zusätzliche variable Schnittstelle einbaue. Einen kleinen Schub bekamen die Download Zahlen bei SourceForge durch die Vorstellung von AppServer4RPG durch Aaron Bartell in seinem Blog und SourceForge scheint doch auch im AS/400 Umfeld seine eigenen Klientel zu haben, obwohl für sie die Menge der Angebote doch sehr begrenzt ist.

Als Belohnung für das lange warten auf die nächste Aktualisierung dieser Seite, habe ich auch wieder ein Bonbon zugepackt und aus einer meiner Schubladen ein kleines Tool in den Open Source Bereich gestellt. Es ist zwar schon ein wenig älter und nur wenig überarbeitet, aber immer noch gerne von mir verwendet, wenn ich wieder mal als DB Admin tätig bin und zuweilen leistet es mir auch gute Dienste bei der Suche nach Fehlern in Programmen und vielleicht trägt dieses kleine Tool auch ein wenig dazu bei, dass Journalisierung auf der AS/400 eine größere Verbreitung findet. ANZJRN dient nämlich dazu Journaleintäge lesbar aufzubereiten, so dass man anschließend Datenänderungen auf Feldebene nachvollziehen kann.

ANZJRN findet man hier!

(Januar 2010)

Von Spinnen und Gesichtern - oder was ist ein Blog?

Manchmal tummele ich mich auch in Foren und Newsgroups, in einem von diesen, dem aktivsten deutsch sprachigen Ei (das waren noch Zeiten, als die Hühner noch jeden Tag eine AS/400 legten) Forum, wurde kürzlich vom Betreiber die Frage aufgeworfen, ob man einen Blog einrichten solle, oder wolle. Nachdem ich dann auf gut Glück überprüft(english: to browse) hatte, was das eigentlich heißt, stellte ich fest, dass ich ja selber hier eine Art Blog unterhalte, zwar eher ein Quartalsbuch als ein Tagebuch, aber immerhin chronologisch absteigend angeordnet. Dabei fiel mir auch ein, dass ich da wieder mal was schreiben müsste, damit das Ganze nicht unter die Annalen eingeordnet wird.

Als ich noch am überlegen war, ob ich nicht einfach mal meine Enkelin ein Bild malen lassen sollte, oder einen neuen Artikel für die Lästerecke schreibe, über den sensationell gewachsenen Bekanntheitsgrad des Rechners, der mal AS/400 hieß, immerhin ist das jetzt der populärste Rechner; seitdem das I auch noch das System verloren hat und die 5 mit erscheinen des Prozessors p6 weg ist, ist die Trefferquote im google nach oben geschnellt und selbst bing, die bevorzugte Suchmaschine des msn (nicht zu verwechseln mit MfS, das schreibt sich mit großem M) hat mehr als das 10fache an Treffern für I als für Windows zu vermelden. Bei Google rangiert dann zwar eine Kontaktbörse, die Justiz in Bayern und die Bahai vor IBM, aber der erste Schritt ist getan und der Platz hinter der Kontaktbörse sollte bis p17, wenn der dann nicht Intel heißt, zu schaffen sein.

Justament in diesen Überlegungen ereilte mich eine eMail, in der es erst mal um einen Bug in meiner RPG Hashtable ging, dahinter steckte wieder mal eine meiner Spielereien mit binden zur Laufzeit und inkonsistenten Ständen auf meiner Open Source Seite. Eingesetzt werden sollte meine Hashtable dann als Ersatz für ein Subfile in einer Anwendung, in der das 5250 Frontend durch ein Java basiertes ersetzt wird. Da ich nun mal Zwischengesichter Spinnengesichtern vorziehe und mit meiner Meinung selten hinter dem Berg halte, entspann sich rund um die Hashtable eine Fachdiskussion per eMail. Zu den Resultaten gehörte bei mir, dass man die Hashtable vom Speichermanagement her für diesen Zweck aufbohren sollte, dass ein Vector dafür eigentlich noch besser geeignet sein sollte, dass ich diese Diskussion interessant fand, der Fragende dann gerne selber Hashtables programmieren können wollte und wir diese Diskussionen dann als Marek und Vacek an einer emulierten AS/400 Tastatur fortsetzten.

Nach dieser 4 händigen Session hatte mein Diskussionspartner seine bisherige Art zu programmieren in weiten Teilen verlernt, vergessen ist die Basis allen lernens, und ich hatte selten einen besseren Schüler und ich hatte wieder viel Stoff zum überlegen und weiterentwickeln meines Gedanken Projektes RPG für Java Programmierer, oder musste es hier Java Design für RPG Programmierer heißen? Ganz nebenher habe ich meine Hashtable noch vom Speicher Management her optimiert und mein hidden Project log4rpg, das auf meiner Webseite ohne einen einzigen Link vor sich hin wartet, ein wenig überarbeitet und eingebaut. Ach ja, und den Vector, den gibt es jetzt auch und dabei habe ich mal versucht die bisherigen Ansätze und Varianten der Programm gesteuerten Mehrfach Aktivierung auf ganz konservative Art neu zusammen zu fassen und im Code zu verdichten. Eigentlich müsste ich das in fast alle Komponenten einbauen, dann kann man das ganze Aktivierungsgruppen Gedöns (fast) wieder vergessen, kauft sich dafür natürlich die Pointeritis ein und eine Idee zum kapseln dieses Mechanismus habe ich nicht, es sei denn... C++ hat schließlich auch mal als Pre Compiler angefangen der C generiert hat, aber RPG++, das geht wohl doch ein wenig weit, dann würde die Sprache am Ende überleben wegen jemandem, der sie im Grunde nicht wirklich mag, ein Treppenwitz der Geschichte, aber das wäre nicht der erste.

Den Vector findet man hier!

(Mai 2009)

Open Source - und sie lebt doch!

Wenn ich denn mit einem schlechten Gag einsteigen wollte, dann hätte ich Lebt denn der alte angefangen, aber spätestens hier überkommt mich der Ekel, obwohl ich ab und an mal bei uns hier auf die Kirmes gehe, wegen der Blasmusik - ich höre so gerne, wenn die Kapelle aufhört zu spielen. Wenn ich mir das Datum des letzten Eintrags ansehe, dann könnte ich fast ein schlechtes Gewissen bekommen, wenn da nicht 2 Umstände im wesentlichen dafür verantwortlich wären, ein innerer und ein äußerer. Als Egoist fange ich erst mal mit dem inneren an: es geht mir gut, sowohl im privaten, wie auch im beruflichen Umfeld. Das erste nimmt mir Zeit, das zweite nicht nur das, sondern senkt auch die Notwendigkeit an meiner Webseite rumzubasteln, die letztlich von der Abteilung Marketing meiner One-Man-Show verantwortet und getragen wird.

Vom Egoismus zum Altruismus, es tut sich bedeutendes auf meiner Webseite und das hat seine Zeit gebraucht. Nach nunmehr fast 10 Jahren heißt mein Projekt, das manchmal als SQLGATE durch meine Webseiten huscht, Gleiberg (einen Silbersee haben wir hier nicht), ist zum Framework geworden und hat einen Beta Stand erreicht, der mit diesen Zeilen in meiner open Source section veröffentlicht wird. Nachdem die ersten Zeilen an langweiligen Abenden in ebensolchen Hotels entstanden und Sektionen daraus in kleinere Projekte Eingang fanden, die Daten Satzweise von und zu anderen Datenbanken fließen lassen, verdichtete sich der Nebel langsam dazu, dass man das als Framework machen kann und ein Workshop, den ich Common zum Thema RPG Java Integration anbot, eigentlich mehr eine Schulung mit praktischen Übungen, brachte dann nochmal eine Art Feuertaufe, wie denn andere mit sowas zurecht kommen. Die Fachdiskussionen bei dieser Veranstaltung (Dank insbesondere an M*S und M*K) brachten dann nochmals ein paar Aspekte in die momentan letzte Überarbeitung und bei SourceForge habe ich das Projekt dann ebenfalls untergebracht, was dazu führte, dass das erste Howto.html in englischer Sprache verfasst ist. Und letzteres obwohl die erste Veröffentlichung nun doch auf meiner HomePage erfolgt; mein knapper Platz reicht doch aus und mit dem upload nach SourceForge klemmt es noch ein wenig.

Application Server für RPG

(September 2008)

Und wieder einmal ist ein Kalender alle

Der Jahreswechsel ist die Zeit der guten Vorsätze und spätestens wenn ich den alten Kalender durch einen neuen austausche, überlege ich was alles so liegen geblieben ist. Häufig finde ich dann in der Kiste mit den unerledigten Dingen diverse Formulare des Firlefanzamtes, stapelweise Bücher, die ich unbedingt lesen wollte und diverse Manuskripte und Fragmente für meine Webseite.

Hashtable a la Java in ILE RPG überarbeitet
Header für GENFRAME
Header CEE4RAGE wird für die generierten Programme benötigt

(Januar 2007)

Auf Sommerpause folgt Winterschlaf?

Im Hotel ist momentan Traven, ab und an ein Glas Rotwein und ein wenig Java Magazin angesagt. Manchmal fahre ich auch nach Frankreich essen, zum Wochenende auch einkaufen, das leckere Geflügelfleisch der Vogelgrippe und den Käse dem Gestank im Auto zum Trotz im Gepäck, geht es dann wieder Richtung Heimat, dort zwischen Kochtopf und einem überquellenden Schreibtisch pendelnd bleibt wenig Zeit für WebSeiten und Freeware und Open Source.

Das SQL Gateway hat sich wieder etwas nach hinten priorisiert, an der Java Ecke beschäftige ich mich in Vorbereitung eines geplanten Workshops zu Web Anwendungen momentan wieder etwas intensiver mit Eclipse und dem aktuellen Stand des Web Tools Projects. Die Arbeiten an dem RPG Framework sind eher zum erliegen gekommen, aber meine Web Seite schreit nach aktuellerem Material.

Eigentlich wäre wieder etwas lästerhaftes fällig gewesen, aber das neue Release ist sowas von langweilig, dass selbst mir die Lust am Spott vergeht. Embedded SQL im Freeformat, neue BIFs und Ewald jetzt auch mit Korrosion, wenn die so weiter machen, dann wird RPG noch das beste COBOL aller Zeiten, erinnert mich ein wenig an Ford in den 80er Jahren, als die die besten Opels gebaut haben, nur haben wollten die Leute damals alle Mercedes und BMW.

Bei einer meiner Fachdiskussionen über Binder Language und anderes überflüssiges kam mir das sensationelle Insider Gerücht zur Kenntnis (Psst! nicht weitersagen), dass IBM sogar darüber nachdenkt einen Command zu entwickeln mit dem man ein Service Programm in einem Rutsch erstellen kann, so eine Art Pendant zu CRTBNDRPG; bisher ist das hauptsächlich daran gescheitert, dass CRTBNDRPGSRVPGM als Command Name zu lang ist und CRTBNDRPGI zu sehr an CRTSQLRPGI erinnert, das ja nicht so ganz zu den Highlights gehört. An dem immensen Aufwand von 4 Stunden soll das ganze jedenfalls nicht scheitern, den könnte man ja mit einer Art Praxisgebühr von 10 Teuro für die Inanspruchnahme von bezahlten Serviceleistungen finanzieren; schließlich ist ja ein Bug im Betriebssystem nicht viel was anderes wie eine Krankheit eines Sozialversicherten, der ja auch schon für die Krankenkasse bezahlt hat. Vielleicht sollte ich mal in die Tasten greifen, oder in meinen Sourcen kramen und eine verbesserte Variante meines Pre Compilers als Open Source rausbringen, der dafür sorgt, dass zusammen wächst, was zusammen gehört, auch wenn daraus manchmal keine blühenden Landschaften entstehen. Oder vielleicht hat ja jemand von euch...???

Bei der Durchsicht der Programme meiner Webseite ist mir aufgefallen, dass sich da ein paar Komplexitäten eingeschlichen haben, die von diversen Versuchen herrühren das dynamische Binden zu automatisieren, zudem spiegeln einige der Programme Stadien meines experimentellen Schaffens wieder, die aus unterschiedlichen Perioden stammen. Um das ganze etwas übersichtlicher zu gestalten haben ich ein paar überarbeitete Versionen und ein paar neue Beispiele eingestellt. Die komplette Linkliste befindet sich weiter auf der Freeware Seite.

In der Link Section ist ein neuer link auf die Seiten des dänischen Kollegen Leif Guldbrand enthalten, der dort die Fahne der AS400 Freeware hochhält. Eine amerikanische Seite mit interessanten Ansätzen entpuppte sich mittlerweile eher als toter Briefkasten - ein Angebot dort Open Source Programme von mir einzustellen blieb bislang unbeantwortet.

Properties a la Java in ILE RPG überarbeitet
Beispiel und Testprogramm für Properties
Propertie Datei für Beispiel
Hashtable a la Java in ILE RPG überarbeitet
Beispiel und Testprogramm für Hashtable

(März 2006)

Sommerpause - oder das Gegenteil davon?

So Webseiten mit Freeware haben ihre eigene Dynamik, je mehr Zeit man in Aktualisierung steckt, umso besser werden die Seiten, umso mehr Besucher hat man und verliert dann die Zeit sich um seine Seiten zu kümmern, da man mehr Anfragen bekommt und sich dann darum kümmern muss, aber das hat ja Faktorierungs technisch auch seinen Charme. Das Ganze ist dann so ein selbst regulierendes System: je mehr man in Aufträge eingebunden ist, umso weniger hat man Zeit seine Webseiten zu aktualisieren, das Interesse an den Seiten ebbt ab und man bekommt weniger Anfragen und hat mehr Zeit sich um seine Webseiten zu kümmern.

Es liegt in der Natur der Sache, dass Projekt Arbeit sowohl befruchtet als auch einengt und so entsteht immer wieder neues Potential und es kommen neue Ideen, die man in den Projekten selber oft nur in Ansätzen umsetzen kann. Und das ist letztlich die Quelle aus der Freeware entsteht und aus der sich Beiträge mit technischen Informationen speisen. Meine Schwerpunkte der letzten Zeit hatten meist mit der Verarbeitung großer Datenmengen zu tun und bewegten sich sowhl im klassischen Umfeld, als auch in der Welt von Java.

Was meine Freeware Aktivitäten angeht, ist mein Framework Projekt etwas in den Hintergrund gerückt, da mein RPG Bedarf momentan eher abnehmend ist und ich auch zuviel unterwegs bin und abends im Hotel dann eher zwischen Einstein, Schiller, Java und einem Glas Rotwein die zuweilen nicht ausschließende Wahl treffe und eher auf Bier, RPG und sicher Zigaretten verzichte. Momentan arbeite ich da an einem SQL Gateway, das auch noch als Java Server fr RPG Anwendungen dienen könnte. Das Ganze entpuppt sich aber doch wieder mal als ein größeres Vorhaben, das auch den Rahmen meiner eigenen Webseite sprengen könnte - vielleicht landet das dann bei Sourceforge.

Bei der intensivierten Java Arbeit habe ich dann auch wieder mal was unvollendetes aus meiner Programmierer Kiste ausgegraben, das ich jetzt so langsam mal fertig machen könnte. Jeder Java Programmierer kennt log4j, kaum ein RPG Programmierer vermisst sowas, da man noch nie ein logging Framework verwendet hat. Als Vorstufe fr mein LOG4RPG stelle ich jetzt einfach mal mein PROPERTIES Service Programm auf meine Webseite, das wird nämlich für die Konfiguration meines Logging Frameworks für ILE gebraucht.
Properties ala Java für RPG Programme

Beim Aufräumen habe ich dann auch noch einen Bug in meinem Rahmen Generator gefunden und ausgebaut.
Bug Fix Procedures ohne Rückgabe (Oktober 2005)

In eigener Sache

Vor ungefähr 2 jahren habe ich angefangen mich intensiver als vorher um meine Web Seiten zu kümmern. Da ich nicht zu den Gutmenschen gehöre, die das für andere tun und nicht zu den Schwindlern, die selbiges einfach behaupten, ist es an der Zeit mich zu outen: es geht letztlich ums Geschäft. Es muss keiner erschrecken, hier entsteht keine Kosten pflichtige Webseite, ich gebe kein eBook heraus, meine Seite werden nicht zum Spenden Portal, es wird keine Registrierung zum verdeckten sammeln und weiterverkaufen von eMail Adressen geben, ich habe nicht vor die Rubrik Schleichwerbung, die es durchaus gibt, zu vergrößern, ich werde keine Projektbörse eröffnen, oder was da sonst noch so alles versucht wird. Ich werde so weiter machen wie in den letzten zwei Jahren. Aber was habe ich da eigentlich und warum gemacht?

Ich habe Freeware auf meine Seiten gestellt, um meine Seiten attraktiv zu machen, meine Arbeit überprüfbar zu machen und damit für mich und mein Knowhow, wie man Wissen heute nennt, zu werben und - um mein Copyright zu schützen, woran viele Freelancer viel zu wenig denken, sonst gäbe es mehr Open Source im AS400 Bereich.Und ich habe mir dann die Web Statistiken meines Providers angesehen, um die Effekte sichtbar zu machen. Das meiste Interesse haben oft zu meinem Erstaunen sehr einfache Dinge hervorgerufen, wie das FTP Tool, obwohl es dazu zahlreiche Freeware Vertreter gibt. Programme, die für mich selber weit höhere Wichtigkeit haben, wie der Pre Compiler und das ServiceProgramm zum dynamischen Binden wurden zwar angesehen, aber weit weniger intensiv, oft nur Teile davon, was dafür spricht, dass es kaum jemand verwendet.

Zuweilen habe ich mir einfach Dinge von meiner schwarzen Seele geschrieben und damit bei Freunden teilweise schieres Entsetzen hervorgerufen. Der Kommentar Was sagen eigentlich Deine Kunden zu diesem Gerüttel? über meine Reflektion über den Stand von RPG, als Reaktion auf einen Common Workshop RPG - eine moderne Programmiersprache bleibt mir unvergessen und der Artikel brachte sehr vielfältige Wirkungen. Die Rubrik Schmäh wird immer noch gerne gelesen, manche Kunden sind offener zu mir geworden, meine Aufträge im Bereich Könntest du uns mal einen Vortrag halten, über RPG und umsonst sind weniger geworden. Und ich werde frei nach Roberto Blanco Ein bisschen Spass muss sein auch diese Rubrik fortführen, wenn es mir danach ist.

Seit kurzem haben meine Seiten einen neuen Spitzenreiter, der sich stabil nach vorne entwickelt, zu meiner persönlichen Freude. Meine FAQ zu Java auf der AS400 setzen sich langsam aber stetig von den anderen Seiten ab. Nachdem ich über lange Zeit das enfant terrible in der amerikanischen java400-l, einer Mailingliste auf den MidrangeComputing Webseiten gespielt habe und mir dort mehrere gelbe Karten des Moderators geholt habe, habe ich kurzer Hand diese Aktivitäten auf meine WebSeite konzentriert; zuerst eher aus Verlegenheit, eigentlich wäre wieder einmal Freeware drangewesen, dann aus innerem Drang und nun kommt das Ganze wieder mit dem Kern der Angelegenheit zusammen, es steigert die Resonanz auf meiner Web Präsenz und nicht zuletzt deshalb sitze ich ja wieder einmal hier und schreibe.
Wie beginnen mit Java? (März 2005)

Technische Informationen

Meine Webseiten wachsen und es wurde Zeit die Struktur moderat zu überarbeiten. Es ist eine neue Seite Infos hinzugekommen, über die die technischen Artikel besser erreichbar sein werden. Diese Seite ist auch über den Navigations Frame unter Infos erreichbar.

Der zweite Arbeitspunkt der letzten Wochen war die Erweiterung der Java FAQ, ein Projekt, das sich noch weiter als roter Faden durch die nächsten Wochen ziehen wird
Technische Informationen (Februar 2005)

Java auf der AS400

Webseiten, die gelesen werden sollen, müssen interessant sein und immer wieder was neues anbieten. Also gehört es zu meinen festen Ritualen mich so ungefär einmal im Monat hinzusetzen, und zu schreiben. Dieses Mal habe ich mit lesen angefangen, ein paar Fehler bereinigt und dann drängte sich mir die Frage auf, warum ist da soviel RPG und so wenig Java?

In der Freeware und Open Source Ecke ist das noch nachvollziehbar: da gibt es Internet Seiten mit Java Freeware vom Feinsten, die von Organisationen gepflegt werden, die von allem unterstützt werden, was Rang und Namen hat, da kann ich als Nischen Bewohner nicht mithalten, wiewohl mein kleines Transfer Utility mittlerweile international seine Liebhaber gefunden hat. Aber selbst im Theorieteil meiner Seiten dominiert RPG, wohl eher als Bestandteil meiner Vergangenheits Bewältigung erklärbar.

Das soll sich ändern und ich werde ab sofort anfangen eine Rubrik Java auf der AS400 auf meinen Webseiten zu eröffnen. Themen gibt es genug, geschriebenes von mir auch, in Schulungsmaterialien, in Skripten von Veranstaltungen und in Beiträgen in Newsgroups, Foren und Mailinglisten, es muss nur aufgearbeitet werden.
Java auf der AS400 (Januar 2005)

Programmier Richtlinien

Kurz vor der Common Jahreskonferenz habe ich eine Anfrage bekommen an der zentralen Diskussion zum Thema Security auf dem Podium teilzunehmen und habe mich entschlossen zuzusagen, schließlich ist es lange genug her, dass ich auf diesem Gebiet tätig war, und solche Diskussionen können immer ein wenig enfant terrible gebrauchen. Aber was sagt man auf so einer Diskussion, in den heiligen Hallen einer Common Konferenz, gemeinsam mit Vertretern von Big Blue, vor einem Auditorium von überzeugten und treuen AS400 Fans und dann auch noch auf dem Podium, über einen Rechner, den viele für den sichersten der Welt halten?

Mir kam die Reklame Hacker verzweifeln in den Sinn und direkt daneben hatte ich die eine oder andere AS400 vor Augen, mit Public Berechtigung *ALL für alle Produktionsdaten, deren Kennwörter lustig über offene Datenkanäle übertragen werden im Vertrauen auf den sichersten Rechner der Welt, den Menüschutz und irgendwelche Tools, die Exit Schnittstellen der AS400 mit einem Benutzer basierten Regelwerk überwachen. Dieses Bild sorgte dann für eine lebhafte Diskussion.

Was hat das alles mit Programmier Richtlinien zu tun? Nun gut, nicht wenige halten RPG für die Krone des Software Engineering, obwohl es dafür genauso wenig gemacht wurde, wie die AS400 als Hochsicherheitsrechner designed wurde. RPG wurde entwickelt mit der mittlerweile gescheiterten Idee im Hinterkopf, dass jeder Friseur Anwendungsprogramme schreiben kann. Gescheitert, weil die Programme dann aussahen wie die Frisur mancher Leute. Zu Ehrenrettung der Friseure sei gesagt, dass Haare, die von mir geschnitten werden, dann wohl aussehen würden wie manches RPG Programm.

Das Bild des sichersten Rechner der Welt vor Augen, verleitet zum Leichtsinn, der Glaube mit der Krone des Software Engineering zu programmieren verführt dazu drauf los zu programmieren ohne Rücksicht auf Design und Lesbarkeit und gerade das ist in RPG fatal. Viele Altlasten wären so nicht entstanden, wenn adäquate Richtlinien beim schreiben der Programme beachtet worden wären und mit ILE RPG sind die Ausreden weniger geworden. Und dennoch, wenn man Beiträge in Foren und Newsgroups liest, dann werden oft gerade im Bereich von Ausbildung gravierende Mängel sichtbar; gerade Anfänger lernen viel zu oft als erstes die Steinzeit von RPG kennen und hämmern ihre ersten Programme notgedrungen im Lochkartenstil mit Hammer und Meißel in Steinplatten.

Ich habe versucht dem entgegen zu wirken und einen Entwurf für Programmier Richtlinien geschrieben.
Programmieren mit Stil (Dezember 2004)

Neue Java Workshops

Ich bin immer wieder erstaunt wieviele java Programmierer auf der AS400 meinen, dass es etwas besonderes wäre auf einer AS400 Java zu programmieren und welche Sonderlocken man in der real existierenden Java Welt auf dieser Plattform antrifft. Da werden nicht nur Räder neu erfunden, auch wenn diese dann manchmal nicht ganz rund sind, da werden selbst die dazugehörigen Kutschen neu gebaut, obwohl es längst schon selbstfahrende Exemplare davon gibt, manche nennen sie Autos. Die Ursache dafür liegt in zwei Dingen: einmal das Marketing der AS400 Verkäufer und alles was davon abhängt, da versuchen RPG Hardliner für Java Reklame zu machen und der Schulungsbereich, wo der Java/AS400 Mainstream meint die AS400 Klientel damit an die Plattform zu binden, dass man Java mit RPG vernäht und die etablierten Standards weit außen vor lässt, es sei denn man kann sie WebSphere nennen, obwohl das ja gerade auf Rational umgebrannt wird, soweit es sich um Entwicklungswerkzeuge handelt.

Um diesen Defiziten mit abzuhelfen, habe ich mein Angebot an Workshops erweitert und insbesondere neue Angebote für die AS400 Klientel aufgenommen, die etablierte Java Standards und Methoden, insbesondere aus dem Open Source Bereich behandeln.Neue Java Workshops

Die Freeware Sektion bekommt langsam, sehr langsam Eigendynamik, Neu ist in dieser Ecke ein verbessertes Release für das ZIP Tool, das ich als Rückmeldung von einem Verwender bekommen habe und gleich dem Rest zur Verfügung stellen will. Ein freundlicher Mensch hat da ein wenig Error Handling eingebaut.

ZIP mit verbessertem Error Handling(November 2004)

Lesen von Streamfiles mit RPG

Die Common Jahreskonferenz rückt näher, eigentlich müsste ich an meinem Vortrag über Object Relational Mapping am Beispiel Hibernate arbeiten; wir haben gerade Herbstferien in Hessen und eigentlich müsste ich als Teil einer von Lehrern dominierten Familie in Urlaub weilen; draußen scheint die Sonne und eigentlich müsste ich jetzt äpfel ernten; mein Terminkalender hat noch Luft und eigentlich müsste ich mich um zusätzliche Aufträge kümmern, aber was heißt schon eigentlich.

Zum Thema Common Jahreskonferenz fällt mir noch ein: find ich immer wieder spannend, dieser Mix von IBM Marketing Show und Fachdiskussion unter Kollegen und das ganze immer im Spannungsfeld von RPG Hardlinern und einigen bösen Buben, die das alles nicht so bitter ernst nehmen und auch Verständnis für Leute haben, die keine AS400 haben wollen. Aber bei aller Schmäh' ist es natürlich für mich Ehrensache zu einem solchen Event was beizutragen, schließlich verdanke ich auch Common einen Teil meines fachlichen Rufes und bei aller Kritik, die ich zuweilen an zu großer IBM-Nähe geäußert habe, ein Problem aller User Groups, erfüllen solche Benutzer Vereinigungen wichtige und vielfältige Aufgaben für ihre Mitglieder. In erster Linie freue ich mich allerdings auch auf ein Treffen mit vielen lieben Kollegen und interessante Diskussionen am Rande der Veranstaltung.

So langsam fallen mir wieder die eigentlichs ein und ich stelle jetzt einfach mal wieder ein paar neue Sourcen in meine Freeware Abteilung, denn eigentlich, interessiert das die meisten Besucher am meisten, obwohl meine bissigen Randbemerkungen in dem einen oder anderen Artikel dieser Webseiten auch so ihre Trefferquote hat...

RPG InputStream ala Java(Oktober 2004)

Schreiben in Streamfiles mit RPG

Bereits ein paar Tage aus dem Urlaub zurück, noch ein wenig Zeit, da das Sommerloch noch nicht ganz vorbei ist, draußen regnets in Strömen, eine Mail in der zugehörigen Box mit einer Rückfrage zu einem Artikel in MM, was liegt da näher als ein Programm über Streamfiles auf meine Webseite zu stellen, Open Source natürlich.

Beim Thema Open Source fällt mir noch ein: woran es wohl liegen mag, daß das kein so richtiges Thema in der AS400 Community ist, an i-Series oder i5 kann es nicht liegen, schon eher an der mangelnden Bereitschaft was dazu beizutragen, das betrifft allerdings sowohl Anbieter als auch Verwender. Zu den Anbietern und deren Motive will ich hier nichts schreiben, schließlich bin ich selber einer und da soll sich jeder sein eigenes Bild machen, aber was die Verwender angeht, da vermisse ich zumindest Rückkopplung und auch Unterstützung. Ab und an mal eine Mail mit der Mitteilung: ich habe diese oder jene Komponente verwendet oder hilfreich gefunden, oder auch: dieses oder jenes gefällt mir nicht, ich habe es verbessert und möchte andere daran teilhaben lassen würde die ganze Open Source Abteilung schon lebhafter machen.

RPG OutputStream ala Java(September 2004)

Zip auf der AS400, für nix und wieder nix!

Ab und an tummele ich mich in den deutschen Foren und Newsgroups und immer wieder wird dort nach komprimieren gefragt, obwohl ich dazu schon öfter in Midrange Magazin geschrieben habe, wie das jeder selber machen kann. Als jetzt wieder mal ein Update für meine Freeware Seite fällig war, damit sie interessant bleibt, habe ich mal ein kleines Frontend gemacht, für die QShell Verächter, die lieber ein OS/400 Interface haben wollen.

ZIP auf der AS400 (Juni 2004)

Sensation: erste i5 in Hessen

mit Bauanleitung

Das neue Jahrtausend hat kaum angefangen und schon ein Jahrtausend Ereignis, das Frühjahrs Annoncement von IBM mit neuer Hardware und neuer Software. Wie sind die ersten Eindrücke von i5, wie kommt man am schnellsten an die neue Hardware und Software, Fragen über Fragen - und Antworten!

i5 - Innovation hat einen Namen(Mai 2004)

SQL Procedures werden langsam erwachsen

Seitdem ich es mir zur Gewohnheit gemacht habe ab und an ein wenig Freeware auf meine Seite zu stellen, nimmt der Betrieb auf meiner Webseite kontinuierlich zu und klappern gehört bekanntlich zum Handwerk. Einen Nachteil hat das allerdings, schreibt man was in Java, dann hat man Mühe nicht was zu wiederholen was es schon gibt; schreibt man was in RPG, dann verfestigt sich die Haltung weiterhin, dass RPG mehr als ein Notbehelf ist.

Bisher habe ich versucht dieser Problematik zu entgehen, indem ich versucht habe in RPG Techniken vorzustellen, die für diese Programmiersprache ungewöhnlich oder neu sind. Das macht es dann allerdings wieder für den ein oder anderen schwierig die Programme zu verstehen. Je mehr Erläuterungen ich hinzufüge, umso mehr artet das in Arbeit aus und befindet sich dann auch im Wettbewerb mit meiner sonstigen Schreiberei für Zeitschriften und die Kontingente zum Schreiben sind begrenzt, das Projektgeschäft soll Schwerpunkt bleiben. Also wird getrennt: was als Codebeispiel für einen Artikel zu lang ist, wandert auf die Freeware Seite, was für einen Artikel in einer Zeitschrift zu offen und damit zu hart ist, landet auf meiner Webseite.

Heute will ich mal versuchen eine neue Rubrik, die dazwischen angesiedelt ist, aufzumachen, so eine Art von technischen Tips - in Codeform. Als Thema habe ich mir heute SQL Procedures vorgenommen

SQL User Defined Functions (April 2004)

Generieren geht über programmieren - solange man kein Framework hat

So ab und an bin ich wieder mal am basteln an meinem Framework und es entwickelt sich langsam zu einer Fortsetzung meines früheren Eigenprojektes RPG für Java Programmierer. Die verstärkte Beschäftigung mit RPG fördert bei mir gewisse Frustgefühle seitdem ich mich mehr mit Java beschäftige. Manchmal arbeite ich das in Prosa ab, manchmal in RPG Knüttelversen.

Nachdem ich mich neulich schon so über das unsinnige tippen von /free und /end-free Einträgen geärgert habe, dass ich einen kleinen Generator geschrieben habe, fiel mir in der nächsten Sitzung auf, dass ich schon wieder unsinnige Tätigkeit verrichten musste. Mein Compiler, ich fürchte Ihrer genauso, wollte immer alles doppelt haben. Nachdem ich den Prototyp geschrieben hatte, wollte es, dass ich dasselbe nochmal als Procedure Interface eintippe; auch das Argument, dass das in Java intelligenter gelöst sei, hielt es nicht davon ab immer wieder zu kontrollieren, dass ich mich nicht vertippt hatte. Es wusste also, was ich dahin tippen musste, ließ es aber mich machen, um dann mit gehässigen Fehlermeldungen zu reagieren, wenn ich es nicht wusste, oder mich vertippte.

Gute Ideen sollte man ausschlachten, man hat so selten welche, dachte ich mir und schrieb einen kleinen Generator. Der ist zwar erst Beta und auf meine Arbeitsweise zugeschnitten, aber ich habe ihn mal in die Freeware Section gestellt, nicht zuletzt, damit ich unterwegs bei meinen Kunden selber besser drankomme.

Generieren geht über programmieren (März 2004)

Neues aus der Freeware Kiste

Hat es Sie auch schon immer gestört immer und immer wieder /free /end-free einzutippen? Mich jedenfalls schon, insbesondere bei embedded SQL. Bei mir wird jedenfalls nicht nur gemeckert und gelästert, da wird auch versucht was für den Programmierer zu tun.

Für mein Freeware Projekt eines Model View Controller Frameworks wird wohl ohnehin ein kleiner Generator benötigt und da habe ich mir gedacht, dass man ja vorab mal einen kleinen Generator schreiben könnte, der mir die stumpfsinnige Arbeit abnimmt die /free und /end-free Einträge zu generieren. Das Teil hat zwar noch ein paar Einschränkungen, aber für den Anfang... jedenfalls besser als immer wieder tippen.

Vielleicht findet sich ja mal jemand, der die Semikolons generiert, oder der den Generator so umbaut, dass er mit CRTCPP mitläuft, das kann er nämlich gegenwärtig nicht, weil er einen CPYF aus der QTEMP braucht. Aber da gibt es doch sogar Preprocessor APIs...

Freiheit in der Programmierung ohne Zwang (Februar 2004)

Willkommen in den 70er Jahren

Er kanns nicht lassen, er hat wieder einmal RPG gelästert. In der Rubrik Unterhaltung können Sie ein paar ketzerische Gedanken zu ILE RPG, Free Format und Java lesen. RPG eine moderne Programmiersprache(Januar 2004)

neue Version CRTCPP

Das Tool zur Erstellung von Objekten nach Einträgen in der Source ist in verbesserter Version zu erhalten. Bei Fehlern in der Umwandlung wird jetzt mit abnormalem Ende abgebrochen, so dass bei SBMJOB eine Meldung CPF1240 mit Abnormale Beendigung, wie bei den Compile Befehlen abgesetzt wird. Wird als Jobname beim submit der Objektname verwendet kann dann aus SEU mit F15 in den Spool verzweigt werden.

Programm Erstellungs Tool (Januar 2004)

Neue Schulungsthemen

Im Schulungsbereich wird viel gejammert und wenig gehandelt. Da wird noch lustig Visual Age geschult, obwohl der Hersteller dieses Werkzeug längst vom Markt genommen hat. RPG Kurse vermitteln mehrere Wochen Zyklus Programmierung und andere Dinge, die man besser garnicht erst lernen sollte. ILE Kurse werden nach Bärenart konzipiert: Wasch mir den Pelz, aber mach mich nicht nass. Kursunterlagen werden abgekupfert, wobei nach dem Teebeutelprinzip die Brühe immer dünner wird. SQL Kurse bleiben da stehen, wo record level access nicht mehr weiter kann.
Ich biete keinen Kurs Lerne Klagen ohne zu leiden an und habe auch selber nie einen solchigen belegt. Alle Kurse werden fortlaufend aktualisiert, es sind immer neue Themen in Entwicklung.
Im SQL Bereich ist nunmehr auch auf der iSeries, besser bekannt unter dem Pseudonym AS400 SQL als Programmiersprache erwachsen geworden. Die Erstellung lässt den C-Compiler kaum noch erahnen, die Leistungsfähigkeit ist groß. Trigger, Procedures und Functions sind in SQL wesentlich schneller entwickelt als mit RPG und COBOL mit oder ohne embedded SQL. Die gesamte Datenbank Zugriffsschicht kann man heute weitgehend in SQL schreiben, viel an komplexer Logik lässt sich in der Datenbank kapseln. Die neuen Möglichkeiten werden in einem neuen Kurs vermittelt.
Neu ist ebenfalls eine Einführung in das Open Source Framework STRUTS. Im AS400 ('tschuldigung iSeries) Umfeld wird viel über WebSphere geredet und wenig über Anwendungsdesign nachgedacht, in meinen Schulungen ist das umgekehrt: bei mir stehen Kenntnisse und erste praktische Erfahrungen im Vordergrund und nicht Werkzeuge und Ablaufumgebungen. Wer nicht den Ehrgeiz hat alle Fehler selber zu machen und das 376 Millionste Rad zu erfinden, der bedient sich bei der Java Programmierung sogenannter Frameworks und STRUTS ist nicht irgendeines, sondern das Framework schlechthin, zumindest für Web Anwendungen.
Weitere Informationen auf der Schulungs Seite. Themen können wie immer angepasst werden, Termine auf Anfrage. (Dezember 2003)

Workshops - learning by doing

Neu auf meiner Web Seite, aber nicht neu im Angebot, sind Workshops. Der Kunde formuliert ein Programm-technisches Problem und wir lösen das dann gemeinsam; am Ende der Veranstaltung haben Sie Ihr Problem gelöst und das Wissen, wie es gemacht wird. Am Besten geeignet für Kleingruppen und überschaubare Aufgabenstellungen. Diese Arbeitsform ist auch geeignet für die Untersuchung von Performance Problemen im Datenbankbereich. (August 2003)

Dynamische Speicherverwaltung in RPG

Auf der Snippets Seite ist wieder mal ein neues Programm aus meiner RPG für Java Programmierer Kiste. Jeder Java Programmierer kennt die Klasse Hashtable und deren Vettern und Basen und in RPG hält man das, was die Java Designer aus C entfernt haben, für das grösste, die dynamische Speicherverwaltung zu Fuß! Das geht allerdings auch in RPG auf die Java Tour, zumindest ein wenig. Dieses Modul ist auch eine wichtige Grundlage, für das Überwinden der Restriktionen, dass man ein Modul in RPG nur einmal aktivieren darf, vielleicht taucht dazu später mal was auf der Snippets Seite auf.

RPG Hashtable (August 2003)

Datentransfer zwischen beliebigen Datenbanken

Neu auf der Snippets Seite ist das Java Programm zur Übertragung von Datenbank Dateien per JDBC

TransferData (Mai 2003)

Erweiterung Kursangebot ab 2003

Ab Beginn nächsten Jahres wird es neben der Möglichkeit von Inhouse Kursen und Workshops bei Firmen auch Kurse und Workshops für Einzelbuchungen geben. Die Themenpalette wird dabei als Schwerpunkte SQL, Java und fortgeschrittene ILE Techniken umfassen. Vom Tagesseminar bis zu Wochenkursen wird alles möglich sein. Bei Interesse können auch schon vorab Anfragen per Mail erfolgen. (September 2002)

Dynamischer Aufruf von gebundenen Prozeduren

Neu auf der Snippets Seite ist das Beispiel zur Reflection, dem dynamischen Aufruf gebundener Prozeduren.

Reflection in RPG (September 2002)

 Aufwärts