[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Nov 2017
    Beiträge
    1

    API QWTRTVTA Codebeispiel

    Hallo i5 Forum,

    hat jemand ein Code Beispiel für die API QWTRTVTA?
    Würde gern die IP-Adresse der PC-Sitzung ermitteln.

    Viele Grüße

  2. #2
    Registriert seit
    May 2002
    Beiträge
    2.641
    Hier gibt es ein Beispiel, aber nur nach Registration:

    http://iprodeveloper.com/rpg-program...ion-using-apis

  3. #3
    Registriert seit
    May 2002
    Beiträge
    1.121
    Vor Jahren gab es hier mal ein GETIPADR

    QCLSRC GETIPADR
    PHP-Code:
    PGM PARM(&DEVD)                             
                                                
    DCL VAR(&RCVTYPE(*CHARLEN(893/**/     
    DCL VAR(&RCVLENTYPE(*CHARLEN(4/**/    
    DCL VAR(&RCVLENDTYPE(*DECLEN(9/**/    
    DCL VAR(&ERRTYPE(*CHARLEN(100/**/     
    DCL VAR(&DEVDTYPE(*CHARLEN(10/**/     
    DCL VAR(&FRMDEVTYPE(*CHARLEN(8) +       
    VALUE('DEVD0600'/**/                      
    DCL VAR(&IPTYPE(*CHARLEN(15/**/       
                                                
    IF COND(&DEVD *EQ '*'THEN(DO)             
    RTVJOBA JOB(&DEVD)                          
    ENDDO                                       
                                                
    CHGVAR 
    VAR(&RCVLENDVALUE(893)             
    CHGVAR VAR(%BIN(&RCVLEN)) VALUE(&RCVLEND)   
                                                   
    CALL PGM(QDCRDEVDPARM(&RCV &RCVLEN &FRMDEV 
    &
    DEVD &ERR)                                    
    CHGVAR VAR(&IPVALUE(%SST(&RCV 878 15))       
    SNDPGMMSG MSG(&IP)                             
                                                   
    ENDPGM 
    QCMDSRC GETIPADR
    PHP-Code:
    CMD PROMPT('GET IP ADDRESS')                  
    PARM KWD(JOBNAMETYPE(*CHARLEN(10DFT(*) +
    MIN(0PROMPT('JOB - NAME'
    QRPGLESRC GETIP
    PHP-Code:
    H DFTACTGRP(*NOBNDDIR('QC2LE')                                                             
                                                                                                 
    D GetIpAdr        PR            20a                                                          
    D  Device                       10a   
    CONST                                                  
     *                                                                                           
    D I_Net_Adr       S             16a                                                          
     
    *                                                                                           
    D                SDS                                                                         
    D sds_zeit80            282    289  0                                       Datum für GRPPDP 
    D  Device               244    253                                                           
     
    *---------------------------------------------------------                                  
     * 
    Retrieve IP Address                                                                       
    C                   
    Eval      I_Net_Adr   GetIpAdr(Device)                                 
    C                   Eval      I_Net_Adr   = %trim(I_Net_Adr)                                 
                                                                                                 
    C     I_Net_Adr     Dsply                                                                    
    C                   
    Eval      *Inlr = *On                                                    
     
    *    RtvIpAdr Subprocedure To Get IP Address                                              
     
    *---------------------------------------------------------                                  
    P GetIpAdr        B                   Export                
    D GetIpAdr        PI            20A                         
    D  Inp_Device                   10A   
    Const                 
                                                                
    D Apierr          DS                                        
    D  Bytprv                 1      4B 0 Inz
    (216)              
    D  Bytavl                 5      8B 0 Inz                   
    D  Errorid                9     15A   Inz                   
    D  Reserved              16     16A   Inz                   
    D  ErrorDesc             17    216A   Inz                   
                                                                
    D Net_Address     S             20A   INZ                   
    D Format          S              8A   Inz
    ('DEVD0600')       
    D Rcvar           S           5000A   Inz                   
    D Varlen          S              4B 0 Inz
    (5000)             
    C                   Eval      Device Inp_Device           
    C                   Call      
    'QDCRDEVD'                    
    C                   Parm                    Rcvar           
    C                   Parm                    Varlen          
    C                   Parm                    Format              
    C                   Parm                    Device              
    C                   Parm                    Apierr              
    C                   
    If        BytAvl 0                        
    C                   
    Eval      Net_Address = %Subst(Rcvar:877:16)
    C                   Endif                                       
    C                   Return    Net_Address                       
    P GetIpAdr        E 
    Gruß
    Ronald

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Je nach Release geht das auch mit einem 1-Zeiler in SQL:

    Code:
    Exec Sql Select v_client_ip_address into :Host_Var from table(QSYS2.GET_JOB_INFO('*')) t;
    oder
    Code:
    Exec Sql set :host_var = SYSIBM.client_ipaddr;
    lg Andreas

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Nicht, dass da dann wieder eine JVM gestartet wird.
    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

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Nicht, dass da dann wieder eine JVM gestartet wird.
    ... diese Befürchtung ist unbegründet, das sind (derzeit) nur die http bezogenen Funktionen. Allerdings frage ich mich generell, was das alles mit Datenbank zu tun hat und meine Nackenhaare kräuseln sich da aus Designgründen...

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Man sollte sich das Leben nicht unnötig schwer machen.
    Wenn ich aus Designgründen einen ganzen API Aufruf gegen einen 1-Zeiler vorziehe kräuseln sich mir da eher die Nackenhaare ;-)

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Der Hintergrund hierzu ist der "system i director?" oder so ähnlich.
    Dieser löst ja den iSeries Navigator ab.
    Da dieser neue Director wohl nicht so einfach wie früher mit API's umgeht bzw. umgehen will, hat die IBM sich da SQL-Prozeduren/Funktionen überlegt um sich das Leben zu vereinfachen, nur eine zentrale Schnittstelle, nämlich SQL.
    Zusätzlich halt mit dem Nebeneffekt, dass diese SQL-API-Aufrufe der Allgemeinheit zur Verfügung gestellt werden und somit eine z.T. doch komplexe API-Programmierung entfallen kann.
    Warum auch nicht?
    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

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... von wegen 1-Zeiler, das ist ja nur die halbe Wahrheit. Man muss eine weitere Programmiersprache, SQL, in Aktion bringen und benutzt Komponenten mit ungeklärtem Status. So heißt es zum Beispiel in IBM Materialien über die SYSTOOLS: "they are not subject to IBM service and support." (die alten Hasen fühlen sich an TAATOOLS erinnert - die war dann plötzlich weg).
    Die APIs sind dokumentierte Schnittstellen, mit dokumentiertem Verhalten und werden als Bestandteil des Betriebssystems in ihrer Funktion unverändert am laufen gehalten und wenn man die geforderte Fuktion (ermitteln client IP Adresse) einmal gebaut hat, kann sie als echter Einzeiler aus allen ILE kompatiblen Kontexten aufgerufen werden.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Da wird ja wieder einiges durcheinander gebracht.

    1. In meinem Beispiel wird die QSYS2 oder SYSIBM benützt, nicht SYSTOOLS.
    2. APIs sollen angeblich unverändert bleiben?? Das halte ich für ein Gerücht.
    Beim Umstieg auf 7.3 wurde ein API für Socket-Verbindung UNDOKUMENTIERT geändert.
    Die Doku beinhaltet zwar die aktuellen Parameter, aber dass sich da was bei diesem API geändert hat wirst du nicht mal finden wenn du ganz speziell danach suchst.
    Und nein, das war bis jetzt nicht das einzige mal das soetwas passiert ist. Kommt aber zum Glück sehr selten vor.
    3. Ja klar, man kann alle Zeilen Code irgendwo verpacken um sie als 1-Zeiler aufrufen zu können. Ich erspare mir aber auch gern die x-Zeilen Code irgendwohin zu verpacken.

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Was die API-Veränderungen angeht, so betrachtet die IBM das wohl eher als Fehlerbehebung.
    Nach dem Motto: Ein Bug ist ein Feature, allerdings nicht für die Ewigkeit.
    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

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... die Releaseprobleme, die ich mit APIs kenne, hängen eher mit falscher Bedienung zusammen (feste Position statt Offset verwendet), oder da hat jemand "inoffizielle" Schnittstellen verwendet, die dann aus Security-Gründen dichtgemacht wurden, oder den Unterschied zwischen Command processing Programms und APIs nicht verstanden...
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Tags for this Thread

Berechtigungen

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