PDA

View Full Version : AS400 - Window verschwindet



Seiten : [1] 2 3 4

woy
12-02-15, 15:19
Guten Tag zusammen
Ich bin zwar ein erfahrener Informatiker, aber neu in der AS400 Umgebung. Ich habe folgendes Problem:
1. Mein Programm wird von einem Hauptprogramm aufgerufen. In meinem Programm gebe ich ein Window aus, in dem drei Felder ausgegeben werden
2. Auf jedes der drei Felder kann via PF4 ein weiteres Programm aufgerufen werden, das dann jeweils ein weiteres Window ausgibt, aus dem dann einzelne Werte des entsprechenden Feldes ausgewählt werden können.
3. Nachdem der Wert ausgewählt wurde komme ich wieder in mein Programm zurück und gebe das aktualisierte Window wieder aus. Zuerst mache ich ein Clear des Subfiles und danach eine erneute Ausgabe des Subfiles mit den aktualisierten Werten.

Und nun passiert es: Die Daten werden zwar korrekt angezeigt, aber die Begrenzungen des Windows nur teilweise, Ausserdem verschwindet der Hintergrund, d.h. das Bild des Hauptprogrammes.

Kann mir hier jemand helfen?

Vielen Dank im Voraus

KingofKning
12-02-15, 15:27
Ich kann Dir zwar nicht helfen, hilfreich für andere ist es aber zu sagen in welcher Sprache Du das machst RPG / Cobol und evtl. Dein Source postet in dem Du die Fenster erstellst.

macht die Sache dann für andere einfacher.

GG

woy
12-02-15, 15:35
Danke, ist in Cobol
LG

woy
12-02-15, 15:40
Und hier wäre noch das zugehörige DSP-File:

A DSPSIZ(24 80 *DS3)
A REF(*LIBL/VMKRF001)
A PRINT
A* INDARA
A CF04(04)
A CF12(12)
A ALTHELP(CA01)
A HELP
A HLPDOC('DMYHILFE' 'DUMYHELP' 'INTKL-
A ')
A************************************************* ****************
A* WINDOWS DEFINITION
A************************************************* ****************
A R VMKDR114W
A WINDOW(07 05 06 72)
A WDWBORDER((*COLOR BLU) (*DSPATR RI)-
A (*CHAR ' '))
A USRRSTDSP
A************************************************* ****************
A* V M K D R 1 1 4 S - Subfile HAUPTRECORD
A************************************************* ****************
A R VMKDR114S SFL
A 3 1'Connection'
A COLOR(BLU)
A CONROLTXT 20A B 3 12COLOR(WHT)
A 3 34 'Contract'
A COLOR(BLU)
A CTNOAFT 5A B 3 44COLOR(WHT)
A 3 50'Shortname'
A COLOR(BLU)
A CTNOAFTSH 10A B 3 61COLOR(WHT)
A*N60 DSPATR(ND)
A************************************************* ****************
A* V M K D R 1 1 4 C - Subfile CONTROLRECORD
A************************************************* ****************
A R VMKDR114C SFLCTL(VMKDR114S)
A SFLSIZ(0015)
A SFLPAG(0003)
A WINDOW(VMKDR114W)
A OVRDTA
A PUTOVR
A OVERLAY
A KEEP
A N92 ROLLUP
A 91 SFLDSP
A SFLDSPCTL
A 93 SFLCLR
A* SFLEND(*MORE)
A 01 CSRLOC(LIN POS)
A RTNCSRLOC(&RCD &FLD)
A DSPREC 3S 0H SFLRCDNBR(CURSOR)
A RECNBR 4S 0H
A LIN 3S 0H
A POS 3S 0H
A FLD 10A H
A RCD 10A H
A AKTION 6A O 1 2COLOR(WHT)
A 1 9'Connection'
A COLOR(WHT)
A************************************************* ****************
A* MESSAGE SUBFILE
A************************************************* ****************
A R MSGSFL SFL SFLMSGRCD(24)
A MSGKY SFLMSGKEY
A MPGMQ SFLPGMQ
A************************************************* ****************
A* MESSAGE SUBFILE CONTROL
A************************************************* ****************
A R MSGCTL SFLCTL(MSGSFL)
A SFLSIZ(12) SFLPAG(1)
A SFLDSP
A SFLINZ
A OVERLAY PUTOVR KEEP
A 95 SFLCLR
A N98 SFLEND
A 96 LOCK
A MPGMQ SFLPGMQ
A R DUMMY
A ASSUME
A 1 3' '

Dschainers
12-02-15, 15:42
Ich würde mal in der DSPFD RSTDSP(*YES) einstellen.

Dschainers
12-02-15, 15:44
CHGDSPF xxxxxxx RSTDSP(*YES)

woy
12-02-15, 16:04
Danke, werde ich probieren

A 93 SFLCLR

muss ich also nach dieser Angabe was genau angeben?

A RSTDSP(*YES)

eingeben?

Fuerchau
12-02-15, 16:27
Auch das Thema findet sich immer wieder hier.
RSTDSP(*YES) betrifft den eigenen Bildschirm, wenn dieser von einem CALL überschrieben wurde.
RSTDSP(*YES) ist, wenn keiner eingegriffen hat, sowieso der Default.

Mittels Schlüsselwort ASSUME auf einem eigenen, nicht verwendeten Satz, kombiniert nun die AS/400 beim Open den Inhalt deines Fensters mit dem aktuellen Inhalt.

Durch RSTDSP(*YES) deines DSPF wird nun nach Rückkehr der gesamte Inhalt wiederhergestellt.
Ohne ASSUME wäre hier RSTDSP(*NO) korrekt.
Dies führt aber z.B. beim Ausführen einer Abruftaste mit QCMD oder einem MSGBRK zu Problemen.

ASSUME ist für jedes DSPF mit ausschließlichen Fenstern meist erforderlich.

Dschainers
13-02-15, 07:47
RSTDSP(*YES) ist nicht der Defaultwert beim CRTDSPF.
Default = *NO

Nochmal, ich würde auf der Befehlsebene mal

CHGDSPF 'Bibliothek/Bildschirmdatei RSTDSP(*YES)

eingeben.

und dann nochmal probieren.

B.Hauser
13-02-15, 08:29
Füg' mal in Deine DisplayFile das folgende Dummy-Format ein (wird nie aufgerufen!) und erstelle Display-File und Programm neu.


A R DUMMYFMT
A ASSUME
A 24 80' '

Birgitta