You must enable javascript in order to view this page or you can go
here
to view the webhelp.
Genero Business Development Language User Guide 3.21
Content
Search Results
Index
Loading, please wait ...
Genero BDL User Guide
What's new in 3.21
General
Documentation conventions
Syntax diagrams
Warnings, notes and tips
Code examples
Searching the documentation
General terms used in this documentation
Other source of information
Introduction to Genero BDL programming
Overview of Genero BDL
Separation of business logic and user interface
Portability - write once, deploy anywhere
Genero BDL concepts
Genero programs
Integrated SQL support
XML support
The user interface
Language library
Windows and forms
Interactive instructions
Responding to user actions
Producing reports
Internationalization
Web services support
Extending the language
Programming tools
Compiling a program
Deploying application program files
Installation
Resources for upgrades
Software requirements
Supported operating systems
System packages
Database client software
C compiler for C extensions
Java runtime environment for FGL
IPv6 support with Genero
Platform specific notes
HP-UX platform notes
IBM® AIX® platform notes
Mac® OS X® platform notes
Microsoft™ Windows® platform notes
Web Services platform notes
SUSE® Linux Enterprise platform notes
Debian / Ubuntu Linux platform notes
Red Hat® Enterprise Linux® / CentOS® / Rocky Linux® platform notes
Installing Genero BDL
Upgrading Genero BDL
Install Genero Mobile for Android™
Install Genero Mobile for iOS (single version)
Install Genero Mobile for iOS (multiple versions)
Upgrading
New features of Genero BDL
BDL 3.21 new features
BDL 3.20 new features
BDL 3.10 new features
BDL 3.00 new features
BDL 2.51 new features
BDL 2.50 new features
BDL 2.41 new features
BDL 2.40 new features
BDL 2.32 new features
BDL 2.30 new features
BDL 2.21 new features
BDL 2.20 new features
BDL 2.11 new features
BDL 2.10 new features
BDL 2.02 new features
BDL 2.01 new features
BDL 2.00 new features
BDL 1.33 new features
BDL 1.32 new features
BDL 1.31 new features
BDL 1.30 new features
BDL 1.20 new features
BDL 1.10 new features
Upgrade Guides for Genero BDL
General BDL upgrade guide
Version number meaning
P-Code compatibility
VM and front-end compatibility
BDL 3.21 upgrade guide
Web Services changes
BDL 3.20 upgrade guide
Web Services changes
Genero Mobile for Android™ (GMA) 1.40 changes
Genero Mobile for iOS (GMI) 1.40 changes
Presentation styles changes
Front calls changes
Web components changes
Database drivers changes
DATETIME SQL type mappings
FreeTDS 1.00 for SQL Server
SQL Server drivers performance
Performances with SQL interruption
PostgreSQL 12 notes
Sharing GLOBALS with C Extensions
Dynamic array assignment with .* notation
Record copy without .* notation
Circular dependency with IMPORT FGL
Case insensitive names with UI methods
FLOAT/SMALLFLOAT to string conversion
IBM DB2 BOOLEAN SQL type
IBM DB2 deferred prepare
ORACLE rowid in SQLCA.SQLERRM
Command tools changes
BDL 3.10 upgrade guide
Web Services changes
Genero Mobile for Android™ (GMA) 1.30 changes
Genero Mobile for iOS (GMI) 1.30 changes
C Extension changes
Java Inteface changes
Presentation styles changes
Front calls changes
Web components changes
Database drivers changes
(GDC) Local Actions
Microsoft ODBC Driver for SQL Server
Unique TABINDEXes in a form
Optional SCREEN RECORD size for lists
Type checking with fglcomp compiler
Oracle DB Proxy Authentication
Temp table emulation with Oracle DB
Oracle® MySQL 5.7 and 8.0 support
fglhint_* in SQL comments
SCROLLGRID content is checked by fglform
Default resource file search path
Using os.Path.pathType() on Windows
New localStorage frontcalls
Wide Char mode of SNC driver
MariaDB 10.2 support
Program stop error message box
BUTTONEDIT and ON ACTION INFIELD
File search with command line tools
BDL 3.00 upgrade guide
Web Services changes
Form definitions for mobile applications
Database drivers changes
Oracle DB NUMBER type
Oracle DB scroll cursor emulation removal
MySQL VARCHAR size limit
MySQL DATETIME fractional seconds
PostgreSQL DATETIME type mapping change
MariaDB support
FreeTDS driver supports SQL Server 2008, 2012, 2014
FGL_GETVERSION() built-in function
Built-in front-end icons desupport
Presentation styles changes
Modifications in front calls
SERIAL emulation with SQL Server
Improved compilation time
Preprocessor changes
Current system time in UTC
Structured ARRAYs in list dialogs
BDL 2.51 upgrade guide
Database drivers changes
New database driver name specification
The FIELD form item type and .val schema file
TRY/CATCH and ERROR LOG
DATETIME types with SQLite
Desupport of C-Extension API functions
BDL 2.50 upgrade guide
Web Services changes
Database drivers changes
TEXT/BYTE support with FTM/ESM database drivers
Presentation styles changes
Floating point to string conversion
Implicit creation of certificates for HTTPS
PostgreSQL schema extraction needs namespace
Client stubs managing multipart changes
BDL 2.41 upgrade guide
BDL 2.40 upgrade guide
Web Services changes
Database drivers changes
Program size option removal (fglrun -s)
Informix® SERIAL emulation with SQL Server
SIZEPOLICY attribute removal for containers
The LVARCHAR type in IBM® Informix® databases
Right-trim collation for character types in SQLite
Message files support now 4-bytes integer message numbers
MySQL client library version change in MySQL 5.5.11
New compiler warning to avoid action shadowing
Runtime error raised when report dimensions are invalid
Linker checks all referenced functions
BDL 2.32 upgrade guide
Front-end protocol compression disabled
SQLite driver no longer needs libiconv on Windows®
Need for Informix® CSDK to compile C extensions
FESQLC tool removal
BDL 2.30 upgrade guide
GUI server auto start
Form compiler is more strict
ORACLE and INTERVAL columns
DIALOG.setCurrentRow() changes row selection flags
Schema extractor needs table owner
Windows™ installation for all users only
MenuAction close no longer created by default
Emulated scrollable cursor temp files in DBTEMP
Modifying tree view data during dialog execution
Presentation styles changes
BDL 2.21 upgrade guide
Web Services changes
PostgreSQL 8.4 and INTERVAL type
fglcomp --build-rdd compiles the module
Unique and primary key constraint violation
IMPORT with list of C-Extensions
Initializing dynamic arrays to null
Strict screen record definition for tables
BDL 2.20 upgrade guide
Web Services changes
Sort is now possible during INPUT ARRAY
Cell attributes and buffered mode
Field methods are more strict
Strict variable identification in SQL statements
SQL Warnings with non-Informix databases
SERIALREG table for 64-bit serial emulation
Extracting the database schema with fgldbsch
Database driver internal error changed from -768 to -6319
Searching for image files on the application server
Strict action identification in dialog methods
Strict field identification in dialog methods
Form compiler checking invalid layout definition
Database schema compatibility
Predefined actions get automatically disabled depending on the context
BEFORE ROW no longer executed when array is empty
Controlling INPUT ARRAY temporary row creation
BDL 2.11 upgrade guide
Writing timestamp information in p-code modules
BDL 2.10 upgrade guide
XML declaration added automatically
Using SQL Server 2008 date/time types
BDL 2.02 upgrade guide
Automatic HBox/VBox
BDL 2.01 upgrade guide
BDL 2.00 upgrade guide
Web Services changes
Runner creation is no longer needed
Desupported Informix® client environments
Database drivers changes
fglmkrtm tool removed
fglinstall tool removed
Linking the utility functions library
Dynamic C extensions
WANTCOLUMNSANCHORED is desupported
PIXELWIDTH / PIXELHEIGHT are deprecated
Prefetch parameters with Oracle
Preprocessor directive syntax changed
Static SQL cache is removed
SQL directive set removed
Connection database schema specification
Schema extraction tool changes
Global and module variables using the same name
Connection parameters in FGLPROFILE when using Informix®
Inconsistent USING clauses
Usage of RUN IN FORM MODE
TTY and COLOR WHERE attribute
BDL 1.33 upgrade guide
Database drivers changes
BDL 1.32 upgrade guide
BDL 1.31 upgrade guide
BDL 1.30 upgrade guide
Action and field activation
Using HBox tags in forms
Width of ButtonEdit/DateEdit/ComboBox
Form fields default sample
Size policy for ComboBoxes
Action defaults at form level
Compiled string files (.42s)
BDL 1.20 upgrade guide
BDL 1.10 upgrade guide
Migrating from IBM® Informix® 4GL to Genero BDL
Installation and setup topics
Using C extensions
Localization support in Genero
Database schema extractor
Compiling 4GL to C
User interface topics
Smooth migration with traditional UI mode
Refreshing the user interface
SCREEN versus LAYOUT section
MENU rendering and behavior
Migrating screen arrays to tables
Review TUI-specific features for GUI display
The default SCREEN window
Specifying WINDOW position and size
Right justified field labels
Reduce multiple text screens
Review application ergonomics
Positions of repeated form field tags
Subscripted form fields are not supported
WORDWRAP field attribute
Ignored form definition attributes
4GL programming topics
Dynamic arrays
Debugger command syntax
Mismatching global variable definitions
Strict function signature checking
STRING versus CHAR/VARCHAR
Review user-made C routines
Web Services support
File I/O statements and APIs
OPEN USING followed by FOREACH
ARG_VAL() returns NULL if no argument
Checking function parameters/returns
Using variable suscripts in SQL
Migrating from Four Js BDS to Genero BDL
Installation and setup topics
License controller
Runner linking is no longer needed
Localization support
Database schema extractor
C-Code compilation is desupported
Desupported environment variables
Desupported FGLPROFILE entries
User interface topics
Smooth migration with traditional UI mode
Front-end compatibility
FGLGUI is 1 by default
FGLPROFILE: GUI configuration
Key labels versus action defaults
Migrating form field WIDGET="type"
SCREEN versus LAYOUT section
Migrating screen arrays to tables
Review TUI specific features
The default SCREEN window
Specifying WINDOW position and size
Front-end configuration tools
Function key mapping
Activating form items with DISPLAY
Defining keys for WIDGET fields
BEFORE DISPLAY / BEFORE ROW execution order
4GL Programming topics
FGLPROFILE: VM configuration
The fgl_init4gl() function
Static versus Dynamic Arrays
Debugger syntax changed
fgl_system() function
The Channel:: methods
The Dialog:: methods
STRING versus CHAR/VARCHAR
Review user-made C routines
Variable identification in SQL statements
Default action of WHENEVER ANY ERROR
Database driver features
Frequently Asked Questions
FAQ001: Why do I have a different display with Genero than with BDS V3?
FAQ002: Why does an empty window always appear?
FAQ003: Why do some COMMAND KEY buttons no longer appear?
FAQ004: Why aren't the elements of my forms aligned properly?
FAQ005: Why doesn't the ESC key validate my input?
FAQ006: Why doesn't the Ctrl-C key cancel my input?
FAQ007: Why do the gui.* FGLPROFILE entries have no effect?
FAQ008: Why do I get invalid characters in my form?
FAQ009: Why do large static arrays raise a stack overflow?
FAQ010: Why do I get error -6366 "Could not load database driver
drivername
"?
Configuration
The FGLPROFILE file(s)
Understanding FGLPROFILE
Syntax of FGLPROFILE entries
FGLPROFILE entries for core language
FGLPROFILE files selection
FGLPROFILE encoding
The default FGLPROFILE
FGLPROFILE for mobile apps
Reading FGLPROFILE entries
Environment variables
Setting environment variables on UNIX™
Setting environment variables on Windows™
Setting environment variables in FGLPROFILE (mobile)
Operating system environment variables
LC_ALL (or LANG)
LD_LIBRARY_PATH
PATH
TERM
TERMCAP
TERMINFO
TMPDIR, TMP, TEMP
Database client environment variables
Genero environment variables
DBCENTURY
DBDATE
DBDELIMITER
DBEDIT
DBFORMAT
DBMONEY
DBPATH
DBPRINT
DBSCREENDUMP
DBSCREENOUT
DBTEMP
FGL_LENGTH_SEMANTICS
FGLAPPDIR
FGLAPPSERVER
FGLCOV
FGLDBPATH
FGLDIR
FGLGBCDIR
FGLGUI
FGLGUIDEBUG
FGLIMAGEPATH
FGLLDPATH
FGLLICENSE
FGLPROFILE
FGLRESOURCEPATH
FGLSERVER
FGLSOURCEPATH
FGLSQLDEBUG
FGLTRACE_FUNCTIONS
FGLTRACE_EXCLUDE
FGLWRTUMASK
FGLWSDEBUG
GMIDIR
INFORMIXTERM
Front-end connection
Database server connections
Language basics
Syntax features
Lettercase insensitivity
Whitespace separators
Quotation marks
Escape symbol
Statement terminator
Source comments
Identifiers
Preprocessor directives
Primitive Data types
BIGINT
BYTE
BOOLEAN
CHAR(size)
DATE
DATETIME qual1 TO qual2
DECIMAL(p,s)
FLOAT
INTEGER
INTERVAL qual1 TO qual2
MONEY(p,s)
SMALLFLOAT
SMALLINT
STRING
TINYINT
TEXT
VARCHAR(size)
Type conversions
When does type conversion occur?
Data type conversion reference
Handling type conversion errors
Formatting data
Formatting numeric values
Formatting DATE values
Formatting DATETIME values
Formatting INTERVAL values
Literals
Integer literals
Numeric literals
Text literals
MDY(m,d,y) literals
Datetime literals
Interval literals
Expressions
Understanding expressions
Boolean expressions
Integer expressions
Numeric expressions
String expressions
Date expressions
Datetime expressions
Interval expressions
Operators
Order of precedence
Operator usage context
List of expression elements
Comparison operators
IS NULL
LIKE
MATCHES
Equal to (== or =)
Different from (!= or <>)
Lower (<)
Lower or equal (<=)
Greater (>)
Greater or equal (>=)
NVL()
IIF()
Boolean operators
NOT
AND
OR
Arithmetic operators
Addition (+)
Subtraction (-)
Multiplication (*)
Division (/)
Exponentiation (**)
MOD
Character string operators
ASCII()
COLUMN
Concatenate (||)
Substring ([s,e])
USING
CLIPPED
ORD()
SPACES
LSTR()
SFMT()
Associative syntax operators
Parentheses:
()
Membership (object.member)
Variable parameter list:
[ ]
SQL related operators
SQLSTATE
SQLERRMESSAGE
Data type operators
CAST
INSTANCEOF
Assignment operators
Assignment (:=)
Date and time operators
CURRENT
EXTEND()
DATE()
TIME()
TODAY
YEAR()
MONTH()
DAY()
WEEKDAY()
MDY()
UNITS
Dialog handling operators
GET_FLDBUF()
INFIELD()
FIELD_TOUCHED()
Flow control
CALL
RETURN
CASE
CONTINUE
block-name
EXIT
block-name
FOR
GOTO
IF
LABEL
SLEEP
WHILE
Variables
Understanding variables
DEFINE
Declaration context
Structured variables
Database column types
User defined types
Variable default values
Variable initializers
Definition attributes
INITIALIZE
LOCATE (for TEXT/BYTE)
FREE (for TEXT/BYTE)
LET
VALIDATE
Examples
Example 1: Local function variables
Example 2: PRIVATE module variables
Example 3: PUBLIC module variables
Example 4: Global variables
Constants
Understanding constants
CONSTANT
Examples
Example 1: Defining and using constants
Records
Understanding records
RECORD
Record initializers
Record definition attributes
Accessing record members
Copying records
Comparing records
Records as function parameters
THRU/THROUGH
Examples
Example 1: Defining a record with explicit member types
Example 2: Defining a record with a database table structure
Example 3: Assigning an comparing records
Arrays
Understanding arrays
ARRAY
Static arrays
Controlling out of bound in static arrays
Dynamic arrays
Array methods
Copying and assigning arrays
Examples
Example 1: Using static and dynamic arrays
Example 2: Filling a dynamic array with rows
Dictionaries
Understanding dictionaries
DICTIONARY
DICTIONARY in action
Dictionary methods
Examples
Example 1: Simple DICTIONARY usage
Types
Understanding type definition
TYPE
Using types in programs
Examples
Example 1: User type with a record structure
Example 2: User type defined in a module
Example 3: User type for function reference
Functions
Understanding functions
FUNCTION definitions
Scope of a function
Local symbol definition
Calling functions
Function parameters
Returning values
Function references
FUNCTION
func-spec
Methods
Function attributes
Examples
Example 1: Function fetching customer number
Example 2: Private function definition
Example 3: Using function references
Example 4: Defining methods
Interfaces
Understanding interfaces
INTERFACE
INTERFACE usage
Examples
Example 1: Simple INTERFACE usage
Advanced features
Program modules
Structure of a program
Structure of a module
The MAIN block / function
Database schema
Understanding database schemas
SCHEMA
Structure of database schema files
Column Definition File (.sch)
Column Validation File (.val)
Column Video Attributes File (.att)
Database schema extractor options
Specifying the database source
Specifying the database driver
Passing database user login and password
Data type conversion control
Skip unsupported table definitions
Specifying the table owner
Force extraction of system tables
Specifying the output file name
Extracting definition of a single table
Controlling the character case
Using the verbose mode
IBM® Informix® synonym tables
IBM® Informix® shadow columns
Running schema extractor in old mode
Importing modules
IMPORT
C-Extension
IMPORT FGL
module
IMPORT JAVA
classname
Program execution
Executing programs
RUN
EXIT PROGRAM
BREAKPOINT
Runtime stack
Passing simple typed values as parameter
Passing records as parameter
Passing static arrays as parameter
Passing dynamic arrays as parameter
Passing dictionaries as parameter
Passing objects as parameter
Passing TEXT/BYTE values as parameter
Returning simple typed values from functions
Returning records from functions
Returning dynamic arrays from functions
Returning dictionaries from functions
Returning TEXT/BYTE values from functions
Implicit data type conversion on the stack
Exceptions
Understanding exceptions
Exception classes
Exception actions
WHENEVER instruction
TRY - CATCH block
Tracing exceptions
Default exception handling
Non-trappable errors
Examples
Example 1: Defining a error handler function
Example 2: SQL error handling with WHENEVER
Example 3: Typical TRY / CATCH block
Example 4: TRY / CATCH in conjunction with WHENEVER
Example 5: WHENEVER RAISE exception propagation
Localization
Application locale
Understanding locale settings
Quickstart guide for locale settings
Locale and character set basics
Why do I need to care about the locale and character set?
Characters, code points, character sets, glyphs and fonts
The ASCII character set
Single-byte character sets (SBCS)
Double-byte character sets (DBCS)
Multibyte character sets (MBCS)
Character size unit and length semantics
The UNICODE Standard
When do I need a UNICODE character set?
What is the standard for UNICODE encoding?
What is my current character set?
Defining the application locale
Language and character set settings
Length semantics settings
Collation ordering settings
Numeric and currency locale settings
Date and time locale settings
Database client settings
Front-end locale configuration
Locale matters when writing programs
Runtime system messages
Using the charmap.alias file
Date, numeric and monetary formats
Using the Ming Guo date format
User's preferred language
Right-to-left languages support
Troubleshooting locale issues
Locale settings (LANG) corrupted on Microsoft™ platforms
A form is displayed with invalid characters
Checking the locale configuration on UNIX™ platforms
Verifying if the locale is properly supported by the runtime system
How to retrieve the list of available locales on the system
How to retrieve the list of available codesets on the system
Localized strings
Steps for application internationalization
Creating source string files
Localized strings in program sources
Localized strings in XML resource files
Extracting strings from sources
Organizing string resources
Compiling string resource files (.str)
Loading localized strings at runtime
Predefined application strings
Best practices for localized strings
Example
Globals
Understanding global blocks
GLOBALS
Rules for globals usage
Database schema in globals
Content of a globals file
Examples
Example 1: Multiple GLOBALS file
Predefined constants
NULL
TRUE
FALSE
NOTFOUND
Configuration options
OPTIONS (Compilation)
Controlling semantics of AND / OR operators
OPTIONS (Runtime)
Defining the position of reserved lines
Defining default TTY attributes
Defining the field input loop
Defining field tabbing order method
Application termination
Front-end termination
Defining the message file
Defining control keys
Setting default screen modes for sub-programs
Enabling/disabling SQL interruption
Runtime configuration in FGLPROFILE
Responding to CTRL_LOGOFF_EVENT
DEFER INTERRUPT / QUIT
Program registers
STATUS
int_flag
quit_flag
OOP support
Understanding classes and objects
DEFINE ...
package.class
Distinguish class and object methods
Working with objects
What class packages exist?
XML support
DOM and SAX standards
DOM and SAX built-in classes
Limitations of XML built-in classes
Exception handling with XML classes
Controlling the UI with XML classes
JSON support
What is JSON?
JSON utility classes
BDL/JSON conversion basics
BDL names and JSON element names
NULLs and empty structures
BDL to JSON type conversion rules
JSON to BDL type conversion rules
Front calls
Understanding front calls
ui.Interface.frontCall
User-defined front calls
Optimization
Runtime system basics
Dynamic module loading
Elements shared by multiple programs
Elements shared by multiple modules
Objects private to a program
Optimize your programs
Finding program bottlenecks
Optimizing SQL statements
Passing CHAR parameters to functions
Manipulating character strings
Passing records by reference
Compiler removes unused variables
Saving memory by splitting modules
Saving memory by using STRING variables
Saving memory by using dynamic arrays
SQL support
SQL programming
SQL basics
Database and application locales
SQL execution diagnostics
The SQLCA diagnostic record
SQL error identification
Cursors and connections
Concurrent data access
Database transactions
Using SQL interruption
Implicit database connection
Debugging SQL statements
The database utility library
SQL security
Authenticating DB users
Avoiding SQL injection
SQL portability
Database entities
Database users and security
Creating a database from programs
Handling nested transactions
Transaction blocks across connections
Transaction savepoints
Data definition statements
Using portable data types
The NULL value
Data manipulation statements
CHAR and VARCHAR types
Byte or Character Length semantics?
SQL character type for Unicode/UTF-8
Size limits for CHAR/VARCHAR columns
Empty strings and NULLs
Trailing blanks in CHAR/VARCHAR
What should you do?
INTERVAL data types
The UNITS operator
Scrollable cursors
Optimistic locking
Auto-incremented columns (serials)
Solution 1: Use database specific serial generators
Solution 2: Generate serial numbers from your own sequence table
Solution 3: Use native SEQUENCE database objects
IBM® Informix® SQL ANSI Mode
Positioned UPDATE/DELETE
Cursors WITH HOLD
Insert cursors
String literals in SQL statements
Date/time literals in SQL statements
Naming database objects
SQL identifiers syntax
SQL identifiers case-sensitivity
SQL identifiers size
LOAD and UNLOAD instructions
Temporary tables
Outer joins
Substring expressions
Using ROWID columns
MATCHES and LIKE operators
GROUP BY clause
The LENGTH() function in SQL
Large OBjects (LOBs) data types
Stored procedures
Specifying input and output parameters
Stored procedures returning a result set
Calling stored procedures with supported databases
Row limiting clause (SELECT)
SQL performance
Performance with dynamic SQL
Performance with transactions
Avoiding long transactions
Declaring prepared statements
Saving SQL resources
Optimizing scrollable cursors
Database connections
Understanding database connections
Opening a database connection
Database client environment
IBM® DB2 LUW™
IBM® Informix® Dynamic Server
Oracle® MySQL
MariaDB
Oracle database
PostgreSQL
Microsoft™ SQL Server
SQLite
SAP HANA
Connection parameters
Database source specification (source)
Database driver specification (driver)
Default database driver
User name and password (username/password)
Connection parameters in database specification
Direct database specification method
Indirect database specification method
IBM® Informix® emulation parameters in FGLPROFILE
Database type specific parameters in FGLPROFILE
IBM® DB2® specific FGLPROFILE parameters
Oracle DB specific FGLPROFILE parameters
Oracle® MySQL specific FGLPROFILE parameters
MariaDB specific FGLPROFILE parameters
PostgreSQL specific FGLPROFILE parameters
SQL Server (MS ODBC) specific FGLPROFILE parameters
SQL Server (FreeTDS driver) specific FGLPROFILE parameters
SQL Server (Easysoft driver) specific FGLPROFILE parameters
SAP HANA® specific FGLPROFILE parameters
SQL connection identifier
Database user authentication
Specifying a user name and password with CONNECT
Specifying a user name and password with DATABASE
User authentication callback function
Order of precedence for database user specification
Unique session mode connection instructions
DATABASE
CLOSE DATABASE
Multi-session mode connection instructions
CONNECT TO
SET CONNECTION
SET SESSION AUTHORIZATION
DISCONNECT
Miscellaneous SQL statements
SET EXPLAIN
UPDATE STATISTICS
Database transactions
Understanding database transactions
BEGIN WORK
SAVEPOINT
COMMIT WORK
ROLLBACK WORK
RELEASE SAVEPOINT
SET ISOLATION
SET LOCK MODE
Static SQL statements
Understanding static SQL statements
Using program variables in static SQL
Table and column names in static SQL
SQL texts generated by the compiler
INSERT
UPDATE
DELETE
SELECT
SQL ... END SQL
CREATE SEQUENCE
ALTER SEQUENCE
DROP SEQUENCE
CREATE TABLE
ALTER TABLE
DROP TABLE
CREATE INDEX
ALTER INDEX
DROP INDEX
CREATE VIEW
DROP VIEW
CREATE SYNONYM
DROP SYNONYM
RECOVER TABLE
RENAME
Dynamic SQL management
Understanding dynamic SQL
PREPARE (SQL statement)
EXECUTE (SQL statement)
FREE (SQL statement)
EXECUTE IMMEDIATE
The base.SQLHandle built-in class
fglhint_* SQL comments
Result set processing
Understanding database result sets
DECLARE (result set cursor)
OPEN (result set cursor)
FETCH (result set cursor)
CLOSE (result set cursor)
FREE (result set cursor)
FOREACH (result set cursor)
Positioned updates/deletes
Understanding positioned update or delete
DECLARE (SELECT … FOR UPDATE)
UPDATE … WHERE CURRENT OF
DELETE … WHERE CURRENT OF
Examples
Example 1: Positioned UPDATE statement
SQL insert cursors
Understanding SQL insert cursors
DECLARE (insert cursor)
OPEN (insert cursor)
PUT (insert cursor)
FLUSH (insert cursor)
CLOSE (insert cursor)
FREE (insert cursor)
Examples
Example 1: Insert Cursor declared with a Static INSERT
Example 2: Insert Cursor declared with an SQL text
Example 3: Insert Cursor declared with 'hold' option
SQL LOAD and UNLOAD
LOAD
UNLOAD
SQL database guides
IBM® Informix® Dynamic Server
Purpose of the Informix® SQL guide
Installation (Runtime Configuration)
Supported IBM® Informix® server and CSDK versions
Install IBM® Informix® and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Fully supported IBM® Informix® SQL features
What are the supported IBM® Informix® SQL features?
Concurrency management
Using UTF-8 in IBM® Informix® databases
Stored procedure calls
Stored functions returning values
Stored functions defined with output parameters
Stored functions returning a result set
Partially supported IBM® Informix® SQL features
The BIGSERIAL / SERIAL8 data types
The NCHAR / NVARCHAR data types
The LVARCHAR data type
DISTINCT data types
Stored Procedures
Database Triggers
Optimizer directives
XML publishing support
DataBlade® modules
Specific CREATE INDEX clauses
Other SQL instructions
Unsupported IBM® Informix® SQL features
CLOB and BLOB data types
The LIST data type
The MULTISET data type
The SET data type
The ROW data types
OPAQUE data types
The :: cast operator
Table inheritance
IBM® DB2® Linux-Unix-Windows
Installation (Runtime Configuration)
Install IBM® DB2® and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Database concepts
Database concepts
Concurrency management
Transactions handling
Database users
Setting privileges
Data dictionary
Data type conversion table: Informix to DB2
BOOLEAN data type
CHAR and VARCHAR data types
Numeric data types
DATE and DATETIME data types
INTERVAL data type
SERIAL and BIGSERIAL data types
ROWID columns
TEXT and BYTE (LOB) types
Table constraints
Name resolution of SQL objects
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
String delimiters
Single row SELECT
MATCHES and LIKE
SELECT * (asterisk)
The LENGTH() function
Row limiting clause
BDL programming
INSERT cursors
Cursors WITH HOLD
SELECT … FOR UPDATE
UPDATE/DELETE … WHERE CURRENT OF
SQL parameters limitation
LOAD and UNLOAD
SQL Interruption
Scrollable cursors
Stored procedure calls
Stored procedures with output parameters
Stored procedures with result set
Stored procedures with output parameters and result set
IBM® Netezza®
Installation (Runtime Configuration)
Install IBM® Netezza® and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Database concepts
Database concepts
Concurrency management
Transactions handling
Database users
Data dictionary
Data type conversion table: Informix to Netezza
BOOLEAN data type
CHAR and VARCHAR data types
Numeric data types
DATE and DATETIME data types
INTERVAL data type
SERIAL and BIGSERIAL data types
ROWID columns
Indexes
TEXT and BYTE (LOB) types
Table constraints
Name resolution of SQL objects
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
The LENGTH() function
Name resolution of SQL objects
String delimiters
MATCHES and LIKE
Row limiting clause
BDL programming
UPDATE limitations in Netezza
INSERT cursors
Cursors WITH HOLD
SELECT … FOR UPDATE
UPDATE/DELETE … WHERE CURRENT OF
LOAD and UNLOAD
SQL Interruption
Scrollable cursors
Microsoft™ SQL Server
Installation (Runtime Configuration)
Install Microsoft™ SQL Server and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Database concepts
Database concepts
Concurrency management
Transactions handling
Database users
Setting privileges
Data dictionary
Data type conversion table: Informix to SQL Server
BOOLEAN data type
CHAR and VARCHAR data types
Numeric data types
DATE and DATETIME data types
INTERVAL data type
SERIAL and BIGSERIAL data types
SQL Server UNIQUEIDENTIFIER data type
SQL Server ROWVERSION data type
ROWID columns
Case sensitivity
TEXT and BYTE (LOB) types
Table constraints
Name resolution of SQL objects
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
String delimiters
Single row SELECT
MATCHES and LIKE
The LENGTH() function
Row limiting clause
String concatenation operator
BDL programming
SQL errors on PREPARE
INSERT cursors
Cursors WITH HOLD
SELECT … FOR UPDATE
UPDATE/DELETE … WHERE CURRENT OF
LOAD and UNLOAD
SQL Interruption
Scrollable cursors
Stored procedure calls
Stored procedures with output parameters
Stored procedures with result set
Stored procedures returning a cursor as output parameter
Stored procedures with return code
Stored procedures with output parameters, return code and result set
Oracle® MySQL / MariaDB
Installation (Runtime Configuration)
Install Oracle® MySQL/MariaDB and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Database concepts
Database concepts
Concurrency management
Transactions handling
Database users
Data dictionary
Data type conversion table: Informix to MySQL
BOOLEAN data type
CHAR and VARCHAR data types
Numeric data types
DATE and DATETIME data types
INTERVAL data type
SERIAL and BIGSERIAL data type
ROWID columns
TEXT and BYTE (LOB) types
Table constraints
Name resolution of SQL objects
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
The LENGTH() function
MATCHES and LIKE
Row limiting clause
BDL programming
INSERT cursors
Cursors WITH HOLD
SELECT … FOR UPDATE
UPDATE/DELETE … WHERE CURRENT OF
LOAD and UNLOAD
SQL Interruption
Scrollable cursors
Stored procedure calls
Stored procedures with output parameters
Stored functions returning values
Stored procedures with result set
Oracle® Database
Installation (Runtime Configuration)
Install Oracle and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Database concepts
Database concepts
Concurrency management
Transactions handling
Database users
Setting privileges
Data dictionary
Data type conversion table: Informix to Oracle
BOOLEAN data type
CHAR and VARCHAR data types
Numeric data types
DATE and DATETIME data types
INTERVAL data type
SERIAL and BIGSERIAL data types
ROWID columns
The RAW data type
TEXT and BYTE (LOB) types
Table constraints
Name resolution of SQL objects
NULLs in indexed columns
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Using the default temporary table emulation
Using the global temporary table emulation
Using the private temporary table emulation
Substrings in SQL
The LENGTH() function
Empty character strings
String delimiters
Single row SELECT
MATCHES and LIKE
SELECT * (asterisk)
Row limiting clause
BDL programming
SQL errors on PREPARE
INSERT cursors
Cursors WITH HOLD
SELECT … FOR UPDATE
UPDATE/DELETE … WHERE CURRENT OF
LOAD and UNLOAD
SQL Interruption
Scrollable cursors
Stored procedure calls
Stored procedures with output parameters
Stored functions with a return value
Stored procedures with result set
PostgreSQL
Installation (Runtime Configuration)
Install PostgreSQL and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Database concepts
Database concepts
Concurrency management
Transactions handling
Database users
Setting privileges
Data dictionary
Data type conversion table: Informix to PostgreSQL
Extracting database schemas from PostgreSQL
BOOLEAN data type
CHAR and VARCHAR data types
Numeric data types
DATE and DATETIME data types
INTERVAL data type
SERIAL and BIGSERIAL data types
ROWID columns
TEXT and BYTE (LOB) types
Table constraints
Name resolution of SQL objects
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
String delimiters
MATCHES and LIKE
The LENGTH() function
Row limiting clause
Type conversion rules
BDL programming
SQL errors on PREPARE
INSERT cursors
Cursors WITH HOLD
SELECT … FOR UPDATE
UPDATE/DELETE … WHERE CURRENT OF
LOAD and UNLOAD
SQL Interruption
Scrollable cursors
Stored procedure calls
Stored procedure with output parameters
Stored functions with result set
Stored function with output parameters
SQLite
Installation (Runtime Configuration)
Install SQLite and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Database concepts
Database concepts
Concurrency management
Transactions handling
Database users
Data dictionary
Data type conversion table: Informix to SQLite
BOOLEAN data type
CHAR and VARCHAR data types
Numeric data types
DATE and DATETIME data types
INTERVAL data type
SERIAL and BIGSERIAL data types
ROWID columns
Foreign key support
TEXT and BYTE (LOB) types
Name resolution of SQL objects
Data manipulation
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
MATCHES and LIKE
The LENGTH() function
Row limiting clause
BDL programming
INSERT cursors
SELECT … FOR UPDATE
Cursors WITH HOLD
UPDATE/DELETE … WHERE CURRENT OF
LOAD and UNLOAD
SQL Interruption
Scrollable cursors
Modifying many rows in a table
Optimizing database file usage
SAP HANA®
Installation (Runtime Configuration)
Install SAP HANA® and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Database concepts
Database concepts
Concurrency management
Transactions handling
Database users
Setting privileges
Data dictionary
Data type conversion table: Informix to SAP HANA
BOOLEAN data type
CHAR and VARCHAR data types
Numeric data types
DATE and DATETIME data types
INTERVAL data type
SERIAL and BIGSERIAL data types
ROWID columns
TEXT and BYTE (LOB) types
Table constraints
Name resolution of SQL objects
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
String delimiters
Single row SELECT
MATCHES and LIKE
The LENGTH() function
Row limiting clause
BDL programming
INSERT cursors
Cursors WITH HOLD
SELECT … FOR UPDATE
LOAD and UNLOAD
UPDATE/DELETE … WHERE CURRENT OF
SQL Interruption
Scrollable Cursors
Stored procedure calls
Stored procedures with output parameters
Stored procedures with result set
Stored procedures with output parameters and result set
User interface
User interface basics
The dynamic user interface
The abstract user interface tree
What does the abstract user interface tree contain?
Manipulating the abstract user interface tree
XML node types and attribute names
Actions in the abstract user interface tree
Inspecting the AUI tree of a front-end
Genero user interface modes
Text mode rendering (TUI mode)
Graphical mode rendering (GUI mode)
Graphical mode with Native Rendering
Graphical mode with Universal Rendering
Graphical mode with Traditional Display
GUI front-end connection
Connecting with a front-end
The front-end protocol
Front-end identification
GUI connection timeout
Wait for front-end ping timeout
GUI protocol compression
Front-end protocol errors
Debugging the front-end protocol
Front-end protocol logging
Automatic front-end startup
Using a text terminal
TERMINFO terminal capabilities
TERMCAP terminal capabilities
Termcap syntax
Genero-specific termcap definitions
Text mode screen dump
Form definitions
Windows and forms
OPEN WINDOW
OPEN WINDOW attributes
WITH FORM clause
Window TYPE attribute
CLOSE WINDOW
CURRENT WINDOW
CLEAR WINDOW
OPEN FORM
DISPLAY FORM
CLOSE FORM
CLEAR SCREEN
DISPLAY AT
Using windows and forms
Understanding windows and forms
The window concept
The form concept
Configuring windows with styles
Defining the window title
Defining the window icon
Window container interfaces
Position and size of a window
Using images
Image handling basics
Controlling the image layout
Providing the image resource
Static images
Runtime images
Accessibility guidelines
Keyboard access
Form description for screen readers
Usability and ergonomics
Message files
Understanding message files
Syntax of message files (.msg)
Compiling message files (.msg)
Using message files at runtime
Examples
Example 1: Help message file used in a MENU
Action defaults files
Understanding action defaults files
Syntax of action defaults files (.4ad)
Action default attributes reference (.4ad)
Using action defaults files
Examples
Example 1: Loading a global action defaults file
Presentation styles
Understanding presentation styles
Syntax of presentation styles file (.4st)
Using presentation styles
Defining a style
Pseudo selectors
Using a style
Order of precedence
Combining styles and style attributes
Style attribute inheritance
Presentation styles in the AUI tree
Loading presentation styles
Combining TTY and style attributes
Element types
Predefined attribute values
Colors
GDC System Colors
GBC System Colors
Fonts
Font families
Font sizes
Font styles
Font weights
Statusbar types
Style attributes reference
Style attributes common to all elements
Button style attributes
ButtonEdit style attributes
CheckBox style attributes
ComboBox style attributes
DateEdit style attributes
DateTimeEdit style attributes
Edit style attributes
Action/MenuAction style attributes
Folder style attributes
Form style attributes
Group style attributes
HBox style attributes
Image style attributes
Label style attributes
Menu style attributes
Message style attributes
ProgressBar style attributes
RadioGroup style attributes
ScrollGrid style attributes
Row and cell highlighting in SCROLLGRID
Table style attributes
Row and cell highlighting in TABLE
Tree style attributes
Row highlighting in TREE
TextEdit style attributes
Rich Text Editing in TEXTEDIT
ToolBar style attributes
ToolBarSeparator style attributes
UserInterface style attributes
Window style attributes
Window style attributes: Basics
Window style attributes: Miscellaneous
Window style attributes: Action Panel
Window style attributes: Ring Menu
Window style attributes: Start Menu
Window style attributes: GMI/iOS
Examples
Example 1: Defining styles for grid elements
Example 2: Defining styles for table rows
Form specification files
Understanding form files
Form file concepts
Form items
Satellite items
Static items
Layout items
Stack items
Action views
Form fields
Database column fields
Formonly fields
Phantom fields
Aggregate fields
Identifying form items
Screen records / arrays
Form tags
Layout tags
Item tags
Hbox tags
External form inclusion
Boolean expressions in forms
Form item types
BUTTON item type
BUTTONEDIT item type
CHECKBOX item type
COMBOBOX item type
DATEEDIT item type
DATETIMEEDIT item type
EDIT item type
FOLDER item type
GRID item type
GROUP item type
HBOX item type
IMAGE item type
LABEL item type
PAGE item type
PROGRESSBAR item type
RADIOGROUP item type
SCROLLGRID item type
SLIDER item type
SPINEDIT item type
TABLE item type
TEXTEDIT item type
TIMEEDIT item type
TREE item type
VBOX item type
WEBCOMPONENT item type
Form file structure
SCHEMA section
ACTION DEFAULTS section
TOPMENU section
TOOLBAR section
SCREEN section
LAYOUT section
FORM clause
HBOX container
VBOX container
GROUP container
FOLDER container
PAGE container
GRID container
STACK container
BUTTON stack item
BUTTONEDIT stack item
CHECKBOX stack item
COMBOBOX stack item
DATEEDIT stack item
DATETIMEEDIT stack item
EDIT stack item
FOLDER stack item
GROUP stack item
IMAGE stack item
LABEL stack item
PAGE stack item
PHANTOM stack item
PROGRESSBAR stack item
RADIOGROUP stack item
SLIDER stack item
SPINEDIT stack item
TABLE stack item
TEXTEDIT stack item
TIMEEDIT stack item
WEBCOMPONENT stack item
SCROLLGRID container
TABLE container
TREE container
TABLES section
ATTRIBUTES section
AGGREGATE item definition
PHANTOM item definition
BUTTON item definition
BUTTONEDIT item definition
CANVAS item definition
CHECKBOX item definition
COMBOBOX item definition
DATEEDIT item definition
DATETIMEEDIT item definition
EDIT item definition
GROUP item definition
IMAGE item definition
LABEL item definition
PROGRESSBAR item definition
RADIOGROUP item definition
SCROLLGRID item definition
SLIDER item definition
SPINEDIT item definition
TABLE item definition
TEXTEDIT item definition
TIMEEDIT item definition
TREE item definition
WEBCOMPONENT item definition
INSTRUCTIONS section
KEYS section
Form item attributes
ACCELERATOR attribute
ACCELERATOR2 attribute
ACCELERATOR3 attribute
ACCELERATOR4 attribute
ACTION attribute
AGGREGATETEXT attribute
AGGREGATETYPE attribute
AUTOSCALE attribute
AUTONEXT attribute
BUTTONTEXTHIDDEN attribute
CENTURY attribute
CLASS attribute
COLOR attribute
COLOR WHERE Attribute
CONFIG Attribute
CONTEXTMENU attribute
COMMENT attribute
COMPLETER attribute
COMPONENTTYPE attribute
DEFAULT attribute
DEFAULTVIEW attribute
DISPLAY LIKE attribute
DISCLOSUREINDICATOR attribute
DOUBLECLICK attribute
DOWNSHIFT attribute
EXPANDEDCOLUMN attribute
FONTPITCH attribute
FORMAT attribute
GRIDCHILDRENINPARENT attribute
HEIGHT attribute
HIDDEN attribute
IDCOLUMN attribute
IMAGE attribute
IMAGECOLUMN attribute
IMAGECOLLAPSED attribute
IMAGEEXPANDED attribute
IMAGELEAF attribute
INCLUDE attribute
INITIALIZER attribute
INITIALPAGESIZE attribute
INVISIBLE attribute
ISNODECOLUMN attribute
ITEMS attribute
JUSTIFY attribute
KEY attribute
KEYBOARDHINT attribute
MINHEIGHT attribute
MINWIDTH attribute
NOENTRY attribute
NOT NULL attribute
NOTEDITABLE attribute
OPTIONS attribute
ORIENTATION attribute
PARENTIDCOLUMN attribute
PICTURE attribute
PLACEHOLDER attribute
PROGRAM attribute
PROPERTIES attribute
QUERYEDITABLE attribute
REQUIRED attribute
REVERSE attribute
SAMPLE attribute
SCROLL attribute
SCROLLBARS attribute
SIZEPOLICY attribute
SPACING attribute
SPLITTER attribute
STEP attribute
STRETCH attribute
STYLE attribute
TABINDEX attribute
TAG attribute
TEXT attribute
TITLE attribute
UNHIDABLE attribute
UNHIDABLECOLUMNS attribute
UNMOVABLE attribute
UNMOVABLECOLUMNS attribute
UNSIZABLE attribute
UNSIZABLECOLUMNS attribute
UNSORTABLE attribute
UNSORTABLECOLUMNS attribute
UPSHIFT attribute
VALIDATE attribute
VALIDATE LIKE attribute
VALUEMIN attribute
VALUEMAX attribute
VALUECHECKED attribute
VALUEUNCHECKED attribute
VERIFY attribute
VERSION attribute
WANTFIXEDPAGESIZE attribute
WANTNORETURNS attribute
WANTTABS attribute
WIDGET attribute
WIDTH attribute
WINDOWSTYLE attribute
WORDWRAP Attribute
Examples
Example 1: Grid-based layout form
Example 2: Stack-based layout form
Form rendering
Form rendering basics
Character encoding in .per
Adapting to viewport changes
Front-end stored settings
Grid-based layout
Packed and unpacked grids
Automatic HBoxes and VBoxes
Widget position and size in grid
Form item dependencies in grids
Complex grid layout example
Using hbox tags to align form items
Defining hbox tags in grids
Spacer items in hbox tags
Widget width inside hbox tags
Stack-based layout
Label internationalization
Stacked group rendering
Toolbars
Understanding toolbars
Defining toolbars in the form file
Syntax of a toolbar file (.4tb)
Loading .4tb toolbar definition files
Creating the toolbar manually with DOM
Toolbars on mobile devices
Examples
Example 1: Toolbar in XML format
Example 2: Toolbar created dynamically
Example 3: Toolbar section in form file
Topmenus
Understanding topmenus
Defining the topmenu in a form file
Syntax of a topmenu file (.4tm)
Loading .4tm topmenu definition files
Creating the topmenu dynamically
Topmenus on mobile devices
Examples
Example 1: Topmenu in XML format
Example 2: Topmenu section in form file
Dialog instructions
Static display (DISPLAY/ERROR/MESSAGE/CLEAR)
Display of data and messages
DISPLAY (to stdout)
DISPLAY AT
DISPLAY TO
DISPLAY BY NAME
CLEAR FORM
CLEAR SCREEN ARRAY
CLEAR
field-list
MESSAGE
ERROR
SCROLL
Prompt for values (PROMPT)
Understanding the PROMPT instruction
Syntax of PROMPT instruction
PROMPT programming steps
Using simple prompt inputs
PROMPT instruction configuration
Default actions in PROMPT
Interaction blocks
ON ACTION block
ON IDLE block
ON KEY block
ON TIMER block
Examples
Example 1: Simple PROMPT statements
Example 2: Simple PROMPT with Interrupt Checking
Example 3: PROMPT with ATTRIBUTES and ON ACTION handlers
Ring menus (MENU)
Understanding ring menus
Syntax of the MENU instruction
MENU programming steps
Using ring menus
Rendering modes of a menu
Binding action views to menu options
MENU instruction configuration
Default actions in MENU
MENU control blocks
BEFORE MENU block
MENU interaction blocks
COMMAND [KEY()] "option" block
COMMAND KEY() block
ON ACTION block
ON IDLE block
ON TIMER block
MENU control instructions
CONTINUE MENU instruction
EXIT MENU instruction
NEXT OPTION instruction
SHOW/HIDE OPTION instruction
Examples
Example 1: MENU with abstract action options
Example 2: MENU with text-mode options
Example 3: MENU with STYLE="dialog"
Record input (INPUT)
Understanding the INPUT instruction
Syntax of the INPUT instruction
INPUT programming steps
Using simple record inputs
Variable binding in INPUT
INPUT instruction configuration
Default actions in INPUT
INPUT control blocks
INPUT control blocks execution order
BEFORE INPUT block
AFTER INPUT block
BEFORE FIELD block
ON CHANGE block
AFTER FIELD block
INPUT interaction blocks
ON ACTION block
ON IDLE block
ON KEY block
ON TIMER block
INPUT control instructions
ACCEPT INPUT instruction
CONTINUE INPUT instruction
EXIT INPUT instruction
CLEAR instruction in dialogs
NEXT FIELD instruction
Examples
Example 1: INPUT with binding by field position
Example 2: INPUT with binding by field name
Record list (DISPLAY ARRAY)
Understanding the DISPLAY ARRAY instruction
Syntax of DISPLAY ARRAY instruction
DISPLAY ARRAY programming steps
Using record lists
Variable binding in DISPLAY ARRAY
DISPLAY ARRAY instruction configuration
Default actions in DISPLAY ARRAY
DISPLAY ARRAY data blocks
ON FILL BUFFER block
ON EXPAND block
ON COLLAPSE block
DISPLAY ARRAY control blocks
DISPLAY ARRAY control blocks execution order
BEFORE DISPLAY block
AFTER DISPLAY block
BEFORE ROW block
AFTER ROW block
BEFORE FIELD block
AFTER FIELD block
DISPLAY ARRAY interaction blocks
ON ACTION block
ON IDLE block
ON KEY block
ON TIMER block
ON APPEND block
ON INSERT block
ON UPDATE block
ON DELETE block
ON SELECTION CHANGE block
ON SORT block
ON DRAG_START block
ON DRAG_FINISHED block
ON DRAG_ENTER block
ON DRAG_OVER block
ON DROP block
DISPLAY ARRAY control instructions
CONTINUE DISPLAY instruction
EXIT DISPLAY instruction
ACCEPT DISPLAY instruction
Examples
Example 1: DISPLAY ARRAY using full list mode
Example 2: DISPLAY ARRAY using paged mode
Example 3: DISPLAY ARRAY using modification triggers
Example 4: DISPLAY ARRAY with structured array
Editable record list (INPUT ARRAY)
Understanding the INPUT ARRAY instruction
Syntax of INPUT ARRAY instruction
INPUT ARRAY programming steps
Using editable record lists
Variable binding in INPUT ARRAY
INPUT ARRAY instruction configuration
Default actions in INPUT ARRAY
INPUT ARRAY control blocks
INPUT ARRAY control blocks execution order
BEFORE INPUT block
AFTER INPUT block
BEFORE ROW block
ON ROW CHANGE block
AFTER ROW block
BEFORE INSERT block
AFTER INSERT block
BEFORE DELETE block
AFTER DELETE block
BEFORE FIELD block
ON CHANGE block
AFTER FIELD block
INPUT ARRAY interaction blocks
ON ACTION block
ON IDLE block
ON KEY block
ON SORT block
ON TIMER block
INPUT ARRAY control instructions
ACCEPT INPUT instruction
EXIT INPUT instruction
CANCEL DELETE instruction
CANCEL INSERT instruction
CONTINUE INPUT instruction
NEXT FIELD instruction
CLEAR instruction in dialogs
Examples
Example 1: INPUT ARRAY with empty record list
Example 2: INPUT ARRAY using a static array
Example 3: INPUT ARRAY using a dynamic array
Example 4: INPUT ARRAY updating the database table
Query by example (CONSTRUCT)
Understanding the CONSTRUCT instruction
Syntax of CONSTRUCT instruction
CONSTRUCT programming steps
Using query by example
Form field specification in CONSTRUCT
Query operators in CONSTRUCT
CONSTRUCT instruction configuration
Default actions IN CONSTRUCT
CONSTRUCT control blocks
CONSTRUCT control blocks execution order
BEFORE CONSTRUCT block
AFTER CONSTRUCT block
BEFORE FIELD block
ON CHANGE block
AFTER FIELD block
CONSTRUCT interaction blocks
ON ACTION block
ON IDLE block
ON KEY block
ON TIMER block
CONSTRUCT control instructions
ACCEPT CONSTRUCT instruction
CONTINUE CONSTRUCT instruction
EXIT CONSTRUCT instruction
NEXT FIELD instruction
CLEAR instruction in dialogs
Examples
Example 1: CONSTRUCT with binding by field position
Example 2: CONSTRUCT with binding by field name
Multiple dialogs (DIALOG - inside functions)
Understanding multiple dialogs
Syntax of the procedural DIALOG instruction
Procedural dialog programming steps
Using multiple dialogs
Identifying sub-dialogs in DIALOG
Structure of a procedural DIALOG block
The INPUT sub-dialog
The CONSTRUCT sub-dialog
The DISPLAY ARRAY sub-dialog
The INPUT ARRAY sub-dialog
The SUBDIALOG clause
Procedural DIALOG block configuration
DIALOG ATTRIBUTES clause
INPUT ATTRIBUTES clause
DISPLAY ARRAY ATTRIBUTES clause
INPUT ARRAY ATTRIBUTES clause
CONSTRUCT ATTRIBUTES clause
Default actions created by a DIALOG block
DIALOG data blocks
ON FILL BUFFER block
ON EXPAND block
ON COLLAPSE block
DIALOG control blocks
Control block execution order in multiple dialogs
BEFORE DIALOG block
AFTER DIALOG block
BEFORE FIELD block
AFTER FIELD block
ON CHANGE block
BEFORE INPUT block
AFTER INPUT block
BEFORE CONSTRUCT block
AFTER CONSTRUCT block
BEFORE DISPLAY block
AFTER DISPLAY block
BEFORE ROW block
ON ROW CHANGE block
AFTER ROW block
BEFORE INSERT block
AFTER INSERT block
BEFORE DELETE block
AFTER DELETE block
DIALOG interaction blocks
ON ACTION block
ON IDLE block
ON KEY block
ON TIMER block
COMMAND [KEY] block
ON APPEND block
ON INSERT block
ON UPDATE block
ON DELETE block
ON SELECTION CHANGE block
ON SORT block
ON DRAG_START block
ON DRAG_FINISHED block
ON DRAG_ENTER block
ON DRAG_OVER block
ON DROP block
DIALOG control instructions
NEXT FIELD instruction
CLEAR instruction in dialogs
DISPLAY TO / BY NAME instruction
CONTINUE DIALOG instruction
EXIT DIALOG instruction
ACCEPT DIALOG instruction
CANCEL DIALOG instruction
CANCEL DELETE instruction
CANCEL INSERT instruction
Examples
Example 1: DIALOG controlling two lists
Example 2: DIALOG with CONSTRUCT and DISPLAY ARRAY
Example 3: DIALOG with SUBDIALOG
Declarative dialogs (DIALOG - at module level)
Understanding declarative dialogs
Syntax of the declarative DIALOG block
Declarative dialog programming steps
Using declarative dialogs
Structure of a declarative DIALOG block
The DEFINE clause
The MENU sub-dialog
The INPUT sub-dialog
The CONSTRUCT sub-dialog
The DISPLAY ARRAY sub-dialog
The INPUT ARRAY sub-dialog
Declarative DIALOG block configuration
INPUT ATTRIBUTES clause
DISPLAY ARRAY ATTRIBUTES clause
INPUT ARRAY ATTRIBUTES clause
CONSTRUCT ATTRIBUTES clause
Default actions created by a DIALOG block
DIALOG data blocks
ON FILL BUFFER block
ON EXPAND block
ON COLLAPSE block
DIALOG control blocks
Control block execution order with declarative dialogs
BEFORE FIELD block
AFTER FIELD block
ON CHANGE block
BEFORE INPUT block
AFTER INPUT block
BEFORE CONSTRUCT block
AFTER CONSTRUCT block
BEFORE DISPLAY block
AFTER DISPLAY block
BEFORE ROW block
ON ROW CHANGE block
AFTER ROW block
BEFORE INSERT block
AFTER INSERT block
BEFORE DELETE block
AFTER DELETE block
BEFORE MENU block
DIALOG interaction blocks
ON ACTION block
ON IDLE block
ON KEY block
ON TIMER block
ON APPEND block
ON INSERT block
ON UPDATE block
ON DELETE block
ON SELECTION CHANGE block
ON SORT block
ON DRAG_START block
ON DRAG_FINISHED block
ON DRAG_ENTER block
ON DRAG_OVER block
ON DROP block
DIALOG control instructions
NEXT FIELD instruction
CLEAR instruction in dialogs
DISPLAY TO / BY NAME instruction
CONTINUE DIALOG instruction
EXIT DIALOG instruction
ACCEPT DIALOG instruction
CANCEL DIALOG instruction
CANCEL DELETE instruction
CANCEL INSERT instruction
Examples
Example 1: Simple input
Example 2: Simple list
Parallel dialogs (START DIALOG)
Understanding parallel dialogs
Syntax of the START DIALOG instruction
Syntax of the TERMINATE DIALOG instruction
Parallel dialog programming steps
Using parallel dialogs
Examples
Example 1: Two independent record lists
User interface programming
Dialog programming basics
The model-view-controller paradigm
What are dialog controllers?
Dialog configuration with FGLPROFILE
The DIALOG control class
Dialog control functions
Refreshing the display when processing
User interruption handling
Get program control if user is inactive
Get program control on a regular (timed) basis
Front-End function calls
Input fields
Field data type
Binding variables to form fields
Input length of form fields
Field configuration and decoration
The buffered and unbuffered modes
Form field initialization
Input field modification flag
Reacting to field value changes
Immediate detection of user changes
Form-level validation rules
Form field deactivation
Identifying sub-dialogs in DIALOG
Defining the tabbing order
Which form item has the focus?
Giving the focus to a form element
Detection of focus changes
Enabling autocompletion
Filling a COMBOBOX item list
Field-anchored windows
Dialog actions
Action handling basics
Predefined actions
Understanding predefined actions
List of predefined actions
List of local actions (GDC only)
Default action views
Configuring actions
Action attributes context usage
Using attributes of action defaults
Dialog action handler attributes
Configuring default action views dynamically
Text attribute shows default action view
Defining keyboard accelerators for actions
Action attributes list
ACCELERATOR action attribute
ACCELERATOR2 action attribute
ACCELERATOR3 action attribute
ACCELERATOR4 action attribute
COMMENT action attribute
CONTEXTMENU action attribute
DEFAULTVIEW action attribute
DISCLOSUREINDICATOR action attribute
IMAGE action attribute
ROWBOUND action attribute
TEXT action attribute
VALIDATE action attribute
Defining action views in forms
Implementing dialog action handlers
Binding action views to action handlers
Data validation at action invocation
Enabling and disabling actions
Hiding and showing default action views
Sub-dialog actions in procedural DIALOG blocks
Field-specific actions (INFIELD clause)
Multilevel action conflicts
Action views with GBC
Action display in the context menu
Implementing the close action
Keyboard accelerator names
ON KEY Virtual keys
Accelerator key names
Accelerator key modifiers
Setting action key labels
Action views on mobile devices
Overview of action views on mobile devices
iOS navigation controller and toolbar pane
iOS default action views decoration
Android™ action bar
Android™ floating action button
Android™ default action views decoration
List dialogs
Understanding list dialogs
Array binding in list controllers
Controlling the number of rows
Handling the current row
Defining the action for a row choice
Field-level focus in DISPLAY ARRAY
Actions bound to the current row
Populating a DISPLAY ARRAY
Full list mode of DISPLAY ARRAY
Paged mode of DISPLAY ARRAY
INPUT ARRAY row modifications
Appending rows in INPUT ARRAY
DISPLAY ARRAY modification triggers
Cell color attributes
Multiple row selection
Table views
Understanding tables views
Defining tables in the layout
Binding tables to arrays in dialogs
Controlling table rendering
Displaying column images
Image columns firing actions
Built-in table features
Columns layout
List ordering
Find function
Keyboard seek
Reduce filter
Summary lines in tables
Defining the action for a row choice
Using tables on mobile devices
Unsupported table features
Two-column display
Full and Embedded list views
The DOUBLECLICK (tap) action
Rowbound actions
Close, accept and cancel actions
Row configuration on iOS devices
Examples
Example 1: Simple list view
Scrollgrid views
Understanding scrollgrid views
Defining scrollgrid in the layout
Binding scrollgrids to arrays in dialogs
Controlling scrollgrid rendering
Built-in scrollgrid features
Unsupported features
Supported features
Defining the action for a row choice
Using scrollgrid on mobile devices
Unsupported scrollgrid features
Supported scrollgrid features
Examples
Example 1: Simple scrollgrid view
Tree views
Understanding tree-views
Defining a TREE container
Defining the program array for tree-views
Filling the program array with rows
Controlling a tree-view with DISPLAY ARRAY
Modifying the tree during dialog execution
Using regular DISPLAY ARRAY control blocks
Dynamic filling of very large trees
Built-in sort and tree-views
Multi-row selection and tree-views
Drag and drop in tree-views
Tree-view predefined actions
Examples
Example 1: Static tree view (filled before dialog starts)
Example 2: Dynamic tree view (filled on demand)
Split views
Understanding split views
Creating split view windows
Parallel dialogs for split views
Refreshing a parallel dialog
One or two panes
Switching between panes
Navigator pane
Rendering an HBox as a splitview
Examples
Example 1: Single split view application
Example 2: Multiple split views with navigation bar
Example 3: Split view using an HBox
Drag & drop
Understanding drag & drop
Syntax of drag & drop interaction blocks
Default drag & drop operation
Control block execution order
Handle drag & drop data with MIME types
Examples
Example 1: Two lists side-by-side with drag & drop
Web components
Understanding web components
WEBCOMPONENT item type
Controlling the web component layout
Web component in a grid-based layout
Web component in stack-based layout
Web component HTML layout
Debugging a web component
Using a URL-based web component
Defining a URL-based web component in forms
Specifying the URL source of a web component
Controlling the URL web component in programs
Examples
Example 1: URL-based web component using Google maps
Using a gICAPI web component
HTML document and JavaScript for the gICAPI object
The gICAPI web component interface script
gICAPI.Action()
gICAPI.onData()
gICAPI.onFlushData()
gICAPI.onFocus()
gICAPI.onProperty()
gICAPI.onStateChanged()
gICAPI.SetData()
gICAPI.SetFocus()
Deploying the gICAPI web component files
Deploying gICAPI assets in direct mode
Deploying gICAPI assets with GAS
Deploying gICAPI assets on mobile
Defining a gICAPI web component in forms
Controlling the gICAPI web component in programs
Using image resources with the gICAPI web component
Examples
Example 1: Calling a JavaScript function
Example 2: Simple text input
Example 3: Application images
Example 4: Color picker
Built-in web components
Understanding built-in web components
Built-in web components reference
The fglrichtext web component
Examples
Example 1: Simple INPUT with fglrichtext
The fglgallery web component
Examples
Example 1: Simple fglgallery example using free pictures from the web
The fglsvgcanvas web component
Examples
Example 1: Analog clock with fglsvgcanvas
Example 2: Basic clickable SVG shapes with fglsvgcanvas
Dynamic Dialogs
Understanding dynamic dialogs
Create forms dynamically
Instantiate a dynamic dialog
Defining dialog triggers
Controlling field values
Ending dynamic dialogs
Dynamic multiple dialog
Using dynamic cursors
Additional features
Canvases
Understanding canvases
CANVAS item definition
Syntax of canvas nodes
Canvas drawing area
Canvas drawing functions
Examples
Example 1: Simple canvas
Start menus
Understanding start menus
Syntax of start menu files (.4sm)
Loading a start menu from an XML file
Creating the start menu dynamically
Rendering of a start menu
Examples
Example 1: Start menu in XML format
Example 2: Start menu created dynamically
Window containers (WCI)
Understanding the Window Container Interface
Configuration of WCI parent programs
Configuration of WCI child programs
Implement tabbed WCI containers
Reports
Understanding reports
XML output for reports
Writing an XML report driver and routine
Structure of XML report output
Conditional statements in XML output
Examples
Example 1: Nested XML report
The report driver
START REPORT
OUTPUT TO REPORT
FINISH REPORT
TERMINATE REPORT
The report routine
The report prototype
DEFINE section in REPORT
OUTPUT section in REPORT
ORDER BY section in REPORT
FORMAT section in REPORT
FORMAT EVERY ROW
FIRST PAGE HEADER
PAGE HEADER
PAGE TRAILER
BEFORE/AFTER GROUP OF
ON EVERY ROW
ON LAST ROW
Prohibited report routine statements
Two-pass reports
Report instructions
EXIT REPORT
PRINT
PRINTX
NEED
PAUSE
SKIP
Report operators
LINENO
PAGENO
SPACES
WORDWRAP
Report aggregate functions
COUNT
PERCENT
SUM
AVG
MIN
MAX
Report engine configuration
Programming tools
Command reference
fglrun
fglform
fgl2p
fglcomp
fgllink
fglmkmsg
fglmkext
fgldb
fgldbsch
fglmkstr
fglwsdl
fglrestful
fglpass
fglWrt
fglgar
fglgitformat
fglformatdiff
fpi
gmabuildtool
gmibuildtool
Compiling source files
Compiling form specification files (.per)
Compiling message files (.msg)
Compiling string resource files (.str)
Compiling program code files (.4gl)
Importing modules
Linking libraries
Linking programs
Using makefiles
42m module information
Source code edition
Choosing the correct locale
Avoid Tab characters in screen layouts
Configure VIM for Genero BDL
Source documentation
Understanding source code documentation
Prerequisites to produce documentation
Source documentation structure
Adding comments to sources
Commenting a module constant
Commenting a module variable
Commenting a module type
Commenting a function
Commenting a report
Commenting a module
Commenting a package
Commenting a project
Commenting globals
Run the documentation generator
Source preprocessor
Understanding the preprocessor
Compilers command line options
File inclusion
Conditional compilation
Simple macro definition
Function macro definition
Predefined macros
Stringification operator
Concatenation operator
Undefining a macro
Integrated debugger
Understanding the debugger
Prerequisites to run the debugger
Starting fglrun in debug mode
Attaching to a running program
Debugging on a mobile device
Stack frames in the debugger
Setting a breakpoint programmatically
Expressions in debugger commands
Debugger commands
backtrace / where
break
call
clear
continue
delete
detach
disable
display
down
echo
enable
finish
frame
help
ignore
info
list
next
output
print
ptype
quit
run
set
source
signal
step
tbreak
tty
undisplay
until
up
watch
whatis
Program profiler
Understanding the profiler
Syntax of the program profiler
Profiler output: Flat profile
Profiler output: Call graph
Example
Source code coverage
Understanding the code coverage tool
Syntax of the code coverage tool
Code coverage tool usage
Execution trace
Understanding the program execution trace
Syntax of the program execution trace
Using the program execution trace
Source code beautifier
Understanding the code beautifier tool
Syntax of the code beautifier tool
Code beautifier tool usage
Packaging web applications
Introducing the GAS and JGAS
Understanding packaging with GAS
Deploying applications on GAS
Packaging war files
Running applications from a war file
Examples
Logging options
Extending the language
The Java interface
Prerequisites and installation
Learn about Java and OOP
Java software requirements for FGL
How to set up Java
Platform-specific notes for the JVM
Getting started with the Java interface
Import a Java class
Define an object reference variable
Instantiate a Java class
Calling a method of a class
Calling a method of an object
Advanced programming
Using JVM options
Case sensitivity with Java
Method overloading in Java
Java objects as functions parameters and returns
Garbage collection of unused objects
Using the method return as an object
Ignorable return of Java methods
Static fields of Java classes
Mapping native and Java data types
Using the DATE type
Using the DATETIME type
Using the DECIMAL type
Using the TEXT type
Using the BYTE type
Using the INTERVAL type
Identifying Genero data types in Java code
Using Genero records
Formatting data in Java code
Character set mapping
Using Java arrays
Passing variable arguments (varargs)
The CAST operator
The INSTANCEOF operator
Java exception handling
Executing Java code with GMA
Standard Java and Android library usage
Implement Java user extensions in GMA
Implement Android™ activities in GMA
Packaging custom Java extensions for GMA
Custom GMA binary archive build
Examples
Example 1: Using the regex package
Example 2: Using the Apache POI framework
Example 3: Using Java on Android™
C-Extensions
Understanding C-Extensions
Header files for ESQL/C typedefs
Creating C-Extensions
Creating Informix® ESQL/C Extensions
The C interface file
Linking programs using C-Extensions
Loading C-Extensions at runtime
Runtime stack functions
Data types and structures
NULL handing
Calling C functions from programs
Calling program functions from C
Simple C-Extension example
Implementing C-Extensions for GMI
User-defined front calls
Implement front call modules for GDC
Implement front call modules for GMA
Implement front call modules for GMI
Implement front call modules for GBC
Web Components
Library reference
Built-in functions
Built-in functions
arg_val()
arr_count()
arr_curr()
downshift()
scr_line()
num_args()
err_get()
err_print()
err_quit()
errorlog()
fgl_buffertouched()
fgl_db_driver_type()
fgl_decimal_truncate()
fgl_decimal_sqrt()
fgl_decimal_exp()
fgl_decimal_logn()
fgl_decimal_power()
fgl_dialog_getbuffer()
fgl_dialog_setbuffer()
fgl_dialog_getfieldname()
fgl_dialog_infield()
fgl_dialog_setcursor()
fgl_dialog_setfieldorder()
fgl_dialog_setcurrline()
fgl_dialog_getbufferstart()
fgl_dialog_getbufferlength()
fgl_dialog_getcursor() / fgl_getcursor()
fgl_dialog_getkeylabel()
fgl_dialog_getselectionend()
fgl_dialog_setkeylabel()
fgl_dialog_setselection()
fgl_drawbox()
fgl_drawline()
fgl_eventloop()
fgl_getenv()
fgl_gethelp()
fgl_getpid()
fgl_getfile()
fgl_getkey()
fgl_getkeylabel()
fgl_getresource()
fgl_getversion()
fgl_getwin_height()
fgl_getwin_width()
fgl_getwin_x()
fgl_getwin_y()
fgl_keyval()
fgl_lastkey()
fgl_mblen()
fgl_putfile()
fgl_report_print_binary_file()
fgl_report_set_document_handler()
fgl_setkeylabel()
fgl_scr_size()
fgl_setsize()
fgl_settitle()
fgl_setenv()
fgl_set_arr_curr()
fgl_sqldebug()
fgl_system()
fgl_width()
fgl_window_getoption()
length()
set_count()
showhelp()
startlog()
upshift()
List of desupported built-in functions
The key code table
Utility modules
fgldialog: Common dialog functions
fgl_winbutton()
fgl_winmessage()
fgl_winprompt()
fgl_winquestion()
fgl_winwait()
fgldbutl: Database utility module
db_get_database_type()
db_get_last_serial()
db_get_sequence()
db_start_transaction()
db_finish_transaction()
db_is_transaction_started()
fglwinexec: Front-end dialogs module
winopendir()
winopenfile()
winsavefile()
winexec() MS Windows® FE Only!
winexecwait() MS Windows® FE Only!
winshellexec() MS Windows® FE Only!
VCard: VCF file format module
VCAddress type
VCName type
VCPerson type
format_person()
scan_address()
scan_email()
scan_name()
scan_person()
scan_phone()
fglgallery: Image gallery module
t_struct_value type
addImage()
clean()
create()
deleteImages()
destroy()
display()
finalize()
flush()
getImageCount()
getPath()
getTitle()
initialize()
setMultipleSelection()
setImageAspectRatio()
fglsvgcanvas: SVG drawing module
t_svg_rect type
SVGATT_ constants
animateTransform()
circle()
clean()
clipPath_rect()
color_shade()
color_tint()
create()
createChars()
createElement()
defs()
destroy()
display()
ellipse()
filter()
finalize()
g()
getBBox()
getItemid()
image()
initialize()
line()
linearGradient()
marker()
mask()
nl_to_tspan()
path()
pattern()
polygon()
polyline()
radialGradient()
rect()
removeElement()
setAttributes()
setCurrent()
setRootSVGAttributes()
stop()
styleAttributeList()
styleDefinition()
styleList()
svg()
text()
text_path()
text_tref()
title()
tspan()
url()
use()
getopt: Command line options module
Getopt module usage
GetoptOptions type
Getopt type
GetOpt constants
copyArguments()
displayUsage()
getMoreArgumentCount()
getMoreArgument()
getopt()
initDefault()
initialize()
invalidOptionSeen()
isEof()
isSuccess()
Built-in packages
BDL data types package
BYTE data type as class
BYTE data type methods
BYTE.readFile
BYTE.writeFile
STRING data type as class
STRING data type methods
STRING.append
STRING.equals
STRING.equalsIgnoreCase
STRING.getCharAt
STRING.getIndexOf
STRING.getLength
STRING.subString
STRING.toLowerCase
STRING.toUpperCase
STRING.trim
STRING.trimWhiteSpace
STRING.trimLeft
STRING.trimLeftWhiteSpace
STRING.trimRight
STRING.trimRightWhiteSpace
TEXT data type as class
TEXT data type methods
TEXT.getLength
TEXT.readFile
TEXT.writeFile
DYNAMIC ARRAY as class
DYNAMIC ARRAY methods
DYNAMIC ARRAY.appendElement
DYNAMIC ARRAY.clear
DYNAMIC ARRAY.copyTo
DYNAMIC ARRAY.deleteElement
DYNAMIC ARRAY.getLength
DYNAMIC ARRAY.insertElement
DYNAMIC ARRAY.search
DYNAMIC ARRAY.searchRange
DYNAMIC ARRAY.sort
DICTIONARY as class
DICTIONARY methods
DICTIONARY.clear
DICTIONARY.contains
DICTIONARY.copyTo
DICTIONARY.getLength
DICTIONARY.getKeys
DICTIONARY.remove
Java Array type as class
Java Array type methods
java-array-type
.create
java-array
.getLength
The base package
The Application class
base.Application methods
base.Application.getArgument
base.Application.getArgumentCount
base.Application.getFglDir
base.Application.getProgramDir
base.Application.getProgramName
base.Application.getResourceEntry
base.Application.getStackTrace
base.Application.isMobile
base.Application.reloadResources
The Channel class
base.Channel methods
base.Channel.create
base.Channel.close
base.Channel.dataAvailable
base.Channel.isEof
base.Channel.openClientSocket
base.Channel.openFile
base.Channel.openPipe
base.Channel.openServerSocket
base.Channel.read
base.Channel.readLine
base.Channel.readOctets
base.Channel.setDelimiter
base.Channel.write
base.Channel.writeLine
base.Channel.writeNoNL
Usage
Read and write record data
Read and write text lines
Line terminators on Windows and UNIX
Character string encoding
BYTE data serialization
Handle channel exceptions
Setup a TCP socket channel
Examples
Example 1: Using record-formatted data file
Example 2: Executing UNIX™ commands
Example 3: Reading lines from a text file
Example 4: Communicating with an HTTP server
Example 5: Writing to STDERR
The SqlHandle class
base.SqlHandle methods
base.SqlHandle.create
base.SqlHandle.close
base.SqlHandle.execute
base.SqlHandle.fetch
base.SqlHandle.fetchAbsolute
base.SqlHandle.fetchFirst
base.SqlHandle.fetchLast
base.SqlHandle.fetchPrevious
base.SqlHandle.fetchRelative
base.SqlHandle.flush
base.SqlHandle.getResultCount
base.SqlHandle.getResultName
base.SqlHandle.getResultType
base.SqlHandle.getResultValue
base.SqlHandle.open
base.SqlHandle.openScrollCursor
base.SqlHandle.prepare
base.SqlHandle.put
base.SqlHandle.setParameter
Usage
Examples
Example 1: SqlHandle with simple SQL
Example 2: SqlHandle with result set SQL
Example 3: SqlHandle with insert cursor
Example 4: SqlHandle with scroll cursor
The StringBuffer class
base.StringBuffer methods
base.StringBuffer.create
base.StringBuffer.append
base.StringBuffer.clear
base.StringBuffer.equals
base.StringBuffer.equalsIgnoreCase
base.StringBuffer.getCharAt
base.StringBuffer.getIndexOf
base.StringBuffer.getLength
base.StringBuffer.insertAt
base.StringBuffer.replace
base.StringBuffer.replaceAt
base.StringBuffer.subString
base.StringBuffer.toLowerCase
base.StringBuffer.toString
base.StringBuffer.toUpperCase
base.StringBuffer.trim
base.StringBuffer.trimWhiteSpace
base.StringBuffer.trimLeft
base.StringBuffer.trimLeftWhiteSpace
base.StringBuffer.trimRight
base.StringBuffer.trimRightWhiteSpace
Examples
Example 1: Add strings to a StringBuffer
Example 2: Modify a StringBuffer with a function
The StringTokenizer class
base.StringTokenizer methods
base.StringTokenizer.create
base.StringTokenizer.createExt
base.StringTokenizer.countTokens
base.StringTokenizer.hasMoreTokens
base.StringTokenizer.nextToken
Examples
Example 1: Split a directory path
Example 2: Escaped delimiters
Example 3: Empty tokens
The TypeInfo class
base.TypeInfo methods
base.TypeInfo.create()
base.TypeInfo.describe()
The MessageServer class
base.MessageServer methods
base.MessageServer.connect
base.MessageServer.create
base.MessageServer.listen
base.MessageServer.send
Examples
Example 1: Simple MessageServer usage
The ui package
The Interface class
ui.Interface methods
ui.Interface.frontCall
ui.Interface.filenameToURI
ui.Interface.getChildCount
ui.Interface.getChildInstances
ui.Interface.getContainer
ui.Interface.getDocument
ui.Interface.getFrontEndName
ui.Interface.getFrontEndVersion
ui.Interface.getImage
ui.Interface.getName
ui.Interface.getRootNode
ui.Interface.getText
ui.Interface.getType
ui.Interface.getUniversalClientName
ui.Interface.getUniversalClientVersion
ui.Interface.loadActionDefaults
ui.Interface.loadStartMenu
ui.Interface.loadStyles
ui.Interface.loadToolBar
ui.Interface.loadTopMenu
ui.Interface.refresh
ui.Interface.setContainer
ui.Interface.setImage
ui.Interface.setName
ui.Interface.setSize
ui.Interface.setText
ui.Interface.setType
Examples
Example 1: Get the type and version of the front-end
Example 2: Get the AUI root node and save it to a file in XML format
Example 3: Using the Window Container Interface
Example 4: Loading custom resources
The Window class
ui.Window methods
ui.Window.forName
ui.Window.createForm
ui.Window.getCurrent
ui.Window.getForm
ui.Window.getNode
ui.Window.findNode
ui.Window.getImage
ui.Window.getText
ui.Window.setImage
ui.Window.setText
Examples
Example 1: Get a window by name and change the title
Example 2: Get a the current form and hide a groupbox
The Form class
ui.Form methods
ui.Form.setDefaultInitializer
ui.Form.displayTo
ui.Form.ensureElementVisible
ui.Form.ensureFieldVisible
ui.Form.getNode
ui.Form.findNode
ui.Form.loadActionDefaults
ui.Form.loadToolBar
ui.Form.loadTopMenu
ui.Form.setElementComment
ui.Form.setElementHidden
ui.Form.setElementImage
ui.Form.setElementStyle
ui.Form.setElementText
ui.Form.setFieldComment
ui.Form.setFieldHidden
ui.Form.setFieldStyle
Usage
Identifying elements in ui.Form methods
Examples
Example 1: Implement a global form initialization function
Example 2: Hide form elements dynamically
Example 3: Change the title of table column headers
The Dialog class
ui.Dialog methods
ui.Dialog.createConstructByName
ui.Dialog.createDisplayArrayTo
ui.Dialog.createInputArrayFrom
ui.Dialog.createInputByName
ui.Dialog.createMultipleDialog
ui.Dialog.getCurrent
ui.Dialog.setDefaultUnbuffered
ui.Dialog.accept
ui.Dialog.addConstructByName
ui.Dialog.addDisplayArrayTo
ui.Dialog.addInputArrayFrom
ui.Dialog.addInputByName
ui.Dialog.addTrigger
ui.Dialog.appendRow
ui.Dialog.appendNode
ui.Dialog.arrayToVisualIndex
ui.Dialog.cancel
ui.Dialog.close
ui.Dialog.deleteAllRows
ui.Dialog.deleteNode
ui.Dialog.deleteRow
ui.Dialog.getArrayLength
ui.Dialog.getCurrentItem
ui.Dialog.getCurrentRow
ui.Dialog.getFieldBuffer
ui.Dialog.getFieldTouched
ui.Dialog.getFieldValue
ui.Dialog.getForm
ui.Dialog.getQueryFromField
ui.Dialog.getSortKey
ui.Dialog.insertNode
ui.Dialog.insertRow
ui.Dialog.isRowSelected
ui.Dialog.isSortReverse
ui.Dialog.nextEvent
ui.Dialog.nextField
ui.Dialog.selectionToString
ui.Dialog.setActionActive
ui.Dialog.setActionComment
ui.Dialog.setActionHidden
ui.Dialog.setActionImage
ui.Dialog.setActionText
ui.Dialog.setArrayAttributes
ui.Dialog.setArrayLength
ui.Dialog.setCellAttributes
ui.Dialog.setCompleterItems
ui.Dialog.setCurrentRow
ui.Dialog.setFieldActive
ui.Dialog.setFieldTouched
ui.Dialog.setFieldValue
ui.Dialog.setSelectionMode
ui.Dialog.setSelectionRange
ui.Dialog.validate
ui.Dialog.visualToArrayIndex
Usage
Referencing the current dialog
Passing a dialog reference to functions
Identifying actions in ui.Dialog methods
Identifying fields in ui.Dialog methods
Identifying screen-arrays in ui.Dialog methods
Field definition for Dynamic Dialogs
Examples
Example 1: Disable fields dynamically
Example 2: Get the form and hide fields
Example 3: Pass a dialog object to a function
Example 4: Set display attributes for cells
The ComboBox class
ui.ComboBox methods
ui.ComboBox.setDefaultInitializer
ui.ComboBox.forName
ui.ComboBox.addItem
ui.ComboBox.clear
ui.ComboBox.getColumnName
ui.ComboBox.getIndexOf
ui.ComboBox.getItemCount
ui.ComboBox.getItemName
ui.ComboBox.getItemText
ui.ComboBox.getTableName
ui.ComboBox.getTag
ui.ComboBox.getTextOf
ui.ComboBox.removeItem
Examples
Example Get a ComboBox form field view and fill the item list
Example Using the INITIALIZER attribute in the form file
The DragDrop class
ui.DragDrop methods
ui.DragDrop.addPossibleOperation
ui.DragDrop.dropInternal
ui.DragDrop.getBuffer
ui.DragDrop.getLocationParent
ui.DragDrop.getLocationRow
ui.DragDrop.getSelectedMimeType
ui.DragDrop.getOperation
ui.DragDrop.selectMimeType
ui.DragDrop.setBuffer
ui.DragDrop.setFeedback
ui.DragDrop.setMimeType
ui.DragDrop.setOperation
The om package
The DomDocument class
om.DomDocument methods
om.DomDocument.create
om.DomDocument.createFromString
om.DomDocument.createFromXmlFile
om.DomDocument.getDocumentElement
om.DomDocument.getElementById
om.DomDocument.createChars
om.DomDocument.createElement
om.DomDocument.createEntity
om.DomDocument.copy
om.DomDocument.removeElement
Examples
Example 1: Creating a DOM document
The DomNode class
om.DomNode methods
om.DomNode.appendChild
om.DomNode.createChild
om.DomNode.insertBefore
om.DomNode.loadXml
om.DomNode.parse
om.DomNode.getAttribute
om.DomNode.getAttributeInteger
om.DomNode.getAttributesCount
om.DomNode.getAttributeString
om.DomNode.getAttributeName
om.DomNode.getAttributeValue
om.DomNode.getChildByIndex
om.DomNode.getChildCount
om.DomNode.getFirstChild
om.DomNode.getId
om.DomNode.getLastChild
om.DomNode.getNext
om.DomNode.getParent
om.DomNode.getPrevious
om.DomNode.getTagName
om.DomNode.removeAttribute
om.DomNode.removeChild
om.DomNode.replaceChild
om.DomNode.selectByPath
om.DomNode.selectByTagName
om.DomNode.setAttribute
om.DomNode.toString
om.DomNode.write
om.DomNode.writeXml
Examples
Example 1: Creating a DOM tree
Example 2: Displaying a DOM tree recursively
Example 3: Writing a DOM tree to a SAX handler
The NodeList class
om.NodeList methods
om.NodeList.getLength
om.NodeList.item
Examples
Example 1: Search nodes by tag name
Example 2: Search nodes by XPath
The SaxAttributes class
om.SaxAttributes methods
om.SaxAttributes.addAttribute
om.SaxAttributes.copy
om.SaxAttributes.create
om.SaxAttributes.clear
om.SaxAttributes.getLength
om.SaxAttributes.getName
om.SaxAttributes.getValue
om.SaxAttributes.getValueByIndex
om.SaxAttributes.removeAttribute
om.SaxAttributes.setAttributes
Examples
Example 1: Displaying SAX attributes of an XML node
Example 2: Creating a SAX attributes object
The SaxDocumentHandler class
om.SaxDocumentHandler methods
om.SaxDocumentHandler.createForName
om.SaxDocumentHandler.characters
om.SaxDocumentHandler.endDocument
om.SaxDocumentHandler.endElement
om.SaxDocumentHandler.processingInstruction
om.SaxDocumentHandler.readXmlFile
om.SaxDocumentHandler.setIndent
om.SaxDocumentHandler.startDocument
om.SaxDocumentHandler.startElement
om.SaxDocumentHandler.skippedEntity
Examples
Example 1: Extracting phone numbers from a directory
Example 2: Producing an XML file with om.SaxDocumentHandler
The XmlReader class
om.XmlReader methods
om.XmlReader.createFileReader
om.XmlReader.getAttributes
om.XmlReader.getCharacters
om.XmlReader.getTagName
om.XmlReader.read
om.XmlReader.skippedEntity
Examples
Example 1: Parsing an XML file
The XmlWriter class
om.XmlWriter methods
om.XmlWriter.createChannelWriter
om.XmlWriter.createFileWriter
om.XmlWriter.createPipeWriter
om.XmlWriter.createSocketWriter
Examples
Example 1: Writing XML to a file
Built-in front calls
Built-in front calls summary
Standard front calls
cbAdd
cbClear
cbGet
cbPaste
cbSet
clearFileCache
execute
feInfo
getEnv
getWindowId
hardCopy
launchURL
mdClose
openDir
openFile
openFiles
playSound
saveFile
setReportFont
setReportPrinter
setWebComponentPath
shellExec
Web component front calls
call
frontCallAPIVersion
getTitle
Genero Desktop Client front calls
GDC Monitor Front Calls
update
Windows DDE Support
Using the WinDDE API
WINDDE API front calls
DDEConnect
DDEExecute
DDEFinish
DDEFinishAll
DDEError
DDEPeek
DDEPoke
WinDDE example
Windows™ COM Support
Using the WinCOM API
WINCOM API front calls
CreateInstance
CallMethod
GetProperty
SetProperty
GetError
ReleaseInstance
WinCOM examples
Wincom and Excel example
Wincom and Word example
Wincom and Outlook example
Wincom and Internet Explorer example
Windows Mail extension
WinMail API front calls
Init
Close
SetBody
SetSubject
AddTo
AddCC
AddBCC
AddAttachment
SendMailSMTP
SendMailMAPI
GetError
SetSmtp
SetFrom
WinMail examples
Mail using MAPI
Mail using SMTP server
Theme front calls
setTheme
getCurrentTheme
listThemes
Local storage front calls
setItem
getItem
removeItem
keys
clear
Genero Mobile common front calls
chooseContact
choosePhoto
chooseVideo
composeMail
composeSMS
connectivity
getGeolocation
getRemoteNotifications
importContact
isForeground
mobile.newContact
registerForRemoteNotifications
mobile.runOnServer
scanBarCode
takePhoto
takeVideo
unregisterFromRemoteNotifications
Genero Mobile Android™ front calls
askForPermission (Android™)
showAbout (Android™)
showSettings (Android™)
startActivity (Android™)
startActivityForResult (Android™)
Genero Mobile iOS front calls
getBadgeNumber (iOS)
setBadgeNumber (iOS)
Cordova plugin front calls
call
callWithoutWaiting
getAllCallbackData
getCallbackDataCount
getCallbackData
getPluginInfo
listPlugins
Extension packages
The util package
The util.Date class
util.Date methods
util.Date.parse
util.Date.isLeapYear
The util.Datetime class
util.Datetime methods
util.Datetime.format
util.Datetime.fromSecondsSinceEpoch
util.Datetime.getCurrentAsUTC
util.Datetime.parse
util.Datetime.toLocalTime
util.Datetime.toSecondsSinceEpoch
util.Datetime.toUTC
The util.Integer class
util.Integer methods
util.Integer.abs
util.Integer.and
util.Integer.andNot
util.Integer.clearBit
util.Integer.not
util.Integer.or
util.Integer.parseHexString
util.Integer.parseBinaryString
util.Integer.setBit
util.Integer.shiftLeft
util.Integer.shiftRight
util.Integer.testBit
util.Integer.toHexString
util.Integer.toBinaryString
util.Integer.xor
The util.Interval class
util.Interval methods
util.Interval.format
util.Interval.parse
The util.Strings class
util.Strings methods
util.Strings.base64Decode
util.Strings.base64Encode
util.Strings.base64DecodeToHexString
util.Strings.base64DecodeToString
util.Strings.base64EncodeFromHexString
util.Strings.base64EncodeFromString
util.Strings.urlDecode
util.Strings.urlEncode
The util.Math class
util.Math methods
util.Math.acos
util.Math.asin
util.Math.atan
util.Math.cos
util.Math.exp
util.Math.pi
util.Math.pow
util.Math.rand
util.Math.sin
util.Math.sqrt
util.Math.srand
util.Math.tan
util.Math.log
util.Math.toDegrees
util.Math.toRadians
The util.JSON class
util.JSON methods
util.JSON.format
util.JSON.parse
util.JSON.proposeType
util.JSON.stringify
util.JSON.stringifyOmitNulls
Examples
Example 1: Reading a JSON file
The util.JSONObject class
util.JSONObject methods
util.JSONObject.create
util.JSONObject.fromFGL
util.JSONObject.parse
util.JSONObject.get
util.JSONObject.getLength
util.JSONObject.getType
util.JSONObject.has
util.JSONObject.name
util.JSONObject.put
util.JSONObject.remove
util.JSONObject.toFGL
util.JSONObject.toString
The util.JSONArray class
util.JSONArray methods
util.JSONArray.create
util.JSONArray.fromFGL
util.JSONArray.parse
util.JSONArray.get
util.JSONArray.getLength
util.JSONArray.getType
util.JSONArray.put
util.JSONArray.remove
util.JSONArray.toFGL
util.JSONArray.toString
The os package
The os.Path class
os.Path methods
os.Path.atime
os.Path.baseName
os.Path.copy
os.Path.chDir
os.Path.chRwx
os.Path.chOwn
os.Path.chVolume
os.Path.delete
os.Path.dirClose
os.Path.dirFMask
os.Path.dirName
os.Path.dirNext
os.Path.dirOpen
os.Path.dirSort
os.Path.executable
os.Path.exists
os.Path.extension
os.Path.fullPath
os.Path.gid
os.Path.glob
os.Path.homeDir
os.Path.isDirectory
os.Path.isFile
os.Path.isHidden
os.Path.isLink
os.Path.isRoot
os.Path.join
os.Path.makeTempName
os.Path.mtime
os.Path.mkDir
os.Path.pathSeparator
os.Path.pathType
os.Path.pwd
os.Path.readable
os.Path.rename
os.Path.separator
os.Path.size
os.Path.rootDir
os.Path.rootName
os.Path.rwx
os.Path.type
os.Path.uid
os.Path.volumes
os.Path.writable
Examples
Example 1: Extracting the parts of a file name
Example 2: Browsing directories
The com package
Web services classes
The WebService class
WebServices methods
createFault
createHeader
CreateWebService
CreateStatefulWebService
generateWSDL
publishOperation
registerInputHTTPVariable
registerInputRequestHandler
registerOutputHTTPVariable
registerOutputRequestHandler
registerWSDLHandler
saveWSDL
setComment
setFeature
The WebOperation class
WebOperation methods
addFault
addInputHeader
addOutputHeader
CreateDOCStyle
CreateRPCStyle
CreateOneWayDOCStyle
CreateOneWayRPCStyle
initiateSession
setComment
setInputAction
setInputEncoded
setOutputAction
setOutputEncoded
The WebServiceEngine class
WebServiceEngine methods
Flush
GetHTTPServiceRequest
GetOption
HandleRequest
ProcessServices
RegisterService
RegisterRestService
SetFaultCode
SetFaultDetail
SetFaultString
SetOption
SetRestError
Start
WSDL generation options notes
WebServiceEngine options
Error codes of com.WebServicesEngine
The HTTPServiceRequest class
HTTPServiceRequest methods
addResponsePart
beginXmlRequest
beginXmlResponse
endXmlRequest
endXmlResponse
findRequestCookie
getMethod
getRequestVersion
getRequestHeader
getRequestHeaderCount
getRequestHeaderName
getRequestHeaderValue
getRequestMultipartType
getRequestPart
getRequestPartCount
getRequestPartFromID
getURL
getURLHost
getURLPath
getURLPort
getURLQuery
hasRequestKeepConnection
readDataRequest
readFileRequest
readFormEncodedRequest
readTextRequest
readXmlRequest
sendDataResponse
sendFileResponse
sendResponse
sendTextResponse
sendXmlResponse
setResponseCharset
setResponseCookies
setResponseHeader
setResponseMultipartType
setResponseVersion
Examples (HTTPServiceRequest)
HTTP classes
The HTTPRequest class
HTTPRequest methods
addPart
beginXmlRequest
clearAuthentication
clearHeaders
Create
doDataRequest
doFileRequest
doFormEncodedRequest
doRequest
doTextRequest
doXmlRequest
endXmlRequest
getAsyncResponse
getResponse
removeHeader
setAuthentication
setAutoCookies
setAutoReply
setCharset
setConnectionTimeOut
setHeader
setKeepConnection
setMaximumResponseLength
setMethod
setMultipartType
setProxy
setProxyAuthentication
setTimeOut
setVersion
Examples (HTTPRequest)
The HTTPResponse class
HTTPResponse methods
beginXmlResponse
endXmlResponse
getDataResponse
getFileResponse
getHeader
getHeaderCount
getHeaderName
getHeaderValue
getMultipartType
getPartCount
getPart
getPartFromID
getServerCookies
getStatusCode
getStatusDescription
getTextResponse
getXmlResponse
Examples (HTTPResponse)
The HTTPPart class
HttpPart methods
CreateFromString
CreateFromDomDocument
CreateFromData
CreateAttachment
clearHeaders
getAttachment
getContentAsData
getContentAsDomDocument
getContentAsString
getHeader
getHeaderCount
getHeaderName
getHeaderValue
removeHeader
setHeader
Examples (HttpPart)
Send form data in multipart
Send/receive files in multipart
TCP classes
The TCPRequest class
TCPRequest methods
beginXmlRequest
Create
doDataRequest
doRequest
doXmlRequest
doTextRequest
endXmlRequest
getResponse
getAsyncResponse
setTimeOut
setConnectionTimeOut
setKeepConnection
setMaximumResponseLength
The TCPResponse class
TCPResponse methods
beginXmlResponse
endXmlResponse
getDataResponse
getTextResponse
getXmlResponse
Helper classes
The Util class
Util methods
UniqueApplicationInstance
Specific classes
The APNS class
APNs SSL/TLS certificate
APNS methods
DecodeError
DecodeFeedback
EncodeMessage
APNs examples
APNs push provider
APNs feedback handler
The xml package
The Document Object Modeling (DOM) classes
The DomDocument class
xml.DomDocument methods
xml.DomDocument.appendDocumentNode
xml.DomDocument.clone
xml.DomDocument.create
xml.DomDocument.createAttribute
xml.DomDocument.createAttributeNS
xml.DomDocument.createCDATASection
xml.DomDocument.createComment
xml.DomDocument.createDocument
xml.DomDocument.createDocumentFragment
xml.DomDocument.createDocumentNS
xml.DomDocument.createDocumentType
xml.DomDocument.createElement
xml.DomDocument.createElementNS
xml.DomDocument.createEntityReference
xml.DomDocument.createNode
xml.DomDocument.createProcessingInstruction
xml.DomDocument.createTextNode
xml.DomDocument.declareNamespace
xml.DomDocument.getDocumentElement
xml.DomDocument.getDocumentNodesCount
xml.DomDocument.getDocumentNodeItem
xml.DomDocument.getElementById
xml.DomDocument.getElementsByTagName
xml.DomDocument.getElementsByTagNameNS
xml.DomDocument.getErrorDescription
xml.DomDocument.getErrorsCount
xml.DomDocument.getFirstDocumentNode
xml.DomDocument.getFeature
xml.DomDocument.getLastDocumentNode
xml.DomDocument.getXmlEncoding
xml.DomDocument.getXmlVersion
xml.DomDocument.importNode
xml.DomDocument.insertBeforeDocumentNode
xml.DomDocument.insertAfterDocumentNode
xml.DomDocument.isXmlStandalone
xml.DomDocument.load
xml.DomDocument.loadFromPipe
xml.DomDocument.loadFromString
xml.DomDocument.normalize
xml.DomDocument.prependDocumentNode
xml.DomDocument.removeDocumentNode
xml.DomDocument.save
xml.DomDocument.saveToPipe
xml.DomDocument.saveToString
xml.DomDocument.selectByXPath
xml.DomDocument.setFeature
xml.DomDocument.setXmlEncoding
xml.DomDocument.setXmlStandalone
xml.DomDocument.validate
xml.DomDocument.validateOneElement
Navigation methods usage examples
Node creation methods usage examples
HTML document usage example
Load and save methods usage examples
Cautions
DomDocument Features
Examples
Example 1 : Create a namespace qualified document with processing instructions
Example 2 : Validating a document against XML schemas or a DTD
The DomNode class
xml.DomNode methods
xml.DomNode.addPreviousSibling
xml.DomNode.addNextSibling
xml.DomNode.appendChild
xml.DomNode.appendChildElement
xml.DomNode.appendChildElementNS
xml.DomNode.clone
xml.DomNode.getAttribute
xml.DomNode.getAttributeNode
xml.DomNode.getAttributeNodeItem
xml.DomNode.getAttributeNodeNS
xml.DomNode.getAttributeNS
xml.DomNode.getAttributesCount
xml.DomNode.getChildNodeItem
xml.DomNode.getChildrenCount
xml.DomNode.getElementsByTagName
xml.DomNode.getElementsByTagNameNS
xml.DomNode.getFirstChild
xml.DomNode.getFirstChildElement
xml.DomNode.getLastChild
xml.DomNode.getLastChildElement
xml.DomNode.getLocalName
xml.DomNode.getNamespaceURI
xml.DomNode.getNextSibling
xml.DomNode.getNextSiblingElement
xml.DomNode.getNodeName
xml.DomNode.getNodeType
xml.DomNode.getNodeValue
xml.DomNode.getOwnerDocument
xml.DomNode.getParentNode
xml.DomNode.getPrefix
xml.DomNode.getPreviousSibling
xml.DomNode.getPreviousSiblingElement
xml.DomNode.hasAttribute
xml.DomNode.hasAttributeNS
xml.DomNode.hasAttributes
xml.DomNode.hasChildNodes
xml.DomNode.insertAfterChild
xml.DomNode.insertBeforeChild
xml.DomNode.isAttached
xml.DomNode.isDefaultNamespace
xml.DomNode.lookupNamespaceURI
xml.DomNode.lookupPrefix
xml.DomNode.prependChild
xml.DomNode.prependChildElement
xml.DomNode.prependChildElementNS
xml.DomNode.removeAllChildren
xml.DomNode.removeAttribute
xml.DomNode.removeAttributeNS
xml.DomNode.removeChild
xml.DomNode.replaceChild
xml.DomNode.selectByXPath
xml.DomNode.setAttribute
xml.DomNode.setAttributeNode
xml.DomNode.setAttributeNodeNS
xml.DomNode.setAttributeNS
xml.DomNode.setIdAttribute
xml.DomNode.setIdAttributeNS
xml.DomNode.setNodeValue
xml.DomNode.setPrefix
xml.DomNode.toString
DomNode types
Examples
Example Counting the number of nodes in an XML document
The DomNodeList class
xml.DomNodeList methods
xml.DomNodeList.getCount
xml.DomNodeList.getItem
The streaming API for XML (StAX) classes
The StaxWriter class
xml.StaxWriter methods
xml.StaxWriter.attribute
xml.StaxWriter.attributeNS
xml.StaxWriter.cdata
xml.StaxWriter.characters
xml.StaxWriter.close
xml.StaxWriter.comment
xml.StaxWriter.create
xml.StaxWriter.declareDefaultNamespace
xml.StaxWriter.declareNamespace
xml.StaxWriter.dtd
xml.StaxWriter.emptyElement
xml.StaxWriter.emptyElementNS
xml.StaxWriter.endDocument
xml.StaxWriter.endElement
xml.StaxWriter.entityRef
xml.StaxWriter.getFeature
xml.StaxWriter.processingInstruction
xml.StaxWriter.setDefaultNamespace
xml.StaxWriter.setFeature
xml.StaxWriter.setPrefix
xml.StaxWriter.startDocument
xml.StaxWriter.startElement
xml.StaxWriter.startElementNS
xml.StaxWriter.writeTo
xml.StaxWriter.writeToDocument
xml.StaxWriter.writeToPipe
xml.StaxWriter.writeToText
StaxWriter Features
Example
The StaxReader class
xml.StaxReader methods
xml.StaxReader.close
xml.StaxReader.Create
xml.StaxReader.findAttributeValue
xml.StaxReader.getAttributeCount
xml.StaxReader.getAttributeLocalName
xml.StaxReader.getAttributeNamespace
xml.StaxReader.getAttributePrefix
xml.StaxReader.getAttributeValue
xml.StaxReader.getEncoding
xml.StaxReader.getEventType
xml.StaxReader.getFeature
xml.StaxReader.getLocalName
xml.StaxReader.getName
xml.StaxReader.getNamespace
xml.StaxReader.getNamespaceCount
xml.StaxReader.getNamespacePrefix
xml.StaxReader.getNamespaceURI
xml.StaxReader.getPIData
xml.StaxReader.getPITarget
xml.StaxReader.getPrefix
xml.StaxReader.getText
xml.StaxReader.getVersion
xml.StaxReader.hasName
xml.StaxReader.hasNext
xml.StaxReader.hasText
xml.StaxReader.isCharacters
xml.StaxReader.isEmptyElement
xml.StaxReader.isEndElement
xml.StaxReader.isIgnorableWhitespace
xml.StaxReader.isStandalone
xml.StaxReader.isStartElement
xml.StaxReader.lookupNamespace
xml.StaxReader.lookupPrefix
xml.StaxReader.next
xml.StaxReader.nextSibling
xml.StaxReader.nextTag
xml.StaxReader.readFrom
xml.StaxReader.readFromDocument
xml.StaxReader.readFromPipe
xml.StaxReader.readFromText
xml.StaxReader.setFeature
xml.StaxReader.standaloneSet
StaxReader Features
StaxReader Event Types
Example
XML serialization classes
The Serializer class
xml.Serializer methods
xml.Serializer.CreateXmlSchemas
xml.Serializer.DomToStax
xml.Serializer.DomToVariable
xml.Serializer.getOption
xml.Serializer.OptimizedDomToVariable
xml.Serializer.OptimizedSoapSection5ToVariable
xml.Serializer.OptimizedStaxToVariable
xml.Serializer.OptimizedVariableToDom
xml.Serializer.OptimizedVariableToSoapSection5
xml.Serializer.OptimizedVariableToStax
xml.Serializer.SetOption
xml.Serializer.SoapSection5ToVariable
xml.Serializer.StaxToDom
xml.Serializer.StaxToVariable
xml.Serializer.VariableToDom
xml.Serializer.VariableToSoapSection5
xml.Serializer.VariableToStax
Serialization option flags
XML security classes
The CryptoKey class
CryptoKey methods
compareTo
computeKey
Create
CreateDerivedKey
CreateFromNode
deriveKey
generateKey
getFeature
getSHA1
getSize
getType
getUrl
getUsage
loadBIN
loadDER
loadFromString
loadPEM
loadPrivate
loadPublic
loadPublicFromString
savePrivate
savePublic
savePublicToString
saveToString
setFeature
setKey
Supported kind of keys
Derived keys
CryptoKey Features
Examples
Loading an asymmetric RSA key
Generating a symmetric AES256 key
Setting a HMAC key
Deriving a HMAC key
Computing the shared secret with Diffie-Hellman
The CryptoX509 class
CryptoX509 methods
Create
CreateFromNode
createPublicKey
getCount
getFeature
getIdentifier
getThumbprintSHA1
load
loadDER
loadFromString
loadPEM
save
saveToString
setFeature
CryptoX509 Features
Examples
Loading a certificate from a PEM file
Creating a public key for signature verification from a certificate
Saving the subjectName of a certificate in XML
The Signature class
Signature methods
appendObjectData
appendReferenceTransformation
compute
Create
CreateFromNode
createObject
createReference
getCanonicalization
getDocument
getID
getObjectCount
getObjectId
getReferenceCount
getReferenceDigest
getReferenceID
getReferenceTransformation
getReferenceTransformationCount
getReferenceURI
getSignatureMethod
getType
RetrieveObjectDataListFromSignatureNode
setCanonicalization
setCertificate
setID
setKey
setObjectID
setReferenceID
signString
verify
verifyString
XML Signature concepts
Sign and verify with a common shared HMAC key
Sign with the originator private RSA or DSA key, and verify with the originator public RSA or DSA key
Sign with the originator private RSA or DSA key, and verify with a RSA or DSA retrieval method
Sign with the originator private RSA or DSA key, and verify with the originator X509 certificate associated to the private RSA or DSA key
Sign with the originator private RSA or DSA key, and verify with trusted X509 certificates
Sign with the originator private RSA or DSA key, and verify with a X509 certificate retrieval method and trusted X509 certificates
Sign with a named key and verify using the keystore
Digest identifier
Transformation identifier
Examples
Create a detached signature using a HMAC key
Verify a detached signature using a HMAC key
Create an enveloping signature using a DSA key
Verify an enveloping signature using a X509 certificate
Create an enveloped signature using a RSA key
Verify an enveloped signature using a RSA key
Sample: XML and signed documents
XML document (unsigned)
XML document (signed with HMAC key)
XML document (signed with DSA key)
XML document (signed with RSA key)
The Encryption class
Encryption methods
Create
decryptElement
decryptElementContent
decryptElementContentDetached
decryptElementDetached
decryptKey
DecryptString
encryptElement
encryptElementContent
encryptElementContentDetached
encryptElementDetached
encryptKey
EncryptString
getEmbeddedKey
RSADecrypt
RSAEncrypt
setCertificate
setKey
setKeyEncryptionKey
Examples
Encrypt a XML node with a symmetric AES128 key
Decrypt a XML node with a symmetric AES128 key
Encrypt a XML node with a generated symmetric key protected with the public RSA key within a X509 certificate
Decrypt a XML node encrypted with a symmetric key protected with a private RSA key
The KeyStore class
KeyStore methods
AddCertificate
AddKey
AddTrustedCertificate
XML transformation classes
The XSLTtransformer class
XSLTtransformer methods
clearParameters
CreateFromDocument
doTransform
getErrorDescription
getErrorsCount
setParameter
getParameter
Example
OM to XML Migration
OM - XML Mapping
The security package
The RandomGenerator class
RandomGenerator methods
CreateRandomNumber
CreateRandomString
CreateUUIDString
The Base64 class
Base64 methods
FromByte
FromHexBinary
FromString
FromStringWithCharset
LoadBinary
SaveBinary
ToHexBinary
ToByte
ToString
ToStringWithCharset
Xor
The HexBinary class
HexBinary methods
FromBase64
FromByte
FromString
FromStringWithCharset
LoadBinary
SaveBinary
ToBase64
ToByte
ToString
ToStringWithCharset
Xor
The Digest class
Digest methods
AddData
AddBase64Data
AddHexBinaryData
AddStringData
AddStringDataWithCharset
CreateDigest
CreateDigestString
DoBase64Digest
DoHexBinaryDigest
Example
The PBKDF2 class
PBKDF2 methods
GenerateKey
CheckKey
PBKDF2 example
The BCrypt class
BCrypt methods
GenerateSalt
HashPassword
CheckPassword
BCrypt example
File extensions
Genero BDL errors
Web services
General
Introduction to Web services
Service Oriented Architecture (SOA)
Migrating to SOA and Web services
Planning a Web service
Genero Web Services extension
Web services standards
XML
JSON
XML schema
SOAP
REST
WSDL
HTTP
Web services style options
GWS demos and examples
Debugging
Platform-specific notes
Web Services on IBM® AIX®
Web Services on GMI (iOS)
Web Services on GMA (Android™)
Known issues
Legal Notices
Concepts
Web Services APIs
SOAP Web services APIs
REST Web services APIs
SOAP features
SOAP 1.1 and 1.2
SOAP Fault
Server side
Client side
Stateful SOAP Web services
Concept
WS-Addressing 1.0 stateful services
Server side
Step 1: Declare a W3CEndpointReference record
Step 2: Create a stateful WS-Addressing enabled Web service
Step 3: Publish a Web service operation
Step 4: Create the BDL session initiator function
Step 5: Restore the session
Client side
Step 1: Generate the client stub
Step 2: Create the MAIN application
Step 3: Instantiate a new session
Step 4: Call any web service operation
Stateful services based on HTTP cookies
Server side
Step 1: Declare a BDL simple variable
Step 2: Create a stateful Web service
Step 3: Publish a Web service operation
Step 4: Create the BDL session initiator function
Step 5: Restore the session
Step 6: Deployment recommendation
Client side
Step 1: Generate the client stub
Step 2: Create the MAIN application
Step 3: Instantiate a new session
Step 4: Call any Web service operation
Step 5: Troubleshooting
Encryption, BASE64 and password agent with fglpass tool
The fglpass tool
Encrypt password in FGLPROFILE file
Encrypt password for Windows key store
Use the password agent
Encrypt a password from RSA key
Decrypt a password from BASE64
Encode a file in BASE64 form
Decode a file encoded in BASE64 form
Data compression in GWS
GWS uses zlib to compress data
HTTP compression in SOAP Web services
Compression in a SOAP Web services client
Compression in a SOAP Web services server
HTTP compression in REST Web services
Compression in a REST Web services client
Compression in a REST Web services server
SOAP multipart style requests in GWS
MTOM
swaRef
Security
Encryption and authentication
OpenSSL requirements
Accessing secured services
HTTPS configuration
Configure a WS client to access an HTTPS server
Create the client certificate
Configure for the client certificate
Configure for the certificate authority list
Add configuration entries in your FGLPROFILE file
Enable OCSP
Troubleshoot certificate issues
Error: Peer certificate is issued by a company not in our CA list
Missing certificates
Certificates in practice
The OpenSSL (openssl) tool
Create a root certificate authority
Create a certificate authority
Create a certificate
Create a certificate authority list
Import a certificate and its private key into the Windows® key store
Import a certificate authority into the Windows® key store
View a certificate
Examining certificates
Check the server certificate using FireFox
Check the server certificate using Internet Explorer
Selecting the certificate to add
Troubleshoot common issues
HTTP 401 error message
The Diffie-Hellman key agreement algorithm
SOAP Web Services
Writing a Web Services client application
Steps to write a WS client
Obtaining the WSDL information
Calling a web service
Step 1: Import the COM library of the GWS package
Step 2: Specify the globals file
Step 3: Write the MAIN program block
Setting a time period for the response
Handling GWS server errors
Compiling the client application
Change WS client behavior at runtime
Global Endpoint type definition
WS-Addressing 1.0 Global Endpoint type definition
Change server location
Change the HTTP protocol version
Set an HTTP cookie
Set the connection timeout for a service
Set the read and write timeout for a service
Access HTTP request and response headers for a service
WS client stubs and handlers
Generating stub files for a GWS Client
Handling GWS server errors
Global Endpoint user-defined type definition
The generated functions
The generated callback handlers
Handler definition
Example output
Multipart in the client stub
Using the generated functions
Use logical names for service locations
Configure a WS client to access an HTTPS server
Create the client certificate
Configure for the client certificate
Configure for the certificate authority list
Add configuration entries in your FGLPROFILE file
Configure a WS client to connect via an HTTP Proxy
Configure a WS client to use IPv6
Authenticate the WS client to a server
Authenticate the WS client to a proxy
Writing a Web Services server application
Writing a Web services server function
Define the input parameters
Define the output parameters
Write the BDL function
Create and publish the Web services operation
WS server stubs and handlers
Generating files for a GWS server
Server handlers
Example output
Writing your functions
Writing a Web server application
Including the web services library
Example 1: Writing the entire server application
Step 1: Define input and output records
Step 2: Write a BDL function for each service operation
Step 3: Create the service and operations
Step 4: Register the service
Step 5: Start the GWS server and process requests
Example 2: Writing a server using third-party WSDL (the fglwsdl tool)
Step 1: Get the WSDL description and generate files
Step 2: Write a BDL function for your service operation
Step 3: Create service, start server and process requests
Enabling MTOM on the server side
Compiling GWS server applications
Testing the GWS service in stand-alone mode
Configuring the GAS for the GWS Application
Making the GWS service available
Get HTTP headers information at WS server side
Choosing a web services style
How Do I ... ?
Fix Genero 2.10 to 2.11 WSDL generation issue
How to handle WS security
Server side
Client side
SOAP security standards
Security bindings
SOAP message security options
SignedParts
EncryptedParts
Useful links
How to migrate I4GL web service to Genero
Migrate an I4GL web service provider to Genero
Step 1: Use the I4GL function and the I4GL.4cf configuration file
Step 2: Create a BDL RECORD for the input parameters
Step 3: Create a BDL RECORD for the output parameters
Step 4: Create a BDL wrapper function
Step 5: Publish the wrapper function as a Genero web service
Step 6: Create the server
Step 7: Configure the database
Step 8: Compile and run the Genero service
Migrate an I4GL web service consumer to Genero
Step 1: Generate the Genero web service stub from an I4GL WSDL
Step 2: Modify the Genero .inc stubs to fix wrong I4GL WSDL
Step 3: Include the generated stub in your I4GL application
Step 4: Modify the I4GL web service function call
Step 5: Handle Genero Web Services errors
Step 6: Compile and run the Genero client
Standalone Axis server is buggy
REST Web services
Designing REST Web services
RESTful Web services (high-level framework)
Code a RESTful server application
Get started
Define functions in a module
Define your resource operations
Get resource data with WSGet
Create a resource with WSPost
Update a resource with WSPut
Delete a resource with WSDelete
Set resource path with WSParam and WSPath
Set query, header, or cookie parameters
Set a request body
Set a response body and header
Retrieve HTTP headers
Handling file attachments and data transfer
Attach files with WSAttachment and WSMedia
Download file in response
Upload file in request
Transfer data in large objects
Download large object in response body
Upload large object in request body
Set data format with WSMedia
Customize data output
Multipart requests or responses
Download file and data (response)
Upload file and data (request)
Handling application level errors
Handling expected errors
Handling unexpected errors
Handling security
Set security with WSScope
Provide service information
Publish a REST service
Generate service description
REST API versioning
Set version with WSPath
Setting MIME type at runtime
Code a RESTful client application
Getting the service information
Get OpenAPI specification of non-secure service
Get OpenAPI specification of secure service
Troubleshooting
Calling a web service function
Write the MAIN program code block
Access to secure Web service
Code to access secure service
Call the stub functions
Handle REST server errors
Troubleshooting
Change REST client behavior at runtime
Global Endpoint type definition
Set server endpoint
Reference
REST function syntax with RESTful attributes
Using RESTful attributes
HTTP verbs and attributes
High-level RESTful Web service attributes
Attributes set at the module level
WSInfo
WSError
WSContext
WSScope (module)
Attributes set at the function level
HTTP operation attributes (Verbs)
WSDelete
WSGet
WSPost
WSPut
URL path attributes
WSPath
Error handling attributes
WSThrows
WSRetCode
Security handling attributes
WSScope (function)
Attributes set on parameters and returns
Attributes set on input parameters only
WSParam
WSCookie
WSQuery
Attributes set on both input and output
WSHeader
WSAttachment
Attributes related to function parameters
WSMedia
WSDescription
WSName
WSOptional
Supported media types
REST limitations (high-level APIs)
RESTful Web services (low-level APIs)
Writing a Web services client application
Step 1: Obtain information about resources
Step 2: Import extension packages (com, xml, util)
Step 3: Define the records
Step 4: Build the HTTP request
Step 5: Process the HTTP response
Configure a WS client to access an HTTPS server
Create the client certificate
Configure for the client certificate
Configure for the certificate authority list
Add configuration entries in your FGLPROFILE file
Configure a WS client to connect via an HTTP Proxy
Configure a WS client to use IPv6
Authenticate the WS client to a server
Authenticate the WS client to a proxy
Writing a Web Services server application
Step 1: Import extension packages
Step 2: Listen for requests
Step 3: Parse the request
Step 4: Process the request
Step 5: Send response
Step 6: Provide information about your service
The RESTful calculator demo source
Calculator server source
Calculator client source
Comparing the client to the server
How Do I ... ?
Call Java APIs from Genero in a SOA environment
Recommendation
Prerequisites
Using the barcode library
Calling Java from Genero
Step 1: Write a new java class
Step 2: Transform the Java class in a Web service
Step 3: Start the service
Step 4: Generate BDL stub to access the Java library
Step 5: Modify your BDL application
Example program
Conclusion
Call .NET APIs from Genero in a SOA environment
Prerequisites
Using the barcode library
Calling .NET from Genero
Step 1: Create an ASP.NET Web Service Application
Step 2: Rename the generated files
Step 3: Add the barcode library as a reference
Step 4: Add the buildImage method
Step 5: Publish the service
Step 6: Generate .4gl stub to access the .NET library
Step 7: Modify your BDL application
Example BDL program
Conclusion
Compute a hash value from a BDL string
Deploy a Web Service
Web services server program deployment
Configuring the Apache Web server for HTTPS
Step 1: Create the root certificate authority
Step 2: Create the server's certificate and private key
Step 3: Create the server's certificate authority list
Step 4: Register the server as a Web service in the GAS
Step 5: Configure Apache for HTTPS
Step 6 : Configure Apache for HTTP basic authentication
Reference
Web Services FGLPROFILE configuration
FGLPROFILE entries for Web Services
HTTPS and password encryption
Basic or digest HTTP authentication
Proxy configuration
IPv6 configuration
Server configuration
XML configuration
HTTP configuration
Examples
Windows® BAT script for private key password
UNIX™ shell script for private key password
FGLPROFILE: HTTP(S) Proxy Authentication
FGLPROFILE: XML cryptography
FGLPROFILE: Server URL patterns
XML to BDL serialization options
WSHelper library
WSHelper variables and records
WSHelper APIs
FindQueryStringValue
SplitQueryString
SplitUrl
OAuthAPI library
Overview
Authenticate with GAS
Authenticate without GAS
Authenticate a service to a service
OAuthAPI variables and records
OAuthAPI APIs
Initialization functions
Init
InitService
Post-initialization functions
GetOpenIDMetadata
ID token functions
GetIDPIssuer
GetIDSubject
GetIDScopes
Access token functions
GetMyAccessToken
Authorization request functions
CreateHTTPAuthorizationRequest
RetryHTTPRequest
Helper functions
RetrievePasswordToken
FetchOpenIDMetadata
ExtractTokenFromHTTPRequest
RetrieveServiceToken
Examples
OAuth access without GAS
Attributes to customize XML serialization
BDL to/from XML type mappings
Default BDL/XML mapping
Type mapping attributes
XSDAnySimpleType
XSDAnyType
XSDAnyURI
XSDBase64binary
XSDBoolean
XSDByte
XSDDate
XSDDateTime
XSDDecimal
XSDDouble
XSDDuration
XSDEntities
XSDEntity
XSDFloat
XSDGDay
XSDGMonth
XSDGMonthDay
XSDGYear
XSDGYearMonth
XSDHexBinary
XSDID
XSDIDREF
XSDIDREFS
XSDInt
XSDInteger
XSDLanguage
XSDLong
XSDNCName
XSDName
XSDNegativeInteger
XSDNMTOKEN
XSDNMTOKENS
XSDNonNegativeInteger
XSDNonPositiveInteger
XSDNormalizedString
XSDnotation
XSDPositiveInteger
XSDQName
XSDShort
XSDString
XSDTime
XSDToken
XSDUnsignedByte
XSDUnsignedInt
XSDUnsignedLong
XSDUnsignedShort
XML facet constraint attributes
XSDLength
XSDMinLength
XSDMaxLength
XSDEnumeration
XSDWhiteSpace
XSDPattern
XSDMinInclusive
XSDMaxInclusive
XSDMinExclusive
XSDMaxExclusive
XSDTotalDigits
XSDFractionDigits
Customizing XML serialization
XMLOptional
XMLNillable
XMLElement (Optional)
XMLElementNillable
XMLAttribute
XMLBase
XMLALL
XMLChoice
XMLSequence (Optional)
XMLSimpleContent
XSComplexType
XMLList
XMLSelector
XMLAny
XMLAnyAttribute
XMLName
XMLNamespace
XMLType
XMLTypenamespace
XSTypename
XSTypenamespace
XMLElementNamespace
XMLAttributeNamespace
XMLOptimizedContent
Serialize XML from a dynamic array
Error handling in GWS calls (STATUS)
Interruption handling in GWS calls (INT_FLAG)
Server API functions - version 1.3 only
fgl_ws_server_setNamespace() (version 1.3)
fgl_ws_server_start() (version 1.3)
fgl_ws_server_publishFunction() (version 1.3)
fgl_ws_server_generateWSDL() (version 1.3)
fgl_ws_server_process() (version 1.3)
fgl_ws_server_setFault() (version 1.3)
fgl_ws_server_getFault() (version 1.3)
Configuration API functions - version 1.3 only
fgl_ws_setOption()
fgl_ws_getOption()
Option flags
WSDL generation option notes
Using fglwsdl to generate code from WSDL or XSD schemas
Generate TYPE definitions from global XML elements or attributes
Mobile applications
Types of Genero Mobile apps
Mobile development mode
Genero mobile development client for Android™
Genero mobile development client for iOS
Language limitations
Environment variables
App localization
File management
Handling files on Android™ devices
Handling files on iOS devices
App execution
Mobile app execution modes
Background/foreground modes
App user interface
Images and icons
Action rendering
Toolbar rendering
Topmenu rendering
Keyboard type
List views
Split views
Front call support
Color and theming
Screen orientation
Decorate iOS UI elements
Database support on mobile devices
Using SQLite database in mobile apps
Accessing device functions
Web Services on mobile devices
Debugging a mobile app
Deploying mobile apps
Deploying mobile apps on Android™ devices
Directory structure for GMA apps
Building Android™ apps with Genero
gmabuildtool
Deploying mobile apps on iOS devices
Directory structure for GMI apps
Building iOS apps with Genero
gmibuildtool
Running mobile apps on an application server
Push notifications
Firebase Cloud Messaging (FCM)
Apple Push Notification Service (APNs)
Implementing a token maintainer
Handling notifications in the mobile app
Cordova plugins
Understanding Cordova plugins
Installing Cordova plugins
Using a Cordova plugin API
Embed Cordova plugins in a GMA app
Embed Cordova plugins in a GMI app
Copyrights and Trademarks
Your browser does not support iframes.