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