/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/

#define __RSC
#ifndef _ERRCODE_HXX //autogen
#include <tools/errcode.hxx>
#endif
#include "sb.hrc"
#include <basic/sberrors.hxx>

Resource RID_BASIC_START
{
	String SbERR_SYNTAX & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Syntax error." ;
	};
	String SbERR_NO_GOSUB & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Return without Gosub." ;
	};
	String SbERR_REDO_FROM_START & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Incorrect entry; please retry." ;
	};
	String SbERR_BAD_ARGUMENT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid procedure call." ;
	};
	String SbERR_MATH_OVERFLOW & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Overflow." ;
	};
	String SbERR_NO_MEMORY & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Not enough memory." ;
	};
	String SbERR_ALREADY_DIM & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Array already dimensioned." ;
	};
	String SbERR_OUT_OF_RANGE & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Index out of defined range." ;
	};
	String SbERR_DUPLICATE_DEF & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Duplicate definition." ;
	};
	String SbERR_ZERODIV & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Division by zero." ;
	};
	String SbERR_VAR_UNDEFINED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Variable not defined." ;
	};
	String SbERR_CONVERSION & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Data type mismatch." ;
	};
	String SbERR_BAD_PARAMETER & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid parameter." ;
	};
	String SbERR_USER_ABORT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Process interrupted by user." ;
	};
	String SbERR_BAD_RESUME & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Resume without error." ;
	};
	String SbERR_STACK_OVERFLOW & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Not enough stack memory." ;
	};
	String SbERR_PROC_UNDEFINED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Sub-procedure or function procedure not defined." ;
	};
	String SbERR_BAD_DLL_LOAD & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Error loading DLL file." ;
	};
	String SbERR_BAD_DLL_CALL & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Wrong DLL call convention." ;
	};
	String SbERR_INTERNAL_ERROR & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Internal error $(ARG1)." ;
	};
	String SbERR_BAD_CHANNEL & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid file name or file number." ;
	};
	String SbERR_FILE_NOT_FOUND & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "File not found." ;
	};
	String SbERR_BAD_FILE_MODE & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Incorrect file mode." ;
	};
	String SbERR_FILE_ALREADY_OPEN & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "File already open." ;
	};
	String SbERR_IO_ERROR & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Device I/O error." ;
	};
	String SbERR_FILE_EXISTS & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "File already exists." ;
	};
	String SbERR_BAD_RECORD_LENGTH & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Incorrect record length." ;
	};
	String SbERR_DISK_FULL & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Disk or hard drive full." ;
	};
	String SbERR_READ_PAST_EOF & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Reading exceeds EOF." ;
	};
	String SbERR_BAD_RECORD_NUMBER & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Incorrect record number." ;
	};
	String SbERR_TOO_MANY_FILES & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Too many files." ;
	};
	String SbERR_NO_DEVICE & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Device not available." ;
	};
	String SbERR_ACCESS_DENIED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Access denied." ;
	};
	String SbERR_NOT_READY & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Disk not ready." ;
	};
	String SbERR_NOT_IMPLEMENTED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Not implemented." ;
	};
	String SbERR_DIFFERENT_DRIVE & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Renaming on different drives impossible." ;
	};
	String SbERR_ACCESS_ERROR & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Path/File access error." ;
	};
	String SbERR_PATH_NOT_FOUND & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Path not found." ;
	};
	String SbERR_NO_OBJECT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Object variable not set." ;
	};
	String SbERR_BAD_PATTERN & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid string pattern." ;
	};
	String SBERR_IS_NULL & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Use of zero not permitted." ;
	};
	String SbERR_DDE_ERROR & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "DDE Error." ;
	};
	String SbERR_DDE_WAITINGACK & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Awaiting response to DDE connection." ;
	};
	String SbERR_DDE_OUTOFCHANNELS & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "No DDE channels available." ;
	};
	String SbERR_DDE_NO_RESPONSE & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "No application responded to DDE connect initiation." ;
	};
	String SbERR_DDE_MULT_RESPONSES & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Too many applications responded to DDE connect initiation." ;
	};
	String SbERR_DDE_CHANNEL_LOCKED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "DDE channel locked." ;
	};
	String SbERR_DDE_NOTPROCESSED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "External application cannot execute DDE operation." ;
	};
	String SbERR_DDE_TIMEOUT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Timeout while waiting for DDE response." ;
	};
	String SbERR_DDE_USER_INTERRUPT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "User pressed ESCAPE during DDE operation." ;
	};
	String SbERR_DDE_BUSY & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "External application busy." ;
	};
	String SbERR_DDE_NO_DATA & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "DDE operation without data." ;
	};
	String SbERR_DDE_WRONG_DATA_FORMAT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Data are in wrong format." ;
	};
	String SbERR_DDE_PARTNER_QUIT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "External application has been terminated." ;
	};
	String SbERR_DDE_CONV_CLOSED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "DDE connection interrupted or modified." ;
	};
	String SbERR_DDE_NO_CHANNEL & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "DDE method invoked with no channel open." ;
	};
	String SbERR_DDE_INVALID_LINK & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid DDE link format." ;
	};
	String SbERR_DDE_QUEUE_OVERFLOW & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "DDE message has been lost." ;
	};
	String SbERR_DDE_LINK_ALREADY_EST & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Paste link already performed." ;
	};
	String SbERR_DDE_LINK_INV_TOPIC & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Link mode cannot be set due to invalid link topic." ;
	};
	String SbERR_DDE_DLL_NOT_FOUND & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "DDE requires the DDEML.DLL file." ;
	};
	String SbERR_CANNOT_LOAD & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Module cannot be loaded; invalid format." ;
	};
	String SbERR_BAD_INDEX & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid object index." ;
	};
	String SbERR_NO_ACTIVE_OBJECT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Object is not available." ;
	};
	String SbERR_BAD_PROP_VALUE & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Incorrect property value." ;
	};
	String SbERR_PROP_READONLY & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "This property is read-only." ;
	};
	String SbERR_PROP_WRITEONLY & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "This property is write only." ;
	};
	String SbERR_INVALID_OBJECT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid object reference." ;
	};
	String SbERR_NO_METHOD & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Property or method not found: $(ARG1)." ;
	};
	String SbERR_NEEDS_OBJECT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Object required." ;
	};
	String SbERR_INVALID_USAGE_OBJECT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid use of an object." ;
	};
	String SbERR_NO_OLE & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "OLE Automation is not supported by this object." ;
	};
	String SbERR_BAD_METHOD & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "This property or method is not supported by the object." ;
	};
	String SbERR_OLE_ERROR & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "OLE Automation Error." ;
	};
	String SbERR_BAD_ACTION & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "This action is not supported by given object." ;
	};
	String SbERR_NO_NAMED_ARGS & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Named arguments are not supported by given object." ;
	};
	String SbERR_BAD_LOCALE & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "The current locale setting is not supported by the given object." ;
	};
	String SbERR_NAMED_NOT_FOUND & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Named argument not found." ;
	};
	String SbERR_NOT_OPTIONAL & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Argument is not optional." ;
	};
	String SbERR_WRONG_ARGS & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid number of arguments." ;
	};
	String SbERR_NOT_A_COLL & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Object is not a list." ;
	};
	String SbERR_BAD_ORDINAL & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid ordinal number." ;
	};
	String SbERR_DLLPROC_NOT_FOUND & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Specified DLL function not found." ;
	};
	String SbERR_BAD_CLIPBD_FORMAT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid clipboard format." ;
	};
	String SbERR_PROPERTY_NOT_FOUND & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Object does not have this property." ;
	};
	String SbERR_METHOD_NOT_FOUND & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Object does not have this method." ;
	};
	String SbERR_ARG_MISSING & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Required argument lacking." ;
	};
	String SbERR_BAD_NUMBER_OF_ARGS & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid number of arguments." ;
	};
	String SbERR_METHOD_FAILED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Error executing a method." ;
	};
	String SbERR_SETPROP_FAILED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Unable to set property." ;
	};
	String SbERR_GETPROP_FAILED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Unable to determine property." ;
	};
	// Compiler errors. These are not runtime errors.
	String SbERR_UNEXPECTED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Unexpected symbol: $(ARG1)." ;
	};
	String SbERR_EXPECTED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Expected: $(ARG1)." ;
	};
	String SbERR_SYMBOL_EXPECTED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Symbol expected." ;
	};
	String SbERR_VAR_EXPECTED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Variable expected." ;
	};
	String SbERR_LABEL_EXPECTED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Label expected." ;
	};
	String SbERR_LVALUE_EXPECTED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Value cannot be applied." ;
	};
	String SbERR_VAR_DEFINED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Variable $(ARG1) already defined." ;
	};
	String SbERR_PROC_DEFINED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Sub procedure or function procedure $(ARG1) already defined." ;
	};
	String SbERR_LABEL_DEFINED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Label $(ARG1) already defined." ;
	};
	String SbERR_UNDEF_VAR & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Variable $(ARG1) not found." ;
	};
	String SbERR_UNDEF_ARRAY & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Array or procedure $(ARG1) not found." ;
	};
	String SbERR_UNDEF_PROC & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Procedure $(ARG1) not found." ;
	};
	String SbERR_UNDEF_LABEL & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Label $(ARG1) undefined." ;
	};
	String SbERR_UNDEF_TYPE & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Unknown data type $(ARG1)." ;
	};
	String SbERR_BAD_EXIT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Exit $(ARG1) expected." ;
	};
	String SbERR_BAD_BLOCK & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Statement block still open: $(ARG1) missing." ;
	};
	String SbERR_BAD_BRACKETS & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Parentheses do not match." ;
	};
	String SbERR_BAD_DECLARATION & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Symbol $(ARG1) already defined differently." ;
	};
	String SbERR_BAD_PARAMETERS & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Parameters do not correspond to procedure." ;
	};
	String SbERR_BAD_CHAR_IN_NUMBER & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Invalid character in number." ;
	};
	String SbERR_MUST_HAVE_DIMS & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Array must be dimensioned." ;
	};
	String SbERR_NO_IF & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Else/Endif without If." ;
	};
	String SbERR_NOT_IN_SUBR & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "$(ARG1) not allowed within a procedure." ;
	};
	String SbERR_NOT_IN_MAIN & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "$(ARG1) not allowed outside a procedure." ;
	};
	String SbERR_WRONG_DIMS & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Dimension specifications do not match." ;
	};
	String SbERR_BAD_OPTION & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Unknown option: $(ARG1)." ;
	};
	String SbERR_CONSTANT_REDECLARED & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Constant $(ARG1) redefined." ;
	};
	String SbERR_PROG_TOO_LARGE & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Program too large." ;
	};
	String SbERR_NO_STRINGS_ARRAYS & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Strings or arrays not permitted." ;
	};
	String ERRCODE_BASIC_EXCEPTION & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "An exception occurred $(ARG1)." ;
	};
	String ERRCODE_BASIC_ARRAY_FIX & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "This array is fixed or temporarily locked." ;
	};
	String ERRCODE_BASIC_STRING_OVERFLOW & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Out of string space." ;
	};
	String ERRCODE_BASIC_EXPR_TOO_COMPLEX & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Expression Too Complex." ;
	};
	String ERRCODE_BASIC_OPER_NOT_PERFORM & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Can't perform requested operation." ;
	};
	String ERRCODE_BASIC_TOO_MANY_DLL & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "Too many DLL application clients." ;
	};
	String ERRCODE_BASIC_LOOP_NOT_INIT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "For loop not initialized." ;
	};
	String ERRCODE_BASIC_COMPAT & ERRCODE_RES_MASK
	{
		Text [ en-US ] = "$(ARG1)" ;
	};
};
// Note: IDS_SBERR_TERMINATED = IDS_SBERR_START+2000.
String IDS_SBERR_TERMINATED
{
	Text [ en-US ] = "The macro running has been interrupted" ;
};
String IDS_SBERR_STOREREF
{
	Text [ en-US ] = "Reference will not be saved: " ;
};
String ERRCODE_BASMGR_LIBLOAD & ERRCODE_RES_MASK
{
	Text [ en-US ] = "Error loading library '$(ARG1)'." ;
};
String ERRCODE_BASMGR_LIBSAVE & ERRCODE_RES_MASK
{
	Text [ en-US ] = "Error saving library: '$(ARG1)'." ;
};
String ERRCODE_BASMGR_MGROPEN & ERRCODE_RES_MASK
{
	Text [ en-US ] = "The BASIC from the file '$(ARG1)' could not be initialized." ;
};
String ERRCODE_BASMGR_MGRSAVE & ERRCODE_RES_MASK
{
	Text [ en-US ] = "Error saving BASIC: '$(ARG1)'." ;
};
String ERRCODE_BASMGR_REMOVELIB & ERRCODE_RES_MASK
{
	Text [ en-US ] = "Error removing library." ;
};
String ERRCODE_BASMGR_UNLOADLIB & ERRCODE_RES_MASK
{
	Text [ en-US ] = "The library could not be removed from memory." ;
};

// ********************************************************************** EOF
