You must enable javascript in order to view this page or you can go
here
to view the webhelp.
Genero Business Development Language User Guide 2.50
Content
Search
Index
Keywords:
Loading, please wait ...
What's new in Genero Business Development Language, v 2.50
General
Documentation conventions
Syntaxes
Warnings
Code examples
Enhancement references
General terms used in this documentation
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
DOM and SAX standards
DOM and SAX built-in classes
Limitations of XML built-in classes
Exception handling with XML classes
Controlling the user interface with XML classes
The user interface
Language library
Windows and forms
Interactive statements
Responding to user actions
Producing reports
Internationalization
Web services support
Program components
Extending the language
Advanced programming tools
Compiling a program
Producting database schema files (fgldbsch)
Compiling program source modules (fglcomp, fgllink)
Compiling form specification files with fglform
Compiling localized string files (fglmkstr)
C-like source preprocessor
Deploying an application
Frequently asked questions
FAQ001: Why do I have a different display with Genero than with BDS V3?
FAQ002: Why does an empty window always appear?
FAQ003: Why do some COMMAND KEY buttons no longer appear?
FAQ004: Why aren't the elements of my forms aligned properly?
FAQ005: Why doesn't the ESC key validate my input?
FAQ006: Why doesn't the Ctrl-C key cancel my input?
FAQ007: Why do the gui.* FGLPROFILE entries have no effect?
FAQ008: Why do I get invalid characters in my form?
FAQ009: Why do large static arrays raise a stack overflow?
FAQ010: Why do I get error -6366 "Could not load database driver drivername"?
Installation
Installation
Documentation resources for upgrades
Software requirements
Supported operating systems
Database client software
C compiler for C extensions
Java runtime environment
Installing the product
Upgrading the product
Operating system specific notes
HP/UX
IBM AIX
Microsoft Windows
Upgrading
New Features
Version 2.50
Version 2.41
Version 2.40
Version 2.32
Version 2.30
Version 2.21
Version 2.20
Version 2.11
Version 2.10
Version 2.02
Version 2.01
Version 2.00
Version 1.33
Version 1.32
Version 1.31
Version 1.30
Upgrade Guides
2.5x upgrade guide
Front-end compatibility
P-Code compatibility
Desupported database drivers
TEXT/BYTE support with FTM/ESM database drivers
Using character length semantics in UTF-8
Presentation style attribute changes
Enhanced floating point decimal to string conversion
Deprecated class methods
Implicit creation of certificates for HTTPS
PostgreSQL schema extraction needs namespace
Client stubs managing multipart changes
2.4x upgrade guide
Front-end compatibility
P-Code compatibility
Desupported database drivers
Sybase Adaptive Server Anywhere driver removal
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 error -1338 when unused module references undefined function
2.3x upgrade guide
Front-end compatibility
P-Code compatibility
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
Removal of single byte character set conversion for front-ends
Front-end Protocol compression disabled
FPI tool removal
SQLite driver does no longer need libiconv on Windows
Need for Informix CSDK to compile C extensions
FESQLC tool removal
2.2x upgrade guide
Front-end compatibility
P-Code compatibility
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
PostgreSQL 8.4 and INTERVAL type
fglcomp --build-rdd compiles the module
Unique and primary key constraint violation
Driver Manager independency with Genero db
IMPORT with list of C-Extensions
Initializing dynamic arrays to null
Form compiler is more strict with screen record definition for tables
Controlling INPUT ARRAY temporary row creation
Predefined actions get automatically disabled according to context
BEFORE ROW no longer executed when array is empty
2.1x upgrade guide
Front-end compatibility
P-Code compatibility
XML declaration added automatically
Writing timestamp information in p-code modules
2.0x upgrade guide
Front-end compatibility
P-Code compatibility
Desupported Informix client environments
Setup installation tool removed
fglinstall installation tool removed
Runner creation is no longer needed
Linking the utility functions library
Static C extensions are desupported
Dynamic C extensions usage changes
WANTCOLUMNSANCHORED is desupported
PIXELWIDTH / PIXELHEIGHT are desupported
Pre-fetch parameters with Oracle
PostgreSQL 7 is desupported
Adabas D is desupported
Preprocessor directive syntax changed
Static SQL cache is removed
Connection database schema specification
Changes in the schema extraction tools
Global and module variables using the same name
Connection parameters in FGLPROFILE when using Informix
SQL Server 7 desupported
Inconsistent USING clauses
FESQLC not provided in 2.00
Usage of RUN IN FORM MODE
TTY and COLOR WHERE attribute
Automatic HBox/VBox
1.3x upgrade guide
Front-end compatibility
Action and field activation
HBox tags
Elements inside HBoxes get their real sizes
Width of ButtonEdit/DateEdit/ComboBox
Default sample
Size policy for ComboBoxes
Action defaults at form level
MySQL 3.23 is desupported
Compiled string files have now .42s extension
Planned desupport
Migrating from IBM Informix 4gl to Genero BDL
Introduction to I4GL migration
IBM Informix 4GL and Genero BDL products
IBM Informix 4GL reference version
Installation and setup topics
Using C extensions
Localization support in Genero
Database schema extractor
Compiling 4GL to C
User interface topics
Easy user interface migration with traditional mode
SCREEN versus LAYOUT
Migrating screen arrays to tables
Review TUI specifics
The default SCREEN window
Specifying WINDOW position and size
Right justified field labels
Using widgets instead of multiple text screens
Review application ergonomics
Subscripted form fields are not supported
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
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
Easy user interface migration with traditional mode
Front-end compatibility
FGLGUI is 1 by default
FGLPROFILE: GUI configuration
Key labels versus action defaults
Migrating form field widgets
SCREEN versus LAYOUT
Migrating screen arrays to tables
Review TUI specifics
The default SCREEN window
Specifying WINDOW position and size
Front-end configuration tools
Function key mapping
4GL Programming topics
FGLPROFILE: VM configuration
Calling fgl_init4gl() initialization function
Static versus Dynamic Arrays
Debugger syntax changed
FGL_SYSTEM function
The Channel:: methods
STRING versus CHAR/VARCHAR
Review user-made C routines
Strict variable identification in SQL statements
Default action of WHENEVER ANY ERROR
Configuration
The FGLPROFILE file
Understanding FGLPROFILE
FGLPROFILE entry syntax
List of FGLPROFILE entries
Environment variables
Setting environment variables on UNIX
Setting environment variables on Windows
Operating system environment variables
PATH
LD_LIBRARY_PATH
LC_ALL (or LANG)
TERM
TERMCAP
TERMINFO
TMPDIR, TEMP, TMP
Database client environment variables
Genero environment variables
DBDATE
DBDELIMITER
DBCENTURY
DBEDIT
DBFORMAT
DBMONEY
DBPATH
DBPRINT
DBSCREENDUMP
DBSCREENOUT
DBTEMP
FGL_LENGTH_SEMANTICS
FGLAPPSERVER
FGLDIR
FGLIMAGEPATH
FGLLDPATH
FGLGUI
FGLGUIDEBUG
FGLRESOURCEPATH
FGLSERVER
FGLSOURCEPATH
FGLDBPATH
FGLSQLDEBUG
FGLPROFILE
FGLWRTUMASK
INFORMIXTERM
Language basics
Language features
Lettercase insensitivity
Whitespace separators
Quotation marks
Escape symbol
Statement terminator
Comments
Identifiers
Preprocessor directives
Localization
Localization support
The application locale
Quick 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?
What is my current character set?
Understanding locale settings
Defining the application locale
Language and character set settings
Length semantics settings
Collation ordering settings
Numeric and currency settings
Date and time settings
Database client settings
Front-end settings
Writing programs
Runtime system messages
Using the charmap.alias file
Using the Ming Guo date format
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
Using localized strings
Understanding localized strings
Steps for application internationalization
Source string files
Localized strings in program sources
Localized strings in XML resource files
Extracting strings from sources
Compiling string files
Using localized strings at runtime
Predefined application strings
Example
Data types
CHAR(size)
VARCHAR(size)
STRING
BIGINT
INTEGER
SMALLINT
TINYINT
FLOAT
SMALLFLOAT
DECIMAL(p,s)
MONEY(p,s)
DATE
DATETIME qual1 TO qual2
INTERVAL qual1 TO qual2
BYTE
TEXT
BOOLEAN
Type conversions
When does type conversion occur?
Data type conversion reference
Handling type conversion errors
Literals
Integer literals
Decimal literals
Text 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
General warnings regarding expressions
List of expression elements
Comparison operators
IS NULL
LIKE
MATCHES
Equal to (==)
Different from (!=)
Lower (<)
Lower or equal (<=)
Greater (>)
Greater or equal (>=)
NVL()
IIF()
Logical operators
NOT
AND
OR
Arithmetic operators
Addition (+)
Subtraction (-)
Multiplication (*)
Division (/)
Exponentiation (**)
MOD
Character string operators
ASCII()
COLUMN
Concatenate (||)
Append expression element (,)
Substring ([s,e])
USING
CLIPPED
ORD()
SPACES
LSTR()
SFMT()
Associative syntax operators
Parentheses ( () )
Membership (object.member)
Variable parameter list ( [ ] )
SQL related operators
SQLSTATE
SQLERRMESSAGE
Data type operators
CAST
INSTANCEOF
Assignment operators
Assignment (:=)
Date and time operators
CURRENT
EXTEND()
DATE()
TIME()
TODAY
YEAR()
MONTH()
DAY()
WEEKDAY()
MDY()
UNITS
Dialog handling operators
GET_FLDBUF()
INFIELD()
FIELD_TOUCHED()
Flow control
CALL
RETURN
CASE
CONTINUE block-name
EXIT block-name
FOR
GOTO
IF
LABEL
SLEEP
WHILE
Functions
Understanding functions
FUNCTION blocks
Using functions in programs
The runtime stack
Parameter types passed by value
Parameter types passed by reference
Returning values from functions
Implicit data type conversion on the stack
Examples
Example 1: Function fetching customer number
Example 2: Private function definition
Exceptions
Exception handling
Exception actions
Exception classes
WHENEVER instruction
TRY - CATCH block
Handing SQL errors
Handling SQL warnings
Tracing exceptions
Default exception handling
Non-trappable errors
Examples
Example 1: Defining a error handler function
Example 2: SQL error handling
Example 3: TRY / CATCH block
Example 4: TRY / CATCH in conjuction with WHENEVER
Example 5: WHENEVER RAISE expection propagation
Variables
Understanding variables
DEFINE
Declaration context
Structured types
Database column types
User defined types
Variable initialization values
INITIALIZE
LOCATE (for TEXT/BYTE)
FREE (for TEXT/BYTE)
LET
VALIDATE
THRU operator
Examples
Example 1: Function variables
Example 2: Module variables
Example 3: Global variables
Example 3: PRIVATE and PUBLIC module variables
Constants
Understanding constants
CONSTANT
Examples
Example 1: Defining and using constants
Records
Understanding records
DEFINE ... RECORD
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
DEFINE ... ARRAY
Methods of native arrays
Methods of Java arrays
Static arrays
Controlling out of bound in static arrays
Dynamic arrays
Copying complete arrays
Examples
Example 1: Using static and dynamic arrays
Example 2: Fetching database rows into a dynamic array
Types
Understanding type definition
TYPE
Using types in programs
Examples
Example 1: Defining a type with a record structure
Example 2: Defining a type an using it in another module
OOP support
Understanding classes and objects
DEFINE ... package.class
Distinguish class and object methods
Working with objects
What class packages exist?
Globals
Purpose of global blocks
GLOBALS
Rules for globals usage
Database schema in globals
Content of a globals file
Examples
Example 1: Multiple GLOBALS file
Database schema
Purpose of 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
Specifying the table owner
Force extraction of system tables
Specifying the output file name
Extracting definition of a single table
Controlling the character case
Using the verbose mode
IBM Informix synonym tables
IBM Informix shadow columns
Running schema extractor in old mode
Programs
Structure of a program
Structure of a module
The MAIN block
Importing modules
IMPORT C-Extension
IMPORT FGL module
IMPORT JAVA classname
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
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
Intermediate field trigger execution
Make current row visible after sort in tables
Responding to CTRL_LOGOFF_EVENT
DEFER INTERRUPT / QUIT
Program registers
STATUS
INT_FLAG
QUIT_FLAG
Program execution and related instructions
Executing programs with fglrun
RUN
EXIT PROGRAM
BREAKPOINT
SQL support
SQL programming
SQL basics
SQL execution diagnostic registers
The SQLCA diagnostic record
SQL error identification
SQL interruption
Debugging SQL
Cursors and connections
Implicit database connection
The database utility library
Handling nested transactions
SQL security
Database user authentication
Avoiding SQL injection
SQL portability
Database entities
Database users and security
Database creation statements
Data definition statements
Using portable data types
Data manipulation statements
CHAR and VARCHAR types
Byte or Character Length semantics?
Empty strings and NULLs
Trailing blanks in CHAR/VARCHAR
What should you do?
Concurrent data access
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 updates/deletes
WITH HOLD and FOR UPDATE
Insert cursors
String literals in SQL statements
Date and time literals in SQL statements
Naming database objects
Name syntax
Case-sensitivity
Size of identifiers
Temporary tables
Outer joins
Substring expressions
Using ROWIDs
MATCHES and LIKE operators
GROUP BY clause
The LENGTH() function in SQL
Transaction savepoints
Stored procedures
Specifying input and output parameters
Stored procedures returning a result set
Calling stored procedures with supported databases
Stored procedure call with IBM Informix
Stored functions returning values
Stored functions defined with output parameters
Stored procedure call with Genero db
Stored procedures with output parameters
Stored procedures producing a result set
Stored procedures with output parameters and result set
Stored procedure call with Oracle
Stored procedures with output parameters
Stored functions with a return value
Stored procedures producing a result set
Stored procedure call with IBM DB2
Stored procedures with output parameters
Stored procedures producing a result set
Stored procedures with output parameters and result set
Stored procedure call with Microsoft SQL Server
Stored procedures with output parameters
Stored procedures producing a 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
Stored procedure call with PostgreSQL
Stored functions with output parameters
Stored functions producing a result set
Stored functions with output parameters and result set
Stored procedure call with MySQL
Stored procedures with output parameters
Stored functions returning values
Stored procedures producing a result set
Stored procedure call with Sybase ASE
Stored procedures with output parameters
Stored procedures producing a result set
Stored procedures with output parameters, return code and result set
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
Genero db
IBM DB2 Universal Database
IBM Informix Dynamic Server
Oracle MySQL
Oracle database
PostgreSQL
Microsoft SQL Server
SQLite
Sybase Adaptive Server Enterprise (ASE)
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 vendor specific parameters in FGLPROFILE
IBM DB2 specific FGLPROFILE parameters
Oracle DB specific FGLPROFILE parameters
Oracle MySQL specific FGLPROFILE parameters
SQL Server (Native Client driver) specific FGLPROFILE parameters
SQL Server (EasySoft driver) specific FGLPROFILE parameters
SQL Server (EasySoft driver) specific FGLPROFILE parameters
Sybase ASE specific FGLPROFILE parameters
Genero db database vendor specific FGLPROFILE parameters
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
Authenticating users with Genero db
Authenticating users with IBM Informix
Authenticating users with Oracle
Authenticating users with SQL Server
Unique session mode connection instructions
DATABASE
CLOSE DATABASE
Multi-session mode connection instructions
CONNECT TO
SET CONNECTION
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
RENAME
Dynamic SQL management
Understanding dynamic SQL
PREPARE (SQL statement)
EXECUTE (SQL statement)
FREE (SQL statement)
EXECUTE IMMEDIATE
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
I/O SQL instructions
LOAD
UNLOAD
SQL adaptation guides
SQL guide For IBM Informix database servers 5.x, 7.x, 8.x, 9.x, 10.x, 11.x
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?
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
SQL adaptation guide For IBM DB2 UDB 8.x, 9x
Installation (Runtime Configuration)
Install DB2 and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Database concepts
Database concepts
Data storage concepts
Data consistency and concurrency management
Transactions handling
Defining database users
Setting privileges
Data dictionary
BOOLEAN data type
CHARACTER data types
NUMERIC data types
DATE and DATETIME data types
INTERVAL data type
SERIAL data types
ROWIDs
Very large data types
Constraints
Triggers
Stored procedures
Name resolution of SQL (database) objects
Set up database statistics
The ALTER TABLE instruction
Data type conversion table
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
Name resolution of SQL (database) objects
String delimiters
Getting one row with SELECT
MATCHES and LIKE in SQL conditions
SQL functions and constants
Querying system catalog tables
The GROUP BY clause
The star (asterisk) in SELECT statements
The LENGTH() function
BDL programming
SERIAL data types
Informix specific SQL statements in BDL
INSERT cursors
Cursors WITH HOLD
SELECT FOR UPDATE
SQL parameters limitation
The LOAD and UNLOAD instructions
SQL Interruption
Scrollable Cursors
Connecting to DB2 OS/400
DB2 Architecture on OS/400
Login to the AS/400 server
Collection (Schema) Creation
Source Physical File Creation
Trigger Creation
Permission Definition
Relational DB Directory Entry Creation
DB2 Client Configuration on Windows
Differences Between DB2 UNIX & DB2 OS/400
Naming Conventions
SQL adaptation guide For IBM Netezza 1.x
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
Data consistency and concurrency management
Transactions handling
Defining database users
Data dictionary
BOOLEAN data type
CHARACTER data types
NUMERIC data types
DATE and DATETIME data types
INTERVAL data type
SERIAL data types
ROWIDs
Indexes
Very large data types
Constraints
Triggers
Stored procedures
Name resolution of SQL objects
Data type conversion table
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 in SQL conditions
Querying system catalog tables
Syntax of UPDATE statements
The LENGTH() function
BDL programming
UPDATE limitations
SERIAL data types
Informix specific SQL statements in BDL
INSERT cursors
Cursors WITH HOLD
SELECT FOR UPDATE
UPDATE/DELETE WHERE CURRENT OF
The LOAD and UNLOAD instructions
SQL Interruption
Scrollable Cursors
SQL adaptation guide For SQL SERVER 2005, 2008, 2012
Installation (Runtime Configuration)
Install SQL SERVER and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Database concepts
Database concepts
Data storage concepts
Data consistency and concurrency management
Transactions handling
Defining database users
Setting privileges
Data dictionary
BOOLEAN data type
CHARACTER data types
NUMERIC data types
DATE and DATETIME data types
INTERVAL data type
SERIAL data types
SQL Server UNIQUEIDENTIFIER data type
SQL Server ROWVERSION data type
ROWIDs
Case sensitivity
Very large data types
The ALTER TABLE instruction
Constraints
Triggers
Stored procedures
Name resolution of SQL objects
Setup database statistics
Data type conversion table
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
Name resolution of SQL objects
String delimiters
Getting one row with SELECT
MATCHES and LIKE in SQL conditions
Querying system catalog tables
Syntax of UPDATE statements
The LENGTH() function
String concatenation operator
BDL programming
Executing SQL statements
SERIAL data types
Informix specific SQL statements in BDL
INSERT cursors
Cursors WITH HOLD
SELECT FOR UPDATE
The LOAD and UNLOAD instructions
SQL Interruption
Scrollable Cursors
SQL adaptation guide For Oracle MySQL 5.x
Installation (Runtime Configuration)
Install MySQL and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Database concepts
Database concepts
Data storage concepts
Data consistency and concurrency management
Transactions handling
Defining database users
Data dictionary
BOOLEAN data type
CHARACTER data types
NUMERIC data types
DATE and DATETIME data types
INTERVAL data type
SERIAL data type
ROWIDs
Very large data types
Constraints
Name resolution of SQL objects
Data type conversion table
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
Name resolution of SQL objects
Database object name delimiters
MATCHES and LIKE in SQL conditions
Syntax of UPDATE statements
BDL programming
SERIAL data type
Informix-specific SQL statements in BDL
INSERT cursors
Cursors WITH HOLD
SELECT FOR UPDATE
UPDATE/DELETE WHERE CURRENT OF
The LOAD and UNLOAD instructions
SQL Interruption
Scrollable Cursors
SQL adaptation guide For Oracle Database 9.2, 10.x, 11.x, 12x
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
Data storage concepts
Data consistency and concurrency management
Transactions handling
Defining database users
Setting privileges
Data dictionary
BOOLEAN data type
CHARACTER data types
NUMERIC data types
DATE and DATETIME data types
INTERVAL data type
SERIAL data types
ROWIDs
Very large data types
The ALTER TABLE instruction
Constraints
Triggers
Stored procedures
Name resolution of SQL objects
Setup database statistics
NULLs in indexed columns
Data type conversion table: Informix to Oracle
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Using the default temporary table emulation
Using the global temporary table emulation
Substrings in SQL
The LENGTH() function
Empty character strings
Name resolution of SQL objects
String delimiters and object names
Getting one row with SELECT
MATCHES and LIKE in SQL conditions
SQL functions and constants
Querying system catalog tables
Syntax of UPDATE statements
The USER constant
The GROUP BY clause
The star (asterisk) in SELECT statements
BDL programming
SERIAL data types
Handling SQL errors when preparing statements
Informix specific-SQL statements in BDL
INSERT cursors
Cursors WITH HOLD
SELECT FOR UPDATE
UPDATE/DELETE WHERE CURRENT OF
The LOAD and UNLOAD instructions
SQL Interruption
Scrollable cursors
SQL adaptation guide For PostgreSQL 8.x.y, 9.x.y
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
Data storage concepts
Data consistency and concurrency management
Transactions handling
Defining database users
Setting privileges
Data dictionary
BOOLEAN data type
CHARACTER data types
NUMERIC data types
DATE and DATETIME data types
INTERVAL data type
SERIAL data types
ROWIDs
Very large data types
Constraints
Triggers
Stored procedures
Name resolution of SQL objects
Data type conversion table
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
Name resolution of SQL objects
String delimiters
Using column aliases in SELECT
MATCHES and LIKE in SQL conditions
Querying system catalog tables
Syntax of UPDATE statements
The LENGTH() function
BDL programming
SERIAL data types
Handling SQL errors when preparing statements
Informix specific SQL statements in BDL
INSERT cursors
Cursors WITH HOLD
SELECT FOR UPDATE
UPDATE/DELETE WHERE CURRENT OF
The LOAD and UNLOAD instructions
SQL Interruption
Scrollable Cursors
SQL adaptation guide For SQLite 3.5.x, 3.6.x
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
Defining database users
Data dictionary
BOOLEAN data type
CHARACTER data types
NUMERIC data types
DATE and DATETIME data types
INTERVAL data type
SERIAL data types
ROWIDs
Foreign key support
Very large data types
Data type conversion table
Data manipulation
Outer joins
Transactions handling
Temporary tables
MATCHES and LIKE in SQL conditions
Syntax of UPDATE statements
BDL programming
SERIAL data types
Informix-specific SQL statements in BDL
INSERT cursors
SELECT FOR UPDATE
UPDATE/DELETE WHERE CURRENT OF
The LOAD and UNLOAD instructions
Scrollable Cursors
SQL adaptation guide For Sybase ASE 15.5+
Installation (Runtime Configuration)
Install Sybase ASE and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Database concepts
Database concepts
Data consistency and concurrency management
Transactions handling
Defining database users
Setting privileges
Data dictionary
BOOLEAN data type
CHARACTER data types
NUMERIC data types
DATE and DATETIME data types
INTERVAL data type
SERIAL data type
ROWIDs
Case sensitivity
Very large data types
The ALTER TABLE instruction
Constraints
Triggers
Stored procedures
Name resolution of SQL objects
Setup database statistics
Data type conversion table
Data manipulation
Reserved words
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
Name resolution of SQL objects
String delimiters
Getting one row with SELECT
MATCHES and LIKE in SQL conditions
Querying system catalog tables
Syntax of UPDATE statements
BDL programming
SERIAL data type
Informix-specific SQL statements in BDL
Insert cursors
Cursors WITH HOLD
SELECT FOR UPDATE
The LOAD and UNLOAD instructions
SQL Interruption
Scrollable Cursors
SQL adaptation guide For Genero db 3.6x, 3.8x
Installation (Runtime Configuration)
Install Genero db and create a database - database configuration/design tasks
Prepare the runtime environment - connecting to the database
Driver availability matrix
Migrating from Genero db 3.61 to 3.80 and +
Driver Manager independency with Genero BDL 2.21
Database concepts
Database concepts
Data consistency and concurrency management
Transactions handling
Defining database users
Setting privileges
Data dictionary
BOOLEAN data type
CHARACTER data types
NUMERIC data types
DATE data type
DATETIME data type
INTERVAL data type
SERIAL data types
ROWIDs
The ALTER TABLE instruction
Constraints
Triggers and Stored Procedures
Name resolution of SQL objects
Setup database statistics
Data type conversion table
Data manipulation
Genero db Sql Error management
Reserved words
Outer joins
Transactions handling
Temporary tables
Substrings in SQL
Name resolution of SQL objects
String delimiters and object names
Getting one row with SELECT
MATCHES and LIKE in SQL conditions
Querying system catalog tables
Syntax of UPDATE statements
The USER constant
BDL programming
SERIAL data types
Informix specific SQL statements in BDL
INSERT cursors
Cursors WITH HOLD
SELECT FOR UPDATE
UPDATE/DELETE WHERE CURRENT OF
The LOAD and UNLOAD instructions
SQL Interruption
Very large data types
Scrollable Cursors
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
Genero user interface modes
Text mode rendering
Graphical mode rendering
Traditional GUI mode
Connecting to a GUI front-end
Understanding the front end protocol
Defining the target front-end
Front-end identification
Front-end connection timeout
Front-end connection lost
Front-end protocol compression
Front-end errors
Front-end protocol debugging variable
Front-end protocol logging options
Special features
Setting key labels
Automatic front end startup
Text mode screen dump
Configuring your text terminal
TERMINFO terminal capabilities
TERMCAP terminal capabilities
Termcap syntax
Genero-specific termcap definitions
The interaction model
The model-view-controller paradigm
Controlling user actions
Action handling basics
Default views for actions
Decorating action views
Enabling and disabling actions
Binding action views to action handlers
Action view and action handler binding basics
Sub-dialog prefix in the DIALOG instruction
Field-specific enabled actions
Resolving multilevel action name conflicts
Displaying actions in the default contextual menu
Avoiding field data validation in UNBUFFERED mode
Predefined actions
Understanding predefined actions
Automatic and local actions with same name
Overwriting predefined actions with ON ACTION
Predefined actions enabled according to context
Binding action views to predefined actions
List of predefined actions
Keyboard accelerator names
Virtual keys
Accelerator keys
[Enter] versus [Return]
Accelerator key modifiers
Interruption handling
Data validation at action invocation
Detecting data changes immediately
Windows closed by the user
Accessibility guidelines
Keyboard access
Form description for screen readers
Usability and ergonomics
Windows and forms in programs
Understanding windows and forms
OPEN WINDOW
Window position and size
Window attributes
Open with form
Window styles
Window titles
Window icons
CLOSE WINDOW
CURRENT WINDOW
CLEAR WINDOW
OPEN FORM
DISPLAY FORM
CLOSE FORM
CLEAR SCREEN
DISPLAY AT
Window containers
Understanding window containers
Configuration of WCI parent programs
Configuration of WCI child programs
Implement tabbed WCI containers
Action defaults
Syntax of action defaults file (.4ad)
Usage
Action defaults basics
Action default attributes
Global action defaults
Form action defaults
Defining keyboard accelerators
Text attribute shows default action view
Examples
Example 1: Loading a action defaults file
Example 2: Actions defaults in a form file
Presentation styles
Syntax of presentation styles file
Using presentation styles
What are presentation styles
Defining a style
Pseudo selectors
Using a specific presentation style
Combining styles
Style attribute inheritance
Presentation styles in the AUI tree
Loading presentation styles
Style (4st) file example
Combining TTY and style attributes
Element types
Colors
Fonts
Font families
Font sizes
Style attributes reference
Common style attributes
Window style attributes
Status bar types
Folder style attributes
Default action view style attributes
Button style attributes
Edit style attributes
ButtonEdit style attributes
Table style attributes
CheckBox style attributes
ComboBox style attributes
DateEdit style attributes
Label style attributes
Image style attributes
Menu style attributes
Message style attributes
ProgressBar style attributes
RadioGroup style attributes
TextEdit style attributes
Rich Text Editing
Toolbar style attributes
Form specification files
Form file concepts
Understanding form files
External form inclusion
Forms in programs
Form items
Form fields
Screen records
Item tags
Hbox tags
Layout tags
Schema-based fields
Formonly fields
Phantom fields
Field input length
Boolean expressions in forms
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
Form layout example
TABLES section
ATTRIBUTES section
Form item types
Attribute list
AGGREGATE item type
FIELD item type
EDIT item type
BUTTONEDIT item type
TEXTEDIT item type
DATEEDIT item type
COMBOBOX item type
CHECKBOX item type
RADIOGROUP item type
LABEL item type
IMAGE item type
PROGRESSBAR item type
SLIDER item type
SPINEDIT item type
TIMEEDIT item type
WEBCOMPONENT item type
BUTTON item type
CANVAS item type
GROUP item type
SCROLLGRID item type
TABLE item type
TREE item type
INSTRUCTIONS section
KEYS section
Form item attributes
ACCELERATOR attribute
ACCELERATOR2 attribute
ACCELERATOR3 attribute
ACCELERATOR4 attribute
ACTION attribute
AGGREGATETEXT attribute
AGGREGATETYPE attribute
AUTOSCALE attribute
AUTONEXT attribute
BUTTONTEXTHIDDEN attribute
CENTURY attribute
CLASS attribute
COLOR attribute
COLOR WHERE Attribute
CONFIG Attribute
CONTEXTMENU attribute
COMMENT attribute
COMPONENTTYPE attribute
DEFAULT attribute
DEFAULTVIEW attribute
DISPLAY LIKE attribute
DOUBLECLICK attribute
DOWNSHIFT attribute
EXPANDEDCOLUMN attribute
FONTPITCH attribute
FORMAT attribute
GRIDCHILDRENINPARENT attribute
HIDDEN attribute
HEIGHT attribute
IDCOLUMN attribute
IMAGE attribute
IMAGECOLUMN attribute
IMAGECOLLAPSED attribute
IMAGEEXPANDED attribute
IMAGELEAF attribute
INCLUDE attribute
INITIALIZER attribute
INVISIBLE attribute
ISNODECOLUMN attribute
ITEMS attribute
JUSTIFY attribute
KEY attribute
MINHEIGHT attribute
MINWIDTH attribute
NOENTRY attribute
NOT NULL attribute
NOTEDITABLE attribute
OPTIONS attribute
ORIENTATION attribute
PARENTIDCOLUMN attribute
PICTURE attribute
PROGRAM attribute
PROPERTIES attribute
QUERYEDITABLE attribute
REQUIRED attribute
REVERSE attribute
SAMPLE attribute
SCROLL attribute
SCROLLBARS attribute
SIZEPOLICY attribute
SPACING attribute
SPLITTER attribute
STEP attribute
STRETCH attribute
STYLE attribute
TABINDEX attribute
TAG attribute
TEXT attribute
TITLE attribute
UNSORTABLE attribute
UNSORTABLECOLUMNS attribute
UNSIZABLE attribute
UNSIZABLECOLUMNS attribute
UNHIDABLE attribute
UNHIDABLECOLUMNS attribute
UNMOVABLE attribute
UNMOVABLECOLUMNS attribute
UPSHIFT attribute
VALIDATE attribute
VALIDATE LIKE attribute
VALUEMIN attribute
VALUEMAX attribute
VALUECHECKED attribute
VALUEUNCHECKED attribute
VERIFY attribute
VERSION attribute
WANTFIXEDPAGESIZE attribute
WANTNORETURNS attribute
WANTTABS attribute
WIDGET attribute
WIDTH attribute
WINDOWSTYLE attribute
WORDWRAP Attribute
Form rendering
Character set usage
Packed and unpacked grids
Automatic horizontal and vertical boxes
Grid-based form definition
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 size within hbox tags
Display of static information
Display of data and messages
DISPLAY (to stdout)
MESSAGE
ERROR
DISPLAY TO
DISPLAY BY NAME
CLEAR FORM
CLEAR SCREEN ARRAY
CLEAR field-list
SCROLL
Ring menus
Syntax of the MENU instruction
MENU programming steps
Usage
Understanding 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
MENU control instructions
SHOW/HIDE OPTION instruction
EXIT MENU instruction
CONTINUE MENU instruction
Examples
Example: MENU with abstract action options
Example: MENU with text-mode options
Record input
Syntax of the INPUT instruction
INPUT programming steps
Usage
Understanding the INPUT instruction
Variable binding in INPUT
INPUT instruction configuration
Default actions in INPUT
INPUT control blocks
Control block 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
INPUT control instructions
NEXT FIELD instruction
ACCEPT INPUT instruction
CONTINUE INPUT instruction
EXIT INPUT instruction
The DIALOG control class
INPUT control functions
Examples
Example 1: INPUT with binding by field position
Example 2: INPUT with binding by field name
Read-only record list
Syntax of DISPLAY ARRAY instruction
DISPLAY ARRAY programming steps
Usage
Understanding the DISPLAY ARRAY instruction
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
Control block execution order
BEFORE DISPLAY block
AFTER DISPLAY block
BEFORE ROW block
AFTER ROW block
DISPLAY ARRAY interaction blocks
ON ACTION block
ON IDLE block
ON KEY block
ON DRAP / DROP blocks
ON APPEND block
ON INSERT block
ON UPDATE block
ON DELETE block
DISPLAY ARRAY control instructions
CONTINUE DISPLAY instruction
EXIT DISPLAY instruction
ACCEPT DISPLAY instruction
The DIALOG control class
DISPLAY ARRAY control functions
Examples
Example 1: DISPLAY ARRAY using full list mode
Example 2: DISPLAY ARRAY using paged mode
Example 3: DISPLAY ARRAY using modification triggers
Editable record list
Syntax of INPUT ARRAY instruction
INPUT ARRAY programming steps
Usage
Understanding the INPUT ARRAY instruction
The built-in sort of INPUT ARRAY
The built-in find of INPUT ARRAY
Variable binding in INPUT ARRAY
INPUT ARRAY instruction configuration
Default actions in INPUT ARRAY
INPUT ARRAY control blocks
Control block 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
INPUT ARRAY control instructions
ACCEPT INPUT instruction
EXIT INPUT instruction
CANCEL DELETE instruction
CANCEL INSERT instruction
CONTINUE INPUT instruction
NEXT FIELD instruction
The DIALOG control class
INPUT ARRAY control functions
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
Syntax of CONSTRUCT instruction
CONSTRUCT programming steps
Usage
Understanding the CONSTRUCT instruction
Form field specification in CONSTRUCT
Query operators in CONSTRUCT
CONSTRUCT instruction configuration
Default actions IN CONSTRUCT
CONSTRUCT control blocks
Control block execution order
BEFORE CONSTRUCT block
AFTER CONSTRUCT block
BEFORE FIELD block
AFTER FIELD block
CONSTRUCT interaction blocks
ON ACTION block
ON IDLE block
ON KEY block
CONSTRUCT control instructions
NEXT FIELD instruction
ACCEPT CONSTRUCT instruction
CONTINUE CONSTRUCT instruction
EXIT CONSTRUCT instruction
Dialog control class
CONSTRUCT control functions
Examples
Example 1: CONSTRUCT with binding by field position
Example 2: CONSTRUCT with binding by field name
Multiple dialogs
Syntax of the DIALOG statement
DIALOG programming steps
Usage
Understanding multiple dialogs
Programming with DIALOG
DIALOG block structure
The INPUT sub-dialog
The CONSTRUCT sub-dialog
The DISPLAY ARRAY sub-dialog
The INPUT ARRAY sub-dialog
The SUBDIALOG clause
Global settings in FGLPROFILE
Identifying sub-dialogs by a name
Binding variables to form fields
Binding action views to action handlers
The buffered and unbuffered modes
Controlling field initialization
Disabling fields used by a dialog
Disabling actions in a dialog
Which form item has the focus?
Giving the focus to a form element
Input field modification flag
Executing form-level validation rules
Handling the tabbing order
Detecting focus changes
Detecting data modification immediately
Defining the total number of rows in a list
Feeding DISPLAY ARRAY with rows
Controlling the built-in sort in lists
Using the built-in find
Understanding the built-in seek
Implementing tree-view lists
Handling the current row in a list
Using DISPLAY ARRAY modification triggers
Inserting and deleting rows in INPUT ARRAY
Handling INPUT ARRAY temporary row creation
Implementing the close action
Setting cell color attributes
Using multi-row selection
Implementing drag & drop
DIALOG instruction configuration
DIALOG ATTRIBUTES clause
INPUT ATTRIBUTES clause
DISPLAY ARRAY ATTRIBUTES clause
INPUT ARRAY ATTRIBUTES clause
CONSTRUCT ATTRIBUTES clause
Default actions in DIALOG
DIALOG data blocks
ON FILL BUFFER block
ON EXPAND block
ON COLLAPSE block
DIALOG control blocks
Control block execution order
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 IDLE block
ON KEY block
ON ACTION block
COMMAND [KEY] block
ON DRAG* and ON DROP blocks
ON APPEND block
ON INSERT block
ON UPDATE block
ON DELETE block
DIALOG control instructions
NEXT FIELD instruction
CLEAR field-list instruction
DISPLAY TO / BY NAME instruction
CONTINUE DIALOG instruction
EXIT DIALOG instruction
ACCEPT DIALOG instruction
CANCEL DELETE instruction
CANCEL INSERT instruction
The DIALOG control class
DIALOG control Functions
Examples
Example 1: DIALOG statement controlling two lists
Example 2: DIALOG statement with query and lists
Prompt for values
Syntax of PROMPT instruction
Usage
Understanding the PROMPT instruction
PROMPT programming steps
PROMPT instruction configuration
Default actions in PROMPT
Interaction blocks
ON ACTION block
ON IDLE block
ON KEY block
Examples
Example 1: Simple PROMPT statements
Example 2: Simple PROMPT with Interrupt Checking
Example 3: PROMPT with ATTRIBUTES and ON ACTION handlers
Toolbars
Syntax of a toolbar file (.4tb)
Usage
Understanding toolbars
Defining toolbars in the form file
Loading a toolbar from an XML file
Loading a default toolbar from an XML file
Creating the toolbar manually with DOM
Examples
Example 1: Toolbar in XML format
Example 2: Toolbar created dynamically
Example 3: Toolbar section in form file
Topmenus
Syntax of a topmenu file (.4tm)
Usage
Understanding topmenus
Defining the topmenu in a form file
Loading a topmenu from an XML file
Loading a default topmenu from an XML file
Creating the topmenu dynamically
Examples
Example 1: Topmenu in XML format
Example 2: Topmenu section in form file
Tree views
Syntax of tree-view containers
Usage
Understanding tree-views
Defining a TREE container
Defining the program array for tree-views
Filling the program array with rows
The DISPLAY ARRAY instruction
Modifying the tree during dialog execution
Using regular DISPLAY ARRAY control blocks
Dynamic filling of very large trees
Built-in sort and tree-views
Multi-row selection and tree-views
Drag and drop in tree-views
Examples
Example 1: Static tree view (filled before dialog starts)
Example 2: Dynamic tree view (filled on demand)
Drag & drop
Syntax of drag & drop interaction blocks
Usage
Understanding drag & drop
Default drag & drop operation
Control block execution order
Detect the beginning of a drag & drop
Be notified of the end of a drag & drop
Detect a potential drop on target dialog
Be notified for mouse moves over the drop target
Detect a drag & drop operation change
Detect the drop on target event
Set the visual feedback for the drop operation
Handle drag & drop data with MIME types
Examples
Example 1: Two lists side-by-side with drag & drop
Web components
Usage
Understanding web component
The web component interface script
From component to program
From program to component
Version-checking function
Defining a web component in form files
Using the web component in programs
Web component examples
Start menus
Syntax of start menu files (.4sm)
Usage
Understanding start menus
Loading a start menu from an XML file
Creating the start menu dynamically
Examples
Example 1: Start menu in XML format
Example 2: Start menu created dynamically
Canvases
Syntax of canvas nodes
Usage
Understanding canvases
Canvas drawing area
Step by step canvas example
Canvas drawing functions
Message files
Syntax of message files (.msg)
Usage
Understanding message files
Compiling message files
Using message files at runtime
Examples
Help message file used in MENU
Front end calls
Understanding front-end calls
ui.Interface.frontCall
Standard front end functions
Reports
Understanding reports
XML output for reports
Writing an XML report driver and routine
Structure of XML report output
Conditional statement output in XML reports
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
Components
fglrun
fglform
fgl2p
fglcomp
fgllink
fglmkmsg
fgldbsch
fglmkstr
fglwsdl
fglpass
fglWrt
Compiling source files
Compiling form files
Compiling message files
Compiling string files
Compiling source code
Importing modules
Linking libraries
Linking programs
Using makefiles
Module build information
Source code edition
Choosing the correct locale
Avoid Tab characters in screen layouts
Code completion and syntax highlighting with VIM
Source documentation
Understanding source code documentation
Prerequisites for source documentation generation
Documentation structure
Adding comments to sources
Commenting a function
Commenting a module
Commenting a package
Commenting a project
Run the documentation generator
The preprocessor
Understanding the preprocessor
Compilers command line options
File inclusion
Simple macro definition
Function macro definition
Stringification operator
Concatenation operator
Predefined macros
Undefining a macro
Conditional compilation
The debugger
Syntax for the debugger
Usage
Understanding the debugger
Prerequisites to run the debugger
Starting fglrun in debug mode
Stack frames
Using ddd as graphical interface
Invoke debugger in a running program
Setting a breakpoint programmatically
Expressions in debugger commands
Debugger commands
backtrace / where
break
call
clear
continue
define
delete
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
Other debugging tools
The profiler
Syntax of the program profiler
Usage
Understanding the profiler
Profiler output: Flat profile
Profiler output: Call graph
Example
Optimization
Runtime system basics
Dynamic module loading
Elements shared by multiple programs
Elements shared by multiple modules
Objects private to a program
Check runtime system memory leaks
Optimize your programs
Finding program bottlenecks
Optimizing SQL statements
Passing small CHAR parameters to functions
Compiler removes unused variables
Saving memory by splitting modules
Saving memory by using STRING variables
Saving memory by using dynamic arrays
Logging options
Extending the language
The Java interface
Understanding the Java interface
Prerequisites and installation
Learn about Java and OOP
Software requirements
Short step-by-step procedure to set up Java
Platform-specific configuration
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
Passing Java objects to functions
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 program data in Java code
Character set mapping
Using Java arrays
The CAST operator
The INSTANCEOF operator
Exception handling
Examples
Example 1: Using the regex package
Example 2: Using the Apache POI framework
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
Runtime stack functions
C-Extension data types and structures
C-Extension macros
VARCHAR type related macros
DECIMAL type related macros
DATETIME/INTERVAL related macros
Data type identification macros
Calling C functions from programs
Calling program functions from C
Sharing global variables
Example
C API functions
decadd()
decsub()
decmul()
decdiv()
deccmp()
deccopy()
deccvasc()
deccvdbl()
deccvint()
deccvlong()
dececvt()
decfcvt()
decround()
dectoasc()
dectodbl()
dectoint()
dectolong()
dectrunc()
deccvflt()
dectoflt()
rfmtdec()
bycmpr()
bycopy()
byfill()
risnull()
rsetnull()
rgetmsg()
rgetlmsg()
rtypalign()
rtypmsize()
rtypname()
rtypwidth()
rdatestr()
rdayofweek()
rdefmtdate()
rfmtdate()
rjulmdy()
rleapyear()
rmdyjul()
rstrdate()
rtoday()
ifx_defmtdate()
ifx_strdate()
byleng()
ldchar()
rdownshift()
rupshift()
stcat()
stcopy()
stleng()
stcmpr()
stchar()
rstod()
rstoi()
rstol()
rfmtdouble()
rfmtint4()
dtaddinv()
dtcurrent()
dtcvasc()
ifx_dtcvasc()
dtcvfmtasc()
ifx_dtcvfmtasc()
dtextend()
dtsub()
dtsubinv()
dttoasc()
dttofmtasc()
ifx_dttofmtasc()
incvasc()
incvfmtasc()
intoasc()
intofmtasc()
invdivdbl()
invdivinv()
invextend()
invmuldbl()
Formatting directives
Numeric formatting mask
Date formatting mask
Datetime formatting mask
Interval formatting mask
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_SCR_SIZE()
FGL_SET_ARR_CURR()
FGL_SETENV()
FGL_DRAWBOX()
FGL_DRAWLINE()
FGL_LASTKEY()
FGL_KEYVAL()
FGL_REPORT_PRINT_BINARY_FILE()
FGL_REPORT_SET_DOCUMENT_HANDLER()
FGL_GETWIN_HEIGHT()
FGL_GETWIN_WIDTH()
FGL_GETWIN_X()
FGL_GETWIN_Y()
FGL_GETVERSION()
FGL_GETHELP()
FGL_GETPID()
FGL_GETRESOURCE()
FGL_PUTFILE
FGL_GETFILE
FGL_GETENV()
FGL_GETKEY()
FGL_GETKEYLABEL()
FGL_SETKEYLABEL()
FGL_DIALOG_GETKEYLABEL()
FGL_DIALOG_GETSELECTIONEND()
FGL_DIALOG_SETKEYLABEL()
FGL_DIALOG_SETSELECTION()
FGL_SETSIZE()
FGL_SETTITLE()
FGL_SYSTEM()
FGL_WIDTH()
FGL_WINDOW_GETOPTION()
LENGTH()
SET_COUNT()
SHOWHELP()
STARTLOG()
UPSHIFT()
List of desupported built-in functions
The key code table
Utility functions
List of utility functions
DB_GET_DATABASE_TYPE()
DB_GET_SEQUENCE()
DB_START_TRANSACTION()
DB_FINISH_TRANSACTION()
DB_IS_TRANSACTION_STARTED()
FGL_WINBUTTON()
FGL_WINMESSAGE()
FGL_WINPROMPT()
FGL_WINQUESTION()
FGL_WINWAIT()
WINEXEC() MS Windows FE Only!
WINEXECWAIT() MS Windows FE Only!
WINSHELLEXEC() MS Windows FE Only!
WINOPENDIR()
WINOPENFILE()
WINSAVEFILE()
Built-in packages
The base package
The Application class
base.Application methods
base.Application.getArgument
base.Application.getArgumentCount
base.Application.getProgramDir
base.Application.getProgramName
base.Application.getFglDir
base.Application.getResourceEntry
base.Application.getStackTrace
The Channel class
base.Channel methods
base.Channel.create
base.Channel.close
base.Channel.isEof
base.Channel.openFile
base.Channel.openPipe
base.Channel.openClientSocket
base.Channel.setDelimiter
base.Channel.dataAvailable
base.Channel.readLine
base.Channel.writeLine
base.Channel.read
base.Channel.write
Usage
Read and write formatted data
Read and write simple lines
Line terminators on Windows and UNIX
Handle channel exceptions
Examples
Example 1: Reading formatted data from a file
Example 2: Executing the ls UNIX command
Example 3: Reading lines from a file
Example 4: Communicating with an HTTP server
Example 5: Sending mails through an SMTP server
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.toUpperCase
base.StringBuffer.toString
base.StringBuffer.trim
base.StringBuffer.trimLeft
base.StringBuffer.trimRight
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 UNIX directory path
Example 2: Escaped delimiters and NULL tokens
Example 3: Specify a backslash as a delimiter
The TypeInfo class
base.TypeInfo methods
base.TypeInfo.create()
The MessageServer class
base.MessageServer methods
base.MessageServer.connect
base.MessageServer.send
Examples
Example 1: Simple MessageServer usage
The ui package
The Interface class
ui.Interface methods
ui.Interface.frontCall
ui.Interface.getDocument
ui.Interface.getFrontEndName
ui.Interface.getFrontEndVersion
ui.Interface.getRootNode
ui.Interface.setName
ui.Interface.getName
ui.Interface.setText
ui.Interface.getText
ui.Interface.setImage
ui.Interface.getImage
ui.Interface.setType
ui.Interface.getType
ui.Interface.setSize
ui.Interface.setContainer
ui.Interface.getContainer
ui.Interface.getChildCount
ui.Interface.getChildInstances
ui.Interface.refresh
ui.Interface.loadActionDefaults
ui.Interface.loadStyles
ui.Interface.loadStartMenu
ui.Interface.loadToolBar
ui.Interface.loadTopMenu
Examples
Example 1: Get the type and version of the front end
Example 2: Get the AUI root node and save it to a file in XML format
Example 3: Using the Window Container Interface
Example 4: Synchronizing the AUI tree with the front end
The Window class
ui.Window methods
ui.Window.forName
ui.Window.getCurrent
ui.Window.getForm
ui.Window.getNode
ui.Window.findNode
ui.Window.createForm
ui.Window.setText
ui.Window.getText
ui.Window.setImage
ui.Window.getImage
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.getNode
ui.Form.loadActionDefaults
ui.Form.loadToolBar
ui.Form.loadTopMenu
ui.Form.findNode
ui.Form.setElementText
ui.Form.setElementImage
ui.Form.setElementStyle
ui.Form.setElementHidden
ui.Form.setFieldHidden
ui.Form.setFieldStyle
ui.Form.ensureFieldVisible
ui.Form.ensureElementVisible
Examples
Example 1: Implement a global form initialization function
Example 2: Hide form elements dynamically
The Dialog class
ui.Dialog methods
ui.Dialog.getCurrent
ui.Dialog.setDefaultUnbuffered
ui.Dialog.accept
ui.Dialog.validate
ui.Dialog.appendRow
ui.Dialog.appendNode
ui.Dialog.deleteRow
ui.Dialog.deleteNode
ui.Dialog.deleteAllRows
ui.Dialog.getArrayLength
ui.Dialog.getCurrentItem
ui.Dialog.getCurrentRow
ui.Dialog.getFieldBuffer
ui.Dialog.getFieldTouched
ui.Dialog.getForm
ui.Dialog.insertRow
ui.Dialog.insertNode
ui.Dialog.isRowSelected
ui.Dialog.nextField
ui.Dialog.selectionToString
ui.Dialog.setArrayLength
ui.Dialog.setActionActive
ui.Dialog.setActionHidden
ui.Dialog.setCurrentRow
ui.Dialog.setFieldActive
ui.Dialog.setFieldTouched
ui.Dialog.setArrayAttributes
ui.Dialog.setCellAttributes
ui.Dialog.setSelectionMode
ui.Dialog.setSelectionRange
Usage
Referencing the current dialog
Passing a dialog reference to functions
Identifying actions in dialog methods
Identifying fields in dialog methods
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.clear
ui.ComboBox.addItem
ui.ComboBox.getColumnName
ui.ComboBox.getTableName
ui.ComboBox.getIndexOf
ui.ComboBox.getItemCount
ui.ComboBox.getItemName
ui.ComboBox.getItemText
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.getLocationRow
ui.DragDrop.getLocationParent
ui.DragDrop.getOperation
ui.DragDrop.setOperation
ui.DragDrop.setFeedback
ui.DragDrop.selectMimeType
ui.DragDrop.getSelectedMimeType
ui.DragDrop.getBuffer
ui.DragDrop.setMimeType
ui.DragDrop.setBuffer
ui.DragDrop.dropInternal
The om package
The DomDocument class
om.DomDocument methods
om.DomDocument.create
om.DomDocument.createFromString
om.DomDocument.createFromXmlFile
om.DomDocument.createChars
om.DomDocument.createElement
om.DomDocument.createEntity
om.DomDocument.copy
om.DomDocument.getDocumentElement
om.DomDocument.getElementById
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.removeChild
om.DomNode.replaceChild
om.DomNode.loadXml
om.DomNode.parse
om.DomNode.toString
om.DomNode.writeXml
om.DomNode.write
om.DomNode.getId
om.DomNode.getTagName
om.DomNode.getAttribute
om.DomNode.getAttributeString
om.DomNode.getAttributeInteger
om.DomNode.setAttribute
om.DomNode.getAttributesCount
om.DomNode.getAttributeName
om.DomNode.getAttributeValue
om.DomNode.removeAttribute
om.DomNode.getChildCount
om.DomNode.getChildByIndex
om.DomNode.getFirstChild
om.DomNode.getLastChild
om.DomNode.getNext
om.DomNode.getParent
om.DomNode.getPrevious
om.DomNode.selectByTagName
om.DomNode.selectByPath
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.item
om.NodeList.getLength
Examples
Example 1: Search for child nodes by tag name
Example 2: Search for child nodes by XPath
The SaxAttributes class
om.SaxAttributes methods
om.SaxAttributes.copy
om.SaxAttributes.create
om.SaxAttributes.addAttribute
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
The SaxDocumentHandler class
om.SaxDocumentHandler methods
om.SaxDocumentHandler.createForName
om.SaxDocumentHandler.readXmlFile
om.SaxDocumentHandler.setIndent
om.SaxDocumentHandler.startDocument
om.SaxDocumentHandler.startElement
om.SaxDocumentHandler.endElement
om.SaxDocumentHandler.endDocument
om.SaxDocumentHandler.characters
om.SaxDocumentHandler.skippedEntity
om.SaxDocumentHandler.processingInstruction
Examples
Example 1: Extracting phone numbers from a directory.
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.createFileWriter
om.XmlWriter.createPipeWriter
om.XmlWriter.createSocketWriter
om.XmlWriter.createChannelWriter
Examples
Example 1: Writing XML to a file
Extension packages
The util package
The Datetime class
util.Datetime methods
util.Datetime.toLocalTime
util.Datetime.toUTC
The Math class
util.Math methods
util.Math.sqrt
util.Math.pow
util.Math.exp
util.Math.srand
util.Math.rand
util.Math.sin
util.Math.cos
util.Math.tan
util.Math.asin
util.Math.acos
util.Math.atan
util.Math.log
util.Math.toDegrees
util.Math.toRadians
util.Math.pi
The JSON class
util.JSON methods
util.JSON.parse
util.JSON.format
util.JSON.stringify
util.JSON.proposeType
The JSONObject class
util.JSONObject methods
util.JSONObject.create
util.JSONObject.fromFGL
util.JSONObject.parse
util.JSONObject.has
util.JSONObject.get
util.JSONObject.getType
util.JSONObject.getLength
util.JSONObject.name
util.JSONObject.put
util.JSONObject.remove
util.JSONObject.toFGL
util.JSONObject.toString
The JSONArray class
util.JSONArray methods
util.JSONArray.create
util.JSONArray.fromFGL
util.JSONArray.parse
util.JSONArray.get
util.JSONArray.getType
util.JSONArray.getLength
util.JSONArray.put
util.JSONArray.remove
util.JSONArray.toFGL
util.JSONArray.toString
JSON to FGL conversion rules
FGL to JSON conversion rules
The os package
The Path class
os.Path methods
os.Path.separator
os.Path.pathseparator
os.Path.basename
os.Path.dirname
os.Path.rootname
os.Path.join
os.Path.pathtype
os.Path.fullpath
os.Path.exists
os.Path.extension
os.Path.readable
os.Path.writable
os.Path.executable
os.Path.isfile
os.Path.isdirectory
os.Path.ishidden
os.Path.islink
os.Path.isroot
os.Path.type
os.Path.size
os.Path.atime
os.Path.mtime
os.Path.rwx
os.Path.chrwx
os.Path.chown
os.Path.uid
os.Path.gid
os.Path.homedir
os.Path.rootdir
os.Path.dirfmask
os.Path.dirsort
os.Path.diropen
os.Path.dirclose
os.Path.dirnext
os.Path.pwd
os.Path.chdir
os.Path.volumes
os.Path.chvolume
os.Path.mkdir
os.Path.delete
os.Path.rename
os.Path.copy
Examples
Example 1: Extracting the parts of a file name
Example 2: Browsing directories
The com package
Web services classes
The WebService class
com.WebServices methods
com.WebService.CreateWebService
com.WebService.CreateStatefulWebService
com.WebService.setComment
com.WebService.publishOperation
com.WebService.saveWSDL
com.WebService.generateWSDL
com.WebService.createHeader
com.WebService.createFault
com.WebService.registerWSDLHandler
com.WebService.registerInputRequestHandler
com.WebService.registerOutputRequestHandler
com.WebService.registerInputHTTPVariable
com.WebService.registerOutputHTTPVariable
com.WebService.setFeature
The WebOperation class
com.WebOperation methods
com.WebOperation.CreateRPCStyle
com.WebOperation.CreateDOCStyle
com.WebOperation.CreateOneWayRPCStyle
com.WebOperation.CreateOneWayDOCStyle
com.WebOperation.setInputEncoded
com.WebOperation.setOutputEncoded
com.WebOperation.addInputHeader
com.WebOperation.addOutputHeader
com.WebOperation.addFault
com.WebOperation.setInputAction
com.WebOperation.setOutputAction
com.WebOperation.setComment
com.WebOperation.initiateSession
The WebServiceEngine class
com.WebServiceEngine methods
com.WebServiceEngine.RegisterService
com.WebServiceEngine.Start
com.WebServiceEngine.ProcessServices
com.WebServiceEngine.GetHTTPServiceRequest
com.WebServiceEngine.HandleRequest
com.WebServiceEngine.SetFaultCode
com.WebServiceEngine.SetFaultString
com.WebServiceEngine.SetFaultDetail
com.WebServiceEngine.SetOption
com.WebServiceEngine.GetOption
WSDL generation options notes
WebServiceEngine options
Error codes of com.WebServicesEngine
The HTTPServiceRequest class
com.HTTPServiceRequest methods
com.HTTPServiceRequest.getURL
com.HTTPServiceRequest.getMethod
com.HTTPServiceRequest.getRequestVersion
com.HTTPServiceRequest.hasRequestKeepConnection
com.HTTPServiceRequest.getRequestHeader
com.HTTPServiceRequest.getRequestHeaderCount
com.HTTPServiceRequest.getRequestHeaderName
com.HTTPServiceRequest.getRequestHeaderValue
com.HTTPServiceRequest.readFormEncodedRequest
com.HTTPServiceRequest.readDataRequest
com.HTTPServiceRequest.readTextRequest
com.HTTPServiceRequest.readXmlRequest
com.HTTPServiceRequest.beginXmlRequest
com.HTTPServiceRequest.endXmlRequest
com.HTTPServiceRequest.setResponseCharset
com.HTTPServiceRequest.setResponseVersion
com.HTTPServiceRequest.setResponseHeader
com.HTTPServiceRequest.sendDataResponse
com.HTTPServiceRequest.sendTextResponse
com.HTTPServiceRequest.sendXmlResponse
com.HTTPServiceRequest.sendResponse
com.HTTPServiceRequest.beginXmlResponse
com.HTTPServiceRequest.endXmlResponse
com.HTTPServiceRequest.getRequestMultipartType
com.HTTPServiceRequest.getRequestPartCount
com.HTTPServiceRequest.getRequestPart
com.HTTPServiceRequest.getRequestPartFromContentID
com.HTTPServiceRequest.setResponseMultipartType
com.HTTPServiceRequest.addResponsePart
HTTP classes
The HTTPRequest class
com.HTTPRequest methods
com.HTTPRequest.Create
com.HTTPRequest.setVersion
com.HTTPRequest.setMethod
com.HTTPRequest.setHeader
com.HTTPRequest.removeHeader
com.HTTPRequest.clearHeaders
com.HTTPRequest.setCharset
com.HTTPRequest.setAuthentication
com.HTTPRequest.clearAuthentication
com.HTTPRequest.setKeepConnection
com.HTTPRequest.setTimeOut
com.HTTPRequest.setConnectionTimeOut
com.HTTPRequest.setMaximumResponseLength
com.HTTPRequest.setAutoReply
com.HTTPRequest.doRequest
com.HTTPRequest.doTextRequest
com.HTTPRequest.doXmlRequest
com.HTTPRequest.doDataRequest
com.HTTPRequest.doFormEncodedRequest
com.HTTPRequest.beginXmlRequest
com.HTTPRequest.endXmlRequest
com.HTTPRequest.getResponse
com.HTTPRequest.getAsyncResponse
com.HTTPRequest.setMultipartType
com.HTTPRequest.addPart
Examples
Example 1: HTTP GET request
Example 2 : XForms HTTP POST request
Example 3 : Streaming HTTP PUT request
Example 4 : Asynchronous HTTP DELETE request
The HTTPResponse class
com.HTTPResponse methods
com.HTTPResponse.getStatusCode
com.HTTPResponse.getStatusDescription
com.HTTPResponse.getHeader
com.HTTPResponse.getHeaderCount
com.HTTPResponse.getHeaderName
com.HTTPResponse.getHeaderValue
com.HTTPResponse.beginXmlResponse
com.HTTPResponse.endXmlResponse
com.HTTPResponse.getTextResponse
com.HTTPResponse.getXmlResponse
com.HTTPResponse.getDataResponse
com.HTTPResponse.getMultipartType
com.HTTPResponse.getPartCount
com.HTTPResponse.getPart
com.HTTPResponse.getPartFromContentID
Examples
The HTTPPart class
com.HTTPPart methods
com.HTTPPart.CreateFromString
com.HTTPPart.CreateFromDomDocument
com.HTTPPart.CreateFromData
com.HTTPPart.CreateAttachment
com.HTTPPart.getContentAsString
com.HTTPPart.getContentAsDomDocument
com.HTTPPart.getContentAsData
com.HTTPPart.getAttachment
com.HTTPPart.setHeader
com.HTTPPart.getHeader
Multipart Example
TCP classes
The TCPRequest class
com.TCPRequest methods
com.TCPRequest.Create
com.TCPRequest.setTimeOut
com.TCPRequest.setConnectionTimeOut
com.TCPRequest.setMaximumResponseLength
com.TCPRequest.doRequest
com.TCPRequest.doXmlRequest
com.TCPRequest.doTextRequest
com.TCPRequest.beginXmlRequest
com.TCPRequest.endXmlRequest
com.TCPRequest.getResponse
com.TCPRequest.getAsyncResponse
The TCPResponse class
com.TCPResponse methods
com.TCPResponse.beginXmlResponse
com.TCPResponse.endXmlResponse
com.TCPResponse.getXmlResponse
com.TCPResponse.getTextResponse
Helper classes
The Util class
com.Util methods
com.Util.CreateRandomString
com.Util.CreateDigestString
com.Util.CreateUUIDString
com.Util.UniqueApplicationInstance
The xml package
The Document Object Modeling (DOM) classes
The DomDocument class
xml.DomDocument methods
xml.DomDocument.appendDocumentNode
xml.DomDocument.clone
xml.DomDocument.create
xml.DomDocument.createAttribute
xml.DomDocument.createAttributeNS
xml.DomDocument.createCDATASection
xml.DomDocument.createComment
xml.DomDocument.createDocument
xml.DomDocument.createDocumentFragment
xml.DomDocument.createDocumentNS
xml.DomDocument.createDocumentType
xml.DomDocument.createElement
xml.DomDocument.createElementNS
xml.DomDocument.createEntityReference
xml.DomDocument.createNode
xml.DomDocument.createProcessingInstruction
xml.DomDocument.createTextNode
xml.DomDocument.declareNamespace
xml.DomDocument.getDocumentElement
xml.DomDocument.getDocumentNodesCount
xml.DomDocument.getDocumentNodeItem
xml.DomDocument.getElementById
xml.DomDocument.getElementsByTagName
xml.DomDocument.getElementsByTagNameNS
xml.DomDocument.getErrorDescription
xml.DomDocument.getErrorsCount
xml.DomDocument.getFirstDocumentNode
xml.DomDocument.getFeature
xml.DomDocument.getLastDocumentNode
xml.DomDocument.getXmlEncoding
xml.DomDocument.getXmlVersion
xml.DomDocument.importNode
xml.DomDocument.insertBeforeDocumentNode
xml.DomDocument.insertAfterDocumentNode
xml.DomDocument.isXmlStandalone
xml.DomDocument.load
xml.DomDocument.loadFromPipe
xml.DomDocument.loadFromString
xml.DomDocument.normalize
xml.DomDocument.prependDocumentNode
xml.DomDocument.removeDocumentNode
xml.DomDocument.save
xml.DomDocument.saveToPipe
xml.DomDocument.saveToString
xml.DomDocument.selectByXPath
xml.DomDocument.setFeature
xml.DomDocument.setXmlEncoding
xml.DomDocument.setXmlStandalone
xml.DomDocument.validate
xml.DomDocument.validateOneElement
Navigation methods usage examples
Node creation methods usage examples
HTML document usage example
Load and save methods usage examples
Cautions
DomDocument Features
Examples
Example 1 : Create a namespace qualified document with processing instructions
Example 2 : Validating a document against XML schemas or a DTD
The DomNode class
xml.DomNode methods
xml.DomNode.addPreviousSibling
xml.DomNode.addNextSibling
xml.DomNode.appendChild
xml.DomNode.appendChildElement
xml.DomNode.appendChildElementNS
xml.DomNode.clone
xml.DomNode.getAttribute
xml.DomNode.getAttributeNode
xml.DomNode.getAttributeNodeItem
xml.DomNode.getAttributeNodeNS
xml.DomNode.getAttributeNS
xml.DomNode.getAttributesCount
xml.DomNode.getChildNodeItem
xml.DomNode.getChildrenCount
xml.DomNode.getElementsByTagName
xml.DomNode.getElementsByTagNameNS
xml.DomNode.getFirstChild
xml.DomNode.getFirstChildElement
xml.DomNode.getLastChild
xml.DomNode.getLastChildElement
xml.DomNode.getLocalName
xml.DomNode.getNamespaceURI
xml.DomNode.getNextSibling
xml.DomNode.getNextSiblingElement
xml.DomNode.getNodeName
xml.DomNode.getNodeType
xml.DomNode.getNodeValue
xml.DomNode.getOwnerDocument
xml.DomNode.getParentNode
xml.DomNode.getPrefix
xml.DomNode.getPreviousSibling
xml.DomNode.getPreviousSiblingElement
xml.DomNode.hasAttribute
xml.DomNode.hasAttributeNS
xml.DomNode.hasAttributes
xml.DomNode.hasChildNodes
xml.DomNode.insertAfterChild
xml.DomNode.insertBeforeChild
xml.DomNode.isAttached
xml.DomNode.isDefaultNamespace
xml.DomNode.lookupNamespaceURI
xml.DomNode.lookupPrefix
xml.DomNode.prependChild
xml.DomNode.prependChildElement
xml.DomNode.prependChildElementNS
xml.DomNode.removeAllChildren
xml.DomNode.removeAttribute
xml.DomNode.removeAttributeNS
xml.DomNode.removeChild
xml.DomNode.replaceChild
xml.DomNode.selectByXPath
xml.DomNode.setAttribute
xml.DomNode.setAttributeNode
xml.DomNode.setAttributeNodeNS
xml.DomNode.setAttributeNS
xml.DomNode.setIdAttribute
xml.DomNode.setIdAttributeNS
xml.DomNode.setNodeValue
xml.DomNode.setPrefix
xml.DomNode.toString
DomNode types
Examples
Example: Counting the number of nodes in an XML document
The DomNodeList class
xml.DomNodeList methods
xml.DomNodeList.getCount
xml.DomNodeList.getItem
The streaming API for XML (StAX) classes
The StaxWriter class
xml.StaxWriter methods
xml.StaxWriter.attribute
xml.StaxWriter.attributeNS
xml.StaxWriter.cdata
xml.StaxWriter.characters
xml.StaxWriter.close
xml.StaxWriter.comment
xml.StaxWriter.create
xml.StaxWriter.declareDefaultNamespace
xml.StaxWriter.declareNamespace
xml.StaxWriter.dtd
xml.StaxWriter.emptyElement
xml.StaxWriter.emptyElementNS
xml.StaxWriter.endDocument
xml.StaxWriter.endElement
xml.StaxWriter.entityRef
xml.StaxWriter.getFeature
xml.StaxWriter.processingInstruction
xml.StaxWriter.setDefaultNamespace
xml.StaxWriter.setFeature
xml.StaxWriter.setPrefix
xml.StaxWriter.startDocument
xml.StaxWriter.startElement
xml.StaxWriter.startElementNS
xml.StaxWriter.writeTo
xml.StaxWriter.writeToDocument
xml.StaxWriter.writeToPipe
xml.StaxWriter.writeToText
StaxWriter Features
Example
The StaxReader class
xml.StaxReader methods
xml.StaxReader.close
xml.StaxReader.Create
xml.StaxReader.findAttributeValue
xml.StaxReader.getAttributeCount
xml.StaxReader.getAttributeLocalName
xml.StaxReader.getAttributeNamespace
xml.StaxReader.getAttributePrefix
xml.StaxReader.getAttributeValue
xml.StaxReader.getEncoding
xml.StaxReader.getEventType
xml.StaxReader.getFeature
xml.StaxReader.getLocalName
xml.StaxReader.getName
xml.StaxReader.getNamespace
xml.StaxReader.getNamespaceCount
xml.StaxReader.getNamespacePrefix
xml.StaxReader.getNamespaceURI
xml.StaxReader.getPIData
xml.StaxReader.getPITarget
xml.StaxReader.getPrefix
xml.StaxReader.getText
xml.StaxReader.getVersion
xml.StaxReader.hasName
xml.StaxReader.hasNext
xml.StaxReader.hasText
xml.StaxReader.isCharacters
xml.StaxReader.isEmptyElement
xml.StaxReader.isEndElement
xml.StaxReader.isIgnorableWhitespace
xml.StaxReader.isStandalone
xml.StaxReader.isStartElement
xml.StaxReader.lookupNamespace
xml.StaxReader.lookupPrefix
xml.StaxReader.next
xml.StaxReader.nextSibling
xml.StaxReader.nextTag
xml.StaxReader.readFrom
xml.StaxReader.readFromDocument
xml.StaxReader.readFromPipe
xml.StaxReader.readFromText
xml.StaxReader.setFeature
xml.StaxReader.standaloneSet
StaxReader Features
StaxReader Event Types
Example
XML serialization classes
The Serializer class
xml.Serializer methods
xml.Serializer.setOption
xml.Serializer.getOption
xml.Serializer.VariableToStax
xml.Serializer.StaxToVariable
xml.Serializer.VariableToDom
xml.Serializer.DomToVariable
xml.Serializer.VariableToSoapSection5
xml.Serializer.SoapSection5ToVariable
xml.Serializer.DomToStax
xml.Serializer.StaxToDom
xml.Serializer.CreateXmlSchemas
Serialization option flags
XML security classes
The CryptoKey class
xml.CryptoKey methods
xml.CryptoKey.compareTo
xml.CryptoKey.computeKey
xml.CryptoKey.Create
xml.CryptoKey.CreateDerivedKey
xml.CryptoKey.CreateFromNode
xml.CryptoKey.deriveKey
xml.CryptoKey.generateKey
xml.CryptoKey.getFeature
xml.CryptoKey.getSHA1
xml.CryptoKey.getSize
xml.CryptoKey.getType
xml.CryptoKey.getUrl
xml.CryptoKey.getUsage
xml.CryptoKey.loadBIN
xml.CryptoKey.loadDER
xml.CryptoKey.loadFromString
xml.CryptoKey.loadPEM
xml.CryptoKey.loadPrivate
xml.CryptoKey.loadPublic
xml.CryptoKey.loadPublicFromString
xml.CryptoKey.savePrivate
xml.CryptoKey.savePublic
xml.CryptoKey.savePublicToString
xml.CryptoKey.saveToString
xml.CryptoKey.setFeature
xml.CryptoKey.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
xml.CryptoX509 methods
xml.CryptoX509.Create
xml.CryptoX509.CreateFromNode
xml.CryptoX509.createPublicKey
xml.CryptoX509.getFeature
xml.CryptoX509.getIdentifier
xml.CryptoX509.getThumbprintSHA1
xml.CryptoX509.load
xml.CryptoX509.loadDER
xml.CryptoX509.loadFromString
xml.CryptoX509.loadPEM
xml.CryptoX509.save
xml.CryptoX509.saveToString
xml.CryptoX509.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
xml.Signature methods
xml.Signature.appendObjectData
xml.Signature.appendReferenceTransformation
xml.Signature.compute
xml.Signature.Create
xml.Signature.CreateFromNode
xml.Signature.createObject
xml.Signature.createReference
xml.Signature.getCanonicalization
xml.Signature.getDocument
xml.Signature.getID
xml.Signature.getObjectCount
xml.Signature.getObjectId
xml.Signature.getReferenceCount
xml.Signature.getReferenceDigest
xml.Signature.getReferenceID
xml.Signature.getReferenceTransformation
xml.Signature.getReferenceTransformationCount
xml.Signature.getReferenceURI
xml.Signature.getSignatureMethod
xml.Signature.getType
xml.Signature.RetrieveObjectDataListFromSignatureNode
xml.Signature.setCanonicalization
xml.Signature.setCertificate
xml.Signature.setID
xml.Signature.setKey
xml.Signature.setObjectID
xml.Signature.setReferenceID
xml.Signature.signString
xml.Signature.verify
xml.Signature.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
The Encryption class
xml.Encryption methods
xml.Encryption.Create
xml.Encryption.decryptElement
xml.Encryption.decryptElementContent
xml.Encryption.decryptElementContentDetached
xml.Encryption.decryptElementDetached
xml.Encryption.decryptKey
xml.Encryption.DecryptString
xml.Encryption.encryptElement
xml.Encryption.encryptElementContent
xml.Encryption.encryptElementContentDetached
xml.Encryption.encryptElementDetached
xml.Encryption.encryptKey
xml.Encryption.EncryptString
xml.Encryption.getEmbeddedKey
xml.Encryption.RSADecrypt
xml.Encryption.RSAEncrypt
xml.Encryption.setCertificate
xml.Encryption.setKey
xml.Encryption.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
xml.KeyStore methods
xml.KeyStore.AddKey
xml.KeyStore.AddCertificate
xml.KeyStore.AddTrustedCertificate
OM to XML Migration
OM - XML Mapping
The security package
The RandomGenerator class
security.RandomGenerator methods
security.RandomGenerator.CreateUUIDString
security.RandomGenerator.CreateRandomString
security.RandomGenerator.CreateRandomNumber
The Base64 class
security.Base64 methods
security.Base64.ToString
security.Base64.FromString
security.Base64.ToHexBinary
security.Base64.FromHexBinary
security.Base64.Xor
security.Base64.LoadBinary
security.Base64.SaveBinary
The HexBinary class
security.HexBinary methods
security.HexBinary.ToString
security.HexBinary.FromString
security.HexBinary.ToBase64
security.HexBinary.FromBase64
security.HexBinary.Xor
security.HexBinary.LoadBinary
security.HexBinary.SaveBinary
The Digest class
security.Digest methods
security.Digest.CreateDigest
security.Digest.AddData
security.Digest.AddBase64Data
security.Digest.AddHexBinaryData
security.Digest.AddStringData
security.Digest.DoBase64Digest
security.Digest.DoHexBinaryDigest
security.Digest.CreateDigestString
Example
File extensions
Error messages
Web services
General
Introduction to Web Services
Concepts
Server example
Client example
Service Oriented Architecture (SOA) and web services
Migrating to SOA and web services
Planning a web service
Genero web services extension
Web services standards
XML
XML schema
SOAP
WSDL
HTTP
Web services style options
Migration notes
Migrating GWS server applications
Migrating GWS server runners only
Migrating GWS server runners and using new APIs
Operation publication restrictions
Enhance the GWS server application to be WS-I compliant (recommended)
Migrating GWS client applications
Migration from version 1.3x to 2.2x
Migration from version 2.0x to 2.2x
Migration from version 2.1x to 2.2x
Migration from version 2.xx to 2.4x
WebService engine options
I4GL migration guide
Migrate an I4GL web service provider to Genero
Step 1: Use the I4GL function and the I4GL .4cf configuration file
Step 2: Create a 4GL record for the input parameters
Step 3: Create a 4GL record for the output parameters
Step 4: Create a 4GL 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
Step 9: Disable Axis support of MTOM/XOP and WS-Addressing
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 into 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
Step 7: Disable Axis support of MTOM/XOP and WS-Addressing
Remark: Standalone Axis server is buggy
Getting started and examples
Debugging
Debugging from the application server
Platform-specific notes
IBM AIX
Legal Notices
Concepts
SOAP features
SOAP 1.1 and 1.2
Server side
Client side
SOAP Fault
Server side
Client side
Stateful web services
Concept
WS-Addressing 1.0 stateful services
Server side
Step 1: Declare a W3CEndpointReference record to be used as state variable
Step 2: Create a stateful WS-Addressing enabled web service with W3CEndpointReference record as a parameter
Step 3: Publish a web service operation returning the W3CEndpointReference state variable and set it as session initiator
Step 4: Create the 4GL session initiator function and instantiate a new session
Step 5: Restore the session in any 4GL web operation from the W3CEndpointReference record
Client side
Step 1: Generate the client stub from your WS-Addressing stateful service
Step 2: Create the MAIN application
Step 3: Instantiate a new session by calling the web service operation set as session initiator
Step 4: Call any web service operation with previously returned WS-Addressing 1.0 reference parameters
Stateful services based on HTTP cookies
Server side
Step 1: Declare any 4GL simple variable to be used as state variable
Step 2: Create a stateful web service with state variable as parameter
Step 3: Publish a web service operation defined as session initiator
Step 4: Create the 4GL session initiator function and instantiate a new session
Step 5: Restore the session in any 4GL web operation from the state variable
Step 6: Deployment recommendation
Client side
Step 1: Generate the client stub from your stateful service
Step 2: Create the MAIN application
Step 3: Instantiate a new session by calling the web service operation set as session initiator
Step 4: Call any web service operation with previously returned HTTP cookie
Step 5: Troubleshooting
Encryption, base64 and password agent with fglpass tool
The fglpass tool
Encrypt a HTTP authenticate password
Encrypt a HTTP authenticate password using a certificate in the Windows key store
Use the password agent
Encrypt a password
Decrypt a password
Encode a file in BASE64 form
Decode a BASE64 form encoded file
HTTP compression
Compression and a Web services client
Compression and a Web services server
Security
Encryption and authentication
Secured communications
Certificates
Certificate authorities
Certificates and private keys storage
Accessing secured services
HTTPS configuration
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
Missing certificates
Troubleshoot common issues
HTTP 401 error message
Error: Peer certificate is issued by a company not in our CA list
The Diffie-Hellman key agreement algorithm
Client
Writing a GWS client application
Obtaining the WSDL information
Calling a web service
Step 1: Import the COM library of the GWS package
Step 2: Specify the globals file
Step 3: Write the MAIN program block
Setting a time period for the response
Handling GWS server errors
Compiling the client application
Change client behavior at runtime
Global Endpoint type definition
WS-Addressing 1.0 Global Endpoint type definition
Change server location
Change the HTTP version protocol
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
Client stub and handlers
Generating files for a GWS Client
Handling GWS server errors
Global Endpoint user-defined type definition
The generated functions
The generated callback handlers
Handler definition
Example output
Multipart in the client stub
Using the generated functions
Using logical names for service locations
FGLPROFILE entry
Logical reference in the client application
Logical reference in the URL
Configure a client to connect via an HTTP Proxy
Authenticate the client to a server
Authenticate the client to a proxy
Configure a client to access an HTTPS server
Configure for the client certificate
Configure for the certificate authority list
Server
Writing a Web services function
Define the input parameters
Define the output parameters
Write the BDL function
Create and publish the Web services operation
Server stub and handlers
Generating files for a GWS server
Server handlers
Example output
Writing your functions
Writing a Web server application
Including the web services library
Example 1: Writing the entire server application
Step 1: Define input and output records
Step 2: Write a BDL function for each service operation
Step 3: Create the service and operations
Step 4: Register the service
Step 5: Start the GWS server and process requests
Example 2: Writing a GWS server using third-party WSDL (the fglwsdl tool)
Step 1: Get the WSDL description and generate files
Step 2: Write a BDL function for your service operation
Step 3: Create service, start server and process requests
Compiling GWS server applications
Testing the GWS service in stand-alone mode
Configuring the Genero application server for the GWS Application
Making the GWS service available
Access the HTTP headers request and response at server side
Choosing a web services style
Deployment
Deployment overview
Deployment example
Deploying a 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
The GWS server and multipart
How To's
How to call Java APIs from Genero in a SOA environment
Overview
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 4GL stub to access the Java library
Step 5: Modify your 4GL application
Example program
Conclusion
How to call .NET APIs from Genero in a SOA environment
Overview
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 4GL application
Example 4GL program
Conclusion
Compute a hash value from a 4GL string
Overview
Sample code
Example
Fix 2.10 to 2.11 WSDL generation issue
Overview
WSDL conversion tool
How to handle WS security
Introduction
Server side
Client side
Reference
Security binding
SOAP message security options
SignedParts
EncryptedParts
Useful links
Reference
FGLPROFILE: Web Services configuration
FGLPROFILE: Web Services configuration by category
Security configuration
Basic or digest HTTP authentication
Proxy configuration
Server configuration
XML cryptography configuration
Examples
Windows password script example
UNIX password script example
FGLPROFILE sample
FGLPROFILE sample 2
Wildcards in the URL base
Attributes to customize XML serialization
Mapping between simple 4GL and XML data types
Facet constraints between simple 4GL and XML data types
XML serialization customizing
Default XML mapping
Mapping example
Mapping between simple 4GL and XML data types detail
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
XMLOptional
XMLElement (Optional)
XMLAttribute
XMLBase
XMLAll
XMLChoice
XMLSequence (Optional)
XMLSimpleContent
XSComplexType
XMLList
XMLSelector
XMLAny
XMLAnyAttribute
XMLName
XMLNamespace
XMLType
XMLTypenamespace
XSTypename
XSTypenamespace
XMLElementNamespace
XMLAttributeNamespace
XSDLength
XSDMinLength
XSDMaxLength
XSDEnumeration
XSDWhiteSpace
XSDPattern
XSDMinInclusive
XSDMaxInclusive
XSDMinExclusive
XSDMaxExclusive
XSDTotalDigits
XSDFractionDigits
INT_FLAG usage
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
!=
[1]
()
[1]
*
[1]
**
[1]
+
[1]
,
[1]
-
[1]
--#
[1]
/
[1]
:=
[1]
<
[1]
<=
[1]
==
[1]
>
[1]
>=
[1]
abstract user interface
[1]
action
[1]
action handler
[1]
action view
[1]
actionPanelButtonSize
[1]
actionPanelButtonSpace
[1]
actionPanelButtonTextAlign
[1]
actionPanelButtonTextHidden
[1]
actionPanelDecoration
[1]
actionPanelHAligh
[1]
actionPanelPosition
[1]
actionPanelScrollStep
[1]
actionPanelScrool
[1]
addition
[1]
alignment
[1]
AND
[1]
appending an expression
[1]
ARG_VAL()
[1]
ARR_COUNT()
[1]
ARR_CURR()
[1]
ASCII()
[1]
assignment
[1]
AUI
[1]
autoSelectionStart
[1]
[2]
backgroundColor
[1]
backslash (\)
[1]
border
[1]
[2]
button
style attributes
[1]
buttonedit
style attributes
[1]
buttonIcon
[1]
buttonType
[1]
C extensions
[1]
case sensitivity
[1]
CAST
[1]
certificate
[1]
[2]
client
[1]
configure for client
[1]
creating
[1]
importing
[1]
viewing
[1]
certificate authority
[1]
creating
[1]
creating a list
[1]
creating a root certificate authority
[1]
importing
[1]
checkbox
style attributes
[1]
client certificate
[1]
CLIPPED
[1]
COLUMN
[1]
combobox
style attributes
[1]
comboboxCompleter
[1]
comment
Genero BDL conditional code
[1]
Informix 4GL conditional code
[1]
commentPosition
[1]
compile
[1]
completionTimeout
[1]
[2]
concatenate
[1]
CURRENT
[1]
customWidget
[1]
[2]
date
creating
[1]
DATE()
[1]
dateedit
style attributes
[1]
dateTypeHint
[1]
DAY()
[1]
daysOff
[1]
default action view
style attributes
[1]
deploy
[1]
different from
[1]
division
[1]
DOM
[1]
DOWNSHIFT()
[1]
edit
style attributes
[1]
equal to
[1]
ERRORLOG()
[1]
errorMessagePosition
[1]
ERR_GET()
[1]
ERR_PRINT()
[1]
ERR_QUIT()
[1]
escape symbol
[1]
exponentiation
[1]
EXTEND()
[1]
FGLPROFILE
configuration for Web Services
[1]
[2]
FGL_BUFFERTOUCHED()
[1]
FGL_DB_DRIVER_TYPE()
[1]
FGL_DECIMAL_EXP()
[1]
FGL_DECIMAL_LOGN()
[1]
FGL_DECIMAL_POWER()
[1]
FGL_DECIMAL_SQRT()
[1]
FGL_DECIMAL_TRUNCATE()
[1]
FGL_DIALOG_GETBUFFER()
[1]
FGL_DIALOG_GETBUFFERLENGTH()
[1]
FGL_DIALOG_GETBUFFERSTART()
[1]
FGL_DIALOG_GETCURSOR()
[1]
FGL_DIALOG_GETFIELDNAME()
[1]
FGL_DIALOG_GETKEYLABEL()
[1]
FGL_DIALOG_GETSELECTIONEND()
[1]
FGL_DIALOG_INFIELD()
[1]
FGL_DIALOG_SETBUFFER()
[1]
FGL_DIALOG_SETCURRLINE()
[1]
FGL_DIALOG_SETCURSOR()
[1]
FGL_DIALOG_SETFIELDORDER()
[1]
FGL_DIALOG_SETKEYLABEL()
[1]
FGL_DIALOG_SETSELECTION()
[1]
FGL_DRAWBOX()
[1]
FGL_DRAWLINE()
[1]
FGL_GETCURSOR()
[1]
FGL_GETENV()
[1]
FGL_GETFILE()
[1]
FGL_GETHELP()
[1]
FGL_GETKEY()
[1]
FGL_GETKEYLABEL()
[1]
FGL_GETPID()
[1]
FGL_GETRESOURCE()
[1]
FGL_GETVERSION()
[1]
FGL_GETWIN_HEIGHT()
[1]
FGL_GETWIN_WIDTH()
[1]
FGL_GETWIN_X()
[1]
FGL_GETWIN_Y()
[1]
FGL_KEYVAL()
[1]
FGL_LASTKEY()
[1]
FGL_PUTFILE()
[1]
FGL_REPORT_PRINT_BINARY_FILE()
[1]
FGL_REPORT_SET_DOCUMENT_HANDLER()
[1]
FGL_SCR_SIZE()
[1]
FGL_SETENV()
[1]
FGL_SETKEYLABEL()
[1]
FGL_SETSIZE()
[1]
FGL_SETTITLE()
[1]
FGL_SET_ARR_CURR()
[1]
FGL_SYSTEM()
[1]
FGL_WIDTH()
[1]
FGL_WINDOW_GETOPTION()
[1]
field
check for current screen field
[1]
check if modified
[1]
FIELD_TOUCHED()
[1]
firstDayOfWeek
[1]
folder
style attributes
[1]
font
[1]
fontFamily
[1]
fontSize
[1]
fontFamily
[1]
[2]
fontSize
[1]
[2]
fontStyle
[1]
fontWeight
[1]
forceDefaultSettings
[1]
[2]
form
[1]
formScroll
[1]
functions
built-in
[1]
[2]
GET_FLDBUF()
[1]
greater or equal than
[1]
greater than
[1]
headerAlignment
[1]
headerHidden
[1]
highlightColor
[1]
highlightCurrentCell
[1]
highlightCurrentRow
[1]
highlightTextColor
[1]
HTTP
[1]
HTTP authentication
[1]
HTTP proxy
[1]
HTTPS
[1]
[2]
configure client access
[1]
identifiers
[1]
ignoreMinimizeSetting
[1]
IIF()
[1]
image
style attributes
[1]
imageCache
[1]
imageContainerType
[1]
Immediate IF
[1]
INFIELD()
[1]
INSTANCEOF
[1]
integratedSearch
[1]
interactive statement
[1]
internationalization
[1]
interval
converting from an integer
[1]
IS NULL
[1]
Java
[1]
label
style attributes
[1]
leftFrozenColumns
[1]
LENGTH()
[1]
lettercase sensitivity
[1]
LIKE
[1]
localAccelerators
[1]
localization
[1]
lower
[1]
lower or equal to
[1]
LSTR()
[1]
MATCHES
[1]
MDY()
[1]
membership
[1]
menu
style attributes
[1]
menuPopupPosition
[1]
message
style attributes
[1]
messagePosition
[1]
MOD
[1]
modulus
[1]
MONTH()
[1]
multiplication
[1]
NOT
[1]
NULL
checking for NULL values
[1]
NUM_ARGS()
[1]
NVL()
[1]
openssl tool
[1]
operator
arithmetic
[1]
assignment
[1]
associative syntax
[1]
character string
[1]
comparison
[1]
data type
[1]
date and time
[1]
dialog handling
[1]
logical
[1]
SQL related
[1]
OR
[1]
ORD()
[1]
parameter list
variable
[1]
parentheses
[1]
percentageVisible
[1]
position
[1]
[2]
[3]
[4]
preprocessor directives
[1]
presentation styles
[1]
combining
[1]
defining
[1]
loading
[1]
syntax
[1]
using
[1]
progressbar
style attributes
[1]
proxy authentication
[1]
pseudo selectors
[1]
quotation marks
[1]
radiogroup
style attributes
[1]
report
[1]
resizeFillsEmptySpace
[1]
rightFrozenColumns
[1]
ringMenuButtonSize
[1]
ringMenuButtonSpace
[1]
ringMenuButtonTextAligh
[1]
ringMenuButtonTextHidden
[1]
ringMenuDecoration
[1]
ringMenuHAlign
[1]
ringMenuPosition
[1]
ringMenuScroll
[1]
ringMenuScrollStep
[1]
SAX
[1]
scaleIcon
[1]
[2]
[3]
[4]
SCR_LINE()
[1]
security
Web services
[1]
SET_COUNT()
[1]
SFMT()
[1]
showAcceleratorInToolTip
[1]
showCurrentMonthOnly
[1]
showEditToolBox
[1]
showGrid
[1]
[2]
SHOWHELP()
[1]
showWeekNumber
[1]
sizable
[1]
SPACES
[1]
spellCheck
[1]
SQL
[1]
SQLERRMESSAGE
[1]
SQLSTATE
[1]
STARTLOG()
[1]
startMenuAccelerator
[1]
startMenuExecShortcut2
[1]
startMenuPosition
[1]
startMenuShortcut
[1]
startMenuSize
[1]
statement terminator
[1]
statusBarType
[1]
style attributes
[1]
button
[1]
buttonedit
[1]
checkbox
[1]
color
[1]
combobox
[1]
common
[1]
dateedit
[1]
default action view
[1]
edit
[1]
folder
[1]
image
[1]
inheritance
[1]
label
[1]
menu
[1]
message
[1]
progressbar
[1]
radiogroup
[1]
table
[1]
textedit
[1]
toolbar
[1]
TTY attributes
[1]
window
[1]
styles
presentation styles
[1]
substring
[1]
subtraction
[1]
summaryLineAlwaysAtBottom
[1]
tabbedContainer
[1]
tabbedContainerCloseMethod
[1]
table
style attributes
[1]
tableType
[1]
terminator
statement
[1]
textColor
[1]
textDecoration
[1]
textedit
style attributes
[1]
textFormat
[1]
[2]
[3]
thinScrollbarDisplayTime
[1]
TIME()
[1]
TODAY
[1]
tollBarPosition
[1]
toolbar
style attributes
[1]
toolBarDocking
[1]
toolBarTextPosition
[1]
TTY attributes
[1]
UNITS
[1]
UPSHIFT()
[1]
URL base
[1]
usage - web services client
multipart in stub
[1]
USING
[1]
variable parameter list
[1]
Web services
communication options
[1]
WEEKDAY()
[1]
whitespace separator
[1]
wildcard
in URL base
[1]
window
[1]
style attributes
[1]
windowMenu
[1]
windowOptionClose
[1]
windowOptionMaximize
[1]
windowOptionMinimize
[1]
windowState
[1]
windowSystemMenu
[1]
windowType
[1]
wrapPolicy
[1]
YEAR()
[1]
||
[1]
Your browser does not support iframes.