PDA

View Full Version : Satzsperre bei subfile



_MG_
18-10-17, 13:14
Hallo zusammen,

folgendes Problem:
ich lese aus einer Datei Sätze in ein Subfile. (Alle Sätze, da die Datei nicht wirklich groß ist).
Möchte ich das Programm nun in einer anderen Sitzung starten, funktioniert dies nicht da die Sätze gesperrt sind. --> Beende ich das PGM in der einen Sitzung startet es nun in der anderen.

Meine Frage wäre wie kann ich das ändern aber gleichzeitig sicherstellen das es nicht möglich ist Daten durch gleichzeitige Änderungen o.ä. zu zerstören.

Danke schonmal

Mfg
_MG_

ILEMax
18-10-17, 13:18
Lesen mit freigabe oder Datei als input definieren und zum update ein anderes pgm rufen
Es ist ja immer nur der letzte Satz gesperrt, wenn du mit update einliest

der ILEMax

Fuerchau
18-10-17, 13:24
Nun, dazu gehört Anwendungslogik und dazu gibt es verschiedene Ansätze.
Zuerst aber mal solltest du die Subfile beim Lesen aus der PF/LF entweder eine Input-Datei verwenden oder einen READ(N) (No Lock).

Nun zur Logik:
Die einfachste Variante, den zu bearbeitenden Satz per Chain nun ohne (N) lesen, ein anderer wartet dann die Satzwartezeit (default 1Minute) und bekommt einen Fehler, den man mit CHAIN(E) und %error() abfangen kann.
Die komplizierte Logik (häufig per SQL mit Frameworks realisiert):
Die Daten bearbeiten lassen und beim Update mit den vorherigen Werten abgleichen, ob sich was geändert hat, also z.B.:
update myfile set f1=: newval1 where k1=: KeyVal and f1 = : OldVal1;
Liefert SQLCOD =100 heißt dies, das keine Information zum Update gefunden wurde was 2 Möglichkeiten bietet:
1. Der Satz ist gelöscht worden
2. F1 stimmt mit dem vorher gelesenen Wert nicht mehr überein
Nun muss man dem Bediener halt ermöglichen, seine Bearbeitung auf Grund der geänderten Situation zu wiederholen.

_MG_
25-10-17, 10:04
Konnte heute mal testen.. Hat geklappt. Danke!

_MG_