PDA

View Full Version : DSPF- nach 10 min Spähren



svit
21-05-15, 15:53
Hallo *all,

Frage :
ist es möglich ein DSPF nach 2 min zu Spähren (Anmeldewindow ausgeben) und nach der anmeldung wieder freigeben.

Danke

signoff

Fuerchau
21-05-15, 16:09
Du kannst eine DTAQ an die DSPF hängen und per QRCVDTAQ auf Timeout oder Enter warten.
Zusätzlich alle Formate mit INVITE beim Write freigeben.
Dann kehrt ein READ direkt mit Daten zurück.
Ein EXFMT funktioniert in diesem Zusammenhang leider nicht.

Ein DSCJOB trennt den Job so dass ein Wiederaufnehmen automatisch funktioniert.

hel400
22-05-15, 06:53
Ich glaube fast, dass die Frage so gemeint ist, ob ein Bildschirm (egal welche Applikation läuft) vom System nach x Minuten gesperrt werden kann (also ohne etwas an der Applikation zu ändern), kann das sein?

Falls ja, dann geht das so:
Systemwert QINACTITV auf die gewünschten Minuten setzen.
Dann im Systemwert QINACTMSGQ den Wert "*DSCJOB" eintragen.
Das bewirkt, dass ein DSPF nach x Minuten getrennt wird und die Anmeldeanzeige erscheint. Der Job selbst bleibt aber aktiv und kann nach Anmeldung fortgesetzt werden.

(und evtl. noch den Systemwert QDSCJOBITV entsprechend setzen)

Fuerchau
22-05-15, 08:17
Da dies systemweit gilt hätte ich da schon ein Problem immer nach 2 Minuten eine neue Anmeldung zu erzwingen.

hel400
22-05-15, 09:34
Stimmt auch wieder.

Daher evtl. besser:
Im Systemwert QINACTMSGQ eine MSGQ angeben, diese per Pgm überwachen und dort dann individuell entscheiden, ob der Job unterbrochen werden soll oder nicht.
(Hinweis bei Telnet-Sitzung: Für diesen Vorgang muss in der Sitzungsdefinition ein Einheitenname angegeben werden)

svit
26-05-15, 09:36
Hallo *all,
meine Lösung ist nicht die Beste aber:
mit jeder DSPF Ausgabe wird ein Job abgesetzt (der nur für dieses PGM und Benutzer), nach n Sekunden wird ein Spähr- Window ausgegeben oder der USR macht "Enter" und der alte Job wird beendet und ein neuer erstellt.

ich hoffe es war verständlich ;-)

Ich habe gehofft das es wirklich ein Systemparameter auf USR Ebene existiert.
Ich möchte nur 200 von 500 USR mit dem Spähr-Window bestrafen.

Fuerchau
26-05-15, 10:12
Ganz schön kompliziert und systembelastend.
Ggf. geht es hier auch einfacher:
Für jedes Device gibt es eine eigene MSGQUEUE.
Per CHGMSGQ ... DLVRY(*BREAK) ... PGM(MYLIB/MYPGM) kannst du ein Programm hinterlegen.
Dann machst du ein zentrales (Prestart-Job) Programm, dass per DTAQ mit Timeout die entsprechenden Job's (Datenbank) überwacht.
Da du ja sowieso jedes betroffene Programm anpassen musst reicht hier eine Anmeldung des Jobs am Überwachungsjob sowie ein CHGMSGQ.
Nach jedem Enter/F-Taste sendest du einen Keepalive per QSNDDTAQ an den Überwachungsjob.
Beim Beenden erfolgt (ggf.)noch ein Abmelden am Überwachungsjob.

Der Überwachungsjob sendet per SNDBRKMSG bei Timeout eine Nachricht an die Station.
Nun wird dein Programm aufgerufen, welches nun entscheidet was gemacht wird:
a) eigenen Bildschirm anzeigen
b) ENDJOB/DSCJOB einleiten.

Per JOB-API kann geprüft werden, ob der Job bei Timeout noch aktiv ist um ihn ggf. aus der Liste auszutragen.

hel400
26-05-15, 11:16
:-)

Warum alles so extrem umständlich?
Nochmals:

Zuerst im Systemwert QINACTITV die gewünschten Minuten eingeben.
Dann im Systemwert QINACTMSGQ eine MSGQ angeben.

Nun EIN Pgm machen, welches diese MSGQ überwacht.
Wenn da eine Msg reinkommt, dann ganz einfach entscheiden (zB anhand vom User) ob der Job mit DSCJOB gesperrt werden soll oder nicht. Somit betrifft das nur die User, die Du (wie Du es so schön nennst) bestrafen willst.

EIN Pgm, EIN Job, fertig ...

svit
16-06-15, 10:24
ok,
verstehe ich richtig, das bei 5000 User (bestrafen möchte ich nur 500 User)
habe ich 5000 nachrichten?

Fuerchau
16-06-15, 11:57
Das ist korrekt.
Aber das ist ja auch egal.