Project

General

Profile

Supported ABL Features

Far more is implemented already than is not implemented. For details on what is not supported yet, please see Not Yet Supported ABL Features.

Most features in v3.0.0 are from OpenEdge 10.2B or earlier. Generally, features added to OpenEdge after 10.2B are not yet supported.

With the supported ABL features already available, most applications (GUI, ChUI, batch, appserver) will completely work or will work to a very large degree.

Preprocessor

The preprocessor is 98% complete. All major features are fully implemented and tested:

  • include file processing
  • arguments processing (named and positional)
  • all directives are supported
    • global and scoped definitions (&GLOBAL-DEFINE, &SCOPED-DEFINE, &UNDEFINE)
    • conditional directives (&IF, &THEN, &ELSEIF, &ELSE, &ENDIF)
    • message processing (&MESSAGE)
    • &ANALYZE-SUSPEND and &ANALYZE-RESUME are removed on output
  • reference expansions (arguments or defines) are handled, including deferred expansions (uses of ~{}) and nested expansions
  • all special character replacements are handled (e.g. ;& is converted to an @ on output)
  • line continuations (~ or \ followed by a newline cause the lines to be concatenated on output)
  • ~ and \ escape sequences are converted to the proper character on output
  • tabs are expanded to spaces
  • "well known" preprocessor definitions (BATCH-MODE, FILE-NAME, LINE-NUMBER, OPSYS, SEQUENCE, WINDOW-SYSTEM)
  • all operators
  • the special DEFINED function

Parser

The lexer and parser are nearly 100% complete to the OpenEdge v10.2 level. They both do include some of the v11 features too, but that is not complete. The parser always "leads" in support over the rest of the conversion or runtime. This means that nearly any ABL code will parse today. By doing it this way, you can run reports and do a gap analysis on the results.

There are some obscure items that are still open. You can look in com/goldencode/p2j/uast/progress.g and search on the word TODO.

Base Language

Variables and Data Types

Data types:

  • CHARACTER
  • DECIMAL
  • INTEGER
  • INT64
  • DATE
  • DATETIME
  • DATETIME-TZ
  • LOGICAL
  • HANDLE
  • WIDGET-HANDLE
  • RECID
  • ROWID
  • RAW
  • MEMPTR

Variable definitions:

  • DEFINE VARIABLE
  • DEFINE PARAMETER
  • function parameters
  • format phrase use of AS or LIKE
  • in-line message statement use of AS or LIKE

Both global and scoped shared variables are fully supported.

Variable extents, dynamic (unspecified) extents, extent parameters and processing based on extents (e.g. special forms of assignment, initial values processing) are fully supported.

All ABL data type string formatting (format string processing) and valid ABL data type conversions are supported.

Expressions

All literals and most compiler constants are supported (including unknown value).

All operators are supported:

  • precedence ()
  • math (binary +, binary -, unary +, unary -, *, /, MODULO)
  • comparison (<, LT, >, GT, =, EQ, <=, LTE, >=, GTE, <>, NE, BEGINS, MATCHES)
  • logical (AND, OR, NOT)
  • date +
  • concatenation +

All forms of assignment are supported:

  • assignment operator =
  • all forms of the ASSIGN language statement
  • embedded assignments that can be inserted in SET and UPDATE statements

Block Structure, Flow of Control, Block Properties, Transactions and UNDO

The block structure of the original program is maintained.

These block types:

  • procedures (external and internal, including all forms of parameter support)
  • user-defined functions (including all forms of parameter support) and all function call/return semantics
  • trigger definition, use and reversion, including properly handling scoping
  • DO
  • REPEAT
  • FOR
  • EDITING blocks

Forms of control flow and conditional branching are supported:

  • IF/THEN/ELSE
  • IF (ternary function)
  • CASE
  • DO
  • REPEAT
  • FOR
  • WHILE loop conditions
  • TO/BY loop conditions
  • LEAVE
  • NEXT
  • implicit conversions of NEXT to LEAVE and LEAVE to RETURN
  • labels and all forms of referencing labels in other control flow statements
  • STOP statement
  • QUIT statement
  • UNDO statement
  • PAUSE
  • RETURN
  • RETURN ERROR
  • RETURN NO-APPLY

