Normalt bekymrer vi programmører os ikke vildt meget for CPU forbruget i vores programmer. Og hvis vi endelig gør, så får DB2 næsten altid skylden. En vigtig forudsætning for at kunne bedømme CPU forbruget er at kunne måle det. I batchjobs kan man finde CPU forbruget på stepniveau i JES messageloggen. I CICS må man ty til SMF records pr. transaktion.
Hvis man vil måle på enkelte dele af sit program, så bliver det straks meget vanskeligere. De fleste installationer med respekt for sig selv har udviklet assembler programmer for mere end 20 år siden, der kan hjælpe dig. Problemet er typisk, at ingen længere kan huske, hvad disse assembler programmer hedder og ingen kan kode assembler mere, så man kan ikke sådan lige lave sin egen CPU måler. Heldigvis kan det faktisk lade sig gøre at måle CPU forbruget alene ved hjælp af COBOL, som de fleste mainframe programmører stadig behersker. Du kan gøre det således:
Ovenstående stumper kode kan indsættes de rigtige steder i hvilket som helst eksisterende COBOL program. Feltet CPUTIME i ASCB'en (det hedder i virkeligheden noget andet, men jeg har glemt, hvad det hedder, undskyld til MVS-hajerne) indeholder til enhver tid det antal 1/4096 del mikrosekunder, som TCB'er i address spacet har eksekveret på CPU'er på den pågældende MVS. Da vores almindelige COBOL-programmer i batch og under TSO eksekveres på een TCB, som ikke deles med andre, så vil ovenstående programstumper beregne det præcise CPU forbrug for den stump kode, der eksekveres mellem de to COMPUTE WORKUSED = CPUTIME / 4096000. WORKUSED indeholder altså CPU forbruget i 1/1000 sekunder siden den første TCB i address spacet blev startet.
Bemærk, at programkoden ikke kan anvendes i PL/I, da en PIC S9(18) BINARY i PL/I svarer til en FIXED BIN(63), som desværre ikke kan erklæres. Og til sidst en advarsel. Ovenstående måde at måle CPU forbrug på vil ikke give det rigtige resultat, hvis den anvendes i CICS. CICS afvikler mange samtidige transaktioner i samme address space og faktisk også på samme TCB. Kun hvis du har en CICS helt for dig selv, så vil du måske få det rigtige resultat, men hvem har det?