-
setll und %found
Hallo zusammen,
mir scheint die Funktionionalität von %found nicht ganz klar zu sein: Ich hatte erwartet, dass bei folgender Codierung
C KeyVGN SETLL SMVERGN1
C IF %FOUND(SMVERGN1)
C READ SMVERGN1
die read-Anweisung nur ausgeführt wird, wenn das setll-Statement einen passenden Satz gefunden hat (analog zur 3. Bezugszahl beim SETLL im RPGIII). Leider liest das Programm in obigem Fall gnadenlos den Satz nach der Positionierung, egal, ob der Schlüssel gefunden wird oder nicht. Gilt %FOUND am Ende nur nach CHAIN bzw. READE-Anweisungen?
Vielen Dank für eine Antwort
Simone Sylten-Schütz
-
Hallo Simone,
SETLL und LOOKUP und %FOUND und %EQUAL.
Bei SETLL wird der Indikator für %FOUND auf *ON gesetzt, wenn ein folgender READ erfolgreich wäre, das heißt jedoch nicht, dass auf einen Satz mit genau dem vorgegebenen Schlüssel positioniert wurde (wie Du bereits festgestellt hast!)
Um eine genaue Übereinstimmung zu prüfen muss die Funktion %EQUAL verwendet werden. Diese wird auf *ON gesetzt, wenn mindestens ein Satz mit genau diesem Schlüssel vorhanden ist.
Ähnliches gilt für den Operation Code LOOKUP.
Birgitta
-
Hello Simone,
%found gilt laut Handbuch für
PHP-Code:
The operations that set %FOUND are:
File operations:
CHAIN (Random Retrieval from a File)
DELETE (Delete Record)
SETGT (Set Greater Than)
SETLL (Set Lower Limit)
String operations:
CHECK (Check Characters)
CHECKR (Check Reverse
SCAN (Scan String)
gruss
kuempi
Ach da war Birgitta mal wieder schneller.
-
Ausserdem, wenn man schon per SETLL einen bestimmten Schlüssel sucht sollte man auch mit READE weiterlesen.
SETLL positioniert und liest nicht. Per READ kann natürlich (solange nicht EOF) immer weitergelesen werden.
Abkürzen kann man das auch, wenn man per CHAIN mit verkürztem Key zugreift. Dies entspricht einer SETLL/READE-Kombination und ist in der Logik ggf. verständlicher.
-
Vielen Dank für die Hilfe - %equal ist mir sehr sympathisch - auch wenn mir nach der Erklärung der Unterschied zwischen %found und %eof nicht so ganz klar ist (außer, dass die beiden immer das Gegenteil liefern müssten).
Ich benutze meist erst ein setll und dann das read, weil - vor langer Zeit - mir mal gesagt wurde, dass das der schnellste Weg sei (setll ginge schneller als jedes read, read ginge schneller als reade).
Chain beinhaltet auf jeden Fall ein read (egal, ob setll zuvor erfolgreich oder nicht) und damit werden auch u.U. Feldinhalte überschrieben, die nur im Falle eines passenden Satzes aktualisiert werden sollten.
Gruß Simone
-
Zitat von ssylten
...Chain beinhaltet auf jeden Fall ein read (egal, ob setll zuvor erfolgreich oder nicht) und damit werden auch u.U. Feldinhalte überschrieben, die nur im Falle eines passenden Satzes aktualisiert werden sollten.
...
Wer erzählt denn sowas?
Das mag ich gar nicht glauben.
k.
-
Naja, wer wohl
Aber sei's drum:
SETLL/READE ist eigentlich langsamer als CHAIN (verkürzter Key), da ja nur 1 DB-Aufruf statt 2 erfolgen.
Wenn der Chain nicht erfolgreich ist, bleiben Variablen ja erhalten.
Der SETLL setzt in der Datei auf, wenn es einen größeren Schlüssel gibt, wird eben %found gemeldet.
%eof gibts ja nur bei den READ-Befehlen und %FOUND/%EQUAL eben bei SETLL/GT bzw. %lokupxx.
Aber wie immer, es gibt ja viele Methoden...
Similar Threads
-
By Robi in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 04-11-06, 16:02
-
By haertl in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 11-01-06, 14: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