| /* | |
| * Copyright (c) 2021-2025 Symas Corporation | |
| * All rights reserved. | |
| * | |
| * Redistribution and use in source and binary forms, with or without | |
| * modification, are permitted provided that the following conditions are | |
| * met: | |
| * | |
| * * Redistributions of source code must retain the above copyright | |
| * notice, this list of conditions and the following disclaimer. | |
| * * Redistributions in binary form must reproduce the above | |
| * copyright notice, this list of conditions and the following disclaimer | |
| * in the documentation and/or other materials provided with the | |
| * distribution. | |
| * * Neither the name of the Symas Corporation nor the names of its | |
| * contributors may be used to endorse or promote products derived from | |
| * this software without specific prior written permission. | |
| * | |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
| * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
| * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
| */ | |
| #ifndef _CBL_EXCEPTC_H_ | |
| #define _CBL_EXCEPTC_H_ | |
| /* This file contains declarations needed by the libgcobol compilation. Some | |
| of the information here is required by the gcc/cobol compilation, and so it | |
| is safe to include in those files. */ | |
| static const ec_type_t simon_says_important[] = { | |
| ec_argument_function_e, | |
| ec_bound_odo_e, | |
| ec_bound_ref_mod_e, | |
| ec_bound_subscript_e, | |
| ec_data_incompatible_e, | |
| ec_data_ptr_null_e, | |
| ec_size_overflow_e, | |
| ec_size_exponentiation_e, | |
| ec_size_truncation_e, | |
| ec_size_zero_divide_e, | |
| ec_program_not_found_e, | |
| ec_program_recursive_call_e, | |
| ec_program_arg_mismatch_e, | |
| }; | |
| enum ec_disposition_t { | |
| ec_category_none_e, | |
| ec_category_fatal_e, | |
| ec_category_nonfatal_e, | |
| ec_category_implementor_e, | |
| // unimplemented equivalents | |
| uc_category_none_e = 0x80 + ec_category_none_e, | |
| uc_category_fatal_e = 0x80 + ec_category_fatal_e, | |
| uc_category_nonfatal_e = 0x80 + ec_category_nonfatal_e, | |
| uc_category_implementor_e = 0x80 + ec_category_implementor_e, | |
| }; | |
| struct ec_descr_t { | |
| ec_type_t type; | |
| ec_disposition_t disposition; | |
| const cbl_name_t name; | |
| const char *description; | |
| bool operator==( ec_type_t type ) const { | |
| return this->type == type; | |
| } | |
| }; | |
| extern ec_type_t ec_type_of( const cbl_name_t name ); | |
| extern ec_descr_t __gg__exception_table[]; | |
| extern ec_descr_t *__gg__exception_table_end; | |
| /* Inventory of exceptions: | |
| In except.hc::__gg__exception_table, unimplemented ECs have a uc_ disposition. | |
| ec_function_argument_e ACOS | |
| ANNUITY | |
| ASIN | |
| LOG | |
| LOG10 | |
| PRESENT-VALUE | |
| SQRT | |
| ec_sort_merge_file_open_e FILE MERGE | |
| ec_bound_subscript_e table subscript not an integer | |
| table subscript less than 1 | |
| table subscript greater than occurs | |
| ec_bound_ref_mod_e refmod start not an integer | |
| refmod start less than 1 | |
| refmod start greater than variable size | |
| refmod length not an integer | |
| refmod length less than 1 | |
| refmod start+length exceeds variable size | |
| ec_bound_odo_e DEPENDING not an integer | |
| DEPENDING greater than occurs upper limit | |
| DEPENDING less than occurs lower limit | |
| subscript greater than DEPENDING for sending item | |
| ec_size_zero_divide_e For both fixed-point and floating-point division | |
| ec_size_truncation | |
| ec_size_exponentiation | |
| */ | |
| #endif |