38 lines
1.1 KiB
Fortran
38 lines
1.1 KiB
Fortran
PROGRAM EX_TSORT
|
|
IMPLICIT NONE
|
|
INTEGER NL,ND,NC,NO,IDEP,IORD,IPOS,ICODE,I,J,IL,IR
|
|
PARAMETER(NL=15,ND=44,NC=69)
|
|
CHARACTER*(20) LABEL
|
|
DIMENSION IDEP(ND,2),LABEL(NL),IORD(NL),IPOS(NL),ICODE(NC)
|
|
DATA LABEL/'DES_SYSTEM_LIB','DW01','DW02','DW03','DW04','DW05',
|
|
1 'DW06','DW07','DWARE','GTECH','RAMLIB','STD_CELL_LIB','SYNOPSYS',
|
|
2 'STD','IEEE'/
|
|
DATA ICODE/1,14,13,12,1,3,2,11,15,0,2,15,2,9,10,0,3,15,3,9,0,4,14,
|
|
213,9,4,3,2,15,10,0,5,5,15,2,9,10,0,6,6,15,9,0,7,7,15,9,0,8,15,9,0,
|
|
39,15,9,0,10,15,10,0,11,14,15,0,12,15,12,0,0/
|
|
|
|
C DECODE DEPENDENCIES AND BUILD IDEP ARRAY
|
|
I=0
|
|
J=0
|
|
10 I=I+1
|
|
IL=ICODE(I)
|
|
IF(IL.EQ.0) GO TO 30
|
|
20 I=I+1
|
|
IR=ICODE(I)
|
|
IF(IR.EQ.0) GO TO 10
|
|
J=J+1
|
|
IDEP(J,1)=IL
|
|
IDEP(J,2)=IR
|
|
GO TO 20
|
|
30 CONTINUE
|
|
|
|
C SORT LIBRARIES ACCORDING TO DEPENDENCIES (TOPOLOGICAL SORT)
|
|
CALL TSORT(NL,ND,IDEP,IORD,IPOS,NO)
|
|
|
|
PRINT*,'COMPILE ORDER'
|
|
DO 40 I=1,NO
|
|
40 PRINT*,LABEL(IORD(I))
|
|
PRINT*,'UNORDERED LIBRARIES'
|
|
DO 50 I=NO+1,NL
|
|
50 PRINT*,LABEL(IORD(I))
|
|
END
|