// This file is part of SmallBASIC
//
// SB Messages in English - Latin1
//
// This program is distributed under the terms of the GPL v2.0 or later
// Download the GNU Public License (GPL) from www.gnu.org
//
// Copyright(C) 2000 Nicholas Christopoulos

#define LOWER_CHAR_FOR_YES      'y'
#define WORD_FILE               "File"
#define WORD_SECTION            "Section"

#define TABLE_WEEKDAYS_3C    { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }
#define TABLE_WEEKDAYS_FULL  { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }
#define TABLE_MONTH_3C       { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }
#define TABLE_MONTH_FULL     { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }

#define DATEFMT_DAY_U           'D'
#define DATEFMT_DAY_L           'd'
#define DATEFMT_MONTH_U         'M'
#define DATEFMT_MONTH_L         'm'
#define DATEFMT_YEAR_U          'Y'
#define DATEFMT_YEAR_L          'y'

#define RES_NUMBER_OF_VARS      "Number of variables %d (%d)\n"
#define RES_NUMBER_OF_LABS      "Number of labels    %d\n"
#define RES_NUMBER_OF_UDPS      "Number of UDFs/UDPs %d\n"
#define RES_CODE_SIZE           "Code size           %d\n"
#define RES_IMPORTED_LIBS       "Imported libraries  %d\n"
#define RES_IMPORTED_SYMS       "Imported symbols    %d\n"
#define RES_EXPORTED_SYMS       "Exported symbols    %d\n"
#define RES_FINAL_SIZE          "Final size          %d\n"

