gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
dc_error Module Reference

エラー処理用モジュール More...

Data Types

interface  dumperror
 手続引用仕様. いずれ差し替えられるように外部関数にしておく。 More...

Functions/Subroutines

integer function, public errorcode ()
subroutine, public geterrormessage (msg)
subroutine, public storeerror (number, where, err, cause_c, cause_i)

Variables

integer, parameter, public dc_noerr = 0
 エラー等を保持
integer, parameter, public gt_efake = -100
 正のエラー番号は libc システムエラーメッセージのために あけてある。システム依存性が大きく、非常に大きな数値も 用いられるので空き領域を確保するのは困難である。
integer, parameter, public gt_enomoredims = -101
 -101 以下: データ構造のエラー
integer, parameter, public gt_edimnodim = -102
integer, parameter, public gt_edimmultidim = -103
integer, parameter, public gt_edimotherdim = -104
integer, parameter, public gt_ebaddimname = -105
integer, parameter, public gt_enotvar = -106
integer, parameter, public gt_enomem = -107
integer, parameter, public gt_eotherfile = -108
integer, parameter, public gt_eargsizemismatch = -109
integer, parameter, public gt_enomatchdim = -110
integer, parameter, public gt_elimited = -111
integer, parameter, public gt_ebadvar = -112
integer, parameter, public gt_echarshort = -113
integer, parameter, public gt_enounlimitdim = -114
integer, parameter, public gt_ebadattrname = -115
integer, parameter, public gt_ebadhistory = -116
integer, parameter, public gt_ebadallocatesize = -117
integer, parameter, public gt_erankmismatch = -118
integer, parameter, public gt_enoturl = -119
integer, parameter, public gt_ebadgt4commagraphy = -120
integer, parameter, public gr_enotgr = -300
 -300 以下: GrADS 入出力のエラー
integer, parameter, public dc_enotinit = -400
 -400 以下: dc ユーティリティのエラー
integer, parameter, public dc_ealreadyinit = -401
integer, parameter, public dc_ebadunit = -402
integer, parameter, public dc_ebadcaltype = -403
integer, parameter, public dc_ebadtimezone = -404
integer, parameter, public dc_efilenameempty = -405
integer, parameter, public dc_ebadfileopmode = -406
integer, parameter, public dc_enounitnum = -407
integer, parameter, public dc_enofileexist = -408
integer, parameter, public dc_enofileread = -409
integer, parameter, public dc_enofilewrite = -410
integer, parameter, public dc_enegative = -411
integer, parameter, public dc_earglack = -412
integer, parameter, public dc_enoassoc = -413
integer, parameter, public dc_enoentry = -414
integer, parameter, public dc_enodimtime = -415
integer, parameter, public dc_edimtime = -416
integer, parameter, public dc_etoolargetime = -417
integer, parameter, public dc_ebaddate = -418
integer, parameter, public dc_einconsistcaldate = -419
integer, parameter, public hst_enotindefine = -500
 -500 以下: データ入出力層のエラー
integer, parameter, public hst_eindefine = -501
integer, parameter, public hst_eintfile = -502
integer, parameter, public hst_ebadname = -503
integer, parameter, public hst_enottermgthist = -504
integer, parameter, public hst_enodependtime = -505
integer, parameter, public hst_ebadvarname = -506
integer, parameter, public hst_enotimedim = -507
integer, parameter, public hst_enoaxisname = -508
integer, parameter, public hst_evarinuse = -509
integer, parameter, public hst_ealreadyregvarfix = -510
integer, parameter, public hst_ebadslice = -511
integer, parameter, public hst_ebadnewfileint = -512
integer, parameter, public hst_emaxdimsdepended = -513
integer, parameter, public hst_eindivisible = -514
integer, parameter, public hst_ebadterminus = -515
integer, parameter, public hst_ebadorigin = -516
integer, parameter, public hst_empinoaxisdata = -517
integer, parameter, public usr_errno = -1000
 -1000 以下: ユーザー定義

Detailed Description

エラー処理用モジュール

Author
Youhei SASAKI, Eizi TOYODA, Yasuhiro MORIKAWA

プログラムの部品は必ずエラーの取り扱いを明確に規定すべきものです。 エラーとは当該部品への入力が不適切であるとか、 期待される動作をすることができないといった事態を指します。

gtool5 ライブラリがユーザに提供する手続 (手続とはサブルーチンまたは関数の総称) はほとんどの場合、 以下の 2 つの方式のいずれかで呼び出し元にエラーを報告します。

  • エラーが発生すると適切なメッセージを表示してプログラム終了
  • 論理型の省略できる引数 err が与えられた場合は、 エラー時にはそれを .true. にします。 err が省略された場合は上に同じ。

これらの処理はすべて dc_error モジュールの StoreError サブルーチンで行っています。引用仕様などに関しては StoreError を参照してください。

Error Code List / エラーコード一覧

