[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2003
    Beiträge
    10

    API für die Ermittlung aktiver Jobs

    Hallo Zusammen,

    ich soll ein Programm neu schreiben, welches frei definierbare Jobs kontrolliert, ob diese überhaupt im System sind und ob diese auch den richtigen Status haben.

    In der API suche bin zwar auf 2-3 Einträge gestossen (z.B.: QUSLJOB) jedoch wird das Ergebnis von wrkusrjob ermittelt. Mir wäre wrkactjob jedoch lieber.

    Stand schon mal jemand vor diesem Problem??

    Besten Dank im voraus.

    lyrics

  2. #2
    Registriert seit
    Dec 2002
    Beiträge
    301
    QUSLJOB ist genau das API, das Du brauchst. Du kannst mit diesem API die Selektionskriterien verwenden, die beim Befehl WRKUSRJOB vorgegeben sind, und noch weitere, die der WRKUSRJOB nicht bietet. Ansonsten liefert dieses API so ziemlich alles an interessanten Informationen zurück, die man braucht u.A. auch den aktuellen Jobstatus, den man bei WRKACTJOB sehen kann. Bei Interesse kann ich Dir ein kleines Beispiel posten.
    Frank Hildebrandt

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    10
    Ich wäre dir sehr Dankbar wenn du ein kleines Beispiel posten könntest.....

  4. #4
    Registriert seit
    Dec 2002
    Beiträge
    301
    Das ist das Programm, welches über das API QUSLJOB die Jobs ermittelt, die den Selektionskriterien in der *ENTRY PLIST entsprechen. Das Programm habe ich vor über 10 Jahren in RPG III programmiert und dann später nur nach RPG IV umgesetzt. So sieht das Teil auch aus, aber es tut seinen Dienst. Ich habe es seinerzeit MOD014R genannt.

    PHP-Code:
     *-------------------------------------------------------------------------------------------*
     *                                                                                           *
     * 
    Jobs im System ermitteln                                                                  *
     *                                                                                           *
     *-------------------------------------------------------------------------------------------*
     *                                                                                           
     * 
    Allgemeine Felddeklarationen API                                                          
    D USRSPC          S             20A   INZ
    ('MOD014U   QTEMP     ')                            
    D CURENT          S             10S 0                                                        
     
    Binäre Felddefinitionen                                                                   
    D                 DS                                                                         
    D USSIZE                  1      4B 0                                                        
    D GENLEN                  5      8B 0                                                        
    D RTVLEN                  9     12B 0                                                        
    D STRPOS                 13     16B 0                                                        
    D NUMFLD                 17     20B 0                                                        
    D KEYFLD                 21     24B 0                                                        
     
    Jobname                                                                                   
    D JOJOB           DS                                                                         
    D  JOJONA                 1     10                     
    D  JOJOBE                11     20                     
    D  JOJONR                21     26                     
     
    Headerdaten Userspace                               
    D GENHDR          DS                                   
    D  OFFSET                 1      4B 0                  
    D  NUMENT                 9     12B 0                  
    D  LSTSIZ                13     16B 0                  
     
    Satzaufbau Format JOBL0200                          
    D RTVVAR          DS                                   
    D  JAJONA                 1     10                     
    D  JAJOBE                11     20                     
    D  JAJONR                21     26                     
    D  JAINJI                27     42                     
    D  JAJOST                43     52                     
    D  JAJOTY                53     53                     
    D  JAJOUT                54     54                     
    D  JARESV                55     56                     
    D  JAAJS                 81     84                     
     
    Fehlermeldungen API                                 
    D ERRCOD          DS                                   
    D  BYTPRO                 1      4B 0                  
    D  BYTAVA                 5      8B 0                  
    D  EXCID                  9     15                     
    D  RSRVD                 16     16                                                                    
    D  EXCDTA                17    116                                                                    
     
    *                                                                                                    
     *-------------------------------------------------------------------------------------------*        
     *                                                                                                    
     * 
    ÜBERGABEPARAMTER FÜR DIESES PROGRAMM                                                               
     
    *                                                                                                    
    C     *ENTRY        PLIST                                                                             
    C                   PARM                    P0_PRCSTS        10            
    <--> VERARBEITUNGSSTATUS   
    C                   PARM                    P0_JONA          10            
    <--> JOBNAME               
    C                   PARM                    P0_JOBE          10            
    <--> JOBBENUTZERNAME       
    C                   PARM                    P0_JONR           6            
    <--> JOBNUMMER             
    C                   PARM                    P0_JOST          10            
    <--> JOBSTATUS             
    C                   PARM                    P0_JOTY           1            
    <--> JOBTYP                
    C                   PARM                    P0_JOUT           1            
    <--- JOBUNTERTYP           
    C                   PARM                    P0_AJS            4            
    <--- AKTIVER JOBSTATUS     
     
    *                                                                                                    
     *-------------------------------------------------------------------------------------------*        
     *                                                                                                    
     * 
    INFORMATIONEN ZU DEN JOBS IN DEN USERSPACE STELLEN                                                 
    C                   
    IF        P0_PRCSTS '*OPEN'                                                     
    C                   EXSR      SR005                                                                   
    C                   
    ENDIF                                                                             
     * 
    INFORMATIONEN ZU DEN JOBS AUS DEM USERSPACE ABRUFEN                                                
    C                   
    IF        P0_PRCSTS '*QUERY'                                              
    C                   EXSR      SR010                                                             
    C                   
    ENDIF                                                                       
     * 
    PROGRAMMENDE                                                                                 
    C                   
    IF        P0_PRCSTS '*CLOSE'                                              
    C                   SETON                                        LR                             
    C                   
    ELSE                                                                        
    C                   RETURN                                                                      
    C                   ENDIF                                                                       
     *                                                                                              
     *-------------------------------------------------------------------------------------------*  
     * 
    INFORMATIONEN ZU DEN JOBS IN DEN USERSPACE STELLEN                                        *  
     *-------------------------------------------------------------------------------------------*  
     *                                                                                              
    C     SR005         BEGSR                                                                       
     
    VERARBEITUNGSSTATUS SETZEN                                                                   
    C                   MOVEL
    (P)  '*CLOSE'      P0_PRCSTS                                           
     
    ERSTELLUNG EINES USERSPACES                                                                  
    C                   MOVE      
    *BLANKS       ERRCOD                                              
    C                   Z
    -ADD     *ZERO         BYTPRO                                              
    C                   CALL      
    'QUSCRTUS'                                                        
    C                   PARM                    USRSPC                                              
    C                   PARM      
    *BLANKS       USEXAT           10                                 
    C                   PARM      1024          USSIZE                                              
    C                   PARM      
    ' '           USINIT            1           
    C                   PARM      
    '*CHANGE '    USAUTH           10           
    C                   PARM      
    *BLANKS       USTEXT           50           
    C                   PARM      
    '*YES    '    USREPL           10           
    C                   PARM                    ERRCOD                        
    C                   
    IF        EXCID = *BLANKS                             
     
    EINSTELLEN DER JOBS IN DEN USERSPACE                                   
    C                   MOVE      P0_JONA       JOJONA                        
    C                   MOVE      P0_JOBE       JOJOBE                        
    C                   MOVE      P0_JONR       JOJONR                        
    C                   Z
    -ADD     1             NUMFLD                        
    C                   Z
    -ADD     0101          KEYFLD                        
    C                   MOVE      
    *BLANKS       ERRCOD                        
    C                   Z
    -ADD     *ZERO         BYTPRO                        
    C                   CALL      
    'QUSLJOB'                                   
    C                   PARM                    USRSPC                        
    C                   PARM      
    'JOBL0200'    JOFONA            8           
    C                   PARM                    JOJOB                         
    C                   PARM                    P0_JOST                       
    C                   PARM                    ERRCOD                        
    C                   PARM                    P0_JOTY                       
    C                   PARM                    NUMFLD                        
    C                   PARM                    KEYFLD                        
    C                   
    IF        EXCID = *BLANKS                             
     
    ABRUF DER HEADERINFORMATIONEN DES USERSPACE                                                   
    C                   Z
    -ADD     125           STRPOS                                               
    C                   Z
    -ADD     16            GENLEN                                               
    C                   MOVE      
    *BLANKS       ERRCOD                                               
    C                   Z
    -ADD     *ZERO         BYTPRO                                               
    C                   CALL      
    'QUSRTVUS'                                                         
    C                   PARM                    USRSPC                                               
    C                   PARM                    STRPOS                                               
    C                   PARM                    GENLEN                                               
    C                   PARM                    GENHDR                                               
    C                   PARM                    ERRCOD                                               
    C                   
    IF        EXCID = *BLANKS                                                    
    C                   Z
    -ADD     *ZERO         CURENT                                               
    C                   MOVEL
    (P)  '*QUERY'      P0_PRCSTS                                            
    C                   
    ENDIF                                                                        
    C                   ENDIF                                                                        
    C                   ENDIF                                                                        
    C                   ENDSR                                                                        
     
    *                                                                                               
     *-------------------------------------------------------------------------------------------*   
     * 
    INFORMATIONEN ZU DEN JOBS AUS DEM USERSPACE ABRUFEN                                       *   
     *-------------------------------------------------------------------------------------------*   
     *                                                                                               
    C     SR010         BEGSR                                                                        
     
    FEHLERKENNZEICHEN SETZEN                                                     
    C                   MOVEL
    (P)  '*CLOSE'      P0_PRCSTS                           
     
    NÄCHSTE LISTENPOSITION                                                       
    C                   ADD       1             CURENT                              
     
    KEINE EINTRÄGE MEHR IN DER LISTE VORHANDEN                                   
    C                   
    IF        CURENT NUMENT                                   
     
    USERSPACE LÖSCHEN                                                            
    C                   MOVE      
    *BLANKS       ERRCOD                              
    C                   Z
    -ADD     *ZERO         BYTPRO                              
    C                   CALL      
    'QUSDLTUS'                                        
    C                   PARM                    USRSPC                              
    C                   PARM                    ERRCOD                              
     
    ÜBERGABEPARAMETER LÖSCHEN                                                    
    C                   EXSR      SR015                                             
    C                   
    ELSE                                                        
     * 
    ABRUF DER EINTRÄGE IM USERSPACE                                              
    C                   
    EVAL      STRPOS OFFSET + ((CURENT 1) * LSTSIZ) + 1     
    C                   Z
    -ADD     LSTSIZ        RTVLEN                              
    C                   MOVE      
    *BLANKS       ERRCOD                              
    C                   Z
    -ADD     *ZERO         BYTPRO                              
    C                   CALL      
    'QUSRTVUS'                                        
    C                   PARM                    USRSPC                              
    C                   PARM                    STRPOS                              
    C                   PARM                    RTVLEN                              
    C                   PARM                    RTVVAR                                              
    C                   PARM                    ERRCOD                                              
    C                   
    IF        EXCID = *BLANKS                                                   
    C                   MOVE      JAJONA        P0_JONA                                             
    C                   MOVE      JAJOBE        P0_JOBE                                             
    C                   MOVE      JAJONR        P0_JONR                                             
    C                   MOVE      JAJOST        P0_JOST                                             
    C                   MOVE      JAJOTY        P0_JOTY                                             
    C                   MOVE      JAJOUT        P0_JOUT                                             
    C                   MOVE      JAAJS         P0_AJS                                              
    C                   MOVEL
    (P)  '*QUERY'      P0_PRCSTS                                           
    C                   
    ENDIF                                                                       
    C                   ENDIF                                                                       
    C                   ENDSR                                                                       
     
    *                                                                                              
     *-------------------------------------------------------------------------------------------*  
     * 
    ÜBERGABEPARAMETER LÖSCHEN                                                                 *  
     *-------------------------------------------------------------------------------------------*  
     *                                                                                              
    C     SR015         BEGSR                                                                       
    C                   MOVE      
    *BLANKS       P0_JONA                                             
    C                   MOVE      
    *BLANKS       P0_JOBE                                             
    C                   MOVE      
    *BLANKS       P0_JONR                                             
    C                   MOVE      
    *BLANKS       P0_JOST                                             
    C                   MOVE      
    *BLANK        P0_JOTY                             
    C                   MOVE      
    *BLANK        P0_JOUT                             
    C                   MOVE      
    *BLANKS       P0_AJS                              
    C                   ENDSR 
    Das ist ein Programm, welches das obige Programm aufruft, um festzustellen, ob die TCP/IP Server aktiv sind, die ja auch nur Jobs im System sind.

    PHP-Code:
         /*-------------------------------------------------------------------------------------------*/   
         /*                                                                                           */   
         /* PRÜFEN TCP/IP SERVER STATUS                                                               */   
         /*                                                                                           */   
         /*-------------------------------------------------------------------------------------------*/   

                                                                                                           
         /* PROGRAMMBEGINN */                                                                              
                 
    PGM        PARM(&SERVER &MSGMODE)                                                         
                                                                                                           
         
    /* VARRIABLE DEKLARIEREN */                                                                       
                 
    DCL        VAR(&SERVERTYPE(*CHARLEN(10)                                               
                 
    DCL        VAR(&MSGMODETYPE(*CHARLEN(10)                                              
                 
    DCL        VAR(&SVRNAMETYPE(*CHARLEN(10)                                              
                 
    DCL        VAR(&PRCSTSTYPE(*CHARLEN(10/* <--> VERARBEITUNGSSTATUS */                
                 
    DCL        VAR(&JONATYPE(*CHARLEN(10)   /* <--> JOBNAME             */                
                 
    DCL        VAR(&JOBETYPE(*CHARLEN(10)   /* <--> JOBBENUTZER         */                
                 
    DCL        VAR(&JONRTYPE(*CHARLEN(6)    /* <--> JOBNUMMER           */                
                 
    DCL        VAR(&JOSTTYPE(*CHARLEN(10)   /* <--> JOBSTATUS           */                
                 
    DCL        VAR(&JOTYTYPE(*CHARLEN(1)    /* <--> JOBTYP              */                
                 
    DCL        VAR(&JOUTTYPE(*CHARLEN(1)    /* <--- JOBUNTERTYP         */     
                 
    DCL        VAR(&AJSTYPE(*CHARLEN(4)     /* <--- AKTIVER JOB STATUS  */     
                                                                                                
         /* ES SOLL KEIN SERVER GEPRÜFT WERDEN */                                               
                 
    IF         COND(&SERVER *EQ '*NONE'THEN(GOTO +                               
                              
    CMDLBL(STEP999))                                                  
                                                                                                
         
    /* SERVER SNMP */                                                                      
                 
    IF         COND(&SERVER *EQ '*SNMP'THEN(DO)                                  
                 
    CHGVAR     VAR(&JONAVALUE('QTMSNMP')                                         
                 
    CHGVAR     VAR(&SVRNAMEVALUE('SNMP')                                         
                 
    ENDDO                                                                          
                                                                                                
         
    /* SERVER ROUTED */                                                                    
                 
    IF         COND(&SERVER *EQ '*ROUTED'THEN(DO)                                
                 
    CHGVAR     VAR(&JONAVALUE('QTRTD*')                                          
                 
    CHGVAR     VAR(&SVRNAMEVALUE('ROUTED')                                       
                 
    ENDDO                                                                          
                                                                                                
         
    /* SERVER BOOTP */                                                                     
                 
    IF         COND(&SERVER *EQ '*BOOTP'THEN(DO)                                 
                 
    CHGVAR     VAR(&JONAVALUE('QTBOOTP')                                         
                 
    CHGVAR     VAR(&SVRNAMEVALUE('BOOTP')                                        
                 
    ENDDO                                                                          
                                                                                              
         
    /* SERVER TFTP */                                                                    
                 
    IF         COND(&SERVER *EQ '*TFTP'THEN(DO)                                
                 
    CHGVAR     VAR(&JONAVALUE('QTTFT*')                                        
                 
    CHGVAR     VAR(&SVRNAMEVALUE('TFTP')                                       
                 
    ENDDO                                                                        
                                                                                              
         
    /* SERVER DNS */                                                                     
                 
    IF         COND(&SERVER *EQ '*DNS'THEN(DO)                                 
                 
    CHGVAR     VAR(&JONAVALUE('QTOBDNS')                                       
                 
    CHGVAR     VAR(&SVRNAMEVALUE('DNS')                                        
                 
    ENDDO                                                                        
                                                                                              
         
    /* SERVER DHCP */                                                                    
                 
    IF         COND(&SERVER *EQ '*DHCP'THEN(DO)                                
                 
    CHGVAR     VAR(&JONAVALUE('QTODDHCPS')                                     
                 
    CHGVAR     VAR(&SVRNAMEVALUE('DHCP')                                       
                 
    ENDDO                                                                        
                                                                                              
         
    /* SERVER DDM */                                                                     
                 
    IF         COND(&SERVER *EQ '*DDM'THEN(DO)                                 
                 
    CHGVAR     VAR(&JONAVALUE('QRWTLSTN')                                      
                 
    CHGVAR     VAR(&SVRNAMEVALUE('DDM')                                        
                 
    ENDDO                                                                        
                                                                                       
         
    /* SERVER TELNET */                                                           
                 
    IF         COND(&SERVER *EQ '*TELNET'THEN(DO)                       
                 
    CHGVAR     VAR(&JONAVALUE('QTGTELNETS')                             
                 
    CHGVAR     VAR(&SVRNAMEVALUE('TELNET')                              
                 
    ENDDO                                                                 
                                                                                       
         
    /* SERVER FTP */                                                              
                 
    IF         COND(&SERVER *EQ '*FTP'THEN(DO)                          
                 
    CHGVAR     VAR(&JONAVALUE('QTFTP*')                                 
                 
    CHGVAR     VAR(&SVRNAMEVALUE('FTP')                                 
                 
    ENDDO                                                                 
                                                                                       
         
    /* SERVER SMTP */                                                             
                 
    IF         COND(&SERVER *EQ '*SMTP'THEN(DO)                         
                 
    CHGVAR     VAR(&JONAVALUE('QTSMTPSRVR')                             
                 
    CHGVAR     VAR(&SVRNAMEVALUE('SMTP')                                
                 
    ENDDO                                                                 
                                                                                       
         
    /* SERVER LPD */                                                              
                 
    IF         COND(&SERVER *EQ '*LPD'THEN(DO)                          
                 
    CHGVAR     VAR(&JONAVALUE('QTLPD*')                                 
                 
    CHGVAR     VAR(&SVRNAMEVALUE('LPD')                                 
                 
    ENDDO                                                                 
                                                                              
         
    /* SERVER HTTP */                                                    
                 
    IF         COND(&SERVER *EQ '*HTTP'THEN(DO)                
                 
    CHGVAR     VAR(&JONAVALUE('QTMHHTTP')                      
                 
    CHGVAR     VAR(&SVRNAMEVALUE('HTTP')                       
                 
    ENDDO                                                        
                                                                              
         
    /* SERVER WSG */                                                     
                 
    IF         COND(&SERVER *EQ '*WSG'THEN(DO)                 
                 
    CHGVAR     VAR(&JONAVALUE('QTWSG*')                        
                 
    CHGVAR     VAR(&SVRNAMEVALUE('WSG')                        
                 
    ENDDO                                                        
                                                                              
         
    /* SERVER POP */                                                     
                 
    IF         COND(&SERVER *EQ '*POP'THEN(DO)                 
                 
    CHGVAR     VAR(&JONAVALUE('QTPST*')                        
                 
    CHGVAR     VAR(&SVRNAMEVALUE('POP')                        
                 
    ENDDO                                                        
                                                                              
         
    /* SERVER REXEC */                                                   
                 
    IF         COND(&SERVER *EQ '*REXEC'THEN(DO)               
                 
    CHGVAR     VAR(&JONAVALUE('QTRXC*')                        
                 
    CHGVAR     VAR(&SVRNAMEVALUE('REXEC')                      
                 
    ENDDO                                                        
                                                                                               
         
    /* SELEKTIONSKRITERIEN FÜR DIE ABZURUFENDEN JOBS FÜLLEN */                            
                 
    CHGVAR     VAR(&JOBEVALUE('*ALL')                                           
                 
    CHGVAR     VAR(&JONRVALUE('*ALL')                                           
                 
    CHGVAR     VAR(&JOSTVALUE('*ACTIVE')                                        
                 
    CHGVAR     VAR(&JOTYVALUE('B')                                              
                                                                                               
         
    /* VERARBEITUNGSSTATUS SETZEN */                                                      
                 
    CHGVAR     VAR(&PRCSTSVALUE('*OPEN')                                        
                                                                                               
         
    /* JOBS ABRUFEN */                                                                    
                 
    CALL       PGM(MOD014RPARM(&PRCSTS &JONA &JOBE &JONR +                      
                              &
    JOST &JOTY &JOUT &AJS)                                          
                                                                                               
         
    /* DER SERVER IST NICHT AKTIV */                                                      
                 
    IF COND(&PRCSTS *EQ '*CLOSE'THEN(DO)                                        
                 
    SNDPGMMSG  MSGID(MOD0001MSGF(MOD001M) +                                     
                              
    MSGDTA(&SVRNAMEMSGTYPE(&MSGMODE)                               
                 
    ENDDO                                                                         
                                                                                               
         
    /* DER SERVER IST AKTIV */                                                            
                 
    IF COND(&PRCSTS *EQ '*QUERY'THEN(DO)                                        
                 
    CHGVAR     VAR(&PRCSTSVALUE('*CLOSE')                                       
                 
    CALL       PGM(MOD014RPARM(&PRCSTS &JONA &JOBE &JONR +                      
                              &
    JOST &JOTY &JOUT &AJS)                   
                 
    SNDPGMMSG  MSGID(MOD0002MSGF(MOD001M) +              
                              
    MSGDTA(&SVRNAMEMSGTYPE(*COMP)           
                 
    ENDDO                                                  
                                                                        
         
    /* PROGRAMMENDE */                                             
     
    STEP999:    ENDPGM 
    Ich denke, dass Du damit etwas anfangen kannst.
    Frank Hildebrandt

  5. #5
    Registriert seit
    Aug 2006
    Beiträge
    26
    Hallo lyrics

    Schau dir doch mal den Link an der beinhalted einige Beispiele über API's







    http://www.think400.dk/apier_1.htm

Similar Threads

  1. Jobs im Batch langsam ... V5R4 ...
    By bode in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 15-12-06, 09:43
  2. javamail api
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 22-11-06, 16:02
  3. Ändert sich die Leistung durch interaktive Jobs?
    By ratinger in forum NEWSboard Server Software
    Antworten: 11
    Letzter Beitrag: 09-11-06, 16:02
  4. Wie herausfinden was Jobs machen.
    By ratinger in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 23-05-06, 10:55
  5. API wie WRKJOBQ
    By mwithake in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 22-08-05, 14:13

Berechtigungen

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