% netCDF�桼������������(version 2.4���ܸ���) by K.Ishioka 96/11/04
%
%\documentstyle[a4j]{jbook}
\documentstyle[a4j]{myjbook}

%\textheight 25cm
\textheight 26cm
\textwidth 18cm
%\topmargin -1cm
\topmargin -1.5cm
\oddsidemargin -0.5cm
\evensidemargin -1.5cm

\newlength{\vs}
%\setlength{\vs}{1.3zh plus 0.1zh minus 0.1zh}
\setlength{\vs}{1.3zh minus 0.1zh}

\begin{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tableofcontents

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter*{}

%\chapter*{��ʸ}
\section*{��ʸ}

Unidata��National Science Foundataion�ˤ�äƻٱ礵��Ƥ���program
��, �ƹ����ؤ��׿�Ū�ʥ���ԥ塼������ӥͥåȥ���Υ��ץꥱ������
����̤���, ���餪��Ӹ���Τ�����絤����Ӵ�Ϣ����ǡ�������ѤǤ���
�褦�ˤ����ΤǤ���.
�����Υǡ�������Ϥ����ɽ�����뤿���, Unidata Program Center�Ǥ�
��ؤ��Ф���, University of Wisconsin, Purdue University, NASA, �����
National Weather Service��ޤ�¾���ȿ��ˤ�äƳ�ȯ���줿���եȥ������ѥ�
���������󶡤��Ƥ���. 
�����δ��ä�ʤ��Τ�, �ꥢ�륿����ǥǡ������������Ӱ��������
Unidata�ˤ�äƳ�ȯ���줿�����ƥ�Ǥ���, ����ؤ��Ƽ��ν�ͭ�ǡ��������
�����ɬ�פ˱����Ƽ�������Ӱ�����٤��Ǥ���Ȥ���Unidata�θ�§�����
�ˤ����ΤǤ���.
Unidata program�ϥǡ������󥿡�������ʤ��Ȥ����Ȥ����פ����Ǥ��� --
�ǡ����Υޥ͡������Ȥ�ʬ�ۤ��줿Ǥ̳�Ǥ���.

���Υ����ɤǵ��Ҥ���Ƥ���Network Common Data Form (netCDF)���եȥ���
����, ����, ����������Unidata���ץꥱ���������Ф��ƶ��̤Υǡ�������
����ˡ�򶡵뤹�뤳�Ȥ�տޤ�����ΤǤ���.
������, ������¬, ������, ��§Ū�����֤��줿�ʻ���, ����ӱ����ޤ���
�졼�������᡼����ޤ�����������ʼ���Υǡ����򰷤���ΤǤ���.

netCDF���եȥ�������I/O�饤�֥��Ȥ��Ƶ�ǽ��, C�ޤ���FORTRAN����Ƥ�
�Ф�, ���ʵ���Ū�ǵ����¸��̵���ե�����˥ǡ������Ǽ����Ӱ��Ф�����
���Ǥ���. ��netCDF�ե������, ̵���¤�¿������̾�Ť���줿�ѿ�(����,
�¿�, ʸ��, �Х���, �����Τ褦�˷����ۤäƤ��Ƥ�褤)��ޤ�, ���ѿ���
¬���ñ�̤������񤭤Τ褦������ǡ�����ȼ�äƤ��Ƥ�褤.
���󥿡��ե������ϴ�¸��netCDF�ե�����˴������ˡ�ǥǡ������ɲä����
�ʤ�ޤ�Ǥ���, �����(����Ĺ��)�쥳���ɹ�¤�Ȥ���ʤ뵡ǽ���Ǥ���.
������, netCDF�饤�֥���, �ѿ���̾������ӥ���ǥ����ˤ��ǡ�����ľ
�ܥ��������ǳ�Ǽ����Ӱ��Ф����Ȥ����Ƥ��Ƥ���, ����椨�˥ǥ�������
�ˤ���(�ޤ��ϥ����ˤ���)�ե�������Ф��ƤΤ�ͭ�Ѥʤ�ΤǤ���.

����ޤǤΤȤ���, Unidata���եȥ���������Ⱦʬ��netCDF�����������Ѥ���
�褦�ˤʤäƤ���, ���Τ褦�ʶ����������٤Ƥ�Unidata���ץꥱ��������
�錄�äƳ�ĥ�����٤��ײ褵��Ƥ���. ���Τ��Ȥϰʲ�����Ū�����:

\begin{itemize}
 \item ���̥ǡ�����ۤʤ륢�ץꥱ�������ˤ�äƻ��Ѥ��뤳�Ȥ�¥�ʤ���.
 \item �ۤʤ륳��ԥ塼���֤ǥǡ����ե����뤬Ʃ��, ���ʤ���Ѵ��ʤ���
       ž���ޤ��϶�ͭ�����Τ��ǽ�ˤ���.
 \item �ե����ޥåȤ��᤹�뤿����̾��񤵤��FORTRAN�����C�ץ�����
       �ޤΥץ�����ߥ�ϫ�Ϥ����������餹.
 \item �ǡ������������ǡ����θ����ͳ�褹�륨�顼�򸺤餹.
 \item ���륢�ץꥱ������󤫤�ν��Ϥ�¾�����ϤȤ��ƻ��Ѥ��뤳�Ȥ���
       �פˤ���.
 \item ���󥿡��ե�������ɸ����Ω��, Unidata�����ƥ�˿��������եȥ���
       ����ޤ�뤳�Ȥ��ñ�ˤ���.
\end{itemize}

���Υץ��������ȤϤ����̤ǤϤ��Ǥ����������Ƥ���.
netCDF�ϸ���, CRAY����ѡ����ʥ륳��ԥ塼���ˤ錄���ؤɤ�UNIX�����
�ơ�������ޤॳ��ԥ塼�ƥ��󥰥ץ�åȥե�����ǻ��Ѥ���Ƥ���.
netCDF�Ϥ��륳��ԥ塼�����(�㤨��FORTRAN���Ѥ���)ʣ���ʥǡ������å�
�������, Ʊ��μ��ʵ���Ū�ʥǡ������åȤ�¾�Υ���ԥ塼�����(�㤨��C
���Ѥ���)��֤Ǥ��Ѵ��ʤ��ǰ��Ф�����˻Ȥ����Ȥ��Ǥ��� ---
netCDF�ե�����ϥͥåȥ����ۤ���ž�����뤳�Ȥ��Ǥ�, �ޤ�, Ŭ�ڤʥͥ�
�ȥ���ե����륷���ƥ��Ȥäƥ�⡼�ȥ����������뤳�Ȥ�Ǥ���.

Unidata�ʳ��Υ��եȥ�������netCDF������������Ѥ��뤳�Ȥ�Unidata�μ���
�ʸܵҤ����פˤʤ� --- ���Τ褦�ʻ��Ѥ����Ū��Unidata�ξ������Ϥ���
��ɽ�����뤿��Τ��¿���Υ��ץ�����Ϳ���� --- �ȿ����Ƥ���Τ�,
netCDF�Υ饤�֥��ϥ饤���󥹤�¾�ν��������ʤ�̵�������ۤ���Ƥ���,
�ǿ��ΥС������򥢥Υ˥ޥ�FTP�Ǽ������뤳�Ȥ��Ǥ���.
�����Ȥ���, ���Υ��եȥ��������絤�ʳؤΥ��ߥ�˥ƥ���ۤ���, ���ϰϤ�
�ز���礤�˼���������Ƥ���褦�Ǥ���, ����, ¿���Υѥ֥�å��ɥᥤ
�󤪤�Ӿ��ѤΥǡ������ϥ����ƥबnetCDF�ե���������ϤȤ��Ƽ��������
���Ȥ��Ǥ���褦�ˤʤäƤ���.

���Ĥ����ȿ���netCDF��ǡ�������������ɸ��Ȥ��ƺ��Ѥ��Ƥ���, National
Center for Supercomputer Applications (NCSA, Urabana-Champaign��
the University of Illinois�˴�Ϣ���Ƥ���)�Ǥ�, netCDF�ץ�����ߥ󥰥�
�󥿡��ե�������``HDF�ե�����''�˥ǡ������Ǽ����Ӱ��Ф�����μ��ʤȤ�
�ƥ��ݡ��Ȥ��褦�Ȥ������Ϥ��ʹ���Ǥ���. ����``HDF�ե�����''�ϰ���Ū��
NCSA�Υġ���ˤ�äƻȤ��Ƥ���ե����ޥåȤǤ���.
�桹�Ϥ��������Ϥ�ٱ礷, ���Ϥ��Ƥ��Ƥ���.

netCDF���եȥ��������Ф����󶡤���Ƥ��륵�ݡ��ȤΥ�٥�ˤĤ��Ƥμ���
�������󤻤���.
Unidata�θ�����Ω���, netCDF�饤�֥���ź�դ���Ƥ���������ս��
��������Ƥ��뤬, ���եȥ�������``���Τޤ�''���ۤ����Ȥ������ȤǤ���.
�º�, ���եȥ������ϻ�����������Ƥ���, Unidata�϶ᤤ����˸����Ʋ���
��³����Ĥ��Ǥ���.
Unidata�Υߥå������ƹ����ؤ��ϵ�ʳؼԤ����Ť��뤳�ȤǤ���Τ�,
���Υ��ߥ�˥ƥ��ˤ�����������ɬ������¤����դ�ʧ����.

�桹��, �ɼԤ����Υ��եȥ�������ͭ�Ѥʤ�ΤǤ�ȴ���, ���ɤ���Ƥ�����
�ʤ����ץꥱ�������ˤ�����ե����ɥХå����桹��Ϳ���Ƥ���뤳�Ȥ�
���Ԥ��Ƥ���.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\chapter*{����}
\section*{����}

Network Common Data Form (netCDF)���󥿡��ե���������Ū��, ����ظ���
�ǡ�����, ���ʵ���Ū�ǥͥåȥ��Ʃ�����Τ�������Ǻ���, ��������, ��
��Ӷ�ͭ���뤳�Ȥ��ǽ�ˤ��뤳�ȤǤ���.
``���ʵ���Ū''�Ȥ����Τ�, �ե����뤬�������񤹤�ǡ����������������
�ޤ�Ǥ���Ȥ������Ȥ��̣���Ƥ���.
``�ͥåȥ��Ʃ����''�Ȥ����Τ�, ����, ʸ���������ư����������ۤʤä�
��ˡ�ǳ�Ǽ���륳��ԥ塼���ˤ�äƥ����������뤳�Ȥ��Ǥ���褦�ʷ�����
�ե����뤬ɽ������Ƥ���Ȥ������Ȥ��̣���Ƥ���.
�������ǡ������åȤ�������뤿���netCDF���󥿡��ե�������Ȥ����Ȥˤ�
��, �ǡ����˲�������������뤳�Ȥ��Ǥ���.
�ǡ�����������, ����, ���Ϥ����ɽ�����뤿��Υ��եȥ�������netCDF����
�����ե��������Ѥ��뤳�Ȥˤ��, ���եȥ������������Ū�������ˤ��뤳
�Ȥ��Ǥ���.

netCDF���եȥ�������netCDF�ǡ����˥����������뤿���C�����FORTRAN����
�����ե�������ޤ�Ǥ���.
�����Υ饤�֥������̤Υ���ԥ塼�ƥ��󥰥ץ�åȥե������¿������
�ѤǤ���.
netCDF�ǡ������������Τ����C++�����perl���󥿡��ե�������ޤ�Unidata
���������ǽ�Ǥ���.
netCDF�Υ桼���Υ��ߥ�˥ƥ��ϥ��եȥ��������ղ�Ū�ʥץ�åȥե������
�ΰܿ������¾�Υץ�����ߥ󥰸���Τ���Υ��󥿡��ե������ˤ�׸�����
����.
netCDF���եȥ������饤�֥��Υ����������ɤϼ�ͳ�˼������뤳�Ȥ��Ǥ�,
���Τ��Ȥ�����ظ��ǡ�������ӥǡ����������ˤ��륽�եȥ�������ξ����
ͭ����Τ�ٱ礹���ΤǤ���.

���Υ桼�����������ɤ�netCDF�ǡ�����ǥ����Ф��Ƥ��뤬, C�����
FORTRAN���󥿡��ե������Τߤ��������ɥ�����Ȥ��Ƥ��ʤ�.
UNIX�����ƥ�Τ���λ���ʸ���, C�����FORTRAN���󥿡��ե������Τ����
UNIX`man'�ڡ����η����Τ�ΤȤ���, netCDF���եȥ������Ȱ��˼����Ǥ�
��.
netCDF�ˤĤ��ƤΤ�깭�Ϥ��ղ�Ū����, �����netCDF�ǡ����򰷤�¾�Υ���
�ȥ������ؤΥݥ��󥿤�ޤ�Ǥ���, ��netCDF World Wide Web������
({\tt `http://www.unidata.ucar.edu/packages/netcdf/'})
����������뤳�Ȥ��Ǥ���.

%-----------------------------------------------------------------------
\section*{����ʸ��}

\begin{enumerate}
\item
Brown, S. A, M. Folk, G. Goucher, and R. Rew,
``Software for Portable Scientific Data Management,''
{\it Computers in Physics},
American Institute of Physics, Vol. 7, No. 3, May/June 1993.
\item
Fahle, J., {\it TeraScan Applications Programming Interface}, SeaSpace,
San Diego, California, 1989.
\item
Fulker, D. W., ``The netCDF: Self-Describing, Portable Files---a Basis
for `Plug-Compatible' Software Modules Connectable by Networks,''
{\it ICSU Workshop on Geophysical Informatics}, Moscow, USSR, August
1988.
\item
Fulker, D. W., ``Unidata Strawman for Storing Earth-Referencing Data,''
{\it Seventh International Conference on Interactive Information
and Processing Systems for Meteorology, Oceanography, and Hydrology}, New
Orleans, La., American Meteorology Society, January 1991.
\item
Gough, M. L., {\it NSSDC CDF Implementer's Guide (DEC VAX/VMS) Version
1.1}, National Space Science Data Center, 88-17, NASA/Goddard Space
Flight Center, 1988.
\item
Jenter, H. L. and R. P. Signell, ``NetCDF: A Freely-Available
Software-Solution to Data-Access Problems for Numerical Modelers,''
{\it Proceedings of the American Society of Civil Engineers Conference
on Estuarine and Coastal Modeling}, Tampa, Florida, 1992.
\item
Raymond, D. J., ``A C Language-Based Modular System for Analyzing and
Displaying Gridded Numerical Data,'' {\it Journal of Atmospheric and Oceanic
Technology}, {\bf 5}, 501-511, 1988.
\item
Rew, R. K. and G. P. Davis, ``The Unidata netCDF: Software for
Scientific Data Access,'' {\it Sixth International Conference on Interactive
Information and Processing Systems for Meteorology, Oceanography, and
Hydrology}, Anaheim, California, American Meteorology Society, February 1990.
\item
Rew, R. K. and G. P. Davis, ``NetCDF: An Interface for
Scientific Data Access,'' {\it Computer Graphics and Applications},
IEEE, pp. 76-82, July 1990.
\item
Treinish, L. A. and M. L. Gough, ``A Software Package for the Data
Independent Management of Multi-Dimensional Data,'' {\it EOS
Transactions}, American Geophysical Union, {\bf 68}, 633-635, 1987.
\end{enumerate}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{����ȥ����������}
\label{����ȥ����������}

%-----------------------------------------------------------------------
\section{netCDF�ǡ������󥿡��ե�����}

Network Common Data Form, ���ʤ��netCDF, �ϥǡ���������η��ǳ�Ǽ����
�Ӱ��Ф�����Υǡ������������ؿ��Υ饤�֥��ؤΥ��󥿡��ե������Ǥ���.
{\bf ����}��n����(n��0,1,2,...)�ζ����¤�Ǥ��٤�Ʊ���ǡ���������(�㤨
��, 8�ӥå�ʸ��, 32�ӥå�����)�����Ǥ�ޤ�Ǥ����ΤǤ���.
{\bf �����顼}(ñ�ʤ��Ĥ���)��0����������Ǥ���.

netCDF�ϥǡ����򼫸ʵ���Ū�ǥͥåȥ��Ʃ�����Υ��֥������Ȥ�ñ��ʥ�
�󥿡��ե��������̤��ƥ��������Ǥ����Τν����ΤȤ��Ƹ��뤳�Ȥ򥵥ݡ�
�Ȥ�����ݳ�ǰ�Ǥ���.
������ͤ�, �ǡ������ɤΤ褦�˳�Ǽ����Ƥ��뤫�ξܺ٤��Τ�ʤ��Ȥ�ľ��
���������Ǥ���.
�ɤ��ñ�̤��Ȥ��Ƥ��뤫�Ȥ��ä��褦�ʥǡ����˴ؤ�����������,
�ǡ����ȤȤ�˳�Ǽ���뤳�Ȥ��Ǥ���.
����Ū�ʥ桼�ƥ���ƥ�����ӥ��ץꥱ�������ץ�������netCDF�ե�����
�˥�����������, ���ꤵ�줿�ǡ����ե�����ɤ��Ѵ�, ���, ����, �����ɽ
�����뤳�Ȥ��Ǥ���.
���Τ褦�ʥ��ץꥱ��������ȯŸ�ϥǡ����ؤΥ��������ӥ�ƥ��β�������
������ظ��Υǡ��������, ���Ϥ����ɽ�����뤿��Υ��եȥ������κ�����
���β����ˤĤʤ����ΤǤ���.

netCDF���եȥ�������{\bf ���Ū�ǡ���������}����������ΤǤ���, �����
netCDF�ե�����Υǡ����˥�����������������Τ��٤Ƥ�̿���, ���󥿡��ե���
���ˤ�ä��󶡤���Ƥ���ؿ��Τߤ�Ȥ�ͤФʤ�ʤ��Ȥ������Ȥ��̣����
����.
�ǡ�����ɽ���ϥ��󥿡��ե�������Ȥ����ץꥱ������󤫤�ϱ�����Ƥ���,
���Τ���, �ǡ����γ�Ǽˡ�ϴ�¸�Υץ������˱ƶ���Ϳ���뤳�Ȥʤ��ѹ���
�뤳�Ȥ��Ǥ���.
netCDF��ʪ��Ū��ɽ���ϥǡ������񤫤줿����ԥ塼������Ω�Ǥ���褦����
�פ���Ƥ���.

Unidata��C, FORTRAN, C++, �����perl�Τ���, ����Ӥ���������UNIX���ڥ졼
�ƥ��󥰥����ƥ�Τ����netCDF���󥿡��ե������򥵥ݡ��Ȥ��Ƥ���.
���Υ��եȥ�������, ���Υ᥸�㡼��꡼��������, ¾��2, 3�Υ��ڥ졼�ƥ�
�󥰥����ƥ�ˤĤ��Ƥ�, �����Υ����ƥ�˥�����������桼���ν��Ϥˤ��
�ưܿ�����ӥƥ��Ȥ���Ƥ���.
Unidata��netCDF���եȥ�������FTP�ˤ�ä�̵�������뤳�Ȥ��Ǥ�, ���Τ���
�Ϲ��Ϥʻ��Ѥ�ٱ礷�Ƥ���.

%-----------------------------------------------------------------------
\section{netCDF�ϥǡ����١������������ƥ�ǤϤʤ�}

����ظ��Υǡ������Ǽ���뤿��ˤʤ���¸�Υǡ����١������������ƥ���
��ʤ��Τ�?
�����, ���Ū�ǡ����١������եȥ�������netCDF���󥿡��ե������ǥ��ݡ�
�Ȥ���Ƥ���褦�ʥǡ������������ˤ�Ŭ���Ƥ��ʤ�����Ǥ���.

�ޤ�����, ��إ�ǥ�򥵥ݡ��Ȥ����¸�Υǡ����١��������ƥ��,
¿�����Υ��֥�������(����)��ǡ������������δ���ñ�̤Ȥ��Ƥϥ��ݡ��Ȥ�
�Ƥ��ʤ�.
�����ط��Ȥ���ɽ�����뤳�Ȥ������ʥǡ������������μ���Τ����Ĥ�����
�ؤˤ��Ƥ��ޤ�, ¿�����ǡ�������Ӻ�ɸ�ϤˤĤ��Ƥ���ݲ����ؤ�Ϳ���ʤ�.
����ظ��Υǡ�������Ф�, ������, ����Ū�˰��������ƲĻ벽���뤿��ˤ�
�����ۤʤä��ǡ�����ǥ뤬ɬ�פǤ���.

���Τ��Ȥ˴�Ϣ����, ����Ū����Ū����ĥǡ����١��������ƥ�ˤ��������
����������: �礭��������Ф��Ƥϥѥե����ޥ󥹤������Ȥ������ȤǤ���.
���������ν���, �ʳ�Ū��ǥ�ν��Ϥ����Ĺ���֤����嵤�ݴ�¬��, �ؤɤ�
�ǡ����١��������ƥब�ȿ�������ΨŪ�ʰ��Ф��Τ���κ����Ť�����ǽ�Ϥ�
Ķ���Ƥ���.

�Ǹ��, ������Ū�Υǡ����١��������ƥ��, �񸻤���ӥ���������Ψ�����
�˵����ˤ���, ����ظ��Υǡ��������, ���������ɽ�����뤿��ˤ���ɬ��
�ʵ�ǽ���󶡤��Ƥ���.
�㤨��, ��ι�������åץǡ��ȵ�ǽ, ����θ���, �ե����ޥåȤ����,
����Ӷ�̳�����Τ�����߷פ��줿������, �ؤɤβʳ�Ū���ץꥱ��������
�����פǤ���.

%-----------------------------------------------------------------------
\section{�ե�����ե����ޥå�}

�ͥåȥ��Ʃ����(�ޥ�����Ω��)��ã�����뤿���, netCDF��
XDR (eXternal Data Representation, \\
{\tt `ftp://ds.internic.net/rfd/rfc1832.txt'}�򻲾�), ���ʤ���ǡ�����
ɽ������ӥ����ɲ��Τ������Ƥ���Ƥ���ɸ��ץ��ȥ���, �ˤ�äƼ�����
��Ƥ���.
XDR�ϥǡ�����ޥ�����Ω�ʥӥåȤ���إ����ɲ�������ˡ���󶡤��Ƥ���.
XDR������������Υ���ԥ塼�����˼�������Ƥ���, ���μ����ˤ�, 8�ӥå�
�ΥХ��Ȥ����󥷥��ƥ�Ȥ˥����ɲ�����ӥǥ����ɲ��Ǥ���Ȥ������Ȥ���
��ɬ�פȤ����.

netCDF�ե���������Τι�¤����9��[netCDF�ե����빽¤�������ǽ]
\pageref{netCDF�ե����빽¤�������ǽ}�ڡ����ǵ��Ҥ���.

�ե����ޥåȤξܺ٤�Appendix B[�ե�����ե����ޥåȻ���]
\pageref{�ե�����ե����ޥåȻ���}�ڡ����ǵ��Ҥ���.
������, �桼�������Υե����ޥåȻ��ͤ��Ѥ���netCDF�ե�������ɤ߽񤭤�
�뤿�����Ω�������٥�Υ��եȥ�������ȯ����Ȥ����ΤϤ�����Ǥ���
��, �ʤ��ʤ�, ���Τ褦�ʹ԰٤ϥե����ޥåȤ��ѹ����줿�ݤ˸ߴ���������
�������������ǽ�������뤫��Ǥ���.

%-----------------------------------------------------------------------
\section{��ǽ��?}

netCDF����ɸ�ΰ�Ĥ��礭�ʥǡ������åȤξ�������ʬ����ؤθ�ΨŪ�ʥ���
�����򥵥ݡ��Ȥ��뤳�ȤǤ���.
������ɸ�򥵥ݡ��Ȥ��뤿���, netCDF�Ͻ缡���������ǤϤʤ��ष��ľ�ܥ�
����������Ѥ���.

XDR�Υ����Хإåɤ��̤�, �ǡ���������, ����ԥ塼�����Υ�����, �ǡ���
�����������ԶѰ���, ����Ӽ���������ԥ塼�����˹礻�Ƥɤ������꤯���塼
�󤵤�Ƥ��뤫�Ȥ��ä����Ȥ�ޤ�¿�������Ǥ˰�¸���Ƥ���. 
���Υ����Хإåɤϥ��ץꥱ�������˻Ȥ������Τλ񸻤���Ӥ���г���
�ƾ�����.
�ɤ�ʾ��ˤ����Ƥ�, XDR�쥤�䡼�Υ����Хإåɤ�, �ܿ����Τ���, �ͥ�
�ȥ��Ʃ��ʥǡ������������Τ����ʧ���в��Ȥ���, �����Ƥ����ˤ��ʤ�
����ΤǤ���.

�ǡ������������θ�Ψ��netCDF���߷פ���������ݤν��פʴؿ����Ǥ��뤬,
���ΨŪ����ˡ�ǥǡ����˥����������뤿���netCDF���󥿡��ե��������Ѥ�
�Ƥ��ޤ��褦�ʤ��Ȥ�ޤ����ꤦ��: �㤨��, �Ƶ�Ͽ����ñ����ͤ�����ɬ��
�Ȥ���褦�ʥǡ��������̤��׵ᤷ�Ƥ��ޤ��褦�ʤ��Ȥˤ�ä�.
���󥿡��ե������򤤤��˸�ΨŪ���Ѥ��뤫�ˤĤ��Ƥλؿˤ�9��[netCDF�ե�
���빽¤�������ǽ]\pageref{netCDF�ե����빽¤�������ǽ}�ڡ�����Ϳ���Ƥ���.

%-----------------------------------------------------------------------
\section{netCDF�Ϥ褤��Ͽ�ե����ޥåȤ�?}

netCDF��������Ǽ���뤿��ΰ�����Ū�ε�Ͽ�ե����ޥåȤȤ��ƻȤ����Ȥ�
�Ǥ���.
netCDF�ǥǡ����򰵽̤��뤳�Ȥϲ�ǽ�Ǥ���(�㤨��, �����٤���ư��������
�򥳡��ɲ�����Τ�32�ӥåȤο�������������8�ӥåȤޤ���16�ӥå���
���������Ȥ��ʤ�)��, netCDF�θ��ԥС������ϥǡ������Ŭ�˰��̤���
�褦�ˤ��߷פ���Ƥ��ʤ�.
���Τ���, netCDF������Υǡ������åȤ����̤������ˤĤ��Ƥ��μ���Ȥä�
���̤���Ū�ε�Ͽ�ե����ޥåȤ��¿���Υ��ڡ�����ɬ�פȤ��뤫�⤷��ʤ�.

%-----------------------------------------------------------------------
\section{�����˽��ä����ʵ���Ū�ǡ���������}

ñ��netCDF��Ȥ������Ǥϥǡ�����``���ʵ���Ū''���Ŀʹ֤���ӵ�����ξ��
�˰�̣������褦�ˤ��뤿��ˤ��Խ�ʬ�Ǥ���.
�ѿ�����Ӽ�����̾���ϰ�̣�����, �������Ϣ���������˽��äƤ���
�٤��Ǥ���.
�������б������ɸ�ѿ����ͤ�(¬��Ǥ�����ˤ�)���äƤ���٤��Ǥ���.

°�����������򶡵뤹���ǽ��פ�����̤�.
��Ϣ���봷�����Ѥ�����Ϣ����ɸ��°�����٤Ƥ�Ȥ����ȤϽ��פʤ��Ȥ�
����.
\ref{°���δ���}��[°���δ���]\pageref{°���δ���}�ڡ���
�Ǥ�, ͽ�󤵤줿°��(netCDF�饤�֥��ˤ��
�ƻ��Ѥ����)����Ӱ���Ū�ʥ��ץꥱ������󥽥եȥ������Τ����°����
�����򵭽Ҥ���.

��¿�������Τ�����鼫�Τ��ղ�Ū�ʴ��������netCDF�ǡ����η�������
�����Ƥ���.
�����δ����ε��Ҥ�, �������Ȥ߹��������ץ�ȤȤ��netCDF
Conventions site\\
({\tt `http://www.unidata.ucar.edu/packages/netcdf/conventions.html'})
���黲�Ȥ��뤳�Ȥ��Ǥ���.

�����δ�����, �դ��路���Ȥ����˻Ȥ���٤���ΤǤ���.
�ղ�Ū�ʴ����ϥ�������ʻ��ѤΤ���ˤ��Ф���ɬ�פȤ���Ƥ���.
���Τ褦�ʴ�����, �⤷Ʊ��ʬ���¾�Υ桼���˴ؿ�������������Ȼפ�
�ʤ��, �嵭��netCDF Conventions site�˴󤻤���٤��Ǥ���.

%-----------------------------------------------------------------------
\section{netCDF���󥿡��ե��������طʤ�ȯŸ}

netCDF���󥿡��ե������γ�ȯ��Unidata��ɬ�פ˴�Ϣ���������ܤ���ɸ:
���ʤ��Unidata���ץꥱ�������ȼ����ޤ줿�ꥢ�륿����ε��ݥǡ���
�Ȥδ֤ζ��̥��󥿡��ե��������󶡤���Ȥ�����ɸ����äƻϤޤä�.
Unidata�Υ��եȥ�������, C�����FORTRAN��ξ������Υ�������������դ�,
¿�ͤʥϡ��ɥ������ץ�åȥե������Ǽ¹Ԥ����褦�տޤ���Ƥ����Τ�,
Unidata����ɸ��ã�����뤳�Ȥ�, ��깭��������ͭ�Ѥʥѥå��������󶡤�
�����ǽ������äƤ���.
���Υѥå�������������������ǽ�ʤ�Τˤ�, ����Ʊ���褦��ɬ�פ����¾��
�ȿ��ȶ�Ʊ���뤳�Ȥˤ�ä�, �ʳ�Ū�ʥǡ������������Τ���Υ��եȥ�����
��Ʊ������ʬ���¾�ο͡��ˤϤޤ�ˤ��������Ѥ��줺, ����ʬ��֤Ǥ��ؤ�
���������Ѥ���ʤ��ä�(Fulker, 1988)�Ȥ��������ξ�����������뤳�Ȥ�桹
�ϴ�˾�����ΤǤ���.

netCDF���եȥ������˺��Ѥ��줿���פʥ��󥻥ץȤ�, NASA Goddard
National Space Science Data Center (NSSDC)�ǳ�ȯ���줿�ǡ�������������
�եȥ������򵭽Ҥ�����ʸ(Treinish and Gough, 1987)��ͳ�褹��.
���Υ��եȥ������ˤ�äƶ��뤵��Ƥ������󥿡��ե�������, Common Data
Format(CDF) �ȸƤФ�Ƥ���.
NASA CDF������, ������Ǽ���뤿�����ݲ��򥵥ݡ��Ȥ��뤿���, �ץ��
�ȥե�������ò�����FORTRAN�饤�֥��Ȥ��Ƴ�ȯ���줿.

NASA CDF�ѥå�������, ���Ϥʥ��ץꥱ�������λ�����ǿ�¿���ΰۤ����
�Υǡ�����Ȥ�����˻��Ѥ���Ƥ��Ƥ���.
�����, (13���֥롼����ΤߤȤ���)������, ��Ǽ�ե����ޥåȤ������Ω��,
������, �桼���Υǡ����ˤĤ��Ƥ�����Ū�ʸ����򥵥ݡ��Ȥ���ǽ��, �����
����Ū�ʥ��ץꥱ�������Υ��ݡ���, �Τ������ˤ���ΤǤ���.

Unidata��CDF�˴ؤ���������åפ�1987ǯ8���Boulder�ǳ�����.
�桹��, CDF FORTRAN�饤�֥����ĥ��, C���󥿡��ե������������, ����
��¸��NASA���󥿡��ե������Ȥθߴ������ݤ��Ĥ�ñ��θƤӽФ��ǥǡ�����
���ΤؤΥ�����������Ƥ��뤿���, NASA�ȶ�Ʊ�����ǽ����õ�椹�뤳�Ȥ�
��Ƥ���.

����Ȥ���Ω��, New Mexico Institute of Minig and Technology��Dave
Raymond��, ���ʵ���Ū������ظ��Υǡ����ؤν缡��������, ����ӥǡ�����
�ù�, ���Ϥ����ɽ���ؤ�``�ѥ��פȥե��륿��''(���ʤ��``�ǡ����ե���'')
Ū���ץ������򥵥ݡ��Ȥ���UNIX���C���եȥ������ѥå�������ȯ���Ƥ�
��.
���Υѥå�������ޤ�``Common Data Format''�Ȥ���̾����ȤäƤ�����, ��
��ϸ��C-Based Analysis and Display System (CANDIS)�Ȳ����줿.
Unidata��Raymond�λŻ�(Raymond, 1988)���Τ�, ̾���Ĥ��μ��������ñ��
�Υǡ������֥���������Ƿ��ΰ㤤�����ѿ�����Ѥ���ʤɤȤ��ä���Υ�
���ǥ����Τ����Ĥ���Unidata��netCDF���󥿡��ե��������Ȥ߹����.

1988ǯ��Ƭ, Unidata��Glenn Davis��XDR�ξ���碌�����netCDF�ѥå�����
�Υץ��ȥ����פ�C�ǳ�ȯ����.
���Υץ��ȥ����פ�, CDF���󥿡��ե�������ñ��ե�����ǥͥåȥ��Ʃ
��ʼ�����ã�����뤿��Υ����Ȥ������ϰ���Ǥ��뤳��, ���������줿��
��������UNIX��VMS�����ƥ��ξ���˰ܿ���ǽ�Ǥ��뤳��, ���������.
������, ���Υץ��ȥ����פϤޤ�, �����ǰܿ��������꤫��NASA CDF�ߴ���
FORTRAN���󥿡��ե�������˾�ޤ��褦�ʰ��������Ĥ褦�ʤ�Τϼº�Ū
�Ǥʤ����Ȥ⼨����.
����, NASA��CDF��Unidata��netCDF���̡���ȯŸ���Ƥ�����, �Ƕ��CDF�С�
������netCDF��¿���ζ���������äƤ���.

1988ǯ��Ƭ, 1987ǯ��Unidata CDF�������åפλ��üԤΰ�ͤǤ��ä�,
SeaSpace��(California��SanDiego�ˤ��뾦�ѥ��եȥ�������ȯ���)��
Joe Fahle��, NASA CDF���եȥ������򤤤��Ĥ����פ��̤ǳ�ĥ����CDF�ѥå���
����C����Ω�˳�ȯ����(Fahle, 1989).
Raymond�Υѥå�������Ʊ�ͤ�, SeaSpace CDF���եȥ������ϴ�Ϣ���ʤ�����
���ä��ѿ���Ʊ���ǡ������֥������Ȥ˴ޤޤ�뤳�Ȥ���Ƥ�, ¿���������
�Υ��������ΰ���Ū�ʷ����ǽ�ˤ��Ƥ���.
Fahle�μ�����, SeaSpace�Ҥˤ�����, �������������ƥ�Τ����������ʳ���
�����Ū�ʳ�Ǽ�����Ȥ��ƻȤ��Ƥ���.
���Υ��󥿡��ե������ȥե����ޥåȤϤ��θ�Terascan�ǡ����ե����ޥåȤ�
ȯŸ���Ƥ��äƤ���.

�桹��, Fahle�Υ��󥿡��ե������򸦵椷����, ���Υ��󥿡��ե�������
NASA���󥿡��ե�������桹����Ū�˳�ĥ���褦�Ȥ��Ʋ桹����ǧ���������
¿�����褷�Ƥ���Ȥ���������ã����.
�桹��, 1988ǯ8��, ��Ĥ�Unidata netCDF���󥿡��ե������ˤĤ��Ƥι��
��ã����, ���ĻĤä�̤���������褹�뤿��ξ����Ϥʥ������åפ�
��������.
���üԤ�, SeaSpace��Joe Fahle, Apple��Michael Gough(NASA CDF�����Ԥΰ�
��), University of Miami��Angel Li(�桹��netCDF�Υץ��ȥ����פ�VMS���
������, �桼���ˤʤ��ǽ���⤢�ä�), �����Unidata�Υ����ƥ೫ȯ������
�դǤ��ä�.
���Υ������åפǤ�, �����Ĥ��δʰײ�ˡ�����������줿��˹�դ�ã��
���줿.
��Ƥ��줿Unidata netCDF���󥿡��ե��������ͤˤ��Υ������åפη��
���Ȥ߹�����ɥ�����Ȥ�, Glenn Davis��Russ Rew�����Υ��եȥ�������
�ե������ȥС������������������, �ո�����뤿��˹������ۤ��줿.
¾�Υǡ��������������󥿡��ե������Ȥ���Ӥ����netCDF��Ȥä��и���,
(Rew and Davis, 1990a), (Rew and Davis, 1990b), (Jenter and Singnell,
1992), �����(Brown, Folk, Goucher, and Rew, 1993)�ǵ�������Ƥ���.

1991ǯ10��, �桹�ϥС������2.0��netCDF���եȥ��������ۤ�ȯɽ����.
C���󥿡��ե������Τ���äȤ�������(�����Υ�������{\tt int}�ǤϤʤ�
{\tt long}���������褦�ˤ���)�ˤ�ä�, MS-DOS����ԥ塼�����Τ褦��
�²��ʥץ�åȥե������Ǥ�netCDF������������夵����, ������¾�Υץ��
�ȥե������Ǥκƥ���ѥ����ɬ�פȤ��ʤ��ä�.
���󥿡��ե������ؤΤ��Τ����ѹ��ˤ�ä�, ��Ϣ�����ե�����ե����ޥå�
�ؤ��ѹ���ɬ�פȤʤ뤳�Ȥ�ʤ��ä�.

1993ǯ6��˥�꡼�����줿netCDF�С������2.3.2��Ʊ���ե�����ե����ޥ�
�Ȥ�ݻ�������, ��Ͽ�ؤ�ñ��ƤӽФ���������, ��Ϣ³�ʥǡ�����ޤ�����
�ؤΥ��������κ�Ŭ��, ����μ����˱�ä���ʬ����ץ��(`stride'���
��), ��Ϣ³�ʥǡ����ؤΥ�������(`mapped array sections'��Ȥ�), ncdump
��ncgen�桼�ƥ���ƥ��β���, ����ӻŪ��C++���󥿡��ե�����, ���ɲ�
����.

%-----------------------------------------------------------------------
\section{���Υ�꡼�����鲿���������ʤä���?}

���Υ����ɤ�, netCDF2.4��1996ǯ2���Ǥ�ʸ�񲽤�����ΤǤ���, �����Ǥ�
�������Ǥ�Ʊ���ե�����ե����ޥåȤ�ݻ����Ƥ��뤬, �С������2.3.2��
��ΰʲ����ѹ���ޤ�Ǥ���:
\begin{itemize}
 \begin{itemize}
  \item �������ץ�åȥե�����Υ��ݡ���
  \item Cray��Ǥ���������Ŭ��
  \item ���󥹥ȡ���δ�ñ��
  \item �ɥ�����Ȥβ���
  \item C++���󥿡��ե��������ɲ�
  \item ��𤵤�Ƥ���Х��Υե��å���
 \end{itemize}
\end{itemize}

{\tt long}�Υ�������{\tt int}�Υ���������礭���褦�ʿ������ץ�åȥե���
����netCDF�򥵥ݡ��Ȥ��뤿���, ��������꡼���Ǥ�, C�����C++���󥿡�
�ե������ˤ����Ƥ�{\tt nclong}���������Ѥ���褦�˴��������礷��.

C++���󥿡��ե��������ɲä��ѹ����ä����, ��Ͽ���Ϥ��⤤����, ʣ����
netCDF�ե�����ؤ�Ʊ���ɸ��������, �����ñ�쵭Ͽ�ؤΥ����������뤳��
�����ưפˤ���.

%-----------------------------------------------------------------------
\section{netCDF������}

netCDF�ǡ�����ǥ��̾���դ�°�������̾���դ������ѿ��ν���˷�������
����ǡ����˹���Ŭ�ѤǤ��뤬, ���Υ�ǥ뤪��ӥ��եȥ������μ����ˤ�
�ˤϤ����Ĥ����פ����¤�����.

���Υǡ�����ǥ�ϥǡ����Υͥ��ȹ�¤�򥵥ݡ��Ȥ��Ƥ��ʤ�.
netCDF���󥿡��ե�������, �ĥ꡼ɽ��, �ͥ��Ȥ�������, �ޤ���¾�κƵ�Ū
�ʥǡ�����¤, �ˤĤ����ؤ����Ω�Ĥ�Τ��󶡤��Ƥ��ʤ���, ����ϼ��,
FORTRAN���󥿡��ե�������������netCDF�ǡ������åȤ��ɤ߽񤭤Ǥ��ʤ�
��Фʤ�ʤ��Ȥ��������ˤ���ΤǤ���.
����Ū�ʻ��Ѥ���Ӵ����ˤ�ä�, ɽ����ǽ�ʥͥ��ȹ�¤�⤢�뤬, ����
�Ϸ�̤Ȥ���, netCDF�κǽ���ɸ�Ǥ���``���ʵ���Ū�ǡ���''�������򼺤ä�
���ޤ�.

���ߤμ��������������¤�, ��netCDF�ǡ������åȤ��Ф���̵���¤ʼ����Ϥ���
����Ĥ������Ƥ���Ƥ����ʤ��Ȥ������ȤǤ���.
ʣ�����ѿ�����Ĥ�̵���¤ʼ�����ͭ���Ƥ��ɤ���, �����Ϥ��٤ư���
ȯŸ���ͤФʤ�ʤ�.
���Τ���, netCDF��ǥ��ʣ���β��Ѥʼ���������������ѿ��򰷤��ʤ�.
�ޤ�, Ʊ��ե�������ǰۤʤ��ѿ����ۤʤ���Ѽ�������Ĥ��Ȥ��Բ�ǽ�Ǥ�
��.
����Ǥʤ���������ѿ�(�㤨��, ``��Ĵ�¤�����'')�������ˤ�ɽ���Ǥ��ʤ�.

���󥿡��ե������Ϻ�ɸ�ѿ����ò�������ǽ, ���ʤ��, �̾���ֹ��դ�����
��˼����˱�ä����֤���ꤹ�뤿��˺�ɸ�ѿ���Ȥ��褦��, ���󶡤��ʤ�.
�ǡ�����ӥå���˥ѥå����뵡ǽ��ޤ��ʤ�(XDR�Ϥ��Τ褦��ǽ�Ϥ��ʤ�).
���Τ���, 9�ӥåȤΥǡ����������, �����˥�����������뤿���16�ӥå�
������Ȥ��Ƴ�Ǽ����Ƥ��ʤ���Фʤ�ʤ�.
�ǡ������åȤΥ������ϸ���2�����Х��Ȥ����¤���Ƥ���, �����, 32�ӥ�
�Ȥ�����դ����ե��åȤ�ȤäƤ��뤫��Ǥ���.

�Ǹ��, ���ߤμ�����netCDF�ե�����ؤ�Ʊ���������������¤��Ƥ���.
ñ��Υե������Ʊ���˰�ͤ��񤭹���, ʣ���ͤ��ɤ߹��ळ�Ȥϵ�����뤬,
ʣ���ͤ�Ʊ���˽񤭹��ळ�Ȥϥ��ݡ��Ȥ��Ƥ��ʤ�.

%-----------------------------------------------------------------------
\section{netCDF�ξ���ײ�}

XDR�ϳ�ȯ��ο��������եȥ��������֤���������ͽ��Ǥ���.
����ˤ�ä�, ��ǽ���ɲä���Ӥ��褤��Ψ���⤿�餵���ͽ��Ǥ���.

���ߤηײ�Ǥ�, Ʃ��ʥǡ����ѥå���, �������줿Ʊ�����Υ��ݡ���,
�ǡ����ؤΥ����ޤ��Ϻ�ɸ�ͤˤ�륢������, ��ΨŪ�ʹ�¤�ѹ�(�㤨��, ��
�����ѿ������°��)�Υ��ݡ���, �������ǡ���������, ����ӳ�Ǽ���֤˴�
���ʤ�����η��Ȥ��ƥǡ����˥����������뤿���, ���򵤤ˤ��ʤ�C�����
FORTRAN���󥿡��ե��������ɲ�, ��ä���ͽ��Ǥ���.
�ä���줦��¾��˾�ޤ���ĥ�Ǥ�, �⤷�¸���ǽ�ʤ��, ¾�Υե�����Υǡ�
�����̤ؤΥݥ���, �ͥ��Ȥ�������(��Ĵ�¤������ɽ��, �ĥ꡼�����¾
�κƵ�Ū�ǡ�����¤�ε���), 2�����Х��Ȱʾ�Υǡ������åȤؤΥ���������
���뵡ǽ, �����ʣ����̵���¤ʼ���, �Υ��ݡ��Ȥ�ä���.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{netCDF�ե�����ι�������}
\label{netCDF�ե�����ι�������}

%-----------------------------------------------------------------------
\section{netCDF�ǡ�����ǥ�}

netCDF�ե������, {\bf ����}, {\bf �ѿ�}, �����{\bf °��}��ޤ�,
�����Ϥ��٤�, ���������ꤹ�뤿���̾�������ID�ʥ�С���ξ�������
�Ƥ���.
�����ι������Ǥ϶���, �ǡ����ΰ�̣���������ظ��Υǡ������å���Υǡ�
���ե�����ɴ֤δط�����¸���뤿����Ѥ��뤳�Ȥ��Ǥ���.
netCDF�饤�֥���, �̾�Υե�����̾�˲ä���, �ե�����ID�ʥ�С��ˤ��
�ƻ��ꤵ�줿ʣ����netCDF�ե������Ʊ���˥����������뤳�Ȥ���Ƥ��Ƥ���.

netCDF�ե������, �ѿ��ˤĤ��Ƥ���̾��, �ǡ���������, ���(������), 
�����������Ƭ�Υǥ��������ɥ쥹��ޤ������ܥ�ơ��֥��ޤ�Ǥ���.
�����Ǥ�, ����餬���ꤵ��������ֹ�(ź��)�������ؿ��Υǥ��������ɥ쥹
�˳�Ǽ�����.
����ˤ��, �������ֹ��Ͽ��Υե�����ɤȤ���, �ޤ��ϵ�Ͽ�κ�����
��(��إǡ����١����Τ褦��)�˳�Ǽ����ɬ�פ��ʤ��ʤäƤ���.
���Τ��Ȥ�, ��»�ͤ�¿���ʤ����, ��®�ǥ���ѥ��Ȥʳ�Ǽˡ���󶡤��Ƥ�
��.

%-----------------------------------------------------------------------
\subsection{̾���դ��δ���}

����, �ѿ������°����̾����, Ǥ�դαѿ���(��, �������������`\_'�����
�ϥ��ե�`-')����ǹ�������, ��Ƭ��ʸ���ޤ��ϥ�������������Ǥʤ���Ф�
��ʤ�.
(������, �����������������Ϥޤ�̾���ϥ����ƥ����ӤΤ����ͽ�󤵤��
����.)
netCDF�ե�����ˤ����Ƥ���ʸ����ʸ���϶��̤����.

\subsection{network Common Data Form Language (CDL)}
\label{CDL}

������netCDF�����Ȥä�netCDF�ǡ�����ǥ�γ�ǰ���������褦.
���Υե�����ϼ���, �ѿ�, �����°����ޤ�Ǥ���.
���δ�ñ��netCDF���֥������Ȥ򵭽Ҥ���Τ˻Ȥ���ɽ����, CDL(network
Common Data form Language)�ȸƤФ�, netCDF�ե�����򵭽Ҥ��뤿�������
�ʼ��ʤ�Ϳ����.
netCDF�ե����륷���ƥ��, �Х��ʥ��netCDF�ե����뤫��ʹֻظ���CDL��
�����ȥե����������, ����Ӥ��εդ�Ԥ��桼�ƥ���ƥ���ޤ�Ǥ���.

\begin{quote}
\baselineskip=\vs
\begin{verbatim}
netcdf example_1 {  // netCDF�ե�������Ф���CDLɽ������

dimensions:          // ����̾����ӥ��������ޤ���������
        lat = 5, lon = 10, level = 4, time = unlimited;

variables:           // �ѿ��η�, ̾��, ��, °��
        float   temp(time,level,lat,lon);
                    temp:long_name     = "temperature";
                    temp:units         = "celsius";
        float   rh(time,lat,lon);
                    rh:long_name = "relative humidity";
                    rh:valid_range = 0.0, 1.0;      // �Ǿ�, ������
        int     lat(lat), lon(lon), level(level);
                    lat:units       = "degrees_north";
                    lon:units       = "degrees_east";
                    level:units     = "millibars";
        short   time(time);
                    time:units      = "hours since 1996-1-1";
        // �������Х�°��
                    :source = "Fictional Model Output";

data:                // ���ץ����Υǡ����������
        level   = 1000, 850, 700, 500;
        lat     = 20, 30, 40, 50, 60;
        lon     = -160,-140,-118,-96,-84,-52,-45,-35,-25,-15;
        time    = 12;
        rh      =.5,.2,.4,.2,.3,.2,.4,.5,.6,.7,
                 .1,.3,.1,.1,.1,.1,.5,.7,.8,.8,
                 .1,.2,.2,.2,.2,.5,.7,.8,.9,.9,
                 .1,.2,.3,.3,.3,.3,.7,.8,.9,.9,
                  0,.1,.2,.4,.4,.4,.4,.7,.9,.9;
}
\end{verbatim}
\end{quote}

netCDF�ե������CDLɽ����, �����������(\ref{ncdump}��[ncdump]\pageref{ncdump}
�ڡ����򻲾�)�桼�ƥ���ƥ��ץ������{\bf ncdump}��ȤäƼ�ưŪ�����������.
�⤦��Ĥ�netCDF�桼�ƥ���ƥ�{\bf ncgen}��CDL�����Ϥ���netCDF�ե�����
����������(�ޤ���, ���ץ�����, netCDF�ե��������������Τ�ɬ�פʸ�
�ӽФ���ޤ��C�ޤ���FORTRAN�����������ɤ���������)
(\ref{ncgen}��[ncgen]\pageref{ncgen}�ڡ����򻲾�).

CDLɽ���ϴ�ñ�Ǥ��������˼�������Ū�Ǥ���.
netCDF�ե�����ι������Ǥ����������, ��괰���������ˤʤ�.
���������ä�, CDLʸ�����ߥ�����ǽ��äƤ��뤳�Ȥ����դ��줿��.
�ɤ߰פ��褦��, ����, ����, ����Ӳ��Ԥ�Ȥ��Τϼ�ͳ�Ǥ���.
CDL��, �ɤιԤǤ�`{\tt //}'�ʲ�������Ǥ���.
netCDF�ե������CDL���Ҥϰʲ��Τ褦�ʷ���Ȥ�:
\begin{quote}
\begin{verbatim}
  netCDF ̾�� {
    dimensions: ...
    variables: ...
    data: ...
  }
\end{verbatim}
\end{quote}
������, {\bf ̾��}��{\tt ncgen}�桼�ƥ���ƥ��ˤ�äƥե�����̾������
�����ݤΥǥե���ȤȤ��ƤΤ߻Ȥ���.
CDFɽ����3�ĤΥ��ץ������ʬ��������, ������{\tt dimensions}, {\tt
variables}, �����{\tt data}�Υ�����ɤ�Ƴ�������.
netCDF�μ����������{\tt dimensions}������ɤθ�ˤʤ���, netCDF�ѿ�
��°����{\tt variables}������ɤθ���������, �ѿ��Υǡ�������դ�
��{\tt data}������ɤθ�ˤʤ����.

%-----------------------------------------------------------------------
\section{����}

�����ϼºݤ�ʪ��Ū�ʼ�����ɽ������˻Ȥ�줦��, �㤨��, ����, ����, ��
��, �ޤ��Ϲ��٤ʤɤǤ���.
������, ¾����, �㤨��, ��¬���ơ��������ǥ�μ¹��ֹ�ʤ�, �����
�Ť����뤿��˻Ȥ����Ȥ�Ǥ���.

netCDF�μ�����{\bf ̾��}��{\bf ������}��ξ������äƤ���.
�����Υ�������Ǥ�դ����������Ǥ���, ������, netCDF�ե�����ΰ�Ĥμ���
��{\tt UNLIMITED}�Υ���������Ĥ��Ȥ��Ǥ���.

���Τ褦�ʼ�����{\bf ̵���¼���}�ޤ���{\bf ��Ͽ����}�ȸƤФ��.
̵���¼�������ä��ѿ���, ���μ����˱�äƤɤ��Ĺ���ˤ��뤳�Ȥ�Ǥ���.
̵���¼������ֹ��, ����Ū�ʵ�Ͽ�ظ��Υե�������ε�Ͽ�ֹ�ˤ褦�ʤ��
�Ǥ���.
netCDF�ե������̵���¼������ĤޤǤ������Ƥʤ���, �����̵���Ƥ�褤.
�ѿ���̵���¼�������ľ��ˤ�, ���μ����ϺǤ��̣�Τ���(�Ǥ��ä���
�Ѥ��)�����Ǥʤ���Фʤ�ʤ�.
���ä�, ������̵���¼�����CDL�����ˤ�����ǽ�μ����Ǥʤ���Фʤ��
��(C������ǤϺǽ�� FORTRAN�ǤϺǸ�μ����Ǥ���).

CDL�μ��������CDL�������{\tt dimensions}�θ�ΰ�Ĥޤ��Ϥ���ʾ��
�ԤǤ��뤳�Ȥ��Ǥ���.
Ʊ��Ԥ�ʣ���μ�����������뤳�Ȥ�Ǥ�, ���ξ��ϥ���ޤǶ��ڤ�.
�������{\bf ̾��}$=${\bf ������}�η����Ǥ���.

�����Ǥ�4�Ĥμ���: {\tt lat}, {\tt lon}, {\tt level},
�����{\tt time}������. �ǽ��3�Ĥϳ�����Ƥ�줿���ꥵ�����Ǥ���;
{\tt time}��{\tt UNLIMITED}�Υ������������Ƥ��Ƥ��뤬,
�����, {\bf ̵����}�����Ǥ��뤳�Ȥ��̣���Ƥ���.

netCDF�ե��������̾�Ť���줿����ñ�̤�{\bf �ѿ�}�Ǥ���.
�ѿ������������, ����{\bf ��}�ϼ����Υꥹ�ȤȤ������������.
�����μ����Ϥ��Ǥ�¸�ߤ��Ƥ���.

�����ο���{\bf ���}(��̾ �ǥ���󥷥�ʥ�ƥ�)�ȸƤФ��.
�����顼�ѿ��ϥ��0�Ǥ���, �٥��ȥ�ϥ��1, ����ӹ���ϥ��2��
����.

�ѿ��η������ꤹ��ݤ�, Ʊ����������ٰʾ�Ȥ����Ȥ��Ǥ���.
�㤨��, {\tt correlation(instrument, instrument)}�ϰۤʤ�¬����Ѥ���
¬��֤���ؤ�Ϳ������ع���Ȥ��뤳�Ȥ��Ǥ���.
������, ʪ��Ū�ʶ���/���֤μ������б����뼡������ĥǡ�����, �ۤʤ뼡
������ʤ������äƤ���٤��Ǥ���, ���Ȥ������Τ����Τ����Ĥ���Ʊ��
�������Ǥ��äƤ�.

%-----------------------------------------------------------------------
\section{�ѿ�}

�ѿ���, �ǡ���������ʬ��netCDF�ե�����˳�Ǽ���뤿����Ѥ�����.
{\bf �ѿ�}��Ʊ�������ͤ������ɽ������.
�����顼�ͤ�0��������Ȥ��ư�����.
�ѿ���̾��, �ǡ�����, ������ѿ��������������ݤ˻��ꤵ�줿�����Υꥹ��
�ǵ��Ҥ��줿������äƤ���.
�ѿ��ϴ�Ϣ����°������Ĥ��Ȥ��Ǥ�, ������ѿ�����������������ɲ�, ��
��, �ޤ����ѹ����뤳�Ȥ��Ǥ���.

�ѿ��ǡ�������, netCDF��{\bf ��}�ξ����ʽ���ΰ�ĤǤ���,
���ν����, C���󥿡��ե������Ǥ�̾��{\tt NC\_BYTE}, {\tt NC\_CHAR},
{\tt NC\_SHORT}, {\tt NC\_LONG}, {\tt NC\_FLOAT}, �����{\tt NC\_DOUBLE}
�����, FORTRAN���󥿡��ե������Ǥ��б�����̾��{\tt NCBYTE},
{\tt NCCHAR}, {\tt NCSHORT}, {\tt NCLONG}, {\tt NCFLOAT}, �����
{\tt NCDOUBLE}����äƤ���.
CDLɽ���Ǥ�, �����η��Ϥ���ñ��{\tt byte}, {\tt char}, {\tt short}, 
{\tt long}, {\tt float}, �����{\tt double}��Ϳ������.
CDLɽ���Ǥ�, {\tt int}��{\tt long}��Ʊ�ո�Ȥ��ƻȤäƤ�褯, ��
��{\tt real}��{\tt float}��Ʊ����Ȥ��ƻȤäƤ�褤.
�ƥ����פ����Τʰ�̣�ˤĤ��Ƥϸ��
\ref{netCDF�ǡ�����}��[netCDF�ǡ�����]\pageref{netCDF�ǡ�����}�ڡ���
�Ǥε�������.

CDL�ѿ������CDL��˥å���ǥ������{\tt variables}�θ�Ǥʤ����.
�����ϰʲ��η���Ȥ�.
����������ѿ��ξ��:
\begin{quote}
{\bf ��\ \ �ѿ�̾} ({\bf ����̾1}, {\bf ����̾2}, ... );
\end{quote}
�����顼�ѿ��ξ��:
\begin{quote}
{\bf ��\ \ �ѿ�̾};
\end{quote}

�嵭��CDL����ˤ�����, 6�Ĥ��ѿ�������.
�ʲ��ǵ�������褦��, �����Τ�����4�ĤϺ�ɸ�ѿ��Ǥ���.
�Ĥ���ѿ�(���ѿ��ȸƤФ�뤳�Ȥ⤢��){\tt temp}�����{\tt rh}�ϰ���Ū
�˥ǡ����ȸ��ʤ�����Τ�ޤ�Ǥ���.
�����γ��ѿ���̵���¼�����{\tt time}����켡���Ȥ��ƻ��äƤ���Τ�,
������{\bf ��Ͽ�ѿ�}�ȸƤФ��.
��Ͽ�ѿ��ǤϤʤ��ѿ���, ���μ������������Ѥ�Ϳ��������ꥵ����(�ǡ�
���ͤο�)�����.
��Ͽ�ѿ��Υ������⼡�����������ѤǤ��뤬, ���ξ��ˤϤ����Ѥ��Ѳ�����.
�ʤ��ʤ�, �����Ѥˤ��Ѳ�������̵���¼����Υ�������ޤ�Ǥ��뤫��Ǥ���.
̵���¼����Υ������ϵ�Ͽ�ο��Ǥ���.

%-----------------------------------------------------------------------
\subsection{��ɸ�ѿ�}

�ѿ���������Ʊ��̾������ĤΤ������ʤ��ȤǤ���.
���Τ褦���ѿ���netCDF�饤�֥��ˤ��������̤ʰ�̣�ϻ����ʤ�.
������, ���Τ褦���ѿ��Ϥ��Υ饤�֥����Ѥ������̤˰�����Ȥ�������
������.

������Ʊ��̾��������ѿ���{\bf ��ɸ�ѿ�}�ȸƤФ��.
������, �����ѿ���, ���μ������б�����ʪ��Ū�ʺ�ɸ���������.
�嵭��CDL�����{\tt lat}, {\tt lon}, {\tt level}, �����{\tt time}�κ�
ɸ�ѿ���ޤ�, �����ϰʲ��Τ褦���������Ƥ���:
\begin{verbatim}
        int     lat(lat), lon(lon), level(level);
        short   time(time);
   ...
 data:
        level   = 1000, 850, 700, 500;
        lat     = 20, 30, 40, 50, 60;
        lon     = -160,-140,-118,-96,-84,-52,-45,-35,-25,-15;
        time    = 12;
\end{verbatim}

������, �����κ�ɸ�˱�ä����֤��б��������, ����, ����, ����ӻ�
���������Ƥ���.
���ä�, 1000, 850, 700, �����500�ߥ�С�����б��������, ������̰�
20, 30, 40, 50, 60�٤ǤΥǡ���������.
�ƺ�ɸ�ѿ��ϥ٥��ȥ�Ǥ���, Ʊ��̾���μ����Τߤ��鹽������������Ĥ�
�Ȥ����դ��줿��.

�����˱�ä����֤�{\bf �ֹ�}�ˤ�ä����ꤵ���.
����ϺǾ��ͤȤ���C�ץ������Ǥ�0, FORTRAN�Ǥ�1����������Ǥ���.
���ä�, 700�ߥ�С����٥���ֹ�Ȥ���C�Ǥ�2��FORTRAN�Ǥ�3�����.

�������б������ɸ�ѿ�����ľ��, ���κ�ɸ�ѿ���, �����˱�ä����֤���
�ꤹ�뤿���, ����Ū�Ǥ��Ĥ�������ʤ��Ȥ�¿�����ʤ��󶡤���.
��ɸ�ѿ������Ѥ��븽�ߤΥ��ץꥱ�������ѥå������϶��̤���, ��ɸ�ѿ�
��������ñĴ(���٤Ƥ��ͤ��ۤʤ꤫�����äޤ��ϸ������Ƥ���)�ʿ��ͥ٥���
��Ǥ��뤳�Ȥ��ꤷ�Ƥ���.
��ɸ�ѿ����ͤȤ���, ʸ����٥�Τ褦�ʤ�Τ����Ƥ���褦�ʤ�����Ū
�ʴ�����������褦�Ȥ����ײ褬����.

%-----------------------------------------------------------------------
\section{°��}

netCDF��{\bf °��}�ϥǡ����ˤĤ��ƤΥǡ���(����ǡ����ޤ��ϥ᥿�ǡ���)
���Ǽ���뤿��˻Ȥ���. ���������Ū�ʥǡ����١����ˤ�����ǡ�������
����ӿ�ɽ�˳�Ǽ���������¿�����̤����������ΤǤ���.
�ؤɤ�°����������ѿ��˴ؤ��������󶡤���.
�����Ϥ����ѿ���̾��(�ޤ���ID)�ˤ���°����̾�����ղä�����Τˤ�ä�
���̤����.

�����Ĥ���°���ϥե�����˴ؤ����������礷��Ϳ��, {\bf �������Х�}°
���ȸƤФ��.
�����϶�����ѿ�̾(CDL�Ǥ�)�ޤ������̤ʶ����ѿ�ID(C�ޤ���Fortran��)
��°��̾���ղä�����ΤǼ��̤����.

°���ϴ�Ϣ�����ѿ�(�������Х�°�����Ф��ƤϤʤ�), ̾��, �ǡ�����, Ĺ��,
������ͤ���äƤ���.
���ߤΥС������Ǥ�, ���Ƥ�°����٥��ȥ�Ȥ��ư���;
�����顼�ͤ�ñ�����ǥ٥��ȥ�Ȥ��ư�����.

����Ū��°��̾��, ���줬Ŭ���ʾ��ˤϻȤ��٤��Ǥ���.
������̾���ϤǤ��������̣�����Τˤ���٤��Ǥ���.

°���η��������κݤ˻��ꤵ���.
°���Τ���˵�����Ƥ��뷿��, �ѿ��Τ����netCDF�ǡ�������Ʊ��Ǥ���.
Ʊ��̾����°���Ǥ�, �б������ѿ����ۤʤäƤ����, �����ۤʤäƤ�����
�⤢��.
�㤨��, {\tt long}�����ѿ����Ф���ͭ���ʥǡ����κ����ͤ���ꤹ��°��
{\tt valid\_max}��{\tt long}���Ǥ���٤��Ǥ������, {\tt double}������
�����Ф���°��{\tt valid\_max}��{\tt double}���Ǥ���٤��Ǥ���.

°�����ѿ��伡������ưŪ�Ǥ���;
���ʤ��, �������줿��Ǥ������뤳�Ȥ��Ǥ�, ���Ĥ����η�, Ĺ��, ��
����ͤ��Ѥ��뤳�Ȥ��Ǥ���. ����, netCDF���󥿡��ե��������ѿ�������
����, ���η�������Ѥ��뤿��μ��ʤ��󶡤��Ƥ��ʤ�.

°�����������CDLɽ���ϰʲ��η���Ȥ�.
�ѿ���°���ξ��:
\begin{quote}
{\bf �ѿ�̾:°��̾} = {\bf �ͤΥꥹ��};
\end{quote}
�������Х�°���ξ��:
\begin{quote}
{\it :°��̾} = {\bf �ͤΥꥹ��};
\end{quote}
��°���η������Ĺ����CDL�ˤ������ۤˤ��������ʤ�;
������°���˳�����Ƥ�줿�ͤ���������.
°���Τ��٤Ƥ��ͤ�Ʊ�����Ǥʤ���Фʤ�ʤ�.
����������netCDF��������ͤΤ���˻Ȥ��뵭ˡ�ϸ�ǵ�������
(\ref{�ǡ���������Ф���CDLɽ��}��[�ǡ���������Ф���CDLɽ��]
\pageref{�ǡ���������Ф���CDLɽ��}�ڡ����򻲾�).

netCDF����(2��[CDL��]\pageref{CDL}�ڡ����򻲾�)�ˤ�����, {\tt units} ���ѿ�
{\tt lat} ���Ф���°���Ǥ���, 13ʸ������� {\tt `degrees\_north'} �����.
������, {\tt valid\_range}���ѿ�{\tt rh}���Ф���°���Ǥ���, Ĺ��2����
{\tt `0.0'}�����{\tt `1.0'}�����.

��Ȥ��Ƶ󤲤�netCDF�ե�������Ф��ư�ĤΥ������Х�°��---{\tt
source}---���������Ƥ���.
����ϥǡ������������뤿���ʸ����Ǥ���.
���¤�netCDF�ե�����Ǥ�, ���θ�, ����, ����, ����ӥե������¾��
���������礷�Ƶ��Ҥ��뤿��Τ��¿���Υ������Х�°�����������.

netCDF�ե������ù��������Ū�ʥ��ץꥱ��������¿����, ɸ��Ū��°��
�δ���������Ȥ��Ƥ���, �ä���ͳ���ʤ���Ф��δ����˽������Ȥ򶯤�����
��.
{\tt units}, {\tt long\_name}, {\tt valid\_min}, {\tt valid\_max},
{\tt valid\_range}, {\tt scale\_factor}, {\tt add\_offset},
{\tt \_FillValue}, �����¾�δ���Ū��°���ξ���ˤĤ��Ƥ�
\ref{°���δ���}��[°���δ���]\pageref{°���δ���}�ڡ����򻲾�.

netCDF�ե����뤬�ǽ���������Ƥ��餺�äȸ�ˤʤäƤ�, °�����ɲä���
���Ȥ��Ǥ���Τ�, ��������ˤʤ뤫�⤷��ʤ�°�����٤Ƥ򸫱ۤ��ƻȤ�ɬ
�פϤʤ�.
������, ��¸�Υե�����˿�����°�����ɲä��뤳�Ȥ�, ���Υե�����򥳥ԡ�
����Τ�Ʊ�������Ȥ������äƤ��ޤ�.
��깭�Ϥʵ����ˤĤ��Ƥ�, 9��[netCDF�ե����빽¤�������ǽ]
\pageref{netCDF�ե����빽¤�������ǽ}�ڡ����򻲾ȤΤ���.

%-----------------------------------------------------------------------
\section{°�����ѿ��ΰ㤤}

�ǡ�������ʬ�Τ���˻Ȥ����ѿ��Ȥ��о�Ū��, °�������Ū�ǡ����ޤ���
�ǡ����˴ؤ������Τ���˻Ȥ���.
netCDF���֥������Ȥ˴�Ϣ, °���˳�Ǽ��������Ū�ǡ��������̤�, ������
�����˾���Ǥ���ۤɾ�����.
������, �ѿ��ϥ����˴����ˤϤᤳ��ˤ��礭�᤮�뤳�Ȥ�¿��,
�ù��Τ���ˤ���ʬ��ʬ����ɬ�פ�����.

°�����ѿ��Ȥδ֤Τ⤦��Ĥΰ㤤��, �ѿ���ʣ���������������Ȥ�������
�Ǥ���.
°���Ϥ��٤ƥ����顼(ñ�����)�ޤ��ϥ٥��ȥ�(��Ĥθ��ꤵ�줿����)�Τ�
���餫�Ǥ���.

�ѿ���, �ǡ����ͤ������Ƥ�������, ̾��, ��, ����ӷ����������
�������Τ�, �ѿ����ͤ�⤿����¸�ߤ�����.
°�����ͤ�°�������������ݤ˻��ꤵ���Τ�, °�����ͤ�������ˤ�¸��
�Ǥ��ʤ�.

�ѿ���°������Ĥ��Ȥ��Ǥ��뤬, °����°������Ĥ��Ȥ��Ǥ��ʤ�.
�ѿ��˳�����Ƥ�줿°���Ϥ����ѿ���Ʊ��ñ�̤���äƤ�褤��(��:
{\tt valid\_range}), �ޤ���ñ�̤�����ʤ��Ƥ�褤
(��: {\tt scale\_factor}).
��Ϣ�����ѿ���ñ�̤Ȱۤʤ�ñ�̤�ɬ�פȤ���ǡ������Ǽ����������,
°�����ष���ѿ���Ȥ��٤��Ǥ���.
�����̤ˤ�, �⤷�ǡ������������������뤿�������ǡ�����ɬ�פȤ���
��, ʣ�������Ǥ��뤫, �������ͤ�����Ť����뤿���������줿netCDF��
���Τ����줫��ɬ�פȤ��뤫, �ޤ��Ͻ���ʳ�Ǽ�̤�ɬ�פȤ�����ˤ�, ��
�Τ褦�ʥǡ�����°���Ȥ��ƤǤϤʤ��ष���ѿ��Ȥ���ɽ�������٤��Ǥ���.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{�ǡ���}
\label{�ǡ���}

���ξϤǤ�6�Ĥδ���netCDF�ǡ�����, netCDF�ǥ��ݡ��Ȥ���Ƥ���ǡ�����
�������μ���, ���������ʳ��Υǡ�����¤��netCDF�ե�����ˤ����˼�����
���뤫�Ȥ������ȤˤĤ��Ƶ�������.

%-----------------------------------------------------------------------
\section{netCDF�ǡ�����}
\label{netCDF�ǡ�����}

netCDF�ǥ��ݡ��Ȥ���Ƥ�����ܤη��ϸ��߰ʲ��Τ褦�ˤʤäƤ���:
\begin{quote}
\begin{tabular}{ll}
\tt character & ʸ��ɽ�����뤿���8�ӥå�ʸ��\\
\tt byte & ���Ĥ��ޤ������ʤ���8�ӥå�����(�ʲ��ε����򻲾�)\\
\tt short & ���Ĥ�16�ӥå�����\\
\tt long & ���Ĥ�32�ӥå�����\\
\tt float & 32�ӥå�IEEE��ư��������\\
\tt double & 64�ӥå�IEEE��ư��������
\end{tabular}
\end{quote}

{\tt byte}���ɲä���Ƥ��뤳�Ȥ�������ʤ��η���­��ʤ����Ȥ������,
netCDF��C��Ʊ�����ܥǡ������򥵥ݡ��Ȥ��Ƥ���.
���ܥǡ�������̾����CDL��ͽ���ˤʤäƤ���Τ�, �ѿ�, ����, �����°
����̾���Ȥ��Ʒ���̾����ȤäƤϤʤ�ʤ�.

���ΤȤ���, {\tt byte}�����Ĥ�(-128����127)�ޤ������ʤ�(0����255)
�Τɤ���Ȥ���Ǥ���.
netCDF�θ��ߤΥС�������8�ӥåȤΥХ��Ȥ򤽤줬���Ĥ����ɤ�������
��ɬ�פʤ���ñ����ɤ߽񤭤���.
������, netCDF�ξ���ΥС������ǥǡ����εͤ���ߵ�ǽ���ɲä�����,
�ͤλ��ѱ黻��ɬ�פȤʤ�Τ�, ���Τ褦����Ū�Τ����{\tt byte}�ǡ�����
{\bf ���Ĥ�}�Ȳ�ᤵ���褦�ˤʤ������.

�����η���, C�����FORTRAN�ץ�����ޤˤȤäƤʤ��ߤ�����, ����Υ���
�ԥ塼��������Ω����(XDR��Ȥ���)���Τʳ���ɽ�������, ���ĥǡ�������
�ȳƥǡ�����ɽ������Τ�ɬ�פʥӥåȿ��Ȥδ֤Υȥ졼�ɥ��մط���Ŭ�٤�
�����ϰϤ�Ϳ����, �Ȥ��ä���ͳ�����Ф줿.
netCDF�ǡ������ȸ���Υǡ������Ȥδ֤��б��ˤĤ��Ƥ�, 
\ref{�ѿ�}��[�ѿ�]\pageref{�ѿ�}�ڡ����򻲾ȤΤ���.

64�ӥå����������n�ӥåȤؤεͤ���ߤ�ޤ���������ǡ�������ײ褵��
�Ƥ���.

%-----------------------------------------------------------------------
\section{�ǡ�����������}

netCDF�ǡ����˥�������(�ɤߤޤ��Ͻ�)���뤿���, �����ץ󤵤줿netCDF
�ե�����, netCDF�ѿ�, ������ѿ������Ǥ����ꤹ�����(�㤨���ֹ�)�����
����.
�����, netCDF���󥿡��ե������ϵ�Ͽ�ظ��Υǡ����������������⥵�ݡ���
���Ƥ���.

�ǡ����ؤΥ���������{\bf ľ��}�Ǥ���. ����Ϥ��ʤ���礭�ʥǡ������å�
��ξ�������ʬ�����, �ǽ�ˤ������ˤ��뤹�٤ƤΥǡ����˥������������
���ʤ��Ȥʤ���ΨŪ�˥��������Ǥ���Ȥ������Ȥ��̣���Ƥ���.
�ѿ�����ꤷ�ƥǡ������ɤ߽񤭤򤹤��, �ե�������Ǥΰ��֤���ꤷ�Ƥ�
�ʤ����, �ե��������¾���ѿ����ɤΤ��餤���뤫�Ȥ������Ȥ���Ω���ƥǡ�
�������������Ǥ�, �ǡ����ˤ��¿�����ѿ����ɲä���褦�ʥǡ����ե����ޥ�
�Ȥ��ѹ��ˤ�äƥץ�����ब�ƶ�����ʤ��ʤ�.

C�����FORTRAN���󥿡��ե������ˤ�����, �ǡ����˥����������褦�Ȥ��뤿
�Ӥ˥ե������̾���ǻ��ꤹ��ΤǤϤʤ�, ����˥ե�����ID�ȸƤФ�뾮
��������(����ϥե����뤬�ǽ�������ޤ��ϥ����ץ󤵤줿�ݤ�������)��
��äƻ��ꤵ���.
Ʊ�ͤ�, �ѿ���ǡ������������Τ��Ӥ�̾���ǻ��ꤵ���櫓�ǤϤʤ�,
�ѿ�ID(netCDF�ե���������ѿ������ꤹ�뤿��˻Ȥ��뾮��������)�ǻ���
�����.
(C++���󥿡��ե������ˤ����Ƥ�, �����ץ󤵤줿netCDF�ե����뤪����ѿ�
�ϥ��֥������ȤǤ���Τ�, ID��ɬ�פʤ�.)

%-----------------------------------------------------------------------
\subsection{�ǡ������������η���}

netCDF���󥿡��ե�������, �����ץ󤵤줿netCDF�ե�������Υǡ����ͤؤ�
ľ�ܥ��������ˤĤ��Ƥ����Ĥ��η����򥵥ݡ��Ȥ��Ƥ���.
�����Υ��������η�����İ�Ĥ�, �������������Ƥ������֤���������:
\begin{itemize}
\item {\bf ����ǥå����٥��ȥ�}����ꤷ���ġ������ǤؤΥ�������;
\item {\bf ����ǥå����٥��ȥ�}�����{\bf ������ȥ٥��ȥ�}����ꤷ��
������ʬ�ؤΥ�������;
\item {\bf ����ǥå����٥��ȥ�}, {\bf ������ȥ٥��ȥ�}�����{\bf
���ȥ饤�ɥ٥��ȥ�}����ꤷ����ʬŪ�˥���ץ뤵�줿������ʬ�ؤΥ�����
��; �����
\item {\bf ����ǥå����٥��ȥ�}, {\bf ������ȥ٥��ȥ�}, {\bf
���ȥ饤�ɥ٥��ȥ�}�����{\bf ����ǥå����ޥåԥ󥰥٥��ȥ�}����ꤷ
���ޥåפ��줿������ʬ�ؤΥ�������
\end{itemize}

������4�Ĥη��Υ٥��ȥ�({\bf ����ǥå����٥��ȥ�}, {\bf ������ȥ�
���ȥ�}, {\bf ���ȥ饤�ɥ٥��ȥ�}�����{\bf ����ǥå����ޥåԥ󥰥٥�
�ȥ�})�Ϥ��٤ƳƼ��������Ǥ���ä��٥��ȥ�Ǥ���.
n����(��� = n)���ѿ��ˤĤ���, n���ǤΥ٥��ȥ뤬ɬ�פǤ���.
�ѿ��������顼(�����ʤ�)�ʤ�, �����Υ٥��ȥ��̵�뤵���.

{\bf ������ʬ}��``�Ĥ���''���ʤ��2�ĤΥ٥��ȥ�ǻ��ꤵ�줿Ϣ³������
���Υ֥��å��Ǥ���.
{\bf ����ǥå����٥��ȥ�}�ϸ����˺Ǥ�ᤤ�������Ǥ��ֹ��Ϳ����.
{\bf ������ȥ٥��ȥ�}��, �ѿ��γƼ����˱�ä����Ĺ������֤�Ϳ����.

{\bf ��ʬŪ�˥���ץ뤵�줿������ʬ}��, {\bf ���ȥ饤�ɥ٥��ȥ�}���ɲ�
����ƥ���ץ�󥰤���ꤹ��Ȥ������Ȥ������{\bf ������ʬ}���������
����.
���Υ٥��ȥ��, �Ƽ����ˤĤ���, ���μ����˱�äƤȤ���٤����ȥ饤��
��Ĺ����Ϳ�������Ǥ����.
�㤨��, ���ȥ饤�ɤ�4�Ǥ���Ȥ����Τ�, �б����뼡���˱�ä�4�Ĥ�������
�Ȥ�����̣�Ǥ���.
��������������ͤ�������, �Ʊ��Ĺ��({\bf ������ȥ٥��ȥ�}���������
��)���б����륹�ȥ饤�ɤǳ�ä���Τξ��(���ʤ��, �����شݤ�)���Ѥ�
����.

{\bf �ޥåפ��줿������ʬ}��, {\bf ����ǥå����ޥåԥ󥰥٥��ȥ�}����
�ä���, �������¤٤�줿netCDF�ѿ��˴�Ϣ�����ǡ����ͤˤɤΤ褦�˥�
���������뤫�����Ǥ���褦�ˤʤäƤ���Ȥ������������{\bf ��ʬŪ��
����ץ뤵�줿������ʬ}��������Ƥ���.
���Ȱ��֤���γ��ͤ�(�Х��ȤǤ�)���ե��åȤ�, �ƥ���ǥå������б�����
����ǥå����ޥåԥ󥰥٥��ȥ�����Ǥ�ݤ�����Τ��¤�Ϳ������.
��������������ͤθĿ���{\bf ��ʬŪ�˥���ץ뤵�줿������ʬ}�ξ���Ʊ
���Ǥ���.

�ޥåפ��줿������ʬ�λ��ѤˤĤ��Ƥϰʲ��Ǥ�괰���˵������뤬, �����
�̤˻Ȥ���������ʬ������������򼨤����Ȥˤ���.

%-----------------------------------------------------------------------
\subsection{������ʬ������������}

���netCDF�ե��������(��2��[CDL��]\pageref{CDL}�ڡ�������)�ˤ�����, 
{\tt temp}���٤Ƥ��ͤΤ����٥�(�㤨��, 2����)�ˤ��������̤��ɤ߹���
�����Ȥ�, ����netCDF�ե�����ˤϸ���3�Ĥε�Ͽ({\tt time}����)�������
����. ������
\begin{verbatim}
        lat = 5, lon = 10, level = 4, time = unlimited;
\end{verbatim}
���������Ƥ���, �ѿ�{\tt temp}��CDLɽ���ˤ�����
\begin{verbatim}
        float   temp(time, level, lat, lon);
\end{verbatim}
���������Ƥ��뤳�Ȥ�פ��Ф���.

�б�����C�ѿ���, ����ͣ��Υ�٥�Υǡ������ݻ������Τϰʲ��Τ褦����
�������:
\begin{quote}
\begin{verbatim}
#define LATS  5
#define LONS 10
#define LEVELS 1
#define TIMES 3                 /* ���ΤȤ����Ǥ� */
    ...
float   temp[TIMES*LEVELS*LATS*LONS];
\end{verbatim}
\end{quote}
����ϥǡ�����1����������ݻ����뤿��Τ�Τ�, 
\begin{quote}
\begin{verbatim}
    ...
float   temp[TIMES][LEVELS][LATS][LONS];
\end{verbatim}
\end{quote}
�Ȥ����¿��������Τ��������ˤʤ�.

FORTRAN�Ǥ�, ������CDL����Ȥϵդ�, ��켡��������Ѳ���, ��Ͽ�ѿ��κ�
��μ�������Ͽ�����Ȥʤ�.
���ä�, ͣ��Υ�٥�Υǡ������ݻ������б��ѿ���FORTRAN����ϰʲ��Τ褦
�ˤʤ�:
\begin{quote}
\begin{verbatim}
      INTEGER LATS, LONS, LEVELS, TIMES
      PARAMETER (LATS=5, LONS=10, LEVELS=1, TIMES=3)
         ...
      REAL TEMP(LONS, LATS, LEVELS, TIMES)
\end{verbatim}
\end{quote}
��2��٥�Τߤ�, ���٤Ƥλ���, ���٤Ƥΰ���, �����Ƥ��٤Ƥη��٤�ɽ��
����ǡ����֥��å�����ꤹ��ˤ�, ���ȱ��Ĺ����Ϳ���ʤ���Фʤ�ʤ�.
���ζ���C�Ǥ�(0,1,0,0)��, --- �ޤ���, FORTRAN�Ǥ�(1,1,2,1) --- �Ǥ���.
�ʤ��ʤ�, {\tt time}, {\tt lon}, �����{\tt lat}�γƼ����ˤĤ��ƤϺǽ�
����, {\tt level}�����ˤĤ��Ƥ�2���ܤ��ͤ���Ϥ᤿������Ǥ���.
���Ĺ����C�Ǥ�(3,1,5,10), --- FORTRAN�Ǥ�(10,5,1,3) --- �ˤʤ�.
�����, {\tt time}�ˤĤ��ƤϤ��٤Ƥ�3�Ĥ���, {\tt level}��ͣ�����,
{\tt lat}�Τ��٤Ƥ�5�Ĥ���, �����{\tt lon}�Τ��٤Ƥ�10�Ĥ��ͤ������
��������Ǥ���.
������150(3*1*5*10)����ư�����������ͤ��֤����Τ�, ���ο��˽�ʬ����
��Υ��ڡ������Ѱդ��Ƥ����ʤ���Фʤ�ʤ�.
�ǡ������֤������֤�, C�ǤϺǸ�μ���{\tt lon}���ǽ���Ѳ���,
FORTRAN�ǤϺǸ�μ���{\tt LON}���ǽ���Ѳ�����:
\begin{quote}\baselineskip=\vs
\begin{verbatim}
              C                  FORTRAN

     temp[0][1][0][0]      TEMP(1, 1, 2, 1)
     temp[0][1][0][1]      TEMP(2, 1, 2, 1)
     temp[0][1][0][2]      TEMP(3, 1, 2, 1)
     temp[0][1][0][3]      TEMP(4, 1, 2, 1)
           ...                 ...

     temp[2][1][4][7]      TEMP( 8, 5, 2, 3)
     temp[2][1][4][8]      TEMP( 9, 5, 2, 3)
     temp[2][1][4][9]      TEMP(10, 5, 2, 3)
\end{verbatim}
\end{quote}

C�����FORTRAN���󥿡��ե������ˤ����뼡���ν��֤�����, �ǥ��������
�ͤ���Ǽ����Ƥ�����֤��ۤʤäƤ���Ȥ������ȤǤϤʤ�, ñ�ˤ���2�Ĥ�
����μ�³�����󥿡��ե������ˤ�äƥ��ݡ��Ȥ���Ƥ�����֤��ۤʤäƤ�
��Ȥ������Ȥ�ȿ�ǤǤ���.
���̤�, netCDF�ե����뤬C��FORTRAN�Τɤ���ǽ񤫤줿���Ȥ������Ȥϰ�̣
���ʤ�; �ɤ���θ�������ǽ񤫤줿netCDF�ե������, ¾�θ���ǽ񤫤줿
�ץ������ˤ�äƤ��ɤळ�Ȥ��Ǥ���.

%-----------------------------------------------------------------------
\subsection{����Ū��������ʬ���������ˤĤ��Ƥ⤦������}

�ޥåפ��줿������ʬ��Ȥ����Ȥˤ�ä�, �ѿ����ǤΥǥ��������ɥ쥹�Ȥ�
��餬�����˼�Ǽ����Ƥ��륢�ɥ쥹�Ȥδ֤˰�̣�Τ���ط��Ť��򤹤�
���Ȥ��Ǥ���.
�㤨��, �����ι����, �ǥ�������ι�����¤��Ѥ���, ���Ǥν��֤���
���ۤʤ�褦�ˤ��뤳�Ȥ��Ǥ���.
�����������ʬ�ˤ�����, �ǥ������ȥ��ꥢ�ɥ쥹�Ȥδ֤Υޥåԥ󥰤���
�������ʤ�ΤǤ���: ��������ͤι�¤(���ʤ��, �����������Ȥ��ν���)
��������ʬ�Τ���˰��פ��Ƥ���.
������, �ޥåפ��줿������ʬ�Ǥ�, {\bf ����ǥå����ޥåԥ󥰥٥��ȥ�}
���Ȥ��, netCDF�ѿ������Ǥν��֤Ȥ����Υ��ꥢ�ɥ쥹�Ȥδ֤Υޥå�
�󥰤��������.
����˾��󤷤Ƥ�������θ������餢�����̤����ؤΥ��ե��å�(�Х���ñ
��)��, ����ǥå����ޥåԥ󥰥٥��ȥ�Ȥ�������{\bf ����ǥå����٥���
��}
\footnote{��������{\bf ��ɸ���ե��åȥ٥��ȥ�}��, �Ƽ������Ф���, 
��������ޤ�����θ������餽�����ؤΥ��ե��åȤ�Ϳ����.
C�Ǥ�, �������κ�ɸ���ե��åȥ٥��ȥ�Ϥ��κ�ɸ�٥��ȥ��Ʊ���Ǥ���.
������, FORTRAN�ǤϤ������κ�ɸ���ե��åȥ٥��ȥ��, �������κ�ɸ�٥�
�ȥ���б������ͤ���ľ��ʤ��ͤǤ���.}
�Ȥ�{\bf ����}
\footnote{��ĤΥ٥��ȥ�[x0, x1, ..., xn]��[y0, y1, ..., yn]�Ȥ�{\bf 
����}��ñ��x0*y0 + x1*y1 + ... + xn*yn �Ǥ���.}
��Ϳ������.
�����������ʬ�Υ���ǥå����ޥåԥ󥰥٥��ȥ��, --- �Ǥ�®���Ѳ�����
��������Ǥ��٤������ؤν��֤� --- ����˾��󤹤�ǡ����ΥХ��ȥ�����
(�㤨��, ��ư�����������ͤʤ�4), ������, �����ͤ�������ʬ�κǤ�®����
�����뼡���α��Ĺ����ݤ������, ������, �����ͤ˼���®���Ѳ����뼡��
�α��Ĺ����ݤ������, �ʲ�Ʊ��, �Ȥ��ä����Ǥ����.
������, �ޥåפ��줿����ˤ����Ƥ�, netCDF�ѿ��Υǥ��������֤ȥ����
�֤Ȥδ֤δط��Ϻ���Ū�˰ۤʤꤦ��.
�㤨��, �ʲ���C���
\begin{quote}
\begin{verbatim}
struct vel {
    int flags;
    float u;
    float v;
} vel[NX][NY];
long imap[2] = {
    sizeof(struct vel),
    sizeof(struct vel)*NY};
\end{verbatim}
\end{quote}
(������{\tt imap}�ϥ���ǥå����ޥåԥ󥰥٥��ȥ�Ǥ���)��,
�����ˤ���netCDF�ѿ�({\tt vel(NY,NX)})���ͤ˥����������뤿��˻Ȥ�
���Ȥ��Ǥ���. ���Ȥ��������¤��Ѥ���줿��, ���ĥǡ�������ư����������
�ͤ�2��������ǤϤʤ���¤�Τ�2��������˴ޤޤ�Ƥ���褦�ʾ��Ǥ�.

�ޥåפ��줿���󥢥������Τ��ܺ٤����, �ޥåפ��줿���󥢥������Τ�
���C�����FORTRAN���󥿡��ե������ε��Ҥ����Ϳ������.
\ref{NCVPTG}��
[��ʬŪ�˥���ץ뤵�줿�ޤ��ϥޥåפ��줿�ͤ������񤭽Ф�:
NCVPTG�����NCVPGC]\pageref{NCVPTG}�ڡ����򻲾�.

netCDF��ݲ���, �⤷�����ˤ�ä�����������Ƥ����, ��ʬŪ�˥���ץ뤵
�줿�ޤ��ϥޥåפ��줿������ʬ�ؤΥ���������Ȥ����Ȥ���Ƥ��Ƥ��뤬,
�������׵ᤵ��Ƥ����ΤǤϤʤ�.
�⤷, ������, ������Ū�ʥ����������֤�ɬ�פȤ��ʤ��ʤ��, ������
��ǽ��̵�뤷��, �����ñ����ͤؤΥ��������ޤ��������������ʬ�ؤΥ�
��������ȤäƤ�褤.

%-----------------------------------------------------------------------
\section{�ǡ�����¤}

netCDF��ݲ��ˤ�ä�ľ�ܥ��ݡ��Ȥ���Ƥ���ͣ��μ���Υǡ�����¤��,
�٥��ȥ�°�����ղä��줿̾���Ĥ�����ν���Ǥ���.
netCDF��, ��礵�줿�ꥹ��, �ĥ꡼, �Ƥʹ���, �ԶѰ������, �ޤ��ϥݥ�
�󥿤�ɬ�פȤ���褦��¾��Υǡ�����¤, ���Ǽ����Τ��ä�Ŭ�礷�Ƥ���
�櫓�ǤϤʤ�.
��Ĥ�������Υǡ�����¾������ؤΥݥ��󥿤Ȥ��ƻȤ����Ȥ˴ؤ����δ�
�����Ѥ���, ����ν��礫��¿��Υǡ�����¤���ۤ��뤳�Ȥ��ǽ�Ǥ���.
netCDF�饤�֥��Ϥ��Τ褦�ʥǡ�����¤�ˤĤ��Ƽ������˸���⤷�ʤ���,
netCDF�Ϥ��Τ褦�ʴ������߷פǤ���褦�ʵ������󶡤��Ƥ���.

�ʲ�����Ǥ�, ����λ����Υ���ǥå�����Ϳ�����Ϣ����ǥå����ѿ���̾
�դ���°��{\tt row\_index}�Ȥä�, �ԶѰ������{\tt ragged\_mat}���Ǽ
���Ƥ���.
�������12��(12-0)�����Ǥ�ޤ�Ǥ���, ��������7��(19-12)��ޤ�Ǥ�
��, �����Ǥ���.
\begin{quote}
\begin{verbatim}
        float   ragged_mat(max_elements);
                ragged_mat:row_index = "row_start";
        int     row_start(max_rows);
data:
        row_start   = 0, 12, 19, ...
\end{verbatim}
\end{quote}

�⤦��Ĥ����󤲤��, �ƥ��롼�פ��ѿ���̾�������䥳��ޤΤ褦����
��Ū�ʶ��ڤ�ʸ���Ƕ��ڤäƥꥹ�Ȳ�����°����������뤳�Ȥˤ�ä�
netCDF�ѿ����Ĥ�netCDF�ե�������˥��롼�ײ��Ǥ���.
���Τ褦�ʥ��롼�ײ��Τ�������̤ʼ����°��̾��Ȥ�����˴�����Ȥ���
�Ȥ��Ǥ�, ����ˤ�ä�, �ѿ���̾���Ĥ����롼�פ�Ǥ�դθĿ����ݡ��Ȥ���
���Ȥ��Ǥ���.
�⤷ɬ�פʤ��, ���ѿ����Ф������̤ʴ���Ū°���ˤ��, �����ѿ������С�
�ˤʤäƤ��륰�롼�פ�̾����ꥹ�Ȳ����뤳�Ȥ��Ǥ���.
°��, �ޤ���¾��°�����ѿ��򻲾Ȥ����ѿ���Ȥ����Ȥˤ��, netCDF�ե���
��ˤ����뤤���Ĥ��μ����ʣ���ʹ�¤��ɽ�����뤿��ν���ʵ����������
��.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{netCDF�饤�֥��λ���}
\label{netCDF�饤�֥��λ���}

�̤�netCDF�饤�֥�ꤹ�٤ƤˤĤ����ΤäƤ��ʤ��Ȥ�, netCDF�饤�֥���
�Ȥ����Ȥ��Ǥ���.
netCDF�ե������������ʤ�, ɬ�פʤΤ�, ɬ�פʼ���, �ѿ������°����
�����, netCDF�ե�����˥ǡ�����񤭽Ф��Τ�ɬ�פʰ찮��Υ롼�������
�Ǥ���. ({\tt ncgen}�桼�ƥ���ƥ���Ȥäƥե�������äƤ����Ƥ���,
�ץ����������餻, netCDF�饤�֥���Ȥäƥǡ�����񤱤�, ɬ�פʥ饤
�֥��Ϥ��äȾ��ʤ��ƺѤ�.)
Ʊ�ͤ�, �����netCDF���֥������Ȥ˳�Ǽ���줿�ǡ����˥����������뤿���
���եȥ�������񤯤ˤ�, netCDF�ե�����򥪡��ץ�, �ǡ����˥���������
�뤿��Τۤ�ΰ�����netCDF�饤�֥�꤬ɬ�פʤ����Ǥ���.
Ǥ�դ�netCDF�ե�����˥��������������Ū�ʥ��ץꥱ��������񤯤ˤ�,
���¿����netCDF�饤�֥������̤��Ƥ���ɬ�פ�����.

�ܾϤǤ�, �̾�λ��Ѥ�ɬ�פʰ���ŪnetCDF���֥롼����ƤӽФ��ΰ���ɽ��
Ϳ����.
����ˤ��뤿���, �롼�����̾���������󼨤�; �������ӥ��顼������
�����ά��; ���̤�ʣ����ƤӽФ����ʸ���������; ����˵���...��Ȥ�
��¾��ʸ��Ǥ�դ����ɽ���Ƥ���.
��³������ӥ��֥롼����ΰ����δ����ʥꥹ�Ȥϸ�ξϤ���������.

%-----------------------------------------------------------------------
\section{netCDF�ե����������}

������netCDF�ե��������������Τ˻Ȥ������Ū�ʰ�Ϣ��netCDF�ƤӽФ�
�ϰʲ��Τ褦�Ǥ���.

{\baselineskip=\vs
\begin{verbatim}
    NCCRE              ! netCDF�ե����������: ����⡼�ɤ�����
         ...
       NCDDEF          ! ���������: ̾���ȥ���������
         ...
       NCVDEF          ! �ѿ������: ̾��, ��, ����Ӽ�������
         ...
       NCAPT or NCAPTC ! °�����֤�: °���ͤ������Ƥ�
         ...
    NCENDF             ! ����ν�λ: ����⡼�ɤ���ȴ����
         ...
       NCVPT or NCVPTC ! �ѿ����֤�: �ѿ����ͤ�Ϳ����
         ...
    NCCLOS             ! �Ĥ���: ������netCDF�ե��������¸����
\end{verbatim} }

netCDF�ե�������������뤿��ˤϤ��ä���ĤθƤӽФ�����ɬ�פʤ�,
���κݤ�2�Ĥ�netCDF{\bf �⡼��}�Τ����κǽ�Υ⡼�ɤ�����.
�����ץ󤵤줿netCDF�ե�����˥�����������ݤˤ�, ���Υ���������
{\bf ����⡼��}�ޤ���{\bf �ǡ����⡼��}�Τ����줫�ǹԤ���.
����⡼�ɤǤ�, ����, �ѿ�����ӿ�����°���������Ǥ��뤬, �ѿ��ǡ���
���ɤ߽񤭤ϤǤ��ʤ�.
�ǡ����⡼�ɤǤ�, �ǡ����ؤΥ�����������Ӵ�¸��°�����Ѥ���Ȥ��Ǥ���
��, �����μ���, �ѿ��ޤ���°�����������뤳�ȤϤǤ��ʤ�.

���줾��μ������������뤿��ˤ�, {\tt NCDDEF}
��1�󤺤ĸƤӽФ�ɬ�פ�����.
Ʊ�ͤ�, ���줾����ѿ����������뤿��ˤ�, {\tt NCVDEF}��1�󤺤ĸƤӽ�
��ɬ�פ�����,
���줾���°��������������ͤ������Ƥ뤿��ˤ�{\tt NCAPT}�ޤ���{\tt
NCAPTC}��1�󤺤ĸƤӽФ�ɬ�פ�����.
����⡼�ɤ�ȴ���ƥǡ����⡼�ɤ�����ˤ�, {\tt NCENDF}��ƤӽФ��Ф褤.

���ä���ǡ����⡼�ɤ������, �ѿ��˿������ǡ������ɲä�����, �Ť��ͤ�
�Ѥ�����, ��¸��°�����ͤ��Ѥ�����(����°�����ѹ������¿���γ�Ǽ���ڡ�
����ɬ�פȤ��ʤ��¤�)���뤳�Ȥ��Ǥ���.
FORTRAN���󥿡��ե�������, °���������, �ѿ����ͤ�Ϳ���륵�֥롼����
��2���Ѱդ��Ƥ���. �����, ����ʸ���󤫤Τɤ�����ͤ��Ȥ��뤫�Ȥ���
���Ȥ˰�¸���Ƥ���.
ñ����ͤ��ѿ��˽񤭽Ф��ˤ�{\tt NCVPT1}�ޤ���
{\tt NCVPT1C}��Ȥ�; ����, Ǥ�դΥǡ��������񤯤ˤ�
{\tt NCVPT}, {\tt NCVPTC}, {\tt NCVPTG}, �ޤ���{\tt NCVPTGC}�����˻Ȥ�.
ʣ���ѿ��Υǡ�����Ͽ��񤯤ˤ�, {\tt NCVPT}��ʣ
����ƤӽФ��Ф褤.

�Ǹ��, �񤭹��ߤΤ���˥����ץ󤵤�Ƥ���netCDF�ե����뤹�٤Ƥ�
{\tt NCCLOS}��ƤӽФ����ۤ˥����������ʤ���Фʤ�ʤ�.
�񤭹��ߤΤ����netCDF�ե�����򥪡��ץ󤷤��ޤޥץ�����ब�۾ｪλ��
���, {\tt NCSNC}��Ǹ�˸ƤӽФ��Ƥ���Ǥ⿷����
�񤫤줿��Ͽ�ѿ��ǡ��������Ǥ�դ�°�����ѹ���1�Ĥޤ��Ϥ���ʾ�Υǡ�
���������Ƥ��ޤ���ǽ��������.
�۾ｪλ�ˤ��ǡ���»���β�ǽ���򸺤餹�ˤ�, netCDF�ѿ��˽񤭽Ф�����,
°���ͤ��ѹ������ꤹ�뤿�Ӥ��Ȥ�{\tt NCSNC}���ۤ�
�ƤӽФ��в�ǽ�Ǥ���.
���Τ褦�ʤ��Ȥϥ���ԥ塼�����񸻤ˤ����ƹ⤯�Ĥ��Τ�, ���Τ褦�ʸƤ�
�Ф����̾�, ɬ�פʤȤ��ʳ��ˤϾ�ά����٤��Ǥ���.

%-----------------------------------------------------------------------
\section{̾�����Τä�, netCDF�ե�������ɤ�}

�����Ǥ�, netCDF�ե������̾�������ǤϤʤ�, �����μ���, �ѿ������°
����̾�����ΤäƤ������ͤ���. (�����Ǥʤ�����, ``�䤤��碌''��
�ӽФ��򤷤ʤ���Фʤ�ʤ�.)
netCDF�ե�������Τ������ѿ�����ǡ������ɤि��ΰ���Ū��FORTRAN�ƤӽФ�
�ν��֤ϰʲ��Τ褦�Ǥ���:

{\baselineskip=\vs
\begin{verbatim}
    NCOPN               !  ��¸��netCDF�ե�����򥪡��ץ󤹤�
         ...
       NCDID            !  ������ID���������
         ...
       NCVID            !  �ѿ���ID���������
         ...
       NCAGT or NCAGTC  !  °�����ͤ��������
         ...
       NCVGT or NCVGTC  !  �ѿ����ͤ��������
         ...
    NCCLOS              !  netCDF�ե�����򥯥���������
\end{verbatim} }

�ǽ��, ñ��θƤӽФ��ˤ��, Ϳ����줿�ե�����̾��netCDF�ե����뤬����
�ץ󤵤�, �����ץ󤵤줿netCDF�ե�����򻲾Ȥ��뤿��˰ʹߤΤ��٤Ƥθ�
�ӽФ��ǻȤ���netCDF ID���֤����.

����, ��̣�Τ���Ƽ����ˤĤ���{\tt NCDID}��Ƥӽ�
���Ƽ�����̾�����鼡����ID���������.
Ʊ�ͤˤ���, ɬ�פ��ѿ�ID�Ϥ��줾��, {\tt NCVID}��
�ƤӽФ����Ȥˤ�ä�̾��������ꤵ���.
��ö, �ѿ�ID��ʬ�����, �ѿ���°���ͤ�, �׵ᤵ���°�����줾��ˤĤ���,
netCDF ID, �ѿ�ID, ������׵ᤵ���°��̾��
{\tt NCAGT}�ޤ���{\tt NCAGT}�����ϤȤ���Ϳ����а����Ф���.
�ѿ��ǡ����ͤ�netCDF�ե����뤫��ľ�ܥ��������Ǥ���;
ñ����ͤξ��ˤ�{\tt NCVGT1}�ޤ���
{\tt NCVG1C}��Ȥä�, �ͤ����̤ˤĤ��Ƥ�
{\tt NCVGT}, {\tt NCVGTC}, {\tt NCVGTG}, �ޤ���{\tt NCVGGC}��Ȥä�.

�Ǹ��, netCDF�ե������{\tt NCCLOS}��Ȥäƥ������������.
ñ���ɤ�����ʤ�, �ե�����򥯥���������ɬ�פϤʤ�.

%-----------------------------------------------------------------------
\section{̾�����Τ餺��, netCDF�ե�������ɤ�}

¿���Υץ������(�㤨��, ����Ū�ʥ��եȥ�����)��(����: ������ʬ����ʸ
���������Ƥ���)���������ɬ�פ�����.
���ѿ���(¿ʬ, ��ɸ�ѿ��Ͻ�����), �������ѿ���̾��������ä��Τ뤳��
�ʤ���, ���餫����ˡ�ǲù�����褦�ʥץ������(�㤨��, ����Ū�ʥ��ե�
������)��񤯤��Ȥϲ�ǽ�Ǥ���.
���Ȥ�, ���������°����̾����ʬ���äƤ��ʤ��Ȥ�.

̾�������¾�ξ������礻�ؿ���ƤӽФ����Ȥˤ�ä�netCDF�ե����뤫��
���뤳�Ȥ��Ǥ���.
�����θƤӽФ���, netCDF�ե���������, ����, �ѿ�, �ޤ���°���ˤĤ���
�ξ�����֤�.
�ʲ���ɽ��, �����θƤӽФ��λȤ���������������ΤǤ���:
{\baselineskip=\vs
\begin{verbatim}
    NCOPN                 !  ��¸��netCDF�ե�����򥪡��ץ󤹤�
      ...
    NCINQ                 !  ��Ȥ�Ĵ�٤�
         ...
       NCDINQ             !  ������̾��, ���������������
         ...
       NCVINQ             !  �ѿ���̾��, ��, �����������
            ...
          NCANAM          !  °����̾�����������
            ...
          NCAINQ          !  °���η���Ĺ�����������
            ...
          NCAGT or NCAGTC !  °�����ͤ��������
            ...
       NCVGT or NCVGTC    !  �ѿ����ͤ��������
         ...
    NCCLOS                !  netCDF�ե�����򥯥���������
\end{verbatim} }

�������Ʊ�ͤ�, ñ��θƤӽФ��ˤ�äƴ�¸��netCDF�ե����뤬�����ץ�
��, netCDF ID���֤����.
����netCDF��{\tt NCINQ}�롼�����Ϳ�����, ����
�ο�, �ѿ��ο�, �������Х�°���ο�, �����, �⤷�����̵���¼�����ID,
���֤�.

��礻�ؿ��Τ��٤Ƥ�, ���Ѥˤ����äƤΥ����Ȥ����˾��ʤ�����I/O��ɬ
�פȤ��ʤ�, �ʤ��ʤ�, ����餬Ϳ�������ϥ����˳�Ǽ����Ƥ��뤫��
�Ǥ���.
C���󥿡��ե������ˤ����Ƥ�, ɬ�פʤ�����ˤĤ��Ƥ�ͭ���ʥ��ɥ쥹����
���˥̥�ݥ��󥿤�Ϳ����褦�ˤ���, ����ΰ��������뤳�Ȥ⥵�ݡ��Ȥ�
�Ƥ���.

������ID��Ϣ³��������(C�Ǥ�0����, FORTRAN�Ǥ�1����Ϥޤ�)��ȤäƳ��
���Ƥ���.
������ޤ�, ��ö��������Ƥ��ޤ���, ����Ǥ��ʤ�.
���ä�, ����netCDF�ե�������μ���ID�ο����Τ�Ȥ������Ȥ�, ���٤Ƥμ�
��ID���Τ뤳�Ȥ��̣���Ƥ���:
������, 0, 1, 2, ...(FORTRAN�Ǥ�1, 2, 3, ...)�Ȥ��������Ǥ���.
�Ƽ���ID�ˤĤ���, �ƤӽФ�{\tt NCDINQ}�ϼ�����̾���ȥ��������֤�.

�ѿ�ID��ޤ�Ϣ³��������0, 1, 2, ...(FORTRAN�Ǥ�1, 2, 3, ...)�������
�Ƥ���.
������ID��, ���ѿ��˳�����Ƥ�줿̾��, ��, ��, �����°���ο���Ĵ��
�뤿���, {\tt NCVINQ}�ƤӽФ��ǻȤ���.

�ѿ���°���ο�����öʬ�����, �ʲ���{\tt NCANAM}�θƤӽФ��ˤ��, Ϳ��
��줿netCDF ID, �ѿ�ID, �����°���ֹ椫��, ��°����̾�����֤����.
°��̾��ʬ�����, {\tt NCAINQ}�θƤӽФ��ˤ��,
���η������Ĺ�����֤����.
����Ĺ����Ϳ�������, °�����ͤ��ݻ�����Τ˽�ʬ�ʥ��ڡ��������դ�
�뤳�Ȥ��Ǥ���.
���줫��, {\tt NCAGT}�ޤ���{\tt NCAGlTC}��Ƥӽ�
����, °�����ͤ��֤����.

���٤Ƥ�netCDF�������Ǥ�̾��, ��, ��, �����Ĺ������öʬ�����, �ǡ���
�ͤϥ���������ǽ�Ǥ���; ñ����ͤˤĤ��Ƥ�{\tt NCVGT1}�ޤ���{\tt
NCVGT1C}��, ���󥢥�������Ȥ��ͤν����ΤˤĤ�
�Ƥ�{\tt NCVGT}, {\tt NCVGTC}, {\tt NCVGTG}, �ޤ���{\tt NCVGGC}��,
�ƤӽФ����Ȥˤ�ä�.

%-----------------------------------------------------------------------
\section{����������, �ѿ�, °�����ɲä���}

��¸��netCDF�ե�������������ѹ���ǽ�Ǥ���.
����������, �ѿ�, °�����ɲä�����, ��¸�Τ�Τ�̾�����ѹ�������,
��¸��°������������Ǥ���.
��¸�μ���, �ѿ�, �����°����̾�����ѹ��Ǥ���.
�ʲ��Υ�����ɽ��, ��¸�Υե�����˿�����netCDF�������Ǥ�ä��뤿��ΰ�
��Ū�ʰ�Ϣ�θƤӽФ���ꥹ�Ȳ�������ΤǤ���:
{\baselineskip=\vs
\begin{verbatim}
    NCOPN             !  ��¸��netCDF�ե�����򥪡��ץ󤹤�
      ...
    NCREDF            !  ����⡼�ɤ�����
        ...
      NCDDEF          !  �ɲä��뼡����������� (�⤷�����)
        ...
      NCVDEF          !  �ɲä����ѿ���������� (�⤷�����)
        ...
      NCAPT or NCAPTC !  �ɲä���°����������� (�⤷�����)
        ...
    NCENDF            !  ���������å���, ����⡼�ɤ���ȴ����
        ...
      NCVPT or NCVPTC !  �������ѿ����ͤ�Ϳ����
        ...
    NCCLOS            !  netCDF�򥯥���������
\end{verbatim} }

netCDF�ե�����Ϥޤ�{\tt NCOPN}�ƤӽФ��ˤ�äƥ����ץ󤵤��.
���θƤӽФ��ˤ��, {\bf �ǡ����⡼��}������, ����ˤ�äƴ�¸�Υǡ���
�ͤؤΥ�������������ѹ�����ǽ�Ǥ���, ��¸��°�����ѹ��Ǥ���(����餬
�礭���ʤ�ʤ��¤�)��, �����ɲä��뤳�Ȥ��Ǥ��ʤ�.
������netCDF����, �ѿ�, �ޤ���°�����ɲä��뤿��ˤ�, �ǡ����⡼�ɤ�ȴ
����{\bf ����⡼��}������ͤФʤ餺, ���Τ����{\tt NCREDF}��ƤӽФ��Ф褤.
����⡼�ɤˤ����Ƥ�, {\tt NCDDEF}��ƤӽФ���
�����������������, {\tt NCVDEF})�ˤ�꿷�����ѿ�
�������, {\tt NCAPT}�ޤ���{\tt NCAPTC}�ˤ����
���˿�����°���������Ƥ���Ť�°�����礭�������ꤹ��.

{\tt NCENDF}��ƤӽФ����Ȥˤ�ä�, 
����⡼�ɤ�ȴ���ƺƤӥǡ����⡼�ɤ�����;
���κ�, ������������٤Ƥ�̷�⤬�ʤ��������å�����, �ѹ����ǥ������ؽ�
���Ф����.
�ǡ����⡼�ɤ˺Ƥ�����ɬ�פ��ʤ��ʤ�, ñ��{\tt NCCLOS}��ƤӽФ��Ф褤; 
��������{\tt NCENDF}��ƤӽФ����Τ�Ʊ�����̤�����.

{\tt NCENDF}��ƤӽФ��ޤǤ�, {\tt NCABOR}��ƤӽФ����Ȥˤ�ä�, ���
�⡼�ɤǤʤ��줿��������٤Ƥ򳰤���netCDF�ǡ������åȤ����ξ��֤�����Ǥ���.
�ޤ�, {\tt NCENDF}�ƤӽФ������Ԥ�������,
{\tt NCABOR}��ƤӽФ����Ȥˤ�ä�netCDF�ǡ�������
�Ȥ�̷��Τʤ����֤�����Ǥ���.
����⡼�ɤ���{\tt NCCLOS}��ƤӽФ����ݤ˰Ť˸�
�ӽФ����{\tt NCENDF}�����Ԥ����, 
{\tt NCABOR}����ưŪ�˸ƤӽФ���, netCDF�ե�����
��������������, �ե����������̷��Τʤ�����(����⡼�ɤ��������ξ���)
�Τޤޤˤʤ�.

%-----------------------------------------------------------------------
\section{���顼����}
\label{���顼����}

netCDF�饤�֥��Ͻ���˥��顼��������뤿���ɬ�פʵ�ǽ���󶡤��Ƥ���.
������, ���顼�����ˤĤ��Ʋ������ꤹ��ɬ�פϤ����Ƥ��ʤ�, �ʤ��ʤ�, ��
�ե���ȤǤϤ��٤Ƥ�netCDF�饤�֥��롼����ϥ��顼���������ñ�˥��顼
��å���������Ϥ��ƽ�λ���Ƥ��ޤ�����������Ǥ���.
�⤷, ���Τ褦��(�Τ���Ű��Ū��)���顼���ε�ư����ǧ�Ǥ����ΤǤ����,
�֤��ͤ�����å�����ɬ�פϤʤ�; �ʤ��ʤ�, ���顼�˻��褦�ʤɤΤ褦��
���֤Ǥ�������å���������Ϥ��ƽ�λ���Ƥ��ޤ�����Ǥ���.
��ñ�Τ����, ���Υ����ɤˤ�������Ǥ�, ���Υǥե���ȤΥ��顼�����ε�
ư���ꤹ��Τ�, �֤��ͤΥ����å��Ϥ��ʤ�.

FORTRAN���󥿡��ե������ˤ����Ƥ�, ���顼���ץ����ˤ�{\tt NCPOPT}��
���{\tt NCGOPT}�롼�����Ȥäƥ��������Ǥ���.
���顼������2�Ĥ���: ���顼��å���������������ӥ��顼���׻���
����Ω�˽����Ǥ���.
���顼��������ȥ�å���������Ϥ��ƽ�λ����Ȥ����ǥե���Ȥε�ư��, 
�ʲ���ʸ��������:
\begin{verbatim}
      CALL NCPOPT(NCVERBOS+NCFATAL)
\end{verbatim}
������, {\tt NCVERBOS}�����{\tt NCFATAL}���ͤ�FORTRAN���󥯥롼�ɥե�����
`{\tt netcdf.inc}'�ǻ������������Ƥ�������Ǥ���.
�⤷, ���顼��å������ϻĤ���, ���顼���˽�λ�������ʤ����ˤ�,
�׻�Ū���顼�ե饰��ʲ��Τ褦���ڤ�Ф褤:
\begin{verbatim}
      CALL NCPOPT(NCVERBOS)
\end{verbatim}
�⤷, ���顼��å������⥨�顼���ν�λ�⤵�������ʤ��ʤ��, ξ���Υե�
����ʲ��Τ褦���ڤ�Ф褤:
\begin{verbatim}
      CALL NCPOPT(0)
\end{verbatim}
���顼���ץ����θ��ߤ��ͤ��������ˤ�, �ʲ��Τ褦�˻Ȥ�:
\begin{verbatim}
      CALL NCGOPT(NCOPTS)
\end{verbatim}

�ɤ���ξ��ˤ����Ƥ�, �������֤���(���٤Ƥ�FORTRAN���֥롼���󤪤��
�ؿ��κǸ�Υѥ�᥿��)��, ���顼����������ꤹ�뤿��˻Ȥ����Ȥ��Ǥ�
��0�ʳ���netCDF����Υ��顼�ʥ�С���ޤ�Ǥ���.
netCDF���顼�����ɤ�̾������ӵ��Ҥ�`{\tt netcdf.inc}'�ե�����˴ޤޤ�
�Ƥ���.

����, netCDF�饤�֥��β���XDR�饤�֥���ؤǲ��̥�٥�ν񤭹��ߥ��顼
���������ǽ��������.
�㤨��, �񤭹��ߤΥ��ڥ졼�����ˤ��, �ǥ������γ�����Ƥ�Ķ������,
��Ϥ�Ȥ��ʤ��ǥХ����˽񤭹��⤦�Ȥ����ꤹ���, netCDF�饤�֥�꤫��
�ǤϤʤ�, XDR�ؿ��ΰ�Ĥ��饨�顼��å��������������ǽ��������.

%-----------------------------------------------------------------------
\section{netCDF�饤�֥��Υ���ѥ���ȥ��}

netCDF��C�ޤ���FORTRAN���󥿡��ե�������Ȥ��ץ������Υ���ѥ��뤪��
�ӥ�󥯤λ����ξܺ٤�, ���ڥ졼�ƥ��󥰥����ƥ�, �Ȥ��륳��ѥ���, ��
���netCDF�饤�֥�ꤪ��ӥ��󥯥롼�ɥե����뤬�ɤ��˥��󥹥ȡ��뤵��
�Ƥ��뤫, �˰�¸���ưۤʤ�.
�ǤϤ��뤬, �����Ǥ�Unix�ץ�åȥե�������netCDF�饤�֥���Ȥ��ץ�
�����Υ���ѥ��뤪��ӥ����ˡ�����Ϳ����Τ�, ��������򥤥�
�ȡ���ξ����˱�����ľ���Ф褤.

netCDF�ؿ��ޤ�������򻲾Ȥ���FORTRAN�ե�����Ϥ��줾��, ���Τ褦�ʺ�
��λ��Ȥ�����Ŭ�ڤ�{\tt INCLUDE}ʸ��ޤ�Ǥ��ʤ���Фʤ�ʤ�:
\begin{verbatim}
      INCLUDE 'netcdf.inc'
\end{verbatim}

`{\tt netcdf.inc}'�ե����뤬FORTRAN����ѥ��餬���Ĥ⻲�Ȥ���ɸ��Ū�ǥ�
�쥯�ȥ�˥��󥹥ȡ��뤵��Ƥ��ʤ����ˤ�, ����ѥ����ƤӽФ��ݤ�
{\tt -I}���ץ�����Ȥä�`{\tt netcdf.inc}'�����󥹥ȡ��뤵��Ƥ���ǥ�
�쥯�ȥ����ꤷ�ʤ���Фʤ�ʤ�, �㤨��:
\begin{verbatim}
      f77 -c -I/usr/local/netcdf/include myprogram.f
\end{verbatim}
�����, {\tt INCLUDE}ʸ�����Хѥ�����ꤹ�뤳�Ȥ�Ǥ��뤬, ��������
��netCDF���ۤʤä����֤˥��󥹥ȡ��뤵��Ƥ���¾�Υץ�åȥե�����Ǥ�
�Υץ�����ब����ѥ���Ǥ��ʤ��ʤäƤ��ޤ�.

netCDF�饤�֥�꤬��󥫤����Ĥ⻲�Ȥ���ɸ��Ū�ǥ��쥯�ȥ�˥��󥹥ȡ�
�뤵��Ƥ��ʤ����ˤ�, �饤�֥���Ȥ����֥������ȥե�������󥯤�
�뤿���{\tt -L}�����{\tt -l}���ץ�����Ȥ�ͤФʤ�ʤ�, �㤨��:
\begin{verbatim}
      f77 -o myprogram myprogram.o -L/usr/local/netcdf/lib -lnetcdf
\end{verbatim}
�����, �饤�֥������Хѥ�����ꤹ�뤳�Ȥ�Ǥ���:
\begin{verbatim}
      f77 -o myprogram myprogram.o -l/usr/local/netcdf/lib/libnetcdf.a
\end{verbatim}

netCDF�饤�֥��˲ä���, �����ƥ��XDR�饤�֥��Τ���饤�֥����ɲ�
���ƻ��ꤷ�ʤ���Фʤ�ʤ������ƥ�⤢��.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{�ե�����}
\label{�ե�����}

���ξϤǤ�, netCDF�ե��������Τ򰷤�netCDF�롼����Υ��󥿡��ե�������
�Ĥ��ƽҤ٤�.

�ޤ������ץ󤵤�Ƥ��ʤ�netCDF�ե�����Ϥ��Υե�����̾�ˤ�äƤΤ߻���
�Ǥ���.
���ä���netCDF�ե����뤬�����ץ󤵤줿���, ���Υե������{\bf netCDF
ID}�ˤ�äƻ��Ȥ��뤳�Ȥ��Ǥ�, ����ID�ϥե�����������ޤ��ϥ����ץ�
���ݤ��֤���뾮��������������Ǥ���.
netCDF ID��C�ˤ�����ե����뵭�һҤޤ���FORTRAN�ˤ��������������ֹ��
�褯������ΤǤ���.
ñ��Υץ������ˤ����ƤϤ��Ĥ�, �����ץ󤵤줿�ۤʤ�netCDF�ե������
netCDF ID���̡��Ǥ���.
��Ĥ�etCDF�ե������ʣ���󥪡��ץ󤹤뤳�Ȥ��Ǥ�, ���ä�ʣ���ΰۤʤ�
netCDF ID����Ĥ��Ȥˤʤ�; ������, ��Ĥ�netCDF�ե�������Ф��ƥ�����
�󤵤�Ƥ������֤Τ�����ĤޤǤ����񤭹��ߤϵ�����ʤ�.
�����ץ󤵤�Ƥ���netCDF�ե����뤬��������������, ����ID�Ϥ�Ϥ�
netCDF�ե�����Ȥϴ�Ϣ���ʤ��ʤ�.

netCDF�ե������ǰ�ĤΥ��֥������ȤȤ��ƥ��ݡ��Ȥ���Ƥ�������:
\begin{itemize}
\item �ե�����̾����Ӿ�񤭤��뤫�ɤ��������, �ե��������������.
\item �ե�����̾������ɤ�/�񤭤ɤ����Ԥ��������, ���������Τ���
�˥ե�����򥪡��ץ󤹤�.
\item ����, �ѿ�, °�����ɲä��뤿�������⡼�ɤ�����.
\item �ɲä������Ƥΰ����������å���������⡼�ɤ���ȴ����.
\item ɬ�פʤ�Хǥ������˽񤭹���Ǥ���ե�����򥯥���������.
\item �����ο�, �ѿ��ο�, �������Х�°���ο�, ����Ӥ⤷�����̵���¼�
����ID, ���������.
\item ���ߤξ��֤���ݤ��뤿��˥ǥ������Ȥ�Ʊ����Ȥ�.
\item ��Ŭ��Ϣ³Ū�񤭹��ߤΤ����{\bf nofill}�⡼�ɤ򥻥åȤޤ��ϲ��
����.
\end{itemize}
���ξϤǤ�, netCDF��C�����FORTRAN���󥿡��ե������򵭽Ҥ���Τ˻Ȥ��
�봷����ޤȤ᤿����, �Ĥ����ʬ�Ǥ��������Τ���Υ��󥿡��ե���
���ˤĤ��ƽҤ٤�.

%-----------------------------------------------------------------------
\section{netCDF�饤�֥�ꥤ�󥿡��ե������ε���}

�ܾϤ���Ӹ�ξϤˤ�����, ���������netCDF�ؿ����Ф���ƥ��󥿡��ե���
���ε��Ҥϰʲ��λ����ޤ�:
\begin{itemize}
\item �ؿ�����Ū�ε���
\item ���ꤦ�륨�顼���֤Υꥹ��
\item FOTRAN�ؿ��Υץ��ȥ�����:
����FORTRAN�ؿ��ؤ������ʥѥ�᥿���η�����ӽ���򼨤�.
\item ����FORTRAN���󥿡��ե������ˤ����������ѥ�᥿�����줾��ˤĤ�
�Ƥ�����
\item ����netCDF�ؿ�(�����¾��netCDF�ؿ�)��ƤӽФ�FORTRAN�ץ������
���Ҥ���
\end{itemize}

FORTRAN�ؿ��Υץ��ȥ����פ������ʥѥ�᥿���η�����ӽ����ʷ�˼���.

%-----------------------------------------------------------------------
\section{netCDF�ե����������: NCCRE}

�ؿ�{\tt NCCRE}�Ͽ�����netCDF�ե������������, �ʹߤ���netCDF�򻲾Ȥ�
�뤿��˻Ȥ���netCDF ID���֤�.
����netCDF�ե����������⡼�ɤˤʤäƤ���.

���顼�����������ˤ�, {\tt NCCRE}��{\tt RCODE}�����ʳ����ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ¸�ߤ��ʤ��ǥ��쥯�ȥ��ޤ���ե�����̾���Ϥ��Ƥ�����.
\item ���Ǥ�¸�ߤ��Ƥ���ե��������ꤷ, ����{\tt NCNOCLOB}����ꤷ��
���.
\item �ե������������뤿��Υѡ��ߥå����Ϳ�����Ƥ��ʤ��ǥ��쥯
�ȥ�˥ե�������������褦�Ȥ��Ƥ�����.
\end{itemize}

\begin{quote}
\begin{verbatim}
      INTEGER FUNCTION NCCRE (CHARACTER*(*) FILENAME, INTEGER CMODE, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt FILENAME] ������netCDF�ե�����Υե�����̾.
\item[\tt CMODE] {\tt NCCLOB}�ޤ���{\tt NCNOCLOB}�Τɤ��餫����ꤹ��.
 �����������, ���󥯥롼�ɥե�����`{\tt netcdf.inc}'����������.
 {\tt NCCLOB}��, ���Ȥ��ե����뤬���Ǥ�¸�ߤ��Ƥ�, �Ť��ե���������Ƥ�
 �õ��Ʊ��̾���ο������ե������������������˻��ꤹ��.
 {\tt NCCLOB}��, Ϳ����줿�ե�����̾����¸�Υե������ؤ��Ƥ��ʤ����
 �Τߤ˿�����netCDF�ե������������������˻��ꤹ��.
\item[\tt RCODE]  �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0
 ���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, `{\tt foo.nc}'�Ȥ���̾����netCDF�ե������������Ƥ���.
�����Ǥ�, ����̾���Υե����뤬�ޤ�¸�ߤ��Ƥ��ʤ����Τ�, �����ȥǥ�
�쥯�ȥ�ˤ��Υե������������������Ǥ���Ȥ��Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID
         ...
      NCID = NCCRE('foo.nc', NCNOCLOB, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{���������Τ����netCDF�ե�����򥪡��ץ󤹤�: NCOPN}

�ؿ�{\tt NCOPN}�ϥ��������Τ���˴�¸��netCDF�ե�����򥪡��ץ󤹤�.

���顼�����������ˤ�, {\tt NCOPN}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿netCDF�ե����뤬¸�ߤ��Ƥ��ʤ�.
\item ���ꤵ�줿�⡼�ɤ�{\tt NCWRITE}�ޤ���{\tt NCNOWRITE}�ʳ��Ǥ���.
\end{itemize}

\begin{quote}
\begin{verbatim}
      INTEGER FUNCTION NCOPN (CHARACTER*(*) FILENAME, INTEGER RWMODE, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt FILENAME] �����ץ󤹤�netCDF�ե������̾��.
\item[\tt RWMODE] �ե������񤭹��ߤΤ���˥����ץ󤹤�{\tt NCWRITE}
 �ޤ���, �ե�������ɤ߹��ߤΤߤǥ����ץ󤹤�{\tt NCNOWRIT}�Τɤ��餫��
 ���ꤹ��. ``�񤭹���''��, �ǡ������ѹ�, ����, �ѿ������°�����ɲäޤ�
 ��̾���ΤĤ�����, �ޤ���°���κ��, ��ޤ�����������Υե��������
 �����̣���Ƥ���.
\item[\tt RCODE] �֤��줿���顼�����ɤ�. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCOPN}��Ȥä�`{\tt foo.nc}'�Ȥ���̾���δ�¸��
netCDF�ե�������ɤ߹��ߤΤ���˥����ץ󤷤Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID
         ...
      NCID = NCOPN('foo.nc', NCNOWRIT, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{netCDF�ե����������⡼�ɤˤ���: NCREDF}

�ؿ�{\tt NCREDF}�ϥ����ץ󤵤줿netCDF�ե����������⡼�ɤˤ�,
����, �ѿ������°�����ɲäޤ��Ϥ���̾�����ѹ��Ǥ���褦��, �ޤ�°����
����Ǥ���褦�ˤ���.

���顼�����������ˤ�, {\tt NCREDF}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿netCDF�ե����뤬���Ǥ�����⡼�ɤˤʤäƤ���.
\item ���ꤵ�줿netCDF�ե����뤬�ɤ߹��ߤΤߤǥ����ץ󤵤�Ƥ���.
\item ���ꤵ�줿netCDF ID��netCDF�ե�����򻲾Ȥ��Ƥ��ʤ�.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCREDF (INTEGER NCID, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID]  ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
netCDF ID.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCREDF}��Ȥä�`{\tt foo.nc}'�Ȥ���̾���δ�¸��
netCDF�ե�����򥪡��ץ�, ���������⡼�ɤˤ��Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID
         ...
      NCID = NCOPN('foo.nc', NCWRITE, RCODE)
         ...
      CALL  NCREDF(NCID, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{����⡼�ɤ���ȴ����: NCENDF}

�ؿ�{\tt NCENDF}�ϥ����ץ󤵤줿netCDF�ե����������⡼�ɤ���Ф�.
����⡼�ɤˤʤäƤ��뤦���˲ä���줿netCDF�ե�����ؤ��ѹ��ϥ����å�
����, ���꤬�����Ƥ��ʤ���Хǥ������˽񤭹��ޤ��.
���ΤȤ�, netCDF�ե�����ϥǡ����⡼�ɤˤʤäƤ���, �ѿ��ǡ������ɤ߽�
���Ǥ���.

���θƤӽФ���, ����Ķ��ˤ����Ƥϵ�Ͽ�ѿ��ǤϤʤ��ѿ��ν��������ӥǡ�
���Υ��ԡ���ޤ�Τ�, �����Ȥ�������.
��깭�Ϥʵ����ˤĤ��Ƥ�, 9��[netCDF�ե����빽¤�������ǽ]
\pageref{netCDF�ե����빽¤�������ǽ}�ڡ����򻲾�.

���顼�����������ˤ�, {\tt NCENDF}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿netCDF�ե����뤬����⡼�ɤˤʤäƤ��ʤ�.
\item ���ꤵ�줿netCDF ID��netCDF�ե�����򻲾Ȥ��Ƥ��ʤ�.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCENDF (INTEGER NCID, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
netCDF ID.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCENDF}��Ȥä�`{\tt foo.nc}'�Ȥ���̾���ο�����
netCDF�ե����������⡼�ɤ�λ��, �����ǡ����⡼�ɤˤ��Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID
         ...
      NCID = NCCRE('foo.nc', NCNOCLOB, RCODE)
         ... ! ����, �ѿ�, °�����������.
      CALL  NCENDF(NCID, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{netCDF�ե�����򥯥���������: NCCLOS}

�ؿ�{\tt NCCLOS}�ϥ����ץ󤵤줿netCDF�ե�����򥯥���������.
�⤷���Υե����뤬����⡼�ɤǤ����, ����������������{\tt NCENDF}����
�ӽФ����.
(���ξ��, �⤷{\tt NCENDF}�����顼���֤���, {\tt NCABOR}����ưŪ�˸�
�ӽФ���, ����⡼�ɤ˺Ǹ����������̷��Τʤ����֤����줹��.)
�����ץ󤵤줿netCDF�ե����뤬�����������줿��Ǥ�, ����netCDF ID�ϼ�
�˥����ץ�ޤ��Ϻ��������netCDF�ե�����˳�����Ƥ���.

���顼�����������ˤ�, {\tt NCCLOS}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ����⡼�ɤˤʤäƤ���, {\tt NCENDF}�μ�ưŪ�ʸƤӽФ������Ԥ���.
\item ���ꤵ�줿netCDF ID��netCDF�ե�����򻲾Ȥ��Ƥ��ʤ�.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCENDF (INTEGER NCID, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
netCDF ID.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCCLOS}��Ȥä�`{\tt foo.nc}'�Ȥ���̾���ο�����
netCDF�ե����������⡼�ɤ�λ��, ����netCDF ID��������Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID
         ...
      NCID = NCCRE('foo.nc', NCNOCLOB, RCODE)
         ... ! ����, �ѿ�, °�����������.
      CALL  NCCLOS(NCID, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{�����ץ󤵤줿netCDF�ե�����ˤĤ�����礻�򤹤�: NCINQ}

�ؿ�{\tt NCINQ}��, netCDF ID��Ϳ����, �����ץ󤵤줿netCDF�ե�����
�ˤĤ��Ƥξ�����֤�.
���������⡼�ɤޤ��ϥǡ����⡼�ɤ���ƤӽФ����Ȥ��Ǥ���.
�����, �����ο�, �ѿ��ο�, �������Х�°���ο�, �����, ̵���¥�������
���ļ����μ���ID(�⤷�����)���֤�.
����ޤ���netCDF���󥿡��ե��������¾�Τ�����`��礻'�ؿ����ƤӽФ�
��Ƥ�I/O���׵ᤵ��ʤ�. �ʤ��ʤ�, �����δؿ��ϥ����ץ󤵤줿��
netCDF�ե�����ˤĤ��Ƥ�ɽ�˳�Ǽ���줿������֤�����������Ǥ���.

���顼�����������ˤ�, {\tt NCINQ}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿netCDF ID��netCDF�ե�����򻲾Ȥ��Ƥ��ʤ�.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCINQ (INTEGER NCID, INTEGER NDIMS, INTEGER NVARS,
     *                  INTEGER NGATTS, INTEGER RECDIM, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
netCDF ID.
\item[\tt NCDIMS] ����netCDF�ե�������������Ƥ��뼡���ο����֤�.
\item[\tt NCVARS] ����netCDF�ե�������������Ƥ����ѿ��ο����֤�.
\item[\tt NCGATTS] ����netCDF�ե�������������Ƥ��륰�����Х�°���ο���
�֤�.
\item[\tt RECDIM] ����netCDF�ե�������������Ƥ����, ̵���¼�����ID��
�֤�. ̵���¥������μ������������Ƥ��ʤ����, {\tt RECDIM}���ͤȤ���
$-1$���֤����.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCINQ}��Ȥä�`{\tt foo.nc}'�Ȥ���̾����netCDF�ե�
����ˤĤ���Ĵ�٤Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID, NDIMS, NVARS, NATTS, RECDIM, RCODE
         ...
      NCID = NCCRE('foo.nc', NCNOWRIT, RCODE)
         ...
      CALL  NCINQ(NCID, NDIMS, NVARS, NATTS, RECDIM, RCODE)
\end{verbatim}}


%-----------------------------------------------------------------------
\section{�����ץ󤵤줿netCDF�ե������ǥ�������Ʊ������: NCSNC}

�ؿ�{\tt NCSNC}��, �񤭹��ߤΤ���˥����ץ󤵤�Ƥ���netCDF�ե������
�ǥ�������Υ��ԡ������ߤξ��֤Ǥ���褦�ˤ���.
����⡼�ɤˤ���netCDF�ե������{\tt NCENDF}���ƤӽФ��줿�Ȥ��ˤΤߥǥ�
������Ʊ�������.
¾�Υץ��������񤭹���Ǥ���netCDF�ե�������ɤ߹���Ǥ���ץ�������,
���Υե�����򥯥��������ƺƥ����ץ󤷤��ꤻ����,
{\tt NCSNC}��ƤӽФ��ƽ񤭹��ߥץ������ˤ�äƤʤ��줿�ѹ�(�㤨��,
�񤫤줿��Ͽ�ο��ʤ�)���б����������򤹤뤳�Ȥ�Ǥ���.

�ѿ��ǡ����ν񤭹��ߤޤ���°���ͤ��ѹ��Τ��Ӥˤ��Ĥ�ǥ�������Ʊ�����
���, ����ԥ塼�����񸻤ˤ����륳���Ȥ��礭���ʤäƤ��ޤ�����.
�񤭹��ߤθ��Ʊ����Ȥꤿ����ͳ�Ȥ���, �ʲ���2�Ĥ��󤲤���:
\begin{itemize}
\item �۾ｪλ�ξ��Υǡ���»����Ǿ��ˤ���.
\item �ǡ������񤫤줿ľ��ˤ�����ɤ�¾�Υץ����������Υǡ����˥�����
���Ǥ���褦�ˤ���. ������, �ɤ߹��ߤΤ���ˤ��Υե�����򤹤Ǥ˥�����
�󤷤Ƥ���ץ�������, �񤭹��ߥץ�������{\tt NCSNC}��ƤӽФ����ݤε�
Ͽ����������ΤǤ��ʤ��Ȥ������Ȥ����դ�ɬ�פǤ���;
������Τ��뤿��ˤ�, �ɤ߹��ߥץ�������{\tt NCSNC}��ƤӽФ�ɬ�פ�
����.
\end{itemize}

netCDF�ե����뤬������������뤫, �ޤ�������⡼�ɤ�ȴ����ݤ��ĤǤ�
�ǡ����ϼ�ưŪ�˥ǥ�������Ʊ�������.

���顼�����������ˤ�, {\tt NCSNC}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ����netCDF�ե����뤬����⡼�ɤˤ���.
\item ���ꤵ�줿netCDF ID��netCDF�ե�����򻲾Ȥ��Ƥ��ʤ�.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCSNC (INTEGER NCID, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿netCDF ID.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCSNC}��Ȥä�`{\tt foo.nc}'�Ȥ���̾����
netCDF�ե�����Υǥ������񤭹��ߤ�Ʊ����ȤäƤ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID, RCODE
         ...
      NCID = NCOPN('foo.nc', NCWRITE, RCODE)
         ...
* �ǡ������, �ޤ���°�����ѹ�����.
         ...
      CALL  NCSNC(NCID, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{�ǿ�����������: NCABOR}

�ؿ�{\tt NCABOR}��, �⤷����⡼�ɤˤʤäƤ��ʤ����, netCDF�ե������
������������.
�⤷���Υե����뤬�������줿�Ф���Ǥޤ�����⡼�ɤˤ����, ���Υե���
��Ϻ�������.
{\tt NCREDF}�θƤӽФ��ˤ�ä�����⡼�ɤ����äƤ���ʤ�, netCDF�ե���
��Ϥ�������⡼�ɤ��������ξ��֤����줵��, ���Υե�����ϥ�����������
��.
{\tt NCABOR}��ƤӽФ������ͳ��, ����������, �ѿ�, �ޤ���°���������
�Ƥ���֤˲����㳲�����ä�����, ���Τ�̷��Τʤ����֤˥ե����������
����Ȥ������ȤǤ���.

���δؿ���, ����⡼�ɤ���{\tt NCCLOS}���ƤӽФ��줿��, ��������������
����⡼�ɤ���ȴ���뤿��θƤӽФ������Ԥ����ꤷ�����˼�ưŪ�˸Ƥӽ�
�����.

���顼�����������ˤ�, {\tt NCABOR}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item netCDF�ե�������������Ƥ���ݤ�����⡼�ɤ���ƤӽФ��줿����, 
�ե�����κ�������Ԥ���.
\item ���ꤵ�줿netCDF ID��netCDF�ե�����򻲾Ȥ��Ƥ��ʤ�.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCABOR (INTEGER NCID, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿netCDF ID.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCABOR}��Ȥä�`{\tt foo.nc}'�Ȥ���̾���Υե������
���������Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID, RCODE, LATID
         ...
      NCID = NCOPN('foo.nc', NCWRITE, RCODE)
         ...
      CALL  NCREDF(NCID, RCODE)
         ...
      LATID = NCDDEF(NCID, 'LAT', 18, RCODE)
      IF (RCODE .EQ. -1) THEN  ! ���������������
         CALL NCABOR(NCID, RCODE)  ! ����������
      END IF
         ...
\end{verbatim}}

%-----------------------------------------------------------------------
\section{�񤭹��ߤΥե���⡼�ɤ�����: NCSFIL}
\label{NCSFIL}

���θƤӽФ���, �ʲ��˽Ҥ٤�褦�ʤ����Ĥ��δĶ��ˤ�����񤭹��ߤ��Ŭ
�����뤿���, ���٤ʻ��ѤΤ���˰տޤ��줿��ΤǤ���.
�ؿ�{\tt NCSFIL}��, �񤭹��ߤΤ���˥����ץ󤵤�Ƥ���netCDF�ե������
{\bf �ե���⡼��}�����ꤷ, ���ߤΥ⡼�ɤ��֤�.
�ե���⡼�ɤ�{\tt NCFILL}�ޤ���{\tt NCNOFILL}�Τɤ��餫������Ǥ���.
{\tt NCFILL}���б�����ǥե���Ȥ�ư��Ǥ�, �ǡ����ϥե����ͤ�����ä�
�������. ���ʤ��, ��Ͽ�Τʤ��ѿ�������������, �ޤ��񤫤�Ƥ��ʤ��Ȥ�
���Υǡ�����ۤ����ͤ�񤤤��ꤹ��ݤ˥ե����ͤ��񤫤��.
����ˤ�ä�, �ǡ�����, ���줬�񤫤�������ɤ⤦�Ȥ��Ƥ���褦�ʻ�ߤ�
���Ф��뤳�Ȥ��Ǥ���.
�ե����ͤλ��ѤˤĤ��ƤΤ��¿���ξ���ˤĤ��Ƥ�\ref{�ե�����}��
[�ե�����]\pageref{�ե�����}�ڡ����򻲾�.
�ȼ��Υե����ͤ����ˡ�ˤĤ��Ƥξ����\ref{°���δ���}��[°���δ���]
\pageref{°���δ���}�ڡ����򻲾�.

{\tt NCNOFILL}���б�����ư��Ǥ�, �ǡ���������äƥե����ͤ������Ȥ���
�ǥե���Ȥ�ư���̵���ˤ���.
����ϸ�Ψ��夲�뤿��˻Ȥ����Ȥ��Ǥ���. �ʤ��ʤ�, netCDF�饤�֥�꤬
ľ��˥ǡ����Ǿ�񤭤���Ƥ��ޤ��褦�ʥե����ͤ�񤭹���Ȥ����������
ʣ�񤭹��ߤ����Ǥ��뤫��Ǥ���.

�֤��ͤˤ�ä�, netCDF�ե����뤬�ɤΥ⡼�ɤˤ��ä����Ȥ������Ȥ�ʬ����.
�����ͤ�Ȥä�, �����ץ󤵤줿netCDF�ե�����Υե���⡼�ɤ���Ū����
����, ���줫�鸵�Υ⡼�ɤ����줹�뤳�Ȥ��Ǥ���. 

�����ץ󤵤줿netCDF�ե������{\tt NCNOFILL}�⡼�ɤˤ������,
����ɤޤ�뤹�٤Ƥΰ��֤�ɬ�������ʥǡ�����񤭹��ޤʤ���Фʤ�ʤ�.
{\tt NCNOFILL}�⡼�ɤϽ񤭹��ߤΤ���˥����ץ󤵤줿netCDF�ե�����ΰ�
��Ū�������Ǥ����ʤ����Ȥ����դ�ɬ�פǤ���:
�⤷���Υե�����򥯥��������ƺƥ����ץ󤹤��, �ǥե���Ȥ�ư������.
{\tt NCFILL}���ۤ����ꤹ�뤿���, {\tt NCSFIL}��ƤӸƤӽФ���, �ǥե�
��Ȥ�ư�����뤳�Ȥ�Ǥ���.

�Ρ��ե���⡼�ɤ����ꤹ��Τ�ͭ���ʾ����Ȥ��Ƥ�, �ʲ���3�Ĥ��ͤ����
��:
\begin{enumerate}
\item netCDF�ե�����������ޤ��Ͻ�������Ƥ���Ȥ�. ���ξ��, {\tt
NCENDF}��ƤӽФ����˥Ρ��ե���⡼�ɤ����ꤷ, ���줫�餹�٤Ƥε�Ͽ��
���ѿ�����ӽ�������������٤Ƥε�Ͽ�ѿ��ν����Ͽ��{\bf ������}�񤯤�
���Ǥ���.
\item ��Ͽ�ظ��δ�¸��netCDF�ե�������ĥ���Ƥ���Ȥ�. �񤭹��ߤΤ���
�˥ե�����򥪡��ץ󤷤���ǥΡ��ե���⡼�ɤ����ꤷ, ���θ�, �񤫤��
���ʤ���Ͽ��������ޤʤ��褦��, �ɲäε�Ͽ��ե�����˴������ɲä��뤳
��.
\item ���������ͽ��ο������ѿ����¸��netCDF�ե�������ɲä���Ȥ�.
{\tt NCENDF}��ƤӽФ����˥Ρ��ե���⡼�ɤ����ꤷ, ���줫�鿷�����ѿ�
�����˽񤯤���.
\end{enumerate}

netCDF�ե����뤬̵���¼��������, ���κǸ�ε�Ͽ��{\tt NCNOFILL}�⡼��
�ǽ񤫤줿���ˤ�, �ե������{\tt NCNOFILL}�⡼�ɤ����ꤵ��Ƥ��ʤ���
�����4�Х���Ĺ���ʤ뤬, netCDF���󥿡��ե�����������Ȥäƥǡ�����
�����������Ƥ���Ф����Ѳ�������Ʃ������»��ʤ�.

���顼�����������ˤ�, {\tt NCSFIL}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿netCDF ID��netCDF�ե�����򻲾Ȥ��Ƥ��ʤ�.
\item ���ꤵ�줿netCDF ID���ɤ߹��ߤΤߤǥ����ץ󤵤�Ƥ���ե������
���Ȥ��Ƥ���.
\item �ե���⡼�ɤΰ�����{\tt NCNOFILL}�����{\tt NCFILL}�Τɤ���Ǥ�
�ʤ�.
\end{itemize}

\begin{quote}
\begin{verbatim}
      INTEGER FUNCTION NCSFIL (INTEGER NCID, INTEGER FILLMODE, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿netCDF ID.
\item[\tt FILLMODE] ���Υե�������Ф��ƴ�˾����ե���⡼��. {\tt
NCNOFILL}�ޤ���{\tt NCFILL}�Τɤ��餫.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤�
���.
\item[\tt NCSFIL] ���θƤӽФ������Υե�����Υե���⡼�ɤθ������֤�.
{\tt NCNOFILL}�ޤ���{\tt NCFILL}�Τɤ��餫.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCSFIL}��Ȥä�`{\tt foo.nc}'�Ȥ���̾����netCDF�ե�
������Ф��ƥΡ��ե���⡼�ɤ����ꤷ�Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID, RCODE, OMODE
         ...
* ����äƥե����ͤ������ǥե���Ȥ�ư��ǥǡ������
         ...
      OMODE = NCSFIL(NCID, NCNOFILL, RCODE)
         ...
* ����äƥե����ͤ��������˥ǡ������
         ...
\end{verbatim}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{����}
\label{����}

netCDF�ե�����ˤ����뼡����, ���������ݤ���������. �����netCDF�ե�
���뤬����⡼�ɤˤ���֤˹Ԥ���.
�Ƥ�����⡼�ɤ����뤳�Ȥˤ�ä�, ����ɲäμ������ɲä��뤳�Ȥ�Ǥ���.
netCDF�μ�����̾���ȥ���������äƤ���.
��Ĥ�netCDF�ե�����ˤ����Ƥ�, ��Ĥμ����ޤǤ�{\tt NC\_UNLIMITED}����
������Ĥ��Ȥ��Ǥ���. ���Υ�������, ���μ�����Ȥ��ѿ������μ����˱��
����Ĺ�Ǥ���Ȥ������Ȥ��̣���Ƥ���.

��Ĥ�netCDF�ե����������Ǥ��뼡���ο��ˤϾ��(100)���󾧤���Ƥ���.
���ξ�¤�����ä��������Ƥ���ޥ���{\tt MAXNCDIM}���ͤǤ���.
���ξ�¤���Ū��, ����Ū�ʥ��ץꥱ��������������˽񤯤��ȤǤ���.
����ˤ�ä�, �����Υ��ץꥱ��������, {\tt MAXNCDIM}���������󤵤�
�Ѱդ��Ƥ�����, Ǥ�դ�netCDF�ե�����򰷤����Ȥ��Ǥ���.
netCDF�饤�֥��μ����ˤ����ƤϤ��δ��𤵤줿��¤��פ��ƤϤ��ʤ���
��, �⤷ɬ�פʤ�Ф��¿���μ�����Ȥ����Ȥ��Ǥ���.
������, �Ǥ���netCDF�ե���������Ū�ʥ��ץꥱ��������netCDF�桼�ƥ�
��ƥ���������ȻפäƤϤʤ�ʤ�.

�̾�, ������̾���ȥ�������, ���μ������ǽ��������줿�Ȥ��˸��ꤵ���.
����̾���ϸ���Ѥ��뤳�Ȥ��Ǥ��뤬, �����Υ��������Ѥ��뤿��ˤ�, ����
����������������������netCDF�ե�����ˤ��٤ƤΥǡ����򥳥ԡ����ʤ���
�Фʤ�ʤ�.

C���󥿡��ե������ˤ����뼡����������{\tt int}���ǤϤʤ�{\tt long}����
����. �����MSDOS�Τ褦��, 16�ӥå�{\tt int}�ǡ������������ݡ��Ȥ��Ƥ���
���ץ�åȥե������Ǥ�netCDF�ե�������Τ��٤ƤΥǡ����˥�����������
���Ȥ��ǽ�ˤ��뤿��Ǥ���.
�����Ǥʤ�, �⤷������������{\tt int}����, 16�ӥå�{\tt int}�����ƤǤ�
��Τ���礭�ʼ��������������ѿ�����Υǡ����˥����������뤳�Ȥ��Ǥ�
�ʤ��ʤäƤ��ޤ�.

�����ץ󤵤줿netCDF�ե��������netCDF������, C�����FORTRAN���󥿡��ե���
���ˤ�����{\bf ����ID}�ȸƤФ�뾮���������ˤ�ƻ��Ȥ����.
C���󥿡��ե������ˤ����Ƥ�, ����ID��0, 1, 2, ..., �Ǥ��뤬, FORTRAN��
�󥿡��ե������ˤ����Ƥ�, �б�����ID�ϼ�����������줿���֤�1, 2, 3,
..., �Ȥʤ�.

�������Ф��ƥ��ݡ��Ȥ���Ƥ������ϰʲ��Τ褦�Ǥ���:
\begin{itemize}
\item ̾���ȥ�������Ϳ���Ƽ�������������.
\item ̾�����鼡��ID���������.
\item ����ID���鼡����̾���ȥ��������������.
\item ������̾�����Ѥ���.
\end{itemize}

%-----------------------------------------------------------------------
\section{��������������: NCDDEF}

�ؿ�{\tt NCDDEF}������⡼�ɤˤ��륪���ץ󤵤줿netCDF�ե�����˿�����
�������ɲä���.
�����, netCDF ID, ����̾, ����Ӽ�����������Ϳ����ȼ���ID���֤�.
���줾���netCDF�ե�������Ф���, ��ĤޤǤ�̵���¥���������(����ϵ�
Ͽ�����ȸƤФ��)��������Ǥ���.

���顼�����������ˤ�, {\tt NCDDEF}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item netCDF�ե����뤬����⡼�ɤˤʤäƤ��ʤ�.
\item ���ꤵ�줿����̾��¾�δ�¸�μ�����̾���Ǥ���.
\item ���ꤵ�줿��������0�ʲ��Ǥ���.
\item ���ꤵ�줿��������̵���¤���, ����netCDF�ե�������Ф��Ƥ��Ǥ�̵
���¥������μ������������Ƥ���.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      INTEGER FUNCTION NCDDEF (INTEGER NCID, CHARACTER*(*) DIMNAM, 
     +                         INTEGER DIMSIZ, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿netCDF ID.
\item[\tt DIMNAM] ����̾. ����ե��٥å�ʸ���ǻϤޤ�, �������������
('{\tt \_}')��ޤ����ޤ��Ϥ���ʾ�αѿ�����³���ͤФʤ�ʤ�.
��ʸ����ʸ���϶��̤����.
\item[\tt DIMSIZ] �����Υ�����; ���ʤ��, ���μ�����Ȥ��ѿ��ؤΥ���ǥ�
�����Ȥ��ƤΤ��μ������Ф����ͤο��Ǥ���.
���������������, ����ä��������Ƥ������{\tt NCUNLIM}�Τɤ��餫��
�ʤ���Фʤ�ʤ�.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCDDEF}��Ȥä�{\tt lat}�Ȥ���̾���ǥ�����18�μ���
�����{\tt rec}�Ȥ���̾���ε�Ͽ������`{\tt foo.nc}'�Ȥ���̾���ο�����
netCDF�ե�������������Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID, RCODE, LATID, RECID
         ...
      NCID = NCCRE('foo.nc', NCNOCLOB, RCODE)
         ...
      LATID = NCDDEF(NCID, 'lat', 18, RCODE)
      RECID = NCDDEF(NCID, 'rec', NCUNLIM, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{̾�����鼡��ID���������: NCDID}

�ؿ�{\tt NCDID}��, ̾����Ϳ����, netCDF������ID���֤�. {\tt ndims}��
netCDF�ե�������������Ƥ��뼡���ο���, ���줾��μ�����{\tt 1}����
{\tt ndims}�δ֤�ID�����.

���顼�����������ˤ�, {\tt NCDDEF}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿̾��������neCDF�ե�������Ǹ����������Ƥ���ɤμ���
��̾���Ǥ�ʤ�.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      INTEGER FUNCTION NCDID (INTEGER NCID, CHARACTER*(*) DIMNAME, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
netCDF ID.
\item[\tt DIMNAME] ����̾. ����ե��٥å�ʸ���ǻϤޤ�, �������������
 ('{\tt \_}')��ޤ����ޤ��Ϥ���ʾ�αѿ�����³���ͤФʤ�ʤ�.
 ��ʸ����ʸ���϶��̤����.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCDID}��Ȥä�, {\tt lat}�Ȥ���̾���μ����μ���ID��
���ꤷ�Ƥ���(��¸��`{\tt foo.nc}'�Ȥ���̾����netCDF�ե�����ˤ����Ʋ�
����������Ƥ���Ȳ��ꤷ�Ƥ���):
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID, RCODE, LATID
         ...
      NCID = NCOPN('foo.nc', NCNOWRIT, RCODE)
         ...
      LATID = NCDDEF(NCID, 'lat', RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{�����ˤĤ�����礻��: NCDINQ}

�ؿ�{\tt NCDINQ}��, ����ID��Ϳ����, ������̾���ȥ��������֤�.
̵���¼���(�⤷�����)�Υ������Ϥ���ޤǽ񤫤�Ƥ��뵭Ͽ�ο��Ǥ���.

���顼�����������ˤ�, {\tt NCDINQ}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿neCDF�ե�����ˤ�����, ���μ���ID����Ŭ���Ǥ���.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCDINQ (INTEGER NCID, INTEGER DIMID, CHARACTER*(*) DIMNAM, 
     +                   INTEGER DIMSIZ, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt DIMID] ������{\tt NClDID}�ޤ���{\tt NCDDEF}�ƤӽФ����֤��줿
 ����ID. 
\item[\tt DIMNAM] �֤��줿����̾. �֤����̾���Τ���Υ��ڡ�����������
 �Ƥ����ͤФʤ�ʤ�. ����̾�β�ǽ�ʺ���ʸ��Ĺ��, ����ä��������Ƥ���
���{\tt MAXNCNAM}��Ϳ�����Ƥ���.
\item[\tt DIMSIZ] �֤��줿����������. ̵���¼����ˤĤ��Ƥ�, �����, ����
 ��������Ǥ�դ��ѿ��˽񤭹���Τ˻Ȥ�줿���ߤκ����ͤǤ���.
 ���ʤ��, ��Ͽ���κ����ͤǤ���.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCDINQ}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
netCDF�ե�����ˤĤ���, {\tt lat}�Ȥ���̾���μ����Υ�����, �����̵��
��(��Ͽ)������̾���ȸ��ߤκ��祵��������Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID, RCODE, LATID, LATSIZ
      INTEGER NDIMS, NVARS, NGATTS, RECID, NRECS
* �ʲ�������ˤ�����31�ϥѥ�᥿��MAXNCNAM�Ǥ���.
      CHARACTER*31 LATNAM, RECNAM
         ...
      NCID = NCOPN('foo.nc', NCNOWRIT, RCODE)
         ...
      LATID = NCDDEF(NCID, 'lat', RCODE)
* lat��̾���ȥ��������������(���Ǥ�̾�����ΤäƤ��뤬)
      CALL NCDINQ(NCID, LATID, LATNAM, LATSIZ, RCODE)
* ��Ͽ������ID���������(�ޤ���1��)
      CALL NCINQ(NCID, NDIMS, NVARS, NGATTS, RECID, RCODE)
* ��Ͽ������̾���ȸ��ߤΥ��������������
      CALL NCDINQ(NCID, RECID, RECNAME, NRECS, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{������̾�����Ѥ���: NCDREN}

�ؿ�{\tt NCDREN}��, �񤭹��ߤΤ���˥����ץ󤵤�Ƥ���netCDF�ե������
�������¸�μ�����̾�����Ѥ���.
�⤷������̾�����Ť�̾�����Ĺ�����, ����netCDF�ǡ������åȤ�����⡼
�ɤǤʤ���Фʤ�ʤ�.
���뼡����̾����¾�μ�����Ʊ��̾���ˤ뤹�뤳�ȤϤǤ��ʤ�.

���顼�����������ˤ�, {\tt NCDREN}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ������̾����¾�μ�����̾���Ǥ���.
\item ���ꤵ�줿neCDF�ե�����ˤ�����, ���μ���ID����Ŭ���Ǥ���.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\item ������̾�����Ť�̾�����Ĺ��, ����netCDF�ե����뤬����⡼�ɤˤ�
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCDREN (INTEGER NCID, INTEGER DIMID, CHARACTER*(*) DIMNAME, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt DIMID] ������{\tt NClDID}�ޤ���{\tt NCDDEF}�ƤӽФ����֤��줿
 ����ID.
\item[\tt DIMNAM] �����ο�����̾��.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCDREN}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
netCDF�ե�����ˤĤ���, ������̾����{\tt ``lat''}����{\tt ``latitude''}
���Ѥ��Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID, RCODE, LATID
         ...
      NCID = NCOPN('foo.nc', NCNOWRIT, RCODE)
         ...
* ����̾���Ѥ��뤿�������⡼�ɤ�����
      CALL NCREDF(NCID, RCODE)
      LATID = NCDID(NCID, 'lat', RCODE)
      CALL NCDREN(NCID, LATID, 'latitude', RCODE)
* ����⡼�ɤ�ȴ����
      CALL NCENDF(NCID, RCODE)
\end{verbatim}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{�ѿ�}
\label{�ѿ�}

netCDF�ե�����ˤ������ѿ��ϥե����뤬���������ݤ���������. 
�����netCDF�ե����뤬����⡼�ɤˤ���֤˹Ԥ���.
�Ƥ�����⡼�ɤ����뤳�Ȥˤ�ä�, ���¾���ѿ����ɲä��뤳�Ȥ�Ǥ���.
netCDF���ѿ���̾��, ��, ����ӷ������, �������ѿ�����������ݤ�
��������.
�ѿ����ͤ���Ĥ��Ȥ��Ǥ�, ����ϸ�˥ǡ����⡼�ɤǳ��ꤵ���.

�̾�, ̾��, ��, ����ӷ����ѿ����ǽ����������ݤ˸��ꤵ���.
̾�����Ѥ��뤳�Ȥ��Ǥ��뤬, �ѿ��η�����ӷ����Ѥ��뤳�Ȥ��Ǥ��ʤ�.
������, ̵���¼�����Ȥä��������Ƥ����ѿ��Ϥ��μ����ˤ������¤ʤ�
����Ĺ�Ǥ���.

�����ץ󤵤줿netCDF�ե��������netCDF�ѿ���, C�����FORTRAN���󥿡��ե���
���ˤ�����{\bf �ѿ�ID}�ȸƤФ�뾮���������ǻ��Ȥ����.
�ѿ�ID��netCDF�ե���������ѿ���������줿���֤�ȿ�Ǥ��Ƥ���.
FORTRAN���󥿡��ե������ˤ����Ƥ�, �ѿ�ID���ѿ���������줿���֤�1, 2,
3, ..., �Ǥ���.
�ɤ���Υ��󥿡��ե������ˤ����Ƥ�, �ѿ�̾�����ѿ�ID���������Ӥ��ε�
��Ԥ�����δؿ����Ѱդ���Ƥ���.

ñ�̤Τ褦����������ꤹ�뤿���, �ѿ���°��(8��[°��]
\pageref{°��}�ڡ����򻲾�)��ȼ�äƤ��Ƥ�褤.

�ѿ����Ф��ƥ��ݡ��Ȥ���Ƥ������ϰʲ��Τ褦�Ǥ���:
\begin{itemize}
\item ̾��, �ǡ�����, ����ӷ���Ϳ�����ѿ�����������.
\item ̾�������ѿ�ID���������.
\item ����ID�����ѿ���̾��, �ǡ�����, �������°���ο����������.
\item �ѿ�ID, �ֹ�, ������ͤ�Ϳ�����ѿ��˥ǡ����ͤ������.
\item �ѿ�ID, �����ֹ�, ���Ĺ��, ����Ӱ�ޤȤޤ�Υǡ�����Ϳ�����ѿ�
���ͤ�����������.
\item �ѿ�ID, �����ֹ�, ���Ĺ��, ���ȥ饤�ɥ٥��ȥ�, ����ǥå����ޥ�
�ԥ󥰥٥��ȥ뤪��Ӱ�ޤȤޤ�Υǡ�����Ϳ������ʬŪ�˥���ץ뤵�줿��
���ϥޥåפ��줿�ͤ��������̤��ѿ��������.
\item ��Ͽ�ֹ�, ������ͤΤޤȤޤ�ؤΥݥ��󥿤�Ϳ�����ͤ�Ͽ�ѿ�����
���.
\item �ѿ�ID������ֹ��Ϳ�����ѿ�����ǡ������������.
\item �ѿ�ID, �����ֹ椪��ӱ��Ĺ����Ϳ�����ѿ������ͤ�������������.
\item �ѿ�ID, �����ֹ�, ���Ĺ��, ���ȥ饤�ɥ٥��ȥ뤪��ӥ���ǥå���
�ޥåԥ󥰥٥��ȥ��Ϳ������ʬŪ�˥���ץ뤵�줿�ޤ��ϥޥåפ��줿�ͤ�
�������̤��ѿ������������.
\item ��Ͽ�ֹ�, ����ӳƵ�Ͽ�ѿ��Υǡ������ɤ��˳�Ǽ����Ƥ��뤫�򼨤�
�ݥ��󥿤�Ϳ����, ��Ͽ�ѿ������ͤ��������.
\item �ѿ���̾�����Ѥ���.
\item Ϳ����줿�ǡ������ΥХ��ȿ����������.
\item ��Ͽ�ѿ��ο�, ������ID, ����Ӥ����ε�Ͽ���������������.
\end{itemize}

%---------------------------------------------------------------------
\section{netCDF�ǡ��������б���������η�}

�ʲ���ɽ��netCDF�ǡ�������FOTRAN�ǡ������Ȥ��б��򼨤�:
\begin{quote}
\begin{tabular}{l|ll|r}
netCDF/CDL & \multicolumn{2}{c|}{FORTRAN}   & \\
\multicolumn{1}{c|}{Data Type}  
& \multicolumn{1}{c}{Data Type}  
& \multicolumn{1}{c|}{API Mnemonic}  & Bits \\\hline
{\tt byte} & {\tt BYTE, LOGICAL*1 (INTEGER)} & {\tt NCBYTE} & {\tt 8} \\
{\tt char} & {\tt CHARACTER } & {\tt NCCHAR} & {\tt 8} \\
{\tt short} & {\tt INTEGER*2 (INTEGER) } & {\tt NCSHORT} & {\tt 16} \\
{\tt long} & {\tt INTEGER*4 (INTEGER) } & {\tt NCLONG} & {\tt 32} \\
{\tt float} & {\tt REAL*4 (REAL) } & {\tt NCFLOAT} & {\tt 32} \\
{\tt double} & {\tt REAL*8 (DOUBLEPRECISION) } & {\tt NCDOUBLE} & {\tt 64} 
\end{tabular}
\end{quote}

�ǽ�Υ�����netCDF�ǡ�����Ϳ���Ƥ��뤬, �����CDL�ǡ�������Ʊ���Ǥ�
��.
���ΰ��ȤΥ�����, ���줾��, �ǽ�Υ������б�����FORTRAN�ǡ�������
���, netCDF�롼�����ƤӽФ��ݤ˻Ȥ����б�����FORTRAN�ѥ�᥿����
����(���Υѥ�᥿����netCDF FORTRAN���󥯥롼�ɥե�����{\tt
netcdf.inc}���������Ƥ���).
�Ǥ����, ��̤ǳ�äƤ��ʤ�FORTRAN����Ȥä������褤.
�������FORTRAN����ѥ��餬���ݡ��Ȥ��Ƥ��ʤ����ˤĤ��Ƥ�, �б������
�̤ǳ��줿����Ȥ�����.
�Ǹ�Υ������б����뷿���ͤ���ɽ������Τ˻Ȥ���ӥåȿ��Ǥ���.

netCDF�饤�֥��θ��ߤΥС������Ǥ�, 64�ӥå������ޤ���ʣ���Х��Ȥ�
ʸ�����б�����netCDF����̵�����Ȥ����դ��줿��.

%-----------------------------------------------------------------------
\section{�ѿ�����������: NCVDEF}

�ؿ�{\tt NCVDEF}��, ����⡼�ɤˤ��륪���ץ󤵤�Ƥ���netCDF�ե������
�������ѿ����ɲä���.
netCDF ID, �ѿ�̾, �ѿ���, �����ο�, ����Ӽ���ID�Υꥹ�Ȥ�Ϳ�����,
�ѿ�ID���֤����.

���顼�����������ˤ�, {\tt NCVDEF}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item netCDF�ե����뤬����⡼�ɤˤʤ�.
\item ���ꤵ�줿�ѿ�̾��¾�δ�¸���ѿ�̾�Ǥ���.
\item ���ꤵ�줿����, Ŭ����netCDF���Ǥʤ�.
\item ���ꤵ�줿�����ο�����Ǥ��뤫, �ޤ������{\tt MAX\_VAR\_DIMS}
����礭��; ���������, netCDF�ѿ����Ф��Ƶ�����Ƥ��뼡���κ�����Ǥ���.
\item �����Υꥹ�Ȥˤ������Ĥޤ��Ϥ���ʾ�μ���ID������netCDF�ե�������Ф���Ŭ���Ǥʤ�.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      INTEGER FUNCTION NCVDEF (INTEGER NCID, CHARACTER*(*) VARNAM, INTEGER VARTYP,
     +                         INTEGER NVDIMS, INTEGER VDIMS(*), INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
netCDF ID.
\item[\tt VARNAM] �ѿ�̾. ����ե��٥å�ʸ���ǻϤޤ�, �������������
 ('{\tt \_}')��ޤ����ޤ��Ϥ���ʾ�αѿ�����³���ͤФʤ�ʤ�.
 ��ʸ����ʸ���϶��̤����.
\item[\tt VARTYP] ����ä��������Ƥ���netCDF�ǡ���������ΰ��. Ŭ����
netCDF�ǡ�������{\tt NCBYTE}, {\tt NCCHAR}, {\tt NCSHORT},
{\tt NCLONG}, {\tt NCFLOAT}, �����{\tt NCDOUBLE}�Ǥ���.
\item[\tt NVDIMS] �����ѿ����Ф��뼡���ο�. �㤨��, {\tt 2}�Ϲ���, {\tt
1}�ϥ٥��ȥ�, �����{\tt 0}�Ϥ����ѿ�������������ʤ������顼�Ǥ��뤳
�Ȥ��̣����. �������Ǥ��ä���, ����ä��������Ƥ������{\tt
MAXVDIMS}����礭���ƤϤʤ�ʤ�.
\item[\tt VDIMS] �ѿ��������б����뼡��ID��{\tt NVDIMS}�٥��ȥ�.
̵���¼�����ID���ޤޤ�Ƥ�����ˤ�, ����кǸ�Ǥʤ���Фʤ�ʤ�.
���ΰ�����, {\tt NVDIMS}��{\tt 0}�ξ��ˤ�̵�뤵���.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCVDEF}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
������netCDF�ե�����ˤĤ���, 3�Ĥμ���{\tt time}, {\tt lat}, �����
{\tt lon}�����̾��{\tt rh}��{\tt long}���ѿ����������Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER  NCID, RCODE
      INTEGER  LATDIM, LONDIM, TIMDIM  ! ����ID
      INTEGER  RHID                    ! �ѿ�ID
      INTEGER  RHDIMS(3)               ! �ѿ���
         ...
      NCID = NCCRE ('foo.nc', NC_CLOBBER, RCODE)
         ...
                                       ! ���������
      LATDIM = NCDDEF(NCID, 'lat', 5, RCODE)
      LONDIM = NCDDEF(NCID, 'lon', 10, RCODE)
      TIMDIM = NCDDEF(NCID, 'time', NCUNLIM, RCODE)
         ...
                                       ! �ѿ������
      RHDIMS(1) = LONDIM
      RHDIMS(2) = LATDIM
      RHDIMS(3) = TIMDIM
      RHID = NCVDEF (NCID, 'rh', NCDOUBLE, 3, RHDIMS, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{̾�������ѿ�ID���������: NCVID}

�ؿ�{\tt NCVID}��, ̾����Ϳ����, netCDF�ѿ���ID���֤�.

���顼�����������ˤ�, {\tt NCVID}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿�ѿ�̾��, ���ꤵ�줿netCDF�ե���������ѿ�̾�Ȥ���Ŭ��
�Ǥʤ�.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      INTEGER FUNCTION NCVID (INTEGER NCID, CHARACTER*(*) VARNAM, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARNAM] ID���ߤ����ѿ�̾.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCVID}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, ̾��{\tt rh}���ѿ���ID��Ĵ�٤Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER  NCID, RCODE
      INTEGER  RHID                    ! �ѿ�ID
         ...
      NCID = NCOPN ('foo.nc', NCNOWRIT, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{ID�����ѿ��ˤĤ��Ƥξ�����������: NCVINQ}

�ؿ�{\tt NCVINQ}��, ID��Ϳ����, netCDF�ѿ��ˤĤ��Ƥξ�����֤�.
�֤��������, ̾��, ��, �����ο�, �ѿ��η��򵭽Ҥ��뼡��ID�Υꥹ��,
������ѿ��˳�����Ƥ��Ƥ����ѿ�°���ο�, �Ǥ���.

���顼�����������ˤ�, {\tt NCVINQ}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿�ѿ�ID��, ���ꤵ�줿netCDF�ե�������Ф���Ŭ���Ǥʤ�.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCVINQ (INTEGER NCID, INTEGER VARID, CHARACTER*(*) VARNAM,
     +                   INTEGER VARTYP, INTEGER NVDIMS, INTEGER VDIMS(*),
     +                   INTEGER NVATTS, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] �ѿ�ID.
\item[\tt VARNAM] �֤��줿�ѿ�̾. �֤����̾���Τ���Υ��ڡ�����������
�Ƥ����ͤФʤ�ʤ�. �ѿ�̾�β�ǽ�ʺ���ʸ��Ĺ��, ����ä��������Ƥ���
���{\tt MAXNCNAM}��Ϳ�����Ƥ���.
\item[\tt VARTYP] �֤����ǡ������Ǥ���, ����ä��������Ƥ���netCDF�ǡ�
 ��������ΰ��. Ŭ����netCDF�ǡ�������{\tt NCBYTE}, {\tt NCCHAR}, {\tt
 NCSHORT}, {\tt NCLONG}, {\tt NCFLOAT}, �����{\tt NCDOUBLE}�Ǥ���.
\item[\tt NVDIMS] �����ѿ����Ф��뼡���ο����֤����. �㤨��, {\tt 2}�Ϲ�
 ��, {\tt 1}�ϥ٥��ȥ�, �����{\tt 0}�Ϥ����ѿ�������������ʤ������顼
 �Ǥ��뤳�Ȥ��̣����.
\item[\tt VDIMS] �ѿ��������б����뼡��ID��{\tt NVDIMS}�٥��ȥ뤬�֤����.
 ���ʤ��Ȥ�, {\tt NVDIMS}�������Υ٥��ȥ뤬�֤����Τ˽�ʬ�ʥ��ڡ�����
 ������ƤƤ����ͤФʤ�ʤ�.
 �ѿ����Ф��뼡�����β�ǽ�ʺ����ͤ�����ä��������Ƥ������{\tt
 MAXVDIMS}��Ϳ�����Ƥ���.
\item[\tt NVATS] �����ѿ��˳�����Ƥ��Ƥ����ѿ�°���ο����֤�.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCVINQ}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, ̾��{\tt rh}���ѿ��ˤĤ���Ĵ�٤Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER  NCID, RCODE
      INTEGER  RHID               ! �ѿ�ID
      CHARACTER*31 RHNAME         ! �ѿ�̾
      INTEGER  RHTYPE             ! �ѿ���
      INTEGER  RHN                ! �����ο�
      INTEGER  RHDIMS(MAXVDIMS)   ! �ѿ��η�
      INTEGER  RHNATT             ! °���ο�
         ...
      NCID = NCOPN ('foo.nc', NCNOWRIT, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE)  ! ID�����
      CALL NCVINQ (NCID, RHID, RHNAME, RHTYPE, RHN, RHDIMS, RHNATT, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{ñ��Υǡ����ͤ�񤭹���: NCVPT1�����NCVP1C}

�ؿ�{\tt NCVPT1}�ޤ���{\tt NCVP1C}��, �ǡ����⡼�ɤˤ��륪���ץ󤵤줿
netCDF�ե�������ѿ���ñ��Υǡ����ͤ��.
���Ϥ�, netCDF ID, �ѿ�ID, �ɤ��ͤ��ɲäޤ����ѹ�����뤫����ꤹ��ʣ
�������Υ���ǥå���, ����ӥǡ�����, �Ǥ���.

���顼�����������ˤ�, {\tt NCVPT1}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿�ѿ�ID��, ���ꤵ�줿netCDF�ե�������Ф���Ŭ���Ǥʤ�.
\item ���ꤵ�줿����ǥå��������ꤵ�줿�ѿ��Υ�󥯤��ϰϤ��鳰��Ƥ�
��. �㤨��, ��Υ���ǥå����ޤ���, �б����뼡������������礭�ʥ���ǥ�
����, �ϥ��顼�򵯤�.
\item ���ꤵ�줿netCDF�ե����뤬�ǡ����⡼�ɤǤʤϤ�, ����⡼�ɤˤ���.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCVPT1 (INTEGER NCID, INTEGER VARID, INTEGER MINDEX(*),
     +                   �� VALUE, INTEGER RCODE)

      SUBROUTINE NCVP1C (INTEGER NCID, INTEGER VARID, INTEGER MINDEX(*),
     +                   CHARACTER CHVAL, INTEGER RCODE)
\end{verbatim}
\end{quote}

2�Ĥ�FORTRAN���֥롼����{\tt NCVPT1}�����{\tt NCVP1C}���ѿ���ñ�����
���.
�ǽ�Τ�ΤϿ��ͷ����ѿ��˿��ͤ��, 2���ܤΤ�Τ�ʸ�����ѿ���ʸ����
���.

\begin{quote}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] �ѿ�ID.
\item[\tt MINDEX] �񤯥ǡ����ͤ�ʣ�������Υ���ǥå���.
 ���Υ���ǥå�����1������Ū�ʤ�ΤǤ���, ����椨, �㤨��2�����ѿ���
 �ǽ�Υǡ����ͤϥ���ǥå���{\tt (1,1)}�����.
 {\tt MINDEX}�����ǤϤ����ѿ��μ������б����Ƥ��ʤ���Фʤ�ʤ�.
 ���ä�, �⤷�����ѿ�����Ͽ�ѿ��ʤ��, �Ǹ�Υ���ǥå����ϵ�Ͽ�����б�
 ���Ƥ��ʤ���Фʤ�ʤ�.
\item[\tt VALUE] {\tt NCVPT1}�ˤ�����, �񤯥ǡ����ͤǤ���.
 ���Υǡ�����netCDF��{\tt NCSHORT}, {\tt NCLONG}, {\tt NCFLOAT}, �����
 {\tt NCDOUBLE}, �Τɤ���б����Ƥ��Ƥ�褤��, netCDF�ѿ��η��Ȥ���Ŭ��
 �Ǥʤ���Фʤ�ʤ�.
 {\bf �ٹ�: ����ѥ����netCDF���եȥ�������ְ�ä��ǡ��������Ȥ���
 ���뤫�ɤ����򸡽ФǤ��ʤ�.}
\item[\tt CHVAL] {\tt NCVP1C}�ˤ�����, �񤯥ǡ����ͤǤ���.
 ���Υǡ�����netCDF��{\tt NCCHAR}�ޤ���{\tt NCBYTE}���б�����ʸ�����Ǥ�
 ����Фʤ�ʤ�.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCVPT1}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, ̾��{\tt rh}���ѿ���{\tt (4,3,2)}���Ǥ�
{\tt 0.5}�򥻥åȤ��Ƥ���.
������ˤ����Ƥϴ�ñ�Τ���, {\tt rh}������{\tt lon}, {\tt lat}, �����
{\tt time}����äƤ��뤳�Ȥ��ΤäƤ���Ȥ���. ������, {\tt lon}��4����
����, {\tt lat}��3���ܤ���, �����{\tt time}��2���ܤ��ͤ��б�����{\tt
rh}���ͤ򥻥åȤ������櫓�Ǥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER  NCID, RCODE
      INTEGER  RHID               ! �ѿ�ID
      INTEGER  RHINDX(3)          ! �ͤ�񤯾��
      DATA RHINDX /4, 3, 2/
         ...
      NCID = NCOPN ('foo.nc', NCWRITE, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE)  ! ID�����
      CALL NCVPT1 (NCID, RHID, RHINDX, 0.5, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{�ͤ������񤭹���: NCVPT(C)}

�ؿ�{\tt NCVPT}�ޤ���{\tt NCVPTC}��, �����ץ󤵤줿netCDF�ե��������
�����ͤ��.
�񤭤���netCDF�ѿ�����ʬ��, netCDF�ѿ����������̤򼨤�������ӱ��Ĺ��
�Υ٥��ȥ��Ϳ���뤳�Ȥˤ�äƻ��ꤵ���.
�񤫤���ͤ�, netCDF�ѿ�����1�������Ǥ�����Ѥ��褦�ʽ��֤�, netCDF
�ѿ��ȴط��Ť�����.
����netCDF�ե�����ϥǡ����⡼�ɤˤʤ���Фʤ�ʤ�.
\footnote{MSDOS�����ƥ��ˤ�����XDR�θ��ߤμ����Ǥ�, {\tt NCVPT}����
��{\tt NCVPTC}�γƸƤӽФ��ˤ����ƥ������������ǡ������̤�, 64K�Х�
�Ȱʲ������¤���Ƥ���.}

���顼�����������ˤ�, {\tt NCVPT}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿�ѿ�ID��, ���ꤵ�줿netCDF�ե�������Ф���Ŭ���Ǥʤ�.
\item ���ꤵ�줿���Υ���ǥå�����, ���ꤵ�줿�ѿ��Υ�󥯤��ϰϤ��鳰
��Ƥ���. �㤨��, ��Υ���ǥå����ޤ���, �б����뼡������������礭��
����ǥå���, �ϥ��顼�򵯤�.
\item ���ꤵ�줿���Υ���ǥå����˻��ꤵ�줿���Ĺ����ä�����Τ�,
���ꤵ�줿�ѿ��Υ�󥯤��ϰϤ򳰤줿�ǡ����򻲾Ȥ��Ƥ���.
�㤨��, ���Ĺ����(�б����뼡��������)$-$(���Υ���ǥå���)����礭��
���ϥ��顼�����������.
\item ���ꤵ�줿netCDF�ե����뤬�ǡ����⡼�ɤǤʤϤ�, ����⡼�ɤˤ���.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCVPT (INTEGER NCID, INTEGER VARID, INTEGER START(*),
     +                  INTEGER COUNT(*), �� VALUES, INTEGER RCODE)

      SUBROUTINE NCVPTC (INTEGER NCID, INTEGER VARID, INTEGER START(*),
     +                   INTEGER COUNTS(*), CHARACTER*(*) STRING,
     +                   INTEGER LENSTER, INTEGER RCODE)
\end{verbatim}
\end{quote}

2�Ĥ�FORTRAN���֥롼����{\tt NCVPT}�����{\tt NCVPTC}��netCDF�ѿ�����
��������. �ǽ�Τ�ΤϿ��ͷ����ѿ��˿��ͤ��, 2���ܤΤ�Τ�ʸ��
���ѿ���ʸ���ͤ��.

\begin{quote}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] �ѿ�ID.
\item[\tt START] �ǡ����ͤ���Ƭ���񤫤���ѿ��Υ���ǥå�������ꤹ������
 �Υ٥��ȥ�Ǥ���. ���Υ���ǥå�����1������Ū�ʤ�ΤǤ���, ����椨, 
 �㤨���ѿ��κǽ�Υǡ����ͤϥ���ǥå���{\tt (1, 1, ..., 1)}�����.
 {\tt START}�Υ�������, ���ꤵ�줿�ѿ��μ�������Ʊ���Ǥʤ���Фʤ�ʤ�.
 {\tt START}�����Ǥ�, �ѿ��μ����˽��֤��б����ʤ���Фʤ�ʤ�.
 ���ä�, �⤷�����ѿ�����Ͽ�ѿ��ʤ��, �Ǹ�Υ���ǥå����ϥǡ����ͤ��
 ������γ��ϵ�Ͽ�ֹ���б����Ƥ��ʤ���Фʤ�ʤ�.
\item[\tt COUNT] �񤫤��ǡ����ͤΥ֥��å���, �Ƽ����˱�ä����Ĺ�����
 �ꤹ�������Υ٥��ȥ�.
 �㤨��, ñ����ͤ�񤯤ˤ�, {\tt COUNT}��{\tt (1, 1, ..., 1)}�Ȼ��ꤹ
 ��.
 {\tt COUNT}�Υ�������, ���ꤵ�줿�ѿ��μ������Ǥ���.
 {\tt COUNT}�����Ǥ�, �ѿ��μ������б����Ƥ���.
 ���ä�, �����ѿ�����Ͽ�ѿ��ʤ��, {\tt COUNT}�κǸ�����Ǥ�, �񤯵�Ͽ
 �������פ��б����Ƥ���.
\item[\tt VALUES] {\tt NCVPT}�ˤ�����, �񤫤��ǡ����ͤΥ֥��å��Ǥ���.
 �ǡ��������ꤵ�줿�ѿ��˽񤫤����֤�, 1���ܤμ�����������Ѥ��褦
 �ʽ��֤Ǥ���(�̾��FORTRAN�δ����ɤ���).
 �ǡ�����netCDF��{\tt NCSHORT}, {\tt NCLONG}, {\tt NCFLOAT}, �����
 {\tt NCDOUBLE}, �Τɤ���б����Ƥ��Ƥ�褤��, ����netCDF�ѿ��η�
�Ȥ���Ŭ���Ǥʤ���Фʤ�ʤ�.
 {\bf �ٹ�: ����ѥ����netCDF���եȥ�������ְ�ä��ǡ��������Ȥ���
 ���뤫�ɤ����򸡽ФǤ��ʤ�.}
\item[\tt STRING] {\tt NCVPTC}�ˤ�����, �񤫤��ʸ���Ǥ���.
 netCDF�ѿ���ʸ�����񤫤����֤�, 1���ܤμ�����������Ѥ��褦
 �ʽ��֤Ǥ���(�̾��FORTRAN�δ����ɤ���).
 �ǡ�����netCDF��{\tt NCCHAR}�ޤ���{\tt NCBYTE}���б����뷿���������.
\item[\tt LENSTR] {\tt NCVPTC}�ˤ�����, {\tt STRING}�������������Ƥ���
 ʸ��Ĺ�����פǤ���. 
 �����, {\tt COUNT}�٥��ȥ�����Ǥ��Ѱʾ���ͤǤ���Ϥ��Ǥ���.
 �����Ȥ�������Ϳ�����뤳�Ȥ⤢��Τ�, �����ͤ�, FORTRAN��{\tt LEN}
 �ؿ����֤��ͤ�ɬ������Ʊ���Ǥ���Ȥϸ¤�ʤ����Ȥ����դ��줿��.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCVPT}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, ̾��{\tt rh}���ѿ��Τ��٤Ƥ��ͤ�
{\tt 0.5}�ˤ��Ƥ���.
������ˤ����Ƥϴ�ñ�Τ���, {\tt rh}������{\tt lon}, {\tt lat}, �����
{\tt time}����äƤ��뤳��, �����{\tt lon}���ͤ�10��, {\tt lat}���ͤ�
5��, �����{\tt time}���ͤ�3��, �Ǥ��뤳�Ȥ��ΤäƤ���Ȥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      PARAMETER (NDIMS=3)         ! �����ο�
      PARAMETER (TIMES=3, LATS=5, LONS=10) ! �����Υ�����
      INTEGER  NCID, RCODE, TIMES
      INTEGER  RHID               ! �ѿ�ID
      INTEGER  START(NDIMS), COUNT(NDIMS)
      DOUBLE RHVALS(LONS, LATS, TIMES)
      DATA START /1, 1, 1/        ! �ǽ���ͤ��饹������
      DATA COUNT /LONS, LATS, TIMES/
         ...
      NCID = NCOPN ('foo.nc', NCWRITE, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE)   ! ID�����
      DO 10 ILON = 1, LONS
         DO 10 ILAT = 1, LATS
            DO 10 ITIME = 1, TIMES
               RHVALS(ILON, ILAT, ITIME) = 0.5
   10 CONTINUE
      CALL NCVPT (NCID, RHID, START, COUNT, RHVALS, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{��ʬŪ�˥���ץ뤵�줿, �ޤ��ϥޥåפ��줿�ͤ�����
���: NCVPTG�����NCVPGC}
\label{NCVPTG}

�ؿ�{\tt NCVPTG}�ޤ���{\tt NCVPGC}��, ��ʬŪ�˥���ץ뤵�줿, �ޤ���
�ޥåפ��줿�ͤ��������̤򥪡��ץ󤵤줿netCDF�ե�������ѿ��˽񤭹���.
��ʬŪ�˥���ץ뤵�줿, �ޤ��ϥޥåפ��줿�ͤ��������̤�, ��, ���Ĺ��
�Υ٥��ȥ�, ���ȥ饤�ɥ٥��ȥ�, ����ӥ���ǥå����ޥåԥ󥰥٥��ȥ�,
��Ϳ���ƻ��ꤵ���.
�ǡ�������μ����ν��֤ޤ��ϥ������˴ؤ��Ƥ��ä����¤Ϥʤ�.
����netCDF�ϥǡ����⡼�ɤˤʤ���Фʤ�ʤ�.

���顼�����������ˤ�, {\tt NCVPTG}�����{\tt NCVPGC}��{\tt RCODE}��
�����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿�ѿ�ID��, ���ꤵ�줿netCDF�ե�������Ф���Ŭ���Ǥʤ�.
\item ���ꤵ�줿���Υ���ǥå�����, ���ꤵ�줿�ѿ��Υ�󥯤��ϰϤ��鳰
��Ƥ���. �㤨��, ��Υ���ǥå����ޤ���, �б����뼡������������礭��
����ǥå���, �ϥ��顼�򵯤�.
\item ���ꤵ�줿���Υ���ǥå����˻��ꤵ�줿���Ĺ������ӥ��ȥ饤��
��ä�����Τ�, ���ꤵ�줿�ѿ��Υ�󥯤��ϰϤ򳰤줿�ǡ����򻲾Ȥ��Ƥ�
��. �㤨��, ���Ĺ����(�б����뼡��������)$-$(���Υ���ǥå���)�����
��������, ����netCDF�ѿ����б����뼡���Υ���������礭�ʥ��ȥ饤�ɤ�
�Ȥä�2�Ĥޤ��Ϥ���ʾ���ͤ˥����������褦�Ȥ������, �ˤϥ��顼���
��������. 
\item ���ȥ饤�ɤ����Ǥʤ�.
\item ���ꤵ�줿netCDF�ե����뤬�ǡ����⡼�ɤǤʤϤ�, ����⡼�ɤˤ���.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCVPTG (INTEGER NCID, INTEGER VARID, INTEGER START(*),
     +                   INTEGER COUNT(*), INTEGER STRIDE(*), INTEGER IMAP(*),
     +                   �� VALUES, INTEGER RCODE)

      SUBROUTINE NCVPGC (INTEGER NCID, INTEGER VARID, INTEGER START(*),
     +                   INTEGER COUNT(*), INTEGER STRIDE(*), INTEGER IMAP(*),
     +                   CHARACTER*(*) STRING, INTEGER RCODE)
\end{verbatim}
\end{quote}

2�Ĥ�FORTRAN���֥롼����{\tt NCVPTG}�����{\tt NCVPGC}��netCDF�ѿ���
��ʬŪ�˥���ץ뤵�줿, �ޤ��ϥޥåפ��줿�ͤ��������̤�񤭹���.
�ǽ�Τ�ΤϿ��ͷ����ѿ��˿��ͤ��, 2���ܤΤ�Τ�ʸ�����ѿ���ʸ����
���.

\begin{quote}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] �ѿ�ID.
\item[\tt START] �ǡ����ͤ���Ƭ���񤫤���ѿ��Υ���ǥå�������ꤹ������
 �Υ٥��ȥ�Ǥ���. ���Υ���ǥå�����1������Ū�ʤ�ΤǤ���, ����椨, 
 �㤨���ѿ��κǽ�Υǡ����ͤϥ���ǥå���{\tt (1, 1, ..., 1)}�����.
 {\tt START}�Υ�������, ���ꤵ�줿�ѿ��μ�������Ʊ���Ǥʤ���Фʤ�ʤ�.
 {\tt START}�����Ǥ�, �ѿ��μ����˽��֤��б����ʤ���Фʤ�ʤ�.
 ���ä�, �⤷�����ѿ�����Ͽ�ѿ��ʤ��, �Ǹ�Υ���ǥå����ϥǡ����ͤ��
 ������γ��ϵ�Ͽ�ֹ���б����Ƥ��ʤ���Фʤ�ʤ�.
\item[\tt COUNT] �񤫤��ǡ����ͤΥ֥��å���, �Ƽ����˱�ä����Ĺ�����
 �ꤹ�������Υ٥��ȥ�.
 �㤨��, ñ����ͤ�񤯤ˤ�, {\tt COUNT}��{\tt (1, 1, ..., 1)}�Ȼ��ꤹ��.
 {\tt COUNT}�Υ�������, ���ꤵ�줿�ѿ��μ������Ǥ���.
 {\tt COUNT}�����Ǥ�, �ѿ��μ������б����Ƥ���.
 ���ä�, �����ѿ�����Ͽ�ѿ��ʤ��, {\tt COUNT}�κǸ�����Ǥ�, �񤯵�Ͽ
 �������פ��б����Ƥ���.
\item[\tt STRIDE] �Ƽ������Ф���, �������������netCDF�ѿ����ͤδֳ֤ޤ�
 ��{\tt 0}����ꤹ�������Υ٥��ȥ�ޤ���, ��{\tt 0}, �Ǥ���.
 �٥��ȥ�����Ǥ�, ���֤�, �ѿ��μ������б����Ƥ���.
 �����ͤ�1�ʤ�, netCDF�ѿ����б����뼡�������ܤ����ͤ˥����������Ƥ�
 ��; �ͤ�2�ʤ�, netCDF�ѿ����б����뼡����1�Ĥ������ͤ˥����������Ƥ���; 
 �����Ǥ���.
 ������{\tt 0}�ʤ�, �ϳƼ����˱�ä�, ���ܤ����ͤ˥����������Ƥ����Ȥ�
 ���ǥե���Ȥ�ư��ˤʤ�.
\item[\tt IMAP] �Ƽ������Ф���, netCDF�ѿ��˴�Ϣ�����ǡ����ͤ�������
 �ɤΤ褦���¤٤��Ƥ��뤫����ꤹ�������Υ٥��ȥ�, �ޤ�����{\tt 0}��
 ����.
 {\tt VALUE}�����ǻؤ��������ΰ��֤�������Υǡ����ؤΥ��ե��å�
 (�Х���ñ��)��, ����ǥå����ޥåԥ󥰥٥��ȥ�ȥǡ�����(������0�Ȥ���)
 ��ɸ�Ȥ����Ѥ�Ϳ������. 
 (��ĤΥ٥��ȥ�[x0, x1, ..., xn]��[y0, y1, ..., yn]��{\bf ����}��,
 ñ���x0*y0 + x1*y1 + ... + xn*yn �Ǥ���.)
 {\tt VALUE}������Ŭ�ڤ˻��ꤵ��Ƥ����, ���Υ٥��ȥ������ͤ�ޤ��
 ���Ƥ�褤.
 ������{\tt 0}�ʤ�, �������ͤ�, ��Ϣ����netCDF�ѿ���Ʊ����¤�򤷤�
 �������Ȥ����ꤵ���ǥե���Ȥ�ư��ˤʤ�.
\item[\tt VALUES] {\tt NCVPTG}�ˤ�����, �񤫤��ǡ����ͤΥ֥��å��Ǥ���.
 �ǡ��������ꤵ�줿�ѿ��˽񤫤����֤�, 1���ܤμ�����������Ѥ��褦
 �ʽ��֤Ǥ���(�̾��FORTRAN�δ����ɤ���).
 �ǡ�����netCDF��{\tt NCSHORT}, {\tt NCLONG}, {\tt NCFLOAT}, �����
 {\tt NCDOUBLE}, �Τɤ���б����Ƥ��Ƥ�褤��, ����netCDF�ѿ��η�
 �Ȥ���Ŭ���Ǥʤ���Фʤ�ʤ�.
 {\bf �ٹ�: ����ѥ����netCDF���եȥ�������ְ�ä��ǡ��������Ȥ���
 ���뤫�ɤ����򸡽ФǤ��ʤ�.}
\item[\tt STRING] {\tt NCVPGC}�ˤ�����, �񤫤��ʸ���Ǥ���.
 netCDF�ѿ���ʸ�����񤫤����֤�, ��ʬŪ�˥���ץ뤵�줿�ޤ��ϥޥåפ�
 �줿�������̤�1���ܤμ�����������Ѥ��褦
 �ʽ��֤Ǥ���(�̾��FORTRAN�δ����ɤ���).
 �ǡ�����netCDF��{\tt NCCHAR}�ޤ���{\tt NCBYTE}���б����뷿���������.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCVPTG}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, ̾��{\tt rh}���ѿ��γƼ�����1�Ĥ�������
��{\tt 0.5}�ˤ��Ƥ���.
Ʊ�������Υ��ȥ饤�ɤ��Ѥ���, netCDF�ѿ��ȼ������դǤ���2��ѥ�᥿��
�Ȥ������󤫤��ͤ���Ф��Ƥ���.
������ˤ����Ƥϴ�ñ�Τ���, {\tt rh}������{\tt lon}, {\tt lat}, �����
{\tt time}����äƤ��뤳��, �����{\tt lon}���ͤ�10��, {\tt lat}���ͤ�
5��, �����{\tt time}���ͤ�3��, �Ǥ��뤳�Ȥ��ΤäƤ���Ȥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      PARAMETER (NDIMS=3)         ! ������
      PARAMETER (TIMES=3, LATS=5, LONS=10) ! ����������
      INTEGER  NCID, RCODE
      INTEGER  RHID               ! variable ID
      INTEGER  START(NDIMS), COUNT(NDIMS), STRIDE(NDIMS), IMAP(NDIMS)  
                                  ! ��ʬŪ�˥���ץ뤵�줿�ޤ��ϥޥåפ��줿����
      DOUBLE DATA(2, TIMES, LATS, LONS)    ! rh��2���ܤΥѥ�᥿���Ǥ���
      DATA START /1, 1, 1/        ! �ǽ���ͤ��饹�����Ȥ���
      DATA COUNT /LONS, LATS, TIMES/
      DATA STRIDE /2, 2, 2/
         ...
      NCID = NCOPN ('foo.nc', NCWRITE, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE)   ! ID�����
      DO 10 ILON = 1, LONGS, STRIDE(1)
         DO 10 ILAT = 1, LATS, STRIDE(2)
            DO 10 ITIME = 1, TIMES, STRIDE(3)
               DATA(2, ITIME, ILAT, ILON) = 0.5
   10 CONTINUE
      IMAP(3) = 8*2*2   ! �������ѿ�2���ȤΥ٥��ȥ�ΰ�Ĥ�������
      IMAP(2) = IMAP(3)*(1+(TIMES-1)/STRIDE(3))*2
      IMAP(1) = IMAP(2)*(1+(LATS-1)/STRIDE(2))*2
      CALL NCVPTG (NCID, RHID, START, COUNT, STRIDE, IMAP, DATA(2,1,1,1), RCODE)
\end{verbatim}}


%-----------------------------------------------------------------------
\section{ñ��Υǡ����ͤ��ɤ�: NCVGT1�����NCVG1C}

�ؿ�{\tt NCVGT1}�ޤ���{\tt NCVG1C}��, �ǡ����⡼�ɤˤ��륪���ץ󤵤줿
netCDF�ե�������ѿ�����ñ��Υǡ����ͤ��ɤ�.
���Ϥ�, netCDF ID, �ѿ�ID, �ɤ��ͤ��ɲäޤ����ѹ�����뤫����ꤹ��ʣ
�������Υ���ǥå���, ����ӥǡ����ͤ��ɤߤ��ޤ����֥��ɥ쥹, �Ǥ���.

���顼�����������ˤ�, {\tt NCVGT1}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿�ѿ�ID��, ���ꤵ�줿netCDF�ե�������Ф���Ŭ���Ǥʤ�.
\item ���ꤵ�줿����ǥå��������ꤵ�줿�ѿ��Υ�󥯤��ϰϤ��鳰��Ƥ�
��. �㤨��, ��Υ���ǥå����ޤ���, �б����뼡������������礭�ʥ���ǥ�
����, �ϥ��顼�򵯤�.
\item ���ꤵ�줿netCDF�ե����뤬�ǡ����⡼�ɤǤʤϤ�, ����⡼�ɤˤ���.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCVGT1 (INTEGER NCID, INTEGER VARID, INTEGER MINDEX(*),
     +                   �� VALUE, INTEGER RCODE)

      SUBROUTINE NCVG1C (INTEGER NCID, INTEGER VARID, INTEGER MINDEX(*),
     +                   CHARACTER CHVAL, INTEGER RCODE)
\end{verbatim}
\end{quote}

2�Ĥ�FORTRAN���֥롼����{\tt NCVGT1}�����{\tt NCVG1C}���ѿ�����ñ���
�ͤ��ɤ�.
�ǽ�Τ�ΤϿ��ͷ����ѿ���ο��ͤ��ɤ�, 2���ܤΤ�Τ�ʸ�����ѿ���ʸ��
�ͤ��ɤ�.

\begin{quote}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] �ѿ�ID.
\item[\tt MINDEX] �ɤ�ǡ����ͤ�ʣ�������Υ���ǥå���.
 ���Υ���ǥå�����1������Ū�ʤ�ΤǤ���, ����椨, �㤨��2�����ѿ���
 �ǽ�Υǡ����ͤϥ���ǥå���{\tt (1,1)}�����.
 {\tt MINDEX}�����ǤϤ����ѿ��μ������б����Ƥ��ʤ���Фʤ�ʤ�.
 ���ä�, �⤷�����ѿ�����Ͽ�ѿ��ʤ��, �Ǹ�Υ���ǥå����ϵ�Ͽ�����б�
 ���Ƥ��ʤ���Фʤ�ʤ�.
\item[\tt VALUE] {\tt NCVPT1}�ˤ�����, �ǡ����ͤ��ɤߤ�����֤Ǥ���.
 ���Υǡ�����netCDF��{\tt NCSHORT}, {\tt NCLONG}, {\tt NCFLOAT}, �����
 {\tt NCDOUBLE}, �Τɤ���б����Ƥ��Ƥ�褤��, netCDF�ѿ��η��Ȥ���Ŭ��
 �Ǥʤ���Фʤ�ʤ�.
 {\bf �ٹ�: ����ѥ����netCDF���եȥ�������ְ�ä��ǡ��������Ȥ���
 ���뤫�ɤ����򸡽ФǤ��ʤ�.}
\item[\tt CHVAL] {\tt NCVP1C}�ˤ�����, �ǡ����ͤ��ɤߤ�����֤Ǥ���.
 ���Υǡ�����netCDF��{\tt NCCHAR}�ޤ���{\tt NCBYTE}���б�����ʸ�����Ǥ�
 ����Фʤ�ʤ�.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCVGT1}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, ̾��{\tt rh}���ѿ���{\tt (4,3,2)}����
��������Ƥ���.
������ˤ����Ƥϴ�ñ�Τ���, {\tt rh}������{\tt lon}, {\tt lat}, �����
{\tt time}����äƤ��뤳�Ȥ��ΤäƤ���Ȥ���. ������, {\tt lon}��4����
����, {\tt lat}��3���ܤ���, �����{\tt time}��2���ܤ��ͤ��б�����{\tt
rh}���ͤ�����������櫓�Ǥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER NCID, RCODE
      INTEGER RHID ! �ѿ�ID
      INTEGER RHINDX(3) ! �ͤ�����������
      DOUBLE PRECISION RHVAL ! �����������
      DATA RHINDX /4, 3, 2/
         ...
      NCID = NCOPN ('foo.nc', NCNOWRIT, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE)   ! ID�����
      CALL NCVGT1 (NCID, RHID, RHINDX, RHVAL, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{�ͤ�������ɤ߹���: NCVGT(C)}

�ؿ�{\tt NCVGT}�ޤ���{\tt NCVGTC}��, �����ץ󤵤줿netCDF�ե��������
�������ͤ�������ɤ�.
�����, ������ӱ��Ĺ���Υ٥��ȥ��Ϳ���뤳�Ȥˤ�äƻ��ꤵ���.
�ͤ�, netCDF�ѿ�����1�������Ǥ�����Ѥ��褦�ʽ��֤�, Ϣ³Ū�ʰ��֤�
�ɤ߹��ޤ��.
����netCDF�ե�����ϥǡ����⡼�ɤˤʤ���Фʤ�ʤ�.
\footnote{MSDOS�����ƥ��ˤ�����XDR�θ��ߤμ����Ǥ�, {\tt NCVGT}����
��{\tt NCVGTC}�γƸƤӽФ��ˤ����ƥ������������ǡ������̤�, 64K�Х�
�Ȱʲ������¤���Ƥ���.}

���顼�����������ˤ�, {\tt NCVGT}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿�ѿ�ID��, ���ꤵ�줿netCDF�ե�������Ф���Ŭ���Ǥʤ�.
\item ���ꤵ�줿���Υ���ǥå�����, ���ꤵ�줿�ѿ��Υ�󥯤��ϰϤ��鳰
��Ƥ���. �㤨��, ��Υ���ǥå����ޤ���, �б����뼡������������礭��
����ǥå���, �ϥ��顼�򵯤�.
\item ���ꤵ�줿���Υ���ǥå����˻��ꤵ�줿���Ĺ����ä�����Τ�,
���ꤵ�줿�ѿ��Υ�󥯤��ϰϤ򳰤줿�ǡ����򻲾Ȥ��Ƥ���.
�㤨��, ���Ĺ����(�б����뼡��������)$-$(���Υ���ǥå���)����礭��
���ϥ��顼�����������.
\item ���ꤵ�줿netCDF�ե����뤬�ǡ����⡼�ɤǤʤϤ�, ����⡼�ɤˤ���.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCVGT (INTEGER NCID, INTEGER VARID, INTEGER START(*),
     +                  INTEGER COUNT(*), �� VALUES, INTEGER RCODE)

      SUBROUTINE NCVGTC (INTEGER NCID, INTEGER VARID, INTEGER START(*),
     +                   INTEGER COUNTS(*), CHARACTER*(*) STRING,
     +                   INTEGER LENSTER, INTEGER RCODE)
\end{verbatim}
\end{quote}

2�Ĥ�FORTRAN���֥롼����{\tt NCVGT}�����{\tt NCVGTC}��netCDF�ѿ�����
�ͤ�������ɤ�.
�ǽ�Τ�ΤϿ��ͷ����ѿ�����ο��ͤ��ɤ�, 2���ܤΤ�Τ�ʸ�����ѿ�����
ʸ���ͤ��ɤ�.

\begin{quote}
\begin{description}
\item[\tt NCID]������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] �ѿ�ID.
\item[\tt START] �ǡ����ͤ���Ƭ���ɤޤ���ѿ��Υ���ǥå�������ꤹ������
 �Υ٥��ȥ�Ǥ���. ���Υ���ǥå�����1������Ū�ʤ�ΤǤ���, ����椨, 
 �㤨���ѿ��κǽ�Υǡ����ͤϥ���ǥå���{\tt (1, 1, ..., 1)}�����.
 {\tt START}�Υ�������, ���ꤵ�줿�ѿ��μ�������Ʊ���Ǥʤ���Фʤ�ʤ�.
 {\tt START}�����Ǥ�, �ѿ��μ����˽��֤��б����ʤ���Фʤ�ʤ�.
 ���ä�, �⤷�����ѿ�����Ͽ�ѿ��ʤ��, �Ǹ�Υ���ǥå����ϥǡ����ͤ���
 �ि��γ��ϵ�Ͽ�ֹ���б����Ƥ��ʤ���Фʤ�ʤ�.
\item[\tt COUNT] �ɤޤ��ǡ����ͤΥ֥��å���, �Ƽ����˱�ä����Ĺ�����
 �ꤹ�������Υ٥��ȥ�. �㤨��, ñ����ͤ��ɤ�ˤ�, {\tt COUNT}��
 {\tt (1, 1, ..., 1)}�Ȼ��ꤹ��.
 {\tt COUNT}�Υ�������, ���ꤵ�줿�ѿ��μ������Ǥ���.
 {\tt COUNT}�����Ǥ�, �ѿ��μ������б����Ƥ���.
 ���ä�, �����ѿ�����Ͽ�ѿ��ʤ��, {\tt COUNT}�κǸ�����Ǥ�, �ɤ൭Ͽ
 �������פ��б����Ƥ���.
\item[\tt VALUES] {\tt NCVGT}�ˤ�����, �ǡ����ͤ��ɤ߹��ޤ����֤Ǥ���.
 �ǡ��������ꤵ�줿�ѿ������ɤޤ����֤�, 1���ܤμ�����������Ѥ��褦
 �ʽ��֤Ǥ���(�̾��FORTRAN�δ����ɤ���).
 �ǡ�����netCDF��{\tt NCSHORT}, {\tt NCLONG}, {\tt NCFLOAT}, �����
 {\tt NCDOUBLE}, �Τɤ���б����Ƥ��Ƥ�褤��, ����netCDF�ѿ��η�
 �Ȥ���Ŭ���Ǥʤ���Фʤ�ʤ�.
 {\bf �ٹ�: ����ѥ����netCDF���եȥ�������ְ�ä��ǡ��������Ȥ���
 ���뤫�ɤ����򸡽ФǤ��ʤ�.}
\item[\tt STRING] {\tt NCVGTC}�ˤ�����, ʸ���ǡ������ɤ߹��ޤ��ʸ���Ǥ���.
 netCDF�ѿ���ʸ�����񤫤����֤�, 1���ܤμ�����������Ѥ��褦
 �ʽ��֤Ǥ���(�̾��FORTRAN�δ����ɤ���).
 �ǡ�����netCDF��{\tt NCCHAR}�ޤ���{\tt NCBYTE}���б����뷿���������.
\item[\tt LENSTR] {\tt NCVGTC}�ˤ�����, {\tt STRING}�������������Ƥ���
 ʸ��Ĺ�����פǤ���. 
 �����, {\tt COUNT}�٥��ȥ�����Ǥ��Ѱʾ���ͤǤ���Ϥ��Ǥ���.
 �����Ȥ�������Ϳ�����뤳�Ȥ⤢��Τ�, �����ͤ�, FORTRAN��{\tt LEN}
 �ؿ����֤��ͤ�ɬ������Ʊ���Ǥ���Ȥϸ¤�ʤ����Ȥ����դ��줿��.
 {\tt NCVGTC}��, �׵ᤵ���ǡ�����{\tt LENSTR}�Ĥ�ʸ���˹�äƤ��뤳��
 ������å�����.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCVGT}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, ̾��{\tt rh}���ѿ��Τ��٤Ƥ��ͤ�
�ɤ߹���Ǥ���.
������ˤ����Ƥϴ�ñ�Τ���, {\tt rh}������{\tt lon}, {\tt lat}, �����
{\tt time}����äƤ��뤳��, �����{\tt lon}���ͤ�10��, {\tt lat}���ͤ�
5��, �����{\tt time}���ͤ�3��, �Ǥ��뤳�Ȥ��ΤäƤ���Ȥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      PARAMETER (NDIMS=3) ! �����ο�
      PARAMETER (TIMES=3, LATS=5, LONS=10) ! �����Υ�����
      INTEGER NCID, RCODE
      INTEGER RHID ! ����ID
      INTEGER START(NDIMS), COUNT(NDIMS)
      DOUBLE RHVALS(LONS, LATS, TIMES)
      DATA START /1, 1, 1/ ! �ǽ���ͤ��饹������
      DATA COUNT /LONS, LATS, TIMES/
         ...
      NCID = NCOPN ('foo.nc', NCNOWRIT, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE)! ID�����
      CALL NCVGT (NCID, RHID, START, COUNT, RHVALS, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{��ʬŪ�˥���ץ뤵�줿, �ޤ��ϥޥåפ��줿�ͤ�����
���ɤ�: NCVGTG�����NCVGGC}

�ؿ�{\tt NCVGTG}�ޤ���{\tt NCVGGC}��, ��ʬŪ�˥���ץ뤵�줿, �ޤ���
�ޥåפ��줿�ͤ��������̤򥪡��ץ󤵤줿netCDF�ե�������ѿ������ɤ�.
��ʬŪ�˥���ץ뤵�줿, �ޤ��ϥޥåפ��줿�ͤ��������̤�, ��, ���Ĺ��
�Υ٥��ȥ�, ���ȥ饤�ɥ٥��ȥ�, ����ӥ���ǥå����ޥåԥ󥰥٥��ȥ�,
��Ϳ���ƻ��ꤵ���.
�ͤ���1����������Ѥ��褦�ʽ��֤��ɤޤ��.
����netCDF�ϥǡ����⡼�ɤˤʤ���Фʤ�ʤ�.

���顼�����������ˤ�, {\tt NCVGTG}�����{\tt NCVGGC}��{\tt RCODE}��
�����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿�ѿ�ID��, ���ꤵ�줿netCDF�ե�������Ф���Ŭ���Ǥʤ�.
\item ���ꤵ�줿���Υ���ǥå�����, ���ꤵ�줿�ѿ��Υ�󥯤��ϰϤ��鳰
��Ƥ���. �㤨��, ��Υ���ǥå����ޤ���, �б����뼡������������礭��
����ǥå���, �ϥ��顼�򵯤�.
\item ���ꤵ�줿���Υ���ǥå����˻��ꤵ�줿���Ĺ������ӥ��ȥ饤��
��ä�����Τ�, ���ꤵ�줿�ѿ��Υ�󥯤��ϰϤ򳰤줿�ǡ����򻲾Ȥ��Ƥ�
��. �㤨��, ���Ĺ����(�б����뼡��������)$-$(���Υ���ǥå���)�����
��������, ����netCDF�ѿ����б����뼡���Υ���������礭�ʥ��ȥ饤�ɤ�
�Ȥä�2�Ĥޤ��Ϥ���ʾ���ͤ˥����������褦�Ȥ������, �ˤϥ��顼���
��������. 
\item ���ȥ饤�ɤ����Ǥʤ�.
\item ���ꤵ�줿netCDF�ե����뤬�ǡ����⡼�ɤǤʤϤ�, ����⡼�ɤˤ���.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCVGTG (INTEGER NCID, INTEGER VARID, INTEGER START(*),
     +                   INTEGER COUNT(*), INTEGER STRIDE(*),
     +                   INTEGER IMAP(*), �� VALUES, INTEGER RCODE)

      SUBROUTINE NCVGGC (INTEGER NCID, INTEGER VARID, INTEGER START(*),
     +                   INTEGER COUNT(*), INTEGER STRIDE(*),
     +                   INTEGER IMAP(*), CHARACTER*(*) STRING, INTEGER RCODE)
\end{verbatim}
\end{quote}

2�Ĥ�FORTRAN���֥롼����{\tt NCVGTG}�����{\tt NCVGGC}��netCDF�ѿ�����
��ʬŪ�˥���ץ뤵�줿, �ޤ��ϥޥåפ��줿�ͤ��������̤��ɤ߹���.
�ǽ�Τ�ΤϿ��ͷ����ѿ�������ͤ��ɤ�, 2���ܤΤ�Τ�ʸ�����ѿ�����ʸ
���ͤ��ɤ�.

\begin{quote}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] �ѿ�ID.
\item[\tt START] �ǡ����ͤ���Ƭ���ɤޤ���ѿ��Υ���ǥå�������ꤹ������
 �Υ٥��ȥ�Ǥ���. ���Υ���ǥå�����1������Ū�ʤ�ΤǤ���, ����椨, 
 �㤨���ѿ��κǽ�Υǡ����ͤϥ���ǥå���{\tt (1, 1, ..., 1)}�����.
 {\tt START}�Υ�������, ���ꤵ�줿�ѿ��μ�������Ʊ���Ǥʤ���Фʤ�ʤ�.
 {\tt START}�����Ǥ�, �ѿ��μ����˽��֤��б����ʤ���Фʤ�ʤ�.
 ���ä�, �⤷�����ѿ�����Ͽ�ѿ��ʤ��, �Ǹ�Υ���ǥå����ϥǡ����ͤ���
 �ि��γ��ϵ�Ͽ�ֹ���б����Ƥ��ʤ���Фʤ�ʤ�.
\item[\tt COUNT] �ɤޤ��ǡ����ͤΥ֥��å���, �Ƽ����˱�ä����Ĺ�����
 �ꤹ�������Υ٥��ȥ�.
 �㤨��, ñ����ͤ��ɤ�ˤ�, {\tt COUNT}��{\tt (1, 1, ..., 1)}�Ȼ��ꤹ��.
 {\tt COUNT}�Υ�������, ���ꤵ�줿�ѿ��μ������Ǥ���.
 {\tt COUNT}�����Ǥ�, �ѿ��μ������б����Ƥ���.
 ���ä�, �����ѿ�����Ͽ�ѿ��ʤ��, {\tt COUNT}�κǸ�����Ǥ�, �ɤ൭Ͽ
 �������פ��б����Ƥ���.
\item[\tt STRIDE] �Ƽ������Ф���, �������������netCDF�ѿ����ͤδֳ֤ޤ�
 ��{\tt 0}����ꤹ�������Υ٥��ȥ�ޤ���, ��{\tt 0}, �Ǥ���.
 �٥��ȥ�����Ǥ�, ���֤�, �ѿ��μ������б����Ƥ���.
 �����ͤ�1�ʤ�, netCDF�ѿ����б����뼡�������ܤ����ͤ˥����������Ƥ�
 ��; �ͤ�2�ʤ�, netCDF�ѿ����б����뼡����1�Ĥ������ͤ˥����������Ƥ���;
 �����Ǥ���.
 ������{\tt 0}�ʤ�, �ϳƼ����˱�ä�, ���ܤ����ͤ˥����������Ƥ����Ȥ�
 ���ǥե���Ȥ�ư��ˤʤ�.
\item[\tt IMAP] �Ƽ������Ф���, netCDF�ѿ��˴�Ϣ�����ǡ����ͤ�������
 �ɤΤ褦���¤٤��Ƥ��뤫����ꤹ�������Υ٥��ȥ�, �ޤ�����{\tt 0}��
 ����.
 {\tt VALUE}�����ǻؤ��������ΰ��֤�������Υǡ����ؤΥ��ե��å�
 (�Х���ñ��)��, ����ǥå����ޥåԥ󥰥٥��ȥ�ȥǡ�����(������0�Ȥ���)
 ��ɸ�Ȥ����Ѥ�Ϳ������. 
 (��ĤΥ٥��ȥ�[x0, x1, ..., xn]��[y0, y1, ..., yn]��{\bf ����}��,
 ñ���x0*y0 + x1*y1 + ... + xn*yn �Ǥ���.)
 {\tt VALUE}������Ŭ�ڤ˻��ꤵ��Ƥ����, ���Υ٥��ȥ������ͤ�ޤ��
 ���Ƥ�褤.
 ������{\tt 0}�ʤ�, �������ͤ�, ��Ϣ����netCDF�ѿ���Ʊ����¤�򤷤�
 �������Ȥ����ꤵ���ǥե���Ȥ�ư��ˤʤ�.
\item[\tt VALUES] {\tt NCVGTG}�ˤ�����, �ǡ����ͤ��ɤ߹��ޤ����֤Ǥ���.
 �ǡ�����netCDF�ѿ������ɤޤ����֤�, 1���ܤμ�����������Ѥ��褦
 �ʽ��֤Ǥ���(�̾��FORTRAN�δ����ɤ���).
 �ǡ�����netCDF��{\tt NCSHORT}, {\tt NCLONG}, {\tt NCFLOAT}, �����
 {\tt NCDOUBLE}, �Τɤ���б����Ƥ��Ƥ�褤��, ����netCDF�ѿ��η�
 �Ȥ���Ŭ���Ǥʤ���Фʤ�ʤ�.
 {\bf �ٹ�: ����ѥ����netCDF���եȥ�������ְ�ä��ǡ��������Ȥ���
 ���뤫�ɤ����򸡽ФǤ��ʤ�.}
\item[\tt STRING] {\tt NCVGGC}�ˤ�����, ʸ���ǡ������ɤ߹��ޤ��ʸ�����
 ����.
 netCDF�ѿ�����ʸ�����ɤޤ����֤�, ��ʬŪ�˥���ץ뤵�줿�ޤ��ϥޥåפ�
 �줿�������̤�1���ܤμ�����������Ѥ��褦
 �ʽ��֤Ǥ���(�̾��FORTRAN�δ����ɤ���).
 �ǡ�����netCDF��{\tt NCCHAR}�ޤ���{\tt NCBYTE}���б����뷿���������.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCVGTG}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, ̾��{\tt rh}���ѿ��γƼ�����1�Ĥ�������
���ɤ�Ǥ���.
Ʊ�������Υ��ȥ饤�ɤ��Ѥ���, netCDF�ѿ��ȼ������դǤ���2��ѥ�᥿��
�Ȥ���������ͤ������ƤƤ���.
������ˤ����Ƥϴ�ñ�Τ���, {\tt rh}������{\tt lon}, {\tt lat}, �����
{\tt time}����äƤ��뤳��, �����{\tt lon}���ͤ�10��, {\tt lat}���ͤ�
5��, �����{\tt time}���ͤ�3��, �Ǥ��뤳�Ȥ��ΤäƤ���Ȥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      PARAMETER (NDIMS=3) ! �����ο�
      PARAMETER (TIMES=3, LATS=5, LONS=10) ! ����������
      INTEGER NCID, RCODE
      INTEGER RHID ! �ѿ�ID
      INTEGER START(NDIMS), COUNT(NDIMS), STRIDE(NDIMS), IMAP(NDIMS)
      DOUBLE DATA(2, TIMES, LATS, LONS) ! rh��2���ܤΥѥ�᥿���Ǥ�
      DATA START /1, 1, 1/ ! �ǽ���ͤ��饹�����Ȥ���
      DATA COUNT /LONS, LATS, TIMES/
      DATA STRIDE /2, 2, 2/
         ...
      NCID = NCOPN ('foo.nc', NCNOWRIT, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE)  ! ID�����
      IMAP(3) = 8*2*2 ! �������ѿ�2���ȤΥ٥��ȥ�ΰ�Ĥ�������
      IMAP(2) = IMAP(3)*(1+(TIMES-1)/STRIDE(3))*2
      IMAP(1) = IMAP(2)*(1+(LATS-1)/STRIDE(2))*2
      CALL NCVGTG (NCID, RHID, START, COUNT, STRIDE, IMAP, DATA(2,1,1,1), RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{ʸ�����ͤ��ɤ߽񤭤���}

ʸ�����, ����Ū��netCDF�ǡ������ǤϤʤ�. ����ϰ�Ĥˤ�, FORTRAN������
Ĺ��ʸ�������ݲ��򥵥ݡ��Ȥ��Ƥ��ʤ�����Ǥ���(FORTRAN{\tt LEN}�ؿ�
��, ʸ�����ưŪĹ���ǤϤʤ�, ��ŪĹ�����֤�).
��̤Ȥ���, netCDF���󥿡��ե�������ˤ�����, ʸ�����ñ��Υ��֥�����
�ȤȤ����ɤ߽񤭤Ǥ��ʤ�.
���������, ʸ�����ʸ��������Ȥ��ư����ͤФʤ餺, ʸ�����netCDF
�ե���������ѿ��ǡ����Ȥ����ɤ߽񤭤���ˤ�, ���󥢥�������Ȥ�ɬ�פ�
����.
�����, ����Ĺ��ʸ�����, �����ˤ����������, netCDF���󥿡��ե���
���Ǥϥ��ݡ��Ȥ���Ƥ��ʤ�;
���Τ褦�ʴ�������Ȥ���, ���ΥХ��Ȥ�ʸ�����λ�����ΤȤ��ư�����
�Ȥ��Ǥ��뤬, netCDF�ѿ������ɤ߹��ޤ��ޤ��Ϥ���˽񤭹��ޤ��ʸ����
��Ĺ�����ۤ˻��ꤷ�ʤ���Фʤ�ʤ�.

°���ͤȤ���ʸ�����, ��äȻȤ��䤹��; �ʤ��ʤ�, ʸ���󤬥���������ñ
��ñ�̤Ȥ��ư����뤫��Ǥ���.
������, ����Ǥ�, ʸ����°�����ͤ�, ����°����������줿�ݤ˻��ꤵ���
����Ϥ���Ĺ�����ۤ�Ϳ����ʸ��������Ǥ���.

ʸ�����ͤ�����ѿ����������ݤˤ�, �����ѿ��κǤ�����Ѥ�뼡��
(FORTRAN�Ǥ���1����)��{\bf ʸ�����ּ���}�Ȥ��ƻȤ�ͤФʤ�ʤ�.
���ΤȤ�, ʸ�����ּ����Υ�������, ʸ�����ѿ��˳�Ǽ����뤢����ʸ����
�ͤκ����Ĺ���ˤʤ�.
���祵��������Τ���Υ��ڡ�����, ���Υ��ڡ�����Ȥ��Ȥ�ʤ��ˤ������
��, ʸ�����ѿ��Υǥ�����ɽ������˳�����Ƥ���.
2�Ĥޤ��Ϥ���ʾ���ѿ���Ʊ������Ĺ����ľ���, �ѿ��η�����������
��Ʊ��ʸ�����ּ�����Ȥ����Ȥ��Ǥ���.

ʸ�����ͤ�ʸ�����ѿ��˽񤭹���ˤ�, ���󥢥�������Ȥ�ͤФʤ�ʤ�.
���Τ���ˤ�, ������ӱ��Ĺ���Υ٥��ȥ��ξ������ꤷ�ʤ���Фʤ�ʤ�.
����ʸ�����ּ�����1�ˤʤ�.
�⤷, �񤫤��ʸ�����Ĺ����{\tt n}�Ǥ���ʤ�, ���Ĺ���Υ٥��ȥ��
ʸ�����ּ����ˤ�{\tt n}��, ¾�Τ��٤Ƥμ����ˤ�1��, ���ꤵ���;
���ʤ��, {\tt (n, 1, 1, ..., 1)}�Ǥ���.

FORTRAN�ˤ����Ƥ�, ���ꥵ������ʸ�����, ��λʸ���ʤ���netCDF�ե�����
�˽񤯤��Ȥ��Ǥ�, ����ˤ�ꥹ�ڡ��������󤹤뤳�Ȥ��Ǥ���.
����Ĺ��ʸ�����C�δ����˽��ä�, ��λʸ���Ǥ���0�ΥХ��Ȥ��դ��ƽ񤫤�
��; �����, ���C�ޤ���FORTRAN���󥿡��ե��������ɤޤ��ݤ�ʸ�����Ĺ
����������褦�ˤ��뤿��Ǥ���.

ʸ������ɤ߽񤭤��뤿���FORTRAN���󥿡��ե������Ǥ�, ʸ�����ͤȿ���
�˥����������뤿��ˤ�, �ۤ륵�֥롼������Ѥ��ʤ���Фʤ�ʤ�;
�ʤ��ʤ�, ɸ��FORTRAN�Ǥ�, Ʊ�������Υѥ�᥿����ʸ���ͤȿ��ͤ�ξ����
�Ȥ��뤳�Ȥ�������Ƥ��ʤ�����Ǥ���.
{\tt NCVPTC}�����{\tt NCVGTC}�Ǥ�, �ͤȤ����Ϥ����������줿ʸ����Ĺ
����ꤹ��;ʬ�ΰ�����ɬ�פǤ���.
ʸ����μºݤ�Ĺ����, ���Ĺ���٥��ȥ��ʸ�����ּ������б������ͤȤ���
���ꤵ���.

�ʲ�����Ǥ�, ʸ����Τ����{\tt tx}�ʤ뵭Ͽ�ѿ��������,
{\tt NCVPTC}��Ȥä�3���ܤε�Ͽ��ʸ�����ͤ��Ǽ���Ƥ���.
������Ǥ�, ����ʸ�����ѿ�����ӥǡ�����, ̵���µ�Ͽ����{\tt time}���
�˻���{\tt `foo.nc'}�Ȥ���̾���δ�¸��netCDF�ե�������ɲä���Ȥ�����
����ͤ��Ƥ���.
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER   TDIMS, TXLEN
      PARAMETER (TDIMS=2)    ! TX�����ο�
      PARAMETER (TXLEN = 15) ! ʸ�������Ĺ��
      INTEGER  NCID, RCODE
      INTEGER  CHID          ! ʸ�����ּ�����id
      INTEGER  TIMEID        ! ��Ͽ������id
      INTEGER  TXID          ! �ѿ�ID
      INTEGER  TXDIMS(TDIMS) ! �ѿ��η�
      INTEGER  TSTART(TDIMS), TCOUNT(TDIMS)
      CHARACTER*40 TXVAL     ! ����Ĺ40
      DATA TXVAL /'example string'/
         ...
      TXVAL(TXLEN:TXLEN) = CHAR(0)   ! �̥�ʸ���ǽ�λ
         ...
      NCID = NCOPN('foo.nc', NCWRITE, RCODE)
      CALL NCREDF(NCID, RCODE) ! ����⡼�ɤ�����
         ...
* ����Ĺ40��ʸ����Τ����ʸ�����ּ������������
      CHID = NCDDEF(NCID, "chid", 40, RCODE)
         ...
* ʸ�����ѿ����������
      TXDIMS(1) = CHID   ! ʸ�����ּ�������
      TXDIMS(2) = TIMEID
      TXID = NCVDEF(NCID, "tx", NCCHAR, TDIMS, TXDIMS, RCODE)
         ...
      CALL NCENDF(NCID, RCODE) ! ����⡼�ɤ���ȴ����
         ...
* 3���ܤε�Ͽ���netCDF�ѿ�tx��txval��񤭹���
      TSTART(1) = 0      ! �ѿ��λϤᤫ�饹������
      TSTART(2) = 3      ! �񤭹��൭Ͽ�ֹ�
      TCOUNT(1) = TXLEN  ! �񤭹���ʸ���ο�
      TCOUNT(2) = 1      ! 1�Ĥε�Ͽ�������
      CALL NCVPTC (NCID, TXID, TSTART, TCOUNT, TXVAL, 40, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{�ե�����}
\label{�ե�����}

�����ץ󤵤줿netCDF�ե�����˰��٤�񤫤�Ƥ��ʤ��ѿ����ɤ⤦�Ȥ����
�ɤ��ʤ뤫?
����Ϥ��Ĥ⥨�顼�Ȥʤä�, ���顼��å������������뤫���顼���֤���
�����ȹͤ��뤫�⤷��ʤ�.
�Τ���, �ɤ߹��ߤΤ���˥����ץ󤵤�Ƥ��ʤ�netCDF�ե����뤫��ǡ�����
�ɤ⤦�Ȥ�����, ���ꤵ�줿netCDF�ˤ������ѿ�ID����Ŭ���Ǥ��ä���, ����
���줿����ǥå��������ꤵ�줿���������������������ϰϤ�Ŭ�ڤ˼��ޤ�
�Ƥ��ʤ��ä���, ������ˤ�, ���顼�Ȥʤ�.
����, �񤫤�Ƥ��ʤ��ͤ��ɤ��, netCDF�ե����뤬�ǽ�˽񤫤줿�ݤ����
����ʤ��ä����٤Ƥ��ͤ����뤿��˻Ȥ������̤�{\bf �ե�����}���֤�
���.

�ե����ͤ�̵�뤷, netCDF�ǡ����������ϰϤ�Ȥ����Ȥ��Ǥ��뤬, ���ξ��,
�ɤ�����, ���٤ƤΥǡ����ͤ�����Ƚ񤤤Ƥ����ͤФʤ�ʤ�.
�ɤ����ˤ��٤ƤΥǡ�����񤯤��Ȥ��Τ��ʾ��ˤ�, ������{\tt ncsetfill}
��ƤӽФ����Ȥˤ�ä�, ����äƥե����ͤ��ѿ�������Τ�ߤ��褦��
���ꤹ�뤳�Ȥ��Ǥ���.
����ˤ�ä�, netCDF�ν񤭹��ߤθ�Ψ�����������夹�뤳�Ȥ⤢��.

�ե����ͤ���ꤹ�뤿��ˤ��ѿ�°�� {\tt \_FillValue} ���Ȥ���.
�ǥե���ȤΥե����ͤϥ��󥯥롼�ɥե����� {\tt `netcdf.inc'} 
����������.

netCDF�Х��ȷ���ʸ�����ΰ�Ĥΰ㤤��, ������Ĥη��ϰۤʤ�ǥե���Ȥ�
�ե����ͤ���ĤȤ������ȤǤ���.
ʸ���Υǥե���ȤΥե����ͤ�0�ΥХ��ȤǤ���, ����ϲ���Ĺ��Cʸ�������
���򸡽Ф���Τ��������ͤǤ���.
�⤷, �Х��ȷ��˥ե����ͤ�ɬ�פʤ�, Ŭ�ڤ�{\tt \_FillValue}°�����ۤ���
�����뤳�Ȥ򴫤��; �ʤ��ʤ�, {\tt ncdump}�Τ褦�ʰ���Ū�ʥ桼�ƥ���ƥ�
�ϥХ��ȷ��Υǥե���ȤΥե����ͤ��ꤷ�ʤ�����Ǥ���.

%-----------------------------------------------------------------------
\section{�ѿ���̾�����Ѥ���: NCVREN}

�ؿ�{\tt NCVREN}��, �����ץ󤵤줿netCDF�ե���������ѿ���̾�����Ѥ���.
������̾�����Ť�̾�����Ĺ�����ˤ�, ����netCDF�ե����������⡼�ɤ�
�ʤ���Фʤ�ʤ�.
�ѿ���̾�����¸���ѿ���Ʊ��̾�����Ѥ��뤳�ȤϤǤ��ʤ�.

���顼�����������ˤ�, {\tt NCVREN}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ������̾����¾���ѿ���̾���Ȥ��ƻȤ��Ƥ���.
\item �ѿ�ID�����ꤵ�줿netCDF�ե�����ˤ�����Ŭ���Ǥʤ�.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCVREN (INTEGER NCID, INTEGER VARID,
     +                   CHARACTER*(*) NEWNAM, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] �ѿ�ID.
\item[\tt NEWNAM] ���ꤵ�줿�ѿ��ο�����̾��.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCVREN}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, �ѿ�{\tt rh}��̾����{\tt rel\_hum}���Ѥ�
�Ƥ���.
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER  NCID, RCODE
      INTEGER  RHID               ! �ѿ�ID
         ...
      NCID = NCOPN ('foo.nc', NCWRITE, RCODE)
         ...
      CALL NCREDF (CDFFID, RCODE)  ! enter definition mode
      RHID = NCVID (NCID, 'rh', RCODE)  ! ID�����
      CALL NCVREN (NCID, RHID, 'rel_hum', RCODE)
      CALL NCENDF (CDFFID, RCODE)  ! ����⡼�ɤ�ȴ����
\end{verbatim}}

%-----------------------------------------------------------------------
\section{����ǡ�������ɽ�����뤿��ΥХ��ȿ�������: NCTLEN}

�ؿ�{\tt NCTLEN}��, netCDF��������ΥХ��ȿ����֤�.

���顼�����������ˤ�, {\tt NCTLEN}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿�ǡ�������netCDF�ǡ������Ȥ���Ŭ���Ǥʤ�.
\end{itemize}

\begin{quote}
\begin{verbatim}
      INTEGER FUNCTION NCTLEN (INTEGER TYPE ,INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt TYPE] ����ä��������Ƥ���netCDF�ǡ���������Τ����ΰ��.
 Ŭ����netCDF�ǡ�������{\tt NCBYTE}, {\tt NCCHAR}, {\tt NCSHORT},
 {\tt NCLONG}, {\tt NCFLOAT}, �����{\tt NCDOUBLE}�Ǥ���.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCTLEN}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, �ѿ�{\tt rh}��ñ����ͤ��Ǽ����Τ�ɬ��
�ʥХ��ȿ�����Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER  NCID               ! netCDF ID
      INTEGER  RHID               ! �ѿ�ID
      CHARACTER*31 RHNAME         ! �ѿ�̾
      INTEGER  RHTYPE             ! �ѿ���
      INTEGER  RHN                ! �����ο�
      INTEGER  RHDIMS(MAXVDIMS)   ! �ѿ���
      INTEGER  RHNATT             ! °���ο�
      INTEGER  RHBYTS             ! �ͤ�����ΥХ���
         ...
      NCID = NCOPN ('foo.nc', NCNOWRIT, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE)
* "rh"�η������
      CALL NCVINQ (NCID, RHID, RHNAME, RHTYPE, RHN, RHDIMS, RHNATT, RCODE)
      RHBYTS = NCTLEN (RHTYPE)
\end{verbatim}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{°��}
\label{°��}

��netCDF�ѿ���, ñ��, ���̤���, ͭ�����ͤκ��礪��ӺǾ���, ���������
���ե�������, ����ӥ��ե��åȤΤ褦����������ꤹ�뤿���°����ȼ�ä�
���Ƥ�褤.
netCDF�ե�������Ф���°����, ���Υե����뤬�ǽ�����������ݤ�, ����
������⡼�ɤˤ���֤���������. 
��ǺƤ�����⡼�ɤ����뤳�Ȥˤ�ä�, °�����ɲä��뤳�Ȥ��Ǥ���.
netCDF°����, ����°����������Ƥ��Ƥ����ѿ�, ̾��, ��, Ĺ��, �����
��Ĥޤ��Ϥ���ʾ���ͤ��¤�, ����äƤ���.
°����, �����ѿ�ID�����̾���Ǽ������. ������, ��Ĥξ��({\tt
NCANAM})�������; �����Ǥ�, °����̾���������ʤΤ�, °�����ѿ�ID�����
�ֹ�Ǽ������.

�ѿ��˴�Ϣ���Ƥ���°����, ����, �����ѿ����������줿ľ���, �ޤ�����⡼
�ɤˤ��뤦������������.
°���Υǡ�����, Ĺ��, ������ͤϥǡ����⡼�ɤˤ����Ƥ��ѹ��Ǥ���;
�����ѹ��ˤ�ä�, °��������������줿�Ȥ�����¿���Υ��ڡ�����ɬ��
�Ȥʤ�ʤ��¤��.

�ɤ��ѿ��Ȥ��Ϣ���ʤ�°������Ĥ��Ȥ��ǽ�Ǥ���.
������, {\bf �������Х�°��}�ȸƤФ�, {\tt NC\_GLOBAL}�򲾤��ѿ�ID��
���ƻȤäƸ�ʬ������.
�������Х�°����, ����, netCDF�ե��������Τȴ�Ϣ�Ť����Ƥ���, netCDF
�ǡ������åȤ��Ф��ƥ����ȥ�ޤ��Ϻ�ȵ�Ͽ���դ��뤿��˻Ȥ����Ȥ��Ǥ�
��.

°�����Ф��ƥ��ݡ��Ȥ���Ƥ������ϰʲ��Τ褦�Ǥ���:
\begin{itemize}
\item �ѿ�ID, ̾��, �ǡ�����, Ĺ��, ������ͤ�Ϳ����°������������.
\item �ѿ�ID�����̾������, °���Υǡ�������Ĺ�����������.
\item �ѿ�ID�����̾������°�����ͤ��������.
\item ����netCDF�ѿ�����¾���ѿ���°���򥳥ԡ�����.
\item �ֹ椫��°��̾���������.
\item °����̾�����Ѥ���.
\item °����������.
\end{itemize}

%-----------------------------------------------------------------------
\section{°���δ���}
\label{°���δ���}

�������������(`{\tt \_}')����Ϥޤ�̾����netCDF�饤�֥��λ��ѤΤ���
��ͽ�󤵤�Ƥ���.
netCDF�ե������ù�������̤�¿���Υ��ץꥱ��������, ɸ��Ū��°����
�������ꤷ�Ƥ���, �������ʤ���������������ͳ��̵���¤��, �����
�ΤȤ��˽������Ȥ򶯤������.
�ʲ���, �侩�����ɸ��Ū��°��(�����Ǥ��뤳�Ȥ����Ǥ˼�����Ƥ���)��̾
������Ӱ�̣�Υꥹ�Ȥ򼨤�.
�����Τ���, ���ͥǡ��������ꤵ��, ʸ���ǡ����Ȥ��ƤϻȤ��ʤ���Τ�
����(�㤨��, {\tt units}, {\tt valid\_range}, {\tt scale\_factor})����
�����դ�ɬ�פǤ���.

\begin{description}

\item[{\tt units}] 
 �ѿ��ǡ������Ф��ƻȤ��Ƥ���ñ�̤���ꤹ��ʸ����.
 Unidata��, ��ͳ�˼�����ǽ�ʥ롼����Υ饤�֥����󶡤��Ƥ���, �����
 ��ä�ʸ�����ñ�̵��ҤΥХ��ʥ�����Ȥδ֤��Ѵ���Ԥ����Ȥ��Ǥ�,
 ����ˤ��ΥХ��ʥ�����ˤ����Ƥ�, ��������������������¹ԤǤ���.
 ���Υ饤�֥��Ϥ����Ĥ���netCDF���ץꥱ�������ˤ����ƻȤ��Ƥ���.
 �侩�����ñ�̹�ʸ��Ȥ���, ����ñ�̤�ɽ�����줿�ǡ�����, ����
 �黻�Ǥ������Ū��ñ�̤˼�ưŪ���Ѵ��Ǥ���. ���¿���ξ���ˤĤ���
 ��, Appendix A [ñ��]\pageref{ñ��}�ڡ����򻲾�.

\item[{\tt long\_name}] Ĺ������Ū��̾��. �����, �㤨��, �ץ��åȤΥ�
 �٥�Ť��˻Ȥ����Ȥ��Ǥ���. �⤷, �ѿ���{\tt long\_name}°���������
 �Ƥ��Ƥ��ʤ����, �ѿ�̾���ǥե���ȤȤ��ƻȤ���.

\item[{\tt valid\_min}] �����ѿ����Ф���ͭ�����ͤκǾ��ͤ򼨤������顼.

\item[{\tt valid\_max}] �����ѿ����Ф���ͭ�����ͤκ����ͤ򼨤������顼.

\item[{\tt valid\_range}] �����ѿ����Ф���ͭ�����ͤκǾ��ͤ���Ӻ�����
 �򼨤�2�Ĥο��ͤΥ٥��ȥ�Ǥ���, {\tt valid\_min}�����{\tt valid\_max}
 °����ξ�����ͤ���ꤹ��Τ�������.
 �����Τɤ�⤬{\bf ͭ���ϰ�}���������. �⤷, {\tt valid\_min}�ޤ�
 ��{\tt valid\_max}�Τɤ��餫���������Ƥ�����ˤ�{\tt valid\_range}
 ��������ƤϤʤ�ʤ�.

 ����Ū�ʥ��ץꥱ��������, {\bf ͭ���ϰ�}�򳰤줿�ͤ��»�Ȥ��ư���. 
 {\tt valid\_range}, {\tt valid\_min}, �����{\tt valid\_max}�Τ��줾
 ��η���, �����ѿ��η��˹�äƤ��ʤ���Фʤ�ʤ�(������, {\tt byte}��
 �ǡ��������. ���ξ���, ������°���η���, �տޤ����ϰϤ���ꤹ��
 �����, ���Ĥ����������Ǥ��äƤ�褤).

 {\tt valid\_min}, {\tt valid\_max}, �����{\tt valid\_range}�Τɤ��
 �������Ƥ��ʤ����ˤ�, ����Ū�ʥ��ץꥱ��������, ͭ���ϰϤ�ʲ�
 �Τ褦���������. �ǡ��������Х��ȷ���, {\tt \_FillValue}���ۤ������
 ��Ƥ��ʤ�����, ͭ���ϰϤϤ��٤Ƥβ�ǽ���ͤ�ޤ�. ����, ͭ���ϰϤ�,
 {\tt \_FillValue}��ʲ��Τ褦�˽�������. �⤷, {\tt \_FillValue}������
 ���, ���줬ͭ���ʺ����ͤ������, �����Ǥʤ����, �����ͭ���ʺǾ���
 ���������. �������ˤĤ��Ƥ�, {\tt \_FillValue}�Ȥ���ͭ���ʺ���ޤ���
 �Ǿ��ͤȤδ֤ˤ�1�����㤤������. ��ư���������ˤĤ��Ƥ�, ���ΰ㤤��
 �ݤ��������������, ɽ����ǽ�ʺǾ���(�ǤⲼ�̤ΥӥåȤ�1)��2�ܤ���
 �Ǥ���.

\item[{\tt scale\_factor}] �����ѿ��ˤĤ��Ƥ���°����Ϳ�����Ƥ����
 ��, �ǡ�����, ����˥����������륢�ץꥱ�������ˤ�ä��ɤ߹��ޤ��
 �ݤˤ��Υե��������ܤ����.

\item[{\tt add\_offset}] �����ѿ��ˤĤ��Ƥ���°����Ϳ�����Ƥ����
 ��, �ǡ�����, ����˥����������륢�ץꥱ�������ˤ�ä��ɤ߹��ޤ줿
 ��ˤ��ο����ä�����. {\tt scale\_factor}�����{\tt add\_offset}��
 ξ����°����Ϳ�����Ƥ�����ˤ�, �ǡ����Ϥޤ��������뤵��, ���θ�
 �˥��ե��åȤ��ä�����. {\tt scale\_factor}�����{\tt add\_offset}
 °����Ʊ���˻Ȥ����Ȥˤ�ä�, ��ñ�ʥǡ������̤�Ԥ����Ȥ��Ǥ���;
 ͭ������ξ�������ư�������ǡ����򾮤��������Ȥ���netCDF�ե�����˳�
 Ǽ���뤳�Ȥˤ�ä�. �������뤵�줿�ǡ�����񤯺ݤˤ�, ���ץꥱ������
 ���, �ޤ����ե��åȤ������, ���θ�ǥ�������ե��������ǳ��Ф褤.

 {\tt scale\_factor}�����{\tt add\_offset}�򰵽̤Τ���˻Ȥ��ݤˤ�,
 �ط������ѿ�(���̤��줿�ǡ������Ǽ���Ƥ���)��, ����, byte���ޤ���
 short���Ǥ���; ����, ���व�줿�ǡ�����float�ޤ���double���ˤʤ�褦
 �ˤ�����. �Ȥ����櫓��, {\tt scale\_factor}�����{\tt add\_offset}°
 ����ξ���Ȥ�, ���व�줿�ǡ����λ��Ĥ٤���(�㤨��, float�ޤ���double
 ��)�Ǥʤ���Фʤ�ʤ�.

\item[{\tt \_FillValue}] {\tt \_FillValue}°����, �ѿ��˳�����Ƥ���
 ����ǥ��������ڡ���������ä����뤿��˻Ȥ���{\bf �ե�����}���
 �ꤹ��. ���Τ褦������ä�����ư���, {\tt NCSFIL}��Ȥä�{\bf �Ρ�
 �ե���⡼��}�����ꤵ��Ƥ��ʤ����ˤʤ����. �ܺ٤ˤĤ��Ƥ�, \ref{NCSFIL}��
 [�񤭹��ߤΤ���Υե���⡼�ɤ�����: NCSFIL]\pageref{NCSFIL}�ڡ����򻲾�.
 {\bf �ե�����}��, �ޤ��񤫤�Ƥ��ʤ��ͤ��ɤ���֤����. 
 {\tt \_FillValue}������������, ����ϥ����顼��, �ѿ���Ʊ�����Ǥ�
 ����Фʤ�ʤ�. {\tt \_FillValue}���̾�, ͭ���ϰϤγ�¦�ˤ���, �����
 ��, ���̤Υ��ץꥱ�������ǤϤǤϷ�»�Ȥ��ư�����. 
 ������, {\tt \_FillValue}��ͭ���ϰ���ˤ���, ¾��ͭ�����ͤΤ褦�˰���
 ��褦�ˤ���Τ������ʤ��ȤǤ���. �ѿ��η����Ф���ǥե���Ȥ�{\bf �ե�
 ����}��Ŭ���Ǥ����, �ȼ���{\tt \_FillValue}���������ɬ�פϤʤ�.
 ������, byte�ǡ��������Ф��Ƥ�, �ǥե���ȤΥե����ͤ�Ȥ����Ȥϴ���
 ���ʤ�. ����°�����ͤ��Ѥ������, �����ѹ����줿�ͤϰ���³���񤭹�
 �ߤˤΤ�Ŭ�Ѥ���뤳�Ȥ����դ��줿��; ���ʤ��, ����ޤǤ˽񤫤줿�ǡ�
 �����ѹ�����ʤ�. ���¿���ξ���ˤĤ��Ƥ�, \ref{�ե�����}��[�ե�����]
 \pageref{�ե�����}�ڡ����򻲾�.

\item[{\tt missing\_value}] ����°����, �饤�֥��ޤ��ϴ����˽���
 ������Ū�ʥ��ץꥱ�����������̤˰�����櫓�ǤϤʤ���, ��Ͽ�Ȥ���
 �����ʤ��Ȥ⤢��, �ޤ�����Υ��ץꥱ�������ǻȤ��뤳�Ȥ⤢�ꤦ��.
 {\tt missing\_value}°����, ��»�ǡ����򼨤��ͤ�ޤॹ���顼�ޤ��ϥ�
 ���ȥ�Ǥ��ꤦ��. �������ͤϤ��٤�, ����Ū�ʥ��ץꥱ������󤬷�»
 �Ȥ��ư�����褦��, {\bf ͭ���ϰ�}�γ�¦�ˤ���٤��Ǥ���.
 ���¿���ξ���ˤĤ��Ƥ�, \ref{�ե�����}��[�ե�����]
 \pageref{�ե�����}�ڡ����򻲾�.
 
\item[{\tt signedness}] ���ͤΤʤ��ʤä�°���Ǥ���; ��Ȥ�Ȥ�, �Х���
 �ͤ����Ĥ��ޤ������ʤ��Τɤ���ǰ�����٤�������ꤹ��褦�˺�
 ��줿��ΤǤ���.  {\tt valid\_min}�����{\tt valid\_max}°���򤳤���
 Ū�Τ���˻Ȥ����Ȥ��Ǥ���. �㤨��, �Х����ѿ���������ͤȤ��Ƴ�Ǽ��
 �������ˤ�, {\tt valid\_min = 0}�����{\tt valid\_max = 255}��Ȥ�
 ���Ȥ��Ǥ���. ����°����, netCDF�饤�֥��Ǥ�̵�뤵���.

\item[{\tt C\_format}] �����ѿ����ͤ�ץ��Ȥ���C���ץꥱ�������ˤ�
 ���ƻȤ���ե����ޥåȤ�Ϳ����ʸ����Ǥ���. �㤨��, �ѿ���ͭ������3
 ������٤����ʤ����Ȥ�ʬ���äƤ���ʤ�, {\tt C\_format}°����
 {\tt "\%.3g"}���������Τ�Ŭ���Ǥ���. {\tt ncdump}�桼�ƥ���ƥ��ץ�
 ������, ����°����, ���줬�������Ƥ����ѿ����Ф��ƻȤ�. ���Υե���
 �ޥåȤ�, ��������󥰤�Ԥ�{\tt scale\_factor}�����{\tt
 add\_offset}°���Τ���ʤ��ˤ�����餺, �������뤵�줿(������)������
 ���ͤ��Ф���Ŭ�Ѥ����.

\item[{\tt FORTRAN\_format}] �����ѿ����ͤ�ץ��Ȥ���FORTRAN���ץꥱ��
 �����ˤ����ƻȤ���ե����ޥåȤ�Ϳ����ʸ����Ǥ���. �㤨��, �ѿ�
 ��ͭ������3������٤����ʤ����Ȥ�ʬ���äƤ���ʤ�, {\tt
 FORTRAN\_format}°����{\tt "(G10.3)"}���������Τ�Ŭ���Ǥ���.

\item[{\tt title}] �������Х�°����, ���Υǡ������åȤ���Ȥ��ñ�˵���
 ����ʸ����.

\item[{\tt history}] ����θ����Τ���Υ������Х�°��. ����Ϥ��Υե�
 ������������ץ������γƸƤӽФ����Ф���Ԥ���ʤ�ʸ������Ǥ���.
 �����Τ褤����Ū��netCDF���ץꥱ��������, ����, ����, �桼��̾, ��
 �������̾, ����ӥ��ޥ�ɰ���, ��ޤ�Ԥ��ɲä���.

\item[{\tt Conventions}] �����ѿ��ˤĤ��Ƥ���°����Ϳ�����Ƥ�����, 
 `{\tt Conventions}'��, �������Х�°����, ���Υե����뤬���äƤ��봷����
 ̾����ɽ��ʸ������Ǥ���; �����, ʬ����ò����������ν���򵭽�
 ����ʸ�����¢���Ƥ���ǥ��쥯�ȥ꤫���, ���Хǥ��쥯�ȥ�̾�Ȥ��Ʋ�
 ��Ǥ���ʸ����η����ˤʤäƤ���.
 ����ˤ�ä�, �����γ��ع�¤����ǽ�Ȥʤ�, ����Ϳ����, ����
 �ε��Ҥ�������, �����������Ƥ��뵡�ؤ���ӥ��롼�פ˰ݻ����Ƥ��
 �����Ȥ��Ǥ���.
 �����Υǥ��쥯�ȥ�̾��, ����, �ۥ��ȥޥ���
 {\tt ftp.unidata.ucar.edu}��{\tt put/netcdf/Conventions/}�ǥ��쥯�ȥ�
 ��������Ū�˲�ᤵ���.
 �����, �����򵭽Ҥ���ʸ�Ϥ��ݻ�����Ƥ���WWW�����Ȥ���ꤹ�뤿
 ���, ������URL����Ҥ�ȤäƤ�褤.

 �㤨��, NUWG�Ȥ���̾���Υ��롼�פˤ�����, ����̾, �ѿ�̾, ɬ�פ�°��, 
 ����Ӥ���ʬ����ò������ǡ�����¤�Τ����netCDFɽ��, ���Ф����ޤ�
 �ޤ�δ����ˤĤ��Ƥι�դ��Ǥ��Ƥ���Τʤ�, ���ι�դ��줿�Ȥ꤭
 ��򵭽Ҥ���ʸ�Ϥ�, �����Υǥ��쥯�ȥ�Υ��֥ǥ��쥯�ȥ�{\tt NUWG/}
 �ʲ��Υե�������ݴɤ��Ƥ������Ȥ��Ǥ���.
 �����δ����˽��ä��ե������, {\tt "NUWG"}�Ȥ����ͤ���ĥ�����
 �Х�{\tt Conventions}°����ޤळ�Ȥˤʤ�.

 ��ˤʤä�, �⤷���Υ��롼�פ�, NUWG�ǡ������������ʬ����, �㤨��, 
 ������ǡ���, ���Ф����ɲäδ����ˤĤ��ƹ�դ����ʤ�, �����ɲä�
 �����ε��Ҥϥ��֥ǥ��쥯�ȥ�{\tt NUWG/TIME\_series/}���ݴɤ����
 ���Ȥˤʤ�; �ޤ�, �������ɲäδ����˽��ä��ե������, 
 {\tt "NUWG/Time\_series"}�Ȥ����ͤ���ĥ����� �Х�{\tt Conventions}°
 ����Ȥä�, ���Υե����뤬NUWG�δ���������ɲ�Ū��NUWG�λ������
 ����, �˽��äƤ��뤳�Ȥ򼨤����Ȥˤʤ�.
\end{description}

%-----------------------------------------------------------------------
\section{°������������: NCAPT�����NCAPTC}

�ؿ�{\tt NCAPT}�ޤ���{\tt NCAPTC}��, �����ץ󤵤줿netCDF�ե�����ˤ�
����, �ѿ�°���ޤ��ϥ������Х�°�����ɲäޤ����ѹ�����.
����°������������ΤǤ��뤫, �ޤ��Ϥ���°�����Ǽ����Τ�ɬ�פʥ��ڡ�
������������礭�ʾ��ˤ�, netCDF�ե����������⡼�ɤˤʤ���Фʤ��
��.

���顼�����������ˤ�, {\tt NCAPT}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item �ѿ�ID�����ꤵ�줿netCDF�ե�����ˤ�����Ŭ���Ǥʤ�.
\item ���ꤵ�줿netCDF����Ŭ���Ǥʤ�.
\item ���ꤵ�줿Ĺ������Ǥ���.
\item ���ꤵ�줿�����ץ󤵤�Ƥ���netCDF�ե����뤬�ǡ����⡼�ɤǤ���, 
      ���Ļ��ꤵ�줿°�����礭�����礭���ʤäƤ���.
\item ���ꤵ�줿�����ץ󤵤�Ƥ���netCDF�ե����뤬�ǡ����⡼�ɤǤ���, 
      ���Ļ��ꤵ�줿°�����ޤ�¸�ߤ��Ƥ��ʤ�.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
      ��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCAPT (INTEGER NCID, INTEGER VARID, CHARACTER*(*) ATTNAM,
     +                  INTEGER ATTYPE, INTEGER ATTLEN, �� VALUE, INTEGER RCODE)

      SUBROUTINE NCAPTC (INTEGER NCID, INTEGER VARID, CHARACTER*(*) ATTNAM, INTEGER ATTYPE,
     +                   INTEGER LENSTR, CHARACTER*(*) STRING, INTEGER RCODE)
\end{verbatim}
\end{quote}

2�Ĥ�FORTRAN���֥롼����{\tt NCAPT}�����{\tt NCAPTC}��°������������.
�ǽ�Τ�ΤϿ��ͷ���°�����Ф����Τ�, 2���ܤΤ�Τ�ʸ���󷿤�°����
�Ф����ΤǤ���.

\begin{quote}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] �ѿ�ID.
\item[\tt ATTNAM] °��̾. ����ե��٥å�ʸ���ǻϤޤ�, �������������
 ('{\tt \_}')��ޤ����ޤ��Ϥ���ʾ�αѿ�����³���ͤФʤ�ʤ�.
 ��ʸ����ʸ���϶��̤����. �����Ĥ���netCDF���̥��ץꥱ�������Ǥ�, 
 °��̾�δ��������ꤵ��Ƥ���, �㤨��, {\tt units}��netCDF�ѿ�����
 ����ñ�̤�Ϳ����ʸ����°����̾���Ǥ���. ����Ū��°��̾��ɽ��netCDF��
 �󥿡��ե������˴ؤ������ξϤ��󼨤��Ƥ���.
\item[\tt ATTTYP] ����ä��������Ƥ���netCDF�ǡ���������ΰ��. Ŭ����
 netCDF�ǡ�������{\tt NCBYTE}, {\tt NCCHAR}, {\tt NCSHORT},
 {\tt NCLONG}, {\tt NCFLOAT}, �����{\tt NCDOUBLE}�Ǥ���. 
 {\tt NCAPTC}�ˤ����Ƥ�, ����Ͼ��{\tt NCCHAR}�Ǥʤ���Фʤ�ʤ�
 (���Υ��󥿡��ե������η����Ǥ��뤬, �����ȤΥ���ѥ��ӥ�ƥ��Τ����
  ɬ�פǤ���).
\item[\tt ATTLEN] {\tt NCAPT}�ˤ�����, ����°����Ϳ��������ͤο��Ǥ���.
\item[\tt VALUE] {\tt NCAPT}�ˤ�����, {\tt ATTLEN}�Υǡ����ͤ�����Ǥ���.
 ���Υǡ�����, ����netCDF°���Ȥ���Ŭ���ʷ��Ǥʤ���Фʤ�ʤ�.
 {\bf �ٹ�: ����ѥ����netCDF���եȥ�������ְ�ä��ǡ��������Ȥ���
 ���뤫�ɤ����򸡽ФǤ��ʤ�.}
\item[\tt STRING] {\tt NCAPTC}�ˤ�����, °����ʸ�����ͤǤ���.
\item[\tt LENSTR] {\tt NCAPTC}�ˤ�����, {\tt STRING}�ѥ�᥿�����������
 �Ƥ���ʸ��Ĺ�����פǤ���. 
 �����Ȥ�������Ϳ�����뤳�Ȥ⤢��Τ�, �����ͤ�, FORTRAN��{\tt LEN}
 �ؿ����֤��ͤ�ɬ������Ʊ���Ǥ���Ȥϸ¤�ʤ����Ȥ����դ��줿��.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCAPT}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, {\tt rh}�Ȥ���̾����netCDF�ѿ����Ф���
{\tt valid\_range}�Ȥ���̾����°�������, {\tt title}�Ȥ���̾���Υ�
�����Х�°��, ���ɲä��Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER  NCID, RCODE
      INTEGER  RHID               ! �ѿ�ID
      DOUBLE RHRNGE(2)
      DATA RHRNGE /0.0D0, 100.0D0/
         ...
      NCID = NCOPN ('foo.nc', NCWRITE, RCODE)
         ...
      CALL NCREDF (NCID, RCODE)     ! ����⡼�ɤ�����
      RHID = NCVID (NCID, 'rh', RCODE)! ID�����
         ...
      CALL NCAPT (NCID, RHID, 'valid_range', NCDOUBLE, 2, RHRNGE, RCODE)
      CALL NCAPTC (NCID, NCGLOBAL, 'title', NCCHAR, 19, 'example netCDF file', RCODE)
         ...
      CALL NCENDF (NCID, RCODE)     ! ����⡼�ɤ�ȴ����
\end{verbatim}}

%-----------------------------------------------------------------------
\section{°���˴ؤ��������������: NCAINQ}

�ؿ�{\tt NCAINQ}��, �ѿ�ID�����̾����Ϳ����, netCDF°���˴ؤ�������
�֤�. �֤��������, °���η������Ĺ���Ǥ���.

���顼�����������ˤ�, {\tt NCAINQ}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item �ѿ�ID�����ꤵ�줿netCDF�ե�����ˤ�����Ŭ���Ǥʤ�.
\item ���ꤵ�줿°����¸�ߤ��Ƥ��ʤ�.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
      ��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCAINQ (INTEGER NCID, INTEGER VARID, CHARACTER*(*) ATTNAM,
     +                   INTEGER ATTYPE, INTEGER ATTLEN,INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] °���ѿ����ѿ�ID, �ޤ���, �������Х�°���ˤĤ��Ƥ�
 {\tt NCGLOBAL}.
\item[\tt ATTNAM] °��̾.
\item[\tt ATTTYP] °���η�(����ä��������Ƥ���netCDF�ǡ���������ΰ��)
 ���֤����. Ŭ����netCDF�ǡ�������{\tt NCBYTE}, {\tt NCCHAR}, {\tt
 NCSHORT}, {\tt NCLONG}, {\tt NCFLOAT}, �����{\tt NCDOUBLE}�Ǥ���. 
\item[\tt ATTLEN] ����°���˸��߳�Ǽ����Ƥ����ͤο����֤����.
 ʸ�����ͤ����°���ˤĤ��Ƥ�, �����ʸ�������ʸ�����Ȥʤ�.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCAINQ}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, {\tt rh}�Ȥ���̾����netCDF�ѿ����Ф���
{\tt valid\_range}�Ȥ���̾����°�������, {\tt title}�Ȥ���̾���Υ�
�����Х�°��, ��Ĵ�٤Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER  NCID, RCODE
      INTEGER  RHID               ! �ѿ�ID
      INTEGER  VRTYPE, TTYPE      ! °���η�
      INTEGER  VRLEN, TLEN        ! °����Ĺ��
         ...
      NCID = NCOPN ('foo.nc', NCNOWRIT, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE)! ID�����
         ...
      CALL NCAINQ (NCID, RHID, 'valid_range', VRTYPE, VRLEN, RCODE)
      CALL NCAINQ (NCID, NCGLOBAL, 'title', TTYPE, TLEN, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{°���ͤ��������: NCAGT(C)}

�ؿ�{\tt NCAGT}�ޤ���{\tt NCAGTC}��, �ѿ�ID�����̾����Ϳ����, netCDF
°�����ͤ��֤�.

���顼�����������ˤ�, {\tt NCAGT}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item �ѿ�ID�����ꤵ�줿netCDF�ե�����ˤ�����Ŭ���Ǥʤ�.
\item ���ꤵ�줿°����¸�ߤ��Ƥ��ʤ�.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
      ��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCAGT (INTEGER NCID, INTEGER VARID, CHARACTER*(*) ATTNAM,
     +                  �� VALUES, INTEGER RCODE)

      SUBROUTINE NCAGTC (INTEGER NCID, INTEGER VARID, CHARACTER*(*) ATTNAM,
     +                   CHARACTER*(*) STRING, INTEGER LENSTR, INTEGER RCODE)
\end{verbatim}
\end{quote}

2�Ĥ�FORTRAN���֥롼����{\tt NCAGT}�����{\tt NCAGTC}��°���ͤ����
��. �ǽ�Τ�ΤϿ��ͷ���°�����Ф����Τ�, 2���ܤΤ�Τ�ʸ���󷿤�°
�����Ф����ΤǤ���.

\begin{quote}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] °���ѿ����ѿ�ID, �ޤ���, �������Х�°���ˤĤ��Ƥ�
 {\tt NCGLOBAL}.
\item[\tt ATTNAM] °��̾.
\item[\tt VALUES] °���ͤ��֤����. °���ͥ٥��ȥ�Τ��٤Ƥ����Ǥ��֤���
 ��Τ�, �������ݻ�����Τ˽�ʬ�ʥ��ڡ�����Ϳ���Ƥ����ͤФʤ�ʤ�.
 �ɤ�����Υ��ڡ������Ѱդ��Ƥ����ͤФʤ�ʤ��������ʾ��ˤ�, 
 �ޤ�{\tt NCAINQ}��ƤӽФ���°����Ĺ����Ĵ�٤�Ф褤.
\item[\tt STRING] {\tt NCAGTC}�ˤ�����, °����ʸ�����ͤǤ���.
\item[\tt LENSTR] {\tt NCAGTC}�ˤ�����, �ƤӽФ�����{\tt STRING}�ѥ�᥿��
 ���������Ƥ���ʸ��Ĺ�����פǤ���. 
 �����Ȥ�������Ϳ�����뤳�Ȥ⤢��Τ�, �����ͤ�, FORTRAN��{\tt LEN}
 �ؿ����֤��ͤ�ɬ������Ʊ���Ǥ���Ȥϸ¤�ʤ����Ȥ����դ��줿��.
 {\tt NCAGTC}��, �׵ᤵ���ǡ�����{\tt LENSTR}�Ĥ�ʸ���˹�äƤ��뤳��
 ������å�����.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCAGT}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, {\tt rh}�Ȥ���̾����netCDF�ѿ����Ф���
{\tt valid\_range}�Ȥ���̾����°�������, {\tt title}�Ȥ���̾���Υ�
�����Х�°��, ����ꤷ�Ƥ���.
������ˤ�����, �ɤ����¿�����ͤ��֤���뤫���Τ�ʤ��Ȥ��Ƥ���.
���Τ���, �ޤ�°����Ĺ�����䤤��碌, �ͤ��Ǽ����Τ˽�ʬ�ʥ��ڡ�����
���ݤ��Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      PARAMETER (MVRLEN=3) ! "valid_range"���ͤκ����
      PARAMETER (MTLEN=80) ! "title"°���κ���Ĺ��
      INTEGER  NCID, RCODE
      INTEGER  RHID               ! �ѿ�ID
      INTEGER  VRTYPE, TTYPE      ! °���η�
      INTEGER  VRLEN, TLEN        ! °����Ĺ��
      DOUBLE PRECISION VRVAL(MVRLEN) ! vr°������
      CHARACTER*80 TITLE          ! title°������
         ...
      NCID = NCOPN ('foo.nc', NCWRITE, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE) ! ID�����
         ...
* °����Ĺ����Ĵ��, ��ʬ�ʥ��ڡ�������ݤ��Ƥ���
      CALL NCAINQ (NCID, RHID, 'valid_range', VRTYPE, VRLEN, RCODE)
      CALL NCAINQ (NCID, NCGLOBAL, 'title', TTYPE, TLEN, RCODE)
* �⤷�礭�����ʤ��ʤ��, °�����ͤ��������
      IF (VRLEN .GT. MVRLEN) THEN
          WRITE (*,*) 'valid_range attribute too big!'
          CALL EXIT
      ELSE
          CALL NCAGT (NCID, RHID, 'valid_range', VRVAL, RCODE)
      ENDIF
      IF (TLEN .GT. MTLEN) THEN
          WRITE (*,*) 'title attribute too big!'
          CALL EXIT
      ELSE
          CALL NCAGTC (NCID, NCGLOBAL, 'title', TITLE, MTLEN, RCODE)
      ENDIF
\end{verbatim}}

%-----------------------------------------------------------------------
\section{����netCDF����¾��°���򥳥ԡ�����: NCACPY}

�ؿ�{\tt NCACPY}�ޤ���{\tt NCAGTC}��, ���륪���ץ󤵤줿netCDF�ե�����
����¾��°���򥳥ԡ�����.
�����, Ʊ���netCDF�ե��������, ��Ĥ��ѿ�����¾���ѿ���°���򥳥ԡ�
����Τˤ�Ȥ����Ȥ��Ǥ���.

���顼�����������ˤ�, {\tt NCACPY}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���Ϥޤ��Ͻ��Ϥ��ѿ�ID�����ꤵ�줿netCDF�ե�����ˤ�����Ŭ���Ǥʤ�.
\item ���ꤵ�줿°����¸�ߤ��Ƥ��ʤ�.
\item ���Ϥ�netCDF������⡼�ɤˤʤ�, ���Ĥ��ν��ϥե�����ˤ�����
 ����°�����������ޤ��ϴ�¸��°������礭��.
\item ���Ϥޤ��Ͻ��Ϥλ��ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�
 ����򻲾Ȥ��Ƥ��ʤ�.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCACPY (INTEGER INCDF, INTEGER INVAR, CHARACTER*(*) ATTNAM,
     +                   INTEGER OUTCDF, INTEGER OUTVAR, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt INCDF] °�����������饳�ԡ������٤�����netCDF�ե������netCDF
 ID�Ǥ���, ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤����.
\item[\tt INVAR] °�����������饳�ԡ������٤�����netCDF�ե���������ѿ�ID
 �ޤ���, �������Х�°���ˤĤ��Ƥ�{\tt NCGLOBAL}.
\item[\tt ATTNAM] ���ԡ����������netCDF�ե��������°��̾.
\item[\tt OUTCDF] °�������ԡ������٤�����ν���netCDF�ե������netCDF ID
 �Ǥ���, ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤����.
 ���ϤȽ��Ϥ�netCDF ID��Ʊ���Ǥ�褤.
 ���ԡ������٤�°����������ѿ��ˤޤ�¸�ߤ��ʤ����, �ޤ��ϥ��ԡ��ˤ��
 �ƴ�¸�ΰ���Ȥʤ�°�����礭���ʤ���, �ˤϽ���netCDF�ե����������⡼
 �ɤˤʤ���Фʤ�ʤ�.
\item[\tt OUTVAR] °�������ԡ������٤�����ν���netCDF�ե�������ѿ�ID,
�ޤ���, �������Х�°���إ��ԡ�����ݤˤ�, {\tt NCGLOBAL}.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCACPY}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե��������{\tt rh}�Ȥ���̾����netCDF�ѿ������ѿ�°��
{\tt units}��, ¾�δ�¸��`{\tt bar.nc}'�Ȥ���̾����netCDF�ե��������
{\tt avgrh}�Ȥ���̾����netCDF�ѿ��إ��ԡ����Ƥ���;
������, �ѿ�{\tt avgrh}������¸�ߤ��Ƥ��뤬, �ޤ�{\tt units}°�������
�Ƥ��ʤ��Ȥ������Ȥ��ꤷ�Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER  NCID1, NCID2     ! netCDF ID
      INTEGER  RHID, AVRHID       ! �ѿ�ID
         ...
      NCID1 = NCOPN ('foo.nc', NCNOWRIT, RCODE)
      NCID2 = NCOPN ('bar.nc', NCWRITE, RCODE)
         ...
      RHID = NCVID (NCID1, 'rh', RCODE)
      AVRHID = NCVID (NCID2, 'avgrh', RCODE)
         ...
      CALL NCREDF (NCID2, RCODE)  ! ����⡼�ɤ�����
* �ѿ�°����"rh"����"avgrh"�إ��ԡ�����
      CALL NCACPY (NCID1, RHID, 'units', NCID2, AVRHID, RCODE)
         ...
      CALL NCENDF (NCID2, RCODE)  ! ����⡼�ɤ���ȴ����
\end{verbatim}}

%-----------------------------------------------------------------------
\section{�ֹ椫��°��̾���������: NCANAM}

�ؿ�{\tt NCANAM}��, �ѿ�ID������ֹ��Ϳ����, °����̾�����������.
���δؿ���, �����ѿ��˴�Ϣ�������٤Ƥ��ѿ���̾�����������ɬ�פ������
�̥��ץꥱ�������ˤ����������Ǥ���, �ʤ��ʤ�, ¾�Τ��٤Ƥ�°���ؿ���
�ֹ�ǤϤʤ�̾����°���˥����������뤫��Ǥ���.
°�����ֹ��, ̾�������Ѥ��䤹��, �ʤ��ʤ�, Ʊ���ѿ���¾��°������
�����줿�ݤ�, �ֹ���Ѥ�ꤦ�뤫��Ǥ���.
°���ֹ椬°��ID�ȤϸƤФ�ʤ��ΤϤ��Τ���Ǥ���.

���顼�����������ˤ�, {\tt NCANAM}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item �ѿ�ID�����ꤵ�줿netCDF�ե�����ˤ�����Ŭ���Ǥʤ�.
\item ���ꤵ�줿°���ֹ椬��Ǥ��뤫, ���ꤵ�줿�ѿ����Ф�����������
      ����°���ο�����礭��.
\item ���ꤵ�줿°����¸�ߤ��Ƥ��ʤ�.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
      ��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCANAM (INTEGER NCID, INTEGER VARID, INTEGER ATTNUM, 
     +                   CHARACTER*(*) ATTNAM, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] °���ѿ����ѿ�ID, �ޤ���, �������Х�°���ˤĤ��Ƥ�
 {\tt NCGLOBAL}.
\item[\tt ATTNUM] °���ο�. ���ѿ����Ф���°����1(��1°��)����
 {\tt NVATTS}�ޤ��ֹ�Ť����Ƥ���.
 ������, {\tt NVATTS}���ѿ����Ф���°���ο���, {\tt NCVINQ}�ƤӽФ���
 �֤����.
\item[\tt ATTNAM] °��̾���֤����. �֤����̾���Τ���Υ��ڡ���������
 �ƤƤ����ͤФʤ�ʤ�. °��̾�β�ǽ�ʺ���ʸ��Ĺ��, ����ä���������
 �������{\tt MAXNCNAM}��Ϳ�����Ƥ���.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCANAM}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, {\tt rh}�Ȥ���̾����netCDF�ѿ����Ф���
��1°����̾������ꤷ�Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER  NCID     ! netCDF ID
      INTEGER  RHID      ! �ѿ�ID
* �ʲ���31��, MAXNCNAM�Ǥ���
      CHARACTER*31 ATTNAM
         ...
      NCID = NCOPN ('foo.nc', NCNOWRIT, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE)
         ...
* ��1°��(�ֹ�1)��̾�����������
      CALL NCANAM (NCID, RHID, 1, ATTNAM, RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{°��̾���ѹ�����: NCAREN}

�ؿ�{\tt NCAREN}��, °��̾���ѹ�����.
������̾������Ȥ�̾�����Ĺ�����ˤ�, netCDF�ե����������⡼�ɤˤ�
����Фʤ�ʤ�.
Ʊ���ѿ���¾��°����Ʊ��̾���ȤʤäƤ��ޤ��褦��°��̾���ѹ��ϤǤ��ʤ�.

���顼�����������ˤ�, {\tt NCAREN}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item �ѿ�ID�����ꤵ�줿netCDF�ե�����ˤ�����Ŭ���Ǥʤ�.
\item ������°��̾��, ���ꤵ�줿�ѿ���¾��°���ˤ��Ǥ˻Ȥ��Ƥ���.
\item ���ꤵ�줿netCDF�ե����뤬�ǡ����⡼�ɤˤ���, ���Ŀ�����̾������
      ��̾������Ĺ��.
\item ���ꤵ�줿°����¸�ߤ��Ƥ��ʤ�.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
      ��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCAREN (INTEGER NCID, INTEGER VARID, CHARACTER*(*) ATTNAM,
     +                   CHARACTER*(*) NEWNAM, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] °���ѿ����ѿ�ID, �ޤ���, �������Х�°���ˤĤ��Ƥ�
 {\tt NCGLOBAL}.
\item[\tt ATTNAM] ��Ȥ�°��̾.
\item[\tt NEWNAM] ���ꤵ�줿°���˳�����Ƥ��뿷����̾��.
 ������̾�����Ť�̾������Ĺ�����ˤ�, netCDF�ե����������⡼�ɤ�
 �ʤ���Фʤ�ʤ�.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCAREN}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, {\tt rh}�Ȥ���̾����netCDF�ѿ����Ф���
�ѿ�°����̾����{\tt units}����{\tt Units}���ѹ����Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE "netcdf.inc"
         ...
      INTEGER  NCID     ! netCDF ID
      INTEGER  RHID      ! �ѿ�ID
         ...
      NCID = NCOPN ("foo.nc", NCNOWRIT, RCODE)
         ...
      RHID = NCVID (NCID, "rh", RCODE)
         ...
* °��̾���ѹ�
      CALL NCAREN (NCID, RHID, "units", "Units", RCODE)
\end{verbatim}}

%-----------------------------------------------------------------------
\section{°����������: NCADEL}

�ؿ�{\tt NCADEL}��, �����ץ󤵤�Ƥ���netCDF�ե����뤫��netCDF°�����
������. netCDF�ե����������⡼�ɤˤʤ���Фʤ�ʤ�.

���顼�����������ˤ�, {\tt NCADEL}��{\tt RCODE}�Ȥ����������ͤ��֤�.
���顼�θ����Ȥ��ƹͤ������ΤȤ��Ƥϰʲ��Τ褦�ʤ�Τ��󤲤���:
\begin{itemize}
\item ���ꤵ�줿�ѿ�ID����Ŭ���Ǥʤ�.
\item ���ꤵ�줿netCDF�ե����뤬�ǡ����⡼�ɤˤʤ�.
\item ���ꤵ�줿°����¸�ߤ��Ƥ��ʤ�.
\item ���ꤵ�줿netCDF ID�������ץ󤵤줿netCDF�ե�����򻲾Ȥ��Ƥ���
      ��.
\end{itemize}

\begin{quote}
\begin{verbatim}
      SUBROUTINE NCADEL (INTEGER NCID, INTEGER VARID, CHARACTER*(*) ATTNAM, INTEGER RCODE)
\end{verbatim}
\begin{description}
\item[\tt NCID] ������{\tt NCOPN}�ޤ���{\tt NCCRE}�ƤӽФ����֤��줿
 netCDF ID.
\item[\tt VARID] °���ѿ����ѿ�ID, �ޤ���, �������Х�°���ˤĤ��Ƥ�
 {\tt NCGLOBAL}.
\item[\tt ATTNAM] ��Ȥ�°��̾.
\item[\tt RCODE] �֤��줿���顼������. ���顼�������Ƥ��ʤ����, 0���֤����.
\end{description}
\end{quote}

�ʲ�����Ǥ�, {\tt NCADEL}��Ȥä�, ��¸��`{\tt foo.nc}'�Ȥ���̾����
��¸��netCDF�ե�����ˤ�����, {\tt rh}�Ȥ���̾����netCDF�ѿ����Ф���
�ѿ�°��{\tt Units}�������Ƥ���:
{\baselineskip=\vs
\begin{verbatim}
      INCLUDE 'netcdf.inc'
         ...
      INTEGER  NCID     ! netCDF ID
      INTEGER  RHID      ! �ѿ�ID
         ...
      NCID = NCOPN ('foo.nc', NCWRITE, RCODE)
         ...
      RHID = NCVID (NCID, 'rh', RCODE)
         ...
* °������
      CALL NCREDF (NCID, RCODE)  ! ����⡼�ɤ�����
      CALL NCADEL (NCID, RHID, 'Units', RCODE)
      CALL NCENDF (NCID, RCODE)  ! ����⡼�ɤ���ȴ����
\end{verbatim}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{netCDF�ե����빽¤�������ǽ}
\label{netCDF�ե����빽¤�������ǽ}

netCDF��, ����ظ��Υǡ������������Τ���Υǡ�����ݲ�, ����Ӥ������
���򥵥ݡ��Ȥ��륤�󥿡��ե������ζ���Ū�ʼ�����Ϳ���륽�եȥ������饤
�֥��Ǥ���.
���μ����ˤ�ä�, �����ɽ�����뤿��ε�����Ω�ʥե����ޥåȤ�Ϳ�����
��.
netCDF�ե�����ե����ޥåȤϥ��󥿡��ե��������鱣����Ƥ��뤬, ������
��Ӵ�Ϣ�����ե����빽¤�򤤤��餫�Ǥ����򤹤뤳�Ȥˤ�ä�, �ɤ�netCDF
���ˤʤ������Ȥ������뤫������ˤ��������ˤʤ�.

netCDF{\bf �ե����ޥå�}�Τ��ܺ٤ʵ��ҤˤĤ��Ƥ�, Appendix B[�ե���
��ե����ޥåȻ���]\pageref{�ե�����ե����ޥåȻ���}�ڡ����򻲾�.
�����, netCDF�ե�������ɤ߽񤭤�����, ��Ψ�˴ؤ��뤳�Ȥ����򤷤��ꤹ
�뤿��ˤ�ɬ�פʤ�.
ʸ�񲽤��줿���󥿡��ե�����������Ȥ�, ���ĥե����ޥåȤˤĤ���¾�β�
��򤷤Ƥ��ʤ��ץ�������, ����, netCDF�ե����ޥåȤ����Ȥ��ѹ������
�ⵡǽ��³����Ǥ�����, �ʤ��ʤ�, ���Τ褦�ʤ������ѹ���, ʸ�񲽤���
�����󥿡��ե������β��ؤǤʤ���, ���İ����ΥС�������netCDF�ǡ�����
���ݡ��Ȥ���뤫��Ǥ���.

���ξϤǤ�, netCDF�ե�����ι�¤, ����ӥͥåȥ��Ʃ������Ϳ����XDR
�ؤΤ����Ĥ���������, netCDF����ǽ�����ˤĤ������򤹤�Τ˽�ʬ�ʤ��餤
�ܺ٤˵��Ҥ���.

%-----------------------------------------------------------------------
\section{netCDF�ե��������ʬ��ʬ}

netCDF�ǡ������åȤ�, 2�Ĥ���ʬ�������1�ĤΥե�����˳�Ǽ�����.
\begin{itemize}
\item {\bf �إå�}: ����, °��, ������ѿ��ǡ���������ѿ�, �˴ؤ��뤹
      �٤Ƥξ����ޤ�.
\item {\bf �ǡ���}��ʬ: {\bf ���ꥵ�����ǡ���}(̵���¼���������ʤ���
 �����Ф���ǡ�����ޤ�)�����{\bf ��Ͽ�ǡ���}(̵���¼���������ѿ���
 �Ф���ǡ�����Ͽ��ޤ�)
\end{itemize}

���٤ƤΥǡ�����, ������Ω�ˤ��뤿���XDR������ɽ�������.

netCDF�ե�����ν��ˤ��뵭��Ū�ʥإå���, �ե�������μ���, �ѿ�, ��
���°���˴ؤ�������ɽ�����٤ʥǡ�����¤��XDR�ǥ����ɲ�������ΤǤ�
��.
���Υإå��ˤ������ѿ����Ҥˤ�, ���ѿ��ǡ�������Ƭ�ؤΥ��ե��å�, �ޤ�
��, ���뵭Ͽ��Τ����ѿ������Х��ե��åȤ��ޤޤ�Ƥ���.
���ε��Ҥˤ�, ����������, ����ӳ��ѿ����Ф���ʣ�������Υ���ǥå�����
Ŭ�ڤʥ��ե��åȤˤɤΤ褦�˥ޥåפ��뤫����ꤹ�뤿���ɬ�פʾ����
�ޤޤ�Ƥ���.

���Υإå��ˤϻ��Ѳ�ǽ��;ʬ���ڡ����Ϥʤ�; ��netCDF�ե�������μ���, 
�ѿ�, �����°���Τ����ɬ�פ��礭�������ʤ�.
����ˤ��, netCDF�ե����뤬����ѥ��Ȥˤʤ�, �ե�����򼫸ʵ���Ū�ˤ�
�뤿�������ǡ������Ǽ���뤿����ؤɥ����Хإåɤ�ɬ�פȤ��ʤ�, �Ȥ�
������������.
���ε���������Ū�ʷ�����, �إå����ĥ����ɬ�פΤ���netCDF�ե�����ؤ�
���, �㤨��, ��¸��netCDF�ե�����˿���������,����ӿ������ѿ����ɲ�
����ʤ�, �Ϥ��Υե�����򥳥ԡ�����Τ�Ʊ�������Ȥ�������.
���Υ����Ȥ�, {\tt NCREDF}���ƤФ줿���{\tt NCENDF}���ƤФ���
�ˤ�����.
ɬ�פʤ��٤Ƥμ���, �ѿ�, �����°�����ѿ��ǡ������{\bf ����}������,
��ˤʤäƥե�����Υإå���ʬ�ˤ��¿���Υ��ڡ�����ɬ�פȤ���褦��
netCDF���Ǥ��ɲä����̾�����ѹ��򤷤ʤ��褦�ˤ����,
�إå��γ�ĥ��ȼ�������Ȥ���򤹤뤳�Ȥ��Ǥ���.

�إå���³�����ꥵ�����ǡ�����ʬ��, ̵����(��Ͽ)������ȤäƤ��ʤ��ѿ�
���Ф��뤹�٤Ƥ��ѿ��ǡ�����ޤ�.
���ѿ��Υǡ����ϥե�����Τ�����ʬ��Ϣ³Ū�˳�Ǽ�����.
�⤷̵���¼������ʤ����, �����netCDF�ե�����κǸ����ʬ�Ǥ���.

���ꥵ�����ǡ�����³����Ͽ�ǡ�����ʬ��, ���ѿ��ε�Ͽ��ޤ�, �Ƶ�Ͽ��
���٤Ƥε�Ͽ�ѿ��Τ���Υǡ�����ޤ�Ǥ���.
���ѿ����Ф��뵭Ͽ�ǡ�����, �Ƶ�Ͽ���Ϣ³Ū�˳�Ǽ�����.

���ꥵ�����ǡ�����ʬ�⤪��ӳƵ�Ͽ��˥ǡ������������֤�, �ѿ������
���줿�Τ�Ʊ�����֤Ǥ���, �����netCDF�ѿ�ID�ξ���Ǥ���.
�����μ���, �ǡ�������������ǽ����夵���뤿��˻Ȥ��뤳�Ȥ⤢��;
�ʤ��ʤ�, �Ǥ�褤�ǡ������������Ϻ��ΤȤ���, �ǡ�����缡Ū���ɤ߽�
���뤳�Ȥˤ�ä�ã������뤫��Ǥ���.

%-----------------------------------------------------------------------
\section{XDR��}

XDR��, �ǡ����ε��Ҥ���ӥ����ɲ���ɸ��Ǥ���, �����ǡ���ɽ���Τ���Υ饤
�֥��Ǥ���. �����Ȥä�, ������Ω�ʷ��ǥǡ�����¤�򥳡��ɲ����뤳��
���Ǥ���.
netCDF�ϥإå���ʬ����ӥǡ�����ʬ��ξ���ˤ�����, ���٤ƤΥǡ�����ɽ��
�Τ����XDR����Ѥ��Ƥ���.
XDR��, XDR�饤�֥�꤬��������Ƥ���¾�Υޥ������ɤ��褦�ʲ�������
����ǡ�����񤯤���˻Ȥ���.

%-----------------------------------------------------------------------
\section{XDR�ˤĤ��Ƥΰ���Ū�ͻ�}

¿���Υ٥����, C��󥿥���饤�֥��Ȱ���XDR���󶡤��Ƥ���.
���ۤ����netCDF���եȥ�������ޤ�, �٥�������ޤ�XDR�饤�֥��򶡵�
���Ƥ��ʤ��ץ�åȥե�����Τ����, Sun�β���Ū��XDR�μ�����ޤ�Ǥ���.

XDR�ؤ�XDR�ǥ����ɲ����줿�ǡ�����netCDF�ե�������ɤ߽񤭤���ˤ�,
Cɸ��I/O(stdio)�饤�֥��Ȥ��ä���˼�������Ƥ���I/O�ؤ�Ȥ�.
���ä�, �ǡ�����Ʊ���˥�����������¿�ťץ�����, I/O�Хåե��λ���,
�����netCDF�ե�����򥪡��ץ�/�����������륳����, �ˤĤ��ƤΤۤȤ��
�μ���ˤ�, ɸ��I/O�饤�֥������򤹤����������.
�ä�, ����ץ�������netCDF�ե������񤤤�, ���δ֤�¾�Υץ�����������
���ɤ�Ȥ������Ȥ���ǽ�Ǥ���.
�ǡ������ɤ߽񤭤ˤ�, stdio��{\tt fread()}�����{\tt fread()}��겼��
�θƤӽФ��ϻȤäƤ��ʤ�.
{\tt NCSNC()}��ɸ��I/O�饤�֥���{\tt fflush()}�����������ΤǤ���,
�ޤ��񤫤�Ƥ��ʤ��Хåե�����Ƥ�ǡ�����񤭽Ф���, ¾�Υץ���������
����ɤ��褦�ˤ���; {\tt NCSYNC()}�ϥإå����ѹ���ǿ��Τ�Τˤ���
(�㤨��, °���ͤؤ��ѹ��ʤ�).

stdio�饤�֥��ΤȤ���Ʊ�ͤ�, �ե�����ΰۤʤ��ΰ�ؤ�``õ��''������
���ݤ�flush���¹Ԥ����.
���ä�, �ɤ߽񤭤����ν��֤�, I/O����ǽ���������ƶ���Ϳ������.
�Ƶ�Ͽ��˥ǡ������񤫤줿�Τ�Ʊ�����֤ǥǡ������ɤ��, �Хåե���
flush�ϺǾ��¤ˤʤ�.

���������ʣ���ˤʤ����̤Ǥʤ���礬��Ĥ���: ¾�Υץ��������ɤ߹��ߤ�
����˥����ץ󤷤Ƥ����¸��netCDF�ե������, 
�����Ĥ����ɲü���, �ѿ�, �ޤ���°��, ���ɲä��뤿���, �񤭹���¦����
���⡼�ɤ�����褦�ʾ��Ǥ���.
���ξ��, �񤭹���¦������⡼�ɤ���ȴ�����, ����������, °��, �ޤ���
�ѿ�, �ȸŤ��ǡ�������ĥե�����Υ��ԡ�����������������뤬, ���Υե�
�����ޤ������ץ󤷤Ƥ����ɤ߹���¦��, ���Υե�����򥯥���������, ��
�����ץ󤷤ʤ��¤�, �����ѹ����ΤǤ��ʤ�.

Ʊ���ե������Ʊ���˽񤭹��ߥ����ץ󤷤Ƥ���񤭹��ߤ�¿�Ťˤ���褦��
���ˤ�, netCDF�ǡ������������ϤޤȤ�˵�ǽ���ʤ����⤷��ʤ�.

XDR����I/O�ؤ�, �ץ�åȥե�������ò�����¾��I/O�ؤ��֤������뤳�Ȥ�
��ä�, netCDF�μ�������塼��Ǥ���ץ�åȥե�����⤢��.
�����, �㤨��, Cray�ˤĤ��Ƥʤ���Ƥ���.
����ˤ�ä�, netCDF��ɸ��I/O����������Ѥ�äƤ��ޤ�, ����椨�˥ǡ�
���ζ�ͭ��, �Хåե����, �����I/O���Υ����Ȥ˴�Ϣ�����������Ѥ��
�Ƥ��ޤ���ǽ���Ϥ���.

XDR�Τ褦��, �ǡ������Ф���ޤäȤ���ɽ����Ȥ����Ȥˤ�륳���Ȥ�, �ǡ�
���η������, ���Υǡ������Ф��뤽�Υޥ������������XDR������Ʊ���Ǥ�
�뤫�ɤ����˰�¸�����Ѥ�ꤦ��.
XDR��, byte, character, �����short�����ǡ����ˤĤ��Ƥ��ä˸�Ψ��
�ɤ�.

�Ȥ���ޥ����ˤ�����Ȥ���ǡ������ˤĤ��Ƥ�, �ǡ�����XDR(��/����)��
������Τ�ɬ�פʻ��֤�����ˤʤ뤳�Ȥ⤢��.
�Ǥ�褤�Τ�, byte�������, ���Τ���ˤ�, �ۤȤ���Ѵ������Ȥ������ʤ�;
�ʤ��ʤ�, XDR�饤�֥���, �������Ф��륵�ݡ��Ȥ���¢���Ƥ��뤫���
����.
netCDF�μ����ˤ�, short(16�ӥå�)������������Ф���Ʊ�ͤʥ��ݡ��Ȥ�XDR
���ɲä�����Τ��ޤޤ�Ƥ���.
�ǰ��ξ���, IEEE��ư�������򤽤������ɽ���Ȥ��Ƥ��ʤ��ޥ�������ư
�������ǡ������礭��������ɤ߽񤭤�����Ǥ���.
XDR�饤�֥���, ��ư����������������������뤿�Ӥ��Ȥ�, �ؿ���ƽФ�,
�����Ȥ�������.
����ư���������Τ���δؿ��ƤӽФ��Υ����Ȥ�, ��ư��������ʬ�ؤ�netCDF
���������Υ����Ȥ���Ⱦ�����Ƥ��ޤ��褦�ʥޥ���⤢��.

���ۤ���Ƥ���netCDF�μ�����, ��������ݤȤ��Ƥ���.
I/O����ǽ����褯���뤿��μ����Τ���ʤ��Ŭ����Ԥä���, long����
�������ư�������������XDR�Ѵ����Ŭ�����뤿���XDR�饤�֥����Υ롼
�פΥ��������󥰤�Ԥä��ꤹ��褦��, �ץ�åȥե�������ò������ܿ�
��, �ǡ������������ˤ��⤤��ǽ��������褦�ʾ��ˤϼº�Ū�Ǥ���
����˾�ޤ���ΤǤ���.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{netCDF�桼�ƥ���ƥ�}
\label{netCDF�桼�ƥ���ƥ�}

����򰷤����ץꥱ�������netCDF���󥿡��ե�������Ȥ������ͳ�ΰ��
��, ��̥�٥��netCDF�桼�ƥ���ƥ������netCDF�ǡ������Ф������Ū��
���ץꥱ�����������Ѥ��뤿��Ǥ���.
����, netCDF���եȥ��������ۤΰ����Ȥ���, 2�Ĥ�netCDF�桼�ƥ���ƥ�:
{\tt ncgen}�����{\tt ncdump}�����ѤǤ���.
¿�������ѼԤ�¾��netCDF�桼�ƥ���ƥ����󶡤��Ƥ���, netCDF�ǡ����˥�
�����������͡��ʲĻ벽����Ӳ��ϥѥå����������Ѳ�ǽ�Ǥ���.
netCDF�ǡ����˥��������ޤ��Ϥ���򰷤�̵����, ����Ӿ��ѤΥ��եȥ�����
�κǿ��Υꥹ�ȤˤĤ��Ƥ�, netCDF���եȥ������ꥹ��
(`{\tt http://www.unidata.ucar.edu/packages/netcdf/software.html}')
�򻲾Ȥ��줿��.

���ξϤǤ�, {\tt ncgen}�����{\tt ncdump}�桼�ƥ���ƥ��ˤĤ���������
��.
�����2�ĤΥġ����, �Х��ʥ��netCDF�ե������, netCDF�ե�����Υƥ�
����ɽ���Ȥδ֤��Ѵ��򤹤��ΤǤ���.
{\tt ncdump}�ν��Ϥ����{\tt ncgen}�����Ϥ�, netCDF�ե������
CDL(network Common data form Description Language)�Ȥ����Τ��뤵����
���ʸ���ˤ�äƥƥ�����ɽ��������ΤǤ���.

%-----------------------------------------------------------------------
\section{CDL��ʸ}

�ʲ���CDL����Ǥ�, ���Ĥ�̾���Ĥ�����({\tt lat}, {\tt lon}, {\tt
time}), �ѿ�({\tt z}, {\tt t}, {\tt p}, {\tt rh}, {\tt lat}, {\tt
lon}, {\tt time}), �ѿ�°��({\tt units}, {\tt \_FillValue}, 
{\tt valid\_range}), ����Ӥ����餫�Υǡ�������ä�netCDF�ե������
�Ҥ��Ƥ���.
{\baselineskip=\vs
\begin{verbatim}
netcdf foo {    // CDL�ˤ��netCDF�������

dimensions:
lat = 10, lon = 5, time = unlimited ;

variables:
  long    lat(lat), lon(lon), time(time);
  float   z(time,lat,lon), t(time,lat,lon);
  double  p(time,lat,lon);
  long    rh(time,lat,lon);

  lat:units = "degrees_north";
  lon:units = "degrees_east";
  time:units = "seconds";
  z:units = "meters";
  z:valid_range = 0., 5000.;
  p:_FillValue = -9999.;
  rh:_FillValue = -1;

data:
  lat   = 0, 10, 20, 30, 40, 50, 60, 70, 80, 90;
  lon   = -140, -118, -96, -84, -52;
}
\end{verbatim}}

���٤Ƥ�CDFʸ�ν���ϥ��ߥ�����Ǥ���. �������Τ����, ����, ����, ��
��Ӳ��Ԥ�Ȥ��Τϼ�ͳ�Ǥ���.
���٤ƤιԤˤ�����, ���֥륹��å���{\tt //}�ʲ���³����Τϥ����Ȥ�
����.

CDL���Ҥ�, 3�ĤΥ��ץ������ʬ: ����, �ѿ�, ����ӥǡ���, ��������.
�ѿ�����, �ѿ���������°���γ�����Ƥ�ޤ�Ǥ��Ƥ�褤.

������, ����CDL���Ҥǵ��Ҥ����1�Ĥޤ��Ϥ���ʾ��ʣ���������ѿ��η���
������뤿��˻Ȥ���.
������̾������ӥ����������.
CDL���Ҥ����1�Ĥμ���������̵���¥���������Ĥ��Ȥ��Ǥ���. ���ʤ��, 
���μ�������ĥǡ�����Ǥ�դ�Ĺ������Ĺ������(�ե�������ε�Ͽ����Ʊ��
��). 

�ѿ���, Ʊ�������ͤ�ʣ�������������ɽ������. �ѿ���, ̾��, �ǡ�����,
�����, ���μ����Υꥹ�Ȥǵ��Ҥ���������.
���ѿ��ϥǡ����ͤ����ǤϤʤ�, ��Ϣ����°��(�ʲ�����)����Ƥ�.
̾��, �ǡ�����, ������ѿ��η���, CDL���Ҥ��ѿ���ʬ�ˤ���������ˤ��
�ƻ��ꤵ���.
�ѿ��ϼ�����Ʊ��̾������äƤ�褤; �����Ǥ�, ���Τ褦���ѿ��Ϥ���
̾���μ����κ�ɸ�ͤ�ޤ�Ǥ���.

°����, �ѿ��ޤ���netCDF�ǡ������å����ΤˤĤ��Ƥξ����ޤ�Ǥ���.
°����, ñ��, ���̤���, ͭ�����ͤκ��礪��ӺǾ�, ����Ӱ��̥ѥ�᥿��
�Τ褦����������ꤹ�뤿��˻Ȥ����Ȥ��Ǥ���.
°�������, ñ����ͤޤ����ͤ�����ˤ�ä�ɽ�������.
�㤨��, {\tt units}��{\tt celsius}�Τ褦��ʸ�������ɽ�������°����
����.
°����, ��Ϣ�����ѿ�, ̾��, �ǡ�����, Ĺ��, ������ͤ���äƤ���.
�ǡ������Ǽ���뤿����ѿ��Ȥ��о�Ū��, °����, ����ǡ���(�ǡ����ˤ�
���ƤΥǡ���)���Ǽ���뤿��Τ�ΤǤ���.

CDL�ˤ����Ƥ�, °�����ѿ������°����̾���򥳥���(`{\tt :}')�Ƕ��ڤä�
��Τǻ��ꤵ���.
�ѿ�̾���ά��, °��̾�򥳥���(`{\tt :}')�ǻϤ�뤳�Ȥˤ�ä�, netCDF
�ե��������Τ˥������Х�°���������Ƥ뤳�Ȥ��Ǥ���.
CDL���°���Υǡ�������, ����˳�����Ƥ��Ƥ����ͤη��Ƿ�ޤ�.
°����Ĺ����, �ǡ����ͤο��ޤ��Ϥ���°���˳�����Ƥ��Ƥ���ʸ�������
ʸ�����Ǥ���.
�ͤ򥳥��(`{\tt ,}')�Ƕ��ڤ뤳�Ȥˤ�ä�, ʸ���Ǥʤ�°����ʣ�����ͤ�
������Ƥ뤳�Ȥ��Ǥ���.
°���˳�����Ƥ��Ƥ��뤹�٤Ƥ��ͤ�, Ʊ�����Ǥʤ���Фʤ�ʤ�.

�ѿ�, °��, ����Ӽ������Ф���CDL̾�ˤ�, ��ʸ���ޤ��Ͽ�����(`{\tt \_}')
�����(`{\tt -}')ʸ����Ǥ�դ��ȹ礻��������뤬, (`{\tt \_}')����Ϥ�
��̾���ϥ饤�֥��Τ����ͽ�󤵤�Ƥ���.
CDL̾�Ǥ���ʸ����ʸ���϶��̤����.
netCDF�饤�֥���netCDF̾�˲������¤��ߤ��Ƥ��ʤ��Τ�, CDL̾�Ȥ���Ŭ
���Ǥʤ�̾�������ѿ���������뤳�Ȥ�(�򤫤ʤ��ȤǤϤ��뤬)��ǽ�Ǥ���.
����Ū�ʥǡ�������̾����CDL���ͽ���ʤΤ�, �ѿ�, ���������°����̾
���Ϸ���̾���Ǥ��äƤϤʤ�ʤ�.

CDL���ҤΥ��ץ���ʥ�ǡ�����ʬ�Ǥ�, netCDF�ѿ�������������.
������ι�ʸ�ϴ�ñ�Ǥ���:
\begin{quote}
{\bf �ѿ�} = {\bf ��1}, {\bf ��2},...;
\end{quote}

����ޤǶ��ڤ�줿����Υꥹ�Ȥ�, ����, ����, ����Ӳ��Ԥ�ʬ���뤳�Ȥ�
�Ǥ���.
ʣ������������ˤĤ��Ƥ�, �Ǹ�μ���������Ѥ��.
�Ȥ����櫓��, ����ˤĤ��Ƥ�, �Խ�ǤϤʤ���礬�Ȥ���.
�ѿ��������Τ�ɬ�פʤΤ��⾯�ʤ��ͤ���Ϳ�����ʤ����ˤ�, �ե�����
��Ÿ�������.
��������η����ѿ���������줿���ȹ��פ��Ƥ���ɬ�פϤʤ�;
�㤨��, ��������Ū����ư���������Ѵ�����Ȥ��ä����ʤ����.
��̣�Τ��뤹�٤Ƥη��Ѵ������ݡ��Ȥ���Ƥ���.

�ե����ͤΤ�������̤ε�ˡ�����ݡ��Ȥ���Ƥ���: `{\tt \_}'ʸ����, �ѿ�
�Τ���Υե����ͤ򼨤�.

%-----------------------------------------------------------------------
\section{CDL�ǡ�����}

CDL�ǡ������ϰʲ��Τ褦�Ǥ���:

\begin{quote}
\begin{description}
\item[{\tt char}] ʸ��
\item[{\tt byte}] 8�ӥå�����
\item[{\tt short}] 16�ӥå����Ĥ�����
\item[{\tt long}] 32�ӥå����Ĥ�����
\item[{\tt int}] long��Ʊ��
\item[{\tt float}] IEEEñ������ư������(32�ӥå�)
\item[{\tt real}] float��Ʊ��
\item[{\tt double}] IEEE��������ư������(64�ӥå�)
\end{description}
\end{quote}

{\tt byte}�ǡ��������ɲä���Ƥ��뤳��, �����{\tt unsigned}�����Ҥ�̵
�����Ȥ������, CDL��C��Ʊ�����ܥǡ������򥵥ݡ��Ȥ��Ƥ���.
���ʸ�ˤ�����, �ǡ�������, ��ʸ���ޤ��Ͼ�ʸ���Τɤ��餫�ǻ��ꤵ���.

{\tt byte}����, 8�ӥåȥǡ������Ǽ���뤿��ˤ���Ȥ������ˤ�����,
{\tt char}���ȰۤʤäƤ���, 0�ΥХ��Ȥ�, ʸ���ǡ����ˤ�����褦������
�ʰ�̣������ʤ�.
{\tt ncgen}�桼�ƥ���ƥ���{\tt byte}�����, ����FORTRAN�����ɤǤ�,
{\tt BYTE}, {\tt INTEGER*1}, �ޤ���Ʊ�ͤΥץ�åȥե������¸�����
���Ѵ�����.

{\tt short}���� -32768����32767�ޤǤ��ͤ��ݻ�����.
{\tt ncgen}�桼�ƥ���ƥ���{\tt byte}�����, ����FORTRAN�����ɤǤ�,
{\tt INTEGER*2}������Ѵ�����.

{\tt long}���� -2147483648����2147483647�ޤǤ��ͤ��ݻ�����.
{\tt ncgen}�桼�ƥ���ƥ���{\tt byte}�����, ����FORTRAN�����ɤǤ�,
{\tt INTEGER}������Ѵ�����.
CDL����ˤ����Ƥ�, {\tt int}��{\tt integer}��{\tt long}��Ʊ����Ȥ���
��ᤵ���.

{\tt float}���� -3.4{\tt +}38����3.4{\tt +}38�ޤǤ��ͤ�,
32�ӥå�IEEE���ʤ�ñ������ư���������γ���ɽ�����Ѥ����ݻ�����.
{\tt ncgen}�桼�ƥ���ƥ���{\tt float}�����, ����FORTRAN�����ɤǤ�,
{\tt REAL}������Ѵ�����.
CDL����ˤ����Ƥ�, {\tt real}��{\tt float}��Ʊ����Ȥ��Ʋ�ᤵ���.

{\tt double}���� -1.7{\tt +}308����1.7{\tt +}308�ޤǤ��ͤ�,
64�ӥå�IEEE���ʤ�ñ������ư���������γ���ɽ�����Ѥ����ݻ�����.
{\tt ncgen}�桼�ƥ���ƥ���{\tt double}�����, ����FORTRAN�����ɤǤ�,
{\tt DOUBLE PRECISION}������Ѵ�����.

%-----------------------------------------------------------------------
\section{�ǡ���������Ф���CDLɽ��}
\label{�ǡ���������Ф���CDLɽ��}

������Ǥ�, ������Ф���CDLɽ���ˤĤ�����������.

°����, CDL���Ҥ�{\tt variables}��ˤ�����, °���η������Ĺ�������
����Υꥹ�Ȥ�Ϳ���뤳�Ȥˤ�äƽ���������.
(netCDF�饤�֥��ؤ�C�����FORTRAN��³�����󥿡��ե������ˤ�����,
°���η������Ĺ����, ���줬��������Ƥ��ۤ�Ϳ�����ʤ���Фʤ�ʤ�.)
CDL�ϰۤʤ�netCDF�����椫�鷿����̤Ǥ���褦��, ����ͤΤ���ι�ʸ��
������Ƥ���.
CDL����Τ���ι�ʸ��, C�ι�ʸ��������Ƥ��뤬, {\tt shorts}�����
{\tt floats}��{\tt long}�����{\tt double}������̤��뤿���, ���򼨤�
ź�����ɲä���Ƥ���.

{\tt byte}�����ñ���ʸ���ޤ���, ���󥰥륯�����ȤǰϤޤ줿ʣ��ʸ���Υ�
����������, ��ɽ�������. �㤨��:
\begin{quote}
\baselineskip=\vs
\begin{verbatim}
'a'     // ASCII a
'\0'    // 0�ΥХ���
'\n'    // ASCII����ʸ��
'\33'   // ASCII����������ʸ�� (8�ʿ���33)
'\x2b'  // ASCII�ץ饹 (16�ʿ���2b)
'\376'  // 8�ʿ���377 = 10�ʿ���-127 (�ޤ���254)
\end{verbatim}
\end{quote}

ʸ������ϥ��֥륯�����ȤǰϤޤ��. ʸ������ϥ��֥륯�����ȤǰϤޤ줿
ʸ�����ɽ���Ǥ���.
ʣ����ʸ�����, 1�Ĥ�ʸ�������Ϣ�뤵���; ����ˤ�ä�, Ĺ��ʸ������
��ʣ���Ԥ˽񤯤��Ȥ��Ǥ���.
ʣ���β���Ĺ��ʸ�����ͤ򥵥ݡ��Ȥ��뤿���, `{\tt ,}'�Τ褦�ʴ���Ū��
���ڤ�ʸ����Ȥ����ȤϤǤ��뤬, ʸ������ڤ�Τ���Τ��Τ褦�ʴ���
��, netCDF�饤�֥���ؤξ�Υ��եȥ������Ǽ�������ʤ���Фʤ�ʤ�.
Cʸ������Ф����̾�Υ���������ʸ���δ����Ϥ��Τޤ޻Ȥ���.
�㤨��:
\begin{quote}
\baselineskip=\vs
\begin{verbatim}
"a"            // ASCII `a'
"Two\nlines\n" // 2�Ĥβ���ʸ������ᤳ�ޤ줿10ʸ����ʸ����
"a bell:\007"  // ASCII �٥��ޤ��ʸ����
"ab","cde"     // "abcde"��Ʊ��
\end{verbatim}
\end{quote}

{\tt short}����η�����, `{\tt s}'�ޤ���`{\tt S}'���ղä���������Ǥ�
��.
{\tt short}�����`{\tt 0}'�ǻϤޤäƤ������, 8�ʿ��Ǥ���Ȳ�ᤵ��
��.
`{\tt 0x}'�ǻϤޤäƤ������, 16�ʿ��Ǥ���Ȳ�ᤵ���.
�㤨��:
\begin{quote}
\baselineskip=\vs
\begin{verbatim}
2s      // short����2
0123s   // 8�ʿ�
0x7ffs  // 16�ʿ�
\end{verbatim}
\end{quote}

{\tt long}����η�����, �̾��������Ǥ���; ������, ���ץ����Ȥ���
`{\tt l}'�ޤ���`{\tt L}'���ղä��Ƥ�褤.
{\tt long}�����`{\tt 0}'�ǻϤޤäƤ������, 8�ʿ��Ǥ���Ȳ�ᤵ���.
`{\tt 0x}'�ǻϤޤäƤ������, 16�ʿ��Ǥ���Ȳ�ᤵ���.
������{\tt long}�������ϰʲ��Τ褦�Ǥ���:
\begin{quote}
\baselineskip=\vs
\begin{verbatim}
-2
1234567890L
0123            // 8�ʿ�
0x7ff           // 16�ʿ�
\end{verbatim}
\end{quote}

{\tt float}����, ͭ��������7������٤���ĥǡ�����ɽ������Τ�Ŭ���ʤ�
�ΤǤ���.
{\tt float}���η�����, C����ư�����������`{\tt f}'�ޤ���`{\tt F}'����
�ä�����Τ�Ʊ���Ǥ���.
CDL{\tt float}�ˤ����Ƥ�, �����ȶ��̤��뤿���, ��������ɬ�ܤǤ���.
������{\tt float}�������ϰʲ��Τ褦�ˤʤ�:
\begin{quote}
\baselineskip=\vs
\begin{verbatim}
-2.0f
3.14159265358979f       // �����٤˴ݤ����
1.f
.1f
\end{verbatim}
\end{quote}

{\tt double}����, ͭ��������16������٤���ĥǡ�����ɽ������Τ�Ŭ���ʤ�
�ΤǤ���.
{\tt double}���η�����, C����ư�����������Ʊ���Ǥ���.
���ץ����Ȥ���`{\tt d}'�ޤ���`{\tt D}'���ղä��Ƥ�褤.
CDL{\tt double}�ˤ����Ƥ�, �����ȶ��̤��뤿���, ��������ɬ�ܤǤ���.
������{\tt double}�������ϰʲ��Τ褦�ˤʤ�:
\begin{quote}
\baselineskip=\vs
\begin{verbatim}
-2.0
3.141592653589793
1.0e-20
1.d
\end{verbatim}
\end{quote}

%-----------------------------------------------------------------------
\section{ncgen}
\label{ncgen}

{\tt ncgen}�ġ����, netCDF�ե�����ޤ���, netCDF�ե��������������C��
����FORTRAN�ץ������, ���������.
{\tt ncgen}��ƤӽФ��ݤ˥��ץ�������ꤷ�ʤ����, ���Υץ�������
CDL���Ϥι�ʸ������å�����Τߤ�, CDL��ʸ��ȿ�ˤĤ��ƤΥ��顼��å���
����Ф������Ǥ���.

{\tt ncgen}��UNIX�ǸƤӽФ�����ν񼰤�:
\begin{quote}
\begin{verbatim}
ncgen [-b] [-o netCDF�ե�����] [-c] [-f] [-n] [���ϥե�����]
\end{verbatim}
\end{quote}
������, 
\begin{description}
\item[`{\tt -b}']  (�Х��ʥ��)netCDF�ե��������������. `{\tt -o}'��
 ���ꤵ��Ƥ��ʤ�����, �ǥե���ȤΥե�����̾��netCDF̾(�������{\tt
 netcdf}������ɤθ�˻��ꤵ���)����, ��ĥ��`{\tt .nc}'���ղä��ƺ�
 �������.
 {\bf �ٹ�: �⤷���ꤵ�줿̾���Υե����뤬����¸�ߤ��Ƥ����, ����Ͼ�
 �񤭤����.}
\item[`{\tt -o netcdf�ե�����}']  ���������netCDF�ե������̾�������
 ����. ���Υ��ץ���󤬻��ꤵ����, `{\tt -b}'���ץ���󤬰��ۤ˲���
 �����.
 (netCDF�ե������õ���ƤӽФ��ˤ�ä����������ľ�ܻ��ȥե�����Ǥ���,
 ���Τ���ɸ����Ϥ˽񤯤��Ȥ��Ǥ��ʤ��Τ�, ���Υ��ץ����ɬ�פǤ���.)
\item[`{\tt -c}'] netCDF����˹��פ���netCDF�ե��������������C�Υ���
 �������ɤ��������. ����C�����������ɤ�, ɸ����Ϥ˽��Ϥ����.
 �����, ���Ū������CDL�ե�����ˤĤ��ƤΤ�ͭ�Ѥʤ�ΤǤǤ���;
 �ʤ��ʤ�, �������줿�ץ��������ǤϤ��٤ƤΥǡ������ѿ�����������
 �ޤޤ�Ƥ��ޤ�����Ǥ���.
\item[`{\tt -f}'] netCDF����˹��פ���netCDF�ե��������������
 FORTRAN�Υ����������ɤ��������. ����FORTRAN�����������ɤ�, ɸ�����
 �˽��Ϥ����.
 �����, ���Ū������CDL�ե�����ˤĤ��ƤΤ�ͭ�Ѥʤ�ΤǤǤ���;
 �ʤ��ʤ�, �������줿�ץ��������ǤϤ��٤ƤΥǡ������ѿ�����������
 �ޤޤ�Ƥ��ޤ�����Ǥ���.
\item[`{\tt -n}'] `{\tt -b}'���ץ�����Ʊ�ͤǤ��뤬, `{\tt -o}'���ץ���
 ��ǽ��ϥե�����̾�����ꤵ��Ƥ��ʤ����ˤ�`{\tt .nc}'��ĥ�Ҥ�����
 �˵켰��`{\tt .cdf}'��ĥ�Ҥ���ä�netCDF�ե��������������.
 ���Υ��ץ����ϰ����ȤΥ���ѥ��ӥ�ƥ��Τ���˥��ݡ��Ȥ���Ƥ����
 ���Ǥ���.
\end{description}

%-----------------------------------------------------------------------
\section*{��}

CDL�ե�����`{\tt foo.cdl}'�ι�ʸ������å�����:
\begin{quote}
\begin{verbatim}
ncgen foo.cdl
\end{verbatim}
\end{quote}

CDL�ե�����`{\tt foo.cdl}'����,`{\tt bar.nc}'�Ȥ���̾���������ʥХ���
��ե�������������.
\begin{quote}
\begin{verbatim}
ncgen -o bar.nc foo.cdl
\end{verbatim}
\end{quote}

CDL�ե�����`{\tt foo.cdl}'����, �����ʥХ��ʥ�ե�������������뤿���
ɬ�פ�netCDF�ؿ��ƽФ���ޤ�C�ץ��������������:
\begin{quote}
\begin{verbatim}
ncgen -c foo.cdl > foo.c
\end{verbatim}
\end{quote}

%-----------------------------------------------------------------------
\section{ncdump}
\label{ncdump}

{\tt ncdump}�ġ����, netCDF�ե������CDL�ƥ�����ɽ����ɸ����Ϥ˽���
����; ���ץ�����, ������Υǡ������ѿ��ΰ����ޤ������Ƥ�������뤳��
��Ǥ���.
{\tt ncdump}�ν��Ϥ�, {\tt ncgen}�ؤ����ϤȤ��ƻȤ���褦�ˤʤäƤ���.
���ä�, {\tt ncdump}�����{\tt ncgen}��, �Х��ʥꤪ��ӥƥ�����ɽ����
�֤ǥǡ���ɽ�����Ѵ����뤿��������Ѵ��Ȥ��ƻȤ����Ȥ��Ǥ���.

{\tt ncdump}��, netCDF�ǡ����ե�����δ�ñ�ʱ������ʤȤ��ƻȤ����Ȥ���
��, netCDF�ե��������ȤˤĤ��ưʲ��Τ褦��ɽ�����Ǥ���:
����̾����ӥ�����; �ѿ�̾, ������ӷ�; °��̾�������; ����ӥ���
�����Ǥ��٤Ƥ��ѿ��ޤ������򤵤줿�ѿ�����.

{\tt ncdump}��, netCDF�ѿ��ǡ����γƷ��˻Ȥ���ǥե���ȤΥե����ޥ�
�Ȥ�������Ƥ��뤬, �����{\tt C\_format}°����netCDF�ѿ����Ф������
����Ƥ���о�񤭤����.
���ξ��, {\tt ncdump}��{\tt C\_format}°����Ȥä�, �����ѿ����ͤΥե���
�ޥåȤ�Ԥ�.
�㤨��, netCDF�ѿ�{\tt Z}���Ф�����ư�����ǡ�����ͭ������3������٤���
�ʤ����Ȥ�ʬ���äƤ���ʤ��, �����ѿ�°����Ȥ��Τ�Ŭ���Ǥ���.

{\tt ncdump}��, `{\tt \_}'��Ȥä�, �ѿ����Ф���{\tt \_FillValue}°��
(����Ϥޤ��񤫤�Ƥ��ʤ��ǡ�����ɽ�����뤿��Τ�ΤǤ���)���������ǡ�
���ͤ�ɽ��.
�⤷, �ѿ���{\tt \_FillValue}°������äƤ��ʤ����, �����ѿ������Ф�
��ǥե���ȤΥե����ͤ��Ȥ���; �����ѿ����Х��ȷ��Ǥʤ����.
\begin{quote}
\begin{verbatim}
Z:C_format = "%.3g"
\end{verbatim}
\end{quote}

{\tt ncdump}��UNIX�ǸƤӽФ�����ν񼰤�:
\begin{quote}
\begin{verbatim}
ncdump  [ -c | -h]  [-v �ѿ�1,...]  [-b ����]  [-f ����]
[-l Ĺ��]  [ -d float�η�[,double�η�] [ -n ̾��]  [���ϥե�����]
\end{verbatim}
\end{quote}
������,
\begin{description}
\item[`{\tt -c}'] ���Ƥμ���, �ѿ�, �����°���ͤ������, 
 {\tt ��ɸ}�ѿ�(�����ˤ�ʤäƤ����ѿ�)���ͤ�ɽ������.
 ��ɸ�ѿ��Ǥʤ��ѿ��Υǡ����ͤϽ��Ϥˤϴޤޤ�ʤ�.
 �����, netCDF�ե�����ι�¤�������Ȥ�ʷ�˸���Τ�
 �����Ƥ��Ǥ�Ŭ�������ץ����Ǥ���.

\item[`{\tt -h}'] {\bf �إå�}�ξ���Τߤ���Ϥ���, ���ʤ��,
 ���ϥե������netCDF����, �ѿ�, �����°��������Τߤ���Ϥ�,
 �ѿ��Υǡ����ͤϽ��Ϥ��ʤ�.
 ���Ϥ�, ��ɸ�ѿ����ͤ��ޤޤ�ʤ����Ȥ������, `{\tt -c}'���ץ����
 ��Ȥ��Τ�Ʊ���Ǥ���. (`{\tt -c}'�ޤ���`{\tt -h}'���ץ����Τɤ��餫
 �����������ꤷ�ƤϤʤ�ʤ�.)

\item[`{\tt -v �ѿ�1,...}'] ���٤Ƥμ���, �ѿ�, �����°��������˲ä�
��, ���ꤵ�줿�ѿ��Υǡ����ͤ����Ϥ˴ޤޤ��.
���Υ��ץ�����³���ƥ���ޤǶ��ڤä�̾���Υꥹ�Ȥ�Ϳ���뤳�Ȥˤ�ä�,
1�Ĥޤ��Ϥ���ʾ���ѿ�����ꤷ�ʤ���Фʤ�ʤ�.
���Υꥹ�Ȥϥ��ޥ�ɤؤ�ñ��ΰ����Ǥʤ���Фʤ�ʤ��Τ�, ����ޤ���¾
�ζ���ʸ����ޤ�뤳�ȤϤǤ��ʤ�.
̾���Ĥ��ѿ���, ���ϥե��������������netCDF�ѿ��Ǥʤ���Фʤ�ʤ�.
���Υ��ץ���󤪤��`{\tt -c}'�ޤ���`{\tt -h}'���ץ�������ꤷ�ʤ���
�ե���ȤǤ�, {\bf ���٤Ƥ�}�ѿ����Ф���ǡ����ͤ����Ϥ˴ޤޤ��.

\item[`{\tt -b ����}'] CDL������(`{\tt //}'�ǻϤޤ�ʸ��)�η�����
 �ʷ�����᤬, ���ϤΥǡ�������ˤ�����ǡ����γ�`��'���Ф��ƴޤޤ��
 �褦�ˤʤ�, ʣ���������ѿ����Ф���ǡ����ͤ��ǧ��������ˤʤ�.
 {\bf ����}��`{\tt C}'�ޤ���`{\tt c}'�ǻϤޤäƤ�����ˤ�, C����δ�
 �㤬�Ȥ���(0����Ȥ�������ǥå���, �Ǹ�μ�������������Ѥ��).
 {\bf ����}��`{\tt F}'�ޤ���`{\tt f}'�ǻϤޤäƤ�����ˤ�, FORTRAN��
 ��δ������Ȥ���(1����Ȥ�������ǥå���, �ǽ�μ��������������
 ���).
 �ɤ���ξ��ˤ����Ƥ�, �ǡ�����Ʊ�����֤�ɽ�������; ����Τߤ��ۤ�
 ��. ���Υ��ץ�����, ���̤�ʣ�������Υǡ������������Τ������ʥ���
 �����Ǥ���.

\item[`{\tt -f ����}'] CDL������(`{\tt //}'�ǻϤޤ�ʸ��)�η�����, 
 �ƥǡ�����(ʸ������θġ���ʸ���Ͻ�����)���Ф��봰�������᤬�ǡ�����
 �˴ޤޤ��褦�ˤʤ�.
 {\bf ����}��`{\tt C}'�ޤ���`{\tt c}'�ǻϤޤäƤ�����ˤ�, C����δ�
 �㤬�Ȥ���(0����Ȥ�������ǥå���, �Ǹ�μ�������������Ѥ��).
 {\bf ����}��`{\tt F}'�ޤ���`{\tt f}'�ǻϤޤäƤ�����ˤ�, FORTRAN��
 ��δ������Ȥ���(1����Ȥ�������ǥå���, �ǽ�μ��������������
 ���).
 �ɤ���ξ��ˤ����Ƥ�, �ǡ�����Ʊ�����֤�ɽ�������; ����Τߤ��ۤ�
 ��. ���Υ��ץ�����, �ǡ�����¾�Υե��륿���˥ѥ��פ���Τ������ʥ�
 �ץ����Ǥ���; �ʤ��ʤ�, �ƥǡ����ͤ��̡��ιԤ�ɽ������, �����˼���
 ����뤫��Ǥ���. (`{\tt -b}'�ޤ���`{\tt -f}'���ץ����Τɤ��餫
 �����������ꤷ�ƤϤʤ�ʤ�.)

\item[`{\tt -l Ĺ��}'] ʸ���Ǥʤ��ǡ����ͤΥꥹ�Ȥ�ե����ޥåȤ����
 �˻Ȥ���Ԥκ���Ĺ�Υǥե����(80)���ѹ�����.

\item[`{\tt -d float�η�[,double�η�]}'] {\tt C\_format}°��������ʤ�
 �ѿ����Ф�����ư�������ޤ��������٤Υǡ����ͤ�ɽ������Τ˻Ȥ���ͭ
 �������ο��Υǥե���Ȥ���ꤹ��.
 ��ư�������ǡ�����{\bf float�η�}��ͭ�����ɽ�������.
 {\bf double�η�}����ꤵ�줿���ˤ�, �������ͤϤ���ʬ��ͭ�����ɽ��
 �����.
 �ѿ���{\tt C\_format}°������äƤ�����ˤ�, ���ꤵ�줿���٤Ƥ���ư
 �������Υǥե���Ȥ���񤭤����.
 `{\tt -d}'���ץ���󤬻��ꤵ��ʤ����, ��ư����������������٥ǡ���
 ��, ���줾��ͭ����7�����15��ɽ�������.
 �⤷, ����㤤���٤���ɬ�פʤ��ʤ�, CDL�ե�����Ϥ�꾮�����Ǥ���.
 ��ư����������������٤����٤�ξ�������ꤵ������, ����2�Ĥ��ͤ�
 ���ޥ�ɤ��Ф���ñ��ΰ����Ȥʤ�褦�˥����(����Ϥʤ�)�Ƕ��ڤä�Ϳ
 ���ͤФʤ�ʤ�.

\item[`{\tt -n ̾��}'] CDL�Ǥ�, `{\tt ncgen -b}'�ǥǥե���Ȥ�netCDF�ե�
 ����̾����������ݤ˻Ȥ������, netCDF�ǡ������åȤ�̾����ɬ�פǤ���.
 �ǥե���ȤǤ�, {\tt ncdump}������netCDF�ե������̾���κǸ������
 ���Ǥ�դγ�ĥ�Ҥ����������Τ��餳��̾����������.
 �ۤʤ�̾������ꤹ�뤿��ˤ�`{\tt -n}'���ץ�����Ȥ�.
 `{\tt ncgen -b}'�ǻȤ�����ϥե�����̾����ꤹ�뤳�ȤϤǤ��뤬,
 {\tt ncdump}��Ȥä����������CDL�ե�������Խ���, �����
 `{\tt ncgen -b}'��ȤäƤ����Խ�����CDL�ե����뤫�鿷����netCDF�ե���
 ������������ꤹ��ݤ�, ���ä���ȵ��Ť�netCDF�ե�������񤭤��Ƥ�
 �ޤ��Τ��򤱤뤿���, {\tt ncdump}��Ȥäƥǥե���Ȥ�̾�����ѹ�����
 �����Τ������Ǥ���.
\end{description}


%-----------------------------------------------------------------------
\section*{��}

netCDL�ե�����`{\tt foo.nc}'��Υǡ�����¤�򸫤�:
\begin{quote}
\begin{verbatim}
ncdump -c foo.nc
\end{verbatim}
\end{quote}

����Τ����C��������Υ���ǥå����Ť���Ȥä�,
netCDL�ե�����`{\tt foo.nc}'��ι�¤����ӥǡ�����CDL�Ǥ�
����Ĥ�����������.
\begin{quote}
\begin{verbatim}
ncdump -b c foo.nc > foo.cdl
\end{verbatim}
\end{quote}

netCDL�ե�����`{\tt foo.nc}'�����ѿ�{\tt uwind}�����{\tt vwind}�Τߤ�
�Ф���ǡ�������Ϥ�, ��ư�������ǡ�����ͭ������3����������٤�ɽ����
��:
\begin{quote}
\begin{verbatim}
ncdump -v uwind,vwind -d 3 foo.nc
\end{verbatim}
\end{quote}

����ǥå����Ť���FORTRAN�δ�����Ȥä�, �ѿ�{\tt omega}���Ф���ǡ���
�δ���������Ĥ�(1�ԤˤĤ�1�ĤΥǡ���)�Υꥹ�Ȥ�������,
���������CDL�ե��������netCDF�ǡ������å�̾��{\tt omega}���ѹ�����.
\begin{quote}
\begin{verbatim}
ncdump -v omega -f fortran -n omega foo.nc > Z.cdl
\end{verbatim}
\end{quote}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{�褯�������ؤ���}
\label{�褯�������ؤ���}

���ξϤǤ�, netCDF�ˤĤ��ƺǤ�褯�������Τ����Τ����Ĥ��ؤ������
�Ƥ���. netCDF�ˤĤ��ƤΤ�����Ū�Ǻǿ���FAQʸ���, 
\begin{quote}
`{\tt http://www.unidata.ucar.edu/packages/netcdf/faq.html}'
\end{quote}
�˰ݻ�����Ƥ���.

%-----------------------------------------------------------------------
\section*{netCDF�Ȥ�?}

netCDF(network Common Data Form)������ظ��Υǡ������������Τ���Υ���
�����ե�����, ����Ӥ��Υ��󥿡��ե������μ�����Ϳ����C, FORTRAN, C++
���եȥ������饤�֥��μ���ʪ��, ������̵�������ۤ����.
netCDF���եȥ�������Colorado��Boulder�ˤ���Unidata Program Center��
Glenn Davis, Russ Rew, �����Steve Emmerson�ˤ�äƳ�ȯ����, 
¾��netCDF�桼������ι׸��ˤ�ä��������줿.
netCDF�饤�֥��������ɽ�����뤿��ε�����Ω�Υե����ޥåȤ��������
����.
Ʊ����, ���Υ��󥿡��ե�����, �饤�֥�ꤪ��ӥե����ޥåȤ�, �������
��, ��������, ����Ӷ�ͭ, �򥵥ݡ��Ȥ��Ƥ���.

netCDF�ǡ�����:
\begin{itemize}
\item ���ʵ���Ū�Ǥ���. netCDF�ե�����Ϥ�����ȤΥǡ����ˤĤ��Ƥξ���
 ��ޤ�Ǥ���.
\item �ͥåȥ��Ʃ��Ǥ���. netCDF�ե������, ����, ʸ��, �������ư
 ����������ۤʤ�����ǳ�Ǽ���륳��ԥ塼�����Ǥ⥢�������Ǥ��������ɽ
 ������Ƥ���.
\item ľ�ܥ��������Ǥ���. �礭�ʥǡ������åȤξ�������ʬ����˸�ΨŪ��
 ���������Ǥ���; �ǽ�ˤ������Τ��٤ƤΥǡ������ɤ߹�����ꤹ�뤳�Ȥ�
 ����.
\item �ɲä��Ǥ���. 1�Ĥμ����˱�ä�netCDF�ǡ������åȤ˥ǡ������ɲ�
 ���뤳�Ȥ��Ǥ���; ���Υǡ����򥳥ԡ�������, ��¤�����������ꤹ�뤳
 �Ȥʤ���.
 netCDF�ǡ������åȤι�¤���ѹ��Ǥ���; ���ξ��, �ǡ������åȤΥ��ԡ�
 ������������Ƥ��ޤ����Ȥ⤢�뤬.
\item ��ͭ�Ǥ���. 1�Ĥν񤭹��ߤ����ʣ�����ɤ߹��ߤ�Ʊ���netCDF�ե�
 �����Ʊ���˥��������Ǥ���.
\end{itemize}

%-----------------------------------------------------------------------
\section*{netCDF���եȥ������ѥå������ϤɤΤ褦�˼����Ǥ��뤫?}

���ۤ���Ƥ��륽������, �ʲ��Υǥ��쥯�ȥ꤫�饢�Υ˥ޥ�FTP�Ǽ����Ǥ�
��:
\begin{quote}
`{\tt ftp://ftp.unidata.ucar.edu/pub/netcdf/}'
\end{quote}

���Υǥ��쥯�ȥ�ˤ�, �ʲ��Υե����뤬�ޤޤ�Ƥ���:
\begin{description}
\item[{\tt netcdf.tar.Z}] ����Ū�ʺǿ��ǤΥ����������ɤ�tar�ե������
 ���̤������.
\item[{\tt netcdf-beta.tar.Z}] ���ߤΥ١����ƥ�����.
\end{description}
�����Ĥ��Υץ�åȥե�����Τ���ΥХ��ʥ����ۤϰʲ��Υǥ��쥯�ȥ꤫��
�����Ǥ���:
\begin{quote}
`{\tt ftp://ftp.unidata.ucar.edu/pub/binary/}'
\end{quote}

perl���󥿡��ե������Υ�������, �̤Υѥå������Ȥ��ưʲ��Υǥ��쥯�ȥ�
���饢�Υ˥ޥ�FTP�Ǽ����Ǥ���:
\begin{quote}
`{\tt ftp://ftp.unidata.ucar.edu/pub/netcdf-perl/}'
\end{quote}

%-----------------------------------------------------------------------
\section*{World Wide Web���netCDF�ξ���˥��������Ǥ��뤫?}

�Ϥ�. netCDF�桼�����������ɤΥϥ��ѡ��ƥ������Ǥ����netCDF�ˤĤ���
��¾�ξ���, ����ˤ���FAQʸ�Ϥκǿ��Ǥ�, �ʲ���������Ǥ���:
\begin{quote}
`{\tt http://www.unidata.ucar.edu/packages/netcdf}'
\end{quote}

%-----------------------------------------------------------------------
\section*{�������Ǥ��鲿���Ѥ�ä���?}

2.4�Ǥ�, �������ץ�åȥե�����Υ��ݡ��Ȥ���Ӱ������饵�ݡ��Ȥ����
�����ץ�åȥե�����κǿ��Ǥ��ȹ���, Cray/UNICOS�Τ���ο�������Ŭ��
��Ϳ��, ��𤵤�Ƥ����Х�������, ʸ�Ϥ���ɤ�, ����˥��󥹥ȡ����
����ñ�ˤ���. ���ܺ٤ˤĤ��Ƥ�, �ʲ��򻲾�:
\begin{quote}
`{\tt http://www.unidata.ucar.edu/packages/netcdf/release-notes.html}'
\end{quote}

%-----------------------------------------------------------------------
\section*{netCDF�ˤĤ��Ƥε�������Ӽ���Τ���Υᥤ��󥰥ꥹ�Ȥ�
����ޤ���?}

�Ϥ�. ���Υᥤ��󥰥ꥹ��, ����Ӥɤ������黲��/æ�ब�Ǥ��뤫��
�Ĥ��Ƥξ���ˤĤ��Ƥ�,
\begin{quote}
\begin{verbatim}
majordomo@unidata.ucar.edu
\end{verbatim}
\end{quote}
�˥��֥������Ȥʤ�����ʸ�˰ʲ��ιԤ�
�񤤤���å�����������줿��:
\begin{quote}
\begin{verbatim}
info netcdfgroup
\end{verbatim}
\end{quote}

%-----------------------------------------------------------------------
\section*{¾��ï��netCDF��ȤäƤ��ޤ���?}

netCDF�ᥤ��󥰥ꥹ�Ȥ�15�ι�ˤ錄��500���Υ��ɥ쥹����äƤ���(����
�����Τ����Ĥ��Ϥ��¿���Υ��ɥ쥹�ؤΥ����ꥢ���Ǥ���).
¿���Υ��롼�פ�netCDF�򤤤��Ĥ��η���������ظ��ǡ�����ɽ������ɸ���
ˡ�Ȥ��ƺ��Ѥ��Ƥ���; ������ˤ�, �絤�ʳ�, ������, ���γ�, �Ķ���ǥ�
��, �ϵ�ʪ����, �����ޥȥ���ե�, ����ʬ����, ����ӥ˥塼�����᡼��
��, ���ޤޤ�Ƥ���.

netCDF��ȤäƤ���ץ��������Ȥ���ӥ��롼�פΤ����Ĥ��ˤĤ��Ƥε��Ҥ�,
�ʲ���������Ǥ���:
\begin{quote}
`{\tt http://www.unidata.ucar.edu/packages/netcdf/usage.html}'
\end{quote}

%-----------------------------------------------------------------------
\section*{netCDF�ե������ʪ��Ū�ʥե����ޥåȤϤɤΤ褦�ʤ�ΤǤ�
��?}

9��[netCDF�ե����빽¤�������ǽ]\pageref{netCDF�ե����빽¤�������ǽ}
�ڡ����򻲾Ȥ��줿��.
�����Ǥ�, netCDF�ǡ�����ʪ��Ū��¤���������Ƥ���, ����������, �ۤʤä�
�ǡ�����������ǽ�δޤߤ�����ˤ���Τ˽�ʬ�ʥ�٥�Ǥ���.
�ե�����ե����ޥåȤξܺ٤ʻ���ˤĤ��Ƥ�, 
Appendix B[�ե�����ե����ޥåȻ���]\pageref{�ե�����ե����ޥåȻ���}
�ڡ����򻲾Ȥ��줿��.

netCDF�ǡ����˥�����������ץ�������, ���٤ƤΥ���������ʸ�񲽤��줿
���󥿡��ե��������̤��Ƽ¹Ԥ���٤��Ǥ���, netCDF�ǡ�����ʪ���ե����ޥ�
�Ȥ˰�¸���٤��ǤϤʤ�.
�������뤳�Ȥˤ��, ���Ȥ�����, ���Υե����ޥåȤ��ѹ�����Ƥ�, �ץ���
�����ѹ���ɬ�פϤʤ��ʤ�; �ʤ��ʤ�, ���Τ褦���ѹ��κݤˤϥ饤�֥��
���ѹ�����, ���Ǥ���ӿ��Ǥ�ξ���Υե����ޥåȤ����ݡ��Ȥ���뤫��Ǥ�
��.

%-----------------------------------------------------------------------
\section*{netCDF�Ϥɤ���ư��Ƥ��뤫?}

netCDF�θ��ߤ��Ǥ�, �ʲ��Υץ�åȥե������ǥƥ��Ȥ���, ���ޤ����ä�
����:
\begin{itemize}
\item AIX-4.1
\item HPUX-9.05
\item IRIX-5.3
\item IRIX64-6.1
\item MSDOS (gcc, f2c, �����GNU make��Ȥ�)
\item OSF1-3.2
\item OpenVMS-6.2
\item OS/2 2.1
\item SUNOS-4.1.4
\item SUNOS-5.5
\item ULTRIX-4.5
\item UNICOS-8
\item Windows NT-3.51
\end{itemize}

%-----------------------------------------------------------------------
\section*{netCDF�ǡ������Ф���, ¾�ˤɤ�ʥ��եȥ��������Ȥ��뤫?}

Unidata�������ۤ���Ƥ��븽�ߤ�netCDF�Ǽ�����ǽ�ʥ桼�ƥ���ƥ���,
netCDF�ե��������ɤ�ASCII�������Ѵ�����{\tt ncdump}, �����
���ɤ�ASCII��������Х��ʥ��netCDF�ե�����, �ޤ��Ϥ���netCDF�ե�
�������������C�ޤ���FORTRAN�ץ������, ���᤹{\tt ncgen}�Ǥ���.

¿���ξ��Ѥޤ���̵���β��Ϥ���ӥǡ����Ļ벽�ѥå�������netCDF�ǡ�����
��������Ŭ�����Ƥ���.
�����Υѥå����������, netCDF�ǡ���������ޤ���ɽ�����뤿��˻Ȥ���
¾�Υ��եȥ�����, �ˤĤ��ƤΤ��¿���ξ����, �ʲ���������Ǥ���:
\begin{quote}
`{\tt http://www.unidata.ucar.edu/packages/netcdf/software.html}'
\end{quote}

%-----------------------------------------------------------------------
\section*{����ظ��Υǡ����ˤ�, ¾�ˤɤ�ʥե����ޥåȤ��Ȥ��뤫?}

{\bf �ʳإǡ����ե����ޥåȾ���FAQ}���ʲ���������Ǥ���:
\begin{quote}
`{\tt http://www.cis.ohio-state.edu/hypertext/faq/usenet/sci-data-formats/faq.html}'
\end{quote}
�����Ǥ�, ¾�Υ����������󥿡��ե����������, CDF��HDF��ޤ�����ظ��ǡ�
���Τ���Υե����ޥå�, �ˤĤ��ƾܽҤ���Ƥ���.

%-----------------------------------------------------------------------
\section*{�ʤ�netCDF�ƽФ���, ���顼ɸ�����֤������ñ�˽�λ����
���ޤ��Τ�?}

���٤Ƥ�netCDF�ؿ��Υǥե���ȤΥ��顼������ư���, ���顼������Ƚ�λ
���Ƥ��ޤ��Ȥ�����ΤǤ��뤬, ����ư��ϥץ�����ޤ�����ȥ�����Ǥ���.
���顼����̿��, �����netCDF�饤�֥��ƽФ��Ǹ��Ф���륨�顼����Υ��
��������ɽ��, ����Ω�˥���ȥ�����Ǥ���.
���¿���ξ���ˤĤ��Ƥ�, \ref{���顼����}��[���顼����]\pageref{���顼
����}�ڡ����򻲾�.

%-----------------------------------------------------------------------
\section*{�Х����Ϥɤ�������褤�Ǥ���?}

�⤷�Х��򸫤Ĥ�����, {\tt support@unidata.ucar.edu}���������äƲ�
����.
�����, netCDF�ˤĤ��Ƥμ���ޤ��ϵ����Τ���˻Ȥ��Ƥ��륢�ɥ쥹�Ǥ�
����. ����ޤ��ϵ�����{\tt netcdfgroup}�ᥤ��󥰥ꥹ�����Τ����뤳��
��Ŭ���ǤϤʤ�.

%-----------------------------------------------------------------------
\section*{������������Ϥɤ������鸡���Ǥ��ޤ���?}

netCDF�ۡ���ڡ����ΰ��ֲ��˸����ե����ब����, Unidata���ݡ��ȥ�����
�դˤ�ä��󶡤���Ƥ��륵�ݡ��Ȥμ��䤪��Ӳ����ˤĤ���, �����ʥƥ�����
�������Ǥ���褦�ˤʤäƤ���.

%-----------------------------------------------------------------------
\section*{C++���󥿡��ե�������C���󥿡��ե������Ȥɤ��㤤�ޤ���?}

C++�Υ��󥿡��ե�������C���󥿡��ե������Τ��٤Ƥε�ǽ���󶡤��Ƥ���
({\tt ncvarputg}�����{\tt ncvargetg}�ˤ�������ʬŪ�˥���ץ뤵�줿, 
�ޤ��ϥޥåפ��줿���󥢥����������), {\tt void*}�ݥ��󥿤λ��Ѥ���
�Ʒ��ΰ������������, C���󥿡��ե��������⤤���餫��ñ�˻Ȥ���褦
�ˤʤäƤ���.
C++���󥿡��ե�������Ȥ���, netCDF���Ǥ�ID�����פˤʤ�, °����������
��ݤ˷��λ��꤬���פˤʤ�, ����˼�������ľ��Ū�˰������Ȥ��Ǥ���.
������, C++���󥿡��ե�������C���󥿡��ե������������Ϥ��Ƥ��餺, ��
�Ĥ���ۤɹ����Ȥ��Ƥ��ʤ�. �����, C++���󥿡��ե�������ʸ�Ϥ�, 
netCDF�ǡ�����ǥ뤪���C���󥿡��ե������˴���Ƥ��뤳�Ȥ�����Ȥ���
����, ���ޤ깭�Ϥʤ�ΤǤϤʤ�. 

%-----------------------------------------------------------------------
\section*{FORTRAN���󥿡��ե�������C���󥿡��ե������Ȥɤ��㤤�ޤ���?}

FORTRAN���󥿡��ե�������C���󥿡��ե������Τ��٤Ƥε�ǽ���󶡤��Ƥ�
��. FORTRAN���󥿡��ե�������, ����Υ���ǥå���, ź���ν���, �����
ʸ������Ф���FORTRAN�δ�����ȤäƤ���.
�ۤʤ���쥤�󥿡��ե���������񤫤줿�ǡ����ˤĤ���, �ǥ�������Υե���
�ޥåȤΰ㤤�Ϥʤ�.
C����ǽ񤫤줿�ǡ�����FORTRAN�ץ�����फ���ɤळ�Ȥ��Ǥ�, �դ��ǽ��
����.

%-----------------------------------------------------------------------
\section*{Perl���󥿡��ե�������C���󥿡��ե������Ȥɤ��㤤�ޤ���?}

Perl���󥿡��ե�������C���󥿡��ե������Τ��٤Ƥε�ǽ���󶡤��Ƥ���. 
Perl���󥿡��ե�������, ���󤪤��ʸ������Ф���Perl�δ�����ȤäƤ���.
�ۤʤ���쥤�󥿡��ե���������񤫤줿�ǡ����ˤĤ���, �ǥ�������Υե���
�ޥåȤΰ㤤�Ϥʤ�.
C����ǽ񤫤줿�ǡ�����Perl�ץ�����फ���ɤळ�Ȥ��Ǥ�, �դ��ǽ�Ǥ�
��.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\appendix
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{ñ��}
\label{ñ��}

Unidata Program Center��, �ե����ޥåȤ��줿����ӥХ��ʥ����ñ��
�֤��Ѵ���Ԥ�, ���ĥХ��ʥ�����ˤ�����ñ�̤�����黻��Ԥ�
ñ�̥饤�֥���ȯ���Ƥ���. 
ñ�̥饤�֥��ϼ��ʴ���Ū�Ǥ���, �����netCDF�饤�֥��Ȥδ֤ˤϰ�¸
�ط��Ϥʤ���, ����Ǥ�, ���Υ饤�֥��ϰ���Ū��netCDF�ץ��������
�ݤ�ͭ�ѤǤ���ΤǼ������뤳�Ȥ򴫤��.
���Υ饤�֥�ꤪ��Ӵ�Ϣʸ���,
`{\tt http://www.unidata.ucar.edu/packages/udunits/}'
��������Ǥ���.

�ʲ���, Unidatañ�̥饤�֥��δؿ�{\tt utScan()}�ǲ��Ǥ���ñ�̤�ʸ
�������Ǥ���:
\begin{quote}
\baselineskip=\vs
\begin{verbatim}
10 kilogram.meters/seconds2
10 kg-m/sec2
10 kg m/s^2
10 kilogram meter second-2
(PI radian)2
degF
100rpm
geopotential meters
33 feet water
milliseconds since 1992-12-31 12:34:0.1 -7:00
\end{verbatim}
\end{quote}

ñ�̤�, ñ��̾��Ǥ�դ�����沤�Ǥ�դ������ݤ�����ΤȤ��ƻ��ꤵ���.
��껻�ϥ���å���`{\tt /}'��ɽ�����.
�軻��, ����, �ԥꥪ��`{\tt .}', �ޤ��ϥϥ��ե�`{\tt -}'��ɽ�����.
沾��, ������ź��, �ޤ���沾�黻��`\verb-^-'
�����`{\tt **}'�ˤ�ä�ɽ�����.
���롼��ʬ����������Ʋ��Τ���˳�̤��Ѥ��Ƥ�褤.
�Ǹ����Υ����ॹ����פ����̤ʾ��Ȥ��ư�����.

Ǥ�դΥ���쥪�Ѵ�(���ʤ��, $y=ax+b$)��������Ƥ���.
�ä�, ���٤��Ѵ���������������.
�ʲ��λ���:
\begin{quote}
\begin{verbatim}
degF @ 32
\end{verbatim}
\end{quote}
��, ������ڻ�32��ʬ���ե�(���ʤ��, �ݻ�0��)�����ڻ�������ؤ�.
���ä�, �ݻ�������, �ʲ���ñ�̤�������:
\begin{quote}
\begin{verbatim}
1.8 degF @ 32
\end{verbatim}
\end{quote}

������ư�黻�Ͼ軻���ͥ�褵��뤳�Ȥ�����.
�黻��ͥ���̤�(���̤����̤�),
����, �軻, ������ư, 沾�, �ν�Ǥ���.

{\tt utScan()}�Ϥ��٤Ƥ�SI��Ƭ��(�㤨��, ``mega''�����``milli'')����
�Ӥ��Τ�����û�̷�(�㤨��, ``M''�����``m'')

�ؿ�{\tt utPrint()}�Ͼ��, ñ�̻�����դ˥����ɲ�����.
�ְ㤤�򸺤餹�����,, ���Υ����ɲ����������ǥե���ȤȤ��ƻȤ�����
�򴫤��.
����ñ�̤϶���Ƕ��ڤ��, Ǥ�դλؿ����б�����ñ�̤�ľ���ղä����.
�����ϰʲ��Τ褦�˥����ɲ������:
\begin{quote}\baselineskip=\vs
\begin{verbatim}
10 kilogram meter second-2
9.8696044 radian2
0.555556 kelvin @ 255.372
10.471976 radian second-1
9.80665 meter2 second-2
98636.5 kilogram meter-1 second-2
0.001 seconds since 1992-12-31 19:34:0.1000 UTC
\end{verbatim}
\end{quote}

(�ڻ�ñ�̤ϸ���255.372kelvin�����ʬ�����к��Ȥ��ƥ����ɲ�����Ƥ���,
�Ǹ����ˤ���������, UTC���Ѵ�����Ƥ��뤳�Ȥ�����.)

ñ�̥饤�֥��Τ���Υǡ����١�����, ñ�������ޤ�ե����ޥåȤ��줿
�ե�����Ǥ���, ���Υѥå��������������뤿��˻Ȥ���.
������̾���ȵ�����դ��뤿���, �ޤ����������Ȥ����.

����ñ�̥ե�����Υե����ޥåȤ�����������������, ɬ�פʤ��, ���Υե�
����ϥ桼���������Ǥ���.
�ä�, �ղ�Ū��ñ�̤��������ϴ�ñ���ɲäǤ���(��¸��ñ�̤ޤ��������
�ۤʤ��֤��ޤ�).

{\tt utScan()}����ʸ����ʸ������̤���.
�⤷����ǻپ㤬����ʤ�, ñ�̥ե������Ŭ���ʹ��ܤ��ɲä��Ƥ�褤.

�ǥե���Ȥ�ñ�̥ե�����ˤ�����ñ��û�̷���, ľ����ȿ���뤳�Ȥ⤢��.
�ä�, �ʲ������դ��줿��:
\begin{quote}\baselineskip=\vs
\begin{verbatim}
For       Use               Not     Which Instead Means

Celsius   `Celsius'         `C'     coulomb
gram      `gram'            `g'     <standard free fall>
gallon    `gallon'          `gal'   <acceleration>
radian    `radian'          `rad'   <absorbed dose>
Newton    `newton' or `N'   `nt'    nit (unit of photometry)
\end{verbatim}
\end{quote}

����ñ�̥饤�֥��ˤĤ��ƤΤ���ʤ����ˤĤ��Ƥ�, �����Ǥ���°�Υޥ˥�
����ڡ����򻲾Ȥ��줿��.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{�ե�����ե����ޥåȻ���}
\label{�ե�����ե����ޥåȻ���}

����appendix�Ǥ�netCDF�ե�����ե����ޥåȥС������1�λ��ͤ�Ҥ٤�.
���Υե����ޥåȤ�, ���ʤ��Ȥ�netCDF�饤�֥��С������3.0�ޤǤϻȤ�
���ͽ��Ǥ���.

���Υե����ޥåȤ�, BNFʸˡɽ����������ɽ�������.
����ʸˡ�Ǥ�, ���ץ��������Ǥϳ��(`{\tt [}'��`{\tt ]}')�ǰϤޤ��
����.
`{\tt //}'�ʲ�������Ǥ���.
ü����Ǥʤ���ΤϾ�ʸ����, ü�������ʸ����ɽ������Ƥ���.
0�ޤ��Ϥ���ʾ�ι��ܤ��¤٤����, 
`{\tt [entity ...]}'��ɽ�������.

%-----------------------------------------------------------------------
\section*{�ե�����ե����ޥåȻ���}

\begin{quote}\baselineskip=\vs
\begin{verbatim}
netcdf_file := header  data

header  := magic  numrecs  dim_array  gatt_array  var_array

magic   := 'C'  'D'  'F'  VERSION_BYTE

VERSION_BYTE := '\001'    // �ե�����ե����ޥåȤΥС�������

numrecs    := NON_NEG

dim_array  :=  ABSENT | NC_DIMENSION  nelems  [dim ...]

gatt_array :=  att_array  // �������Х�°��

att_array  :=  ABSENT | NC_ATTRIBUTE  nelems  [attr ...]

var_array  :=  ABSENT | NC_VARIABLE   nelems  [var ...]

ABSENT  := ZERO  ZERO     // ����̵�����Ȥ��̣����(nelems == 0��Ʊ��).

nelems  := NON_NEG        // �ʲ����¤����Ǥο�

dim     := name  dim_size

name    := string

dim_size := NON_NEG       // �⤷0�ʤ�, ����ϵ�Ͽ�����Ǥ���. 
                          // ��Ͽ������1�ĤޤǤǤ���.

attr    := name  nc_type  nelems  [values]

nc_type := NC_BYTE | NC_CHAR | NC_SHORT | NC_LONG | NC_FLOAT | NC_DOUBLE

var     := name  nelems  [dimid ...]  vatt_array  nc_type  vsize  begin
                          // nelems���ѿ��Υ��(������)�Ǥ���.
                          // �����顼�ʤ�0, �٥��ȥ�ʤ�1, ����ʤ�2, ...

vatt_array :=  att_array  // �ѿ������ꤷ��°��

dimid   := NON_NEG        // �ѿ������Τ���μ���ID(dim_array�ؤΥ���ǥå���).
                          // �⤷�ǽ�μ���(�Τ�)����Ͽ�����ʤ��, 
                          // ����ϵ�Ͽ�ѿ��ȸƤФ��.

vsize    := NON_NEG       // �ѿ�������. ��Ͽ�ѿ��Ǥʤ�����, �����ѿ��ǡ���
                          // �˳�����Ƥ���Х���ñ�̤Υ��ڡ������̤Ǥ���.
                          // ���ο���, �������������Ѥ˷��Υ�������ݤ�����Τ�
                          // 4�Х��Ȥζ����˹礻�Ƶͤ�������ΤǤ���.
                          // �⤷��Ͽ�ѿ��ʤ�, ����ϳƵ�Ͽ������Υ��ڡ�������
                          // �Ǥ���. netCDF"��Ͽ������"�ϵ�Ͽ�ѿ���vsize���¤�
                          // ���Ʒ׻������.

begin   := NON_NEG        // �ѿ��Υ������Ȱ���. �����ѿ��ǡ�������Ƭ��
                          // �ե�������ˤ�����Х���ñ�̤Υ��ե��å�.

data    := non_recs  recs

non_recs := [values ...]  // ��Ͽ�ѿ��Ǥʤ��ǽ���ѿ�, 2���ܤ��ѿ�, ... �Υǡ���

recs    := [rec ...]      // �ǽ�ε�Ͽ, 2���ܤε�Ͽ, ...

rec     := [values ...]   // ��Ͽn���Ф���ǽ�ε�Ͽ�ѿ�, ��Ͽn���Ф���2���ܤ�
                          // ��Ͽ�ѿ�, ... �Υǡ���.
                          // ���̤ξ��ˤĤ��Ƥϰʲ������դ򻲾�.

values  := [bytes] | [chars] | [shorts] | [ints] | [floats] | [doubles]

string  := nelems  [chars]

bytes   := [BYTE ...]  padding

chars   := [CHAR ...]  padding

shorts  := [SHORT ...]  padding

ints    := [INT ...]

floats  := [FLOAT ...]

doubles := [DOUBLE ...]

padding := <����4�Х��ȶ����ޤǤ�0, 1, 2, �ޤ���3�Х���>
                          // �إå��Ǥ�, �ͤ����Τ�0�ΥХ��ȤǤ���.
                          // �ǡ����Ǥ�, �ͤ����Τ��ѿ��Υե����ͤǤ���.

NON_NEG := <������ͤ��������>

ZERO    := <0���ͤ��������>

BYTE    := <8�ӥå�byte>

CHAR    := <8�ӥå�ACSII/ISO�ǥ����ɲ����줿character>

SHORT   := <16�ӥå����Ĥ�, �ӥå�����ǥ�����, 2�����ɽ��>

INT     := <32�ӥå����Ĥ�, �ӥå�����ǥ�����, 2�����ɽ��>

FLOAT   := <32�ӥå�IEEEñ������ư������, �ӥå�����ǥ�����>

DOUBLE  := <64�ӥå�IEEEñ������ư������, �ӥå�����ǥ�����>

// ������32�ӥå������Ǥ���.
NC_BYTE      := 1         // �ǡ�����8�ӥåȤ����Ĥ�����������
NC_CHAR      := 2         // �ǡ�����ʸ��������, ���ʤ���ƥ�����
NC_SHORT     := 3         // �ǡ�����16�ӥåȤ����Ĥ�����������
NC_LONG      := 4         // �ǡ�����32�ӥåȤ����Ĥ�����������
NC_FLOAT     := 5         // �ǡ�����IEEE���Ĥ���ñ������ư������������
NC_DOUBLE    := 6         // �ǡ�����IEEE���Ĥ�����������ư������������
NC_DIMENSION := 10
NC_VARIABLE  := 11
NC_ATTRIBUTE := 12
\end{verbatim}
\end{quote}

%-----------------------------------------------------------------------
\section*{�ե����륪�ե��åȤη׻�}

���ꤵ�줿�ǡ����ͤΥ��ե��å�(�ե�������ΰ���)��׻����뤿���,
���ꤵ�줿�ѿ����Ф���Ŭ���ʷ��Υǡ�����1�Ĥγ���������(�Х���ñ��)��
{\it external\_sizeof}�Ȥ���.
��{\it nc\_type}���Ф���{\it external\_sizeof}�ϰʲ��Τ褦�Ǥ���:
\begin{quote}\baselineskip=\vs
\begin{verbatim}
NC_BYTE         1
NC_CHAR         1
NC_SHORT        2
NC_LONG         4
NC_FLOAT        4
NC_DOUBLE       8
\end{verbatim}
\end{quote}

open() (�ޤ��� endef() )�ˤ����Ƥ�, �ޤ���ä�{\it var\_array}�Ǽ����줿
�ѿ����¤Ӥ�Ĵ�٤��, {\it recsize}��׻����뤿���, ``��Ͽ''�ѿ���
{\it vsize}���פ���.

�ѿ��μ������������Ѥ򱦤��麸�ˤȤäƤ���, ��Ͽ�ѿ����Ф��ƤϺǤ⺸��
(��Ͽ)�����ϤȤФ���, ���η�̤���ѿ��ˤĤ���{\it product}����˳�Ǽ����.
�㤨��:
\begin{quote}\baselineskip=\vs
\begin{verbatim}
��Ͽ�ѿ�:
        dimension sizes:        [  5  3  2 7]
        product:                [210 42 14 7]

��Ͽ�ѿ�:
        dimension sizes:        [0  2  9 4]
        product:                [0 72 36 4]
\end{verbatim}
\end{quote}

�����ʳ��ˤ�����, �Ǥ⺸���Ѥ򼡤�4���ܿ��˴ݤ᤿��Τ��ѿ�������,
���ʤ��, ���ʸˡ�ˤ�����{\it vsize}�Ǥ���.
�㤨��, �嵭����Ͽ�ѿ����Ф��Ƥ�, {\it vsize}�ե�����ɤ��ͤ�212
(210��4���ܿ��˴ݤ᤿���)�Ǥ���.
��Ͽ�ѿ����Ф��Ƥ�, {\it vsize}���ͤϤ��礦��72�Ǥ���. �ʤ��ʤ�, ����
�Ϥ��Ǥ�4���ܿ��Ǥ��뤫��Ǥ���.

����ǡ����ͤκ�ɸ�������{\it coord}�Ȥ�, �����̤�{\it offset}
�Ȥ���.
���ΤȤ�, {\it offset}��ñ��, �����ѿ��κǽ�Υǡ����ͤΥ��ե��å�(����
�ѿ���{\it begin}�ե������)��, {\it coord}�����{\it product}�٥��ȥ�
�����Ѥ��ѿ��γƥǡ����Υ�����(�Х���ñ��)�ܤ�����Τ�ä�����Τˤʤ�.
�Ǹ��, �ѿ�����Ͽ�ѿ��Ǥ�����ˤ�, ��Ͽ��(`{\tt coord[0]}')�ȵ�Ͽ��
����({\it recsize})���Ѥ��ä����, ���줬�ǽ�Ū��{\it offset}�ͤˤʤ�.

{\it offset}��׻�����CŪ�ʥ����ɤϰʲ��Τ褦�ˤʤ�:
\begin{quote}\baselineskip=\vs
\begin{verbatim}
for (innerProduct = i = 0; i < var.rank; i++)
        innerProduct += product[i] * coord[i]
offset = var.begin;
offset += external_sizeof * innerProduct
if(IS_RECVAR(var))
        offset += coord[0] * recsize;
\end{verbatim}
\end{quote}
������, (����ɽ����)�ǡ����ͤ��������ˤ�,
\begin{quote}\baselineskip=\vs
\begin{verbatim}
lseek(fd, offset, SEEK_SET);
read(fd, buf, external_sizeof);
\end{verbatim}
\end{quote}

{\bf ���̤ʾ��}: ��Ͽ�ѿ���1�Ĥ����ʤ����ˤ�, �Ƶ�Ͽ��4�Х��ȶ�����
��äƤ��ʤ���Фʤ�ʤ��Ȥ�������̵���Τ�, ���ξ��ϵ�Ͽ�εͤ����
�ϹԤ��ʤ�.


%-----------------------------------------------------------------------
\section*{��}

���ʸˡ��Ȥ���, ����, �ѿ�, °���������, ���äƥǡ���������ʤ�����
��netCDF�ե�����ǺǤ⾮������Τ�Ƴ�����.
���ζ���netCDF�ե������CDLɽ���ϰʲ��Τ褦�ˤʤ�.
\begin{quote}\baselineskip=\vs
\begin{verbatim}
netcdf empty { }
\end{verbatim}
\end{quote}

���ζ�netCDF�ե������32�Х��Ȥ��礭��������, �����
`{\tt ncgen -b empty.cdl}'��Ȥä�, CDLɽ�������netCDF�ե����������
���Ƴ�ǧ���뤳�Ȥ��Ǥ���.
���ζ�netCDF�ե������, 4�Х��Ȥ�``�ޥ��å��ʥ�С�''����Ϥޤ�, �����
���줬netCDF�С������1�ե������ǧ�����뤿��Τ�ΤǤ���.
���Υޥ��å��ʥ�С���: `{\tt C}',`{\tt D}','{\tt F}',`\verb-\001-'
�Ǥ���.
���μ��ˤ�, 32�ӥåȤ�0��7�Ĥ�³��. ����ϰʲ��Τ��Ȥ�ɽ���Ƥ���:
��Ͽ����0, �������¤Ӥ���, �������Х�°������, ������ѿ����¤Ӥ���.

�ʲ���, Unix���ޥ��{\tt od -xcs empty.nc}
��Ȥä�, �ӥå�����ǥ�����Υޥ����ˤ������������줿�ե������
(�Խ����줿)����פ�ɽ��������ΤǤ���.

�ե������, 16�Х��Ȥγ���ʬ��4�Ԥ�ɽ������Ƥ���.
��1�ԤϥХ��Ȥ�16�ʿ�ɽ�����Ƥ���.
��2�ԤϥХ��Ȥ�ʸ��ɽ�����Ƥ���.
��3�Ԥ�2�Х��Ȥ��Ȥ򥰥롼�ײ�����, ��������Ĥ�16�ӥå������Ȥ���ɽ
�����Ƥ���.
��4��(���Ȥ��ɲä��줿��ΤǤ���)��,
netCDF���Ǥ�����ͤȤ��ƥХ��Ȥ��ᤷ��ɽ��������ΤǤ���.
\begin{quote}\baselineskip=\vs
\begin{verbatim}
   4344    4601    0000    0000    0000    0000    0000    0000
  C   D   F 001  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
  17220   17921   00000   00000   00000   00000   00000   00000
[magic number ] [  0 records  ] [  0 dimensions   (ABSENT)    ]

   0000    0000    0000    0000    0000    0000    0000    0000
 \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
  00000   00000   00000   00000   00000   00000   00000   00000
[  0 global atts  (ABSENT)    ] [  0 variables    (ABSENT)    ]
\end{verbatim}
\end{quote}

�⤦������̣�Τ�����Ȥ���, �ʲ���CDL��ͤ���:
\begin{quote}\baselineskip=\vs
\begin{verbatim}
netcdf tiny {
dimensions:
        dim = 5;
variables:
        short vx(dim);
data:
        vx = 3, 1, 4, 1, 5 ;
}
\end{verbatim}
\end{quote}
�����92�Х��Ȥ�netCDF�ե�������б�����.
�ʲ��Ϥ��Υե�������Խ����줿����פǤ���:
\begin{quote}\baselineskip=\vs
\begin{verbatim}
   4344    4601    0000    0000    0000    000a    0000    0001
  C   D   F 001  \0  \0  \0  \0  \0  \0  \0  \n  \0  \0  \0 001
  17220   17921   00000   00000   00000   00010   00000   00001
[magic number ] [  0 records  ] [NC_DIMENSION ] [ 1 dimension ]

   0000    0003    6469    6d00    0000    0005    0000    0000
 \0  \0  \0 003   d   i   m  \0  \0  \0  \0 005  \0  \0  \0  \0
  00000   00003   25705   27904   00000   00005   00000   00000
[  3 char name = "dim"        ] [ size = 5    ] [ 0 global atts

   0000    0000    0000    000b    0000    0001    0000    0002
 \0  \0  \0  \0  \0  \0  \0 013  \0  \0  \0 001  \0  \0  \0 002
  00000   00000   00000   00011   00000   00001   00000   00002
 (ABSENT)     ] [NC_VARIABLE  ] [ 1 variable  ] [ 2 char name =

   7678    0000    0000    0001    0000    0000    0000    0000
  v   x  \0  \0  \0  \0  \0 001  \0  \0  \0  \0  \0  \0  \0  \0
  30328   00000   00000   00001   00000   00000   00000   00000
 "vx"         ] [1 dimension  ] [ with ID 0   ] [ 0 attributes

   0000    0000    0000    0003    0000    000c    0000    0050
 \0  \0  \0  \0  \0  \0  \0 003  \0  \0  \0  \f  \0  \0  \0   P
  00000   00000   00000   00003   00000   00012   00000   00080
 (ABSENT)     ] [type NC_SHORT] [size 12 bytes] [offset:    80]

   0003    0001    0004    0001    0005    8001
 \0 003  \0 001  \0 004  \0 001  \0 005 200 001
  00003   00001   00004   00001   00005  -32767
[    3] [    1] [    4] [    1] [    5] [fill ]
\end{verbatim}
\end{quote}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{FORTRAN���󥿡��ե������ΤޤȤ�}
\label{FORTRAN���󥿡��ե������ΤޤȤ�}

���ϰ�������ʸ����, ���ϰ�����ʸ����ɽ�����Ƥ���.
���٤Ƥΰ�����FORTRAN���Υꥹ��(�����Υե��٥åȽ�)��, 
���֥롼���󤪤�Ӵؿ�������β����դ��Ƥ���.
\begin{quote}\baselineskip=\vs
\begin{verbatim}
INTEGER FUNCTION NCCRE (FILENAME,CLOBMODE, rcode)
INTEGER FUNCTION NCOPN (FILENAME,RWMODE, rcode)
SUBROUTINE NCREDF (NCID, rcode)
SUBROUTINE NCENDF (NCID, rcode)
SUBROUTINE NCCLOS (NCID, rcode)
SUBROUTINE NCINQ (NCID, ndims,nvars,natts,recdim,rcode)
SUBROUTINE NCSNC (NCID, rcode)
SUBROUTINE NCABOR (NCID, rcode)
INTEGER FUNCTION NCDDEF (NCID,DIMNAME,SIZE, rcode)
INTEGER FUNCTION NCDID (NCID,DIMNAME, rcode)
SUBROUTINE NCDINQ (NCID,DIMID, dimname,size,rcode)
SUBROUTINE NCDREN (NCID,DIMID,DIMNAME, rcode)
INTEGER FUNCTION NCVDEF (NCID,VARNAME,DATATYPE,NVDIMS,VDIMS, rcode)
INTEGER FUNCTION NCVID (NCID,VARNAME, rcode)
SUBROUTINE NCVINQ (NCID,VARID, varname,datatype,nvdims,vdims,nvatts,rcode)
SUBROUTINE NCVPT1 (NCID,VARID,INDICES,VALUE, rcode)
SUBROUTINE NCVP1C (NCID,VARID,INDICES, CHVAL, rcode)
SUBROUTINE NCVGT1 (NCID,VARID,INDICES, value, rcode)
SUBROUTINE NCVG1C (NCID,VARID,INDICES, chval, rcode)
SUBROUTINE NCVPT (NCID,VARID,START,COUNTS,VALUE, rcode)
SUBROUTINE NCVPTC (NCID,VARID,START,COUNTS,STRING,LENSTR, rcode)
SUBROUTINE NCVPTG (NCID,VARID,START,COUNTS,STRIDE,IMAP,VALUE, rcode)
SUBROUTINE NCVPGC (NCID,VARID,START,COUNTS,STRIDE,IMAP,STRING,rcode)
SUBROUTINE NCVGT (NCID,VARID,START,COUNTS, value,rcode)
SUBROUTINE NCVGTC (NCID,VARID,START,COUNTS, string,LENSTR,rcode)
SUBROUTINE NCVGTG (NCID,VARID,START,COUNTS,STRIDE,IMAP,value,rcode)
SUBROUTINE NCVGGC (NCID,VARID,START,COUNTS,STRIDE,IMAP,string,rcode)
SUBROUTINE NCVREN (NCID,VARID,VARNAME, rcode)
SUBROUTINE NCAPT (NCID,VARID,ATTNAME,DATATYPE,ATTLEN,VALUE, rcode)
SUBROUTINE NCAPTC (NCID,VARID,ATTNAME,DATATYPE,LENSTR,STRING, rcode)
SUBROUTINE NCAINQ (NCID,VARID,ATTNAME, datatype,attlen,rcode)
SUBROUTINE NCAGT (NCID,VARID,ATTNAME, value,rcode)
SUBROUTINE NCAGTC (NCID,VARID,ATTNAME, string,LENSTR,rcode)
SUBROUTINE NCACPY (INNCID,INVARID,ATTNAME,OUTNCID,OUTVARID, rcode)
SUBROUTINE NCANAM (NCID,VARID,ATTNUM, attname,rcode)
SUBROUTINE NCAREN (NCID,VARID,ATTNAME,NEWNAME, rcode)
SUBROUTINE NCADEL (NCID,VARID,ATTNAME, rcode)
INTEGER FUNCTION NCTLEN (DATATYPE, rcode)
SUBROUTINE NCPOPT (NCOPTS)
SUBROUTINE NCGOPT (ncopts)
INTEGER FUNCTION NCSFIL (NCID,FILLMODE, rcode)
\end{verbatim}
\end{quote}

\begin{quote}\baselineskip=\vs
\begin{verbatim}
INTEGER ATTLEN          ! °���٥��ȥ�������ǿ�
CHARACTER*(*) ATTNAME   ! °��̾
INTEGER ATTNUM          ! °����
CHARACTER CHVAL         ! �ѿ��ޤ���°����ʸ����
INTEGER CLOBMODE        ! NCCLOB�ޤ���NCNOCLOB
INTEGER COUNTS(NVDIMS)  ! �ͤΥ֥��å��α��Ĺ��
INTEGER DATATYPE        ! ��: NCBYTE, ..., �ޤ��� NCDOUBLE
INTEGER DIMID           ! ����ID
CHARACTER*(*) DIMNAME   ! ����̾
CHARACTER*(*) FILENAME  ! netCDF�ե�����̾
INTEGER FILLMODE        ! �ե���⡼�ɤ�����: NCNOFILL�ޤ���NCFILL
INTEGER IMAP(NVDIMS)    ! ����ǥå����ޥåԥ󥰥٥��ȥ�
INTEGER INDICES(NDIMS)  ! �ѿ���ñ�����Ǥκ�ɸ
INTEGER INNCID          ! ����netCDF ID
INTEGER INVARID         ! �����ѿ� ID
INTEGER LENSTR          ! ʸ�������Ĺ��
INTEGER NATTS           ! �������Х�°���ο�
INTEGER NCID            ! NCCRE�ޤ���NCOPN���֤����netCDF ID
INTEGER NCOPTS          ! ���顼�������ץ����Υե饰
INTEGER NDIMS           ! ������
CHARACTER*(*) NEWNAME   ! ������°��̾
INTEGER NVARS           ! �ѿ��ο�
INTEGER NVATTS          ! �ѿ��˳�����Ƥ��Ƥ���°���ο�
INTEGER NVDIMS          ! �ѿ���μ�����
INTEGER OUTNCID         ! ����netCDF ID
INTEGER OUTVARID        ! �����ѿ�ID
INTEGER RCODE           ! �֤���륨�顼������. ���顼���ʤ����0.
INTEGER RECDIM          ! ̵���¼�����ID
INTEGER RWMODE          ! NCWRITE�ޤ���NCNOWRIT
INTEGER SIZE            ! ����������
INTEGER START(NVDIMS)   ! �������������ǽ���ͤΥ���ǥå���
INTEGER STRIDE(NVDIMS)  ! netCDF�ѿ������Υ��ȥ饤��
CHARACTER*(*) STRING    ! �ѿ��ޤ���°����ʸ��������
DOUBLE VALUE            ! �ѿ��ޤ���°������������
REAL VALUE              ! �ѿ��ޤ���°���μ¿���
INTEGER VALUE           ! �ѿ��ޤ���°����������
INTEGER VARID           ! NCVDEF�ޤ���NCVID�����������ѿ�ID, �ޤ���NCGLOBAL
CHARACTER*(*) VARNAME   ! �ѿ�̾
INTEGER VDIMS(NDIMS)    ! �ѿ��μ���ID. �ѿ��η���Ϳ����.
\end{verbatim}
\end{quote}

\end{document}