[NEWSboard IBMi Forum]

Thema: API Hilfe

  1. #1
    Registriert seit
    Apr 2003
    Beiträge
    18

    Angry API Hilfe

    Hi,
    ich muss für alle user den "local Path name" und "Supp. groups" ausgeben. Da ich keine Erfahrung mit API's habe, speziell mit Offsets wie sie hier im QSYRUSRI-API gefordert sind, bräuchte ich einen Tip wie man so etwas in RPG III/IV löst. Hat vielleicht jemand eine Idee oder ein kleines Beispiel? Die Beispiele aus dem API-Handbuch behandeln das ja leider nicht (oder ich habs nicht geschnallt).
    Danke schon mal.

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    727

    Post

    Also :
    die supp.Grp bekommst du einfacher mit RTVUSRPRF. Das USRHOME ist etwas schwieriger, da dies im Unicode (UCS-2)abgelegt ist.
    Das heißt, daß API QSYRUSRI reicht nicht.
    Mit dem API CDRCVRT kannst du den String in z.B. die Job CCSID umwandeln.
    Hier ein kleines CL-Programm :
    Code:
     RTVUSRHOME: PGM        PARM(&USRPRF &HOMEDIRN)                                           
                                                                                              
                 DCL        VAR(&USRPRF) TYPE(*CHAR) LEN(10) /**/                             
                 DCL        VAR(&RCV) TYPE(*CHAR) LEN(9999) /**/                              
                 DCL        VAR(&RCVLEN) TYPE(*CHAR) LEN(4) /**/                              
                                                                                              
                 DCL        VAR(&ERR) TYPE(*CHAR) LEN(100) /**/                               
                 DCL        VAR(&FORMAT) TYPE(*CHAR) LEN(8) +                                 
                              VALUE('USRI0300') /**/                                          
                                                                                              
                 DCL        VAR(&OFSHOME) TYPE(*CHAR) LEN(4) /**/                             
                 DCL        VAR(&OFSHOMED) TYPE(*DEC) LEN(9) /**/                             
                                                                                              
                 DCL        VAR(&HOMEDIR) TYPE(*CHAR) LEN(512) /*IN UCS*2*/                   
                 DCL        VAR(&CCSID) TYPE(*CHAR) LEN(4) /**/                               
                 DCL        VAR(&LOHOME) TYPE(*CHAR) LEN(4) /**/                              
                                                                                              
                 DCL        VAR(&ST1) TYPE(*CHAR) LEN(4) /**/                                 
                 DCL        VAR(&L1) TYPE(*CHAR) LEN(4) /**/                                  
                  DCL        VAR(&CCSIDN) TYPE(*CHAR) LEN(4) /**/                                         
                  DCL        VAR(&CCSIDNN) TYPE(*DEC) LEN(5 0) /**/                                       
                  DCL        VAR(&ST2) TYPE(*CHAR) LEN(4) /**/                                            
                  DCL        VAR(&GCCASN) TYPE(*CHAR) LEN(4) /**/                                         
                  DCL        VAR(&L2) TYPE(*CHAR) LEN(4) /**/                                             
                  DCL        VAR(&HOMEDIRN) TYPE(*CHAR) LEN(256) /*IN EBCDIC*/                            
                  DCL        VAR(&L3) TYPE(*CHAR) LEN(4) /**/                                             
                  DCL        VAR(&L4) TYPE(*CHAR) LEN(4) /**/                                             
                                                                                                          
                  CHGVAR     VAR(%BIN(&RCVLEN)) VALUE(9999)                                               
                                                                                                          
                  IF         COND(&USRPRF = '*CURRENT  ') THEN(RTVJOBA +                                  
                               CURUSER(&USRPRF) DFTCCSID(&CCSIDNN))                                       
                                                                                                          
     /* RETRIEVE USER INFORMATION (QSYRUSRI) API */                                                       
                                                                                                          
                  CALL       PGM(QSYRUSRI) PARM(&RCV &RCVLEN &FORMAT +                                    
                               &USRPRF &ERR)                                                              
                  CHGVAR     VAR(&OFSHOME) VALUE(%SST(&RCV 601 4))                                        
                  CHGVAR     VAR(&OFSHOMED) VALUE(%BIN(&OFSHOME))           /* OFFSET TO HOMEDIR-BLOCK */ 
                                                                                                                  
                 CHGVAR     VAR(&OFSHOMED) VALUE(&OFSHOMED + 1)                                                   
                 CHGVAR     VAR(&CCSID) VALUE(%SST(&RCV &OFSHOMED 4))      /* CCSID OF HOMEDIR IS 61952 UCS-2 */  
                 CHGVAR     VAR(&OFSHOMED) VALUE(&OFSHOMED +4+2+3+3+4)                                            
                 CHGVAR     VAR(&LOHOME) VALUE(%SST(&RCV &OFSHOMED 4))     /* NUMBER OF BYTES HOMEDIR UCS*2 */    
                 CHGVAR     VAR(&OFSHOMED) VALUE(&OFSHOMED +4+2+10)                                               
                 CHGVAR     VAR(&HOMEDIR) VALUE(%SST(&RCV &OFSHOMED 512))  /* HOMEDIR IN UCS*2 */                 
                                                                                                                  
                 CHGVAR     VAR(%BIN(&ST1)) VALUE(0)                                                              
                 CHGVAR     VAR(&L1) VALUE(&LOHOME)             /* NUMBER OF BYTES INPUT STRING */                
                 RTVJOBA    DFTCCSID(&CCSIDNN)                  /* CONVERT IN DFT JOB CCSID */                    
                 CHGVAR     VAR(%BIN(&CCSIDN)) VALUE(&CCSIDNN)                                                    
                 CHGVAR     VAR(%BIN(&ST2)) VALUE(2)            /* 2 = SPACE PADDED, SO L2 = L3 */                
                 CHGVAR     VAR(%BIN(&GCCASN)) VALUE(0)                                                           
                 CHGVAR     VAR(%BIN(&L2)) VALUE(256)           /* ALLOCATED OUTPUT LENGTH IN BYTES */            
                                                                                                                  
    /* CONVERT A GRAPHIC CHARACTER STRING (CDRCVRT) API */                                                        
                 CALL       PGM(CDRCVRT) PARM(&CCSID &ST1 &HOMEDIR &L1 +                                          
                              &CCSIDN &ST2 &GCCASN &L2 &HOMEDIRN &L3 +                                            
                              &L4 &ERR)                                                                           
                                                          
             /*  SNDPGMMSG  MSG(&HOMEDIRN)   */           
                                                          
    ENDPGM
    Viel Spaß
    Sven

    [Dieser Beitrag wurde von Sven Schneider am 23. Mai 2003 editiert.]

  3. #3
    Registriert seit
    Apr 2003
    Beiträge
    18
    Vielen Dank Sven, ich werde gleich mal mein Glück versuchen.
    Willi

  4. #4
    Registriert seit
    Apr 2003
    Beiträge
    18

    Smile

    Hi Sven,
    alles paletti es hat funktioniert.
    Danke!!

Similar Threads

  1. Probleme API QUSLJOB aufzurufen
    By TMusolf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 25-01-07, 12:42
  2. Hilfe! Rollback bei Transaktionen funktioniert nicht
    By remo2010 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 23-11-06, 13:31
  3. javamail api
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 22-11-06, 16:02
  4. API für die Ermittlung aktiver Jobs
    By lyrics in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 29-08-06, 09:03
  5. Hilfe bei Lodrun Anleitung
    By marcel331 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 12-08-06, 13:01

Berechtigungen

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