Function::Internal

retval := DEOS(commandstring)

retval := DEOS(commandstring, param1,param2..paramn)

Used to do internal command in DataEase or operating system.

Returns/Result

String with asked for field, empty string or in error situation the error string.

Commands

@AppIniDelete
LE9
Nothing Removes a app ini setting in rdrrXaaa.ini found in the application folder
- Section - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
@AppIniGet
LE9
String Returns the app ini setting based on in rdrrXaaa.ini found in the application folder
- Section  - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
- [Default] - The value to return if no setting is found in the ini file
@AppIniPath
LE9
String
Returns full path and file name to the app ini file. It will be based on  path to the application and rdrrXaaa.ini where X is the application letter.
@AppIniSet
LE9
Nothing Sets the app ini value in rdrrXaaa.ini found in the application folder
- Section - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
- Value - The value to set (must use string)
@ApplyFilter
LE9>=6465
String Takes a value and apply a ExecDQL filter on it and return the result
 - Filter - The filter as supported by ExecDQL
 - Value - any value supported by by function will be converted to a string and then the filter will be applyed
Supported filters:
Position: LRW ex. L30, R20, C10
[{Price:R15}] -- print Price R oriented 15 spaces.
[{Price:R15 sum}] -- print the sum off Price listed in List Records Price : sum ;
Format: FXXXX, FI, FF, FF.000
:FI and FF for format as integer and float as used in other languages. :FF.000 will also give you option to set fixed decimals on output, so it always have a number of decimals. FF.00 will give number one as 1.00 and 1.1 as 1.10
Integer to float European: [{var1:F999 999 999,99}]
Integer to float C type: [{var2:F999999999.99}]
Integer fixed leading 0s: [{var3:F00000}]
Integer to with fixed length: [{var4:F99999999}]
Float just formatet: [{var5:F999 999 999,99}]
Float to Integer: [{var6:F99999}]
Float C more dec: [{var7:F999999.999999}]
Float European more dec: [{var7:F999999,999999}]
@BinaryRead
LE9
String Read information in a file in binary format
Parameters:
 - filename - filename absolute or releative, relative will be from app directory
 - pos - position to read from in file
 - type - STRING, BYTE, CHAR, UCHAR, SHORT, USHORT, INT2, UINT2, WORD, INT, INT4, UINT4, LONG, DWORD, FLOAT, UINT8, LONGLONG and DOUBLE
 -length - only relevant for string but you can set for BYTE to read more than 1 at a time, the rest is set automatically
 - returntype - can be binary, hex, number or nothing

Default lenghts:
BYTE, CHAR and UCHAR = 1
UINT2, INT2, SHORT, USHORTand WORD = 2
UINT4, LONG, INT, FLOAT, INT4 and DWORD = 4
UINT8, LONGLONGand DOUBLE = 8
STRING defaults to 255 if not set
@BrowseForApp
LE9
String Open a new item style dialog (Windows Vista and newer) and let you select a folder. If the folder contains DataEase applications the name of the application is shown. The default is to return the folder selected.
Parameters [Optional]
- [Type] new or old style rdrr file. Default is old style.
- [Start path] where to start to select file. The dialog remembers the last selection, so this parameter usually are left blank.
- [Return type] default is to return folder selected but you can use the following to override this by using:
- all - all that can be returned separated by ~ in the following order filepath~appfolder~appname~appversion
- appfolder - the selected folder
- appname - the selected app name
- appversion - the rdrr version
- filepath - the full path of the rdrr file
@BrowseForAppFile
LE9
String Open a new item style dialog (Windows Vista and newer) and let you select a repository file. If the folder contains DataEase applications the name of the application is shown. The default is to return the folder selected.
Parameters [Optional]
- [Type] new or old style rdrr file. Default is old style.
- [Start path] where to start to select file. The dialog remembers the last selection, so this parameter usually are left blank.
- [Return type] default is to return absolute path for rdrr file selected but you can use the following to override this by using:
  - all - all that can be returned separated by ~ in the following order filepath~appfolder~appname~appversion
  - appfolder - the selected folder
  - appname - the selected app name
  - appversion - the rdrr version  - filepath  - the full path of the rdrr file
@BrowseForFile
LE9
String Open a new item style dialog and let you select a file. The file path is then returned.
Parameters [Optional]
 - [Start path] where to start to select file. The dialog remembers the last selection, so this parameter usually are left blank.
 - [Filter] what files to display in dialog. Default is All files (*.*)|*.* that will list all files. To set you own, use the format My description|*.ext;My other description|*.other Ex: DEOS("@BrowseForFile","Images (*.png)|*.png;All files|(*.*)")
 - [Settings] no implemented yet. For future use
@BrowseForFolder
LE9
String Open a new item style dialog and let you select a folder. The file path is then returned.
Parameters [Optional]
- [Start path] where to start to select folder. The dialog remembers the last selection, so this parameter usually are left blank.
- [Settings] no implemented yet. For future use
@CallAction
LE9
String Call a action using the action number.
Parameter
- actionno : The numeric value for a action. Look in javascript library for all numbers available
- [param] : some actions can take a string as parameter, this can be used for that
@ChangeLicense
LE9
Change the license key in DataEase to a new one. Can be done in dialog or by supplying the new license. In server only the none gui version is working form LE9>=6558
Parameters [Optional]
 - [LicenseKey]

Ex. DEOS("@ChangeLicense",GetValue("NewLicense")) will change your license to the one supplied in the field NewLicense. It will only be changed if this is a valid license.
@ChangeSrvWnd
Nothing

Change the apperance of a service window

Parameters

- name or number | ServiceWindowX where X is 1 - max service windows or just the number

- what | show, hide, refresh, url, location, size or pos

extra parameters if what is url:

- url | the location to load into the service window. Can be absolute url or local. Absolute is determined by a : in the first 7 chars of the url (ex c:, http://, https:// or file:///c:). Local is when you just have a file name or starts with / or \. Local will first look for the file in application folder and if not found in the DataEase program folder.

extra parameters if what is location

- where | where to move the service window. Can be top, bottom, left and right. If you want to make it full or a floating service window, use @removesrvwnd and a @createsrvwnd.

- [size] | you can change the size at the same time if you want. If left out it keeps is original size at the new location.

extra parameters if what is size

- size/width | this can be used to change the size of a existing service window that is top, bottom, left or right or the widht of a floating service window

- [hight] | the hight of a floating service window

extra paramters if what is pos (this is for floating service windows only).

You can use the same paramters as for MoveObject so C for center, - move left or up and + move right or down for y and x will work. L for lef and R for right will work for x pos and T for top and B for bottom will work for y pos.

- y | y postion of the floating service window

- x | x position of the floating service window

- [width] | the width of the floating service window

- [height] | the hight of the floating service window

@ClearAppKey
LE9
Nothing Remove the current app key from the application. A new will be created on next startup.
@CreateDefinition
String

Used to create new tables using the shadow prism. Works the same as the POST to definition/table/tablename in server

Parameters

- table name

- [query parameters] optional as you not always need to set query paramters

- json string with the definition

Return a JSON string with the same values as if called from server

@CreateSrvWnd
Nothing

Create a service windows dynamically

Parameters

- url | what to load in the service window

- name or number | ServiceWindowX where X is 1 - max service windows or just the number

- where | Can be a number or string in this format: Top=1, Bottom=2, Left=3, Right=4, Float=5 or Full=6

Depending on if the window is Float or not the parameters after will diifer.  Full takes no more parameters.

For fixed (Top, Botton, Left or Right)

- size | for fixed this is the size

For float

- ypos | for float this is y position

- xpos | for float this is x position

- width | for float this is witdh of window

- hight | for float this is hight of window

@ColumnDef
LE9

json string

Return a json formatted string with the colun definition to a field in a table. The format is the same as for fdef in server. Return blank is table or field not found.

Parameters

- tname | name of the table

- fname | name of the field

@CopyDirectory
LE9
Nothing Copy a directory and all subdirectories to a new folder
Parameters
 - from path
 - to path
@CopyFile
LE9
blank
yes/error
Copy a file to a directory or over another file. Return yes if successfull or an error if not
Parameters
 - file to copy
 - path to copy to or file name to copy to
  - [return] set to "error" to get error messages back on failure
Return if error in third parameter
 yes - success
 File not found  - file not not found  
 Path not found - the path part in the filename not found
 Access denied - no access to the file
 Error: numeric value - look up what it means in windows docs
@CPInfo String Code page information about the run environment DataEase is running in. It will tell you the internal code page used for default PRISM in DataEase for Windows program.
Parameters
 - what code page information to return it can be, MaxCharSize, DefaultChar, LeadByte, UnicodeDefaultChar, CodePage and CodePageName
 - [how] tells what return type we want. No parameter gives default. Else we can say Hex of Number for the types that can return as number.
@CreateDirectory
LE9
Nothing Created a directory at given path.
Parameters
 - path

Only creates the path if parent directory exists.
@CreateShortcut
LE9
Create a shortcut used for starting an anplication
Parameters
 - path to executable file
 - working directory
 - startup arguments
 - linkfile (can be absolute if next parameter is blank) recognized by windows (ex. "myapp.lnk")
 - addto (can be blank, "Desktop" or "Programs"). If programs is used, use a relative path to the link file to add to a specific program group.
 - iconpath path to a .ico file or to exe/dll file with the icons to use
 - iconidx the index to the icon to use in the file pointed to by iconpath

Ex:
DEOS("@CreateShortcut","C:\Program Files (x86)\DataEase\DataEase 8.5\dataease.exe","",StringEscape("/'C:\Users\myuser\Documents\My DataEase\MyApp/' TheApp"),"TheApp.lnk","Desktop","C:\Program Files\App with icons\IconApp.exe",0)
will add you app in the on the desktop with the name TheApp and use the first icon in the IconApp.exe as the application icon.

@Crypt
LE9
Nothing Crypt a input string using the given key. Supported methods are "RIJNDAEL128", "RIJNDAEL192" and "RIJNDAEL256". The keys are padded with '\0' if not long enough. The names "AES128", "AES192" and "AES256" are synonyms for the RINJNDAEL versions.
Parameters
 - method
 - key
 - string to crypt
@Decode
LE9
String Decode an inputstring given the encoding
Parameters
 - encoding | can be base64 or url
 - inputstring

Ex.
DEOS("@Decode","url","Hello%20world") will return "Hello world"
@Decrypt
LE9
String Decrypt a given string using a method and a key. Supported methods are "RIJNDAEL128", "RIJNDAEL192" and "RIJNDAEL256". The keys are padded with '\0' if not long enough. The names "AES128", "AES192" and "AES256" are synonyms for the RINJNDAEL versions.
Parameters
 - method
 - key
 - string to decrypt
@DEIniDelete
LE9
Nothing
Removes a dataease.ini setting
- Section - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
@DEIniGet
LE9
String
Returns the dataease.ini setting
- Section  - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
- [Default] - The value to return if no setting is found in the ini file
@DEIniPath
LE9
String
Return the full path to dataease.ini used by this version of DataEase.
@DEIniSet
LE9
Nothing
Sets the dataease.ini value
- Section - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
- Value - The value to set (must use string)
@DeleteDefinition
String

Will delete the table using same method as for calling DELETE verb on server with url /definition/table/tablename by calling shadow prism

Parameters

- table name

- query parameters

Return JSON string of how it went ( same format as for server)

@DeleteDirectory
LE9
Nothing Delete an empty directory or by adding second the files as well. Use with caution.
Parameters
 - path to directory
 - [allfiles=yes]

Ex. DEOS("@DeleteDirectory","C:\Users\Per\Documets\DataEaseApp","allfiles=yes") will remove all files and the directory without any warning.

As a precaution, the path has to be at least 10 chars long.
@DeleteFile
LE9
Nothing Delete a file
Parameters
 - file path name
- [return] set to "error" to get error messages back on failure
Return if error in third parameter
yes - success
File not found - file not not found
Path not found - the path part in the filename not found
Access denied - no access to the file
Error: numeric value - look up what it means in windows docs
@DevServerErrorMsg
LE9
String A readable error message form last exit. If all is OK, "ok" is returned. If you was unable to start due to another process holds the port you will get: "Port in use by other process"
@DevServerExitCode
LE9
String The number returned from the server when it last exited as a string
@DevServerGetPort
LE9
Port Returns the currently used port for development server
@DevServerListenToStaticPath
LE9
Bool

Tell server if we are listening on the static form DataEase program path for changes or the one set in app folder. Boolians in DataEase are 1 or yes is True and 0 and no is False.

To set value add the bool value as parameter, for read it just call without parameter. Returns the set value.

@DevServerPrefix
LE9
String

The section name to use for server settings in RDRRXAAA.INI for the app. To set a prefix call with string argument and to read the current value, call without argument.

Ex. DEOS("@devserverprefix","MyWeb") will set to use the section named [MYWEB] in the ini file

@DevServerSetPort
LE9
Port Sets the wanted port for development server
@DevServerStaticPath
LE9
String
The path to use as common web root for the application. To set call with string paramter and to read call without. Default common web root is DataEaseProgramFolder\static but here you can set your own.
@DevServerStaticAppPath
LE9
String

The path to use as web root for the application. To set call with string paramter to read call without. You can use absoulte path by adding the full path with : on pos 2 in parameter, if called without the setting is relative to given app path.

Ex. DEOS("@devserverstaticapppath","static") will set the path APPPATH\static as the web root.

@DevServerURL
LE9
URL Returns the URL of the started development server. Blank if not started.
@DevServerWebTable
LE9
String
The name of the table to use for storing html, dqls, templates and settings for the server. To set a value call with a string as parameter, to read call without paramter.
@DFDDQLName
LE9
Return the name of a numbered DQL in the Repostiory.

Ex. DEOS("@DFDDQLName","C:\MyApp\REPOAAAA.DBM","6")
@DFDDQLNr
LE9
Return the number of DQL's in REPOxAAA.DBM.

Ex. DEOS("@DFDDQLnr","C:\MyApp\REPOAAAA.DBM")
@DFDDQLPath
LE9
Return the path of a numbered DQL in the Repostiory.

Ex. DEOS("@DFDDQLPath","C:\MyApp\REPOAAAA.DBM","6")
@DFDDQLPrism
LE9
Read the DQL Script and Body out of the DBR file and set it in two PRISM Memos (Processing).

Ex. DEOS("@DFDDQLName","C:\MyApp\CUSTAAAA.DBR",MyDQLMemo,MyBodyMemo)
@DFDDQLSet
LE9
Read the DQL Script and Body out of the DBR file and set it in two memos in the local form.

Ex. DEOS("@DFDDQLName","C:\MyApp\CUSTAAAA.DBR","MyDQLMemo","MyBodyMemo")
@DirectoryEmpty
LE9
yes/no Check if a directory with the given path is empty. Return yes if exists and empty and no for exists and not empty. Return blank if not exists.
Parameters
- path
@DirectoryExists
LE9
yes/no Check if a directory with the given path exists. Return yes for exists and no for not exists.
Parameters
 - path
@EmailSend
LE9

Send an email using the definition set in section [EMAIL] in any of DataEase ini files. Search first in rdrrXaaa.ini and down to dataease.ini

Paraneters

 - toemail | one or more email addresses separated by ;

- fromemail | the reply to set in the email as from is defined in settings

- subject | the subject in the email sent

- body | the email body that is sent with the email. If it starts with < it is sent as a html body and if not it is sent as plain text

- attachments | list of file names that is sent as attachments in the email

- extra | & separated key, values pairs set as global variables before calling emailsend.dql. Known settings is dedebug=yes will create a log file in the log folder.

Ini settings set in [EMAIL] section in rdrrXaaa.ini or dataease.ini

- SMTPSERVERNAME | dns name of the server without any type, port or protocol ex. smtp.extra.com

- [SMTPSERVERPORT] | the port to use for communicationg with a server. If not set use default port for protocol type

- [SMTPUSESSL] | can be 1, yes, 0 or no. Default is yes to tell if you should use secure protocol with SSL.

- SMTPUSERNAME | user name for logging into smtp account

. SMTPPASSWORD | password used when logging into account

- SMTPFROM | where the mail originates from, some server will reject mails that do not have same from as domain sent from

- [SMTPREPLYTO] | will can be set from send function, but if not this is used or the SMTPFROM value

@Encode
LE9
String Encode an inputstring given the encoding
Parameters
- encoding | can be base64 or url
- inputstring

Ex.
DEOS("@Encode","url","Hello world") will return "Hello%20world"
@epocfromdatetime
LE9>=6508
string Takes date and time as paramters and return epoc time
Paramters
- date
- time

@EpocTime
LE9

string Return ticks since epoc. This is used in some algorithms for key exchange and authentication.
@epoctodatetime
LE9>=6508
string Takes epoctime and return date and time seperated by space as a string.
Parameters
- epoctime
@ExecDQL string Same as ExecDQL except that it always use shadow prism and return the result as a long string. Used same format as DQLs in server. You can split the dql in code and body or use single format dql in code and ditto template.
Parameters
 - code
 - [field1]
 - [field2]
 - [field3]
 - [field4]
 - [templateorbody]
 - [query]
@ExecuteAndWait
LE9

Call a command line script and wait till it is finished to execute. The retur value is the output of the command.

Return the out put to console as the command produced it

Parameters

- cmd | the full command to run as you would have written it in a command shell

@ExecuteScript
LE9
String

Run the script given in first paramter with all the args given in the next and return the output from the script. Used @ExecuteAndWait internally, and used the .ext to determine which intepreter to call. At the moment we only support .py and .bat. When calling make sure the script will run and exit in a reasionable time as it will lock up DataEase while running. Script looks for : i pos 2 script[1] to see if it is a absolute script or a local script.

The following ini setting are used to tell where to look for pythone.exe, script root and PYTHONPATH to use when calling the script. In this case we do not need to set PYTHONPATH since there are no external libraries we need to use. All we need are installed. The scripts to call we will find under C:\DEDSScripts\DEDeploy unless we add a ; at pos to in script name like C:\MyScripts\mysuperupdate.py.

[EXECUTESCRIPT]<br>PythonExe=C:\DEDSScripts\python.exe<br>PythonRoot=C:\DEDSScripts\DEDeploy<br>;PythonPath=<br>

Parameters

- cmd | the script

- arg1-8 | arg 1 to arg 8 will be added with " around if it holds SPACE unless you have added that your self. It will be added in order given with a SPACE between arguments. If you need more than 8 args, just add a arg with a " in the start it will not check any more than then adding it to the cmd line as is so you can have several in one

@Export String Run an export without any GUI.
- Table - name of table to receive be exported
- DataFile - path the the data file export to
- ExportFormat - The export format, default is (9) VariableLengthAnsi, takes number or string as parameter.
. 5 (VariableLengthOem)
. 6 (FixedLengthOem)
. 9 (VariableLengthAnsi)
. 10 (FixedLengthAnsi)
. 11 (VariableLengthUTF8)
. 12 (FixedLengthUTF8)
- FieldSeparator - takes one character or (TAB, CR, NL, LF, LB) default is ~
- RecordSeparator - takes one character or (TAB, CR, NL, LF, LB) default is LB (Line break, in Windows \r\n)
- IncludeNames - can be string yes, true, no, false or number 1, 0 to tell if first line should be field names
- Query - how to search for data and extra parameters to tell how export is done. The format uses is the same as for server. That is "de query&field=value&field2=val2". Can start with ? if you want but not necessary.
@FileExists
LE9
yes/no Checks for a file. If the file exists, yes is returned and else no is returned. A directory named the same as the file given will return no. Use @DirectoryExists to check for directories.
Paramers
 - File pah
@FixRDR
LE9

Call action resolvedoubles that try to fix rdrr file by remove double entries. Function only works in GUI version of DE.
@GetAppKey
LE9
String Returns the generated application key for this application.
@GetAppUsers string Return a list of users and the usercount at json string. This is the current logged in users for the current application with computer name (computer), serial key (serial) and processid (pid)
@GetBrowsedAppName
LE9
String
Returns the application name returned by the previous call to @BrowseForApp or @BrowseForAppFile.
@GetBrowsedAppPath
LE9
String Returns the folder returned by the previous call to @BrowseForApp or @BrowseForAppFile.
@GetBrowsedAppVersion
LE9
String Return a version identifier. The currently supported version is 9, 8, 7,6, 5D, 4D or Prism version.
@GetBrowsedFilePath
LE9
String Return absolute file path returned by @BrowseForApp or @BrowseForAppFile.
@GetColumnInfo

String

Check if a column exists in a data table
Paramters
- table name
- column name
- [responstype] how to return the result, can be exist or a single property, if omitted a full json object as string is returned
@GetDefinition
LE9
JSON
Return the definition asked for. This can be listtables, table or dql. You can then name the one you want and add query parameters to valid to the type of request. You can also use url instead of the type and name parameter or just use the query part of the url for setting ?&jsonpretty=1&getrelations=1

DEOS("@GetDefinition",[TYPE],[NAME],[URL])

TYPE
Type of definition to get. Some works on their own and some requires the NAME parameter as well.
 - document
 - table
 - listtables
 - listrelated
 - listdocuments
 - listdrives
 - listfiles
 - listfunctions
 - listcommands
 - listoperators
 - listinternals
 - testdql
 - object

NAME
Give the name of what to get like the table name to get "table" definitions or the table name to "listrelated". In testdql, rundql and runpage you can use this parameter to send your code either in single doc format (start with .dql) or as only the dql code.

URL
Can be used for queries or to replace the TYPE and NAME parameters with the servers url version like in server. You need to add the full url when using it to  replace type and name like /definition/table/mytable?&param1=val1&param2=val2. If you just want the query values you can add it like jsonpretty=1&recurisive=1&match=*.png without the /?& that is needed at the server. This will automatically be added for you if url do not start at /.

The getrelations use the table name as query if you use =1 and the name you give if you use getreleation=myrelationname
The jsonpretty=1 makes the returned json string humanly readable.

If you use the url alone, you must use the same format as for the server. That is "/definition/table/TableName?&jsonpretty=1&getreleation=MyRelation"

Ex. DEOS("@GetDefinition","table","Address") will return the TDF of the Address table in PRISM.
Ex2. DEOS("@GetDefinition","table","Address","?&jsonpretty=1") will return the TDF of the Address table in PRISM in human readable JSON.
Ex3. DEOS("@GetDefinition","listtables") will return all tables normal tables in app. You can add query showhidden=1 to list all tables
Ex4. DEOS("@GetDefinition","listdocuments") will return all tables normal tables in app. You can add query showhidden=1 to list all tables
Ex5. DEOS("@GetDefinition","","","/definitions/table/Address?&jsonpretty=1") will return the defintion for table as in the first example using the url format instead of the parameter format.
Ex6. DEOS("@GetDefinition","listfiles") will return all files in the static folder in app like the same function in server. You can add a query with ?&recursive=1 to get sub folders and files in these as well
Ex7: DEOS("@GetDefinition","listfiles",concat(GetCurrent("MyDocuments"),"\My DataEase"),"recursive=1&match=RDRR?AAA.RDR|RDRR?AAA.DBM") will give you all rdrr files and directory definitions in My DataEase.
Ex8: DEOS("@GetDefinition","listdrives") that will return a json object with all drives available on your computer. It will list name of drive, typeid as the numerical windows type returned and type that can have the values nodisk, removable, fixed, remote, cdrom, ramdisk and unknown
About document:
The document definition only works in DataEase for Windows on current document. It will always return a JSON string.
To call use DEOS("@GetDefinition","document",what,param1..3)
what can be
- "menus" | will return a object wil all the menues defined on the current document
About object:
The object definitions only works in DataEase for Windows since this is listing of form information. It works on the current document and it will always return a JSON string. The last run query can be found in Remote session "deobject".
To call use DEOS("@GetDefinition","object",what,param1..3)
what can be
- "all" | list all objects in the form as an object array. It will maintain the structure as found in the document.
 - Parameters:
 | no parameters it will only contain {name: objname and type: objtype}
 | "all" will give all available information about all objects in the form
  |arg1= "styles" will return all styles Ex.: DEOS("@GetDefinition","object","all","styles")
 | "flat" it will list objects a found in classic OML editor with . for each level in

- current | get information about currently selected object
 - Parameters
 | no parameter - returns the info on current selected element
 | pos - returns just position information
 | styles - return styles for the current selected element
 | stylesinfo - returns style definitions for alll styles relating to currently selected

- object name | it will list information on one object if found
 - Parameters
 | no parameters will list all information about the object
 | eventnames list all event names this object supports
 | methodnames list all method supported by the object
 | propertynames list all available properties that can be read from the object

@GetGlobalMemoryInfo
LE9>=6564
String

Get information on the gobal memory usage on the system. The values you can get reflects the MEMORYSTATUSEX stucture used by windows sdk. The names used are a more humane form of what is in the struct. If a error is dected during the call a Error: 0x:12345678 style error will be returned with the last error from the operatingsystem.

Paramters

- what :   the type of info to return. Default is AvailPhys. It will test for asBytes, asKB and asMB if second paramter is omitted.

-- MemoryLoad : A number between 0 and 100 that specifies the approximate percentage of physical memory that is in use (0 indicates no memory use and 100 indicates full memory use).
-- TotalPhys : The amount of actual physical memory, in bytes.
-- AvailPhys : The amount of physical memory currently available, in bytes. This is the amount of physical memory that can be immediately reused without having to write its contents to disk first. It is the sum of the size of the standby, free, and zero lists.
-- TotalPageFile : The current committed memory limit for the system or the current process, whichever is smaller, in bytes. To get the system-wide committed memory limit, call GetPerformanceInfo.
-- AvailPageFile : The maximum amount of memory the current process can commit, in bytes. This value is equal to or smaller than the system-wide available commit value. To calculate the system-wide available commit value, call GetPerformanceInfo and subtract the value of CommitTotal from the value of CommitLimit.
-- TotalVirtual : The size of the user-mode portion of the virtual address space of the calling process, in bytes. This value depends on the type of process, the type of processor, and the configuration of the operating system. For example, this value is approximately 2 GB for most 32-bit processes on an x86 processor and approximately 3 GB for 32-bit processes that are large address aware running on a system with 4-gigabyte tuning enabled.
-- AvailVirtual : The amount of unreserved and uncommitted memory currently in the user-mode portion of the virtual address space of the calling process, in bytes.

- as : how to transoform the data - can be asBytes (default), asKB, asMB and asGB. asGB will return values as float with 2 decimals. The others will be returned as integers.

@GetMemoryInfo
LE9>=6563
String

Get information of memory usage of current (DataEase/server) process. All names used here is the same as in PROCESS_MEMORY_COUNTERS_EX. If a error is dected during the call a Error: 0x:12345678 style error will be returned with the last error from the operatingsystem.

Parameters

- what :   the type of info to return. Default is PrivateUsage. It will test for asBytes, asKB and asMB if second paramter is omitted.

-- PageFaultCount  : The number of page faults.
-- PeakWorkingSetSize : The peak working set size, in bytes.
-- WorkingSetSize : The current working set size, in bytes.
-- QuotaPeakPagedPoolUsage : The peak paged pool usage, in bytes.
-- QuotaPagedPoolUsage : The current paged pool usage, in bytes.
-- QuotaPeakNonPagedPoolUsage : The peak nonpaged pool usage, in bytes.
-- QuotaNonPagedPoolUsage : The current nonpaged pool usage, in bytes.
-- PagefileUsage : The Commit Charge value in bytes for this process. Commit Charge is the total amount of private memory that the memory manager has committed for a running process. Windows 7 and Windows Server 2008 R2 and earlier:  PagefileUsage is always zero. Check PrivateUsage instead.
-- PeakPagefileUsage : The peak value in bytes of the Commit Charge during the lifetime of this process.
- PrivateUsage : Same as PagefileUsage. The Commit Charge value in bytes for this process. Commit Charge is the total amount of private memory that the memory manager has committed for a running process.

- as : how to transoform the data - can be asBytes (default), asKB,  and asMB. All will be returned as integers.

@GetPage String Generate a page using the shadow prism in DfW. Same code as for server for rendering a page based on code and template.
Parameters
- code : the page code as described in server documentation
- [template] : the template code as in server
- [query] : query as the format of an url after ? Ex "&getdefiniton=1&jsonpretty=1 to get the definition of the page instead of the page
- [name] : uses for [{page.name}] live text in template titles
@GetServerInfo
LE9
String

A method for getting session information from the current page in embedded dql on a page. This is a server only function.
Parameters
- what (cookie, header, session)
- key (string value or number, number is 0 based array position)

Cookie will return the value of a cookie set in the request header of the page currently served. You can use 0, 1, 2 ... to read the list. The last will return blank. When reading in array mode you get the cookie name and value. When requesting value by name, only the value are returned.
Ex. DEOS("@ServerInfo","cookie",0) will return the first cookie including the cookie name in cookie format.
Ex. DEOS("@ServerInfo","cookie","desession") will return the value of desession cookie if one exists.

Header will return the value of a header. You can use number to return the list. Then the returned value will be both name and value. If you ask for a header by name, only the value are returned.
Ex. DEOS("@ServerInfo","header","Content-Type") will return the current content type set in the header if any defined.

Session will return a session variable set in the uses session. You can use number for array based return and a string for name based. Support the key: username, level, isloggedin and sessionid.
Ex. DEOS("@ServerInfo","session","username") will returned the current logged in user form the session store.

Payload will return data comming in via. a post or put. Supports the key: raw (return payload as is), dataease (convert string to char set for dataease), charset (return char set is was sent as), encoding (the encoding is is sent as)

Ex. DEOS("@ServerInfo","payload","dataease") will returned the payload converted to the prism char set (usually converted from utf-8 to latin1)

Ex. DEOS("@ServerInfo","payload","encoding") will usually return application/json or application/x-www-form-urlencoded as these are the most common encoding when posting data to a server

Verb will return the verb used to access the page. That can be GET, PUT, POST and DELETE

url, will return the whole url used for the call or parts if a index is given

parameters will return the value of a parameter if a key is given, a pair separated by = if a index given and the whole thing if no paramters given

query will return the dataease query part of the paramters if supported by the page (the part between ? and the first &

Ex. A url used to load page is https://server.dataease.info/my/page/is?ID=00052&j...

DEOS("@GetServerInfo","query") will return ID=00052

DEOS("@GetServerInfo","url",1) will return page

DEOS("@GetServerInfo","parameters", "extra") will return 2

DEOS("@GetServerInfo","parameters", "0") will return json=1 if page support query and ID=00052 if not

@GetStyleNames JSON string Return a list of the styles that can be found in DfW.
@GetVersion String Return the version set bay @SetVersion.
Ex. myversion := DEOS("@GetVersion")
@GetVersionThreshold String Returns the minimum DataEase version needed to run this app.
@GUID
LE9
String Return a windows generated unique identifier
@Hash
LE9
String Let you generate a hash based on method given by second parameter of the value giver by the third paramter
 - type (can be MD5, SHA1, SHA256, SHA384 and SHA512 at the moment)
 - value to hash
Ex. @DEOS("@Hash","SHA1",MemoField)
@Import String Run an import without any GUI.
- Table - name of table to receive imported data
- DataFile - path the the data file to import
- ImportFormat - The import format, default is (9) VariableLengthAnsi, takes number or string as parameter. Text format that detects a file with a BOM switch to UTF-8 mode automatically
  . 1 (DataEase4) - DataEase for Dos 4.x
  . 5 (VariableLengthOem)
  . 6 (FixedLengthOem)
  . 9 (VariableLengthAnsi)
  . 10 (FixedLengthAnsi)
  . 11 (DataEasePrism) - DataEase 5-9
  - 12 (VariableLengthUTF8) - for UTF8 file with or without BOM
- FieldSeparator - takes one character or (TAB, CR, NL, LF) default is ~
- RecordSeparator - takes one character or (TAB, CR, NL, LF) default is CR
- DataOrder - the order of the input data. Can be a string or number. Default ByColumnName.
  . 0 (ByColumnOrder)
  . 1 (ByColumnName)
- RecordMatch - how imported records are matched with other records. Takes string or number. Default are DoNoMatch.
  . 1 (AddNoneMatching) - Only add non-matching records (new records)
  . 2 (UpdataMatching)  - Only update existring records that match
  . 3 (AddOrUpdate) - both 1 and 2
  . 4 (DoNoMatch) - Add new records without performing unique check
@IniDelete
LE9
Nothing Removes a app ini setting
- IniPath - The ini file to use
- Section - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
@IniGet
LE9
String Returns the app ini setting
- IniPath - The ini file to use
- Section  - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
- [Default] - The value to return if no setting is found in the ini file
@IniGetActive
LE9
String Read active ini setting in dataease. Read first form rdrrxaaa.ini if not found reads from dataease.ini and if not found returns default.
- Section - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
- [Default] - The value to return if no setting is found in any of the ini files

Ex. DEOS("@IniGetActive","LOCALE","TripletSeparator") will return the active triplet separator either rdrrxaaa.ini or dataease.ini and blank if none found.

@IniSet
LE9
Nothing Sets the app ini value
- IniPath - The ini file to use
- Section - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
- Value - The value to set (must use string)
@IniToJSON String Takes a filename to a ini file and return it as a json string. The JSON after reading the ini file can also be found in Remote under the session name iniandjson.
- IniPath
Makes a JSON with the format {"section1name" : {"key1":"val1","key2":"val2"...},"section2name": {"key1":"val1","key2":"val2"...}...}
@JSONGet String function to read one parameter out of a json string.
Ex. DEOS("@JSONGet",AJSONString,"Result") will return "ok" if AJSONString is {"Result":"ok"}
@JSONToIni
String
Takes a JSON string and make it into a ini file format. If you add a file name, the ini file formatted string is stored to this file name. If you give no JSON string it will use the current session in Remote as to source for the ini file
- [IniPath]
- [JSONString]
Format of JSON should be {"section1name" : {"key1":"val1","key2":"val2"...},"section2name": {"key1":"val1","key2":"val2"...}...}
Ex. DEOS("@JSONToIni","c:\users\myname\user.ini",DEOS("@ReadFromFile","C:\users\myname\user.json")) will read a JSON file from disk and write a ini file to disk
Ex 2. Alert(DEOS("@JSONToIni")) will display a string in ini format based on what is in the current session in remote
@LineCount
LE9>=6464
String

Return the number of lines in the data given

Paramter

- tocount | stroing field or memo that holds text data

@LineFromTo
LE9>=6464
String

Take a portion out of a text string from from a line number to including a line number

Paramters

- instring | the string to pick lines from

- fromline | start line number

- toline | end line number

@ListColumns
LE9
json string

A array of all the columns defined in a table

Parameters

- tname | name of the table to list column of

@ListCommands
LE9
json string
A json array with all valid commands that can be used in a DQL
@ListDocuments
LE9
json string
A json array of all documents. This is a GUI only function an will only work in DE.
@ListFunctions
LE9
json string
A json array with all the valid functions in DataEase
@ListOperators
LE9
json string
A json array with all the operators that can be used in a DQL
@ListRelations
LE9
json string
A json array of alle relations for a table. This is a GUI only function an will only work in DE.
@ListTables
LE9
json string
A json array of all the tables in prism
@NewApp
LE9
Nothing Let you create an app by supplying Folder, Name, UserName, Password and App template as parameters. The application is opened after creating in a new DataEase instance. The Default template will be used if none given. To not use a template, use the template name "<none>".
@OML String Command to compile and read OML code
- command (compile, compileall and read)
- object name
- script name

Ex. DEOS("@OML",command,parameters...) will call a oml command

compile
- object name
- script name
- [new script] replace the current script or set a new if no script exists

compileall
- object name

read
- object name
- script name
return content of script

@OpenApp
LE9
Nothing Let you open an app by supplying Folder, Name, [UserName], [Password] and [DefaultDoc] as parameters. The application is opened in a new DataEase instance.
@PinToStart
LE9
Add a application link to the new Start menu in Windows >8
Parameters
 - file path

Ex. DEOS("@PinToStart","%USERPROFILE%Desktop\MyApp.lnk") will add the MyApp link at you desktop to the new Start
@PinToTaskbar
LE9
Add a application link to the Taskbar in Windows >8
- file path

Ex. DEOS("@PinToTaskbar","%USERPROFILE%Desktop\MyApp.lnk") will add the MyApp link at you desktop to the Taskbar.
@ReadFromFile
LE9
String Let you read a text filed and return the context
Parameters
- Filepath
@Record
LE9
String Return all data from a record as one string
Paramters
- Sepearator | a sepearator that will be put in between the fields. Default is none.
Ex. DEOS("@Record") will expand and return all data from current record
@RegistryDelete
LE9
Nothing

Delete the key under the current registry path

Parameters

- rootpath | blank value is HKEY_CURRENT_USER. Other supported values are HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS.

- path | the path to the key in the form "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

- [key] | the key at the path. If key omitted all values and the leafe is deleted instead.

@RegistryGet
LE9
String

Get the key value under the current registry path

Parameters

- rootpath | blank value is HKEY_CURRENT_USER. Other supported values are HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS.

- path | the path to the key in the form "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

- key | the key at the path like Path

- [noerror] | if you set the value "noerror" a blank is returned instead of errorm message

@RegistrySet
LE9
Nothing

Set the key under the current registry path

Parameters

- rootpath | blank value is HKEY_CURRENT_USER. Other supported values are HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS.

- path | the path to the key in the form "SYSTEM\CurrentControlSet\Control\Session Manager\Environment". The path is created if it do not exist.

- key | the key at the path like Path

- value | value to set can be a string or a number. String set as string value and number set as DWORD.

@RemoveSrvWnd
Nothing

Remove a service window

Paramters

- srvwnd | can be the name or number of service window

@RenameApp
LE9
String Let you rename an application of any version (4.53DOS-8.5Win) by parameters:
- Path
- Old name
- New name

Return nothing if rename is done and the reason for not renaming if there was an error.
@RestartApp
LE9
Nothing Closs current DataEase session and restart application without any gui.
@SetBrowsedAppPath
LE9
Nothing Set the path used for reading application information. This can be used to get the @GetBrowsedAppName and @GetBrowsedAppVersion from a path without having to browse for the files using GUI.
@SetDefinition Nothing
Set defintions using JSON to object or document for the currenly open document. See full documentation in own section.
@SetFileTime
LE9
Nothing Set the file last changed time and date
Parameters
 - file path
- string with date and time in the format used by DataEase at your location Ex. 17/03/2016 09:32:02 for UK

The date format uses the format set on your computer, but you can override this by using prefix if you want to use a hard coded time stamp. The supported prefix are:
ISO:YYYY/MM/DDThh:mm:ss Ex. ISO:2016/03/22T03:14:15
I:DD/MM/YYYY hh:mm:ss Ex. I:22/3/2016 3:14:15
M:YYYY/MM/DDThh:mm:ss Ex. M:2016/3/22 3:14:15
N:MM/DD/YYYY hh:mm:ss Ex. 3/22/2016 3:14:15
@SetServerInfo
LE9
Nothing

A method for setting values into the response generated on the server using a DQL.
Parameters
 - what (session, cookie, header and returncode)
 - key
 - value

session are a key value store that each browser session have

cookie are access to set a new cookie or change an existing. You must use the cookie format with "yourvalue ;Path=/; Expires=Wed, 1 Dec 2021 14:55:23 GMT; SameSite=Strict" to avoid getting ignored by modern browsers.

Ex DEOS("@SetServerInfo", "cookie", "mysession", "1234 ;Path=/; Expires=Wed, 1 Dec 2021 14:55:23 GMT; SameSite=Strict") will set a cookie with the name mysession for your server that expires 01/12/2021 at 14:55:23

header are setting headers sent with the respons. The format of a header is "Name", "value" like "Content-Type", "application/json" or "Location", "https://www.dataease.com"

Ex. DEOS("@SetServerInfo","Header","Location", "https://www.dataease.com") will set a redirect location in the response header. To make it work you will need to set a return code 301 or 302 as well.

returncode will set the HTTP return coded sent from the server. The most common is is 200 all ok, 301 and 302 are redirect permanently and found temporarly redirect, 401 is access denied and 502 is server error. This implementation supports: OK, MovedPermanently, Found, BadRequest, Unauthorized, PaymentRequired, Forbidden, NotFound, InternalServerError, NotImplemented, BadGateway, Unavailable, GatewayTimeout and VersionNotSupported as text values and 100, 101, 200, 201, 202, 203, 204, 205, 206, 300, 301, 302, 303, 304, 305, 307, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 422, 426, 500, 501, 502, 503,504, 505 as numeric.

Ex to do a redirect from a DQL: call DEOS("@SetServerInfo","Header","Location", "/newpage") then DEOS("@SetServerInfo","returncode","302")

@SetVersion Nothing Set you own version on the app.
Parameters
 - version as string, can be up to 11 characters long
Ex. @DEOS("@SetVersion","1.0.2")
@ShadowPRISMCheck yes/no Check if the started shadow prism is the same as you are using now.
Parameters:
 - repopath
 - reponame
 - [username]
 - [password]
@ShadowPRISMDeinit Nothing Clean up after using shadow prism. If you use this advanced funtion to connect to anouther application, it is very important that you use this command to clean up and reset to the internal prism after your use.
@ShadowPRISMInit yes/no
Start up the shadow prism with setting. Mind this is used internally for a lot of things against the current PRISM so make sure to do a DEOS("@ShadowPRISMDeinit") after use.
Parameters:
- repopath
- reponame
- [username]
- [password]

When result is error condition the return value will be noPostFix where PostFix are: version number of repo, notfound, vertoold, autherror or prism error code.
Ex. you have a version that are created with an older version than yours but correct version. It will return novertoold

@ShadowPRISMIsInitialized yes/no Returns yes if the shadow prism is started. You can use @ShadowPRISMCheck to see if it is the same as you are wanting to access. If you change the application make sure you run DEOS("@ShadowPRISMDeinit") after use.
@ShadowPRISMIsThisApp yes/no Return yes if this initialized repository is the same as current application
@ShadowPRISMRefresh Nothing Close and open the current repository in use. This will read in any changes done to table list and the like. If no repository is currently open it will open the default prism when used in DfW.
@ShellExecute
LE9
Nothing Call external program or url
Parameters
- verb : edit, explore, find, open or print default is open
- file : path of file or url
- parameters: paramters added to the program when starting up
- workingdir : the directory where the application will be started
- showcmd: the way the application will be started. numeric value

Direct call to this Windows function
@Signature String This is a crypto function that will take keys and generate cryptographic signatures. Since these routines needs a lot of setting, we can not do all in one go due to the nature of them. Some signatures will need just a few values and others will need 20 or more. This means that to make signature you need several calls to this function and then you call the last one to generate the signature. If you are like most cryptographers, you probably want to call a cleanup after getting the signature, so your keys not a laying around in memory for others to read.

Here is how to use it and all the commands for creating, setting values (claims) and generating the signatures:
DEOS("@Signature",todo,param1..n)

addtoheader - add extra setting to the header like kid the is used by ex. Azure openid connect to find the right key. The kid is then a base64 encoded sha1 hash of the private key.

addtopayload - is used to set claim (another name for json field in the payload object) like jti (can use DEOS("@guid") as this is an uniqure key sent), sub usually the clientid given, iss usually also clientid given and aut usually the token endpoint that you can find in the discovery endpoint. iat, nbf and exp can be auto set by createsignature. If not you need to calculate them your self as seconds from epoc. You can get current epoc by using DEOS("@epoctime").

cleanup - this will remove all setting and reset the signature generator

createsignature - this creates the object used for generating a signature, it will create a new clean object that can receive headers and payload
 | type - jwt is the only supported at the moment so the rest of the parameters will reflect this
 | algorithm - how the signature should be generated, we support all the most common in use like hs256 and rs256
 | secret - the key to use in a supported format. For rs256 and other routines you have to use a PEM encoded private key without password for now. We will probably add a DEOS("@cryptokey"...) at a later release to be able to read the keys from keystore or files in .p12 and encrypted .pem files. For now you can use @ReadFromFile to read the private key without password from file.
 | autotime - default yes can be yeas or no and if yes it will set payload calms iat and nbf to now in seconds from epoch and exp to now + 60 secunds from epoc. This should give you a valid time for 1 minute to get the signature generated

getsignature - this will generate the result of all the other settings, so this should be the last command before cleanup

To generate a private key without password from a .p12 or .pxf file you can use openssl.exe like this:
openssl pkcs12 -in yourP12File.p12 -nocerts -out privateKey.pem
openssl rsa -in privateKey.pem -out private.pem

@SQLConnect

LE9 >6534

Error

Set up a session and connect to the data source

Parameters

- sessionname | a name you use to identify to connection when calling other commands

- servername | the name defined in ODBC source

- databasename | name of the database to use

- username | user name to log in with

- password | password to use in login

@SQLDisconnect

LE9 > 6534

Error

Remove the connection and log out from server

Parameters

- sessionname | the sessionname given to the session in @SQLConnect

@SQLEndSend

LE9 > 6536

Error

Close cursor opened by @SQLSend

Parameters

- sessionname | the sessionname given to the session in @SQLConnect

@SQLExec

LE9 > 6536

String

Error

Execute a sql statement

Parameters

- sessionname | name of session given in @SQLConnect

- sql | the sql statement to run

- returnas | how data should be returned, default is JSON array or array with colname in first array, then each row in a seperate array. Support "colnameinfirst" (default), "colnameonly" that only returns names of the columns and no data, "dataonly" that only return data and no column names

@SQLFetch

LE9 > 6536

Error

Fetch a row from cursor opend with @SQLSend, returns no if no data to fetch and yes if data or a error if something goes wrong

Parameters

- sessionname | name of session given in @SQLConnect

@SQLFetchHeader

LE9 > 6536

Error

Fetch the column names from cursor opend with @SQLSend

Parameters

- sessionname | name of session given in @SQLConnect

@SQLGetColCount

LE9 > 6536

Error

Get the number of columns returned by the cursor. You must have fetched at least one row or a header to get a count.

Parameters

- sessionname | name of session given in @SQLConnect

@SQLGetData

LE9 > 6536

String

Get data from the currently fetched row

Parameters

- sessionname | name of session given in @SQLConnect

- colnumber

@SQLGetHeader

LE9 > 6536

String

Get data from header

Parameters

- sessionname | name of session given in @SQLConnect

- colnumber

@SQLRunODBCDataSources

LE9 > 6534

Nothing
Start the configuration program for ODBC supported by DE

@SQLSend

LE9 > 6536

Error

Send SQL for execution and open a cursor but do not fetch any data from cursor. Use @SQLEndSend to close cursor.

Parameters

- sessionname | name of session given in @SQLConnect

- sql | the sql statement to run

@StartDevServer
LE9
URL Opens the development server for the current repository. It will by default open a un-killable process that will restart on crash. To stop the server, exit DfW or use @StopDevServer. The development server will return URL to use for accessing it using remote of webfields. Ex. http://127.0.0.1:8026. This URL you can also get later by @DevServerURL.

Parameters supported "norestart" and "hide"

To start a development server that is possible to stop add the parameter DEOS("@StartDevServer","norestart")
To start a development server that is hidden for the user (no DOS window), use DEOS("@StartDevServer","hide")
To start a development server that is hidden and killable for the user (no DOS window), use DEOS("@StartDevServer","norestart","hide")

@StopDevServer
LE9
Nothing Stop the un-killable dev server started by @StartDevServer
@ToDateTime
LE9>=6464
String Transforms a input of date and or time to a format. If no other paramters given it will be to ISO
- date - a date or a string looking as date or epoc time as number
- time - a time or a string looking as tim or a epoc time as number
- tz - time zone info, just + will give you the register time zone as it is now on your computer.
Ex. DEOS("@todatetime" , current date, current time, "+") gives you data time time and time zone in ISO format
Ex.  DEOS("@todatetime" , "", "" , "+") give you current time zone info in +01:00 format where +01:00 is UK in the summer or central Europa in the winter.
@ToDecimal
LE9>=6465
String Take a DataEase formatted number and return it as a normalized number with . as decimal separetor and no triplet separator
- value - any value that represent a number in DE
[- decimals] -  number or ".000" for number of decimals on output
Ex. DEOS("@ToDecimal" , Price) will return this as a 1234.56 like number
Ex DEOS("@ToDecimal", Price, 2) will give a price with 2 decimals.
Ex DEOS("@ToDecimal", Price, ".000") will give a price with 3 decimals.
@ToDEDecimal
LE9>=6479
String

Takes a normalized number and return it as a DE formatted number so 1234.56 will be 1 234,56 in ex. Nedlerland
- value - a normalized number with no triplets and a . as decimal sepeartor

- [decimals] - number of decimals to show. None means only the ones that is there. Can be as number or .000 where the number of 0 is the number behind the decimal.

@ToDEInt
LE9>=6479
String Takes a normalized number and  makes it into a DataEase formated integer number
 - value - a string formatted as normalized number without any triplet separators
@ToInt
LE9>=6465
String Takes a DataEase formatted number and makes it into a normalized integer
 - value -  a DateEase formatted number
@UnPinFromStart
LE9
Remove a application link from the new Start menu in Windows >8
- file path

Ex. DEOS("@UnPinFromStart","C:\Windows\notepad.exe") will remove the notepad.exe link from your new start menu

@UnPinFromTaskbar
LE9
Remove a application link from the Taskbar in Windows >8
- path to folder
- file

Ex. DEOS("@UnPinFromTaskbar","C:\Windows","notepad.exe") will remove the notepad.exe link from the Taskbar.
@UpdateDefinition
String

Updates the table table definition using the shadow prism method as called in server by PUT /definition/table/tablename. All formats for input is the same as for server.

Parameters

- table name

- [query parameters ] optional as we not always need query paramters

- JSON payload

Return JSON string with how the update went.  Same format as for server.

@Unzip
LE9
Nothing/
Error
Unzip a compressed file to a directory. If the catalog is not exists, it will be created.
Parameters
 - Zip file
 - Path to unzip to

Zip formats supported are zip. 7z, gzip, bzip2, rar, arj, tar, iso, cab, lzma, lzma86 and more. We supports all format the 7z decompressor supports.
Directory will only be created if parent directory exists.
@UserIniDelete
Nothing
Removes a user.ini setting
- Section - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
@UserIniGet
String
Returns the user.ini setting
- Section  - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
- [Default] - The value to return if no setting is found in the ini file
@UserIniPath
String
Returns the full path and file name of user.ini that is used by this version of DataEase. User ini is for all personal settings that is not shared amoung users of the same computer.
@UserIniSet
Nothing
Sets the user.ini value
- Section - The ini section where this setting is found, this is seen as [SECTION NAME] in the ini file
- Key - The key found in the defined section. This is seen as KeyName= in the ini file
- Value - The value to set (must use string)
@WriteToFile
LE9
Nothing Let you write content from memory into a file
Parameters
- Content
- FilePath
@Zip
LE9
Nothing/
Error
Zip a directory and sub directory to a file.
Parameters
 - Directory to zip
 - Zip file name path

Zip formats supported for zipping is .zip, .7z, .bz2, .gz, .tar, .swm,  .txz and more. We supports all the formats the 7z compressor supports and recognizes as file endings.