!== netcdf_f77.f90 - netCDF original interface module ! ! Authors:: Eizi TOYODA, Yasuhiro MORIKAWA ! Version:: $Id: netcdf_f77.f90,v 1.2 2005/12/29 03:10:58 morikawa Exp $ ! Tag Name:: $Name: gt4f90io-20060117 $ ! Copyright:: Copyright (C) GFD Dennou Club, 2000-2005. All rights reserved. ! License:: See COPYRIGHT[link:../../COPYRIGHT] ! ! This file provides netcdf_f77 ! module netcdf_f77 ! ! 本モジュール群は netCDF オリジナルの netcdf.inc の代わりに ! 利用すべきものです。netcdf.inc への参照はしていません。 ! use dc_types, only: NF_KIND_INT1, NF_KIND_INT2 implicit none ! ! --- symbols --- ! ! ! external netCDF data type ID ! integer, parameter:: NF_BYTE = 1 integer, parameter:: NF_INT1 = NF_BYTE integer, parameter:: NF_CHAR = 2 integer, parameter:: NF_SHORT = 3 integer, parameter:: NF_INT2 = NF_SHORT integer, parameter:: NF_INT = 4 integer, parameter:: NF_FLOAT = 5 integer, parameter:: NF_REAL = NF_FLOAT integer, parameter:: NF_DOUBLE = 6 ! ! default fill values ! integer, parameter:: NF_FILL_BYTE = -127 integer, parameter:: NF_FILL_INT1 = NF_FILL_BYTE integer, parameter:: NF_FILL_CHAR = 0 integer, parameter:: NF_FILL_SHORT = -32767 integer, parameter:: NF_FILL_INT2 = NF_FILL_SHORT integer, parameter:: NF_FILL_INT = -2147483647 real, parameter:: NF_FILL_FLOAT = 9.9692099683868690e+36 real, parameter:: NF_FILL_REAL = NF_FILL_FLOAT double precision, parameter:: & & NF_FILL_DOUBLE = 9.9692099683868690e+36 ! ! mode flags for opening and creating a netcdf dataset: ! integer, parameter:: NF_NOWRITE = 0 integer, parameter:: NF_WRITE = 1 integer, parameter:: NF_CLOBBER = 0 integer, parameter:: NF_NOCLOBBER = 4 integer, parameter:: NF_FILL = 0 integer, parameter:: NF_NOFILL = 256 integer, parameter:: NF_LOCK = 1024 integer, parameter:: NF_SHARE = 2048 integer, parameter:: NF_SIZEHINT_DEFAULT = 0 integer, parameter:: NF_ALIGN_CHUNK = -1 ! ! size argument for defining an unlimited dimension: ! integer, parameter:: NF_UNLIMITED = 0 ! ! global attribute id: ! integer, parameter:: NF_GLOBAL = 0 ! ! implementation limits: ! integer, parameter:: NF_MAX_DIMS = 100 integer, parameter:: NF_MAX_ATTRS = 2000 integer, parameter:: NF_MAX_VARS = 2000 integer, parameter:: NF_MAX_NAME = 128 integer, parameter:: NF_MAX_VAR_DIMS = NF_MAX_DIMS ! ! error codes: ! integer, parameter:: NF_NOERR = 0 integer, parameter:: NF_EBADID = -33 integer, parameter:: NF_EEXIST = -35 integer, parameter:: NF_EINVAL = -36 integer, parameter:: NF_EPERM = -37 integer, parameter:: NF_ENOTINDEFINE = -38 integer, parameter:: NF_EINDEFINE = -39 integer, parameter:: NF_EINVALCOORDS = -40 integer, parameter:: NF_EMAXDIMS = -41 integer, parameter:: NF_ENAMEINUSE = -42 integer, parameter:: NF_ENOTATT = -43 integer, parameter:: NF_EMAXATTS = -44 integer, parameter:: NF_EBADTYPE = -45 integer, parameter:: NF_EBADDIM = -46 integer, parameter:: NF_EUNLIMPOS = -47 integer, parameter:: NF_EMAXVARS = -48 integer, parameter:: NF_ENOTVAR = -49 integer, parameter:: NF_EGLOBAL = -50 integer, parameter:: NF_ENOTNC = -51 integer, parameter:: NF_ESTS = -52 integer, parameter:: NF_EMAXNAME = -53 integer, parameter:: NF_EUNLIMIT = -54 integer, parameter:: NF_ENORECVARS = -55 integer, parameter:: NF_ECHAR = -56 integer, parameter:: NF_EEDGE = -57 integer, parameter:: NF_ESTRIDE = -58 integer, parameter:: NF_EBADNAME = -59 integer, parameter:: NF_ERANGE = -60 integer, parameter:: NF_ENOMEM = -61 ! ! error handling modes: ! integer, parameter:: NF_FATAL = 1 integer, parameter:: NF_VERBOSE = 2 ! ! --- interfaces --- ! interface ! ! --- 雑多な関数 --- ! function nf_inq_libvers(ncerr) ! ! netCDF ライブラリのバージョンを返す ! character(len=80):: nf_inq_libvers integer, intent(in):: ncerr end function nf_inq_libvers logical function nf_issyserr(ncerr) ! ! (ドキュメントされていない関数) ! ! エラーコードが netCDF ではなく C ライブラリによるとき真 ! integer, intent(in):: ncerr end function nf_issyserr character(len=80) function nf_strerror(ncerr) ! ! エラーコードから netCDF のメッセージを返す ! integer, intent(in):: ncerr end function nf_strerror integer function nf_inq_base_pe(ncid, pe) ! ! (ドキュメントされていない関数) ! ! PE の操作らしい ! integer, intent(in):: ncid, pe end function nf_inq_base_pe integer function nf_set_base_pe(ncid, pe) ! ! (ドキュメントされていない関数) ! ! PE の操作らしい ! integer, intent(in):: ncid, pe end function nf_set_base_pe ! ! --- ファイルを作る・開く・閉じる・基礎的操作 --- ! integer function nf_create(path, cmode, ncid) ! ! ファイルを作成する (開かれた状態となる) ! character(len=*), intent(in):: path integer, intent(in):: cmode integer, intent(out):: ncid end function nf_create integer function nf__create(path, cmode, initialsz, chunksizehint, ncid) ! (ドキュメントされていない関数) character(len=*), intent(in):: path integer, intent(in):: cmode, initialsz, chunksizehint integer, intent(out):: ncid end function nf__create integer function nf__create_mp(path, cmode, initialsz, & & basepe, chunksizehint, ncid) ! (ドキュメントされていない関数) character(len=*), intent(in):: path integer, intent(in):: cmode, initialsz, basepe, chunksizehint integer, intent(out):: ncid end function nf__create_mp integer function nf_open(path, cmode, ncid) ! ! ファイルを開く ! character(len=*), intent(in):: path integer, intent(in):: cmode integer, intent(out):: ncid end function nf_open integer function nf__open(path, cmode, initialsz, chunksizehint, ncid) ! (ドキュメントされていない関数) character(len=*), intent(in):: path integer, intent(in):: cmode, initialsz, chunksizehint integer, intent(out):: ncid end function nf__open integer function nf__open_mp(path, cmode, initialsz, & & basepe, chunksizehint, ncid) ! (ドキュメントされていない関数) character(len=*), intent(in):: path integer, intent(in):: cmode, initialsz, basepe, chunksizehint integer, intent(out):: ncid end function nf__open_mp integer function nf_set_fill(ncid, fillmode, old_mode) ! fill モードの設定/解除 integer, intent(in):: ncid, fillmode integer, intent(out):: old_mode end function nf_set_fill integer function nf_redef(ncid) ! 定義モードへの移行 integer, intent(in):: ncid end function nf_redef integer function nf_enddef(ncid) ! 定義モードからの脱出 integer, intent(in):: ncid end function nf_enddef integer function nf__enddef(ncid, h_minfree, v_align, & & v_minfree, r_align) ! ! 定義モードからの脱出 ! ! (ドキュメントされていない関数) ! integer, intent(in):: ncid integer, intent(in):: h_minfree, v_align, & & v_minfree, r_align end function nf__enddef integer function nf_sync(ncid) ! 同期 integer, intent(in):: ncid end function nf_sync integer function nf_close(ncid) ! 閉じる integer, intent(in):: ncid end function nf_close integer function nf_abort(ncid) ! 閉じる際に定義モードにある場合に呼ばれる ! (ユーザが呼ぶ必要のない関数) integer, intent(in):: ncid end function nf_abort integer function nf_delete(path) ! MP用 ファイルの削除 ! ! (ドキュメントされていない関数) character(len=*), intent(in):: path end function nf_delete ! ! --- ファイルの問い合わせ --- ! integer function nf_inq(ncid, ndims, nvars, ngatts, unlimdimid) ! ! 開かれたファイル ncid に対しすべての問い合わせを行う ! integer, intent(in):: ncid integer, intent(out):: ndims, nvars, ngatts integer, intent(out):: unlimdimid end function nf_inq integer function nf_inq_ndims(ncid, ndims) ! 次元数 ndims を問い合わせる integer, intent(in):: ncid integer, intent(out):: ndims end function nf_inq_ndims integer function nf_inq_nvars(ncid, nvars) ! 変数の数 nvars を問い合わせる integer, intent(in):: ncid integer, intent(out):: nvars end function nf_inq_nvars integer function nf_inq_natts(ncid, ngatts) ! 大域属性の数 ngatts を問い合わせる integer, intent(in):: ncid integer, intent(out):: ngatts end function nf_inq_natts integer function nf_inq_unlimdim(ncid, unlimdimid) ! 無制限次元のID unlimdimid を問い合わせる。 ! もしなければ 1 が返る integer, intent(in):: ncid integer, intent(out):: unlimdimid end function nf_inq_unlimdim ! ! --- 次元に関するルーチン --- ! integer function nf_def_dim(ncid, name, len, dimid) ! 名称 name, 長さ len を持つ次元を定義する。 ! 割り当てられた次元 ID (正の整数) が dimid に返される integer, intent(in):: ncid character(len=*), intent(in):: name integer, intent(in):: len integer, intent(out):: dimid end function nf_def_dim integer function nf_inq_dimid(ncid, name, dimid) ! 名前に対する次元 ID を問い合わせる integer, intent(in):: ncid character(len=*), intent(in):: name integer, intent(out):: dimid end function nf_inq_dimid integer function nf_inq_dim(ncid, dimid, name, len) ! 次元 ID から名前 name と長さ len を問い合わせる。 ! name には必要な長さがなければならない integer, intent(in):: ncid integer, intent(in):: dimid character(len=*), intent(out):: name integer, intent(out):: len end function nf_inq_dim integer function nf_inq_dimname(ncid, dimid, name) ! 次元 ID から名前 name を問い合わせる。 ! name には必要な長さがなければならない integer, intent(in):: ncid integer, intent(in):: dimid character(len=*), intent(out):: name end function nf_inq_dimname integer function nf_inq_dimlen(ncid, dimid, len) ! 次元 ID から長さ len を問い合わせる integer, intent(in):: ncid integer, intent(in):: dimid integer, intent(out):: len end function nf_inq_dimlen ! ! --- 属性 --- ! ! 属性は文字型スカラ変数か、数値型配列である。 ! 長さとは文字型では長さパラメタ、数値型では配列の大きさである。 ! 属性は変数 varid に所属するか、大域属性となる。 ! 大域属性の varid としては NF_GLOBAL を用いる。 ! ! --- 属性に関する問い合わせ --- ! integer function nf_inq_att(ncid, varid, name, xtype, len) ! 変数 varid の属性 name の型 xtype と長さ len の問い合わせ integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer, intent(out):: xtype integer, intent(out):: len end function nf_inq_att integer function nf_inq_atttype(ncid, varid, name, xtype) ! 変数 varid の属性 name の型 xtype の問い合わせ integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer, intent(out):: xtype end function nf_inq_atttype integer function nf_inq_attlen(ncid, varid, name, len) ! 変数 varid の属性 name の長さ len の問い合わせ integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer, intent(out):: len end function nf_inq_attlen integer function nf_inq_attid(ncid, varid, name, attnum) ! 変数 varid の属性 name の番号 attnum の問い合わせ integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer, intent(out):: attnum end function nf_inq_attid integer function nf_inq_attname(ncid, varid, attnum, name) ! 変数 varid の属性 attnum の名前 name の問い合わせ。 ! name には必要な長さがなければならない integer, intent(in):: ncid, varid integer, intent(in):: attnum character(len=*), intent(out):: name end function nf_inq_attname ! ! --- 属性の読み書き以外の操作 --- ! integer function nf_copy_att(ncid_in, varid_in, name, & & ncid_out, varid_out) integer, intent(in):: ncid_in, varid_in character(len=*), intent(in):: name integer, intent(in):: ncid_out, varid_out end function nf_copy_att integer function nf_rename_att(ncid, varid, curname, newname) integer, intent(in):: ncid, varid character(len=*), intent(in):: curname character(len=*), intent(in):: newname end function nf_rename_att integer function nf_del_att(ncid, varid, name) integer, intent(in):: ncid, varid character(len=*), intent(in):: name end function nf_del_att ! ! --- 属性の設定 --- ! integer function nf_put_att_text(ncid, varid, name, len, text) integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer, intent(in):: len character(len=*), intent(in):: text end function nf_put_att_text integer function nf_put_att_int1(ncid, varid, name, & & xtype, len, i1vals) use dc_types, only: NF_KIND_INT1 integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer, intent(in):: xtype, len integer(NF_KIND_INT1), intent(in):: i1vals(*) end function nf_put_att_int1 integer function nf_put_att_int2(ncid, varid, name, & & xtype, len, i2vals) use dc_types, only: NF_KIND_INT2 integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer, intent(in):: xtype, len integer(NF_KIND_INT2), intent(in):: i2vals(*) end function nf_put_att_int2 integer function nf_put_att_int(ncid, varid, name, & & xtype, len, ivals) integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer, intent(in):: xtype, len integer, intent(in):: ivals(*) end function nf_put_att_int integer function nf_put_att_real(ncid, varid, name, & & xtype, len, rvals) integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer, intent(in):: xtype, len real, intent(in):: rvals(*) end function nf_put_att_real integer function nf_put_att_double(ncid, varid, name, & & xtype, len, dvals) integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer, intent(in):: xtype, len double precision, intent(in):: dvals(*) end function nf_put_att_double ! ! --- 属性の読み取り --- ! integer function nf_get_att_text(ncid, varid, name, text) integer, intent(in):: ncid, varid character(len=*), intent(in):: name character(len=*), intent(out):: text end function nf_get_att_text integer function nf_get_att_int1(ncid, varid, name, i1vals) use dc_types, only: NF_KIND_INT1 integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer(NF_KIND_INT1), intent(in):: i1vals(*) end function nf_get_att_int1 integer function nf_get_att_int2(ncid, varid, name, i2vals) use dc_types, only: NF_KIND_INT2 integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer(NF_KIND_INT2), intent(in):: i2vals(*) end function nf_get_att_int2 integer function nf_get_att_int(ncid, varid, name, ivals) integer, intent(in):: ncid, varid character(len=*), intent(in):: name integer, intent(in):: ivals(*) end function nf_get_att_int integer function nf_get_att_real(ncid, varid, name, rvals) integer, intent(in):: ncid, varid character(len=*), intent(in):: name real, intent(in):: rvals(*) end function nf_get_att_real integer function nf_get_att_double(ncid, varid, name, dvals) integer, intent(in):: ncid, varid character(len=*), intent(in):: name double precision, intent(in):: dvals(*) end function nf_get_att_double ! ! --- 変数 --- ! ! 変数は次元によってきまる配列である。 ! 定義した次元すべてを使わなくてはいけないわけではない。 ! integer function nf_def_var(ncid, name, xtype, ndims, dimids, varid) ! 名前 name の変数を定義する。 ! データ型 xtype, 次元数 ndims とし、 ! 各次元の ID は dimids で与える。 ! 変数 ID は varid に返される。 integer, intent(in):: ncid character(len=*), intent(in):: name integer, intent(in):: xtype, ndims integer, intent(in):: dimids(*) integer, intent(out):: varid end function nf_def_var ! ! --- 変数に関する問い合わせ --- ! integer function nf_inq_varid(ncid, name, varid) ! 変数名 name から ID varid を知る integer, intent(in):: ncid character(len=*), intent(in):: name integer, intent(out):: varid end function nf_inq_varid integer function nf_inq_var(ncid, varid, & & name, xtype, ndims, dimids, natts) ! 変数 varid から何でも問いあわせ (以下の関数参照)。 ! dimids は必要な大きさがなければならない integer, intent(in):: ncid, varid character(len=*), intent(out):: name integer, intent(out):: xtype, ndims, natts integer, intent(out):: dimids(*) end function nf_inq_var integer function nf_inq_varname(ncid, varid, name) ! 変数 varid から変数名 name を知る。 ! name には必要な長さがなければならない integer, intent(in):: ncid, varid character(len=*), intent(out):: name end function nf_inq_varname integer function nf_inq_vartype(ncid, varid, xtype) ! 変数 varid から型 xtype を知る integer, intent(in):: ncid, varid integer, intent(out):: xtype end function nf_inq_vartype integer function nf_inq_varndims(ncid, varid, ndims) ! 変数 varid から次元数 ndims を知る integer, intent(in):: ncid, varid integer, intent(out):: ndims end function nf_inq_varndims integer function nf_inq_vardimid(ncid, varid, dimids) ! 変数 varid から次元ID 配列 dimids を得る integer, intent(in):: ncid, varid integer, intent(out):: dimids(*) end function nf_inq_vardimid integer function nf_inq_varnatts(ncid, varid, natts) ! 変数 varid から属性数 natts を知る integer, intent(in):: ncid, varid integer, intent(out):: natts end function nf_inq_varnatts ! ! --- 変数に関する読み書き以外の操作 --- ! integer function nf_rename_var(ncid, varid, name) ! 変数 varid を name に改名する integer, intent(in):: ncid, varid character(len=*), intent(in):: name end function nf_rename_var integer function nf_copy_var(ncid, varid, ncid_out) ! 変数 varid を別の netCDF データセット ncid_out にコピーする integer, intent(in):: ncid, varid integer, intent(in):: ncid_out end function nf_copy_var ! ! --- 変数の書き込み --- ! ! ! 変数の単要素書き込み ! integer function nf_put_var1_text(ncid, varid, index, chval) integer, intent(in):: ncid, varid integer, intent(in):: index(*) character, intent(in):: chval end function nf_put_var1_text integer function nf_put_var1_int1(ncid, varid, index, i1val) use dc_types, only: NF_KIND_INT1 integer, intent(in):: ncid, varid integer, intent(in):: index(*) integer(NF_KIND_INT1), intent(in):: i1val end function nf_put_var1_int1 integer function nf_put_var1_int2(ncid, varid, index, i2val) use dc_types, only: NF_KIND_INT2 integer, intent(in):: ncid, varid integer, intent(in):: index(*) integer(NF_KIND_INT2), intent(in):: i2val end function nf_put_var1_int2 integer function nf_put_var1_int(ncid, varid, index, ival) integer, intent(in):: ncid, varid integer, intent(in):: index(*) integer, intent(in):: ival end function nf_put_var1_int integer function nf_put_var1_real(ncid, varid, index, rval) integer, intent(in):: ncid, varid integer, intent(in):: index(*) real, intent(in):: rval end function nf_put_var1_real integer function nf_put_var1_double(ncid, varid, index, dval) integer, intent(in):: ncid, varid integer, intent(in):: index(*) double precision, intent(in):: dval end function nf_put_var1_double ! ! 変数の全体書き込み ! integer function nf_put_var_text(ncid, varid, text) integer, intent(in):: ncid, varid character(len=*), intent(in):: text end function nf_put_var_text integer function nf_put_var_int1(ncid, varid, i1vals) use dc_types, only: NF_KIND_INT1 integer, intent(in):: ncid, varid integer(NF_KIND_INT1), intent(in):: i1vals(*) end function nf_put_var_int1 integer function nf_put_var_int2(ncid, varid, i2vals) use dc_types, only: NF_KIND_INT2 integer, intent(in):: ncid, varid integer(NF_KIND_INT2), intent(in):: i2vals(*) end function nf_put_var_int2 integer function nf_put_var_int(ncid, varid, ivals) integer, intent(in):: ncid, varid integer, intent(in):: ivals(*) end function nf_put_var_int integer function nf_put_var_real(ncid, varid, rvals) integer, intent(in):: ncid, varid real, intent(in):: rvals(*) end function nf_put_var_real integer function nf_put_var_double(ncid, varid, dvals) integer, intent(in):: ncid, varid double precision, intent(in):: dvals(*) end function nf_put_var_double ! ! 変数の部分配列書き込み ! integer function nf_put_vara_text(ncid, varid, & & start, count, text) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) character(len=*), intent(in):: text end function nf_put_vara_text integer function nf_put_vara_int1(ncid, varid, & & start, count, i1vals) use dc_types, only: NF_KIND_INT1 integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer(NF_KIND_INT1), intent(in):: i1vals(*) end function nf_put_vara_int1 integer function nf_put_vara_int2(ncid, varid, & & start, count, i2vals) use dc_types, only: NF_KIND_INT2 integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer(NF_KIND_INT2), intent(in):: i2vals(*) end function nf_put_vara_int2 integer function nf_put_vara_int(ncid, varid, & & start, count, ivals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: ivals(*) end function nf_put_vara_int integer function nf_put_vara_real(ncid, varid, & & start, count, rvals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) real, intent(in):: rvals(*) end function nf_put_vara_real integer function nf_put_vara_double(ncid, varid, & start, count, dvals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) double precision, intent(in):: dvals(*) end function nf_put_vara_double ! ! 変数の標本配列書き込み ! ! 各次元ごとに標本間隔 stride(i) ごとに書き込み点を選ぶ ! integer function nf_put_vars_text(ncid, varid, & & start, count, stride, text) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*) character(len=*), intent(in):: text end function nf_put_vars_text integer function nf_put_vars_int1(ncid, varid, & & start, count, stride, i1vals) use dc_types, only: NF_KIND_INT1 integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*) integer(NF_KIND_INT1), intent(in):: i1vals(*) end function nf_put_vars_int1 integer function nf_put_vars_int2(ncid, varid, & & start, count, stride, i2vals) use dc_types, only: NF_KIND_INT2 integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*) integer(NF_KIND_INT2), intent(in):: i2vals(*) end function nf_put_vars_int2 integer function nf_put_vars_int(ncid, varid, & & start, count, stride, ivals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*) integer, intent(in):: ivals(*) end function nf_put_vars_int integer function nf_put_vars_real(ncid, varid, & & start, count, stride, rvals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*) real, intent(in):: rvals(*) end function nf_put_vars_real integer function nf_put_vars_double(ncid, varid, & & start, count, stride, dvals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*) double precision, intent(in):: dvals(*) end function nf_put_vars_double ! ! 変数の写像配列書き込み ! ! 標本配列書き込み機能に加え次元を並べ替える機能が付く ! integer function nf_put_varm_text(ncid, varid, & & start, count, stride, imap, text) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*), imap(*) character(len=*), intent(in):: text end function nf_put_varm_text integer function nf_put_varm_int1(ncid, varid, & & start, count, stride, imap, i1vals) use dc_types, only: NF_KIND_INT1 integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*), imap(*) integer(NF_KIND_INT1), intent(in):: i1vals(*) end function nf_put_varm_int1 integer function nf_put_varm_int2(ncid, varid, & & start, count, stride, imap, i2vals) use dc_types, only: NF_KIND_INT2 integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*), imap(*) integer(NF_KIND_INT2), intent(in):: i2vals(*) end function nf_put_varm_int2 integer function nf_put_varm_int(ncid, varid, & & start, count, stride, imap, ivals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*), imap(*) integer, intent(in):: ivals(*) end function nf_put_varm_int integer function nf_put_varm_real(ncid, varid, & & start, count, stride, imap, rvals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*), imap(*) real, intent(in):: rvals(*) end function nf_put_varm_real integer function nf_put_varm_double(ncid, varid, & & start, count, stride, imap, dvals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*), imap(*) double precision, intent(in):: dvals(*) end function nf_put_varm_double ! ! --- 変数の読み取り --- ! ! ! 変数の単要素読み取り ! integer function nf_get_var1_text(ncid, varid, index, chval) integer, intent(in):: ncid, varid integer, intent(in):: index(*) character, intent(out):: chval end function nf_get_var1_text integer function nf_get_var1_int1(ncid, varid, index, i1val) use dc_types, only: NF_KIND_INT1 integer, intent(in):: ncid, varid integer, intent(in):: index(*) integer(NF_KIND_INT1), intent(out):: i1val end function nf_get_var1_int1 integer function nf_get_var1_int2(ncid, varid, index, i2val) use dc_types, only: NF_KIND_INT2 integer, intent(in):: ncid, varid integer, intent(in):: index(*) integer(NF_KIND_INT2), intent(out):: i2val end function nf_get_var1_int2 integer function nf_get_var1_int(ncid, varid, index, ival) integer, intent(in):: ncid, varid integer, intent(in):: index(*) integer, intent(out):: ival end function nf_get_var1_int integer function nf_get_var1_real(ncid, varid, index, rval) integer, intent(in):: ncid, varid integer, intent(in):: index(*) real, intent(out):: rval end function nf_get_var1_real integer function nf_get_var1_double(ncid, varid, index, dval) integer, intent(in):: ncid, varid integer, intent(in):: index(*) double precision, intent(out):: dval end function nf_get_var1_double ! ! 変数の全体読み取り ! integer function nf_get_var_text(ncid, varid, text) integer, intent(in):: ncid, varid character(len=*), intent(out):: text end function nf_get_var_text integer function nf_get_var_int1(ncid, varid, i1vals) use dc_types, only: NF_KIND_INT1 integer, intent(in):: ncid, varid integer(NF_KIND_INT1), intent(out):: i1vals(*) end function nf_get_var_int1 integer function nf_get_var_int2(ncid, varid, i2vals) use dc_types, only: NF_KIND_INT2 integer, intent(in):: ncid, varid integer(NF_KIND_INT2), intent(out):: i2vals(*) end function nf_get_var_int2 integer function nf_get_var_int(ncid, varid, ivals) integer, intent(in):: ncid, varid integer, intent(out):: ivals(*) end function nf_get_var_int integer function nf_get_var_real(ncid, varid, rvals) integer, intent(in):: ncid, varid real, intent(out):: rvals(*) end function nf_get_var_real integer function nf_get_var_double(ncid, varid, dvals) integer, intent(in):: ncid, varid double precision, intent(out):: dvals(*) end function nf_get_var_double ! ! 変数の部分配列読み取り ! integer function nf_get_vara_text(ncid, varid, & & start, count, text) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) character(len=*), intent(out):: text end function nf_get_vara_text integer function nf_get_vara_int1(ncid, varid, & & start, count, i1vals) use dc_types, only: NF_KIND_INT1 integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer(NF_KIND_INT1), intent(out):: i1vals(*) end function nf_get_vara_int1 integer function nf_get_vara_int2(ncid, varid, & & start, count, i2vals) use dc_types, only: NF_KIND_INT2 integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer(NF_KIND_INT2), intent(out):: i2vals(*) end function nf_get_vara_int2 integer function nf_get_vara_int(ncid, varid, & & start, count, ivals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(out):: ivals(*) end function nf_get_vara_int integer function nf_get_vara_real(ncid, varid, & & start, count, rvals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) real, intent(out):: rvals(*) end function nf_get_vara_real integer function nf_get_vara_double(ncid, varid, & start, count, dvals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) double precision, intent(out):: dvals(*) end function nf_get_vara_double ! ! 変数の標本配列読み取り ! integer function nf_get_vars_text(ncid, varid, & & start, count, stride, text) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*) character(len=*), intent(out):: text end function nf_get_vars_text integer function nf_get_vars_int1(ncid, varid, & & start, count, stride, i1vals) use dc_types, only: NF_KIND_INT1 integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*) integer(NF_KIND_INT1), intent(out):: i1vals(*) end function nf_get_vars_int1 integer function nf_get_vars_int2(ncid, varid, & & start, count, stride, i2vals) use dc_types, only: NF_KIND_INT2 integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*) integer(NF_KIND_INT2), intent(out):: i2vals(*) end function nf_get_vars_int2 integer function nf_get_vars_int(ncid, varid, & & start, count, stride, ivals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*) integer, intent(out):: ivals(*) end function nf_get_vars_int integer function nf_get_vars_real(ncid, varid, & & start, count, stride, rvals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*) real, intent(out):: rvals(*) end function nf_get_vars_real integer function nf_get_vars_double(ncid, varid, & & start, count, stride, dvals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*) double precision, intent(out):: dvals(*) end function nf_get_vars_double ! ! 変数の写像配列読み取り ! integer function nf_get_varm_text(ncid, varid, & & start, count, stride, imap, text) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*), imap(*) character(len=*), intent(out):: text end function nf_get_varm_text integer function nf_get_varm_int1(ncid, varid, & & start, count, stride, imap, i1vals) use dc_types, only: NF_KIND_INT1 integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*), imap(*) integer(NF_KIND_INT1), intent(out):: i1vals(*) end function nf_get_varm_int1 integer function nf_get_varm_int2(ncid, varid, & & start, count, stride, imap, i2vals) use dc_types, only: NF_KIND_INT2 integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*), imap(*) integer(NF_KIND_INT2), intent(out):: i2vals(*) end function nf_get_varm_int2 integer function nf_get_varm_int(ncid, varid, & & start, count, stride, imap, ivals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*), imap(*) integer, intent(out):: ivals(*) end function nf_get_varm_int integer function nf_get_varm_real(ncid, varid, & & start, count, stride, imap, rvals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*), imap(*) real, intent(out):: rvals(*) end function nf_get_varm_real integer function nf_get_varm_double(ncid, varid, & & start, count, stride, imap, dvals) integer, intent(in):: ncid, varid integer, intent(in):: start(*), count(*) integer, intent(in):: stride(*), imap(*) double precision, intent(out):: dvals(*) end function nf_get_varm_double end interface end module netcdf_f77