Genero Business Development Language User Guide 4.01

Content
Search Results
Index
Loading, please wait ...

Loading

  • Genero BDL User Guide
  • What's new in 4.01
  • 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 application sources
        • Deploying application 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
      • IBM® AIX® platform notes
      • Apple® macOS® platform notes
      • Microsoft™ Windows® platform notes
      • SUSE® Linux Enterprise platform notes
      • Debian/Ubuntu Linux platform notes
      • Red Hat® Enterprise Linux® / CentOS platform notes
      • Web Services platform specific 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 4.01 new features
      • BDL 4.00 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 4.01 upgrade guide
        • Front-End version checking
        • Web Services changes
        • Database drivers changes
        • Presentation styles changes
        • Genero Mobile for Android™ (GMA) 4.01 changes
        • Genero Mobile for iOS (GMI) 4.01 changes
      • BDL 4.00 upgrade guide
        • Licensing tools requirements
        • Universal Rendering as standard
        • Removal of Windows Container Interface (WCI)
        • Removal of parallel dialogs / splitviews
        • Web Services changes
        • Genero Mobile for Android™ (GMA) 4.00 changes
        • Genero Mobile for iOS (GMI) 4.00 changes
        • Mixed definitions
        • Record usage enhancements
        • Method chaining enhancements
        • Presentation styles changes
        • Front calls changes
        • Web components changes
        • Database drivers changes
        • ORACLE® INTERVAL types
        • SQL Server UTF-8 support
        • SAP HANA® character string types
        • Removal of AUI protocol compression
        • Command tools changes
        • FGLWRTUMASK removal
      • 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
        • Front calls changes
        • 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
        • ON KEY / COMMAND vs ON ACTION
        • TTY attributes alternatives
        • Moving screen array rows with SCROLL
        • 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
  • 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
        • FGLWSDEBUG
        • GMIDIR
        • INFORMIXTERM
    • Front-end connection
    • Database server connections
  • Language basics
    • Syntax features
      • Lettercase insensitivity
      • Whitespace separators
      • String delimiters
      • 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()
          • IN()
        • 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 (:=)
          • Addition Assignment (+=)
          • Subtraction Assignment (-=)
          • Multiplication Assignment (*=)
          • Division Assignment (/=)
          • Concatenation Assignment (||=)
          • Append 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
      • VAR
      • Primitive type specification
      • Variable attributes
      • Variable initializers
      • Declaration context
      • Structured variables
      • Database column types
      • User defined types
      • Variable default values
      • 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 attributes
      • Record initializers
      • Accessing record members
      • Copying records
      • Comparing records
      • Records and functions
      • 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 attributes
      • Array initializers
      • 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 attributes
      • Dictionary initializers
      • Dictionary in action
      • Dictionary methods
      • Examples
        • Example 1: Simple DICTIONARY usage
    • Types
      • Understanding type definition
      • TYPE
      • Using types in programs
      • Anonymous types
      • 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
      • Function attributes
      • Scope of a function
      • Local symbol definition
      • Calling functions
      • Function parameters
      • Returning values
      • Function references
      • FUNCTION func-spec
      • Methods
      • 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 structure
      • Modules and packages
      • Workflow of a program
      • Content of a .4gl 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 filename
        • 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
      • Importing FGL modules
        • IMPORT FGL
        • PACKAGE
        • Building projects with IMPORT FGL
        • Organizing modules in packages
        • Auto-compilation of imported modules
        • Circular module references
        • Identifying modules to be imported
        • Scope of module symbols (PRIVATE/PUBLIC)
        • Using [package.]module prefix
        • Defining aliases for imported modules
        • Mixing IMPORT FGL and .42r linking
      • IMPORT JAVA
      • IMPORT (C-Extension)
    • 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
      • Various type specification
    • 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
    • Reflection
  • 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
        • The BOOLEAN data type
        • 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
        • String concatenation operators in SQL
        • 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
        • Purpose of the IBM® DB2® SQL guide
        • 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
          • SQL types mapping: IBM® DB2® LUW
          • 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
          • SQL table definition
          • 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 Performance Server®
        • Purpose of the IBM® Netezza Performance Server® SQL guide
        • 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
          • SQL types mapping: IBM® 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
          • SQL table definition
          • 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
        • Purpose of the Microsoft™ SQL Server SQL guide
        • Installation (Runtime Configuration)
          • Install Microsoft™ SQL Server and create a database - database configuration/design tasks
          • Prepare the runtime environment - connecting to the database
            • Microsoft ODBC for SQL Server
            • Easysoft ODBC for SQL Server
            • FreeTDS ODBC for SQL Server
        • Database concepts
          • Database concepts
          • Concurrency management
          • Transactions handling
          • Database users
          • Setting privileges
        • Data dictionary
          • SQL types mapping: 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
          • SQL table definition
          • 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
        • Purpose of the Oracle® MySQL / MariaDB SQL guide
        • 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
          • SQL types mapping: Oracle® 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
          • SQL table definition
          • 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
          • String concatenation operator
        • 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
        • Purpose of the Oracle® SQL guide
        • 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
          • SQL types mapping: Oracle® database
          • 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
          • SQL table definition
          • 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
        • Purpose of the PostgreSQL SQL guide
        • 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
          • SQL types mapping: 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
          • SQL table definition
          • 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
        • Purpose of the SQLite SQL guide
        • 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
          • SQL types mapping: 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
          • SQL table definition
          • 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®
        • Purpose of the SAP HANA® SQL guide
        • 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
          • SQL types mapping: 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
          • SQL table definition
          • 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 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
        • Front-end protocol errors
        • Debugging the front-end protocol
        • Front-end protocol logging
        • GUI log events
        • 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
      • Form rendering
        • Form rendering basics
        • Character encoding in .per
        • Responsive Layout
          • Understanding Responsive Layout
          • Layout structure for responsive
          • Horizontal stretching
          • Hiding form elements
          • HBOX/VBOX orientation
          • Horizontal box splitting
          • Adapting to viewport changes
        • Grid-based layout
          • Packed and unpacked grids
          • Automatic HBox/VBox with splitter
          • 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
        • Front-end stored settings
      • Windows and forms
        • Understanding windows and forms
        • The window concept
        • The form concept
        • Position and size of a window
        • Configuring windows with styles
        • Defining the window title
        • Defining the window icon
        • Containers for program windows
        • Field-anchored windows
        • Instructions for windows and forms
          • OPEN WINDOW
            • OPEN WINDOW attributes
            • WITH FORM clause
          • CLOSE WINDOW
          • CURRENT WINDOW
          • CLEAR WINDOW
          • OPEN FORM
          • DISPLAY FORM
          • CLOSE FORM
          • CLEAR SCREEN
          • DISPLAY AT
      • Using images
        • Image handling basics
        • Controlling the image layout
        • Providing the image resource
        • Static images
        • Runtime images
      • Accessibility guidelines
        • Keyboard access
        • 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
          • Fonts
            • Font families
            • Font sizes
            • Font styles
            • Font weights
        • Style attributes reference
          • Style attributes common to all elements
          • Action/MenuAction style attributes
          • Button style attributes
          • ButtonEdit style attributes
          • CheckBox style attributes
          • DateEdit style attributes
          • DateTimeEdit style attributes
          • Folder style attributes
          • Group style attributes
          • HBox style attributes
          • Image style attributes
          • Label style attributes
          • Message style attributes
          • ProgressBar style attributes
          • ScrollGrid style attributes
          • Table style attributes
          • Tree style attributes
          • TextEdit style attributes
          • ToolBar style attributes
          • UserInterface style attributes
          • VBox 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
        • 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
            • 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
            • 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
          • AUTOHIDE attribute
          • AUTOSCALE attribute
          • AUTONEXT attribute
          • BUTTONTEXTHIDDEN attribute
          • CENTURY attribute
          • COLOR attribute
          • COLOR WHERE Attribute
          • CONTEXTMENU attribute
          • COMMENT attribute
          • COMPLETER attribute
          • COMPONENTTYPE attribute
          • DEFAULT attribute
          • DEFAULTVIEW attribute
          • DISPLAY LIKE attribute
          • DOUBLECLICK attribute
          • DOWNSHIFT attribute
          • EXPANDEDCOLUMN attribute
          • FONTPITCH attribute
          • FORMAT attribute
          • FLIPPED 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
          • NOSWIPE attribute
          • NOT NULL attribute
          • NOTEDITABLE 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
          • SPLIT attribute
          • SPLITTER attribute
          • STEP attribute
          • STRETCH attribute
          • STRETCHCOLUMNS attribute
          • STRETCHMAX attribute
          • STRETCHMIN 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
          • WIDTH attribute
          • WINDOWSTYLE attribute
          • WORDWRAP Attribute
        • Examples
          • Example 1: Form with grids and table
      • 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
        • 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
            • NEXT FIELD 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
    • 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 picklist
        • Rich Text Editing in TEXTEDIT
      • Dialog actions
        • Action handling basics
        • Predefined actions
          • Understanding predefined actions
          • List of predefined actions
        • 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
            • 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 in chromebar
        • Action display in the context menu
        • Implementing the close action
        • Actions bound to the current row
        • Keyboard accelerator names
          • ON KEY Virtual keys
          • Accelerator key names
          • Accelerator key modifiers
        • Setting action key labels
        • Action views on mobile devices
        • Automatic action views
      • 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
        • Binding action views to a table row
        • Built-in table features
          • Columns layout
          • List ordering
          • Find function
          • Keyboard seek
          • Reduce filter
        • Row and cell highlighting in TABLE
        • Summary lines in tables
        • Defining the action for a row choice
        • Multi-row selection in tables
        • Table features not supported on mobile
        • Examples
          • Example 1: Simple table view
      • Scrollgrid views
        • Understanding scrollgrid views
        • Defining scrollgrid in the layout
        • Binding scrollgrids to arrays in dialogs
        • Controlling scrollgrid rendering
        • Row and cell highlighting in SCROLLGRID
        • Binding action views to a scrollgrid row
        • Built-in scrollgrid features
          • Unsupported features
          • Supported features
        • Defining the action for a row choice
        • Using scrollgrid on mobile devices
          • Unsupported scrollgrid features (mobile)
          • Supported scrollgrid features (mobile)
        • Examples
          • Example 1: Simple scrollgrid view
          • Example 2: Scrollgrid as listview
      • 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
        • Row highlighting in TREE
        • Binding action views to a treeview row
        • 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)
      • 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 grid 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
        • Configuring a dynamic dialog
        • Defining dialog triggers
        • Controlling field values
        • Ending dynamic dialogs
        • Dynamic multiple dialog
        • Using dynamic cursors
        • Paged mode DISPLAY ARRAY
        • 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
      • Folders
        • Understanding folder tabs
        • Detecting folder page focus changes
        • Bring a folder page to the top
        • Multiple folder tabs
        • Using actions for page selection
  • 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 Tabs in screen layouts
      • Source code completion
      • 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 method
        • 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
    • Source refactoring
      • Understanding the code refactoring tools
      • Qualifying imported symbols
      • Make symbols case match definition
      • Mark SQL host variables with $
    • 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 Calendar 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
  • 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_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.matches
            • STRING.replaceAll
            • STRING.replaceFirst
            • STRING.split
            • 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
            • base.SqlHandle.setParameterType
          • 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 3: 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.getEventDescription
            • 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.setActionAttribute
            • 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.setDialogAttribute
            • 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
        • standard.cbAdd
        • standard.cbClear
        • standard.cbGet
        • standard.cbPaste
        • standard.cbSet
        • standard.clearFileCache
        • standard.execute
        • standard.feInfo
        • standard.getEnv
        • standard.getWindowId
        • standard.hardCopy
        • standard.launchURL
        • standard.mdClose
        • standard.openDir
        • standard.openFile
        • standard.openFiles
        • standard.playSound
        • standard.restoreSize
        • standard.saveFile
        • standard.setReportFont
        • standard.setReportPrinter
        • standard.setWebComponentPath
        • standard.shellExec
        • standard.storeSize
      • Web component front calls
        • webcomponent.call
        • webcomponent.frontCallAPIVersion
        • webcomponent.getTitle
      • GDC Monitor Front Calls
        • monitor.update
      • Theme front calls
        • theme.setTheme
        • theme.getCurrentTheme
        • theme.listThemes
      • Local storage front calls
        • localStorage.setItem
        • localStorage.getItem
        • localStorage.removeItem
        • localStorage.keys
        • localStorage.clear
      • Genero Mobile common front calls
        • mobile.chooseContact
        • mobile.choosePhoto
        • mobile.chooseVideo
        • mobile.composeMail
        • mobile.composeSMS
        • mobile.connectivity
        • mobile.getGeolocation
        • mobile.getRemoteNotifications
        • mobile.importContact
        • mobile.isForeground
        • mobile.newContact
        • mobile.registerForRemoteNotifications
        • mobile.runOnServer
        • mobile.scanBarCode
        • mobile.takePhoto
        • mobile.takeVideo
        • mobile.unregisterFromRemoteNotifications
      • Genero Mobile Android™ front calls
        • android.askForPermission
        • android.showAbout
        • android.showSettings
        • android.startActivity
        • android.startActivityForResult
      • Genero Mobile iOS front calls
        • ios.getBadgeNumber
        • ios.setBadgeNumber
      • Cordova plugin front calls
        • cordova.call
        • cordova.callWithoutWaiting
        • cordova.getAllCallbackData
        • cordova.getCallbackDataCount
        • cordova.getCallbackData
        • cordova.getPluginInfo
        • cordova.listPlugins
    • Extension packages
      • The util package
        • The util.Date class
          • util.Date methods
            • util.Date.isLeapYear
            • util.Date.parse
        • 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.parseBinaryString
            • util.Integer.parseHexString
            • util.Integer.setBit
            • util.Integer.shiftLeft
            • util.Integer.shiftRight
            • util.Integer.testBit
            • util.Integer.toBinaryString
            • util.Integer.toHexString
            • util.Integer.xor
        • The util.Interval class
          • util.Interval methods
            • util.Interval.format
            • util.Interval.parse
        • The util.Regexp class
          • util.Regexp methods
            • util.Regexp.compile
            • util.Regexp.getMatch
            • util.Regexp.getMatchAll
            • util.Regexp.getMatchIndex
            • util.Regexp.getMatchIndexAll
            • util.Regexp.getSubmatch
            • util.Regexp.getSubmatchAll
            • util.Regexp.getSubmatchIndex
            • util.Regexp.getSubmatchIndexAll
            • util.Regexp.matches
            • util.Regexp.replaceAll
            • util.Regexp.replaceFirst
            • util.Regexp.split
          • Regular expression patterns
          • Examples
            • Example 1: Check for valid identifiers
            • Example 2: Check emails and phone numbers
        • The util.Strings class
          • util.Strings methods
            • util.Strings.base64Decode
            • util.Strings.base64DecodeToHexString
            • util.Strings.base64DecodeToString
            • util.Strings.base64Encode
            • 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.chDir
            • os.Path.chRwx
            • os.Path.chOwn
            • os.Path.chVolume
            • os.Path.copy
            • 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.rootDir
            • os.Path.rootName
            • os.Path.rwx
            • os.Path.separator
            • os.Path.size
            • os.Path.type
            • os.Path.uid
            • os.Path.volumes
            • os.Path.writable
          • Examples
            • Example 1: Extracting the parts of a filename
            • Example 2: Browsing directories
      • The com package
        • Web services classes
          • The WebService class
            • WebService 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
              • RegisterRestResources
              • RegisterRestService
              • RegisterService
              • 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
              • getRequestHeader
              • getRequestHeaderCount
              • getRequestHeaderName
              • getRequestHeaderValue
              • getRequestMultipartType
              • getRequestPart
              • getRequestPartCount
              • getRequestPartFromID
              • getRequestVersion
              • 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
              • setBodyChunk
              • 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
              • getPart
              • getPartCount
              • 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
              • doTextRequest
              • doXmlRequest
              • endXmlRequest
              • getAsyncResponse
              • getResponse
              • setConnectionTimeOut
              • setKeepConnection
              • setMaximumResponseLength
              • setTimeOut
          • 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.getDocumentNodeItem
              • xml.DomDocument.getDocumentNodesCount
              • xml.DomDocument.getElementById
              • xml.DomDocument.getElementsByTagName
              • xml.DomDocument.getElementsByTagNameNS
              • xml.DomDocument.getErrorDescription
              • xml.DomDocument.getErrorsCount
              • xml.DomDocument.getFeature
              • xml.DomDocument.getFirstDocumentNode
              • xml.DomDocument.getLastDocumentNode
              • xml.DomDocument.getXmlEncoding
              • xml.DomDocument.getXmlVersion
              • xml.DomDocument.importNode
              • xml.DomDocument.insertAfterDocumentNode
              • xml.DomDocument.insertBeforeDocumentNode
              • 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.addNextSibling
              • xml.DomNode.addPreviousSibling
              • xml.DomNode.appendChild
              • xml.DomNode.appendChildElement
              • xml.DomNode.appendChildElementNS
              • xml.DomNode.clone
              • xml.DomNode.getAttribute
              • xml.DomNode.getAttributeNS
              • xml.DomNode.getAttributeNode
              • xml.DomNode.getAttributeNodeItem
              • xml.DomNode.getAttributeNodeNS
              • 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.setAttributeNS
              • xml.DomNode.setAttributeNode
              • xml.DomNode.setAttributeNodeNS
              • 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.getBytesRead()
              • 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
              • getParameter
              • setParameter
            • Example
        • OM to XML Migration
          • OM - XML Mapping
      • The reflect package
        • The reflect.Value class
          • reflect.Value methods
            • reflect.Value.copyOf
            • reflect.Value.valueOf
            • reflect.Value.appendArrayElement
            • reflect.Value.assignToVariable
            • reflect.Value.canAssignToVariable
            • reflect.Value.clear
            • reflect.Value.deleteArrayElement
            • reflect.Value.getArrayElement
            • reflect.Value.getCurrentValue
            • reflect.Value.getDictionaryElement
            • reflect.Value.getDictionaryKeys
            • reflect.Value.getField
            • reflect.Value.getFieldByName
            • reflect.Value.getInterfaceValue
            • reflect.Value.getLength
            • reflect.Value.getType
            • reflect.Value.initializeToNull
            • reflect.Value.insertArrayElement
            • reflect.Value.isNull
            • reflect.Value.set
            • reflect.Value.toString
        • The reflect.Type class
          • reflect.Type methods
            • reflect.Type.typeOf
            • reflect.Type.getAttribute
            • reflect.Type.getElementType
            • reflect.Type.getFieldCount
            • reflect.Type.getFieldName
            • reflect.Type.getFieldType
            • reflect.Type.getFieldTypeByName
            • reflect.Type.getKind
            • reflect.Type.getMethod
            • reflect.Type.getMethodCount
            • reflect.Type.hasAttribute
            • reflect.Type.isAssignableFrom
            • reflect.Type.toString
        • The reflect.Method class
          • reflect.Method methods
            • reflect.Method.getName
            • reflect.Method.getParameterCount
            • reflect.Method.getParameterType
            • reflect.Method.getReturnCount
            • reflect.Method.getReturnType
            • reflect.Method.getSignature
        • Usage
        • Examples
          • Example 1: Record introspection and modification
          • Example 2: Finding rows in an array
          • Example 3: Generic SQL UPDATE
      • The security package
        • The RandomGenerator class
          • RandomGenerator methods
            • CreateRandomNumber
            • CreateRandomString
            • CreateUUIDString
        • The Base64 class
          • Base64 methods
            • FromByte
            • FromHexBinary
            • FromString
            • FromStringWithCharset
            • LoadBinary
            • SaveBinary
            • ToByte
            • ToHexBinary
            • ToString
            • ToStringWithCharset
            • Xor
        • The HexBinary class
          • HexBinary methods
            • FromBase64
            • FromByte
            • FromString
            • FromStringWithCharset
            • LoadBinary
            • SaveBinary
            • ToBase64
            • ToByte
            • ToString
            • ToStringWithCharset
            • Xor
        • The Digest class
          • Digest methods
            • AddBase64Data
            • AddData
            • AddHexBinaryData
            • AddStringData
            • AddStringDataWithCharset
            • CreateDigest
            • CreateDigestString
            • DoBase64Digest
            • DoHexBinaryDigest
          • Example
        • The PBKDF2 class
          • PBKDF2 methods
            • CheckKey
            • GenerateKey
          • PBKDF2 example
        • The BCrypt class
          • BCrypt methods
            • CheckPassword
            • HashPassword
            • GenerateSalt
          • 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
        • 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
      • 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 GWS client
          • Generate the client stub file
            • Generate client stub files (legacy)
          • Call the web service
            • Step 1: Import the COM library of the GWS package
            • Step 2: Import the stub file
              • Step 2: Import the stub file (legacy)
            • Step 3: Write the MAIN program block
          • Set a time period for the response
          • Handle GWS server errors
            • Handle GWS server errors (legacy)
          • Compile 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
          • Generate the stub file
            • Generate the stub files (legacy)
              • Example globals file
          • Handle GWS server errors
          • Global Endpoint user-defined type definition
          • The generated functions
          • The generated callback handlers
            • Handler definition
            • The generated callback handlers (legacy)
          • Multipart in the client stub
          • Use the generated functions
            • Using functions generated with globals
        • 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 proxy
        • Authenticate the WS client to a server
        • Create a WSSecurityUserName token
      • Writing a Web Services server application
        • Writing a Web services server function
          • Import the libraries
          • Define the input parameters
          • Define the output parameters
          • Define HTTP variables
          • Write the BDL function
          • Create and publish the Web services operation
        • WS server stubs and handlers
          • Generating stub file for a GWS server
            • Generating globals file for compatibility
          • 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 server stub
              • Get the WSDL description and generate legacy files
            • Step 2: Write a BDL function for your service operation
              • Write a BDL function for your service operation (legacy)
            • 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
    • RESTful web services
      • Designing REST Web services
      • RESTful Web services (high-level framework)
        • Quick starts
          • Quick start 1: RESTful server application
            • Prepare a database
            • Create a web service module
            • Create the server module
            • Set up and test your environment
            • Compile and run the service
            • Access the resources
          • Quick start 2: RESTful server application, part 2
            • Add functions to the service module
            • Compile and start the service
          • Quick start 3: RESTful client application
            • Generate the stub file
            • Create the client module
            • Compile and run the client
        • Code a RESTful server application
          • Set up and test your environment
          • 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 XML 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
          • Resource URI naming
          • Publish a REST service
            • REST service with one module
            • REST service with several modules
          • Version a REST service
            • How to name versions
            • Advanced REST API versioning
              • Version an operation
              • Version an operation with multiple versions
              • Version an operation as default
              • Default version of the OpenAPI document
              • Generate Open API document based on a version
              • Specify version mode
            • Hand-coding REST versioning
              • Versioning with URI
              • Versioning with custom header
          • Setting MIME type at runtime
        • Code a RESTful client application
          • Getting the service information
            • Generate service description
            • Get OpenAPI documentation of non-secure service
            • Get OpenAPI documentation of secure service
            • REST stub file overview
            • 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 in functions
            • HTTP verbs and attributes
            • Input parameter attributes
            • Return value attributes
          • High-level RESTful Web service attributes
            • Attributes set at the module level
              • WSInfo
              • WSError
              • WSContext
              • WSScope (module)
              • WSVersion (module)
              • WSVersionMode
            • Attributes set at the function level
              • HTTP operation attributes (Verbs)
                • WSDelete
                • WSGet
                • WSHead
                • WSOptions
                • WSPatch
                • WSPost
                • WSPut
                • WSTrace
              • WSPath
              • Error handling attributes
                • WSThrows
                • WSRetCode
              • WSScope access (function)
              • WSVersion (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
          • Default media types
          • Data type conversion
          • 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
    • Color and theming
    • Screen orientation
    • 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