gtool5 ライブラリにコードを追加するプログラマは適切な エラーコードで StoreError を呼び出すようにしなければなりません。 そこで、 新しいエラーコードを定義する必要があるかどうかを 判定するために、 エラーコードの値と対応するメッセージを 以下に一覧します。 エラーコードニーモニックを使用するためには、 NF_E で始まる名前については netcdf_f77 モジュールを引用するか include 'netcdf.inc' を行い(後者は推奨しません)、 GT_E, DC_E, HST_E で始まる名前については dc_error モジュールを引用してください。 また USR_ERRNO 番より小さい値は、 各々のユーザが適宜エラーコードを 定義して利用するために空けてあります。

エラーではない状態を表す非エラーコードは DC_NOERR です。

エラーコードの数値の欄を設けたのは、新たなエラーコードを 割り当てる際の指針を示すためです。 ソースコードにはエラーコードをニーモニックで与えるべきであり、 数値をハードコードすることは厳に慎んで下さい。

Unused codes / 利用しないコード

正の整数値はエラーコードとして使用しません。

NetCDF ライブラリは libc のエラーコード errno を返す可能性があり、 errno の数値には移植性がないため、全ての正の整数値は errno の仕様のために予約されているべきだからです。

Non error code / 非エラーコード

以下の非エラーコードに関しては dc_error モジュールを引用することで 利用してください。

数値 ニーモニック
0 DC_NOERR

Error codes for netCDF / netCDF に関するエラーコード

以下のエラーコードに関しては netcdf_f77 モジュールを引用することで 利用してください。

数値 ニーモニック エラーメッセージ
0 NF_NOERR No Error (非エラーコードです)
-33 NF_EBADID Not a netCDF id
-34 NF_ENFILE Too many netCDF files open
-35 NF_EEXIST netCDF file exists && NC_NOCLOBBER
-36 NF_EINVAL Invalid argument
-37 NF_EPERM Write to read only
-38 NF_ENOTINDEFINE Operation not allowed in data mode
-39 NF_EINDEFINE Operation not allowed in define mode
-40 NF_EINVALCOORDS Index exceeds dimension bound
-41 NF_EMAXDIMS NF_MAX_DIMS exceeded
-42 NF_ENAMEINUSE String match to name in use
-43 NF_ENOTATT Attribute not found
-44 NF_EMAXATTS NC_MAX_ATTRS exceeded
-45 NF_EBADTYPE Not a netCDF data type or _FillValue type mismatch
-46 NF_EBADDIM Invalid dimension id or name
-47 NF_EUNLIMPOS NC_UNLIMITED in the wrong index
-48 NF_EMAXVARS NF_MAX_VARS exceeded
-49 NF_ENOTVAR Variable not found
-50 NF_EGLOBAL Action prohibited on NC_GLOBAL varid
-51 NF_ENOTNC Not a netCDF file
-52 NF_ESTS In Fortran, string too short
-53 NF_EMAXNAME NC_MAX_NAME exceeded
-54 NF_EUNLIMIT NC_UNLIMITED size already in use
-55 NF_ENORECVARS NC_rec op when there are no record vars
-56 NF_ECHAR Attempt to convert between text & numbers
-57 NF_EEDGE Edge+start exceeds dimension bound
-58 NF_ESTRIDE Illegal stride
-59 NF_EBADNAME Attribute or variable name contains illegal characters
-60 NF_ERANGE Numeric conversion not representable
-61 NF_ENOMEM Memory allocation (malloc) failure
-62 NF_EVARSIZE One or more variable sizes violate format constraints
-63 NF_EDIMSIZE Invalid dimension size
-64 NF_ETRUNC File likely truncated or possibly corrupted
-62〜-99 将来の netCDF の拡張のための gtool5 の予約領域

Error codes for gtdata / gtool5 のデータ構造 (gtdata) に関するエラーコード

以下のエラーコードに関しては dc_error モジュールを引用することで 利用してください。

数値 ニーモニック エラーメッセージ
-100 GT_EFAKE function not implemented
-101 GT_ENOMOREDIMS dimension number d is out of range
-102 GT_EDIMNODIM dimension variable has no dimension
-103 GT_EDIMMULTIDIM dimension variable has many dimensions
-104 GT_EDIMOTHERDIM dimension variable has another dimension
-105 GT_EBADDIMNAME cause_c: unknown dimension name
-106 GT_ENOTVAR variable not opened
-107 GT_ENOMEM allocate/deallocate error
-108 GT_EOTHERFILE specified dimensional variable not on the same file
-109 GT_EARGSIZEMISMATCH arguments (cause_c) array size mismatch
-110 GT_ENOMATCHDIM dimension matching failed
-111 GT_ELIMITED variable already limited
-112 GT_EBADVAR variable type not supported
-113 GT_ECHARSHORT character length not enough
-114 GT_ENOUNLIMITDIM NC_UNLIMITED dimension is not found
-115 GT_EBADATTRNAME invalid attribute name
-116 GT_EBADHISTORY invalid GT_HISTORY variable
-117 GT_EBADALLOCATESIZE invalid allocated size
-118 GT_ERANKMISMATCH rank of data and argument is mismatch (cause_c)
-119 GT_ENOTURL URL (cause_c) is not found
-120 GT_EBADGT4COMMAGRAPHY (cause_c) is not gtool4 comma-graphy
〜-299 将来の gtdata 層の拡張のための予約

