/**************************************************************
 * 
 * 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 ] = "Defines the data type of a value." ;
		};
		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 discreet 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." ;
		};
	};
};

#if defined(U2S)
#undef U2S
#endif
