7.3 これはうれしい日付軸

長年にわたるデータを解析した人なら, 日付軸をつけることの面倒くささは十 分ご承知でしょう. UCPACK を用いると, 閏年まで考慮した完璧な日付軸を容 易に作画することができます(UXYZ3).

      PROGRAM UXYZ3

      PARAMETER( ID0=19960101, ND=90, RND=ND )

      WRITE(*,*) ' WORKSTATION ID (I)  ? ;'
      CALL SGPWSN
      READ (*,*) IWS

      CALL GROPN( IWS )
      CALL GRFRM

      CALL GRSWND( 0.0, RND, -90., 90. )
      CALL GRSVPT( 0.2, 0.8,  0.2, 0.8 )
      CALL GRSTRN( 1 )
      CALL GRSTRF

      CALL UCXACL( 'B', ID0, ND )
      CALL UCXACL( 'T', ID0, ND )

      CALL UYAXDV( 'L', 10., 30. )
      CALL UYAXDV( 'R', 10., 30. )
      CALL UYSTTL( 'L', 'LATITUDE', 0. )

      CALL UXMTTL( 'T', 'UCXACL/UYAXDV', 0. )

      CALL GRCLS

      END
PROGRAM UXYZ3

\resizebox{10cm}{!}{\includegraphics{uxyz1/uxyz3.eps}}
uxyz3.f: frame1

まず, 作画しようとする座標軸については, 日数を単位として正規化変換を設 定する必要があります. また, 座標軸の作画は, U-座標系において0に相当す る位置からおこなわれますから, この例の場合のように1996年1月1日から3月 31日まで91日分をビューポートいっぱいに割り当てたいときには, ウインドウ の両端値を UXMIN が 0.0, UXMAXRND(= 90)と指定し ます(12行め).

日付に関する座標軸は, サブルーチン UCXACL, UCYACL で簡単に 描けます. 最初の引数では, これまで通り, 座標軸を描く場所を指定します. 2番めの引数 ID0 は起日, つまり座標軸を描きはじめる最初の日です. 3行めのパラメータ文をみれば明らかなように, 8桁の整数(yyyymmdd)で指定 します. yyyyが年, mmが月, ddが日で, この場合 ID0=19960101 ですから, 起日は1996年1月1日となります. 最後の引数では, 何日間分を描く かを指定します.