Error codes for GrADS data I/O / GrADS データ入出力に関するエラーコード

以下のエラーコードに関しては dc_error モジュールを引用することで 利用してください。

数値 ニーモニック エラーメッセージ
-300 GR_ENOTGR invalid GrADS file
〜-399 将来の GrADS data 入出力層の拡張のための予約

Error codes for DC utilities / DC ユーティリティ用エラーコード

以下のエラーコードに関しては dc_error モジュールを引用することで 利用してください。

数値 ニーモニック エラーメッセージ
-400 DC_ENOTINIT object (cause_c) is not initialized
-401 DC_EALREADYINIT object (cause_c) is already initialized
-402 DC_EBADUNIT unit (cause_c) is invalid
-403 DC_EBADCALTYPE calendar type (cause_i) is invalid
-404 DC_EBADTIMEZONE time zone (cause_c) is invalid
-405 DC_EFILENAMEEMPTY filename is empty
-406 DC_EBADFILEOPMODE file open mode (cause_c) is invalid
-407 DC_ENOUNITNUM available unit number is not found within (cause_c)
-408 DC_ENOFILEEXIST file (cause_c) is not found
-409 DC_ENOFILEREAD file (cause_c) is not readable
-410 DC_ENOFILEWRITE file (cause_c) is not writable
-411 DC_ENEGATIVE negative value is invalid for (cause_c)
-412 DC_EARGLACK lack of arguments (cause_c)
-413 DC_ENOASSOC argument (cause_c) is not associated
-414 DC_ENOENTRY entry of (cause_c) is not found
-415 DC_ENODIMTIME dimensional time can not be converted into nondimensional time
-416 DC_EDIMTIME nondimensional time can not be converted into dimensional time
-417 DC_ETOOLARGETIME number is too large for time
-418 DC_EBADDATE invalid expression of date
-419 DC_EINCONSISTCALDATE calendar and date are inconsistent
-420〜-499 将来の DC ユーティリティの拡張のための予約

Error codes for data I/O layer / データ入出力層エラーコード

以下のエラーコードに関しては dc_error モジュールを引用することで 利用してください。

数値 ニーモニック エラーメッセージ
-500 HST_ENOTINDEFINE operation (cause_c) not allowed in data mode
-501 HST_EINDEFINE operation (cause_c) not allowed in define mode
-502 HST_EINTFILE different intervals are applied to a file (cause_c)
-503 HST_EBADNAME name (cause_c) is invalid
-504 HST_ENOTTERMGTHIST GT_HISTORY correspond to (cause_c) is not terminated
-505 HST_ENODEPENDTIME (cause_c) does not depend on time
-506 HST_EBADVARNAME variable name (cause_c) is invalid
-507 HST_ENOTIMEDIM time dimension is not found
-508 HST_ENOAXISNAME axis or weight (cause_c) is not found
-509 HST_EVARINUSE variable name (cause_c) is already used
-510 HST_EALREADYREGVARFIX already register of variables is fixed by (cause_c)
-511 HST_EBADSLICE slice options are invalid (cause_c)
-512 HST_EBADNEWFILEINT invalid newfile interval (cause_c)
-513 HST_EMAXDIMSDEPENDED variable (cause_c) depends on (cause_i) dimensions
-514 HST_EINDIVISIBLE (cause_c) can not be divided
-515 HST_EBADTERMINUS terminus options are invalid (cause_c)
-516 HST_EBADORIGIN origin options are invalid (cause_c)
-517 HST_EMPINOAXISDATA data of axis (cause_c) for MPI is lack

Reserved error codes / gtool5 の将来の拡張のために予約してあるエラーコード

以下のエラーコードは今後の拡張も考えて予約してある部分です。

数値 説明
-600〜-999 将来の gtool5 の拡張のための予約

User-defined error codes / ユーザ定義用エラーコード

-1000 よりも小さいエラーコードは、 gtool5 の上位のプログラムが利用するエラーコードとして空けてあります。

数値 ニーモニック エラーメッセージ
-1000〜 USR_ERRNO cause_c (cause_i)

Function/Subroutine Documentation

◆ errorcode()

integer function, public dc_error::errorcode

現在設定されているエラーコードを返します。

Returns
現在設定されている整数型エラーコード

Definition at line 606 of file dc_error.f90.

607 result = errno

◆ geterrormessage()

subroutine, public dc_error::geterrormessage ( character(len = *), intent(out) msg)

現在設定されているエラーコードから対応するメッセージを返します。

Parameters
[out]msg現在のエラーコードに対応するエラーメッセージ文字列

Definition at line 618 of file dc_error.f90.

