1
2# DATELIB を移植するときの注意
3
4DATELIB の中の DATEQ3 は, FORTRAN77 の規格にはない今日の日付を得るため
5のルーチンを含んでいる. しかし, これらはふつう処理系が同じような動作を
6するルーチンを用意しているので, システム管理者が適切なインターフェイス
7ルーチン用意すること. 以下に, SunFORTRAN 1.4, Lahey Fortran, UXP
8FORTRAN77 EX および C 言語で記述した例を示す.
9
10このパッケージでは C 言語で書かれたものを標準としている.
11
12DATELIB が正しく移植されているかどうかを確かめるには,
13demo/misc1/datelib にある date04.f をコンパイル, 実行し, 今日の日付を
14正しく返しているかどうかを見てやればよい.
15
16*-----------------------------------------------------------------------
17*     DATEQ3 (for SunFORTRAN 1.4)
18*-----------------------------------------------------------------------
19      SUBROUTINE DATEQ3(IY, IM, ID)
20
21      INTEGER IDA(3)
22
23*     IY    : YEAR                                              ( /O)
24*     IM    : MONTH                                             ( /O)
25*     ID    : DAY                                               ( /O)
26
27
28      CALL IDATE(IDA)
29      IY = IDA(3)
30      IM = IDA(2)
31      ID = IDA(1)
32
33      END
34*-----------------------------------------------------------------------
35*     DATEQ3 (for Lahey Fortran)
36*-----------------------------------------------------------------------
37      SUBROUTINE DATEQ3(IY, IM, ID)
38
39      CHARACTER*8 CDATE
40
41*     IY    : YEAR                                              ( /O)
42*     IM    : MONTH                                             ( /O)
43*     ID    : DAY                                               ( /O)
44
45
46      CALL DATE(CDATE)
47      READ(CDATE,'(I2,TR1,I2,TR1,I2)') IM,ID,IY
48      IF (IY.GT.90) THEN
49        IY = IY+1900
50      ELSE
51        IY = IY+2000
52      END IF
53
54      END
55*-----------------------------------------------------------------------
56*     DATEQ3 (for UXP FORTRAN77 EX)
57*-----------------------------------------------------------------------
58      SUBROUTINE DATEQ3(IY, IM, ID)
59
60      CHARACTER CD*8
61
62*     IY    : YEAR                                              ( /O)
63*     IM    : MONTH                                             ( /O)
64*     ID    : DAY                                               ( /O)
65
66
67      CALL DATE(CD)
68      READ(CD(1:2),'(I2)') IY
69      READ(CD(4:5),'(I2)') IM
70      READ(CD(7:8),'(I2)') ID
71
72      END
73
74/*
75 *    dateq3 (written in C)
76 */
77
78#include <time.h>
79
80void dateq3_(iy, im, id)
81    int *iy, *im, *id;
82{
83    long tp;
84    struct tm lt;
85
86    time(&tp);
87    lt = *localtime(&tp);
88    *iy = lt.tm_year + 1900;
89    *im = lt.tm_mon + 1;
90    *id = lt.tm_mday;
91}
92