ich habe heute ein Phänomen in Subfiles im Zusammenhang mit Farben entdeckt und habe keine Ahnung, wieso sowas passiert.
Beschreibung DDS:
Beinhaltet 3 "normale" records (heads1, heads2, foots1), ein subfile- (subfs1) und ein control-record (subfc1).
Das erste Feld im Subfile ist ein Auswahlfeld, drei weitere Felder sind output-Felder (rot, türkis und gelb) und das letzte Feld ist eine Konstante (keine Farbe -> grün).
Im record heads1 befindet sich zusätzlich ein simples Ein-Ausgabefeld (10a).
Beschreibung ILE:
Subfile wird komtlett gefüllt (10 Zeilen).
Führe ich diese Zeilen aus ist das erste output-Feld (das rote) grün:
write heads2
write foots1
write subfc1
exfmt heads1
Erst wenn ich in Schleife anschließend die folgende Zeile ausführe, werden die Felder richtig dargestellt:
exfmt subfc1
Wenn ich jedoch erst das ausführe:
write heads1
write heads2
write foots1
write subfc1
exfmt heads1
Und anschließend den exfmt auf subfc1 in Schleife, ist die subfile schon zu beginn farblich korrekt.
Festgestellt habe ich, dass vor dem Schreiben des control-records ein write auf heads1 passieren muss, damit die Anzeige richtig dargestellt wird.
Befindet sich kein Feld in heads1, funktioniert die Farbdarstellung auch auf anhieb.
Aber die beiden records haben nichts miteinander zu tun!?
SFL's dürfen nicht mit anderen Formaten überlappen.
OVERLAY sollte angegeben werden.
Wenn die SFL auch eingabefähig sein soll, muss immer ein EXFMT/READ SFLCTL-Format passieren (oder man arbeitet mit INVITE, INFDS für SAtzformatabfrage usw.).
Für mich war die beste Lösung bisher immer mit DSPATR(&FELD).
Die Formate überlagern sich nicht und das keyword OVERLAY wird auch benutzt.
Die subfile funktioniert einwandfrei, nur die Farbe wird nicht sofort gesetzt.
Das ist kein kritischer Fehler, denn man kann ihn einfach umgehen.
Ich dachte nur es gibt dafür einen passablen Grund.
Ich hatte so etwas ähnliches schon einmal. Zwischen den Auswahlfeld und dem ersten Ausgabefeld war nur eine Stelle frei und es zeigte das gleiche Phänomen wie bei Dir. War zwischen den beiden Felder zwei Stellen frei, war wieder alles ganz normal und die Farben wurden korrekt angezeigt.
So etwas ähnliches gibt aus auch noch mit den Subfile-Control Satz. Blättert man dann an das Ende der Subfile werden hell dargestellte Ausgabefelder auf einmal nicht mehr hell sondern einfach in grün dargestellt.
Ich habe das IBM vor längerer Zeit schon einmal mitgeteilt. Die haben aber dann auf irgendeine Stelle im Handbuch verwiesen, die dieses "Phänomen" beschreibt. Und man kennt das bei IBM ja: Steht der Fehler irgendwie im Handbuch, muß man ihn akzeptieren.
Ich habe das IBM vor längerer Zeit schon einmal mitgeteilt. Die haben aber dann auf irgendeine Stelle im Handbuch verwiesen, die dieses "Phänomen" beschreibt.
ich hatte die gleichen Probleme und habe von IBM eine ähnliche Antwort erhalten.
Dass daran nochmal was geändert wird, ist nicht zu erwarten, da DDS, SDA, PDM uvm. "stabilisiert" (sprich "tot") ist.
Ich kann Dir beantworten warum das Subfile sich so verhält. Die Farbcodes werden vor dem eigentlichen Feld ausgegeben und nach dem Feld wieder auf Grün gesetzt. Wenn man jetzt zwei Felder zu nah aneinander setzt werden diese Farbwerte überschrieben und es kommt zu den beschriebenen Phänomenen. Das kann auch passieren wenn du zwar einen OVERLAY in der zweiten Subfile hast die Felder aber mittels PUTRETAIN in der Anzeige belässt.
Bookmarks