%表題   GTOOL3 利用の手引 (ghtool)
%
%履歴   90/09/24 沼口  敦
%       95/06/02 竹広真一
%

\chapter{ヘッダー管理モジュール群}

  ヘッダーを参照/設定するモジュールが用意されている.

\section{ヘッダー参照/設定の基本モジュール}

  \subsection{GHPGET  [S]  記述子（数）の参照 }
    \entry{GHPGET}

    % GHPGET.FOR 9:  1990/09/23 (日) 21:36:47
    \begin{verbatim}
          SUBROUTINE GHPGET
         I         ( HHEAD , HP    ,
         I           IX              )
    *
          INCLUDE    (GZSIZE)                ! NCC, NDC
          CHARACTER  HHEAD (NDC)*(NCC)       ! ヘッダー
          CHARACTER  HP         *(*)         ! ヘッダーの記述子指定
    *    (INTEGER)   IX                      ! 記述子の内容：数
    \end{verbatim}

    \begin{setumei}
    HHEADの記述子HPに設定されている情報を数データとして参照する.
    数データ記述子でないもの
    (`A16'指定の記述子)に対しては「-1」を返す.
    IXの実引数としては, 適当な型の変数を用いること
    (\ref{モジュールの使用法}参照).
    \end{setumei}

  \subsection{GHPSET  [ES]  記述子（数）の設定 }
    \entry{GHPSET}

    % GHPGET.FOR 150:  1990/09/23 (日) 21:36:47
    \begin{verbatim}
          ENTRY GHPSET
         M         ( HHEAD ,
         I           HP    , IX     )
    *
          INCLUDE    (GZSIZE)                ! NCC, NDC
          CHARACTER  HHEAD (NDC)*(NCC)       ! ヘッダー
          CHARACTER  HP         *(*)         ! ヘッダーの記述子指定
    *    (INTEGER)   IX                      ! 記述子の内容：数
    \end{verbatim}

    \begin{setumei}
    HHEADの記述子(記述子)HPに情報を数データとして設定する.
    数データ記述子でないもの(`A16'指定の記述子)
    に対して設定しようとしても無視される.
    IXの実引数としては, 適当な型の変数/定数を用いること
    (\ref{モジュールの使用法}参照).
    \end{setumei}

  \subsection{GHCGET  [ES]  記述子（文字）の参照 }
    \entry{GHCGET}

    % GHPGET.FOR 184:  1990/09/23 (日) 21:36:47
    \begin{verbatim}
          ENTRY      GHCGET
         I         ( HHEAD , HP    ,
         I           HX              )
    *
          INCLUDE    (GZSIZE)                ! NCC, NDC
          CHARACTER  HHEAD (NDC)*(NCC)       ! ヘッダー
          CHARACTER  HP         *(*)         ! ヘッダーの記述子指定
          CHARACTER  HX         *(*)         ! 記述子の内容：文字
    \end{verbatim}

    \begin{setumei}
    HHEADの記述子HPに設定されている情報を文字データとして取得する.
    \end{setumei}

  \subsection{GHCSET  [ES]  記述子（文字）の設定 }
    \entry{GHCSET}

    % GHPGET.FOR 219:  1990/09/23 (日) 21:36:47
    \begin{verbatim}
          ENTRY GHCSET
         M         ( HHEAD ,
         I           HP    , HX     )
    *
          INCLUDE    (GZSIZE)                ! NCC, NDC
          CHARACTER  HHEAD (NDC)*(NCC)       ! ヘッダー
          CHARACTER  HP         *(*)         ! ヘッダーの記述子指定
          CHARACTER  HX         *(*)         ! 記述子の内容：文字
    \end{verbatim}

    \begin{setumei}
    HHEADの記述子HPに情報を文字データとして設定する.
    {\rm 16}文字を超える分は切り捨てられる.
    \end{setumei}

  \subsection{GHPINQ  [ES]  記述子の書式参照 }
    \entry{GHPINQ}

    % GHPGET.FOR 242:  1990/09/23 (日) 21:36:47
    \begin{verbatim}
          ENTRY GHPINQ
         I         ( HP    ,
         O           HFM    )
    *
          CHARACTER  HP         *(*)         ! ヘッダーの記述子指定
          CHARACTER  HFM        *(*)         ! 記述子の書式
    \end{verbatim}

    \begin{setumei}
    記述子HPの書式を参照する.
    記述子HPが存在しないときは空白(' ')が返される.
    \end{setumei}

  \subsection{GHCGTS  [S]  一連の記述子の参照 }
    \entry{GHCGTS}

    % GHCGTS.FOR 9:  1990/09/23 (日) 21:36:02
    \begin{verbatim}
          SUBROUTINE GHCGTS
         I         ( HHEAD, HP    ,
         O           HX            )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          CHARACTER  HP         *(*)         ! ヘッダーの記述子指定
          CHARACTER  HX         *(*)         ! 記述子の内容：文字
    \end{verbatim}

    \begin{setumei}
    HPの内容に順次1,2,3,\ldots を付けた名前の記述子
    (HP='TITL'なら,TITL1,TITL2)
    に設定されている情報を結合して文字データとして参照する.
    \end{setumei}

  \subsection{GHCSTS  [ES]  一連の記述子の設定 }
    \entry{GHCSTS}

    % GHCGTS.FOR 46:  1990/09/23 (日) 21:36:02
    \begin{verbatim}
          ENTRY      GHCSTS
         I         ( HHEAD, HP    ,
         I           HX            )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          CHARACTER  HP         *(*)         ! ヘッダーの記述子指定
          CHARACTER  HX         *(*)         ! 記述子の内容：文字
    \end{verbatim}

    \begin{setumei}
    HPの内容に順次1,2,3,\ldots を付けた名前の記述子
    (HP='TITL'なら,TITL1,TITL2)
    に, 文字データを分割して設定する.
    HXの長さが記述子を結合した全体の長さ
    (上の例ではTITL1とTITL2を足した長さ)
    に満たない場合には
    残りには空白が入る.
    \end{setumei}

\section{ヘッダーを複写するモジュール}

  \subsection{GHCOPY  [S]  ヘッダーの複写 }
    \entry{GHCOPY}

    % GHCOPY.FOR 9:  1990/09/23 (日) 19:17:53
    \begin{verbatim}
          SUBROUTINE GHCOPY
         I         ( HHEAD ,
         O           HHEADO )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          CHARACTER  HHEADO( * )*(*)         ! ヘッダー(出力)
    \end{verbatim}

    \begin{setumei}
    ヘッダーの複製を作成する.
    ただし, 項目SIZE(64)は複写されない.
    \end{setumei}

\section{編集記述子を設定するモジュール}

  \subsection{GHEADD  [S]  編集記述子の追加設定 }
    \entry{GHEADD}

    % GHESET.FOR 36:  1990/09/23 (日) 19:18:14
    \begin{verbatim}
          SUBROUTINE GHEADD
         M         ( HHEAD ,
         I           HEDIT , HETTL )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          CHARACTER  HEDIT *(*)              ! 編集略記号
          CHARACTER  HETTL *(*)              ! 編集タイトル
    \end{verbatim}

    \begin{setumei}
    現在設定されている編集記述子の後に,
    新しい編集記述子(HEDITとHETTL)を付け加える.
    編集記述領域がいっぱいの場合は,
    警告を出し, 設定されない.
    \end{setumei}

  \subsection{GHERST  [ES]  編集記述子の再設定 }
    \entry{GHERST}

    % GHESET.FOR 61:  1990/09/23 (日) 19:18:14
    \begin{verbatim}
          ENTRY      GHERST
         M         ( HHEAD ,
         I           HEDIT , HETTL )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          CHARACTER  HEDIT *(*)              ! 編集略記号
          CHARACTER  HETTL *(*)              ! 編集タイトル
          INCLUDE    (GZSIZE)                ! NCC, NDC, NED
    \end{verbatim}

    \begin{setumei}
    現在設定されている一番最後の編集記述子を,
    新しい編集記述子(HEDITとHETTL)に入れ換える.
    \end{setumei}

  \subsection{GHESET  [S]  編集記述子の設定 }
    \entry{GHESET}

    % GHESET.FOR 9:  1990/09/23 (日) 19:18:14
    \begin{verbatim}
          SUBROUTINE GHESET
         M         ( HHEAD ,
         I           HEDIT , HETTL, IENUM  )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          CHARACTER  HEDIT *(*)              ! 編集略記号
          CHARACTER  HETTL *(*)              ! 編集タイトル
    \end{verbatim}

    \begin{setumei}
    現在設定されているいないにかかわらず,
    IENUM番の編集記述子(HEDITとHETTL)を設定する.
    \end{setumei}

  \subsection{GHQENM  [S]  編集記述子の設定数の参照}
    \entry{GHQENM}

    % GHQENM.FOR 9:  1990/09/23 (日) 19:19:40
    \begin{verbatim}
          SUBROUTINE GHQENM
         I         ( HHEAD ,
         O           IENUM )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          INTEGER    IENUM                   ! 設定済の編集記述子の数
    \end{verbatim}

    \begin{setumei}
    現在設定されている編集記述子の数を参照する.
    \end{setumei}

\section{ヘッダーを一括して参照/設定するモジュール}

  \subsection{GHPACK  [S]  データ記述子のパック }
    \entry{GHPACK}

    % GHPACK.FOR 9:  1990/09/23 (日) 19:18:41
    \begin{verbatim}
          SUBROUTINE GHPACK
         O         ( HHEAD ,
         I           HDSET , HITEM , IFNUM , IDNUM , 
         I           HTITL , HUNIT ,
         I           ITIME , HDATE , HUTIM , ITDUR ,
         I           HAITM1, IASTR1, IAEND1,
         I           HAITM2, IASTR2, IAEND2,
         I           HAITM3, IASTR3, IAEND3,
         I           HDFMT , VMISS ,
         I           DMIN  , DMAX  , DIVS  , DIVL  , ISTYP ,
         I           HCDATE, HCSIGN                         )
    *
          CHARACTER  HHEAD ( * )*(*)
          CHARACTER  HDSET  *(*)             ! データセット名      DSET
          CHARACTER  HITEM  *(*)             ! 識別名称            ITEM
          INTEGER    IFNUM                   ! ファイル番号        FNUM
          INTEGER    IDNUM                   ! データ番号          DNUM
          CHARACTER  HTITL  *(*)             ! タイトル            TITL
          CHARACTER  HUNIT  *(*)             ! 単位                UNIT
          INTEGER    ITIME                   ! 時刻(通し)          TIME 
          CHARACTER  HDATE  *(*)             ! 時刻                DATE
          CHARACTER  HUTIM  *(*)             ! 時刻単位            UTIM
          INTEGER    ITDUR                   ! 代表する時間        TDUR
          CHARACTER  HAITM1 *(*)             ! 軸1の格子名称       AITM1
          INTEGER    IASTR1                  ! 軸1の格子始め       ASTR1
          INTEGER    IAEND1                  ! 軸1の格子終り       AEND1
          CHARACTER  HAITM2 *(*)             ! 軸2の格子名称       AITM1
          INTEGER    IASTR2                  ! 軸2の格子始め       ASTR1
          INTEGER    IAEND2                  ! 軸2の格子終り       AEND1
          CHARACTER  HAITM3 *(*)             ! 軸3の格子名称       AITM1
          INTEGER    IASTR3                  ! 軸3の格子始め       ASTR1
          INTEGER    IAEND3                  ! 軸3の格子終り       AEND1
          CHARACTER  HDFMT  *(*)             ! データフォーマット  DFMT
          REAL       VMISS                   ! 欠損値の値          MISS
          REAL       DMIN                    ! レンジ(最小)        DMIN
          REAL       DMAX                    ! レンジ(最大)        DMAX
          REAL       DIVS                    ! 間隔(小)            DIVL
          REAL       DIVL                    ! 間隔(大)            DIVS
          INTEGER    ISTYP                   ! スケーリングタイ プ STYP
          CHARACTER  HCDATE *(*)             ! データ作成日付      CDATE
          CHARACTER  HCSIGN *(*)             ! データ作成者        CSIGN
    \end{verbatim}

    \begin{setumei}
    HHAEDに, 編集記述子以外の
    各データ記述子の情報を設定する.
    HCDATEに空白(' ')を指定した場合には,
    CDATEに現在の時刻が入る.
    MDATEおよびMSIGNには, 現在の時刻および
    \モジラ{GTPGET}{GTPSET}の管理する\パラ{MYSIGN}{'GTOOL3'}
    が入る.
    \end{setumei}

  \subsection{GHUPAC  [ES]  識別記述子のアンパック }
    \entry{GHUPAC}

    % GHPACK.FOR 104:  1990/09/23 (日) 19:18:41
    \begin{verbatim}
          ENTRY      GHUPAC
         I         ( HHEAD ,
         O           HDSET , HITEM , IFNUM , IDNUM , 
         O           HTITL , HUNIT ,
         O           ITIME , HDATE , HUTIM , ITDUR ,
         O           HAITM1, IASTR1, IAEND1,
         O           HAITM2, IASTR2, IAEND2,
         O           HAITM3, IASTR3, IAEND3,
         O           HDFMT , VMISS ,
         O           DMIN  , DMAX  , DIVS  , DIVL  , ISTYP ,
         O           HCDATE, HCSIGN, HMDATE, HMSIGN         )
    *
          CHARACTER  HHEAD ( * )*(*)
          CHARACTER  HDSET  *(*)             ! データセット名      DSET
          CHARACTER  HITEM  *(*)             ! 識別名称            ITEM
          INTEGER    IFNUM                   ! ファイル番号        FNUM
          INTEGER    IDNUM                   ! データ番号          DNUM
          CHARACTER  HTITL  *(*)             ! タイトル            TITL
          CHARACTER  HUNIT  *(*)             ! 単位                UNIT
          INTEGER    ITIME                   ! 時刻(通し)          TIME 
          CHARACTER  HDATE  *(*)             ! 時刻                DATE
          CHARACTER  HUTIM  *(*)             ! 時刻単位            UTIM
          INTEGER    ITDUR                   ! 代表する時間        TDUR
          CHARACTER  HAITM1 *(*)             ! 軸1の格子名称       AITM1
          INTEGER    IASTR1                  ! 軸1の格子始め       ASTR1
          INTEGER    IAEND1                  ! 軸1の格子終り       AEND1
          CHARACTER  HAITM2 *(*)             ! 軸2の格子名称       AITM1
          INTEGER    IASTR2                  ! 軸2の格子始め       ASTR1
          INTEGER    IAEND2                  ! 軸2の格子終り       AEND1
          CHARACTER  HAITM3 *(*)             ! 軸3の格子名称       AITM1
          INTEGER    IASTR3                  ! 軸3の格子始め       ASTR1
          INTEGER    IAEND3                  ! 軸3の格子終り       AEND1
          CHARACTER  HDFMT  *(*)             ! データフォーマット  DFMT
          REAL       VMISS                   ! 欠損値の値          MISS
          REAL       DMIN                    ! レンジ(最小)        DMIN
          REAL       DMAX                    ! レンジ(最大)        DMAX
          REAL       DIVS                    ! 間隔(小)            DIVL
          REAL       DIVL                    ! 間隔(大)            DIVS
          INTEGER    ISTYP                   ! スケーリングタイプ  STYP
          CHARACTER  HCDATE *(*)             ! データ作成日付      CDATE
          CHARACTER  HCSIGN *(*)             ! データ作成者        CSIGN
          CHARACTER  HMDATE *(*)             ! データ変更日付      MDATE
          CHARACTER  HMSIGN *(*)             ! データ変更者        MSIGN
    \end{verbatim}

    \begin{setumei}
    HHAEDから
    編集記述子以外の各データ記述子の情報を取り出す.
    \end{setumei}

  \subsection{GHPACA  [S]  格子情報ヘッダーパック }
    \entry{GHPACA}

    % GHPACA.FOR 9:  1990/09/23 (日) 19:18:29
    \begin{verbatim}
          SUBROUTINE GHPACA
         O         ( HHEADA,
         I           HKIND , HITEM ,
         I           HTITL , HUNIT ,
         I           IXDIM ,
         I           HDFMT , VMISS ,
         I           DMIN  , DMAX  , DIVS  , DIVL  , ISTYP  )
    *
          CHARACTER  HHEADA ( * )*(*)        ! ヘッダー
          CHARACTER  HKIND       *(*)        ! 格子情報の種類      DSET
          CHARACTER  HITEM       *(*)        ! 格子識別名称        ITEM, AITM1
          CHARACTER  HTITL       *(*)        ! 軸タイトル          TITL
          CHARACTER  HUNIT       *(*)        ! 単位                UNIT
          INTEGER    IXDIM                   ! 格子数              AEND1
          CHARACTER  HDFMT       *(*)        ! データフォーマット  DFMT
          REAL       VMISS                   ! 欠損値の値          MISS
          REAL       DMIN                    ! レンジ(最小)        DMIN
          REAL       DMAX                    ! レンジ(最大)        DMAX
          REAL       DIVS                    ! 間隔(小)            DIVS
          REAL       DIVL                    ! 間隔(大)            DIVL
          INTEGER    ISTYP                   ! スケーリングタイプ  STYP
    \end{verbatim}

    \begin{setumei}
    HHEADAに, 
    格子情報ファイル用のヘッダーを作成する.

    HKINDには, 格子情報の種類の表(\ref{格子情報の種類の略称})
    にあるもののうち一つを与えること.
    IXDIMには, 周期的な軸・非周期的な軸にかかわらず
    全格子数を与えること.
    \ref{格子情報のヘッダー}参照.
    \end{setumei}

  \subsection{GHCSQ1 [S]  記述子を書き出しコンソール入力}
    \entry{GHCSQ1}

    \begin{verbatim}
          SUBROUTINE GHCSQ1
         I         ( HH1   , HP    , IC    ,
         M           HHO                    )
    *
          CHARACTER  HH1  ( * )*(*)
          CHARACTER  HHO  ( * )*(*)
          CHARACTER  HP        *(*)
          INTEGER    IC                      !"記憶番号
    \end{verbatim}


  \subsection{GHCSQ2  [S]   記述子を書き出しコンソール入力}
    \entry{GHCSQ2}

    \begin{verbatim}
          SUBROUTINE GHCSQ2
         I         ( HH1   , HH2   , HP    , IC    ,
         M           HHO                            )
    *
          CHARACTER  HH1  ( * )*(*)
          CHARACTER  HH2  ( * )*(*)
          CHARACTER  HHO  ( * )*(*)
          CHARACTER  HP        *(*)
          INTEGER    IC                      !" 記憶番号
    \end{verbatim}

  \subsection{GHPTRN [S]  ヘッダー形式変換}
    \entry{GHPTRN}

    \begin{verbatim}
          SUBROUTINE GHPTRN
         M         ( HHEAD  )
    *
          CHARACTER  HHEAD (NDC)*(NCC)       !" ヘッダー
    \end{verbatim}

  \subsection{GHRSGP  [S]  描画属性記述子のリセット}
    \entry{GHRSGP}

    \begin{verbatim}
          SUBROUTINE GHRSGP
         I         ( HHEAD )
    \end{verbatim}


  \subsection{GHPCLR  [ES]  記述子のクリアー}
    \entry{GHPCLR}

    \begin{verbatim}
          ENTRY GHPCLR
         O         ( HHEAD  )
    *
          CHARACTER  HHEAD (NDC)*(NCC)       !" ヘッダー
    \end{verbatim}


  \subsection{GHNINQ  [ES]  記述子名参照}
    \entry{GHNINQ}

    \begin{verbatim}
          ENTRY GHNINQ
         I         ( IZ    ,
         O           HP      )
    *
          CHARACTER  HP         *(*)         !" ヘッダーの記述子指定
    \end{verbatim}

% Local Variables: 
% mode: japanese-latex
% TeX-master: "gtool"
% End: 
