News
DV-Beratung Dieter Bender
Diese Seite ist ständig im Aufbau! - deshalb heisst sie auch News und nicht Olds
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)
Ü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)
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)
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)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)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)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)
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)
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)
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)
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)
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.
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)
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.
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.
(April 2010)
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)
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)
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.
(Januar 2010)
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.
(Mai 2009)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.
(September 2008)
Hashtable a la Java in ILE RPG überarbeitet
Header für GENFRAME
Header CEE4RAGE wird für die generierten Programme benötigt
(Januar 2007)
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)
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)
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)
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)
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)
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)
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)
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)
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 (Juni 2004)
i5 - Innovation hat einen Namen(Mai 2004)
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)
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)
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)
Programm Erstellungs Tool (Januar 2004)
RPG Hashtable (August 2003)
TransferData (Mai 2003)
Reflection in RPG (September 2002)