diff -uNr topdraw-1.4c.ORIG/ugs/Imakefile.def topdraw-1.4c/ugs/Imakefile.def --- topdraw-1.4c.ORIG/ugs/Imakefile.def 1998-03-09 16:47:19.000000000 +0900 +++ topdraw-1.4c/ugs/Imakefile.def 2005-11-15 17:09:27.000000000 +0900 @@ -18,9 +18,13 @@ #else ARCH = __LINUX_ELF #endif -FC = fort77 -FFLAGS = -O2 -Nq300 -\!bs -GFLAGS = -O2 -fno-backslash +#if __GNUC__ < 4 +FC = g77 +FFLAGS = -O0 -fno-automatic -finit-local-zero -fno-backslash -Wno-globals +#else +FC = gfortran +FFLAGS = -O0 -fno-automatic -fno-backslash -I. +#endif CFLAGS = -O2 AR = ar ARFLAGS = rvs @@ -61,6 +65,21 @@ BITLIB = src/bit #endif +#if defined(DarwinArchitecture) +ARCH = __APPLE__ +#if __GNUC__ < 4 +FC = g77 +FFLAGS = -O0 -fno-automatic -finit-local-zero -fno-backslash -Wno-globals +#else +FC = gfortran +FFLAGS = -O0 -fno-automatic -fno-backslash -I. +#endif +CFLAGS = -O0 -I/usr/X11R6/include +AR = ar +ARFLAGS = rv +RANCMD = $(RANLIB) $(LIB) +#endif + /*--------------------- General Rules ------------------------*/ .f.o:;\ diff -uNr topdraw-1.4c.ORIG/ugs/src.2.10d/Imakefile topdraw-1.4c/ugs/src.2.10d/Imakefile --- topdraw-1.4c.ORIG/ugs/src.2.10d/Imakefile 1996-06-26 23:22:42.000000000 +0900 +++ topdraw-1.4c/ugs/src.2.10d/Imakefile 2005-11-15 17:00:22.000000000 +0900 @@ -112,24 +112,33 @@ ugxsym.o \ ran.o +#if __GNUC__ >= 4 +OBJ += cugb001.o +#endif + AllTarget($(LIB)) $(LIB):: $(OBJ) ls -lF $(LIB) +#if __GNUC__ >= 4 +ugz005.o:;\ + $(CC) $(CFLAGS) -c $*.c ;\ + $(AR) $(ARFLAGS) $(LIB) $*.o +#else #if defined(LinuxAoutArchitecture) || defined(LinuxElfArchitecture) #if defined(LinuxElfArchitecture) ugnucl.o ugdupl.o ugsimp.o ugclos.o ugslct.o ugz005.o:;\ - g77 $(GFLAGS) -c $*.f ;\ + $(FC) $(GFLAGS) -c $*.f ;\ $(AR) $(ARFLAGS) $(LIB) $*.o #else ugclos.o ugslct.o ugz005.o:;\ - g77 $(GFLAGS) -c $*.f ;\ + $(FC) $(GFLAGS) -c $*.f ;\ $(AR) $(ARFLAGS) $(LIB) $*.o #endif ugopen.o:;\ - g77 $(GFLAGS) -c -D$(ARCH) $*.F ;\ + $(FC) $(GFLAGS) -c -D$(ARCH) $*.F ;\ $(AR) $(ARFLAGS) $(LIB) $*.o #endif - +#endif diff -uNr topdraw-1.4c.ORIG/ugs/src.2.10d/cugb001.c topdraw-1.4c/ugs/src.2.10d/cugb001.c --- topdraw-1.4c.ORIG/ugs/src.2.10d/cugb001.c 2005-11-15 16:36:41.000000000 +0900 +++ topdraw-1.4c/ugs/src.2.10d/cugb001.c 2005-11-15 16:36:41.000000000 +0900 @@ -0,0 +1,14 @@ +void cugb001vv_(int *ary1p, int *ind1, int *ary2p, int *ind2, int *leng) +{ + ugb001_(*ary1p, ind1, *ary2p, ind2, leng); +} + +void cugb001va_(int *ary1p, int *ind1, int *ary2, int *ind2, int *leng) +{ + ugb001_(*ary1p, ind1, ary2, ind2, leng); +} + +void cugb001av_(int *ary1, int *ind1, int *ary2p, int *ind2, int *leng) +{ + ugb001_(ary1, ind1, *ary2p, ind2, leng); +} diff -uNr topdraw-1.4c.ORIG/ugs/src.2.10d/drivers/xwindow.f topdraw-1.4c/ugs/src.2.10d/drivers/xwindow.f --- topdraw-1.4c.ORIG/ugs/src.2.10d/drivers/xwindow.f 1997-09-20 20:42:39.000000000 +0900 +++ topdraw-1.4c/ugs/src.2.10d/drivers/xwindow.f 2005-11-15 16:36:41.000000000 +0900 @@ -551,7 +551,10 @@ INCLUDE 'UGSYSTEM:UGDDXXWI.FOR' C INTEGER ACLR,ALTP - BYTE DASH(2),DOTS(2),DDSH(4) +c>>> gfortran +c BYTE DASH(2),DOTS(2),DDSH(4) + integer*1 DASH(2),DOTS(2),DDSH(4) +c>>> C DATA DASH/13,13/ DATA DOTS/1,9/ diff -uNr topdraw-1.4c.ORIG/ugs/src.2.10d/ug3trn.f topdraw-1.4c/ugs/src.2.10d/ug3trn.f --- topdraw-1.4c.ORIG/ugs/src.2.10d/ug3trn.f 1995-09-15 23:46:56.000000000 +0900 +++ topdraw-1.4c/ugs/src.2.10d/ug3trn.f 2005-11-15 16:36:41.000000000 +0900 @@ -75,14 +75,46 @@ ELSE IF (DDADF.NE.3) THEN ERFG=1 - GO TO 101 +c>>>>> gfortran +c GO TO 101 + OVOL(1,1)=DDA3O(1,1) + OVOL(2,1)=DDA3O(2,1) + OVOL(3,1)=DDA3O(3,1) + OVOL(1,2)=DDA3O(1,2) + OVOL(2,2)=DDA3O(2,2) + OVOL(3,2)=DDA3O(3,2) + EYPT(1)=DDA3E(1) + EYPT(2)=DDA3E(2) + EYPT(3)=DDA3E(3) + UDIR(1)=DDA3U(1) + UDIR(2)=DDA3U(2) + UDIR(3)=DDA3U(3) + PFLG=DDA3N + IF (ERFG.NE.0) GO TO 306 +c>>>>> END IF DDIN(1)=15 DDIN(2)=2 CALL UGZ006(DDAAC,0,0,DDIN,' ',DDEX) IF (DDEX(1).NE.0) THEN ERFG=1 - GO TO 101 +c>>>>> gfortran +c GO TO 101 + OVOL(1,1)=DDA3O(1,1) + OVOL(2,1)=DDA3O(2,1) + OVOL(3,1)=DDA3O(3,1) + OVOL(1,2)=DDA3O(1,2) + OVOL(2,2)=DDA3O(2,2) + OVOL(3,2)=DDA3O(3,2) + EYPT(1)=DDA3E(1) + EYPT(2)=DDA3E(2) + EYPT(3)=DDA3E(3) + UDIR(1)=DDA3U(1) + UDIR(2)=DDA3U(2) + UDIR(3)=DDA3U(3) + PFLG=DDA3N + IF (ERFG.NE.0) GO TO 306 +c>>>>> END IF CALL UGB009(DDAXO(1,1),DDAXO(2,1),DDAXO(3,1), X OVOL(1,1), OVOL(2,1), OVOL(3,1)) diff -uNr topdraw-1.4c.ORIG/ugs/src.2.10d/ugclos.f topdraw-1.4c/ugs/src.2.10d/ugclos.f --- topdraw-1.4c.ORIG/ugs/src.2.10d/ugclos.f 1995-09-15 23:46:57.000000000 +0900 +++ topdraw-1.4c/ugs/src.2.10d/ugclos.f 2005-11-15 16:36:41.000000000 +0900 @@ -88,8 +88,12 @@ ELSE DO 203 INT1=1,MCAZ1 IF (MCAOI(INT1).NE.0) THEN - CALL UGB001(DDARY,1,%VAL(MCAOP(INT1)),1,DDALG) - CALL UGB001(%VAL(DDACX),1,%VAL(DDAPX),1,DDALX) +c>>> gfortran +c CALL UGB001(DDARY,1,%VAL(MCAOP(INT1)),1,DDALG) +c CALL UGB001(%VAL(DDACX),1,%VAL(DDAPX),1,DDALX) + CALL cUGB001av(DDARY,1,MCAOP(INT1),1,DDALG) + CALL cUGB001vv(DDACX,1,DDAPX,1,DDALX) +c>>> GO TO 101 END IF 203 CONTINUE diff -uNr topdraw-1.4c.ORIG/ugs/src.2.10d/ugdsab.f topdraw-1.4c/ugs/src.2.10d/ugdsab.f --- topdraw-1.4c.ORIG/ugs/src.2.10d/ugdsab.f 1995-09-15 23:46:57.000000000 +0900 +++ topdraw-1.4c/ugs/src.2.10d/ugdsab.f 2005-11-15 16:36:41.000000000 +0900 @@ -57,7 +57,14 @@ C CHECK FOR DISABLE REQUESTS. DO 202 INT1=1,DDAZ1 IF (EXIC(INT1).NE.0) THEN - IF (DDAIC(INT1).EQ.0) GO TO 403 +c>>> gfortran +c IF (DDAIC(INT1).EQ.0) GO TO 403 + IF (DDAIC(INT1).EQ.0) then + CALL UGRERR(2,'UGDSAB ',13) + EFLG=1 + GO TO 201 + endif +c>>> IF (DDABC(INT1).NE.0) THEN DDABC(INT1)=0 DDIN(1)=12 @@ -82,8 +89,10 @@ GO TO 301 402 CALL UGRERR(2,'UGDSAB ',13) GO TO 301 - 403 CALL UGRERR(2,'UGDSAB ',13) - EFLG=1 - GO TO 201 +c>>> gfortran +c 403 CALL UGRERR(2,'UGDSAB ',13) +c EFLG=1 +c GO TO 201 +c>>> C END diff -uNr topdraw-1.4c.ORIG/ugs/src.2.10d/ugdupl.f topdraw-1.4c/ugs/src.2.10d/ugdupl.f --- topdraw-1.4c.ORIG/ugs/src.2.10d/ugdupl.f 1996-02-23 16:42:59.000000000 +0900 +++ topdraw-1.4c/ugs/src.2.10d/ugdupl.f 2005-11-15 16:36:41.000000000 +0900 @@ -34,30 +34,30 @@ C CHARACTER SPACING. INTEGER*2 CHRCS C CHARACTER PAIR TABLE. - INTEGER*2 CHRCT( 904) - INTEGER*2 CHC001(80) + CHARACTER*2 CHRCT( 904) + CHARACTER*2 CHC001(80) EQUIVALENCE (CHC001(1),CHRCT( 1)) - INTEGER*2 CHC002(80) + CHARACTER*2 CHC002(80) EQUIVALENCE (CHC002(1),CHRCT( 81)) - INTEGER*2 CHC003(80) + CHARACTER*2 CHC003(80) EQUIVALENCE (CHC003(1),CHRCT( 161)) - INTEGER*2 CHC004(80) + CHARACTER*2 CHC004(80) EQUIVALENCE (CHC004(1),CHRCT( 241)) - INTEGER*2 CHC005(80) + CHARACTER*2 CHC005(80) EQUIVALENCE (CHC005(1),CHRCT( 321)) - INTEGER*2 CHC006(80) + CHARACTER*2 CHC006(80) EQUIVALENCE (CHC006(1),CHRCT( 401)) - INTEGER*2 CHC007(80) + CHARACTER*2 CHC007(80) EQUIVALENCE (CHC007(1),CHRCT( 481)) - INTEGER*2 CHC008(80) + CHARACTER*2 CHC008(80) EQUIVALENCE (CHC008(1),CHRCT( 561)) - INTEGER*2 CHC009(80) + CHARACTER*2 CHC009(80) EQUIVALENCE (CHC009(1),CHRCT( 641)) - INTEGER*2 CHC010(80) + CHARACTER*2 CHC010(80) EQUIVALENCE (CHC010(1),CHRCT( 721)) - INTEGER*2 CHC011(80) + CHARACTER*2 CHC011(80) EQUIVALENCE (CHC011(1),CHRCT( 801)) - INTEGER*2 CHC012(24) + CHARACTER*2 CHC012(24) EQUIVALENCE (CHC012(1),CHRCT( 881)) C CHARACTER OFFSET TABLE. INTEGER*2 CHROT( 904) diff -uNr topdraw-1.4c.ORIG/ugs/src.2.10d/ugenab.f topdraw-1.4c/ugs/src.2.10d/ugenab.f --- topdraw-1.4c.ORIG/ugs/src.2.10d/ugenab.f 1995-09-15 23:46:57.000000000 +0900 +++ topdraw-1.4c/ugs/src.2.10d/ugenab.f 2005-11-15 16:36:41.000000000 +0900 @@ -57,7 +57,14 @@ C CHECK FOR ENABLE REQUESTS. DO 202 INT1=1,DDAZ1 IF (EXIC(INT1).NE.0) THEN - IF (DDAIC(INT1).EQ.0) GO TO 403 +c>>> gfortran +c IF (DDAIC(INT1).EQ.0) GO TO 403 + IF (DDAIC(INT1).EQ.0) then + CALL UGRERR(2,'UGENAB ',13) + EFLG=1 + GO TO 201 + endif +c>>> IF (DDABC(INT1).EQ.0) THEN DDABC(INT1)=DDAIC(INT1) DDIN(1)=12 @@ -82,8 +89,10 @@ GO TO 301 402 CALL UGRERR(2,'UGENAB ',13) GO TO 301 - 403 CALL UGRERR(2,'UGENAB ',13) - EFLG=1 - GO TO 201 +c>>> gfortran +c 403 CALL UGRERR(2,'UGENAB ',13) +c EFLG=1 +c GO TO 201 +c>>> C END diff -uNr topdraw-1.4c.ORIG/ugs/src.2.10d/ugopen.F topdraw-1.4c/ugs/src.2.10d/ugopen.F --- topdraw-1.4c.ORIG/ugs/src.2.10d/ugopen.F 1996-05-19 17:06:53.000000000 +0900 +++ topdraw-1.4c/ugs/src.2.10d/ugopen.F 2005-11-15 16:36:41.000000000 +0900 @@ -161,12 +161,20 @@ C IF A DEVICE IS ACTIVE, MAKE IT INACTIVE. IF (DDAAI.NE.0) THEN IF (DDAPX.EQ.0) CALL UGZ003(0,DDALX,DDAPX) +#if __GNUC__ < 4 CALL UGB001(%VAL(DDAPX),1,%VAL(DDACX),1,DDALX) +#else + CALL cUGB001vv(DDAPX,1,DDACX,1,DDALX) +#endif IF (DDAPA.EQ.0) THEN CALL UGZ003(0,DDALG,DDAPA) MCAOP(DDAAI)=DDAPA END IF +#if __GNUC__ < 4 CALL UGB001(%VAL(DDAPA),1,DDARY,1,DDALG) +#else + CALL cUGB001va(DDAPA,1,DDARY,1,DDALG) +#endif DDAAI=0 END IF C diff -uNr topdraw-1.4c.ORIG/ugs/src.2.10d/ugslct.f topdraw-1.4c/ugs/src.2.10d/ugslct.f --- topdraw-1.4c.ORIG/ugs/src.2.10d/ugslct.f 1995-09-15 23:46:57.000000000 +0900 +++ topdraw-1.4c/ugs/src.2.10d/ugslct.f 2005-11-15 16:36:41.000000000 +0900 @@ -47,18 +47,28 @@ C IF A DEVICE IS ACTIVE, MAKE IT INACTIVE. 201 IF (DDAAI.NE.0) THEN IF (DDAPX.EQ.0) CALL UGZ003(0,DDALX,DDAPX) - CALL UGB001(%VAL(DDAPX),1,%VAL(DDACX),1,DDALX) +c>>> gfortran +c CALL UGB001(%VAL(DDAPX),1,%VAL(DDACX),1,DDALX) + CALL cUGB001vv(DDAPX,1,DDACX,1,DDALX) +c>>> IF (DDAPA.EQ.0) THEN CALL UGZ003(0,DDALG,DDAPA) MCAOP(DDAAI)=DDAPA END IF - CALL UGB001(%VAL(DDAPA),1,DDARY,1,DDALG) +c>>> gfortran +c CALL UGB001(%VAL(DDAPA),1,DDARY,1,DDALG) + CALL cUGB001va(DDAPA,1,DDARY,1,DDALG) +c>>> DDAAI=0 END IF C C MAKE THE SELECTED DEVICE ACTIVE. - CALL UGB001(DDARY,1,%VAL(MCAOP(INDX)),1,DDALG) - CALL UGB001(%VAL(DDACX),1,%VAL(DDAPX),1,DDALX) +c>>> gfortran +c CALL UGB001(DDARY,1,%VAL(MCAOP(INDX)),1,DDALG) +c CALL UGB001(%VAL(DDACX),1,%VAL(DDAPX),1,DDALX) + CALL cUGB001av(DDARY,1,MCAOP(INDX),1,DDALG) + CALL cUGB001vv(DDACX,1,DDAPX,1,DDALX) +c>>> C C RESET ERROR INDICATORS AND RETURN TO CALLER. 301 UGELV=0 diff -uNr topdraw-1.4c.ORIG/ugs/src.2.10d/ugz005.c topdraw-1.4c/ugs/src.2.10d/ugz005.c --- topdraw-1.4c.ORIG/ugs/src.2.10d/ugz005.c 2005-11-15 16:36:41.000000000 +0900 +++ topdraw-1.4c/ugs/src.2.10d/ugz005.c 2005-11-15 16:36:41.000000000 +0900 @@ -0,0 +1,4 @@ +void ugz005_(float *data, int *dadr) +{ + dadr = (int)data; +}