TIME: PROCEDURE; %INCLUDE SYS$GETJPI; /* * INCLUDE file for definitions required by SYS$GETJPI */ %INCLUDE $JPIDEF; /* item codes */ /* (1) */ %INCLUDE $SSDEF; /* System (SS$_*) status values */ %INCLUDE $STSDEF; /* Status value variable */ DECLARE 1 JPI_LIST STATIC EXTERNAL, /* (2) */ 2 JPI_BUFIO, /* Buffered I/O count */ 3 LENGTH FIXED BIN(15) INITIAL(4), 3 ITMCOD FIXED BIN(15) INITIAL(JPI$_BUFIO), /* (3) */ 3 BUFADR POINTER INITIAL(NULL()), 3 RETLEN POINTER INITIAL(NULL()), 2 JPI_CPUTIM, /* CPU time */ 3 LENGTH FIXED BIN(15) INITIAL(4), 3 ITMCOD FIXED BIN(15) INITIAL(JPI$_CPUTIM), /* (3) */ 3 BUFADR POINTER INITIAL(NULL()), 3 RETLEN POINTER INITIAL(NULL()), 2 JPI_DIRIO, /* Direct I/O count */ 3 LENGTH FIXED BIN(15) INITIAL(4), /* (3) */ 3 ITMCOD FIXED BIN(15) INITIAL(JPI$_DIRIO), 3 BUFADR POINTER INITIAL(NULL()), 3 RETLEN POINTER INITIAL(NULL()), 2 JPI_PAGEFLTS, /* Page faults */ 3 LENGTH FIXED BIN(15) INITIAL(4), 3 ITMCOD FIXED BIN(15) INITIAL(JPI$_PAGEFLTS), /* (3) */ 3 BUFADR POINTER INITIAL(NULL()), 3 RETLEN POINTER INITIAL(NULL()), 2 ENDLIST FIXED BIN(31) INITIAL(0); DECLARE (T0,CLOCK_TIME) FLOAT BIN(24) STATIC EXTERNAL, /* (4) */ (BUFIO,END_BUFIO,CPUTIM,END_CPUTIM,DIRIO, END_DIRIO,PAGEFLTS,END_PAGEFLTS) FIXED BIN(31) STATIC EXTERNAL, CPUSECONDS FLOAT BIN(24); DECLARE FOR$SECNDS ENTRY (FLOAT BIN(24)) RETURNS(FLOAT BIN(24)); TIMRE: ENTRY; JPI_BUFIO.BUFADR=ADDR(END_BUFIO); /* (5) */ JPI_CPUTIM.BUFADR=ADDR(END_CPUTIM); JPI_DIRIO.BUFADR=ADDR(END_DIRIO); JPI_PAGEFLTS.BUFADR=ADDR(END_PAGEFLTS); IF SYS$GETJPIW(,,,JPI_LIST,,,)^=SS$_NORMAL /* (6) */ THEN PUT SKIP LIST ('Error from SYS$GETJPI'); CLOCK_TIME=FOR$SECNDS(T0); CPUSECONDS=(END_CPUTIM-CPUTIM)/100E0; BUFIO=END_BUFIO-BUFIO; /* (8) */ DIRIO=END_DIRIO-DIRIO; PAGEFLTS=END_PAGEFLTS-PAGEFLTS; PUT SKIP EDIT ('Times in seconds','Page','Direct','Buffered') (A(20),A(10),A(10),A(10)); PUT SKIP EDIT ('CPU','Elapsed','Faults','I/O','I/O') (A(10),A(10),A(10),A(10),A(10)); PUT SKIP EDIT (CPUSECONDS,CLOCK_TIME,PAGEFLTS,DIRIO,BUFIO) (F(7,1),COLUMN(11),F(9,1),COLUMN(21),F(7,0),COLUMN(31), F(7,0),COLUMN(41),F(7,0)); /* * After calling TIMRE, fall through here to re-initialize */ TIMRB: ENTRY; /* (7) */ T0=FOR$SECNDS(0E0); JPI_BUFIO.BUFADR=ADDR(BUFIO); /* (5) */ JPI_CPUTIM.BUFADR=ADDR(CPUTIM); JPI_DIRIO.BUFADR=ADDR(DIRIO); JPI_PAGEFLTS.BUFADR=ADDR(PAGEFLTS); IF SYS$GETJPIW(,,,JPI_LIST,,,)^=SS$_NORMAL THEN PUT SKIP LIST ('Error from SYS$GETJPI'); RETURN; END TIME;