-
Hallo Birgitta,
danke für den Tipp.
Darüber nachgedacht hatte ich auch schon, da ich gleiches zum Programmende auch mache, unabhängig davon, ob ich vorher schon den close hatte.
Und da ich den sqlcode dann ja nicht auswerten muss, läuft der "Cursor ... nicht geöfnnet" dann halt ins Leere.
So werde ich das dann wohl machen.
Glücklich macht mich das zwar nicht wirklich, aber an SQL kommt man ja auch nicht mehr wirklich vorbei und eigentlich ist es ja auch ganz nett und dazu nahezu plattformunabhängig.
Aber da ich weiß, dass Du sehr viel mit SQL machst und ich auch schon auf einigen Deiner Vorträge auf der COMMON war, vieleicht magst Du mir da noch eine Frage beantworten, die mir schon länger im Kopf schwirrt, die ich aber mit niemanden wirklich ausdiskutieren kann.
Hat Embedded-SQL in einer Anwendung, die rein aus RPG(LE) und DDS-beschriebenen Files besteht einen wirklichen Vorteil gegenüber der herkömmlichen Dateiverarbeitung?
Über eine Antwort würde ich mich freuen. Wenn Du magst, auch gerne als pn, da es das Thema hier nicht wirklich betrifft.
Danke und Gruß
Michael
P.S. ich weiß, dass ich den abschließenden close am Programmende auch vom System machen lassen kann, musste aber eh Aliasse lösche und habe es dann dort gleich mit rein gebaut
-
Da es den DO *HIVAL nicht mehr gibt, verwende ich grundsätzlich
exec sql open ...
dow 1=1;
exec sql fetch ...
if sqlcode <> *zero;
leave;
endif;
:
enddo:
exec sql close ...
Somit frage ich den SQLCODE nur da ab, wo ich ihn brauche.
-
Danke Fürchau,
das ist ja genau meine Art Code zu schreiben *smile* und würde mir in meinem konkreten Fall weiterhelfen.
Die Frage mit den sqlcode in der globalen DS hat ja leider schon Birgitta, wie von mir befürchtet beantwortet.
 Zitat von Fuerchau
Da es den DO *HIVAL nicht mehr gibt, verwende ich grundsätzlich
Was natürlich nur dann so stimmt, wenn man nicht mehr fixed programmiert/programmieren muss
-
Naja modern ist das jetzt nicht. Leave sollte man ja auch nur in absoluten Ausnahmesituationen verwenden, wenn man nach Allgemeinen Clean-Code Regeln entwickelt. (Was man ja unbedingt tun sollte, sonst kein RPG-Nachwuchs..)
Aber die Debatte tue ich mir nicht mehr mit RPG Entwicklern an, leider eine Diskussion ohne Aussicht auf Erfolg..
-
@xenofob
Ich will jetzt auch keinen Kleinkrieg anzetteln.
... aber was glaubst Du wohl ist leichter zu lesen bzw. zu ändern, FETCH/READ am Anfang der Schleife oder am Ende, wenn bereits 10 Bedingungen unter denen die Schleife verlassen und 20 Bedingungen unter denen ein Satz überlesen werden muss, definiert sind und Du eine weitere Bedingung unter der ein Satz überlesen werden muss einbinden musst?
Das kommt vielleicht nicht in PipiFax Progrämmchen vor, wie sie in der Schule gelehrt werden, aber in komplexen Anwendungen mit vielen verschiedenen Kunden, mit entsprechend vielen unterschiedlichen Anforderungen an ein Programm schon.
RPG-Programmierer sind ja alle so doof, die können keine 30 ineinander verschachtelte IFs lesen im Gegensatz natürlich zu allen anderen Programmierern!
Birgitta
-
... da wäre ich doch völlig schmerzfrei und füge zwei fixe Statements ein: GOTO (evtl. auch mit einem Indikator konditioniert) und einen TAG. ;-)
kf
-
Also GOTO / TAG Verwendung würde ich persönlich versuchen zu vermeiden und geht ja zum Glück im fully-free auch nicht mehr
Aber die Verwendung von leave bzw. iter finde ich, unabhängig von der Programmiersprache (break/continue), überhaupt nicht abwegig. Wenn ich zu Beginn einer Schleife feststelle das ich raus muss oder zum nächsten Schleifendurchlauf, dann besser ein leave/iter als den ganzen Rumpf unnötig zu verschachteln.
-
... und was passiert, wenn Dein Programm fehlerhaft beendet wurde und erst gar nicht zu dem CLOSE kommt?
Dann hast Du beim nächsten Aufruf u.U. ein Problem.
Natürlich versucht jeder so sicher wie möglich zu programmieren, aber ich habe genügend Situationen erlebt, in denen dann "eine leere Liste" oder ein "leerer Bildschirm" zurückkam.
... und was noch schlimmer war, dass der Programmierer dann das Problem so gelöst hat, dass das Programm vor dem Aufruf immer neu compiliert wurde.
Klar, man kann natürlich jetzt (seit 2 Releasen) auch den Close exklusiv im ON-EXIT machen, dann geht man ganz auf Nr. sicher.
... Ach und übrigens, gibt es mit dem TR2 in Release 7.1 (bzw dem entsprechenden TR in Release 7.3) die Möglichkeit auch im Free-Format eine Endlos-Schleife zu programmieren:
-
Birgitta,
jetzt hast Du mich mit Deiner Aussage etwas unsicher gemacht
 Zitat von B.Hauser
