PDA

View Full Version : Setsamer sporadischer Fehler, MCH5804 + SQL0913



Seiten : 1 2 [3]

Fuerchau
22-06-16, 13:28
Auch ILE funktioniert rekursiv nur im Service-Programm.
Nun denn, auch dafür gibts eine Lösung.
Aber:
Da du ja schon 7.1 hast kannst du die Programme auch schnell per CVTRPGSRC in ILE überführen.
Allerdings löst das dein Rekursionsproblem nicht direkt.

Hier kannst du dann per ILE und Prozedur-Pointer einen "Callback" initiieren.
D.h., du legst in QTEMP einen USRSPC an und besorgst dir den Pointer dazu.
Nun kannst du, wenn PGMA läuft, einen Prozedurpointer im USRSPC ablegen.
Dein BRK-Handler kann nun die Prozedur mit den benötigten Parametern ganz einfach rekursiv aufrufen.

Alternative 2:
Du kannst eine DTAQ an die DSPF hängen und in deinen Satzformaten per INVITE die Tastatur freigeben und per FRCDTA die Sofortausgabe erzwingen.
Somit kannst du per WRITE deine Daten ausgeben.
Dann legst du dich per QRCVDTAQ schlafen (ggf. per Timeout für andere Aktionen).
Drückt der User nun irgendeine Taste kommt der QRCVDTAQ zurück mit der Kennung Taste gedrückt und du kannst das Satzformat per READ nun auslesen. Dein Programm wird nun nicht geblockt.

Dein BRK-Handler braucht nun nur noch in diese DTAQ zu schreiben und nichts mehr aufrufen.
Beim Beenden löst der QRCVDTAQ nun mit den gesendeten Daten aus.

Robi
22-06-16, 13:43
Auch ILE funktioniert rekursiv nur im Service-Programm.
und mit 'das 1 Pgm läuft mit ACTGRP *new, alle anderen mit *Caller'


auch schnell per CVTRPGSRC in ILE überführen
nur Pgmme die sehr gravierend geändert werden 'dürfen' in ILE umgesetzt werden.



Du kannst eine DTAQ an die DSPF hängen und in deinen Satzformaten per INVITE die Tastatur freigeben und per FRCDTA die Sofortausgabe erzwingen.
Das ist schon so, aber für andere spielchen, selbe Pgm aber andere User.
In diesem Fall geht das nicht

Ich werde das SQL Pgm durch ein LF und einen Chain ersetzen

Danke
Robi