// compiler
#define MSG_WRONG_PROCNAME      "Wrong procedure/function name: %s"
#define MSG_EXP_MIS_DQ          "Expression: Missing (\"), string remains open"
#define MSG_EXP_MIS_RP          "Expression: Missing \')\'"
#define MSG_EXP_MIS_LP          "Expression: Missing \'(\'"
#define MSG_EXP_MIS_RB          "Expression: Missing \'}\'"
#define MSG_LABEL_NOT_DEFINED   "Label '%s' is not defined"
#define MSG_WRONG_UNIT          "Unknown unit '%s'; use IMPORT\n"
#define MSG_NEW_LABEL           "%d: new label [%s], index %d\n"
#define MSG_NEW_UDP             "%d: new UDP/F [%s], index %d\n"
#define MSG_NEW_VAR             "%d: new VAR [%s], index %d\n"
#define MSG_WRONG_VARNAME       "Wrong variable name: %s"
#define MSG_EXP_GENERR          "Error on numeric expression"
#define MSG_BF_ARGERR           "Built-in function %s: without parameters"
#define MSG_KEYWORD_DO_ERR      "Keyword DO not allowed here"
#define MSG_STATEMENT_ON_RIGHT  "Statement %s must be on the left side (the first keyword of the line)"
#define MSG_OPR_APPEND_ERR      "operator << not allowed here"
#define MSG_WRONG_OPR           "Unknown operator: '%c'"
#define MSG_PARNUM_LIMIT        "Parameters limit: %d"
#define MSG_NIL_PAR_ERR         "'Empty' parameters are not allowed"
#define MSG_MISSING_CHAR        "Missing '%c'"
#define MSG_ARRAY_SE            "Array: syntax error"
#define MSG_ARRAY_MIS_RP        "Array: Missing ')', (left side of expression)"
#define MSG_ARRAY_MIS_LP        "Array: Missing '(', (left side of expression)"
#define MSG_OPTION_ERR          "OPTION: Unrecognized option '%s'"
#define MSG_IT_IS_KEYWORD       "%s: is keyword (left side of expression)"
#define MSG_USE_DECL            "Use DECLARE with SUB or FUNC keyword"
#define MSG_LET_MISSING_EQ      "LET/CONST/APPEND: Missing '='"
#define MSG_EXIT_ERR            "Use EXIT [FOR|LOOP|SUB|FUNC]"
#define MSG_UDP_ALREADY_EXISTS  "The SUB/FUNC %s is already defined"
#define MSG_MISSING_UDP_BODY    "Block not found with FUNC/DEF declared using '='"
#define MSG_UNIT_NAME_MISSING   "EXPORT: Unit name is not defined"
#define MSG_ON_GOTO_ERR         "ON x GOTO WHERE?"
#define MSG_ON_GOSUB_ERR        "ON x GOSUB WHERE?"
#define MSG_ON_NOTHING          "ON WHAT?"
#define MSG_FOR_NOTHING         "FOR: Missing '=' OR 'IN'"
#define MSG_FOR_COUNT_ERR       "FOR: %s is not a variable"
#define MSG_FOR_ARR_COUNT       "FOR: %s is an array. Arrays are not allowed"
#define MSG_SPECIAL_KW_ERR      "%s: Wrong position"
#define MSG_DETAILED_REPORT_Q   "Detailed report (y/N) ?"
#define MSG_PASS2_COUNT         "\rPASS2: Node %d/%d"
#define MSG_UDP_MISSING_END     "SUB/FUNC: Missing END on the same level"
#define MSG_MISSING_NEXT        "FOR: Missing NEXT on the same level"
#define MSG_MISSING_IN          "FOR: Missing IN"
#define MSG_MISSING_TO          "FOR: Missing TO"
#define MSG_MISSING_WEND        "WHILE: Missing WEND on the same level"
#define MSG_MISSING_UNTIL       "REPEAT: Missing UNTIL on the same level"
#define MSG_MISSING_ENDIF_OR_ELSE "IF: Missing ELIF/ELSE/ENDIF on the same level"
#define MSG_MISSING_ENDIF       "(ELSE) IF: Missing ENDIF on the same level"
#define MSG_MISSING_WHILE       "WEND: Missing WHILE on the same level"
#define MSG_MISSING_REPEAT      "UNTIL: Missing REPEAT on the same level"
#define MSG_MISSING_FOR         "NEXT: Missing FOR on the same level"
#define MSG_MISSING_IF          "ENDIF: Missing IF on the same level"
#define MSG_MEMBER_DOES_NOT_EXIST "Unit has no member named '%s'\n"
#define MSG_MODULE_NO_MEMBER    "Module '%s' has no member '%s'\n"
#define MSG_MODULE_NO_RETURN    "Module FUNC '%s' result not assigned\n"
#define MSG_CANT_OPEN_FILE_AT   "Can't open '%s' at '%s'\n"
#define MSG_CANT_OPEN_FILE      "Can't open '%s'\n"
#define MSG_GRMODE_ERR          "GRMODE, usage:<width>x<height>[x<bits-per-pixel>]\nExample: OPTION PREDEF GRMODE=640x480x4\n"
#define MSG_UNIT_NOT_FOUND      "Unit %s.sbu not found or wrong version"
#define MSG_IMPORT_FAILED       "Unit %s.sbu, import failed"
#define MSG_INVALID_UNIT_NAME   "Invalid unit name"
#define MSG_UNIT_ALREADY_DEFINED "Unit name already defined"
#define MSG_OPT_PREDEF_ERR      "OPTION PREDEF: Unrecognized option '%s'"
#define MSG_MANY_UNIT_DECL      "Use 'Unit' keyword only once"
#define MSG_INC_MIS_DQ          "#INC: Missing \""
#define MSG_INC_FILE_DNE        "File %s: File %s does not exist"
#define MSG_INC_FILE_INC        "File %s: File cannot include itself"
#define MSG_UDP_ALREADY_DECL    "SUB/FUNC %s already defined"
#define MSG_UDP_MIS_END_2       "File %s: SUB/FUNC: Missing END (possibly in %s)"
#define MSG_PASS1               "Pass1...\n"
#define MSG_PASS1_COUNT         "\rPASS1: Line %d"
#define MSG_UNDEFINED_UDP       "Undefined SUB/FUNC code: %s"
#define MSG_UNDEFINED_MAP       "Undefined MAP: '%s' or missing parenthesis"
#define MSG_PASS1_FIN           "\rPASS1: Line %d; finished\n"
#define MSG_EXP_SYM_NOT_FOUND   "Export symbol '%s' not found"
#define MSG_PASS2               "PASS2..."
#define MSG_MISSING_END_3       "SUB/FUNC: Missing END"
#define MSG_LOOPS_OPEN          "%d loop(s) remains open"
#define MSG_CREATING_UNIT       "\nCreating Unit %s...\n"
#define MSG_CREATING_BC         "Creating byte-code...\n"
#define MSG_UNIT_NAME_DIF_THAN_SRC  "Warning: unit's file name is different than source\n"
#define MSG_BC_FILE_CREATED         "ByteCode file '%s' created\n"
#define MSG_BC_FILE_ERROR           "Can't create binary file\n"
#define MSG_CASE_CASE_ELSE      "CASE following CASE ELSE"
#define MSG_MISSING_END_SELECT  "SELECT/CASE without 'END SELECT'"
#define MSG_MISSING_SELECT      "END SELECT without SELECT"
#define MSG_MISSING_CASE        "SELECT without CASE"
#define MSG_MISSING_CATCH       "TRY without CATCH"
#define MSG_MISSING_ENDTRY      "TRY without END TRY"
#define MSG_FUNC_NOT_ASSIGNED   "The value returned from %s was not assigned"
#define MSG_RETURN_NOT_ASSIGNED "FUNC (line %d) - result not assigned"
#define MSG_ERR_JSON            "JSON decode error. Error near position [%d]"