619 use netcdf, only: nf90_strerror
620 character(len = *), intent(out):: msg
621 character(len = STRING):: message
622 character(len = 20):: errno_c
623 character(len = 20):: cause_int_c
624 continue
625 select case(errno)
626 case(gt_efake)
627 msg = ' function not implemented'
628 !
629 ! -101 以下: データ構造のエラー
630 ! -101 or less: Error of data structure
631 !
632 case(gt_enomoredims)
633 write(message, "(': dimension number', i4, ' is out of range')") cause_int
634 msg = trim(message)
635 case(gt_ebaddimname)
636 msg = '(' // trim(cause_string) // '): unknown dimension name'
637 case(gt_enotvar)
638 msg = ' variable not opened'
639 case(gt_enomem)
640 msg = ' allocate/deallocate error'
641 case(gt_edimnodim)
642 msg = ' dimension variable has no dimension'
643 case(gt_edimmultidim)
644 msg = ' dimension variable has many dimensions'
645 case(gt_edimotherdim)
646 msg = ' dimension variable has another dimension'
647 case(gt_eotherfile)
648 msg = ' specified dimensional variable not on the same file'
649 case(gt_eargsizemismatch)
650 msg = ' arguments (' // trim(cause_string) //') array size mismatch'
651 case(gt_enomatchdim)
652 msg = ' dimension matching failed'
653 case(gt_elimited)
654 msg = ' variable already limited'
655 case(gt_ebadvar)
656 msg = ' variable type not supported'
657 case(gt_echarshort)
658 msg = ' character length not enough'
659 case(gt_enounlimitdim)
660 msg = ' NC_UNLIMITED dimension is not found'
661 case(gt_ebadattrname)
662 msg = ' invalid attribute name'
663 case(gt_ebadallocatesize)
664 msg = ' invalid allocated size'
665 case(gt_erankmismatch)
666 msg = ' rank of data and argument are mismatch (' // trim(cause_string) // ')'
667 case(gt_enoturl)
668 msg = ' URL (' // trim(cause_string) // ') is not found'
669 case(gt_ebadgt4commagraphy)
670 msg = ' (' // trim(cause_string) // ') is not gtool4 comma-graphy (ex. "time=100.0,x=10:20,y=^1:^5")'
671 !
672 ! -300 以下: GrADS 入出力のエラー
673 ! -300 or less: Error of GrADS I/O
674 !
675 case(gr_enotgr)
676 msg = ' invalid GrADS file'
677 !
678 ! -400 以下: DC ユーティリティのエラー
679 ! -400 or less: Error of DC utilities
680 !
681 case(dc_enotinit)
682 msg = ' object (' // trim(cause_string) // ') is not initialized'
683 case(dc_ealreadyinit)
684 msg = ' object (' // trim(cause_string) // ') is already initialized'
685 case(dc_ebadunit)
686 msg = ' unit (' // trim(cause_string) // ') is invalid'
687 case(dc_ebadcaltype)
688 write(message, '(" calendar type (", i4, ") is invalid")') cause_int
689 msg = trim(message)
690 case(dc_ebadtimezone)
691 msg = ' time zone (' // trim(cause_string) // ') is invalid'
692 case(dc_efilenameempty)
693 msg = ' filename is empty'
694 case(dc_ebadfileopmode)
695 msg = ' file open mode (' // trim(cause_string) // ') is invalid'
696 case(dc_enounitnum)
697 msg = ' available unit number is not found within (' // trim(cause_string) // ')'
698 case(dc_enofileexist)
699 msg = ' file (' // trim(cause_string) // ') is not found'
700 case(dc_enofileread)
701 msg = ' file (' // trim(cause_string) // ') is not readable'
702 case(dc_enofilewrite)
703 msg = ' file (' // trim(cause_string) // ') is not writable'
704 case(dc_enegative)
705 msg = ' negative value is invalid for (' // trim(cause_string) // ')'
706 case(dc_earglack)
707 msg = ' lack of arguments (' // trim(cause_string) // ')'
708 case(dc_enoassoc)
709 msg = ' argument (' // trim(cause_string) // ') is not associated'
710 case(dc_enoentry)
711 msg = ' entry of (' // trim(cause_string) // ') is not found'
712 case(dc_enodimtime)
713 msg = ' dimensional time can not be converted into nondimensional time'
714 case(dc_edimtime)
715 msg = ' nondimensional time can not be converted into dimensional time'
716 case(dc_etoolargetime)
717 msg = ' number is too large for time'
718 case(dc_ebaddate)
719 msg = ' invalid expression of date'
720 case(dc_einconsistcaldate)
721 msg = ' calendar and date are inconsistent'
722 !
723 ! -500 以下: データ入出力層のエラー
724 ! -500 or less: Error of data I/O layer
725 !
726 case(hst_enotindefine)
727 msg = ' operation (' // trim(cause_string) // ') not allowed in data mode'
728 case(hst_eindefine)
729 msg = ' operation (' // trim(cause_string) // ') not allowed in define mode'
730 case(hst_eintfile)
731 msg = ' different intervals are applied to a file (' // trim(cause_string) // ')'
732 case(hst_ebadname)
733 msg = ' name (' // trim(cause_string) // ') is invalid'
734 case(hst_enottermgthist)
735 msg = ' GT_HISTORY correspond to (' // trim(cause_string) // ') is not terminated'
736 case(hst_enodependtime)
737 msg = ' (' // trim(cause_string) // ') does not depend on time'
738 case(hst_ebadvarname)
739 msg = ' variable name (' // trim(cause_string) // ') is invalid'
740 case(hst_enotimedim)
741 msg = ' time dimension is not found'
742 case(hst_enoaxisname)
743 msg = ' axis or weight (' // trim(cause_string) // ') is not found'
744 case(hst_evarinuse)
745 msg = ' variable name (' // trim(cause_string) // ') is already used'
746 case(hst_ealreadyregvarfix)
747 msg = ' already register of variables is fixed by (' // trim(cause_string) // ')'
748 case(hst_ebadslice)
749 msg = ' slice options are invalid (' // trim(cause_string) // ')'
750 case(hst_ebadnewfileint)
751 msg = ' invalid newfile interval (' // trim(cause_string) // ')'
752 case(hst_emaxdimsdepended)
753 write(message, '("(", i4, ")")') cause_int
754 msg = trim(message)
755 msg = ' variable (' // trim(cause_string) // ') depends on ' // trim(message) // ' dimensions'
756 case(hst_eindivisible)
757 msg = ' (' // trim(cause_string) // ') can not be divided'
758 case(hst_ebadterminus)
759 msg = ' terminus options are invalid (' // trim(cause_string) // ')'
760 case(hst_ebadorigin)
761 msg = ' origin options are invalid (' // trim(cause_string) // ')'
762 case(hst_empinoaxisdata)
763 msg = ' data of axis (' // trim(cause_string) // ') for MPI is lack'
764
765 !
766 !
767 ! -1000 以下: ユーザー定義
768 ! -1000 or less: User-defined error
769 !
770 case(:usr_errno)
771 if (len(trim(adjustl(cause_string))) < 1) then
772 cause_string = 'Unknown error'
773 end if
774 if (cause_int_valid) then
775 write(cause_int_c, "(i8)") cause_int
776 msg = trim(cause_string) // ' (' // trim(adjustl(cause_int_c)) // ')'
777 else
778 msg = trim(cause_string)
779 end if
780 case default
781 goto 999
782 end select
783 write(errno_c, "(i8)") errno
784 msg = '*** ERROR (Code ' // trim(adjustl(errno_c)) // &
785 & ') [' // trim(cause_location) // '] *** ' // &
786 & trim(msg)
787 return
788
789999 continue
790 if (len(cause_string) > 0) then
791 message = nf90_strerror(errno)
792 write(errno_c, "(i8)") errno
793 msg = '*** ERROR (Code ' // trim(adjustl(errno_c)) // &
794 & ') [' // trim(cause_location) // &
795 & '(' // trim(cause_string) // ')] *** ' // &
796 & trim(message)
797 else if (cause_int_valid) then
798 message = nf90_strerror(errno)
799 write(errno_c, "(i8)") errno
800 write(cause_int_c, "(i8)") cause_int
801 msg = '*** ERROR (Code ' // trim(adjustl(errno_c)) // &
802 & ') [' // trim(cause_location) // &
803 & '(' // trim(adjustl(cause_int_c)) // ')] *** ' // &
804 & trim(message)
805 else
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(message)
811 endif

