<?xml version="1.0" encoding="utf-8"?>
<FunctionList>
<Function Deprecated="no">
<Name>cmf.addaddressentry</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.addaddressentry( long aid , string role , string name , string address , string addresstype  [, domain ttcmf.catg key]  [, domain ttcmf.catg category] )</Syntax>
<Description>Creates an address child node in the address list aid. The attributes of the node are provided by the parameters of the function.</Description>
<HelpID>/progguide/emessage_connector/cmf.addaddressentry</HelpID>
</Function>
<Function Deprecated="yes">
<Name>cmf.addobjecttomessage</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.addobjecttomessage( long oid , long mid , string class(100) )</Syntax>
<Description>The object identified by oid is added to the message object identified by mid. The class of this message is set to the string class (mandatory attribute for a message: for example CMF.TASK for tasks, CMF.APPOINTMENT for appointments and so on). The object is written to a temporary file with extension .xml, which is placed in the current working directory. This file is added as an attachment to the message object. The body attribute of this attachment is set to true, the mimetype is set to application/xml and the delete attribute is set to true. All attachments currently attached to the task are also attached to the message object. Finally the object identified by oid is deleted (because changes in this object are not reflected anymore in the message object).</Description>
<HelpID>/progguide/emessage_connector/cmf.addobjecttomessage</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.copyattachment</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.copyattachment( long attachment.id , long oid )</Syntax>
<Description>Copies the attachment identified by attachment.id from the object identified by id1 to the object identified by id2. All attributes and their values are also copied</Description>
<HelpID>/progguide/emessage_connector/cmf.copyattachment</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.create</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.create( )</Syntax>
<Description>Creates a new Infor ERP LN eMessage Connector message object.</Description>
<HelpID>/progguide/emessage_connector/cmf.create</HelpID>
</Function>
<Function Deprecated="yes">
<Name>cmf.createaddresslist</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.createaddresslist( )</Syntax>
<Description>Creates an address list object.</Description>
<HelpID>/progguide/emessage_connector/cmf.createaddresslist</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.createappointment</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.createappointment(  [long mid] )</Syntax>
<Description>Creates a new Infor ERP LN eMessage Connector appointment object. </Description>
<HelpID>/progguide/emessage_connector/cmf.createappointment</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.createattachment</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.createattachment( long mid )</Syntax>
<Description>Creates an attachment entry in the message identified by mid and returns the identification of the attachment.</Description>
<HelpID>/progguide/emessage_connector/cmf.createattachment</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.createrecipient</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.createrecipient( long mid , enum role )</Syntax>
<Description>Creates a recipient entry of type role in the message identified by midand returns the identification of the recipient object.</Description>
<HelpID>/progguide/emessage_connector/cmf.createrecipient</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.createtask</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.createtask( )</Syntax>
<Description>Creates a new Infor ERP LN eMessage Connector task object. </Description>
<HelpID>/progguide/emessage_connector/cmf.createtask</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.destroy</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.destroy( long mid )</Syntax>
<Description>Destroys the Infor ERP LN eMessage Connector (message) object identified by id. This function can also be used to destroy recipient objects, attachment objects, etc.</Description>
<HelpID>/progguide/emessage_connector/cmf.destroy</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.enableservice</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.enableservice( domain ttcmf.prov service , long enable )</Syntax>
<Description>Checks in the Services (ttcmf030) table if service is enabled (ttcmf030.enab = yes) or not. If not, and enable is true, then service is enabled. If yes, and enable is false, then service is disabled. In the other (two) cases nothing happens.    </Description>
<HelpID>/progguide/emessage_connector/cmf.enableservice</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getaddressbookkey</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getaddressbookkey( long entry.id , ref string key , ref string category )</Syntax>
<Description>Gets the two key fields of the Address Book (ttcmf200) of the recipient identified by entry.id and returns them in the strings key and category.</Description>
<HelpID>/progguide/emessage_connector/cmf.getaddressbookkey</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getaddressdetails</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getaddressdetails( long entry_id , ref string category , ref string key , ref string role , ref string name , ref string address , ref string addresstype , ref long errorcode )</Syntax>
<Description>Retrieves the details of an address entry specified by entry_id. Entry_id is obtained from the function cmf.getNextAddress() or cmf.addAddressEntry() . The attribute values for the object identified by entry_id are copied to the appropriate parameter variables.</Description>
<HelpID>/progguide/emessage_connector/cmf.getaddressdetails</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getappointmentalarm</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getappointmentalarm( long apid , ref domain ttutc alarm )</Syntax>
<Description>Gets the alarm of the appointment identified by apid and returns it in the utc date alarm.</Description>
<HelpID>/progguide/emessage_connector/cmf.getappointmentalarm</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getappointmentalldayevent</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getappointmentalldayevent( long apid , ref enum alldayevent )</Syntax>
<Description>Gets the alldayevent flag of the appointment identified by apid and returns it in the string alldayevent.</Description>
<HelpID>/progguide/emessage_connector/cmf.getappointmentalldayevent</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getappointmentbusystatus</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getappointmentbusystatus( long apid , ref string busystatus )</Syntax>
<Description>Gets the busystatus of the appointment identified by apid and return string into busystatus.</Description>
<HelpID>/progguide/emessage_connector/cmf.getappointmentbusystatus</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getAppointmentDescription</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getAppointmentDescription( long apid , ref string description )</Syntax>
<Description>Get the value of the description text of the appointment identified by apid and returns it in description.</Description>
<HelpID>/progguide/emessage_connector/cmf.getappointmentdescription</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getappointmentendtime</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getappointmentendtime( long apid , ref domain ttutc endtime )</Syntax>
<Description>Gets the endtime of the appointment identified by apid and returns it in the utc date endtime.</Description>
<HelpID>/progguide/emessage_connector/cmf.getappointmentendtime</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getappointmentlocation</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getappointmentlocation( long apid , ref string location )</Syntax>
<Description>Gets the appointment location of the appointment identified by apidand return string into location.</Description>
<HelpID>/progguide/emessage_connector/cmf.getappointmentlocation</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getappointmentmeeting</Name>
<ScriptType>all</ScriptType>
<Syntax>4GLE cmf.getappointmentmeeting( long apid , ref enum meeting )</Syntax>
<Description>Gets the meeting flag of the appointment identified by apid and returns it in the string meeting.</Description>
<HelpID>/progguide/emessage_connector/cmf.getappointmentmeeting</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getAppointmentMethod</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getAppointmentMethod( long apid , ref domain ttcmf.mth method )</Syntax>
<Description>Get the value of the METHOD attribute of the appointment identified by apid and returns it in method.</Description>
<HelpID>/progguide/emessage_connector/cmf.getappointmentmethod</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getappointmentstarttime</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getappointmentstarttime( long apid , ref domain ttutc starttime )</Syntax>
<Description>Gets the starttime of the appointment identified by apid and returns it in the utc date starttime.</Description>
<HelpID>/progguide/emessage_connector/cmf.getappointmentstarttime</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getappointmentsubject</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getappointmentsubject( long apid , ref string subject )</Syntax>
<Description>Gets the appointment subject of the appointment identified by apid and returns string into subject.</Description>
<HelpID>/progguide/emessage_connector/cmf.getappointmentsubject</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getAppointmentUUID</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getAppointmentUUID( long apid , ref string uuid )</Syntax>
<Description>Get the value of the UUID attribute of the appointment identified by apid and returns it in uuid.</Description>
<HelpID>/progguide/emessage_connector/cmf.getappointmentuuid</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getattachmentbody</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getattachmentbody( long attachment , enum ttyeno body )</Syntax>
<Description>Gets the type of the attachment identified by attachment and returns it in the enum body.</Description>
<HelpID>/progguide/emessage_connector/cmf.getattachmentbody</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getattachmentfilename</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getattachmentfilename( long attachment , string filename , ref string displayname )</Syntax>
<Description>Gets the filename and display name of the attachment identified by attachment and return them in the strings� filename and displayname.</Description>
<HelpID>/progguide/emessage_connector/cmf.getattachmentfilename</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getattachmentmime</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getattachmentmime( long attachment , ref string mime )</Syntax>
<Description>Gets the mime type of the attachment identified by attachment and returns it in the string mime.</Description>
<HelpID>/progguide/emessage_connector/cmf.getattachmentmime</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getattachmentposition</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getattachmentposition( long attachment , string position(10) )</Syntax>
<Description>Gets the position of the attachment identified by attachment and returns it in the string position.</Description>
<HelpID>/progguide/emessage_connector/cmf.getattachmentposition</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getcategories</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getcategories( long mid , ref string categories )</Syntax>
<Description>Gets the categories of the message identified by mid and returns string into categories.</Description>
<HelpID>/progguide/emessage_connector/cmf.getcategories</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getchargecode</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getchargecode( long mid , ref string chargecode )</Syntax>
<Description>Gets the message charge code of the message identified by mid and returns string into chargecode.</Description>
<HelpID>/progguide/emessage_connector/cmf.getchargecode</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getclass</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getclass( long mid , ref string class )</Syntax>
<Description>Gets the message class of the message identified by mid and returns string into class.</Description>
<HelpID>/progguide/emessage_connector/cmf.getclass</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getcreatetime</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getcreatetime( long mid , ref domain ttutc createtime )</Syntax>
<Description>Gets the message creation time of the message identified by mid and returns it into utc date createtime.</Description>
<HelpID>/progguide/emessage_connector/cmf.getcreatetime</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getdisplay</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getdisplay( long mid , ref enum display )</Syntax>
<Description>Gets the display option of this message identified by mid and put it in the variable display.</Description>
<HelpID>/progguide/emessage_connector/cmf.getdisplay</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getduedate</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getduedate( long mid , ref domain ttutc duedate )</Syntax>
<Description>Gets the duedate of the message identified by mid and returns it in the utc date duedate.</Description>
<HelpID>/progguide/emessage_connector/cmf.getduedate</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getexpiry</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getexpiry( long mid , ref domain ttutc expiry )</Syntax>
<Description>Gets the expiry time of the message identified by mid and returns it in the utc date expiry.</Description>
<HelpID>/progguide/emessage_connector/cmf.getexpiry</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getfollowupflag</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getfollowupflag( long mid )</Syntax>
<Description>Get the value of the followup flag from the message identified by mid.</Description>
<HelpID>/progguide/emessage_connector/cmf.getfollowupflag</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getid</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getid( string messageld , string service , domain ttcmf.mdir message.direction , ref string error_string() )</Syntax>
<Description>Creates a path to the header.xml file, which consists of the message storage path in the Services (ttcmf030) table and inbox or outbox (depending on message direction) and header.xml. This file is opened in read mode and then parsed with function xml.read which returns the bshell-wide unique object ID of the message object, which is often needed to call other functions in this library.</Description>
<HelpID>/progguide/emessage_connector/cmf.getid</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getmessageid</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getmessageid( long mid , ref string messageId )</Syntax>
<Description>Gets the message id of the message identified by mid and return string into messageId.</Description>
<HelpID>/progguide/emessage_connector/cmf.getmessageid</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getnextaddress</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getnextaddress( long aid , long previous )</Syntax>
<Description>Retrieves the next address child element in the address list root element identified by aid. If previous is 0 (zero) the id of the first entry on the addresslist is returned with type element. Else, the entry following the entry identified by previous is returned.</Description>
<HelpID>/progguide/emessage_connector/cmf.getnextaddress</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getnextattachment</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getnextattachment( long mid , long previous )</Syntax>
<Description>Gets an attachment entry in the message identified by mid and returns the identification of the attachment. If previous is 0 (no valid object id), then the first attachment is returned.  If previous is a valid object id (not 0) then the attachment id of the attachment that follows the attachment identified by previous is returned.  Subsequent calls to this function return succeeding attachments. The current attachment pointer can be reset by setting previous to 0 again.</Description>
<HelpID>/progguide/emessage_connector/cmf.getnextattachment</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getnextrecipient</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getnextrecipient( long mid , ref enum role )</Syntax>
<Description>Retrieves the recipient entry in the message identified by the combination of role and the id of the previous recipient listed in the XML document. It returns the id of the recipient object. If previous is 0 (zero), the id of the first recipient listed in the XML document is returned.</Description>
<HelpID>/progguide/emessage_connector/cmf.getnextrecipient</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getnotification</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getnotification( long mid , ref enum notification )</Syntax>
<Description>Gets the notification required of the message identified by mid and returns it in the enum notification.</Description>
<HelpID>/progguide/emessage_connector/cmf.getnotification</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getpriority</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getpriority( long mid , ref enum priority )</Syntax>
<Description>Gets the priority of the message identified by mid and returns it in the enum priority.</Description>
<HelpID>/progguide/emessage_connector/cmf.getpriority</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getrecipientaddress</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getrecipientaddress( long recipient , ref string address )</Syntax>
<Description>Gets the address of the recipient identified by recipient and returns it in the string address.</Description>
<HelpID>/progguide/emessage_connector/cmf.getrecipientaddress</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getrecipientname</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getrecipientname( long recipient , ref string name )</Syntax>
<Description>Gets the name of the recipient identified by recipient and returns it in the string name.</Description>
<HelpID>/progguide/emessage_connector/cmf.getrecipientname</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getrecipientreasoncode</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getrecipientreasoncode( long recipient , ref long reasoncode )</Syntax>
<Description>Gets the reason code of the recipient identified by recipient and returns it in the string reasoncode.</Description>
<HelpID>/progguide/emessage_connector/cmf.getrecipientreasoncode</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getrecipientreasonstring</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getrecipientreasonstring( long recipient , ref string reasonstring )</Syntax>
<Description>Gets the reason string of the recipient identified by recipient and returns it in the string reasonstring.</Description>
<HelpID>/progguide/emessage_connector/cmf.getrecipientreasonstring</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getrecipientresponsibility</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getrecipientresponsibility( long recipient , ref string responsibility )</Syntax>
<Description>Gets the responsibility of the recipient identified by recipient and returns it in the string responsibility.</Description>
<HelpID>/progguide/emessage_connector/cmf.getrecipientresponsibility</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getrecipienttype</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getrecipienttype( long recipient , ref string type )</Syntax>
<Description>Gets the type of the recipient identified by recipient and returns it in the string type.</Description>
<HelpID>/progguide/emessage_connector/cmf.getrecipienttype</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getsensitivity</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getsensitivity( long mid , ref enum sensitivity )</Syntax>
<Description>Gets the sensitivity of the message identified by mid and returns it in the enum sensitivity.</Description>
<HelpID>/progguide/emessage_connector/cmf.getsensitivity</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getservice</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getservice( long addresstype , enum user_interaction , enum resolve , ref string service )</Syntax>
<Description>Returns the name of the service that supports the addresstype specified by the variables addresstype, user_interaction and resolve.  The enum variables use the same enum types as their respective fields in the Infor ERP LN eMessage Connector Address Types by Service table.</Description>
<HelpID>/progguide/emessage_connector/cmf.getservice</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getstarttime</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getstarttime( long mid , ref domain ttutc starttime )</Syntax>
<Description>Gets the delivery start time of the message identified by mid and return in the utc date starttime.</Description>
<HelpID>/progguide/emessage_connector/cmf.getstarttime</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.getsubject</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.getsubject( long mid , ref string subject )</Syntax>
<Description>Gets the message subject of the message identified by mid and return string into subject.</Description>
<HelpID>/progguide/emessage_connector/cmf.getsubject</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.gettaskduedate</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.gettaskduedate( long tid , ref domain ttutc duedate )</Syntax>
<Description>Gets the task duedate of the task identified by tid and return it in the utc date duedate.</Description>
<HelpID>/progguide/emessage_connector/cmf.gettaskduedate</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.gettaskpriority</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.gettaskpriority( long tid , ref enum priority )</Syntax>
<Description>Gets the task priority of the task identified by tid and returns string into priority.</Description>
<HelpID>/progguide/emessage_connector/cmf.gettaskpriority</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.gettaskremindertime</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.gettaskremindertime( long tid , ref domain ttutc remindertime )</Syntax>
<Description>Gets the task remindertime of the task identified by tid and returns it in the utc date remindertime.</Description>
<HelpID>/progguide/emessage_connector/cmf.gettaskremindertime</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.gettaskstartdate</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.gettaskstartdate( long tid , ref domain ttutc startdate )</Syntax>
<Description>Gets the task startdate of the task identified by tid and returns it in the string startdate.</Description>
<HelpID>/progguide/emessage_connector/cmf.gettaskstartdate</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.gettasksubject</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.gettasksubject( long tid , ref string subject )</Syntax>
<Description>Gets the task subject of the task identified by tid and return string into subject.</Description>
<HelpID>/progguide/emessage_connector/cmf.gettasksubject</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.gettasktotalwork</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.gettasktotalwork( long tid , ref string totalwork )</Syntax>
<Description>Gets the totalwork of the task identified by tid and return string into totalwork.</Description>
<HelpID>/progguide/emessage_connector/cmf.gettasktotalwork</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.gettemplate</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.gettemplate( long mid , ref string template )</Syntax>
<Description>Gets the message template of the message identified by mid and return string into template.</Description>
<HelpID>/progguide/emessage_connector/cmf.gettemplate</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.isserviceenabled</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.isserviceenabled( domain ttcmf.prov service )</Syntax>
<Description>Checks in the Services (ttcmf030) table if service is enabled (ttcmf030.enab = yes) or not.  </Description>
<HelpID>/progguide/emessage_connector/cmf.isserviceenabled</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.messagedialog</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.messagedialog( long mode , long show  [, long show.message] )</Syntax>
<Description>Launches a Message dialog box.</Description>
<HelpID>/progguide/emessage_connector/cmf.messagedialog</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.receive</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.receive( long mid , domain ttcmf.prov service , long block )</Syntax>
<Description>Receives a Infor ERP LN eMessage Connector message object and returns the object id in mid. The appropriate connector must have been previously started prior to calling this function using cmf.startService()cmf.startService .</Description>
<HelpID>/progguide/emessage_connector/cmf.receive</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.resolveaddress</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.resolveaddress( ref domain ttcmf.catg category , ref domain ttcmf.catg key , ref domain ttcmf.defa addresstype , ref string address() , ref string message.str  [, string name(100) mb]  [, long use.default] )</Syntax>
<Description>Selects address data of recipient identified by key and category from Address Book and sets address depending on value of addresstype. Address data is selected from Tools Address Book (table ttcmf200) if current company is 0 and from Infor ERP LN Address Book (table tccom130/131) if current company is not 0.</Description>
<HelpID>/progguide/emessage_connector/cmf.resolveaddress</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.send</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.send( long mid , string service(15) )</Syntax>
<Description>Sends the Infor ERP LN eMessage Connector message object identified by midusing the service specified by service. The message class is set to the service name.</Description>
<HelpID>/progguide/emessage_connector/cmf.send</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.sendtoperson</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.sendtoperson( long mid , long aid , long display , long show.progress , ref string message_string() , long convert , string filename1 ... )</Syntax>
<Description>Takes the message object and sends it to the recipients in the addresslist object that is identified by aid.</Description>
<HelpID>/progguide/emessage_connector/cmf.sendtoperson</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setappointmentalarm</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setappointmentalarm( long apid , domain ttutc alarm )</Syntax>
<Description>Sets the alarm of the appointment identified by apid to the value alarm.</Description>
<HelpID>/progguide/emessage_connector/cmf.setappointmentalarm</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setappointmentalldayevent</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setappointmentalldayevent( long apid , enum alldayevent )</Syntax>
<Description>Sets the alldayevent flag of the appointment identified by apid to the value alldayevent.</Description>
<HelpID>/progguide/emessage_connector/cmf.setappointmentalldayevent</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setappointmentbusystatus</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setappointmentbusystatus( long apid , enum busystatus )</Syntax>
<Description>Sets the busystatus of the appointment identified by apid to the valuebusystatus.</Description>
<HelpID>/progguide/emessage_connector/cmf.setappointmentbusystatus</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setAppointmentDescription</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setAppointmentDescription( long apid , string description )</Syntax>
<Description>Set the description text of the appointment identified byapid to the value description. The description of an appointment is optional and may consist of multiple lines of text. Each line must be terminated by a linefeed character.</Description>
<HelpID>/progguide/emessage_connector/cmf.setappointmentdescription</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setappointmentendtime</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setappointmentendtime( long apid , domain ttutc endtime )</Syntax>
<Description>Sets the endtime of the appointment identified by apid to the value endtime.</Description>
<HelpID>/progguide/emessage_connector/cmf.setappointmentendtime</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setappointmentlocation</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setappointmentlocation( long apid , string location )</Syntax>
<Description>Sets the appointment location of the appointment identified by apid to the value location.</Description>
<HelpID>/progguide/emessage_connector/cmf.setappointmentlocation</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setappointmentmeeting</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setappointmentmeeting( long apid , enum meeting )</Syntax>
<Description>Sets the meeting flag of the appointment identified by apid to the value meeting.</Description>
<HelpID>/progguide/emessage_connector/cmf.setappointmentmeeting</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setAppointmentMethod</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setAppointmentMethod( long apid , domain ttcmf.mth method )</Syntax>
<Description>Set the METHOD attribute of the appointment identified by apid to the value method.</Description>
<HelpID>/progguide/emessage_connector/cmf.setappointmentmethod</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setappointmentstarttime</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setappointmentstarttime( long apid , domain ttutc starttime )</Syntax>
<Description>Sets the appointment starttime of the appointment identified by apidto the value starttime.</Description>
<HelpID>/progguide/emessage_connector/cmf.setappointmentstarttime</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setappointmentsubject</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setappointmentsubject( long apid , string subject )</Syntax>
<Description>Sets the appointment subject of the appointment identified by apid to the value subject.</Description>
<HelpID>/progguide/emessage_connector/cmf.setappointmentsubject</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setAppointmentUUID</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setAppointmentUUID( long apid , string uuid )</Syntax>
<Description>Set the unique identifier attribute of the appointment identified by apid to the value uuid. The function cmf.createAppointment() creates globally unique identifier and assigns it to the created appointment object. The function cmf.setAppointmentUUID() can be used to change this identifier. This identifier is used by calendar systems to correlate previously sent appointments to this appointment. For instance to recognize an appointment as an update of previously sent appointment the same UUID must be used. In addition the UUID must be set by the application to cancel a previously sent appointment.</Description>
<HelpID>/progguide/emessage_connector/cmf.setappointmentuuid</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setattachmentbody</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setattachmentbody( long attachment , enum body )</Syntax>
<Description>Sets the type of the attachment identified by attachment to the value body.If body is “YES”, then the attachment is considered to be the bodytext.  Only one body attachment is allowed for each message object, although this is NOT enforced by the Infor ERP LN eMessage Connector.</Description>
<HelpID>/progguide/emessage_connector/cmf.setattachmentbody</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setattachmentfilename</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setattachmentfilename( long attachment , string filename  [, string displayname] )</Syntax>
<Description>Sets the physical filename of the attachment identified by attachmentto the value filename.  Sets the human-readable filename to displayname.  If displayname is not supplied, then the readable filename is set to the physical filename.</Description>
<HelpID>/progguide/emessage_connector/cmf.setattachmentfilename</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setattachmentmime</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setattachmentmime( long attachment , string mimetype )</Syntax>
<Description>Sets the mime type of the attachment identified by attachment to the value mime.</Description>
<HelpID>/progguide/emessage_connector/cmf.setattachmentmime</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setattachmentposition</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setattachmentposition( long attachment , string position(10) )</Syntax>
<Description>Sets the position of the attachment identified as attachment to the value position. Position determines the number of characters (of the bodytext) after which the attachment-icon will be placed. By default the attachment-icon is positioned at the end of the bodytext.   </Description>
<HelpID>/progguide/emessage_connector/cmf.setattachmentposition</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setcategories</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setcategories( long mid , string categories )</Syntax>
<Description>Sets the categories of the message identified by mid to the value categories.Categories are supplied in a comma delimited list.  Mail clients such as Microsoft Outlook make use of categories and all categories used in Outlook can be used here.</Description>
<HelpID>/progguide/emessage_connector/cmf.setcategories</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setchargecode</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setchargecode( long mid , string chargecode )</Syntax>
<Description>Sets the message charge code of the message identified by mid to the value chargecode. Chargecodes are used to determine who will be charged for sending/receiving this message.</Description>
<HelpID>/progguide/emessage_connector/cmf.setchargecode</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setclass</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setclass( long mid , string class )</Syntax>
<Description>Sets the message class of the message identified by mid to the value class.</Description>
<HelpID>/progguide/emessage_connector/cmf.setclass</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setdisplay</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setdisplay( long mid , enum display )</Syntax>
<Description>Sets the display option of this message identified by mid to the valuedisplay.</Description>
<HelpID>/progguide/emessage_connector/cmf.setdisplay</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setduedate</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setduedate( long mid , domain ttutc duedate )</Syntax>
<Description>Sets the duedate of the message identified by mid to the value duedate. In case this message is routed through Microsoft Outlook, the message follow-up flag is set together with the indicated duedate.</Description>
<HelpID>/progguide/emessage_connector/cmf.setduedate</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setexpiry</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setexpiry( long mid , domain ttutc expiry )</Syntax>
<Description>Sets the expiry time of the message identified by mid to the value expiry.</Description>
<HelpID>/progguide/emessage_connector/cmf.setexpiry</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setfollowupflag</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setfollowupflag( long mid )</Syntax>
<Description>Sets the follow-up flag of the message identified by mid.</Description>
<HelpID>/progguide/emessage_connector/cmf.setfollowupflag</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setmessageid</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setmessageid( long mid , string messageId )</Syntax>
<Description>Sets the message ID of the message identified by mid and returns string into messageId. The messageId is a string that uniquely identifies a message within Infor ERP LN eMessage Connector. The application using Baan eMessage Connector need not to call this function as Infor ERP LN eMessage Connector will take care of this automatically.</Description>
<HelpID>/progguide/emessage_connector/cmf.setmessageid</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setnotification</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setnotification( long mid , enum notification )</Syntax>
<Description>Sets the notification required of the message identified by mid to the value notification.</Description>
<HelpID>/progguide/emessage_connector/cmf.setnotification</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setpriority</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setpriority( long mid , enum priority )</Syntax>
<Description>Sets the priority of the message identified by mid to the value priority.</Description>
<HelpID>/progguide/emessage_connector/cmf.setpriority</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setrecipientaddress</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setrecipientaddress( long recipient , string address )</Syntax>
<Description>Sets the address of the recipient identified by recipient to the valueaddress.  An address could be a fax number, SMTP address, SMS number, and so on)</Description>
<HelpID>/progguide/emessage_connector/cmf.setrecipientaddress</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setrecipientname</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setrecipientname( long recipient , string name )</Syntax>
<Description>Sets the (human-readable) name of the recipient identified by recipientto the value name.</Description>
<HelpID>/progguide/emessage_connector/cmf.setrecipientname</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setrecipientreasoncode</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setrecipientreasoncode( long recipient , long reasoncode )</Syntax>
<Description>Sets the reason code of the recipient identified by recipient to the value reasoncode. The reason code is used only in case of a non-delivery of a message to a recipient.</Description>
<HelpID>/progguide/emessage_connector/cmf.setrecipientreasoncode</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setrecipientreasonstring</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setrecipientreasonstring( long recipient , string reasonstring(100) )</Syntax>
<Description>Sets the (human-readable) reason string of the recipient identified by recipientto the value reasonstring. The reason string is used only in case of a non-delivery of a message to a recipient.</Description>
<HelpID>/progguide/emessage_connector/cmf.setrecipientreasonstring</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setrecipientresponsibility</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setrecipientresponsibility( long recipient , string responsibility )</Syntax>
<Description>Sets the responsibility of the recipient identified by recipient to the value responsibility.</Description>
<HelpID>/progguide/emessage_connector/cmf.setrecipientresponsibility</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setrecipienttype</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setrecipienttype( long recipient , string type )</Syntax>
<Description>Sets the type of the recipient identified by recipient to the value type.The listed types are only examples and new types can be introduced at any time.</Description>
<HelpID>/progguide/emessage_connector/cmf.setrecipienttype</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setsensitivity</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setsensitivity( long mid , enum sensitivity )</Syntax>
<Description>Sets the sensitivity of the message identified by mid to the value sensitivity.</Description>
<HelpID>/progguide/emessage_connector/cmf.setsensitivity</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setstarttime</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setstarttime( long mid , domain ttutc starttime )</Syntax>
<Description>Sets the delivery start time of the message identified by mid to the value starttime.</Description>
<HelpID>/progguide/emessage_connector/cmf.setstarttime</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.setsubject</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.setsubject( long mid , string subject )</Syntax>
<Description>Sets the message subject line of the message identified by mid to the value subject. This is a mandatory property for a Infor ERP LN eMessage Connector Connector message.</Description>
<HelpID>/progguide/emessage_connector/cmf.setsubject</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.settaskduedate</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.settaskduedate( long tid , domain ttutc duedate )</Syntax>
<Description>Sets the task duedate of the task identified by tid to the value duedate.</Description>
<HelpID>/progguide/emessage_connector/cmf.settaskduedate</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.settaskpriority</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.settaskpriority( long tid , enum priority )</Syntax>
<Description>Sets the task priority of the task identified by tid to the value priority.This is a mandatory property for a Infor ERP LN eMessage Connector task.</Description>
<HelpID>/progguide/emessage_connector/cmf.settaskpriority</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.settaskremindertime</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.settaskremindertime( long tid , domain ttutc remindertime )</Syntax>
<Description>Sets the task remindertime of the task identified by tid to the value remindertime.</Description>
<HelpID>/progguide/emessage_connector/cmf.settaskremindertime</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.settaskstartdate</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.settaskstartdate( long tid , domain ttutc startdate )</Syntax>
<Description>Sets the task startdate of the task identified by tid to the value startdate.</Description>
<HelpID>/progguide/emessage_connector/cmf.settaskstartdate</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.settasksubject</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.settasksubject( long tid , string subject )</Syntax>
<Description>Sets the task subject of the task identified by tid to the value subject.This is a mandatory property for a Infor ERP LN eMessage Connector task.</Description>
<HelpID>/progguide/emessage_connector/cmf.settasksubject</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.settasktotalwork</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.settasktotalwork( long tid , string totalwork )</Syntax>
<Description>Sets the task totalwork of the task identified by tid to the value totalwork.</Description>
<HelpID>/progguide/emessage_connector/cmf.settasktotalwork</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.settemplate</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.settemplate( long mid , string template )</Syntax>
<Description>Sets the message template identification of the message identified by midto the value template.</Description>
<HelpID>/progguide/emessage_connector/cmf.settemplate</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.startservice</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.startservice( long service(15) , long mode  [, string address(13)] )</Syntax>
<Description>Starts the Infor ERP LN eMessage Connector service</Description>
<HelpID>/progguide/emessage_connector/cmf.startservice</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.stopallservices</Name>
<ScriptType>all</ScriptType>
<Syntax>void cmf.stopallservices( )</Syntax>
<Description>Stops all Infor ERP LN eMessage Connector services started by cmf.sendToPerson().</Description>
<HelpID>/progguide/emessage_connector/cmf.stopallservices</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.stopservice</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.stopservice( long service(15) , long mode )</Syntax>
<Description>Stops the currently running Infor ERP LN eMessage Connector service named servicewhich is running in mode mode.</Description>
<HelpID>/progguide/emessage_connector/cmf.stopservice</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmf.updateaddressstatus</Name>
<ScriptType>all</ScriptType>
<Syntax>long cmf.updateaddressstatus( long entry_id , long errorcode )</Syntax>
<Description>Updates the error status of an address entry. Entry_id is obtained from the function cmf.getNextAddress(). The possible values of errorcode are subdivided into two categories: errors which can  also occur when the addresslist object is empty (global error variables used) and errors which only occur when the addresslist object is filled with one or more recipients: then the errorcode of the recipient is set to indicate the nature of the error. Possible values:</Description>
<HelpID>/progguide/emessage_connector/cmf.updateaddressstatus</HelpID>
</Function>
<Function Deprecated="no">
<Name>next.event</Name>
<ScriptType>all</ScriptType>
<Syntax>long next.event(  [long event(EVTMAXSIZE)] )</Syntax>
<Description>This removes the event at the top of the event queue and stores it in event. If the event queue is empty, the function waits (that is, it is blocked) until an event arrives. To time out the next.event() function, use set.timer()set.timer.</Description>
<HelpID>/progguide/events/next.event</HelpID>
</Function>
<Function Deprecated="no">
<Name>peek.event</Name>
<ScriptType>all</ScriptType>
<Syntax>long peek.event(  [long event(EVTMAXSIZE)] )</Syntax>
<Description>This reads the event at the top of the event queue and stores it in event. It does not remove the event from the queue. If the event queue is empty, the function waits (that is, it is blocked) until an event arrives. To time out the peek.event() function, use set.timer()set.timer.</Description>
<HelpID>/progguide/events/peek.event</HelpID>
</Function>
<Function Deprecated="no">
<Name>pending.events</Name>
<ScriptType>all</ScriptType>
<Syntax>long pending.events( )</Syntax>
<Description>This returns the number of events present in the event queue of the process group. Note that including the function in an empty loop uses a lot of processor time. For example:</Description>
<HelpID>/progguide/events/pending.events</HelpID>
</Function>
<Function Deprecated="no">
<Name>select.event.input</Name>
<ScriptType>all</ScriptType>
<Syntax>void select.event.input( long object_id , long masks )</Syntax>
<Description>This defines which event types can be generated by the specified object.</Description>
<HelpID>/progguide/events/select.event.input</HelpID>
</Function>
<Function Deprecated="no">
<Name>send.event</Name>
<ScriptType>all</ScriptType>
<Syntax>long send.event( long proc_grp , long event(EVTMAXSIZE) )</Syntax>
<Description>This sends an event from the current process to the specified process group. It enables event-driven communication between processes. A process can send any event type using this function. Note that this is the only way to send events of type EVTCLIENTMESSAGE.</Description>
<HelpID>/progguide/events/send.event</HelpID>
</Function>
<Function Deprecated="no">
<Name>appl.delete.excl</Name>
<ScriptType>all</ScriptType>
<Syntax>long appl.delete.excl( const string name )</Syntax>
<Description>This removes a specified exclusive application lock. Only the owner of the lock can delete it. And a lock can be deleted only from within the same process in which it was set.</Description>
<HelpID>/progguide/functions_appl/appl.delete.excl</HelpID>
</Function>
<Function Deprecated="no">
<Name>appl.delete</Name>
<ScriptType>all</ScriptType>
<Syntax>long appl.delete( const string name )</Syntax>
<Description>This removes a specified application lock. Only the owner of the lock can delete it. And a lock can be deleted only from within the same process in which it was set.</Description>
<HelpID>/progguide/functions_appl/appl.delete</HelpID>
</Function>
<Function Deprecated="no">
<Name>appl.get.user</Name>
<ScriptType>all</ScriptType>
<Syntax>long appl.get.user( const string name , ref string user(12) )</Syntax>
<Description>This retrieves the BAAN login name of the user who created the specified application lock.</Description>
<HelpID>/progguide/functions_appl/appl.get.user</HelpID>
</Function>
<Function Deprecated="no">
<Name>appl.modify</Name>
<ScriptType>all</ScriptType>
<Syntax>long appl.modify( const string name , long old.owner , long new.owner )</Syntax>
<Description>This changes the owner of a specified application lock. That is, it links the application lock to another 4GL process in the same bshell.</Description>
<HelpID>/progguide/functions_appl/appl.modify</HelpID>
</Function>
<Function Deprecated="no">
<Name>appl.set.excl</Name>
<ScriptType>all</ScriptType>
<Syntax>long appl.set.excl( const string name )</Syntax>
<Description>This creates an exclusive application lock for the current application.</Description>
<HelpID>/progguide/functions_appl/appl.set.excl</HelpID>
</Function>
<Function Deprecated="no">
<Name>appl.set</Name>
<ScriptType>all</ScriptType>
<Syntax>long appl.set( const string name , long mode )</Syntax>
<Description>This creates an application lock for the current application.</Description>
<HelpID>/progguide/functions_appl/appl.set</HelpID>
</Function>
<Function Deprecated="no">
<Name>artm.begin.transaction</Name>
<ScriptType>all</ScriptType>
<Syntax>long artm.begin.transaction( long artm.transaction.class.id  [, long metric.type]  [, void metric.value] )</Syntax>
<Description>Marks the beginning of a transaction. Each time a transaction starts, artm.begin.transaction() must be called at the beginning of each transaction instance the user wants to monitor.</Description>
<HelpID>/progguide/functions_artm/artm.begin.transaction</HelpID>
</Function>
<Function Deprecated="no">
<Name>artm.define.transaction.class</Name>
<ScriptType>all</ScriptType>
<Syntax>long artm.define.transaction.class( string tran.name(128) , string tran.detail(128)  [, long metric.type]  [, string metric.name(44)] )</Syntax>
<Description>Assigns a unique identifier to a transaction class, and optionally to describe the format of additional data passed on by artm.begin.transaction (), artm.update.transaction(), and the artm.end.transaction() calls. This is normally done during the initialization of the specified application. The value returned by artm.define.transaction.class() is passed as a parameter in artm.begin.transaction() calls to identify which class of transaction is starting.</Description>
<HelpID>/progguide/functions_artm/artm.define.transaction.class</HelpID>
</Function>
<Function Deprecated="no">
<Name>artm.end.transaction</Name>
<ScriptType>all</ScriptType>
<Syntax>long artm.end.transaction( long artm.transaction.id , long tran.status  [, long metric.type]  [, void metric.value] )</Syntax>
<Description>Marks the end of a transaction instance that was started with artm.begin.transaction(). artm.end.transaction () should be called from the application program just after each transaction instance ends.</Description>
<HelpID>/progguide/functions_artm/artm.end.transaction</HelpID>
</Function>
<Function Deprecated="no">
<Name>artm.redefine.transaction.class</Name>
<ScriptType>all</ScriptType>
<Syntax>long artm.redefine.transaction.class( string tran.name(128)  [, long metric.type]  [, string metric.name(44)] )</Syntax>
<Description>Updates the metrics of a predefined session transaction class at the beginning of a session.</Description>
<HelpID>/progguide/functions_artm/artm.redefine.transaction.class</HelpID>
</Function>
<Function Deprecated="no">
<Name>artm.update.transaction</Name>
<ScriptType>all</ScriptType>
<Syntax>long artm.update.transaction( long artm.transaction.id  [, long metric.type]  [, void metric.value] )</Syntax>
<Description>This function is not required, and can thus be omitted if not needed. It can be used for two purposes, namely:</Description>
<HelpID>/progguide/functions_artm/artm.update.transaction</HelpID>
</Function>
<Function Deprecated="no">
<Name>asc</Name>
<ScriptType>all</ScriptType>
<Syntax>long asc( string characters )</Syntax>
<Description>This function returns the sum of the code point values encoded in the supplied string.</Description>
<HelpID>/progguide/functions_ascii_conversion/asc</HelpID>
</Function>
<Function Deprecated="no">
<Name>chr$</Name>
<ScriptType>all</ScriptType>
<Syntax>string chr$( long code )</Syntax>
<Description>This function returns a single character string corresponding to the supplied code point.</Description>
<HelpID>/progguide/functions_ascii_conversion/chr</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_close_audit</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_close_audit( long seqid )</Syntax>
<Description>Discards the specified sequence identifier. seqid is the identifier returned by aud_open_audit()aud_open_audit when the particular sequence file was opened. When the last sequence file associated with an info file is closed, the info file is also closed.</Description>
<HelpID>/progguide/functions_aud/aud_close_audit</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_get_audit_dd</Name>
<ScriptType>all</ScriptType>
<Syntax>void aud_get_audit_dd( const string seqhdr() , ref string colnames(,) , ref long colinfo(,) )</Syntax>
<Description>This retrieves the audit data dictionary information from the sequence header of a particular sequence file.</Description>
<HelpID>/progguide/functions_aud/aud_get_audit_dd</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_get_col_info</Name>
<ScriptType>all</ScriptType>
<Syntax>void aud_get_col_info( const string seqhdr() , long col_no , ref string col_name() , ref long col_type , ref long col_dep , ref long col_len )</Syntax>
<Description>This retrieves information about a specified field from the sequence header of a particular sequence file. It retrieves the same information as aud_get_audit_dd(), but for a single field only.</Description>
<HelpID>/progguide/functions_aud/aud_get_col_info</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_get_fld_values</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_get_fld_values( long colno , const long colinfo , const string rec_buff() , ref string values(,) )</Syntax>
<Description>This retrieves the values of a specified field from an audit record. You can use this for records of type insert, delete, and update only. For records of type insert and delete, you can retrieve the values of any field. For records of type update, you can retrieve the values of changed fields and primary key fields only.</Description>
<HelpID>/progguide/functions_aud/aud_get_fld_values</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_get_hdr_size</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_get_hdr_size( long seqid )</Syntax>
<Description>Because the audit DD of a table can differ in different sequence files, the size of the sequence header can also differ from sequence file to sequence file.</Description>
<HelpID>/progguide/functions_aud/aud_get_hdr_size</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_get_info_seq_hdr_size</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_get_info_seq_hdr_size( long seqid , long seqno )</Syntax>
<Description>Because the audit DD of a table can differ in different sequence files, the size of the sequence header can also differ from sequence file to sequence file.</Description>
<HelpID>/progguide/functions_aud/aud_get_info_seq_hdr_size</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_open_audit</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_open_audit( const string host_name() , const string table_name() , long compno , long seqno )</Syntax>
<Description>This opens a specified sequence file. You identify the file to open by the table/company combination with which it is associated, the host on which it is located, and the sequence file number. The function returns a unique identifier for the file. Other audit functions use this identifier (referred to as the sequence identifier) to refer to this particular sequence file.</Description>
<HelpID>/progguide/functions_aud/aud_open_audit</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_read_audit_rec</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_read_audit_rec( long seqid , long rec_no , ref string rec_buff() )</Syntax>
<Description>This retrieves a specified audit record from the current transaction. You can use aud_read_next_audit_rec() to retrieve the next and subsequent records from the transaction. You can access information in the audit record using the transaction record macros.</Description>
<HelpID>/progguide/functions_aud/aud_read_audit_rec</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_read_info_hdr</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_read_info_hdr( const string host_name() , const string table_name() , long compno , ref string info_hdr() )</Syntax>
<Description>This retrieves the header of the info file associated with a specified table and company number combination. You can access information in the info header using the info header macros.</Description>
<HelpID>/progguide/functions_aud/aud_read_info_hdr</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_read_info_seq_hdr</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_read_info_seq_hdr( long seqid , long seqno , ref string seqhdr )</Syntax>
<Description>This reads the header information for a particular sequence file from the associated info file. You can access information in the sequence header using the sequence header macros.</Description>
<HelpID>/progguide/functions_aud/aud_read_info_seq_hdr</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_read_next_audit_rec</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_read_next_audit_rec( long seqid , ref string rec_buff )</Syntax>
<Description>This reads the next audited record from the current transaction. You can use aud_read_audit_rec() to read a specific audit record and then use aud_read_next_audit_rec() to read the next and subsequent records. You can access information in the audited record using the transaction record macros.</Description>
<HelpID>/progguide/functions_aud/aud_read_next_audit_rec</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_read_next_tran</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_read_next_tran( long seqid , ref string tran_hdr() )</Syntax>
<Description>This reads the next transaction header in the specified sequence file. You can use aud_read_tran() to read a specific transaction header and then use aud_read_next_tran() to read the next and subsequent transaction headers. You can access information in the transaction header using the transaction header macros.</Description>
<HelpID>/progguide/functions_aud/aud_read_next_tran</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_read_seq_hdr</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_read_seq_hdr( long seqid , ref string seqhdr )</Syntax>
<Description>This retrieves the header information from a specified sequence file. You can access information in the sequence header with the sequence header macros.</Description>
<HelpID>/progguide/functions_aud/aud_read_seq_hdr</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_read_tran</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_read_tran( long seqid , long tran_no , ref string tran_hdr() )</Syntax>
<Description>This reads a specified transaction header from a specified sequence file. You can use aud_read_tran() to read a specific transaction header and then use aud_read_next_tran() to read the next and subsequent transaction headers. You can access information in the transaction header with the transaction header macros.</Description>
<HelpID>/progguide/functions_aud/aud_read_tran</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_select_host</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_select_host( const string table_name() , long compno , long user_interaction , ref string host_name() )</Syntax>
<Description>Audit files can be located on more than one host (for example, on the local host and a remote host, or on two or more remote hosts). The system maintains a list of hosts where audit files for particular table and company number combinations are located. When accessing audit files, this host list is used to select the particular host on which the files are to be accessed.</Description>
<HelpID>/progguide/functions_aud/aud_select_host</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_update_infofile</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_update_infofile( long seqid , const string seqhdr )</Syntax>
<Description>This writes sequence header information to the info file associated with the specified sequence file. You can set the information for the sequence header with the sequence header macros</Description>
<HelpID>/progguide/functions_aud/aud_update_infofile</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_write_info_hdr</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_write_info_hdr( long host_name() , string table_name() , long compno , const string info_hdr )</Syntax>
<Description>This writes info header information to a specified info file. You can set the information for the info header with the info header macros</Description>
<HelpID>/progguide/functions_aud/aud_write_info_hdr</HelpID>
</Function>
<Function Deprecated="yes">
<Name>aud_write_seq_hdr</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud_write_seq_hdr( long seqid , const string seqhdr() )</Syntax>
<Description>This writes header information to a specified sequence file. You can set the information for the sequence header with the sequence header macros.</Description>
<HelpID>/progguide/functions_aud/aud_write_seq_hdr</HelpID>
</Function>
<Function Deprecated="no">
<Name>aud.audit.is.on.for.table</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean aud.audit.is.on.for.table( const string table.code() , long company )</Syntax>
<Description>This function checks whether audit is on for a specific database table.</Description>
<HelpID>/progguide/functions_audtr/aud.audit.is.on.for.table</HelpID>
</Function>
<Function Deprecated="no">
<Name>aud.close.selection</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud.close.selection( long selection.id )</Syntax>
<Description>The opening of the audit trail is not done explicitly in comparison to the low-level audit library functions. To close the opened files again, the developer must use the aud.close.selection. During the invocation of aud.select.transactions() and all functions beginning with aud.get.next, each file that is opened but not closed will be registered within the Infor ERP LN Audit Management. The function aud.close.selection() will use this information to close the files that are registered as being open. The function also closes the selection of transactions that have been created using the aud.select.transactions function.</Description>
<HelpID>/progguide/functions_audtr/aud.close.selection</HelpID>
</Function>
<Function Deprecated="no">
<Name>aud.get.field.ids</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud.get.field.ids( long selection.id , long table.id , long number.of.fields , const string field.names(,) , ref long field.ids() )</Syntax>
<Description>aud.get.next.action() stores the contents of the action row internally: old value, new value and status of each field. To retrieve this information, the application needs to have a reference for each field. These references are called field ids. Only when the meta data is changed do the field ids change, so only in such a case does this function have to be used. This function also enables the user to filter only those fields that are relevant to the application by means of a field.names array. This array contains the field names for which an id has to be retrieved.</Description>
<HelpID>/progguide/functions_audtr/aud.get.field.ids</HelpID>
</Function>
<Function Deprecated="no">
<Name>aud.get.field.info</Name>
<ScriptType>all</ScriptType>
<Syntax>void aud.get.field.info( long selection.id , long table.id , long field.id , ref long field.depth , ref long field.type , ref long field.length )</Syntax>
<Description>Returns the format of the field at the time it was audited. The information consists of the type, the depth and the size of the field. This function will not check the input, because of performance reasons. Instead the combination selection.id, table.id, field.id is assumed to refer to an existing field, as returned by aud.get.field.ids(). This means that if the input parameters are not valid, an error message will be presented to the end user</Description>
<HelpID>/progguide/functions_audtr/aud.get.field.info</HelpID>
</Function>
<Function Deprecated="no">
<Name>aud.get.field.list</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud.get.field.list( long selection.id , long table.id , ref string field.names(,) )</Syntax>
<Description>Use this function to get the field names of all fields logged for a database table in the audit trail. This function is especially useful if the user is not aware or interested in the table fields but simply needs the names of all fields. In this case the user uses the aud.get.number.of.fields() to determine how many fields are available and also uses aud.get.field.list() to obtain the field ids for each field. The information of these two function can be used to further retrieve field info as well as the value of the field using the functions: aud.get.field.info() , aud.get.field.status() and aud.put.old.field.value() and aud.put.new.field.value().</Description>
<HelpID>/progguide/functions_audtr/aud.get.field.list</HelpID>
</Function>
<Function Deprecated="no">
<Name>aud.get.field.status</Name>
<ScriptType>all</ScriptType>
<Syntax>string aud.get.field.status( long selection.id , long table.id , long field.id )</Syntax>
<Description>Retrieves the status of a field in a database action (insert, update or delete).</Description>
<HelpID>/progguide/functions_audtr/aud.get.field.status</HelpID>
</Function>
<Function Deprecated="no">
<Name>aud.get.next.action</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud.get.next.action( long selection.id , ref long table.id , ref long company , ref string table.code , ref bool meta.data.changed , ref long current.action.number , ref string action.type )</Syntax>
<Description>Determines and reads the next action from the list of tables that was constructed by the aud.get.next.transaction() function.</Description>
<HelpID>/progguide/functions_audtr/aud.get.next.action</HelpID>
</Function>
<Function Deprecated="no">
<Name>aud.get.next.transaction</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud.get.next.transaction( long selection.id , long number.of.retries , long retry.interval , ref string transaction.id , ref long commit.time , ref string session , ref string user )</Syntax>
<Description>After the transactions to be selected have been specified using aud.select.transactions() the next step is to retrieve the audit data from the audit trail. The retrieved audit data can be processed in combination with the acquired meta data. The aud.get.next.transaction function fetches the next transaction data based on the selection defined with the aud.select.transactions() function. When a transaction is read successfully, the function returns the transaction header, consisting of transaction.id, commit.time, session and user.</Description>
<HelpID>/progguide/functions_audtr/aud.get.next.transaction</HelpID>
</Function>
<Function Deprecated="no">
<Name>aud.get.number.of.fields</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud.get.number.of.fields( long selection.id , long table.id , ref long number.of.fields )</Syntax>
<Description>Use this function to determine the number of fields, read from the data dictionary, that are stored in the sequence files. This function is especially useful if the user is not aware or interested in the table fields but simply needs to pick up the value of all fields. In this situation the user uses this function together with the aud.get.field.list() to read all the information of all fields.</Description>
<HelpID>/progguide/functions_audtr/aud.get.number.of.fields</HelpID>
</Function>
<Function Deprecated="no">
<Name>aud.put.old.field.value</Name>
<ScriptType>all</ScriptType>
<Syntax>void aud.put.old.field.value( long pid , string variable.name , long selection.id , long table.id , long field.id , long element  [, bool endian] )</Syntax>
<Description>Use aud.put.old.field.value to retrieve the value of a field from the old (new) value string. The retrieved value is put into the variable supplied by the application.</Description>
<HelpID>/progguide/functions_audtr/aud.put.old.field.value</HelpID>
</Function>
<Function Deprecated="no">
<Name>aud.select.transactions</Name>
<ScriptType>all</ScriptType>
<Syntax>long aud.select.transactions( long nr.tables , const string table.codes(,) , const long companies() , const string selection.criteria , ref long selection.id )</Syntax>
<Description>Before transactional data can be read from the audit trail the developer has to select the transactions. This function selects transactions from the audit trail using a list of tables and, if required, some additional selection criteria. The selection.criteria is given in a SQL 'where' like fashion and is used to filter the desired transactions.</Description>
<HelpID>/progguide/functions_audtr/aud.select.transactions</HelpID>
</Function>
<Function Deprecated="no">
<Name>aud.put.new.field.value</Name>
<ScriptType>all</ScriptType>
<Syntax>void aud.put.new.field.value( long pid , string variable.name , long selection.id , long table.id , long field.id , long element  [, bool endian] )</Syntax>
<Description>Use aud.put.new.field.value to retrieve the value of a field from the new value string. The retrieved value is put into the variable supplied by the application.</Description>
<HelpID>/progguide/functions_audtr/aud.put.new.field.value</HelpID>
</Function>
<Function Deprecated="no">
<Name>bc$</Name>
<ScriptType>all</ScriptType>
<Syntax>string bc$( long type , long rows , string barcode , long options )</Syntax>
<Description>Use this to create a barcode of the specified type.</Description>
<HelpID>/progguide/functions_barcodes/bc</HelpID>
</Function>
<Function Deprecated="no">
<Name>base64.decode</Name>
<ScriptType>all</ScriptType>
<Syntax>long base64.decode( string data.in , ref string data.out )</Syntax>
<Description>Decodes the Base64 encoded input to binary output.</Description>
<HelpID>/progguide/functions_base64/base64.decode</HelpID>
</Function>
<Function Deprecated="no">
<Name>base64.encode</Name>
<ScriptType>all</ScriptType>
<Syntax>long base64.encode( string data.in , ref string data.out )</Syntax>
<Description>Encodes the binary input to Base64 encoded output.</Description>
<HelpID>/progguide/functions_base64/base64.encode</HelpID>
</Function>
<Function Deprecated="no">
<Name>bit.and</Name>
<ScriptType>all</ScriptType>
<Syntax>long bit.and( long pattern1 , long pattern2 )</Syntax>
<Description>These functions compute binary bit operations on one or two bit patterns. Both patterns must be of type long; a long is 32 bits.</Description>
<HelpID>/progguide/functions_bit/bit_and_exor_in_inv_or</HelpID>
</Function>
<Function Deprecated="no">
<Name>bit exor</Name>
<ScriptType>all</ScriptType>
<Syntax>long bit exor( long pattern1 , long pattern2 )</Syntax>
<Description>These functions compute binary bit operations on one or two bit patterns. Both patterns must be of type long; a long is 32 bits.</Description>
<HelpID>/progguide/functions_bit/bit_and_exor_in_inv_or</HelpID>
</Function>
<Function Deprecated="no">
<Name>bit.in</Name>
<ScriptType>all</ScriptType>
<Syntax>long bit.in( long pattern1 , long pattern2 )</Syntax>
<Description>These functions compute binary bit operations on one or two bit patterns. Both patterns must be of type long; a long is 32 bits.</Description>
<HelpID>/progguide/functions_bit/bit_and_exor_in_inv_or</HelpID>
</Function>
<Function Deprecated="no">
<Name>bit.or</Name>
<ScriptType>all</ScriptType>
<Syntax>long bit.or( long pattern1 , long pattern2 )</Syntax>
<Description>These functions compute binary bit operations on one or two bit patterns. Both patterns must be of type long; a long is 32 bits.</Description>
<HelpID>/progguide/functions_bit/bit_and_exor_in_inv_or</HelpID>
</Function>
<Function Deprecated="no">
<Name>bit.inv</Name>
<ScriptType>all</ScriptType>
<Syntax>long bit.inv( long pattern1 )</Syntax>
<Description>Inverts all bits of the passed long.</Description>
<HelpID>/progguide/functions_bit/bit_and_exor_in_inv_or</HelpID>
</Function>
<Function Deprecated="no">
<Name>bit.shiftl</Name>
<ScriptType>all</ScriptType>
<Syntax>long bit.shiftl( long bitpattern , long no_of_bits )</Syntax>
<Description>These shift a bit pattern to the left or to the right. The bit pattern can be of type long, or it can be a hexadecimal constant. When using a hexadecimal constant, it must begin with '0x'. The no_of_bits argument indicates the number of bits that the pattern must be shifted.</Description>
<HelpID>/progguide/functions_bit/bit_shift</HelpID>
</Function>
<Function Deprecated="no">
<Name>bit.shiftr</Name>
<ScriptType>all</ScriptType>
<Syntax>long bit.shiftr( long bitpattern , long no_of_bits )</Syntax>
<Description>These shift a bit pattern to the left or to the right. The bit pattern can be of type long, or it can be a hexadecimal constant. When using a hexadecimal constant, it must begin with '0x'. The no_of_bits argument indicates the number of bits that the pattern must be shifted.</Description>
<HelpID>/progguide/functions_bit/bit_shift</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.blob.append</Name>
<ScriptType>all</ScriptType>
<Syntax>long db.blob.append( const string blob.locator , long num.bytes , const string bytes.array  [, long mode]  [, long eflag] )</Syntax>
<Description>This function appends data to the BLOB, to which the BLOB locator refers. Before calling db.blob.append(), the BLOB locator must be read from the database.</Description>
<HelpID>/progguide/functions_blob/db.blob.append</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.blob.append.xml</Name>
<ScriptType>all</ScriptType>
<Syntax>long db.blob.append.xml( const string blob.locator , long xml.node  [, long mode]  [, long eflag] )</Syntax>
<Description>This function appends data from an XML tree to the BLOB, to which the BLOB locator refers. Before calling db.blob.append.xml(), the BLOB locator must be read from the database.</Description>
<HelpID>/progguide/functions_blob/db.blob.append.xml</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.blob.clear</Name>
<ScriptType>all</ScriptType>
<Syntax>long db.blob.clear( const string blob.locator  [, long mode]  [, long eflag] )</Syntax>
<Description>This function clears the BLOB, to which the BLOB locator refers. Before calling db.blob.clear(), the BLOB locator must be read from the database.</Description>
<HelpID>/progguide/functions_blob/db.blob.clear</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.blob.read</Name>
<ScriptType>all</ScriptType>
<Syntax>long db.blob.read( const string blob.locator , long offset , long num.bytes , ref string bytes.array , ref long num.bytes.read )</Syntax>
<Description>This function reads data from the BLOB, to which the BLOB locator refers. Before calling db.blob.read(), the BLOB locator must be read from the database. For example, the following code retrieves the BLOB locator that refers to a certain picture from a table, and then retrieves the first 256 bytes of the picture:</Description>
<HelpID>/progguide/functions_blob/db.blob.read</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.blob.read.xml.ns</Name>
<ScriptType>all</ScriptType>
<Syntax>long db.blob.read.xml.ns( const string blob.locator , long offset , ref long bytes.read , ref long xml.node , ref string error , long whitespacehandling )</Syntax>
<Description>This function reads data from the BLOB, to which the BLOB locator refers, and parses it to an XML tree. Before calling db.blob.read.xml.ns(), the BLOB locator must be read from the database. For example, the following code retrieves the BLOB locator that refers to a certain picture from a table, and then retrieves the first 256 bytes of the picture:</Description>
<HelpID>/progguide/functions_blob/db.blob.read.xml.ns</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.blob.read.xml</Name>
<ScriptType>all</ScriptType>
<Syntax>long db.blob.read.xml( const string blob.locator , long offset , ref long bytes.read , ref long xml.node , ref string error , long whitespacehandling )</Syntax>
<Description>This function reads data from the BLOB, to which the BLOB locator refers, and parses it to an XML tree. Before calling db.blob.read.xml(), the BLOB locator must be read from the database. For example, the following code retrieves the BLOB locator that refers to a certain picture from a table, and then retrieves the first 256 bytes of the picture:</Description>
<HelpID>/progguide/functions_blob/db.blob.read.xml</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.blob.size</Name>
<ScriptType>all</ScriptType>
<Syntax>long db.blob.size( const string blob.locator , ref long num.bytes )</Syntax>
<Description>This function retrieves the size of the BLOB, to which the BLOB locator refers. Before calling db.blob.size(), the BLOB locator must be read from the database. For example, the following code retrieves the BLOB locator that refers to a certain picture from a table, and then retrieves the size of the picture:</Description>
<HelpID>/progguide/functions_blob/db.blob.size</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.cas.bse.encode$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.cas.bse.encode$( const string BSE )</Syntax>
<Description>Replace all characters of a BSE with an escape character, except for lowercase ascii characters (a-z).</Description>
<HelpID>/progguide/functions_cURL/curl.cas.bse.encode$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.cas.bse.gettable</Name>
<ScriptType>all</ScriptType>
<Syntax>void curl.cas.bse.gettable( ref string(2,128) EscapeTable )</Syntax>
<Description>Returns a string array with an escapetable.</Description>
<HelpID>/progguide/functions_cURL/curl.cas.bse.gettable</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.cas.free.serviceresponse</Name>
<ScriptType>all</ScriptType>
<Syntax>void curl.cas.free.serviceresponse( )</Syntax>
<Description>Clean up connection</Description>
<HelpID>/progguide/functions_cURL/curl.cas.free.serviceresponse</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.cas.get.failurecode$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.cas.get.failurecode$( )</Syntax>
<Description>Returns an error code number, indicating the status of an action.</Description>
<HelpID>/progguide/functions_cURL/curl.cas.get.failurecode$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.cas.get.failuretext$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.cas.get.failuretext$( )</Syntax>
<Description>Can be used to get a readable description of failurecode.</Description>
<HelpID>/progguide/functions_cURL/curl.cas.get.failuretext$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.cas.get.serviceresponsetype</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.cas.get.serviceresponsetype( )</Syntax>
<Description>Get the response type of the server.</Description>
<HelpID>/progguide/functions_cURL/curl.cas.get.serviceresponsetype</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.cas.get.user$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.cas.get.user$( )</Syntax>
<Description>Read the CAS user.</Description>
<HelpID>/progguide/functions_cURL/curl.cas.get.user$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.cleanup</Name>
<ScriptType>all</ScriptType>
<Syntax>void curl.cleanup( )</Syntax>
<Description>End cURL session.</Description>
<HelpID>/progguide/functions_cURL/curl.cleanup</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.download.data</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.download.data( const string url , ref string data , ref long data.size  [, long header.list] )</Syntax>
<Description>Downloads data from the specified url and writes it to the specified data buffer. Note that the buffer must be large enough to store all downloaded data.</Description>
<HelpID>/progguide/functions_cURL/curl.download.data</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.download.file</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.download.file( const string url , const string file  [, long header.list] )</Syntax>
<Description>Downloads data from the specified url and writes it to the specified file.</Description>
<HelpID>/progguide/functions_cURL/curl.download.file</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.download.stream</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.download.stream( const string url , long response.stream  [, long header.list] )</Syntax>
<Description>Downloads data from the specified url and writes it to the specified stream, which can be either a file or a memory stream.</Description>
<HelpID>/progguide/functions_cURL/curl.download.stream</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.download.string</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.download.string( const string url , ref string data  [, long header.list] )</Syntax>
<Description>Downloads data from the specified url and writes it to the specified string buffer. Note that the string buffer must be large enough to store all data. The data will be null terminated, if possible.</Description>
<HelpID>/progguide/functions_cURL/curl.download.string</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.escape.decode$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.escape.decode$( const string SomeText )</Syntax>
<Description>curl.escape.decode$() offers the inverse functionality of curl.escape.encode$().</Description>
<HelpID>/progguide/functions_cURL/curl.escape.decode$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.escape.encode$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.escape.encode$( const string SomeText )</Syntax>
<Description>Escape a string</Description>
<HelpID>/progguide/functions_cURL/curl.escape.encode$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.escape.encode.ext$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.escape.encode.ext$( const string(2,128) EscapeTable , const string SomeText )</Syntax>
<Description>Escape special characters</Description>
<HelpID>/progguide/functions_cURL/curl.escape.encode.ext$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.escape.gettable</Name>
<ScriptType>all</ScriptType>
<Syntax>void curl.escape.gettable( ref string(2,128) EscapeTable )</Syntax>
<Description>Returns a string array with an escapetable.</Description>
<HelpID>/progguide/functions_cURL/curl.escape.gettable</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.get.errorbuffer$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.get.errorbuffer$( )</Syntax>
<Description>Descriptive message on result of previous action</Description>
<HelpID>/progguide/functions_cURL/curl.get.errorbuffer$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.getinfo</Name>
<ScriptType>all</ScriptType>
<Syntax> curl.getinfo( )</Syntax>
<Description>This isn't the actual function. This help topic lists all curl.getinfo functions.</Description>
<HelpID>/progguide/functions_cURL/curl.getinfo</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.http.status$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.http.status$( long http.status )</Syntax>
<Description>Returns a english descriptive text for a given HTTP Status Code. E.g. when 200 (HTTP_STATUS_OK) is passed "OK" is returned, or when 503 (HTTP_STATUS_SERVICE_UNAVAILABLE) is passed, "Service Unavailable" is returned.</Description>
<HelpID>/progguide/functions_cURL/curl.http.status$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.perform</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.perform( )</Syntax>
<Description>Execute the action.</Description>
<HelpID>/progguide/functions_cURL/curl.perform</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.reset.errorbuffer</Name>
<ScriptType>all</ScriptType>
<Syntax>void curl.reset.errorbuffer( )</Syntax>
<Description>Clear the error buffer.</Description>
<HelpID>/progguide/functions_cURL/curl.reset.errorbuffer</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.reset</Name>
<ScriptType>all</ScriptType>
<Syntax>void curl.reset( )</Syntax>
<Description>Resets all options.</Description>
<HelpID>/progguide/functions_cURL/curl.reset</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.setopt.postperform.cas.serviceresponse</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.setopt.postperform.cas.serviceresponse( )</Syntax>
<Description/>
<HelpID>/progguide/functions_cURL/curl.setopt.postperform.cas.serviceresponse</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.setopt.url.cas.proxyvalidate</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.setopt.url.cas.proxyvalidate( const string CasServerURL , const string Service , const string Ticket  [, const string PgtURL]  [, long Renew] )</Syntax>
<Description>...</Description>
<HelpID>/progguide/functions_cURL/curl.setopt.url.cas.proxyvalidate</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.setopt.url.cas.servicevalidate</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.setopt.url.cas.servicevalidate( const string CasServerURL , const string Service , const string Ticket  [, const string PgtURL]  [, long Renew] )</Syntax>
<Description>...</Description>
<HelpID>/progguide/functions_cURL/curl.setopt.url.cas.servicevalidate</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.setopt</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.setopt( )</Syntax>
<Description>This isn't the actual function. This help topic lists all curl.setopt functions.</Description>
<HelpID>/progguide/functions_cURL/curl.setopt</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.slist.append</Name>
<ScriptType>all</ScriptType>
<Syntax>void curl.slist.append( const string SomeText )</Syntax>
<Description>curl.slist.append() appends a specified string to a linked list of strings. The existing list should be passed as the first argument while the new list is returned from this function. The specified string has been appended when this function returns. The list should be freed again (after usage) with curl.slist.free.all().</Description>
<HelpID>/progguide/functions_cURL/curl.slist</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.sso.get.ssolocation$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.sso.get.ssolocation$( )</Syntax>
<Description>...</Description>
<HelpID>/progguide/functions_cURL/curl.sso.get.ssolocation$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.sso.user.encode$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.sso.user.encode$( const string User )</Syntax>
<Description>...</Description>
<HelpID>/progguide/functions_cURL/curl.sso.user.encode$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.sso.user.gettable</Name>
<ScriptType>all</ScriptType>
<Syntax>void curl.sso.user.gettable( ref string(2,128) EscapeTable )</Syntax>
<Description>Returns a string array with an escapetable.</Description>
<HelpID>/progguide/functions_cURL/curl.sso.user.gettable</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.strerror$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.strerror$( long CurlCode )</Syntax>
<Description>Descriptive message on result of previous action</Description>
<HelpID>/progguide/functions_cURL/curl.strerror$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.upload.data</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.upload.data( const string url , const string data , long data.size , long response.stream  [, long header.list]  [, const string method] )</Syntax>
<Description>Uploads binary data to the specified url.</Description>
<HelpID>/progguide/functions_cURL/curl.upload.data</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.upload.file</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.upload.file( const string url , const string file , long response.stream  [, long header.list]  [, const string method] )</Syntax>
<Description>Uploads a file to the specified url.</Description>
<HelpID>/progguide/functions_cURL/curl.upload.file</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.upload.stream</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.upload.stream( const string url , long request.stream , long data.size , long response.stream  [, long header.list]  [, const string method] )</Syntax>
<Description>Uploads data from a stream (a file or a memory stream) to the specified url.</Description>
<HelpID>/progguide/functions_cURL/curl.upload.stream</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.upload.string</Name>
<ScriptType>all</ScriptType>
<Syntax>long curl.upload.string( const string url , const string data , long response.stream  [, long header.list]  [, const string method] )</Syntax>
<Description>Uploads a (null terminated) string to the specified url.</Description>
<HelpID>/progguide/functions_cURL/curl.upload.string</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.xml.get.error$</Name>
<ScriptType>all</ScriptType>
<Syntax>string curl.xml.get.error$( )</Syntax>
<Description>...</Description>
<HelpID>/progguide/functions_cURL/curl.xml.get.error$</HelpID>
</Function>
<Function Deprecated="no">
<Name>curl.xml.set.whitespacehandling</Name>
<ScriptType>all</ScriptType>
<Syntax>void curl.xml.set.whitespacehandling( long WhiteSpaceHandling )</Syntax>
<Description>...</Description>
<HelpID>/progguide/functions_cURL/curl.xml.set.whitespacehandling</HelpID>
</Function>
<Function Deprecated="no">
<Name>copy.cdf</Name>
<ScriptType>all</ScriptType>
<Syntax>long copy.cdf( long src.table.id , long dest.table.id )</Syntax>
<Description>This function facilitates thet application in the task of carrying forward the information in the CDFs through the business process. The function will copy CDFs from a source record buffer to a destnation record buffer if (1) the destination table has a CDF with the same name and (2) the value in the destination record buffer is empty.</Description>
<HelpID>/progguide/functions_cdf/copy.cdf</HelpID>
</Function>
<Function Deprecated="yes">
<Name>bg$</Name>
<ScriptType>all</ScriptType>
<Syntax>string bg$( )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/bg</HelpID>
</Function>
<Function Deprecated="yes">
<Name>box</Name>
<ScriptType>all</ScriptType>
<Syntax>void box( long box_x , long box_y , long box_width , long box_height , long mode )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/box</HelpID>
</Function>
<Function Deprecated="yes">
<Name>bs$</Name>
<ScriptType>all</ScriptType>
<Syntax>string bs$(  [long num_expr] )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/bs</HelpID>
</Function>
<Function Deprecated="yes">
<Name>cf$</Name>
<ScriptType>all</ScriptType>
<Syntax>string cf$( long attribute_code )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/cf</HelpID>
</Function>
<Function Deprecated="yes">
<Name>change.window</Name>
<ScriptType>all</ScriptType>
<Syntax>void change.window( long wind_id )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/change.window</HelpID>
</Function>
<Function Deprecated="yes">
<Name>cl.screen</Name>
<ScriptType>all</ScriptType>
<Syntax>void cl.screen( long column , long row , long no_of_cols , long no_of_rows )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/cl.screen</HelpID>
</Function>
<Function Deprecated="yes">
<Name>cp$</Name>
<ScriptType>all</ScriptType>
<Syntax>string cp$( long column , long row )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/cp</HelpID>
</Function>
<Function Deprecated="yes">
<Name>cr$</Name>
<ScriptType>all</ScriptType>
<Syntax>string cr$( )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/cr</HelpID>
</Function>
<Function Deprecated="yes">
<Name>cs$</Name>
<ScriptType>all</ScriptType>
<Syntax>string cs$(  [long num_expr] )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/cs</HelpID>
</Function>
<Function Deprecated="yes">
<Name>current.window</Name>
<ScriptType>all</ScriptType>
<Syntax>long current.window( )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/current.window</HelpID>
</Function>
<Function Deprecated="yes">
<Name>data.input</Name>
<ScriptType>all</ScriptType>
<Syntax>void data.input( string options(.) , ref string result(.) , string default(.) , ref long event(EVTMAXSIZE) , ref long char_value )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/data.input</HelpID>
</Function>
<Function Deprecated="yes">
<Name>del.window</Name>
<ScriptType>all</ScriptType>
<Syntax>void del.window( long wind_id )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/del.window</HelpID>
</Function>
<Function Deprecated="yes">
<Name>delch$</Name>
<ScriptType>all</ScriptType>
<Syntax>string delch$( long num_expr )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/delch</HelpID>
</Function>
<Function Deprecated="yes">
<Name>deleteln$</Name>
<ScriptType>all</ScriptType>
<Syntax>string deleteln$( long num_expr )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/deleteln</HelpID>
</Function>
<Function Deprecated="yes">
<Name>el$</Name>
<ScriptType>all</ScriptType>
<Syntax>string el$( )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/el</HelpID>
</Function>
<Function Deprecated="yes">
<Name>es$</Name>
<ScriptType>all</ScriptType>
<Syntax>string es$( )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/es</HelpID>
</Function>
<Function Deprecated="yes">
<Name>ff$</Name>
<ScriptType>all</ScriptType>
<Syntax>string ff$( )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/ff</HelpID>
</Function>
<Function Deprecated="yes">
<Name>fg$</Name>
<ScriptType>all</ScriptType>
<Syntax>string fg$( long color )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/fg</HelpID>
</Function>
<Function Deprecated="yes">
<Name>first.window</Name>
<ScriptType>all</ScriptType>
<Syntax>void first.window( long wind_id )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/first.window</HelpID>
</Function>
<Function Deprecated="yes">
<Name>fs$</Name>
<ScriptType>all</ScriptType>
<Syntax>string fs$(  [long num_expr] )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/fs</HelpID>
</Function>
<Function Deprecated="yes">
<Name>get.col</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.col( )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/get.col</HelpID>
</Function>
<Function Deprecated="yes">
<Name>get.cp</Name>
<ScriptType>all</ScriptType>
<Syntax>void get.cp( ref long x , ref long y )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/get.cp</HelpID>
</Function>
<Function Deprecated="yes">
<Name>get.row</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.row( )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/get.row</HelpID>
</Function>
<Function Deprecated="yes">
<Name>get.window.attrs</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.window.attrs( long wind_id , ref long attrs(WINMAXSIZE) )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/get.window.attrs</HelpID>
</Function>
<Function Deprecated="yes">
<Name>insch$</Name>
<ScriptType>all</ScriptType>
<Syntax>string insch$( string attr )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/insch</HelpID>
</Function>
<Function Deprecated="yes">
<Name>insertln$</Name>
<ScriptType>all</ScriptType>
<Syntax>string insertln$( string string_expr )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/insertln</HelpID>
</Function>
<Function Deprecated="yes">
<Name>keyin$</Name>
<ScriptType>all</ScriptType>
<Syntax>string keyin$(  [long flag] )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/keyin</HelpID>
</Function>
<Function Deprecated="yes">
<Name>last.window</Name>
<ScriptType>all</ScriptType>
<Syntax>void last.window( long wind_id )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/last.window</HelpID>
</Function>
<Function Deprecated="yes">
<Name>lf$</Name>
<ScriptType>all</ScriptType>
<Syntax>string lf$(  [long num_expr] )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/lf</HelpID>
</Function>
<Function Deprecated="yes">
<Name>map.window</Name>
<ScriptType>all</ScriptType>
<Syntax>void map.window( long wind_id )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/map.window</HelpID>
</Function>
<Function Deprecated="yes">
<Name>mark.handler</Name>
<ScriptType>4GL</ScriptType>
<Syntax>long mark.handler( ref long mark.table() )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/mark.handler</HelpID>
</Function>
<Function Deprecated="yes">
<Name>move.window</Name>
<ScriptType>all</ScriptType>
<Syntax>void move.window( long col , long row )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/move.window</HelpID>
</Function>
<Function Deprecated="yes">
<Name>new.window</Name>
<ScriptType>all</ScriptType>
<Syntax>long new.window( long height , long width , long row , long col )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/newwindow</HelpID>
</Function>
<Function Deprecated="yes">
<Name>no.scroll</Name>
<ScriptType>all</ScriptType>
<Syntax>void no.scroll( long wind_id )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/no.scroll</HelpID>
</Function>
<Function Deprecated="yes">
<Name>pc$</Name>
<ScriptType>all</ScriptType>
<Syntax>string pc$( long num_expr )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/pc</HelpID>
</Function>
<Function Deprecated="yes">
<Name>pf$</Name>
<ScriptType>all</ScriptType>
<Syntax>string pf$( long num_expr )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/pf</HelpID>
</Function>
<Function Deprecated="yes">
<Name>refresh</Name>
<ScriptType>all</ScriptType>
<Syntax>void refresh(  [long wind_id] )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/refresh</HelpID>
</Function>
<Function Deprecated="yes">
<Name>resize.window</Name>
<ScriptType>all</ScriptType>
<Syntax>void resize.window( long width , long height )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/resize.window</HelpID>
</Function>
<Function Deprecated="yes">
<Name>scroll</Name>
<ScriptType>all</ScriptType>
<Syntax>void scroll( long wind_id )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/scroll</HelpID>
</Function>
<Function Deprecated="yes">
<Name>set.fg.color</Name>
<ScriptType>all</ScriptType>
<Syntax>void set.fg.color( long wind_id , long color )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/set.fg.color</HelpID>
</Function>
<Function Deprecated="yes">
<Name>set.bg.color</Name>
<ScriptType>all</ScriptType>
<Syntax>void set.bg.color( long wind_id , long color )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/setbgcolor</HelpID>
</Function>
<Function Deprecated="yes">
<Name>sf$</Name>
<ScriptType>all</ScriptType>
<Syntax>void sf$( long num_expr )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/sf</HelpID>
</Function>
<Function Deprecated="yes">
<Name>sub.window</Name>
<ScriptType>all</ScriptType>
<Syntax>long sub.window( long parent_wind , long height , long width , long row , long col )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/sub.window</HelpID>
</Function>
<Function Deprecated="yes">
<Name>tab$</Name>
<ScriptType>all</ScriptType>
<Syntax>string tab$( long num_expr )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/tab</HelpID>
</Function>
<Function Deprecated="yes">
<Name>unmap.window</Name>
<ScriptType>all</ScriptType>
<Syntax>void unmap.window( long wind_id )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/unmapwindow</HelpID>
</Function>
<Function Deprecated="yes">
<Name>wrebuild</Name>
<ScriptType>all</ScriptType>
<Syntax>void wrebuild( long mode )</Syntax>
<Description>Deprecated. This function is only supported for character-based windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_char_b_win/wrebuild</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.axis.in</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.axis.in( long axis_name , long logarithmic , long log_base , long divisions , double divisionstep , double intersection , string division_set(16) )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.axis.in</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.axis.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.axis.out( long axis_name , ref long logarithmic , ref long log_base , ref long divisions , ref double divisionstep , ref double intersection , ref string division_set() )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.axis.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.chartman</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.chartman( long chart_manager(80) , string title(80) , string user(14) , string owner(14)  [, string version(4)]  [, string release(2)]  [, string cust(4)] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.chartman</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.check</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.check( sting chart_manager(14) , string user(14) , string chart_type(16) )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.check</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.data.in</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.data.in( double series_value , double category_value , long data_number , double data_value , long footnote_no  [, long duplicate_option] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.data.in</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.data2domain.in</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.data2domain.in( double series_value )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.data2domain.in</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.delete.data</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.delete.data( )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.delete.data</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.delete.data2domains</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.delete.data2domains( ref double series_value )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.delete.data2domains</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.delete.footnotes</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.delete.footnotes( )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.delete.footnotes</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.delete.projections</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.delete.projections( )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.delete.projections</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.delete.sets</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.delete.sets( )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.delete.sets</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.disconnect</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.disconnect( )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.disconnect</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.domain.in</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.domain.in( long domain_name , long data_type , string set_name(16) , string title(16) , string unit_label(16) , double from_value , double to_value , double interval , string display_format(80) )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.domain.in</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.domain.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.domain.out( long domain_name , ref long data_type , ref string set_name() , ref string title() , ref string unit_label , ref double from value , ref double to_value , ref double interval , ref string display_format() )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.domain.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.draw</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.draw(  [double cat_from_value] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.draw</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.first.data.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.first.data.out( long option , ref double series_value , ref double category_value , ref long data_number , ref double data_value , ref long footnote_no )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.first.data.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.first.data2domain.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.first.data2domain.out( ref double series_value )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.first.data2domain.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.first.footnote.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.first.footnote.out( ref long footnote_no , ref string footnote_text() )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.first.footnote.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.first.projection.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.first.projection.out( ref double projection_point , ref long footnote_no )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.first.projection.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.first.set.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.first.set.out( string set_name(16) , ref long element_number , ref string element_name() )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.first.set.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.footnote.in</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.footnote.in( long footnoote_no , string footnote_text(80) )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.footnote.in</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.get.request</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.get.request( long chart_no , ref double category_from_value , ref double category_to_value )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.get.request</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.new</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.new( string chart_name(16) , ref string chart_type() )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.new</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.next.data.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.next.data.out( long option , ref double series_value , ref double category_value , ref long data_number , ref double data_value , ref long footnote_no )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.next.data.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.next.data2domain.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.next.data2domain.out( ref double series_value )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.next.data2domain.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.next.footnote.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.next.footnote.out( ref long footnote_no , ref string footnote_text() )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.next.footnote.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.next.projection.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.next.projection.out( ref double projeection_point , ref long footnote_no )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.next.projection.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.next.set.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.next.set.out( string set_name(16) , ref long element_number , ref string element_name() )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.next.set.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.open</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.open( string chart_name(16) )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.open</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.projection.in</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.projection.in( double projection_point , long footnote_no )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.projection.in</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.remove</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.remove( string chart_manager(80) , string owner_from(14) , string ower_to(14) )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.remove</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.scale.axis</Name>
<ScriptType>all</ScriptType>
<Syntax>void chm.scale.axis( double from_value , double to_value , long divisions , double factor , ref double domain_from_value , ref double domain_to_value , ref double divisionstep )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.scale.axis</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.select</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.select( string chart_manager(80) , string title(80) , long mode , string user(14) , string owner(14) , ref string chart_name(16) , ref string chart_type(16) )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.select</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.set.in</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.set.in( string set_name(16) , ref long element_number , string element_name(80) )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.set.in</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.set.option</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.set.option( long option , long flag )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.set.option</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.set.timer</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.set.timer( long time )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.set.timer</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.title.in</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.title.in( string main_title(80) , string sub_title(80) )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.title.in</HelpID>
</Function>
<Function Deprecated="yes">
<Name>chm.title.out</Name>
<ScriptType>all</ScriptType>
<Syntax>long chm.title.out( ref string main_title() , ref string sub_title() )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_chm/chm.title.out</HelpID>
</Function>
<Function Deprecated="yes">
<Name>app_start</Name>
<ScriptType>all</ScriptType>
<Syntax>long app_start( string commandline , string directory , string stdin , string stdout , string stderr )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated. Instead you should use function: start.application.local().</Description>
<HelpID>/progguide/functions_client_file_access/app_start</HelpID>
</Function>
<Function Deprecated="yes">
<Name>app_status</Name>
<ScriptType>all</ScriptType>
<Syntax>long app_status( long app.id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated. Instead you should use function: start.application.local().</Description>
<HelpID>/progguide/functions_client_file_access/app_status</HelpID>
</Function>
<Function Deprecated="no">
<Name>client2server</Name>
<ScriptType>all</ScriptType>
<Syntax>long client2server( string source , string dest , boolean text.mode  [, boolean rm.file]  [, boolean progress.window] )</Syntax>
<Description>This copies a specified file from the client to the server.</Description>
<HelpID>/progguide/functions_client_file_access/client2server</HelpID>
</Function>
<Function Deprecated="no">
<Name>color.dialog</Name>
<ScriptType>all</ScriptType>
<Syntax>void color.dialog( ref long io.color )</Syntax>
<Description>This shows a color selection dialog, to allow the user to select a color. The selected color is then reported back to the application when the dialog box exits.</Description>
<HelpID>/progguide/functions_client_file_access/color.dialog</HelpID>
</Function>
<Function Deprecated="no">
<Name>create.local.directory</Name>
<ScriptType>all</ScriptType>
<Syntax>long create.local.directory( string dirent )</Syntax>
<Description>This creates a specified directory on a client system. You must have write permission in the parent directory to do this. Access permissions for the new directory are set to read and write for all users.</Description>
<HelpID>/progguide/functions_client_file_access/create.local.directory</HelpID>
</Function>
<Function Deprecated="no">
<Name>create.local.file</Name>
<ScriptType>all</ScriptType>
<Syntax>long create.local.file( string filename )</Syntax>
<Description>This creates a specified file on a client system. You must have write permission in the parent directory to do this. Access permissions for the new file are set to read and write, for all users. When the file does already exist, it will be truncated.</Description>
<HelpID>/progguide/functions_client_file_access/create.local.file</HelpID>
</Function>
<Function Deprecated="no">
<Name>dir.select.dialog.local</Name>
<ScriptType>all</ScriptType>
<Syntax>long dir.select.dialog.local( ref string dirname )</Syntax>
<Description>This shows the Windows Browse For Folder dialog, to allow the user to select one new or existing folder (directory) on the client.</Description>
<HelpID>/progguide/functions_client_file_access/dir.select.dialog.local</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.client.hostname</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.client.hostname( ref string hostname )</Syntax>
<Description>This returns the hostname of the local client (if available). In case of Baan Windows this is the client machine on which BW is running. In case of WebUI, this is the client machine on which the Internet Browser is running.</Description>
<HelpID>/progguide/functions_client_file_access/get.client.hostname</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.client.ip.address</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.client.ip.address( ref string ip.address )</Syntax>
<Description>Get the IP address of the local client. In case of Baan Windows this is the client machine on which BW is running. In case of WebUI, this is the client machine on which the Internet Browser is running</Description>
<HelpID>/progguide/functions_client_file_access/get.client.ip.address</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.client.timezone</Name>
<ScriptType>all</ScriptType>
<Syntax>string get.client.timezone( )</Syntax>
<Description>This returns the current Windows Timezone name of the local client (if available). In case of Baan Windows this is the client machine on which BW is running. In case of WebUI, this is the client machine on which the Internet Browser is running when running on a Windows system. When then client runs on a non-Widows operating system an empty string is returned.</Description>
<HelpID>/progguide/functions_client_file_access/get.client.timezone</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.local.filename</Name>
<ScriptType>all</ScriptType>
<Syntax>string get.local.filename( )</Syntax>
<Description>This function returns the last client filename used by the function server2client() or client2server(). When the last server2client() or client2server() function failed, this function will return an empty string.</Description>
<HelpID>/progguide/functions_client_file_access/get.local.filename</HelpID>
</Function>
<Function Deprecated="no">
<Name>open.url.local</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean open.url.local( string url , long mode  [, string dialog.title]  [, string dialog.message]  [, string browser.title] )</Syntax>
<Description>This function opens a URL in an (embedded) browser. This function is only supported in the WebUI.</Description>
<HelpID>/progguide/functions_client_file_access/open.url.local</HelpID>
</Function>
<Function Deprecated="no">
<Name>remove.local.directory</Name>
<ScriptType>all</ScriptType>
<Syntax>long remove.local.directory( string dirent )</Syntax>
<Description>This deletes a specified directory on the client system.</Description>
<HelpID>/progguide/functions_client_file_access/remove.local.directory</HelpID>
</Function>
<Function Deprecated="no">
<Name>remove.local.file</Name>
<ScriptType>all</ScriptType>
<Syntax>void remove.local.file( string filename )</Syntax>
<Description>This deletes a specified file on the client system.</Description>
<HelpID>/progguide/functions_client_file_access/remove.local.file</HelpID>
</Function>
<Function Deprecated="yes">
<Name>seq.close.local</Name>
<ScriptType>all</ScriptType>
<Syntax>void seq.close.local( long lfn )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated. Instead you should use functions: server2client() or client2server().</Description>
<HelpID>/progguide/functions_client_file_access/seq.close.local</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.fstat.local</Name>
<ScriptType>all</ScriptType>
<Syntax>long seq.fstat.local( string filename , ref long nr.bytes )</Syntax>
<Description>This retrieves information about a specified file on a client system.</Description>
<HelpID>/progguide/functions_client_file_access/seq.fstat.local</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.open.dialog.local</Name>
<ScriptType>all</ScriptType>
<Syntax>long seq.open.dialog.local( boolean mselect , string defaultname , string directory , string filter , ref string filename )</Syntax>
<Description>This shows the Windows file-open dialog, to allow the user to select one or more local files.</Description>
<HelpID>/progguide/functions_client_file_access/seq.open.dialog.local</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.open.dialog.next</Name>
<ScriptType>all</ScriptType>
<Syntax>long seq.open.dialog.next( ref string filename )</Syntax>
<Description>Retrieve the next full pathname of the file selected by the user in a previous seq.open.dialog.local() function. This function should only be used when a previous call to seq.open.dialog.local() returned a value greater than 1.</Description>
<HelpID>/progguide/functions_client_file_access/seq.open.dialog.next</HelpID>
</Function>
<Function Deprecated="yes">
<Name>seq.open.local</Name>
<ScriptType>all</ScriptType>
<Syntax>long seq.open.local( string filename , string mode(2)  [, long remove.after.use] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated. Instead you should use functions: server2client() or client2server().</Description>
<HelpID>/progguide/functions_client_file_access/seq.open.local</HelpID>
</Function>
<Function Deprecated="yes">
<Name>seq.read.local</Name>
<ScriptType>all</ScriptType>
<Syntax>long seq.read.local( ref string buf , ref long size , long lfn )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated. Instead you should use function: client2server().</Description>
<HelpID>/progguide/functions_client_file_access/seq.read.local</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.saveas.dialog.local</Name>
<ScriptType>all</ScriptType>
<Syntax>long seq.saveas.dialog.local( string defaultname , string directory , string filter , ref string filename )</Syntax>
<Description>This shows the Windows file save-as dialog, to allow the user to select a new or existing local file to be saved.</Description>
<HelpID>/progguide/functions_client_file_access/seq.saveas.dialog.local</HelpID>
</Function>
<Function Deprecated="yes">
<Name>seq.write.local</Name>
<ScriptType>all</ScriptType>
<Syntax>long seq.write.local( long buf , long size , long lfn )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated. Instead you should use function: server2client().</Description>
<HelpID>/progguide/functions_client_file_access/seq.write.local</HelpID>
</Function>
<Function Deprecated="no">
<Name>server2client</Name>
<ScriptType>all</ScriptType>
<Syntax>long server2client( string source , string dest , boolean text.mode  [, boolean progress.window]  [, boolean read.only] )</Syntax>
<Description>This copies a specified file from the server to the client.</Description>
<HelpID>/progguide/functions_client_file_access/server2client</HelpID>
</Function>
<Function Deprecated="no">
<Name>start.application.local</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean start.application.local( string commandline , boolean waitFlag , ref long exitCode  [, const string verb] )</Syntax>
<Description>This starts the client application specified in the commandline argument.</Description>
<HelpID>/progguide/functions_client_file_access/start.application.local</HelpID>
</Function>
<Function Deprecated="no">
<Name>blue.component</Name>
<ScriptType>all</ScriptType>
<Syntax>long blue.component( long color )</Syntax>
<Description>These return the values of the blue, green, and red components respectively of an rgb color.</Description>
<HelpID>/progguide/functions_color/color.component</HelpID>
</Function>
<Function Deprecated="no">
<Name>geen.component</Name>
<ScriptType>all</ScriptType>
<Syntax>long geen.component( long color )</Syntax>
<Description>These return the values of the blue, green, and red components respectively of an rgb color.</Description>
<HelpID>/progguide/functions_color/color.component</HelpID>
</Function>
<Function Deprecated="no">
<Name>red.component</Name>
<ScriptType>all</ScriptType>
<Syntax>long red.component( long color )</Syntax>
<Description>These return the values of the blue, green, and red components respectively of an rgb color.</Description>
<HelpID>/progguide/functions_color/color.component</HelpID>
</Function>
<Function Deprecated="no">
<Name>rgb</Name>
<ScriptType>all</ScriptType>
<Syntax>long rgb( long red , long green , long blue )</Syntax>
<Description>Use this to compose a color by specifying its red, green, and blue intensities. The intensities must be in the range 0 to 255.</Description>
<HelpID>/progguide/functions_color/rgb</HelpID>
</Function>
<Function Deprecated="no">
<Name>compnr.check</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean compnr.check( long new_compnr )</Syntax>
<Description>This switches to another company and sets the read-only variable COMPNR to the specified company number. It checks whether the user is authorized for the new company, and switches company only if so.</Description>
<HelpID>/progguide/functions_company_operations/compnr.check</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.appl.data.company</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.appl.data.company( string package(2) , string application.id(30) )</Syntax>
<Description>This function read the application data company for a user. First a search for the setting of the current user is done. If there is no setting for the current user available, the generic settings for the environment is read.</Description>
<HelpID>/progguide/functions_company_operations/get.appl.data.company</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.company</Name>
<ScriptType>all</ScriptType>
<Syntax>string get.company( )</Syntax>
<Description>This returns the name of the current company.</Description>
<HelpID>/progguide/functions_company_operations/get.company</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.compnr</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.compnr( )</Syntax>
<Description>This returns the ID number of the current company.</Description>
<HelpID>/progguide/functions_company_operations/get.compnr</HelpID>
</Function>
<Function Deprecated="no">
<Name>switch.to.company</Name>
<ScriptType>all</ScriptType>
<Syntax>long switch.to.company( long new_compnr )</Syntax>
<Description>This switches to another company and sets the read-only variable COMPNR to the specified company number. It performs several checks before switching company and switches company only if the checks are successful. For example, it checks if the user is authorized to change to the new company, it checks if the package combination linked to the old company contains the same package VRC's as the package combination linked to the new company, and it checks if the old and new companies have the same first day of the week.</Description>
<HelpID>/progguide/functions_company_operations/switch.to.company</HelpID>
</Function>
<Function Deprecated="no">
<Name>cps.add.child</Name>
<ScriptType>3GL</ScriptType>
<Syntax>long cps.add.child( const string session.code , long bars , const string title , long splitpane )</Syntax>
<Description>Add a child session to this controller, which will be shown and started in the frame of the composite controller. This session will be shown in the passed split pane. To a split pane exactly two objects must be added: sessions and/or split panes. The order of adding these objects to the split pane determines the order on the screen (left/right or top/bottom).</Description>
<HelpID>/progguide/functions_composite_sessions/cps.add.child</HelpID>
</Function>
<Function Deprecated="no">
<Name>cps.create.splitpane</Name>
<ScriptType>3GL</ScriptType>
<Syntax>long cps.create.splitpane( long orientation , long divider  [, long splitpane] )</Syntax>
<Description>Create a split pane which can either hold another split pane or a child session. There can only be one top-level split pane created. This function may not be called before the call to cps.init()</Description>
<HelpID>/progguide/functions_composite_sessions/cps.create.splitpane</HelpID>
</Function>
<Function Deprecated="no">
<Name>cps.init</Name>
<ScriptType>3GL</ScriptType>
<Syntax>long cps.init( )</Syntax>
<Description>Initialize the Composite Session Controller. This must be the first cps function called by the 3GL-Script. When this session was started from a parent session in modeless mode, this function will reactive the parent session. So any imports which must be done by this session from the parent should be done before this function is called.</Description>
<HelpID>/progguide/functions_composite_sessions/cps.init</HelpID>
</Function>
<Function Deprecated="no">
<Name>cps.start</Name>
<ScriptType>3GL</ScriptType>
<Syntax>void  cps.start( )</Syntax>
<Description>Activates the Composite Session Controller and the related child sessions. This function will only return when the user decides to close this composite session.</Description>
<HelpID>/progguide/functions_composite_sessions/cps.start</HelpID>
</Function>
<Function Deprecated="no">
<Name>cps.status.mess</Name>
<ScriptType>4GL/GBF</ScriptType>
<Syntax>void  cps.status.mess( const string message )</Syntax>
<Description>This function displays the specified message in the status bar of a composite session. To clear this message, an empty message string must be passed. This function can be called from composite child sessions (GBF or 4GL). When this function is called from other session types, it will do nothing.</Description>
<HelpID>/progguide/functions_composite_sessions/cps.status.mess</HelpID>
</Function>
<Function Deprecated="no">
<Name>enable.drag</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void enable.drag( )</Syntax>
<Description>Enable dragging objects from this 4GL-session to other sessions. This function must be called from the before.program:section or from the after.form.read: section of a multi-occurrence 4GL-Session which runs as a composite child.</Description>
<HelpID>/progguide/functions_composite_sessions/enable.drag</HelpID>
</Function>
<Function Deprecated="no">
<Name>enable.drop</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void enable.drop( const string session.code , const string on.drop.function )</Syntax>
<Description>Allow drop operation onto this 4GL-Session from objects dragged from the indicated sessions. When an object from the indicated session is dropped, the function passed in string on.drop.function will be called. This function can be called more than once in order to allow drop operations from different sessions. This function must be called from the before.program:section or from the after.form.read: section of a multi-occurrence 4GL-Session which runs as a composite child.</Description>
<HelpID>/progguide/functions_composite_sessions/enable.drop</HelpID>
</Function>
<Function Deprecated="no">
<Name>is.composite.child</Name>
<ScriptType>4GL/GBF</ScriptType>
<Syntax>boolean is.composite.child( )</Syntax>
<Description>This function checks whether the current session is running as a composite child session or not. This function can be useful when a session can be run in standalone mode and as a child within a composite session. This function can be called from a 4GL-Session or from a GBF session.</Description>
<HelpID>/progguide/functions_composite_sessions/is.composite.child</HelpID>
</Function>
<Function Deprecated="no">
<Name>on.drop</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void on.drop( long from.pid , long collection , boolean copy )</Syntax>
<Description>Call back function which is passed in function enable.drop(). This function will be called when a drop event from the associated session arrives. In this function the business logic related to the drop operation must be implemented. In case database table updates are done in this function, the function must also commit the transaction.</Description>
<HelpID>/progguide/functions_composite_sessions/on.drop</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.currencies</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void set.currencies( long seqno , string currency(3)  [, string currency.desc mb] )</Syntax>
<Description>Use this function to create and fill the multicurrency table. The function inserts a single entry in the table. Currency rotation is based on the order of currencies in this table. Make sure that all the indices of the table (seqno) form a consecutive range, starting at 1</Description>
<HelpID>/progguide/functions_currency_tables/set.currencies</HelpID>
</Function>
<Function Deprecated="no">
<Name>after.abort.transaction</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void after.abort.transaction( )</Syntax>
<Description>This hook is called after the application did an abort.io() in the UI script from the after.choice of the choice.update.db section</Description>
<HelpID>/progguide/functions_dal/after.abort.transaction</HelpID>
</Function>
<Function Deprecated="no">
<Name>after.change.object</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long after.change.object( )</Syntax>
<Description>This hook is called after the current record has been changed, but not yet updated in the database. It marks the end of changing the current record.</Description>
<HelpID>/progguide/functions_dal/after.change.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>after.commit.transaction</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void after.commit.transaction( )</Syntax>
<Description>Use this to update other database tables after an update of the current table has been committed to the database.</Description>
<HelpID>/progguide/functions_dal/after.commit.transaction</HelpID>
</Function>
<Function Deprecated="no">
<Name>after.destroy.object</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long after.destroy.object( )</Syntax>
<Description>Use this to update referenced tables after the current object has been deleted.</Description>
<HelpID>/progguide/functions_dal/after.destroy.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>after.get.object</Name>
<ScriptType>DAL</ScriptType>
<Syntax>extern long after.get.object( long direction )</Syntax>
<Description>Use this to program checks that determine whether reading a record is permitted. The checks are performed after the record has been retrieved from the database. The dir argument is set by the STP and specifies the object being read. The possible values are:</Description>
<HelpID>/progguide/functions_dal/after.get.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>after.new.object</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long after.new.object( )</Syntax>
<Description>This hook is called after a new record has been created, but not yet saved in the database. It marks the end of creating a new record.</Description>
<HelpID>/progguide/functions_dal/after.new.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>after.save.object</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long after.save.object( long mode )</Syntax>
<Description>Use this to update referenced tables after a record has been added or updated. The mode argument is set by the 4GL engine. The possible values are:</Description>
<HelpID>/progguide/functions_dal/after.save.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>before.change.object</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long before.change.object( )</Syntax>
<Description>This hook is called when the current record is about to be changed/modified. It marks the start of modifying the record.</Description>
<HelpID>/progguide/functions_dal/before.change.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>before.destroy.object</Name>
<ScriptType>DAL</ScriptType>
<Syntax>function extern long before.destroy.object( )</Syntax>
<Description>Use this to program checks that determine whether deleting a record is permitted.</Description>
<HelpID>/progguide/functions_dal/before.destroy.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>before.get.object</Name>
<ScriptType>DAL</ScriptType>
<Syntax>function extern long before.get.object( long direction )</Syntax>
<Description>Use this to program checks that determine whether reading a record is permitted. The argument is set by the STP or CDAS and specifies the object being read. The possible values are:</Description>
<HelpID>/progguide/functions_dal/before.get.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>before.new.object</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long before.new.object( )</Syntax>
<Description>This hook is called when a new record is about to be created. It marks the start of creating a new record.</Description>
<HelpID>/progguide/functions_dal/before.new.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>before.open.object.set</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long before.open.object.set( )</Syntax>
<Description>Use this to program checks that determine whether opening of the object set is permitted.</Description>
<HelpID>/progguide/functions_dal/before.open.object.set</HelpID>
</Function>
<Function Deprecated="no">
<Name>before.save.object</Name>
<ScriptType>DAL</ScriptType>
<Syntax>function extern long before.save.object( long mode )</Syntax>
<Description>Use this to program checks that determine whether saving a record is permitted. The mode argument is set by the 4GL engine. The possible values are:</Description>
<HelpID>/progguide/functions_dal/before.save.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>business.method.is.allowed</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean business.method.is.allowed( )</Syntax>
<Description>Use this hook to check if the business method may be executed. If the business method may not be executed, then the 4GL engine will disable the corresponding form command on the UI.</Description>
<HelpID>/progguide/functions_dal/business.method.is.allowed</HelpID>
</Function>
<Function Deprecated="no">
<Name>business.method.is.never.allowed</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean business.method.is.never.allowed( )</Syntax>
<Description>Use this hook to check if the business method may never be executed. If the business method may never be executed, then the 4GL engine will remove the corresponding form command from the UI.</Description>
<HelpID>/progguide/functions_dal/business.method.is.never.allowed</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.any.parent.changed</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean dal.any.parent.changed( )</Syntax>
<Description>The function dal.any.parent.changed() determines whether any of the fields, from which the current field depends, is changed. This function can only be used in combination with dal.require.field() .</Description>
<HelpID>/progguide/functions_dal/dal.any.parent.changed</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.field.depends.on</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void dal.field.depends.on( const string fieldname , long hook.list , const string parent.fld.name, ...  [, long hook.list]  [, const string parent.fieldname, ...] )</Syntax>
<Description>Use this to define that a field depends on one or more other fields. Dependencies are defined in terms of field hooks.</Description>
<HelpID>/progguide/functions_dal/dal.field.depends.on</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.require.field</Name>
<ScriptType>DAL</ScriptType>
<Syntax> dal.require.field( const string fieldname  [, long element]  [, ref boolean field.changed] )</Syntax>
<Description>This function can be used to determine a specific order for the calls to the update hooks. The function only works properly if update hooks are triggered by the 4GL engine (amdll), and not called from the application itself.</Description>
<HelpID>/progguide/functions_dal/dal.require.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>field.enum.is.applicable</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean field.enum.is.applicable(  [long mode]  [, long element] )</Syntax>
<Description>Use this hook to indicate whether a certain enum constant is applicable. In case the enum constant is not applicable the 4GL engine will not show it in the field's list box, so the end-user cannot select it.</Description>
<HelpID>/progguide/functions_dal/field.enum.is.applicable</HelpID>
</Function>
<Function Deprecated="no">
<Name>field.is.applicable</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean field.is.applicable(  [long mode]  [, long element] )</Syntax>
<Description>Use this hook to indicate whether the field is applicable. If a field is not applicable then the 4GL Engine disables the field and the field will be cleared. Depending on the data type of the field the field's value then becomes:</Description>
<HelpID>/progguide/functions_dal/field.is.applicable</HelpID>
</Function>
<Function Deprecated="no">
<Name>field.is.derived</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean field.is.derived(  [long mode]  [, long element] )</Syntax>
<Description>Use this hook to indicate whether the field is derived. If a field is derived then the 4GL engine makes the field readonly in the UI. The field however, still can have a value.</Description>
<HelpID>/progguide/functions_dal/field.is.derived</HelpID>
</Function>
<Function Deprecated="no">
<Name>field.is.mandatory</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean field.is.mandatory(  [long mode]  [, long element] )</Syntax>
<Description>Use this hook to indicate whether the field is mandatory. If a field is mandatory then it should have a value other than "", 0.0, 0 or empty.</Description>
<HelpID>/progguide/functions_dal/field.is.mandatory</HelpID>
</Function>
<Function Deprecated="no">
<Name>field.is.never.applicable</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean field.is.never.applicable(  [long mode]  [, long element] )</Syntax>
<Description>Use this hook to indicate if the field is never applicable. If a field is never applicable then the 4GL engine will not display the field in the UI (it is made invisible at start up of a session). A field can become never applicable based on a static constraint, like a parameter setting.</Description>
<HelpID>/progguide/functions_dal/field.is.never.applicable</HelpID>
</Function>
<Function Deprecated="no">
<Name>field.is.readonly</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean field.is.readonly(  [long mode]  [, long element] )</Syntax>
<Description>Use this hook to indicate whether the field is readonly. If a field is readonly then the 4GL Engine makes the field readonly in the UI. The field however, still can have a value.</Description>
<HelpID>/progguide/functions_dal/field.is.readonly</HelpID>
</Function>
<Function Deprecated="no">
<Name>field.is.valid</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean field.is.valid(  [long mode]  [, long element] )</Syntax>
<Description>Use this hook to perform any checks not already defined in one of the other field hooks. Some examples:</Description>
<HelpID>/progguide/functions_dal/field.is.valid</HelpID>
</Function>
<Function Deprecated="no">
<Name>field.update</Name>
<ScriptType>DAL</ScriptType>
<Syntax>[void|long] field.update(  [long mode]  [, long element] )</Syntax>
<Description>Use this hook to (re) determine the value of the field based on the current record values. Think of determining defaults and calculating derived values. When using this hook you don't have to use the when.field.changes section in the UI script to update fields.</Description>
<HelpID>/progguide/functions_dal/field.update</HelpID>
</Function>
<Function Deprecated="no">
<Name>field.check</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long field.check( long has_changed  [, long element] )</Syntax>
<Description>Use this hook to program logical integrity rules for a specified field. The function name is ppmmmvss.bbbb.check(), where pp is the package code, mmm is the module code, vss is the table number, and bbbb is the field name.</Description>
<HelpID>/progguide/functions_dal/fieldname.check</HelpID>
</Function>
<Function Deprecated="no">
<Name>field.make.valid</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long field.make.valid( long mode  [, long element] )</Syntax>
<Description>This hook is meant to adjust the field's value before it is checked. You can use it for example to round a field's value.</Description>
<HelpID>/progguide/functions_dal/fieldname.make.valid</HelpID>
</Function>
<Function Deprecated="no">
<Name>field.set.defaults</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long field.set.defaults( long has_changed )</Syntax>
<Description>Use this hook to set defaults based on a specified field. The function name is ppmmmvss.bbbb.check(), where pp is the package code, mmm is the module code, vss is the table number, and bbbb is the field name.</Description>
<HelpID>/progguide/functions_dal/fieldname.set.defaults</HelpID>
</Function>
<Function Deprecated="no">
<Name>method.is.allowed</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean method.is.allowed( long method )</Syntax>
<Description>This is a special hook for handling centralized authorizations. Use it to perform checks that determine whether certain Data Access Methods are permitted for an object. The method argument specifies the method to check.</Description>
<HelpID>/progguide/functions_dal/method.is.allowed</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.object.defaults</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long set.object.defaults( )</Syntax>
<Description>Use this hook to fill a new record with defaults.</Description>
<HelpID>/progguide/functions_dal/set.object.defaults</HelpID>
</Function>
<Function Deprecated="no">
<Name>choose.time.zone.from.list</Name>
<ScriptType>all</ScriptType>
<Syntax>long choose.time.zone.from.list( ref string new.timezone )</Syntax>
<Description>This starts a session where the user can choose a time zone from a list. The function then calls set.timezone() with the time zone selected by the user.</Description>
<HelpID>/progguide/functions_date_time_zones/choose.time.zone.from.list</HelpID>
</Function>
<Function Deprecated="no">
<Name>date.num</Name>
<ScriptType>all</ScriptType>
<Syntax>long date.num( )</Syntax>
<Description>This returns the number of days from 01-01-0001 to the system date.</Description>
<HelpID>/progguide/functions_date_time_zones/date.num</HelpID>
</Function>
<Function Deprecated="no">
<Name>date.to.date</Name>
<ScriptType>all</ScriptType>
<Syntax>long date.to.date( long in_date , long in_time , const string in_zone , const string out_zone , ref long out_date , ref long out_time )</Syntax>
<Description>This converts a date and time in one time zone to the corresponding date and time in a different time zone.</Description>
<HelpID>/progguide/functions_date_time_zones/date.to.date</HelpID>
</Function>
<Function Deprecated="no">
<Name>date.to.inputstr$</Name>
<ScriptType>all</ScriptType>
<Syntax>string date.to.inputstr$( long dayno , string format(7) , long length )</Syntax>
<Description>This converts a specified number of days since 01-01-0001 to a date input string.</Description>
<HelpID>/progguide/functions_date_time_zones/date.to.inputstr</HelpID>
</Function>
<Function Deprecated="no">
<Name>date.to.num</Name>
<ScriptType>all</ScriptType>
<Syntax>long date.to.num( long yearno , long monthno , long month_dayno )</Syntax>
<Description>This returns the number of days since 01-01-0001 for a specified year, month, and day of the month.</Description>
<HelpID>/progguide/functions_date_time_zones/date.to.num</HelpID>
</Function>
<Function Deprecated="no">
<Name>date.to.utc</Name>
<ScriptType>all</ScriptType>
<Syntax>long date.to.utc( long yearno , long monthno , long month_dayno , long hours , long minutes , long seconds )</Syntax>
<Description>This converts the specified local date and time to UTC long format.</Description>
<HelpID>/progguide/functions_date_time_zones/date.to.utc</HelpID>
</Function>
<Function Deprecated="no">
<Name>date.with.timezone.info.to.utc</Name>
<ScriptType>all</ScriptType>
<Syntax>long date.with.timezone.info.to.utc( long yearno , long monthno , long month_dayno , long hours , long minutes , long seconds , long utcdiff )</Syntax>
<Description>This converts the specified local date and time to UTC long format. For this conversion it will NOT use the timezone of the user, but the difference in seconds to UTC as supplied in the variable utcdiff.</Description>
<HelpID>/progguide/functions_date_time_zones/date.with.timezone.info.to.utc</HelpID>
</Function>
<Function Deprecated="no">
<Name>dte$</Name>
<ScriptType>all</ScriptType>
<Syntax>string dte$( )</Syntax>
<Description>This returns the current date and time in the format</Description>
<HelpID>/progguide/functions_date_time_zones/dte</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.time.zone</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.time.zone( ref string time_zone() )</Syntax>
<Description>This returns the current time zone. The program must supply a buffer of size 50 to store the result.</Description>
<HelpID>/progguide/functions_date_time_zones/get.time.zone</HelpID>
</Function>
<Function Deprecated="no">
<Name>input.to.utc</Name>
<ScriptType>all</ScriptType>
<Syntax>long input.to.utc( const string value() , const string format() )</Syntax>
<Description>This converts a local date or local time string to UTC long format.</Description>
<HelpID>/progguide/functions_date_time_zones/input.to.utc</HelpID>
</Function>
<Function Deprecated="no">
<Name>inputstr.to.date</Name>
<ScriptType>all</ScriptType>
<Syntax>long inputstr.to.date( string inputstr(.) , string format(7) )</Syntax>
<Description>This converts a date input string to the number of days since 01-01-0001.</Description>
<HelpID>/progguide/functions_date_time_zones/inputstr.to.date</HelpID>
</Function>
<Function Deprecated="no">
<Name>inputstr.to.utc</Name>
<ScriptType>all</ScriptType>
<Syntax>long inputstr.to.utc( const string date.inputstr() , string date.format(7) , const string time.inputstr() , string time.format(7) )</Syntax>
<Description>This converts the specified local date and time input strings to UTC long format.</Description>
<HelpID>/progguide/functions_date_time_zones/inputstr.to.utc</HelpID>
</Function>
<Function Deprecated="no">
<Name>iso.to.utc</Name>
<ScriptType>all</ScriptType>
<Syntax>long iso.to.utc( const string iso.string )</Syntax>
<Description>This converts a string, representing a time in ISO-8601 format into a utc.</Description>
<HelpID>/progguide/functions_date_time_zones/iso.to.utc</HelpID>
</Function>
<Function Deprecated="no">
<Name>local.to.utc</Name>
<ScriptType>all</ScriptType>
<Syntax>long local.to.utc( long local_days , long local_time , ref long utc  [, ref string local_dst] )</Syntax>
<Description>This converts a local date and time to UTC long format.</Description>
<HelpID>/progguide/functions_date_time_zones/local.to.utc</HelpID>
</Function>
<Function Deprecated="no">
<Name>local.with.timezone.info.to.utc</Name>
<ScriptType>all</ScriptType>
<Syntax>long local.with.timezone.info.to.utc( long local_days , long local_time , ref long utcdiff , ref long utc )</Syntax>
<Description>This converts a local date and time to UTC long format. For the conversion, it will NOT use the timezone of the user, but the difference in seconds to UTC as supplied in the variable utcdiff.</Description>
<HelpID>/progguide/functions_date_time_zones/local.with.timezone.info.to.utc</HelpID>
</Function>
<Function Deprecated="no">
<Name>num.to.date</Name>
<ScriptType>all</ScriptType>
<Syntax>long num.to.date( long dayno , ref long yearno , ref long monthno , ref long month_dayno )</Syntax>
<Description>This converts a specified number of days since 01-01-0001 to the corresponding year, month, and day of the month.</Description>
<HelpID>/progguide/functions_date_time_zones/num.to.date</HelpID>
</Function>
<Function Deprecated="no">
<Name>num.to.date$</Name>
<ScriptType>all</ScriptType>
<Syntax>string num.to.date$( long dayno , long mode )</Syntax>
<Description>This converts a specified number of days since 01-01-0001 to the corresponding date, formatted as a date string. The sequence of day, month, and year in the string depends on the user data settings defined in the data dictionary. The separator character used is also defined in the data dictionary.</Description>
<HelpID>/progguide/functions_date_time_zones/num.to.dates</HelpID>
</Function>
<Function Deprecated="no">
<Name>num.to.week</Name>
<ScriptType>all</ScriptType>
<Syntax>long num.to.week( long dayno , ref long week_dayno , ref long year_dayno , ref long weekno  [, ref long yearno] )</Syntax>
<Description>This converts a specified number of days since 01-01-0001 to the corresponding day of the week, day of the year, and week number of the year.</Description>
<HelpID>/progguide/functions_date_time_zones/num.to.week</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.time.zone</Name>
<ScriptType>all</ScriptType>
<Syntax>long set.time.zone( string time_zone(50) )</Syntax>
<Description>This sets the local time zone at run time.</Description>
<HelpID>/progguide/functions_date_time_zones/set.time.zone</HelpID>
</Function>
<Function Deprecated="no">
<Name>time.num</Name>
<ScriptType>all</ScriptType>
<Syntax>long time.num( )</Syntax>
<Description>This returns the current time as the number of seconds since 00:00.</Description>
<HelpID>/progguide/functions_date_time_zones/time.num</HelpID>
</Function>
<Function Deprecated="no">
<Name>timezone.exists</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean timezone.exists( string time_zone(50) )</Syntax>
<Description>This checks that the input argument contains the name of a valid time zone.</Description>
<HelpID>/progguide/functions_date_time_zones/timezone.exists</HelpID>
</Function>
<Function Deprecated="no">
<Name>utc.add</Name>
<ScriptType>all</ScriptType>
<Syntax>long utc.add( long i.utc , long year , long month , long day , long hour , long minute , long second , long o.utc )</Syntax>
<Description>This adds years, months, days, hours, minutes, seconds to the input utc value and makes corrections if necessary.</Description>
<HelpID>/progguide/functions_date_time_zones/utc.add</HelpID>
</Function>
<Function Deprecated="no">
<Name>utc.num</Name>
<ScriptType>all</ScriptType>
<Syntax>long utc.num( )</Syntax>
<Description>This returns the current local date and time in UTC long format.</Description>
<HelpID>/progguide/functions_date_time_zones/utc.num</HelpID>
</Function>
<Function Deprecated="no">
<Name>utc.to.date.with.timezone.info</Name>
<ScriptType>all</ScriptType>
<Syntax>long utc.to.date.with.timezone.info( long utc , ref long yearno , ref long monthno , ref long month_dayno , ref long hours , ref long minutes , ref long seconds , ref long utcdiff )</Syntax>
<Description>This converts a UTC long format value to the corresponding year, month, day, and so on, in local time. The difference in seconds to UTC is returned in the variable utcdiff.</Description>
<HelpID>/progguide/functions_date_time_zones/utc.to.date.with.timezone.info</HelpID>
</Function>
<Function Deprecated="no">
<Name>utc.to.date</Name>
<ScriptType>all</ScriptType>
<Syntax>long utc.to.date( long utc , ref long yearno , ref long monthno , ref long month_dayno , ref long hours , ref long minutes , ref long seconds )</Syntax>
<Description>This converts a UTC long format value to the corresponding year, month, day, and so on, in local time.</Description>
<HelpID>/progguide/functions_date_time_zones/utc.to.date</HelpID>
</Function>
<Function Deprecated="no">
<Name>utc.to.input</Name>
<ScriptType>all</ScriptType>
<Syntax>string utc.to.input( long lvalue , const string format() )</Syntax>
<Description>This converts a UTC long format value to an input date string or an input time string (in local time). The format specified determines whether the function returns a date string or a time string.</Description>
<HelpID>/progguide/functions_date_time_zones/utc.to.input</HelpID>
</Function>
<Function Deprecated="no">
<Name>utc.to.inputstr$</Name>
<ScriptType>all</ScriptType>
<Syntax>long utc.to.inputstr$( long utc , string date.format(7) , string time.format(7) , ref string local.date() , ref string local.time() )</Syntax>
<Description>This converts a UTC long format value to a local date string and a local time string.</Description>
<HelpID>/progguide/functions_date_time_zones/utc.to.inputstr</HelpID>
</Function>
<Function Deprecated="no">
<Name>utc.to.iso</Name>
<ScriptType>all</ScriptType>
<Syntax>string utc.to.iso( string utc , long format )</Syntax>
<Description>This converts a utc into a string representation of the utc in ISO8601 format.</Description>
<HelpID>/progguide/functions_date_time_zones/utc.to.iso</HelpID>
</Function>
<Function Deprecated="no">
<Name>utc.to.local.with.timezone.info</Name>
<ScriptType>all</ScriptType>
<Syntax>long utc.to.local.with.timezone.info( long utc , ref long local_days , ref long local_time , ref long utcdiff )</Syntax>
<Description>This converts a UTC long format value to local date and time. The difference in seconds to UTC is returned in the variable utcdiff.</Description>
<HelpID>/progguide/functions_date_time_zones/utc.to.local.with.timezone.info</HelpID>
</Function>
<Function Deprecated="no">
<Name>utc.to.local</Name>
<ScriptType>all</ScriptType>
<Syntax>long utc.to.local( long utc , ref long local_days , ref long local_time  [, ref string local_dst] )</Syntax>
<Description>This converts a UTC long format value to local date and time.</Description>
<HelpID>/progguide/functions_date_time_zones/utc.to.local</HelpID>
</Function>
<Function Deprecated="no">
<Name>utc.to.week</Name>
<ScriptType>all</ScriptType>
<Syntax>long utc.to.week( long utc , ref long week_dayno , ref long year_dayno , ref long weekno , ref long hours , ref long minutes , ref long seconds  [, ref long yearno] )</Syntax>
<Description>This converts a UTC long format value to the corresponding day of the week, day of the year, week of the year, and so on, in local time.</Description>
<HelpID>/progguide/functions_date_time_zones/utc.to.week</HelpID>
</Function>
<Function Deprecated="no">
<Name>week.to.num</Name>
<ScriptType>all</ScriptType>
<Syntax>long week.to.num( long weekno , long yearno , long week_dayno )</Syntax>
<Description>This returns the number of days since 01-01-0001 for a specified week number, year number, and day of the week. The day of the week is interpreted by using the day defined as the first day of the week in the user data settings in the data dictionary (see Week handling).</Description>
<HelpID>/progguide/functions_date_time_zones/week.to.num</HelpID>
</Function>
<Function Deprecated="no">
<Name>week.to.utc</Name>
<ScriptType>all</ScriptType>
<Syntax>long week.to.utc( long weekno , long yearno , long week_dayno , long hours , long minutes , long seconds )</Syntax>
<Description>This converts a specified week number, year number, day number in week, and so on, in local time, to UTC long format. For information on week numbering, see Week handling.</Description>
<HelpID>/progguide/functions_date_time_zones/week.to.utc</HelpID>
</Function>
<Function Deprecated="no">
<Name>abort.io</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void abort.io( string mesg(14)  [,  ...] )</Syntax>
<Description>This cancels the current database transaction.</Description>
<HelpID>/progguide/functions_db_operations/abort.io</HelpID>
</Function>
<Function Deprecated="no">
<Name>abort.transaction</Name>
<ScriptType>all</ScriptType>
<Syntax>long abort.transaction( )</Syntax>
<Description>This cancels the current database transaction. No changes are stored in the database.</Description>
<HelpID>/progguide/functions_db_operations/abort.transaction</HelpID>
</Function>
<Function Deprecated="no">
<Name>activate.search</Name>
<ScriptType>all</ScriptType>
<Syntax>void activate.search( )</Syntax>
<Description>This forces a random search action on the main table. You call the function immediately after input to a field during insertion of a new record (standard command ADD.SET or DUPL.OCCUR) or during MODIFY.SET (if the predefined variable modify.prim.key is set to TRUE).</Description>
<HelpID>/progguide/functions_db_operations/activate.search</HelpID>
</Function>
<Function Deprecated="no">
<Name>commit.transaction</Name>
<ScriptType>all</ScriptType>
<Syntax>long commit.transaction( )</Syntax>
<Description>This ends the current transaction. All changes made during the transaction are stored in the database.</Description>
<HelpID>/progguide/functions_db_operations/commit.transaction</HelpID>
</Function>
<Function Deprecated="no">
<Name>count.records.in.view</Name>
<ScriptType>4GL</ScriptType>
<Syntax>long count.records.in.view( )</Syntax>
<Description>Counts the number of records that exist in the maintable for the current view. Any filter or query extension that has been set is taken into account.</Description>
<HelpID>/progguide/functions_db_operations/count.records.in.view</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.change.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long dal.change.object( string dal_name )</Syntax>
<Description>Use this to indicate the DAL that the current record is about to be changed. After this call, fields can be changed with dal.set.field(). And after that, the record can be saved with dal.save.object().</Description>
<HelpID>/progguide/functions_db_operations/dal.change.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.check.field</Name>
<ScriptType>all</ScriptType>
<Syntax>long dal.check.field( string fld.name  [, long element]  [, long mode] )</Syntax>
<Description>Checks whether the given field has a valid value. This performs the DAL check hooks in the given mode (default is DAL_UPDATE).</Description>
<HelpID>/progguide/functions_db_operations/dal.check.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.copy.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long dal.copy.object( string dal_name )</Syntax>
<Description>Use this to indicate the DAL that a record is about to be copied. In contrary to dal.new.object(), this function does not call the set.object.defaults() hook!</Description>
<HelpID>/progguide/functions_db_operations/dal.copy.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.destroy.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long dal.destroy.object( string tbl.name  [, long error.flag] )</Syntax>
<Description>Deletes a record of the given table. The record must have been locked for update. This function does the same as dal.destroy(), however it does more detailed permission checking. Further, the method.is.allowed hook is always called ( dal.destroy() allows you to skip this hook by passing FALSE to the prop_check parameter).</Description>
<HelpID>/progguide/functions_db_operations/dal.destroy.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.destroy</Name>
<ScriptType>all</ScriptType>
<Syntax>void dal.destroy( string dal.name , long object_set , ref long retval , long prop_check  [, long mode]  [, long eflag] )</Syntax>
<Description>Use this to delete a database record. The function encapsulates the db.delete() function with the DAL hooks of the object set. If the before.destroy.object() hook fails, the database operation is cancelled.</Description>
<HelpID>/progguide/functions_db_operations/dal.destroy</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.get.field.mode</Name>
<ScriptType>all</ScriptType>
<Syntax>long dal.get.field.mode( string tbl.name  [, long element] )</Syntax>
<Description>Returns the mode of the given field. The mode indicates if the field has changed.</Description>
<HelpID>/progguide/functions_db_operations/dal.get.field.mode</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.get.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long dal.get.object( string tbl.name , long lock  [, string key_field1]  [, string key_value1] ,  ... )</Syntax>
<Description>Reads a record of the given table. In case the lock parameter is set to true, the record is locked for update. This function accepts a list of primary key field/value pairs.</Description>
<HelpID>/progguide/functions_db_operations/dal.get.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.get.property.flag</Name>
<ScriptType>all</ScriptType>
<Syntax>long dal.get.property.flag( stirng tbl.name , long object_set , string prop_name )</Syntax>
<Description>Use this to retrieve the value of the has_changed flag (see property hooks) for any database property dat.get.property.flag. The property must have been changed by the dal.set.property function.</Description>
<HelpID>/progguide/functions_db_operations/dal.get.property.flag</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.is.field.changed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean dal.is.field.changed( string fld.name  [, long element] )</Syntax>
<Description>Use this to test whether a field has changed. It is equivalent to:</Description>
<HelpID>/progguide/functions_db_operations/dal.is.field.changed</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.new.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long dal.new.object( string tbl.name )</Syntax>
<Description>Use this to indicate the DAL that a new record is about to be inserted. This function set record defaults, by calling db.set.to.default() and the set.object.defaults() hook.</Description>
<HelpID>/progguide/functions_db_operations/dal.new.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.new</Name>
<ScriptType>all</ScriptType>
<Syntax>void dal.new( string tbl.name , long object_set , ref long retval , long prop_check  [, long mode]  [, long eflag] )</Syntax>
<Description>Use this to add a new record to the database. The function encapsulates the db.insert() function with the DAL hooks of the object set. If the before.save.object() hook fails, the database operation is cancelled.</Description>
<HelpID>/progguide/functions_db_operations/dal.new</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.parent.caused.update</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean dal.parent.caused.update( string fld.name  [, long element] )</Syntax>
<Description>This function may only be called within an .update() hook. It checks whether this call to this hook was triggered by a change in field fld.name.</Description>
<HelpID>/progguide/functions_db_operations/dal.parent.caused.update</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.save.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long dal.save.object( string tbl.name  [, long error.flag] )</Syntax>
<Description>Saves a record of the given table. In case a dal.new.object() or a dal.copy.object() was done, the record is inserted in the database. In case a dal.change.object() was done, the record is updated in the database.</Description>
<HelpID>/progguide/functions_db_operations/dal.save.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.set.field</Name>
<ScriptType>all</ScriptType>
<Syntax>void dal.set.field( string fld.name , void value  [, long element] )</Syntax>
<Description>Sets the value of the given field and informs the DAL that the field is changed.</Description>
<HelpID>/progguide/functions_db_operations/dal.set.field</HelpID>
</Function>
<Function Deprecated="yes">
<Name>dal.set.property.with.check</Name>
<ScriptType>all</ScriptType>
<Syntax>long dal.set.property.with.check( string tbl.name , long object_set , const string proper_name , void value )</Syntax>
<Description>In order to notify the DAL about a change to the value of a property, you must use this function to change the value. Using this function ensures that the relevant property hooks are executed when the value is changed. If you use an assignment or the db.* functions to change a property value, the DAL is not notified of the change. Consequently, the property checks in the DAL are not executed.</Description>
<HelpID>/progguide/functions_db_operations/dal.set.property.with.check</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.set.property</Name>
<ScriptType>all</ScriptType>
<Syntax>long dal.set.property( string tbl.name , long object_set , string prop_name , void value , long mode )</Syntax>
<Description>In order to notify the DAL about a change to the value of a property, you must use this function to change the value. Using this function ensures that the relevant property hooks are executed when the value is changed. If you use an assignment or the db.* functions to change a property value, the DAL is not notified of the change. Consequently, the property checks in the DAL are not executed.</Description>
<HelpID>/progguide/functions_db_operations/dal.set.property</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.skip.never.applicable.checks</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void dal.skip.never.applicable.checks( )</Syntax>
<Description>By default, the 4GL engine will check fields that are defined as never applicable. You can skip these checks by calling this function in the before.open.object.set() hook in the DAL.</Description>
<HelpID>/progguide/functions_db_operations/dal.skip.never.applicable.checks</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.start.business.method</Name>
<ScriptType>all</ScriptType>
<Syntax>void dal.start.business.method( string set_id , string name , ref long retval  [,  ...] )</Syntax>
<Description>This starts a specified business method.</Description>
<HelpID>/progguide/functions_db_operations/dal.start.business.method</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.update</Name>
<ScriptType>all</ScriptType>
<Syntax> dal.update( string class_name , long object_set , ref long retval , long prop_check  [, long mode]  [, long eflag] )</Syntax>
<Description>Use this to update an existing database record. The function encapsulates the db.update() function with the DAL hooks of the object set. If the before.save.object() hook fails, the database operation is cancelled.</Description>
<HelpID>/progguide/functions_db_operations/dal.update</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.bind</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.bind( string table_name(9)  [, ref string buffer(.)]  [, long comp_nr] )</Syntax>
<Description>This creates a pointer to a specified table. It returns a table ID that you use in other database calls to identify the table. The pointer is to a table with a particular company number and record buffer. You can create additional pointers to the same table by calling the function with a different company number and/or record buffer.</Description>
<HelpID>/progguide/functions_db_operations/db.bind</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.change.order</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.change.order( long table_id , long index_nr  [, long compnr] )</Syntax>
<Description>This makes a specified index the current index. After this action, the record pointer is undefined.</Description>
<HelpID>/progguide/functions_db_operations/db.change.order</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.check.restricted</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.check.restricted( long table_id , long mode , ref string message(256) )</Syntax>
<Description>In a table definition, it is possible to set restrictions on update and/or delete actions for records that are referenced by other tables. These restrictions mean that you cannot delete and/or update the primary key that is referenced by another table. This function checks whether there are references to the current record with delete and/or update restrictions. This function can take a long time to complete if no reference counter is kept (lookup mode).</Description>
<HelpID>/progguide/functions_db_operations/db.check.restricted</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.check.row.changed</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.check.row.changed( long table_id )</Syntax>
<Description>This function checks whether a record that has been delayed locked and changed by the current process has been changed by another process ("user"). It does not check whether the row has been modified in the current process. In a way it answers the question: "If I would update the current record now, would I get the infamous EROWCHANGED error?"</Description>
<HelpID>/progguide/functions_db_operations/db.check.row.changed</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.check.row.dlocked</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.check.row.dlocked( long table_id )</Syntax>
<Description>This checks whether the row, identified by its primary key columns is delayed locked or not. If the row is already locked, the function returns the dlock number of the row. This function can result in a considerable performance gain as it eradicates the need for multiple reads of the same record.</Description>
<HelpID>/progguide/functions_db_operations/db.check.row.dlocked</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.check.row.domains</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.check.row.domains( long table_id , ref string fld_name )</Syntax>
<Description>This checks whether the current record of a specified table conforms to the domain definitions in the data dictionary. All fields of the record are checked in turn until an error occurs. The function returns when the first error is encountered.</Description>
<HelpID>/progguide/functions_db_operations/db.check.row.domains</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.clear.table</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.clear.table( long table_id  [, long flag]  [, long comp_nr] )</Syntax>
<Description>This deletes all data from a specified table. Reference counters are automatically updated.</Description>
<HelpID>/progguide/functions_db_operations/db.clear.table</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.columns.to.record</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.columns.to.record( long table_id )</Syntax>
<Description>The record buffer of a table is used for reading records from that table. When you bind to a table (see db.bind()) and specify that the default record buffer is to be used, the contents of the table fields are automatically copied to the buffer. This does not happen when you specify a record buffer other than the default buffer. Consequently, you must call this function to copy the field values to the buffer if you have filled the fields before reading from the database.</Description>
<HelpID>/progguide/functions_db_operations/db.columns.to.record</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.create.table</Name>
<ScriptType>all</ScriptType>
<Syntax>long db.create.table( long table_id , long compnr )</Syntax>
<Description>This creates a new database table.</Description>
<HelpID>/progguide/functions_db_operations/db.create.table</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.curr</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.curr( long table_id  [, long lock] )</Syntax>
<Description>This reads the current record from a specified table.</Description>
<HelpID>/progguide/functions_db_operations/db.curr</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.delete</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.delete( long table_id  [, long mode]  [, long eflag] )</Syntax>
<Description>This deletes the current record. The record pointer is not changed, so the current record is undefined after the record has been deleted.</Description>
<HelpID>/progguide/functions_db_operations/db.delete</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.drop.table</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.drop.table( long table_id  [, long flag]  [, long comp_nr] )</Syntax>
<Description>This deletes a specified table. Data and indices associated with the table are also deleted. Reference counters are automatically updated.</Description>
<HelpID>/progguide/functions_db_operations/db.drop.table</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.eq</Name>
<ScriptType>all</ScriptType>
<Syntax>long db.eq( long table_id , long lock )</Syntax>
<Description>This reads from a specified table the record whose key value equals a certain predefined value. Before calling db.eq(), you must assign the required value to the key field. For example, the following code retrieves the item with item number 001 from the items table:</Description>
<HelpID>/progguide/functions_db_operations/db.eq</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.error.message</Name>
<ScriptType>all</ScriptType>
<Syntax>string  db.error.message( )</Syntax>
<Description>Some errors returned by a database action have an associated error message. This message provides additional information about the error. Use the db.error.message() function to retrieve the error message (if any) associated with the most recent error code returned by a database action.</Description>
<HelpID>/progguide/functions_db_operations/db.error.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.error</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.error( long table_id )</Syntax>
<Description>Use this to retrieve the error code returned by the most recent database action. If you specify a table ID, the function retrieves the most recent error code returned by an action on that table.</Description>
<HelpID>/progguide/functions_db_operations/db.error</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.first</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.first( long table_id  [, long lock] )</Syntax>
<Description>This reads the first record from a specified table. It uses the current index to search the table.</Description>
<HelpID>/progguide/functions_db_operations/db.first</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.ge</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.ge( long table_id  [, long lock] )</Syntax>
<Description>This reads from a specified table the record whose key value is greater than or equal to a certain predefined value. Before calling db.ge(), you must assign the required value to the key field. For example:</Description>
<HelpID>/progguide/functions_db_operations/db.ge</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.get.physical.compnr</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.get.physical.compnr( string tblname , long logical.compnr )</Syntax>
<Description>Use this to retrieve the physical company number for the specified table (tblname) and logical company number (logical.compnr).</Description>
<HelpID>/progguide/functions_db_operations/db.get.physical.compnr</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.gt</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.gt( long table_id , long lock )</Syntax>
<Description>This reads from a specified table the record whose key value is greater than a certain predefined value. Before calling db.gt(), you must assign the required value to the key field. For example:</Description>
<HelpID>/progguide/functions_db_operations/db.gt</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.indexinfo</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.indexinfo( long table_id , long index_nr , ref long index_info(32, 3) , ref long indexparts , ref boolean indexdups , ref boolean indexactive )</Syntax>
<Description>This returns information about the parts of a specified index.</Description>
<HelpID>/progguide/functions_db_operations/db.indexinfo</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.insert</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.insert( long table_id , long mode , long eflag )</Syntax>
<Description>This adds a new record to a specified table. The record pointer does not change.</Description>
<HelpID>/progguide/functions_db_operations/db.insert</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.last</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.last( long table_id  [, long lock] )</Syntax>
<Description>This reads the last record from a specified table. It uses the current index to search the table.</Description>
<HelpID>/progguide/functions_db_operations/db.last</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.le</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.le( long table_id  [, long lock] )</Syntax>
<Description>This reads from a specified table the record whose key value is less than or equal to a certain predefined value. Before calling db.le(), you must assign the required value to the key field. For example:</Description>
<HelpID>/progguide/functions_db_operations/db.le</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.lock.table</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.lock.table( long table_id )</Syntax>
<Description>This locks a specified table. Other users cannot then write to or delete the table or any parts of the table. Nor can they lock the table or any parts of the table. The lock is released by commit.transaction() or abort.transaction().</Description>
<HelpID>/progguide/functions_db_operations/db.lock.table</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.lt</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.lt( long table_id  [, long lock] )</Syntax>
<Description>This reads from a specified table the record whose key value is less than a certain predefined value. Before calling db.lt(), you must assign the required value to the key field. For example:</Description>
<HelpID>/progguide/functions_db_operations/db.lt</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.next</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.next( long table_id  [, long lock] )</Syntax>
<Description>This reads the next record from a specified table. It uses the current index to search the table. If there is no current record, the function returns an error message.</Description>
<HelpID>/progguide/functions_db_operations/db.next</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.nr.indices</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.nr.indices( long table_id , ref long nr_indices )</Syntax>
<Description>This returns the number of indices that exist on a specified table.</Description>
<HelpID>/progguide/functions_db_operations/db.nr.indices</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.nr.rows</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.nr.rows( long table_id , ref long nr_rows  [, long comp_nr] )</Syntax>
<Description>This returns the number of rows that a specified table contains.</Description>
<HelpID>/progguide/functions_db_operations/db.nr.rows</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.permission</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.permission( long table_id , string field  [, ref string buffer] )</Syntax>
<Description>Use this to check the access permissions that a user has to a specified table or table field.</Description>
<HelpID>/progguide/functions_db_operations/db.permission</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.prev</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.prev( long table_id  [, long lock] )</Syntax>
<Description>This reads the previous record from a specified table. It uses the current index to search the table. If there is no current record, the function returns an error message.</Description>
<HelpID>/progguide/functions_db_operations/db.prev</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.record.changed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean db.record.changed( long table_id )</Syntax>
<Description>Tests whether the current value of the record buffer belonging to the given table id has changed since the last call of db.store.record().</Description>
<HelpID>/progguide/functions_db_operations/db.record.changed</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.record.to.columns</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.record.to.columns( long table_id )</Syntax>
<Description>When you bind to a table (see db.bind() and specify that the default record buffer is to be used, the contents of the buffer are automatically copied to the table fields in your program script. This does not happen when you specify a record buffer other than the default buffer. Consequently, you must call this function to copy the field values from the buffer to the table fields in your program script.</Description>
<HelpID>/progguide/functions_db_operations/db.record.to.columns</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.ref.handle.mode</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.ref.handle.mode( string table_name , long mode )</Syntax>
<Description>Use this to check whether a full table scan (FTS) is necessary during delete or update operations. Delete and update operations can take a long time to complete when the table is referenced by other tables but no reference counter is kept (cascade, nullify, or lookup mode). When there is no index on the foreign key in the child table, normally a full table scan is required to search for referring records.</Description>
<HelpID>/progguide/functions_db_operations/db.ref.handle.mode</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.restore.record</Name>
<ScriptType>all</ScriptType>
<Syntax>void  db.restore.record( long table_id )</Syntax>
<Description>This restores the record of the given table that was stored previously with db.store.record(). Also the table's field values will be restored.</Description>
<HelpID>/progguide/functions_db_operations/db.restore.record</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.retry.hit</Name>
<ScriptType>all</ScriptType>
<Syntax>long db.retry.hit( )</Syntax>
<Description>Use this to check whether the client database layer has returned to a retry point. You must set the retry point by using db.retry.point() before you call db.retry.hit(). See also Database Handling.</Description>
<HelpID>/progguide/functions_db_operations/db.retry.hit</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.retry.point</Name>
<ScriptType>all</ScriptType>
<Syntax>void  db.retry.point( )</Syntax>
<Description>This sets a retry point for the current transaction. The program returns to this point if an error occurs during the transaction; the transaction is then retried. When you include a retry point for a transaction, you must set it before the start of the transaction.</Description>
<HelpID>/progguide/functions_db_operations/db.retry.point</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.row.length</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.row.length( long table_id , ref long row_length )</Syntax>
<Description>Use this to retrieve the length of records in a specified table.</Description>
<HelpID>/progguide/functions_db_operations/db.row.length</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.set.to.default</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.set.to.default( long table_id )</Syntax>
<Description>This sets bound variables in the program script to the default values defined in the data dictionary.</Description>
<HelpID>/progguide/functions_db_operations/db.set.to.default</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.store.record</Name>
<ScriptType>all</ScriptType>
<Syntax>void db.store.record( long table_id )</Syntax>
<Description>Creates a copy of the current value of the record buffer belonging to the given table id. Later on this copied value can be restored by calling db.restore.record().</Description>
<HelpID>/progguide/functions_db_operations/db.store.record</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.unbind</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.unbind( long table_id )</Syntax>
<Description>This deletes the specified table pointer.</Description>
<HelpID>/progguide/functions_db_operations/db.unbind</HelpID>
</Function>
<Function Deprecated="no">
<Name>db.update</Name>
<ScriptType>all</ScriptType>
<Syntax>long  db.update( long table_id  [, long mode]  [, long eflag] )</Syntax>
<Description>This rewrites the current record. When updating a record with this function, you are permitted to update the primary key of the record.</Description>
<HelpID>/progguide/functions_db_operations/db.update</HelpID>
</Function>
<Function Deprecated="no">
<Name>for.each.record.in.view.do</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  for.each.record.in.view.do( string callback_function )</Syntax>
<Description>Executes the specified UI script callback function for each record in the current view on the maintable.</Description>
<HelpID>/progguide/functions_db_operations/for.each.record.in.view.do</HelpID>
</Function>
<Function Deprecated="no">
<Name>on.main.table</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void on.main.table( string function_name  [, string ...] )</Syntax>
<Description>This copies the contents current record of the main table to the record buffer of that table, saves the record, and executes the specified function. After that the saved record buffer is restored. This enables you to perform actions on the record contents without affecting the values in the table.</Description>
<HelpID>/progguide/functions_db_operations/on.main.table</HelpID>
</Function>
<Function Deprecated="no">
<Name>restore.rcd.main</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  restore.rcd.main( long occurrence )</Syntax>
<Description>This updates the main table with the contents of the buffer of the specified occurrence. It also makes the specified occurrence the current occurrence.</Description>
<HelpID>/progguide/functions_db_operations/restore.rcd.main</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.limits.off</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  set.limits.off( )</Syntax>
<Description>This removes the limits set with the store.occ.max() and/or store.occ.min() functions. The entire table can then be accessed again.</Description>
<HelpID>/progguide/functions_db_operations/set.limits.off</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.transaction.readonly</Name>
<ScriptType>all</ScriptType>
<Syntax>long  set.transaction.readonly( )</Syntax>
<Description>This defines a transaction as read only. The transaction can only read records (without locks) from the database; it cannot update the database.</Description>
<HelpID>/progguide/functions_db_operations/set.transaction.readonly</HelpID>
</Function>
<Function Deprecated="yes">
<Name>skip.io</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  skip.io( string mesg  [, string ...] )</Syntax>
<Description>This function is deprecated!</Description>
<HelpID>/progguide/functions_db_operations/skip.io</HelpID>
</Function>
<Function Deprecated="no">
<Name>store.occ.max</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  store.occ.max( )</Syntax>
<Description>Normally, standard commands that access records of the main table can access all records of that table. You can use these functions to limit the records that can be accessed to those whose key values are within a specified range. Use store.occ.max() to define the upper limit of the range. Use store.occ.min() to define the lower limit of the range. If you wish, you can define only a maximum or only a minimum limit.</Description>
<HelpID>/progguide/functions_db_operations/store.occ.maxmin</HelpID>
</Function>
<Function Deprecated="no">
<Name>store.occ.min</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  store.occ.min( )</Syntax>
<Description>Normally, standard commands that access records of the main table can access all records of that table. You can use these functions to limit the records that can be accessed to those whose key values are within a specified range. Use store.occ.max() to define the upper limit of the range. Use store.occ.min() to define the lower limit of the range. If you wish, you can define only a maximum or only a minimum limit.</Description>
<HelpID>/progguide/functions_db_operations/store.occ.maxmin</HelpID>
</Function>
<Function Deprecated="no">
<Name>this.dal</Name>
<ScriptType>DAL</ScriptType>
<Syntax>string  this.dal( )</Syntax>
<Description>Returns the name of the current DAL.</Description>
<HelpID>/progguide/functions_db_operations/this.dal</HelpID>
</Function>
<Function Deprecated="no">
<Name>to.key</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  to.key( long key_number  [, long nr.view.fields] )</Syntax>
<Description>Use this to change the key of the main table without user interaction. The key_number argument specifies the new key.</Description>
<HelpID>/progguide/functions_db_operations/to.key</HelpID>
</Function>
<Function Deprecated="no">
<Name>with.object.set.do</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void with.object.set.do( string function_name  [, &lt;type&gt; ...] )</Syntax>
<Description>With this function you can perform actions on records in the DAL's table, without affecting the current record. First the current record is saved into a temporary record buffer, then the specified function is executed. Afterwards the current record is restored from the temporary buffer.</Description>
<HelpID>/progguide/functions_db_operations/with.object.set.do</HelpID>
</Function>
<Function Deprecated="no">
<Name>with.old.object.values.do</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void with.old.object.values.do( string function_name  [, &lt;type&gt; ...] )</Syntax>
<Description>This executes the specified function for the current record, using the old values of the record. The record must have been previously modified.</Description>
<HelpID>/progguide/functions_db_operations/with.old.object.values.do</HelpID>
</Function>
<Function Deprecated="no">
<Name>creat.tmp.file$</Name>
<ScriptType>all</ScriptType>
<Syntax>string creat.tmp.file$(  [string pathname] )</Syntax>
<Description>This creates a temporary file. By default, the file is created in the current directory. To create the file in a different directory, use the optional pathname argument to specify the full path to the required directory.</Description>
<HelpID>/progguide/functions_directory_file_operations/creat.tmp.file</HelpID>
</Function>
<Function Deprecated="no">
<Name>dir.close</Name>
<ScriptType>all</ScriptType>
<Syntax>long  dir.close( long dfd )</Syntax>
<Description>This closes a specified directory and frees all memory allocated to it. The dfd argument is the pointer to the directory returned by dir.open() or dir.open.tree() when the directory was opened.</Description>
<HelpID>/progguide/functions_directory_file_operations/dir.close</HelpID>
</Function>
<Function Deprecated="no">
<Name>dir.entry</Name>
<ScriptType>all</ScriptType>
<Syntax>string  dir.entry( long dfd , long read_type , ref long return_type , ref long filesize , ref long mode )</Syntax>
<Description>This retrieves entries from a previously opened directory. It retrieves the entries sequentially.</Description>
<HelpID>/progguide/functions_directory_file_operations/dir.entry</HelpID>
</Function>
<Function Deprecated="no">
<Name>dir.open.tree</Name>
<ScriptType>all</ScriptType>
<Syntax>long  dir.open.tree( const string path  [, long nlevels] )</Syntax>
<Description>This is similar to dir.open() in that it reads a specified directory into memory. However, dir.open.tree() can retrieve up to 256 directory levels.</Description>
<HelpID>/progguide/functions_directory_file_operations/dir.open.tree</HelpID>
</Function>
<Function Deprecated="no">
<Name>dir.open</Name>
<ScriptType>all</ScriptType>
<Syntax>long  dir.open( const string path )</Syntax>
<Description>This reads the specified directory into memory. The path argument can have a maximum length of 2048 characters.</Description>
<HelpID>/progguide/functions_directory_file_operations/dir.open</HelpID>
</Function>
<Function Deprecated="no">
<Name>dir.rewind</Name>
<ScriptType>all</ScriptType>
<Syntax>long  dir.rewind( long dfd )</Syntax>
<Description>This resets the read pointer of the specified directory to the beginning of the directory entry list. The dfd argument is the pointer to the directory returned by dir.open() or dir.open.tree() when the directory was opened.</Description>
<HelpID>/progguide/functions_directory_file_operations/dir.rewind</HelpID>
</Function>
<Function Deprecated="no">
<Name>file.chown</Name>
<ScriptType>all</ScriptType>
<Syntax>long  file.chown( string file , string user , string group )</Syntax>
<Description>This changes the owner and/or group of a file. You can use a single call to change both the owner and the group. Alternatively, you can specify either the user argument or the group argument as an empty string.</Description>
<HelpID>/progguide/functions_directory_file_operations/file.chown</HelpID>
</Function>
<Function Deprecated="no">
<Name>file.cp</Name>
<ScriptType>all</ScriptType>
<Syntax>long  file.cp( const string source , const string target )</Syntax>
<Description>This copies a specified source file to a specified target file. Both files can be either local or remote. They can also be on different hosts (provided that the bshell can access both hosts).</Description>
<HelpID>/progguide/functions_directory_file_operations/file.cp</HelpID>
</Function>
<Function Deprecated="no">
<Name>file.mv.across.hosts</Name>
<ScriptType>all</ScriptType>
<Syntax>long  file.mv.across.hosts( const string source , const string target )</Syntax>
<Description>This moves a specified source file to the location specified in the target argument. The file can be either local or remote. Source and target can be on different hosts.</Description>
<HelpID>/progguide/functions_directory_file_operations/file.mv.across.hosts</HelpID>
</Function>
<Function Deprecated="no">
<Name>file.mv</Name>
<ScriptType>all</ScriptType>
<Syntax>long  file.mv( const string source , const string target )</Syntax>
<Description>This moves a specified source file to the location specified in the target argument. The file can be either local or remote. Both source and target must be on the same host.</Description>
<HelpID>/progguide/functions_directory_file_operations/file.mv</HelpID>
</Function>
<Function Deprecated="no">
<Name>file.rm</Name>
<ScriptType>all</ScriptType>
<Syntax>long  file.rm( const string path )</Syntax>
<Description>This deletes a specified local or remote file. The path argument must include the full path to the file, including the host name, where appropriate. For example: "host!/usr/myfile".</Description>
<HelpID>/progguide/functions_directory_file_operations/file.rm</HelpID>
</Function>
<Function Deprecated="no">
<Name>file.stat</Name>
<ScriptType>all</ScriptType>
<Syntax>long  file.stat( string file_name , ref long file_size  [, ref long ctime]  [, ref long mtime]  [, ref long atime] )</Syntax>
<Description>This returns information about a specified file. It is a short version of the stat.info() function.</Description>
<HelpID>/progguide/functions_directory_file_operations/file.stat</HelpID>
</Function>
<Function Deprecated="no">
<Name>file.chmod</Name>
<ScriptType>all</ScriptType>
<Syntax>long  file.chmod( const string file , long mode )</Syntax>
<Description>This sets the access permissions for a specified file.</Description>
<HelpID>/progguide/functions_directory_file_operations/file_chmod</HelpID>
</Function>
<Function Deprecated="no">
<Name>fstat.info</Name>
<ScriptType>all</ScriptType>
<Syntax>long  fstat.info( long fp , ref long size , ref long mode , ref long inode , ref long dev , ref long uid , ref long gid , ref long nlink , ref long ctime , ref long mtime , ref long atime )</Syntax>
<Description>This returns information about a specified file. It provides the same information as stat.info(). But instead of retrieving information about a named file, it returns information about an open file that is known by the file descriptor fp. This descriptor can be obtained, for example, from a successful seq.open() call.</Description>
<HelpID>/progguide/functions_directory_file_operations/fstat.info</HelpID>
</Function>
<Function Deprecated="no">
<Name>getcwd</Name>
<ScriptType>all</ScriptType>
<Syntax>string  getcwd( )</Syntax>
<Description>This returns the current path as a string. Note that on Windows NT systems, pathnames can include drive letters (for example, c:/baan/bin).</Description>
<HelpID>/progguide/functions_directory_file_operations/getcwd</HelpID>
</Function>
<Function Deprecated="no">
<Name>make.path.absolute</Name>
<ScriptType>all</ScriptType>
<Syntax>long  make.path.absolute( ref string path_name )</Syntax>
<Description>Makes path absolute given in path_name. It gives the full path back also in path_name.</Description>
<HelpID>/progguide/functions_directory_file_operations/make.path.absolute</HelpID>
</Function>
<Function Deprecated="no">
<Name>mkdir</Name>
<ScriptType>all</ScriptType>
<Syntax>long mkdir( string path_name$ )</Syntax>
<Description>This creates a specified directory (local or remote). You must have write permission in the parent directory to do this. Access permissions for the new directory are set to read, write, and execute for all users. The path_name$ argument must include the full path to the directory, including the host name, where appropriate. For example:</Description>
<HelpID>/progguide/functions_directory_file_operations/mkdir</HelpID>
</Function>
<Function Deprecated="no">
<Name>path.change.extension</Name>
<ScriptType>all</ScriptType>
<Syntax>string path.change.extension( const string path , const string extension  [, long os.type] )</Syntax>
<Description>Changes the extension of the specified path string. By default the path string is interpreted according to the Operating System of the ERP LN server.</Description>
<HelpID>/progguide/functions_directory_file_operations/path.change.extension</HelpID>
</Function>
<Function Deprecated="no">
<Name>path.combine</Name>
<ScriptType>all</ScriptType>
<Syntax>string path.combine( const string path ,  ... , long os.type )</Syntax>
<Description>Combines one ore more strings into a path.</Description>
<HelpID>/progguide/functions_directory_file_operations/path.combine</HelpID>
</Function>
<Function Deprecated="no">
<Name>path.dir.separator</Name>
<ScriptType>all</ScriptType>
<Syntax>string path.dir.separator(  [long os.type] )</Syntax>
<Description>Provides a platform-specific character used to separate directory levels in a path string that reflects a hierarchical file system organization.</Description>
<HelpID>/progguide/functions_directory_file_operations/path.dir.separator</HelpID>
</Function>
<Function Deprecated="no">
<Name>path.directory</Name>
<ScriptType>all</ScriptType>
<Syntax>string path.directory( const string path  [, long os.type] )</Syntax>
<Description>Returns the directory information for the specified path string.</Description>
<HelpID>/progguide/functions_directory_file_operations/path.directory</HelpID>
</Function>
<Function Deprecated="no">
<Name>path.extension</Name>
<ScriptType>all</ScriptType>
<Syntax>string path.extension( const string path  [, long os.type] )</Syntax>
<Description>Returns the extension of the specified path string.</Description>
<HelpID>/progguide/functions_directory_file_operations/path.extension</HelpID>
</Function>
<Function Deprecated="no">
<Name>path.filename.without.extension</Name>
<ScriptType>all</ScriptType>
<Syntax>string path.filename.without.extension( const string path  [, long os.type] )</Syntax>
<Description>Returns the filename of the specified path string without the extension.</Description>
<HelpID>/progguide/functions_directory_file_operations/path.filename.without.extension</HelpID>
</Function>
<Function Deprecated="no">
<Name>path.filename</Name>
<ScriptType>all</ScriptType>
<Syntax>string path.filename( const string path  [, long os.type] )</Syntax>
<Description>Returns the filename and extension of the specified path string.</Description>
<HelpID>/progguide/functions_directory_file_operations/path.filename</HelpID>
</Function>
<Function Deprecated="no">
<Name>path.has.extension</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean path.has.extension( const string path  [, long os.type] )</Syntax>
<Description>Determines whether a path string includes a file name extension.</Description>
<HelpID>/progguide/functions_directory_file_operations/path.has.extension</HelpID>
</Function>
<Function Deprecated="no">
<Name>path.is.absolute</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  path.is.absolute( string path_name )</Syntax>
<Description>This checks if path_name is an absolute path.</Description>
<HelpID>/progguide/functions_directory_file_operations/path.is.absolute</HelpID>
</Function>
<Function Deprecated="no">
<Name>path.separator</Name>
<ScriptType>all</ScriptType>
<Syntax>string path.separator(  [long os.type] )</Syntax>
<Description>Returns a platform-specific separator character (":" or ";") used to separate path strings in environment variables.</Description>
<HelpID>/progguide/functions_directory_file_operations/path.separator</HelpID>
</Function>
<Function Deprecated="no">
<Name>pathname</Name>
<ScriptType>all</ScriptType>
<Syntax>long pathname( string file_basename , string file_type , ref string file_path )</Syntax>
<Description>This searches for and returns the location of a specified file.</Description>
<HelpID>/progguide/functions_directory_file_operations/pathname</HelpID>
</Function>
<Function Deprecated="no">
<Name>rmdir</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rmdir( const string spath )</Syntax>
<Description>This deletes the specified directory (local or remote). The path argument must include the full path to the directory, including the host name, where appropriate. For example: "host!c:\usr".</Description>
<HelpID>/progguide/functions_directory_file_operations/rmdir</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.clearerr</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.clearerr( long fp )</Syntax>
<Description>This resets the error and end-of-file indicators for the specified file. fp is the file pointer returned by seq.open() when the file was opened.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.clearerr</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.close</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.close( long fp )</Syntax>
<Description>This flushes the buffers associated with the specified file and closes the file. fp is the file pointer returned by seq.open() when the file was opened. Buffers allocated by the standard i/o system are also flushed and closed. These actions are performed automatically when the process exits.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.close</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.eof</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.eof( long fp )</Syntax>
<Description>This checks the end-of-file indicator of a specified file. fp is the file pointer returned by seq.open() when the file was opened.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.eof</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.error</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.error( long fp )</Syntax>
<Description>This checks the error indicator of a specified file. The error indicator is set when an error occurs while reading from or writing to the file. It lasts until it is cleared by seq.clearerr() or until the file is closed. fp is the file pointer returned by seq.open() when the file was opened.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.error</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.flush</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.flush( long fp )</Syntax>
<Description>This causes all buffered data for a specified file to be written to that file. The file remains open. fp is the file pointer returned by seq.open() when the file was opened.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.flush</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.getc$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  seq.getc$( long fp )</Syntax>
<Description>This returns the next character from a specified file. fp is the file pointer returned by seq.open() when the file was opened. An empty string (a string of length 0) indicates either that the end-of-file has been reached or that an error has occurred.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.getc</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.gets</Name>
<ScriptType>all</ScriptType>
<Syntax>long seq.gets( ref string line , long nrbytes , long fp  [, long mode]  [, ref long there.was.more] )</Syntax>
<Description>This reads one or more characters from a specified file.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.gets</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.islocked</Name>
<ScriptType>all</ScriptType>
<Syntax>long seq.islocked( long  mode , long offset , long size , long fp )</Syntax>
<Description>This checks whether a specified file or segment of a file has been locked by seq.lock().</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.islocked</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.lock</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.lock( long mode , long offset , long size , long fp )</Syntax>
<Description>This sets read and write locks on a specified file or segment of a file.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.lock</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.open</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.open( string file , string openmode  [, ref string pathnm] )</Syntax>
<Description>This opens a specified file. It uses the file $BSE/lib/fdver.pack_combination to find the file. ver refers to a particular release of the software; pack_combination refers to a particular package combination (see pathname()).</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.open</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.putc$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  seq.putc$( string char , long fp )</Syntax>
<Description>This writes a specified character to a specified file. fp is the file pointer returned by seq.open() when the particular file was opened.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.putc</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.puts</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.puts( const string line , long fp )</Syntax>
<Description>This writes the specified characters to a specified file, and appends a new line character. fp is the file pointer returned by seq.open() when the particular file was opened.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.puts</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.read</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.read( ref string buffer , long nrbytes , long fp )</Syntax>
<Description>This reads a specified number of bytes from a specified file into buffer. fp is the file pointer returned by seq.open() when the particular file was opened.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.read</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.rewind</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.rewind( long fp )</Syntax>
<Description>This sets the current file position to the beginning of the file. It is equivalent to: seq.seek( 0, 0, fp ), except that the return value is always -1 on error.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.rewind</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.seek</Name>
<ScriptType>all</ScriptType>
<Syntax>long seq.seek( long offset , long opt , long fp )</Syntax>
<Description>This changes the current file position.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.seek</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.skip</Name>
<ScriptType>all</ScriptType>
<Syntax>long seq.skip( long nrbytes , long fp )</Syntax>
<Description>This skips nrbytes bytes, relative to the current file position, in a file represented by fp. fp is the file pointer returned by seq.open() when the particular file was opened. It is equivalent to: seq.seek( nrbytes, 1, fp ).</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.skip</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.tell</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.tell( long fp )</Syntax>
<Description>This returns the current file position, relative to the beginning of the file. The file position is measured in bytes. fp is the file pointer returned by seq.open() when the particular file was opened.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.tell</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.ungetc$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  seq.ungetc$( string char , long fp )</Syntax>
<Description>This puts back a specified character, retrieved by seq.getc$(). The character will be returned by the next seq.getc$() call on that file. This function works only if something has been read from the file and if the file is buffered. fp is the file pointer returned by seq.open() when the particular file was opened.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.ungetc</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.unlink</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.unlink( string path_name(128) )</Syntax>
<Description>This deletes the file indicated by the path_name argument.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.unlink</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.unlock</Name>
<ScriptType>all</ScriptType>
<Syntax>long  seq.unlock( long mode , long offset , long size , long fp )</Syntax>
<Description>This removes a lock set by seq.lock().</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.unlock</HelpID>
</Function>
<Function Deprecated="no">
<Name>seq.write</Name>
<ScriptType>all</ScriptType>
<Syntax>long seq.write( const string buffer , long nrbytes , long fp )</Syntax>
<Description>This appends data from the specified buffer to the specified file, beginning at the current file position. The nrbytes argument indicates the number of bytes to be written to the file. fp is the file pointer returned by seq.open() when the particular file was opened.</Description>
<HelpID>/progguide/functions_directory_file_operations/seq.write</HelpID>
</Function>
<Function Deprecated="no">
<Name>stat.info</Name>
<ScriptType>all</ScriptType>
<Syntax>long  stat.info( string file_name , ref long size , ref long mode , ref long inode , ref long dev , ref long uid , ref long gid , ref long nlink , ref long ctime , ref long mtime , ref long atime )</Syntax>
<Description>This returns information about a named file. It provides the same information as fstat.info(), but for a named file.</Description>
<HelpID>/progguide/functions_directory_file_operations/stat.info</HelpID>
</Function>
<Function Deprecated="no">
<Name>exec_dll_function</Name>
<ScriptType>all</ScriptType>
<Syntax>long exec_dll_function( string dll_name , function_name function_name  [, ref void return_value]  [, void ...] )</Syntax>
<Description>This loads a specified DLL and executes a specified function within that DLL. It provides a fast algorithm for executing a DLL function that is to be executed only once. If the DLL is already loaded, the identification number of the loaded DLL is used to search for the specified function. Otherwise, a load_dll(dll_name, 0) call is executed automatically. If a function is to be called more than once, it is faster to use the load_dll(), get_function(), and exec_function() combination.</Description>
<HelpID>/progguide/functions_dll/exec_dll_function</HelpID>
</Function>
<Function Deprecated="no">
<Name>exec_function</Name>
<ScriptType>all</ScriptType>
<Syntax>long exec_function( long dll_id , long funct_id  [, ref void return_value]  [, void ...] )</Syntax>
<Description>This executes a function previously loaded by a call to get_function(). After the function has been loaded, you can call exec_function() any number of times to execute the function.</Description>
<HelpID>/progguide/functions_dll/exec_function</HelpID>
</Function>
<Function Deprecated="no">
<Name>get_function</Name>
<ScriptType>all</ScriptType>
<Syntax>long  get_function( long dll_id , string funct_name )</Syntax>
<Description>This loads a specified function from a previously loaded DLL. It returns an identification number for the function.</Description>
<HelpID>/progguide/functions_dll/get_function</HelpID>
</Function>
<Function Deprecated="no">
<Name>load_dll</Name>
<ScriptType>all</ScriptType>
<Syntax>long  load_dll( string dll_name  [, long overload] )</Syntax>
<Description>This loads a specified DLL.</Description>
<HelpID>/progguide/functions_dll/load_dll</HelpID>
</Function>
<Function Deprecated="no">
<Name>parse_and_exec_function</Name>
<ScriptType>all</ScriptType>
<Syntax>long  parse_and_exec_function( string dll_name , string function_call  [, ref void return_value]  [, ref string return_call] )</Syntax>
<Description>This function is similar to exec_dll_function(). It loads a specified DLL and parses and executes a specified function within that DLL. If the DLL is already loaded, the identification number of the loaded DLL is used to search for the specified function. Otherwise, a load_dll(dll_name, 0) call is executed automatically.</Description>
<HelpID>/progguide/functions_dll/parse_and_exec_function</HelpID>
</Function>
<Function Deprecated="no">
<Name>sql.break</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sql.break( long sql_id )</Syntax>
<Description>This stops the specified query and clears any interim results. The sql_id argument indicates the query ID, as returned by sql.parse(). The function does not remove the query itself. So the query can be reused after binding to another variable, for example.</Description>
<HelpID>/progguide/functions_dynamic_sql_queries/sql.break</HelpID>
</Function>
<Function Deprecated="no">
<Name>sql.close</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sql.close( long sql_id )</Syntax>
<Description>This deletes all internal information relating to the specified query. The sql_id argument indicates the query ID, as returned by sql.parse().</Description>
<HelpID>/progguide/functions_dynamic_sql_queries/sql.close</HelpID>
</Function>
<Function Deprecated="no">
<Name>sql.exec</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sql.exec( long sql_id )</Syntax>
<Description>This initializes the specified query and evaluates any bind variables in the WHERE clause. Before calling this function, you must previously have called sql.parse() to define the query. The sql_id argument indicates the query ID, as returned by sql.parse().</Description>
<HelpID>/progguide/functions_dynamic_sql_queries/sql.exec</HelpID>
</Function>
<Function Deprecated="no">
<Name>sql.fetch</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sql.fetch( long sql_id )</Syntax>
<Description>This reads a single query result and stores the values retrieved in the variables specified in the SELECT list. The sql_id argument indicates the query ID, as returned by sql.parse(). You must call the function for each individual record in the result set.</Description>
<HelpID>/progguide/functions_dynamic_sql_queries/sql.fetch</HelpID>
</Function>
<Function Deprecated="no">
<Name>sql.parse</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sql.parse( string query(.)  [, long mode] )</Syntax>
<Description>This defines an SQL query that you can subsequently execute and retrieve the results of by using the other dynamic SQL functions. The query takes the form of a SELECT statement (see Database handling).</Description>
<HelpID>/progguide/functions_dynamic_sql_queries/sql.parse</HelpID>
</Function>
<Function Deprecated="no">
<Name>sql.select.bind</Name>
<ScriptType>all</ScriptType>
<Syntax>long sql.select.bind( long sql_id , long pseudo_var , varname var_name(.) )</Syntax>
<Description>When you define an SQL statement with the sql.parse() function, you can define a pseudo variable for any or all of the fields specified in the SELECT statement. You do this by appending a number, prefixed by a colon [:], to each field. You use sql.select.bind() to bind a pseudo variable to a BAAN 4GL variable. As a result, the values of the field retrieved by the SELECT statement are stored in the 4GL variable. They can then be used elsewhere in the program.</Description>
<HelpID>/progguide/functions_dynamic_sql_queries/sql.select.bind</HelpID>
</Function>
<Function Deprecated="no">
<Name>sql.set.rds.full</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sql.set.rds.full( long sql_id , long size )</Syntax>
<Description>This sets the size of the RDBMS buffer. The buffer is used to send the result rows of a query from the database back to the client (that is, the bshell). For example, if a query fetches 20 rows and you have set the size of the buffer to 5, then the database sends the rows back to the client five at a time.</Description>
<HelpID>/progguide/functions_dynamic_sql_queries/sql.set.rds.full</HelpID>
</Function>
<Function Deprecated="no">
<Name>sql.where.bind</Name>
<ScriptType>all</ScriptType>
<Syntax>long sql.where.bind( long sql_id , long pseudo_var , varname var_name(.) )</Syntax>
<Description>This binds a pseudo variable from the WHERE clause of a specified SQL query to a BAAN 4GL variable. This enables the BAAN 4GL variable to be used in the WHERE clause. Note that there is no need to bind external variables.</Description>
<HelpID>/progguide/functions_dynamic_sql_queries/sql.where.bind</HelpID>
</Function>
<Function Deprecated="no">
<Name>ask.enum</Name>
<ScriptType>all</ScriptType>
<Syntax>bset ask.enum( string quescode , bset default_enumval  [, void arg, ...] )</Syntax>
<Description>This displays a message box containing a question and a number of possible responses. The responses are presented as push buttons. To respond to the question and close the message box, the user selects one of the push buttons.</Description>
<HelpID>/progguide/functions_enumerates/ask.enum</HelpID>
</Function>
<Function Deprecated="no">
<Name>enum.descr$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  enum.descr$( string domain_code(12) ,  enum_expr  [, string language_code] )</Syntax>
<Description>This returns the description associated with a specific value in an enumerated domain.</Description>
<HelpID>/progguide/functions_enumerates/enum.descr</HelpID>
</Function>
<Function Deprecated="no">
<Name>etol</Name>
<ScriptType>all</ScriptType>
<Syntax>long  etol( domain domain_value )</Syntax>
<Description>This returns the numeric code corresponding to a specified value in an enumerated domain.</Description>
<HelpID>/progguide/functions_enumerates/etol</HelpID>
</Function>
<Function Deprecated="no">
<Name>ltoe</Name>
<ScriptType>all</ScriptType>
<Syntax>domain  ltoe( long long_value )</Syntax>
<Description>This returns the named constant corresponding to a specified numeric code. The numeric code represents one of the values in an enumerated domain.</Description>
<HelpID>/progguide/functions_enumerates/ltoe</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.ask.enum.values</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.ask.enum.values( enum_constant,... enum_consdtant )</Syntax>
<Description>This restricts the values valid for the ask.enum() function. Only the values specified are shown as buttons.</Description>
<HelpID>/progguide/functions_enumerates/set.ask.enum.values</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.enum.array.for.field</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.enum.array.for.field( const string field.name , const long size , const long values )</Syntax>
<Description>In case the field is a listbox, this fills the list with a specified set of enumerate values.</Description>
<HelpID>/progguide/functions_enumerates/set.enum.array.for.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.enum.values.for.field</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.enum.values.for.field( const string field.name  [, long ALL_ENUMS_EXCEPT]  [, enum enum_value, ...] )</Syntax>
<Description>In case the field is a listbox, this fills the list with a specified set of enumerate values.</Description>
<HelpID>/progguide/functions_enumerates/set.enum.values.for.field</HelpID>
</Function>
<Function Deprecated="yes">
<Name>set.enum.values</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.enum.values( enum_constant enum_constant,... )</Syntax>
<Description>This restricts the values valid for the ask.enum() function. Only the values specified are shown as buttons.</Description>
<HelpID>/progguide/functions_enumerates/set.enum.values</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.initial.enum.values.for.field</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.initial.enum.values.for.field( const string field.name , long ALL_ENUMS_EXCEPT , enum enum_value, ... )</Syntax>
<Description>This function applies to enumerated fields that are displayed as optionset. It limits the number of options (radiobuttons) to the specified set of enum constants. Any options not specified will be hidden.</Description>
<HelpID>/progguide/functions_enumerates/set.initial.enum.values.for.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>d.expr</Name>
<ScriptType>all</ScriptType>
<Syntax>double d.expr( long expr_id , string arg )</Syntax>
<Description>Executes (or evaluates) an expression previously compiled by expr.compile. The result is always converted to a double.</Description>
<HelpID>/progguide/functions_expressions_runtime/d.expr</HelpID>
</Function>
<Function Deprecated="no">
<Name>expr.compile</Name>
<ScriptType>all</ScriptType>
<Syntax>long  expr.compile( string expression )</Syntax>
<Description>This compiles the specified expression and returns an ID number for the compiled expression. The expression can be executed subsequently using l.expr(), d.expr(), or s.expr$(). Because variables included in the expression must be know at runtime, they must be declared as external variables.</Description>
<HelpID>/progguide/functions_expressions_runtime/expr.compile</HelpID>
</Function>
<Function Deprecated="no">
<Name>expr.free</Name>
<ScriptType>all</ScriptType>
<Syntax>void  expr.free( long expr_id )</Syntax>
<Description>This frees the memory allocated to a compiled expression. expr_id is the ID of the compiled expression, as returned by expr.compile It is important to call this function when you have finished with an expression.</Description>
<HelpID>/progguide/functions_expressions_runtime/expr.free</HelpID>
</Function>
<Function Deprecated="no">
<Name>l.expr</Name>
<ScriptType>all</ScriptType>
<Syntax>long l.expr( long expr_id , string arg )</Syntax>
<Description>Executes (or evaluates) an expression previously compiled by expr.compile. The result is always converted to a long.</Description>
<HelpID>/progguide/functions_expressions_runtime/l.expr</HelpID>
</Function>
<Function Deprecated="no">
<Name>s.expr$</Name>
<ScriptType>all</ScriptType>
<Syntax>string s.expr$( long expr_id , string arg )</Syntax>
<Description>Executes (or evaluates) an expression previously compiled by expr.compile. The result is always converted to a string.</Description>
<HelpID>/progguide/functions_expressions_runtime/s.expr</HelpID>
</Function>
<Function Deprecated="no">
<Name>add.sync.fields.nokey</Name>
<ScriptType>all</ScriptType>
<Syntax>void  add.sync.fields.nokey( const string  satelliteSessionCode , const string  ... )</Syntax>
<Description>This function maps a variable in the multi-main table controller session to a variable in the session. Both of these variables must be declared as external.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/add.sync.fields.nokey</HelpID>
</Function>
<Function Deprecated="no">
<Name>add.sync.fields.once</Name>
<ScriptType>all</ScriptType>
<Syntax>void  add.sync.fields.once( const string  satelliteSessionCode , const string  ... )</Syntax>
<Description>This function maps a variable in the multi-main table controller session to a fields in the satellite session. This variable must be declared as external.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/add.sync.fields.once</HelpID>
</Function>
<Function Deprecated="no">
<Name>add.sync.fields</Name>
<ScriptType>all</ScriptType>
<Syntax>void  add.sync.fields( const string  satelliteSessionCode , const string  ... )</Syntax>
<Description>This function maps a variable in the multi-main table controller session to a fields in the satellite session. This variable must be declared as external.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/add.sync.fields</HelpID>
</Function>
<Function Deprecated="yes">
<Name>add.view.field</Name>
<ScriptType>all</ScriptType>
<Syntax>void  add.view.field( long index.nr , const string fname )</Syntax>
<Description>Deprecated. This function is supported for compatibility reasons, do not use this function anymore but use for conditional view-fields remove.field.from.view().</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/add.view.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>blank.all</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void blank.all( )</Syntax>
<Description>This clears all display fields and input fields on the current form. Display only and input only fields (that is, display and input fields that are not included in the form’s TAB sequence) are not cleared.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/blank.all</HelpID>
</Function>
<Function Deprecated="no">
<Name>change.dal.field</Name>
<ScriptType>4GL</ScriptType>
<Syntax> change.dal.field( string field , void value )</Syntax>
<Description>Changes the value of the given table field and calls the DAL Layer to update any dependent fields. Afterwards, the UI is updated.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/change.dal.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>change.field.label</Name>
<ScriptType>4GL</ScriptType>
<Syntax>long change.field.label( const string fname , long element , const string label1  [, const string label2]  [, const string label3] )</Syntax>
<Description>Use this to set the label for a specified field. A field can have up to three lines of text (label-lines). The new label-line(s) replace the current label-line(s). The function requires that the specified field already has a (dummy) label in the form-definition. When the field is not in the grid, the label in the form-definition should have at least the same number of label-lines, as specified with this function.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/change.field.label</HelpID>
</Function>
<Function Deprecated="no">
<Name>change.picture</Name>
<ScriptType>4GL</ScriptType>
<Syntax>
         void  change.picture( const string fname , const string icon  [, const string &gt;absolute.file] )</Syntax>
<Description>Static pictures stored on the server can be displayed on a form. Pictures can be added to the form using the DFE. For display of an icon, the picture must be one of the pictures in the Icon Group "form_&lt;pp&gt;", where pp is the package-code of the picture's session. For display of an image from a local file on the server, the optional argument absolute.file must be filled.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/change.picture</HelpID>
</Function>
<Function Deprecated="no">
<Name>check.all.input</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void check.all.input( )</Syntax>
<Description>This executes all check.input subsections (if any) included in the program script. When an input error is detected, the choice.again() function is automatically executed. The check.all.input function doesn't work for array fields.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/check.all.input</HelpID>
</Function>
<Function Deprecated="no">
<Name>choice.again</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  choice.again( )</Syntax>
<Description>This cancels execution of a standard command and transfers control to the 4GL engine. Statements programmed after this function will never be executed. You can call this function during execution of a standard command. You can also call the function in field sections, as these are called indirectly during execution of some commands.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/choice.again</HelpID>
</Function>
<Function Deprecated="no">
<Name>disable.commands</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  disable.commands( const string command , const string ... )</Syntax>
<Description>This disables the specified standard and/or form command(s). Standard commands are identified by their commandIDs. Form commands are identified either by a function name, a session code, or a menu code.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/disable.commands</HelpID>
</Function>
<Function Deprecated="no">
<Name>disable.fields</Name>
<ScriptType>all</ScriptType>
<Syntax>void  disable.fields(  [long mode] , string field [,occurrence],... )</Syntax>
<Description>This disables single-occurrence and multi-occurrence fields on a form.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/disable.fields</HelpID>
</Function>
<Function Deprecated="no">
<Name>disable.group</Name>
<ScriptType>all</ScriptType>
<Syntax>void  disable.group( long group.nr  [, long type]  [, long occurrence] )</Syntax>
<Description>This disables all the fields of the specified (dynamic) group. See disable.fields.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/disable.group</HelpID>
</Function>
<Function Deprecated="no">
<Name>disable.pagemode</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  disable.pagemode( )</Syntax>
<Description>This disables pagemode for this session, even when the user runs in pagemode.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/disable.pagemode</HelpID>
</Function>
<Function Deprecated="no">
<Name>disable.satellite</Name>
<ScriptType>all</ScriptType>
<Syntax>void  disable.satellite( const string session.code )</Syntax>
<Description>This disables the specified satellite. The TAB on which the satellite is shown will become disabled. When this TAB is currently active, another TAB will be selected. Initially all satellite TAB buttons are enabled.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/disable.satellite</HelpID>
</Function>
<Function Deprecated="no">
<Name>display.all</Name>
<ScriptType>all</ScriptType>
<Syntax>void display.all( )</Syntax>
<Description>Use this function to display all fields on a form. Usually, the 4GL engine displays fields automatically, either when the form is opened or when data in a related input field is changed. However, there are situations when you need to use these functions to display fields. For example, to display stand-alone fields, to display fields that are not in the input field TAB sequence, or to send data to the form during batch processes.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/display.all</HelpID>
</Function>
<Function Deprecated="no">
<Name>display.curr.occ</Name>
<ScriptType>all</ScriptType>
<Syntax>void display.curr.occ( )</Syntax>
<Description>Use this function to display all fields of the current occurrence on a form. Usually, the 4GL engine displays fields automatically, either when the form is opened or when data in a related input field is changed. However, there are situations when you need to use these functions to display fields. For example, to display stand-alone fields, to display fields that are not in the input field TAB sequence, or to send data to the form during batch processes.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/display.curr.occ</HelpID>
</Function>
<Function Deprecated="no">
<Name>display.fld</Name>
<ScriptType>all</ScriptType>
<Syntax>void display.fld( long occurrence , string field )</Syntax>
<Description>Use this functions to display a specified field of a specific occurrence on a form. Usually, the 4GL engine displays fields automatically, either when the form is opened or when data in a related input field is changed. However, there are situations when you need to use these functions to display fields. For example, to display stand-alone fields, to display fields that are not in the input field TAB sequence, or to send data to the form during batch processes.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/display.fld</HelpID>
</Function>
<Function Deprecated="no">
<Name>display.occ</Name>
<ScriptType>all</ScriptType>
<Syntax>void display.occ( long occurrence )</Syntax>
<Description>Use this function to display the fields of a specific occurrence on a form. Usually, the 4GL engine displays fields automatically, either when the form is opened or when data in a related input field is changed. However, there are situations when you need to use these functions to display fields. For example, to display stand-alone fields, to display fields that are not in the input field TAB sequence, or to send data to the form during batch processes.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/display.occ</HelpID>
</Function>
<Function Deprecated="no">
<Name>display.total.fields</Name>
<ScriptType>all</ScriptType>
<Syntax>void  display.total.fields( string fieldname1 , void value1 , string fieldname2,... , void value2,... )</Syntax>
<Description>When a total line is included in a form, this function displays total values for specified fields in the grid. The function takes one or more pairs of arguments. In each pair, the first argument is the field name; the second argument is the total value for that field.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/display.total.fields</HelpID>
</Function>
<Function Deprecated="no">
<Name>display</Name>
<ScriptType>all</ScriptType>
<Syntax>void display( string field )</Syntax>
<Description>Use this function to display a specified field on a form. Usually, the 4GL engine displays fields automatically, either when the form is opened or when data in a related input field is changed. However, there are situations when you need to use these functions to display fields. For example, to display stand-alone fields, to display fields that are not in the input field TAB sequence, or to send data to the form during batch processes.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/display</HelpID>
</Function>
<Function Deprecated="no">
<Name>do.all.occ</Name>
<ScriptType>all</ScriptType>
<Syntax>void do.all.occ( function_name function_name , function_name ... )</Syntax>
<Description>This executes the specified function for all occurrences on the current form. When included in the before.choice subsection of a choice.update.db section, the function is executed only for occurrences that are pending to be saved.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/do.all.occ</HelpID>
</Function>
<Function Deprecated="no">
<Name>do.occ.without.update</Name>
<ScriptType>all</ScriptType>
<Syntax>long do.occ.without.update( long occurrence , function_name function_name , function_name ... )</Syntax>
<Description>This executes the specified function for a specified occurrence, without any locking or update actions. After the function has been executed all fields of the specified occurrence are redisplayed.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/do.occ.without.update</HelpID>
</Function>
<Function Deprecated="no">
<Name>do.occ</Name>
<ScriptType>all</ScriptType>
<Syntax>void do.occ( long occurrence , function_name function_name , function_name ... )</Syntax>
<Description>This locks the specified occurrence (delayed lock) and executes the specified function for that occurrence. After the function has been executed all fields of the specified occurrence are redisplayed.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/do.occ</HelpID>
</Function>
<Function Deprecated="no">
<Name>do.selection</Name>
<ScriptType>all</ScriptType>
<Syntax>void do.selection( long mode , function_name function_name  [, function_name ...] )</Syntax>
<Description>This executes the specified function for all marked occurrences. Depending on the mode parameter, this executes either do.occ() or do.occ.without.update() on the currently marked records.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/do.selection</HelpID>
</Function>
<Function Deprecated="no">
<Name>enable.commands</Name>
<ScriptType>all</ScriptType>
<Syntax>void  enable.commands( const string command , const string ... )</Syntax>
<Description>This enables the specified standard and/or form command(s). Standard commands are identified by their commandIDs. Form commands are identified either by a function name, a session code, or a menu code.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/enable.commands</HelpID>
</Function>
<Function Deprecated="no">
<Name>enable.fields</Name>
<ScriptType>all</ScriptType>
<Syntax>void  enable.fields( string field,... )</Syntax>
<Description>This enables the specified single-occurrence and/or multi-occurrence field(s) on a form.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/enable.fields</HelpID>
</Function>
<Function Deprecated="no">
<Name>enable.group</Name>
<ScriptType>all</ScriptType>
<Syntax>void  enable.group( long group.nr  [, long occurrence] )</Syntax>
<Description>This enables all the fields of the specified (dynamic) group. See enable.fields.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/enable.group</HelpID>
</Function>
<Function Deprecated="no">
<Name>enable.satellite</Name>
<ScriptType>all</ScriptType>
<Syntax>void  enable.satellite( const string session.code  )</Syntax>
<Description>This enables the specified satellite. The TAB on which the satellite is shown will become enabled when it was disabled. Initially all satellite TAB buttons are enabled.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/enable.satellite</HelpID>
</Function>
<Function Deprecated="no">
<Name>enable.save.on.occ.change</Name>
<ScriptType>all</ScriptType>
<Syntax>void  enable.save.on.occ.change( )</Syntax>
<Description>Use this function to force the 4GL Engine to save an occurrence at the time the user selects or moves to another occurrence. Any unsaved changes to the occurrence, will be automatically saved. I.e. the UPDATE.DB choice is executed and the 4GL engine will continue in the previous mode (MODIFY.SET or ADD.SET).</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/enable.save.on.occ.change</HelpID>
</Function>
<Function Deprecated="no">
<Name>execute</Name>
<ScriptType>all</ScriptType>
<Syntax> execute( long command )</Syntax>
<Description>This executes the specified standard command. Normally, standard commands are activated by the user. This function enables applications to execute standard commands without user intervention. This is useful, for example, if you want to display the first record of the main table when a session is started.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/execute</HelpID>
</Function>
<Function Deprecated="no">
<Name>fields.autocomplete</Name>
<ScriptType>all</ScriptType>
<Syntax>void  fields.autocomplete( boolean try.autocomplete,...  [, string fieldname(18)] )</Syntax>
<Description>Auto-complete is automatically executed by the 4GLE for fields that have a reference path to another table and have a zoom session and has no button and is not segmented. With this function auto-complete can be turned off ( try.autocomplete = FALSE ) and on again ( try.autocomplete = TRUE ).</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/fields.autocomplete</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.current.field.label</Name>
<ScriptType>all</ScriptType>
<Syntax>long  get.current.field.label( const string fname , long element , ref string label1 to label3 )</Syntax>
<Description>This retrieves the current label text associated with the specified field. The function is relevant to dynamic forms only.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/get.current.field.label</HelpID>
</Function>
<Function Deprecated="yes">
<Name>get.field.label</Name>
<ScriptType>all</ScriptType>
<Syntax>long  get.field.label( const string fname , long element , ref string label1 to label3 )</Syntax>
<Description>This retrieves the label text associated with the specified field. The function is relevant to dynamic forms only.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/get.field.label</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.initial.field.label</Name>
<ScriptType>all</ScriptType>
<Syntax>long  get.initial.field.label( const string fname , long element , ref string label1 to label3 )</Syntax>
<Description>This retrieves the initial label text associated with the specified field. The function is relevant to dynamic forms only.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/get.initial.field.label</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.prev.value</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  get.prev.value( long value )</Syntax>
<Description>This function retrieves the field's previous value. The previous value is converted to the type of the output parameter.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/get.prev.value</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.screen.defaults</Name>
<ScriptType>all</ScriptType>
<Syntax>void  get.screen.defaults( )</Syntax>
<Description>The save.defaults standard command enables users to save the current field values of a session as the default values for that session. The get.screen.defaults() function displays the default values for all fields on all forms of the current session. It is often used at the start of update or print programs, where the user must specify some parameters before executing the session.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/get.screen.defaults</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.user.default</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  get.user.default( const string session.code , const string field , ref string field.value )</Syntax>
<Description>Returns the default value for the passed sessioncode, field combination. The default is retrieved using the current user and current company.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/get.user.default</HelpID>
</Function>
<Function Deprecated="no">
<Name>group.invisible</Name>
<ScriptType>all</ScriptType>
<Syntax>void  group.invisible( long group.nr )</Syntax>
<Description>This hides the specified group completely, including all associated fields, labels, and subgroups. The group.nr argument specifies the group number, as defined in the form editor. The group cannot be made visible again.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/group.invisible</HelpID>
</Function>
<Function Deprecated="no">
<Name>input.again</Name>
<ScriptType>all</ScriptType>
<Syntax>void  input.again( )</Syntax>
<Description>After input by a user, this forces the user to input the data again. If there is an input error, it is preferable to use set.input.error() in the check.input subsection for the field.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/input.again</HelpID>
</Function>
<Function Deprecated="no">
<Name>inputfield.invisible</Name>
<ScriptType>all</ScriptType>
<Syntax>void  inputfield.invisible( string field_name(18),... )</Syntax>
<Description>This hides the specified field(s) completely. In dynamic sessions, associated label and button are also hidden. To hide a particular element of an array field, append the element number (in parentheses) to the field name. For example: "ttadv301.labl(2)".</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/inputfield.invisible</HelpID>
</Function>
<Function Deprecated="no">
<Name>inputfield.password</Name>
<ScriptType>all</ScriptType>
<Syntax>void  inputfield.password( string field_name(18),... )</Syntax>
<Description>This causes input to the specified field to be displayed as asterisks (*). To specify a particular element of an array field, append the element number (in parentheses) to the field name. For example: "ttadv301.labl(2)".</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/inputfield.password</HelpID>
</Function>
<Function Deprecated="no">
<Name>inputfield.visible</Name>
<ScriptType>all</ScriptType>
<Syntax>void  inputfield.visible( string field_name(18) )</Syntax>
<Description>Use this to redisplay one or more fields made invisible by inputfield.invisible(). To redisplay a particular element of an array field, append the element number (in parentheses) to the field name. For example: "ttadv301.labl(2)".</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/inputfield.visible</HelpID>
</Function>
<Function Deprecated="no">
<Name>is.field.invisible</Name>
<ScriptType>all</ScriptType>
<Syntax>if not  is.field.invisible( string field_name(18) )</Syntax>
<Description>This checks whether a specified field is currently visible or invisible. To specify a particular element of an array field, append the element number (in parentheses) to the field name. For example: "ttadv301.labl(2)".</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/is.field.invisible</HelpID>
</Function>
<Function Deprecated="no">
<Name>is.field.multi.currency</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  is.field.multi.currency( string field_name(18) )</Syntax>
<Description>This returns whether a specified field is a multi currency field.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/is.field.multi.currency</HelpID>
</Function>
<Function Deprecated="no">
<Name>is.mmt.satellite</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  is.mmt.satellite( )</Syntax>
<Description>This function checks whether the current session is running as a multi-main table satellite session or not. This function can be usefull when a session can be run in standalone mode or as a satellite within a multi-main table session.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/is.mmt.satellite</HelpID>
</Function>
<Function Deprecated="no">
<Name>job.add.field</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void job.add.field( string fld_name  [, long fld_element]  [, long fld_type]  [, string fld_descr] )</Syntax>
<Description>Save other fields in the jobdata which are not on the form. All form fields are stored in the jobdata.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/job.add.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>make.current</Name>
<ScriptType>all</ScriptType>
<Syntax>void  make.current( )</Syntax>
<Description>This reads the current main table record and displays it on screen. Calling this function is similar to calling execute(find.data), except that if the specified record is not present, make.current() does not read the next record.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/make.current</HelpID>
</Function>
<Function Deprecated="no">
<Name>mark.occ</Name>
<ScriptType>all</ScriptType>
<Syntax>void  mark.occ( long occurence )</Syntax>
<Description>This marks the specified occurrence with a reverse bar, makes the marked record the current record in the database, and sets the predefined variable actual.occ to the marked occurrence.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/mark.occ</HelpID>
</Function>
<Function Deprecated="no">
<Name>occ.independent.view.field</Name>
<ScriptType>all</ScriptType>
<Syntax>void  occ.independent.view.field( string field.name )</Syntax>
<Description>This defines the specified field as occurrence independent. This means that its value is not stored in one of the records that is shown in the grid. An example is an order total field that is shown in the grid. Another example is a field that is used to filter out records.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/occ.independent.view.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>on.old.occ</Name>
<ScriptType>all</ScriptType>
<Syntax>void on.old.occ( const string function_name , const string ... )</Syntax>
<Description>This executes the specified function for the current occurrence, using the old values of the record. The record must have been previously modified.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/on.old.occ</HelpID>
</Function>
<Function Deprecated="no">
<Name>print.const</Name>
<ScriptType>all</ScriptType>
<Syntax>void  print.const( )</Syntax>
<Description>This displays a specified constant string value in the current form field. The current value of the database field is not affected.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/print.const</HelpID>
</Function>
<Function Deprecated="no">
<Name>refresh.all.occs</Name>
<ScriptType>all</ScriptType>
<Syntax>void  refresh.all.occs( )</Syntax>
<Description>This re-reads all records that are currently on the screen and refreshes them.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/refresh.all.occs</HelpID>
</Function>
<Function Deprecated="no">
<Name>refresh.curr.occ</Name>
<ScriptType>all</ScriptType>
<Syntax>void  refresh.curr.occ( )</Syntax>
<Description>This reads the current record and refreshes it on screen. All references on the form are read again. For example, in the case of a zoom from a field to a session where the record can be modified, calling refresh.curr.occ() refreshes the occurrence on the parent form also.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/refresh.curr.occ</HelpID>
</Function>
<Function Deprecated="no">
<Name>refresh.total.line</Name>
<ScriptType>all</ScriptType>
<Syntax>void  refresh.total.line( )</Syntax>
<Description>This triggers the 4GL-Engine to execute the program section: on.display.total.line. This section is not called directly but after all other sections have been executed. This function can be usefull when the total line must be updated immediately after a user action or a change of a field value. When this function is not used, the program section on.display.total.line is only called after reading a new set of records from the database.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/refresh.total.line</HelpID>
</Function>
<Function Deprecated="no">
<Name>remove.field.from.view</Name>
<ScriptType>all</ScriptType>
<Syntax>void  remove.field.from.view( const string fname )</Syntax>
<Description>The view fields for a dynamic session are determined by the view-property of a field in the DFE or, in case of dynamic index switching, by the view column in the Available Indices by Session session. You can use this function to conditionally remove a field from the view-area. E.g. based on the current index (the predefined variable curr.key).</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/remove.field.from.view</HelpID>
</Function>
<Function Deprecated="no">
<Name>remove.form.commands</Name>
<ScriptType>all</ScriptType>
<Syntax>void  remove.form.commands( string command,... )</Syntax>
<Description>This removes the specified form command(s). Form commands are identified either by a function name or a session code. There is no way to restore or create a new form command.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/remove.form.commands</HelpID>
</Function>
<Function Deprecated="no">
<Name>remove.mark</Name>
<ScriptType>all</ScriptType>
<Syntax>void  remove.mark( )</Syntax>
<Description>This function clears the selection.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/remove.mark</HelpID>
</Function>
<Function Deprecated="no">
<Name>satellite.invisible</Name>
<ScriptType>all</ScriptType>
<Syntax>void  satellite.invisible( const string session.code )</Syntax>
<Description>This hides the specified satellite. This function can only be used in section: after.form.read.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/satellite.invisible</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.checked.command</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.checked.command( string command , boolean checked )</Syntax>
<Description>Use this to check or uncheck a command in the menubar or the toolbar. This can be used to indicate to the user that the command is activated. Example:</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/set.checked.command</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.fields.default</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.fields.default( )</Syntax>
<Description>It is possible to define default values for form fields with the form editor. For all fields of the current form, this function sets the corresponding script variables to the default form values.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/set.fields.default</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.list.values.for.field</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.list.values.for.field( const string field.name.string , string no.list.values , const string list.values(,) )</Syntax>
<Description>This fills a listbox field or a combobox field with a specified set of values. The field must be a string type field, and the appearance must be set to Dropdown Listbox or Dropdown Combobox in the DFE.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/set.list.values.for.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.starting.satellite</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.starting.satellite( const string  satelliteSessionCode )</Syntax>
<Description>This function specifies which satellite should be active when the multi-main table session is started.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/set.starting.satellite</HelpID>
</Function>
<Function Deprecated="no">
<Name>standard.commands.off</Name>
<ScriptType>all</ScriptType>
<Syntax>void standard.commands.off( long command, ... )</Syntax>
<Description>In session Standard Commands (ttadv3110s000) you can define which standard commands are available to the user. E.g. you can permanently disable the File | New (ADD.SET) command by unchecking its check box.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/standard.commands.off</HelpID>
</Function>
<Function Deprecated="no">
<Name>synchronize.satellite</Name>
<ScriptType>all</ScriptType>
<Syntax>void synchronize.satellite( const string [satelliteSessionCode]* )</Syntax>
<Description>Calling this function triggers a synchronization between the header and the active satellite. Since the controller does not know which satellite is currently active, the optional argument is used to indicate for which satellites a synchronization is needed. If the active satellite is not one of the specified satellites, no synchronization is performed. If no arguments are passed a synchronization is performed regardless of which satellite is active.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/synchronize.satellite</HelpID>
</Function>
<Function Deprecated="yes">
<Name>to.field</Name>
<ScriptType>all</ScriptType>
<Syntax>void  to.field( field field )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/to.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>to.form</Name>
<ScriptType>all</ScriptType>
<Syntax>void  to.form( long form_number )</Syntax>
<Description>This forces a switch from the current form to the specified form. The form_number argument must specify an existing form in the session, and must be in the range one to the value of the predefined variable number.forms. During the switch operation, the after.form subsection of the current form is executed and the init.form and before.form subsections of the new form are executed. The init.form subsection is executed only the first time a form becomes current.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/to.form</HelpID>
</Function>
<Function Deprecated="no">
<Name>to.group</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  to.group( long group_number )</Syntax>
<Description>Use this to make the first form on which the specified group occurs the current form. This function is relevant to dynamic forms only.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/to.group</HelpID>
</Function>
<Function Deprecated="no">
<Name>unlink.from.maintable</Name>
<ScriptType>all</ScriptType>
<Syntax>void  unlink.from.maintable( string field, ... )</Syntax>
<Description>By default, when a session has a maintable, all form fields are treated as if they have a link to the maintable. When such fields are modified by the user, the maintable's update.status is set and the current record is marked as changed.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/unlink.from.maintable</HelpID>
</Function>
<Function Deprecated="no">
<Name>update.occ</Name>
<ScriptType>all</ScriptType>
<Syntax>void  update.occ( )</Syntax>
<Description>The 4GL engine automatically detects changes a user makes to a field. However, it cannot detect changes to field values made in the program script. When you modify a field of the main table in the program script, you must call update.occ() to lock the record (delayed lock) and to switch on the update.status flag of the 4GL engine. This ensures when that the database is next updated, the modifications are saved to the database. The database update action can be initiated either by the user or within the script (use execute(update.db)).</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/update.occ</HelpID>
</Function>
<Function Deprecated="no">
<Name>publish.webpart.message</Name>
<ScriptType>all</ScriptType>
<Syntax>void  publish.webpart.message( const string  type , long fromNode  [, long toNode] )</Syntax>
<Description>Sends a message to the Companyon shell, where it is passed on to any webparts registered to this message type.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/publish.webpart.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>register.webpart.handler</Name>
<ScriptType>all</ScriptType>
<Syntax>void  register.webpart.handler( const string  type , const string  handler )</Syntax>
<Description>Registers a handler for the specified message type. When a message of this type is received from a webpart the specified function is called.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/register.webpart.handler</HelpID>
</Function>
<Function Deprecated="no">
<Name>is.mmt.controller</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  is.mmt.controller( )</Syntax>
<Description>This function checks whether the current session is running as a multi-main table controller session or not. This function can be usefull when a session can be run in standalone mode or as a controller within a multi-main table session.</Description>
<HelpID>/progguide/functions_form_and_form_field_operations/is.mmt.controller</HelpID>
</Function>
<Function Deprecated="no">
<Name>edit$</Name>
<ScriptType>all</ScriptType>
<Syntax>string edit$( void expression , string format )</Syntax>
<Description>This formats an expression according to a specified format.</Description>
<HelpID>/progguide/functions_formatting_io/edit</HelpID>
</Function>
<Function Deprecated="no">
<Name>sprintf$</Name>
<ScriptType>all</ScriptType>
<Syntax>string sprintf$( string format  [, void ...] )</Syntax>
<Description>This formats a string and returns the formatted string. The format argument contains zero or more ordinary characters and substitution symbols. The ordinary characters are copied directly to the output string. The substitution symbols specify formats for the values specified in the expression arguments and are substituted by these formatted values.</Description>
<HelpID>/progguide/functions_formatting_io/sprintf</HelpID>
</Function>
<Function Deprecated="no">
<Name>string.scan</Name>
<ScriptType>all</ScriptType>
<Syntax>long string.scan( string str_expr , string format  [, void ...] )</Syntax>
<Description>This scans an input string (str_expr) for one or more fields and stores each individual field found in the first available variable argument. The format argument contains conversion symbols that the function uses to interpret the input string and retrieve the individual field values. The conversion symbols indicate the types of values expected:</Description>
<HelpID>/progguide/functions_formatting_io/string.scan</HelpID>
</Function>
<Function Deprecated="no">
<Name>vsprintf$</Name>
<ScriptType>all</ScriptType>
<Syntax>string vsprintf$( string format  [, void ...] )</Syntax>
<Description>This acts the same as sprintf$(), except that the arguments to be substituted for the substitution symbols in the format argument are not known until run time.</Description>
<HelpID>/progguide/functions_formatting_io/vsprintf</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.chdir</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.chdir( string path , long connection )</Syntax>
<Description>Change current working directory on remote system.</Description>
<HelpID>/progguide/functions_ftp/ftp.chdir</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.chmod</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.chmod( long mode , string path , long connection )</Syntax>
<Description>Change access permissions of provided path. The allowed modes are similar to the modes supported for file.chmod.</Description>
<HelpID>/progguide/functions_ftp/ftp.chmod</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.close</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.close( long connection )</Syntax>
<Description>Obsolete function. Please remove any calls to this function from your code. Using this function can crash the bshell if followed by ftp.quit.</Description>
<HelpID>/progguide/functions_ftp/ftp.close</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.command</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.command( string command , long connection )</Syntax>
<Description>Executes command on remote system. Functionality is system dependent. The manual pages of the ftp deamon may provide additional information.</Description>
<HelpID>/progguide/functions_ftp/ftp.command</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.connect</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.connect( string hostname , long connection )</Syntax>
<Description>Connect to ftp daemon on remote host. On succesful completion, a connection identifier is assigned to the connection argument. Use this identifier in all other ftp functions if such argument is required.</Description>
<HelpID>/progguide/functions_ftp/ftp.connect</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.del</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.del( string path , long connection )</Syntax>
<Description>Delete file on remote host.</Description>
<HelpID>/progguide/functions_ftp/ftp.del</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.dir</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.dir( string localfile , string path , long connection )</Syntax>
<Description>Get contents of remote directory in long format (including date/time stamps) in a local file.</Description>
<HelpID>/progguide/functions_ftp/ftp.dir</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.get</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.get( string localfile , string remotefile , long xfrmode , long connection )</Syntax>
<Description>Transfer file from remote host to local host. The xfrmode affects how the file is transferred.</Description>
<HelpID>/progguide/functions_ftp/ftp.get</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.init</Name>
<ScriptType>all</ScriptType>
<Syntax>long ftp.init( )</Syntax>
<Description>Calls OS specific initialization routines. This function need to be called once per bshell. Subsequent calls after first call to ftp.init() has no effect.</Description>
<HelpID>/progguide/functions_ftp/ftp.init</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.last.response</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.last.response( long connection , ref string response )</Syntax>
<Description>Get last response of ftp daemon on remote host. This will be helpful in case of a ftp function returns with an error value.</Description>
<HelpID>/progguide/functions_ftp/ftp.last.response</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.login</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.login( string user , string password , long connection  [, long options] )</Syntax>
<Description>Logon to ftp deamon, using a user identity. Support of username 'anonymous' and/or 'ftp' is dependent on how the ftp daemon on remote host is configured.</Description>
<HelpID>/progguide/functions_ftp/ftp.login</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.mkdir</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.mkdir( string path , long connection )</Syntax>
<Description>Create directory on remote system.</Description>
<HelpID>/progguide/functions_ftp/ftp.mkdir</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.nlst</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.nlst( string localfile , string path , long connection )</Syntax>
<Description>Get contents of remote directory in short format (file and directory names only) in a local file.</Description>
<HelpID>/progguide/functions_ftp/ftp.nlst</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.put</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.put( string localfile , string remotefile , long xfrmode , long connection )</Syntax>
<Description>Transfer file from local host to remote host. The xfrmode affects how the file is transferred.</Description>
<HelpID>/progguide/functions_ftp/ftp.put</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.quit</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.quit( long connection )</Syntax>
<Description>Close connection to ftp daemon on remote host. Any further communications to the ftp daemon on remote host is not possible after close of a connection.</Description>
<HelpID>/progguide/functions_ftp/ftp.quit</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.rename</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.rename( string source , string destination , long connection )</Syntax>
<Description>Rename directory on remote host.</Description>
<HelpID>/progguide/functions_ftp/ftp.rename</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.rmdir</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.rmdir( string path , long connection )</Syntax>
<Description>Remove an empty directory on remote system.</Description>
<HelpID>/progguide/functions_ftp/ftp.rmdir</HelpID>
</Function>
<Function Deprecated="no">
<Name>ftp.site</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ftp.site( string command , long connection )</Syntax>
<Description>Execute SITE command. Functionality is system dependent. The manual pages of the ftp deamon may provide additional information.</Description>
<HelpID>/progguide/functions_ftp/ftp.site</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.activity.action.performed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  plcm.activity.action.performed( const string activity.id )</Syntax>
<Description>Callback-function for when the activity is double-click upon.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_activity_action_performed</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.activity.deleted</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  plcm.activity.deleted( const string activity.id )</Syntax>
<Description>Callback-function for when the activity is about to be deleted in the UI.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_activity_deleted</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.activity.moved</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  plcm.activity.moved( string activity.id , long start.date , long end.date )</Syntax>
<Description>Callback-function for when the activity end-date and/or start-date have been changed in the UI.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_activity_moved</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.add.activity</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.add.activity( string parent.activity.id , string activity.id , string activity.name  [, long start.date]  [, long end.date]  [, long completion.percentage] )</Syntax>
<Description>Adds a child activity to an activity. This will cause the parent activity to be displayed as a summary bar.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_add_activity</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.add.activity.property</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.add.activity.property( string property.id , string property.label )</Syntax>
<Description>Adds a property to an activity. The property will be visualized as a column in the table part of the Gantt view.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_add_activity_property</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.add.command</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.add.command( string command.id , const string command.text )</Syntax>
<Description>Adds a custom command. This command will appear in the specific menu of the plan chart.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_add_command</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.add.constraint</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.add.constraint( string activity.id.from , string activity.id.to , long constraint.type )</Syntax>
<Description>Adds a constraint between two activities.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_add_constraint</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.add.reservation</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.add.reservation( string activity.id , string resource.id )</Syntax>
<Description>Assigns an activity to a resource.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_add_reservation</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.add.resource</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.add.resource( string parent.resource.id , string resource.id , string resource.name  [, long quantity] )</Syntax>
<Description>Adds a child resource to a resource.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_add_resource</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.add.resource.property</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.add.resource.property( string property.id , string property.label )</Syntax>
<Description>Adds a property to a resource. The property will be visualized as a column in the table part of the Schedule view.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_add_resource_property</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.add.root.activity</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.add.root.activity( string root.activity.id , string root.activity.name )</Syntax>
<Description>Call this function only once. The root activity will serve as highest level parent for all other activities. Therefore it will be displayed as summary bar in the Gantt view.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_add_root_activity</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.add.root.resource</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.add.root.resource( string root.resource.id , string root.resource.name )</Syntax>
<Description>Call this function only once. The root resource will serve as highest level parent for all other resources</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_add_root_resource</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.clear</Name>
<ScriptType>all</ScriptType>
<Syntax>long plcm.clear( )</Syntax>
<Description>Clears the plan chart in order to build up a new schedule.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_clear</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.command.performed</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.command.performed( string command.id , const long activities.context.count , const string activities.context() , const long resources.context.count , string resources.context() )</Syntax>
<Description>Callback-function for when a "custom' command has been performed in the UI.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_command_performed</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.constraint.deleted</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  plcm.constraint.deleted( const string activity.id.from , const string activity.id.to , const long constraint.type )</Syntax>
<Description>Callback-function for when the constraint is about to be deleted in the UI.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_constraint_deleted</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.create.legend.entry</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.create.legend.entry( string legend.id , long color , string description )</Syntax>
<Description>Defines a legend entry. This function must be called before the plcm.start() is called. The legend will be visualized in the underneath the plan chart.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_create_legend_entry</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.delete.activity</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.delete.activity( string activity.id )</Syntax>
<Description>Deletes an activity.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_delete_activity</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.delete.constraint</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.delete.constraint( string activity.id.from , string activity.id.to , long constraint.type )</Syntax>
<Description>Deletes a constraint between two activities.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_delete_constraint</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.delete.reservation</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.delete.reservation( string activity.id , string resource.id )</Syntax>
<Description>Deletes a reservation.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_delete_reservation</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.delete.resource</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.delete.resource( string resource.id )</Syntax>
<Description>Deletes a resource.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_delete_resource</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.init</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.init( string title , string initial.types  [, long options] )</Syntax>
<Description>This function must be the first to be called, it initializes the global data structures of the plan chart.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_init</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.move.activity</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.move.activity( string activity.id , long start.date , long end.date )</Syntax>
<Description>Sets a new start/end date for an activity</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_move_activity</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.reservation.changed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean plcm.reservation.changed( const string activity.id. , const string old.resource.id , const string new.resource.id )</Syntax>
<Description>Callback-function for when a reservation is about to change in the UI.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_reservation_changed</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.reservation.deleted</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  plcm.reservation.deleted( const string activity.id , const string resource.id )</Syntax>
<Description>Callback-function for when the reservation is about to be deleted in the UI.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_reservation_deleted</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.resource.deleted</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  plcm.resource.deleted( const string resource.id )</Syntax>
<Description>Callback-function for when the resource is about to be deleted in the UI.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_resource_deleted</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.set.activity.completion.percentage</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.set.activity.completion.percentage( string activity.id , long completion.percentage )</Syntax>
<Description>Change the completion.percentage of an activity.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_set_activity_completion_percentage</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.set.activity.end.date</Name>
<ScriptType>all</ScriptType>
<Syntax>long plcm.set.activity.end.date( string activity.id , long end.date )</Syntax>
<Description>Change the end.date of an activity.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_set_activity_end_date</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.set.activity.name</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.set.activity.name( string activity.id , string name )</Syntax>
<Description>Change the name of an activity.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_set_activity_name</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.set.activity.property.value</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.set.activity.property.value( string activity.id , string property.id , string property.value )</Syntax>
<Description>Sets an activity property. The property will be visualized in the table part of the Gantt view.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_set_activity_property_value</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.set.activity.start.date</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.set.activity.start.date( string activity.id , long start.date )</Syntax>
<Description>Change the start.date of an activity.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_set_activity_start_date</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.set.legend.for.activity</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.set.legend.for.activity( string activity.id , string legend.id )</Syntax>
<Description>Lets the complete activity refer to a legend entry. The activity will get the color of the legend.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_set_legend_for_activity</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.set.legend.for.activity.division</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.set.legend.for.activity.division( string activity.id , string legend.id , long Start.percentage , long End.percentage )</Syntax>
<Description>Lets a division of an activity refer to a legend entry. Thedivision will get the color of the legend.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_set_legend_for_activity_division</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.set.resource.name</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.set.resource.name( string resource.id , string name )</Syntax>
<Description>Change the name of a resource.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_set_resource_name</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.set.resource.property.value</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.set.resource.property.value( string resource.id , string property.id , string property.value )</Syntax>
<Description>Sets a resource property. The property will be visualized in the table part of the Schedule view.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_set_resource_property_value</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.set.resource.quantity</Name>
<ScriptType>all</ScriptType>
<Syntax>long  plcm.set.resource.quantity( string resource.id , long quantity )</Syntax>
<Description>Change the quantity of a resource.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_set_resource_quantity</HelpID>
</Function>
<Function Deprecated="no">
<Name>plcm.start</Name>
<ScriptType>all</ScriptType>
<Syntax>long plcm.start( )</Syntax>
<Description>Activates the plan chart,in other words it takes over control from the application. See also plcm.init() for more information.</Description>
<HelpID>/progguide/functions_gantt_and_schedule_charts/plcm_start</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.add.header</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.add.header( const string object.key() , string object.description() mb , long object.value )</Syntax>
<Description>Adds a header to the object tree.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.add.header</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.add.interior</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.add.interior( const string object.key() , string object.description() mb , long object.value )</Syntax>
<Description>Adds an interior node to the object tree.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.add.interior</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.add.leaf</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.add.leaf( const string object.key() , string object.description() mb , long object.value )</Syntax>
<Description>Adds a leaf node to the object tree.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.add.leaf</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.add.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.add.object( const string object.key() , const string object.description() mb , long object.value , long obj.type  [, long icon.set]  [, long default.function.id]  [, long help.function.id]  [, long drop.function.id]  [, long menumask]  [, long text.color]  [, long line.style]  [, long context.menu.id] )</Syntax>
<Description>Adds a header, interior, or leaf node to the object tree.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.add.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.bms.received</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.bms.received( long sender.id , const string mask() , const string mss() , long length )</Syntax>
<Description>This function will be called by the GBF when the GBF receives a BMS message that it cannot handle itself. The application should now deal (or ignore) this message.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.bms.received</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.create.context.menu</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.create.context.menu( )</Syntax>
<Description>This function creates a popup menu that is activated when the user clicks on the right mouse button and the mouse cursor is on a node. The popup menu is initially completely empty. The programmer has to add the popup menu items with the function gbf.set.menu.item(). After that, the developer has to bind this context menu to a certain object through a call to gbf.add.object() which has an argument context.menu.id for this so at the same time the node is created the context menu is assigned to it. Thus each node can have its own specific context menu.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.create.context.menu</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.current.library</Name>
<ScriptType>all</ScriptType>
<Syntax>string gbf.current.library( )</Syntax>
<Description>The gbf.current.library() is a macro, which is defined as: gbf.file.to.library(__FILE__). It makes an educated guess based on the current filename what the object name is.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.current.library</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.delete.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.delete.object( long obj.id )</Syntax>
<Description>Deletes the given object, identified by obj.id, including all its child objects. When obj.id is GBF.ROOT.OBJECT then all child objects will be deleted.Note that in most cases a return value from gbf.menu.selected() will do better than using this function. The object identified by obj.id is deleted from the object tree, including all its children. Deleting obj.id in case when it is part of a multiple selection has some complications. If the obj.id is in the list of current selected objects, then it will also be removed from that list, which implies that the list is now at least one element shorter than it used to be and all elements that follow this element now have a smaller index. For example, if this obj.id used to have an index of 3 (see gbf.get.selected()) then the object which used to have index 4 will now have index 3, object 5 will now be object 4 and so on. Take care that when this to be deleted obj.id, has child objects that are also in the current selection, then these will be removed to. So that the list will get even shorter and the indices of the remaining objects may have changed more than just with 1.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.delete.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.drag.drop</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.drag.drop( long drag.obj , const string drag.key() , long drag.value , long drag.type , long drop.obj , const string drop.key() , long drop.value , long drop.type , long button.mode )</Syntax>
<Description>This function will be called by the GBF when a drag and drop operation has been performed by the end-user. Note that in order to receive these function calls, the GBF must be configured for drag and drop (see gbf.init()), otherwise it will not support drag and drop. Also when the GBF is not configured for multiple select, then always only one object can be dragged and dropped.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.drag.drop</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.enable.drop</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.enable.drop( const string session.code , const string dllname , const string gbf.on.drop )</Syntax>
<Description>Allow drop operation from objects dragged from the indicated composite child sessions. When an object from the indicated session is dropped, the function passed in parameter gbf.on.drop will be called. This function must be called by the application after gbf.init() has been called but before gbf.start() is called.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.enable.drop</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.error.string</Name>
<ScriptType>all</ScriptType>
<Syntax>string gbf.error.string( long error )</Syntax>
<Description>Returns the string which represents the given error. This error should be a return value from any other GBF function call. This function translates such an (error) return value into its defined format.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.error.string</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.file.to.library</Name>
<ScriptType>all</ScriptType>
<Syntax>string  gbf.file.to.library( const string filename() )</Syntax>
<Description>Uses the given filename to guess the object name of the session. It replaces the first "p" (of program file) in the file name with an "o" (of object file) and removes the trailing digit (usually a 0, but in fact the variant number). This macro can be used when all session functions, such as gbf.get.top.level(), gbf.get.children(), gbf.menu.selected() and so on, reside in the source file name filename. When these functions gbf.get.top.level() and so on reside in the current file, gbf.current.library() should be used.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.file.to.library</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.children</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.get.children( const string object.key() , long object.value , long cur.level )</Syntax>
<Description>This function will be called by the GBF whenever it has the need for the children of a specific parent, for example after a parent is opened or after a refresh.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.children</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.current.parent</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.get.current.parent( )</Syntax>
<Description>Returns the object identification (obj.id) of the current parent, which is the parent for which the children are now asked for by the GBF. In other words, the current parent is the parent to which objects will be added with the gbf.add.object() function. This function can thus only be called during a call back to gbf.get.top.level() (in which case the return value will be the special value: GBF.ROOT.OBJECT), or during a gbf.get.children(). Unlike with gbf.get.parent() function the parents key and value are not returned by this gbf.get.current.parent() function, since that information has already been supplied with the original (gbf.get.top.level() and) gbf.get.children() function call. In case the GBF has added a special extra parent then this extra node will not be returned by this function.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.current.parent</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.cutcopy.nr</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.get.cutcopy.nr( )</Syntax>
<Description>This function returns the number of objects that have been pasted into the so-called cut, copy and paste buffers. You can use the following user actions to fill the cut, copy and paste buffers:</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.cutcopy.nr</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.cutcopy</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.get.cutcopy( long index , ref string obj.key() , ref string obj.description() , ref long obj.value )</Syntax>
<Description>This function must only be used when a call back to the main application indicates that there are one or more objects in the cut, copy and paste buffers (see gbf.get.cutcopynr()). A further use of this function is immediately after the GBF has stopped (in other words the gbf.start() function call has completed) to get the current cut or copy objects, so in this case the GBF can be used as a zoom session to pick a specific object. This function then allows you to retrieve all the cut or copy objects one by one as it returns the cut or copy object at the given index. The object is identified by the obj.key, obj.desc and obj.value, which have been given to the GBF on a gbf.add.object() call.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.cutcopy</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.description</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.get.description( long obj.id , ref string description() mb )</Syntax>
<Description>This function returns the description of the given object. In other words the description with which the object has been created ( gbf.add.object() ) or last updated (gbf.update.object()).</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.description</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.first.child</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.get.first.child( long obj.id , long force.read , ref long child.id , ref string child.key , ref long child.value , ref long child.type )</Syntax>
<Description>This function returns the first child of the given object if the children are read by the GBF (see below). The returned child.id is the GBF child identification, to be used on subsequent gbf.get.parent(), gbf.get.first.child(), gbf.get.next() and gbf.update.object() function calls. The child is further identified by the child.key and child.value, which have been given to the GBF on a preceding gbf.add.object() call.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.first.child</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.key.desc.length</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.get.key.desc.length( ref long key.length , ref long desc.length )</Syntax>
<Description>Returns the length of the key of the object and the length of the description of the object. The default length for the object key is 64 and for the object description 60.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.key.desc.length</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.next</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.get.next( long obj.id , ref long next.id , ref string next.key() , ref long next.value , ref long next.type )</Syntax>
<Description>Returns the next brother object of the given object. The returned next.id is the GBF identification, to be used on subsequent gbf.get.parent(), gbf.get.first.child() , gbf.get.next() and gbf.update.object() function calls. The next brother is further identified by the next.key and next.value, which have been given to the GBF on a preceding gbf.add.object() call.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.next</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.object.info</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.get.object.info( long object.id , ref string key() , ref string description() , ref long value , ref long type )</Syntax>
<Description>This function returns the information of the object obj.id. The returned information is the information set at the call to gbf.add.object().</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.object.info</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.open.depth</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.get.open.depth( ref long open.depth )</Syntax>
<Description>Returns the current open and read depth. This open.depth is the number of levels the GBF will display when opening an interior node. When not all of these levels have been read yet, the GBF will read the necessary levels. The default value for open.depth is 1.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.open.depth</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.open.strategy</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.get.open.strategy( ref long open.type )</Syntax>
<Description>Returns the current automatic open and close schema.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.open.strategy</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.parent</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.get.parent( long obj.id , ref long parent.id , ref string parent.key() , ref long parent.value )</Syntax>
<Description>Returns the parent of the given object. The returned parent.id is the GBF parent identification, to be used on subsequent gbf.get.parent(), gbf.get.first.child() , gbf.get.next() and gbf.update.object() function calls. The parent is further identified by the parent.key and parent.value, which have been given to the GBF on a preceding gbf.add.object() call.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.parent</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.previous</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.get.previous( long obj.id , ref long prev.id , ref string prev.key , ref long prev.value , ref long prev.type )</Syntax>
<Description>This function returns the previous brother object of the given object. The returned prev.idis the GBF identification, to be used on subsequent gbf.get.parent() , gbf.get.first.child() , gbf.get.next() and gbf.update.object() function call. The previous brother is further identified by the prev.key and prev.value, which have been given to the GBF on a preceding gbf.add.object() call.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.previous</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.print.options</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.get.print.options( ref long print.options )</Syntax>
<Description>Returns the current print options in print.options. For more details about the print.options see function gbf.set.print.options() .</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.print.options</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.read.levels</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.get.read.levels( ref long read.levels  [, ref long show.levels] )</Syntax>
<Description>Returns the current number of levels that will be read (and shown) when an application returns one of the restart return values (see: gbf.menu.selected() : for example the GBF.DO.RESTART.TREE). Initially these values are set to the values as supplied with the gbf.start() function call and can be changed using: gbf.set.read.level().</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.read.levels</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.refresh.strategy</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.get.refresh.strategy( ref long refresh.rate , ref long refresh.type )</Syntax>
<Description>Returns the current automatic refreshing schema. The two arguments will be used to store the values. If refresh.rate is 0, then the refresh.type may not be a valid type (see also gbf.set.refresh.strategy()).</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.refresh.strategy</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.resource</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.get.resource( long resource.type , ref void resource.value )</Syntax>
<Description>Returns the current value for the given resource types. The arguments are given in name value pairs. For the possible resources see gbf.set.resource() . In almost all cases the &lt;type&gt; will be long (or a domain of basic type int, long, enumerate, bitset and so on.), except when the resource.type is DsNtitle, since in this case the &lt;type&gt; must be multi-byte string.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.resource</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.search.strategy</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.get.search.strategy( ref long search.strategy )</Syntax>
<Description>Returns the current search strategy. The argument will be used to store the value. For more details about the search.strategy see function gbf.set.search.strategy().</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.search.strategy</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.selected.nr</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.get.selected.nr( )</Syntax>
<Description>This function returns the current number of selected objects. It can be used to obtain the maximum allowed index for gbf.get.selected() .</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.selected.nr</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.selected</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.get.selected( long index , ref long obj.id , string obj.key() , ref long obj.value , ref long obj.type )</Syntax>
<Description>This function must only be used when a call back to the main application indicates that there is one or more currently selected objects (see gbf.init() , gbf.menu.selected() , gbf.drag.drop() and so on). The function gbf.get.selected.nr() can be used to get the current number of selected objects. A further use of this function is immediately after the GBF has stopped (in other words the gbf.start() function call has completed) to get the current selected objects, so in this case the GBF can be used as zoom session to pick a specific object. This function then allows you to retrieve all the selected objects one by one as it returns the selected object at the given index. The returned obj.id is the GBF identification, to be used on subsequent gbf.get.parent(), gbf.get.first.child() , gbf.get.next() and gbf.update.object() function call. The object is further identified by the obj.key and obj.value, which have been given to the GBF on a preceding gbf.add.object() call.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.selected</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.sort.strategy</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.get.sort.strategy( ref long sort.strategy )</Syntax>
<Description>This function returns the current sort strategy in sort.strategy. For more details about the sort.strategy see function gbf.set.sort.strategy().</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.sort.strategy</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.get.top.level</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.get.top.level( )</Syntax>
<Description>This function will be called by the GBF after it has been started to get the top level node(s).</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.get.top.level</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.help.selected</Name>
<ScriptType>all</ScriptType>
<Syntax>void gbf.help.selected( long obj.id , const string object.key() , long object.value , long help.value )</Syntax>
<Description>This function will be called when the object has been selected followed by a menu selection or a keystroke.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.help.selected</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.init</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.init( const string library() , const string title()  [, long default.menu]  [, long default.button]  [, long default.options]  [, long standard.buttons]  [, long default.context] )</Syntax>
<Description>This function must be the first to be called, it initializes the global data structures of the GBF. It is not forbidden to reactivate a new run of the GBF in a session after a previous run of the GBF has terminated, the GBF has to clear its global variables again. This cleaning of the global variables cannot be done when leaving the GBF as at that point in time it must still be possible to get some information about the settings in order for the application to save and restore some user preferences, see for example gbf.get.refresh.strategy() and gbf.get.sort.strategy() .</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.init</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.is.displayed</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.is.displayed( const long obj.id )</Syntax>
<Description>Returns whether or not the given object is currently displayed. That is whether the obj.id can be seen and is not hidden because its parent is closed. This function can be used when walking through the object tree (see gbf.get.first.child(), gbf.get.next(), gbf.get.parent() and so on.). It is only checked whether the Generic Browser Framework has drawn the object on the virtual window, but note that it may not actually be visible (on the physical window) because the current view is currently displaying another part of that virtual window.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.is.displayed</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.menu.selected</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.menu.selected( long obj.id , const string object.key() , long object.value , long menu.option )</Syntax>
<Description>This function will be called when the object has been selected followed by a menu selection or a keystroke.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.menu.selected</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.on.drag</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.on.drag( long to.pid , const string to.session , long drag.obj , const string drag.key , long drag.value , long drag.type , reference long collection )</Syntax>
<Description>This function will be called by the GBF when one or more GBF objects are dragged from this session and dropped on another composite child session. This function will only be called when dragging to other sessions is enabled (see gbf.init() default.options, GBF.OPT.SESSION.DRAG).</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.on.drag</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.on.drop</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.on.drop( long from.pid , long collection , long drop.obj , const string drop.key , long drop.value , long drop.type , boolean copy )</Syntax>
<Description>Call back function which is passed in function gbf.enable.drop() This function will be called when a drop event from the associated session arrives. In this function the business logic related to the drop operation must be implemented.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.on.drop</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.on.selection</Name>
<ScriptType>all</ScriptType>
<Syntax>void gbf.on.selection( long obj.id , long obj.type , long transition )</Syntax>
<Description>This function will be called when the user clicks on an object. It has been made to create an extra possibility for the user to manipulate the state of the standard buttons through the function gbf.set.buttonstate() . It is recommended to use this function only for these purposes. The obj.id gives the id of the selected object and obj.type contains the type of the object, for example, GBF.LEAF, GBF.INTERIOR or GBF.HEADER. When an end user selects an object, the programmer wants to know to which state the object is moving. For example, when an object is selected and the end user clicks on the object again, then its transition state is that the object is moving from the selected state to the deselected state, thus the transition is GBF.DESELECT. When an object is not yet selected and the end user clicks on it, the transition state is from the unselected state to the selected state, thus the transition is GBF.SELECT.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.on.selection</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.save</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.save( long obj.id , const string object.key() , long object.value , long save.type )</Syntax>
<Description>This function will be called when the Save or Save+Exit menu has been called. The idea is that the main application should now save any unsaved data.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.save</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.button</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.set.button( const string button.group() , const string normal.button() , const string selected.button() , const string insensitive.button() , const string button.name() , long menu.item , long add.space )</Syntax>
<Description>Adds a button to the button bar.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.button</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.buttonstate</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.set.buttonstate( long button.id , long button.state )</Syntax>
<Description>This function regulates the state of the standard buttons. This function can only be used if the default.button mask in the function gbf.init() is set with the standard buttons that need to be controlled. The old behavour of this option was that all the standard buttons were shown but disabled. This is still the case but now it is possible to enable or disable these buttons. When, however, the standard.button mask is used then it is not possible to adjust the standard buttons using this function. The GBF will then take over controll of these buttons. This is also default behaviour. To improve the accessibility to the buttons the application function gbf.on.selection() can be used. This function is called whenever a selection is made. It is clear that the user of this function is fully responsible for the behaviour of the buttons. The following table gives the buttons that can be manipulated through this function:</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.buttonstate</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.child.function</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.child.function( const string dll_id() , const string child.function.name() , long is.default )</Syntax>
<Description>Adds a function to get children, to the set of all get children functions. If the child.function.name resides in the same source file as in which the call to this gbf.set.child.function() is made, then the function gbf.current.library() can be used, so use: gbf.set.child.function(gbf.current.library(), …).</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.child.function</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.color</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.set.color( long color , const string color.desc() )</Syntax>
<Description>Adds a description to the given color. This color.desc should be a message, which will be displayed when the Help on colors (Help -&gt; Color Descriptions…) is activated. These colors are the colors with which the actual object have been added to the GBF. See the text.color argument of the gbf.add.object() function. When using the same color then only the last color.description of this color will be remembered, even when this color.description is empty when a preceding color.description was not empty.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.color</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.desc.length</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.desc.length( long desc.length )</Syntax>
<Description>The following functions are actually defines and they are defined as:</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.desc.length</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.drop.function</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.drop.function( const string dll_id() , const string drop.function.name() , long is.default )</Syntax>
<Description>Adds a new drag and drop function to the drag and drop functions. If the drop.function.name resides in the same source file as in which the call to this gbf.set.drop.function() is made, then the function gbf.current.library() can be used, so use: gbf.set.drop.function(gbf.current.library(), …). Note that the drop.function.name function must be defined as:</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.drop.function</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.header.icon</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.set.header.icon( const string icon.group() , const string icon() , long is.default  [, const string icon.desc()] )</Syntax>
<Description>Adds a header node icon to the set of header node icons. The value, if non negative, which is returned must be used in subsequent calls to identify this icon set. Empty icons, in other words empty strings, are not allowed.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.header.icon</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.help.function</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.help.function( const string dll_id() , const string help.function.name() , long is.default )</Syntax>
<Description>This function adds a new help function to the help functions. If the help.function.name resides in the same source file as in which the call to this gbf.set.help.function() is made, then the function gbf.current.library() can be used, so use: gbf.set.help.function(gbf.current.library(), …). Note that the help.function.name function must be defined as:</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.help.function</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.interior.icon</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.set.interior.icon( const string icon.group() , const string unselected.closed() , const string unselected.open() , const string selected.closed() , string unselected.open() , long is.default  [, const string icon.desc()]  [, long context.menu] )</Syntax>
<Description>This function adds an interior node icon to the set of interior node icons. The return value, if non negative, must be used in subsequent gbf.add.object() calls to identify this icon set. Empty icons, in other words empty strings, are not allowed. It is not checked whether the icons are different, so for example it is allowed to have the same icon for both selected.open and selected.closed.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.interior.icon</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.key.desc.length</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.key.desc.length( long key.length , long desc.length )</Syntax>
<Description>This function is used to define:</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.key.desc.length</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.key.length</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.key.length( long key.length )</Syntax>
<Description>The following functions are actually defines and they are defined as:</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.key.length</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.label</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.label( const string label1 , const string label2 , const string label3 , const string label4 , const string label5 )</Syntax>
<Description>The gbf.set.label&lt;nr&gt;() functions are actually defines and they are defined as:</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.labelxxx</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.leaf.icon</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.set.leaf.icon( const string icon.group() , string unselected() , const string selected() , long is.default  [, const string icon.desc()]  [, long context.menu] )</Syntax>
<Description>Adds a leaf node icon to the set of leaf node icons. The return value, if positive, must be used in subsequent calls to identify this icon set. Empty icons, that is empty strings, are not allowed. It is not checked whether the icons are different, so for example it is allowed to have the same icon for both selected and unselected.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.leaf.icon</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.menu.function</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.set.menu.function( const string dll_id() , const string menu.function.id() , long is.default )</Syntax>
<Description>This functions adds a function to the menu functions. For more information about dll_id and menu.function.id see the standard dll manual page in the programmers manual. The dll_id is tried to be loaded with the load_dll() function call, without overload. The return value, if positive, may be used in subsequent gbf.set.menu.item() calls to identify this special menu function.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.menu.function</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.menu.head</Name>
<ScriptType>all</ScriptType>
<Syntax> long gbf.set.menu.head( string menu.text  [, long maskbit]  [, long multi.mask] )</Syntax>
<Description>Adds a menu header to the menu bar.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.menu.head</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.menu.item</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.menu.item( long menu.id , const string menu.text() , const string keystroke()  [, long is.default]  [, long menu.function.id] , long maskbit  [, long multi.mask] , long std.button )</Syntax>
<Description>Adds a menu item to the set of menu items under the heading as identified by menu.id, as well as it allows to assign a keystroke combination (such as &lt;Ctrl&gt;+A and so on.) and connect it to a standard GBF button which the GBF does not service itself.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.menu.item</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.menu.separator</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.set.menu.separator( long menu.id )</Syntax>
<Description>This function (actually: define) adds a separator to the given menu. A menu separator line is drawn in the menu which can never be selected and will generate a 0 return value. Also only BW supports these menu separator lines, but no error is generated when using this under BX.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.menu.separator</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.menu.disabled</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.menu.disabled( long menu.id , long item.id , long disable , long checked  [, long radio] )</Syntax>
<Description>The following functions are actual defines and they are defined as:</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.menu</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.open.depth</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.set.open.depth( long open.depth )</Syntax>
<Description>Sets the current open and read depth.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.open.depth</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.open.strategy</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.open.strategy( long open.strategy )</Syntax>
<Description>These functions set the open or close strategy, which is what the GBF should do when an interior node is closed and opened again as well as what should be done on the Open All menu item or Ctrl+O keystroke.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.open</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.open.child</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.open.child( long open.strategy )</Syntax>
<Description>These functions set the open or close strategy, which is what the GBF should do when an interior node is closed and opened again as well as what should be done on the Open All menu item or Ctrl+O keystroke.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.open</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.open.read</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.open.read( long open.strategy )</Syntax>
<Description>These functions set the open or close strategy, which is what the GBF should do when an interior node is closed and opened again as well as what should be done on the Open All menu item or Ctrl+O keystroke.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.open</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.open.what</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.open.what( long open.strategy )</Syntax>
<Description>These functions set the open or close strategy, which is what the GBF should do when an interior node is closed and opened again as well as what should be done on the Open All menu item or Ctrl+O keystroke.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.open</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.print.options</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.print.options( long print.options )</Syntax>
<Description>This function sets the print options.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.print.options</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.read.levels</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.set.read.levels( long read.levels  [, long show.levels] )</Syntax>
<Description>Sets the current number of levels that will be read (and shown) when an application returns one of the restart return values (see: gbf.menu.selected(): for example the GBF.DO.RESTART.TREE).</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.read.levels</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.refresh.strategy</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.refresh.strategy( long refresh.rate , long refresh.type )</Syntax>
<Description>Sets the automatic refresh rate and strategy, which means that after refresh.rate milliseconds the tree as maintained by GBF will be refreshed using the indicated strategy. A value of 0 for refresh.rate means no automatic refreshing and that refresh.type is ignored. The timing starts immediately after this function call when the GBF is already active, or immediately after the gbf.start() call.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.refresh.strategy</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.resource</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.resource( long resource.type , void resource.value )</Syntax>
<Description>This function sets the resources given by resource.type to the given resource.value. The arguments are given in name value pairs.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.resource</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.search.strategy</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.search.strategy( long search.strategy )</Syntax>
<Description>The function gbf.set.search.strategy sets the search strategy, which means that starting with the next search, this strategy will be used.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.searchxxx</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.search.headers</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.search.headers( long search.strategy )</Syntax>
<Description>The function gbf.set.search.strategy sets the search strategy, which means that starting with the next search, this strategy will be used.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.searchxxx</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.search.sensitive</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.search.sensitive( long search.strategy )</Syntax>
<Description>The function gbf.set.search.strategy sets the search strategy, which means that starting with the next search, this strategy will be used.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.searchxxx</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.search.set</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.search.set( long search.strategy )</Syntax>
<Description>The function gbf.set.search.strategy sets the search strategy, which means that starting with the next search, this strategy will be used.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.searchxxx</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.search.what</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.search.what( long search.strategy )</Syntax>
<Description>The function gbf.set.search.strategy sets the search strategy, which means that starting with the next search, this strategy will be used.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.searchxxx</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.selected</Name>
<ScriptType>all</ScriptType>
<Syntax> gbf.set.selected( long obj.id )</Syntax>
<Description>This function can be used to set the selected object in a GBF</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.selected</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.sort.strategy</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.sort.strategy( long sort.strategy )</Syntax>
<Description>This function sets the automatic sort strategy, which tells the GBF how to sort the child nodes of an interior node. The sort.strategy is the same for the whole tree, that is it is not possible to define different sort strategies for different interior nodes. If this is really wanted, then the application should be doing the sorting.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.sort.strategy</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.std.menu</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.set.std.menu( long menu.pattern , long disabled , checked Parameter )</Syntax>
<Description>The following functions are actual defines and they are defined as:</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.std.menu</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.set.tree.report.subtitle</Name>
<ScriptType>all</ScriptType>
<Syntax>void gbf.set.tree.report.subtitle( const string sub.title(80) mb )</Syntax>
<Description>This function can be used to set the subtitle for the ASCII print report. The default value for this variable, which represents a subtitle for this report, is</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.set.tree.report.subtitle</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.start</Name>
<ScriptType>all</ScriptType>
<Syntax>long  gbf.start( long read.levels , long show.levels )</Syntax>
<Description>Activates the GBF,in other words it takes over control from the application. See also gbf.init() for more information.</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.start</HelpID>
</Function>
<Function Deprecated="no">
<Name>gbf.update.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long gbf.update.object( long obj.id , long object.description() mb  [, long icon.set]  [, long default.function.id]  [, long drop.function.id]  [, long menumask]  [, long text.color]  [, long line.style] )</Syntax>
<Description>All but gbf.update.object() are defines and these functions are defined as:</Description>
<HelpID>/progguide/functions_generic_browser_frameworkf/gbf.update</HelpID>
</Function>
<Function Deprecated="no">
<Name>bind.image</Name>
<ScriptType>4GL</ScriptType>
<Syntax>boolean bind.image( string fieldname , string guidField  [, string tablename] )</Syntax>
<Description>This function is used bind an image form field to the (table) field which holds the application GUID value. This function must be called from the after.form.read: section in the application UI script.</Description>
<HelpID>/progguide/functions_images/bind.image</HelpID>
</Function>
<Function Deprecated="no">
<Name>check.image.present</Name>
<ScriptType>4GL</ScriptType>
<Syntax>boolean check.image.present( string guid  [, string tablename] )</Syntax>
<Description>This function will check if an image set is already present in the repository.</Description>
<HelpID>/progguide/functions_images/check.image.present</HelpID>
</Function>
<Function Deprecated="no">
<Name>copy.image</Name>
<ScriptType>4GL</ScriptType>
<Syntax>long copy.image( string source.guid , string source.tablename , string target.guid , string target.tablename  [, boolean overwrite] )</Syntax>
<Description>This function will copy an image or set of images based on its guid into then image repository refered by the target guid. This function can be used when copying records.</Description>
<HelpID>/progguide/functions_images/copy.image</HelpID>
</Function>
<Function Deprecated="no">
<Name>discard.changed.image</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void discard.changed.image( string fieldname )</Syntax>
<Description>This function will discard an image which was possibly dropped on an image control and discard the saved backup image after a delete. This function is usually called from the after.choice section of choice: recover.set.</Description>
<HelpID>/progguide/functions_images/discard.changed.image</HelpID>
</Function>
<Function Deprecated="no">
<Name>is.image.dropped</Name>
<ScriptType>4GL</ScriptType>
<Syntax>boolean is.image.dropped( string fieldname )</Syntax>
<Description>This function can be used to check if an image has been dropped onto the image field or the image is deleted which is not yet saved or discarded.</Description>
<HelpID>/progguide/functions_images/is.image.changed</HelpID>
</Function>
<Function Deprecated="no">
<Name>save.image.field</Name>
<ScriptType>4GL</ScriptType>
<Syntax>boolean save.image.field( string fieldname )</Syntax>
<Description>This function is used to save an image, which is dropped onto the image control, into the repository or delete the image from the repository if deleted by the user. When an image with the bound guid already exists, it will be overwritten. This function should be called from the after.update.db.commit: section in a UI script and is only allowed when the image field is bound using bind.image()</Description>
<HelpID>/progguide/functions_images/save.image.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>save.image.file</Name>
<ScriptType>4GL</ScriptType>
<Syntax>boolean save.image.file( string guid , long sequence , string pathname  [, string tablename] )</Syntax>
<Description>This function will save an image file into the image repository (put it at proper place in directory and update the image table). This function can be used by an image import application.</Description>
<HelpID>/progguide/functions_images/save.image.file</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.clearerr</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.clearerr( long bytearray )</Syntax>
<Description>Resets the error and end-of-byte-array indicator.</Description>
<HelpID>/progguide/functions_ims/ims.clearerr</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.close</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.close( long bytearray )</Syntax>
<Description>Closes the byte array. This is done automaticallly when you leave your process.</Description>
<HelpID>/progguide/functions_ims/ims.close</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.eof</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.eof( long bytearray )</Syntax>
<Description>Detects if the end of the byte array is reached.</Description>
<HelpID>/progguide/functions_ims/ims.eof</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.error</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.error( long bytearray )</Syntax>
<Description>Detects if an error has occurred while reading from or writing to the byte array.</Description>
<HelpID>/progguide/functions_ims/ims.error</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.getc$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  ims.getc$( long bytearray )</Syntax>
<Description>Returns the next character from the byte array.</Description>
<HelpID>/progguide/functions_ims/ims.getc</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.getproperties</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.getproperties( long bytearray , ref string buffer  [, ref long size] )</Syntax>
<Description>Returns the properties of the byte array.</Description>
<HelpID>/progguide/functions_ims/ims.getproperties</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.gets</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.gets( ref string line , long size , long opt , long bytearray  [, long skip.mode]  [, long there.was.more] )</Syntax>
<Description>Reads characters from the byte array into a buffer (line).</Description>
<HelpID>/progguide/functions_ims/ims.gets</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.openfba</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.openfba( string buffer , long size , string type )</Syntax>
<Description>Opens a Fixed Byte Array (FBA).</Description>
<HelpID>/progguide/functions_ims/ims.openfba</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.openvba</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.openvba( string type  [, long initialSize]  [, long increment] )</Syntax>
<Description>Opens a Variable Byte Array (VBA).</Description>
<HelpID>/progguide/functions_ims/ims.openvba</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.putc$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  ims.putc$( string char , long bytearray )</Syntax>
<Description>Writes a character to the current position in the byte array.</Description>
<HelpID>/progguide/functions_ims/ims.putc</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.puts</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.puts( string line , long bytearray )</Syntax>
<Description>Writes a line (and a new-line character) to the byte array.</Description>
<HelpID>/progguide/functions_ims/ims.puts</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.r.long</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.r.long( long bytearray )</Syntax>
<Description>Reads a long value from the byte array</Description>
<HelpID>/progguide/functions_ims/ims.r.long</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.r.short</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.r.short( long bytearray )</Syntax>
<Description>Reads a short value from the byte array</Description>
<HelpID>/progguide/functions_ims/ims.r.short</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.read</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.read( ref string buffer , long nrBytes , long bytearray )</Syntax>
<Description>Reads a number of bytes from the byte array into a buffer.</Description>
<HelpID>/progguide/functions_ims/ims.read</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.rewind</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.rewind( long bytearray )</Syntax>
<Description>Sets the position in byte array to the beginning.</Description>
<HelpID>/progguide/functions_ims/ims.rewind</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.seek</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.seek( long offset , long opt , long bytearray )</Syntax>
<Description>Changes the current position within the byte array.</Description>
<HelpID>/progguide/functions_ims/ims.seek</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.setvbaproperties</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.setvbaproperties( long bytearray , long increment )</Syntax>
<Description>Sets the properties of the Variable Byte Array (VBA).</Description>
<HelpID>/progguide/functions_ims/ims.setvbaproperties</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.skip</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.skip( long nrbytes , long bytearray )</Syntax>
<Description>Skips forward a number of bytes in the byte array.</Description>
<HelpID>/progguide/functions_ims/ims.skip</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.spool.line</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.spool.line( ref string line , long bytearray )</Syntax>
<Description>Spools a line and writes it to the byte array. The characters in the line are copied to the byte array until the last non-white character in the line is encountered. After that, the contents of the line is cleared.</Description>
<HelpID>/progguide/functions_ims/ims.spool.line</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.tell</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.tell( long byetarray )</Syntax>
<Description>Returns the current offset within the byte array relative to the begin of the byte array.</Description>
<HelpID>/progguide/functions_ims/ims.tell</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.w.long</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.w.long( long value , long bytearray )</Syntax>
<Description>Writes a value of data type long into the byte array</Description>
<HelpID>/progguide/functions_ims/ims.w.long</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.w.short</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.w.short( long value , long bytearray )</Syntax>
<Description>Writes a value of data type short into the byte array</Description>
<HelpID>/progguide/functions_ims/ims.w.short</HelpID>
</Function>
<Function Deprecated="no">
<Name>ims.write</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ims.write( string buffer , long nrBytes , long bytearray )</Syntax>
<Description>Appends a given number of bytes from the buffer into the byte array, beginning at the current position in the byte array.</Description>
<HelpID>/progguide/functions_ims/ims.write</HelpID>
</Function>
<Function Deprecated="no">
<Name>bms.add.mask</Name>
<ScriptType>all</ScriptType>
<Syntax>void  bms.add.mask( string mask  [, long processno] )</Syntax>
<Description>This adds the specified mask to a process. If you specify a process number, the mask is added to that process. Otherwise, the mask is added to the current process.</Description>
<HelpID>/progguide/functions_interprocess_communication_bshell/bms.add.mask</HelpID>
</Function>
<Function Deprecated="no">
<Name>bms.delete.mask</Name>
<ScriptType>all</ScriptType>
<Syntax>void  bms.delete.mask( string mask  [, long processno] )</Syntax>
<Description>This removes the specified mask from a process. If you specify a process number, the mask is removed from that process. Otherwise, the mask is removed from the current process.</Description>
<HelpID>/progguide/functions_interprocess_communication_bshell/bms.delete.mask</HelpID>
</Function>
<Function Deprecated="no">
<Name>bms.receive.buffer</Name>
<ScriptType>all</ScriptType>
<Syntax>long  bms.receive.buffer( ref string broadcast , ref long no.bytes  [, long level]  [, long wait.flag]  [, ref string mask] )</Syntax>
<Description>Use this to receive a broadcast message. The function can retrieve a complete record, including ‘\0’ characters.</Description>
<HelpID>/progguide/functions_interprocess_communication_bshell/bms.receive.buffer</HelpID>
</Function>
<Function Deprecated="no">
<Name>bms.receive$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  bms.receive$(  [ref long level]  [, long wait.flag]  [, ref string mask] )</Syntax>
<Description>Use this to receive a broadcast message. If no arguments are included, the function returns the first broadcast message sent to the process.</Description>
<HelpID>/progguide/functions_interprocess_communication_bshell/bms.receive</HelpID>
</Function>
<Function Deprecated="no">
<Name>bms.send</Name>
<ScriptType>all</ScriptType>
<Syntax>long  bms.send( string broadcast , long level_or_evt , string mask , long processno  [, long no.bytes] )</Syntax>
<Description>Use this to send a broadcast message to one or more processes.</Description>
<HelpID>/progguide/functions_interprocess_communication_bshell/bms.send</HelpID>
</Function>
<Function Deprecated="no">
<Name>receive.bucket$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  receive.bucket$( long processno )</Syntax>
<Description>This waits for a bucket message to be sent to the calling process by another process. It then returns that message. The processno argument returns the process ID of the sending process.</Description>
<HelpID>/progguide/functions_interprocess_communication_bshell/receive.bucket</HelpID>
</Function>
<Function Deprecated="no">
<Name>send.bucket</Name>
<ScriptType>all</ScriptType>
<Syntax>long  send.bucket( long processno , string bucket )</Syntax>
<Description>This sends a bucket message to a specified process. If the specified process is sleeping, it is automatically started. It can retrieve the message by calling receive.bucket$().</Description>
<HelpID>/progguide/functions_interprocess_communication_bshell/send.bucket</HelpID>
</Function>
<Function Deprecated="no">
<Name>send.wait</Name>
<ScriptType>all</ScriptType>
<Syntax>long  send.wait( long processno , string bucket )</Syntax>
<Description>This sends a bucket message to a specified process and waits for a reply. The receiving process must send a reply by using send.bucket() or send.wait(). Note that the waiting process cannot receive any message string contained in the reply.</Description>
<HelpID>/progguide/functions_interprocess_communication_bshell/send.wait</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.accept</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sock.accept( long socket )</Syntax>
<Description>A server process uses this to accept a connection request received on a socket created by sock.listen(). The function returns a valid connected socket on which the server process can send data to and receive data from the client process.</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.accept</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.clearerr</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sock.clearerr( long socket )</Syntax>
<Description>This resets the error and end-of-file indicators on the specified socket.</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.clearerr</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.close</Name>
<ScriptType>all</ScriptType>
<Syntax>long sock.close( long socket  [, long linger.timeout] )</Syntax>
<Description>This closes a specified socket.</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.close</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.connect</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sock.connect( string host.name , string service.name , long timeout )</Syntax>
<Description>A client process uses this to initiate a socket connection with a specified server. If the server accepts the connection request, the function returns a valid connected socket on which the client process can send data to and receive data from the server process. The function does not return until either there is a valid connection, or the connection request fails, or a specified timeout expires.</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.connect</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.daemon.connect</Name>
<ScriptType>all</ScriptType>
<Syntax>long sock.daemon.connect( )</Syntax>
<Description>This function can be used from a process that is started with the x call. On success, it returns the socket that can be used to communicate with the activating process by means of the x and x functions.</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.daemon.connect</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.eof</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sock.eof( long socket )</Syntax>
<Description>This checks the end-of-file indicator on the specified socket. Note that the end-of-file indicator lasts until the socket is closed, unless you explicitly clear it by calling sock.clearerr().</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.eof</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.error</Name>
<ScriptType>all</ScriptType>
<Syntax>long sock.error( long socket )</Syntax>
<Description>This checks the error indicator on the specified socket to determine whether an error has occurred when reading or writing to the socket. Note that the error indicator lasts until the socket is closed, unless you explicitly clear it by calling sock.clearerr().</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.error</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.flush</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sock.flush( long socket )</Syntax>
<Description>You use sock.send() to place data in the send buffer of a connected socket. The data is automatically transferred on the socket when the buffer is full. But you can also call sock.flush() to transfer the data on the socket.</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.flush</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.inherit</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sock.inherit( long socket )</Syntax>
<Description>A process calls this function in order to take over ownership of a specified socket from another process. The socket is removed from the list of open files for the process that originally owned the socket; it is added to the list of open files for the calling process. The socket is automatically closed when the new owner process terminates.</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.inherit</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.listen</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sock.listen( string service.name  [, long options] )</Syntax>
<Description>A server calls this function to create a listen socket that it can use to receive connection requests from clients. The function binds the new socket to the address specified by INADDR_ANY and the service specified by . It returns a valid listen socket that sock.accept() can access in order to accept connection requests.</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.listen</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.recv</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sock.recv( long socket , ref string data , long num.bytes )</Syntax>
<Description>Both client and server processes use this function to read data from a specified connected socket. The function returns only when the number of bytes specified by has been received.</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.recv</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.send</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sock.send( long socket , string data , long num.bytes )</Syntax>
<Description>You use sock.send() to place data in the send buffer of a connected socket. The data is automatically transferred on the socket when the buffer is full. But you can also call sock.flush() to transfer the data on the socket.</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.send</HelpID>
</Function>
<Function Deprecated="no">
<Name>sock.start.process</Name>
<ScriptType>all</ScriptType>
<Syntax>string  sock.start.process( ref string error.code , const string hostname , long protocol , long port , const string remote.bse , const string os.user.name , const string password , const string bse.user.name , const string remote.prog , const string remote.prog.opts , const string remote.obj ,  ... )</Syntax>
<Description>These functions allow to start a 3GL process in another bshell on the local host within the current BSE using sock.start.process.local() on a different host using the r&lt;user&gt; files using sock.start.process.remote() on a different host using supplied user name and password using sock.start.process() This function comes in three flavors. The following function starts a process on the local host in the current BSE. long sock.start.process.local( ref string error.msg, const string prog, const string prog.opts, const string object, ...) The following function starts a remote process on the specified host, using the connection parameters stored in the $BSE/lib/user/r&lt;user&gt; file. long sock.start.process.remote( ref string error.msg, const string hostname, const string prog, const string prog.opts, const string object, ...) The following function starts a remote process on any host using the specified connection paramaters. long sock.start.process( ref string error.msg, const string hostname, long protocol, long port, const string remote.bse, const string os.user.name, const string password, const string bse.user.name, const string remote.prog, const string remote.prog.opts, const string remote.obj, ...)</Description>
<HelpID>/progguide/functions_interprocess_communication_cross_platform/sock.start.process</HelpID>
</Function>
<Function Deprecated="no">
<Name>close.message</Name>
<ScriptType>all</ScriptType>
<Syntax>void  close.message( long key  [, long fast] )</Syntax>
<Description>This removes the specified mailbox. All messages in the mailbox are also automatically removed.</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/close.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>open.message</Name>
<ScriptType>all</ScriptType>
<Syntax>long  open.message( long project , string name$ , long action  [, long fast] )</Syntax>
<Description>Use this to create a new mailbox or to connect to an existing mailbox. You must call this function before you can read from or write to the mailbox.</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/open.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>pipe.clearerr</Name>
<ScriptType>all</ScriptType>
<Syntax>long  pipe.clearerr( long pipe_id )</Syntax>
<Description>This resets the error and end-of-file indicators on the specified pipe.</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/pipe.clearerr</HelpID>
</Function>
<Function Deprecated="no">
<Name>pipe.close</Name>
<ScriptType>all</ScriptType>
<Syntax>long  pipe.close( long pipe_id )</Syntax>
<Description>This clears any buffers associated with the specified pipe and closes the file. Buffers allocated by the standard input/output system are also cleared. Note that pipe.close() is performed automatically when the process exits.</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/pipe.close</HelpID>
</Function>
<Function Deprecated="no">
<Name>pipe.eof</Name>
<ScriptType>all</ScriptType>
<Syntax>long  pipe.eof( long pipe_id )</Syntax>
<Description>This checks the end-of-file indicator on the specified pipe. Note that the end-of-file indicator lasts until the pipe is closed, unless you explicitly clear it by calling pipe.clearerr().</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/pipe.eof</HelpID>
</Function>
<Function Deprecated="no">
<Name>pipe.error</Name>
<ScriptType>all</ScriptType>
<Syntax>long  pipe.error( long pipe_id )</Syntax>
<Description>This checks the error indicator on the specified pipe to determine whether an error has occurred when reading or writing to the pipe. Note that the error indicator lasts until the pipe is closed, unless you explicitly clear it by calling pipe.clearerr().</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/pipe.error</HelpID>
</Function>
<Function Deprecated="no">
<Name>pipe.flush</Name>
<ScriptType>all</ScriptType>
<Syntax>long  pipe.flush( long pipe_id )</Syntax>
<Description>This writes any buffered data associated with a pipe to the related file. The stream remains open.</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/pipe.flush</HelpID>
</Function>
<Function Deprecated="no">
<Name>pipe.gets</Name>
<ScriptType>all</ScriptType>
<Syntax>long  pipe.gets( ref string line , long nr_of_bytes , long pipe_id )</Syntax>
<Description>This reads a maximum of one line from the specified pipe.</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/pipe.gets</HelpID>
</Function>
<Function Deprecated="no">
<Name>pipe.open</Name>
<ScriptType>all</ScriptType>
<Syntax>long  pipe.open( string pathnm , string openmode )</Syntax>
<Description>This creates a UNIX process with the specified name and links an input and/or output stream to it. It returns a pointer to the pipe; this is used to identify the pipe in subsequent operations.</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/pipe.open</HelpID>
</Function>
<Function Deprecated="no">
<Name>pipe.puts</Name>
<ScriptType>all</ScriptType>
<Syntax>long  pipe.puts( string line , long pipe_id )</Syntax>
<Description>This writes data to the specified pipe. It automatically appends a newline character to the data.</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/pipe.puts</HelpID>
</Function>
<Function Deprecated="no">
<Name>pipe.read</Name>
<ScriptType>all</ScriptType>
<Syntax>long  pipe.read( ref string buffer , long nr_of_bytes , long pipe_id )</Syntax>
<Description>This reads a specified number of bytes from the specified pipe.</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/pipe.read</HelpID>
</Function>
<Function Deprecated="no">
<Name>pipe.write</Name>
<ScriptType>all</ScriptType>
<Syntax>long  pipe.write( string buffer , long nr_of_bytes , long pipe_id )</Syntax>
<Description>This appends a specified number of bytes to the specified pipe.</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/pipe.write</HelpID>
</Function>
<Function Deprecated="no">
<Name>recv.message</Name>
<ScriptType>all</ScriptType>
<Syntax>long  recv.message( long key , long sender.key , long time , ref string message$  [, long fast] )</Syntax>
<Description>This reads a message from the specified mailbox. The process must previously have connected to the mailbox by calling open.message().</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/recv.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>send.message</Name>
<ScriptType>all</ScriptType>
<Syntax>long  send.message( long dest.key , long sender.key , string message$ , long fast )</Syntax>
<Description>This stores a message in the specified mailbox. The process must previously have connected to the mailbox by calling open.message().</Description>
<HelpID>/progguide/functions_interprocess_communication_os_level/send.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>java.destroy.queue</Name>
<ScriptType>all</ScriptType>
<Syntax>long  java.destroy.queue( long Queue.id )</Syntax>
<Description>Removes a queue, given the queue id. This will also remove all buckets on that queue!!</Description>
<HelpID>/progguide/functions_javavm/java.destroy.queue</HelpID>
</Function>
<Function Deprecated="no">
<Name>java.execute.static.method.sync</Name>
<ScriptType>all</ScriptType>
<Syntax>long java.execute.static.method.sync( string class.name , string method.name  [, void ...] )</Syntax>
<Description>Executes a Java static method, with no return type, within the JavaVM. java.execute.static.method.sync() returns to the caller AFTER completion of the Java method. Java.execute.static.method.async() returns to the caller BEFORE completion of the Java method.</Description>
<HelpID>/progguide/functions_javavm/java.execute.static.method.sync</HelpID>
</Function>
<Function Deprecated="no">
<Name>java.execute.static.method.async</Name>
<ScriptType>all</ScriptType>
<Syntax>long java.execute.static.method.async( string class.name , string method.name  [, void ...] )</Syntax>
<Description>Executes a Java static method, with no return type, within the JavaVM. java.execute.static.method.sync() returns to the caller AFTER completion of the Java method. Java.execute.static.method.async() returns to the caller BEFORE completion of the Java method.</Description>
<HelpID>/progguide/functions_javavm/java.execute.static.method.sync</HelpID>
</Function>
<Function Deprecated="no">
<Name>java.get.bucket</Name>
<ScriptType>all</ScriptType>
<Syntax>long  java.get.bucket( long Queue.id , ref string body , long length  [, ref string header] )</Syntax>
<Description>Retrieves a bucket from the queue (if available). The message is removed from the queue afterwards.</Description>
<HelpID>/progguide/functions_javavm/java.get.bucket</HelpID>
</Function>
<Function Deprecated="no">
<Name>java.install.listener</Name>
<ScriptType>all</ScriptType>
<Syntax>long  java.install.listener( long Queue.id  [, long become.owner] )</Syntax>
<Description>Installs a listener at the Infor ERP LN side. Whenever a message arrives on the queue specified by queue.id, the 3GL process will be notified by an EVT_CHANNEL_EVENT event. For installation of a listener at the Java side, see the Java IQeueListener interface definition.</Description>
<HelpID>/progguide/functions_javavm/java.install.listener</HelpID>
</Function>
<Function Deprecated="no">
<Name>java.lookup.queue</Name>
<ScriptType>all</ScriptType>
<Syntax>long  java.lookup.queue( long Queue.id  [, ref string header] )</Syntax>
<Description>Checks whether a queue is still valid and, if so, if the queue contains a message. The message is not removed from the queue.</Description>
<HelpID>/progguide/functions_javavm/java.lookup.queue</HelpID>
</Function>
<Function Deprecated="no">
<Name>java.new.queue</Name>
<ScriptType>all</ScriptType>
<Syntax>long  java.new.queue( )</Syntax>
<Description>Creates a new queue for buckets. Upon return, the new queue.id is returned, or an error code is presented. NOTE: queues are removed automatically if the process that created it (or the process that called java.install.listener(…) on that queue) is finished !! See also the 3GL function java.install.listener.</Description>
<HelpID>/progguide/functions_javavm/java.new.queue</HelpID>
</Function>
<Function Deprecated="no">
<Name>java.put.bucket</Name>
<ScriptType>all</ScriptType>
<Syntax>long  java.put.bucket( long Queue.id , string body , long length  [, string header] )</Syntax>
<Description>Places a message onto a queue. The message contains a header (of type string) and a body (which can contain any character).</Description>
<HelpID>/progguide/functions_javavm/java.put.bucket</HelpID>
</Function>
<Function Deprecated="no">
<Name>java.uninstall.listener</Name>
<ScriptType>all</ScriptType>
<Syntax>long  java.uninstall.listener( long Queue.id )</Syntax>
<Description>Uninstalls a listener at the Infor ERP LN side. All buckets on this queue will remain available. The listener can only be uninstalled by the process that installed the listener.</Description>
<HelpID>/progguide/functions_javavm/java.uninstall.listener</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.addFunctionArg</Name>
<ScriptType>all</ScriptType>
<Syntax>void jca.addFunctionArg( long i_funcall , const string i_scope , const string i_type , const string i_name  [, long i_size] )</Syntax>
<Description>Adds an argument definition to the specified JCA Function Call definition. Note that the sequence in which the arguments are added to the JCA Function Call must be in accordance with the 3GL function definition that is to be executed.</Description>
<HelpID>/progguide/functions_jca/jca.addfunctionarg</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.close</Name>
<ScriptType>all</ScriptType>
<Syntax>long jca.close( )</Syntax>
<Description>Closes the JCA Connection of this 3GL process. After this call, a jca.connect must be done again to re-establish a JCA connection.</Description>
<HelpID>/progguide/functions_jca/jca.close</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.closeBde</Name>
<ScriptType>all</ScriptType>
<Syntax>long jca.closeBde( )</Syntax>
<Description>Closes the current BDE Manager on the server of the current 3GL process. The BDE Manager will first handle any request it is processing before it closes.</Description>
<HelpID>/progguide/functions_jca/jca.closebde</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.connect</Name>
<ScriptType>all</ScriptType>
<Syntax>long jca.connect( const string i_hostname , long i_port , const string i_bse , const string i_osUsername , const string i_password , const string i_bseUsername , const string i_bshellname , const string i_bshellargs , long i_company )</Syntax>
<Description>Connects the current 3GL process to a bshell using the specified connection parameters. A 3GL process can have one JCA connection at a time.</Description>
<HelpID>/progguide/functions_jca/jca.connect</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.createFunctionCall</Name>
<ScriptType>all</ScriptType>
<Syntax>long jca.createFunctionCall( const string i_dll , const string i_function , const string i_returntype )</Syntax>
<Description>Creates a JCA Function Call definition which can be executed by an open BDE Manager. To this Function Call structure, arguments including their values can be added, as required.</Description>
<HelpID>/progguide/functions_jca/jca.createfunctioncall</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.deleteFunctionCall</Name>
<ScriptType>all</ScriptType>
<Syntax>void jca.deleteFunctionCall( ref long io_funcall )</Syntax>
<Description>Delete the specified JCA Function Call definition from memory, including all defined arguments with their values, and the return value, if any. The passed identifier is set to 0 on return.</Description>
<HelpID>/progguide/functions_jca/jca.deletefunctioncall</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.execFunctionCall</Name>
<ScriptType>all</ScriptType>
<Syntax>long jca.execFunctionCall( long i_funcall )</Syntax>
<Description>Executes the specified JCA Function Call. The function will be executed using the current open JCA Connection and Bde Manager. When the function has executed successfully, the JCA Function Call return value and its output arguments will have been assigned a value, which can then be retrieved with the jca.getFunctionReturnStrValue, jca.getFunctionReturnLngValue, jca.getFunctionReturnDblValue, jca.getFunctionReturnXmlValue and the jca.getFunctionArgStrValue, jca.getFunctionArgLngValue, jca.getFunctionArgDblValue, jca.getFunctionArgXmlValue functions.</Description>
<HelpID>/progguide/functions_jca/jca.execfunctioncall</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.getFunctionArgDblValue</Name>
<ScriptType>all</ScriptType>
<Syntax>double jca.getFunctionArgDblValue( long i_funcall , const string i_name )</Syntax>
<Description>Retrieves the value of the specified function argument as a double.</Description>
<HelpID>/progguide/functions_jca/jca.getfunctionargdblvalue</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.getFunctionArgLngValue</Name>
<ScriptType>all</ScriptType>
<Syntax>long jca.getFunctionArgLngValue( long i_funcall , const string i_name )</Syntax>
<Description>Retrieves the value of the specified function argument as a long. Use this also for values of type enum and boolean. Do not use this for values that contain an XML node. Instead use jca.getFunctionArgXmlValue for XML nodes.</Description>
<HelpID>/progguide/functions_jca/jca.getfunctionarglngvalue</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.getFunctionArgStrValue</Name>
<ScriptType>all</ScriptType>
<Syntax>string jca.getFunctionArgStrValue( long i_funcall , const string i_name )</Syntax>
<Description>Retrieves the value of the specified function argument as a string.</Description>
<HelpID>/progguide/functions_jca/jca.getfunctionargstrvalue</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.getFunctionArgXmlValue</Name>
<ScriptType>all</ScriptType>
<Syntax>long jca.getFunctionArgXmlValue( long i_funcall , const string i_name )</Syntax>
<Description>Retrieves the value of the specified function argument as an XML node.</Description>
<HelpID>/progguide/functions_jca/jca.getfunctionargxmlvalue</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.getFunctionCallErrors</Name>
<ScriptType>all</ScriptType>
<Syntax>long jca.getFunctionCallErrors( long i_funcall )</Syntax>
<Description>Retrieves a list of error messages for the given JCA Function Call.</Description>
<HelpID>/progguide/functions_jca/jca.getfunctioncallerrors</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.getFunctionReturnDblValue</Name>
<ScriptType>all</ScriptType>
<Syntax>double jca.getFunctionReturnDblValue( long i_funcall )</Syntax>
<Description>Retrieves the return value of the JCA Function Call as a double.</Description>
<HelpID>/progguide/functions_jca/jca.getfunctionreturndblvalue</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.getFunctionReturnLngValue</Name>
<ScriptType>all</ScriptType>
<Syntax>long jca.getFunctionReturnLngValue( long i_funcall )</Syntax>
<Description>Retrieves the return value of the JCA Function Call as a long. Use this also for values of type enum and boolean. Do not use this for values that contain an XML node. Instead use jca.getFunctionReturnXmlValue() for XML nodes.</Description>
<HelpID>/progguide/functions_jca/jca.getfunctionreturnlngvalue</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.getFunctionReturnStrValue</Name>
<ScriptType>all</ScriptType>
<Syntax>string jca.getFunctionReturnStrValue( long i_funcall )</Syntax>
<Description>Retrieves the return value of the JCA Function Call as a string.</Description>
<HelpID>/progguide/functions_jca/jca.getfunctionreturnstrvalue</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.getFunctionReturnXmlValue</Name>
<ScriptType>all</ScriptType>
<Syntax>long jca.getFunctionReturnXmlValue( long i_funcall )</Syntax>
<Description>Retrieves the return value of the JCA Function Call as an XML node.</Description>
<HelpID>/progguide/functions_jca/jca.getfunctionreturnxmlvalue</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.getLastErrorText</Name>
<ScriptType>all</ScriptType>
<Syntax>string jca.getLastErrorText( )</Syntax>
<Description>Retrieves an english error text (of max. 512 chars) of the last occurred error. The error text contains information about wrong usage of the JCA Client Functionality, or information about an I/O error, like a lost connection with the server.</Description>
<HelpID>/progguide/functions_jca/jca.getlasterrortext</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.openBde</Name>
<ScriptType>all</ScriptType>
<Syntax>long jca.openBde( long i_company )</Syntax>
<Description>Opens a BDE Manager on the server for the current 3GL process, using the current JCA Connection. Per 3GL Process one BDE manager can be open at a time.</Description>
<HelpID>/progguide/functions_jca/jca.openbde</HelpID>
</Function>
<Function Deprecated="no">
<Name>jca.setFunctionArgValue</Name>
<ScriptType>all</ScriptType>
<Syntax>void jca.setFunctionArgValue( long i_funcall , const string i_name , void i_value )</Syntax>
<Description>Sets the value of a function argument for the specified JCA Function Call definition. This function can be used several times for the same function argument. In that way it is possible to re-use a JCA Function Call definition, only supplying new argument values.</Description>
<HelpID>/progguide/functions_jca/jca.setfunctionargvalue</HelpID>
</Function>
<Function Deprecated="no">
<Name>create.keyfields.collection</Name>
<ScriptType>all</ScriptType>
<Syntax>long create.keyfields.collection( )</Syntax>
<Description>Create an object which can hold a collection of key fields objects</Description>
<HelpID>/progguide/functions_keyfields/create.keyfields.collection</HelpID>
</Function>
<Function Deprecated="no">
<Name>create.keyfields.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long create.keyfields.object( const string tablename  [, long collection] )</Syntax>
<Description>Create an object which can hold the key fields and the corresponding values referring to one record of the passed database table. The key fields of index 1 are used.</Description>
<HelpID>/progguide/functions_keyfields/create.keyfields.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>delete.keyfields.collection</Name>
<ScriptType>all</ScriptType>
<Syntax>void delete.keyfields.collection( long object )</Syntax>
<Description>Delete the indicated key fields collection including all key field objects which are currently stored in this collection</Description>
<HelpID>/progguide/functions_keyfields/delete.keyfields.collection</HelpID>
</Function>
<Function Deprecated="no">
<Name>delete.keyfields.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void delete.keyfields.object( long object )</Syntax>
<Description>Delete the indicated key fields object. When this object is currently part of a collection it will also be removed from this collection.</Description>
<HelpID>/progguide/functions_keyfields/delete.keyfields.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.first.keyfields.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.first.keyfields.object( long object )</Syntax>
<Description>Get the first key fields object in this collection.</Description>
<HelpID>/progguide/functions_keyfields/get.first.keyfields.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.keyfields.table</Name>
<ScriptType>all</ScriptType>
<Syntax>string  get.keyfields.table( long object )</Syntax>
<Description>Return the name of the table associated with the passed key fields object.</Description>
<HelpID>/progguide/functions_keyfields/get.keyfields.table</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.next.keyfields.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.next.keyfields.object( long object )</Syntax>
<Description>Get the next key fields object in a collection.</Description>
<HelpID>/progguide/functions_keyfields/get.next.keyfields.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.num.keyfields.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.num.keyfields.object( long object )</Syntax>
<Description>Get the number of key field objects in this collection.</Description>
<HelpID>/progguide/functions_keyfields/get.num.keyfields.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>keyfields.to.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void keyfields.to.object( long object )</Syntax>
<Description>Store the current value of the key fields to the passed key field object.</Description>
<HelpID>/progguide/functions_keyfields/keyfields.to.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>object.to.keyfields</Name>
<ScriptType>all</ScriptType>
<Syntax>void object.to.keyfields( long object )</Syntax>
<Description>Restore the value of the key fields from the passed key field object.</Description>
<HelpID>/progguide/functions_keyfields/object.to.keyfields</HelpID>
</Function>
<Function Deprecated="no">
<Name>lma.enable.counting</Name>
<ScriptType>all</ScriptType>
<Syntax>void  lma.enable.counting( )</Syntax>
<Description>Enables LMA counting. This function enables collection of data and periodic start of 'ottstplmapub' (for publishing to the bus).</Description>
<HelpID>/progguide/functions_lma/lma.enable.counting</HelpID>
</Function>
<Function Deprecated="no">
<Name>lma.get.license.usage.noun</Name>
<ScriptType>all</ScriptType>
<Syntax>long lma.get.license.usage.noun( ref long xml.node )</Syntax>
<Description>This function retrieves the license usage noun.</Description>
<HelpID>/progguide/functions_lma/lma.get.license.usage.noun</HelpID>
</Function>
<Function Deprecated="no">
<Name>lma.named.user.report</Name>
<ScriptType>all</ScriptType>
<Syntax>long  lma.named.user.report( string counting.type , string user.name  [, string product.id] )</Syntax>
<Description>This function is used to report named users. It can only be called successfully from the ottstplmapub process that is started by bshell. Reporting of named users is done once per restart of the environment, which is indicated by a flag in shared memory. For more information on that flag refer to lma.named.user.shm.flag() .</Description>
<HelpID>/progguide/functions_lma/lma.named.user.report</HelpID>
</Function>
<Function Deprecated="no">
<Name>lma.named.user.shm.flag</Name>
<ScriptType>all</ScriptType>
<Syntax>long lma.named.user.shm.flag( )</Syntax>
<Description>This function retrieves (and resets) a flag that indicates that the named user information must be reported. The flag is raised once when shared memory is in it's initial state. Whether the flag exists for each tenant is still to be decided (TODO).</Description>
<HelpID>/progguide/functions_lma/lma.named.user.shm.flag</HelpID>
</Function>
<Function Deprecated="no">
<Name>abs</Name>
<ScriptType>all</ScriptType>
<Syntax>double abs( double x )</Syntax>
<Description>This returns the absolute value of the specified numeric expression. The expression can be of type integer or floating point.</Description>
<HelpID>/progguide/functions_mathematical_operations/abs</HelpID>
</Function>
<Function Deprecated="no">
<Name>acos</Name>
<ScriptType>all</ScriptType>
<Syntax>double  acos( double x )</Syntax>
<Description>This computes the arc cosine of x. The value of x must be in the range [-1, 1].</Description>
<HelpID>/progguide/functions_mathematical_operations/acos</HelpID>
</Function>
<Function Deprecated="no">
<Name>asin</Name>
<ScriptType>all</ScriptType>
<Syntax>double  asin( double x )</Syntax>
<Description>This computes the arc sine of x. The value of x must be in the range [-1, 1].</Description>
<HelpID>/progguide/functions_mathematical_operations/asin</HelpID>
</Function>
<Function Deprecated="no">
<Name>atan</Name>
<ScriptType>all</ScriptType>
<Syntax>double  atan( double x )</Syntax>
<Description>This computes the arc tangent of x.</Description>
<HelpID>/progguide/functions_mathematical_operations/atan</HelpID>
</Function>
<Function Deprecated="no">
<Name>cos</Name>
<ScriptType>all</ScriptType>
<Syntax>double cos( double x )</Syntax>
<Description>This computes the cosine of x, in radians. The x argument can be a long or a double.</Description>
<HelpID>/progguide/functions_mathematical_operations/cos</HelpID>
</Function>
<Function Deprecated="no">
<Name>cosh</Name>
<ScriptType>all</ScriptType>
<Syntax>double  cosh( double x )</Syntax>
<Description>This computes the hyperbolic cosine of x.</Description>
<HelpID>/progguide/functions_mathematical_operations/cosh</HelpID>
</Function>
<Function Deprecated="no">
<Name>double.cmp</Name>
<ScriptType>all</ScriptType>
<Syntax>long  double.cmp( double double1 , double double2 , double tolerance )</Syntax>
<Description/>
<HelpID>/progguide/functions_mathematical_operations/double.cmp</HelpID>
</Function>
<Function Deprecated="no">
<Name>exp</Name>
<ScriptType>all</ScriptType>
<Syntax>double exp( double x )</Syntax>
<Description>This returns the exponent of x. That is, it computes the value of the mathematical constant e (2.7182818) raised to the power of x.</Description>
<HelpID>/progguide/functions_mathematical_operations/exp</HelpID>
</Function>
<Function Deprecated="no">
<Name>format.round</Name>
<ScriptType>all</ScriptType>
<Syntax>double  format.round( double value , string format  [, long mode] )</Syntax>
<Description>The rounds a value according to a specified format.</Description>
<HelpID>/progguide/functions_mathematical_operations/format.round</HelpID>
</Function>
<Function Deprecated="no">
<Name>int</Name>
<ScriptType>all</ScriptType>
<Syntax>long int( double x )</Syntax>
<Description>This converts the result of a floating point expression to an integer value. It returns only the integer portion of the result.</Description>
<HelpID>/progguide/functions_mathematical_operations/int</HelpID>
</Function>
<Function Deprecated="no">
<Name>log</Name>
<ScriptType>all</ScriptType>
<Syntax>double log( double x )</Syntax>
<Description>This computes the natural logarithm of x. The value of x must be greater than zero.</Description>
<HelpID>/progguide/functions_mathematical_operations/log</HelpID>
</Function>
<Function Deprecated="no">
<Name>log10</Name>
<ScriptType>all</ScriptType>
<Syntax>double  log10( double x )</Syntax>
<Description>This computes the base 10 logarithm of x. The value of x must be greater than zero.</Description>
<HelpID>/progguide/functions_mathematical_operations/log10</HelpID>
</Function>
<Function Deprecated="no">
<Name>lpow</Name>
<ScriptType>all</ScriptType>
<Syntax>long  lpow( long x , long y )</Syntax>
<Description>This computes the value of x raised to the power of y. The y argument must be positive.</Description>
<HelpID>/progguide/functions_mathematical_operations/lpow</HelpID>
</Function>
<Function Deprecated="no">
<Name>max</Name>
<ScriptType>all</ScriptType>
<Syntax>double  max( double x , double y )</Syntax>
<Description>This compares the values of the two arguments and returns whichever is the greatest. The arguments can be of type long or double or can contain any numeric expression.</Description>
<HelpID>/progguide/functions_mathematical_operations/max</HelpID>
</Function>
<Function Deprecated="no">
<Name>min</Name>
<ScriptType>all</ScriptType>
<Syntax>double  min( double x , double x )</Syntax>
<Description>This compares the values of the two arguments and returns whichever is the smallest. The arguments can be of type long or double or can contain any numeric expression.</Description>
<HelpID>/progguide/functions_mathematical_operations/min</HelpID>
</Function>
<Function Deprecated="no">
<Name>pow</Name>
<ScriptType>all</ScriptType>
<Syntax>double pow( double x , double y )</Syntax>
<Description>This computes the value of x raised to the power of y. If x is zero, y must be positive. If x is negative, y must be an integer.</Description>
<HelpID>/progguide/functions_mathematical_operations/pow</HelpID>
</Function>
<Function Deprecated="no">
<Name>round</Name>
<ScriptType>all</ScriptType>
<Syntax>double round( double value , long diga , long mode )</Syntax>
<Description>This rounds a given value to a specified number of decimal places.</Description>
<HelpID>/progguide/functions_mathematical_operations/round</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.fmax</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.fmax( void variable , string domain )</Syntax>
<Description>This sets a specified string variable to its maximum value.</Description>
<HelpID>/progguide/functions_mathematical_operations/set.fmax</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.fmin</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.fmin( void variable , string domain )</Syntax>
<Description>This sets a specified multibyte string variable to its minimum value.</Description>
<HelpID>/progguide/functions_mathematical_operations/set.fmin</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.max</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.max( void variable , string domain )</Syntax>
<Description>This sets a specified standard variable to its maximum value.</Description>
<HelpID>/progguide/functions_mathematical_operations/set.max</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.min</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.min( void variable , string domain )</Syntax>
<Description>This sets a specified standard variable to its minimum value.</Description>
<HelpID>/progguide/functions_mathematical_operations/set.min</HelpID>
</Function>
<Function Deprecated="no">
<Name>sin</Name>
<ScriptType>all</ScriptType>
<Syntax>double sin( double x )</Syntax>
<Description>This computes the sine of x, in radians. The x argument can be a long or a double.</Description>
<HelpID>/progguide/functions_mathematical_operations/sin</HelpID>
</Function>
<Function Deprecated="no">
<Name>sinh</Name>
<ScriptType>all</ScriptType>
<Syntax>double  sinh( double x )</Syntax>
<Description>This computes the hyperbolic sine of x.</Description>
<HelpID>/progguide/functions_mathematical_operations/sinh</HelpID>
</Function>
<Function Deprecated="no">
<Name>sqrt</Name>
<ScriptType>all</ScriptType>
<Syntax>double  sqrt( double x )</Syntax>
<Description>This computes the non-negative square root of x. The x argument must not be less than zero. It can be of type long or double.</Description>
<HelpID>/progguide/functions_mathematical_operations/sqrt</HelpID>
</Function>
<Function Deprecated="no">
<Name>table.round</Name>
<ScriptType>all</ScriptType>
<Syntax>void table.round(  [void field [, field] ...]  [, string table [, table] ...] )</Syntax>
<Description>This rounds the values in certain tables and table fields according to parameters defined in the domain definition in the data dictionary.</Description>
<HelpID>/progguide/functions_mathematical_operations/table.round</HelpID>
</Function>
<Function Deprecated="no">
<Name>tan</Name>
<ScriptType>all</ScriptType>
<Syntax>double tan( double x )</Syntax>
<Description>This computes the tangent of x, in radians. The x argument can be a long or a double.</Description>
<HelpID>/progguide/functions_mathematical_operations/tan</HelpID>
</Function>
<Function Deprecated="no">
<Name>tanh</Name>
<ScriptType>all</ScriptType>
<Syntax>double  tanh( double x )</Syntax>
<Description>This computes the hyperbolic tangent of x.</Description>
<HelpID>/progguide/functions_mathematical_operations/tanh</HelpID>
</Function>
<Function Deprecated="no">
<Name>alloc.mem</Name>
<ScriptType>all</ScriptType>
<Syntax>long  alloc.mem( ref variable , long dimension1  [, long dimension2, ...] )</Syntax>
<Description>This allocates memory space to the specified variable at run time. The variable can be a string or an array (of any type). It must be declared as BASED. With multi-dimensional arrays, each dimension must be initialized to 1 at declaration. Once alloc.mem() has allocated memory for a variable, that variable behaves in the same way as any other variable.</Description>
<HelpID>/progguide/functions_memory_operations/alloc.mem</HelpID>
</Function>
<Function Deprecated="no">
<Name>array.get.size.in.bytes</Name>
<ScriptType>all</ScriptType>
<Syntax>long  array.get.size.in.bytes( void var )</Syntax>
<Description>This returns the number of bytes available for a specified array or string</Description>
<HelpID>/progguide/functions_memory_operations/array.get.size.in.bytes</HelpID>
</Function>
<Function Deprecated="no">
<Name>array.info</Name>
<ScriptType>all</ScriptType>
<Syntax>void  array.info( void var , ref long nr.dims , ref long Parameter )</Syntax>
<Description>This returns the number of dimensions in a specified array variable and the size of each dimension.</Description>
<HelpID>/progguide/functions_memory_operations/array.info</HelpID>
</Function>
<Function Deprecated="no">
<Name>cmp.mem</Name>
<ScriptType>all</ScriptType>
<Syntax>long  cmp.mem( void var1 , void var2  [, long count] )</Syntax>
<Description>This compares the values of two variables or arrays. By default, the values are compared for the length of the shortest argument. If you specify the optional count argument, the function compares the first count digits or characters of both arguments.</Description>
<HelpID>/progguide/functions_memory_operations/cmp.mem</HelpID>
</Function>
<Function Deprecated="no">
<Name>copy.mem</Name>
<ScriptType>all</ScriptType>
<Syntax>void  copy.mem( ref void destination , void source  [, long count] )</Syntax>
<Description>This copies the memory space from the source argument to the destination argument. By default, the total length of source is copied. But, if the destination argument is shorter than the source argument, then source is truncated. Use the optional count argument to copy a specified number of bytes only.</Description>
<HelpID>/progguide/functions_memory_operations/copy.mem</HelpID>
</Function>
<Function Deprecated="no">
<Name>free.mem</Name>
<ScriptType>all</ScriptType>
<Syntax>void  free.mem( void variable )</Syntax>
<Description>This deallocates memory space previously allocated to the specified variable by alloc.mem(). The freed memory becomes available for another allocation. The variable cannot be used again after deallocation, unless it is reallocated memory space again using alloc.mem().</Description>
<HelpID>/progguide/functions_memory_operations/free.mem</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.mem</Name>
<ScriptType>all</ScriptType>
<Syntax>long  set.mem( ref void destination , void source  [, long count] )</Syntax>
<Description>The stores the value of source in the destination argument. By default, the value of source is repeated in destination until the latter is completely filled. Use the optional count argument to repeat the value of source a specific number of times only. Elements in the destination argument which are not overwritten remain unchanged.</Description>
<HelpID>/progguide/functions_memory_operations/set.mem</HelpID>
</Function>
<Function Deprecated="no">
<Name>clean.mess</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  clean.mess( )</Syntax>
<Description>This removes a message that was displayed by using the mess() function with its mode argument set to 0.</Description>
<HelpID>/progguide/functions_message_handling/clean.mess</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.clear.error.messages</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void  dal.clear.error.messages( )</Syntax>
<Description>This clears all DAL error messages from the message buffer. Abbreviation for dal.reset.error.messages(0).</Description>
<HelpID>/progguide/functions_message_handling/dal.clear.error.messages</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.clear.messages</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void  dal.clear.messages( long i.type )</Syntax>
<Description>This clears all DAL messages of the specified type from the message buffer. Abbreviation for dal.reset.messages(i.type, 0).</Description>
<HelpID>/progguide/functions_message_handling/dal.clear.messages</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.count.error.messages</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long  dal.count.error.messages( )</Syntax>
<Description>This returns the number of DAL error messages currently in the message buffer.</Description>
<HelpID>/progguide/functions_message_handling/dal.count.error.messages</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.count.messages</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long  dal.count.messages( long i.type )</Syntax>
<Description>This returns the number of DAL messages of the specified type that are currently in the message buffer.</Description>
<HelpID>/progguide/functions_message_handling/dal.count.messages</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.get.error.message</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long  dal.get.error.message( ref string mesg )</Syntax>
<Description>This retrieves the most recent DAL error message from the message buffer. The message is removed from the buffer.</Description>
<HelpID>/progguide/functions_message_handling/dal.get.error.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.get.error.msgcode</Name>
<ScriptType>DAL</ScriptType>
<Syntax>string  dal.get.error.msgcode( )</Syntax>
<Description>This retrieves the message code of most recent DAL error message from the message buffer. The message is not removed from the buffer.</Description>
<HelpID>/progguide/functions_message_handling/dal.get.error.msgcode</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.get.first.error.message</Name>
<ScriptType>DAL</ScriptType>
<Syntax>long  dal.get.first.error.message( ref string mesg , ref string code )</Syntax>
<Description>This retrieves the oldest DAL error message from the message buffer, together with the message code. The message is removed from the buffer.</Description>
<HelpID>/progguide/functions_message_handling/dal.get.first.error.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.get.first.message</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean  dal.get.first.message( long i.type , ref string o.code , ref string o.text  [, ref long o.type] )</Syntax>
<Description>Returns the code and text of the oldest message of the given type. In case MSG.ALL is passed as the type, then the type of the message is returned in the 4th argument.</Description>
<HelpID>/progguide/functions_message_handling/dal.get.first.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.get.last.message</Name>
<ScriptType>DAL</ScriptType>
<Syntax>boolean  dal.get.last.message( long i.type , ref string o.code , ref string o.text  [, ref long o.type] )</Syntax>
<Description>Returns the code and text of the most recent message of the given type. In case MSG.ALL is passed as the type, then the type of the message is returned in the 4th argument. The message is removed from the buffer.</Description>
<HelpID>/progguide/functions_message_handling/dal.get.last.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.peek.error.message</Name>
<ScriptType>DAL</ScriptType>
<Syntax>string  dal.peek.error.message( long n )</Syntax>
<Description>This retrieves the DAL error message from the message buffer at position n. The message is not removed from the buffer.</Description>
<HelpID>/progguide/functions_message_handling/dal.peek.error.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.peek.error.msgcode</Name>
<ScriptType>DAL</ScriptType>
<Syntax>string  dal.peek.error.msgcode( long n )</Syntax>
<Description>This retrieves the message code from the message buffer at position n. The message is not removed from the buffer.</Description>
<HelpID>/progguide/functions_message_handling/dal.peek.error.msgcode</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.peek.message</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void  dal.peek.message( long i.type , long i.index , ref string o.code , ref string o.text  [, ref long o.type] )</Syntax>
<Description>Returns the code and text of the message of the specified type that is located at the given index in the message buffer. In case you specify MSG.ALL as the type, the type of the message is returned in the 5th argument.</Description>
<HelpID>/progguide/functions_message_handling/dal.peek.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.reset.error.messages</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void  dal.reset.error.messages( long amt )</Syntax>
<Description>This clears the most recent DAL error messages from the message buffer.</Description>
<HelpID>/progguide/functions_message_handling/dal.reset.error.messages</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.reset.messages</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void  dal.reset.messages( long i.type , long i.count )</Syntax>
<Description>Removes the most recent messages of the given type from the DAL message buffer. The 2nd argument determines how many messages will remain in the buffer.</Description>
<HelpID>/progguide/functions_message_handling/dal.reset.messages</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.set.error.message</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void dal.set.error.message( string mess.or.code  [, void arg ...] )</Syntax>
<Description>These functions add a message to the DAL message buffer of type MSG.ERROR, MSG.WARNING, or MSG.INFO.</Description>
<HelpID>/progguide/functions_message_handling/dal.set.error.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.set.warning.message</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void dal.set.warning.message( string mess.or.code  [, void arg ...] )</Syntax>
<Description>These functions add a message to the DAL message buffer of type MSG.ERROR, MSG.WARNING, or MSG.INFO.</Description>
<HelpID>/progguide/functions_message_handling/dal.set.error.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.set.info.message</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void dal.set.info.message( string mess.or.code  [, void arg ...] )</Syntax>
<Description>These functions add a message to the DAL message buffer of type MSG.ERROR, MSG.WARNING, or MSG.INFO.</Description>
<HelpID>/progguide/functions_message_handling/dal.set.error.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.set.message</Name>
<ScriptType>DAL</ScriptType>
<Syntax>void dal.set.message( long i.type , const string i.mess.or.code  [, void arg ...] )</Syntax>
<Description>Adds a message of the specified type to the DAL message buffer.</Description>
<HelpID>/progguide/functions_message_handling/dal.set.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.set.messages.off</Name>
<ScriptType>all</ScriptType>
<Syntax> dal.set.messages.off( )</Syntax>
<Description>Turns off dal.set.error.message(). After calling dal.set.messages.off(), any calls to dal.set.error.message() are ignored.</Description>
<HelpID>/progguide/functions_message_handling/dal.set.messages.off</HelpID>
</Function>
<Function Deprecated="no">
<Name>dal.set.messages.on</Name>
<ScriptType>all</ScriptType>
<Syntax> dal.set.messages.on( )</Syntax>
<Description>Turns on dal.set.error.message.</Description>
<HelpID>/progguide/functions_message_handling/dal.set.messages.on</HelpID>
</Function>
<Function Deprecated="no">
<Name>form.text$</Name>
<ScriptType>4GL</ScriptType>
<Syntax>string  form.text$( string messcode  [, string language_code] )</Syntax>
<Description>This retrieves a message from the data dictionary. It is used for constructing strings with parameter substitution. For messages to the screen, use mess().</Description>
<HelpID>/progguide/functions_message_handling/form.text</HelpID>
</Function>
<Function Deprecated="no">
<Name>mess</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void mess( string messcode , long separate_window  [, void arg ...] )</Syntax>
<Description>This retrieves a message from the data dictionary and displays it on screen. Using this function makes your program script language independent.</Description>
<HelpID>/progguide/functions_message_handling/mess</HelpID>
</Function>
<Function Deprecated="no">
<Name>message</Name>
<ScriptType>all</ScriptType>
<Syntax>void message( string mess_str  [, void arg ...] )</Syntax>
<Description>This displays the specified message string on screen in a separate window, and waits until the user closes it. This is applicable in case the message mode of the concerning user is set to "Interactive". In case of a "Non-interrupting" message mode, ERP LN displays the message strings in a separate "Messages" window without interruption.</Description>
<HelpID>/progguide/functions_message_handling/message</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.input.error</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void set.input.error( string mess.or.code  [, void arg ...] )</Syntax>
<Description>This causes the 4GL engine to display the specified error message and to force input again in the same input field. If you specify an empty string, no error message is displayed.</Description>
<HelpID>/progguide/functions_message_handling/set.input.error</HelpID>
</Function>
<Function Deprecated="no">
<Name>show.dal.messages</Name>
<ScriptType>all</ScriptType>
<Syntax>void  show.dal.messages(  [long i.type] )</Syntax>
<Description>Displays messages that are currently on the DAL message stack. Depending on the specified message type, you can display error, warning or info messages, or all messages. If no message type is specified, only error messages will be displayed.</Description>
<HelpID>/progguide/functions_message_handling/show.dal.messages</HelpID>
</Function>
<Function Deprecated="no">
<Name>status.del</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  status.del( )</Syntax>
<Description>This clears the first status field in the status area. Abbreviation for status.mess("").</Description>
<HelpID>/progguide/functions_message_handling/status.del</HelpID>
</Function>
<Function Deprecated="no">
<Name>status.mess</Name>
<ScriptType>all</ScriptType>
<Syntax>void  status.mess( string strg )</Syntax>
<Description>This displays the specified message in the first status field of a 4GL form.</Description>
<HelpID>/progguide/functions_message_handling/status.mess</HelpID>
</Function>
<Function Deprecated="no">
<Name>ml_get_baselang</Name>
<ScriptType>all</ScriptType>
<Syntax>string  ml_get_baselang( )</Syntax>
<Description>Returns the base language of the environment.</Description>
<HelpID>/progguide/functions_mle/ml_get_baselang</HelpID>
</Function>
<Function Deprecated="no">
<Name>ml_get_datalang</Name>
<ScriptType>all</ScriptType>
<Syntax>string  ml_get_datalang( )</Syntax>
<Description>Returns the current data language of the user.</Description>
<HelpID>/progguide/functions_mle/ml_get_datalang</HelpID>
</Function>
<Function Deprecated="no">
<Name>ml_get_datalang_of_softlang</Name>
<ScriptType>all</ScriptType>
<Syntax>string  ml_get_datalang_of_softlang( const string softlang )</Syntax>
<Description>Returns the data language of the specified software language.</Description>
<HelpID>/progguide/functions_mle/ml_get_datalang_of_softlang</HelpID>
</Function>
<Function Deprecated="no">
<Name>ml_is_active</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  ml_is_active( )</Syntax>
<Description>Tests whether Multi Language support is active on runtime for the current environment.</Description>
<HelpID>/progguide/functions_mle/ml_is_active</HelpID>
</Function>
<Function Deprecated="no">
<Name>ml_one_lang()</Name>
<ScriptType>all</ScriptType>
<Syntax>string ml_one_lang()( const string mlv  [, const string language] )</Syntax>
<Description>This function retrieves the value in a specific data language from a string variable.</Description>
<HelpID>/progguide/functions_mle_internal/ml_one_lang</HelpID>
</Function>
<Function Deprecated="no">
<Name>ml_set_datalang</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ml_set_datalang( const string datalang )</Syntax>
<Description>Sets a new data language for the user.</Description>
<HelpID>/progguide/functions_mle/ml_set_datalang</HelpID>
</Function>
<Function Deprecated="no">
<Name>_ml_get_data_language()</Name>
<ScriptType>all</ScriptType>
<Syntax>string _ml_get_data_language()( )</Syntax>
<Description>This function retrieves the current data language of the user.</Description>
<HelpID>/progguide/functions_mle_internal/_ml_get_data_language</HelpID>
</Function>
<Function Deprecated="no">
<Name>_ml_set_data_language()</Name>
<ScriptType>all</ScriptType>
<Syntax>long _ml_set_data_language()( const string language )</Syntax>
<Description>This function changes the current data language for the user.</Description>
<HelpID>/progguide/functions_mle_internal/_ml_set_data_language</HelpID>
</Function>
<Function Deprecated="no">
<Name>ml_all_langs()</Name>
<ScriptType>all</ScriptType>
<Syntax>string ml_all_langs()( const string flatmlv , const string language )</Syntax>
<Description>This function creates an MLV that has the same value for all data languages.</Description>
<HelpID>/progguide/functions_mle_internal/ml_all_langs</HelpID>
</Function>
<Function Deprecated="no">
<Name>ml_check_in_lang()</Name>
<ScriptType>all</ScriptType>
<Syntax>string ml_check_in_lang()( const string mlv  [, const string language] )</Syntax>
<Description>This function retrieves the 'check flag' from an MLF for a certain data language. The 'check flag' is set if the base data language changed after the MLV was translated to a non-base data language. The check flag is retrieved for the base data language if the optional argument 'language' is not specified.</Description>
<HelpID>/progguide/functions_mle_internal/ml_check_in_lang</HelpID>
</Function>
<Function Deprecated="no">
<Name>ml_lang_of()</Name>
<ScriptType>all</ScriptType>
<Syntax>string ml_lang_of()( const string mlv  [, const string language] )</Syntax>
<Description>This function retrieves the language code of the value of string 'mlv' in a certain data language. If the string is an MLV which has no translations the language codes of the value in the various data languages will show a fallback.</Description>
<HelpID>/progguide/functions_mle_internal/ml_lang_of</HelpID>
</Function>
<Function Deprecated="no">
<Name>ml_set_one_lang()</Name>
<ScriptType>all</ScriptType>
<Syntax>void ml_set_one_lang()( ref string mlvsymbol , string flatmlv  [, const string language] )</Syntax>
<Description>This function sets the value in string 'mlvsymbol' to the value of 'flatmlv' in one data language (the 'current data language' is used when the argument 'language' is not specified). The value in the other data languages will be preserved.</Description>
<HelpID>/progguide/functions_mle_internal/ml_set_one_lang</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.cast.to.str$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  mb.cast.to.str$( string string_express )</Syntax>
<Description>This function converts a specified string to a single-byte string. The content of the string remains the same.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.cast.to.str</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.cast$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  mb.cast$( string string_expres )</Syntax>
<Description>This function converts a specified string to a multibyte string. The content of the string remains the same.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.cast</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.char.info</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.char.info( string ch$ )</Syntax>
<Description>This function identifies the character set to which a TSS character belongs. It returns the character set ID for the first character in the specified string.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.char.info</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.char</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.char( long charvalue )</Syntax>
<Description>This function tests if a specified character code represents a multibyte character. It is mainly used in conjunction with the next.event() function, which returns a character as a long value.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.char</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.coerce.to.sb</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.coerce.to.sb( ref string string$  [, long setid] )</Syntax>
<Description>This function converts a string from the TSS character set to the external, native character set, assuring that each resulting character is a single byte. By default, the setting of the current user locale (singlebyte or multibyte environment) or the installation locale (Unicode environment) determines the character set to which the string is converted. Code features in the string are skipped.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.coerce.to.sb</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.display</Name>
<ScriptType>all</ScriptType>
<Syntax>long mb.display( string string_expr , ref string substr$ , long space  [, long flags] )</Syntax>
<Description>This function returns that part of a specified string that fits in a specified display space. The substring is equal to the source string if the source string fits in the display space. If one or more characters do not fit in the display space, a ghost character (default is &gt;) is appended to the substring.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.display</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.export.raw</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.export.raw( ref string target$ , string source$  [, long setid] )</Syntax>
<Description>This function converts a string from the TSS character set to the external, native character set. By default, the setting of the current locale determines the character set to which the string is converted. This function is almost identical to mb.export$(), but in contrast to that function, no special conversion is done for code features in source$.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.export.raw</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.export$</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.export$( ref string target$ , string source$  [, long setid] )</Syntax>
<Description>This function converts a string from the TSS character set to the external, native character set. By default, the setting of the current locale determines the character set to which the string is converted. Code features in the string are skipped.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.export</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.ext.clean$</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.ext.clean$( ref string ext.string )</Syntax>
<Description>This function replaces characters in a specified string with spaces, if those characters cannot be converted from native format to TSS.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.ext.clean</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.hasbidi</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  mb.hasbidi( string string_expres )</Syntax>
<Description>This function checks whether a specified string contains at least one bidirectional character. The function works regardless of the current user locale.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.hasbidi</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.import.raw</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.import.raw( ref string target$ , string source$  [, long setid] )</Syntax>
<Description>This function converts a string from the external, native character set to the TSS character set. By default, the setting of the current locale determines the native character set from which the string is converted. Unlike mb.import$(), no special conversion is done for Code Features.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.import.raw</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.import$</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.import$( ref string target$ , string source$  [, long setid] )</Syntax>
<Description>This function converts a string from the external, native character set to the TSS character set. By default, the setting of the current locale determines the native character set from which the string is converted. Code features are restored.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.import</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.isbidi.language</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  mb.isbidi.language( string lang )</Syntax>
<Description>This function checks whether the specified language is a bidirectional one. To use the function, you must link to the ttdllbidi library. The function checks the flag ‘ %TF@ttaad110.bidi’ in the table ‘%TB@ttaad110’.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.isbidi.language</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.isbidi</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  mb.isbidi( )</Syntax>
<Description>This function checks whether the current environment is a bidirectional one.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.isbidi</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.locale.enumerate</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.locale.enumerate( const string locale.name$ )</Syntax>
<Description>This function returns information about one specific locale or about all locales.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.locale.enumerate</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.locale.info</Name>
<ScriptType>all</ScriptType>
<Syntax>string  mb.locale.info( long info_flag )</Syntax>
<Description>This function returns information about the current locale.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.locale.info</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.localename$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  mb.localename$( )</Syntax>
<Description>This function returns the name of the current locale as defined in the file '$bse/lib/user/u&lt;user&gt;'. The file ‘$BSE/lib/tss_localex.x’  (where x.x is the bshell version) contains all locales that the system supports.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.localename</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.long.to.str$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  mb.long.to.str$( long charvalue )</Syntax>
<Description>This function converts a character code to the equivalent string value. It accepts single byte and multibyte character codes only. Do not use it for other character codes, such as function keys.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.long.to.str</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.nsets</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.nsets( )</Syntax>
<Description>This function returns the number of TSS character sets currently defined. This is useful for retrieving character set information using mb.set.info().</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.nsets</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.rev$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  mb.rev$( string string_expr  [, long flags] )</Syntax>
<Description>This function reverses the order of the characters in a specified string.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.rev</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.scrpos</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.scrpos( string string_expr , long pos )</Syntax>
<Description>This function converts a string position to a screen position. Code features are ignored.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.scrpos</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.set.info</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.set.info( long setid , ref string name , string desc , ref long n_items )</Syntax>
<Description>This function returns information about a specified character set.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.set.info</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.strpos</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.strpos( string string_expr , long pos )</Syntax>
<Description>This function converts a screen position to a string position. Code features are ignored.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.strpos</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.tss.clean$</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.tss.clean$( ref string tss.string )</Syntax>
<Description>This function replaces characters in a specified string with spaces, if those characters cannot be converted from TSS to native format.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.tss.clean</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.type</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.type( string string_expres )</Syntax>
<Description>This function tests if a specified string is a multibyte string. It does not test the content of the string.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.type</HelpID>
</Function>
<Function Deprecated="no">
<Name>mb.width</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mb.width( string string_expres )</Syntax>
<Description>This function returns the display width of a specified string; that is, the number of positions the string will occupy on the screen.</Description>
<HelpID>/progguide/functions_multibyte_strings/mb.width</HelpID>
</Function>
<Function Deprecated="no">
<Name>uni.export</Name>
<ScriptType>all</ScriptType>
<Syntax>long  uni.export( ref string target$ , const string source$  [, long sb_flag] )</Syntax>
<Description>This function converts a string from the TSS character set to Unicode, using a byte serialized UTF-16 encoding scheme. The default encoding scheme is UTF-16BE, i.e. each UTF-16 code unit is serialized with the most significant byte first.</Description>
<HelpID>/progguide/functions_multibyte_strings/uni.export</HelpID>
</Function>
<Function Deprecated="no">
<Name>uni.import</Name>
<ScriptType>all</ScriptType>
<Syntax>long  uni.import( ref string target$ , const string source$  [, long sb_flag] )</Syntax>
<Description>This function converts a string from Unicode (encoded according to a byte serialized UTF-16 encoding scheme) to the TSS character set. The default encoding scheme is UTF-16BE, i.e. each UTF-16 code unit is assumed to be serialized with the most significant byte first.</Description>
<HelpID>/progguide/functions_multibyte_strings/uni.import</HelpID>
</Function>
<Function Deprecated="no">
<Name>utf8.export</Name>
<ScriptType>all</ScriptType>
<Syntax>long  utf8.export( ref string target$ , const string source$ , long option_mask )</Syntax>
<Description>This function converts a string from the TSS character set to Unicode, using a UTF-8 encoding.</Description>
<HelpID>/progguide/functions_multibyte_strings/utf8.export</HelpID>
</Function>
<Function Deprecated="no">
<Name>utf8.import</Name>
<ScriptType>all</ScriptType>
<Syntax>long  utf8.import( ref string target$ , const string source$ , long option_mask )</Syntax>
<Description>This function converts a string from Unicode (encoded according to a UTF-8 encoding) to the TSS character set.</Description>
<HelpID>/progguide/functions_multibyte_strings/utf8.import</HelpID>
</Function>
<Function Deprecated="no">
<Name>publish.check</Name>
<ScriptType>all</ScriptType>
<Syntax>long  publish.check( const string bus.component.name , ref long result.xml )</Syntax>
<Description>This function checks whether a destination (bus component) is available for publishing events. Note that publish.open() and publish.message() will not always report errors, but will send messages to an error handler or log file instead. To avoid publishing many message to the error handler or log file, this check function can be used before using publish.open().</Description>
<HelpID>/progguide/functions_outbound_publishing/publish.check</HelpID>
</Function>
<Function Deprecated="no">
<Name>publish.close</Name>
<ScriptType>all</ScriptType>
<Syntax>long  publish.close( long publication.id , ref long result.xml )</Syntax>
<Description>This function closes a publication channel. After using this function, publish.message() and publish.error.message() cannot be used anymore unless a new publish.open() is done first.</Description>
<HelpID>/progguide/functions_outbound_publishing/publish.close</HelpID>
</Function>
<Function Deprecated="no">
<Name>publish.error.message</Name>
<ScriptType>all</ScriptType>
<Syntax>long  publish.error.message( long publication.id , long error.xml , ref long result.xml )</Syntax>
<Description>This function reports an error instead of publishing a message. It can be used if a message could not be created or sent successfully. Note that the error message is not sent to the bus component as specified in publish.open(). Instead, the Adapter configuration specifies an error handler for the bus component and the error message is sent to that error handler. If the error handler cannot be found or is unavailable, the Adapter will take care that the error is logged.</Description>
<HelpID>/progguide/functions_outbound_publishing/publish.error.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>publish.message</Name>
<ScriptType>all</ScriptType>
<Syntax>long  publish.message( long publication.id , long message.xml , ref long result.xml )</Syntax>
<Description>This function publishes the specified message.</Description>
<HelpID>/progguide/functions_outbound_publishing/publish.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>publish.open</Name>
<ScriptType>all</ScriptType>
<Syntax>long  publish.open( const string bus.component.name , ref long result.xml )</Syntax>
<Description>This function initializes the publishing.</Description>
<HelpID>/progguide/functions_outbound_publishing/publish.open</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.abort.client.server</Name>
<ScriptType>3GL</ScriptType>
<Syntax>void par.abort.client.server( string error.message )</Syntax>
<Description>This function can be used in the client as well in the server. When there are (application) problems in the client or server, an abort message will be sent to the client and all servers. After this function call, all servers are stopped and all communication will be ended.</Description>
<HelpID>/progguide/functions_parallel_processing/par.abort.client.server</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.client.close.servers</Name>
<ScriptType>3GL</ScriptType>
<Syntax>boolean par.client.close.servers( long group.id )</Syntax>
<Description>This function will close all servers in a group. Normally this call should only be done when all servers are ready, so after a call to par.client.wait.ready(). Closing the servers means that the application servers will terminate.</Description>
<HelpID>/progguide/functions_parallel_processing/par.client.close.servers</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.client.get.message</Name>
<ScriptType>3GL</ScriptType>
<Syntax>long par.client.get.message( long group.id , ref string comm.string )</Syntax>
<Description>This function will check if a message has been sent by one of the servers in the indicated server group. A server process can sent a message back to the client with the function: par.server.send.message(). This function will not wait for any messages from a server process.</Description>
<HelpID>/progguide/functions_parallel_processing/par.client.get.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.client.get.status</Name>
<ScriptType>3GL</ScriptType>
<Syntax>long par.client.get.status( long group.id , long server.number , ref long messages )</Syntax>
<Description>Returns the current status of the specified server.</Description>
<HelpID>/progguide/functions_parallel_processing/par.client.get.status</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.client.running</Name>
<ScriptType>3GL</ScriptType>
<Syntax>boolean par.client.running( )</Syntax>
<Description>This function will return whether the current session is running in parallel processing client mode. It will be true when function par.init.client.to.server() was called successfully. This function can be useful in DLL’s.</Description>
<HelpID>/progguide/functions_parallel_processing/par.client.running</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.client.send.message</Name>
<ScriptType>3GL</ScriptType>
<Syntax>boolean par.client.send.message( long group.id , string comm.string  [, long server.number] )</Syntax>
<Description>Send a message to the indicated group or application server. When a server.number is passed, the message is sent to that particular server. Otherwise the message is sent to the first server in the group which is ready. This function will wait until the message has been sent to a server. This does however not mean that the message is already processed by this server when this function returns.</Description>
<HelpID>/progguide/functions_parallel_processing/par.client.send.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.client.start.servers</Name>
<ScriptType>3GL</ScriptType>
<Syntax>boolean par.client.start.servers( long group.id  [, long options] )</Syntax>
<Description>This function is used to actually start the application servers (Bshells) for the indicated group.</Description>
<HelpID>/progguide/functions_parallel_processing/par.client.start.servers</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.client.wait.ready</Name>
<ScriptType>3GL</ScriptType>
<Syntax>boolean par.client.wait.ready(  [long group.id]  [, long server.number] )</Syntax>
<Description>This function will wait until servers are ready with processing messages. When no group.id and no server.number are specified, this function will wait for all servers in all groups to become ready. When only a group.id is specified, this function will wait for all servers in the specified group to become ready. When both a group.id and a server.number is specified, this function will wait for one specific server to become ready.</Description>
<HelpID>/progguide/functions_parallel_processing/par.client.wait.ready</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.get.no.of.server</Name>
<ScriptType>3GL</ScriptType>
<Syntax>long par.get.no.of.server( )</Syntax>
<Description>This function will return the number of servers configured for this client session. See the section Parallel Application Processing Configuration.</Description>
<HelpID>/progguide/functions_parallel_processing/par.get.no.of.server</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.init.client.to.server</Name>
<ScriptType>3GL</ScriptType>
<Syntax>long par.init.client.to.server( long nr.of.servers , string server.session  [, string support.session] )</Syntax>
<Description>This function is used to initialize the client to server communication for one group. Starting the application servers (Bshells) will be done when the function par.client.start.servers() is called.</Description>
<HelpID>/progguide/functions_parallel_processing/par.init.client.to.server</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.init.server.to.client</Name>
<ScriptType>3GL</ScriptType>
<Syntax>boolean par.init.server.to.client( ref long group.number , ref long server.number  [, ref long tot.nr.servers] )</Syntax>
<Description>This function is used to initialize the communication to the client. This function must be called rather in the beginning of a program which can be started as server. This because of the fact that the client function has a time out time (default 2 minutes) on starting each server (receiving the 'known' command).</Description>
<HelpID>/progguide/functions_parallel_processing/par.init.server.to.client</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.server.get.message</Name>
<ScriptType>3GL</ScriptType>
<Syntax>long par.server.get.message( ref string comm.string )</Syntax>
<Description>This function will inform the client that this server is ready and wait for a new message from the client.</Description>
<HelpID>/progguide/functions_parallel_processing/par.server.get.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.server.id</Name>
<ScriptType>3GL</ScriptType>
<Syntax>long par.server.id( )</Syntax>
<Description>This function will return the identification of a server within its group. This function can be useful in includes or DLL’s to determine if the session is running in the context of parallel processing.</Description>
<HelpID>/progguide/functions_parallel_processing/par.server.id</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.server.question</Name>
<ScriptType>3GL</ScriptType>
<Syntax>boolean par.server.question( string question , ref string answer )</Syntax>
<Description>This function can be used by a server session to send a question message to the "support" session in the client. The "support" session in the client must use function par.support.get.question() to receive questions from server processes and function par.support.send.answer() to sent an answer message to the server. The function par.server.question() waits until an answer message is received from the "support" session.</Description>
<HelpID>/progguide/functions_parallel_processing/par.server.question</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.server.retry.hit</Name>
<ScriptType>3GL</ScriptType>
<Syntax>void par.server.retry.hit( )</Syntax>
<Description>This function must be called in a server after a real db.retry.hit() call. When this function is called x times and x = MAX.RETRY-1, this function will do an abort of the client server communication with the abort message "Too many retry hits in server". See section: Database Retries for a further explanation.</Description>
<HelpID>/progguide/functions_parallel_processing/par.server.retry.hit</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.server.retry.point</Name>
<ScriptType>3GL</ScriptType>
<Syntax>void par.server.retry.point( )</Syntax>
<Description>This function is used for setting a not real retry point after a db.retry.point (). It must be used together with function par.server.retry.hit(). See section: Database Retries for a further explanation.</Description>
<HelpID>/progguide/functions_parallel_processing/par.server.retry.point</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.server.running</Name>
<ScriptType>3GL</ScriptType>
<Syntax>boolean par.server.running( )</Syntax>
<Description>This function will return whether the current session is running in parallel processing server mode. It will be true when function par.init.server.to.client() was called successfully. This function can be useful in DLL’s.</Description>
<HelpID>/progguide/functions_parallel_processing/par.server.running</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.server.send.message</Name>
<ScriptType>3GL</ScriptType>
<Syntax>boolean par.server.send.message( string comm.string )</Syntax>
<Description>Send a message to the client. This function will return as soon as the message has been sent. Note This function is not intended to sent a high volume of messages from the server to the client. This function is also not intended to ask the client for additional information during processing a client message.</Description>
<HelpID>/progguide/functions_parallel_processing/par.server.send.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.support.get.question</Name>
<ScriptType>3GL</ScriptType>
<Syntax>long par.support.get.question( ref string question )</Syntax>
<Description>This function will wait for a question message from any server. When this function returns -1, the support session must end processing and exit.</Description>
<HelpID>/progguide/functions_parallel_processing/par.support.get.question</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.support.init</Name>
<ScriptType>3GL</ScriptType>
<Syntax>boolean par.support.init( ref long group.number , ref long tot.nr.servers )</Syntax>
<Description>This function is used to initialize the communication for a support session. This function must be called at the start of a session which can be used as a parallel processing support session.</Description>
<HelpID>/progguide/functions_parallel_processing/par.support.init</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.support.running</Name>
<ScriptType>3GL</ScriptType>
<Syntax>boolean par.support.running( )</Syntax>
<Description>This function will return whether the current session is running in parallel processing support session mode. It will be true when function par.support.init() was called successfully. This function can be useful in DLL’s.</Description>
<HelpID>/progguide/functions_parallel_processing/par.support.running</HelpID>
</Function>
<Function Deprecated="no">
<Name>par.support.send.answer</Name>
<ScriptType>3GL</ScriptType>
<Syntax>boolean par.support.send.answer( string answer , long server.number )</Syntax>
<Description>Send an answer message to a server session. This function will return as soon as the message has been sent. Note This function should only be used after a successful call of function: par.support.get.question()</Description>
<HelpID>/progguide/functions_parallel_processing/par.support.send.answer</HelpID>
</Function>
<Function Deprecated="yes">
<Name>pcm.activate.session</Name>
<ScriptType>all</ScriptType>
<Syntax>long  pcm.activate.session( ref string session , string title )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_plan_chart_manager/pcm.activate.session</HelpID>
</Function>
<Function Deprecated="no">
<Name>pcm.change.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void pcm.change.object( long plan_id , long object_id  [, long flag]  [, long value,] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_plan_chart_manager/pcm.change.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>pcm.change</Name>
<ScriptType>all</ScriptType>
<Syntax>void pcm.change( long plan_id, ... , long flag , long value )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_plan_chart_manager/pcm.change</HelpID>
</Function>
<Function Deprecated="no">
<Name>pcm.create.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long pcm.create.object( long plan_id , long object_type  [, long flag]  [, long value]  [, long flag, value] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_plan_chart_manager/pcm.create.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>pcm.create</Name>
<ScriptType>all</ScriptType>
<Syntax>long pcm.create(  [long flag]  [, long value,...] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_plan_chart_manager/pcm.create</HelpID>
</Function>
<Function Deprecated="yes">
<Name>pcm.destroy.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void  pcm.destroy.object( long plan_id , long object_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_plan_chart_manager/pcm.destroy.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>pcm.destroy</Name>
<ScriptType>all</ScriptType>
<Syntax>void  pcm.destroy( long plan_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_plan_chart_manager/pcm.destroy</HelpID>
</Function>
<Function Deprecated="no">
<Name>pcm.get.data</Name>
<ScriptType>all</ScriptType>
<Syntax>void pcm.get.data( long evt_type , ref string arglist,... )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_plan_chart_manager/pcm.get.data</HelpID>
</Function>
<Function Deprecated="yes">
<Name>pcm.lock</Name>
<ScriptType>all</ScriptType>
<Syntax>void  pcm.lock( long plan_id , long lock )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_plan_chart_manager/pcm.lock</HelpID>
</Function>
<Function Deprecated="yes">
<Name>pcm.refresh</Name>
<ScriptType>all</ScriptType>
<Syntax>void  pcm.refresh( long plan_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_plan_chart_manager/pcm.refresh</HelpID>
</Function>
<Function Deprecated="yes">
<Name>pcm.send.bms.event</Name>
<ScriptType>all</ScriptType>
<Syntax>void  pcm.send.bms.event( long command , ref string arglist )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_plan_chart_manager/pcm.send.bms.event</HelpID>
</Function>
<Function Deprecated="no">
<Name>prcm.bms.is.notification</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  prcm.bms.is.notification(  [long bms.command] )</Syntax>
<Description>Tests whether the specified bms command is a notification of a subject. If no bms command is passed to this function, the predefined 4GL variable bms.sender.command is checked.</Description>
<HelpID>/progguide/functions_prcm/prcm.bms.is.notification</HelpID>
</Function>
<Function Deprecated="no">
<Name>prcm.get.aspect</Name>
<ScriptType>all</ScriptType>
<Syntax>observer processes can call  prcm.get.aspect( )</Syntax>
<Description>Returns the last decoded aspect of the subject that did a notification.</Description>
<HelpID>/progguide/functions_prcm/prcm.get.aspect</HelpID>
</Function>
<Function Deprecated="no">
<Name>prcm.get.data</Name>
<ScriptType>all</ScriptType>
<Syntax>long prcm.get.data( )</Syntax>
<Description>Returns the last data passed by the subject that did a notification.</Description>
<HelpID>/progguide/functions_prcm/prcm.get.data</HelpID>
</Function>
<Function Deprecated="no">
<Name>prcm.get.subject</Name>
<ScriptType>all</ScriptType>
<Syntax>string  prcm.get.subject( )</Syntax>
<Description>Returns the last decoded subject that did a notification.</Description>
<HelpID>/progguide/functions_prcm/prcm.get.subject</HelpID>
</Function>
<Function Deprecated="no">
<Name>prcm.notify</Name>
<ScriptType>all</ScriptType>
<Syntax>void  prcm.notify( const string subject  [, string aspect(32)]  [, long data] )</Syntax>
<Description>Is called by a subject process to notify other processes that it has changed. Optionally, an aspect can be specified to indicate what aspect of the subject process has changed.</Description>
<HelpID>/progguide/functions_prcm/prcm.notify</HelpID>
</Function>
<Function Deprecated="no">
<Name>prcm.register</Name>
<ScriptType>all</ScriptType>
<Syntax>void  prcm.register( const string subject  [, string aspect(32)] )</Syntax>
<Description>Is called by an Observer process (i.e. the current process) to register/subscribe itself for a certain Subject (and optionally Aspect). Afterwards, if the subject notifies its observers, this process will be notified by the Process Change Manager.</Description>
<HelpID>/progguide/functions_prcm/prcm.register</HelpID>
</Function>
<Function Deprecated="no">
<Name>prcm.unregister</Name>
<ScriptType>all</ScriptType>
<Syntax>void  prcm.unregister( const string subject  [, string aspect(32)] )</Syntax>
<Description>Is called by an Observer process (i.e. the current process) to unregister/unsubscribe itself for a certain Subject (and optionally Aspect). Afterwards, this process will no longer be notified by the Process Change Manager if the subject tries to notify its observers.</Description>
<HelpID>/progguide/functions_prcm/prcm.unregister</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.pgrp</Name>
<ScriptType>all</ScriptType>
<Syntax>long  get.pgrp( long process_id )</Syntax>
<Description>This returns the identification number of the process group to which the specified process belongs. If you specify an unknown process ID, -1 is returned.</Description>
<HelpID>/progguide/functions_process_groups/get.pgrp</HelpID>
</Function>
<Function Deprecated="no">
<Name>grab.mwindow</Name>
<ScriptType>all</ScriptType>
<Syntax>void grab.mwindow( long mwindow , long process_group )</Syntax>
<Description>This specifies the process group to which a particular main window must send its events. After calling this function, all events that occur in the main window are sent to the process group. grab.mwindow() is mainly used immediately after creation of a new process group.</Description>
<HelpID>/progguide/functions_process_groups/grab.mwindow</HelpID>
</Function>
<Function Deprecated="no">
<Name>kill.pgrp</Name>
<ScriptType>all</ScriptType>
<Syntax>void  kill.pgrp( long process_id )</Syntax>
<Description>This ends all processes within the specified process group. All windows and graphical parts of the processes are removed.</Description>
<HelpID>/progguide/functions_process_groups/kill.pgrp</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.pgrp</Name>
<ScriptType>all</ScriptType>
<Syntax>long  set.pgrp( long process_id , long group_id )</Syntax>
<Description>This places a specified process in a specified process group. If the process group ID is the same as the process ID, a new process group is created with the specified ID. The specified process becomes the leader of the new group.</Description>
<HelpID>/progguide/functions_process_groups/set.pgrp</HelpID>
</Function>
<Function Deprecated="no">
<Name>act.and.sleep</Name>
<ScriptType>all</ScriptType>
<Syntax>long act.and.sleep( string procname(.)  [, string arg1, arg2, ...] )</Syntax>
<Description>This activates the specified process and places it in the sleeping process queue. It remains there until it is activated by calling the reactivate() function. You can remove the process with the kill() function. The process is automatically removed when the process group to which it belongs is killed.</Description>
<HelpID>/progguide/functions_processes/act.and.sleep</HelpID>
</Function>
<Function Deprecated="no">
<Name>activate</Name>
<ScriptType>all</ScriptType>
<Syntax>long activate( string procname(.)  [, string arg1, arg2, ...] )</Syntax>
<Description>This activates the specified process and places it in the running process queue. Execution starts when the bshell schedules CPU time for the process.</Description>
<HelpID>/progguide/functions_processes/activate</HelpID>
</Function>
<Function Deprecated="no">
<Name>argc</Name>
<ScriptType>all</ScriptType>
<Syntax>long  argc( )</Syntax>
<Description>This returns the number of arguments of the current program. You can pass arguments to the program by activating it with the activate(), act.and.sleep(), or wait.and.activate() functions. </Description>
<HelpID>/progguide/functions_processes/argc</HelpID>
</Function>
<Function Deprecated="no">
<Name>argv$</Name>
<ScriptType>all</ScriptType>
<Syntax>string argv$( long num_expr )</Syntax>
<Description>This returns the specified argument of the program as a string. The program name is stored in ARGV$(0). The last argument is stored in ARGV$( ARGC()-1 ).</Description>
<HelpID>/progguide/functions_processes/argv</HelpID>
</Function>
<Function Deprecated="no">
<Name>bshell.pid</Name>
<ScriptType>all</ScriptType>
<Syntax>long bshell.pid( )</Syntax>
<Description>This returns the process ID of the current bshell (at operating system level).</Description>
<HelpID>/progguide/functions_processes/bshell.pid</HelpID>
</Function>
<Function Deprecated="no">
<Name>kill</Name>
<ScriptType>all</ScriptType>
<Syntax>void kill( long processno )</Syntax>
<Description>This deletes the specified process from the bshell process queue. If the process is in a running state, it is interrupted.</Description>
<HelpID>/progguide/functions_processes/kill</HelpID>
</Function>
<Function Deprecated="no">
<Name>pstat</Name>
<ScriptType>all</ScriptType>
<Syntax>long   pstat( long pid , ref string progname , ref long info(PSMAXSIZE) )</Syntax>
<Description>This returns status information about a specified process.</Description>
<HelpID>/progguide/functions_processes/pstat</HelpID>
</Function>
<Function Deprecated="no">
<Name>reactivate</Name>
<ScriptType>all</ScriptType>
<Syntax>void  reactivate( long processno )</Syntax>
<Description>This activates the specified sleeping process.</Description>
<HelpID>/progguide/functions_processes/reactivate</HelpID>
</Function>
<Function Deprecated="no">
<Name>signal</Name>
<ScriptType>all</ScriptType>
<Syntax>void signal( long type , long action )</Syntax>
<Description>This specifies whether the process in which it is called ignores child process signals or not.</Description>
<HelpID>/progguide/functions_processes/signal</HelpID>
</Function>
<Function Deprecated="no">
<Name>sleep</Name>
<ScriptType>all</ScriptType>
<Syntax>void sleep( long processno )</Syntax>
<Description>This suspends execution of the specified process and places it in the sleeping process queue. To suspend execution of the your own process, specify the predefined variable pid in the argument.</Description>
<HelpID>/progguide/functions_processes/sleep</HelpID>
</Function>
<Function Deprecated="no">
<Name>suspend</Name>
<ScriptType>all</ScriptType>
<Syntax>void  suspend( long msec )</Syntax>
<Description>This stops execution of the current process for a specified number of milliseconds. You can specify any number of milliseconds in the range 0 to 2147483647 (the maximum value for a long).</Description>
<HelpID>/progguide/functions_processes/suspend</HelpID>
</Function>
<Function Deprecated="no">
<Name>wait.and.activate</Name>
<ScriptType>all</ScriptType>
<Syntax>long wait.and.activate( string procname(.)  [, long arg1, arg2, ...] )</Syntax>
<Description>This activates the specified program. The calling program is put in a waiting state. Because the calling program has not ended, it retains all its values.</Description>
<HelpID>/progguide/functions_processes/wait.and.activate</HelpID>
</Function>
<Function Deprecated="no">
<Name>wait</Name>
<ScriptType>all</ScriptType>
<Syntax>string wait( ref long process_id , long option )</Syntax>
<Description>This waits for one or all child processes to exit.</Description>
<HelpID>/progguide/functions_processes/wait</HelpID>
</Function>
<Function Deprecated="no">
<Name>chart.add.data.point</Name>
<ScriptType>all</ScriptType>
<Syntax>long chart.add.data.point( long series , (long|string|double) x , (long|double) y )</Syntax>
<Description>Add a datapoint to the indicated series. The x and y datatypes must correspond with the datatypes set for the indicated axis with the function: chart.set.axis.type().</Description>
<HelpID>/progguide/functions_programmable_dialogs/chart.add.data.point</HelpID>
</Function>
<Function Deprecated="no">
<Name>chart.add.line.series</Name>
<ScriptType>all</ScriptType>
<Syntax>long  chart.add.line.series( long chart , const string title )</Syntax>
<Description>Create a new serie of type line (CHART_TYPE_LINE). Only to be used if the chart is of type CHART_TYPE_BAR or CHART_TYPE_BARHORIZONTAL. A series is the container for a set of data points which belong together and form a chart.</Description>
<HelpID>/progguide/functions_programmable_dialogs/chart.add.line.series</HelpID>
</Function>
<Function Deprecated="no">
<Name>chart.add.series</Name>
<ScriptType>all</ScriptType>
<Syntax>long  chart.add.series( long chart , const string title )</Syntax>
<Description>Create a new series. A series is the container for a set of data points which belong together and form a chart. For a chart of type CHART_PIE exactly one series must be defined. For then other chart types one or more series can be added.Set the chart title and optionally the sub-title.</Description>
<HelpID>/progguide/functions_programmable_dialogs/chart.add.series</HelpID>
</Function>
<Function Deprecated="no">
<Name>chart.clear.data</Name>
<ScriptType>all</ScriptType>
<Syntax>long  chart.clear.data( long chart )</Syntax>
<Description>Remove all series including its datapoints for the indicated chart. This function is typically used in a callback function before new series and datapoints are added.</Description>
<HelpID>/progguide/functions_programmable_dialogs/chart.clear.data</HelpID>
</Function>
<Function Deprecated="no">
<Name>chart.set.axis.title</Name>
<ScriptType>all</ScriptType>
<Syntax>long  chart.set.axis.title( long chart , long axis , const string title )</Syntax>
<Description>Set the title for the indicated axis.</Description>
<HelpID>/progguide/functions_programmable_dialogs/chart.set.axis.title</HelpID>
</Function>
<Function Deprecated="no">
<Name>chart.set.axis.type</Name>
<ScriptType>all</ScriptType>
<Syntax>long  chart.set.axis.type( long chart , long axis , long type )</Syntax>
<Description>Set the data type for the indicated axis.</Description>
<HelpID>/progguide/functions_programmable_dialogs/chart.set.axis.type</HelpID>
</Function>
<Function Deprecated="no">
<Name>chart.set.title</Name>
<ScriptType>all</ScriptType>
<Syntax>long  chart.set.title( long chart , const string title  [, const string subtitle] )</Syntax>
<Description>Set the chart title and optionally the sub-title.</Description>
<HelpID>/progguide/functions_programmable_dialogs/chart.set.title</HelpID>
</Function>
<Function Deprecated="no">
<Name>dialog.add.button</Name>
<ScriptType>all</ScriptType>
<Syntax>long  dialog.add.button( long dlg , const string btnFunction() , const string btnLabel )</Syntax>
<Description>Creates a button on the dialog.</Description>
<HelpID>/progguide/functions_programmable_dialogs/dialog.add.button</HelpID>
</Function>
<Function Deprecated="no">
<Name>dialog.add.chart</Name>
<ScriptType>all</ScriptType>
<Syntax>long  dialog.add.chart( long dlg , long initial.type  [, long allowed.types] )</Syntax>
<Description>Note that this function only effects the Webtop User Interface.</Description>
<HelpID>/progguide/functions_programmable_dialogs/dialog.add.chart</HelpID>
</Function>
<Function Deprecated="no">
<Name>dialog.add.field</Name>
<ScriptType>all</ScriptType>
<Syntax>long  dialog.add.field( long dlg , const string fldName() , const string fldLabel()  [, long attribute, value,...] )</Syntax>
<Description>This function creates a new field on the dialog.</Description>
<HelpID>/progguide/functions_programmable_dialogs/dialog.add.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>dialog.add.listbox</Name>
<ScriptType>all</ScriptType>
<Syntax>long  dialog.add.listbox( long dlg , const string fldName() , const string fldLabel() , const long no.items , long enum.vals() , string enum.desc(,)  [, string attribute, value,...] )</Syntax>
<Description>This function creates a dynamic list box (not representing an enum domain) on the dialog. If there is an enum domain, use the function dialog.add.field().</Description>
<HelpID>/progguide/functions_programmable_dialogs/dialog.add.listbox</HelpID>
</Function>
<Function Deprecated="no">
<Name>dialog.add.text</Name>
<ScriptType>all</ScriptType>
<Syntax>long dialog.add.text( long dlg , string text()  [, long attribute, value, ...] )</Syntax>
<Description>This function creates static texts on the dialog. Purpose of this text can be for explanation or additional help.</Description>
<HelpID>/progguide/functions_programmable_dialogs/dialog.add.text</HelpID>
</Function>
<Function Deprecated="no">
<Name>dialog.new</Name>
<ScriptType>all</ScriptType>
<Syntax>long  dialog.new( string dialogName  [, long attribute, value, ...] )</Syntax>
<Description>Creates a new dialog. dialog.name will be used for the title bar of the new dialog. Possible attributes are:</Description>
<HelpID>/progguide/functions_programmable_dialogs/dialog.new</HelpID>
</Function>
<Function Deprecated="no">
<Name>dialog.refresh.field</Name>
<ScriptType>all</ScriptType>
<Syntax>long  dialog.refresh.field( long dlg , const string fldName() )</Syntax>
<Description>Refreshes the value of a field. This function can be used in a button function if the value for a field has changed.</Description>
<HelpID>/progguide/functions_programmable_dialogs/dialog.refresh.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>dialog.show</Name>
<ScriptType>all</ScriptType>
<Syntax>long  dialog.show( long dlg  [, long previous_window]  [, long load_defaults] )</Syntax>
<Description>Displays the created dialog and start interaction with the user. This function returns when the user clicks the OK or Cancel button. Created dialogs can be used multiple times.</Description>
<HelpID>/progguide/functions_programmable_dialogs/dialog.show</HelpID>
</Function>
<Function Deprecated="no">
<Name>change.progress.delay</Name>
<ScriptType>all</ScriptType>
<Syntax>void change.progress.delay( long delay )</Syntax>
<Description>Changes the delay time of the progress indicator. The delay time is the time in milliseconds after which the progress indicator will appear to the user. This can be used to prevent flashing progress indicators, in case the number of elements to process is low, (i.e. a progress indicator that starts and stops within one or two seconds). By setting the delay time this flashing can be prevented.</Description>
<HelpID>/progguide/functions_progress_indicators/change.progress.delay</HelpID>
</Function>
<Function Deprecated="no">
<Name>change.progress.indicator</Name>
<ScriptType>all</ScriptType>
<Syntax>long  change.progress.indicator( long perc  [, string message, ...] )</Syntax>
<Description>This changes the value of the progress indicator.</Description>
<HelpID>/progguide/functions_progress_indicators/change.progress.indicator</HelpID>
</Function>
<Function Deprecated="no">
<Name>change.progress.title</Name>
<ScriptType>all</ScriptType>
<Syntax>void  change.progress.title( string title )</Syntax>
<Description>Changes the title of the progress indicator.</Description>
<HelpID>/progguide/functions_progress_indicators/change.progress.title</HelpID>
</Function>
<Function Deprecated="no">
<Name>create.progress.indicator</Name>
<ScriptType>all</ScriptType>
<Syntax>long  create.progress.indicator( string title  [, long mode] )</Syntax>
<Description>This creates a progress indicator with the specified title displayed in its title bar. The progress indicator is activated after the first update (using change.progress.indicator). It is removed again using destroy.progress.indicator, or automatically if PROGRESS.NOAUTODESTROY is not specified.</Description>
<HelpID>/progguide/functions_progress_indicators/create.progress.indicator</HelpID>
</Function>
<Function Deprecated="no">
<Name>destroy.progress.indicator</Name>
<ScriptType>all</ScriptType>
<Syntax>void  destroy.progress.indicator( )</Syntax>
<Description>Destroys the progress indicator.</Description>
<HelpID>/progguide/functions_progress_indicators/destroy.progress.indicator</HelpID>
</Function>
<Function Deprecated="no">
<Name>ps.acquire.lock</Name>
<ScriptType>all</ScriptType>
<Syntax>void  ps.acquire.lock( string id )</Syntax>
<Description>Tries to acquire a process lock.</Description>
<HelpID>/progguide/functions_pslock/ps.acquire.lock</HelpID>
</Function>
<Function Deprecated="no">
<Name>ps.is.locked</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  ps.is.locked( string id )</Syntax>
<Description>Tests if the lock identified by the specified id has been acquired by any process, including the current 3GL/4GL process.</Description>
<HelpID>/progguide/functions_pslock/ps.is.locked</HelpID>
</Function>
<Function Deprecated="no">
<Name>ps.release.lock</Name>
<ScriptType>all</ScriptType>
<Syntax>void  ps.release.lock( string id )</Syntax>
<Description>Releases the lock identified by the specified id.</Description>
<HelpID>/progguide/functions_pslock/ps.release.lock</HelpID>
</Function>
<Function Deprecated="no">
<Name>random</Name>
<ScriptType>all</ScriptType>
<Syntax>long random( )</Syntax>
<Description>This function uses a system-independent random number generator. On all systems, the generator will generate the same random numbers, provided that the same seed is supplied.</Description>
<HelpID>/progguide/functions_random_number_generator/random</HelpID>
</Function>
<Function Deprecated="no">
<Name>rnd.d</Name>
<ScriptType>all</ScriptType>
<Syntax>double  rnd.d( )</Syntax>
<Description>This function uses a system-independent random number generator. On all systems, the generator will generate the same random numbers, provided that the same seed is supplied.</Description>
<HelpID>/progguide/functions_random_number_generator/rnd.d</HelpID>
</Function>
<Function Deprecated="no">
<Name>rnd.i</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rnd.i(  [long range] )</Syntax>
<Description>This function uses a system-independent random number generator. On all systems, the generator will generate the same random numbers, provided that the same seed is supplied.</Description>
<HelpID>/progguide/functions_random_number_generator/rnd.i</HelpID>
</Function>
<Function Deprecated="no">
<Name>rnd.init</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rnd.init( long seed )</Syntax>
<Description>rnd.d() and rnd.I() use a system-independent random number generator to generate random numbers. On all systems, the generator will generate the same random numbers, provided that the same seed is supplied.</Description>
<HelpID>/progguide/functions_random_number_generator/rnd.init</HelpID>
</Function>
<Function Deprecated="no">
<Name>srand</Name>
<ScriptType>all</ScriptType>
<Syntax>void  srand( long seed )</Syntax>
<Description>random() generates random numbers using a multiplicative congruential random number generator. The default seed is 1. srand() resets the random number generator to the starting point specified by the seed argument (the seed can be any long value).</Description>
<HelpID>/progguide/functions_random_number_generator/srand</HelpID>
</Function>
<Function Deprecated="no">
<Name>is.rbhp.mode</Name>
<ScriptType>4GL</ScriptType>
<Syntax>boolean is.rbhp.mode( )</Syntax>
<Description>This function can be used to check if this 4GL session is directly started from a Role Based Home Page.</Description>
<HelpID>/progguide/functions_rbhp/is.rbhp.mode</HelpID>
</Function>
<Function Deprecated="no">
<Name>rbhp.get.parameter</Name>
<ScriptType>4GL</ScriptType>
<Syntax>string rbhp.get.parameter( const string name )</Syntax>
<Description>This function returns the named drillback parameter value which was passed by the Role Based Home Page drillback URL. This function can be called from the application function: tcint.dll0001.drill.back(). This function can also be called from a 4GL session when it was started from a Role Based Home Page drillback.</Description>
<HelpID>/progguide/functions_rbhp/rbhp.get.parameter</HelpID>
</Function>
<Function Deprecated="no">
<Name>rbhp.query.extend.from</Name>
<ScriptType>DLL</ScriptType>
<Syntax> rbhp.query.extend.from( const string from.extension )</Syntax>
<Description>Set the FROM clause extension to be used when starting the session. No syntax checking on the passed extension will be done. This extension will be appended to the extension set by the session. This function can only be called from the application function: tcint.dll0001.drill.back().</Description>
<HelpID>/progguide/functions_rbhp/rbhp.query.extend.from</HelpID>
</Function>
<Function Deprecated="no">
<Name>rbhp.query.extend.select</Name>
<ScriptType>DLL</ScriptType>
<Syntax> rbhp.query.extend.select( const string select.extension )</Syntax>
<Description>Set the SELECT clause extension to be used when starting the session. No syntax checking on the passed extension will be done. This extension will be appended to the extension set by the session. This function can only be called from the application function: tcint.dll0001.drill.back().</Description>
<HelpID>/progguide/functions_rbhp/rbhp.query.extend.select</HelpID>
</Function>
<Function Deprecated="no">
<Name>rbhp.query.extend.where</Name>
<ScriptType>DLL</ScriptType>
<Syntax> rbhp.query.extend.where( const string where.extension )</Syntax>
<Description>Set the WHERE clause extension to be used when starting the session. No syntax checking on the passed extension will be done. This extension will be appended to the extension set by the session. This function can only be called from the application function: tcint.dll0001.drill.back().</Description>
<HelpID>/progguide/functions_rbhp/rbhp.query.extend.where</HelpID>
</Function>
<Function Deprecated="no">
<Name>rbhp.set.error.message</Name>
<ScriptType>DLL</ScriptType>
<Syntax> rbhp.set.error.message( const string mess.or.code  [, void arg ...] )</Syntax>
<Description>Set error message and/or error code to be reported to the end user when during the tcint.dll0001.drill.back() function an error occurred. This function can only be called from the application function: tcint.dll0001.drill.back().</Description>
<HelpID>/progguide/functions_rbhp/rbhp.set.error.message</HelpID>
</Function>
<Function Deprecated="no">
<Name>rbhp.set.session</Name>
<ScriptType>DLL</ScriptType>
<Syntax> rbhp.set.session( const string session.code , long mode , long company )</Syntax>
<Description>Set the session to be started, the mode of this session and the company number in which this session should be started. This function can only be called from the application function: tcint.dll0001.drill.back().</Description>
<HelpID>/progguide/functions_rbhp/rbhp.set.session</HelpID>
</Function>
<Function Deprecated="no">
<Name>brp.close</Name>
<ScriptType>all</ScriptType>
<Syntax>void  brp.close( long brp_id )</Syntax>
<Description>This stops the report writer for the specified report. brp_id is the report ID returned by brp.open() or brp.open.language() when the report was activated. The report is sorted (if necessary) and sent to the printer spooler.</Description>
<HelpID>/progguide/functions_reports/brp.close</HelpID>
</Function>
<Function Deprecated="no">
<Name>brp.open.language</Name>
<ScriptType>all</ScriptType>
<Syntax>long  brp.open.language( string rep_name(16) , string lang , string device(14) , long mode )</Syntax>
<Description>This is the same as brp.open() in most respects, except that it includes a language argument. This enables you to specify a language for the report other than the default user language.</Description>
<HelpID>/progguide/functions_reports/brp.open.language</HelpID>
</Function>
<Function Deprecated="no">
<Name>brp.open</Name>
<ScriptType>all</ScriptType>
<Syntax>long  brp.open( string rep_name(16) , string device(14) , long mode )</Syntax>
<Description>This activates a specified report and opens a specified spooler device (if it is not already open). Several reports can be active simultaneously. In a 4GL script, the name of the current report is stored in the predefined variable spool.report. This variable is available in the on.choice subsection of a choice.print.data section.</Description>
<HelpID>/progguide/functions_reports/brp.open</HelpID>
</Function>
<Function Deprecated="no">
<Name>brp.ready</Name>
<ScriptType>all</ScriptType>
<Syntax>long  brp.ready( long brp_id )</Syntax>
<Description>This signals the report writer that a record is ready to be imported into a particular report. The report writer then prints the record. You call this function after filling the fields of a record that the report writer can process. The fields are specified in the report and must be declared as EXTERN in the program script.</Description>
<HelpID>/progguide/functions_reports/brp.ready</HelpID>
</Function>
<Function Deprecated="no">
<Name>choice.report</Name>
<ScriptType>all</ScriptType>
<Syntax>long  choice.report( ref string reportname(15) )</Syntax>
<Description>This returns the name of a report from the session data in the data dictionary. The report is taken from the group defined in the predefined variable reportgrp (default = 1). If there is more than one report in the group, the user is presented with a menu from which to select the required report.</Description>
<HelpID>/progguide/functions_reports/choice.report</HelpID>
</Function>
<Function Deprecated="no">
<Name>rprt_close</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rprt_close(  [long mess_flag] )</Syntax>
<Description>This is a short version of brp.close(). It closes the report writer for the current report. You can use the function in a 4GL script in the subsection on.choice of the section choice.print.data. In this section, the predefined variable spool.report is available. This variable stores the name of the current report.</Description>
<HelpID>/progguide/functions_reports/rprt_close</HelpID>
</Function>
<Function Deprecated="no">
<Name>rprt_open</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rprt_open( )</Syntax>
<Description>This is a short version of brp.open(). It has the same effect as:</Description>
<HelpID>/progguide/functions_reports/rprt_open</HelpID>
</Function>
<Function Deprecated="no">
<Name>rprt_send</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rprt_send( )</Syntax>
<Description>This is a short version of brp.ready(). It has the same effect as:</Description>
<HelpID>/progguide/functions_reports/rprt_send</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.font.spec</Name>
<ScriptType>all</ScriptType>
<Syntax>string  rsc.font.spec( long font_weight , long font_slant , long font_height , long font_points , long font_spacing , long font_width , long font_charwidth )</Syntax>
<Description>This returns a string that defines a font with the specified characteristics.</Description>
<HelpID>/progguide/functions_resource_sets/rsc.font.spec</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.get</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rsc.get( ref string values() , string package_code(2) , string resource_set(16) , string resource_id(24),... )</Syntax>
<Description/>
<HelpID>/progguide/functions_resource_sets/rsc.get</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.boolean</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rsc.boolean( string variable )</Syntax>
<Description>These convert a specified program variable to the corresponding resource value format (boolean, double, enum, and so on).</Description>
<HelpID>/progguide/functions_resource_sets/rsc.many</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.double</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rsc.double( string variable )</Syntax>
<Description>These convert a specified program variable to the corresponding resource value format (boolean, double, enum, and so on).</Description>
<HelpID>/progguide/functions_resource_sets/rsc.many</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.enum</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rsc.enum( string variable )</Syntax>
<Description>These convert a specified program variable to the corresponding resource value format (boolean, double, enum, and so on).</Description>
<HelpID>/progguide/functions_resource_sets/rsc.many</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.long</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rsc.long( string variable )</Syntax>
<Description>These convert a specified program variable to the corresponding resource value format (boolean, double, enum, and so on).</Description>
<HelpID>/progguide/functions_resource_sets/rsc.many</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.string</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rsc.string( string variable )</Syntax>
<Description>These convert a specified program variable to the corresponding resource value format (boolean, double, enum, and so on).</Description>
<HelpID>/progguide/functions_resource_sets/rsc.many</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.put</Name>
<ScriptType>all</ScriptType>
<Syntax>void rsc.put( string package_code(2) , string resource_set(16) , string resource_id(16), value(40)   [, string resource_id(16), value(40) . . .] )</Syntax>
<Description>This updates one or more resource values in a specified resource set. You can use the following functions to convert program variables to a resource value format: rsc.boolean(), rsc.double(), rsc.enum(), rsc.long(), and rsc.string().</Description>
<HelpID>/progguide/functions_resource_sets/rsc.put</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.setboolean</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rsc.setboolean( string variable , string value(40) )</Syntax>
<Description>These store a resource value of a particular type in a specified program variable.</Description>
<HelpID>/progguide/functions_resource_sets/rsc.setmany</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.setdouble</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rsc.setdouble( string variable , string value(40) )</Syntax>
<Description>These store a resource value of a particular type in a specified program variable.</Description>
<HelpID>/progguide/functions_resource_sets/rsc.setmany</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.setenum</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rsc.setenum( string variable , string value(40) )</Syntax>
<Description>These store a resource value of a particular type in a specified program variable.</Description>
<HelpID>/progguide/functions_resource_sets/rsc.setmany</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.setlong</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rsc.setlong( string variable , string value(40) )</Syntax>
<Description>These store a resource value of a particular type in a specified program variable.</Description>
<HelpID>/progguide/functions_resource_sets/rsc.setmany</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsc.setstring</Name>
<ScriptType>all</ScriptType>
<Syntax>void  rsc.setstring( string variable , string value(40) )</Syntax>
<Description>These store a resource value of a particular type in a specified program variable.</Description>
<HelpID>/progguide/functions_resource_sets/rsc.setmany</HelpID>
</Function>
<Function Deprecated="no">
<Name>domainof</Name>
<ScriptType>all</ScriptType>
<Syntax>string domainof( string variable )</Syntax>
<Description>This compile time function returns the name of the domain of the supplied variable.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/domainof</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.session.permission</Name>
<ScriptType>all</ScriptType>
<Syntax>long  get.session.permission( string session(13) )</Syntax>
<Description>Retrieves the permission of the session (session) in a bit pattern (see return values). Each of the listed 'return values' represents one bit. Multiple values can be bitwise OR-ed into one pattern and returned by the function. In cases of internal errors in the function, the value SESSION_NO_PERMISSION will be returned.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/get.session.permission</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.audit.hosts</Name>
<ScriptType>all</ScriptType>
<Syntax>long rdi.audit.hosts( string table_name(9) , long comp_nr , ref string hosts() )</Syntax>
<Description>This returns the names of the hosts on which audit information for a particular table is stored.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.audit.hosts</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.column.combined</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.column.combined( string column_name(18) , string child_colums(18, 32) )</Syntax>
<Description>This returns information about the child columns of a specified column.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.column.combined</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.column</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.column( string column_name(18) , ref string domain_name(14) , ref long offset , ref long size , ref long dept , ref long type , ref long flag , ref string default_value(.) )</Syntax>
<Description>This returns information about a specified table column.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.column</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.ctoe</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.ctoe( string domain_name(14) , string enum_name )</Syntax>
<Description>This gets an enum as string and returns the enum-value as long belonging to it in the specified domain.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.ctoe</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.date.input.format$</Name>
<ScriptType>all</ScriptType>
<Syntax>string rdi.date.input.format$( string date_format(7)  [, ref string display_format()] )</Syntax>
<Description>This returns the input format defined in the data dictionary for a specified date format. The input format can be any combination of day-in-week (D), week-in-year (W), and year (Y), or any combination of day-in-month (D), month-in-year (M), and year (Y). For example, if the function returns MDY, the input format on a form field must be month, day-in-month, and year (for example, 12311998).</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.date.input.format</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.byte</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.byte( string domain_name(14) , ref long digits )</Syntax>
<Description>This returns information about a domain of type DB.BYTE.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.byte</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.combined</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.combined( string domain_name(14) , ref string child_domains(14, 32) )</Syntax>
<Description>This returns information about a domain of type DB.COMBINED.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.combined</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.date</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.date( string domain_name(14) , ref long digits )</Syntax>
<Description>This returns information about a domain of type DB.DATE.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.date</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.double</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.double( string domain_name(14) , ref long digits_before , ref long digits_after , ref long divide_factor , ref long round_code )</Syntax>
<Description>This returns information about a domain of type DB.DOUBLE.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.double</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.enum.value</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.enum.value( string domain_name , long enum_item , string language , ref string keyword(.) , ref string descr(.) , long value )</Syntax>
<Description>This returns information about a specified item in an enumerated domain.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.enum.value</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.enum</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.enum( string domain_name(14) , ref long no_enum_items )</Syntax>
<Description>This returns information about a domain of type DB.ENUM.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.enum</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.float</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.float( string domain_name(14) , ref long digits_before , ref long digits_after , ref long divide_factor , ref long round_code )</Syntax>
<Description>This returns information about a domain of type DB.FLOAT.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.float</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.integer</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.integer( string domain_name(14) , ref long digits )</Syntax>
<Description>This returns information about a domain of type DB.INTEGER.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.integer</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.long</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.long( string domain_name(14) , ref long digits )</Syntax>
<Description>This returns information about a domain of type DB.LONG.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.long</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.set.value</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.set.value( string domain_name(14) , long enum_item , string language , ref string keyword(.) , string descr(.) , ref string value )</Syntax>
<Description>This returns information about a specified item in a set-type domain.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.set.value</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.set</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.set( string domain_name(14) , ref long no_enum_items )</Syntax>
<Description>This returns information about a domain of type DB.BITSET.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.set</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.string</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.string( string domain_name(14) , ref long length , ref long convert )</Syntax>
<Description>This returns information about a domain of type DB.STRING.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.string</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain.text</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain.text( string domain_name(14) , ref long digits )</Syntax>
<Description>This returns information about a domain of type DB.TEXT.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain.text</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.domain</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.domain( string domain_name(14) , ref string oformat(.) , ref string lechar(.) , ref string ilchar(.) , ref long adjust , ref string errmess(.) , ref long range_expr_id  [, ref long plen]  [, ref string iformat(.)] )</Syntax>
<Description>This returns information about a specified domain.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.domain</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.etoc$</Name>
<ScriptType>all</ScriptType>
<Syntax>string rdi.etoc$( string domain_name(14) , long enum_value as long )</Syntax>
<Description>This gets an enum-value as long and returns a string representing it in the specified domain.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.etoc</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.first.day.of.week</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.first.day.of.week( )</Syntax>
<Description>This function returns the first day of the week as defined for the company of the user. The returned number is relative to Sunday (=1). So, for example, if the function returns 2, this indicates that Monday is the user's first day of the week.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.first.day.of.week</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.format.digits</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.format.digits( string format() , ref long digits.before , ref long digits.after  [, ref string display.format()] )</Syntax>
<Description>This returns information about  a specified format.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.format.digits</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.index</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.index( string table_name(9) , long index_no , ref long parts(32, 3) , ref boolean duplicate , ref boolean active )</Syntax>
<Description>This returns information about  a specified index.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.index</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.reference</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.reference( string column_name(18) , ref string ref_column(18) , ref long ref_mode , ref string ref_mess()  [, ref boolean check_by_db]  [, ref long ref_update_mode]  [, ref long ref_delete_mode] )</Syntax>
<Description>If a database column references a column in another table, use this function to retrieve information about the referenced column.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.reference</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.report.sensitivity</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.report.sensitivity( const string reportname )</Syntax>
<Description>Returns sensitivity of current report if no reportname was specified, otherwise the given reportname is used.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.report.sensitivity</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.session.sensitivity</Name>
<ScriptType>all</ScriptType>
<Syntax>long rdi.session.sensitivity( )</Syntax>
<Description>Returns sensitivity of current session. The function rdi.session.sensitivity also checks all table fields on a form (if any). The returned sensitivity is the highest sensitivity applicable to a session of table field on a form.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.session.sensitivity</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.table.column</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.table.column( string table_name(9) , long column_number , ref string column_name , ref string domain_name(14) , ref long offset , ref long size , ref long dept , ref long type , ref long flag , ref string default_value  [, long flag_filter] )</Syntax>
<Description>This returns information about a specified column which is identified by the table name and the column number. Note that the first columns in the table are reserved for the following columns: Refcntd, Refcntu, _compnr, _dlock, and _index&lt;number&gt; (one column for each index).</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.table.column</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.table</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.table( string table_name(9) , ref long no_keys , ref long no_columns , ref long int_length , ref long real_length  [, ref long no_cdf] )</Syntax>
<Description>This returns information about a specified table.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.table</HelpID>
</Function>
<Function Deprecated="no">
<Name>rdi.tablefield.sensitivity</Name>
<ScriptType>all</ScriptType>
<Syntax>long  rdi.tablefield.sensitivity( const string tablefield )</Syntax>
<Description>Returns sensitivity of the provided table field.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/rdi.tablefield.sensitivity</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.bobject.desc</Name>
<ScriptType>all</ScriptType>
<Syntax>string  tt.bobject.desc( string b_object(10) , ref string desc() mb )</Syntax>
<Description>This retrieves the description of a specified business object (b_object). It is returned, and optionally also stored in the desc argument. (The optional argument is only present for backwards compatibility.)</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.bobject.desc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.chart.desc</Name>
<ScriptType>all</ScriptType>
<Syntax>string  tt.chart.desc( string chart  [, ref string desc() mb] )</Syntax>
<Description>This retrieves the name of the specified chart (chart). It is returned, and optionally also stored in the desc argument. (The optional argument is only present for backwards compatibility.)</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.chart.desc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.comp.desc</Name>
<ScriptType>all</ScriptType>
<Syntax>string  tt.comp.desc(  [ref string desc() mb] )</Syntax>
<Description>This retrieves the name of the current company. It is returned, and optionally also stored in the desc argument. (The optional argument is only present for backwards compatibility.)</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.comp.desc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.company</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.company( long company , ref string comp_desc() mb , ref string deflt_curr() , ref long first_weekday )</Syntax>
<Description>This returns information about a specified company.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.company</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.currency</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.currency( string cur(3) , ref string cur_desc() mb , ref string thous_sign , ref string dec_sign , ref string symbol() )</Syntax>
<Description>This returns information about a specified currency.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.currency</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.device</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.device( string device(9) , ref string desc() mb , ref long device_type )</Syntax>
<Description>This returns information about a specified device.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.device</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.field.desc</Name>
<ScriptType>all</ScriptType>
<Syntax>string  tt.field.desc( string field(17) , ref string desc() mb )</Syntax>
<Description>This retrieves information about a specified table field. It is returned, and optionally also stored in the desc argument. (The optional argument is only present for backwards compatibility.)</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.field.desc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.index.desc</Name>
<ScriptType>all</ScriptType>
<Syntax>string  tt.index.desc( string tabl(8) , long indexnr  [, ref string desc() mb] )</Syntax>
<Description>This returns information about  a specified table index. It is returned, and optionally also stored in the desc argument. (The optional argument is only present for backwards compatibility.)</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.index.desc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.is.domain.separated</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.is.domain.separated( const string a_domain()  [, ref long numberOfSeparators]  [, ref string separatorCharacter()] )</Syntax>
<Description>Returns whether or not a segmented domain should be printed with separators</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.is.domain.separated</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.label.desc.by.lang</Name>
<ScriptType>all</ScriptType>
<Syntax>string  tt.label.desc.by.lang( string label_code(19) , string language(1)  [, long label_width]  [, long label_height]  [, domain ttadv.cont label_context] )</Syntax>
<Description>Returns the label description of the specified label in the specified language.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.label.desc.by.lang</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.label.desc</Name>
<ScriptType>all</ScriptType>
<Syntax>string  tt.label.desc( string label_code(19) , domain ttadv.cont label_context , ref string desc )</Syntax>
<Description>This returns information of the specified label. It is returned, and optionally also stored in the desc argument. (The optional argument is only present for backwards compatibility.)</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.label.desc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.langdesc</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.langdesc( string language , ref string desc() mb )</Syntax>
<Description/>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.langdesc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.language</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.language( string lang , ref string desc() mb , ref string dec_sign , ref string thous_sign , ref string date_sep , ref string time_sep )</Syntax>
<Description>This returns information about a specified language.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.language</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.library</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.library( string library.code , ref string library.desc() mb )</Syntax>
<Description/>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.library</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.menu.desc</Name>
<ScriptType>all</ScriptType>
<Syntax>string tt.menu.desc( string menu(13) , string par_menu  [, ref string desc() mb] )</Syntax>
<Description>This returns information about a specified menu. It is returned, and optionally also stored in the desc argument. (The optional argument is only present for backwards compatibility.)</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.menu.desc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.menu.present</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.menu.present( string menu(13) , string par_menu )</Syntax>
<Description>This checks if the specified menu of the current package is present in the runtime dictionary.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.menu.present</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.report.desc</Name>
<ScriptType>all</ScriptType>
<Syntax>string tt.report.desc( string reprt(15)  [, ref string desc() mb] )</Syntax>
<Description>This retrieves the description (in the user's current language) of a specified report (reprt). It is returned, and optionally also stored in the desc argument. (The optional argument is only present for backwards compatibility.)</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.report.desc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.reportgroup.exists</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.reportgroup.exists( string session(13) , long report_group )</Syntax>
<Description>This checks if a specified report group (report_group) is present in the definition of the specified session (session).</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.reportgroup.exists</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.session.desc</Name>
<ScriptType>all</ScriptType>
<Syntax>string  tt.session.desc( string session(13)  [, ref string desc() mb]  [, string language] )</Syntax>
<Description>This retrieves the description of a specified session (session). It is returned, and optionally also stored in the desc argument. (The optional argument is only present for backwards compatibility.)</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.session.desc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.session.present</Name>
<ScriptType>all</ScriptType>
<Syntax>long  tt.session.present( string session(13) )</Syntax>
<Description>This checks if the specified session is present in the runtime dictionary.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.session.present</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.short.field.desc</Name>
<ScriptType>all</ScriptType>
<Syntax>string  tt.short.field.desc( string field(17) , long length , ref string desc() mb )</Syntax>
<Description>This returns the description (in the user's current language) of a specified table field. It is returned, and optionally also stored in the desc argument. (The optional argument is only present for backwards compatibility.)</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.short.field.desc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.table.desc</Name>
<ScriptType>all</ScriptType>
<Syntax>string  tt.table.desc( string table(8) , ref string desc() mb )</Syntax>
<Description>This retrieves the description (in the user's current language) of a specified table (table). It is returned, and optionally also stored in the desc argument. (The optional argument is only present for backwards compatibility.)</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.table.desc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.user</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.user( string user(12) , ref string name() mb )</Syntax>
<Description>This retrieves the name of the specified user (user) and stores it in the name argument.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt.user</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.chm.appl.desc</Name>
<ScriptType>all</ScriptType>
<Syntax>long  tt.chm.appl.desc( string appl(40) , ref string desc() mb )</Syntax>
<Description>This retrieves the description (in the user's current language) of a specified Chart Manager application.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt_chm.appl.desc</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.chm.application</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.chm.application( string appl )</Syntax>
<Description>This checks if the specified Chart Manager application is present in the runtime dictionary.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt_chm.application</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.chm.chart</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.chm.chart( string appl(40) , string chart_name(16) )</Syntax>
<Description>This checks if the specified chart is present in the specified Chart Manager application.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt_chm.chart</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.chm.charttype</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tt.chm.charttype( string appl(40) , string chart_type(16) )</Syntax>
<Description>This checks if the specified chart type is present in the specified Chart Manager application.</Description>
<HelpID>/progguide/functions_runtime_dictionary_information/tt_chm.charttype</HelpID>
</Function>
<Function Deprecated="no">
<Name>saas.bse.is.multi.tenant.enabled</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean saas.bse.is.multi.tenant.enabled( )</Syntax>
<Description>Returns TRUE if the current BSE is multi-tenant enabled; FALSE otherwise. A BSE is multi-tenant enabled if the directory ${BSE}/tenant_config exists.</Description>
<HelpID>/progguide/functions_saas/saas.bse.is.multi.tenant.enabled</HelpID>
</Function>
<Function Deprecated="no">
<Name>saas.get.tenant.id</Name>
<ScriptType>all</ScriptType>
<Syntax>string  saas.get.tenant.id( )</Syntax>
<Description>Returns the tenant id of the tenant under which the user is logged in. If the user is not logged in under a tenant then the empty string is returned.</Description>
<HelpID>/progguide/functions_saas/saas.get.tenant.id</HelpID>
</Function>
<Function Deprecated="no">
<Name>qss.search</Name>
<ScriptType>all</ScriptType>
<Syntax>long qss.search( long flag , void search , ref void array , ref long def  [, long dept] )</Syntax>
<Description>This searches a specified array for a particular value, which is referred to as the search key. By default, it reads the array sequentially until it finds the specified value (that is, it performs a linear search). To perform a binary search instead, you must first sort the data, for example with and then call qss.search() with the flag argument set to QSS.SRC.IS.SORTED. If the same search key occurs more than once, then you should also specify the QSS.SRC.DUPL.ALLOWED option, or else it is not predictable which one of the duplicate records is found.</Description>
<HelpID>/progguide/functions_searching_sorting_data/qss.search</HelpID>
</Function>
<Function Deprecated="no">
<Name>qss.sort</Name>
<ScriptType>all</ScriptType>
<Syntax>long  qss.sort( ref void array , ref long def , long dept )</Syntax>
<Description>This function performs a fast sort of a specified array.</Description>
<HelpID>/progguide/functions_searching_sorting_data/qss.sort</HelpID>
</Function>
<Function Deprecated="no">
<Name>create.extra.toolbar</Name>
<ScriptType>4GL</ScriptType>
<Syntax>long  create.extra.toolbar( string form_command , string gif_file  [, string form_command]  [, string gif_file] )</Syntax>
<Description>This adds a secondary toolbar to a session.</Description>
<HelpID>/progguide/functions_secondary_toolbars/create.extra.toolbar</HelpID>
</Function>
<Function Deprecated="no">
<Name>rsa.create.signature$()</Name>
<ScriptType>all</ScriptType>
<Syntax>string rsa.create.signature$()( const string message , const string scrambled.private.key  [, ref long signlen]  [, ref string errormsg] )</Syntax>
<Description>Creates a base-64 encoded signature with a RSA private key</Description>
<HelpID>/progguide/functions_security/rsa.create.signature$</HelpID>
</Function>
<Function Deprecated="no">
<Name>do.parent.selection</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void do.parent.selection( void function_name  [,  ...] )</Syntax>
<Description>This function can be used to process records selected in a parent session. For example: in a print session only print the records that are selected in the parent.</Description>
<HelpID>/progguide/functions_selection/do.parent.selection</HelpID>
</Function>
<Function Deprecated="no">
<Name>ncrs.is.session.empty</Name>
<ScriptType>4GL</ScriptType>
<Syntax>boolean  ncrs.is.session.empty( )</Syntax>
<Description>This function can be used in a print or a processing session in an init.form section. The function can be used to decide whether the functional default command should be triggered. Possible the default command is another one, than the command that actually trigges the wanted functionality. The function tells whether the session has no fields left, because the selection group has been made invisible.</Description>
<HelpID>/progguide/functions_selection/ncrs.is.session.empty</HelpID>
</Function>
<Function Deprecated="no">
<Name>sel.add.parent.tables</Name>
<ScriptType>4GL</ScriptType>
<Syntax>boolean  sel.add.parent.tables( long group_id , string parent_table )</Syntax>
<Description>In the Dynamic Form Editor you can already indicate the main table of the parent session for which a session can handle the selection. You should specify that table at the "selection range group" in which the user can specify the range if the selection of the parent session is not used. Because you can only specify one table per group, you need to use this function of you want to add one or more extra tables to a group.</Description>
<HelpID>/progguide/functions_selection/sel.add.parent.tables</HelpID>
</Function>
<Function Deprecated="no">
<Name>sel.num.selected</Name>
<ScriptType>4GL</ScriptType>
<Syntax>long  sel.num.selected( )</Syntax>
<Description>This function returns the number of records that is selected in the session.</Description>
<HelpID>/progguide/functions_selection/sel.num.selected</HelpID>
</Function>
<Function Deprecated="no">
<Name>sel.parent.num.selected</Name>
<ScriptType>4GL</ScriptType>
<Syntax>long  sel.parent.num.selected( )</Syntax>
<Description>This function returns the number of records that is selected in the parent of the current session.</Description>
<HelpID>/progguide/functions_selection/sel.parent.num.selected</HelpID>
</Function>
<Function Deprecated="no">
<Name>sel.use.parent.selection</Name>
<ScriptType>4GL</ScriptType>
<Syntax>boolean  sel.use.parent.selection( string parent_table )</Syntax>
<Description>This function can be used in a print or a processing session to determine whether to user wants to print/process based on a selection range, or based on the selection that is made in the parent. If the user wants to use the selection of the parent, you should use the function do.parent.selection to get the selection. The user can indicate his choice with an optionset. Read below how to create that option set.</Description>
<HelpID>/progguide/functions_selection/sel.use.parent.selection</HelpID>
</Function>
<Function Deprecated="no">
<Name>sha.add.data</Name>
<ScriptType>all</ScriptType>
<Syntax>void sha.add.data( long id , string data.in )</Syntax>
<Description>Adds one block of data to be hashed. It is not needed to supply all input data at once in one large block. Sha.add.data() may be called several times with relatively small blocks. Internally, the SHA-1 algorithm processes the input in 512 bit blocks, i.e. 64 byte at a time.</Description>
<HelpID>/progguide/functions_sha/sha.add.data</HelpID>
</Function>
<Function Deprecated="no">
<Name>sha.compute.output</Name>
<ScriptType>all</ScriptType>
<Syntax>long sha.compute.output( long id , ref string data.out )</Syntax>
<Description>Adds some padding and a bit count to the message, as prescibed in the standard, and computes the resulting message digest. After this, the Secure Hash Algorithm state may be reused for hashing another message, by calling sha.initialize, sha.add.data, and sha.compute.output again.</Description>
<HelpID>/progguide/functions_sha/sha.compute.output</HelpID>
</Function>
<Function Deprecated="no">
<Name>sha.create</Name>
<ScriptType>all</ScriptType>
<Syntax>long sha.create( )</Syntax>
<Description>Allocates memory to contain the state of the Secure Hash Algorithm.</Description>
<HelpID>/progguide/functions_sha/sha.create</HelpID>
</Function>
<Function Deprecated="no">
<Name>sha.destroy</Name>
<ScriptType>all</ScriptType>
<Syntax>void  sha.destroy( long id )</Syntax>
<Description>Destroys the Secure Hash Algorithm state.</Description>
<HelpID>/progguide/functions_sha/sha.destroy</HelpID>
</Function>
<Function Deprecated="no">
<Name>sha.initialize</Name>
<ScriptType>all</ScriptType>
<Syntax>void  sha.initialize( long id )</Syntax>
<Description>Initializes the state of the Secure Hash Algorithm.</Description>
<HelpID>/progguide/functions_sha/sha.initialize</HelpID>
</Function>
<Function Deprecated="no">
<Name>soap.addMethod</Name>
<ScriptType>all</ScriptType>
<Syntax>void soap.addMethod( long soapMessage , long method )</Syntax>
<Description>Adds the specified Method to the Body of the SOAP Envelope of the given SOAP message.</Description>
<HelpID>/progguide/functions_soap/soap.addMethod</HelpID>
</Function>
<Function Deprecated="no">
<Name>soap.deleteMessage</Name>
<ScriptType>all</ScriptType>
<Syntax>void soap.deleteMessage( ref long soapMessage )</Syntax>
<Description>Deletes the specified SOAP Message from memory, including all contained data. When the SOAP Message contains a SOAP Envelope, the SOAP Envelope is deleted as well. The passed soapMessage handle is set to 0 on return.</Description>
<HelpID>/progguide/functions_soap/soap.deleteMessage</HelpID>
</Function>
<Function Deprecated="no">
<Name>soap.getBody</Name>
<ScriptType>all</ScriptType>
<Syntax>long soap.getBody( long soapMessage )</Syntax>
<Description>Returns the Body of the SOAP Envelope of the given SOAP message.</Description>
<HelpID>/progguide/functions_soap/soap.getBody</HelpID>
</Function>
<Function Deprecated="no">
<Name>soap.getEnvelope</Name>
<ScriptType>all</ScriptType>
<Syntax>long soap.getEnvelope( long soapMessage )</Syntax>
<Description>Returns the SOAP Envelope of the given SOAP message.</Description>
<HelpID>/progguide/functions_soap/soap.getEnvelope</HelpID>
</Function>
<Function Deprecated="no">
<Name>soap.getFault</Name>
<ScriptType>all</ScriptType>
<Syntax>long soap.getFault( long soapMessage )</Syntax>
<Description>Returns the Fault which is contained in the Body of the SOAP Envelope of the specified SOAP message.</Description>
<HelpID>/progguide/functions_soap/soap.getFault</HelpID>
</Function>
<Function Deprecated="no">
<Name>soap.getHeader</Name>
<ScriptType>all</ScriptType>
<Syntax>long soap.getHeader( long soapMessage )</Syntax>
<Description>Returns the Header of the SOAP Envelope of the given SOAP message.</Description>
<HelpID>/progguide/functions_soap/soap.getHeader</HelpID>
</Function>
<Function Deprecated="no">
<Name>soap.getMethod</Name>
<ScriptType>all</ScriptType>
<Syntax>long soap.getMethod( long soapMessage )</Syntax>
<Description>Returns the Method which is contained in the Body of the SOAP Envelope of the specified SOAP message.</Description>
<HelpID>/progguide/functions_soap/soap.getMethod</HelpID>
</Function>
<Function Deprecated="no">
<Name>soap.init</Name>
<ScriptType>all</ScriptType>
<Syntax>long soap.init( )</Syntax>
<Description>Initializes the SOAP client.</Description>
<HelpID>/progguide/functions_soap/soap.init</HelpID>
</Function>
<Function Deprecated="no">
<Name>soap.invoke</Name>
<ScriptType>all</ScriptType>
<Syntax>long soap.invoke( long soapMessage , const string url , ref long responseMessage )</Syntax>
<Description>Invokes a SOAP request as specified by the given SOAP Message. The request is sent to a SOAP service which is identified by the specified url. On return the response SOAP Message is returned in the responseMessage argument.</Description>
<HelpID>/progguide/functions_soap/soap.invoke</HelpID>
</Function>
<Function Deprecated="no">
<Name>soap.newMessage</Name>
<ScriptType>all</ScriptType>
<Syntax>long soap.newMessage( const string soapNsURI )</Syntax>
<Description>Creates a new SOAP Message, including a new SOAP Envelope and returns a handle to the new SOAP Message. The new SOAP Envelope will be created based on the specified SOAP namespace URI.</Description>
<HelpID>/progguide/functions_soap/soap.newMessage</HelpID>
</Function>
<Function Deprecated="no">
<Name>soap.setAction</Name>
<ScriptType>all</ScriptType>
<Syntax>void soap.setAction( long soapMessage , const string soapAction )</Syntax>
<Description>Sets the SOAP Action of the specified SOAP Message. This action is sent together with the the SOAP Envelope to the SOAP service.</Description>
<HelpID>/progguide/functions_soap/soap.setAction</HelpID>
</Function>
<Function Deprecated="no">
<Name>spool.buf</Name>
<ScriptType>all</ScriptType>
<Syntax>void  spool.buf( const string buffer , long length )</Syntax>
<Description>This sends the contents of the buffer argument to the current spooler. The current spooler must be already open. The name of the current spooler is available in the predefined variable spool.id.</Description>
<HelpID>/progguide/functions_spooling/spool.buf</HelpID>
</Function>
<Function Deprecated="no">
<Name>spool.close</Name>
<ScriptType>all</ScriptType>
<Syntax>void  spool.close( )</Syntax>
<Description>This closes the spooler specified by the predefined variable spool.id. By default spool.id contains the ID of the current spooler. If more than one spooler is currently open, set spool.id to the ID of the required spooler before you call this function. After the spooler is closed, spool.id is set to zero.</Description>
<HelpID>/progguide/functions_spooling/spool.close</HelpID>
</Function>
<Function Deprecated="no">
<Name>spool.line</Name>
<ScriptType>all</ScriptType>
<Syntax>void  spool.line( )</Syntax>
<Description>This sends the contents of the predefined variable spool.pr.line and a newline character to the spooler specified by the predefined variable spool.id. By default spool.id contains the ID of the current spooler. If more than one spooler is currently open, set spool.id to the ID of the required spooler before you call this function. After this function has been executed, spool.pr.line is cleared.</Description>
<HelpID>/progguide/functions_spooling/spool.line</HelpID>
</Function>
<Function Deprecated="no">
<Name>spool.open</Name>
<ScriptType>all</ScriptType>
<Syntax>long  spool.open( string reportname , string device , string mode )</Syntax>
<Description>This opens a specified spooler device.</Description>
<HelpID>/progguide/functions_spooling/spool.open</HelpID>
</Function>
<Function Deprecated="no">
<Name>clear.query.extend.in.zoom</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  clear.query.extend.in.zoom( )</Syntax>
<Description>This clears a query extension that was previously defined in the selection.filter section. The 4GL engine automatically clears the extension in the after.zoom section of the session. Use this function to force an earlier removal of the query extension. For example, to clear the query extension before defining an extension for another zoom session.</Description>
<HelpID>/progguide/functions_sql_query_extensions/clear.query.extend.in.zoom</HelpID>
</Function>
<Function Deprecated="no">
<Name>query.extend.from.in.zoom</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  query.extend.from.in.zoom( string extension_string )</Syntax>
<Description>Use this to construct a query extension for the FROM clause of a database query. Use this function for zoom sessions. Use for defining query filters in non-zoom sessions.</Description>
<HelpID>/progguide/functions_sql_query_extensions/query.extend.from.in.zoom</HelpID>
</Function>
<Function Deprecated="no">
<Name>query.extend.from</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  query.extend.from( string extension_string  [, long mode] )</Syntax>
<Description>Use this to construct a query extension for the FROM clause of a database query. Use this function for non-zoom sessions. Use for defining query filters for zoom sessions.</Description>
<HelpID>/progguide/functions_sql_query_extensions/query.extend.from</HelpID>
</Function>
<Function Deprecated="no">
<Name>query.extend.select.in.zoom</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  query.extend.select.in.zoom( string extension_string )</Syntax>
<Description>Use this to construct a query extension for the SELECT clause of a database query. Use this function for zoom sessions. Use for defining query filters in non-zoom sessions.</Description>
<HelpID>/progguide/functions_sql_query_extensions/query.extend.select.in.zoom</HelpID>
</Function>
<Function Deprecated="no">
<Name>query.extend.select</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  query.extend.select( string extension_string  [, long mode] )</Syntax>
<Description>Use this to construct a query extension for the SELECT clause of a database query. Use this function for non-zoom sessions. Use for defining query filters for zoom sessions.</Description>
<HelpID>/progguide/functions_sql_query_extensions/query.extend.select</HelpID>
</Function>
<Function Deprecated="no">
<Name>query.extend.where.in.zoom</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  query.extend.where.in.zoom( string extension_string )</Syntax>
<Description>Use this to construct a query extension for the WHERE clause of a database query. Use this function for zoom sessions. Use for defining query filters in non-zoom sessions.</Description>
<HelpID>/progguide/functions_sql_query_extensions/query.extend.where.in.zoom</HelpID>
</Function>
<Function Deprecated="no">
<Name>query.extend.where</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  query.extend.where( string extension_string  [, long mode] )</Syntax>
<Description>Use this to construct a query extension for the WHERE clause of a database query. Use this function for non-zoom sessions. Use for defining query filters for zoom sessions.</Description>
<HelpID>/progguide/functions_sql_query_extensions/query.extend.where</HelpID>
</Function>
<Function Deprecated="no">
<Name>rebuild.query</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  rebuild.query( )</Syntax>
<Description>Use this function to rebuild a query. If the query.extend functions are used the default query should be rebuild. This is done automatically after the before.program and the before.open.object.set sections. If these functions are used in other sections (to adjust them dynamically), the 4GLE has to be informed when the query has to be rebuild.</Description>
<HelpID>/progguide/functions_sql_query_extensions/rebuild.query</HelpID>
</Function>
<Function Deprecated="no">
<Name>abort</Name>
<ScriptType>all</ScriptType>
<Syntax>void  abort( )</Syntax>
<Description>This cancels execution of a program script and returns control to the application. The database is not updated. The function has the same effect in both 3GL and 4GL scripts.</Description>
<HelpID>/progguide/functions_starting_and_stopping_programs/abort</HelpID>
</Function>
<Function Deprecated="no">
<Name>end</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void end( )</Syntax>
<Description>When used in a 3GL script, this ends the program and returns control to the application. The database is not updated.</Description>
<HelpID>/progguide/functions_starting_and_stopping_programs/end</HelpID>
</Function>
<Function Deprecated="no">
<Name>exit</Name>
<ScriptType>all</ScriptType>
<Syntax>void exit( long exitvalue )</Syntax>
<Description>When included in a 3GL program that is not activated by a 4GL program, exit() has the same effect as end() and stop() in a 3GL program.</Description>
<HelpID>/progguide/functions_starting_and_stopping_programs/exit</HelpID>
</Function>
<Function Deprecated="no">
<Name>run.baan.prog</Name>
<ScriptType>all</ScriptType>
<Syntax>long  run.baan.prog( const string progname , const string arguments , long mode  [, string stdin]  [, string stdout]  [, string stderr] )</Syntax>
<Description>The function run.baan.prog() runs a BAAN program.</Description>
<HelpID>/progguide/functions_starting_and_stopping_programs/run.baan.prog</HelpID>
</Function>
<Function Deprecated="no">
<Name>run.prog</Name>
<ScriptType>all</ScriptType>
<Syntax>long  run.prog( const string progname , const string arguments , long mode  [, string stdin]  [, string stdout]  [, string stderr] )</Syntax>
<Description>The function run.prog() runs an operating system command. It is a system-dependent function. It must not be used in applications that are distributed across different platforms.</Description>
<HelpID>/progguide/functions_starting_and_stopping_programs/run.prog</HelpID>
</Function>
<Function Deprecated="no">
<Name>shell</Name>
<ScriptType>all</ScriptType>
<Syntax>long shell( string command , long mode )</Syntax>
<Description>Deprecated. This function is supported for backward compatibility only. In new applications, use run.prog() and run.baan.prog() instead.</Description>
<HelpID>/progguide/functions_starting_and_stopping_programs/shell</HelpID>
</Function>
<Function Deprecated="no">
<Name>start.session</Name>
<ScriptType>4GL</ScriptType>
<Syntax>string  start.session( long mode , const string session.code , const string zoomname , const string returnfld )</Syntax>
<Description>This starts a session from a program script.</Description>
<HelpID>/progguide/functions_starting_and_stopping_programs/start.session</HelpID>
</Function>
<Function Deprecated="no">
<Name>stop</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  stop( )</Syntax>
<Description>This ends the program. The program immediately exits without updating the database and without executing any further sections. The function has the same effect in both 3GL and 4GL scripts.</Description>
<HelpID>/progguide/functions_starting_and_stopping_programs/stop</HelpID>
</Function>
<Function Deprecated="no">
<Name>zoom.to$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  zoom.to$( string process , long zoomcode , string zoomname , string returnfld , long formpos )</Syntax>
<Description>Use this to zoom to another session or menu.</Description>
<HelpID>/progguide/functions_starting_and_stopping_programs/zoom.to</HelpID>
</Function>
<Function Deprecated="no">
<Name>concat$</Name>
<ScriptType>all</ScriptType>
<Syntax>string concat$( string separator , void expr ... )</Syntax>
<Description>This converts one or more expressions to strings and merges the expressions into a single string. You can use string.scan() to split the string again into its individual parts.</Description>
<HelpID>/progguide/functions_string_operations/concat</HelpID>
</Function>
<Function Deprecated="no">
<Name>isdigit</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  isdigit( string str_expr )</Syntax>
<Description>This function tests whether the supplied string is the textual representation of an integer value.</Description>
<HelpID>/progguide/functions_string_operations/isdigit</HelpID>
</Function>
<Function Deprecated="no">
<Name>isspace</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  isspace( string str_expr )</Syntax>
<Description>This tests whether the result of string_expr contains only spaces or is empty.</Description>
<HelpID>/progguide/functions_string_operations/isspace</HelpID>
</Function>
<Function Deprecated="no">
<Name>len.in.bytes</Name>
<ScriptType>all</ScriptType>
<Syntax>long  len.in.bytes( string str_expr )</Syntax>
<Description>This returns the number of bytes in string_expr. In the case of ASCII characters, the number of bytes equals the number of characters. In the case of multibyte characters, each character can consist of one or four bytes.</Description>
<HelpID>/progguide/functions_string_operations/len.in.bytes</HelpID>
</Function>
<Function Deprecated="no">
<Name>len</Name>
<ScriptType>all</ScriptType>
<Syntax>long len( string str_expr )</Syntax>
<Description>This returns the number of characters in string_expr. For strings declared as FIXED, the total length of the string is returned. For non-fixed strings, the current length is returned. To retrieve the length of FIXED strings, excluding trailing spaces, use strip$().</Description>
<HelpID>/progguide/functions_string_operations/len</HelpID>
</Function>
<Function Deprecated="no">
<Name>load.byte</Name>
<ScriptType>all</ScriptType>
<Syntax>long load.byte( string record )</Syntax>
<Description>The load.byte(), load.short(), load.long(), load.float() and load.double() functions treat the supplied string merely as a sequence of bytes, without trying to interpret that sequence of bytes as the encoding of a sequence of characters. Instead, the bytes are interpreted as the encoding of numerical values.</Description>
<HelpID>/progguide/functions_string_operations/load.byte</HelpID>
</Function>
<Function Deprecated="no">
<Name>load.double</Name>
<ScriptType>all</ScriptType>
<Syntax>double load.double( string record  [, long swap] )</Syntax>
<Description>The load.byte(), load.short(), load.long(), load.float() and load.double() functions treat the supplied string merely as a sequence of bytes, without trying to interpret that sequence of bytes as the encoding of a sequence of characters. Instead, the bytes are interpreted as the encoding of numerical values.</Description>
<HelpID>/progguide/functions_string_operations/load.double</HelpID>
</Function>
<Function Deprecated="no">
<Name>load.float</Name>
<ScriptType>all</ScriptType>
<Syntax>double load.float( string record  [, long swap] )</Syntax>
<Description>The load.byte(), load.short(), load.long(), load.float() and load.double() functions treat the supplied string merely as a sequence of bytes, without trying to interpret that sequence of bytes as the encoding of a sequence of characters. Instead, the bytes are interpreted as the encoding of numerical values.</Description>
<HelpID>/progguide/functions_string_operations/load.float</HelpID>
</Function>
<Function Deprecated="no">
<Name>load.long</Name>
<ScriptType>all</ScriptType>
<Syntax>long load.long( string record  [, long endian] )</Syntax>
<Description>The load.byte(), load.short(), load.long(), load.float() and load.double() functions treat the supplied string merely as a sequence of bytes, without trying to interpret that sequence of bytes as the encoding of a sequence of characters. Instead, the bytes are interpreted as the encoding of numerical values.</Description>
<HelpID>/progguide/functions_string_operations/load.long</HelpID>
</Function>
<Function Deprecated="no">
<Name>load.short</Name>
<ScriptType>all</ScriptType>
<Syntax>long load.short( string record  [, long endian] )</Syntax>
<Description>The load.byte(), load.short(), load.long(), load.float() and load.double() functions treat the supplied string merely as a sequence of bytes, without trying to interpret that sequence of bytes as the encoding of a sequence of characters. Instead, the bytes are interpreted as the encoding of numerical values.</Description>
<HelpID>/progguide/functions_string_operations/load.short</HelpID>
</Function>
<Function Deprecated="no">
<Name>lval</Name>
<ScriptType>all</ScriptType>
<Syntax>long lval( string expr )</Syntax>
<Description>This function converts the supplied textual representation to the represented integer value or to the truncation of the represented floating point value.</Description>
<HelpID>/progguide/functions_string_operations/lval</HelpID>
</Function>
<Function Deprecated="no">
<Name>not.fixed</Name>
<ScriptType>all</ScriptType>
<Syntax>void  not.fixed( string string_var )</Syntax>
<Description>You can fill a string with or without specifying a start position. If you specify a start position, unused positions in the string are filled with spaces. You can prevent the string from being filled out with spaces by calling not.fixed() before filling the string. Note that, when you assign a new value to the string variable, positions after the new value are not changed.</Description>
<HelpID>/progguide/functions_string_operations/not.fixed</HelpID>
</Function>
<Function Deprecated="no">
<Name>pos</Name>
<ScriptType>all</ScriptType>
<Syntax>long pos( string source , string part  [, long offset] )</Syntax>
<Description>This returns the start position of a specified substring (part) in a specified string (source). source and part can be either strings or string expressions.</Description>
<HelpID>/progguide/functions_string_operations/pos</HelpID>
</Function>
<Function Deprecated="no">
<Name>quoted.string</Name>
<ScriptType>all</ScriptType>
<Syntax>string  quoted.string( string expr )</Syntax>
<Description>quoted.string() assures that the contents of the variable can be used as a string for the query processor. If the string_expr contains a quote or double quote, the query processor will generate an error. This function inserts the necessary escapes for the string.</Description>
<HelpID>/progguide/functions_string_operations/quoted.string</HelpID>
</Function>
<Function Deprecated="no">
<Name>rpos</Name>
<ScriptType>all</ScriptType>
<Syntax>long rpos( string source , string part  [, long offset] )</Syntax>
<Description>This returns the start position of a specified substring (part) in a specified string (source). source and part can be either strings or string expressions.</Description>
<HelpID>/progguide/functions_string_operations/rpos</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.strip.mode</Name>
<ScriptType>all</ScriptType>
<Syntax>long  set.strip.mode( long table.id , long mode )</Syntax>
<Description>set.strip.mode() sets or resets the 'strip-on-assignment' flag for all string fields of the table specified by table_id. The mode argument indicates whether the flag is to be set on or off. 1 indicates set flag on, 0 indicates set flag off. Setting this flag on a symbol a means that assignments to other variables from this value will behave as an assignment from</Description>
<HelpID>/progguide/functions_string_operations/set.strip.mode</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.symbol.strip.mode</Name>
<ScriptType>all</ScriptType>
<Syntax>long  set.symbol.strip.mode( ref string str , long mode )</Syntax>
<Description>set.symbol.strip.mode() sets or resets the 'strip-on-assignment' flag for all string fields of the table specified by table_id. The mode argument indicates whether the flag is to be set on or off. 1 indicates set flag on, 0 indicates set flag off. Setting this flag on a symbol a means that assignments to other variables from this value will behave as an assignment from</Description>
<HelpID>/progguide/functions_string_operations/set.symbol.strip.mode</HelpID>
</Function>
<Function Deprecated="no">
<Name>shiftc$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  shiftc$( string str )</Syntax>
<Description>This centers the specified string by equaling the number of leading and trailing spaces. If there is an odd number of spaces, the extra space becomes a trailing space. The returned string always has the same length as the input string.</Description>
<HelpID>/progguide/functions_string_operations/shiftc</HelpID>
</Function>
<Function Deprecated="no">
<Name>shiftl$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  shiftl$( string str )</Syntax>
<Description>This function returns the specified string with any leading spaces removed.</Description>
<HelpID>/progguide/functions_string_operations/shiftl</HelpID>
</Function>
<Function Deprecated="no">
<Name>shiftr$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  shiftr$( string str )</Syntax>
<Description>This function moves the contents of the specified string to the right, if there are trailing spaces. The length of the result is always the same as the length of the input string (this is not necessarily the declaration length).</Description>
<HelpID>/progguide/functions_string_operations/shiftr</HelpID>
</Function>
<Function Deprecated="no">
<Name>store.byte</Name>
<ScriptType>all</ScriptType>
<Syntax>void  store.byte( long number , ref string rec$ )</Syntax>
<Description>The store.byte(), store.short(), store.long(), store.float() and store.double() functions treat the supplied string merely as a sequence of bytes. The bytes written to the string are not the encoding of certain characters, but the encoding of the numerical value of the first argument of each function.</Description>
<HelpID>/progguide/functions_string_operations/store.byte</HelpID>
</Function>
<Function Deprecated="no">
<Name>store.double</Name>
<ScriptType>all</ScriptType>
<Syntax>void  store.double( double number , ref string rec$ )</Syntax>
<Description>The store.byte(), store.short(), store.long(), store.float() and store.double() functions treat the supplied string merely as a sequence of bytes. The bytes written to the string are not the encoding of certain characters, but the encoding of the numerical value of the first argument of each function.</Description>
<HelpID>/progguide/functions_string_operations/store.double</HelpID>
</Function>
<Function Deprecated="no">
<Name>store.float</Name>
<ScriptType>all</ScriptType>
<Syntax>void  store.float( double number , ref string rec$ )</Syntax>
<Description>The store.byte(), store.short(), store.long(), store.float() and store.double() functions treat the supplied string merely as a sequence of bytes. The bytes written to the string are not the encoding of certain characters, but the encoding of the numerical value of the first argument of each function.</Description>
<HelpID>/progguide/functions_string_operations/store.float</HelpID>
</Function>
<Function Deprecated="no">
<Name>store.long</Name>
<ScriptType>all</ScriptType>
<Syntax>void  store.long( long number , ref string rec$ )</Syntax>
<Description>The store.byte(), store.short(), store.long(), store.float() and store.double() functions treat the supplied string merely as a sequence of bytes. The bytes written to the string are not the encoding of certain characters, but the encoding of the numerical value of the first argument of each function.</Description>
<HelpID>/progguide/functions_string_operations/store.long</HelpID>
</Function>
<Function Deprecated="no">
<Name>store.short</Name>
<ScriptType>all</ScriptType>
<Syntax>void  store.short( long number , ref string rec$ )</Syntax>
<Description>The store.byte(), store.short(), store.long(), store.float() and store.double() functions treat the supplied string merely as a sequence of bytes. The bytes written to the string are not the encoding of certain characters, but the encoding of the numerical value of the first argument of each function.</Description>
<HelpID>/progguide/functions_string_operations/store.short</HelpID>
</Function>
<Function Deprecated="no">
<Name>str.compare</Name>
<ScriptType>all</ScriptType>
<Syntax>long str.compare( const string a$ , const string b$  [, boolean ignorecase] )</Syntax>
<Description>Compares two strings on equality and returns whether string a$ is greater than, equal to or less than string b$. By default the test is done in a case sensitive way, e.g. "A" is not equal to "a". Optionally the comparison can be done case insensitive.</Description>
<HelpID>/progguide/functions_string_operations/str.compare</HelpID>
</Function>
<Function Deprecated="no">
<Name>str.containsMBchar</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean str.containsMBchar( const string string$ )</Syntax>
<Description>Tests whether the specified string contains at least one multi byte character. It does not matter if the string to search in is declared as a single byte or a multi byte string.</Description>
<HelpID>/progguide/functions_string_operations/str.containsmbchar</HelpID>
</Function>
<Function Deprecated="no">
<Name>str.endswith</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean str.endswith( const string string$ , const string part$  [, boolean ignorecase] )</Syntax>
<Description>Determines whether the end of the specified string matches the specified part. Optionally the test can be done case insensitive.</Description>
<HelpID>/progguide/functions_string_operations/str.endswith</HelpID>
</Function>
<Function Deprecated="no">
<Name>str.equals</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean str.equals( const string a$ , const string b$  [, boolean ignorecase] )</Syntax>
<Description>Tests two strings on equality. By default the test is done in a case sensitive way, e.g. "A" is not equal to "a". Optionally the test can be done case insensitive.</Description>
<HelpID>/progguide/functions_string_operations/str.equals</HelpID>
</Function>
<Function Deprecated="no">
<Name>str.insert$</Name>
<ScriptType>all</ScriptType>
<Syntax>string str.insert$( const string string$ , long offset , const string part$ )</Syntax>
<Description>Returns a copy of a string having a specified part inserted at a specified character position.</Description>
<HelpID>/progguide/functions_string_operations/str.insert</HelpID>
</Function>
<Function Deprecated="no">
<Name>str.remove$</Name>
<ScriptType>all</ScriptType>
<Syntax>string str.remove$( const string string$ , long offset , long nchars )</Syntax>
<Description>Returns a copy of a string having a number of characters deleted, beginning at a specified character position.</Description>
<HelpID>/progguide/functions_string_operations/str.remove</HelpID>
</Function>
<Function Deprecated="no">
<Name>str.replace$</Name>
<ScriptType>all</ScriptType>
<Syntax>string str.replace$( const string string$ , const string oldstr$ , const string newstr$ )</Syntax>
<Description>Returns a (null terminated) copy of string$ that will have all instances of oldstr$ replaced with newstr$. As this function returns a string value that can become larger than the input string, you have to use a variable that is large enough to store the result.</Description>
<HelpID>/progguide/functions_string_operations/str.replace$</HelpID>
</Function>
<Function Deprecated="no">
<Name>str.replace</Name>
<ScriptType>all</ScriptType>
<Syntax>void str.replace( const string string$ , const string oldstr$ , const string newstr$ , ref string result$ )</Syntax>
<Description>Returns as an output argument a (null terminated) copy of string$ that will have all instances of oldstr$ replaced with newstr$.</Description>
<HelpID>/progguide/functions_string_operations/str.replace</HelpID>
</Function>
<Function Deprecated="no">
<Name>str.sizeof</Name>
<ScriptType>all</ScriptType>
<Syntax>long str.sizeof( const string string$ )</Syntax>
<Description>Returns the size of the specified string, i.e. the number of bytes the string can contain.</Description>
<HelpID>/progguide/functions_string_operations/str.sizeof</HelpID>
</Function>
<Function Deprecated="no">
<Name>str.startswith</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean str.startswith( const string string$ , const string part$  [, boolean ignorecase] )</Syntax>
<Description>Determines whether the beginning of the specified string matches the specified part. Optionally the test can be done case insensitive.</Description>
<HelpID>/progguide/functions_string_operations/str.startswith</HelpID>
</Function>
<Function Deprecated="no">
<Name>str.substring$</Name>
<ScriptType>all</ScriptType>
<Syntax>string str.substring$( const string string$ , long beginpos  [, long endpos] )</Syntax>
<Description>Returns a substring from the specified string. The substring starts at the specified begin position. When an end position is specified, the substring extends to the character at position endpos - 1.</Description>
<HelpID>/progguide/functions_string_operations/str.substring</HelpID>
</Function>
<Function Deprecated="no">
<Name>str$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  str$( long or double number )</Syntax>
<Description>This function converts an integer or floating point value to its textual representation.</Description>
<HelpID>/progguide/functions_string_operations/str</HelpID>
</Function>
<Function Deprecated="no">
<Name>string.set$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  string.set$( string string_expr , string num_expr )</Syntax>
<Description>This returns a string that contains string_expr repeated num_expr times.</Description>
<HelpID>/progguide/functions_string_operations/string.set</HelpID>
</Function>
<Function Deprecated="no">
<Name>strip$</Name>
<ScriptType>all</ScriptType>
<Syntax>string strip$( string str )</Syntax>
<Description>This returns a specified string without trailing spaces. The input string remains unchanged.</Description>
<HelpID>/progguide/functions_string_operations/strip</HelpID>
</Function>
<Function Deprecated="no">
<Name>tolower$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  tolower$( string str )</Syntax>
<Description>This function converts all upper case characters in its argument to lower case. It returns the converted string expression. The input string remains unchanged.</Description>
<HelpID>/progguide/functions_string_operations/tolower</HelpID>
</Function>
<Function Deprecated="no">
<Name>toupper$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  toupper$( string str )</Syntax>
<Description>This function converts all lower case characters in its argument to upper case. It returns the converted string expression. The input string remains unchanged.</Description>
<HelpID>/progguide/functions_string_operations/toupper</HelpID>
</Function>
<Function Deprecated="no">
<Name>trim$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  trim$( string str )</Syntax>
<Description>This returns a specified string without the leading and trailing spaces. The input string remains unchanged.</Description>
<HelpID>/progguide/functions_string_operations/trim</HelpID>
</Function>
<Function Deprecated="no">
<Name>tt.align.according.domain</Name>
<ScriptType>all</ScriptType>
<Syntax>long  tt.align.according.domain( string string_in(.) , string string_out() , ref string domain_name )</Syntax>
<Description>This aligns a string according to the alignment method of a specified domain.</Description>
<HelpID>/progguide/functions_string_operations/tt.align.according.domain</HelpID>
</Function>
<Function Deprecated="no">
<Name>val</Name>
<ScriptType>all</ScriptType>
<Syntax>double val( string expr )</Syntax>
<Description>This function converts the supplied textual representation to the represented floating point value or to the floating point value corresponding to the represented integer value.</Description>
<HelpID>/progguide/functions_string_operations/val</HelpID>
</Function>
<Function Deprecated="yes">
<Name>create.node</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  create.node( string tree_name , string parent_id , string node_id , string node_desc , long node_class  [, long process_id] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/create.node</HelpID>
</Function>
<Function Deprecated="yes">
<Name>create.tree.button</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  create.tree.button( string tree_name , long button_id , string button_desc  [, long process_id] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/create.tree.button</HelpID>
</Function>
<Function Deprecated="yes">
<Name>create.tree</Name>
<ScriptType>4GL</ScriptType>
<Syntax>long  create.tree( string tree_name , string tree_title )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/create.tree</HelpID>
</Function>
<Function Deprecated="yes">
<Name>destroy.tree</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  destroy.tree( string tree_name  [, long process_id] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/destroy.tree</HelpID>
</Function>
<Function Deprecated="yes">
<Name>get.tree.default</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  get.tree.default( )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/get.tree.default</HelpID>
</Function>
<Function Deprecated="yes">
<Name>get.tree.node.dpress</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  get.tree.node.dpress( ref long event , ref long process_id , ref string node_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/get.tree.node.dpress</HelpID>
</Function>
<Function Deprecated="yes">
<Name>get.tree.node.press</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  get.tree.node.press( ref long event , ref long process_id , ref string node_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/get.tree.node.press</HelpID>
</Function>
<Function Deprecated="yes">
<Name>get.tree.push.button</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  get.tree.push.button( ref long event , ref long process_id , ref string button_id , ref string node_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/get.tree.push.button</HelpID>
</Function>
<Function Deprecated="yes">
<Name>set.node.class.color</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.node.class.color( string tree_name , long node_class , long class_color  [, long process_id] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/set.node.class.color</HelpID>
</Function>
<Function Deprecated="yes">
<Name>set.node.class</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  set.node.class( string tree_name , string node_id , long node_class  [, long process_id] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/set.node.class</HelpID>
</Function>
<Function Deprecated="yes">
<Name>set.tree.background</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  set.tree.background( string tree_name , long color  [, long process_id] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/set.tree.background</HelpID>
</Function>
<Function Deprecated="yes">
<Name>set.tree.font</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  set.tree.font( string tree_name , long visible_level , long font  [, long process_id] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/set.tree.font</HelpID>
</Function>
<Function Deprecated="yes">
<Name>set.tree.foreground</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  set.tree.foreground( string tree_name , long color  [, long process_id] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/set.tree.foreground</HelpID>
</Function>
<Function Deprecated="yes">
<Name>set.tree.linewidth</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  set.tree.linewidth( string tree_name , long visible_level , long linewidth  [, long process_id] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/set.tree.linewidth</HelpID>
</Function>
<Function Deprecated="yes">
<Name>set.tree.name</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  set.tree.name( string tree_name , string tree_title  [, long process_id] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/set.tree.name</HelpID>
</Function>
<Function Deprecated="yes">
<Name>view.tree</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  view.tree( string tree_name , string node_id , long depth  [, long process_id] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_structure_chart_manager/view.tree</HelpID>
</Function>
<Function Deprecated="no">
<Name>substitute.session</Name>
<ScriptType>4GL</ScriptType>
<Syntax>long substitute.session( long old.pid , string new.session , long new.pid  [, void ...] )</Syntax>
<Description>This function overlays (substitutes) one session with another. The old session will be no longer visible and the new session will be placed on the same position with exactly the same dimensions.</Description>
<HelpID>/progguide/functions_substitute_sessions/substitute.session</HelpID>
</Function>
<Function Deprecated="no">
<Name>refresh.parent</Name>
<ScriptType>all</ScriptType>
<Syntax>long  refresh.parent( long occurrence )</Syntax>
<Description>This refreshes the parent session of the current session. The occurrence parameter determines which ocurrence of the child session must be refreshed in the parent session.</Description>
<HelpID>/progguide/functions_synchronized_sessions/refresh.parent</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.synchronized.dialog</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.synchronized.dialog( string sess_code  [, boolean editable.grid]  [, boolean use.dialog.for.insert] )</Syntax>
<Description>This defines for the current session the dialog to synchronize with. Both sessions act on the same maintable.</Description>
<HelpID>/progguide/functions_synchronized_sessions/set.synchronized.dialog</HelpID>
</Function>
<Function Deprecated="no">
<Name>start.synchronized.child.with</Name>
<ScriptType>all</ScriptType>
<Syntax>long  start.synchronized.child.with( const long cmd )</Syntax>
<Description>To start a synchronized child with a command other than the default synchronization command, call this function before calling start.synchronized.child().</Description>
<HelpID>/progguide/functions_synchronized_sessions/start.synchronized.child.with</HelpID>
</Function>
<Function Deprecated="no">
<Name>start.synchronized.child</Name>
<ScriptType>all</ScriptType>
<Syntax>long  start.synchronized.child( string sess_code  [, string parent.var child.var]  [, long start.mode] )</Syntax>
<Description>Use this to synchronize two sessions that act on different main tables. The function starts the specified child session when the user chooses a particular form command in the multioccurrence parent session. The primary key of the parent's main table must be a subset of the primary key of the child's main table.</Description>
<HelpID>/progguide/functions_synchronized_sessions/start.synchronized.child</HelpID>
</Function>
<Function Deprecated="no">
<Name>stop.synchronized.child</Name>
<ScriptType>all</ScriptType>
<Syntax>long  stop.synchronized.child( long child.id )</Syntax>
<Description>This ends a child session.</Description>
<HelpID>/progguide/functions_synchronized_sessions/stop.synchronized.child</HelpID>
</Function>
<Function Deprecated="no">
<Name>synchronize.with.child</Name>
<ScriptType>all</ScriptType>
<Syntax>long  synchronize.with.child( ref long child.id )</Syntax>
<Description>This refreshes (that is, resynchronizes) a child session. If the specified child session does not exist, the child.id argument is set to 0 on return.</Description>
<HelpID>/progguide/functions_synchronized_sessions/synchronize.with.child</HelpID>
</Function>
<Function Deprecated="no">
<Name>bse.dir$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  bse.dir$( )</Syntax>
<Description>This returns a string containing the name of the directory where the Baan Software Environment is installed. The function uses the environment variable BSE to retrieve the information. If this variable is not filled, bse.dir$() returns the string "/usr/bse".</Description>
<HelpID>/progguide/functions_system_and_user_information/bse.dir</HelpID>
</Function>
<Function Deprecated="no">
<Name>bse.release$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  bse.release$( )</Syntax>
<Description>This returns a string of 3 characters that contains the release number of BAAN Tools. For example,  "6.2".</Description>
<HelpID>/progguide/functions_system_and_user_information/bse.release</HelpID>
</Function>
<Function Deprecated="no">
<Name>bse.tmp.dir$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  bse.tmp.dir$( )</Syntax>
<Description>This returns a string containing the name of the directory where temporary files can be created by the application. The function uses the environment variable BSE_TMP to retrieve the information. If this environment variable is not filled, bse.tmp.dir$() returns the string "$BSE/tmp". If the environment variable BSE is not filled, the function returns the string "/usr/tmp".</Description>
<HelpID>/progguide/functions_system_and_user_information/bse.tmp.dir</HelpID>
</Function>
<Function Deprecated="no">
<Name>current.display</Name>
<ScriptType>all</ScriptType>
<Syntax>long  current.display( )</Syntax>
<Description>This returns the identification number of the current display. It is provided to support the use of multiple displays in future versions of the software. Currently it always returns zero (0)</Description>
<HelpID>/progguide/functions_system_and_user_information/current.display</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.bw.hostname</Name>
<ScriptType>all</ScriptType>
<Syntax>long  get.bw.hostname( )</Syntax>
<Description>This returns the hostname of the bw client (if available)</Description>
<HelpID>/progguide/functions_system_and_user_information/get.bw.hostname</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.bw.ip.address</Name>
<ScriptType>all</ScriptType>
<Syntax>string  get.bw.ip.address( )</Syntax>
<Description>This returns the ip-address of the system of the BW or Webtop client (if available)</Description>
<HelpID>/progguide/functions_system_and_user_information/get.bw.ip.address</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.bw.username</Name>
<ScriptType>all</ScriptType>
<Syntax>long  get.bw.username( ref string username )</Syntax>
<Description>This returns the Windows username of the user that started the BW client</Description>
<HelpID>/progguide/functions_system_and_user_information/get.bw.username</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.display.data</Name>
<ScriptType>all</ScriptType>
<Syntax>long  get.display.data( ref long server_data(SRVMAXSIZE) )</Syntax>
<Description>This retrieves information about the display server. It stores the information in the array server_data. The predefined constant SRVMAXSIZE indicates the maximum size of the array.</Description>
<HelpID>/progguide/functions_system_and_user_information/get.display.data</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.resource$</Name>
<ScriptType>all</ScriptType>
<Syntax>string get.resource$( string resource_name )</Syntax>
<Description>This function returns the value associated with the given resource of the current user. Resources are specified in the u&lt;user&gt; file in the '$BSE/lib/user' directory, but also in the files '$BSE/lib/defaults/&lt;logical_name_of_bshell&gt;' and '$BSE/lib/defaults/all'. The logical name of the bshell is the name you specify for the Bshell in BW.</Description>
<HelpID>/progguide/functions_system_and_user_information/get.resource</HelpID>
</Function>
<Function Deprecated="no">
<Name>getenv$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  getenv$( string env_var )</Syntax>
<Description>This returns the value of a specified environment variable of the operating system. It returns an empty string if the variable is not available.</Description>
<HelpID>/progguide/functions_system_and_user_information/getenv</HelpID>
</Function>
<Function Deprecated="no">
<Name>group.exists</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  group.exists( const string groupname )</Syntax>
<Description>This checks whether a specified group is defined on the system. Whether group names are case-sensitive or case-insensitive is a system-dependent feature.</Description>
<HelpID>/progguide/functions_system_and_user_information/group.exists</HelpID>
</Function>
<Function Deprecated="no">
<Name>hostname$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  hostname$( )</Syntax>
<Description>This returns the host name of the local machine.</Description>
<HelpID>/progguide/functions_system_and_user_information/hostname</HelpID>
</Function>
<Function Deprecated="no">
<Name>is.administrator</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  is.administrator( )</Syntax>
<Description>This checks whether or not the user that is running the bshell has administrator rights on the server that the bshell is running. On UNIX systems, the function returns TRUE if the user has root access to the system. On Windows NT systems, the function returns TRUE if the user belongs to the administrator group.</Description>
<HelpID>/progguide/functions_system_and_user_information/is.administrator</HelpID>
</Function>
<Function Deprecated="no">
<Name>ostype</Name>
<ScriptType>all</ScriptType>
<Syntax>long  ostype( )</Syntax>
<Description>This returns a long value that indicates the operating system environment. The possible values are:</Description>
<HelpID>/progguide/functions_system_and_user_information/ostype</HelpID>
</Function>
<Function Deprecated="no">
<Name>setenv</Name>
<ScriptType>all</ScriptType>
<Syntax>long  setenv( string env_var , string env_value )</Syntax>
<Description>This sets the value of a specified environment variable of the operating system. It returns non-zero in case of error.</Description>
<HelpID>/progguide/functions_system_and_user_information/setenv</HelpID>
</Function>
<Function Deprecated="no">
<Name>user.exists</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  user.exists( const string username )</Syntax>
<Description>This checks whether a specified user is defined on the system. Whether user names are case-sensitive or case-insensitive is a system-dependent feature.</Description>
<HelpID>/progguide/functions_system_and_user_information/user.exists</HelpID>
</Function>
<Function Deprecated="no">
<Name>remove.textfields</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  remove.textfields( const string field.name.string  [, const string ...] )</Syntax>
<Description>The text manager completely ignores the named text field(s) for this session.</Description>
<HelpID>/progguide/functions_text_fields/remove.textfields</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.file.for.textfield</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  set.file.for.textfield( const string field.name.string , string filename )</Syntax>
<Description>This fills the textbox of a text field with the contents of a specified file present on the server.</Description>
<HelpID>/progguide/functions_text_fields/set.file.for.textfield</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.buf.to.field</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  text.buf.to.field( string text_field , string buf )</Syntax>
<Description>This function stores the text of a buffer in the specified multiline text formfield. This is only relevant for multiline text formfields in a non-maintable session. An additional 'display' of this field is needed to see the changes on the form.</Description>
<HelpID>/progguide/functions_text_fields/text.buf.to.field</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.copy.between.companies</Name>
<ScriptType>all</ScriptType>
<Syntax>long  text.copy.between.companies( string text_field_to , string text_field_from , long source_company , long target_company , string kw1 , string kw2 , string kw3 , string kw4 , string tgroup , string edit_opt )</Syntax>
<Description>This copies the entire text of a specified text field, for all languages, from one company to another.</Description>
<HelpID>/progguide/functions_text_fields/text.copy.between.companies</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.copy.language</Name>
<ScriptType>all</ScriptType>
<Syntax>long  text.copy.language( long textnr , string lang_from , string lang_to )</Syntax>
<Description>This copies a specified text from one language to another.</Description>
<HelpID>/progguide/functions_text_fields/text.copy.language</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.copy</Name>
<ScriptType>all</ScriptType>
<Syntax>long  text.copy( string text_field_to , string text_field_from , string kw1 , string kw2 , string kw3 , string kw4 , string tgroup , string edit_opt )</Syntax>
<Description>This makes a copy of the entire text of a specified text field, for all languages, and assigns it a new text number.</Description>
<HelpID>/progguide/functions_text_fields/text.copy</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.defaults</Name>
<ScriptType>all</ScriptType>
<Syntax>long  text.defaults( string text_field , ref string tgroup , ref string edit_opt  [, long comp_number] )</Syntax>
<Description>This retrieves the defaults for a specified text field.</Description>
<HelpID>/progguide/functions_text_fields/text.defaults</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.delete</Name>
<ScriptType>all</ScriptType>
<Syntax>long  text.delete( string text_field , string lang )</Syntax>
<Description>This deletes a specified text.</Description>
<HelpID>/progguide/functions_text_fields/text.delete</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.edit</Name>
<ScriptType>all</ScriptType>
<Syntax>long  text.edit( string text_field , string lang , string kw1 , string kw2 , string kw3 , string kw4 , string tgroup , string edit_opt , long mode )</Syntax>
<Description>This opens an edit window in which the specified text can be edited. If the text number associated with the specified text (i.e., the value of the field with name text_field) is 0, the text manager prompts the user to confirm whether or not a new text must be created. After editing, the text number is stored in the field with name text_field.</Description>
<HelpID>/progguide/functions_text_fields/text.edit</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.present.in.language</Name>
<ScriptType>all</ScriptType>
<Syntax>long  text.present.in.language( long textnr , string lang  [, ref long nr_lines] )</Syntax>
<Description>This tests whether a specified text is available in a specified language.</Description>
<HelpID>/progguide/functions_text_fields/text.present.in.language</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.read</Name>
<ScriptType>all</ScriptType>
<Syntax>long  text.read( string text_field , string lang , string kw1 , string kw2 , string kw3 , string kw4 , ref string tgroup , ref string edit_opt , string tmp_file , long lock  [, string rtf_file] )</Syntax>
<Description>This reads a specified text and stores it in a temporary file.</Description>
<HelpID>/progguide/functions_text_fields/text.read</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.rewrite</Name>
<ScriptType>all</ScriptType>
<Syntax>long  text.rewrite( string text_field , string lang , string kw1 , string kw2 , string kw3 , string kw4 , string tgroup , string edit_opt , string tmp_file  [, long bidi]  [, string rtf_file] )</Syntax>
<Description>This writes text from a specified file to a specified text field. The new text and new text attributes replace the existing text and text attributes.</Description>
<HelpID>/progguide/functions_text_fields/text.rewrite</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.set.keywords</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  text.set.keywords( string text_field , string keyword1 , string keyword2 , string keyword3 , string keyword4 )</Syntax>
<Description>This stores keyword(s) to the specified multiline text formfield. When the field can be edited with the textmanager (also), attr.textkw1$, attr.textkw2$, attr.textkw3$, attr.textkw4$ in the on.choice of 4gl-section choice.text.manager. In session "Texts overview" (tttxt1500m000) you can search for texts based on keywords.</Description>
<HelpID>/progguide/functions_text_fields/text.set.keywords</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.set.language</Name>
<ScriptType>4GL</ScriptType>
<Syntax>boolean  text.set.language( string text_field , string language , void ... )</Syntax>
<Description>This function changes the language for multiline textfields that are displayed on the form and are part of the maintable. That language will be used when (one of) the textfields are/is read from the text tables. The language that is set with this function can still be overridden by setting attr.textlang$ in the before.choice section for the text.manager.</Description>
<HelpID>/progguide/functions_text_fields/text.set.language</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.to.buf</Name>
<ScriptType>all</ScriptType>
<Syntax>long  text.to.buf( string text_field , string lang , long nr_lines , ref string buf(,)  [, long rtf.text] )</Syntax>
<Description>This stores the text of a specified text field in a two-dimensional string array.</Description>
<HelpID>/progguide/functions_text_fields/text.to.buf</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.window</Name>
<ScriptType>all</ScriptType>
<Syntax>long  text.window( string edit_opt , ref long start_column , ref long start_row , ref long number_columns , ref long number_rows )</Syntax>
<Description>This returns information about a specified window type.</Description>
<HelpID>/progguide/functions_text_fields/text.window</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.write</Name>
<ScriptType>all</ScriptType>
<Syntax>long  text.write( string text_field , string lang , string kw1 , string kw2 , string kw3 , string kw4 , string tgroup , string edit_opt , string tmp_file  [, long bidi]  [, string rtf_file] )</Syntax>
<Description>This adds a new text to the text manager and assigns a new text number to the text.</Description>
<HelpID>/progguide/functions_text_fields/text.write</HelpID>
</Function>
<Function Deprecated="no">
<Name>textfield.to.buf</Name>
<ScriptType>all</ScriptType>
<Syntax>long  textfield.to.buf( string text_field , string buffer )</Syntax>
<Description>Reads the text of a multiline text formfield and stores the text into the passed buffer. The passed buffer should be defined as a based string. This is only relevant for multiline text formfields in a non-maintable session.</Description>
<HelpID>/progguide/functions_text_fields/textfield.to.buf</HelpID>
</Function>
<Function Deprecated="no">
<Name>textfield.to.database</Name>
<ScriptType>all</ScriptType>
<Syntax>long  textfield.to.database( string text_field )</Syntax>
<Description>Gets the text from the text part of the specified field, and writes it into the texttable. If the text does not exist yet in the texttable, a new texttable record is created. This is only relevant for multiline text formfields in a non-maintable session.</Description>
<HelpID>/progguide/functions_text_fields/textfield.to.database</HelpID>
</Function>
<Function Deprecated="no">
<Name>kill.timer</Name>
<ScriptType>all</ScriptType>
<Syntax>void  kill.timer( long timer_id )</Syntax>
<Description>This ends a specified timer.</Description>
<HelpID>/progguide/functions_timers/kill.timer</HelpID>
</Function>
<Function Deprecated="no">
<Name>mtime</Name>
<ScriptType>all</ScriptType>
<Syntax>long  mtime( )</Syntax>
<Description>This measures the time elapsed since the first mtime() call. The function is common to all processes within the same bshell. That is, when it is called by a process, the result is the number of milliseconds since the function was first called by a process in the same bshell.</Description>
<HelpID>/progguide/functions_timers/mtime</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.alarm</Name>
<ScriptType>all</ScriptType>
<Syntax>long  set.alarm( long msec )</Syntax>
<Description>This starts a timer that sends a single EVTTIMEREVENT event to the calling process after the number of milliseconds specified in the msec argument. The timer automatically ends after sending the event. The timer also ends automatically when the process ends or when the program explicitly kills it with kill.timer() .</Description>
<HelpID>/progguide/functions_timers/set.alarm</HelpID>
</Function>
<Function Deprecated="no">
<Name>set.timer</Name>
<ScriptType>all</ScriptType>
<Syntax>long  set.timer( long msec )</Syntax>
<Description>This starts a timer that sends an EVTTIMEREVENT event to the calling process every msec milliseconds. The timer continues to send events until the process ends or until the program explicitly terminates the timer using kill.timer().</Description>
<HelpID>/progguide/functions_timers/set.timer</HelpID>
</Function>
<Function Deprecated="no">
<Name>ue.after.after.destroy.object</Name>
<ScriptType>UEDLL</ScriptType>
<Syntax>extern long ue.after.after.destroy.object( )</Syntax>
<Description>This hook is called in case data is deleted, either by the user pressing the delete button on the UI, or programmatically when one of the functions dal.destroy.object() or dal.destroy() is called.</Description>
<HelpID>/progguide/functions_uedll/ue.after.after.destroy.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>ue.after.after.save.object</Name>
<ScriptType>UEDLL</ScriptType>
<Syntax>extern long ue.after.after.save.object(  [long mode] )</Syntax>
<Description>This hook is called in case data is saved, either by the user pressing the save button on the UI, or programmatically when one of the functions dal.save.object(), dal.new(), or dal.update() is called.</Description>
<HelpID>/progguide/functions_uedll/ue.after.after.save.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>ue.after.before.destroy.object</Name>
<ScriptType>UEDLL</ScriptType>
<Syntax>extern long ue.after.before.destroy.object( )</Syntax>
<Description>This hook is called in case data is deleted, either by the user pressing the delete button on the UI, or programmatically when one of the functions dal.destroy.object() or dal.destroy() is called.</Description>
<HelpID>/progguide/functions_uedll/ue.after.before.destroy.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>ue.after.before.save.object</Name>
<ScriptType>UEDLL</ScriptType>
<Syntax>extern long ue.after.before.save.object(  [long mode] )</Syntax>
<Description>This hook is called in case data is saved, either by the user pressing the save button on the UI, or programmatically when one of the functions dal.save.object(), dal.new(), or dal.update() is called.</Description>
<HelpID>/progguide/functions_uedll/ue.after.before.save.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>ue.before.after.destroy.object</Name>
<ScriptType>UEDLL</ScriptType>
<Syntax>extern long ue.before.after.destroy.object( )</Syntax>
<Description>This hook is called in case data is deleted, either by the user pressing the delete button on the UI, or programmatically when one of the functions dal.destroy.object() or dal.destroy() is called.</Description>
<HelpID>/progguide/functions_uedll/ue.before.after.destroy.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>ue.before.after.save.object</Name>
<ScriptType>UEDLL</ScriptType>
<Syntax>extern long ue.before.after.save.object(  [long mode] )</Syntax>
<Description>This hook is called in case data is saved, either by the user pressing the save button on the UI, or programmatically when one of the functions dal.save.object(), dal.new(), or dal.update() is called.</Description>
<HelpID>/progguide/functions_uedll/ue.before.after.save.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>ue.before.before.destroy.object</Name>
<ScriptType>UEDLL</ScriptType>
<Syntax>extern long ue.before.before.destroy.object( )</Syntax>
<Description>This hook is called in case data is deleted, either by the user pressing the delete button on the UI, or programmatically when one of the functions dal.destroy.object() or dal.destroy() is called.</Description>
<HelpID>/progguide/functions_uedll/ue.before.before.destroy.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>ue.before.before.save.object</Name>
<ScriptType>UEDLL</ScriptType>
<Syntax>extern long ue.before.before.save.object(  [long mode] )</Syntax>
<Description>This hook is called in case data is saved, either by the user pressing the save button on the UI, or programmatically when one of the functions dal.save.object(), dal.new(), or dal.update() is called.</Description>
<HelpID>/progguide/functions_uedll/ue.before.before.save.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>field.is.readonly (UI template)</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean field.is.readonly (UI template)( )</Syntax>
<Description>You can use this hook in your UI script to define the conditions under which the field should become readonly in the UI. The 4GL engine uses this hook to determine whether the field must be enabled or made readonly.</Description>
<HelpID>/progguide/functions_ui_template/field.is.readonly</HelpID>
</Function>
<Function Deprecated="no">
<Name>form.command.is.allowed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean form.command.is.allowed( )</Syntax>
<Description>You can use this hook to define the conditions under which the form command should become enabled in the UI. The 4GL engine will use this hooks to determine whether the form command must be enabled or disabled.</Description>
<HelpID>/progguide/functions_ui_template/form.command.is.allowed</HelpID>
</Function>
<Function Deprecated="no">
<Name>standard.command.is.allowed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean standard.command.is.allowed( )</Syntax>
<Description>You can use these hooks in your UI script to define the conditions under which the specific standard command should become enabled in the UI. The 4GL engine will use these hooks to determine whether the standard commands must be enabled or disabled.</Description>
<HelpID>/progguide/functions_ui_template/standard.command.is.allowed</HelpID>
</Function>
<Function Deprecated="no">
<Name>add.set.is.allowed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean add.set.is.allowed( )</Syntax>
<Description>You can use these hooks in your UI script to define the conditions under which the specific standard command should become enabled in the UI. The 4GL engine will use these hooks to determine whether the standard commands must be enabled or disabled.</Description>
<HelpID>/progguide/functions_ui_template/standard.command.is.allowed</HelpID>
</Function>
<Function Deprecated="no">
<Name>dupl.occur.is.allowed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean dupl.occur.is.allowed( )</Syntax>
<Description>You can use these hooks in your UI script to define the conditions under which the specific standard command should become enabled in the UI. The 4GL engine will use these hooks to determine whether the standard commands must be enabled or disabled.</Description>
<HelpID>/progguide/functions_ui_template/standard.command.is.allowed</HelpID>
</Function>
<Function Deprecated="no">
<Name>modify.set.is.allowed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean modify.set.is.allowed( )</Syntax>
<Description>You can use these hooks in your UI script to define the conditions under which the specific standard command should become enabled in the UI. The 4GL engine will use these hooks to determine whether the standard commands must be enabled or disabled.</Description>
<HelpID>/progguide/functions_ui_template/standard.command.is.allowed</HelpID>
</Function>
<Function Deprecated="no">
<Name>mark.delete.is.allowed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean mark.delete.is.allowed( )</Syntax>
<Description>You can use these hooks in your UI script to define the conditions under which the specific standard command should become enabled in the UI. The 4GL engine will use these hooks to determine whether the standard commands must be enabled or disabled.</Description>
<HelpID>/progguide/functions_ui_template/standard.command.is.allowed</HelpID>
</Function>
<Function Deprecated="no">
<Name>global.delete.is.allowed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean global.delete.is.allowed( )</Syntax>
<Description>You can use these hooks in your UI script to define the conditions under which the specific standard command should become enabled in the UI. The 4GL engine will use these hooks to determine whether the standard commands must be enabled or disabled.</Description>
<HelpID>/progguide/functions_ui_template/standard.command.is.allowed</HelpID>
</Function>
<Function Deprecated="no">
<Name>text.manager.is.allowed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean text.manager.is.allowed( )</Syntax>
<Description>You can use these hooks in your UI script to define the conditions under which the specific standard command should become enabled in the UI. The 4GL engine will use these hooks to determine whether the standard commands must be enabled or disabled.</Description>
<HelpID>/progguide/functions_ui_template/standard.command.is.allowed</HelpID>
</Function>
<Function Deprecated="yes">
<Name>change.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void  change.object( long object_id , long attribute , void value  [, long size] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/change.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>change.sub.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void  change.sub.object( long object , long sub_object_id , long attribute , void value , long size )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/change.sub.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>compress.pixmap</Name>
<ScriptType>all</ScriptType>
<Syntax>long  compress.pixmap( long colormap , long num_colors , string pixmap() , long width , long height , ref string buffer , ref long buffer_length )</Syntax>
<Description>This converts a specified colormap and pixmap to a picture in .gif format.</Description>
<HelpID>/progguide/functions_user_interface_objects/compress.pixmap</HelpID>
</Function>
<Function Deprecated="yes">
<Name>create.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long  create.object( long type , long parent_object , long attribute, value, size , void value , long size )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/create.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>create.sub.object.by.id</Name>
<ScriptType>all</ScriptType>
<Syntax>long  create.sub.object.by.id( long object , long sub_object_id , long type , long attribute , void value  [, long size] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/create.sub.object.by.id</HelpID>
</Function>
<Function Deprecated="yes">
<Name>create.sub.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long  create.sub.object( long object , long type , long attribute, value, size , void value , long size )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/create.sub.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>decompress.pixmap</Name>
<ScriptType>all</ScriptType>
<Syntax>long  decompress.pixmap( string buffer , ref long colormap , ref string pixmap )</Syntax>
<Description>This converts a picture in .gif format to a colormap and pixmap. The long array returned by the colormap argument can subsequently be used as the DsNcolorTable attribute of a DsCcolormap object. The string array returned by the pixmap argument can subsequently be used as the DsNdata attribute for a DsCpixmap object.</Description>
<HelpID>/progguide/functions_user_interface_objects/decompress.pixmap</HelpID>
</Function>
<Function Deprecated="yes">
<Name>destroy.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void  destroy.object( long object_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/destroy.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>destroy.sub.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void  destroy.sub.object( long object , long sub_object_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/destroy.sub.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.object( long object_id , long attribute , void value , long size )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/get.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.pixmap.info</Name>
<ScriptType>all</ScriptType>
<Syntax>long  get.pixmap.info( ref string buffer , ref long num_colors , ref long width , ref long height )</Syntax>
<Description>This retrieves information about a picture, in .gif format, that has been read with the seq.read() function. It returns the number of colors in the picture and the picture's width and height. When a picture is used in an object, the width and height values are necessary for determining the amount of memory that must be allocated for the picture.</Description>
<HelpID>/progguide/functions_user_interface_objects/get.pixmap.info</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.sub.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.sub.object( long object , long sub_object_id  [, long attribute]  [, ref void value]  [, ref long size] )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/get.sub.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>inherit.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void  inherit.object( long process_nr , long object_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/inherit.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>lower.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void  lower.object( long object_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/lower.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>map.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void  map.object( long object_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/map.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>query.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long  query.object( long object_id , long attribute_in , void value_in , long size_iin , long attribute_in , ref void value_out , ref long size_out )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/query.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>query.sub.object</Name>
<ScriptType>all</ScriptType>
<Syntax>long  query.sub.object( long object_id , long sub_object_id , long attribute_in, value_in, size_in , void value_in , long size_in , long attribute_in , ref void value_out , ref long size_out )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/query.sub.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>raise.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void  raise.object( long object_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/raise.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>set.focus</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.focus( long object_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/set.focus</HelpID>
</Function>
<Function Deprecated="yes">
<Name>set.sensitive</Name>
<ScriptType>all</ScriptType>
<Syntax>void  set.sensitive( long object_id , long status )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/set.sensitive</HelpID>
</Function>
<Function Deprecated="yes">
<Name>unmap.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void  unmap.object( long object_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/unmap.object</HelpID>
</Function>
<Function Deprecated="yes">
<Name>unset.focus</Name>
<ScriptType>all</ScriptType>
<Syntax>void  unset.focus( long object_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/unset.focus</HelpID>
</Function>
<Function Deprecated="yes">
<Name>update.object</Name>
<ScriptType>all</ScriptType>
<Syntax>void  update.object( long object_id )</Syntax>
<Description>Deprecated. This function is only supported for Baan Windows and its usage is therefore deprecated.</Description>
<HelpID>/progguide/functions_user_interface_objects/update.object</HelpID>
</Function>
<Function Deprecated="no">
<Name>uuid.format$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  uuid.format$( string uuid.compact )</Syntax>
<Description>Computes the standard string representation, e.g. "17293b6c-4d4d-11d6-af08-080009da70ff", of a UUID which is supplied in compact string representation, e.g. "Fyk4JE1NEdaO4AgACdpw/w".</Description>
<HelpID>/progguide/functions_uuid/uuid.format</HelpID>
</Function>
<Function Deprecated="no">
<Name>uuid.generate$</Name>
<ScriptType>all</ScriptType>
<Syntax>string  uuid.generate$( )</Syntax>
<Description>Generates a UUID and returns its compact string representation, e.g. "Fyk4JE1NEdaO4AgACdpw/w".</Description>
<HelpID>/progguide/functions_uuid/uuid.generate</HelpID>
</Function>
<Function Deprecated="no">
<Name>at.base</Name>
<ScriptType>all</ScriptType>
<Syntax>long at.base( string basic_variable[,arg...] , string based_variable[,arg...] )</Syntax>
<Description>Use this function to base one variable (the based variable) on another variable (the basic variable). The two variables then use the same memory area.</Description>
<HelpID>/progguide/functions_variables_based/at.base1</HelpID>
</Function>
<Function Deprecated="no">
<Name>at.base</Name>
<ScriptType>all</ScriptType>
<Syntax>long at.base( long process_id , string name[,arg...] , string based_variable[,arg...] )</Syntax>
<Description>Use this function to base one variable (the based variable) on an external variable in another process (the basic variable). The two variables then use the same memory area.</Description>
<HelpID>/progguide/functions_variables_based/at.base2</HelpID>
</Function>
<Function Deprecated="no">
<Name>changed</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean changed( string variable  [, long keep.flag.raised] )</Syntax>
<Description>This compares the current value of the specified variable with its checkpoint value to determine whether or not the value has changed.</Description>
<HelpID>/progguide/functions_variables_checking_changes/changed</HelpID>
</Function>
<Function Deprecated="no">
<Name>not.curr</Name>
<ScriptType>all</ScriptType>
<Syntax>void  not.curr( string variable )</Syntax>
<Description>This switches the current and previous values of the specified variable. This is considered a value change by the checking mechanism. So if you subsequently call changed(), that function will return TRUE.</Description>
<HelpID>/progguide/functions_variables_checking_changes/not.curr</HelpID>
</Function>
<Function Deprecated="no">
<Name>off.change.check</Name>
<ScriptType>all</ScriptType>
<Syntax>void  off.change.check( string variable )</Syntax>
<Description>This switches off the checking mechanism for the specified variable. Changes to the variable are no longer monitored by the checking mechanism.</Description>
<HelpID>/progguide/functions_variables_checking_changes/off.change.check</HelpID>
</Function>
<Function Deprecated="no">
<Name>on.change.check</Name>
<ScriptType>all</ScriptType>
<Syntax>void  on.change.check( string variable )</Syntax>
<Description>This starts the checking mechanism by setting a checkpoint for the specified variable. The current value of the variable becomes the checkpoint value.</Description>
<HelpID>/progguide/functions_variables_checking_changes/on.change.check</HelpID>
</Function>
<Function Deprecated="no">
<Name>export</Name>
<ScriptType>all</ScriptType>
<Syntax>[long] export( string var_name , void value )</Syntax>
<Description>Export assigns the value of the specified variable of the parent process. This parent process is not always identified by the variable parent in case of dynamic index switching. When using dynamic index switching, the parent process is sometimes stopped and restarted. This causes a different parent process, whereas the variable parent is not updated.</Description>
<HelpID>/progguide/functions_variables_interprocess_transfer/export</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.indexed.var</Name>
<ScriptType>all</ScriptType>
<Syntax>[long] get.indexed.var( long processno , string variable_name , ref void value , long dim1 [, dim2, dim3, dim4 ] )</Syntax>
<Description>This retrieves the value of the specified variable. It is the same as get.var() except that it enables retrieval of individual array elements.</Description>
<HelpID>/progguide/functions_variables_interprocess_transfer/get.indexed.var</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.var</Name>
<ScriptType>all</ScriptType>
<Syntax>[long] get.var( long processno , string variable_name , ref void value )</Syntax>
<Description>This retrieves the value of the specified variable. The variable can be a single variable of any type or an array.</Description>
<HelpID>/progguide/functions_variables_interprocess_transfer/get.var</HelpID>
</Function>
<Function Deprecated="no">
<Name>import.4gl.var</Name>
<ScriptType>all</ScriptType>
<Syntax>void import.4gl.var( string variable_name , ref void value )</Syntax>
<Description>Imports a 'predefined' 4GL variable. Like number.of.marks which is actually a macro.</Description>
<HelpID>/progguide/functions_variables_interprocess_transfer/import.4gl.var</HelpID>
</Function>
<Function Deprecated="no">
<Name>import</Name>
<ScriptType>all</ScriptType>
<Syntax>[long] import( string variable_name , ref void value )</Syntax>
<Description>Import retrieves the value of the specified variable of the parent process. This parent process is not always identified by the variable parent in case of dynamic index switching. When using dynamic index switching, the parent process is sometimes killed and restarted. This causes a different parent process, whereas the variable parent is not updated.</Description>
<HelpID>/progguide/functions_variables_interprocess_transfer/import</HelpID>
</Function>
<Function Deprecated="no">
<Name>put.indexed.var</Name>
<ScriptType>all</ScriptType>
<Syntax>[long] put.indexed.var( long processno , string variable_name , void expression , long dim1 [, dim2, dim3, dim4 ] )</Syntax>
<Description/>
<HelpID>/progguide/functions_variables_interprocess_transfer/put.indexed.var</HelpID>
</Function>
<Function Deprecated="no">
<Name>put.var</Name>
<ScriptType>all</ScriptType>
<Syntax>[long] put.var( long processno , string variable_name , void expression )</Syntax>
<Description/>
<HelpID>/progguide/functions_variables_interprocess_transfer/put.var</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.arg.type</Name>
<ScriptType>all</ScriptType>
<Syntax>long  get.arg.type( long arg_no )</Syntax>
<Description>This function returns the type of the specified argument.</Description>
<HelpID>/progguide/functions_varying_arguments/get.arg.type</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.argc</Name>
<ScriptType>all</ScriptType>
<Syntax>long  get.argc( )</Syntax>
<Description>This function returns the number of arguments supplied to the currently executing function (i.e. the function in which get.argc() is called). Once you know this number, you can read from and write to particular arguments using the other functions.</Description>
<HelpID>/progguide/functions_varying_arguments/get.argc</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.boolean.arg</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean get.boolean.arg( long arg_no )</Syntax>
<Description>These functions return the value of the specified argument, converted to the desired type. For get.boolean.arg(), the specified argument value is converted to a boolean. For get.double.arg(), the specified argument value is converted to a double. For get.long.arg(), the specified argument value is converted to a long. For get.string.arg(), the specified argument value is converted to a string.</Description>
<HelpID>/progguide/functions_varying_arguments/get.boolean.arg</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.double.arg</Name>
<ScriptType>all</ScriptType>
<Syntax>double get.double.arg( long arg_no )</Syntax>
<Description>These functions return the value of the specified argument, converted to the desired type. For get.boolean.arg(), the specified argument value is converted to a boolean. For get.double.arg(), the specified argument value is converted to a double. For get.long.arg(), the specified argument value is converted to a long. For get.string.arg(), the specified argument value is converted to a string.</Description>
<HelpID>/progguide/functions_varying_arguments/get.double.arg</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.long.arg</Name>
<ScriptType>all</ScriptType>
<Syntax>long get.long.arg( long arg_no )</Syntax>
<Description>These functions return the value of the specified argument, converted to the desired type. For get.boolean.arg(), the specified argument value is converted to a boolean. For get.double.arg(), the specified argument value is converted to a double. For get.long.arg(), the specified argument value is converted to a long. For get.string.arg(), the specified argument value is converted to a string.</Description>
<HelpID>/progguide/functions_varying_arguments/get.long.arg</HelpID>
</Function>
<Function Deprecated="no">
<Name>get.string.arg</Name>
<ScriptType>all</ScriptType>
<Syntax>string get.string.arg( long arg_no )</Syntax>
<Description>These functions return the value of the specified argument, converted to the desired type. For get.boolean.arg(), the specified argument value is converted to a boolean. For get.double.arg(), the specified argument value is converted to a double. For get.long.arg(), the specified argument value is converted to a long. For get.string.arg(), the specified argument value is converted to a string.</Description>
<HelpID>/progguide/functions_varying_arguments/get.string.arg</HelpID>
</Function>
<Function Deprecated="no">
<Name>put.boolean.arg</Name>
<ScriptType>all</ScriptType>
<Syntax>long put.boolean.arg( long arg_no , boolean value )</Syntax>
<Description>These functions assign a value to the specified argument, after conversion to the type of the argument. For put.boolean.arg(), the original value is of type boolean. For put.double.arg(), the original value is of type double. For put.long.arg(), the original value is of type long. For put.string.arg(), the original value is of type string or multibyte string.</Description>
<HelpID>/progguide/functions_varying_arguments/put.boolean.arg</HelpID>
</Function>
<Function Deprecated="no">
<Name>put.double.arg</Name>
<ScriptType>all</ScriptType>
<Syntax>long put.double.arg( long arg_no , double value )</Syntax>
<Description>These functions assign a value to the specified argument, after conversion to the type of the argument. For put.boolean.arg(), the original value is of type boolean. For put.double.arg(), the original value is of type double. For put.long.arg(), the original value is of type long. For put.string.arg(), the original value is of type string or multibyte string.</Description>
<HelpID>/progguide/functions_varying_arguments/put.double.arg</HelpID>
</Function>
<Function Deprecated="no">
<Name>put.long.arg</Name>
<ScriptType>all</ScriptType>
<Syntax>long put.long.arg( long arg_no , long value )</Syntax>
<Description>These functions assign a value to the specified argument, after conversion to the type of the argument. For put.boolean.arg(), the original value is of type boolean. For put.double.arg(), the original value is of type double. For put.long.arg(), the original value is of type long. For put.string.arg(), the original value is of type string or multibyte string.</Description>
<HelpID>/progguide/functions_varying_arguments/put.long.arg</HelpID>
</Function>
<Function Deprecated="no">
<Name>put.string.arg</Name>
<ScriptType>all</ScriptType>
<Syntax>long put.string.arg( long arg_no , string value )</Syntax>
<Description>These functions assign a value to the specified argument, after conversion to the type of the argument. For put.boolean.arg(), the original value is of type boolean. For put.double.arg(), the original value is of type double. For put.long.arg(), the original value is of type long. For put.string.arg(), the original value is of type string or multibyte string.</Description>
<HelpID>/progguide/functions_varying_arguments/put.string.arg</HelpID>
</Function>
<Function Deprecated="no">
<Name>tc.ignore.process</Name>
<ScriptType>all</ScriptType>
<Syntax> tc.ignore.process( boolean flag  [, long processno] )</Syntax>
<Description>This function indicates if the WebTop should ignore this session (process). By default, the WebTop does not ignore a session. Therefore this function should only be called from a 3GL session which does not present a User Interface. When this function is not called from such 3GL session, the WebTop will seriously delay when such a 3GL Session is started.</Description>
<HelpID>/progguide/functions_webtop/tc.ignore.process</HelpID>
</Function>
<Function Deprecated="no">
<Name>tc.is.thin.client</Name>
<ScriptType>all</ScriptType>
<Syntax>boolean  tc.is.thin.client( )</Syntax>
<Description>This function returns whether you are running in thin-client mode.</Description>
<HelpID>/progguide/functions_webtop/tc.is.thin.client</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlContainsValidCharactersOnly</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlContainsValidCharactersOnly( string inputstring )</Syntax>
<Description>This function verifies whether the supplied string contains valid characters only.</Description>
<HelpID>/progguide/functions_xml/contains_valid_characters_only</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlNewNode</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlNewNode( string name  [, long type]  [, long parentNode] )</Syntax>
<Description>Create a new XML node.</Description>
<HelpID>/progguide/functions_xml/create_a_new_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlNewDataElement</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlNewDataElement( string name , string data  [, long parentNode] )</Syntax>
<Description>Create a new XML_ELEMENT node and new XML_DATA node. The XML_DATA node is the first child of the XML_ELEMENT node.</Description>
<HelpID>/progguide/functions_xml/create_an_element_node_with_data_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>Create context</Name>
<ScriptType>all</ScriptType>
<Syntax>long Create context( long mid memory )</Syntax>
<Description>Create an XML context which is bound to a 3GL/4GL process.</Description>
<HelpID>/progguide/functions_xml/create_context</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlRead</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlRead( long fp , ref string error  [, long whitespacehandling] )</Syntax>
<Description>De-serialize an XML object by parsing an XML document and creating an in-memory object tree.</Description>
<HelpID>/progguide/functions_xml/de_serialize_xml_object</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlReadFromString</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlReadFromString( string  xmlString , ref string error  [, long whitespacehandling] )</Syntax>
<Description>De-serialize an XML object by parsing an XML document and creating an in-memory object tree.</Description>
<HelpID>/progguide/functions_xml/de_serialize_xml_object_string</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlDeleteAttribute</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlDeleteAttribute( long node , string attribute )</Syntax>
<Description>Delete an attribute of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/delete_attribute</HelpID>
</Function>
<Function Deprecated="no">
<Name>Delete context</Name>
<ScriptType>all</ScriptType>
<Syntax>long Delete context( long pContext )</Syntax>
<Description>Delete an XML context and all XML Object memory allocated on behalf of this context.</Description>
<HelpID>/progguide/functions_xml/delete_context</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlDelete</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlDelete( long fromNode  [, long toNode] )</Syntax>
<Description>Delete a tree or a list of trees. When this tree is a sub-tree of a larger tree, it is unlinked from this larger tree.</Description>
<HelpID>/progguide/functions_xml/delete_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlDuplicateAndAdd</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlDuplicateAndAdd( long destinationNode , long fromNode  [, long toNode] )</Syntax>
<Description>Duplicate a tree or a list of trees and add this list to an existing list after the node referred to by destinationNode.</Description>
<HelpID>/progguide/functions_xml/duplicate_and_add_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlDuplicateAndAppend</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlDuplicateAndAppend( long destinationNode , long fromNode  [, long toNode] )</Syntax>
<Description>Duplicate a tree or a list of trees and append this list to the end of the list referred to by destinationNode.</Description>
<HelpID>/progguide/functions_xml/duplicate_and_append_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlDuplicateAndAppendToChilds</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlDuplicateAndAppendToChilds( long parentNode , long fromNode  [, long toNode] )</Syntax>
<Description>Duplicate a tree or a list of trees and append this list as the last child of the node referred to by parentNode.</Description>
<HelpID>/progguide/functions_xml/duplicate_and_append_nodes_to_children</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlDuplicateAndInsert</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlDuplicateAndInsert( long destinationNode , long fromNode  [, long toNode] )</Syntax>
<Description>Duplicate a tree or a list of trees and insert this list in an existing list before the node referred to by destinationNode.</Description>
<HelpID>/progguide/functions_xml/duplicate_and_insert_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlDuplicateAndInsertInChilds</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlDuplicateAndInsertInChilds( long parentNode , long fromNode  [, long toNode] )</Syntax>
<Description>Duplicate a tree or a list of trees and insert this list as the first child of the node referred to by parentNode.</Description>
<HelpID>/progguide/functions_xml/duplicate_and_insert_nodes_in_children</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlDuplicate</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlDuplicate( long fromNode  [, long toNode] )</Syntax>
<Description>Duplicate a tree or a list of trees.</Description>
<HelpID>/progguide/functions_xml/duplicate_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlFindFirst</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlFindFirst( string tagName , long fromNode  [, long toNode] )</Syntax>
<Description>Search in a tree or a list of trees and return the first XML_ELEMENT or XML_DTD, which name is equal to the string tagName.</Description>
<HelpID>/progguide/functions_xml/find_first_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlFindFirstMatch</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlFindFirstMatch( string pattern , long fromNode  [, long toNode] )</Syntax>
<Description>Search in a tree or a list of trees and return the first XML_ELEMENT or XML_DTD, which matches with the string pattern. The string pattern contains a search path relative to the starting node. The starting node is the list of nodes indicated by fromNode to toNode.</Description>
<HelpID>/progguide/functions_xml/find_first_node_using_a_match_pattern</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlFindNodes</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlFindNodes( long node , string criteria , long maxFound  [, ref long numFound] )</Syntax>
<Description>Search in a tree starting at node and create a new tree containing references to all occurrences of XML_ELEMENT or XML_DTD nodes, which name matches with the string criteria. Searching stops when maxFound number of Nodes is found. When maxFound has value 0, searching stops when the complete tree has been traversed. The tree is traversed in the order as shown in Depth first Tree traversal order figure.</Description>
<HelpID>/progguide/functions_xml/find_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlFindMatch</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlFindMatch( string pattern , long fromNode  [, long toNode] )</Syntax>
<Description>Search in a tree or a list of trees and create a new tree containing references to all occurrences of XML_ELEMENT or XML_DTD nodes, which match with the pattern. The pattern contains a search path relative to the starting node. The starting node is the list of nodes indicated by fromNode to toNode.</Description>
<HelpID>/progguide/functions_xml/find_nodes_using_a_match_pattern</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlFindSetOfSiblingNodes</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlFindSetOfSiblingNodes( long node , string criteria , long maxFound  [, ref long numFound] )</Syntax>
<Description>Traverse the tree starting at node and return all occurrences of XML_ELEMENT or XML_DTD nodes which name matches with the string criteria. Searching will stop when maxFound number of Nodes have been found. When maxFound has value 0, searching will stop when the complete tree has been traversed. The tree is traversed in the breadth first order as shown in the Breadth first Tree traversal order figure.</Description>
<HelpID>/progguide/functions_xml/find_set_of_sibling_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetAttributeLength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetAttributeLength( long node , string attributeName )</Syntax>
<Description>Get the length of an attribute.</Description>
<HelpID>/progguide/functions_xml/get_attribute_length</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetAttributeName</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetAttributeName( long node , long attributeNr , ref string attributeName )</Syntax>
<Description>Get an attribute name of an XML_ELEMENT or XML_DTD node by specifying its position.</Description>
<HelpID>/progguide/functions_xml/get_attribute_name</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocAttributeName</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocAttributeName( ref string basedString() , long node , long attributeNr  [, string default.value] )</Syntax>
<Description>Get an attribute name of an XML_ELEMENT or XML_DTD node by specifying its position.</Description>
<HelpID>/progguide/functions_xml/get_attribute_name_alloc</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetAttributeNameLength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetAttributeNameLength( long node , int attributeNr )</Syntax>
<Description>Get the length of an attribute name.</Description>
<HelpID>/progguide/functions_xml/get_attribute_name_length</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAttributeName$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlAttributeName$( long node , long attributeNr  [, string default.value] )</Syntax>
<Description>Get an attribute name of an XML_ELEMENT or XML_DTD node by specifying its position.</Description>
<HelpID>/progguide/functions_xml/get_attribute_name_return</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetAttribute</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetAttribute( long node , string attributeName , ref void data )</Syntax>
<Description>Get an attribute of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/get_attribute_value</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocAttribute</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocAttribute( ref string basedString() , long node , string attributeName , string default.value )</Syntax>
<Description>Get an attribute of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/get_attribute_value_alloc</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAttribute$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlAttribute$( long node , string attributeName  [, ref string default.value] )</Syntax>
<Description>Get an attribute of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/get_attribute_value_return</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetFirstChild</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetFirstChild( long node )</Syntax>
<Description>Get the first (most left) child node of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/get_child_of_a_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetDataLength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetDataLength( long node )</Syntax>
<Description>Get the data length of a node. When node is of type XML_DATA or XML_PI, only the length of the data from this node is obtained. When node is of type XML_ELEMENT or XML_DTD, the length of the data from all child XML_DATA and XML_PI nodes is counted.</Description>
<HelpID>/progguide/functions_xml/get_data_length_of_a_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetDataElementLength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetDataElementLength( long node , string name )</Syntax>
<Description>Get the data length of a node. For each child XML_ELEMENT node that has a name equal to name, the length of the data contained in XML_DATA child nodes is counted.</Description>
<HelpID>/progguide/functions_xml/get_data_length_of_all_elements</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetData</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetData( long node , ref string data )</Syntax>
<Description>Get the data of a node. When node is of type XML_DATA or XML_PI, only the data from this node is obtained. When node is of type XML_ELEMENT or XML_DTD, the data from all child XML_DATA and XML_PI nodes is concatenated.</Description>
<HelpID>/progguide/functions_xml/get_data_of_a_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocData</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocData( ref string basedString , long node  [,  string default.value] )</Syntax>
<Description>Get the data of a node. When node is of type XML_DATA or XML_PI, only the data from this node is obtained. When node is of type XML_ELEMENT or XML_DTD, the data from all child XML_DATA and XML_PI nodes is concatenated.</Description>
<HelpID>/progguide/functions_xml/get_data_of_a_node_alloc</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlData$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlData$( long node  [, ref string default.value] )</Syntax>
<Description>Get the data of a node. When node is of type XML_DATA or XML_PI, only the data from this node is obtained. When node is of type XML_ELEMENT or XML_DTD, the data from all child XML_DATA and XML_PI nodes is concatenated.</Description>
<HelpID>/progguide/functions_xml/get_data_of_a_node_return</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetDataElement</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetDataElement( long node , string name , ref string data )</Syntax>
<Description>For each child XML_ELEMENT node that has a name equal to name, get the data contained in XML_DATA child nodes. The data from all matching nodes is concatenated.</Description>
<HelpID>/progguide/functions_xml/get_data_of_all_elements</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocDataElement</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocDataElement( ref string basedString() , long node , string name  [, string default.value] )</Syntax>
<Description>For each child XML_ELEMENT node that has a name equal to name, get the data contained in XML_DATA child nodes. The data from all matching nodes is concatenated.</Description>
<HelpID>/progguide/functions_xml/get_data_of_all_elements_alloc</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlDataElement$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlDataElement$( long node , string name  [, string default.value] )</Syntax>
<Description>For each child XML_ELEMENT node that has a name equal to name, get the data contained in XML_DATA child nodes. The data from all matching nodes is concatenated.</Description>
<HelpID>/progguide/functions_xml/get_data_of_all_elements_return</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetLastChild</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetLastChild( long node )</Syntax>
<Description>Get the last (most right) child node of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/get_last_child_of_a_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetNameLength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetNameLength( long node )</Syntax>
<Description>Get the length of a node name.</Description>
<HelpID>/progguide/functions_xml/get_name_length</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetName</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetName( long node , ref string name )</Syntax>
<Description>Get the name of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/get_name_of_a_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocName</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocName( ref string basedString , long node  [, string default.value] )</Syntax>
<Description>Get the name of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/get_name_of_a_node_alloc</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlName$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlName$( long node  [, string default.value] )</Syntax>
<Description>Get the name of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/get_name_of_a_node_return</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetType</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetType( long node )</Syntax>
<Description>Get the type of a node.</Description>
<HelpID>/progguide/functions_xml/get_node_type</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetNumAttributes</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetNumAttributes( long node )</Syntax>
<Description>Get the number of attributes of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/get_number_of_attributes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetNumChilds</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetNumChilds( long node )</Syntax>
<Description>Get the number of child nodes of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/get_number_of_child_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetNumLeftSiblings</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetNumLeftSiblings( long node )</Syntax>
<Description>Get the number of left sibling nodes.</Description>
<HelpID>/progguide/functions_xml/get_number_of_left_sibling_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetNumRightSiblings</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetNumRightSiblings( long node )</Syntax>
<Description>Get the number of right sibling nodes.</Description>
<HelpID>/progguide/functions_xml/get_number_of_right_sibling_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetNumSiblings</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetNumSiblings( long node )</Syntax>
<Description>Get the total number of sibling nodes.</Description>
<HelpID>/progguide/functions_xml/get_number_of_sibling_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetParent</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetParent( long node )</Syntax>
<Description>Get the parent of a node.</Description>
<HelpID>/progguide/functions_xml/get_parent_of_a_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetRightSibling</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetRightSibling( long node )</Syntax>
<Description>Get the right sibling node of a node.</Description>
<HelpID>/progguide/functions_xml/get_right_sibling_of_a_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetStringLength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetStringLength( long fromNode  [, long toNode] )</Syntax>
<Description>Get the length of the serialized form of an XML Object.</Description>
<HelpID>/progguide/functions_xml/get_serialize_length</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetPrettyStringLength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetPrettyStringLength( long fromNode  [, long toNode] )</Syntax>
<Description>Get the length of the serialized form of an XML Object. The additional new-lines and tabs for human-readable formatting are taken into account.</Description>
<HelpID>/progguide/functions_xml/get_serialize_length_pretty</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetLeftSibling</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetLeftSibling( long node )</Syntax>
<Description>Get the left sibling node of a node.</Description>
<HelpID>/progguide/functions_xml/get_sibling_of_a_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlReplaceInvalidCharacters</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlReplaceInvalidCharacters( ref string inputstring , string replacementCharacter(1) )</Syntax>
<Description>This function replaces any character that is invalid in an XML document by the specified replacement character. The replacement character must be a single-byte ASCII character in the range from #20 (ASCII space) to #7e (ASCII tilde).</Description>
<HelpID>/progguide/functions_xml/replace_invalid_characters</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlRewriteDataElement</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlRewriteDataElement( long node , string name , string data )</Syntax>
<Description>Find first child XML_ELEMENT node that has a name equal to name. If a matching node is found and this node does not have any child node, a new XML_DATA node with value data is added as a child node.</Description>
<HelpID>/progguide/functions_xml/rewrite_data_element</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlWrite</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlWrite( long fp , long fromNode  [, long toNode] )</Syntax>
<Description>Serialize an XML object to XML and write resulting XML document to an open stream. Any string information in the XML document is converted to UTF-8 format.</Description>
<HelpID>/progguide/functions_xml/serialize_xml_object</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocString</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocString( ref string basedString() , long fromNode  [, long toNode] )</Syntax>
<Description>Serialize an XML object to XML and write resulting XML document to an in-memory string buffer. Any string information in the XML document is converted to UTF-8 format.</Description>
<HelpID>/progguide/functions_xml/serialize_xml_object_alloc</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocPrettyString</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocPrettyString( ref string basedString() , long fromNode  [, long toNode] )</Syntax>
<Description>Serialize an XML object to XML and write resulting XML document to an in-memory string buffer. Any string information in the XML document is converted to UTF-8 format.</Description>
<HelpID>/progguide/functions_xml/serialize_xml_object_alloc_pretty</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlWritePretty</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlWritePretty( long fp , long fromNode  [, long toNode] )</Syntax>
<Description>Serialize an XML object to XML and write resulting XML document to an open stream. Any string information in the XML document is converted to UTF-8 format.</Description>
<HelpID>/progguide/functions_xml/serialize_xml_object_pretty</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlString$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlString$( long fromNode  [, long toNode] )</Syntax>
<Description>Serialize an XML object to XML and write resulting XML document to an in-memory string. Any string information in the XML document is converted to UTF-8 format.</Description>
<HelpID>/progguide/functions_xml/serialize_xml_object_return</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlPrettyString$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlPrettyString$( long fromNode  [, long toNode] )</Syntax>
<Description>Serialize an XML object to XML and write resulting XML document to an in-memory string. Any string information in the XML document is converted to UTF-8 format.</Description>
<HelpID>/progguide/functions_xml/serialize_xml_object_return_pretty</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlWriteToString</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlWriteToString( ref string buffer , long fromNode  [, long toNode] )</Syntax>
<Description>Serialize an XML object to XML and write resulting XML document to an in-memory string. Any string information in the XML document is converted to UTF-8 format.</Description>
<HelpID>/progguide/functions_xml/serialize_xml_object_string</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlWritePrettyToString</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlWritePrettyToString( ref string buffer , long fromNode  [, long toNode] )</Syntax>
<Description>Serialize an XML object to XML and write resulting XML document to an in-memory string. Any string information in the XML document is converted to UTF-8 format.</Description>
<HelpID>/progguide/functions_xml/serialize_xml_object_string_pretty</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlSetAttribute</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlSetAttribute( long node , string attributeName , void data )</Syntax>
<Description>Set an attribute of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/set_attribute</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlSetData</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlSetData( long node , string data )</Syntax>
<Description>Set the data of an XML_DATA or XML_PI node.</Description>
<HelpID>/progguide/functions_xml/set_data_of_a_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlSetName</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlSetName( long node , string name )</Syntax>
<Description>Set the name of an XML_ELEMENT or XML_DTD node.</Description>
<HelpID>/progguide/functions_xml/set_name_of_a_node</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAdd</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAdd( long destinationNode  [, long fromNode] , long toNode )</Syntax>
<Description>Unlink a tree or a list of trees and add this list to a new list after the node referred to by destinationNode.</Description>
<HelpID>/progguide/functions_xml/unlink_and_add_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAppend</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAppend( long destinationNode , long fromNode  [, long toNode] )</Syntax>
<Description>Unlink a tree or a list of trees and append this list to the end of the list referred to by destinationNode.</Description>
<HelpID>/progguide/functions_xml/unlink_and_append_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAppendToChilds</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAppendToChilds( long parentNode , long fromNode  [, long toNode] )</Syntax>
<Description>Unlink a tree or a list of trees and append this list as the last child of the node referred to by parentNode.</Description>
<HelpID>/progguide/functions_xml/unlink_and_append_nodes_to_children</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlInsert</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlInsert( long destinationNode , long fromNode  [, long toNode] )</Syntax>
<Description>Unlink a tree or a list of trees and insert this list in a new list before the node referred to by destinationNode.</Description>
<HelpID>/progguide/functions_xml/unlink_and_insert_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlInsertInChilds</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlInsertInChilds( long parentNode , long fromNode  [, long toNode] )</Syntax>
<Description>Unlink a tree or a list of trees and insert this list as the first child of the node referred to by parentNode.</Description>
<HelpID>/progguide/functions_xml/unlink_and_insert_nodes_in_children</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlUnlink</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlUnlink( long fromNode  [, long toNode] )</Syntax>
<Description>Unlink a tree or a list of trees.</Description>
<HelpID>/progguide/functions_xml/unlink_nodes</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocAttributeNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocAttributeNs( ref string basedString , long node , void namespaceOrURI , const string attributeName  [, const string default.value] )</Syntax>
<Description>Get the value of an attribute of the specified node. If an attribute with the specified attributeName and with a namespace whose URI matches the URI specified by namespaceOrURI exists, then its value is returned. The function fails if the node is invalid or the namespaceOrURI is invalid.</Description>
<HelpID>/progguide/functions_xml/xmlAllocAttributeNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocAttributePrefix</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocAttributePrefix( ref string basedString , long node , long attributeNr  [, const string default.value] )</Syntax>
<Description>Get the prefix of an attribute of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlAllocAttributePrefix</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocAttributeQualifiedName</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocAttributeQualifiedName( ref string basedString , long node , long attributeNr  [, const string default.value] )</Syntax>
<Description>Get the qualified name of an attribute of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlAllocAttributeQualifiedName</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocAttributeURI</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocAttributeURI( ref string basedString , long node , long attributeNr  [, const string default.value] )</Syntax>
<Description>Get the URI of an attribute of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlAllocAttributeURI</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocDataElementNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocDataElementNs( ref string basedString , long node , void namespaceOrURI , const string name  [, const string default.value] )</Syntax>
<Description>Get the data of all child nodes of type XML_DATA of those child nodes of type XML_ELEMENT of the node whose local name matches the specified name and whose URI matches the URI specified by namespaceOrURI. All data of the XML_DATA nodes is concatenated into a single string. If an XML_ELEMENT node has multiple XML_DATA nodes, then a single space is used as seperator.</Description>
<HelpID>/progguide/functions_xml/xmlAllocDataElementNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocPrefix</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocPrefix( ref string basedString , long node  [, const string default.value] )</Syntax>
<Description>Get the prefix of the namespace of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlAllocPrefix</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocQualifiedName</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocQualifiedName( ref string basedString , long node  [, const string default.value] )</Syntax>
<Description>Get the qualified name of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlAllocQualifiedName</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAllocURI</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlAllocURI( ref string basedString , long node  [, const string default.value] )</Syntax>
<Description>Get the URI of the namespace of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlAllocURI</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAttributeNs$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlAttributeNs$( long node , void namespaceOrURI , const string attributeName  [, const string default.value] )</Syntax>
<Description>Get the value of an attribute of the specified node. If an attribute with the specified attributeName and with a namespace whose URI matches the URI specified by namespaceOrURI exists, then its value is returned. The function fails if the node is invalid or the namespaceOrURI is invalid.</Description>
<HelpID>/progguide/functions_xml/xmlAttributeNs$</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAttributePrefix$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlAttributePrefix$( long node , long attributeNr  [, const string default.value] )</Syntax>
<Description>Get the prefix of an attribute of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlAttributePrefix$</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAttributeQualifiedName$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlAttributeQualifiedName$( long node , long attributeNr  [, const string default.value] )</Syntax>
<Description>Get the qualified name of an attribute of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlAttributeQualifiedName$</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlAttributeURI$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlAttributeURI$( long node , long attributeNr  [, const string default.value] )</Syntax>
<Description>Get the URI of an attribute of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlAttributeURI$</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlBuildNamespaceList$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlBuildNamespaceList$( const string prefix , const string URI  [, ... ] )</Syntax>
<Description>This is a utility function that creates a string of namespace bindings, to be used for the and functions.</Description>
<HelpID>/progguide/functions_xml/xmlBuildNamespaceList$</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlDataElementNs$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlDataElementNs$( long node , void namespaceOrURI , const string name  [, const string default.value] )</Syntax>
<Description>Get the data of all child nodes of type XML_DATA of those child nodes of type XML_ELEMENT of the node whose local name matches the specified name and whose URI matches the URI specified by namespaceOrURI. All data of the XML_DATA nodes is concatenated into a single string. If an XML_ELEMENT node has multiple XML_DATA nodes, then a single space is used as seperator.</Description>
<HelpID>/progguide/functions_xml/xmlDataElementNs$</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlDeleteAttributeNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlDeleteAttributeNs( long node , void namespaceOrURI , const string name )</Syntax>
<Description>Delete an attribute with a namespace. If an attribute with the specified name and with a namespace whose URI matches the URI specified by namespaceOrURI exists, then this attribute is deleted. The function fails if the node is invalid or the namespaceOrURI is invalid.</Description>
<HelpID>/progguide/functions_xml/xmlDeleteAttributeNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlFindFirstMatchNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlFindFirstMatchNs( string pattern , const string namespaceList , long fromNode  [, long toNode] )</Syntax>
<Description>Search in a tree or a list of trees and return the first XML_ELEMENT or XML_DTD, which matches with the string pattern. The string pattern contains a search path relative to the starting node. The starting node is the list of nodes indicated by fromNode to toNode.</Description>
<HelpID>/progguide/functions_xml/xmlFindFirstMatchNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlFindFirstNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlFindFirstNs( void namespaceOrURI , const string name , long fromNode  [, long toNode] )</Syntax>
<Description>In an XML tree, or a list of XML trees, find the first XML node of type XML_ELEMENT or XML_DTD, whose local name matches the specified name and whose URI matches the URI specified by namespaceOrURI. This is a depth first search.</Description>
<HelpID>/progguide/functions_xml/xmlFindFirstNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlFindMatchNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlFindMatchNs( string pattern , const string namespaceList , long fromNode  [, long toNode] )</Syntax>
<Description>Search in a tree or a list of trees and create a new tree containing references to all occurrences of XML_ELEMENT or XML_DTD nodes, which match with the pattern. The pattern contains a search path relative to the starting node. The starting node is the list of nodes indicated by fromNode to toNode.</Description>
<HelpID>/progguide/functions_xml/xmlFindMatchNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlFindNamespace</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlFindNamespace( long node , const string URI )</Syntax>
<Description>Find the namespace with the specified URI. This function searches the specified XML node and all parent nodes. If successful, this function returns a handle to the namespace as created by the xmlNewNamespace() function. The handle can be used in for example the xmlNewNodeNs() function.</Description>
<HelpID>/progguide/functions_xml/xmlFindNamespace</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlFindNodesNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlFindNodesNs( long node , void namespaceOrURI , const string name , long maxFound  [, ref long numFound] )</Syntax>
<Description>In an XML tree, find all XML nodes of type XML_ELEMENT or XML_DTD, whose local name matches the specified name and whose URI matches the URI specified by namespaceOrURI. This is a depth first search.</Description>
<HelpID>/progguide/functions_xml/xmlFindNodesNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlFirstNamespaceDecl</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlFirstNamespaceDecl( long node )</Syntax>
<Description>Get the first namespace declaration from an XML node.</Description>
<HelpID>/progguide/functions_xml/xmlFirstNamespaceDecl</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetAttributeLengthNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetAttributeLengthNs( long node , void namespaceOrURI , const string attributeName )</Syntax>
<Description>Get the length of the value of an attribute of the specified node. If an attribute with the specified attributeName and with a namespace whose URI matches the URI specified by namespaceOrURI exists, then the length of its value is returned. The function fails if the node is invalid or the namespaceOrURI is invalid.</Description>
<HelpID>/progguide/functions_xml/xmlGetAttributeLengthNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetAttributeNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetAttributeNs( long node , void namespaceOrURI , const string attributeName , ref void value )</Syntax>
<Description>Get the value of an attribute of the specified node. If an attribute with the specified attributeName and with a namespace whose URI matches the URI specified by namespaceOrURI exists, then its value is returned. The function fails if the node is invalid or the namespaceOrURI is invalid.</Description>
<HelpID>/progguide/functions_xml/xmlGetAttributeNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetAttributePrefix</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetAttributePrefix( long node , long attributeNr , ref string prefix )</Syntax>
<Description>Get the prefix of an attribute of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlGetAttributePrefix</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetAttributePrefixLength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetAttributePrefixLength( long node , long attributeNr )</Syntax>
<Description>Get the length of the prefix of an attribute of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlGetAttributePrefixLength</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetAttributeQualifiedName</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetAttributeQualifiedName( long node , long attributeNr , ref string name )</Syntax>
<Description>Get the qualified name of an attribute of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlGetAttributeQualifiedName</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetAttributeQualifiedNameLength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetAttributeQualifiedNameLength( long node , long attributeNr )</Syntax>
<Description>Get the length of the qualified name of an attribute of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlGetAttributeQualifiedNameLength</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetAttributeURI</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetAttributeURI( long node , long attributeNr , ref string URI )</Syntax>
<Description>Get the URI of an attribute of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlGetAttributeURI</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetAttributeURILength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetAttributeURILength( long node , long attributeNr )</Syntax>
<Description>Get the length of the URI of an attribute of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlGetAttributeURILength</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetDataElementLengthNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetDataElementLengthNs( long node , void namespaceOrURI , const string name )</Syntax>
<Description>Get the length of the data of all child nodes of type XML_DATA of those child nodes of type XML_ELEMENT of the node whose local name matches the specified name and whose URI matches the URI specified by namespaceOrURI. All data of the XML_DATA nodes is concatenated into a single string. If an XML_ELEMENT node has multiple XML_DATA nodes, then a single space is used as seperator.</Description>
<HelpID>/progguide/functions_xml/xmlGetDataElementLengthNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetDataElementNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetDataElementNs( long node , void namespaceOrURI , const string name , ref string data )</Syntax>
<Description>Get the data of all child nodes of type XML_DATA of those child nodes of type XML_ELEMENT of the node whose local name matches the specified name and whose URI matches the URI specified by namespaceOrURI. All data of the XML_DATA nodes is concatenated into a single string. If an XML_ELEMENT node has multiple XML_DATA nodes, then a single space is used as seperator.</Description>
<HelpID>/progguide/functions_xml/xmlGetDataElementNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetNamespace</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetNamespace( long node )</Syntax>
<Description>Get the namespace of an XML node. This function returns a reference to the namespace as created by the xmlNewNamespace() function. The reference can be used in for example the xmlNewNodeNs() function.</Description>
<HelpID>/progguide/functions_xml/xmlGetNamespace</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetPrefix</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetPrefix( long node , ref string prefix )</Syntax>
<Description>Get the prefix of the namespace of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlGetPrefix</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetPrefixLength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetPrefixLength( long node )</Syntax>
<Description>Get the length of the prefix of the namespace of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlGetPrefixLength</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetQualifiedName</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetQualifiedName( long node , ref string name )</Syntax>
<Description>Get the qualified name of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlGetQualifiedName</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetQualifiedNameLength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetQualifiedNameLength( long node )</Syntax>
<Description>Get the length of the qualified name of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlGetQualifiedNameLength</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetURI</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetURI( long node , ref string URI )</Syntax>
<Description>Get the URI of the namespace of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlGetURI</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlGetURILength</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlGetURILength( long node )</Syntax>
<Description>Get the length of the URI of the namespace of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlGetURILength</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlNamespacePrefix$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlNamespacePrefix$( long namespace )</Syntax>
<Description>Get the prefix of the specified namespace.</Description>
<HelpID>/progguide/functions_xml/xmlNamespacePrefix$</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlNamespaceURI$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlNamespaceURI$( long namespace )</Syntax>
<Description>Get the URI of the specified namespace.</Description>
<HelpID>/progguide/functions_xml/xmlNamespaceURI$</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlNewDataElementNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlNewDataElementNs( long namespace , const string name , void data  [, long parentNode] )</Syntax>
<Description>Create a new XML node of type XML_ELEMENT with local name as specified by name and in the namespace as specified by namespace. A new XML node of type XML_DATA is created as the first child of the newly created XML_ELEMENT node, with data as specified by data. The function fails if namespace is invalid or parentNode is invalid.</Description>
<HelpID>/progguide/functions_xml/xmlNewDataElementNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlNewNamespace</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlNewNamespace( long node , const string prefix , const string URI )</Syntax>
<Description>Create a new namespace with the specified prefix and URI. The specified node becomes the carrier of the namespace, but the node itself is not yet in the namespace.</Description>
<HelpID>/progguide/functions_xml/xmlNewNamespace</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlNewNodeNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlNewNodeNs( long namespace , const string name  [, long type]  [, long parentNode] )</Syntax>
<Description>Create a new XML node in the specified namespace.</Description>
<HelpID>/progguide/functions_xml/xmlNewNodeNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlNextNamespaceDecl</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlNextNamespaceDecl( long namespace )</Syntax>
<Description>Get the next namespace declaration of an XML node.</Description>
<HelpID>/progguide/functions_xml/xmlNextNamespaceDecl</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlPrefix$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlPrefix$( long node  [, const string default.value] )</Syntax>
<Description>Get the prefix of the namespace of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlPrefix$</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlQualifiedName$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlQualifiedName$( long node  [, const string default.value] )</Syntax>
<Description>Get the qualified name of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlQualifiedName$</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlReadFromStringNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlReadFromStringNs( string  xmlString , ref string error  [, long whitespacehandling] )</Syntax>
<Description>De-serialize an XML object by parsing an XML document and creating an in-memory object tree. This function supports XML namespaces, and will create namespace declarations carried by the respective XML nodes, and put XML nodes in their appropriate namespace.</Description>
<HelpID>/progguide/functions_xml/xmlReadFromStringNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlReadNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlReadNs( long fp , ref string error  [, long whitespacehandling] )</Syntax>
<Description>De-serialize an XML object by parsing an XML document and creating an in-memory object tree. This function supports XML namespaces, and will create namespace declarations carried by the respective XML nodes, and put XML nodes in their appropriate namespace.</Description>
<HelpID>/progguide/functions_xml/xmlReadNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlRewriteDataElementNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlRewriteDataElementNs( long node , void namespaceOrURI , const string name , void data )</Syntax>
<Description>If node has no child node of type XML_ELEMENT whose local name equals name and whose URI equals the URI specified by namespaceOrURI, then a new XML node of type XML_ELEMENT is created, with an XML node of type XML_DATA with the specified data.</Description>
<HelpID>/progguide/functions_xml/xmlRewriteDataElementNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlSetAttributeNs</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlSetAttributeNs( long node , long namespace , const string name , void value )</Syntax>
<Description>Set the value of an attribute with a namespace. If no attribute with the specified name and with a namespace whose URI matches the URI of the specified namespace exists, then a new attribute with the specified name, namespace and value is created. If the XML node is not of type XML_ELEMENT then the function fails.</Description>
<HelpID>/progguide/functions_xml/xmlSetAttributeNs</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlSetNamespace</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlSetNamespace( long node , long namespace )</Syntax>
<Description>Set the namespace of an XML node to the specified namespace. The specified node does not become the carrier of the namespace. In other words, the node does not declare the namespace, but it is put in the namespace. If the XML node is not of type XML_ELEMENT then the function fails.</Description>
<HelpID>/progguide/functions_xml/xmlSetNamespace</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlURI$</Name>
<ScriptType>all</ScriptType>
<Syntax>string xmlURI$( long node  [, const string default.value] )</Syntax>
<Description>Get the URI of the namespace of the specified node.</Description>
<HelpID>/progguide/functions_xml/xmlURI$</HelpID>
</Function>
<Function Deprecated="no">
<Name>xmlDuplicateToProcess</Name>
<ScriptType>all</ScriptType>
<Syntax>long xmlDuplicateToProcess( long processId , long fromNode  [, long toNode] )</Syntax>
<Description>Duplicate a tree or a list of trees into another 3GL-process space.</Description>
<HelpID>/progguide/functions_xml/xmlduplicatetoprocess</HelpID>
</Function>
<Function Deprecated="no">
<Name>sec.add.set</Name>
<ScriptType>4GL</ScriptType>
<Syntax> sec.add.set( long id )</Syntax>
<Description>Perform an add.set on a secondary table.</Description>
<HelpID>/progguide/multitable/sec.add.set</HelpID>
</Function>
<Function Deprecated="no">
<Name>sec.add.table</Name>
<ScriptType>4GL</ScriptType>
<Syntax>long sec.add.table( const string tablename() )</Syntax>
<Description>Add the passed table as a secondary table to the current session. This function call is only allowed from the before.program section.</Description>
<HelpID>/progguide/multitable/sec.add.table</HelpID>
</Function>
<Function Deprecated="no">
<Name>sec.get.update.status</Name>
<ScriptType>all</ScriptType>
<Syntax>long  sec.get.update.status( long id , long occ )</Syntax>
<Description>Retrieve the update status of occurrence occ of secondary table id.</Description>
<HelpID>/progguide/multitable/sec.get.update.status</HelpID>
</Function>
<Function Deprecated="no">
<Name>sec.mark.delete</Name>
<ScriptType>4GL</ScriptType>
<Syntax>void  sec.mark.delete( long id )</Syntax>
<Description>Perform an MARK.DELETE on a secondary table. The record will be deleted on the next save (update.db).</Description>
<HelpID>/progguide/multitable/sec.mark.delete</HelpID>
</Function>
<Function Deprecated="no">
<Name>sec.record.exists</Name>
<ScriptType>all</ScriptType>
<Syntax>void  sec.record.exists( long id , long occ )</Syntax>
<Description>Check whether a secondary table record exists. When the record is saved but not yet committed, the function returns true.</Description>
<HelpID>/progguide/multitable/sec.record.exists</HelpID>
</Function>
</FunctionList>
