#TRACE PRINT TRACE # # S. M. LAZARUS # FORD AEROSPACE AND COMMUNICATIONS CORPORATION # 3939 FABIAN WAY # PALO ALTO, CALIFORNIA 94305 # (415) 494-7400 x6291 # # Calling Sequence: # # CALL TRACE(NAME,UNIT,NUMBER) # # NAME = OUTPUT FILE NAME # UNIT = LUN TO WRITE # NUMBER = NUMBER OF ITEMS PER LINE TO WRITE # SUBROUTINE TRACE(NAME,UNIT,NMBER) # INCLUDE DEFN/NL # INCLUDE CTRACE INTEGER UNIT,I,NMBER CHARACTER NAME(40) # FILE NAME EXTERNAL TRACES # CALL USEREX(TRACES) # SET USER EXIT COUNT = 0 # SET FOR FIRST ITEM LINE = 1 # SET FOR 1ST LINE IUNIT = UNIT NUMBER = NMBER DO I = 1,40 # COPY FILE NAME FOR TRACES NAMOUT(I)=NAME(I) OPEN ( UNIT = IUNIT,NAME=NAME,ERR=10,CARRIAGECONTROL='LIST') FLAG = 1 # SET INITIALIZATION FLAG RETURN 10 WRITE(STDLUNTI,20)NAME 20 FORMAT(" CAN'T OPEN FILE ",20A1) RETURN END # #TRACEP Print routine for trace package # # Called to append a new routine name to the list # # Calling sequence: # # CALL TRACEP(RNAME) # # RNAME = REAL RADIX 50 ROUTINE NAME # SUBROUTINE TRACEP(RNAME) # INCLUDE CTRACE # REAL RNAME INTEGER COLUMN, # COLUMN NUMBER I # CHARACTER ANAME(6) # ASCII ROUTINE NAME # CALL R50ASC(6,RNAME,ANAME) # GET NAME CONVERTED COLUMN = COUNT*7 + 1 # COLUMN WITH BUF FOR (I=1; I <= 6 & ANAME(I)~=EOS; I = I+1) # TRANSFER NAME TO BUF BUF(COLUMN + I - 1) = ANAME(I) FOR ( ; I <=7 ; I = I+1) # APPEND THE NECESSARY BLANKS BUF(COLUMN+I-1) = BLANK COUNT = COUNT + 1 IF ( COUNT >= NUMBER){ # PRINT RESULT WHEN BUFFER IS FULL WRITE (IUNIT,10)LINE,( BUF(I) , I=1,COUNT*7) 10 FORMAT(I6,1X,125A1) COUNT = 0 LINE = LINE + 1 } RETURN END # #TRACES Exit routine for trace package # # Flushes buffer and closes the file # SUBROUTINE TRACES # INCLUDE CTRACE # IF ( COUNT > 0) # DUMP NON EMPTY BUFFER OPEN ( UNIT = IUNIT,NAME=NAMOUT,ERR=20, # FILE MUST BE REOPENED CARRIAGECONTROL='LIST',TYPE='OLD',ACCESS='APPEND') WRITE(IUNIT,10)LINE,(BUF(I), I = 1,7*COUNT) 10 FORMAT(I6,1X,125A1) CLOSE ( UNIT=IUNIT) FLAG = 0 # UNSET INITIALIZATION FLAG GO TO 30 20 WRITE(STDLUNTI,25)NAME 25 FORMAT(" CAN'T OPEN FILE ",20A1) 30 RETURN END