gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
dc_date_generic.f90
Go to the documentation of this file.
1! -*- mode: f90; coding: utf-8 -*-
2!-----------------------------------------------------------------------
3! Copyright (c) 2000-2026 Gtool Development Group. All rights reserved.
4!-----------------------------------------------------------------------
332
334 use dc_types, only: dp, string, token
336
337 implicit none
338
339 private
342 public:: eval
345
346 public:: assignment(=)
347 public:: mod, operator(/), operator(-), operator(+), operator(*)
348 public:: operator(<), operator(>), operator(>=), operator(<=)
349 public:: operator(==), max, min
350 public:: tochar, tocharcal
352 public:: evalsclsec
353
354 public:: create, putline
355 ! 後方互換用
356 ! For backward compatibility
357
359 subroutine dcdatetimecreate1(time, &
360 & year, mon, day, hour, min, sec, &
361 & zone, zone_hour, zone_min, caltype, caltype_str, day_seconds, &
362 & sclyear, sclmon, sclday, sclsec, err) !:doc-priority 40:
363 use dc_types, only: dp
364 use dc_date_types, only: dc_datetime
365 use dc_scaledsec, only: dc_scaled_sec
366 type(dc_datetime), intent(out):: time
367 integer, intent(in), optional:: year, mon, day, hour, min
368 real(DP),intent(in), optional:: sec, day_seconds
369 character(*), intent(in), optional :: zone
370 integer, intent(in), optional :: zone_hour
371 integer, intent(in), optional :: zone_min
372 integer, intent(in), optional:: caltype
373 character(*), intent(in), optional:: caltype_str
374 type(dc_scaled_sec), intent(in), optional:: sclyear, sclmon, sclday, sclsec
375 logical, intent(out), optional:: err
376 end subroutine dcdatetimecreate1
377 end interface
378
380 subroutine dcdifftimecreate1(diff, &
381 & year, mon, day, hour, min, sec, day_seconds, nondim, &
382 & sclyear, sclmon, sclday, sclsec ) !:doc-priority 60:
383 use dc_types, only: dp
384 use dc_date_types, only: dc_difftime
385 use dc_scaledsec, only: dc_scaled_sec
386 type(dc_difftime), intent(out) :: diff
387 integer, intent(in), optional:: year, mon, day, hour, min
388 real(DP),intent(in), optional:: sec, day_seconds, nondim
389 type(dc_scaled_sec), intent(in), optional:: sclyear, sclmon, sclday, sclsec
390 end subroutine dcdifftimecreate1
391
392 subroutine dcdifftimecreate2d(diff, value, unit, unit_symbol, err) !:doc-priority 70:
393 use dc_types, only: dp
394 use dc_date_types, only: dc_difftime
395 type(dc_difftime), intent(out) :: diff
396 real(DP), intent(in) :: value
397 character(*), intent(in) :: unit
398 integer, intent(in), optional :: unit_symbol
399 logical, intent(out), optional :: err
400 end subroutine dcdifftimecreate2d
401
402 subroutine dcdifftimecreate2r(diff, value, unit, unit_symbol, err) !:doc-priority 80:
403 use dc_date_types, only: dc_difftime
404 type(dc_difftime), intent(out) :: diff
405 real, intent(in) :: value
406 character(*), intent(in) :: unit
407 integer, intent(in), optional :: unit_symbol
408 logical, intent(out), optional :: err
409 end subroutine dcdifftimecreate2r
410
411 subroutine dcdifftimecreate2i(diff, value, unit, unit_symbol, err) !:doc-priority 90:
412 use dc_date_types, only: dc_difftime
413 type(dc_difftime), intent(out) :: diff
414 integer, intent(in) :: value
415 character(*), intent(in) :: unit
416 integer, intent(in), optional :: unit_symbol
417 logical, intent(out), optional :: err
418 end subroutine dcdifftimecreate2i
419
420 end interface
421
423 subroutine dcdatetimeputline(time, unit, indent)
424 use dc_date_types, only: dc_datetime
425 type(dc_datetime), intent(in) :: time
426 integer, intent(in), optional :: unit
427 character(*), intent(in), optional:: indent
428 end subroutine dcdatetimeputline
429 end interface
430
432 subroutine dcdifftimeputline(diff, unit, indent)
433 use dc_date_types, only: dc_difftime
434 type(dc_difftime), intent(in) :: diff
435 integer, intent(in), optional :: unit
436 character(*), intent(in), optional:: indent
437 end subroutine dcdifftimeputline
438 end interface
439
440 interface assignment(=)
441
442 subroutine dcdatetimecreatei(time, sec) !:doc-priority 20:
443 use dc_date_types, only: dc_datetime
444 type(dc_datetime), intent(out):: time
445 integer, intent(in):: sec
446 end subroutine dcdatetimecreatei
447
448 subroutine dcdatetimecreater(time, sec) !:doc-priority 30:
449 use dc_date_types, only: dc_datetime
450 type(dc_datetime), intent(out):: time
451 real, intent(in):: sec
452 end subroutine dcdatetimecreater
453
454 subroutine dcdatetimecreated(time, sec) !:doc-priority 40:
455 use dc_types, only: dp
456 use dc_date_types, only: dc_datetime
457 type(dc_datetime), intent(out):: time
458 real(DP), intent(in):: sec
459 end subroutine dcdatetimecreated
460
461 subroutine dcdifftimecreatei(diff, sec) !:doc-priority 60:
462 use dc_date_types, only: dc_difftime
463 type(dc_difftime), intent(out):: diff
464 integer, intent(in):: sec
465 end subroutine dcdifftimecreatei
466
467 subroutine dcdifftimecreater(diff, sec) !:doc-priority 70:
468 use dc_date_types, only: dc_difftime
469 type(dc_difftime), intent(out):: diff
470 real, intent(in):: sec
471 end subroutine dcdifftimecreater
472
473 subroutine dcdifftimecreated(diff, sec) !:doc-priority 80:
474 use dc_types, only: dp
475 use dc_date_types, only: dc_difftime
476 type(dc_difftime), intent(out):: diff
477 real(DP), intent(in):: sec
478 end subroutine dcdifftimecreated
479
480!!$ subroutine DCDateLetFC(diff, string)
481!!$ use dc_date_types, only: DC_DIFFTIME
482!!$ type(DC_DIFFTIME), intent(out):: diff
483!!$ character(len = *), intent(in):: string
484!!$ end subroutine DCDateLetFC
485!!$
486!!$ subroutine DCDateLetTC(time, string)
487!!$ use dc_date_types, only: DC_DATETIME
488!!$ type(DC_DATETIME), intent(out):: time
489!!$ character(len = *), intent(in):: string
490!!$ end subroutine DCDateLetTC
491
492 end interface
493
494 interface setcaltype
495 subroutine dcdatetimesetcaltype(caltype)
496 integer, intent(in):: caltype
497 end subroutine dcdatetimesetcaltype
498 end interface
499
500 interface setsecofday
501 subroutine dcdatetimesetsecofday(sec)
502 use dc_types, only: dp
503 real(DP), intent(in):: sec
504 end subroutine dcdatetimesetsecofday
505 end interface
506
507 interface validcaltype
508 function dcdatetimevalidcaltype(caltype) result(result)
509 integer, intent(in):: caltype
510 logical:: result
511 end function dcdatetimevalidcaltype
512 end interface
513
514 interface validzone
515 function dcdatetimevalidzone(zone) result(result)
516 character(*), intent(in):: zone
517 logical:: result
518 end function dcdatetimevalidzone
519 end interface
520
521 interface zonetodiff
522 function dcdatetimezonetodiff(zone) result(diff)
523 use dc_date_types, only: dc_difftime
524 type(dc_difftime):: diff
525 character(*), intent(in):: zone
526 end function dcdatetimezonetodiff
527 end interface
528
530 function dcdatetimeparseunits(str) result(symbol)
531 character(*), intent(in):: str
532 integer:: symbol
533 end function dcdatetimeparseunits
534 end interface
535
536 interface setzone
537 subroutine dcdatetimesetzone(time, zone, err)
538 use dc_date_types, only: dc_datetime
539 type(dc_datetime), intent(inout):: time
540 character(*), intent(in):: zone
541 logical, intent(out), optional:: err
542 end subroutine dcdatetimesetzone
543 end interface
544
545
546 interface eval
547
548 subroutine dcdatetimeeval1(time, year, mon, day, hour, min, &
549 & sec, caltype, zone, sclyear, sclmon, sclday, sclsec) !:doc-priority 40:
550 use dc_types, only: dp
551 use dc_date_types, only: dc_datetime
552 use dc_scaledsec, only: dc_scaled_sec
553 type(dc_datetime), intent(in):: time
554 integer, intent(out), optional:: year, mon, day, hour, min, caltype
555 real(DP), intent(out), optional:: sec
556 character(*), intent(out), optional:: zone
557 type(dc_scaled_sec), intent(out), optional:: sclyear, sclmon, sclday, sclsec
558 end subroutine dcdatetimeeval1
559
560!!$ subroutine DCDateTimeEval0(time, mon, day, sec)
561!!$ use dc_date_types, only: DC_DATETIME
562!!$ use dc_types, only: DP
563!!$ type(DC_DATETIME), intent(in):: time
564!!$ integer, intent(out):: mon, day
565!!$ real(DP), intent(out):: sec
566!!$ end subroutine DCDateTimeEval0
567
568 subroutine dcdifftimeeval1(diff, &
569 & year, mon, day, hour, min, sec, nondim, &
570 & sclyear, sclmon, sclday, sclsec, sclnondim, err) !:doc-priority 60:
571 use dc_types, only: dp
572 use dc_date_types, only: dc_difftime
573 use dc_scaledsec, only: dc_scaled_sec
574 type(dc_difftime), intent(in):: diff
575 integer, intent(out), optional:: year, mon, day, hour, min
576 real(DP), intent(out), optional:: sec, nondim
577 type(dc_scaled_sec), intent(out), optional:: sclyear, sclmon, sclday, sclsec, sclnondim
578 logical, intent(out), optional :: err
579 end subroutine dcdifftimeeval1
580
581 end interface
582
583 interface evalday
584 function dcdatetimeevalday(time) result(result) !:doc-priority 40:
585 use dc_types, only: dp
586 use dc_date_types, only: dc_datetime
587 real(dp):: result
588 type(dc_datetime), intent(in):: time
589 end function dcdatetimeevalday
590
591 function dcdifftimeevalday(diff) result(result) !:doc-priority 60:
592 use dc_types, only: dp
593 use dc_date_types, only: dc_difftime
594 real(dp):: result
595 type(dc_difftime), intent(in):: diff
596 end function dcdifftimeevalday
597 end interface
598
599 interface evalhour
600 function dcdatetimeevalhour(time) result(result) !:doc-priority 40:
601 use dc_types, only: dp
602 use dc_date_types, only: dc_datetime
603 real(dp):: result
604 type(dc_datetime), intent(in):: time
605 end function dcdatetimeevalhour
606
607 function dcdifftimeevalhour(diff) result(result) !:doc-priority 60:
608 use dc_types, only: dp
609 use dc_date_types, only: dc_difftime
610 real(dp):: result
611 type(dc_difftime), intent(in):: diff
612 end function dcdifftimeevalhour
613 end interface
614
615 interface evalmin
616 function dcdatetimeevalmin(time) result(result) !:doc-priority 40:
617 use dc_types, only: dp
618 use dc_date_types, only: dc_datetime
619 real(dp):: result
620 type(dc_datetime), intent(in):: time
621 end function dcdatetimeevalmin
622
623 function dcdifftimeevalmin(diff) result(result) !:doc-priority 60:
624 use dc_types, only: dp
625 use dc_date_types, only: dc_difftime
626 real(dp):: result
627 type(dc_difftime), intent(in):: diff
628 end function dcdifftimeevalmin
629 end interface
630
631 interface evalsec
632 function dcdatetimeevalsec(time) result(result) !:doc-priority 40:
633 use dc_types, only: dp
634 use dc_date_types, only: dc_datetime
635 real(dp):: result
636 type(dc_datetime), intent(in):: time
637 end function dcdatetimeevalsec
638
639 function dcdifftimeevalsec(diff) result(result) !:doc-priority 60:
640 use dc_types, only: dp
641 use dc_date_types, only: dc_difftime
642 real(dp):: result
643 type(dc_difftime), intent(in):: diff
644 end function dcdifftimeevalsec
645 end interface
646
647 interface evalnondim
648 function dcdifftimeevalnondim(diff) result(result)
649 use dc_types, only: dp
650 use dc_date_types, only: dc_difftime
651 real(dp):: result
652 type(dc_difftime), intent(in):: diff
653 end function dcdifftimeevalnondim
654 end interface
655
656 interface evalsclsec
657 function dcdatetimeevalsclsec(time) result(result) !:doc-priority 40:
658 use dc_date_types, only: dc_datetime
659 use dc_scaledsec, only: dc_scaled_sec
660 type(dc_scaled_sec):: result
661 type(dc_datetime), intent(in):: time
662 end function dcdatetimeevalsclsec
663
664 function dcdifftimeevalsclsec(diff) result(result) !:doc-priority 60:
665 use dc_date_types, only: dc_difftime
666 use dc_scaledsec, only: dc_scaled_sec
667 type(dc_scaled_sec):: result
668 type(dc_difftime), intent(in):: diff
669 end function dcdifftimeevalsclsec
670 end interface
671
672 interface evalbyunit
673
674 function dcdatetimeevalbyunit(time, unit, unit_symbol) result(result)
675 use dc_types, only: dp, token
676 use dc_date_types, only: dc_datetime
677 real(dp):: result
678 type(dc_datetime), intent(in):: time
679 character(*), intent(in), optional:: unit
680 integer, intent(in), optional:: unit_symbol
681 end function dcdatetimeevalbyunit
682
683 function dcdifftimeevalbyunit(diff, unit, unit_symbol) result(result)
684 use dc_types, only: dp, token
685 use dc_date_types, only: dc_difftime
686 real(dp):: result
687 type(dc_difftime), intent(in):: diff
688 character(*), intent(in), optional:: unit
689 integer, intent(in), optional:: unit_symbol
690 end function dcdifftimeevalbyunit
691 end interface
692
693
694
695 interface tochar
696 function dcdatetimetochar(time) result(result) !:doc-priority 40:
697 use dc_types, only: string
698 use dc_date_types, only: dc_datetime
699 character(STRING) :: result
700 type(dc_datetime), intent(in):: time
701 end function dcdatetimetochar
702
703 function dcdifftimetochar(diff) result(result) !:doc-priority 60:
704 use dc_types, only: string
705 use dc_date_types, only: dc_difftime
706 character(STRING) :: result
707 type(dc_difftime), intent(in):: diff
708 end function dcdifftimetochar
709 end interface
710
711 interface tocharcal
712 function dcdatetimetocharcal(time, upcase) result(result)
713 use dc_types, only: token
714 use dc_date_types, only: dc_datetime
715 character(TOKEN) :: result
716 type(dc_datetime), intent(in):: time
717 logical, intent(in), optional:: upcase
718 end function dcdatetimetocharcal
719 end interface
720
721 interface operator(+)
722 type(dc_datetime) function dcdatetime_add_ft(diff, time) result(result)
724 type(dc_difftime), intent(in):: diff
725 type(dc_datetime), intent(in):: time
726 end function dcdatetime_add_ft
727
728 type(dc_datetime) function dcdatetime_add_tf(time, diff) result(result)
730 type(dc_datetime), intent(in):: time
731 type(dc_difftime), intent(in):: diff
732 end function dcdatetime_add_tf
733
734 type(dc_difftime) function dcdatetime_add_ff(diff1, diff2) result(result)
736 type(dc_difftime), intent(in):: diff1, diff2
737 end function dcdatetime_add_ff
738
739 type(dc_difftime) function dcdatetime_add_fd(diff, sec) result(result)
741 use dc_types, only: dp
742 type(dc_difftime), intent(in):: diff
743 real(dp), intent(in):: sec
744 end function dcdatetime_add_fd
745
746 type(dc_difftime) function dcdatetime_add_fr(diff, sec) result(result)
748 type(dc_difftime), intent(in):: diff
749 real, intent(in):: sec
750 end function dcdatetime_add_fr
751
752 type(dc_difftime) function dcdatetime_add_fi(diff, sec) result(result)
754 type(dc_difftime), intent(in):: diff
755 integer, intent(in):: sec
756 end function dcdatetime_add_fi
757 end interface
758
759 interface operator(-)
760 type(dc_datetime) function dcdatetime_sub_tf(time, diff) result(result) !:doc-priority 40:
762 type(dc_datetime), intent(in):: time
763 type(dc_difftime), intent(in):: diff
764 end function dcdatetime_sub_tf
765
766 type(dc_difftime) function dcdatetime_sub_tt(time1, time2) result(result)
768 type(dc_datetime), intent(in):: time1, time2
769 end function dcdatetime_sub_tt
770
771 type(dc_difftime) function dcdatetime_sub_ff(diff1, diff2) result(result)
773 type(dc_difftime), intent(in):: diff1, diff2
774 end function dcdatetime_sub_ff
775
776 type(dc_difftime) function dcdatetime_sub_fd(diff, sec) result(result)
778 use dc_types, only: dp
779 type(dc_difftime), intent(in):: diff
780 real(dp), intent(in):: sec
781 end function dcdatetime_sub_fd
782
783 type(dc_difftime) function dcdatetime_sub_fr(diff, sec) result(result)
785 type(dc_difftime), intent(in):: diff
786 real, intent(in):: sec
787 end function dcdatetime_sub_fr
788
789 type(dc_difftime) function dcdatetime_sub_fi(diff, sec) result(result)
791 type(dc_difftime), intent(in):: diff
792 integer, intent(in):: sec
793 end function dcdatetime_sub_fi
794 end interface
795
796 interface operator(*)
797 type(dc_difftime) function dcdatetime_mul_if(factor, diff) result(result) !:doc-priority 51:
799 integer, intent(in):: factor
800 type(dc_difftime), intent(in):: diff
801 end function dcdatetime_mul_if
802
803 type(dc_difftime) function dcdatetime_mul_fi(diff, factor) result(result) !:doc-priority 52:
805 type(dc_difftime), intent(in):: diff
806 integer, intent(in):: factor
807 end function dcdatetime_mul_fi
808
809 type(dc_difftime) function dcdatetime_mul_rf(factor, diff) result(result) !:doc-priority 61:
811 real, intent(in):: factor
812 type(dc_difftime), intent(in):: diff
813 end function dcdatetime_mul_rf
814
815 type(dc_difftime) function dcdatetime_mul_fr(diff, factor) result(result) !:doc-priority 62:
817 type(dc_difftime), intent(in):: diff
818 real, intent(in):: factor
819 end function dcdatetime_mul_fr
820
821 type(dc_difftime) function dcdatetime_mul_df(factor, diff) result(result) !:doc-priority 71:
822 use dc_types, only: dp
824 real(dp), intent(in):: factor
825 type(dc_difftime), intent(in):: diff
826 end function dcdatetime_mul_df
827
828 type(dc_difftime) function dcdatetime_mul_fd(diff, factor) result(result) !:doc-priority 72:
829 use dc_types, only: dp
831 type(dc_difftime), intent(in):: diff
832 real(dp), intent(in):: factor
833 end function dcdatetime_mul_fd
834
835 end interface
836
837 interface operator(/)
838 type(dc_difftime) function dcdatetime_div_fi(diff, denominator) result(result)
840 type(dc_difftime), intent(in):: diff
841 integer, intent(in):: denominator
842 end function dcdatetime_div_fi
843
844 type(dc_difftime) function dcdatetime_div_fr(diff, denominator) result(result)
846 type(dc_difftime), intent(in):: diff
847 real, intent(in):: denominator
848 end function dcdatetime_div_fr
849
850 type(dc_difftime) function dcdatetime_div_fd(diff, denominator) result(result)
852 use dc_types, only: dp
853 type(dc_difftime), intent(in):: diff
854 real(dp), intent(in):: denominator
855 end function dcdatetime_div_fd
856
857 real(dp) function dcdatetime_div_ff(diff1, diff2) result(result)
859 use dc_types, only: dp
860 type(dc_difftime), intent(in):: diff1, diff2
861 end function dcdatetime_div_ff
862 end interface
863
864 interface mod
865 type(dc_difftime) function dcdatetime_mod_ff(diff1, diff2) result(result)
866 use dc_date_types, only: dc_difftime
867 type(dc_difftime), intent(in):: diff1, diff2
868 end function dcdatetime_mod_ff
869 end interface
870
871 interface operator(==)
872 logical function dcdatetime_eq_tt(time1, time2) result(result) !:doc-priority 30:
874 type(dc_datetime), intent(in):: time1, time2
875 end function dcdatetime_eq_tt
876
877 logical function dcdatetime_eq_ff(diff1, diff2) result(result) !:doc-priority 40:
879 type(dc_difftime), intent(in):: diff1, diff2
880 end function dcdatetime_eq_ff
881
882 logical function dcdatetime_eq_if(i, diff) result(result) !:doc-priority 51:
884 type(dc_difftime), intent(in):: diff
885 integer, intent(in):: i
886 end function dcdatetime_eq_if
887
888 logical function dcdatetime_eq_fi(diff, i) result(result) !:doc-priority 52:
890 type(dc_difftime), intent(in):: diff
891 integer, intent(in):: i
892 end function dcdatetime_eq_fi
893
894 logical function dcdatetime_eq_rf(r, diff) result(result) !:doc-priority 61:
896 type(dc_difftime), intent(in):: diff
897 real, intent(in):: r
898 end function dcdatetime_eq_rf
899
900 logical function dcdatetime_eq_fr(diff, r) result(result) !:doc-priority 62:
902 type(dc_difftime), intent(in):: diff
903 real, intent(in):: r
904 end function dcdatetime_eq_fr
905
906 logical function dcdatetime_eq_df(d, diff) result(result) !:doc-priority 71:
907 use dc_types, only: dp
909 type(dc_difftime), intent(in):: diff
910 real(dp), intent(in):: d
911 end function dcdatetime_eq_df
912
913 logical function dcdatetime_eq_fd(diff, d) result(result) !:doc-priority 72:
914 use dc_types, only: dp
916 type(dc_difftime), intent(in):: diff
917 real(dp), intent(in):: d
918 end function dcdatetime_eq_fd
919
920 end interface
921
922
923 interface operator(>)
924 logical function dcdatetime_gt_tt(time1, time2) result(result) !:doc-priority 30:
926 type(dc_datetime), intent(in):: time1, time2
927 end function dcdatetime_gt_tt
928
929 logical function dcdatetime_gt_ff(diff1, diff2) result(result) !:doc-priority 40:
931 type(dc_difftime), intent(in):: diff1, diff2
932 end function dcdatetime_gt_ff
933
934 logical function dcdatetime_gt_fi(diff, factor) result(result) !:doc-priority 42:
936 type(dc_difftime), intent(in):: diff
937 integer, intent(in):: factor
938 end function dcdatetime_gt_fi
939
940 logical function dcdatetime_gt_if(factor, diff) result(result) !:doc-priority 44:
942 integer, intent(in):: factor
943 type(dc_difftime), intent(in):: diff
944 end function dcdatetime_gt_if
945 end interface
946
947 interface operator(<)
948 logical function dcdatetime_lt_tt(time1, time2) result(result) !:doc-priority 30:
950 type(dc_datetime), intent(in):: time1, time2
951 end function dcdatetime_lt_tt
952
953 logical function dcdatetime_lt_ff(diff1, diff2) result(result) !:doc-priority 40:
955 type(dc_difftime), intent(in):: diff1, diff2
956 end function dcdatetime_lt_ff
957
958 logical function dcdatetime_lt_fi(diff, factor) result(result) !:doc-priority 42:
960 type(dc_difftime), intent(in):: diff
961 integer, intent(in):: factor
962 end function dcdatetime_lt_fi
963
964 logical function dcdatetime_lt_if(factor, diff) result(result) !:doc-priority 44:
966 integer, intent(in):: factor
967 type(dc_difftime), intent(in):: diff
968 end function dcdatetime_lt_if
969 end interface
970
971 interface operator(>=)
972 logical function dcdatetime_ge_tt(time1, time2) result(result) !:doc-priority 30:
974 type(dc_datetime), intent(in):: time1, time2
975 end function dcdatetime_ge_tt
976
977 logical function dcdatetime_ge_ff(diff1, diff2) result(result) !:doc-priority 40:
979 type(dc_difftime), intent(in):: diff1, diff2
980 end function dcdatetime_ge_ff
981
982 logical function dcdatetime_ge_fi(diff, factor) result(result) !:doc-priority 42:
984 type(dc_difftime), intent(in):: diff
985 integer, intent(in):: factor
986 end function dcdatetime_ge_fi
987
988 logical function dcdatetime_ge_if(factor, diff) result(result) !:doc-priority 44:
990 integer, intent(in):: factor
991 type(dc_difftime), intent(in):: diff
992 end function dcdatetime_ge_if
993 end interface
994
995 interface operator(<=)
996 logical function dcdatetime_le_tt(time1, time2) result(result) !:doc-priority 30:
998 type(dc_datetime), intent(in):: time1, time2
999 end function dcdatetime_le_tt
1000
1001 logical function dcdatetime_le_ff(diff1, diff2) result(result) !:doc-priority 40:
1003 type(dc_difftime), intent(in):: diff1, diff2
1004 end function dcdatetime_le_ff
1005
1006 logical function dcdatetime_le_fi(diff, factor) result(result) !:doc-priority 42:
1008 type(dc_difftime), intent(in):: diff
1009 integer, intent(in):: factor
1010 end function dcdatetime_le_fi
1011
1012 logical function dcdatetime_le_if(factor, diff) result(result) !:doc-priority 44:
1014 integer, intent(in):: factor
1015 type(dc_difftime), intent(in):: diff
1016 end function dcdatetime_le_if
1017 end interface
1018
1019 interface max
1020 type(dc_datetime) function dcdatetime_max_tt(time1, time2) result(result) !:doc-priority 30:
1022 type(dc_datetime), intent(in):: time1, time2
1023 end function dcdatetime_max_tt
1024
1025 type(dc_difftime) function dcdatetime_max_ff(diff1, diff2) result(result) !:doc-priority 40:
1027 type(dc_difftime), intent(in):: diff1, diff2
1028 end function dcdatetime_max_ff
1029 end interface
1030
1031 interface min
1032 type(dc_datetime) function dcdatetime_min_tt(time1, time2) result(result) !:doc-priority 30:
1034 type(dc_datetime), intent(in):: time1, time2
1035 end function dcdatetime_min_tt
1036
1037 type(dc_difftime) function dcdatetime_min_ff(diff1, diff2) result(result) !:doc-priority 40:
1039 type(dc_difftime), intent(in):: diff1, diff2
1040 end function dcdatetime_min_ff
1041 end interface
1042
1043 !-----------------------------------------------
1044 ! 後方互換用
1045 ! For backward compatibility
1046 interface create
1047 subroutine dcdatetimecreate1_bc(time, &
1048 & year, mon, day, hour, min, sec, &
1049 & zone, caltype, day_seconds, err) !:doc-priority 40:
1050 use dc_types, only: dp
1051 use dc_date_types, only: dc_datetime
1052 use dc_scaledsec, only: dc_scaled_sec
1053 type(dc_datetime), intent(out):: time
1054 integer, intent(in), optional:: year, mon, day, hour, min
1055 real(DP),intent(in), optional:: sec, day_seconds
1056 character(*), intent(in), optional :: zone
1057 integer, intent(in), optional:: caltype
1058 logical, intent(out), optional:: err
1059 end subroutine dcdatetimecreate1_bc
1060
1061 subroutine dcdifftimecreate1_bc(diff, &
1062 & year, mon, day, hour, min, sec, day_seconds ) !:doc-priority 60:
1063 use dc_types, only: dp
1064 use dc_date_types, only: dc_difftime
1065 use dc_scaledsec, only: dc_scaled_sec
1066 type(dc_difftime), intent(out) :: diff
1067 integer, intent(in), optional:: year, mon, day, hour, min
1068 real(DP),intent(in), optional:: sec, day_seconds
1069 end subroutine dcdifftimecreate1_bc
1070
1071 subroutine dcdifftimecreate2_bc(diff, value, unit, unit_symbol, err) !:doc-priority 70:
1072 use dc_types, only: dp
1073 use dc_date_types, only: dc_difftime
1074 type(dc_difftime), intent(out) :: diff
1075 real(DP), intent(in) :: value
1076 character(*), intent(in) :: unit
1077 integer, intent(in), optional :: unit_symbol
1078 logical, intent(out), optional :: err
1079 end subroutine dcdifftimecreate2_bc
1080 end interface
1081
1082 interface putline
1083 subroutine dcdatetimeputline_bc(time, unit)
1084 use dc_date_types, only: dc_datetime
1085 type(dc_datetime), intent(in) :: time
1086 integer, intent(in), optional :: unit
1087 end subroutine dcdatetimeputline_bc
1088
1089 subroutine dcdifftimeputline_bc(diff, unit)
1090 use dc_date_types, only: dc_difftime
1091 type(dc_difftime), intent(in) :: diff
1092 integer, intent(in), optional :: unit
1093 end subroutine dcdifftimeputline_bc
1094 end interface
1095
1096end module dc_date_generic
type(dc_difftime) function dcdatetime_add_fd(diff, sec)
type(dc_datetime) function dcdatetime_add_tf(time, diff)
type(dc_difftime) function dcdatetime_add_ff(diff1, diff2)
type(dc_datetime) function dcdatetime_add_ft(diff, time)
利用者定義演算子 (+) のための関数
type(dc_difftime) function dcdatetime_add_fr(diff, sec)
type(dc_difftime) function dcdatetime_add_fi(diff, sec)
subroutine dcdatetimecreater(time, sec)
subroutine dcdatetimecreate1_bc(time, year, mon, day, hour, min, sec, zone, caltype, day_seconds, err)
subroutine dcdifftimecreated(diff, sec)
subroutine dcdifftimecreate2r(diff, value, unit, unit_symbol, err)
subroutine dcdifftimecreatei(diff, sec)
subroutine dcdifftimecreate2d(diff, value, unit, unit_symbol, err)
subroutine dcdifftimecreater(diff, sec)
subroutine dcdifftimecreate1_bc(diff, year, mon, day, hour, min, sec, day_seconds)
subroutine dcdatetimecreatei(time, sec)
subroutine dcdatetimecreate1(time, year, mon, day, hour, min, sec, zone, zone_hour, zone_min, caltype, caltype_str, day_seconds, sclyear, sclmon, sclday, sclsec, err)
dc_date_types::DC_DATETIME, dc_date_types::DC_DIFFTIME 型変数の生成
subroutine dcdatetimecreated(time, sec)
subroutine dcdifftimecreate2i(diff, value, unit, unit_symbol, err)
subroutine dcdifftimecreate2_bc(diff, value, unit, err)
subroutine dcdifftimecreate1(diff, year, mon, day, hour, min, sec, day_seconds, nondim, sclyear, sclmon, sclday, sclsec)
type(dc_difftime) function dcdatetime_div_fi(diff, denominator)
利用者定義演算子 (/) のための関数
type(dc_difftime) function dcdatetime_div_fr(diff, denominator)
real(dp) function dcdatetime_div_ff(diff1, diff2)
type(dc_difftime) function dcdatetime_div_fd(diff, denominator)
logical function dcdatetime_eq_df(d, diff)
logical function dcdatetime_eq_fd(diff, d)
logical function dcdatetime_eq_ff(diff1, diff2)
logical function dcdatetime_eq_tt(time1, time2)
利用者定義演算子 (==) のための関数
logical function dcdatetime_eq_if(i, diff)
logical function dcdatetime_eq_fr(diff, r)
logical function dcdatetime_eq_rf(r, diff)
logical function dcdatetime_eq_fi(diff, i)
subroutine dcdifftimeeval1(diff, year, mon, day, hour, min, sec, nondim, sclyear, sclmon, sclday, sclsec, sclnondim, err)
type(dc_scaled_sec) function dcdifftimeevalsclsec(diff)
real(dp) function dcdifftimeevalbyunit(diff, unit, unit_symbol)
real(dp) function dcdatetimeevalhour(time)
subroutine dcdatetimeeval1(time, year, mon, day, hour, min, sec, caltype, zone, sclyear, sclmon, sclday, sclsec)
real(dp) function dcdatetimeevalsec(time)
real(dp) function dcdifftimeevalnondim(diff)
real(dp) function dcdatetimeevalday(time)
real(dp) function dcdatetimeevalbyunit(time, unit, unit_symbol)
real(dp) function dcdifftimeevalhour(diff)
real(dp) function dcdifftimeevalmin(diff)
real(dp) function dcdatetimeevalmin(time)
type(dc_scaled_sec) function dcdatetimeevalsclsec(time)
real(dp) function dcdifftimeevalday(diff)
real(dp) function dcdifftimeevalsec(diff)
logical function dcdatetime_ge_tt(time1, time2)
利用者定義演算子 (>=) のための関数
logical function dcdatetime_ge_ff(diff1, diff2)
logical function dcdatetime_ge_if(factor, diff)
logical function dcdatetime_ge_fi(diff, factor)
logical function dcdatetime_gt_tt(time1, time2)
利用者定義演算子 (>) のための関数
logical function dcdatetime_gt_if(factor, diff)
logical function dcdatetime_gt_fi(diff, factor)
logical function dcdatetime_gt_ff(diff1, diff2)
logical function dcdatetime_le_if(factor, diff)
logical function dcdatetime_le_tt(time1, time2)
利用者定義演算子 (<=) のための関数
logical function dcdatetime_le_ff(diff1, diff2)
logical function dcdatetime_le_fi(diff, factor)
logical function dcdatetime_lt_ff(diff1, diff2)
logical function dcdatetime_lt_if(factor, diff)
logical function dcdatetime_lt_fi(diff, factor)
logical function dcdatetime_lt_tt(time1, time2)
利用者定義演算子 (<) のための関数
type(dc_datetime) function dcdatetime_max_tt(time1, time2)
利用者定義関数 max
type(dc_difftime) function dcdatetime_max_ff(diff1, diff2)
type(dc_difftime) function dcdatetime_min_ff(diff1, diff2)
type(dc_datetime) function dcdatetime_min_tt(time1, time2)
利用者定義関数 min
type(dc_difftime) function dcdatetime_mod_ff(diff1, diff2)
利用者定義関数 mod の実体
type(dc_difftime) function dcdatetime_mul_if(factor, diff)
利用者定義演算子 (*) のための関数
type(dc_difftime) function dcdatetime_mul_rf(factor, diff)
type(dc_difftime) function dcdatetime_mul_df(factor, diff)
type(dc_difftime) function dcdatetime_mul_fd(diff, factor)
type(dc_difftime) function dcdatetime_mul_fr(diff, factor)
type(dc_difftime) function dcdatetime_mul_fi(diff, factor)
integer function dcdatetimeparseunits(str)
単位を表す文字列の解析
subroutine dcdifftimeputline_bc(diff, unit)
subroutine dcdatetimeputline_bc(time, unit)
subroutine dcdatetimesetcaltype(caltype)
暦法の設定
subroutine dcdatetimesetsecofday(sec)
1日の秒数の設定
type(dc_difftime) function dcdatetime_sub_fd(diff, sec)
type(dc_datetime) function dcdatetime_sub_tf(time, diff)
利用者定義演算子 (-) のための関数
type(dc_difftime) function dcdatetime_sub_ff(diff1, diff2)
type(dc_difftime) function dcdatetime_sub_fi(diff, sec)
type(dc_difftime) function dcdatetime_sub_fr(diff, sec)
type(dc_difftime) function dcdatetime_sub_tt(time1, time2)
character(token) function dcdatetimetocharcal(time, upcase)
character(string) function dcdatetimetochar(time)
dc_date_types::DC_DATETIME, dc_date_types::DC_DIFFTIME 型変数の文字変換
character(string) function dcdifftimetochar(diff)
logical function dcdatetimevalidcaltype(caltype)
暦法が dc_date_types で有効なものかどうかを調べる
type(dc_difftime) function dcdatetimezonetodiff(zone)
logical function dcdatetimevalidzone(zone)
subroutine dcdatetimesetzone(time, zone, err)
タイムゾーンに関する手続き
dc_date より提供される手続の引用仕様宣言
日付・時刻に関する構造データ型と定数
省略可能な制御パラメータの判定
logical function, public present_and_not_empty(arg)
精密な時間演算のための秒スケールモジュール
種別型パラメタを提供します。
Definition dc_types.f90:55
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
Definition dc_types.f90:128
integer, parameter, public dp
倍精度実数型変数
Definition dc_types.f90:92
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition dc_types.f90:137