C *** TIMER.CMN *** C COMMON DECLARATIONS FOR TIMER PROFILING ROUTINES: COMMON /TIMCOM/ LUN, NSUBS, NSTAK COMMON /TIMCM0/ CPUTIM COMMON /TIMCM1/ NAMES COMMON /TIMCM2/ ISTAK COMMON /TIMCM3/ TSTAK C C ARRAY DECLARATIONS: C SUBSTITUTE THE NUMBER OF ROUTINES YOU WANT TO PROFILE FOR ### C SUBSTITUTE THE DEPTH OF NESTED ROUTINES BEING TIMED FOR @@@ C INTEGER LUN, NSUBS, NSTAK INTEGER ISTAK(@@@) REAL*4 CPUTIM(3,###), TSTAK(@@@) REAL*8 NAMES(###) C C INITIALIZE THE PARAMETERS AND ROUTINE NAMES: C DATA NSUBS/###/, NSTAK/@@@/, LUN/5/ DATA NAMES /...../ C C THE PROFILE INFORMATION IS WRITTEN TO THE LUN SPECIFIED BY THE C VARIABLE 'LUN'....THIS MAY BE CHANGED TO ANY LUN ASSOCIATED WITH C AN OPEN, FORMATTED, SEQUENTIAL FILE.....IF IT IS ZERO OR NEGATIVE, C THE PROFILE WILL NOT BE GENERATED. THE DEFAULT LUN 5 IS NORMALLY C ASSOCIATED WITH THE TASK'S TI: C C TO INITIALIZE THE ROUTINE NAMES, USE THE FOLLOWING SYNTAX: C REAL*8 NAMES(3) C DATA NSUBS/3/ C DATA NAMES /'FIRST','SECOND','THIRD'/ C C THE TIMER ROUTINES ARE: C CALL TIMEON - START TIMER(S) C CALL TIMEOF - STOP TIMER(S) AND OPTIONALLY PRINT STATISTICS C CALL TIMCAL(NSUB) - START SUBROUTINE TIMER AND PRINT ENTRY MESSAGE C CALL TIMRET(NSUB) - STOP SUBROUTINE TIMER AND PRINT EXIT MESSAGE C CALL TIMCL(NSUB) - START SUBROUTINE TIMER (NO MSG) C CALL TIMRT(NSUB) - STOP SUBROUTINE TIMER (NO MSG) C C WHERE: C NSUB = SUBROUTINE NUMBER (MAIN IS ALWAYS 1) C NSUB MUST BE > 1 C C *** END *** TIMER.CMN *** C