501 use netcdf,
only: nf90_enotvar, nf90_einval
505 public :: nf90_enotvar, nf90_einval
510 integer,
private,
save :: errno =
dc_noerr
511 integer,
private,
save :: cause_int =
dc_noerr
512 logical,
private,
save :: cause_int_valid = .false.
513 character(STRING),
private,
save :: cause_string =
""
514 character(STRING),
private,
save :: cause_location =
""
634 use netcdf,
only: nf90_strerror
635 character(len = *),
intent(out):: msg
636 character(len = STRING):: message
637 character(len = 20):: errno_c
638 character(len = 20):: cause_int_c
642 msg =
' function not implemented'
648 write(message,
"(': dimension number', i4, ' is out of range')") cause_int
651 msg =
'(' // trim(cause_string) //
'): unknown dimension name'
653 msg =
' variable not opened'
655 msg =
' allocate/deallocate error'
657 msg =
' dimension variable has no dimension'
659 msg =
' dimension variable has many dimensions'
661 msg =
' dimension variable has another dimension'
663 msg =
' specified dimensional variable not on the same file'
665 msg =
' arguments (' // trim(cause_string) //
') array size mismatch'
667 msg =
' dimension matching failed'
669 msg =
' variable already limited'
671 msg =
' variable type not supported'
673 msg =
' character length not enough'
675 msg =
' NC_UNLIMITED dimension is not found'
677 msg =
' invalid attribute name'
679 msg =
' invalid allocated size'
681 msg =
' rank of data and argument are mismatch (' // trim(cause_string) //
')'
683 msg =
' URL (' // trim(cause_string) //
') is not found'
685 msg =
' (' // trim(cause_string) //
') is not gtool4 comma-graphy (ex. "time=100.0,x=10:20,y=^1:^5")'
691 msg =
' invalid GrADS file'
697 msg =
' object (' // trim(cause_string) //
') is not initialized'
699 msg =
' object (' // trim(cause_string) //
') is already initialized'
701 msg =
' unit (' // trim(cause_string) //
') is invalid'
703 write(message,
'(" calendar type (", i4, ") is invalid")') cause_int
706 msg =
' time zone (' // trim(cause_string) //
') is invalid'
708 msg =
' filename is empty'
710 msg =
' file open mode (' // trim(cause_string) //
') is invalid'
712 msg =
' available unit number is not found within (' // trim(cause_string) //
')'
714 msg =
' file (' // trim(cause_string) //
') is not found'
716 msg =
' file (' // trim(cause_string) //
') is not readable'
718 msg =
' file (' // trim(cause_string) //
') is not writable'
720 msg =
' negative value is invalid for (' // trim(cause_string) //
')'
722 msg =
' lack of arguments (' // trim(cause_string) //
')'
724 msg =
' argument (' // trim(cause_string) //
') is not associated'
726 msg =
' entry of (' // trim(cause_string) //
') is not found'
728 msg =
' dimensional time can not be converted into nondimensional time'
730 msg =
' nondimensional time can not be converted into dimensional time'
732 msg =
' number is too large for time'
734 msg =
' invalid expression of date'
736 msg =
' calendar and date are inconsistent'
742 msg =
' operation (' // trim(cause_string) //
') not allowed in data mode'
744 msg =
' operation (' // trim(cause_string) //
') not allowed in define mode'
746 msg =
' different intervals are applied to a file (' // trim(cause_string) //
')'
748 msg =
' name (' // trim(cause_string) //
') is invalid'
750 msg =
' GT_HISTORY correspond to (' // trim(cause_string) //
') is not terminated'
752 msg =
' (' // trim(cause_string) //
') does not depend on time'
754 msg =
' variable name (' // trim(cause_string) //
') is invalid'
756 msg =
' time dimension is not found'
758 msg =
' axis or weight (' // trim(cause_string) //
') is not found'
760 msg =
' variable name (' // trim(cause_string) //
') is already used'
762 msg =
' already register of variables is fixed by (' // trim(cause_string) //
')'
764 msg =
' slice options are invalid (' // trim(cause_string) //
')'
766 msg =
' invalid newfile interval (' // trim(cause_string) //
')'
768 write(message,
'("(", i4, ")")') cause_int
770 msg =
' variable (' // trim(cause_string) //
') depends on ' // trim(message) //
' dimensions'
772 msg =
' (' // trim(cause_string) //
') can not be divided'
774 msg =
' terminus options are invalid (' // trim(cause_string) //
')'
776 msg =
' origin options are invalid (' // trim(cause_string) //
')'
778 msg =
' data of axis (' // trim(cause_string) //
') for MPI is lack'
786 if (len(trim(adjustl(cause_string))) < 1)
then
787 cause_string =
'Unknown error'
789 if (cause_int_valid)
then
790 write(cause_int_c,
"(i8)") cause_int
791 msg = trim(cause_string) //
' (' // trim(adjustl(cause_int_c)) //
')'
793 msg = trim(cause_string)
798 write(errno_c,
"(i8)") errno
799 msg =
'*** ERROR (Code ' // trim(adjustl(errno_c)) // &
800 &
') [' // trim(cause_location) //
'] *** ' // &
805 if (len(cause_string) > 0)
then
806 message = nf90_strerror(errno)
807 write(errno_c,
"(i8)") errno
808 msg =
'*** ERROR (Code ' // trim(adjustl(errno_c)) // &
809 &
') [' // trim(cause_location) // &
810 &
'(' // trim(cause_string) //
')] *** ' // &
812 else if (cause_int_valid)
then
813 message = nf90_strerror(errno)
814 write(errno_c,
"(i8)") errno
815 write(cause_int_c,
"(i8)") cause_int
816 msg =
'*** ERROR (Code ' // trim(adjustl(errno_c)) // &
817 &
') [' // trim(cause_location) // &
818 &
'(' // trim(adjustl(cause_int_c)) //
')] *** ' // &
821 message = nf90_strerror(errno)
822 write(errno_c,
"(i8)") errno
823 msg =
'*** ERROR (Code ' // trim(adjustl(errno_c)) // &
824 &
') [' // trim(cause_location) //
'] *** ' // &
889 integer,
intent(in) :: number
892 character(len = *),
intent(in) :: where
895 logical,
intent(out),
optional :: err
911 character(len = *),
intent(in),
optional :: cause_c
914 integer,
intent(in),
optional :: cause_i
918 if (
present(err))
then
924 cause_location =
where
925 if (
present(cause_c))
then
926 cause_string = trim(cause_c)
930 if (
present(cause_i))
then
932 cause_int_valid = .true.
934 cause_int_valid = .false.
941subroutine dumperror()
952 character(len = STRING):: message
956end subroutine dumperror
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public gt_ebadhistory
integer, parameter, public gt_ebadvar
integer, parameter, public usr_errno
integer, parameter, public gt_enomatchdim
integer, parameter, public gt_edimotherdim
integer, parameter, public gt_echarshort
integer, parameter, public gt_eotherfile
integer, parameter, public dc_ebadunit
integer, parameter, public hst_enottermgthist
integer, parameter, public gt_enomem
integer, parameter, public dc_enoassoc
integer, parameter, public hst_ebadslice
integer, parameter, public gr_enotgr
integer, parameter, public dc_enodimtime
integer function, public errorcode()
integer, parameter, public hst_ebadvarname
integer, parameter, public dc_enotinit
integer, parameter, public dc_ealreadyinit
integer, parameter, public gt_enounlimitdim
integer, parameter, public gt_efake
integer, parameter, public dc_ebadfileopmode
integer, parameter, public hst_eintfile
integer, parameter, public dc_earglack
integer, parameter, public gt_edimnodim
integer, parameter, public hst_enoaxisname
integer, parameter, public hst_ebadorigin
integer, parameter, public gt_ebaddimname
integer, parameter, public dc_noerr
integer, parameter, public dc_enegative
integer, parameter, public dc_etoolargetime
integer, parameter, public gt_erankmismatch
integer, parameter, public hst_ealreadyregvarfix
integer, parameter, public hst_eindefine
integer, parameter, public dc_enofileread
integer, parameter, public gt_ebadgt4commagraphy
integer, parameter, public hst_ebadterminus
integer, parameter, public hst_enodependtime
integer, parameter, public gt_eargsizemismatch
integer, parameter, public gt_ebadallocatesize
integer, parameter, public gt_edimmultidim
integer, parameter, public gt_ebadattrname
integer, parameter, public dc_efilenameempty
integer, parameter, public gt_elimited
integer, parameter, public gt_enotvar
integer, parameter, public hst_emaxdimsdepended
integer, parameter, public hst_eindivisible
integer, parameter, public dc_ebaddate
integer, parameter, public hst_empinoaxisdata
integer, parameter, public dc_ebadcaltype
integer, parameter, public hst_evarinuse
integer, parameter, public dc_ebadtimezone
integer, parameter, public hst_enotindefine
integer, parameter, public dc_enofilewrite
integer, parameter, public dc_edimtime
integer, parameter, public dc_enofileexist
integer, parameter, public gt_enoturl
integer, parameter, public gt_enomoredims
integer, parameter, public dc_enounitnum
integer, parameter, public hst_ebadname
integer, parameter, public dc_enoentry
subroutine, public geterrormessage(msg)
integer, parameter, public hst_enotimedim
integer, parameter, public dc_einconsistcaldate
integer, parameter, public hst_ebadnewfileint
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
subroutine, public abortprogram(message)