References dc_ealreadyinit, dc_earglack, dc_ebadcaltype, dc_ebaddate, dc_ebadfileopmode, dc_ebadtimezone, dc_ebadunit, dc_edimtime, dc_efilenameempty, dc_einconsistcaldate, dc_enegative, dc_enoassoc, dc_enodimtime, dc_enoentry, dc_enofileexist, dc_enofileread, dc_enofilewrite, dc_enotinit, dc_enounitnum, dc_etoolargetime, gr_enotgr, gt_eargsizemismatch, gt_ebadallocatesize, gt_ebadattrname, gt_ebaddimname, gt_ebadgt4commagraphy, gt_ebadvar, gt_echarshort, gt_edimmultidim, gt_edimnodim, gt_edimotherdim, gt_efake, gt_elimited, gt_enomatchdim, gt_enomem, gt_enomoredims, gt_enoturl, gt_enotvar, gt_enounlimitdim, gt_eotherfile, gt_erankmismatch, hst_ealreadyregvarfix, hst_ebadname, hst_ebadnewfileint, hst_ebadorigin, hst_ebadslice, hst_ebadterminus, hst_ebadvarname, hst_eindefine, hst_eindivisible, hst_eintfile, hst_emaxdimsdepended, hst_empinoaxisdata, hst_enoaxisname, hst_enodependtime, hst_enotimedim, hst_enotindefine, hst_enottermgthist, hst_evarinuse, and usr_errno.

◆ storeerror()

subroutine, public dc_error::storeerror ( integer, intent(in) number,
character(len = *), intent(in) where,
logical, intent(out), optional err,
character(len = *), intent(in), optional cause_c,
integer, intent(in), optional cause_i )

典型的ライブラリ手続のために作られたエラー処理サブルーチン

必要な引数は2つであり、第1引数 number には整数型のエラーコード、 第2引数 where には文字型でエラーの発生した手続名を与えます。 デフォルトでは以下の形式の文字列が標準出力に表示されてプログラム は終了します。 エラーメッセージ error_message はエラーコードから自動的に決まります。 対応表がエラーコード一覧にあるので参照してください。

*** ERROR (Code number) [where] ***  error_message

*** ERROR (Code number) [where(cause_c)] ***  error_message