... und was passiert, wenn Dein Programm fehlerhaft beendet wurde und erst gar nicht zu dem CLOSE kommt?
Dann hast Du beim nächsten Aufruf u.U. ein Problem.
War das auf den Close bezogen?
Ich wäre jetzt davon ausgegangen, dass im schlimmsten Fall der CLOSQLCSR = *ENDMOD das dann zumindest erledigt?!
Schlechter sieht es allerdings mit den erstellten Aliassen aus, die beim harten Ausstieg tatsächlich als Leiche bleiben.
Hier würde ich mir ein Drop Alias vor dem Erstellen des neuen Alias einfallen. Da ich den Alias sowieso in QTEMP erstelle, kann ich mir zumindest sicher sein, dass es mein eigener ist.
Ein ganz sicherer Umgang damit fällt mir dazu aber aktuell nicht ein.
Wenn das alles Blödsinn ist, klärt mich gerne auf, denn ich bin nicht so lernresitent, wie es xenofob vielleicht erscheinen mag. Ansonsten hätte ich den Thread ja auch gar nicht erstellen müssen.
Nur ist Programmierung mit Embedded SQL nicht mein täglich Brot und ich wollte es auch mal komplett damit durchziehen. Da es sich um ein Korrekturprogramm handelt, war das eine gute Gelegenheit.
Trotzdem schon einmal vielen Dank für die reichlichen Informationen und auch die kritischen Anregungen/Anmerkungen.
-
ups...leider zu spät gesehen, dass es ja schon eine 2. Seite gibt.
Ich sagte ja schon eingangs, dass man nicht über Programmierstile streiten sollte.
Ich bin allerdings voll auf Birgittas Seite. Ich darf aktuell genau einen solchen Code pflegen mit SETLL/READE.....DOW %EOF......READE ENDDO
Ggf. ist der RAEDE noch mit Abfragen verbunden etc. Bis ich dann beim DOW bin, habe ich schon fast vergessen, warum ich den überhaupt setzen wollte.
Und am Ende muss ich dann den ganzen Schmonsens nochmal einbauen....und später bei Änderungen 2mal pflegen....na danke
Und ja, zu Zeiten von RPGII und RPGIII fand ich den GOTO/TAG, sinnvoll eingesetzt, auch gar nicht so übel. Heute m free lässt sich der Code, sofern einigermaßen programmiert, eh viel besser lesen und ich benötige den auch gar nicht mehr.
-
 Zitat von Hawi
Ich sagte ja schon eingangs, dass man nicht über Programmierstile streiten sollte.
Finde ich nicht.
Mein Kollege und ich haben stundenlang über den besten Programmierstil gestritten.
Mit dem Ergebnis das ich auch 20 jahre später die Programme wieder schnell verstehe.
War zwar mühsam die Streiterei aber hat uns beide wirklich vorwärtsgebracht.
Und warum soll man das Rad neu erfinden, wenn es andere schon getan haben. Die meisten sind ja wohl schon im fortgeschritten Alter (hüstel..) und müßen nicht mehr mit dem Kopf durch die Wand.
-
 Zitat von KingofKning
Die meisten sind ja wohl schon im fortgeschritten Alter (hüstel..) und müßen nicht mehr mit dem Kopf durch die Wand.
Manchmal habe ich den Eindruck, ab einem gewissen Alter *ist* man die Wand 
-h
Similar Threads
-
By mahones in forum NEWSboard Programmierung
Antworten: 31
Letzter Beitrag: 02-04-20, 10:21
-
By Hubert in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 14-10-19, 13:02
-
By nico1964 in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 29-06-15, 06:53
-
By Gimli in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 06-09-02, 11:58
-
By moskito in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 13-09-01, 17:40
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks