-
Programmtechnisch feststellen ob eine Bildschirmdatei *DS3 oder *DS4 hat
Hallo zusammen,
ich möchte in einem Programm feststellen ob eine Bildschirmdatei im Modus *DS3 oder *DS4 angezeigt wird.
Diese Information erhalte ich z.B. mit einem DSPFD *OUTFILE
Aber gibt es eine Systemtabelle oder ein API was mir das auch liefert?
Danke
-
Moin, in der INFDS Stelle 152 - 153 B 0 steht die Anzahl der Zeilen Stelle 154 - 155 B 0 steht die Anzahl der Breite mfg DKSPROFI
-
Wie sie angezeigt ist, sagt dir das Format, dass geschrieben wird, da ein Format speziell für DS3 oder DS4 geschrieben sein bzw. per Bezugszahl DS3/DS4 aktivert sein muss.
Um festzustellen, ob ein Device das kann gibts nun 2 Möglichkeiten:
RTVCFGSRC (oder API) des Devices und den Displaytyp abfragen, der 27x132 kann (den Typ kenne ich nicht).
Oder pragmatisch einen Write mit DS4 machen und mit Monitor abfangen.
Kann das Device DS4 kannst du diese Formate verwenden, ansonsten eben nicht.
Arbeitet nun PGM A in DS4 und ruft nun PGM B auf, kannst du den aktuellen Modus leider nicht so einfach feststellen. Man kann zwar per API prüfen, welche DSPF's offen sind, aber leidern nicht feststellen, welches der übergeordneten Programme denn welche DSPF geöffnet hat und welches Format gerade angezeigt wird.
Es gibt zwar noch das SaveScreen-API, https://www.ibm.com/docs/en/i/7.4?to.../QsnSavScr.htm, allerdings kann man leider nicht auf den Puffer zugreifen.
-
Zitat von Fuerchau
Wie sie angezeigt ist, sagt dir das Format, dass geschrieben wird, da ein Format speziell für DS3 oder DS4 geschrieben sein bzw. per Bezugszahl DS3/DS4 aktivert sein muss. Um festzustellen, ob ein Device das kann gibts nun 2 Möglichkeiten: RTVCFGSRC (oder API) des Devices und den Displaytyp abfragen, der 27x132 kann (den Typ kenne ich nicht). Oder pragmatisch einen Write mit DS4 machen und mit Monitor abfangen. Kann das Device DS4 kannst du diese Formate verwenden, ansonsten eben nicht. Arbeitet nun PGM A in DS4 und ruft nun PGM B auf, kannst du den aktuellen Modus leider nicht so einfach feststellen. Man kann zwar per API prüfen, welche DSPF's offen sind, aber leidern nicht feststellen, welches der übergeordneten Programme denn welche DSPF geöffnet hat und welches Format gerade angezeigt wird. Es gibt zwar noch das SaveScreen-API, https://www.ibm.com/docs/en/i/7.4?to.../QsnSavScr.htm, allerdings kann man leider nicht auf den Puffer zugreifen.
Moin, persönlich finde ich aber angenehmer abzufragen ob das Feld 27 oder 24 enthält, bzw das andere Feld 80 bzw 132. mfg DKSPROFI
-
Ich benutze schon QsnQryyModSup um zu ermitteln ob ich 27x132 kann. Jetzt wollte ich es zentral in unser Menüprogramm machen ob die Bildschirmdatei des aufzurufenden Menüprogramms 27x132 anzeigen möchte. Damit ich dann eine Fehlermeldung ausgeben kann. D.h. ich bin vor dem Programm das eine Bildschirmdatei verwendet. Ich kenne das Programm und die Bildschirmdatei die verwendet wird zu diesem Zeitpunkt, ich muss nur noch an dieser Stelle prüfen ob die Bildschirmdatei *DS4 hat. Sozusagen brauche ich den DSPFD. Den dort steht das. Außer jemand weiß was anderes.
-
Warum soll nicht jedes Programm selber versuchen, DS4 auszugeben und wenn es nicht klappt DS3 zu nehmen?
Das Problem ist ja sogar, wenn ich an einem DS3-Terminal bin, kann ich eine DSPF, die DS4 enthält gar nicht erst öffnen!
Ein Programm muss im Zweifel also sogar 2 DSPF's alternativ bedienen können, da das mit OVRDSPF nicht klappen kann.
Ich habe das dann einsprechend in RPGIII mit
40 EXFMTDS3FMT
N40 EXFMTDS4FMT
durchgeführt um den Rest der Logik beizubehalten.
Das funktioniert allerdings nur, wenn von der Logik die Anzahl E/A-Felder passen.
Wobei ich mich frage: Gibts denn noch Twinax-Terminals, die noch verwendet werden?
Seit den Emulatoren (PCSupport ca. 1992) können alle DSP's inzwischen 27*132, wenn nicht ist das nur ein Konfigurationsfehler.
-
Ich habe viele 27x132 Programme. Ich werde nicht jedes Programm ändern. Aber ich kann im Menü prüfen ob der Benutzer 27x132 eingestellt hat und wenn nicht und er will ein Programm aufrufen das 27x132 anzeigen will kommt eine Fehlermeldung
-
Beim Aufruf bekommt das Programm ja einen Fehler und wird i.d.R. abgebrochen, da der Open scheitert.
Diese Nachricht per SYSRPYLE auf Abbruch stellen und den Job automatisch antworten lassen.
Im Menüprogramm mit Monitor den Aufruf überwachen und bei Abbruch die Meldung überprüfen und entsprechend hinweisen.
Alternativ würde ich eher folgendes machen.
Jeder Dialogjob hat ja ein Startprogramm über das die Umgebung eingerichtet wird.
Dieses ruft ein Mini-Progrämmchen auf, das eine DS4-Datei öffnet.
Dann kannst du dir in der *LDA oder sonstwo (SQL-Sessionvariable) eben merken, ob der Bildschirm das kann und vor dem Aufruf dem Benutzer den Hinweis geben oder den Menüpunkt gar nicht erst anbieten.
Denn ob du den Programmaufruf vorher prüfst, da du Programm und DSPF kennst, oder die Menüauswahl verbirgst/deaktivierst ist vom Aufwand ja vergleichbar.
-
Guten Morgen.
Diese Information habe ich auch mla gebraucht.
Ich habe dies folgendermaßen gelöst:
Code:
D WSDS DS QUALIFIED
D DspSize *SIZE
D Device 197 206
Und vor dem Write/ExFmt:
Code:
Post(E) WSDS.Device RECFORMAT;
SetDS4 = (WSDS.DspSize > 1920);
Wenn wenn das Format größer 1920 (80x24) ist muss es 132x27 sein.
-
Dafür musst du die Datei aber erst mal geöffnet haben.
Unterstützt das Terminak das nicht, scheiterst du bereits beim Open und die INFDS wird nicht gefüllt.
Machst du auch noch einen Autoopen kannst du das nur beim rufenden Programm überwachen.
-
Stimmt. Dieses DSPF hat beide Einträge im DSPSIZ eingetragen und switcht mittels Bezugszahl auf DSPMOD(*DS4) im Falle der Fälle das eine WS kein DS4 kann.
-
Das habe ich auch schon mal so versucht. Allerdings stelle mal ein Terminal auf 24x80 um und starte dann das Programm.
Bis V6R1, da war mein letzter Versuch, bekam ich einen Open nicht durch, da die DSPF einen *DS4-Eintrag enthielt, auch wenn ich nicht vorhatte, diesen zu verwenden.
D.h., nur bei einem 27x132-Terminal kann man in einer DSPF zwischen DS3 und DS4 wechseln, ansonsten benötigt man 2 DSPF's mit USROPN.
Similar Threads
-
By harkne in forum NEWSboard Programmierung
Antworten: 57
Letzter Beitrag: 23-07-21, 13:24
-
By KingofKning in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 04-11-19, 07:59
-
By ILEMax in forum IBM i Hauptforum
Antworten: 16
Letzter Beitrag: 15-11-16, 06:56
-
By Isabella Pridat-Zapp in forum Archiv NEWSboard Events
Antworten: 0
Letzter Beitrag: 10-09-15, 12:50
-
By gerhardsw in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 20-12-13, 09:27
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks