/**************************************************************
 *
 * 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.
 *
 *************************************************************/

/* Resource file for the function wizard / autopilot.
 *
 * All descriptions of functions are collected within the resources
 * RID_SC_FUNCTION_DESCRIPTIONS1 respectively RID_SC_FUNCTION_DESCRIPTIONS2,
 * two blocks because otherwise we had a 64kb overflow.
 *
 *  For every function there is a sub resource with the number of the OpCode of
 *  the function.
 *
 *      In this sub resource, with index 1 the description of the function is
 *      given, after that follows an
 *
 *      ExtraData block with:
 *
 *          Boolean flag whether function is suppressed. Usually 0. This may be
 *          used to add UI string resources before UI freeze if implementation
 *          isn't ready yet without displaying them in the function wizard,
 *          most recent used list and other UI elements. Also not available via
 *          API then.
 *
 *          Function group (text, math, ...), one of ID_FUNCTION_GRP_...
 *
 *          Help ID, U2S(HID_FUNC_...)
 *
 *          Number of parameters. VAR_ARGS if variable number, or
 *          VAR_ARGS+number if number of fixed parameters and variable
 *          arguments following. Or PAIRED_VAR_ARGS if variable number of
 *          paired parameters, or PAIRED_VAR_ARGS+number if number of fixed
 *          parameters and variable paired arguments following.
 *
 *          For every parameter:
 *
 *              Boolean flag whether the parameter is optional.
 *
 *          Number of suppressed parameters. Usually 0. Same meaning and
 *          mechanism as the flag for the entire function above.
 *
 *          For every suppressed parameter:
 *
 *              The parameter number, offset starting with 0. Variable
 *              arguments can't be suppressed!
 *
 *
 *      ExtraData block followed by two string resources for each parameter,
 *      first the type or name of the parameter, second a description of the
 *      parameter.
 */

// Hack:
//#define	U2S(x)	((x)-HID_START)
#define U2S(x) x
// Macro U2S: unsigned to signed
// is needed because the resource compiler only knows signed short int in
// ExtraData, but the HID_XXX are unsigned and exceed 32k. Code reading the
// resource entries must consider this and undo the conversion.

#include "scfuncs.hrc" // ID_FUNCTION_GRP_XXX, HID_FUNC_XXX
#include "formula/compiler.hrc" // SC_OPCODE_XXX

Resource RID_SC_FUNCTION_DESCRIPTIONS1
{
	// -=*# Resource for function DBANZAHL #*=-
	Resource SC_OPCODE_DB_COUNT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Counts the cells of a data range whose contents match the search criteria." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATABASE;
			U2S( HID_FUNC_DBANZAHL );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Database" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells containing data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Database field" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Search criteria" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Defines the cell range containing the search criteria." ;
		};
	};
	// -=*# Resource for function DBANZAHL2 #*=-
	Resource SC_OPCODE_DB_COUNT_2
	{
		String 1 // Description
		{
			Text [ en-US ] = "Counts all non-blank cells of a data range where the content corresponds to the search criteria." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATABASE;
			U2S( HID_FUNC_DBANZAHL2 );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Database" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells containing data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Database field" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Search criteria" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Defines the cell range containing the search criteria." ;
		};
	};
	// -=*# Resource for function DBMITTELWERT #*=-
	Resource SC_OPCODE_DB_AVERAGE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the average value of all the cells of a data range whose contents match the search criteria." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATABASE;
			U2S( HID_FUNC_DBMITTELWERT );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Database" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells containing data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Database field" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Search criteria" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Defines the cell range containing the search criteria." ;
		};
	};
	// -=*# Resource for function DBAUSZUG #*=-
	Resource SC_OPCODE_DB_GET
	{
		String 1 // Description
		{
			Text [ en-US ] = "Defines the contents of the cell of a data range which matches the search criteria." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATABASE;
			U2S( HID_FUNC_DBAUSZUG );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Database" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells containing data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Database field" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Search criteria" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Defines the cell range containing the search criteria." ;
		};
	};
	// -=*# Resource for function DBMAX #*=-
	Resource SC_OPCODE_DB_MAX
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the maximum value from all of the cells of a data range which correspond to the search criteria." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATABASE;
			U2S( HID_FUNC_DBMAX );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Database" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells containing data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Database field" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Search criteria" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Defines the cell range containing the search criteria." ;
		};
	};
	// -=*# Resource for function DBMIN #*=-
	Resource SC_OPCODE_DB_MIN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the minimum of all cells of a data range where the contents correspond to the search criteria." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATABASE;
			U2S( HID_FUNC_DBMIN );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Database" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells containing data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Database field" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Search criteria" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Defines the cell range containing the search criteria." ;
		};
	};
	// -=*# Resource for function DBPRODUKT #*=-
	Resource SC_OPCODE_DB_PRODUCT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Multiplies all cells of a data range where the contents match the search criteria." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATABASE;
			U2S( HID_FUNC_DBPRODUKT );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Database" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells containing data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Database field" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Search criteria" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Defines the cell range containing the search criteria." ;
		};
	};
	// -=*# Resource for function DBSTDABW #*=-
	Resource SC_OPCODE_DB_STD_DEV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the standard deviation of all cells in a data range whose contents match the search criteria." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATABASE;
			U2S( HID_FUNC_DBSTDABW );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Database" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells containing data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Database field" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Search criteria" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Defines the cell range containing the search criteria." ;
		};
	};
	// -=*# Resource for function DBSTDABWN #*=-
	Resource SC_OPCODE_DB_STD_DEV_P
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the standard deviation with regards to the population of all cells of a data range matching the search criteria." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATABASE;
			U2S( HID_FUNC_DBSTDABWN );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Database" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells containing data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Database field" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Search criteria" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Defines the cell range containing the search criteria." ;
		};
	};
	// -=*# Resource for function DBSUMME #*=-
	Resource SC_OPCODE_DB_SUM
	{
		String 1 // Description
		{
			Text [ en-US ] = "Adds all the cells of a data range where the contents match the search criteria." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATABASE;
			U2S( HID_FUNC_DBSUMME );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Database" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells containing data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Database field" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Search criteria" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Defines the cell range containing the search criteria." ;
		};
	};
	// -=*# Resource for function DBVARIANZ #*=-
	Resource SC_OPCODE_DB_VAR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Determines the variance of all the cells in a data range where the contents match the search criteria." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATABASE;
			U2S( HID_FUNC_DBVARIANZ );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Database" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells containing data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Database field" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Search criteria" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Defines the cell range containing the search criteria." ;
		};
	};
	// -=*# Resource for function DBVARIANZEN #*=-
	Resource SC_OPCODE_DB_VAR_P
	{
		String 1 // Description
		{
			Text [ en-US ] = "Determines variance of a population based on all cells in a data range where contents match the search criteria." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATABASE;
			U2S( HID_FUNC_DBVARIANZEN );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Database" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells containing data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Database field" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Search criteria" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Defines the cell range containing the search criteria." ;
		};
	};
	// -=*# Resource for function DATUM #*=-
	Resource SC_OPCODE_GET_DATE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Provides an internal number for the date given." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_DATUM );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "year" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "An integer between 1583 and 9956 or 0 and 99 (19xx or 20xx depending on the defined option)." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "month" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "An integer between 1 and 12 representing the month." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "day" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "An integer between 1 and 31 representing the day of the month." ;
		};
	};
	// -=*# Resource for function DATWERT #*=-
	Resource SC_OPCODE_GET_DATE_VALUE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns an internal number for a text having a possible date format." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_DATWERT );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "A text enclosed in quotation marks which returns a date in a %PRODUCTNAME date format." ;
		};
	};
	// -=*# Resource for function TAG #*=-
	Resource SC_OPCODE_GET_DAY
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the sequential date of the month as an integer (1-31) in relation to the date value." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_TAG );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The internal number for the date." ;
		};
	};
	// -=*# Resource for function TAGE360 #*=-
	Resource SC_OPCODE_GET_DIFF_DATE_360
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the number of days between two dates based on a 360-day year." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_TAGE360 );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Date_1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The start date for calculating the difference in days." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Date_2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The end date for calculating the difference in days." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Type" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Method used to form differences: Type = 0 denotes US method (NASD), Type = 1 denotes the European method." ;
		};
	};
	// -=*# Resource for function STUNDE #*=-
	Resource SC_OPCODE_GET_HOUR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Determines the sequential number of the hour of the day (0-23) for the time value." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_STUNDE );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Internal time value" ;
		};
	};
	// -=*# Resource for function MINUTE #*=-
	Resource SC_OPCODE_GET_MIN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Determines the sequential number for the minute of the hour (0-59) for the time value." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_MINUTE );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Internal time value." ;
		};
	};
	// -=*# Resource for function MONAT #*=-
	Resource SC_OPCODE_GET_MONTH
	{
		String 1 // Description
		{
			Text [ en-US ] = "Determines the sequential number of a month of the year (1-12) for the date value." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_MONAT );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The internal number of the date." ;
		};
	};
	// -=*# Resource for function JETZT #*=-
	Resource SC_OPCODE_GET_ACT_TIME
	{
		String 1 // Description
		{
			Text [ en-US ] = "Determines the current time of the computer." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_JETZT );
			0;
			0;
		};
	};
	// -=*# Resource for function SEKUNDE #*=-
	Resource SC_OPCODE_GET_SEC
	{
		String 1 // Description
		{
			Text [ en-US ] = "Determines the sequential number of the second of a minute (0-59) for the time value." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_SEKUNDE );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The internal time value." ;
		};
	};
	// -=*# Resource for function ZEIT #*=-
	Resource SC_OPCODE_GET_TIME
	{
		String 1 // Description
		{
			Text [ en-US ] = "Determines a time value from the details for hour, minute and second." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_ZEIT );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "hour" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The integer for the hour." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "minute" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The integer for the minute." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "second" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The integer for the second." ;
		};
	};
	// -=*# Resource for function ZEITWERT #*=-
	Resource SC_OPCODE_GET_TIME_VALUE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a sequential number for a text shown in a possible time entry format." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_ZEITWERT );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "A text enclosed in quotation marks which returns a time in a %PRODUCTNAME time format." ;
		};
	};
	// -=*# Resource for function HEUTE #*=-
	Resource SC_OPCODE_GET_ACT_DATE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Determines the current date of the computer." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_HEUTE );
			0;
			0;
		};
	};
	// -=*# Resource for function WOCHENTAG #*=-
	Resource SC_OPCODE_GET_DAY_OF_WEEK
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the day of the week for the date value as an integer (1-7)." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_WOCHENTAG );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The internal number for the date." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Type" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Fixes the beginning of the week and the type of calculation to be used." ;
		};
	};
	// -=*# Resource for function JAHR #*=-
	Resource SC_OPCODE_GET_YEAR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the year of a date value as an integer." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_JAHR );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Internal number of the date." ;
		};
	};
	// -=*# Resource for function TAGE #*=-
	Resource SC_OPCODE_GET_DIFF_DATE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the number of days between two dates." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_TAGE );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Date_2" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The end date for calculating the difference in days." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Date_1" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The start date for calculating the difference in days." ;
		};
	};
	// -=*# Resource for function KALENDERWOCHE #*=-
	Resource SC_OPCODE_WEEK
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the calendar week corresponding to the given date." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_KALENDERWOCHE );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The internal number of the date." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "mode" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Indicates the first day of the week (1 = Sunday, other values = Monday)." ;
		};
	};
	// -=*# Resource for function OSTERSONNTAG #*=-
	Resource SC_OPCODE_EASTERSUNDAY
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the date of Easter Sunday in a given year." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_DATETIME;
			U2S( HID_FUNC_OSTERSONNTAG );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "year" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "An integer between 1583 and 9956, or 0 and 99 (19xx or 20xx depending on the option set)." ;
		};
	};
	// -=*# Resource for function BW #*=-
	Resource SC_OPCODE_BW
	{
		String 1 // Description
		{
			Text [ en-US ] = "Present value. Calculates the present value of an investment." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_BW );
			5;	0;	0;	0;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Rate" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The rate of interest for the period given." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "NPER" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The payment period. The total number of periods in which the annuity is paid." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "PMT" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Regular payments. The constant amount of annuity that is paid in each period." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "FV" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Future value. The value (final value) to be attained after the last payment." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "Type" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
		};
	};
	// -=*# Resource for function ZW #*=-
	Resource SC_OPCODE_ZW
	{
		String 1 // Description
		{
			Text [ en-US ] = "Future value. Returns the future value of an investment based on regular payments and a constant interest rate." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_ZW );
			5;	0;	0;	0;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Rate" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The rate of interest per period." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "NPER" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Payment period. The total number of periods in which the annuity (pension) is paid." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "PMT" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Regular payments. The constant annuity to be paid in each period." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "PV" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Present value. The current value of a series of payments" ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "Type" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
		};
	};
	// -=*# Resource for function ZZR #*=-
	Resource SC_OPCODE_ZZR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Payment period. Calculates the number of payment periods for an investment based on regular payments and a constant interest rate." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_ZZR );
			5;	0;	0;	0;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Rate" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The rate of interest per period." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "PMT" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Regular payments. The constant annuity to be paid in each period." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "PV" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Present value. The current value of a series of payments" ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "FV" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Future value. The value (end value) to be attained after the final payment." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "Type" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
		};
	};
	// -=*# Resource for function RMZ #*=-
	Resource SC_OPCODE_RMZ
	{
		String 1 // Description
		{
			Text [ en-US ] = "Regular payments. Returns the periodic payment of an annuity, based on regular payments and a fixed periodic interest rate." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_RMZ );
			5;	0;	0;	0;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Rate" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The rate of interest per period." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "NPER" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Payment period. The total number of periods in which the annuity (pension) is paid." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "PV" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Present value. The current value of a series of payments" ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "FV" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Future value. The value (end value) to be attained after the final payment." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "Type" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
		};
	};
	// -=*# Resource for function ZINS #*=-
	Resource SC_OPCODE_ZINS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the constant interest rate of an investment with regular payments." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_ZINS );
			6;	0;	0;	0;	1;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "NPER" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Payment period. The total number of periods in which the annuity (pension) is paid." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "PMT" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Regular payments. The constant annuity to be paid in each period." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "PV" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Present value. The current value of a series of payments" ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "FV" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Future value. The value (end value) to be attained after the final payment." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "Type" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
		};
		String 12 // Name of Parameter 6
		{
			Text [ en-US ] = "Guess" ;
		};
		String 13 // Description of Parameter 6
		{
			Text [ en-US ] = "Guess. The estimate of the interest rate for the iterative calculating method." ;
		};
	};
	// -=*# Resource for function ZINSZ #*=-
	Resource SC_OPCODE_ZINS_Z
	{
		String 1 // Description
		{
			Text [ en-US ] = "Compounded interest. Calculates the interest payment on the principal for an investment with regular payments and a constant interest rate for a given period." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_ZINSZ );
			6;	0;	0;	0;	0;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Rate" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The rate of interest per period." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Period" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Periods. The periods for which the compounded interest is to be calculated. P = 1 denotes for the first period, P = NPER for the last one." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "NPER" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Payment period. The total number of periods in which the annuity (pension) is paid." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "pv" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Present value. The current value of a series of payments" ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "FV" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "Future value. The value (end value) to be attained after the final payment." ;
		};
		String 12 // Name of Parameter 6
		{
			Text [ en-US ] = "Type" ;
		};
		String 13 // Description of Parameter 6
		{
			Text [ en-US ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
		};
	};
	// -=*# Resource for function KAPZ #*=-
	Resource SC_OPCODE_KAPZ
	{
		String 1 // Description
		{
			Text [ en-US ] = "Repayment. Calculates the repayment amount for a period for an investment whereby the payments are at regular intervals and the interest rate constant." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_KAPZ );
			6;	0;	0;	0;	0;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Rate" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The interest rate per period." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Period" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Period. The period for which the repayments are to be calculated. Per = 1 denotes for the first period, P = NPER for the last" ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "NPER" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The payment period. The total number of periods in which the annuity (pension) is paid." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "PV" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "The present value. The present value or the amount the annuity is currently worth." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "FV" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "Future value. The value (end value) attained after the last payment has been made." ;
		};
		String 12 // Name of Parameter 6
		{
			Text [ en-US ] = "Type" ;
		};
		String 13 // Description of Parameter 6
		{
			Text [ en-US ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
		};
	};
	// -=*# Resource for function KUMKAPITAL #*=-
	Resource SC_OPCODE_KUM_KAP_Z
	{
		String 1 // Description
		{
			Text [ en-US ] = "Cumulative Capital. Calculates the total amount of the repayment share in a period for an investment with constant interest rate." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_KUMKAPITAL );
			6;	0;	0;	0;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Rate" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The rate of interest per period." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "NPER" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Payment period. The total number of periods in which the annuity (pension) is paid." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "PV" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The present value. The present value or the amount the annuity is currently worth." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "S" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "The start period. The first period to be taken into account. A = 1 denotes the very first period." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "E" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "End period. The last period to be taken into account." ;
		};
		String 12 // Name of Parameter 6
		{
			Text [ en-US ] = "Type" ;
		};
		String 13 // Description of Parameter 6
		{
			Text [ en-US ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
		};
	};
	// -=*# Resource for function KUMZINSZ #*=-
	Resource SC_OPCODE_KUM_ZINS_Z
	{
		String 1 // Description
		{
			Text [ en-US ] = "Cumulative compounded interest. Calculates the total amount of the interest share in a period for an investment with a constant interest rate." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_KUMZINSZ );
			6;	0;	0;	0;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Rate" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The rate of interest per period." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "NPER" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Payment period. The total number of periods in which the annuity (pension) is paid." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "pv" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The present value. The present value or the amount the annuity is currently worth." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "S" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "The start period. The first period to be taken into account. A = 1 denotes the very first period." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "E" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "The end period. The last period to be taken into account." ;
		};
		String 12 // Name of Parameter 6
		{
			Text [ en-US ] = "Type" ;
		};
		String 13 // Description of Parameter 6
		{
			Text [ en-US ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
		};
	};
	// -=*# Resource for function DIA #*=-
	Resource SC_OPCODE_DIA
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the arithmetically declining value of an asset (depreciation) for a specified period." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_DIA );
			4;	0;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Cost" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Acquisition costs. The initial cost of the asset." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Salvage" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Salvage: The remaining value of the asset at the end of its life." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Life" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Useful life. The number of periods in the useful life of the asset." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "Period" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Period. The depreciation period which must have the same time unit as average useful life." ;
		};
	};
	// -=*# Resource for function LIA #*=-
	Resource SC_OPCODE_LIA
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the linear depreciation per period." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_LIA );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Cost" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Acquisition cost. The initial cost of an asset." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Salvage" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Salvage: The remaining value of the asset at the end of its life." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Life" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Useful life. The number of periods in the useful life of the asset." ;
		};
	};
	// -=*# Resource for function GDA #*=-
	Resource SC_OPCODE_GDA
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the depreciation of an asset for a specific period using the double-declining balance method or declining balance factor." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_GDA );
			5;	0;	0;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Cost" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Acquisition costs. The initial cost of the asset." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Salvage" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Salvage: The remaining value of the asset at the end of its life." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Life" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Useful life. The number of periods in the useful life of the asset." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "Period" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Period. The depreciation period in the same time unit as the average useful life entry." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "Factor" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "Factor. The factor for balance decline. F = 2 means a double declining balance factor" ;
		};
	};
	// -=*# Resource for function GDA2 #*=-
	Resource SC_OPCODE_GDA_2
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the real depreciation of an asset for a specified period using the fixed-declining balance method." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_GDA2 );
			5;	0;	0;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Cost" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Acquisition costs: The initial cost of the asset." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Salvage" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Salvage: The remaining value of the asset at the end of its life." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Life" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Useful life. The number of periods in the useful life of the asset." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "Period" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Periods: The period for which the depreciation is calculated. The time unit used for period must be the same as that for the useful life." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "month" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "Months: The number of months in the first year of depreciation." ;
		};
	};
	// -=*# Resource for function VDB #*=-
	Resource SC_OPCODE_VBD
	{
		String 1 // Description
		{
			Text [ en-US ] = "Variable declining balance. Returns the declining balance depreciation for a particular period." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_VDB );
			7;	0;	0;	0;	0;	0;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Cost" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Cost. The initial cost of the asset." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Salvage" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Salvage. The salvage value of an asset at the end of its useful life." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Life" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Useful life. The number of periods in the useful life of the asset." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "S" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Start. The first period for depreciation in the same time unit as the useful life." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "end" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "End. The last period of the depreciation using the same time unit as for the useful life." ;
		};
		String 12 // Name of Parameter 6
		{
			Text [ en-US ] = "Factor" ;
		};
		String 13 // Description of Parameter 6
		{
			Text [ en-US ] = "Factor. The factor for the reduction of the depreciation. F = 2 denotes double rate depreciation." ;
		};
		String 14 // Name of Parameter 7
		{
			Text [ en-US ] = "Type" ;
		};
		String 15 // Description of Parameter 7
		{
			Text [ en-US ] = "Do not alter. Type = 1 denotes switch to linear depreciation, type = 0 do not switch." ;
		};
	};
	// -=*# Resource for function EFFEKTIV #*=-
	Resource SC_OPCODE_EFFEKTIV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the annual net interest rate for a nominal interest rate." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_EFFEKTIV );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "NOM" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Nominal Interest" ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "P" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Periods. The number of interest payments per year." ;
		};
	};
	// -=*# Resource for function NOMINAL #*=-
	Resource SC_OPCODE_NOMINAL
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the yearly nominal interest rate as an effective interest rate." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_NOMINAL );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "effect_rate" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The effective interest rate" ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "npery" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Periods. The number of interest payment per year." ;
		};
	};
	// -=*# Resource for function NBW #*=-
	Resource SC_OPCODE_NBW
	{
		String 1 // Description
		{
			Text [ en-US ] = "Net present value. Calculates the net present value of an investment based on a series of periodic payments and a discount rate." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_NBW );
			VAR_ARGS+1;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "RATE" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The rate of discount for one period." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "value " ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Value 1, value 2,... are 1 to 30 arguments representing payments and income." ;
		};
	};
	// -=*# Resource for function IKV #*=-
	Resource SC_OPCODE_IKV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the actuarial rate of interest of an investment excluding costs or profits." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_IKV );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Values" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "An array or reference to cells whose contents correspond to the payments. " ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Guess" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Guess. An estimated value of the rate of return to be used for the iteration calculation." ;
		};
	};
	// -=*# Resource for function QIKV/MIRR #*=-
	Resource SC_OPCODE_MIRR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the modified internal rate of return for a series of investments." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_QIKV );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Values" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "An array or reference to cells whose contents correspond to the payments." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "investment" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Interest rate for investments (the negative values in the array)." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "reinvest_rate" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "interest rate for reinvestments (the positive values in the array)." ;
		};
	};
	// -=*# Resource for function ISPMT #*=-
	Resource SC_OPCODE_ISPMT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the amount of interest for constant amortization rates." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_ISPMT );
			4;	0;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "rate" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Interest rate for a single amortization rate." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Period" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Number of amortization periods for the calculation of the interest." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "total_periods" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Sum total of amortization periods." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "invest" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Amount of the investment." ;
		};
	};
	// -=*# Resource for function LAUFZEIT #*=-
	Resource SC_OPCODE_LAUFZ
	{
		String 1 // Description
		{
			Text [ en-US ] = "Duration. Calculates the number of periods required by an investment to attain the desired value." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_LAUFZEIT );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "RATE" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The constant rate of interest." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "pv" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The present value. The current value of the investment." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "FV" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The future value of the investment." ;
		};
	};
	// -=*# Resource for function ZGZ #*=-
	Resource SC_OPCODE_ZGZ
	{
		String 1 // Description
		{
			Text [ en-US ] = "Interest. Calculates the interest rate which represents the rate of return from an investment." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_FINANZ;
			U2S( HID_FUNC_ZGZ );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "P" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number of periods used in the calculation." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "pv" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Present value. The current value of the investment." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "FV" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The future value of the investment." ;
		};
	};
	// -=*# Resource for function ISTBEZUG #*=-
	Resource SC_OPCODE_IS_REF
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if value is a reference." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_ISTBEZUG );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be tested." ;
		};
	};
	// -=*# Resource for function ISTFEHL #*=-
	Resource SC_OPCODE_IS_ERR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if the value is an error value not equal to #N/A." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_ISTFEHL );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be tested." ;
		};
	};
	// -=*# Resource for function ISTFEHLER #*=-
	Resource SC_OPCODE_IS_ERROR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if the value is an error value." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_ISTFEHLER );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be tested." ;
		};
	};
	// -=*# Resource for function ISTLEER #*=-
	Resource SC_OPCODE_IS_EMPTY
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if value refers to an empty cell." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_ISTLEER );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be tested." ;
		};
	};
	// -=*# Resource for function ISTLOG #*=-
	Resource SC_OPCODE_IS_LOGICAL
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if the value carries a logical number format." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_ISTLOG );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be tested." ;
		};
	};
	// -=*# Resource for function ISTNV #*=-
	Resource SC_OPCODE_IS_NV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if value equals #N/A." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_ISTNV );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be tested." ;
		};
	};
	// -=*# Resource for function ISTKTEXT #*=-
	Resource SC_OPCODE_IS_NON_STRING
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if the value is not text." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_ISTKTEXT );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be tested." ;
		};
	};
	// -=*# Resource for function ISTTEXT #*=-
	Resource SC_OPCODE_IS_STRING
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if value is text." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_ISTTEXT );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be tested." ;
		};
	};
	// -=*# Resource for function ISTZAHL #*=-
	Resource SC_OPCODE_IS_VALUE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if value is a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_ISTZAHL );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be tested." ;
		};
	};
	// -=*# Resource for function ISTFORMEL #*=-
	Resource SC_OPCODE_IS_FORMULA
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if the cell is a formula cell." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_ISTFORMEL );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "reference" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The cell to be checked." ;
		};
	};
	// -=*# Resource for function FORMEL #*=-
	Resource SC_OPCODE_FORMULA
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the formula of a formula cell." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_FORMEL );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Reference" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The formula cell." ;
		};
	};
	// -=*# Resource for function N #*=-
	Resource SC_OPCODE_N
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a value to a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_N );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be interpreted as a number." ;
		};
	};
	// -=*# Resource for function NV #*=-
	Resource SC_OPCODE_NO_VALUE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Not available. Returns the error value #N/A." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_NV );
			0;
			0;
		};
	};
	// -=*# Resource for function TYP #*=-
	Resource SC_OPCODE_TYPE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the data type of a value (1 = number, 2 = text, 4 = Boolean value, 8 = formula, 16 = error value, 64 = array)." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_TYP );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the data type is to be determined." ;
		};
	};
	// -=*# Resource for function CELL/ZELLE #*=-
	Resource SC_OPCODE_CELL
	{
		String 1 // Description
		{
			Text [ en-US ] = "Determines information about address, formatting or contents of a cell." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_ZELLE );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "info_type" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "String that specifies the type of information." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Reference" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The position of the cell you want to examine." ;
		};
	};
	// -=*# Resource for function AKTUELL #*=-
	Resource SC_OPCODE_CURRENT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the current value of the formula at the present location. " ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_AKTUELL );
			0;
			0;
		};
	};
	// -=*# Resource for function FALSCH #*=-
	Resource SC_OPCODE_FALSE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Defines the logical value as FALSE." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_LOGIC;
			U2S( HID_FUNC_FALSCH );
			0;
			0;
		};
	};
	// -=*# Resource for function NICHT #*=-
	Resource SC_OPCODE_NOT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Reverses the value of the argument." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_LOGIC;
			U2S( HID_FUNC_NICHT );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Logical value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "An expression that can be either TRUE or FALSE." ;
		};
	};
	// -=*# Resource for function WAHR #*=-
	Resource SC_OPCODE_TRUE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the logical value TRUE." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_LOGIC;
			U2S( HID_FUNC_WAHR );
			0;
			0;
		};
	};
	// -=*# Resource for function WENN #*=-
	Resource SC_OPCODE_IF
	{
		String 1 // Description
		{
			Text [ en-US ] = "Specifies a logical test to be performed." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_LOGIC;
			U2S( HID_FUNC_WENN );
			3;	0;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Test" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Any value or expression which can be either TRUE or FALSE." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Then_value" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The result of the function if the logical test returns a TRUE." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Otherwise_value" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The result of the function if the logical test returns FALSE." ;
		};
	};
	// -=*# Resource for function ODER #*=-
	Resource SC_OPCODE_OR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if an argument is TRUE." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_LOGIC;
			U2S( HID_FUNC_ODER );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Logical value " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Logical value 1, logical value 2,... are 1 to 30 conditions to be tested and which return either TRUE or FALSE." ;
		};
	};
	// -=*# Resource for function UND #*=-
	Resource SC_OPCODE_AND
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if all arguments are TRUE." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_LOGIC;
			U2S( HID_FUNC_UND );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Logical value " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Logical value 1, logical value 2;...are 1 to 30 conditions to be tested and each returns either TRUE or FALSE." ;
		};
	};

	// -=*# Resource for function XOR #*=-
	Resource SC_OPCODE_XOR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if exactly one of the arguments is TRUE." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_LOGIC;
			U2S( HID_FUNC_XOR );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Logical value " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Logical value 1, logical value 2,... are 1 to 30 conditions to be tested and which return either TRUE or FALSE." ;
		};
	};
	// -=*# Resource for function ABS #*=-
	Resource SC_OPCODE_ABS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Absolute value of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ABS );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number whose absolute value is to be returned." ;
		};
	};
	// -=*# Resource for function POTENZ #*=-
	Resource SC_OPCODE_POWER
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a^b, base a raised to the power of exponent b." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_POTENZ );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Base" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The base a of the power a^b." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Exponent" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The exponent b of the power a^b." ;
		};
	};
	// -=*# Resource for function ANZAHLLEEREZELLEN #*=-
	Resource SC_OPCODE_COUNT_EMPTY_CELLS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Counts the blank cells in a specified range." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ANZAHLLEEREZELLEN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "range" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range in which empty cells are to be counted." ;
		};
	};
	// -=*# Resource for function PI #*=-
	Resource SC_OPCODE_PI
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the value of the number Pi." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_PI );
			0;
			0;
		};
	};
	// -=*# Resource for function SUMME #*=-
	Resource SC_OPCODE_SUM
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the sum of all arguments." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_SUMME );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 arguments whose total is to be calculated." ;
		};
	};
	// -=*# Resource for function QUADRATESUMME #*=-
	Resource SC_OPCODE_SUM_SQ
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the sum of the squares of the arguments." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_QUADRATESUMME );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2,... are 1 to 30 arguments for which the sum of the squares is to be calculated." ;
		};
	};
	// -=*# Resource for function PRODUKT #*=-
	Resource SC_OPCODE_PRODUCT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Multiplies the arguments." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_PRODUKT );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 arguments to be multiplied and a result returned." ;
		};
	};
	// -=*# Resource for function SUMMEWENN #*=-
	Resource SC_OPCODE_SUM_IF
	{
		String 1 // Description
		{
			Text [ en-US ] = "Totals the arguments that meet the conditions." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_SUMMEWENN );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "range" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range to be evaluated by the criteria given." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "criteria" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The cell range in which the search criteria are given." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "sum_range" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The range from which the values are to be totalled." ;
		};
	};

	// -=*# Resource for function AVERAGEIF #*=-
	Resource SC_OPCODE_AVERAGE_IF
	{
		String 1 // Description
		{
			Text [ en-US ] = "Averages the arguments that meet the conditions." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_AVERAGEIF );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "range" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range to be evaluated by the criteria given." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "criteria" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The cell range in which the search criteria are given." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "average_range" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The range from which the values are to be averaged." ;
		};
	};

	Resource SC_OPCODE_SUM_IFS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Totals the values of cells in a range that meet multiple criteria in multiple ranges." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_SUMIFS );
			PAIRED_VAR_ARGS+1;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "sum_range" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range from which the values are to be totalled." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "range " ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Range 1, range 2,... are the ranges to be evaluated by the criteria given." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "criteria " ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Criteria 1, criteria 2,... are the cell ranges in which the search criteria are given." ;
		};
	};

	// -=*# Resource for function AVERAGEIFS #*=-
	Resource SC_OPCODE_AVERAGE_IFS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Averages the value of the cells that meet multiple criteria in multiple ranges." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_AVERAGEIFS );
			PAIRED_VAR_ARGS+1;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "average_range" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range from which the values are to be averaged." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "range " ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Range 1, range 2,... are the ranges to be evaluated by the criteria given." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "criteria " ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Criteria 1, criteria 2,... are the cell ranges in which the search criteria are given." ;
		};
	};

	// -=*# Resource for function COUNTIFS #*=-
	Resource SC_OPCODE_COUNT_IFS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Counts the cells that meet multiple criteria in multiple ranges." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_COUNTIFS );
			PAIRED_VAR_ARGS;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "range " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Range 1, range 2,... are the ranges to be evaluated by the criteria given." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "criteria " ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Criteria 1, criteria 2,... are the cell ranges in which the search criteria are given." ;
		};
	};

	// -=*# Resource for function ZÄHLENWENN #*=-
	Resource SC_OPCODE_COUNT_IF
	{
		String 1 // Description
		{
			Text [ en-US ] = "Counts the arguments which meet the set conditions." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ZAEHLENWENN );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "range" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The range of cells on which the criteria are to be applied." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "criteria" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The cell range in which the search criteria are given." ;
		};
	};
	// -=*# Resource for function WURZEL #*=-
	Resource SC_OPCODE_SQRT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the square root of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_WURZEL );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "A positive value for which the square root is to be calculated." ;
		};
	};
	// -=*# Resource for function ZUFALLSZAHL #*=-
	Resource SC_OPCODE_RANDOM
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a random number between 0 and 1." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ZUFALLSZAHL );
			0;
			0;
		};
	};
	// -=*# Resource for function ISTGERADE #*=-
	Resource SC_OPCODE_IS_EVEN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if value is an even integer." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ISTGERADE );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be tested." ;
		};
	};
	// -=*# Resource for function ISTUNGERADE #*=-
	Resource SC_OPCODE_IS_ODD
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns TRUE if value is an odd integer." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ISTUNGERADE );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be tested." ;
		};
	};
	// -=*# Resource for function KOMBINATIONEN #*=-
	Resource SC_OPCODE_KOMBIN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the number of combinations for elements without repetition." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_KOMBINATIONEN );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number_1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The total number of elements." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "number_2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of elements selected." ;
		};
	};
	// -=*# Resource for function KOMBINATIONEN2 #*=-
	Resource SC_OPCODE_KOMBIN_2
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the number of combinations of elements including repetition." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_KOMBINATIONEN2 );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number_1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The total number of elements." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "number_2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of elements selected." ;
		};
	};
	// -=*# Resource for function ARCCOS #*=-
	Resource SC_OPCODE_ARC_COS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the arccosine of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ARCCOS );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "A value between -1 and 1 for which the arccosine is to be returned." ;
		};
	};
	// -=*# Resource for function ARCSIN #*=-
	Resource SC_OPCODE_ARC_SIN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the arcsine of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ARCSIN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "A value between -1 and 1 for which the arcsine is to be returned." ;
		};
	};
	// -=*# Resource for function ARCCOSHYP #*=-
	Resource SC_OPCODE_ARC_COS_HYP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the inverse hyperbolic cosine of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ARCOSHYP );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "A value greater than or equal to 1 for which the hyperbolic cosine is to be returned." ;
		};
	};
	// -=*# Resource for function ARCSINHYP #*=-
	Resource SC_OPCODE_ARC_SIN_HYP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the inverse hyperbolic sine of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ARSINHYP );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the inverse hyperbolic sine is to be returned." ;
		};
	};
	// -=*# Resource for function ARCCOT #*=-
	Resource SC_OPCODE_ARC_COT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the inverse cotangent of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ARCCOT );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the inverse cotangent is to be returned." ;
		};
	};
	// -=*# Resource for function ARCTAN #*=-
	Resource SC_OPCODE_ARC_TAN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the arctangent of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ARCTAN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the arctangent is to be returned." ;
		};
	};
	// -=*# Resource for function ARCCOTHYP #*=-
	Resource SC_OPCODE_ARC_COT_HYP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the inverse hyperbolic cotangent of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ARCOTHYP );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "A value smaller than -1 or greater than 1 for which the inverse hyperbolic cotangent is to be returned." ;
		};
	};
	// -=*# Resource for function ARCTANHYP #*=-
	Resource SC_OPCODE_ARC_TAN_HYP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the inverse hyperbolic tangent of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ARTANHYP );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "A value between -1 and 1 for which the inverse hyperbolic tangent is to be returned." ;
		};
	};
	// -=*# Resource for function COS #*=-
	Resource SC_OPCODE_COS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the cosine of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_COS );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The angle in the radians for which the cosine is to be returned." ;
		};
	};
	// -=*# Resource for function SIN #*=-
	Resource SC_OPCODE_SIN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the sine of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_SIN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The angle in radians for which the sine is to be calculated." ;
		};
	};
	// -=*# Resource for function COT #*=-
	Resource SC_OPCODE_COT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the cotangent of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_COT );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The angle in radians whose cotangent value is to be returned." ;
		};
	};
	// -=*# Resource for function TAN #*=-
	Resource SC_OPCODE_TAN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the tangent of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_TAN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The angle in radians for which the tangent is to be calculated." ;
		};
	};
	// -=*# Resource for function COSHYP #*=-
	Resource SC_OPCODE_COS_HYP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the hyperbolic cosine of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_COSHYP );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the hyperbolic cosine is to be returned." ;
		};
	};
	// -=*# Resource for function SINHYP #*=-
	Resource SC_OPCODE_SIN_HYP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the hyperbolic sine of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_SINHYP );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the hyperbolic sine is to be calculated." ;
		};
	};
	// -=*# Resource for function COTHYP #*=-
	Resource SC_OPCODE_COT_HYP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the hyperbolic cotangent of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_COTHYP );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "A value not equal to 0 for which the hyperbolic cotangent is to be returned." ;
		};
	};
	// -=*# Resource for function TANHYP #*=-
	Resource SC_OPCODE_TAN_HYP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the hyperbolic tangent of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_TANHYP );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the hyperbolic tangent is to be calculated." ;
		};
	};
	// -=*# Resource for function ARCTAN2 #*=-
	Resource SC_OPCODE_ARC_TAN_2
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the arctangent for the specified coordinates." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ARCTAN2 );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number_x" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for the x coordinate." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "number_y" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The value for the y coordinate." ;
		};
	};
	// -=*# Resource for function CSC #*=-
	Resource SC_OPCODE_COSECANT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Return the cosecant of an angle. CSC(x)=1/SIN(x)" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_COSECANT );
			1; 0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Angle" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The angle in radians for which the cosecant is to be calculated." ;
		};
	};
	// -=*# Resource for function SEC #*=-
	Resource SC_OPCODE_SECANT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Return the secant of an angle. SEC(x)=1/COS(x)" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_SECANT );
			1; 0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Angle" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The angle in radians for which the secant is to be calculated." ;
		};
	};
	// -=*# Resource for function CSCH #*=-
	Resource SC_OPCODE_COSECANT_HYP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Return the hyperbolic cosecant of a hyperbolic angle. CSCH(x)=1/SINH(x)" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_COSECANTHYP );
			1; 0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Angle" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The hyperbolic angle in radians for which the hyperbolic cosecant is to be calculated." ;
		};
	};
	// -=*# Resource for function SECH #*=-
	Resource SC_OPCODE_SECANT_HYP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Return the hyperbolic secant of a hyperbolic angle. SECH(x)=1/COSH(x)" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_SECANTHYP );
			1; 0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Angle" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The hyperbolic angle in radians for which the hyperbolic secant is to be calculated." ;
		};
	};
	// -=*# Resource for function DEG #*=-
	Resource SC_OPCODE_DEG
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a radian to degrees" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_DEG );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The angle in a radian" ;
		};
	};
	// -=*# Resource for function RAD #*=-
	Resource SC_OPCODE_RAD
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts degrees to radians" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_RAD );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The angle in degrees." ;
		};
	};
	// -=*# Resource for function EXP #*=-
	Resource SC_OPCODE_EXP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the exponent for basis e." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_EXP );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The exponent applied to base e." ;
		};
	};
	// -=*# Resource for function LOG #*=-
	Resource SC_OPCODE_LOG
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the logarithm to any specified base." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_LOG );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "A value greater than 0 for which the logarithm is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Base" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The base of the logarithm. If omitted, the base is regarded as 10." ;
		};
	};
	// -=*# Resource for function LN #*=-
	Resource SC_OPCODE_LN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the natural logarithm of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_LN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "A value greater than 0 for which the natural logarithm is to be calculated." ;
		};
	};
	// -=*# Resource for function LOG10 #*=-
	Resource SC_OPCODE_LOG10
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the base-10 logarithm of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_LOG10 );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "A value greater than 0 for which the logarithm is to be calculated." ;
		};
	};
	// -=*# Resource for function FAKULTÄT #*=-
	Resource SC_OPCODE_FACT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the factorial of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_FAKULTAET );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number for which the factorial is to be calculated." ;
		};
	};
	// -=*# Resource for function REST #*=-
	Resource SC_OPCODE_MOD
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the remainder of a division." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_REST );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Dividend" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be divided." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Divisor" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number by which the dividend is divided." ;
		};
	};
	// -=*# Resource for function VORZEICHEN #*=-
	Resource SC_OPCODE_PLUS_MINUS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the algebraic sign of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_VORZEICHEN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number for which the algebraic sign is to be determined." ;
		};
	};
	// -=*# Resource for function TEILERGEBNIS #*=-
	Resource SC_OPCODE_SUB_TOTAL
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates subtotals in a spreadsheet." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_TEILERGEBNIS );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Function" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Function index. Is an index of the possible functions Total, Max, ..." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "range " ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The cells of the range which are to be taken into account." ;
		};
	};
	// -=*# Resource for function GANZZAHL #*=-
	Resource SC_OPCODE_INT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Rounds a number down to the nearest integer." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_GANZZAHL );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be rounded down." ;
		};
	};
	// -=*# Resource for function KÜRZEN #*=-
	Resource SC_OPCODE_TRUNC
	{
		String 1 // Description
		{
			Text [ en-US ] = "Truncates the decimal places of a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_KUERZEN );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be truncated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "count" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of places after the decimal point that are not to be truncated." ;
		};
	};
	// -=*# Resource for function RUNDEN #*=-
	Resource SC_OPCODE_ROUND
	{
		String 1 // Description
		{
			Text [ en-US ] = "Rounds a number to a predefined accuracy." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_RUNDEN );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be rounded." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "count" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of places to which a number is to be rounded." ;
		};
	};
	// -=*# Resource for function AUFRUNDEN #*=-
	Resource SC_OPCODE_ROUND_UP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Rounds a number up to the predefined accuracy." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_AUFRUNDEN );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be rounded up." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "count" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of places to which a number is to be rounded." ;
		};
	};
	// -=*# Resource for function ABRUNDEN #*=-
	Resource SC_OPCODE_ROUND_DOWN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Rounds a number down to a predefined accuracy." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_ABRUNDEN );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be rounded down." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "count" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of places down to which a number is to be rounded." ;
		};
	};
	// -=*# Resource for function GERADE #*=-
	Resource SC_OPCODE_EVEN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Rounds a positive number up and negative number down to the nearest even integer." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_GERADE );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be rounded up." ;
		};
	};
	// -=*# Resource for function UNGERADE #*=-
	Resource SC_OPCODE_ODD
	{
		String 1 // Description
		{
			Text [ en-US ] = "Rounds a positive number up and negative number down to the nearest odd integer." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_UNGERADE );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be rounded up." ;
		};
	};
	// -=*# Resource for function OBERGRENZE #*=-
	Resource SC_OPCODE_CEIL
	{
		String 1 // Description
		{
			Text [ en-US ] = "Rounds a number up to the nearest multiple of significance." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_OBERGRENZE );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be rounded up." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Significance" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number to whose multiple the value is rounded." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Mode" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "If given and not equal to zero then rounded up according to amount when a negative number and significance." ;
		};
	};
	// -=*# Resource for function UNTERGRENZE #*=-
	Resource SC_OPCODE_FLOOR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Rounds number down to the nearest multiple of significance." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_UNTERGRENZE );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be rounded down." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Significance" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number to whose multiple the value is to be rounded down." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Mode" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "If given and not equal to zero then rounded down according to amount when a negative number and significance." ;
		};
	};
	// -=*# Resource for function GGT #*=-
	Resource SC_OPCODE_GGT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Greatest Common Divisor" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_GGT );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Integer " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Integer 1; integer 2,... are integers for which the greatest common divisor is to be calculated." ;
		};
	};
	// -=*# Resource for function KGV #*=-
	Resource SC_OPCODE_KGV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Lowest common multiple" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_KGV );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Integer " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Integer 1; integer 2,... are integers whose smallest common multiple is to be calculated." ;
		};
	};
	// -=*# Resource for function MTRANS #*=-
	Resource SC_OPCODE_MAT_TRANS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Array transposition. Exchanges the rows and columns of an array." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_MTRANS );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "array" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The array in which the rows and columns have been transposed." ;
		};
	};
	// -=*# Resource for function MMULT #*=-
	Resource SC_OPCODE_MAT_MULT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Array multiplication. Returns the product of two arrays." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_MMULT );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "array" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The first array for the array product." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "array" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The second array having the same number of rows as the first array has columns." ;
		};
	};
	// -=*# Resource for function MDET #*=-
	Resource SC_OPCODE_MAT_DET
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the array determinant." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_MDET );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "array" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The array for which the determinant is to be determined." ;
		};
	};
	// -=*# Resource for function MINV #*=-
	Resource SC_OPCODE_MAT_INV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the inverse of an array." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_MINV );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "array" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The array to be inverted." ;
		};
	};
	// -=*# Resource for function EINHEITSMATRIX #*=-
	Resource SC_OPCODE_MATRIX_UNIT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the unitary square array of a certain size." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_EINHEITSMATRIX );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Dimensions" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The size of the unitary array." ;
		};
	};
	// -=*# Resource for function SUMMENPRODUKT #*=-
	Resource SC_OPCODE_SUM_PRODUCT
	{
		String 1 // Description
		{
			Text [ en-US ] = "(Inner products) Returns the sum of the products of array arguments." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_SUMMENPRODUKT );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Array " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Array 1, array 2, ... are up to 30 arrays whose arguments are to be multiplied." ;
		};
	};
	// -=*# Resource for function SUMMEX2MY2 #*=-
	Resource SC_OPCODE_SUM_X2MY2
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the sum of the difference of squares of two arrays." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_SUMMEX2MY2 );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "array_x" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "First array where the square of the arguments are totalled." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "array_y" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Second array where the square of the arguments is to be subtracted." ;
		};
	};
	// -=*# Resource for function SUMMEX2PY2 #*=-
	Resource SC_OPCODE_SUM_X2DY2
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the total of the square sum of two arrays." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_SUMMEX2PY2 );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "array_x" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "First array where the square of the arguments are totalled." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "array_y" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Second array where the square of the arguments is to be totalled." ;
		};
	};
	// -=*# Resource for function SUMMEXMY2 #*=-
	Resource SC_OPCODE_SUM_XMY2
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the sum of squares of differences of two arrays." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_SUMMEXMY2 );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "array_x" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "First array for forming argument differences." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "array_y" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Second array for forming the argument differences." ;
		};
	};
};

Resource RID_SC_FUNCTION_DESCRIPTIONS2
{
	// -=*# Resource for function HÄUFIGKEIT #*=-
	Resource SC_OPCODE_FREQUENCY
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a frequency distribution as a vertical array." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_HAEUFIGKEIT );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The array of the data." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "classes" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The array for forming classes." ;
		};
	};
	// -=*# Resource for function RGP #*=-
	Resource SC_OPCODE_RGP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates parameters of the linear regression as an array." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_RGP );
			4;	0;	1;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data_Y" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The Y data array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "data_X" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The X data array." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Linear_type" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "If type = 0 the linears will be calculated through the zero point, or else moved linears." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "stats" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "If parameter = 0 then only the regression coefficient will be calculated, otherwise other values as well." ;
		};
	};
	// -=*# Resource for function RKP #*=-
	Resource SC_OPCODE_RKP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the parameters of the exponential regression curve as an array." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_RKP );
			4;	0;	1;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data_Y" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The Y data array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "data_X" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The X data array." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Function_type" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "If type = 0 then the functions will be calculated in the form of y=m^x, or also functions y=b*m^x." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "stats" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "If parameter = 0 then only the regression coefficient will be calculated, otherwise other values as well." ;
		};
	};
	// -=*# Resource for function TREND #*=-
	Resource SC_OPCODE_TREND
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates points along a regression line." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_TREND );
			4;	0;	1;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data_Y" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The Y data array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "data_X" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The X data array as the basis for the regression." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "new data_X" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The array of X data for recalculating the values." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "Linear_type" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "If type = 0 the linears will be calculated through the zero point, or else moved linears." ;
		};
	};
	// -=*# Resource for function VARIATION #*=-
	Resource SC_OPCODE_GROWTH
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates points on the exponential regression function." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATRIX;
			U2S( HID_FUNC_VARIATION );
			4;	0;	1;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data_Y" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The Y data array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "data_X" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The X data array as the basis for the regression." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "new_data_X" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The array of X data for recalculating the values." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "Function_type" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "If type = 0 then the functions will be calculated in the form of y=m^x, or also functions y=b*m^x." ;
		};
	};
	// -=*# Resource for function ANZAHL #*=-
	Resource SC_OPCODE_COUNT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Counts how many numbers are in the list of arguments." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_ANZAHL );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Value 1, value 2, ... are 1 to 30 arguments containing different data types but where only numbers are counted." ;
		};
	};
	// -=*# Resource for function ANZAHL2 #*=-
	Resource SC_OPCODE_COUNT_2
	{
		String 1 // Description
		{
			Text [ en-US ] = "Counts how many values are in the list of arguments." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_ANZAHL2 );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Value 1, value 2, ... are 1 to 30 arguments representing the values to be counted." ;
		};
	};
	// -=*# Resource for function MAX #*=-
	Resource SC_OPCODE_MAX
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the maximum value in a list of arguments." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_MAX );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments for which the largest number is to be determined." ;
		};
	};
	// -=*# Resource for function MAXA #*=-
	Resource SC_OPCODE_MAX_A
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the maximum value in a list of arguments. Text is evaluated as Zero." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_MAXA );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Value 1, value 2, ... are 1 to 30 arguments whose largest value is to be determined." ;
		};
	};
	// -=*# Resource for function MIN #*=-
	Resource SC_OPCODE_MIN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the minimum value in a list of arguments." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_MIN );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments for which the smallest number is to be determined." ;
		};
	};
	// -=*# Resource for function MINA #*=-
	Resource SC_OPCODE_MIN_A
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the smallest value in a list of arguments. Text is evaluated as zero." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_MINA );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Value 1; value 2;... are 1 to 30 arguments whose smallest number is to be determined." ;
		};
	};
	// -=*# Resource for function VARIANZ #*=-
	Resource SC_OPCODE_VAR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the variance based on a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_VARIANZ );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample of a population." ;
		};
	};
	// -=*# Resource for function VARIANZ #*=-
	Resource SC_OPCODE_VAR_A
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the variance based on a sample. Text is evaluated as zero." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_VARIANZA );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Value 1; value 2; ... are 1 to 30 arguments representing a sample taken from a basic total population." ;
		};
	};
	// -=*# Resource for function VARIANZEN #*=-
	Resource SC_OPCODE_VAR_P
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates variance based on the entire population." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_VARIANZEN );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which represent a population." ;
		};
	};
	// -=*# Resource for function VARIANZENA #*=-
	Resource SC_OPCODE_VAR_P_A
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the variance based on the entire population. Text is evaluated as zero." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_VARIANZENA );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Value 1; value 2;... are 1 to 30 arguments representing a population." ;
		};
	};
	// -=*# Resource for function STABW #*=-
	Resource SC_OPCODE_ST_DEV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the standard deviation based on a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_STABW );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample of a population." ;
		};
	};
	// -=*# Resource for function STABWA #*=-
	Resource SC_OPCODE_ST_DEV_A
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the standard deviation based on a sample. Text is evaluated as zero." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_STABWA );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Value 1; value 2; ... are 1 to 30 arguments representing a sample taken from a basic total population." ;
		};
	};
	// -=*# Resource for function STABWN #*=-
	Resource SC_OPCODE_ST_DEV_P
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the standard deviation based on the entire population." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_STABWN );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample of a population." ;
		};
	};
	// -=*# Resource for function STABWNA #*=-
	Resource SC_OPCODE_ST_DEV_P_A
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the standard deviation based on the entire population. Text is evaluated as zero." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_STABWNA );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Value 1; value 2;... are 1 to 30 arguments corresponding to a population." ;
		};
	};
	// -=*# Resource for function MITTELWERT #*=-
	Resource SC_OPCODE_AVERAGE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the average of a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_MITTELWERT );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2;...are 1 to 30 numeric arguments representing a population sample." ;
		};
	};
	// -=*# Resource for function MITTELWERTA #*=-
	Resource SC_OPCODE_AVERAGE_A
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the average value for a sample. Text is evaluated as zero." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_MITTELWERTA );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Value 1; value 2; ... are 1 to 30 arguments representing a sample taken from a basic total population." ;
		};
	};
	// -=*# Resource for function SUMQUADABW #*=-
	Resource SC_OPCODE_DEV_SQ
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the sum of squares of deviations from the sample mean value" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_SUMQUADABW );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
		};
	};
	// -=*# Resource for function MITTELABW #*=-
	Resource SC_OPCODE_AVE_DEV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the average of the absolute deviations of a sample from the mean." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_MITTELABW );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2;...are 1 to 30 numerical arguments representing a sample." ;
		};
	};
	// -=*# Resource for function SCHIEFE #*=-
	Resource SC_OPCODE_SCHIEFE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the skewness of a distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_SCHIEFE );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments portraying a sample of the distribution." ;
		};
	};
	// -=*# Resource for function KURT #*=-
	Resource SC_OPCODE_KURT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the kurtosis of a distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_KURT );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments, representing a sample of the distribution." ;
		};
	};
	// -=*# Resource for function GEOMITTEL #*=-
	Resource SC_OPCODE_GEO_MEAN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the geometric mean of a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_GEOMITTEL );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
		};
	};
	// -=*# Resource for function HARMITTEL #*=-
	Resource SC_OPCODE_HAR_MEAN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the harmonic mean of a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_HARMITTEL );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
		};
	};
	// -=*# Resource for function MODALWERT #*=-
	Resource SC_OPCODE_MODAL_VALUE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the most common value in a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_MODALWERT );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
		};
	};
	// -=*# Resource for function MEDIAN #*=-
	Resource SC_OPCODE_MEDIAN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the median of a given sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_MEDIAN );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
		};
	};
	// -=*# Resource for function QUANTIL #*=-
	Resource SC_OPCODE_PERCENTILE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the alpha quantile of a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_QUANTIL );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The array of the data in the sample." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Alpha" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The percentage rate of the quantile between 0 and 1." ;
		};
	};
	// -=*# Resource for function QUARTILE #*=-
	Resource SC_OPCODE_QUARTILE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the quartile of a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_QUARTILE );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The array of the data in the sample." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Type" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The type of the quartile (0 = MIN, 1 = 25%, 2 = 50%, 3 = 75%, 4 = MAX)." ;
		};
	};
	// -=*# Resource for function KGRÖSSTE #*=-
	Resource SC_OPCODE_LARGE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the k-th largest value of a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_KGROESSTE );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The array of the data in the sample." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Rank_c" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The ranking of the value." ;
		};
	};
	// -=*# Resource for function KKLEINSTE #*=-
	Resource SC_OPCODE_SMALL
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the k-th smallest value of a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_KKLEINSTE );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The array of the data in the sample." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Rank_c" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The ranking of the value." ;
		};
	};
	// -=*# Resource for function QUANTILSRANG #*=-
	Resource SC_OPCODE_PERCENT_RANK
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the percentage rank of a value in a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_QUANTILSRANG );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The array of the data in the sample." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "value" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The value for which percentage ranking is to be determined." ;
		};
	};
	// -=*# Resource for function RANG #*=-
	Resource SC_OPCODE_RANK
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the ranking of a value in a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_RANG );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the rank is to be determined." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Data" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The array of the data in the sample." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Type" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Sequence order: 0 or omitted means descending, any other value than 0 means ascending." ;
		};
	};
	// -=*# Resource for function GESTUTZTMITTEL #*=-
	Resource SC_OPCODE_TRIM_MEAN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the mean of a sample without including the marginal values." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_GESTUTZTMITTEL );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The array of the data in the sample." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Alpha" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The percentage of marginal data that is not to be taken into account." ;
		};
	};
	// -=*# Resource for function WAHRSCHBEREICH #*=-
	Resource SC_OPCODE_PROB
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the discrete probability of an interval." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_WAHRSCHBEREICH );
			4;	0;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The sample data array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "probability" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The array of the associated probabilities." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Start" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The start of the value interval whose probabilities is to be totalled." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "End" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "The end of the value interval where the probabilities are to be totalled." ;
		};
	};
	// -=*# Resource for function B #*=-
	Resource SC_OPCODE_B
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the probability of a trial result using binomial distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_B );
			4;	0;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "trials" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number of trials." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "SP" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The individual probability of a trial result." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "T_1" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Lower limit for the number of trials." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "T_2" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Upper limit for the number of trials." ;
		};
	};
	// -=*# Resource for function PHI #*=-
	Resource SC_OPCODE_PHI
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the distribution function for a standard normal distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_PHI );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the standard normal distribution is to be calculated." ;
		};
	};
	// -=*# Resource for function GAUSS #*=-
	Resource SC_OPCODE_GAUSS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the integral values of the standard normal cumulative distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_GAUSS );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the integral value of the standard normal distribution is to be calculated." ;
		};
	};
	// -=*# Resource for function FISHER #*=-
	Resource SC_OPCODE_FISHER
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the Fisher transformation." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_FISHER );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be transformed (-1 < VALUE < 1)." ;
		};
	};
	// -=*# Resource for function FISHERINV #*=-
	Resource SC_OPCODE_FISHER_INV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the inverse of the Fisher transformation." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_FISHERINV );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value that is to be transformed back." ;
		};
	};
	// -=*# Resource for function BINOMVERT #*=-
	Resource SC_OPCODE_BINOM_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the binomial distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_BINOMVERT );
			4;	0;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "X" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number of successes in a series of trials." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "trials" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The total number of trials." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "SP" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The success probability of a trial." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "C" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Cumulated. C=0 calculates the individual probability, C=1 the cumulated probability." ;
		};
	};
	// -=*# Resource for function NEGBINOMVERT #*=-
	Resource SC_OPCODE_NEG_BINOM_VERT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the negative binomial distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_NEGBINOMVERT );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "X" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number of failures in the trial range." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "R" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of successes in the trial sequence." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "SP" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The success probability of a trial." ;
		};
	};
	// -=*# Resource for function KRITBINOM #*=-
	Resource SC_OPCODE_KRIT_BINOM
	{
		String 1 // Description
		{
			Text [ en-US ] = "Border arguments of the binomial distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_KRITBINOM );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "trials" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The total number of trials." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "SP" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The success probability of a trial." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "alpha" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The border probability that is attained or exceeded." ;
		};
	};
	// -=*# Resource for function POISSON #*=-
	Resource SC_OPCODE_POISSON_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the Poisson distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_POISSON );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the Poisson distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "mean" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Mean. The mean value of the Poisson distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Cumulative" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "0 or FALSE calculates the probability density function. Any other value or TRUE or omitted calculates the cumulative distribution function." ;
		};
	};
	// -=*# Resource for function NORMVERT #*=-
	Resource SC_OPCODE_NORM_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the normal distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_NORMVERT );
			4;	0;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the normal distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Mean" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The mean value. The mean value of the normal distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "STDEV" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Standard deviation. The standard deviation of the normal distribution." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "C" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "0 or FALSE calculates the probability density function. Any other value or TRUE or omitted calculates the cumulative distribution function." ;
		};
	};
	// -=*# Resource for function NORMINV #*=-
	Resource SC_OPCODE_NORM_INV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the inverse normal distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_NORMINV );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The probability value for which the inverse normal distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "mean" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The mean value. The mean value of the normal distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "STDEV" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Standard deviation. The standard deviation of the normal distribution." ;
		};
	};
	// -=*# Resource for function STANDNORMVERT #*=-
	Resource SC_OPCODE_STD_NORM_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "The values of the standard normal cumulative distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_STANDNORMVERT );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the standard normal distribution is to be calculated." ;
		};
	};
	// -=*# Resource for function STANDNORMINV #*=-
	Resource SC_OPCODE_S_NORM_INV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the inverse standard normal distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_STANDNORMINV );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The probability value for which the inverse standard normal distribution is to be calculated." ;
		};
	};
	// -=*# Resource for function LOGNORMVERT #*=-
	Resource SC_OPCODE_LOG_NORM_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the log normal distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_LOGNORMVERT );
			4;	0;	1;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the log normal distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "mean" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The mean value of the log normal distribution. It is set to 0 if omitted." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "STDEV" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The standard deviation of the log normal distribution. It is set to 1 if omitted." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US] = "Cumulative" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US] = "0 or FALSE calculates the probability density function. Any other value or TRUE or omitted calculates the cumulative distribution function." ;
		};
	};
	// -=*# Resource for function LOGINV #*=-
	Resource SC_OPCODE_LOG_INV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the inverse of the lognormal distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_LOGINV );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The probability value for which the inverse log normal distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "mean" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Mean value. The mean value of the log normal distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "STDEV" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Standard deviation. The standard deviation of the log normal distribution." ;
		};
	};
	// -=*# Resource for function EXPONVERT #*=-
	Resource SC_OPCODE_EXP_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the exponential distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_EXPONVERT );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to which the exponential distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "lambda" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The parameters of the exponential distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "C" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Cumulated. C=0 calculates the density function, C=1 the distribution." ;
		};
	};
	// -=*# Resource for function GAMMAVERT #*=-
	Resource SC_OPCODE_GAMMA_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the value of the probability density function or the cumulative distribution function for the Gamma distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_GAMMAVERT );
			4;	0;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the gamma distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "alpha" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The Alpha parameter of the Gamma distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "beta" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The Beta parameter of the Gamma distribution." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "Cumulative" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "0 or FALSE calculates the probability density function. Any other value or TRUE or omitted calculates the cumulative distribution function." ;
		};
	};
	// -=*# Resource for function GAMMAINV #*=-
	Resource SC_OPCODE_GAMMA_INV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the inverse gamma distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_GAMMAINV );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The probability value for which the inverse gamma distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "alpha" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The Alpha (shape) parameter of the Gamma distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "beta" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The Beta (scale) parameter of the Gamma distribution." ;
		};
	};
	// -=*# Resource for function GAMMALN #*=-
	Resource SC_OPCODE_GAMMA_LN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the natural logarithm of the gamma function." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_GAMMALN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the natural logarithm of the gamma function is to be calculated." ;
		};
	};

	// -=*# Resource for function GAMMA #*=-
	Resource SC_OPCODE_GAMMA
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the value of the Gamma function." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_GAMMA );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the Gamma function is to be calculated." ;
		};
	};

	// -=*# Resource for function BETAVERT #*=-
	Resource SC_OPCODE_BETA_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the beta distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_BETAVERT );
			6;	0;	0;	0;	1;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the beta distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "alpha" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The Alpha parameter of the Beta distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "beta" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The Beta parameter of the Beta distribution." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "Start" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "The starting value for the value interval of the distribution." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "End" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "The final value for the value interval of the distribution." ;
		};
		String 12 // Name of Parameter 6
		{
			Text [en-US ] = "Cumulative" ;
		};
		String 13 // Description of Parameter 6
		{
			Text [ en-US ] = "0 or FALSE for probability density function, any other value or TRUE or omitted for cumulative distribution function." ;
		};
	};
	// -=*# Resource for function BETAINV #*=-
	Resource SC_OPCODE_BETA_INV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the inverse beta distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_BETAINV );
			5;	0;	0;	0;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The probability value for which the inverse beta distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "alpha" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The Alpha parameter of the Beta distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "beta" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The Beta parameter of the Beta distribution." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "Start" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "The starting value for the value interval of the distribution." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "End" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "The final value for the value interval of the distribution." ;
		};
	};
	// -=*# Resource for function WEIBULL #*=-
	Resource SC_OPCODE_WEIBULL
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the values of the Weibull distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_WEIBULL );
			4;	0;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the Weibull distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Alpha" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The Alpha parameter of the Weibull distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "beta" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The Beta parameter of the Weibull distribution." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "C" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Cumulated. C=0 calculates the density function, C=1 the distribution." ;
		};
	};
	// -=*# Resource for function HYPGEOMVERT #*=-
	Resource SC_OPCODE_HYP_GEOM_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the hypergeometric distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_HYPGEOMVERT );
			4;	0;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "X" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number of successes in the sample." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "n_sample" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The size of the sample." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "successes" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The number of successes in the population." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "n_population" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "The population size." ;
		};
	};
	// -=*# Resource for function TVERT #*=-
	Resource SC_OPCODE_T_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the t-distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_TVERT );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the T distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "degrees_freedom" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The degrees of freedom of the T distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "mode" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Mode = 1 calculates the one-tailed test, 2 = two-tailed distribution." ;
		};
	};
	// -=*# Resource for function TINV #*=-
	Resource SC_OPCODE_T_INV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the inverse t-distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_TINV );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The probability value for which the inverse T distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "degrees_freedom" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The degrees of freedom of the T distribution." ;
		};
	};
	// -=*# Resource for function FVERT #*=-
	Resource SC_OPCODE_F_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the F probability distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_FVERT );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the F distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "degrees_freedom_1" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The degrees of freedom in the numerator of the F distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "degrees_freedom_2" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The degrees of freedom in the denominator of the F distribution." ;
		};
	};
	// -=*# Resource for function FINV #*=-
	Resource SC_OPCODE_F_INV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the inverse F distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_FINV );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The probability value for which the inverse F distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "degrees_freedom_1" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The degrees of freedom in the numerator of the F distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "degrees_freedom_2" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The degrees of freedom in the denominator of the F distribution." ;
		};
	};
	// -=*# Resource for function CHIVERT #*=-
	Resource SC_OPCODE_CHI_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the right-tail probability of the chi-square distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_CHIVERT );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the chi square distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "degrees_freedom" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The degrees of freedom of the chi square distribution." ;
		};
	};

	// -=*# Resource for function CHISQDIST #*=-
	Resource SC_OPCODE_CHISQ_DIST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns left-tail probability of the cumulative distribution function or values of the probability density function of the chi-square distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_CHISQDIST );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value for which the probability density function or cumulative distribution function is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Degrees of Freedom" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The degrees of freedom of the chi-square distribution." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Cumulative" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "0 or FALSE calculates the probability density function. Any other value or TRUE or omitted calculates the cumulative distribution function." ;
		};
	};


	// -=*# Resource for function CHIINV #*=-
	Resource SC_OPCODE_CHI_INV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the inverse of CHIDIST(x; DegreesOfFreedom)." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_CHIINV );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The probability value for which the inverse chi square distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "degrees_freedom" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The degrees of freedom of the chi square distribution." ;
		};
	};

	// -=*# Resource for function CHISQINV #*=-
	Resource SC_OPCODE_CHISQ_INV
	{
		String 1 // Description
		{
			Text [ en-US ] = "Values of the inverse of CHISQDIST(x;DegreesOfFreedom;TRUE())." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_CHISQINV );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Probability" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The probability value for which the inverse of the chi square distribution is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Degrees of Freedom" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The degrees of freedom of the chi square distribution." ;
		};
	};

	// -=*# Resource for function STANDARDISIERUNG #*=-
	Resource SC_OPCODE_STANDARD
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a random variable to a normalized value." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_STANDARDISIERUNG );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be standardized." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "mean" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The mean value used for moving." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "STDEV" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The standard deviation used for scaling." ;
		};
	};
	// -=*# Resource for function VARIATIONEN #*=-
	Resource SC_OPCODE_VARIATIONEN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the number of permutations for a given number of elements without repetition." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_VARIATIONEN );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Count_1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The total number of elements." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Count_2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The selection number taken from the elements." ;
		};
	};
	// -=*# Resource for function VARIATIONEN2 #*=-
	Resource SC_OPCODE_VARIATIONEN_2
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the number of permutations for a given number of objects (repetition allowed)." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_VARIATIONEN2 );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Count_1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The total number of elements." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Count_2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The selection number taken from the elements." ;
		};
	};
	// -=*# Resource for function KONFIDENZ #*=-
	Resource SC_OPCODE_CONFIDENCE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a (1 alpha) confidence interval for a normal distribution." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_KONFIDENZ );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "alpha" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The level of the confidence interval." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "STDEV" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The standard deviation of the population." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "size" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The size of the population." ;
		};
	};
	// -=*# Resource for function GTEST #*=-
	Resource SC_OPCODE_Z_TEST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the probability of observing a z-statistic greater than the one computed based on a sample." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_GTEST );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The given sample, drawn from a normally distributed population." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "mu" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The known mean of the population." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "sigma" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The known standard deviation of the population. If omitted, the standard deviation of the given sample is used." ;
		};
	};
	// -=*# Resource for function CHITEST #*=-
	Resource SC_OPCODE_CHI_TEST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the chi square independence test." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_CHITEST );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Data_B" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The observed data array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "data_E" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The expected data array." ;
		};
	};
	// -=*# Resource for function FTEST #*=-
	Resource SC_OPCODE_F_TEST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the F test." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_FTEST );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data_1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The first record array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "data_2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The second record array." ;
		};
	};
	// -=*# Resource for function TTEST #*=-
	Resource SC_OPCODE_T_TEST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the T test." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_TTEST );
			4;	0;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data_1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The first record array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "data_2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The second record array." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "mode" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Mode specifies the number of distribution tails to return. 1= one-tailed, 2 = two-tailed distribution" ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "Type" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "The type of the T test." ;
		};
	};
	// -=*# Resource for function BESTIMMTHEITSMASS #*=-
	Resource SC_OPCODE_RSQ
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the square of the Pearson product moment correlation coefficient." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_BESTIMMTHEITSMASS );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data_Y" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The Y data array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "data_X" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The X data array." ;
		};
	};
	// -=*# Resource for function ACHSENABSCHNITT #*=-
	Resource SC_OPCODE_INTERCEPT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the intercept of the linear regression line and the Y axis." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_ACHSENABSCHNITT );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data_Y" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The Y data array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "data_X" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The X data array." ;
		};
	};
	// -=*# Resource for function STEIGUNG #*=-
	Resource SC_OPCODE_SLOPE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the slope of the linear regression line." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_STEIGUNG );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data_Y" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The Y data array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "data_X" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The X data array." ;
		};
	};
	// -=*# Resource for function STFEHLERYX #*=-
	Resource SC_OPCODE_STEYX
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the standard error of the linear regression." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_STFEHLERYX );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "data_Y" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The Y data array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "data_X" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The X data array." ;
		};
	};
	// -=*# Resource for function PEARSON #*=-
	Resource SC_OPCODE_PEARSON
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the Pearson product moment correlation coefficient." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_PEARSON );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Data_1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The first record array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Data_2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The second record array." ;
		};
	};
	// -=*# Resource for function KORREL #*=-
	Resource SC_OPCODE_CORREL
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the correlation coefficient." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_KORREL );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Data_1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The first record array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Data_2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The second record array." ;
		};
	};
	// -=*# Resource for function KOVAR #*=-
	Resource SC_OPCODE_COVAR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the covariance." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_KOVAR );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Data_1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The first record array." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Data_2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The second record array." ;
		};
	};
	// -=*# Resource for function SCHÄTZER #*=-
	Resource SC_OPCODE_FORECAST
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a value along a linear regression" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_STATISTIC;
			U2S( HID_FUNC_SCHAETZER );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The X value for which the Y value on the regression linear is to be calculated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "data_Y" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The Y data array." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "data_X" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The X data array." ;
		};
	};
	// -=*# Resource for function ADRESSE #*=-
	Resource SC_OPCODE_ADDRESS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the reference to a cell as text." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_ADRESSE );
			5;	0;	0;	1;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "row" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The row number of the cell." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "column" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The column number of the cell." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "ABS" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Specifies whether absolute or relative referencing is to be used." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "A1" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "The reference style: 0 or FALSE means R1C1 style, any other value or omitted means A1 style." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "sheet" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "The spreadsheet name of the cell reference." ;
		};
	};
	// -=*# Resource for function BEREICHE #*=-
	Resource SC_OPCODE_AREAS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the number of individual ranges that belong to a (multiple) range." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_BEREICHE );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "reference" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The reference to a (multiple) range." ;
		};
	};
	// -=*# Resource for function WAHL #*=-
	Resource SC_OPCODE_CHOSE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Selects a value from a list of up to 30 value arguments." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_WAHL );
			VAR_ARGS+1;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Index" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The index of the value (1..30) selected." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "value " ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Value 1, value 2,... The list of arguments from which a value is chosen." ;
		};
	};
	// -=*# Resource for function SPALTE #*=-
	Resource SC_OPCODE_COLUMN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the internal column number of a reference." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_SPALTE );
			1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "reference" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The reference to a cell or a range." ;
		};
	};
	// -=*# Resource for function ZEILE #*=-
	Resource SC_OPCODE_ROW
	{
		String 1 // Description
		{
			Text [ en-US ] = "Defines the internal row number of a reference." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_ZEILE );
			1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "reference" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The reference to a cell or a range." ;
		};
	};
	// -=*# Resource for function TABELLE #*=-
	Resource SC_OPCODE_TABLE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the internal sheet number of a reference or a string." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_TABELLE );
			1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "reference" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The reference to a cell or a range or the character string of a sheet name." ;
		};
	};
	// -=*# Resource for function SPALTEN #*=-
	Resource SC_OPCODE_COLUMNS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the number of columns in an array or reference." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_SPALTEN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "array" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The array (reference) for which the number of columns is to be determined." ;
		};
	};
	// -=*# Resource for function ZEILEN #*=-
	Resource SC_OPCODE_ROWS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the number of rows in a reference or array." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_ZEILEN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "array" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The array (reference) for which the number of rows is to be determined." ;
		};
	};
	// -=*# Resource for function TABELLEN #*=-
	Resource SC_OPCODE_TABLES
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the number of sheets of a given reference. If no parameter has been entered, the total number of sheets in the document is returned." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_TABELLEN );
			1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "reference" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The reference to a cell or a range." ;
		};
	};
	// -=*# Resource for function WVERWEIS #*=-
	Resource SC_OPCODE_H_LOOKUP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Horizontal search and reference to the cells located below." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_WVERWEIS );
			4;	0;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "search_criteria" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be found in the first row." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "array" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The array or the range for the reference." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Index" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The row index in the array." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "sorted" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "If the value is TRUE or not given, the search row of the array must be sorted in ascending order." ;
		};
	};
	// -=*# Resource for function SVERWEIS #*=-
	Resource SC_OPCODE_V_LOOKUP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Vertical search and reference to indicated cells." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_SVERWEIS );
			4;	0;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Search criterion" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be found in the first column." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "array" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The array or range for referencing." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Index" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Column index number in the array." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "sort order" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "If the value is TRUE or not given, the search column of the array must be sorted in ascending order." ;
		};
	};
	// -=*# Resource for function INDEX #*=-
	Resource SC_OPCODE_INDEX
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a reference to a cell from a defined range." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_INDEX );
			4;	0;	1;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "reference" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The reference to a (multiple) range." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "row" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The row in the range." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "column" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The column in the range." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "range" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "The index of the subrange if referring to a multiple range." ;
		};
	};
	// -=*# Resource for function INDIREKT #*=-
	Resource SC_OPCODE_INDIRECT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the contents of a cell that is referenced in text form." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_INDIREKT );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "ref " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The cell whose contents are to be evaluated is to be referenced in text form (e.g. \"A1\")." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "A1" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The reference style: 0 or FALSE means R1C1 style, any other value or omitted means A1 style." ;
		};
	};
	// -=*# Resource for function VERWEIS #*=-
	Resource SC_OPCODE_LOOKUP
	{
		String 1 // Description
		{
			Text [ en-US ] = "Determines a value in a vector by comparison to values in another vector." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_VERWEIS );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Search criterion" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be used for comparison." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Search vector" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The vector (row or column) in which to search." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "result_vector" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The vector (row or range) from which the value is to be determined." ;
		};
	};
	// -=*# Resource for function VERGLEICH #*=-
	Resource SC_OPCODE_MATCH
	{
		String 1 // Description
		{
			Text [ en-US ] = "Defines a position in a array after comparing values." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_VERGLEICH );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Search criterion" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be used for comparison." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "lookup_array" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The array (range) in which the search is made." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Type" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Type can take the value 1, 0 or -1 and determines the criteria are to be used for comparison purposes." ;
		};
	};
	// -=*# Resource for function VERSCHIEBUNG #*=-
	Resource SC_OPCODE_OFFSET
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a reference which has been moved in relation to the starting point." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_VERSCHIEBUNG );
			5;	0;	0;	0;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "reference" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The reference (cell) from which to base the movement." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "rows" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of rows to be moved either up or down." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "columns" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The number of columns that are to be moved to the left or to the right." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "height" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "The number of rows of the moved reference." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "width" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "The number of columns in the moved reference." ;
		};
	};
	// -=*# Resource for function FEHLERTYP #*=-
	Resource SC_OPCODE_ERROR_TYPE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a number corresponding to an error type" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_FEHLERTYP );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "reference" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The reference (cell) in which the error occurred." ;
		};
	};
	// -=*# Resource for function VORLAGE #*=-
	Resource SC_OPCODE_STYLE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Applies a Style to the formula cell." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_VORLAGE );
			3;	0;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Style" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The name of the Style to be applied." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Time" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The time (in seconds) that the Style is to remain valid." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Style2" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The Style to be applied after time expires." ;
		};
	};
	// -=*# Resource for function DDE #*=-
	Resource SC_OPCODE_DDE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Result of a DDE link." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_DDE );
			4;	0;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "server" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The name of the server application." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "File" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The name of the file." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "range" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The range from which data is to be taken." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "mode" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Defines how data is to be converted to numbers." ;
		};
	};
	// -=*# Resource for function HYPERLINK #*=-
	Resource SC_OPCODE_HYPERLINK
	{
		String 1 // Description
		{
			Text [ en-US ] = "Hyperlink." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_HYPERLINK );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "URL " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "URL" ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "CellText " ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Cell Text" ;
		};
	};
	// -=*# Resource for function GETPIVOTDATA #*=-
	Resource SC_OPCODE_GET_PIVOT_DATA
	{
		String 1 // Description
		{
			Text [ en-US ] = "Extracts value(s) from a pivot table." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TABLE;
			U2S( HID_FUNC_GETPIVOTDATA );
			VAR_ARGS+2;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Data Field" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The name of the pivot table field to extract." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Pivot Table" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "A reference to a cell or range in the pivot table." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Field Name / Item" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Field name/value pair to filter the target data." ;
		};
	};
	// -=*# Resource for function BAHTTEXT #*=-
	Resource SC_OPCODE_BAHTTEXT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a number to text (Baht)." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_BAHTTEXT );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to convert." ;
		};
	};
	// -=*# Resource for function JIS #*=-
	Resource SC_OPCODE_JIS
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts half-width ASCII and katakana characters to full-width." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_JIS );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text to convert." ;
		};
	};
	// -=*# Resource for function ASC #*=-
	Resource SC_OPCODE_ASC
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts full-width ASCII and katakana characters to half-width." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_ASC );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text to convert." ;
		};
	};
	// -=*# Resource for function CODE #*=-
	Resource SC_OPCODE_CODE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a numeric code for the first character in a text string." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_CODE );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "This is the text for which the code of the first character is to be found." ;
		};
	};
	// -=*# Resource for function DM #*=-
	Resource SC_OPCODE_CURRENCY
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a number to text in currency format." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_DM );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Value is a number, a reference to a cell containing a number or a formula that results in a number." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "decimals" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Decimal places. Denotes the number of digits to the right of the decimal point." ;
		};
	};
	// -=*# Resource for function ZEICHEN #*=-
	Resource SC_OPCODE_CHAR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a code number into a character or letter." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_ZEICHEN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The code value for the character." ;
		};
	};
	// -=*# Resource for function SÄUBERN #*=-
	Resource SC_OPCODE_CLEAN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Removes all nonprintable characters from text." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_SAEUBERN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text from which nonprintable characters are to be removed." ;
		};
	};
	// -=*# Resource for function VERKETTEN #*=-
	Resource SC_OPCODE_CONCAT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Combines several text items into one." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_VERKETTEN );
			VAR_ARGS;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text " ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Text for the concatenation." ;
		};
	};
	// -=*# Resource for function IDENTISCH #*=-
	Resource SC_OPCODE_EXACT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Specifies whether two texts are identical." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_IDENTISCH );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text_1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The first text to be used for comparing texts." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "text_2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The second text for comparing texts." ;
		};
	};
	// -=*# Resource for function FINDEN #*=-
	Resource SC_OPCODE_FIND
	{
		String 1 // Description
		{
			Text [ en-US ] = "Looks for a string of text within another (case sensitive)" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_FINDEN );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "find_text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text to be found." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "text" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The text in which a search is to be made." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "position" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The position in the text from which the search starts." ;
		};
	};
	// -=*# Resource for function SUCHEN #*=-
	Resource SC_OPCODE_SEARCH
	{
		String 1 // Description
		{
			Text [ en-US ] = "Looks for one text value within another (not case-sensitive)." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_SUCHEN );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "find_text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text to be found." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "text" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The text in which a search is to be made." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "position" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The position in the text where the search is started." ;
		};
	};
	// -=*# Resource for function GLÄTTEN #*=-
	Resource SC_OPCODE_TRIM
	{
		String 1 // Description
		{
			Text [ en-US ] = "Removes extra spaces from text." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_GLAETTEN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text in which extra spaces between words are to be deleted." ;
		};
	};
	// -=*# Resource for function GROSS2 #*=-
	Resource SC_OPCODE_PROPPER
	{
		String 1 // Description
		{
			Text [ en-US ] = "Capitalizes the first letter in all words." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_GROSS2 );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text in which the beginning of words are to be replaced by capital letters." ;
		};
	};
	// -=*# Resource for function GROSS #*=-
	Resource SC_OPCODE_UPPER
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts text to uppercase." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_GROSS );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text in which lower case letters are to be converted to capitals." ;
		};
	};
	// -=*# Resource for function KLEIN #*=-
	Resource SC_OPCODE_LOWER
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts text to lowercase." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_KLEIN );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text in which capitals are converted to lower case letters." ;
		};
	};
	// -=*# Resource for function WERT #*=-
	Resource SC_OPCODE_VALUE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts text to a number." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_WERT );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text to be converted to a number." ;
		};
	};
	// -=*# Resource for function TEXT #*=-
	Resource SC_OPCODE_TEXT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a number to text according to a given format." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_TEXT );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The numeric value to be converted." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Format" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The text that describes the format." ;
		};
	};
	// -=*# Resource for function T #*=-
	Resource SC_OPCODE_T
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a value if it is text, otherwise an empty string." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_T );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be checked and returned if it is text." ;
		};
	};
	// -=*# Resource for function ERSETZEN #*=-
	Resource SC_OPCODE_REPLACE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Replaces characters within a text string with a different text string." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_ERSETZEN );
			4;	0;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text in which some characters are to be replaced." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "position" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The character position from which text is to be replaced." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "length" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The number of characters to be replaced." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "new text" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "The text to be inserted." ;
		};
	};
	// -=*# Resource for function FEST #*=-
	Resource SC_OPCODE_FIXED
	{
		String 1 // Description
		{
			Text [ en-US ] = "Formats a number with a fixed number of places after the decimal point and thousands separator." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_FEST );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be formatted." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Decimals" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Decimal places. The number of fixed decimal places that are to be displayed." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "No thousands separators" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "No thousands separator. True value, if existing and TRUE (unequal to 0), no thousands separators are set." ;
		};
	};
	// -=*# Resource for function LÄNGE #*=-
	Resource SC_OPCODE_LEN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates length of a text string." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_LAENGE );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text in which the length is to be determined." ;
		};
	};
	// -=*# Resource for function LINKS #*=-
	Resource SC_OPCODE_LEFT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the first character or characters of a text." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_LINKS );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text where the initial partial words are to be determined." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "number" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of characters for the start text." ;
		};
	};
	// -=*# Resource for function RECHTS #*=-
	Resource SC_OPCODE_RIGHT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the last character or characters of a text." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_RECHTS );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text in which the end partial words are to be determined." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "number" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of characters for the end text." ;
		};
	};
	// -=*# Resource for function TEIL #*=-
	Resource SC_OPCODE_MID
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a partial text string of a text." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_TEIL );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text in which partial words are to be determined." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "start" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The position from which the part word is to be determined." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "number" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The number of characters for the text." ;
		};
	};
	// -=*# Resource for function WIEDERHOLEN #*=-
	Resource SC_OPCODE_REPT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Repeats text a given number of times." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_WIEDERHOLEN );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text to be repeated." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "number" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of times the text is to be repeated." ;
		};
	};
	// -=*# Resource for function WECHSELN #*=-
	Resource SC_OPCODE_SUBSTITUTE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Substitutes new text for old text in a string." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_WECHSELN );
			4;	0;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text in which partial words are to be replaced." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "search_text" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The partial string to be (repeatedly) replaced." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "new text" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The text which is to replace the text string." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "occurrence" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "Which occurrence of the old text is to be replaced." ;
		};
	};
	// -=*# Resource for function BASIS #*=-
	Resource SC_OPCODE_BASE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a positive integer to text from a number system to the base defined." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_BASIS );
			3;	0;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be converted." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "radix" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The base number for conversion must be in the range 2 - 36." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "Minimum length" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "If the text is shorter than the specified length, zeros are added to the left of the string." ;
		};
	};
	// -=*# Resource for function DEZIMAL #*=-
	Resource SC_OPCODE_DECIMAL
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a text of a specified number system to a positive integer in the base given." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_DEZIMAL );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text to be converted." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "radix" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The base number for conversion must be in the range 2 - 36." ;
		};
	};
	// -=*# Resource for function CONVERT #*=-
	Resource SC_OPCODE_CONVERT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a value according to a conversion table in the configuration (calc.xcu)." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_UMRECHNEN );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be converted." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "text" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Unit from which something is converted, case-sensitive." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "text" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "Unit into which something is converted, case-sensitive." ;
		};
	};
	// -=*# Resource for function ROEMISCH #*=-
	Resource SC_OPCODE_ROMAN
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a number to a Roman numeral." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_ROEMISCH );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The number to be converted to a Roman numeral must be in the 0 - 3999 range." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Mode" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The more this value increases, the more the Roman numeral is simplified. The value must be in the 0 - 4 range." ;
		};
	};
	// -=*# Resource for function ARABISCH #*=-
	Resource SC_OPCODE_ARABIC
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates the value of a Roman numeral." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_ARABISCH );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text that represents a Roman numeral." ;
		};
	};
	Resource SC_OPCODE_INFO
	{
		String 1
		{
			Text [ en-US ] = "Returns information about the environment." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_INFO;
			U2S( HID_FUNC_INFO );
			1;	0;
			0;
		};
		String 2
		{
			Text [ en-US ] = "Text" ;
		};
		String 3
		{
			Text [ en-US ] = "Can be \"osversion\", \"system\", \"release\", \"numfile\", and \"recalc\"." ;
		};
	};
	Resource SC_OPCODE_UNICODE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the numeric code for the first Unicode character in a text string." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_UNICODE );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "This is the text for which the code of the first character is to be found." ;
		};
	};
	Resource SC_OPCODE_UNICHAR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a code number into a Unicode character or letter." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_UNICHAR );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The code value for the character." ;
		};
	};
	Resource SC_OPCODE_EUROCONVERT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts a value from one to another Euro currency." ;
		};
		ExtraData =
		{
			0; // DOING
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_EUROCONVERT );
			5;	0;	0;	0;	1;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "value" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be converted." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "from_currency" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "ISO 4217 code of the currency from which is converted, case-sensitive." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "to_currency" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "ISO 4217 code of the currency into which is converted, case-sensitive." ;
		};
		String 8 // Name of Parameter 4
		{
			Text [ en-US ] = "full_precision" ;
		};
		String 9 // Description of Parameter 4
		{
			Text [ en-US ] = "If omitted or 0 or FALSE, the result is rounded to the decimals of to_currency. Else the result is not rounded." ;
		};
		String 10 // Name of Parameter 5
		{
			Text [ en-US ] = "triangulation_precision" ;
		};
		String 11 // Description of Parameter 5
		{
			Text [ en-US ] = "If given and >=3, the intermediate result of a triangular conversion is rounded to that precision. If omitted, the result is not rounded." ;
		};
	};
	Resource SC_OPCODE_NUMBERVALUE
	{
		String 1 // Description
		{
			Text [ en-US ] = "Converts text to a number, in a locale-independent way." ;
		};
		ExtraData =
		{
			1; // TODO: implementation and unsuppress
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_NUMBERVALUE );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text to be converted to a number." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "decimal_point" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Defines the character used as the decimal point." ;
		};
	};
	Resource SC_OPCODE_LENB
	{
		String 1 // Description
		{
			Text [ en-US ] = "Calculates length of a text string, with DBCS" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_LENB );
			1;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text in which the length is to be determined." ;
		};
	};
	Resource SC_OPCODE_RIGHTB
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the last character or characters of a text, with DBCS" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_RIGHTB );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text in which the end partial words are to be determined." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "number" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of characters for the end text." ;
		};
	};
	Resource SC_OPCODE_LEFTB
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the first character or characters of a text, with DBCS" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_LEFTB );
			2;	0;	1;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text where the initial partial words are to be determined." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "number" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of characters for the start text." ;
		};
	};
	Resource SC_OPCODE_MIDB
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns a partial text string of a text, with DBCS" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_TEXT;
			U2S( HID_FUNC_MIDB );
			3;	0;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "text" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The text in which partial words are to be determined." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "start" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The position from which the part word is to be determined." ;
		};
		String 6 // Name of Parameter 3
		{
			Text [ en-US ] = "number" ;
		};
		String 7 // Description of Parameter 3
		{
			Text [ en-US ] = "The number of characters for the text." ;
		};
	};

	// -=*# Resource for function BITAND #*=-
	Resource SC_OPCODE_BITAND
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the bitwise AND of two integers" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_BITAND );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Positive integer less than 2^48." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Number2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Positive integer less than 2^48." ;
		};
	};

	// -=*# Resource for function BITOR #*=-
	Resource SC_OPCODE_BITOR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the bitwise OR of two integers" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_BITOR );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Positive integer less than 2^48." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Number2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Positive integer less than 2^48." ;
		};
	};

	// -=*# Resource for function BITXOR #*=-
	Resource SC_OPCODE_BITXOR
	{
		String 1 // Description
		{
			Text [ en-US ] = "Returns the bitwise XOR of two integers" ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_BITXOR );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number1" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "Positive integer less than 2^48." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Number2" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "Positive integer less than 2^48." ;
		};
	};

	Resource SC_OPCODE_BITLSHIFT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Bitwise left shift of an integer value." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_BITLSHIFT );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be shifted. Positive integer." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Shift" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of bits the first argument is to be shifted by." ;
		};
	};

	Resource SC_OPCODE_BITRSHIFT
	{
		String 1 // Description
		{
			Text [ en-US ] = "Bitwise right shift of an integer value." ;
		};
		ExtraData =
		{
			0;
			ID_FUNCTION_GRP_MATH;
			U2S( HID_FUNC_BITRSHIFT );
			2;	0;	0;
			0;
		};
		String 2 // Name of Parameter 1
		{
			Text [ en-US ] = "Number" ;
		};
		String 3 // Description of Parameter 1
		{
			Text [ en-US ] = "The value to be shifted. Positive integer." ;
		};
		String 4 // Name of Parameter 2
		{
			Text [ en-US ] = "Shift" ;
		};
		String 5 // Description of Parameter 2
		{
			Text [ en-US ] = "The number of bits the first argument is to be shifted by." ;
		};
	};

};

#if defined(U2S)
#undef U2S
#endif

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