-
refresh subfile
Hallo zusammen,
Ich habe ein kleines Problem mit einem Programm was mit einem subfile arbeitet
Wenn ich die Auswahl L treffe wird der aktuelle Satz gelöscht und das Programm beendet.
Ich hätte jedoch gerne dass das Programm weiterhin läuft, den Satz aus der Physischen Datei löscht und anschließend das Subfile neu befüllt.
Bei meinem Versuch bekomme ich die Meldung das versucht wird ein doppelten Satz zu schreiben. --> Nehme stark an er meint die RRN.
..Obwohl ich vorher ein clear auf das SFL und den SFLCTL mache scheint er die irgendwo noch stehen zu haben.
Hätte jemand eine Idee?
Grüße
-
Aus dieser klaren Beschreibung heraus kann ich halt nur Vermutungen anstellen.
Eine Subfile neu aufzubauen geht natürlich ganz einfach.
Man setze die Bezugszahl des SFLCLR und schreibe das CTL-Format.
Anschließend füllt man die SFL so wie beim 1. Mal auch, also mit dem Feld aus SFLRNR (RPG) bei 1 beginnend.
Wo dein Fehler nun tatsächlich ist, kann ich mangels Code leider nicht feststellen.
-
Habe leider grade kein Zugriff auf den Code.
Ich denke aber ich habe einen Fehler in der Logik, da ich noch nicht genau weiss wie sich das alles verhält.
Das Programm macht folgendes:
#####
SFL: MZEILE
SFLCTL: MKSATZ
Ich lese die physische in einer Schleife bis kein Satz mehr gefunden wird.
Schleifenbeginn
In jedem Lauf der Schleife wird die RRN +1 gesetzt, die Werte initialisiert und am Ende geschieht ein write MZEILE
Schleifenende
Dann:
write Kopf vom dspf
write Fuß vom dspf
EXFMT MKSATZ
Nächste Schleife
READC MZEILE (bis keine Sätze mehr oder die Eingabe geschah)
Wenn Auswahl L --> Chain auf Physische und löschen.
Schleifen ende
######
Bis hier funktioniert das. Mein Problem ist jetzt gebe ich L ein und drücke Enter bleibt das Bild so wie es ist; Sprich der gelöschte Satz wird weiter angezeigt. Auch mit dem L in der Auswahl.
Somit habe ich das Programm weiter geschrieben: Folgender Lösungsansatz:
#####
Wenn L seton 53 (SFLCLR)
clear MKSATZ
clear Fuß
clear Kopf
setoff 53
RRN = 0
Geh zu Schleife 1
Und dann kommt eben beim Schreiben in die MZEILE der Fehler doppelter Satz. Als wie die Sätze wurden nicht gelöscht.
Die Frage ist stimmt überhaupt die Logik des Ansatz.
SORRY für das Chaos, war jetzt aus dem Kopf geschrieben
Grüße
-
Es reicht nicht, die Bezugszahl SFLCLR anzuschalten. Du musst danach auch einen write auf den Control-Satz machen. Sonst wirkt die Bezugszahl nicht.
Ich weiß nicht, ob das write in deinen Unterroutinen drinsteht.
-
Das Problem ist die Reihenfolge der Anweisungen:
Wenn L seton 53 (SFLCLR)
clear MKSATZ
Da nun IN53 in MKSATZ definiert ist, setzt der "Clear MKSATZ" ebenso IN53 wieder auf OFF, so dass der Write MKSATZ dann eben kein SFLCLR ausführt.
-
Konnte es eben testen.
klappt wie gewünscht..wieder etwas mehr Verständnis erlangt, danke :-)
Gute Restwoche noch!
Similar Threads
-
By hteufl in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 26-06-15, 07:06
-
By Creedem in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 19-05-15, 10:21
-
By coolie in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 10-10-14, 09:06
-
By malzusrex in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-07-14, 15:04
-
By brittner in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 18-11-13, 15:24
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