<?xml version="1.0" standalone="no"?>

<!--
* 
*
*  ProLinga-Doc
*
*  Copyright (C) 2002-2009 Xobas Software.
*  All rights reserved.
*  
*  This file is part of ProLinga-Doc.
*
*  ProLinga-Doc is free software: you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation, either version 3 of the License, or
*  (at your option) any later version.
*
*  ProLinga-Doc is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with ProLinga-Doc.  If not, see <http://www.gnu.org/licenses/>.
*
*  More information is available at the following addresses:
*
*  Website     : http://www.prolinga.org
*
*  Email       : prolinga-list@prolinga.org
*
*
-->

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [

<!ENTITY version SYSTEM "version_local.txt" >
<!ENTITY release-date "September 02, 2009" >
<!ENTITY copyright-year "2009" >
<!ENTITY cmd_break  SYSTEM "cmd_break.xml" >
<!ENTITY cmd_call  SYSTEM "cmd_call.xml" >
<!ENTITY cmd_clear  SYSTEM "cmd_clear.xml" >
<!ENTITY cmd_comment  SYSTEM "cmd_comment.xml" >
<!ENTITY cmd_continue  SYSTEM "cmd_continue.xml" >
<!ENTITY cmd_control  SYSTEM "cmd_control.xml" >
<!ENTITY cmd_datamodel  SYSTEM "cmd_datamodel.xml" >
<!ENTITY cmd_display  SYSTEM "cmd_display.xml" >
<!ENTITY cmd_else  SYSTEM "cmd_else.xml" >
<!ENTITY cmd_elseif  SYSTEM "cmd_elseif.xml" >
<!ENTITY cmd_endfor  SYSTEM "cmd_endfor.xml" >
<!ENTITY cmd_endif  SYSTEM "cmd_endif.xml" >
<!ENTITY cmd_error  SYSTEM "cmd_error.xml" >
<!ENTITY cmd_focus  SYSTEM "cmd_focus.xml" >
<!ENTITY cmd_for  SYSTEM "cmd_for.xml" >
<!ENTITY cmd_foreach  SYSTEM "cmd_foreach.xml" >
<!ENTITY cmd_forever  SYSTEM "cmd_forever.xml" >
<!ENTITY cmd_if  SYSTEM "cmd_if.xml" >
<!ENTITY cmd_let  SYSTEM "cmd_let.xml" >
<!ENTITY cmd_list  SYSTEM "cmd_list.xml" >
<!ENTITY cmd_message  SYSTEM "cmd_message.xml" >
<!ENTITY cmd_nil  SYSTEM "cmd_nil.xml" >
<!ENTITY cmd_parameter  SYSTEM "cmd_parameter.xml" >
<!ENTITY cmd_progress  SYSTEM "cmd_progress.xml" >
<!ENTITY cmd_repository  SYSTEM "cmd_repository.xml" >
<!ENTITY cmd_response  SYSTEM "cmd_response.xml" >
<!ENTITY cmd_return  SYSTEM "cmd_return.xml" >
<!ENTITY cmd_run  SYSTEM "cmd_run.xml" >
<!ENTITY cmd_screen  SYSTEM "cmd_screen.xml" >
<!ENTITY cmd_sleep  SYSTEM "cmd_sleep.xml" >
<!ENTITY cmd_sql  SYSTEM "cmd_sql.xml" >
<!ENTITY cmd_text  SYSTEM "cmd_text.xml" >
<!ENTITY cmd_transaction  SYSTEM "cmd_transaction.xml" >
<!ENTITY cmd_thread  SYSTEM "cmd_thread.xml" >
<!ENTITY cmd_xml  SYSTEM "cmd_xml.xml" >
<!ENTITY error_status  SYSTEM "error_status.xml" >
<!ENTITY obj_application  SYSTEM "obj_application.xml" >
<!ENTITY obj_system  SYSTEM "obj_system.xml" >
<!ENTITY obj_user  SYSTEM "obj_user.xml" >
<!ENTITY obj_version  SYSTEM "obj_version.xml" >
<!ENTITY obj_blob  SYSTEM "obj_blob.xml" >
<!ENTITY obj_constant  SYSTEM "obj_constant.xml" >
<!ENTITY obj_datadictionary  SYSTEM "obj_datadictionary.xml" >
<!ENTITY obj_datamodel  SYSTEM "obj_datamodel.xml" >
<!ENTITY obj_datasource  SYSTEM "obj_datasource.xml" >
<!ENTITY obj_errordialog  SYSTEM "obj_errordialog.xml" >
<!ENTITY obj_index  SYSTEM "obj_index.xml" >
<!ENTITY obj_liststore  SYSTEM "obj_liststore.xml" >
<!ENTITY obj_logic  SYSTEM "obj_logic.xml" >
<!ENTITY obj_picklist  SYSTEM "obj_picklist.xml" >
<!ENTITY obj_record  SYSTEM "obj_record.xml" >
<!ENTITY obj_runcontrol  SYSTEM "obj_runcontrol.xml" >
<!ENTITY obj_screen  SYSTEM "obj_screen.xml" >
<!ENTITY obj_table  SYSTEM "obj_table.xml" >
<!ENTITY obj_textdocument  SYSTEM "obj_textdocument.xml" >
<!ENTITY obj_thread  SYSTEM "obj_thread.xml" >
<!ENTITY obj_variable  SYSTEM "obj_variable.xml" >
<!ENTITY obj_variablegroup  SYSTEM "obj_variablegroup.xml" >
<!ENTITY obj_xmldocument  SYSTEM "obj_xmldocument.xml" >
<!ENTITY fdl  SYSTEM "../fdl.xml" >
<!ENTITY PRODUCT "xobas-reference" >
<!ENTITY xobas '<emphasis><ulink url="http://www.xobas.com">Xobas Software</ulink></emphasis>'>

]>