なお、gtool5 のライブラリ外からユーザがエラー処理用ツール として StoreError を用いることを想定し、USR_ERRNO 番より小さいエラーコードは空けてあります。USR_ERRNO より小さい値をエラーコードに与えると, StoreError は以下の形式の文字列を標準出力に出力してプログラムを 終了させます。より安易に使えるメッセージ出力およびエラー発生の ためのモジュールとして dc_message も用意してあるので そちらも参照してください。

*** ERROR (Code number) [where] ***  cause_c

*** ERROR (Code number) [where] ***  cause_c (cause_i)
Parameters
[in]numberエラーコード
[in]whereエラー発生個所
[out]err例外処理用フラグ。デフォルトでは、number に非エラーコード 以外の値が与えられた場合、エラーメッセージを 表示してプログラムは強制終了します。 引数 err が与えられる場合、 プログラムは強制終了せず、代わりに err.true. が代入されます。
[in]cause_c文字型メッセージ
[in]cause_i整数型メッセージ

Definition at line 890 of file dc_error.f90.

891 integer, intent(in) :: number
892 character(len = *), intent(in) :: where
893 logical, intent(out), optional :: err
894 character(len = *), intent(in), optional :: cause_c
895 integer, intent(in), optional :: cause_i
896 continue
897 if (present(err)) then
898 err = (number /= dc_noerr)
899 return
900 endif
901 if (number == dc_noerr) return
902 errno = number
903 cause_location = where
904 if (present(cause_c)) then
905 cause_string = trim(cause_c)
906 else
907 cause_string = ""
908 endif
909 if (present(cause_i)) then
910 cause_int = cause_i
911 cause_int_valid = .true.
912 else
913 cause_int_valid = .false.
914 end if
915 call dumperror

References sysdep::abortprogram(), dc_noerr, geterrormessage(), and dc_types::string.

Here is the call graph for this function:

Variable Documentation

◆ dc_ealreadyinit

integer, parameter, public dc_error::dc_ealreadyinit = -401

Definition at line 535 of file dc_error.f90.

535 integer, parameter, public:: DC_EALREADYINIT = -401

◆ dc_earglack

integer, parameter, public dc_error::dc_earglack = -412

Definition at line 546 of file dc_error.f90.

546 integer, parameter, public:: DC_EARGLACK = -412

◆ dc_ebadcaltype

integer, parameter, public dc_error::dc_ebadcaltype = -403

Definition at line 537 of file dc_error.f90.

537 integer, parameter, public:: DC_EBADCALTYPE = -403

◆ dc_ebaddate

integer, parameter, public dc_error::dc_ebaddate = -418

Definition at line 552 of file dc_error.f90.

552 integer, parameter, public:: DC_EBADDATE = -418

◆ dc_ebadfileopmode

integer, parameter, public dc_error::dc_ebadfileopmode = -406

Definition at line 540 of file dc_error.f90.

540 integer, parameter, public:: DC_EBADFILEOPMODE = -406

◆ dc_ebadtimezone

integer, parameter, public dc_error::dc_ebadtimezone = -404

Definition at line 538 of file dc_error.f90.

538 integer, parameter, public:: DC_EBADTIMEZONE = -404

◆ dc_ebadunit

integer, parameter, public dc_error::dc_ebadunit = -402

Definition at line 536 of file dc_error.f90.

536 integer, parameter, public:: DC_EBADUNIT = -402

◆ dc_edimtime

integer, parameter, public dc_error::dc_edimtime = -416

Definition at line 550 of file dc_error.f90.

550 integer, parameter, public:: DC_EDIMTIME = -416

◆ dc_efilenameempty

integer, parameter, public dc_error::dc_efilenameempty = -405

Definition at line 539 of file dc_error.f90.

539 integer, parameter, public:: DC_EFILENAMEEMPTY = -405

◆ dc_einconsistcaldate

integer, parameter, public dc_error::dc_einconsistcaldate = -419

Definition at line 553 of file dc_error.f90.

553 integer, parameter, public:: DC_EINCONSISTCALDATE = -419

◆ dc_enegative

integer, parameter, public dc_error::dc_enegative = -411

Definition at line 545 of file dc_error.f90.

545 integer, parameter, public:: DC_ENEGATIVE = -411

◆ dc_enoassoc

integer, parameter, public dc_error::dc_enoassoc = -413

Definition at line 547 of file dc_error.f90.

547 integer, parameter, public:: DC_ENOASSOC = -413

◆ dc_enodimtime

integer, parameter, public dc_error::dc_enodimtime = -415

Definition at line 549 of file dc_error.f90.

549 integer, parameter, public:: DC_ENODIMTIME = -415

◆ dc_enoentry

integer, parameter, public dc_error::dc_enoentry = -414

Definition at line 548 of file dc_error.f90.

548 integer, parameter, public:: DC_ENOENTRY = -414

◆ dc_enofileexist

integer, parameter, public dc_error::dc_enofileexist = -408

Definition at line 542 of file dc_error.f90.

542 integer, parameter, public:: DC_ENOFILEEXIST = -408

◆ dc_enofileread

integer, parameter, public dc_error::dc_enofileread = -409

Definition at line 543 of file dc_error.f90.

543 integer, parameter, public:: DC_ENOFILEREAD = -409

◆ dc_enofilewrite

