[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Dec 2005
    Beiträge
    131

    DSPMOD (*DS3 oder *DS4) ermitteln

    Schönen guten Morgen!

    Ich habe hier bereits einiges gelesen was die Ausgabe von Satzformaten, die eine unterschiedliche "Auflösung" haben, angeht.
    Da geht es meistens darum, dass man 2 DSPF verwenden sollte, und diese dann je nach "Zustand" verwendet.

    Meine Frage ist jetzt: wie komme ich an die Info, wie meine Emulation konfiguriert ist?
    Sprich: steht in irgendeiner INFDS o.ä. etwas diesbezüglich?

    Danke für eure Unterstützung

  2. #2
    Registriert seit
    Apr 2005
    Beiträge
    385
    Über das API

    QsnRtvMod

    kannst du den "Kontext" ermitteln lassen, auf welcher Auflösung du jetzt unterwegs bist.

    Viele Grüße

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ich definiere einfach die DSPF per USROPN (UC).
    Schlägt der Open fehl (%error() oder *INxx), ist der Modus halt nicht verfügbar.

    Zu beachten ist, dass eine DSPF mit beiden Modi nur geöffnet werden kann, wenn beide Modi auch zulässig sind.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Dec 2005
    Beiträge
    131
    Danke schonmal für die schnellen Antworten!

    In meinem konkreten Fall habe ich in der DSPF schon beide Fälle vorgesehen:

    DSPSIZ(27 132 *DS4 24 80 *DS3)

    und das Programm läuft auch in beiden Modi.
    Aber ich will bei einem 24 x 80 andere Sachen steuern / anzeigen.
    Zum Beispiel soll ein Text angezeigt werden wie "PGM für 27 x 132 optimiert" - also BZ-gesteuert...

    Mit dem QsnRtvMod komme ich irgendwie nicht weiter - da fehlen noch Sachen, um die Bindeschritte zu schaffen!?

    Gibt es da "gute" Beispiele, wie man das einsetzt? Wenn ich suche, finde ich nur Fragmente, bzw. Codeschnipsel, die aber auch die bei mir fehlenden Komponenten nicht erwähnen.

  5. #5
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Zitat Zitat von mahones Beitrag anzeigen
    Mit dem QsnRtvMod komme ich irgendwie nicht weiter - da fehlen noch Sachen, um die Bindeschritte zu schaffen!?
    Welche Programmiersprache?

  6. #6
    Registriert seit
    Dec 2005
    Beiträge
    131
    Zitat Zitat von Pikachu Beitrag anzeigen
    Welche Programmiersprache?
    ILE RPG

    ...meinetwegen auch CLLE - dort habe ich schon folgendes gefunden (Umwandlung schlug aber mit "CPD0791 - Keine Kennsätze im Programm verwendet" fehl):

    Code:
       PGM                                                        
     
       DCL        VAR(&DSPMODE) TYPE(*CHAR) LEN(1)                
       DCL        VAR(&SSNID)   TYPE(*INT)  LEN(4)                
       DCL        VAR(&ERRDS)   TYPE(*CHAR) LEN(16) +             
                    VALUE(X'0000000000000000')                    
       CALLPRC    PRC('QSNRTVMOD') PARM((&DSPMODE *BYREF) +       
                    (&SSNID *BYREF) (&ERRDS *BYREF))              
       SNDPGMMSG  MSG('DISPLAY SIZE IS SET TO ' *BCAT &DSPMODE)   
     
       ENDPGM

  7. #7
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    "CPD0791 00 Keine Kennsätze im Programm verwendet." ist nur eine Warnung.

    Beim CALLPRC ist der Fehler: "QsnRtvMod" schreibt sich mit Groß- und Kleinbuchstaben!

  8. #8
    Registriert seit
    Dec 2005
    Beiträge
    131
    Ich habe jetzt sowohl das CL korrigiert, als auch im RPGLE folgendes eingebaut:

    Code:
      D DSPMOD          S              1A  
     
      D RetrieveDisplayMode...                                           
      D                 PR                  ExtProc('QsnRtvMod')         
       * Display Mode: '3' = Device is in 24x80 mode; '4' = 27x132 mode  
      D DspMod                         1A                                
      D EnvHandle                     10I 0 options(*omit)               
      D ErrorCode                           likeds(#ErrorCode)           
      D                                     options(*varsize : *omit)    
     
      D #ErrorCode      DS                  qualified                    
      D BytesProv                     10I 0 inz(%size(#ErrorCode))       
      D BytesAvail                    10I 0 inz(0)                       
      D MsgId                          7A   inz('')                      
      D                                1A   inz('')                      
      D MsgData                      128A   inz('')                      
     
      ...
     
      /FREE                                         
     
       RetrieveDisplayMode(DspMod: *omit : *omit);  
     
      /END-FREE
    Aber ich bekomme immer nur den Wert '3' zurück - obwohl ich auf einer Sitzung definitiv 27x132 verwende - und das Programm dieses auch so anzeigt.

    Wo ist der Fehler?

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ich denke nicht, dass es hilft:

    The current display mode

    Also, wenn das Terminal gerade ein 27x132-Format anzeigt, liefert es diese Info.

    Wenn du allerdings deine DSPF implizit eröffnest, kommst du gar nicht soweit, da diese nicht geöffnet werden kann, wenn das Terminal den Modus nicht unterstützt!

    Du benötigts halt 2 DSPF's, eine die nur den 24x80-Modus enthält, falls der Open mit dem 27x132-Modus fehlschlägt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. PAGRTT aus Printer-File ermitteln
    By MatthiasK in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 10-01-07, 13:26
  2. Programmbibliothek in einem Cobol oder CL Programm ermitteln
    By schatte in forum NEWSboard Programmierung
    Antworten: 19
    Letzter Beitrag: 10-01-07, 11:32
  3. Fixtexte in Bildschirmdateien ermitteln
    By ulbrecht in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 06-12-06, 17:06
  4. nach Insert neu gen. Datensatz ermitteln
    By M.Kasper in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 25-08-06, 07:32
  5. SQL Select mit SUM aus einer DB
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 14
    Letzter Beitrag: 30-03-06, 12:33

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •