-
Cursor (open state) prüfen
Hallo,
wie kann ich vor einem CLOSE eines Cursors prüfen, ob dieser geöffnet ist?
Aktuell erzeugen wir durch ein präventives CLOSE ewig viele Joblogeinträge:
Cursor C1 nicht geöffnet.
=> Ursache . . . . : Der Cursor C1 wurde in einer Anweisung FETCH oder
CLOSE angegeben, aber der Cursor ist nicht geöffnet.
Dieses möchten wir gerne verhindern, bzw. sauber abfangen.
Ich habe in einem screenshot eines Programms gesehen, dass dort eine Prozedur aufgerufen wird, wo eben bei erfolgreicher Prüfung ein CLOSE erfolgt.
Zumindest ließ der Name darauf schließen (in etwa "CloseCursorIfOpen")
Leider konnte ich weder den Code dazu sehen, noch konnte ich Kontakt zum Programmierer aufnehmen.
Da ich davon ausgehe, dass das entweder ein kleiner Schnipsel im RPG ist oder aber eine API, hoffe ich hier auf die (oder eine) Lösung.
Vielen Dank
-
-
%OPEN funktioniert nicht mit SQL sondern ist eine reine RPGLE-Funktion auf Dateien der F-Bestimmungen.
Präventive Closes bedeuten ja nichts anderes als dass man nicht weiß was in dem Programm geschieht.
Generell gibt es eine Option wann ein Cursor automatisch geschlossen wird.
set option closqlcur = *ENDMOD / *ENDACTGRP;
Zusätzlich könnte man Hauprprogramme die aus einem Menü aufgerufen werden immer mit ACTGRP(*NEW) umwandeln, dann wird auch alles geschlossen was zu der ACTGRP gehört.
Ansonsten ist es halt guter Stil, wenn man im Programm Ressourcen freigibt wenn man sie nicht mehr braucht.
Und wenn ihr halt grundsätzlich einen Close vor einem Open macht dann gibts halt die Joblogeinträge.
Also bevor man eine Unterroutine verlässt immer überlegen, ob man den geöffneten Cursor in dieser Routine nicht schließt. Dies gilt auch für Fehlerbehandlung.
-
Ich habe das auch einige Zeit so gemacht, immer den einen close auf den Cursor abzusetzen bevor der open kommt. Habe mich aber auch an den Meldungen im Joblog gestört.
Inzwischen gehe ich folgendermaßen vor:
Zum einem rufe ich im on-exit immer den close cursor auf. Zum anderen rufe ich stumpf den open cursor auf und wenn ich dann den Code -502 (Cursor bereits geöffnet) bekomme, mache ich einen close gefolgt von einem erneuten open. Nach dem open dann nochmal den Code abfragen und wenn alles gut gehts weiter, sonst Abbruch.
-
Danke für die Tipps - saubere Programmierung ist natürlich das sinnvollste.
Aber die Abfrage beim OPEN (und anschließender CLOSE + OPEN) werde ich trotzdem mal ausprobieren.
Similar Threads
-
By NEWSolutions Redaktion in forum NEWSolutions artikel
Antworten: 0
Letzter Beitrag: 31-01-17, 20:04
-
By WalterB in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 13-11-15, 12:20
-
By fredywit in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 19-08-15, 13:07
-
By tfroehlich in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 23-07-14, 09:24
-
By Alexander in forum NEWSboard Server Software
Antworten: 0
Letzter Beitrag: 15-11-01, 07:00
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