integer, parameter, public dc_error::dc_enofilewrite = -410

Definition at line 544 of file dc_error.f90.

544 integer, parameter, public:: DC_ENOFILEWRITE = -410

◆ dc_enotinit

integer, parameter, public dc_error::dc_enotinit = -400

-400 以下: dc ユーティリティのエラー

Definition at line 534 of file dc_error.f90.

534 integer, parameter, public:: DC_ENOTINIT = -400

◆ dc_enounitnum

integer, parameter, public dc_error::dc_enounitnum = -407

Definition at line 541 of file dc_error.f90.

541 integer, parameter, public:: DC_ENOUNITNUM = -407

◆ dc_etoolargetime

integer, parameter, public dc_error::dc_etoolargetime = -417

Definition at line 551 of file dc_error.f90.

551 integer, parameter, public:: DC_ETOOLARGETIME = -417

◆ dc_noerr

integer, parameter, public dc_error::dc_noerr = 0

エラー等を保持

非エラーコード (エラーなし)

Definition at line 468 of file dc_error.f90.

468 integer, public, parameter :: DC_NOERR = 0

◆ gr_enotgr

integer, parameter, public dc_error::gr_enotgr = -300

-300 以下: GrADS 入出力のエラー

Definition at line 530 of file dc_error.f90.

530 integer, parameter, public:: GR_ENOTGR = -300

◆ gt_eargsizemismatch

integer, parameter, public dc_error::gt_eargsizemismatch = -109

Definition at line 515 of file dc_error.f90.

515 integer, parameter, public:: GT_EARGSIZEMISMATCH = -109

◆ gt_ebadallocatesize

integer, parameter, public dc_error::gt_ebadallocatesize = -117

Definition at line 523 of file dc_error.f90.

523 integer, parameter, public:: GT_EBADALLOCATESIZE = -117

◆ gt_ebadattrname

integer, parameter, public dc_error::gt_ebadattrname = -115

Definition at line 521 of file dc_error.f90.

521 integer, parameter, public:: GT_EBADATTRNAME = -115

◆ gt_ebaddimname

integer, parameter, public dc_error::gt_ebaddimname = -105

Definition at line 511 of file dc_error.f90.

511 integer, parameter, public:: GT_EBADDIMNAME = -105

◆ gt_ebadgt4commagraphy

integer, parameter, public dc_error::gt_ebadgt4commagraphy = -120

Definition at line 526 of file dc_error.f90.

526 integer, parameter, public:: GT_EBADGT4COMMAGRAPHY = -120

◆ gt_ebadhistory

integer, parameter, public dc_error::gt_ebadhistory = -116

Definition at line 522 of file dc_error.f90.

522 integer, parameter, public:: GT_EBADHISTORY = -116

◆ gt_ebadvar

integer, parameter, public dc_error::gt_ebadvar = -112

Definition at line 518 of file dc_error.f90.

518 integer, parameter, public:: GT_EBADVAR = -112

◆ gt_echarshort

integer, parameter, public dc_error::gt_echarshort = -113

Definition at line 519 of file dc_error.f90.

519 integer, parameter, public:: GT_ECHARSHORT = -113

◆ gt_edimmultidim

integer, parameter, public dc_error::gt_edimmultidim = -103

Definition at line 509 of file dc_error.f90.

509 integer, parameter, public:: GT_EDIMMULTIDIM = -103

◆ gt_edimnodim

integer, parameter, public dc_error::gt_edimnodim = -102

Definition at line 508 of file dc_error.f90.

508 integer, parameter, public:: GT_EDIMNODIM = -102

◆ gt_edimotherdim

integer, parameter, public dc_error::gt_edimotherdim = -104

Definition at line 510 of file dc_error.f90.

510 integer, parameter, public:: GT_EDIMOTHERDIM = -104

◆ gt_efake

integer, parameter, public dc_error::gt_efake = -100

正のエラー番号は libc システムエラーメッセージのために あけてある。システム依存性が大きく、非常に大きな数値も 用いられるので空き領域を確保するのは困難である。

負のエラー番号は netCDF が使っている。少々の拡張も見込んで、 -99 までは使わないで置く。

Definition at line 503 of file dc_error.f90.

503 integer, parameter, public:: GT_EFAKE = -100

◆ gt_elimited

integer, parameter, public dc_error::gt_elimited = -111

Definition at line 517 of file dc_error.f90.

517 integer, parameter, public:: GT_ELIMITED = -111

◆ gt_enomatchdim

integer, parameter, public dc_error::gt_enomatchdim = -110

Definition at line 516 of file dc_error.f90.

516 integer, parameter, public:: GT_ENOMATCHDIM = -110

◆ gt_enomem

integer, parameter, public dc_error::gt_enomem = -107

Definition at line 513 of file dc_error.f90.

513 integer, parameter, public:: GT_ENOMEM = -107

◆ gt_enomoredims

integer, parameter, public dc_error::gt_enomoredims = -101

-101 以下: データ構造のエラー

Definition at line 507 of file dc_error.f90.

507 integer, parameter, public:: GT_ENOMOREDIMS = -101

◆ gt_enoturl

