gtool5 Fortran 90/95 Library 1.0.0-rc5
日本語
Loading...
Searching...
No Matches
dc_error.f90
Go to the documentation of this file.
1!-----------------------------------------------------------------------
2! Copyright (c) 2000-2026 Gtool Development Group. All rights reserved.
3!-----------------------------------------------------------------------
4!>
5!> @author Youhei SASAKI, Eizi TOYODA, Yasuhiro MORIKAWA
6!> @copyright Copyright (C) GFD Dennou Club, 2000-2026. All rights reserved. <br/>
7!> License is BSD-2-Clause. see [COPYRIGHT](@ref COPYRIGHT) in detail
8!> @en
9!> @brief Error handling module
10!> @details
11!> Error handling about parts of programs should be regulated definitely.
12!> Error means that input to the part of program is invalid, or
13!> expected operation can not be done, etc.
14!>
15!> Procedures (procedures is generic name of subroutines and functions)
16!> provided to users by gtool5 library almost report error to invoker
17!> in the following two manner.
18!>
19!> - When error occurs, the program display appropriate messages and
20!> aborts.
21!> - If logical optional argument `err` is given, the argument `err` become
22!> `.true.` when error occurs. If `err` is abbreviated,
23!> the operation is same as above.
24!>
25!> `StoreError` subroutine in `dc_error` module handle above all operations.
26!> See `StoreError` about the interface of it.
27!>
28!> @enden
29!>
30!> @ja
31!> @brief エラー処理用モジュール
32!> @details
33!> プログラムの部品は必ずエラーの取り扱いを明確に規定すべきものです。
34!> エラーとは当該部品への入力が不適切であるとか、
35!> 期待される動作をすることができないといった事態を指します。
36!>
37!> gtool5 ライブラリがユーザに提供する手続
38!> (手続とはサブルーチンまたは関数の総称) はほとんどの場合、
39!> 以下の 2 つの方式のいずれかで呼び出し元にエラーを報告します。
40!>
41!> - エラーが発生すると適切なメッセージを表示してプログラム終了
42!> - 論理型の省略できる引数 `err` が与えられた場合は、
43!> エラー時にはそれを `.true.` にします。
44!> err が省略された場合は上に同じ。
45!>
46!> これらの処理はすべて `dc_error` モジュールの `StoreError`
47!> サブルーチンで行っています。引用仕様などに関しては `StoreError`
48!> を参照してください。
49!>
50!> @endja
51!>
52!> @section error_code_list Error Code List / エラーコード一覧
53!>
54!> @en
55!> Programmers who add codes to gtool5 library must call
56!> `StoreError` with appropriate error code.
57!> And so values of error code and corresponding messages are listed
58!> as follows to figure out if a new error code is needed to declared.
59!> To use error codes mnemonic,
60!> require "netcdf_f77" module or include "netcdf.inc" (deprecated)
61!> about error codes with prefix `NF_E`, or
62!> require "dc_error" module
63!> about error codes with prefix `GT_E` and
64!> `DC_E` and `HST_E`.
65!> Error codes smaller than `USR_ERRNO` are saved
66!> as user-defined error codes.
67!>
68!> Non error code that indicates normal (error-free) situation is
69!> `DC_NOERR`.
70!>
71!> List of numerical values of error codes
72!> issues a guideline about declaration of new error codes.
73!> Give not numerical value but mnemonic of error code to source code.
74!> @enden
75!>
76!> @ja
77!> gtool5 ライブラリにコードを追加するプログラマは適切な
78!> エラーコードで `StoreError` を呼び出すようにしなければなりません。
79!> そこで、 新しいエラーコードを定義する必要があるかどうかを
80!> 判定するために、 エラーコードの値と対応するメッセージを
81!> 以下に一覧します。
82!> エラーコードニーモニックを使用するためには、
83!> `NF_E` で始まる名前については netcdf_f77
84!> モジュールを引用するか include 'netcdf.inc' を行い(後者は推奨しません)、
85!> `GT_E`, `DC_E`, `HST_E`
86!> で始まる名前については dc_error モジュールを引用してください。
87!> また `USR_ERRNO` 番より小さい値は、
88!> 各々のユーザが適宜エラーコードを
89!> 定義して利用するために空けてあります。
90!>
91!> エラーではない状態を表す非エラーコードは `DC_NOERR` です。
92!>
93!> エラーコードの数値の欄を設けたのは、新たなエラーコードを
94!> 割り当てる際の指針を示すためです。
95!> ソースコードにはエラーコードをニーモニックで与えるべきであり、
96!> 数値をハードコードすることは厳に慎んで下さい。
97!> @endja
98!>
99!> @subsection unused_codes Unused codes / 利用しないコード
100!>
101!> @en
102!> Positive integer is not used as error codes.
103!>
104!> NetCDF library might return "libc" error code "error".
105!> Numerical value of "errno" is no portable, so positive integer
106!> should be reserved for "errno".
107!> @enden
108!>
109!> @ja
110!> 正の整数値はエラーコードとして使用しません。
111!>
112!> NetCDF ライブラリは libc のエラーコード errno を返す可能性があり、
113!> errno の数値には移植性がないため、全ての正の整数値は errno
114!> の仕様のために予約されているべきだからです。
115!> @endja
116!>
117!> @subsection non_error_code Non error code / 非エラーコード
118!>
119!> @en
120!> Use following non error code by referring this "dc_error" module.
121!>
122!> | Number | Mnemonic |
123!> |--------|--------------|
124!> | 0 | `DC_NOERR` |
125!> @enden
126!>
127!> @ja
128!> 以下の非エラーコードに関しては dc_error モジュールを引用することで
129!> 利用してください。
130!>
131!> | 数値 | ニーモニック |
132!> |------|--------------|
133!> | 0 | `DC_NOERR` |
134!> @endja
135!>
136!> @subsection netcdf_error_codes Error codes for netCDF / netCDF に関するエラーコード
137!>
138!> @en
139!> Use following error codes by referring this "netcdf_f77" module.
140!>
141!> | Number | Mnemonic | Error message |
142!> |--------|-------------------|------------------------------------------------------------|
143!> | 0 | `NF_NOERR` | No Error (non error code) |
144!> | -33 | `NF_EBADID` | Not a netCDF id |
145!> | -34 | `NF_ENFILE` | Too many netCDF files open |
146!> | -35 | `NF_EEXIST` | netCDF file exists && NC_NOCLOBBER |
147!> | -36 | `NF_EINVAL` | Invalid argument |
148!> | -37 | `NF_EPERM` | Write to read only |
149!> | -38 | `NF_ENOTINDEFINE` | Operation not allowed in data mode |
150!> | -39 | `NF_EINDEFINE` | Operation not allowed in define mode |
151!> | -40 | `NF_EINVALCOORDS` | Index exceeds dimension bound |
152!> | -41 | `NF_EMAXDIMS` | NF_MAX_DIMS exceeded |
153!> | -42 | `NF_ENAMEINUSE` | String match to name in use |
154!> | -43 | `NF_ENOTATT` | Attribute not found |
155!> | -44 | `NF_EMAXATTS` | NC_MAX_ATTRS exceeded |
156!> | -45 | `NF_EBADTYPE` | Not a netCDF data type or _FillValue type mismatch |
157!> | -46 | `NF_EBADDIM` | Invalid dimension id or name |
158!> | -47 | `NF_EUNLIMPOS` | NC_UNLIMITED in the wrong index |
159!> | -48 | `NF_EMAXVARS` | NF_MAX_VARS exceeded |
160!> | -49 | `NF_ENOTVAR` | Variable not found |
161!> | -50 | `NF_EGLOBAL` | Action prohibited on NC_GLOBAL varid |
162!> | -51 | `NF_ENOTNC` | Not a netCDF file |
163!> | -52 | `NF_ESTS` | In Fortran, string too short |
164!> | -53 | `NF_EMAXNAME` | NC_MAX_NAME exceeded |
165!> | -54 | `NF_EUNLIMIT` | NC_UNLIMITED size already in use |
166!> | -55 | `NF_ENORECVARS` | NC_rec op when there are no record vars |
167!> | -56 | `NF_ECHAR` | Attempt to convert between text & numbers |
168!> | -57 | `NF_EEDGE` | Edge+start exceeds dimension bound |
169!> | -58 | `NF_ESTRIDE` | Illegal stride |
170!> | -59 | `NF_EBADNAME` | Attribute or variable name contains illegal characters |
171!> | -60 | `NF_ERANGE` | Numeric conversion not representable |
172!> | -61 | `NF_ENOMEM` | Memory allocation (malloc) failure |
173!> | -62 | `NF_EVARSIZE` | One or more variable sizes violate format constraints |
174!> | -63 | `NF_EDIMSIZE` | Invalid dimension size |
175!> | -64 | `NF_ETRUNC` | File likely truncated or possibly corrupted |
176!> | -62 to -99 | | Reserved area for future extensions of netCDF |
177!> @enden
178!>
179!> @ja
180!> 以下のエラーコードに関しては netcdf_f77 モジュールを引用することで
181!> 利用してください。
182!>
183!> | 数値 | ニーモニック | エラーメッセージ |
184!> |--------|-------------------|------------------------------------------------------------|
185!> | 0 | `NF_NOERR` | No Error (非エラーコードです) |
186!> | -33 | `NF_EBADID` | Not a netCDF id |
187!> | -34 | `NF_ENFILE` | Too many netCDF files open |
188!> | -35 | `NF_EEXIST` | netCDF file exists && NC_NOCLOBBER |
189!> | -36 | `NF_EINVAL` | Invalid argument |
190!> | -37 | `NF_EPERM` | Write to read only |
191!> | -38 | `NF_ENOTINDEFINE` | Operation not allowed in data mode |
192!> | -39 | `NF_EINDEFINE` | Operation not allowed in define mode |
193!> | -40 | `NF_EINVALCOORDS` | Index exceeds dimension bound |
194!> | -41 | `NF_EMAXDIMS` | NF_MAX_DIMS exceeded |
195!> | -42 | `NF_ENAMEINUSE` | String match to name in use |
196!> | -43 | `NF_ENOTATT` | Attribute not found |
197!> | -44 | `NF_EMAXATTS` | NC_MAX_ATTRS exceeded |
198!> | -45 | `NF_EBADTYPE` | Not a netCDF data type or _FillValue type mismatch |
199!> | -46 | `NF_EBADDIM` | Invalid dimension id or name |
200!> | -47 | `NF_EUNLIMPOS` | NC_UNLIMITED in the wrong index |
201!> | -48 | `NF_EMAXVARS` | NF_MAX_VARS exceeded |
202!> | -49 | `NF_ENOTVAR` | Variable not found |
203!> | -50 | `NF_EGLOBAL` | Action prohibited on NC_GLOBAL varid |
204!> | -51 | `NF_ENOTNC` | Not a netCDF file |
205!> | -52 | `NF_ESTS` | In Fortran, string too short |
206!> | -53 | `NF_EMAXNAME` | NC_MAX_NAME exceeded |
207!> | -54 | `NF_EUNLIMIT` | NC_UNLIMITED size already in use |
208!> | -55 | `NF_ENORECVARS` | NC_rec op when there are no record vars |
209!> | -56 | `NF_ECHAR` | Attempt to convert between text & numbers |
210!> | -57 | `NF_EEDGE` | Edge+start exceeds dimension bound |
211!> | -58 | `NF_ESTRIDE` | Illegal stride |
212!> | -59 | `NF_EBADNAME` | Attribute or variable name contains illegal characters |
213!> | -60 | `NF_ERANGE` | Numeric conversion not representable |
214!> | -61 | `NF_ENOMEM` | Memory allocation (malloc) failure |
215!> | -62 | `NF_EVARSIZE` | One or more variable sizes violate format constraints |
216!> | -63 | `NF_EDIMSIZE` | Invalid dimension size |
217!> | -64 | `NF_ETRUNC` | File likely truncated or possibly corrupted |
218!> | -62〜-99 | | 将来の netCDF の拡張のための gtool5 の予約領域 |
219!> @endja
220!>
221!> @subsection gtdata_error_codes Error codes for gtdata / gtool5 のデータ構造 (gtdata) に関するエラーコード
222!>
223!> @en
224!> Use following error codes by referring this "dc_error" module.
225!>
226!> | Number | Mnemonic | Error message |
227!> |--------|------------------------|------------------------------------------------------------|
228!> | -100 | `GT_EFAKE` | function not implemented |
229!> | -101 | `GT_ENOMOREDIMS` | dimension number %d is out of range |
230!> | -102 | `GT_EDIMNODIM` | dimension variable has no dimension |
231!> | -103 | `GT_EDIMMULTIDIM` | dimension variable has many dimensions |
232!> | -104 | `GT_EDIMOTHERDIM` | dimension variable has another dimension |
233!> | -105 | `GT_EBADDIMNAME` | cause_c: unknown dimension name |
234!> | -106 | `GT_ENOTVAR` | variable not opened |
235!> | -107 | `GT_ENOMEM` | allocate/deallocate error |
236!> | -108 | `GT_EOTHERFILE` | specified dimensional variable not on the same file |
237!> | -109 | `GT_EARGSIZEMISMATCH` | arguments (cause_c) array size mismatch |
238!> | -110 | `GT_ENOMATCHDIM` | dimension matching failed |
239!> | -111 | `GT_ELIMITED` | variable already limited |
240!> | -112 | `GT_EBADVAR` | variable type not supported |
241!> | -113 | `GT_ECHARSHORT` | character length not enough |
242!> | -114 | `GT_ENOUNLIMITDIM` | NC_UNLIMITED dimension is not found |
243!> | -115 | `GT_EBADATTRNAME` | invalid attribute name |
244!> | -116 | `GT_EBADHISTORY` | invalid GT_HISTORY variable |
245!> | -117 | `GT_EBADALLOCATESIZE` | invalid allocated size |
246!> | -118 | `GT_ERANKMISMATCH` | rank of data and argument is mismatch (cause_c) |
247!> | -119 | `GT_ENOTURL` | URL (cause_c) is not found |
248!> | -120 | `GT_EBADGT4COMMAGRAPHY`| (cause_c) is not gtool4 comma-graphy |
249!> | to -299| | Reserved area for future extensions of gtdata layer |
250!> @enden
251!>
252!> @ja
253!> 以下のエラーコードに関しては dc_error モジュールを引用することで
254!> 利用してください。
255!>
256!> | 数値 | ニーモニック | エラーメッセージ |
257!> |--------|------------------------|------------------------------------------------------------|
258!> | -100 | `GT_EFAKE` | function not implemented |
259!> | -101 | `GT_ENOMOREDIMS` | dimension number %d is out of range |
260!> | -102 | `GT_EDIMNODIM` | dimension variable has no dimension |
261!> | -103 | `GT_EDIMMULTIDIM` | dimension variable has many dimensions |
262!> | -104 | `GT_EDIMOTHERDIM` | dimension variable has another dimension |
263!> | -105 | `GT_EBADDIMNAME` | cause_c: unknown dimension name |
264!> | -106 | `GT_ENOTVAR` | variable not opened |
265!> | -107 | `GT_ENOMEM` | allocate/deallocate error |
266!> | -108 | `GT_EOTHERFILE` | specified dimensional variable not on the same file |
267!> | -109 | `GT_EARGSIZEMISMATCH` | arguments (cause_c) array size mismatch |
268!> | -110 | `GT_ENOMATCHDIM` | dimension matching failed |
269!> | -111 | `GT_ELIMITED` | variable already limited |
270!> | -112 | `GT_EBADVAR` | variable type not supported |
271!> | -113 | `GT_ECHARSHORT` | character length not enough |
272!> | -114 | `GT_ENOUNLIMITDIM` | NC_UNLIMITED dimension is not found |
273!> | -115 | `GT_EBADATTRNAME` | invalid attribute name |
274!> | -116 | `GT_EBADHISTORY` | invalid GT_HISTORY variable |
275!> | -117 | `GT_EBADALLOCATESIZE` | invalid allocated size |
276!> | -118 | `GT_ERANKMISMATCH` | rank of data and argument is mismatch (cause_c) |
277!> | -119 | `GT_ENOTURL` | URL (cause_c) is not found |
278!> | -120 | `GT_EBADGT4COMMAGRAPHY`| (cause_c) is not gtool4 comma-graphy |
279!> | 〜-299 | | 将来の gtdata 層の拡張のための予約 |
280!> @endja
281!>
282!> @subsection grads_error_codes Error codes for GrADS data I/O / GrADS データ入出力に関するエラーコード
283!>
284!> @en
285!> Use following error codes by referring this "dc_error" module.
286!>
287!> | Number | Mnemonic | Error message |
288!> |--------|--------------|--------------------|
289!> | -300 | `GR_ENOTGR` | invalid GrADS file |
290!> | to -399| | Reserved area for future extensions of GrADS data I/O layer |
291!> @enden
292!>
293!> @ja
294!> 以下のエラーコードに関しては dc_error モジュールを引用することで
295!> 利用してください。
296!>
297!> | 数値 | ニーモニック | エラーメッセージ |
298!> |--------|--------------|--------------------|
299!> | -300 | `GR_ENOTGR` | invalid GrADS file |
300!> | 〜-399 | | 将来の GrADS data 入出力層の拡張のための予約 |
301!> @endja
302!>
303!> @subsection dc_error_codes Error codes for DC utilities / DC ユーティリティ用エラーコード
304!>
305!> @en
306!> Use following error codes by referring this "dc_error" module.
307!>
308!> | Number | Mnemonic | Error message |
309!> |--------|----------------------|------------------------------------------------------------|
310!> | -400 | `DC_ENOTINIT` | object (cause_c) is not initialized |
311!> | -401 | `DC_EALREADYINIT` | object (cause_c) is already initialized |
312!> | -402 | `DC_EBADUNIT` | unit (cause_c) is invalid |
313!> | -403 | `DC_EBADCALTYPE` | calendar type (cause_i) is invalid |
314!> | -404 | `DC_EBADTIMEZONE` | time zone (cause_c) is invalid |
315!> | -405 | `DC_EFILENAMEEMPTY` | filename is empty |
316!> | -406 | `DC_EBADFILEOPMODE` | file open mode (cause_c) is invalid |
317!> | -407 | `DC_ENOUNITNUM` | available unit number is not found within (cause_c) |
318!> | -408 | `DC_ENOFILEEXIST` | file (cause_c) is not found |
319!> | -409 | `DC_ENOFILEREAD` | file (cause_c) is not readable |
320!> | -410 | `DC_ENOFILEWRITE` | file (cause_c) is not writable |
321!> | -411 | `DC_ENEGATIVE` | negative value is invalid for (cause_c) |
322!> | -412 | `DC_EARGLACK` | lack of arguments (cause_c) |
323!> | -413 | `DC_ENOASSOC` | argument (cause_c) is not associated |
324!> | -414 | `DC_ENOENTRY` | entry of (cause_c) is not found |
325!> | -415 | `DC_ENODIMTIME` | dimensional time can not be converted into nondimensional time |
326!> | -416 | `DC_EDIMTIME` | nondimensional time can not be converted into dimensional time |
327!> | -417 | `DC_ETOOLARGETIME` | number is too large for time |
328!> | -418 | `DC_EBADDATE` | invalid expression of date |
329!> | -419 | `DC_EINCONSISTCALDATE`| calendar and date are inconsistent |
330!> | -420 to -499 | | Reserved area for future extensions of DC utilities |
331!> @enden
332!>
333!> @ja
334!> 以下のエラーコードに関しては dc_error モジュールを引用することで
335!> 利用してください。
336!>
337!> | 数値 | ニーモニック | エラーメッセージ |
338!> |--------|----------------------|------------------------------------------------------------|
339!> | -400 | `DC_ENOTINIT` | object (cause_c) is not initialized |
340!> | -401 | `DC_EALREADYINIT` | object (cause_c) is already initialized |
341!> | -402 | `DC_EBADUNIT` | unit (cause_c) is invalid |
342!> | -403 | `DC_EBADCALTYPE` | calendar type (cause_i) is invalid |
343!> | -404 | `DC_EBADTIMEZONE` | time zone (cause_c) is invalid |
344!> | -405 | `DC_EFILENAMEEMPTY` | filename is empty |
345!> | -406 | `DC_EBADFILEOPMODE` | file open mode (cause_c) is invalid |
346!> | -407 | `DC_ENOUNITNUM` | available unit number is not found within (cause_c) |
347!> | -408 | `DC_ENOFILEEXIST` | file (cause_c) is not found |
348!> | -409 | `DC_ENOFILEREAD` | file (cause_c) is not readable |
349!> | -410 | `DC_ENOFILEWRITE` | file (cause_c) is not writable |
350!> | -411 | `DC_ENEGATIVE` | negative value is invalid for (cause_c) |
351!> | -412 | `DC_EARGLACK` | lack of arguments (cause_c) |
352!> | -413 | `DC_ENOASSOC` | argument (cause_c) is not associated |
353!> | -414 | `DC_ENOENTRY` | entry of (cause_c) is not found |
354!> | -415 | `DC_ENODIMTIME` | dimensional time can not be converted into nondimensional time |
355!> | -416 | `DC_EDIMTIME` | nondimensional time can not be converted into dimensional time |
356!> | -417 | `DC_ETOOLARGETIME` | number is too large for time |
357!> | -418 | `DC_EBADDATE` | invalid expression of date |
358!> | -419 | `DC_EINCONSISTCALDATE`| calendar and date are inconsistent |
359!> | -420〜-499 | | 将来の DC ユーティリティの拡張のための予約 |
360!> @endja
361!>
362!> @subsection history_error_codes Error codes for data I/O layer / データ入出力層エラーコード
363!>
364!> @en
365!> Use following error codes by referring this "dc_error" module.
366!>
367!> | Number | Mnemonic | Error message |
368!> |--------|-------------------------|------------------------------------------------------------|
369!> | -500 | `HST_ENOTINDEFINE` | operation (cause_c) not allowed in data mode |
370!> | -501 | `HST_EINDEFINE` | operation (cause_c) not allowed in define mode |
371!> | -502 | `HST_EINTFILE` | different intervals are applied to a file (cause_c) |
372!> | -503 | `HST_EBADNAME` | name (cause_c) is invalid |
373!> | -504 | `HST_ENOTTERMGTHIST` | GT_HISTORY correspond to (cause_c) is not terminated |
374!> | -505 | `HST_ENODEPENDTIME` | (cause_c) does not depend on time |
375!> | -506 | `HST_EBADVARNAME` | variable name (cause_c) is invalid |
376!> | -507 | `HST_ENOTIMEDIM` | time dimension is not found |
377!> | -508 | `HST_ENOAXISNAME` | axis or weight (cause_c) is not found |
378!> | -509 | `HST_EVARINUSE` | variable name (cause_c) is already used |
379!> | -510 | `HST_EALREADYREGVARFIX` | already register of variables is fixed by (cause_c) |
380!> | -511 | `HST_EBADSLICE` | slice options are invalid (cause_c) |
381!> | -512 | `HST_EBADNEWFILEINT` | invalid newfile interval (cause_c) |
382!> | -513 | `HST_EMAXDIMSDEPENDED` | variable (cause_c) depends on (cause_i) dimensions |
383!> | -514 | `HST_EINDIVISIBLE` | (cause_c) can not be divided |
384!> | -515 | `HST_EBADTERMINUS` | terminus options are invalid (cause_c) |
385!> | -516 | `HST_EBADORIGIN` | origin options are invalid (cause_c) |
386!> | -517 | `HST_EMPINOAXISDATA` | data of axis (cause_c) for MPI is lack |
387!> @enden
388!>
389!> @ja
390!> 以下のエラーコードに関しては dc_error モジュールを引用することで
391!> 利用してください。
392!>
393!> | 数値 | ニーモニック | エラーメッセージ |
394!> |--------|-------------------------|------------------------------------------------------------|
395!> | -500 | `HST_ENOTINDEFINE` | operation (cause_c) not allowed in data mode |
396!> | -501 | `HST_EINDEFINE` | operation (cause_c) not allowed in define mode |
397!> | -502 | `HST_EINTFILE` | different intervals are applied to a file (cause_c) |
398!> | -503 | `HST_EBADNAME` | name (cause_c) is invalid |
399!> | -504 | `HST_ENOTTERMGTHIST` | GT_HISTORY correspond to (cause_c) is not terminated |
400!> | -505 | `HST_ENODEPENDTIME` | (cause_c) does not depend on time |
401!> | -506 | `HST_EBADVARNAME` | variable name (cause_c) is invalid |
402!> | -507 | `HST_ENOTIMEDIM` | time dimension is not found |
403!> | -508 | `HST_ENOAXISNAME` | axis or weight (cause_c) is not found |
404!> | -509 | `HST_EVARINUSE` | variable name (cause_c) is already used |
405!> | -510 | `HST_EALREADYREGVARFIX` | already register of variables is fixed by (cause_c) |
406!> | -511 | `HST_EBADSLICE` | slice options are invalid (cause_c) |
407!> | -512 | `HST_EBADNEWFILEINT` | invalid newfile interval (cause_c) |
408!> | -513 | `HST_EMAXDIMSDEPENDED` | variable (cause_c) depends on (cause_i) dimensions |
409!> | -514 | `HST_EINDIVISIBLE` | (cause_c) can not be divided |
410!> | -515 | `HST_EBADTERMINUS` | terminus options are invalid (cause_c) |
411!> | -516 | `HST_EBADORIGIN` | origin options are invalid (cause_c) |
412!> | -517 | `HST_EMPINOAXISDATA` | data of axis (cause_c) for MPI is lack |
413!> @endja
414!>
415!> @subsection reserved_error_codes Reserved error codes / gtool5 の将来の拡張のために予約してあるエラーコード
416!>
417!> @en
418!> Following error codes are reserved for future extensions.
419!>
420!> | Number | Description |
421!> |-------------|----------------------------------------------------|
422!> | -600 to -999| Reserved area for future extensions of gtool5 |
423!> @enden
424!>
425!> @ja
426!> 以下のエラーコードは今後の拡張も考えて予約してある部分です。
427!>
428!> | 数値 | 説明 |
429!> |-------------|----------------------------------------------------|
430!> | -600〜-999 | 将来の gtool5 の拡張のための予約 |
431!> @endja
432!>
433!> @subsection user_error_codes User-defined error codes / ユーザ定義用エラーコード
434!>
435!> @en
436!> Error codes smaller than -1000 are saved for as user-defined error codes
437!> used by upper programs.
438!>
439!> | Number | Mnemonic | Error message |
440!> |----------|--------------|------------------------|
441!> | -1000 to | `USR_ERRNO` | cause_c (cause_i) |
442!> @enden
443!>
444!> @ja
445!> -1000 よりも小さいエラーコードは、
446!> gtool5 の上位のプログラムが利用するエラーコードとして空けてあります。
447!>
448!> | 数値 | ニーモニック | エラーメッセージ |
449!> |----------|--------------|------------------------|
450!> | -1000〜 | `USR_ERRNO` | cause_c (cause_i) |
451!> @endja
452!>
453
455
456 use netcdf, only: nf90_enotvar, nf90_einval
457 use dc_types, only: string
458 implicit none
459 private
460 public :: nf90_enotvar, nf90_einval
461
462 !> @en Error storage variables @enden
463 !> @ja エラー等を保持 @endja
464
465 !> @var DC_NOERR
466 !> @en Non-error code (no error) @enden
467 !> @ja 非エラーコード (エラーなし) @endja
468 integer, public, parameter :: dc_noerr = 0
469 integer, private, save :: errno = dc_noerr
470 !< @en Current error number @enden
471 !< @ja 現在のエラー番号 @endja
472 integer, private, save :: cause_int = dc_noerr
473 !< @en Integer cause value @enden
474 !< @ja 整数型原因値 @endja
475 logical, private, save :: cause_int_valid = .false.
476 !< @en Flag for integer cause validity @enden
477 !< @ja 整数型原因値の有効性フラグ @endja
478 character(STRING), private, save :: cause_string = ""
479 !< @en String cause value @enden
480 !< @ja 文字列型原因値 @endja
481 character(STRING), private, save :: cause_location = ""
482 !< @en Error location @enden
483 !< @ja エラー発生箇所 @endja
484
485 !> @en
486 !> Positive error numbers are reserved for libc system error messages.
487 !> Due to high system dependency and very large values used,
488 !> it is difficult to reserve empty space.
489 !>
490 !> Negative error numbers are used by netCDF. Allowing for some
491 !> extensions, values up to -99 are not used.
492 !> @enden
493 !>
494 !> @ja
495 !> 正のエラー番号は libc システムエラーメッセージのために
496 !> あけてある。システム依存性が大きく、非常に大きな数値も
497 !> 用いられるので空き領域を確保するのは困難である。
498 !>
499 !> 負のエラー番号は netCDF が使っている。少々の拡張も見込んで、
500 !> -99 までは使わないで置く。
501 !> @endja
502
503 integer, parameter, public:: gt_efake = -100
504
505 !> @en -101 or less: Data structure errors @enden
506 !> @ja -101 以下: データ構造のエラー @endja
507 integer, parameter, public:: gt_enomoredims = -101
508 integer, parameter, public:: gt_edimnodim = -102
509 integer, parameter, public:: gt_edimmultidim = -103
510 integer, parameter, public:: gt_edimotherdim = -104
511 integer, parameter, public:: gt_ebaddimname = -105
512 integer, parameter, public:: gt_enotvar = -106
513 integer, parameter, public:: gt_enomem = -107
514 integer, parameter, public:: gt_eotherfile = -108
515 integer, parameter, public:: gt_eargsizemismatch = -109
516 integer, parameter, public:: gt_enomatchdim = -110
517 integer, parameter, public:: gt_elimited = -111
518 integer, parameter, public:: gt_ebadvar = -112
519 integer, parameter, public:: gt_echarshort = -113
520 integer, parameter, public:: gt_enounlimitdim = -114
521 integer, parameter, public:: gt_ebadattrname = -115
522 integer, parameter, public:: gt_ebadhistory = -116
523 integer, parameter, public:: gt_ebadallocatesize = -117
524 integer, parameter, public:: gt_erankmismatch = -118
525 integer, parameter, public:: gt_enoturl = -119
526 integer, parameter, public:: gt_ebadgt4commagraphy = -120
527
528 !> @en -300 or less: GrADS I/O errors @enden
529 !> @ja -300 以下: GrADS 入出力のエラー @endja
530 integer, parameter, public:: gr_enotgr = -300
531
532 !> @en -400 or less: DC utilities errors @enden
533 !> @ja -400 以下: dc ユーティリティのエラー @endja
534 integer, parameter, public:: dc_enotinit = -400
535 integer, parameter, public:: dc_ealreadyinit = -401
536 integer, parameter, public:: dc_ebadunit = -402
537 integer, parameter, public:: dc_ebadcaltype = -403
538 integer, parameter, public:: dc_ebadtimezone = -404
539 integer, parameter, public:: dc_efilenameempty = -405
540 integer, parameter, public:: dc_ebadfileopmode = -406
541 integer, parameter, public:: dc_enounitnum = -407
542 integer, parameter, public:: dc_enofileexist = -408
543 integer, parameter, public:: dc_enofileread = -409
544 integer, parameter, public:: dc_enofilewrite = -410
545 integer, parameter, public:: dc_enegative = -411
546 integer, parameter, public:: dc_earglack = -412
547 integer, parameter, public:: dc_enoassoc = -413
548 integer, parameter, public:: dc_enoentry = -414
549 integer, parameter, public:: dc_enodimtime = -415
550 integer, parameter, public:: dc_edimtime = -416
551 integer, parameter, public:: dc_etoolargetime = -417
552 integer, parameter, public:: dc_ebaddate = -418
553 integer, parameter, public:: dc_einconsistcaldate = -419
554
555 !> @en -500 or less: Data I/O layer errors @enden
556 !> @ja -500 以下: データ入出力層のエラー @endja
557 integer, parameter, public:: hst_enotindefine = -500
558 integer, parameter, public:: hst_eindefine = -501
559 integer, parameter, public:: hst_eintfile = -502
560 integer, parameter, public:: hst_ebadname = -503
561 integer, parameter, public:: hst_enottermgthist = -504
562 integer, parameter, public:: hst_enodependtime = -505
563 integer, parameter, public:: hst_ebadvarname = -506
564 integer, parameter, public:: hst_enotimedim = -507
565 integer, parameter, public:: hst_enoaxisname = -508
566 integer, parameter, public:: hst_evarinuse = -509
567 integer, parameter, public:: hst_ealreadyregvarfix = -510
568 integer, parameter, public:: hst_ebadslice = -511
569 integer, parameter, public:: hst_ebadnewfileint = -512
570 integer, parameter, public:: hst_emaxdimsdepended = -513
571 integer, parameter, public:: hst_eindivisible = -514
572 integer, parameter, public:: hst_ebadterminus = -515
573 integer, parameter, public:: hst_ebadorigin = -516
574 integer, parameter, public:: hst_empinoaxisdata = -517
575
576
577 !> @en -1000 or less: User-defined errors @enden
578 !> @ja -1000 以下: ユーザー定義 @endja
579 integer, parameter, public:: usr_errno = -1000
580
582
583 !> @en
584 !> Procedure reference specification.
585 !> Made as an external function to be replaceable in the future.
586 !> @enden
587 !> @ja
588 !> 手続引用仕様.
589 !> いずれ差し替えられるように外部関数にしておく。
590 !> @endja
591 interface
592 subroutine dumperror()
593 end subroutine dumperror
594 end interface
595
596contains
597
598 !> @en
599 !> @brief Return an error code specified currently.
600 !> @return Integer error code currently set
601 !> @enden
602 !> @ja
603 !> @brief 現在設定されているエラーコードを返します。
604 !> @return 現在設定されている整数型エラーコード
605 !> @endja
606 integer function errorcode() result(result)
607 result = errno
608 end function errorcode
609
610 !> @en
611 !> @brief Return messages corresponding to an error code specified currently.
612 !> @param[out] msg Error message string corresponding to the current error code
613 !> @enden
614 !> @ja
615 !> @brief 現在設定されているエラーコードから対応するメッセージを返します。
616 !> @param[out] msg 現在のエラーコードに対応するエラーメッセージ文字列
617 !> @endja
618 subroutine geterrormessage(msg)
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'
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'
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'
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'
693 msg = ' filename is empty'
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'
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'
735 msg = ' GT_HISTORY correspond to (' // trim(cause_string) // ') is not terminated'
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'
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) // ')'
751 msg = ' invalid newfile interval (' // trim(cause_string) // ')'
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) // ')'
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
812 end subroutine geterrormessage
813
814 !> @en
815 !> @brief Error handling subroutine for typical procedures of library
816 !> @details
817 !> Number of necessary arguments is two. Give integer error code
818 !> to first argument `number`, and procedure name where the error
819 !> occurs to second argument `where`. By default, like a following
820 !> string is displayed to standard output, and the program aborts.
821 !> Error message is determined by error code automatically.
822 !> See error code list.
823 !>
824 !> *** ERROR (Code number) [where] *** error_message
825 !>
826 !> *** ERROR (Code number) [where(cause_c)] *** error_message
827 !>
828 !> In addition, for usage that users call StoreError as an error
829 !> handling tool from the outside of gtool5 library,
830 !> error codes smaller than `USR_ERRNO` is saved.
831 !> When error codes smaller than `USR_ERRNO` is given,
832 !> StoreError displays like a following string to standard output,
833 !> and stops the program.
834 !> `dc_message` module is prepared too. This module can be used
835 !> more easily for message output and rise of error.
836 !>
837 !> *** ERROR (Code number) [where] *** cause_c
838 !>
839 !> *** ERROR (Code number) [where] *** cause_c (cause_i)
840 !>
841 !> @param[in] number Error code
842 !> @param[in] where Place where error occurs
843 !> @param[out] err Exception handling flag. By default, when error code
844 !> (excluding non error code) is given to `number`,
845 !> the program display error message and aborts.
846 !> If this `err` argument is given, `.true.` is substituted
847 !> to `err` and the program does not abort.
848 !> @param[in] cause_c Character message
849 !> @param[in] cause_i Integer message
850 !> @enden
851 !>
852 !> @ja
853 !> @brief 典型的ライブラリ手続のために作られたエラー処理サブルーチン
854 !> @details
855 !> 必要な引数は2つであり、第1引数 `number` には整数型のエラーコード、
856 !> 第2引数 `where` には文字型でエラーの発生した手続名を与えます。
857 !> デフォルトでは以下の形式の文字列が標準出力に表示されてプログラム
858 !> は終了します。 エラーメッセージ error_message
859 !> はエラーコードから自動的に決まります。
860 !> 対応表がエラーコード一覧にあるので参照してください。
861 !>
862 !> *** ERROR (Code number) [where] *** error_message
863 !>
864 !> *** ERROR (Code number) [where(cause_c)] *** error_message
865 !>
866 !> なお、gtool5 のライブラリ外からユーザがエラー処理用ツール
867 !> として StoreError を用いることを想定し、`USR_ERRNO`
868 !> 番より小さいエラーコードは空けてあります。`USR_ERRNO`
869 !> より小さい値をエラーコードに与えると,
870 !> StoreError は以下の形式の文字列を標準出力に出力してプログラムを
871 !> 終了させます。より安易に使えるメッセージ出力およびエラー発生の
872 !> ためのモジュールとして `dc_message` も用意してあるので
873 !> そちらも参照してください。
874 !>
875 !> *** ERROR (Code number) [where] *** cause_c
876 !>
877 !> *** ERROR (Code number) [where] *** cause_c (cause_i)
878 !>
879 !> @param[in] number エラーコード
880 !> @param[in] where エラー発生個所
881 !> @param[out] err 例外処理用フラグ。デフォルトでは、`number` に非エラーコード
882 !> 以外の値が与えられた場合、エラーメッセージを
883 !> 表示してプログラムは強制終了します。
884 !> 引数 `err` が与えられる場合、
885 !> プログラムは強制終了せず、代わりに
886 !> `err` に `.true.` が代入されます。
887 !> @param[in] cause_c 文字型メッセージ
888 !> @param[in] cause_i 整数型メッセージ
889 !> @endja
890 subroutine storeerror(number, where, err, cause_c, cause_i)
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
916 end subroutine storeerror
917
918 !> @namespace dc_error
919end module dc_error
920
921!> @en
922!> @brief Get error messages from "GetErrorMessage", and put the messages
923!> to sysdep#AbortProgram, and stop the program.
924!> @enden
925!> @ja
926!> @brief GetErrorMessage からエラーメッセージを取得後、
927!> それを sysdep#AbortProgram に渡してプログラムを終了させます。
928!> @endja
929subroutine dumperror()
930 use dc_types, only: string
931 use dc_error, only: geterrormessage
932 use sysdep, only: abortprogram
933 character(len = STRING):: message
934continue
935 call geterrormessage(message)
936 call abortprogram(message)
937end subroutine dumperror
Procedure reference specification. Made as an external function to be replaceable in the future.
Definition dc_error.f90:592
Error handling module.
Definition dc_error.f90:454
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:891
integer, parameter, public gt_ebadhistory
Definition dc_error.f90:522
integer, parameter, public gt_ebadvar
Definition dc_error.f90:518
integer, parameter, public usr_errno
-1000 or less: User-defined errors
Definition dc_error.f90:579
integer, parameter, public gt_enomatchdim
Definition dc_error.f90:516
integer, parameter, public gt_edimotherdim
Definition dc_error.f90:510
integer, parameter, public gt_echarshort
Definition dc_error.f90:519
integer, parameter, public gt_eotherfile
Definition dc_error.f90:514
integer, parameter, public dc_ebadunit
Definition dc_error.f90:536
integer, parameter, public hst_enottermgthist
Definition dc_error.f90:561
integer, parameter, public gt_enomem
Definition dc_error.f90:513
integer, parameter, public dc_enoassoc
Definition dc_error.f90:547
integer, parameter, public hst_ebadslice
Definition dc_error.f90:568
integer, parameter, public gr_enotgr
-300 or less: GrADS I/O errors
Definition dc_error.f90:530
integer, parameter, public dc_enodimtime
Definition dc_error.f90:549
integer function, public errorcode()
Definition dc_error.f90:607
integer, parameter, public hst_ebadvarname
Definition dc_error.f90:563
integer, parameter, public dc_enotinit
-400 or less: DC utilities errors
Definition dc_error.f90:534
integer, parameter, public dc_ealreadyinit
Definition dc_error.f90:535
integer, parameter, public gt_enounlimitdim
Definition dc_error.f90:520
integer, parameter, public gt_efake
Positive error numbers are reserved for libc system error messages. Due to high system dependency and...
Definition dc_error.f90:503
integer, parameter, public dc_ebadfileopmode
Definition dc_error.f90:540
integer, parameter, public hst_eintfile
Definition dc_error.f90:559
integer, parameter, public dc_earglack
Definition dc_error.f90:546
integer, parameter, public gt_edimnodim
Definition dc_error.f90:508
integer, parameter, public hst_enoaxisname
Definition dc_error.f90:565
integer, parameter, public hst_ebadorigin
Definition dc_error.f90:573
integer, parameter, public gt_ebaddimname
Definition dc_error.f90:511
integer, parameter, public dc_noerr
Error storage variables
Definition dc_error.f90:468
integer, parameter, public dc_enegative
Definition dc_error.f90:545
integer, parameter, public dc_etoolargetime
Definition dc_error.f90:551
integer, parameter, public gt_erankmismatch
Definition dc_error.f90:524
integer, parameter, public hst_ealreadyregvarfix
Definition dc_error.f90:567
integer, parameter, public hst_eindefine
Definition dc_error.f90:558
integer, parameter, public dc_enofileread
Definition dc_error.f90:543
integer, parameter, public gt_ebadgt4commagraphy
Definition dc_error.f90:526
integer, parameter, public hst_ebadterminus
Definition dc_error.f90:572
integer, parameter, public hst_enodependtime
Definition dc_error.f90:562
integer, parameter, public gt_eargsizemismatch
Definition dc_error.f90:515
integer, parameter, public gt_ebadallocatesize
Definition dc_error.f90:523
integer, parameter, public gt_edimmultidim
Definition dc_error.f90:509
integer, parameter, public gt_ebadattrname
Definition dc_error.f90:521
integer, parameter, public dc_efilenameempty
Definition dc_error.f90:539
integer, parameter, public gt_elimited
Definition dc_error.f90:517
integer, parameter, public gt_enotvar
Definition dc_error.f90:512
integer, parameter, public hst_emaxdimsdepended
Definition dc_error.f90:570
integer, parameter, public hst_eindivisible
Definition dc_error.f90:571
integer, parameter, public dc_ebaddate
Definition dc_error.f90:552
integer, parameter, public hst_empinoaxisdata
Definition dc_error.f90:574
integer, parameter, public dc_ebadcaltype
Definition dc_error.f90:537
integer, parameter, public hst_evarinuse
Definition dc_error.f90:566
integer, parameter, public dc_ebadtimezone
Definition dc_error.f90:538
integer, parameter, public hst_enotindefine
-500 or less: Data I/O layer errors
Definition dc_error.f90:557
integer, parameter, public dc_enofilewrite
Definition dc_error.f90:544
integer, parameter, public dc_edimtime
Definition dc_error.f90:550
integer, parameter, public dc_enofileexist
Definition dc_error.f90:542
integer, parameter, public gt_enoturl
Definition dc_error.f90:525
integer, parameter, public gt_enomoredims
-101 or less: Data structure errors
Definition dc_error.f90:507
integer, parameter, public dc_enounitnum
Definition dc_error.f90:541
integer, parameter, public hst_ebadname
Definition dc_error.f90:560
integer, parameter, public dc_enoentry
Definition dc_error.f90:548
subroutine, public geterrormessage(msg)
Definition dc_error.f90:619
integer, parameter, public hst_enotimedim
Definition dc_error.f90:564
integer, parameter, public dc_einconsistcaldate
Definition dc_error.f90:553
integer, parameter, public hst_ebadnewfileint
Definition dc_error.f90:569
Provides kind type parameter values.
Definition dc_types.f90:55
integer, parameter, public string
Character length for string
Definition dc_types.f90:137
Provides interface for system dependent procedures.
Definition sysdep.f90:54
subroutine, public abortprogram(message)
Abort program execution.
Definition sysdep.f90:90