CTRACE PRINT TRACE C C S. M. LAZARUS C FORD AEROSPACE AND COMMUNICATIONS CORPORATION C 3939 FABIAN WAY C PALO ALTO, CALIFORNIA 94305 C (415) 494-7400 x6291 C C Calling Sequence: C C CALL TRACE(NAME,UNIT,NUMBER) C C NAME = OUTPUT FILE NAME C UNIT = LUN TO WRITE C NUMBER = NUMBER OF ITEMS PER LINE TO WRITE C SUBROUTINE TRACE ( NAME, UNIT, NMBER ) C CDEFN RATLIB STANDARD DEFINITIONS C C THESE DEFINITIONS ARE CONSISTANT WITH THOSE OF THE RATFOR LIBRARY C (RATLIB) AND THE SYKES RATFOR PREPROCESSOR C C C CCTRACE DECLARATIONS FOR TRACE ROUTINES C INTEGER IUNIT, FLAG, COUNT, NUMBER, LINE LOGICAL * 1 BUF ( 132 ), NAMOUT ( 40 ) COMMON / TRACEC / FLAG, IUNIT, BUF, COUNT, NUMBER, LINE, NAMOUT INTEGER UNIT, I, NMBER LOGICAL * 1 NAME ( 40 ) EXTERNAL TRACES C CALL USEREX ( TRACES ) COUNT = 0 LINE = 1 IUNIT = UNIT NUMBER = NMBER DO 20000 I = 1, 40 NAMOUT ( I ) = NAME ( I ) 20000 CONTINUE 20001 CONTINUE OPEN ( UNIT = IUNIT, NAME = NAME, ERR = 10, CARRIAGECONTROL = $'LIST' ) FLAG = 1 RETURN 10 WRITE ( 5, 20 ) NAME 20 FORMAT ( 17H CAN'T OPEN FILE , 20A1 ) RETURN END C CTRACEP Print routine for trace package C C Called to append a new routine name to the list C C Calling sequence: C C CALL TRACEP(RNAME) C C RNAME = REAL RADIX 50 ROUTINE NAME C SUBROUTINE TRACEP ( RNAME ) C CCTRACE DECLARATIONS FOR TRACE ROUTINES C INTEGER IUNIT, FLAG, COUNT, NUMBER, LINE LOGICAL * 1 BUF ( 132 ), NAMOUT ( 40 ) COMMON / TRACEC / FLAG, IUNIT, BUF, COUNT, NUMBER, LINE, NAMOUT C REAL RNAME INTEGER COLUMN, I C LOGICAL * 1 ANAME ( 6 ) C CALL R50ASC ( 6, RNAME, ANAME ) COLUMN = COUNT * 7 + 1 I = 1 20002 IF (.NOT.( I .LE. 6 .AND. ANAME ( I ) .NE. 0)) GOTO 20004 BUF ( COLUMN + I - 1 ) = ANAME ( I ) 20003 I = I + 1 GOTO 20002 20004 CONTINUE 20005 IF (.NOT.( I .LE. 7)) GOTO 20007 BUF ( COLUMN + I - 1 ) = 32 20006 I = I + 1 GOTO 20005 20007 CONTINUE COUNT = COUNT + 1 IF (.NOT.( COUNT .GE. NUMBER )) GOTO 20008 WRITE ( IUNIT, 10 ) LINE, ( BUF ( I ), I = 1, COUNT * 7 ) 10 FORMAT ( I6, 1X, 125A1 ) COUNT = 0 LINE = LINE + 1 20008 CONTINUE RETURN END C CTRACES Exit routine for trace package C C Flushes buffer and closes the file C SUBROUTINE TRACES C CCTRACE DECLARATIONS FOR TRACE ROUTINES C INTEGER IUNIT, FLAG, COUNT, NUMBER, LINE LOGICAL * 1 BUF ( 132 ), NAMOUT ( 40 ) COMMON / TRACEC / FLAG, IUNIT, BUF, COUNT, NUMBER, LINE, NAMOUT C IF (.NOT.( COUNT .GT. 0 )) GOTO 20010 OPEN ( UNIT = IUNIT, NAME = NAMOUT, ERR = 20, CARRIAGECONTROL = $'LIST', TYPE = 'OLD', ACCESS = 'APPEND' ) 20010 CONTINUE WRITE ( IUNIT, 10 ) LINE, ( BUF ( I ), I = 1, 7 * COUNT ) 10 FORMAT ( I6, 1X, 125A1 ) CLOSE ( UNIT = IUNIT ) FLAG = 0 GO TO 30 20 WRITE ( 5, 25 ) NAME 25 FORMAT ( 17H CAN'T OPEN FILE , 20A1 ) 30 RETURN END