integer, parameter, public dc_error::gt_enoturl = -119

Definition at line 525 of file dc_error.f90.

525 integer, parameter, public:: GT_ENOTURL = -119

◆ gt_enotvar

integer, parameter, public dc_error::gt_enotvar = -106

Definition at line 512 of file dc_error.f90.

512 integer, parameter, public:: GT_ENOTVAR = -106

◆ gt_enounlimitdim

integer, parameter, public dc_error::gt_enounlimitdim = -114

Definition at line 520 of file dc_error.f90.

520 integer, parameter, public:: GT_ENOUNLIMITDIM = -114

◆ gt_eotherfile

integer, parameter, public dc_error::gt_eotherfile = -108

Definition at line 514 of file dc_error.f90.

514 integer, parameter, public:: GT_EOTHERFILE = -108

◆ gt_erankmismatch

integer, parameter, public dc_error::gt_erankmismatch = -118

Definition at line 524 of file dc_error.f90.

524 integer, parameter, public:: GT_ERANKMISMATCH = -118

◆ hst_ealreadyregvarfix

integer, parameter, public dc_error::hst_ealreadyregvarfix = -510

Definition at line 567 of file dc_error.f90.

567 integer, parameter, public:: HST_EALREADYREGVARFIX = -510

◆ hst_ebadname

integer, parameter, public dc_error::hst_ebadname = -503

Definition at line 560 of file dc_error.f90.

560 integer, parameter, public:: HST_EBADNAME = -503

◆ hst_ebadnewfileint

integer, parameter, public dc_error::hst_ebadnewfileint = -512

Definition at line 569 of file dc_error.f90.

569 integer, parameter, public:: HST_EBADNEWFILEINT = -512

◆ hst_ebadorigin

integer, parameter, public dc_error::hst_ebadorigin = -516

Definition at line 573 of file dc_error.f90.

573 integer, parameter, public:: HST_EBADORIGIN = -516

◆ hst_ebadslice

integer, parameter, public dc_error::hst_ebadslice = -511

Definition at line 568 of file dc_error.f90.

568 integer, parameter, public:: HST_EBADSLICE = -511

◆ hst_ebadterminus

integer, parameter, public dc_error::hst_ebadterminus = -515

Definition at line 572 of file dc_error.f90.

572 integer, parameter, public:: HST_EBADTERMINUS = -515

◆ hst_ebadvarname

integer, parameter, public dc_error::hst_ebadvarname = -506

Definition at line 563 of file dc_error.f90.

563 integer, parameter, public:: HST_EBADVARNAME = -506

◆ hst_eindefine

integer, parameter, public dc_error::hst_eindefine = -501

Definition at line 558 of file dc_error.f90.

558 integer, parameter, public:: HST_EINDEFINE = -501

◆ hst_eindivisible

integer, parameter, public dc_error::hst_eindivisible = -514

Definition at line 571 of file dc_error.f90.

571 integer, parameter, public:: HST_EINDIVISIBLE = -514

◆ hst_eintfile

integer, parameter, public dc_error::hst_eintfile = -502

Definition at line 559 of file dc_error.f90.

559 integer, parameter, public:: HST_EINTFILE = -502

◆ hst_emaxdimsdepended

integer, parameter, public dc_error::hst_emaxdimsdepended = -513

Definition at line 570 of file dc_error.f90.

570 integer, parameter, public:: HST_EMAXDIMSDEPENDED = -513

◆ hst_empinoaxisdata

integer, parameter, public dc_error::hst_empinoaxisdata = -517

Definition at line 574 of file dc_error.f90.

574 integer, parameter, public:: HST_EMPINOAXISDATA = -517

◆ hst_enoaxisname

integer, parameter, public dc_error::hst_enoaxisname = -508

Definition at line 565 of file dc_error.f90.

565 integer, parameter, public:: HST_ENOAXISNAME = -508

◆ hst_enodependtime

integer, parameter, public dc_error::hst_enodependtime = -505

Definition at line 562 of file dc_error.f90.

562 integer, parameter, public:: HST_ENODEPENDTIME = -505

◆ hst_enotimedim

integer, parameter, public dc_error::hst_enotimedim = -507

Definition at line 564 of file dc_error.f90.

564 integer, parameter, public:: HST_ENOTIMEDIM = -507

◆ hst_enotindefine

integer, parameter, public dc_error::hst_enotindefine = -500

-500 以下: データ入出力層のエラー

Definition at line 557 of file dc_error.f90.

557 integer, parameter, public:: HST_ENOTINDEFINE = -500

◆ hst_enottermgthist

integer, parameter, public dc_error::hst_enottermgthist = -504

Definition at line 561 of file dc_error.f90.

561 integer, parameter, public:: HST_ENOTTERMGTHIST = -504

◆ hst_evarinuse

integer, parameter, public dc_error::hst_evarinuse = -509

Definition at line 566 of file dc_error.f90.

566 integer, parameter, public:: HST_EVARINUSE = -509

◆ usr_errno

integer, parameter, public dc_error::usr_errno = -1000

-1000 以下: ユーザー定義

Definition at line 579 of file dc_error.f90.

579 integer, parameter, public:: USR_ERRNO = -1000