37 #include "nfconfig.inc"
38 #include "ncfortran.h"
46 #define NCOPTS FINT2CINT
47 #define PNCOPTS PCINT2FINT
48 #define CLOBMODE FINT2CINT
49 #define PRCODE PCINT2FINT
50 #define RWMODE FINT2CINT
51 #define DIMLEN FINT2CINT
52 #define PDIMLEN PCINT2FINT
53 #define LENSTR FINT2CINT
54 #define ATTLEN FINT2CINT
55 #define PATTLEN PCINT2FINT
56 #define FILLMODE FINT2CINT
58 #define V2IMAP_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z)
59 #define V2IMAPVVVVVVV_cfTYPE NF_INTEGER
60 #define V2IMAP_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,V2IMAP,A,B,C,D,E)
61 #define V2IMAP_cfH(S,U,B)
62 #define V2IMAP_cfQ(B) ptrdiff_t B[MAX_NC_DIMS];
63 #define V2IMAP_cfT(M,I,A,B,D) f2c_v2imap(*fncid, *fvarid-1, A, B)
64 #define V2IMAP_cfR(A,B,D)
71 f2c_v2imap(
int ncid,
int varid,
const int* fimap, ptrdiff_t* cimap)
76 if (nc_inq_vartype(ncid, varid, &datatype) ||
77 nc_inq_varndims(ncid, varid, &rank) || rank <= 0)
89 int dimids[NC_MAX_VAR_DIMS];
93 if (nc_inq_vardimid(ncid, varid, dimids) != NC_NOERR)
96 for (total = 1, idim = rank - 1; idim >= 0; --idim)
102 if (nc_inq_dimlen(ncid, dimids[idim], &length) != NC_NOERR)
124 # if NF_INT1_IS_C_SIGNED_CHAR
125 size =
sizeof(
signed char);
126 # elif NF_INT1_IS_C_SHORT
127 size =
sizeof(short);
128 # elif NF_INT1_IS_C_INT
130 # elif NF_INT1_IS_C_LONG
135 # if NF_INT2_IS_C_SHORT
136 size =
sizeof(short);
137 # elif NF_INT2_IS_C_INT
139 # elif NF_INT2_IS_C_LONG
146 # elif NF_INT_IS_C_LONG
151 # if NF_REAL_IS_C_FLOAT
152 size =
sizeof(float);
153 # elif NF_REAL_IS_C_DOUBLE
154 size =
sizeof(double);
158 # if NF_DOUBLEPRECISION_IS_C_FLOAT
159 size =
sizeof(float);
160 # elif NF_DOUBLEPRECISION_IS_C_DOUBLE
161 size =
sizeof(double);
168 for (idim = 0; idim < rank; ++idim)
169 cimap[idim] = fimap[rank - 1 - idim] / size;
180 dimprod(
const size_t* count,
int rank)
185 for (i = 0; i < rank; ++i)
204 FCALLSCSUB1(c_ncpopt,NCPOPT,ncpopt,
220 FCALLSCSUB1(c_ncgopt,NCGOPT,ncgopt,
230 const
char *pathname,
237 if (pathname == NULL)
241 *rcode = ((ncid = nccreate (pathname, clobmode)) == -1)
248 nc_advise(
"NCCRE", *rcode,
"");
256 FCALLSCFUN3(NF_INT,c_nccre,NCCRE,nccre,
257 STRING,CLOBMODE,PRCODE)
265 const
char *pathname,
274 rwmode > NC_WRITE + NC_SHARE + NC_CLASSIC_MODEL + NC_LOCK)
277 nc_advise(
"NCOPN", *rcode,
278 "bad flag, did you forget to include netcdf.inc?");
282 if (pathname == NULL) {
287 *rcode = ((ncid = ncopen (pathname, rwmode)) == -1)
294 nc_advise(
"NCOPN", *rcode,
"");
303 FCALLSCFUN3(NF_INT,c_ncopn,NCOPN,ncopn,
304 STRING,RWMODE,PRCODE)
320 if ((dimid = ncdimdef (ncid, dimname, (
long)dimlen)) == -1)
332 FCALLSCFUN4(NF_INT,c_ncddef,NCDDEF,ncddef,
333 NCID,STRING,DIMLEN,PRCODE)
348 if ((dimid = ncdimid (ncid, dimname)) == -1)
360 FCALLSCFUN3(NF_INT,c_ncdid,NCDID,ncdid,
379 if ((status = nc_def_var(ncid, varname, datatype, ndims, dimids, &varid)))
381 nc_advise(
"NCVDEF", status,
"");
395 FCALLSCFUN6(NF_INT,c_ncvdef,NCVDEF,ncvdef,
396 NCID,STRING,TYPE,NDIMS,DIMIDS,PRCODE)
411 if ((varid = ncvarid (ncid, varname)) == -1)
423 FCALLSCFUN3(NF_INT,c_ncvid,NCVID,ncvid,
438 *rcode = ((itype = (int) nctypelen (datatype)) == -1)
446 FCALLSCFUN2(NF_INT,c_nctlen,NCTLEN,nctlen,
459 *rcode = ncclose(ncid) == -1
465 FCALLSCSUB2(c_ncclos,NCCLOS,ncclos,
478 *rcode = ncredef(ncid) == -1
484 FCALLSCSUB2(c_ncredf,NCREDF,ncredf,
497 *rcode = ncendef (ncid) == -1
503 FCALLSCSUB2(c_ncendf,NCENDF,ncendf,
520 *rcode = ncinquire(ncid, indims, invars, inatts, irecdim) == -1
526 FCALLSCSUB6(c_ncinq,NCINQ,ncinq,
527 NCID,PNDIMS,PNVARS,PNATTS,PDIMID,PRCODE)
540 *rcode = ncsync (ncid) == -1
546 FCALLSCSUB2(c_ncsnc,NCSNC,ncsnc,
561 *rcode = ncabort(ncid) == -1
567 FCALLSCSUB2(c_ncabor,NCABOR,ncabor,
585 if (ncdiminq (ncid, dimid, dimname, &siz) == -1)
595 FCALLSCSUB5(c_ncdinq,NCDINQ,ncdinq,
596 NCID,DIMID,PSTRING,PDIMLEN,PRCODE)
610 *rcode = ncdimrename(ncid, dimid, dimname) == -1
616 FCALLSCSUB4(c_ncdren,NCDREN,ncdren,
617 NCID,DIMID,STRING,PRCODE)
635 *rcode = ncvarinq(ncid, varid, varname, datatype, indims,
636 dimarray, inatts) == -1
642 FCALLSCSUB8(c_ncvinq,NCVINQ,ncvinq,
643 NCID,VARID,PSTRING,PTYPE,PNDIMS,PDIMIDS,PNATTS,PRCODE)
653 const
size_t* indices,
661 if ((status = nc_inq_vartype(ncid, varid, &datatype)) == 0)
669 # if NF_INT1_IS_C_SIGNED_CHAR
670 status = nc_put_var1_schar(ncid, varid, indices,
671 (
const signed char*)value);
672 # elif NF_INT1_IS_C_SHORT
673 status = nc_put_var1_short(ncid, varid, indices,
674 (
const short*)value);
675 # elif NF_INT1_IS_C_INT
676 status = nc_put_var1_int(ncid, varid, indices,
678 # elif NF_INT1_IS_C_LONG
679 status = nc_put_var1_long(ncid, varid, indices,
684 # if NF_INT2_IS_C_SHORT
685 status = nc_put_var1_short(ncid, varid, indices,
686 (
const short*)value);
687 # elif NF_INT2_IS_C_INT
688 status = nc_put_var1_int(ncid, varid, indices,
690 # elif NF_INT2_IS_C_LONG
691 status = nc_put_var1_long(ncid, varid, indices,
697 status = nc_put_var1_int(ncid, varid, indices,
699 # elif NF_INT_IS_C_LONG
700 status = nc_put_var1_long(ncid, varid, indices,
705 # if NF_REAL_IS_C_FLOAT
706 status = nc_put_var1_float(ncid, varid, indices,
707 (
const float*)value);
708 # elif NF_REAL_IS_C_DOUBLE
709 status = nc_put_var1_double(ncid, varid, indices,
710 (
const double*)value);
714 # if NF_DOUBLEPRECISION_IS_C_FLOAT
715 status = nc_put_var1_float(ncid, varid, indices,
716 (
const float*)value);
717 # elif NF_DOUBLEPRECISION_IS_C_DOUBLE
718 status = nc_put_var1_double(ncid, varid, indices,
719 (
const double*)value);
729 nc_advise(
"NCVPT1", status,
"");
735 FCALLSCSUB5(c_ncvpt1,NCVPT1,ncvpt1,
736 NCID,VARID,COORDS,PVOID,PRCODE)
746 const
size_t* indices,
754 if ((status = nc_inq_vartype(ncid, varid, &datatype)) == 0)
756 status = datatype != NC_CHAR
758 : nc_put_var1_text(ncid, varid, indices, value);
765 nc_advise(
"NCVP1C", status,
"");
771 FCALLSCSUB5(c_ncvp1c,NCVP1C,ncvp1c,
772 NCID,VARID,COORDS,CBUF,PRCODE)
792 if ((status = nc_inq_vartype(ncid, varid, &datatype)) == 0)
800 # if NF_INT1_IS_C_SIGNED_CHAR
801 status = nc_put_vara_schar(ncid, varid, start, count,
802 (
const signed char*)value);
803 # elif NF_INT1_IS_C_SHORT
804 status = nc_put_vara_short(ncid, varid, start, count,
805 (
const short*)value);
806 # elif NF_INT1_IS_C_INT
807 status = nc_put_vara_int(ncid, varid, start, count,
809 # elif NF_INT1_IS_C_LONG
810 status = nc_put_vara_long(ncid, varid, start, count,
815 # if NF_INT2_IS_C_SHORT
816 status = nc_put_vara_short(ncid, varid, start, count,
817 (
const short*)value);
818 # elif NF_INT2_IS_C_INT
819 status = nc_put_vara_int(ncid, varid, start, count,
821 # elif NF_INT2_IS_C_LONG
822 status = nc_put_vara_long(ncid, varid, start, count,
828 status = nc_put_vara_int(ncid, varid, start, count,
830 # elif NF_INT_IS_C_LONG
831 status = nc_put_vara_long(ncid, varid, start, count,
836 # if NF_REAL_IS_C_FLOAT
837 status = nc_put_vara_float(ncid, varid, start, count,
838 (
const float*)value);
839 # elif NF_REAL_IS_C_DOUBLE
840 status = nc_put_vara_double(ncid, varid, start, count,
841 (
const double*)value);
845 # if NF_DOUBLEPRECISION_IS_C_FLOAT
846 status = nc_put_vara_float(ncid, varid, start, count,
847 (
const float*)value);
848 # elif NF_DOUBLEPRECISION_IS_C_DOUBLE
849 status = nc_put_vara_double(ncid, varid, start, count,
850 (
const double*)value);
860 nc_advise(
"NCVPT", status,
"");
867 FCALLSCSUB6(c_ncvpt,NCVPT,ncvpt,
868 NCID,VARID,COORDS,COUNTS,PVOID,PRCODE)
888 if ((status = nc_inq_vartype(ncid, varid, &datatype)) == 0)
890 if (datatype != NC_CHAR)
896 status = nc_inq_varndims(ncid, varid, &rank);
899 if (dimprod(count, rank) > (
size_t)lenstr)
902 status = nc_put_vara_text(ncid, varid, start, count, value);
911 nc_advise(
"NCVPTC", status,
"");
918 FCALLSCSUB7(c_ncvptc,NCVPTC,ncvptc,
919 NCID,VARID,COORDS,COUNTS,CBUF,LENSTR,PRCODE)
932 const ptrdiff_t* strides,
933 const ptrdiff_t* imap,
942 if ((status = nc_inq_vartype(ncid, varid, &datatype)) == 0 &&
943 (status = nc_inq_varndims(ncid, varid, &rank)) == 0)
951 # if NF_INT1_IS_C_SIGNED_CHAR
952 status = nc_put_varm_schar(ncid, varid, start, count,
954 (
const signed char*)value);
955 # elif NF_INT1_IS_C_SHORT
956 status = nc_put_varm_short(ncid, varid, start, count,
958 (
const short*)value);
959 # elif NF_INT1_IS_C_INT
960 status = nc_put_varm_int(ncid, varid, start, count,
963 # elif NF_INT1_IS_C_LONG
964 status = nc_put_varm_long(ncid, varid, start, count,
970 # if NF_INT2_IS_C_SHORT
971 status = nc_put_varm_short(ncid, varid, start, count,
973 (
const short*)value);
974 # elif NF_INT2_IS_C_INT
975 status = nc_put_varm_int(ncid, varid, start, count,
978 # elif NF_INT2_IS_C_LONG
979 status = nc_put_varm_long(ncid, varid, start, count,
986 status = nc_put_varm_int(ncid, varid, start, count,
989 # elif NF_INT_IS_C_LONG
990 status = nc_put_varm_long(ncid, varid, start, count,
996 # if NF_REAL_IS_C_FLOAT
997 status = nc_put_varm_float(ncid, varid, start, count,
999 (
const float*)value);
1000 # elif NF_REAL_IS_C_DOUBLE
1001 status = nc_put_varm_double(ncid, varid, start, count,
1003 (
const double*)value);
1007 # if NF_DOUBLEPRECISION_IS_C_FLOAT
1008 status = nc_put_varm_float(ncid, varid, start, count,
1010 (
const float*)value);
1011 # elif NF_DOUBLEPRECISION_IS_C_DOUBLE
1012 status = nc_put_varm_double(ncid, varid, start, count,
1014 (
const double*)value);
1024 nc_advise(
"NCVPTG", status,
"");
1031 FCALLSCSUB8(c_ncvptg,NCVPTG,ncvptg,
1032 NCID,VARID,COORDS,COUNTS,STRIDES,V2IMAP,PVOID,PRCODE)
1043 const
size_t* start,
1044 const
size_t* count,
1045 const ptrdiff_t* strides,
1046 const ptrdiff_t* imap,
1055 if ((status = nc_inq_vartype(ncid, varid, &datatype)) == 0 &&
1056 (status = nc_inq_varndims(ncid, varid, &rank)) == 0)
1061 status = nc_put_varm_text(ncid, varid, start, count,
1075 nc_advise(
"NCVPGC", status,
"");
1082 FCALLSCSUB8(c_ncvpgc,NCVPGC,ncvpgc,
1083 NCID,VARID,COORDS,COUNTS,STRIDES,V2IMAP,CBUF,PRCODE)
1093 const
size_t* indices,
1101 if ((status = nc_inq_vartype(ncid, varid, &datatype)) == 0)
1109 # if NF_INT1_IS_C_SIGNED_CHAR
1110 status = nc_get_var1_schar(ncid, varid, indices,
1111 (
signed char*)value);
1112 # elif NF_INT1_IS_C_SHORT
1113 status = nc_get_var1_short(ncid, varid, indices,
1115 # elif NF_INT1_IS_C_INT
1116 status = nc_get_var1_int(ncid, varid, indices,
1118 # elif NF_INT1_IS_C_LONG
1119 status = nc_get_var1_long(ncid, varid, indices,
1124 # if NF_INT2_IS_C_SHORT
1125 status = nc_get_var1_short(ncid, varid, indices,
1127 # elif NF_INT2_IS_C_INT
1128 status = nc_get_var1_int(ncid, varid, indices,
1130 # elif NF_INT2_IS_C_LONG
1131 status = nc_get_var1_long(ncid, varid, indices,
1136 # if NF_INT_IS_C_INT
1137 status = nc_get_var1_int(ncid, varid, indices,
1139 # elif NF_INT_IS_C_LONG
1140 status = nc_get_var1_long(ncid, varid, indices,
1145 # if NF_REAL_IS_C_FLOAT
1146 status = nc_get_var1_float(ncid, varid, indices,
1148 # elif NF_REAL_IS_C_DOUBLE
1149 status = nc_get_var1_double(ncid, varid, indices,
1154 # if NF_DOUBLEPRECISION_IS_C_FLOAT
1155 status = nc_get_var1_float(ncid, varid, indices,
1157 # elif NF_DOUBLEPRECISION_IS_C_DOUBLE
1158 status = nc_get_var1_double(ncid, varid, indices,
1169 nc_advise(
"NCVGT1", status,
"");
1176 FCALLSCSUB5(c_ncvgt1,NCVGT1,ncvgt1,
1177 NCID,VARID,COORDS,PVOID,PRCODE)
1188 const
size_t* indices,
1196 if ((status = nc_inq_vartype(ncid, varid, &datatype)) == 0)
1201 status = nc_get_var1_text(ncid, varid, indices, value);
1213 nc_advise(
"NCVG1C", status,
"");
1220 FCALLSCSUB5(c_ncvg1c,NCVG1C,ncvg1c,
1221 NCID,VARID,COORDS,CBUF,PRCODE)
1232 const
size_t* start,
1233 const
size_t* count,
1241 if ((status = nc_inq_vartype(ncid, varid, &datatype)) == 0)
1249 # if NF_INT1_IS_C_SIGNED_CHAR
1250 status = nc_get_vara_schar(ncid, varid, start, count,
1251 (
signed char*)value);
1252 # elif NF_INT1_IS_C_SHORT
1253 status = nc_get_vara_short(ncid, varid, start, count,
1255 # elif NF_INT1_IS_C_INT
1256 status = nc_get_vara_int(ncid, varid, start, count,
1258 # elif NF_INT1_IS_C_LONG
1259 status = nc_get_vara_long(ncid, varid, start, count,
1264 # if NF_INT2_IS_C_SHORT
1265 status = nc_get_vara_short(ncid, varid, start, count,
1267 # elif NF_INT2_IS_C_INT
1268 status = nc_get_vara_int(ncid, varid, start, count,
1270 # elif NF_INT2_IS_C_LONG
1271 status = nc_get_vara_long(ncid, varid, start, count,
1276 # if NF_INT_IS_C_INT
1277 status = nc_get_vara_int(ncid, varid, start, count,
1279 # elif NF_INT_IS_C_LONG
1280 status = nc_get_vara_long(ncid, varid, start, count,
1285 # if NF_REAL_IS_C_FLOAT
1286 status = nc_get_vara_float(ncid, varid, start, count,
1288 # elif NF_REAL_IS_C_DOUBLE
1289 status = nc_get_vara_double(ncid, varid, start, count,
1294 # if NF_DOUBLEPRECISION_IS_C_FLOAT
1295 status = nc_get_vara_float(ncid, varid, start, count,
1297 # elif NF_DOUBLEPRECISION_IS_C_DOUBLE
1298 status = nc_get_vara_double(ncid, varid, start, count,
1309 nc_advise(
"NCVGT", status,
"");
1316 FCALLSCSUB6(c_ncvgt,NCVGT,ncvgt,
1317 NCID,VARID,COORDS,COUNTS,PVOID,PRCODE)
1327 const
size_t* start,
1328 const
size_t* count,
1337 if ((status = nc_inq_vartype(ncid, varid, &datatype)) == 0)
1339 if (datatype != NC_CHAR)
1341 else if ((status = nc_get_vara_text(ncid, varid, start, count, value))
1346 if ((status = nc_inq_varndims(ncid, varid, &rank)) == 0)
1348 size_t total = dimprod(count, rank);
1350 (void) memset(value+total,
' ', lenstr - total);
1359 nc_advise(
"NCVGTC", status,
"");
1365 FCALLSCSUB7(c_ncvgtc,NCVGTC,ncvgtc,
1366 NCID,VARID,COORDS,COUNTS,CBUF,LENSTR,PRCODE)
1377 const
size_t* start,
1378 const
size_t* count,
1379 const ptrdiff_t* strides,
1380 const ptrdiff_t* imap,
1389 if ((status = nc_inq_vartype(ncid, varid, &datatype)) == 0 &&
1390 (status = nc_inq_varndims(ncid, varid, &rank)) == 0)
1398 # if NF_INT1_IS_C_SIGNED_CHAR
1399 status = nc_get_varm_schar(ncid, varid, start, count,
1401 (
signed char*)value);
1402 # elif NF_INT1_IS_C_SHORT
1403 status = nc_get_varm_short(ncid, varid, start, count,
1406 # elif NF_INT1_IS_C_INT
1407 status = nc_get_varm_int(ncid, varid, start, count,
1410 # elif NF_INT1_IS_C_LONG
1411 status = nc_get_varm_long(ncid, varid, start, count,
1417 # if NF_INT2_IS_C_SHORT
1418 status = nc_get_varm_short(ncid, varid, start, count,
1421 # elif NF_INT2_IS_C_INT
1422 status = nc_get_varm_int(ncid, varid, start, count,
1425 # elif NF_INT2_IS_C_LONG
1426 status = nc_get_varm_long(ncid, varid, start, count,
1432 # if NF_INT_IS_C_INT
1433 status = nc_get_varm_int(ncid, varid, start, count,
1436 # elif NF_INT_IS_C_LONG
1437 status = nc_get_varm_long(ncid, varid, start, count,
1443 # if NF_REAL_IS_C_FLOAT
1444 status = nc_get_varm_float(ncid, varid, start, count,
1447 # elif NF_REAL_IS_C_DOUBLE
1448 status = nc_get_varm_double(ncid, varid, start, count,
1454 # if NF_DOUBLEPRECISION_IS_C_FLOAT
1455 status = nc_get_varm_float(ncid, varid, start, count,
1458 # elif NF_DOUBLEPRECISION_IS_C_DOUBLE
1459 status = nc_get_varm_double(ncid, varid, start, count,
1471 nc_advise(
"NCVGTG", status,
"");
1477 FCALLSCSUB8(c_ncvgtg,NCVGTG,ncvgtg,
1478 NCID,VARID,COORDS,COUNTS,STRIDES,V2IMAP,PVOID,PRCODE)
1489 const
size_t* start,
1490 const
size_t* count,
1491 const ptrdiff_t* strides,
1492 const ptrdiff_t* imap,
1501 if ((status = nc_inq_vartype(ncid, varid, &datatype)) == 0 &&
1502 (status = nc_inq_varndims(ncid, varid, &rank)) == 0)
1507 status = nc_get_varm_text(ncid, varid, start, count,
1521 nc_advise(
"NCVGGC", status,
"");
1527 FCALLSCSUB8(c_ncvggc,NCVGGC,ncvggc,
1528 NCID,VARID,COORDS,COUNTS,STRIDES,V2IMAP,CBUF,PRCODE)
1538 const
char* varname,
1542 *rcode = ncvarrename (ncid, varid, varname) == -1
1548 FCALLSCSUB4(c_ncvren,NCVREN,ncvren,
1549 NCID,VARID,STRING,PRCODE)
1560 const
char* attname,
1575 # if NF_INT1_IS_C_SIGNED_CHAR
1576 status = nc_put_att_schar(ncid, varid, attname, datatype,
1577 attlen, (
const signed char*)value);
1578 # elif NF_INT1_IS_C_SHORT
1579 status = nc_put_att_short(ncid, varid, attname, datatype,
1580 attlen, (
const short*)value);
1581 # elif NF_INT1_IS_C_INT
1582 status = nc_put_att_int(ncid, varid, attname, datatype,
1583 attlen, (
const int*)value);
1584 # elif NF_INT1_IS_C_LONG
1585 status = nc_put_att_long(ncid, varid, attname, datatype,
1586 attlen, (
const long*)value);
1590 # if NF_INT2_IS_C_SHORT
1591 status = nc_put_att_short(ncid, varid, attname, datatype,
1592 attlen, (
const short*)value);
1593 # elif NF_INT2_IS_C_INT
1594 status = nc_put_att_int(ncid, varid, attname, datatype,
1595 attlen, (
const int*)value);
1596 # elif NF_INT2_IS_C_LONG
1597 status = nc_put_att_long(ncid, varid, attname, datatype,
1598 attlen, (
const long*)value);
1602 # if NF_INT_IS_C_INT
1603 status = nc_put_att_int(ncid, varid, attname, datatype,
1604 attlen, (
const int*)value);
1605 # elif NF_INT_IS_C_LONG
1606 status = nc_put_att_long(ncid, varid, attname, datatype,
1607 attlen, (
const long*)value);
1611 # if NF_REAL_IS_C_FLOAT
1612 status = nc_put_att_float(ncid, varid, attname, datatype,
1613 attlen, (
const float*)value);
1614 # elif NF_REAL_IS_C_DOUBLE
1615 status = nc_put_att_double(ncid, varid, attname, datatype,
1616 attlen, (
const double*)value);
1620 # if NF_DOUBLEPRECISION_IS_C_FLOAT
1621 status = nc_put_att_float(ncid, varid, attname, datatype,
1622 attlen, (
const float*)value);
1623 # elif NF_DOUBLEPRECISION_IS_C_DOUBLE
1624 status = nc_put_att_double(ncid, varid, attname, datatype,
1625 attlen, (
const double*)value);
1634 nc_advise(
"NCAPT", status,
"");
1640 FCALLSCSUB7(c_ncapt,NCAPT,ncapt,
1641 NCID,VARID,STRING,TYPE,COUNT,PVOID,PRCODE)
1651 const
char* attname,
1660 if (datatype != NC_CHAR)
1663 status = nc_put_att_text(ncid, varid, attname, attlen, value);
1669 nc_advise(
"NCAPTC", status,
"");
1675 FCALLSCSUB7(c_ncaptc,NCAPTC,ncaptc,
1676 NCID,VARID,STRING,TYPE,COUNT,CBUF,PRCODE)
1687 const
char* attname,
1693 *rcode = ncattinq(ncid, varid, attname, datatype, attlen)
1700 FCALLSCSUB6(c_ncainq,NCAINQ,ncainq,
1701 NCID,VARID,STRING,PTYPE,PATTLEN,PRCODE)
1711 const
char* attname,
1719 if ((status = nc_inq_atttype(ncid, varid, attname, &datatype)) == 0)
1727 # if NF_INT1_IS_C_SIGNED_CHAR
1728 status = nc_get_att_schar(ncid, varid, attname,
1729 (
signed char*)value);
1730 # elif NF_INT1_IS_C_SHORT
1731 status = nc_get_att_short(ncid, varid, attname,
1733 # elif NF_INT1_IS_C_INT
1734 status = nc_get_att_int(ncid, varid, attname,
1736 # elif NF_INT1_IS_C_LONG
1737 status = nc_get_att_long(ncid, varid, attname,
1742 # if NF_INT2_IS_C_SHORT
1743 status = nc_get_att_short(ncid, varid, attname,
1745 # elif NF_INT2_IS_C_INT
1746 status = nc_get_att_int(ncid, varid, attname,
1748 # elif NF_INT2_IS_C_LONG
1749 status = nc_get_att_long(ncid, varid, attname,
1754 # if NF_INT_IS_C_INT
1755 status = nc_get_att_int(ncid, varid, attname,
1757 # elif NF_INT_IS_C_LONG
1758 status = nc_get_att_long(ncid, varid, attname,
1763 # if NF_REAL_IS_C_FLOAT
1764 status = nc_get_att_float(ncid, varid, attname,
1766 # elif NF_REAL_IS_C_DOUBLE
1767 status = nc_get_att_double(ncid, varid, attname,
1772 # if NF_DOUBLEPRECISION_IS_C_FLOAT
1773 status = nc_get_att_float(ncid, varid, attname,
1775 # elif NF_DOUBLEPRECISION_IS_C_DOUBLE
1776 status = nc_get_att_double(ncid, varid, attname,
1787 nc_advise(
"NCAGT", status,
"");
1793 FCALLSCSUB5(c_ncagt,NCAGT,ncagt,
1794 NCID,VARID,STRING,PVOID,PRCODE)
1805 const
char* attname,
1814 if ((status = nc_inq_atttype(ncid, varid, attname, &datatype)) == 0)
1816 if (datatype != NC_CHAR)
1822 status = nc_inq_attlen(ncid, varid, attname, &len);
1829 status = nc_get_att_text(ncid, varid, attname,
1832 (void) memset(value+len,
' ', attlen - len);
1842 nc_advise(
"NCAGTC", status,
"");
1848 FCALLSCSUB6(c_ncagtc,NCAGTC,ncagtc,
1849 NCID,VARID,STRING,CBUF,ATTLEN,PRCODE)
1859 const
char* attname,
1865 *rcode = ncattcopy(inncid, invarid, attname, outncid, outvarid)
1872 FCALLSCSUB6(c_ncacpy,NCACPY,ncacpy,
1873 NCID1,VARID1,STRING,NCID2,VARID2,PRCODE)
1889 *rcode = ncattname(ncid, varid, attnum, attname) == -1
1895 FCALLSCSUB5(c_ncanam,NCANAM,ncanam,
1896 NCID,VARID,ATTID,PSTRING,PRCODE)
1906 const
char* attname,
1907 const
char* newname,
1911 *rcode = ncattrename(ncid, varid, attname, newname) == -1
1917 FCALLSCSUB5(c_ncaren,NCAREN,ncaren,
1918 NCID,VARID,STRING,STRING,PRCODE)
1928 const
char* attname,
1932 *rcode = ncattdel(ncid, varid, attname) == -1
1938 FCALLSCSUB4(c_ncadel,NCADEL,ncadel,
1939 NCID,VARID,STRING,PRCODE)
1954 *rcode = ((retval = ncsetfill(ncid, fillmode)) == -1)
1962 FCALLSCFUN3(NF_INT,c_ncsfil,NCSFIL,ncsfil,
1963 NCID,FILLMODE,PRCODE)