neetcdf 3.4 を Linux + Fujistu FRT でコンパイルするためのパッチ
2000-06-14 豊田英司

利用方

	1. FC=frt CC=fcc CXX=FCC ./configure する。
	2. いっぺん make  する。fortran ディレクトリで死ぬ。
		(これは ncx.c を作成するために必要)
	3. 此のパッチをあてる。
	4. もういっかい make する



*** src/libsrc/ncx.c.original	Wed Jun 14 12:37:42 2000
--- src/libsrc/ncx.c	Fri Jun  2 10:56:39 2000
***************
*** 1125,1133 ****
  {
  	float xx;
  	get_ix_float(xp, &xx);
! 	*ip = (schar) xx;
! 	if(xx > SCHAR_MAX || xx < SCHAR_MIN)
  		return NC_ERANGE;
  	return ENOERR;
  }
  
--- 1125,1133 ----
  {
  	float xx;
  	get_ix_float(xp, &xx);
! 	if(xx > (float)SCHAR_MAX || xx < (float)SCHAR_MIN)
  		return NC_ERANGE;
+ 	*ip = (schar) xx;
  	return ENOERR;
  }
  
***************
*** 1136,1144 ****
  {
  	float xx;
  	get_ix_float(xp, &xx);
! 	*ip = (uchar) xx;
! 	if(xx > UCHAR_MAX || xx < 0)
  		return NC_ERANGE;
  	return ENOERR;
  }
  
--- 1136,1144 ----
  {
  	float xx;
  	get_ix_float(xp, &xx);
! 	if(xx > (float)UCHAR_MAX || xx < 0.0)
  		return NC_ERANGE;
+ 	*ip = (uchar) xx;
  	return ENOERR;
  }
  
***************
*** 1147,1155 ****
  {
  	float xx;
  	get_ix_float(xp, &xx);
! 	*ip = (short) xx;
! 	if(xx > SHORT_MAX || xx < SHORT_MIN)
  		return NC_ERANGE;
  	return ENOERR;
  }
  
--- 1147,1155 ----
  {
  	float xx;
  	get_ix_float(xp, &xx);
! 	if(xx > (float)SHORT_MAX || xx < (float)SHORT_MIN)
  		return NC_ERANGE;
+ 	*ip = (short) xx;
  	return ENOERR;
  }
  
***************
*** 1158,1166 ****
  {
  	float xx;
  	get_ix_float(xp, &xx);
- 	*ip = (int) xx;
  	if(xx > (double)INT_MAX || xx < (double)INT_MIN)
  		return NC_ERANGE;
  	return ENOERR;
  }
  
--- 1158,1166 ----
  {
  	float xx;
  	get_ix_float(xp, &xx);
  	if(xx > (double)INT_MAX || xx < (double)INT_MIN)
  		return NC_ERANGE;
+ 	*ip = (int) xx;
  	return ENOERR;
  }
  
***************
*** 1169,1177 ****
  {
  	float xx;
  	get_ix_float(xp, &xx);
- 	*ip = (long) xx;
  	if(xx > LONG_MAX || xx < LONG_MIN)
  		return NC_ERANGE;
  	return ENOERR;
  }
  
--- 1169,1177 ----
  {
  	float xx;
  	get_ix_float(xp, &xx);
  	if(xx > LONG_MAX || xx < LONG_MIN)
  		return NC_ERANGE;
+ 	*ip = (long) xx;
  	return ENOERR;
  }
  
***************
*** 1547,1555 ****
  {
  	double xx;
  	get_ix_double(xp, &xx);
! 	*ip = (schar) xx;
! 	if(xx > SCHAR_MAX || xx < SCHAR_MIN)
  		return NC_ERANGE;
  	return ENOERR;
  }
  
--- 1547,1555 ----
  {
  	double xx;
  	get_ix_double(xp, &xx);
! 	if(xx > (double)SCHAR_MAX || xx < (double)SCHAR_MIN)
  		return NC_ERANGE;
+ 	*ip = (schar) xx;
  	return ENOERR;
  }
  
***************
*** 1569,1577 ****
  {
  	double xx;
  	get_ix_double(xp, &xx);
! 	*ip = (short) xx;
! 	if(xx > SHORT_MAX || xx < SHORT_MIN)
  		return NC_ERANGE;
  	return ENOERR;
  }
  
--- 1569,1577 ----
  {
  	double xx;
  	get_ix_double(xp, &xx);
! 	if(xx > (double)SHORT_MAX || xx < (double)SHORT_MIN)
  		return NC_ERANGE;
+ 	*ip = (short) xx;
  	return ENOERR;
  }
  
***************
*** 1580,1588 ****
  {
  	double xx;
  	get_ix_double(xp, &xx);
! 	*ip = (int) xx;
! 	if(xx > INT_MAX || xx < INT_MIN)
  		return NC_ERANGE;
  	return ENOERR;
  }
  
--- 1580,1588 ----
  {
  	double xx;
  	get_ix_double(xp, &xx);
! 	if(xx > (double)INT_MAX || xx < (double)INT_MIN)
  		return NC_ERANGE;
+ 	*ip = (int) xx;
  	return ENOERR;
  }
  
***************
*** 1591,1599 ****
  {
  	double xx;
  	get_ix_double(xp, &xx);
! 	*ip = (long) xx;
! 	if(xx > LONG_MAX || xx < LONG_MIN)
  		return NC_ERANGE;
  	return ENOERR;
  }
  
--- 1591,1599 ----
  {
  	double xx;
  	get_ix_double(xp, &xx);
! 	if(xx > (double)LONG_MAX || xx < (double)LONG_MIN)
  		return NC_ERANGE;
+ 	*ip = (long) xx;
  	return ENOERR;
  }
  
*** src/fortran/cfortran.h.initial	Fri Jun  2 09:36:30 2000
--- src/fortran/cfortran.h	Fri Jun  2 09:40:02 2000
***************
*** 122,127 ****
--- 122,130 ----
  #if   defined(VISUAL_CPLUSPLUS)
  #define     PowerStationFortran
  #endif
+ #if defined(linux)
+ #define		sunFortran
+ #endif
  #endif /* ...Fortran */
  #endif /* ...Fortran */