Internal ABL program linkage:

  • APPLY
  • RUN <external_proc>
  • RUN <internal_proc>
  • RUN VALUE
  • function invocation (both user-defined and built-in functions)
  • super procedures including SOURCE-PROCEDURE, TARGET-PROCEDURE and SEARCH-SELF, SEARCH-TARGET
  • RUN SUPER
  • SUPER
  • DYNAMIC-FUNCTION
  • persistent procedures and the execution of internal-procedures and functions IN a handle
  • persistent triggers
  • procedure handle usage
  • named events, PUBLISH, SUBSCRIBE, UNSUBSCRIBE

Properties and transaction processing:

  • full NO-ERROR support for all language statements that honor it
  • explicit and implicit transactions
  • unlimited levels of sub-transactions
  • block properties
  • full UNDO support (as a result of condition processing and using the UNDO language statement) as well as support for NO-UNDO
  • conditions
    • ENDKEY
    • ERROR
    • STOP
    • QUIT
  • proper conversion of END-ERROR into the ENDKEY or ERROR depending on the number of user interactions in the current block iteration
  • possible responses to conditions
    • LEAVE
    • NEXT
    • RETRY
    • RETURN
    • RETURN ERROR
    • RETURN NO-APPLY
    • all explicit and implicit labeled targets
    • all implicit conversions of LEAVE to RETURN and NEXT to LEAVE
  • each block's implicit condition properties are supported whenever no explicit override is specified
  • full retry support
  • infinite loop protection
  • handles LEAVE or NEXT depending on the default for a given block type
  • conditional disabling of loop protection based on control flow
    • input blocking statements
    • RETRY function
  • the runtime has hooks to ensure that block entry, block iteration, block retry, block exit (normal and abend) all drive the proper behavior including integration with the database processing

External Program/System Integration

All forms of child process launching are supported.

Shell invocation:

  • OS-COMMAND
  • DOS
  • UNIX
  • undocumented MSDOS, OS2, BTOS, VMS

Reading output from and writing input to child processes:

  • INPUT THRU/THROUGH
  • OUTPUT THRU/THROUGH
  • INPUT-OUTPUT THRU/THROUGH

All file system and environment management is supported:

  • OS-APPEND
  • OS-COPY
  • OS-CREATE-DIR
  • OS-DELETE
  • OS-DRIVES
  • OS-ERROR
  • OS-GETENV
  • OS-RENAME
  • FILE-INFO system handle
  • Windows registry support
  • INI file read/write

Stream I/O:

  • all methods of defining, opening and closing a stream are available
  • shared streams are fully supported
  • all explicit stream I/O (READKEY, IMPORT, PUT, EXPORT)
  • all implicit stream I/O (SET, UPDATE, PROMPT-FOR)
  • formatted and unformatted input and output is supported
  • paged and unpaged I/O
  • named and unnamed streams

Shared library support:

  • PROCEDURE EXTERNAL
  • RUN statements that execute those API calls
  • all parameter and return value processing and marshalling/unmarshalling
  • explicit and implicit load and unload