// executor
#define WORD_ERROR_AT           "ERROR AT"
#define WORD_DESCRIPTION        "Description"
#define WORD_COMP               "COMP"  // Compiler (COMP) error or RunTime error (RTE)
#define WORD_RTE                "RTE"
#define WORD_DONE               "DONE"
#define WORD_BREAK_AT           "BREAK AT LINE"
#define WORD_INPUT_REDO         "REDO FROM START"
#define WORD_GOTO               "GOTO"
#define WORD_GOSUB              "GOSUB"
#define WORD_INF                "INF" // infinity
#define FSERR_INVALID_PARAMETER "FS: Invalid parameter"
#define FSERR_NOT_FOUND         "FS: File not found"
#define FSERR_HANDLE            "FS: Invalid file handle"
#define FSERR_ACCESS            "FS: Access denied"
#define FSERR_GENERIC           "FS: Generic I/O error"
#define FSERR_FMT               "FS(%d): %s"
#define FSERR_TOO_MANY_FILES    "FS: Too many open files"
#define FSERR_WRONG_DRIVER      "Unknown device or file-system"
#define ERR_MISSING_RP          "Missing ')' OR invalid number of parameters"
#define ERR_MATRIX_DIM          "Matrix dimension error"
#define ERR_SYNTAX              "Syntax error"
#define ERR_MISSING_SEP         "Missing separator '%c'"
#define ERR_PARCOUNT            "Error number of parameters"
#define ERR_STACK_OVERFLOW      "Stack overflow"
#define ERR_STACK_UNDERFLOW     "Stack underflow"
#define ERR_STACK               "Stack mess (Cannot use call to SUB with an expression)"
#define ERR_ARRAY_MISSING_LP    "Array: Missing '('"
#define ERR_ARRAY_MISSING_RP    "Array: Missing ')'"
#define ERR_ARRAY_RANGE         "Array: Index '%d' out of range. (Max = %d)"
#define ERR_TYPE                "Type mismatch"
#define ERR_PARAM               "Invalid parameter"
#define ERR_PARAM_TOO_MANY      "Too many parameters"
#define ERR_NO_ARGS             "Function takes no arguments"
#define EVAL_VAR_IS_ARRAY       "Expr/RT: Variable is an array"
#define EVAL_VAR_IS_NOT_ARRAY   "Expr/RT: Variable is NOT an array (Use DIM)"
#define EVAL_NOT_A_NUM          "Expr/RT: Not a number"
#define EVAL_SYNTAX             "Expr/RT: Syntax error"
#define EVAL_TYPE               "Expr/RT: Type mismatch"
#define EVAL_PARAM              "Expr/RT: Invalid parameter"
#define ERR_UNSUPPORTED         "Unsupported"
#define ERR_CONST               "LET: Cannot change a constant (CONST always has global scope)"
#define ERR_NOT_A_VAR           "Not a variable"
#define ERR_RANGE               "Out of range"
#define ERR_MISSING_SEP_OR_PAR  "Missing separator OR parenthesis"
#define ERR_DIVZERO             "Division by zero"
#define ERR_OPERATOR            "Operator cannot be used with an array"
#define ERR_MATSIG              "Matrix singular"
#define ERR_MISSING_LP          "Missing '('"
#define ERR_PARFMT              "Parameters count/format error (%s)"
#define ERR_BYREF               "Parameter %d cannot BYREF"
#define ERR_BAD_FILE_HANDLE     "Invalid file number (Use OPEN)"
#define ERR_SEP_FMT             "No separator found (missing %s)"
#define ERR_POLY                "Parsing polyline: type mismatch (element: %d, info: %d)"
#define ERR_CRITICAL_MISSING_FUNC  "Unsupported built-in function call %ld, please report this bug"
#define ERR_GPF                 "\n\aOUT OF ADDRESS SPACE\n"
#define ERR_CRITICAL_MISSING_PROC  "Unsupported built-in procedure call %ld, please report this bug"
#define ERR_RUN_FILE            "RUN/EXEC \"%s\" Failed"
#define ERR_RUNFUNC_FILE        "RUN(\"%s\"): Failed"
#define ERR_PARCOUNT_SP         "Parameter count error @%d=%X"
#define ERR_DATE                "Invalid DATE: '%s'. Expected DD/MM/YYYY"
#define ERR_TIME                "Invalid TIME: '%s'. Expected HH:MM:SS"
#define ERR_BOUND_DIM           "U/LBOUND: Array of %d dimensions (%d)"
#define ERR_BOUND_VAR           "U/LBOUND: Variable is not an array"
#define ERR_FORMAT_INVALID_FORMAT "Wrong format"
#define ERR_CENTROID            "Centroid is undefined"
#define ERR_WRONG_POLY          "Polygon is incorrect"
#define ERR_POINT               "POINT() Invalid parameter"
#define ERR_LINEEQN_ADIM        "MATRIX A, WRONG DIM %dx%d"
#define ERR_LINEEQN_BDIM        "MATRIX B, WRONG DIM %dx%d"
#define ERR_WRONG_MAT           "MATRIX: WRONG DIM %dx%d"
#define ERR_INPUT_NO_VARS       "INPUT without variables"
#define ERR_ONGOTO_RANGE        "ON x %s: Out of range"
#define ERR_EXITFOR             "EXIT FOR: No 'FOR' inside subroutine or function"
#define ERR_EXITLOOP            "EXIT LOOP: No 'LOOP' inside subroutine or function"
#define ERR_READ_DATA_START     "READ: Data out of range. Use RESTORE [label]"
#define ERR_READ_DATA_INDEX     "READ: Data out of range. Use RESTORE [label]"
#define ERR_READ_DATA_INDEX_FMT "READ: Data out of range (IDX=%d). Use RESTORE [label]"
#define ERR_PUTENV              "ENV failed"
#define ERR_EXPRSEQ_WITHOUT_EXPR "EXPRSEQ: Missing expression"
#define ERR_POLY_POINT          "Parsing point: type mismatch"
#define ERR_VP_POS              "Viewport out of screen"
#define ERR_VP_ZERO             "Viewport of zero size"
#define ERR_WIN_ZERO            "Window of zero size"
#define ERR_DRAW_SEP            "DRAW: Missing separator (,)"
#define ERR_DRAW_CMD            "DRAW: Command '%c' unsupported"
#define ERR_FILE_PERM           "File IO permission error"
#define ERR_REF_VAR             "BYREF error. Invalid variable reference"
#define ERR_REF_CIRC_VAR        "BYREF error. Circular reference"
#define ERR_INVALID_CATCH       "Invalid catch argument"
#define ERR_NO_FUNC             "Not a function"
#define ERR_IMAGE_LOAD          "Failed to load image: '%s'"
#define ERR_IMAGE_SAVE          "Failed to save image"
#define ERR_IMAGE_SAVE_ERR      "Failed to save image: '%s'"
#define ERR_FORM_INPUT          "Form has no inputs"
#define ERR_PARAM_NUM           "Incorrect number of parameters: %d. Expected %d."
#define ERR_PACK_TOO_MANY       "Too many values to unpack"
#define ERR_PACK_TOO_FEW        "Need more than %d values to unpack"
#define ERR_MEMORY              "Out of memory error"
#define ERR_NETWORK             "Network error"
#define ERR_XPM_IMAGE           "Invalid xpm image"
#define ERR_FILE_NOT_OPEN       "IOError: File not open for reading"
#define ERR_DIRWALK_NAME        "DIRWALK: name %s/%s too long"
#define ERR_DIRWALK_MISSING_USE "DIRWALK: missing USE statement"
#define ERR_DIRWALK_CANT_OPEN   "DIRWALK: can't open %s"
#define ERR_LINE_LENGTH         "Line length limit exceeded at text: '%s'"
#define ERR_ABNORMAL_EXIT       "Abnormal exit"
#define ERR_CONNECTION          "Not connected"