<book id="prolinga-reference" lang="en">
  <bookinfo>
    <title>ProLinga-4GL Reference Manual</title>
    <releaseinfo>Documentation for ProLinga System Builder Release: &version; - &release-date;</releaseinfo>
    <authorgroup>
      <author>
	<firstname>Bas</firstname>
	<surname>Driessen</surname>
	<affiliation>
          <orgname>&xobas;</orgname>
	    <address><email>bas.driessen@xobas.com</email></address>
	</affiliation>
	<contrib>Original author and current maintainer.</contrib>
      </author>
    </authorgroup>

    <copyright>
      <year>2002-&copyright-year;</year>
      <holder>The ProLinga Team</holder>
    </copyright>

    <legalnotice>
      <para>Permission is granted to copy, distribute and/or modify this document
      under the terms of the GNU Free Documentation License, Version 1.2
      or any later version published by the Free Software Foundation;
      with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
      A copy of the license is included in the section entitled
      <ulink type="http"
      url="gfdl.html">"GNU Free Documentation License"</ulink>.</para>
    </legalnotice>

    <abstract>
      <para>This document contains the 4GL Reference Manual.
      </para>
    </abstract>
  </bookinfo>

  <reference id="reference_logic_commands">
    <title>4GL Logic Commands</title>

    &cmd_break;
    &cmd_call;
    &cmd_clear;
    &cmd_comment;
    &cmd_continue;
    &cmd_control;
    &cmd_datamodel;
    &cmd_display;
    &cmd_else;
    &cmd_elseif;
    &cmd_endfor;
    &cmd_endif;
    &cmd_error;
    &cmd_focus;
    &cmd_for;
    &cmd_foreach;
    &cmd_forever;
    &cmd_if;
    &cmd_let;
    &cmd_list;
    &cmd_message;
    &cmd_nil;
    &cmd_parameter;
    &cmd_progress;
    &cmd_repository;
    &cmd_response;
    &cmd_return;
    &cmd_run;
    &cmd_screen;
    &cmd_sleep;
    &cmd_sql;
    &cmd_text;
    &cmd_transaction;
    &cmd_thread;
    &cmd_xml;

  </reference>

  <reference id="reference_action_handlers">
    <title>Action Handlers</title>

    <para>In the Screen Painter, widget event signals can be linked to action 
    handlers. The following action handlers are available:

    <simplelist type='horiz' columns='2'>
      <member>Control</member>
      <member>C-<replaceable>control_name</replaceable> (built-in function)</member>
      <member>Logic</member>
      <member>L-<replaceable>logic_name</replaceable></member>
      <member>Screen</member>
      <member>S-<replaceable>screen_name</replaceable></member>
    </simplelist>

    </para>

  </reference>

  <reference id="reference_data_references">
    <title>Data Reference Items</title>

    <para>There are three types of data reference items:</para>

    <orderedlist>
      <listitem>Single Data Reference Item
      </listitem>
      <listitem>Group Data Reference Item
      </listitem>
      <listitem>Definition Data Reference Item
      </listitem>
    </orderedlist>

    <sect2 id="reference_data_ref_single">
      <title>Single Data Reference Item</title>

      <para>In the Screen Painter, widget event signals can be linked to 
      a data reference move. With the prefix D:GET:<replaceable>data_ref
      </replaceable> a value will be moved FROM the single data reference TO
      the screen widget. With the prefix D:PUT:<replaceable>data_ref
      </replaceable> a value will be moved TO the single data reference FROM
      the screen widget.</para>

      <simplelist type='horiz' columns='2'>
        <member>Blob</member>
        <member>B-<replaceable>blob_name</replaceable></member>
        <member>Constant</member>
        <member>C-<replaceable>constant_name</replaceable> (read-only)</member>
        <member>Error</member>
        <member>E-<replaceable>error_name</replaceable> (read-only)</member>
        <member>Table Field</member>
        <member>F-<replaceable>data_dictionary_name.table_name[.record_name]</replaceable></member>
        <member>Variable Group Field</member>
        <member>G-<replaceable>data_dictionary_name.variable_group_name</replaceable></member>
        <member>Local Variable Field</member>
        <member>L-<replaceable>data_dictionary_name</replaceable></member>
        <member>Data Model Field</member>
        <member>M-_<replaceable>col_xx.data_model_name</replaceable></member>
        <member></member>
        <member>M-<replaceable>external_field_name.data_model_name</replaceable></member>
        <member></member>
        <member>M-<replaceable>alias.data_model_name</replaceable></member>
        <member>Pick List</member>
        <member>P-<replaceable>pick_list_name(entry)</replaceable></member>
        <member>Variable</member>
        <member>V-<replaceable>variable_name</replaceable></member>
        <member>Text</member>
        <member>X-<replaceable>text_name</replaceable></member>
      </simplelist>

    </sect2>
    <sect2 id="reference_data_ref_group">
      <title>Group Data Reference Item</title>

      <para>From logic, certain objects containing child entries can be 
      referenced within a single command to copy all entries.</para>

      <simplelist type='horiz' columns='2'>
        <member>VariableGroup</member>
        <member>H-<replaceable>variable_group_name</replaceable></member>
        <member>DataModel</member>
        <member>O-<replaceable>data_model_name</replaceable></member>
        <member>Record</member>
        <member>R-<replaceable>table_name[.record_name]</replaceable></member>
      </simplelist>

    </sect2>
    <sect2 id="reference_data_ref_definition">
      <title>Definition Data Reference Item</title>

      <para>Within SQL commands, names like column name or table name must be
      available. </para>

      <simplelist type='horiz' columns='2'>
        <member>Data Dictionary</member>
        <member>D-<replaceable>data_dictionary_name</replaceable> (read-only)</member>
        <member>Table</member>
        <member>T-<replaceable>table_name</replaceable> (read-only)</member>
      </simplelist>

      </sect2>

  </reference>

  <reference id="reference_built_in_functions">
    <title>Built-In Functions</title>

    <para>From within logic, many special built-in functions (controls)
    can be called. The following are available:

    <simplelist type='horiz' columns='2'>
      <member>APPN()</member>
      <member>Returns the name of the application.</member>
      <member>APPNDEV()</member>
      <member>Returns the name of the application being developed.</member>
      <member>ASCII(<replaceable>data_ref</replaceable>)</member>
      <member>Converts integer into corresponding ASCII character.</member>
      <member>CLIP(<replaceable>data_ref</replaceable>)</member>
      <member>Clip leading and trailing blanks from <replaceable>data_ref</replaceable>.</member>
      <member>COMPILEINFO()</member>
      <member>Returns information of how the binary is compiled by printing the linked in ProLinga Components.</member>
      <member>CONFIGFILE()</member>
      <member>Returns the path and name of the default configuration file.</member>
      <member>DATAMODELSTATUS()</member>
      <member>Contains the error number of the last executed DATAMODEL command. 0 means no error.</member>
      <member>DATE()</member>
      <member>Returns the current date.</member>
      <member>ERRORRETURN()</member>
      <member>Contains the use selection value of a QUESTION error. 0 = YES, 1 = NO.</member>
      <member>EXPANDINSERT(<replaceable>record_name</replaceable>)</member>
      <member>Expands the values of a Record in a comma separated value list,
	so it can be used as a short cut for a sql insert operation.</member>
      <member>EXPANDUPDATE(<replaceable>record_name</replaceable>)</member>
      <member>Expands the values of a Record in a comma separated name=value list.
	so it can be used as a short cut for a sql update operation.</member>
      <member>FALSE()</member>
      <member>Returns value set as False value in the Administrator Application.</member>
      <member>LENGTH(<replaceable>data_ref</replaceable>)</member>
      <member>Returns the length of <replaceable>data_ref</replaceable>.</member>
      <member>LISTCOLCOUNT(<replaceable>data_ref</replaceable>)</member>
      <member>Returns the number of columns of in list store <replaceable>data_ref</replaceable>.</member>
      <member>LISTROWCOUNT(<replaceable>data_ref</replaceable>)</member>
      <member>Returns the number of rows of in list store <replaceable>data_ref</replaceable>.</member>
      <member>NEWLINE()</member>
      <member>Returns a newline (\n) character. Typically used in combination with the TEXT command.</member>
      <member>QUITLASTSCREEN()</member>
      <member>If set to 0, the application exits after the last screen has been closed.</member>
      <member>REPOSITORYINFO(<replaceable>data_ref</replaceable>)</member>
      <member>Returns repository system info. The following <replaceable>data_ref</replaceable>
        are available: ServiceId, ServerHost, ServerPort, SystemPath, NumberOfThreads, LogFile, 
        LogLevel, ServerCompressionLevel, SystemHostName.</member>
      <member>REPOSITORYSTATUS()</member>
      <member>Contains the error number of the last executed REPOSITORY command. 0 means no error.</member>
      <member>SQLINFO()</member>
      <member>Contains (error) information generated by 3rd party data provider regarding last executed SQL command.</member>
      <member>SQLRETURN()</member>
      <member>Contains the number of rows affected of the last ACTION SQL statement.</member>
      <member>SQLSTATUS()</member>
      <member>Contains the error number of the last executed SQL or TRANSACTION command. 0 means no error.</member>
      <member>TEXTSTATUS()</member>
      <member>Contains the error number of the last executed TEXT command. 0 means no error.</member>
      <member>TIME()</member>
      <member>Returns the current time.</member>
      <member>THREADEXIT()</member>
      <member>True/False switch if logic executed in a thread should continue or exit.</member>
      <member>THREADSTATUS()</member>
      <member>Contains the error number of the last executed THREAD command. 0 means no error.</member>
      <member>TOLOWER(<replaceable>data_ref</replaceable>)</member>
      <member>Changes characters to lowercase where possible.</member>
      <member>TOUPPER(<replaceable>data_ref</replaceable>)</member>
      <member>Changes characters to uppercase where possible.</member>
      <member>TRUE()</member>
      <member>Returns value set as True value in the Administrator Application.</member>
      <member>USER()</member>
      <member>Returns the name of the user logged on to the environment.</member>
      <member>VERSION()</member>
      <member>Returns the version number of the binary.</member>
      <member>WEBPARAMETER(<replaceable>data_ref</replaceable>)</member>
      <member>Returns value from a web browser argument.</member>
      <member>XMLSTATUS()</member>
      <member>Contains the error number of the last executed XML command. 0 means no error.</member>
    </simplelist>

    </para>

  </reference>

  <reference id="reference_base_objects">
    <title>Base Objects</title>

    <partintro>
      <para>All application objects needed to execute 4GL applications are 
      stored as XML documents in the (remote) application repository. 
      All these objects are stored with the following unique key 
      combination:</para>

      <itemizedlist>
        <listitem><para>Application</para></listitem>
        <listitem><para>Object</para></listitem>
        <listitem><para>Name</para></listitem>
      </itemizedlist>

      <para>There are two types of these base objects:</para>

      <orderedlist>
        <listitem><para>
          <link linkend="reference_base_objects_system">System Objects</link>
          these objects apply to the environment
          in which applications run. The objects will be stored in the <parameter>administrator</parameter>
          application.</para>
        </listitem>
        <listitem><para>
          <link linkend="reference_base_objects_application">Application Objects</link>
          these objects apply to a specific
          application only.</para>
        </listitem>
      </orderedlist>
    </partintro>

    <reference id="reference_base_objects_system">
      <title>System Objects</title>

      &obj_application;
      &obj_system;
      &obj_user;
      &obj_version;


    </reference>

    <reference id="reference_base_objects_application">
      <title>Application Objects</title>

      &obj_blob;
      &obj_constant;
      &obj_datadictionary;
      &obj_datamodel;
      &obj_datasource;
      &obj_errordialog;
      &obj_index;
      &obj_liststore;
      &obj_logic;
      &obj_picklist;
      &obj_record;
      &obj_runcontrol;
      &obj_screen;
      &obj_table;
      &obj_textdocument;
      &obj_thread;
      &obj_variable;
      &obj_variablegroup;
      &obj_xmldocument;

    </reference>

  </reference>

  <reference id="reference_error_status">
    <title>Error and Status</title>

    <partintro>
      <para>Many 4GL commands return a status to indicate if
      a command was processed succesfully or to provide extra
      information on the processed command. Error messages are
      displayed to inform the user what went wrong.</para>

      <para>This section documents the various error and status
      information.</para>
    </partintro>

    &error_status;

  </reference>

  <!-- The document license -->
  &fdl;

</book>