Appserver is fully supported:

  • broker and agent support
  • supports state-free, state-reset, stateless and state-aware modes
  • can be called from converted ABL code and from hand-written Java code (which replaces use of the "Java Open Client"
  • asynch-requests

Both client and server sockets are supported including read-response procedures.

SAX and DOM XML support is fully there.

System Handles, Methods and Attributes

Many common base language methods, attributes and system handles are implemented.

The full list needs to be added.

Built-in Functions and Global Variables

The following list is missing functionality added recently, it needs to be updated.

  • _CBIT
  • ABSOLUTE
  • ACCUM
  • ASC
  • CAN-DO
  • CAPS
  • CHR
  • COMPARE
  • CURRENT-LANGUAGE
  • DATE
  • DAY
  • DECIMAL
  • ENCODE
  • ENTRY
  • ETIME
  • EXP
  • EXTENT
  • GET-BYTE
  • GET-SIZE
  • GET-STRING
  • IF
  • INDEX
  • INTEGER
  • LC
  • LEFT-TRIM
  • LENGTH
  • LINE-COUNTER
  • LOG
  • LOOKUP
  • MAXIMUM
  • MINIMUM
  • MONTH
  • NUM-ENTRIES
  • OPSYS
  • OS-DRIVES
  • OS-ERROR
  • OS-GETENV
  • PAGE-NUMBER
  • PAGE-SIZE
  • PROGRAM-NAME
  • PROGRESS
  • PROMSGS
  • PROPATH
  • PROVERSION
  • R-INDEX
  • RANDOM
  • REPLACE
  • RETRY
  • RETURN-VALUE
  • RIGHT-TRIM
  • ROUND
  • SEARCH
  • SEEK
  • SQRT
  • STRING
  • SUBSTITUTE
  • SUBSTRING
  • TIME
  • TODAY
  • TRANSACTION
  • TRIM
  • TRUNCATE
  • USERID
  • VALID-HANDLE
  • WEEKDAY
  • YEAR

Language Statements

The following list is missing functionality added recently, it needs to be updated.

  • ACCUMULATE
  • ASSIGN
  • CASE
  • DEFINE PARAMETER
  • DEFINE STREAM
  • DEFINE VARIABLE
  • DO
  • DOS
  • END
  • ENTRY
  • EXPORT
  • FOR
  • FUNCTION
  • IF/THEN/ELSE
  • IMPORT
  • INPUT CLOSE
  • INPUT FROM
  • INPUT THRU/THROUGH
  • INPUT-OUTPUT CLOSE
  • INPUT-OUTPUT THRU/THROUGH
  • LEAVE
  • LENGTH
  • NEXT
  • OS-APPEND
  • OS-COPY
  • OS-CREATE-DIR
  • OS-DELETE
  • OS-RENAME
  • OUTPUT CLOSE
  • OUTPUT THRU/THROUGH
  • OUTPUT TO
  • OVERLAY
  • PAGE
  • PAUSE
  • PROCEDURE
  • PUT
  • PUT-BYTE
  • PUT-STRING
  • READKEY
  • REPEAT
  • RETURN
  • RUN (common forms)
  • SEEK
  • SET-SIZE
  • STOP
  • SUBSTRING
  • UNDO
  • UNIX
  • QUIT

User Interface

We have strong support for both ChUI and GUI ABL applications.

Data Types

All data types that can be used in widgets are supported.

  • CHARACTER
  • DECIMAL
  • INTEGER
  • INT64
  • DATE
  • DATETIME
  • DATETIME-TZ
  • LOGICAL
  • RECID

Widgets

ChUI

For ChUI, all widgets are supported except for slider.

  • BROWSE including BROWSE-COLUMN and BROWSE-CELL
  • BUTTON
  • FILL-IN
  • TEXT
  • LITERAL
  • EDITOR
  • RADIO-SET
  • COMBO-BOX
  • SELECTION-LIST
  • TOGGLE-BOX
  • RECTANGLE
  • MENU, SUB-MENU, MENU-ITEM
  • DIALOG-BOX
  • FRAME
  • WINDOW

GUI

For GUI, all widgets are supported except for Active-X/COM controls.

  • IMAGE
  • SLIDER
  • BROWSE including BROWSE-COLUMN and BROWSE-CELL
  • BUTTON
  • FILL-IN
  • TEXT
  • LITERAL
  • EDITOR
  • RADIO-SET
  • COMBO-BOX
  • SELECTION-LIST
  • TOGGLE-BOX
  • RECTANGLE
  • MENU, SUB-MENU, MENU-ITEM
  • DIALOG-BOX
  • FRAME
  • WINDOW

Formatting and Options

Widget level formatting for display and edit is fully supported (based on format strings).

Widget level options are determined from:

  • format phrases
  • variable definitions
  • the database schema
  • by default

The current list is out of date, the full list of widget options must be updated here.

  • labels
  • format strings
  • colors
  • view-as
  • position
  • attr-space
  • blank
  • password-field
  • auto-return
  • help
  • validation expressions

Frame Definitions

Static

  • DEFINE FRAME
  • FORM
  • all implicit or explicit definitions based on references to fields/variables/expressions in frame referencing language statements

Dynamic

Dynamic frame and widget definitions are supported using CREATE FRAME and CREATE <widget>.

Options

Options are defined in frame phrases:

The current list is out of date, the full list of widget options must be updated here.

  • position (e.g. row/col)
  • size
  • centering
  • scrollable
  • side-labels
  • no-labels
  • no-box
  • title
  • overlay
  • page-top and page-bottom
  • attr-space
  • colors

Layout Support

  • explicit layout specifications are honored
  • implicit layout behavior is maintained
  • flowed layouts ("zero-column" layouts)
    • default "sparse" layout: widgets are placed from left to right; widget label is placed above the widget
    • default "stacked" layout: widgets are placed from left to right, possibly wrapped if necessary or by using explicit SKIP statement; all labels are laid out at top of frame in a separate area
    • switching between "sparse" and "stacked" default layouts is performed automatically, depending on the frame size, screen width, presence of explicit SKIP statement, etc.
    • layout with side labels: widgets placed from left to right, possibly wrapped if necessary or by using explicit SKIP statement; all labels are placed at left side of the widget
    • layout with no labels: widgets placed from left to right, possibly wrapped if necessary or by using explicit SKIP statement; no labels are present
  • fixed column layouts
    • widgets are placed aligned to columns from left to right, from top to bottom
    • if labels are enabled, labels are placed at left side of the widget
    • if labels are disabled, no labels are displayed
  • when labels are explicitly switched off (NO-LABELS in frame phrase), each particular widget may still have a label if the frame definition (FORM or DEFINE FRAME) specifies it explicitly

Runtime Frame Support

  • shared frames are fully supported
  • dialog boxes
  • frame scoping
    • each frame is scoped to a specific block
    • the block structure is analyzed to calculate the correct block for each frame
    • the semantics of frame scoping within and across internal procedures, triggers and other special block types is preserved
    • implicit frame references and default frames are determined as part of this analysis
    • the association between frame scope and code block is known at runtime
    • certain services such as down frame iteration are linked to the block to which the frame is scoped
    • exiting from the external procedure which contains the block to which a frame is scoped will cause the frame to be hidden and destroyed unless it is a shared frame
  • frame positioning
    • explicit support
      • if a frame has an explicit position, it is honored
      • if the frame is not an overlay frame or a dialog, then it will hide any frames that appear below it in the z-order
    • dynamic (calculated location) support
      • frames that have no explicit position specified are located with a compatible algorithm that will hide frames to free up screen real-estate as needed to display a frame
        this is a runtime calculation based on what is currently visible at the moment the frame changes from hidden to visible
      • first frame view
      • implicit or explicit hide followed by a view
  • implicit hide/pause behavior: state is maintained per-frame and globally to identify when a frame can be implicitly hidden and when an implicit hide operation must cause a pause to occur

Down

ChUI has full down frames support:

  • explicit down iterations are honored if specified
  • 0 down frames calculate their number of iterations dynamically based on space available at the moment the frame switches from hidden to visible
  • implicit down frame cases are honored
  • the current row of a down frame is maintained in tight relationship to the state of the block to which the frame is scoped:
    • entry
    • iterate
    • retry
    • exit

Low Level Tools

  • PUT SCREEN
  • PUT CURSOR
  • READKEY
  • STATUS
  • MESSAGE
    • standard multi-line message area processing
    • use of message to edit variables (e,g, MESSAGE UPDATE)
    • alert box

Procedural Editing Tools

  • PROMPT-FOR
  • SET
  • UPDATE
  • INSERT
  • CHOOSE
  • full semantics for editing blocks

Event Model

  • support for high level and low level events
  • user input events
  • application generated events
  • APPLY
  • WAIT-FOR including nested @WAIT-FOR@s
  • triggers including all the block properties and nesting that is possible

Redirected Terminal

In ChUI, redirecting terminal for report output is fully honored.

  • explicit named streams for specific language statements (e.g. DISPLAY STREAMs)
  • unnamed streams support
  • all semantics are maintained
    • frame border renders as spaces
    • no-box eliminates frame border
    • layout, formatting and down iteration determines output
    • page-top and page-bottom are all honored to create per-page headers and footers which have dynamic data in them
    • pagination is done based on the stream's settings

Other Support

  • validation expressions
  • aggregate phrases in display statements
  • form headers are fully honored including the dynamic nature of the expression evaluation for such frame elements
  • @ base field support
    • data type overrides
    • maintains semantics for size and format strings for such fields (which are quite different than fields where no @ base field is being used)
  • key remapping (ON <keylabel> <keyfunction>)
  • CTRL-C is fully supported as an asynchronous interruption of the current processing by the user (generates a STOP condition)

System Handles, Methods and Attributes

Many common user interface methods, attributes and system handles are implemented.

The full list needs to be added.

Built-in Functions

The following list is missing functionality added recently, it needs to be updated.

  • ENTERED
  • FRAME-COL
  • FRAME-DOWN
  • FRAME-FIELD
  • FRAME-INDEX
  • FRAME-LINE
  • FRAME-ROW
  • FRAME-VALUE
  • GO-PENDING
  • INPUT
  • KBLABEL
  • KEYCODE
  • KEYFUNCTION
  • KEYLABEL
  • LASTKEY
  • MESSAGE-LINES
  • NOT ENTERED
  • SCREEN-LINES
  • TERMINAL

Language Statements

The following list is missing functionality added recently, it needs to be updated.

  • APPLY
  • ASSIGN (the form that implicitly references the screen buffer)
  • BELL
  • CHOOSE
  • CLEAR
  • COLOR
  • DEFINE BROWSE
  • DEFINE BUTTON
  • DEFINE FRAME
  • DISABLE
  • DISPLAY
  • DOWN
  • ENABLE
  • FORM
  • FRAME-VALUE
  • HIDE
  • INPUT CLEAR
  • INSERT
  • MESSAGE
  • NEXT-PROMPT
  • ON
  • PAUSE
  • PROCESS EVENTS
  • PROMPT-FOR
  • PUT CURSOR
  • PUT SCREEN
  • READKEY
  • SCROLL
  • SET
  • STATUS
  • TERMINAL
  • UNDERLINE
  • UP
  • UPDATE
  • VIEW
  • WAIT-FOR

Database

Database Triggers (session and schema)

  • ASSIGN
  • CREATE
  • DELETE
  • FIND
  • WRITE
  • replication forms are implemented but not tested

Sequences

Sequences are implemented to the degree possible for each supported database.

Queries

Static Queries

  • FIND <constant> (unique record matching)
  • FIND FIRST/LAST/NEXT/PREV
  • FIND CURRENT
  • FOR FIRST/LAST
  • FOR EACH (dynamic record-oriented access)
  • FOR EACH (sorting options causing an implicit preselect mode)
  • DO PRESELECT EACH/FIRST/LAST + FIND
  • REPEAT PRESELECT EACH/FIRST/LAST + FIND
  • OPEN QUERY + GET
  • OPEN QUERY PRESELECT + GET

Dynamic Queries

  • CREATE QUERY
  • ADD-BUFFER
  • CREATE-RESULT-LIST-ENTRY
  • DELETE-RESULT-LIST-ENTRY
  • GET-BUFFER-HANDLE
  • GET-CURRENT
  • GET-FIRST
  • GET-LAST
  • GET-NEXT
  • GET-PREV
  • QUERY-CLOSE
  • QUERY-OPEN
  • QUERY-PREPARE
  • REPOSITION-TO-ROW
  • REPOSITION-TO-ROWID
  • SET-BUFFERS

Sorting

Matches sorting based on:
  • index selection (implicit or explicit)
  • explicit sort criteria or the combination thereof in certain cases

Uses server-side sorting whenever possible.

Honors client side expressions in sorting (e.g. use of user-defined functions in a sorting expression).

Other Query Features

Multiple table query support:
  • FOR
  • DO PRESELECT
  • REPEAT PRESELECT
  • OPEN QUERY
  • implicit and explicit joins are honored

Full preselect support including all implicit forms.

WHERE clauses:
  • all possible expression elements are honored (except the CONTAINS operator - partial support)
  • all database data types
  • all literals (constants)
  • variable references
  • database field references
  • attribute references
  • all operators (except CONTAINS - partial support)
  • usage of built-in or user-defined functions
  • usage of method calls
  • nested CAN-FIND usage
  • any other base language expression element
The semantics of expression evaluation are maintained:
  • the number of times, order and location in relation to block iteration/control flow are duplicated (e.g. there are significant differences between FIND, single table FOR EACH and multiple table FOR EACH cases)
  • database server-side evaluation of expressions is used wherever possible
  • "client-side" evaluation of expressions occurs when necessary (e.g. if a user-defined function is called from within a WHERE clause, then this can't be pushed over to the database server)

Honors the USING and constant forms as implicit WHERE clauses or augmentations of an existing WHERE clause.

The complete row oriented access semantic is maintained, including the "recurring record" behavior in which a change to an index used for traversal is honored dynamically and can cause the same record to appear again later.

All index selection semantics are maintained

Compatible selection rules have been identified and honored

Explicit index specifications are honored

Implicit analysis based on:
  • WHERE clause
  • BY clause (sorting criteria)

Buffer Scopes and Database References

All possible forms of buffer scoping are properly calculated and honored.

All database references are identified and categorized:
  • strong scopes
  • weak scopes
  • free references
  • non-scoped references are ignored as needed (certain database references are only references to the schema's structure and must be ignored for purposes of calculating buffer scopes)

Buffer scopes are calculated based on block structure, nesting and the order/location of database references.

Implicit buffer scope expansion for weak scopes is fully and compatibly handled.

Record Locking

Locking is fully compatible. Implemented in application server, not database.

Pessimistic locking is the default behavior.

Full explicit control over lock types
  • NO-LOCK
  • SHARE-LOCK
  • EXCLUSIVE-LOCK

Automatic lock escalation when needed.

Lock release
  • normally at transaction boundary
  • at buffer scope when buffer scope is larger than transaction scope (EXCLUSIVE-LOCK degrades to SHARE-LOCK at the transaction boundary and then is fully released at the end of the buffer scope)

Record Release

Semantics are fully compatible
  • maintained based on buffer scopes
  • properly maintains state on block iteration and retry of the block to which a buffer is scoped
  • implicit release based on record retrieval for the same buffer

Accumulators

All types are supported:
  • MIN
  • MAX
  • COUNT
  • TOTAL
  • AVERAGE
  • SUB-MIN
  • SUB-MAX
  • SUB-COUNT
  • SUB-TOTAL
  • SUB-AVERAGE
Full break-group processing
  • Integration with the flow of control (e.g. block iteration)
  • Database field support
    • CHARACTER
    • INTEGER
    • DECIMAL
    • LOGICAL
    • DATE
    • RAW
    • RECID
    • ROWID
    • extent fields

Transactions

Full integration with the transaction management and block structure.

Transaction level commit on normal exit or iteration from the block at which a transaction starts.

Transaction level rollback when any failure/condition is raised in the block at which a transaction starts.

Full sub-transaction support
  • partial commit/rollback at normal exit, iteration or failures/conditions
  • based on each nested block which has transaction or sub-transaction support

Temp-Tables

  • all static forms are fully supported
  • both UNDO and NO-UNDO types are honored
  • once defined, use in queries and other database processing is the same as for database tables
  • the semantics of per-user isolation and the scoping of use are maintained
  • all usage of DEFINE WORK-TABLE/WORKFILE are transparently converted to TEMP-TABLE

Dynamic Temp-Tables

  • CREATE TEMP-TABLE
  • ADD-FIELDS-FROM
  • ADD-LIKE-FIELD
  • ADD-NEW-FIELD
  • CREATE-LIKE
  • ADD-INDEX-FIELD
  • ADD-LIKE-INDEX
  • ADD-NEW-INDEX
  • COPY-TEMP-TABLE
  • TEMP-TABLE-PREPARE

Buffers

Static Buffers

  • explicit instantiation via DEFINE BUFFER
  • use and declaration via DEFINE PARAMETER or as a function parameter
  • all forms of implicit instantiation based on its first use in a language statement that requires a buffer
  • shared buffers are fully implemented

Dynamic Buffers

  • CREATE BUFFER
  • Need to list buffer handle methods and attributes
  • Need to list buffer-field handle methods and attributes

UI Integration

Queries are integrated with the browse widget (widget-driven navigation and editing)

Methods, Attributes and System Handles

This needs to be added.

Built-in Functions

The following list is missing functionality added recently, it needs to be updated.

  • ACCUM
  • ALIAS
  • AVAILABLE
  • AMBIGUOUS
  • CAN-FIND
  • CONNECTED
  • COUNT-OF
  • CURRENT-RESULT-ROW
  • DATASERVERS
  • DBNAME
  • DBRESTRICTIONS
  • DBTYPE
  • FIRST
  • FIRST-OF
  • GATEWAYS
  • LAST
  • LAST-OF
  • LDBNAME
  • LOCKED
  • NEW
  • NUM-ALIASES
  • NUM-DBS
  • NUM-RESULTS
  • PDBNAME
  • QUERY-OFF-END
  • RECID
  • ROWID
  • SDBNAME

Language Statements

The following list is missing functionality added recently, it needs to be updated.

  • ACCUMULATE
  • BUFFER-COMPARE
  • BUFFER-COPY
  • CLOSE QUERY
  • CONNECT
  • CREATE
  • CREATE ALIAS
  • CREATE BUFFER
  • CREATE QUERY
  • CREATE TEMP-TABLE
  • DEFINE BUFFER
  • DEFINE QUERY
  • DEFINE TEMP-TABLE
  • DEFINE WORK-TABLE
  • DEFINE WORKFILE
  • DELETE
  • DELETE ALIAS
  • DISCONNECT
  • DO (PRESELECT)
  • EMPTY TEMP-TABLE
  • FIND
  • FOR
  • GET
  • OPEN QUERY
  • RAW-TRANSFER (conversion only)
  • RELEASE
  • REPEAT (PRESELECT)
  • REPOSITION
  • VALIDATE

© 2004-2017 Golden Code Development Corporation. ALL RIGHTS RESERVED.