Hallo,

ich habe ein RPG Modul welches mir die Programmbibliothek zurück liefert:
Name: RPGACTLIB
Code:
D                SDS                                          
D  LIBNAME               81     90                            
 *                                                            
C     *ENTRY        PLIST                                     
C                   PARM                    X_LIBNAME        10
C                   EVAL      X_LIBNAME=LIBNAME               
C                   EVAL      *INLR=*ON
Nun habe ich jeweils ein RPG, CL und Cobol Programm welche dieses Modul 1000 mal aufrufen (Performance Test). Dabei fällt auf, dass das Cobol Programm wesentlich mehr CPU Zeit benötigt als das CL/RPG Programm. Die folgenden Auswertungen wurden durch das Journal QACGJRN aufgezeichnet:
Code:
JOB-                CPU            ZEIT
NAME                              AKTIV
ILE_RPG             638             819
ILE_COBOL         3.663           4.386
ILE_CL              655             825
RPG Code:
Code:
D CALLRPG         PR                  ExtProc('RPGACTLIB')
D   LIBNAME                     10A                      
D                                                        
D   LIBNAM        S             10A                      
 *                                                       
c                   do        1000                       
C                   callp     CALLRPG(LIBNAM)            
c                   enddo                                
C                   EVAL      *INLR=*ON
CL Code:
Code:
             PGM                                          
                                                          
             DCL        VAR(&LIB) TYPE(*CHAR) LEN(10)     
             DCL        VAR(&ZAEHLER) TYPE(*DEC) LEN(5)   
                                                          
             CHGVAR     VAR(&ZAEHLER) VALUE(0)            
ANF010:                                                   
             CHGVAR     VAR(&ZAEHLER) VALUE(&ZAEHLER + 1) 
             CALLPRC    PRC(RPGACTLIB) PARM(&LIB)         
             IF         COND(&ZAEHLER *NE 1000) THEN(GOTO +
                          CMDLBL(ANF010))                 
                                                          
             ENDPGM
Cobol Code:
Code:
       WORKING-STORAGE SECTION.                              
       01  LIB-WRK    PIC X(10).                             
      *-------------------------------------------------------
       LINKAGE SECTION.                                      
      *-------------------------------------------------------
      *-------------------------------------------------------
       PROCEDURE DIVISION.                                   
      *-------------------------------------------------------
       STEUER SECTION.                                       
       ANFANG.                                               
                                                             
           PERFORM  1000 TIMES                               
                    CALL PROCEDURE "RPGACTLIB" USING LIB-WRK 
           END-PERFORM.                                      
                                                             
       ENDE.                                                 
           GOBACK.
Der Test wurde unter V4R5 als auch unter V5R2 ausgeführt.

Kann mir jemand erklären, warum das Cobol Programm in diesem Fall so viel mehr CPU Zeit verbraucht?

Gruß
Matthias