Skip to main contentSkip to search
Powered by Zoomin Software. For more details please contactZoomin
Progress DocumentationProgress Documentation
Progress Documentation
  • Home
  • Home
  • EnglishČeštinaDeutsch (Germany)Español (Spain)Français (France)Italiano (Italy)Português (Brasil)日本語Русский (Russia)中文 (简体) (China)中文 (繁體, 台灣) (Taiwan)ar-AR
  • Login

OpenEdge Programming Interfaces

Writing queries using the CONTAINS operator

Save PDF
Save selected topicSave selected topic and subtopicsSave all topics
Share
Share to emailCopy topic URL
Print
Table of Contents
  • OpenEdge Programming Interfaces
  • Data Management
    • Database Access
      • Database connections
        • Connection parameters
        • Secure database connections
        • The CONNECT statement
        • Auto-connect
        • Multi-database connection considerations
        • Run-time connection considerations
        • Connection failures and disruptions
          • Using CONNECT with NO-ERROR
          • Using the CONNECTED function
        • OpenEdge database connection functions
        • Balancing conserving connections with minimizing overhead
      • Disconnecting databases
      • Logical database names
      • Database aliases
        • Creating aliases in applications
        • Compiling procedures with aliases
        • Using shared record buffers with aliases
      • Data-handling statements
      • Adding and deleting records
      • Defining a set of records to fetch
      • Fetching records
        • Order of fetched records
        • Sample record fetches
        • ROWID and RECID data types
          • Comparing ROWID and RECID
          • Returning record ROWID values
          • Storing and retrieving ROWID and RECID values
          • Additional ABL support
          • Converting from RECID to ROWID
          • Writing DataServer-portable applications
        • Results lists
          • Navigating a results list
        • FIND repositioning
          • Repositioning after FIND fetches
      • Fetching field lists
        • Field list benefits
        • Specifying field lists in ABL
          • Queries versus record selection blocks
          • Shared queries
        • Avoiding implied field list entries
        • Updating and deleting with field lists
          • Updating and deleting with query field lists
        • Cursor repositioning and field lists
        • Field list handling in degenerate cases
      • Joining tables
        • Specifying joins in ABL
          • Specifying the type of join
          • Relating and selecting tables
          • Using joins instead of nested reads
        • Using inner joins
        • Using left outer joins
        • Implementing other outer joins
        • Mixing inner and left outer joins
        • Server-side join processing
      • The CONTAINS operator
        • The CONTAINS operator and word indexes
        • Word indexes and word-break tables
        • Creating and viewing word indexes
          • Word indexing very large fields
          • Word indexing double-byte and triple-byte code pages
        • Using word-break tables
          • Specifying word delimiter attributes
          • Understanding the syntax of word-break tables
          • Examples of word-break tables
          • Compiling word-break tables
          • Associating compiled word-break tables with databases
          • Word-break tables for double-byte and UTF-8 databases
          • Rebuilding word indexes
          • Providing access to the compiled word-break table
        • Writing queries using the CONTAINS operator
          • Syntax of the CONTAINS operator of the WHERE option
          • Examples of the CONTAINS operator
        • Word indexing external documents
          • Indexing by line
          • Indexing by paragraph
        • Word indexing non-OpenEdge databases
      • Sequences
        • Choosing between sequences and control tables
          • Using sequences or control tables
          • Performance versus capabilities
          • Transaction independence
          • Storage limits
        • Creating and maintaining sequences
          • Providing sequence security
          • Dumping and loading sequences
        • Accessing and incrementing sequences
          • Using the CURRENT-VALUE function
          • Using the NEXT-VALUE function
          • Using the CURRENT-VALUE statement
          • Resetting a terminating sequence
          • Referencing sequences within a WHERE clause
      • Database trigger considerations
        • Storing triggers in an operating system directory
        • Storing triggers in an r-code library
      • Using the RAW data type
      • Multi-database programming techniques
        • Referencing tables and fields
        • Positioning database references in an application
        • Using the LIKE option
      • Creating schema cache files
        • Building a schema cache file
        • Example schema cache file creation
        • Using a schema cache file
    • Application Security
      • Types of application security
      • Elements of an application authentication model
        • Authentication systems
        • Security domains
        • Domain registries
        • User credentials
        • Security tokens (client-principal objects)
        • User identity management mechanisms
        • Client context management mechanisms
        • Application authentication design options
      • Elements for authenticating ABL user identity
        • Authentication systems supported in ABL
        • Specifying user IDs and passwords in ABL
        • Password encoding
        • Security tokens in ABL
      • Authenticating and managing user identity in ABL
        • User identity applications
        • ABL for managing user identity
        • Client-principal objects
          • Unsealed and sealed client-principals
          • Client-principal object attributes
          • Client-principal object methods
        • Setting up and using domain registries
          • Identifying the trusted domain registry
          • Building and using a session domain registry
        • Authenticating and setting user identity
          • User ID (-U) and Password (-P) database connection parameters
          • SET-DB-CLIENT function
          • SETUSERID function
          • SET-CLIENT( ) method on the SECURITY-POLICY system handle
          • SEAL( ) method on the client-principal object handle
          • Initializing a client-principal for user authentication and SSO
          • Managing the client-principal after establishing identity
          • Configuring login sessions
          • Starting and maintaining user login sessions
        • Establishing database connection identity
          • Built-in client support for authenticating database connection identity
          • Setting connection identity with application-performed user authentication
        • Establishing ABL session identity
          • Setting the ABL session identity
        • Establishing and managing identity for multi-tier applications
          • Initializing a client-principal object for a multi-tier application
          • Managing user identities for a stateless application service
          • Managing user identities for a state-free application service
        • Establishing auditing identity
        • Creating and managing unique object identities
      • Authorizing access to procedures and database resources
        • Authorizing users from within a given procedure
        • Defining activities-based user authorization
          • Creating an application activity permissions table
          • Adding records to the permissions table
          • Including security checking in procedures
          • Protecting and maintaining the permissions table
        • Authorizing user access to tables and fields
      • Using ABL callbacks in authentication systems
        • Advantages of using ABL authentication callbacks
        • Running ABL callbacks
        • Adding an ABL callback to an authentication system
        • Extending the built-in systems where OpenEdge performs user authentication
        • Extending SSO-only authentication systems
        • Using ABL to implement user authentication systems
        • Creating an ABL authentication callback procedure
          • AuthenticateUser and AfterSetIdentity signatures
          • ABL authentication callback procedure example
      • Using cryptography to secure data
        • Creating and maintaining a cryptography policy
          • Setting a symmetric encryption algorithm
          • Setting an encryption key
        • Generating encryption keys
        • Implementing symmetric cryptography in ABL
          • Using ABL encryption and decryption functions
          • Example code using the ENCRYPT and DECRYPT functions
        • Using message digests in ABL
          • Securing a message digest
          • Generating message digests in ABL
          • Managing message digests
        • Managing and transporting crypto data
          • Objectives for crypto data management
          • Requirements for crypto data management
          • Crypto data storage
          • Crypto data management and transport
          • Planning for changes in size for encrypted data
    • Multi-tenant ABL
      • Running applications in a multi-tenant database environment
        • Existing applications
        • Super-tenant applications
      • Coding for super-tenant access
        • Setting effective tenancy
        • Tenancy identification
          • Identifying database connection tenancy
          • Identifying database record tenancy
          • Identifying tenancy in temp-tables
          • Identifying the tenants defined in a database
        • Super-tenant queries
          • TENANT-WHERE option of the record phrase
          • SKIP-GROUP-DUPLICATES option of TENANT-WHERE
          • Query examples without groups
          • Query examples with groups
        • Super-tenant data updates
        • Super-tenant sequence access
      • Using multi-tenant-enabled sequences
        • Using multi-tenant sequences with shared and group-configured tables
        • Restrictions for using groups and sequences
      • Managing access to tables with groups
    • ABL API for Data Admin, Multi-tenant and Table Partition Management
      • Overview of the API
        • API packages, classes, and interfaces
          • Interface naming conventions
          • Creating and accessing objects with the API
        • API entities and entity service methods
      • Instantiating a DataAdminService
      • Managing the service life cycle
      • Managing transactions
        • Table updates that require two transactions
      • Maintaining multi-tenant and table partition entities
        • Areas (creating and reading)
        • Authentication systems (creating, reading, updating and deleting)
        • Domains (creating, reading, updating and deleting)
        • Schema (reading, loading, and updating)
        • Sequences (creating, reading, updating and deleting)
        • Tables (reading and updating)
        • Table permissions (reading and updating)
        • Tenants (creating, reading, updating and deleting)
          • Getting a tenant by an external ID
        • Tenant groups (creating, reading, updating and deleting)
        • Users (creating, reading, updating and deleting)
        • User permissions (reading)
        • Partitions (creating, reading, updating, deleting, enabling and allocating)
        • Working with partitions
          • Splitting a Partition
      • Filtering and sorting
        • Filter expressions
        • Filtering on a child collection using the RequestInfo class
          • IRequestInfo interface properties
          • IRequestInfo interface methods
      • Exporting and importing
        • Exporting and importing objects as JSON files
        • Exporting tenants and tenant groups as ABL code
      • Exporting and Importing Partition Policies and Details
      • Executing DataAdminService utilities
        • IDataAdminUtility interface
        • DeallocateUtility class
        • PartitionMergeUtility class
          • Merge one partition into a target partition
          • Merge multiple partitions into a target partition
        • PartitionSplitUtility class
          • Split from a composite partition
          • Split from an allocated partition detail
        • Dump and load table data using Data Admin Utilities
      • Handling errors
        • Handling data errors with the DataAdminErrorHandler class
        • Controlling data errors with the IDataAdminService interface
          • IDataAminService interface public properties for error handling
          • IDataAminService interface public methods for error handling
    • Auditing
      • Setting up application security for auditing
        • Configuring the auditing identity
        • Asserting the auditing identity
          • Using the database connection ID
          • Using the OpenEdge session ID
          • Application design considerations
        • Verifying that auditing is enabled
        • Configuring auditing privileges
      • Recording application events
        • Planning application events
        • ABL for generating application events
        • Instructing OpenEdge to record an application event
        • Managing audit event context
          • Generating client login session context
          • Generating application context
          • Generating audit event groups
        • Application design considerations
          • Supporting OERA-conformant clients
          • Examining active audit policies
      • Developing auditing tools
        • Custom audit configuration tools
          • Accessing the audit policy tables
          • Accessing the Audit Policy Maintenance APIs
          • Audit configuration security
        • Custom audit archiving tools
          • Accessing the audit data and supporting tables
          • Handling archiving requirements
          • Audit archiving security
  • Input/Output Processes
    • Handling User Input
      • Making HTTP(S) requests from ABL applications
        • Introduction
        • Configuration
        • Basic request-response functionality
          • OpenEdge.Net.HTTP.IHttpRequest
          • OpenEdge.Net.HTTP.HttpClient
          • OpenEdge.Net.HTTP.IHttpResponse
          • OpenEdge.Net.URI
        • Implementing stateful clients with cookies
        • Security considerations
      • The keyboard and the mouse
        • Key mapping
        • Key monitoring
        • Key translation functions
      • Key codes and key labels
      • Key functions
      • Changing the function of a key
      • Using mouse buttons and events
        • Portable and physical buttons
        • Specifying mouse events
          • Portable and three-button event priority
          • Low-level and high-level events
      • Telling the AVM how to continue processing
      • Monitoring keystrokes during data entry
        • Editing blocks
        • User interface triggers
        • Using editing blocks and user interface triggers
    • Alternate I/O Sources
      • Understanding input and output
      • Changing the output destination
        • Output to printers
        • Additional options for printing in Windows
          • Getting a list of printers
          • Changing the default printer
          • Providing access to the print dialog box
        • Output to files or devices
        • Output to the clipboard
        • Resetting output to the terminal
        • Sending output to multiple destinations
        • Stream I/O vs. screen I/O
        • A printing solution
      • Changing the input source of a procedure
        • Input from files
        • Input from devices, directories, and the terminal
        • Receiving input from multiple sources
        • Reading input with control characters
      • Defining additional input/output streams
      • Sharing streams among procedures
        • Defining a shared stream
        • Using stream object handles
      • Summary of opening and closing streams
      • Processes as input and output streams (NT and UNIX only)
        • Portability issues
      • I/O redirection for batch jobs
      • Reading the contents of a directory
      • Performing code-page conversions
      • Converting nonstandard input files
        • Importing and exporting data
          • Using the EXPORT statement
          • Using the PUT statement
          • Using the IMPORT statement
    • Colors and Fonts
      • Making colors and fonts available to an application
        • OpenEdge default colors
        • OpenEdge default fonts
      • Assigning colors and fonts to a widget
      • Assigning colors and fonts to ActiveX Automation objects and ActiveX controls
      • Color and font inheritance
        • Overriding default color inheritance
      • Color in character interfaces
        • Widget states and color
        • Color specification
      • Colors in windows in graphical interfaces
        • Systems with the Palette Manager
          • Managing colors for multiple windows
          • Managing colors for bitmap images
        • Systems without the Palette Manager
      • Managing colors and fonts in graphical applications
      • Allowing the user to change colors and fonts
        • Establishing dynamic colors
        • Color dialog box
        • Color dialog box example
        • Saving a modified color
        • Font dialog box
        • Font dialog box example
        • Saving a modified font
      • Accessing the current color and font tables
        • COLOR-TABLE handle
        • FONT-TABLE handle
      • Retrieving and changing color and font definitions
        • Changing resource definitions
          • Portable color and font definitions
        • Using GET-KEY-VALUE and PUT-KEY-VALUE
          • Writing portable color and font definitions
      • Managing application environments
        • Understanding environment management
        • Using environment management statements
        • Managing multiple environments
          • Helpful hints for environment management
      • Managing color display limitations
    • Creating Reports
      • Report basics
        • Down frames
        • Text widgets
        • Control blocks and output statements
        • Basic report demonstration
      • Designing an interface for viewing report data
      • Converting widget values to report data
        • Printing reports and the STREAM-IO option
        • Formatting long text strings
      • Generating reports with control breaks and aggregates
      • Generating reports from multiple tables
        • Reporting information from one table
        • Reporting information from two tables
        • Reporting information from multiple tables
      • Redirecting output
        • OUTPUT TO and the default stream
        • Directing output to a file
        • Directing output to a printer
        • Directing output to multiple destinations
      • Designing frames for reports
        • Using base fields with the @ option
        • Using the HEADER of a frame for running page heads
        • Using the HEADER of a frame for running page footers
        • Programming example
      • Using the PUT statement
        • Using PUT for printer control
      • Summary
        • Generating simple reports
        • Redirecting output
        • Generating reports of data represented by widgets
        • Customizing reports
  • External Program Interfaces
    • Introduction to External Program Interfaces
      • Using MEMPTR to reference external data
        • Comparing MEMPTR and RAW data types
        • Initializing and uninitializing MEMPTR variables
          • Initializing MEMPTR variables using the SET-SIZE statement
          • Checking a MEMPTR variable for initialization
          • Freeing memory associated with a MEMPTR variable
        • Reading and writing data
          • Memory-writing statements
          • Memory-reading functions
          • Copying between basic ABL data types and MEMPTR
          • Manipulating bit values
          • Copying between database records and MEMPTR
        • Retrieving and storing pointers
        • Setting byte order
        • Defining a MEMPTR with Memory Stream classes
      • System clipboard
        • The system clipboard and ABL
        • Requirements for using the CLIPBOARD handle
      • Named pipes
        • Named pipes and ABL
        • Requirements for using named pipes
      • UNIX shared library and Windows DLL support
        • Shared libraries and ABL
        • Requirements for using shared libraries
      • Windows Dynamic Data Exchange
        • DDE and ABL
        • Requirements for using DDE
      • COM objects: Automation objects and ActiveX controls
        • COM objects supported in ABL
          • ActiveX Automation objects
          • ActiveX controls
        • Support for COM object properties and methods
        • Support for Automation object events
        • Support for ActiveX control events
        • COM object sources
          • Automation objects
          • ActiveX controls
        • Requirements for using Automation objects
        • Requirements for using ActiveX controls
          • Design-mode requirements
          • Run-mode requirements
        • Programming requirements
      • Sockets
        • Reasons to use sockets
        • Connection model
          • ABL socket clients
          • ABL TLS clients
          • ABL socket servers
          • ABL TLS servers
        • Server socket and socket objects
          • Using socket objects
        • ABL socket event model
          • Using events to connect and communicate
        • Programming requirements
    • System Clipboard
      • CLIPBOARD system handle
        • AVAILABLE-FORMATS Attribute
        • ITEMS-PER-ROW Attribute
        • MULTIPLE Attribute
        • NUM-FORMATS Attribute
        • TYPE Attribute
        • VALUE attribute
      • Single-item data transfers
        • Enabling and disabling clipboard operations
        • Implementing single-item transfers
          • Paste operations
          • Cut operations
          • Copy operations
        • Single-item transfer example
      • Multiple-item data transfers
        • Widget-based transfers
        • Data-based transfers
        • Multiple-item transfer example
    • Providing Help for OpenEdge Applications
      • Field-level online help
        • Status messages
          • Associating help text with database fields
          • Specifying help text with ABL
          • Defining help text with the AppBuilder
        • ToolTips
          • Implementing ToolTips with ABL
          • TOOLTIP attribute
          • TOOLTIPS attribute
          • Implementing TOOLTIPS with the AppBuilder
      • Online help systems
        • The SYSTEM-HELP statement
        • Accessing online help from the menu bar
          • Calling the Help Viewer
          • Calling the Index function of the Help Viewer
        • Calling online help with a Help button
        • Accessing online help with the help key
        • Quitting help when exiting the application
    • Named Pipes
      • Overview of named pipes with ABL
        • Access from ABL
        • Named pipes and files
        • Uses for named pipes
        • Operational characteristics of named pipes
          • I/O synchronization
          • Message interleaving
        • Advantages and disadvantages of named pipes
      • UNIX named pipes
        • Creating a named pipe
        • Deleting a named pipe
        • Accessing a named pipe within ABL
        • UNIX named pipe examples
          • Example 1: creating and using a named pipe from the shell
          • Example 2: using a named pipe with ABL
      • Windows named pipes
        • Accessing Windows named pipes
        • Linking OpenEdge and non-OpenEdge processes using Windows named pipes
        • Building and running the sample Windows named pipes application
        • Coding the ABL program
        • Coding the C program
        • Running the application
    • Shared Library and DLL Support
      • Using shared libraries
      • Accessing a shared library entry point
        • Declaring a shared library for static access
          • Options for static access to a shared library routine
          • Windows DLL calling conventions for static access
        • Declaring a shared library for dynamic access
          • Options for dynamic access to a shared library routine
      • Passing parameters to a shared library routine
        • Shared library parameter data types
          • Data type compatibilities
          • Other data type options
        • Passing arrays as parameters
          • INTEGER and DECIMAL arrays
          • INT64 arrays
          • CHARACTER and LONGCHAR arrays
          • MEMPTR arrays
        • Passing the Unknown value and NULL values
        • Using structure parameters
        • Using MEMPTR variables as parameters
          • Initializing and uninitializing MEMPTR variables
          • Passing CHARACTER values to shared library routines
          • Freeing memory associated with a MEMPTR variable
        • DLL routines and ABL widgets (Windows only)
      • Executing a shared library routine
        • Executing a shared library routine for static access
          • Options for shared library routine execution
        • Executing a shared library routine for dynamic access
        • Parameter data types
        • INT64 parameter conversions
      • Loading and unloading shared libraries
      • Code samples
        • Examples of static access to a shared library
        • Examples of dynamic access to a shared library
      • Prevent third-party library blocking of fatal signals
    • Windows Dynamic Data Exchange
      • Introduction to DDE
      • Using the DDE protocol
        • The course of a DDE conversation
        • ABL statements for DDE conversations
      • Structuring a DDE conversation in ABL
        • Conversation hierarchy
      • Defining conversation endpoints: DDE frames
        • DDE-ERROR
        • Other DDE attributes
      • Opening DDE conversations
        • Preparing the server application
        • Defining DDE frames
        • Initiating a conversation
      • Exchanging data in conversations
        • Demand-driven exchanges
          • Execute exchanges
          • Request and send exchanges
        • Event-driven exchanges
          • Steps to setting up event-driven exchanges - advise links
          • Coordinating DDE client/server communications
          • Applications for event-driven exchanges
          • Multiple conversations with advise links
      • Closing DDE conversations
      • DDE example
    • Using COM Objects in ABL
      • How COM objects differ from ABL widgets
        • Functionality
        • ABL mechanisms
      • Obtaining access to COM objects
      • Accessing COM object properties and methods
        • Property and method syntax for COM objects
          • Method reference
          • Property reference
          • Component handle expression
          • Method name reference
          • Property name reference
          • Data-type specifier
        • Specifying options for properties and method parameters
          • Understanding a COM object Type Library
          • Using data-type specifier options
          • Using data-type specifiers for properties
          • Using data-type specifiers for method parameters
          • Using mode options for method parameters
        • Restrictions on property and method references
          • Parentheses on method calls
          • Named method parameters
          • Default properties and methods
      • Managing COM objects in an application
        • Validating component handles
        • Managing COM object font and color settings
          • Managing fonts
          • Managing colors
        • Navigating ActiveX collections
        • Managing COM object resources
          • Releases and deletes
          • Release strategy
          • Releases and component handles
        • Error handling
      • Locating COM object information on your system
        • Using the COM Object Viewer
        • Accessing Type Libraries
        • Locating objects in the Viewer
          • Automation objects
          • ActiveX controls
        • Viewing methods, properties, and events
    • ActiveX Automation Support
      • Requirements for doing Automation
      • Accessing Automation Servers
        • Option 1: Instantiate Automation object by name
        • Option 2: Connect to top-level named Automation object
        • Option 3: Connect to or instantiate a named Automation object and file
        • Option 4: Connect to or instantiate implied Automation object and file
      • Managing Automation objects
      • Automation event support
    • ActiveX Control Support
      • How ABL supports ActiveX controls
        • An example ActiveX control in ABL
        • How ABL encapsulates an ActiveX control
          • Control-frame widget
          • Control-frame COM object
        • Control-frame attributes and properties
        • Additional control functionality
          • Properties
        • Special considerations for extended controls
        • ActiveX control restrictions
      • Creating a control instance in ABL
        • Understanding design time and runtime properties
        • Setting design time properties
        • Setting the ActiveX control name
        • Setting the control-frame name
      • Orienting a control in the user interface at design time
        • Setting control location
        • Setting control height and width
        • Setting control tab order
        • Defining invisible controls
      • Accessing ActiveX controls at runtime
        • Instantiating the control
        • Accessing the control handle
          • Using the Control-Name property of the control container
          • Using the item property of the control collection
          • The handle connections
      • Managing ActiveX controls at runtime
        • Managing tab order and Z order
        • Working with ABL key functions
          • TAB, BACK-TAB, GO, HELP, and END-ERROR
          • RETURN and Default Buttons
        • Setting graphical properties of an ActiveX control
        • Releasing control resources
          • Releasing ActiveX controls
          • Releasing COM objects individually
      • Handling events
        • Handling control-frame widget events
        • Handling ActiveX control events
          • Creating event procedures in the AppBuilder
          • Coding event procedures
          • Coding event procedure names
          • Coding event parameter definitions
          • Using system handles in OCX event procedures
          • Event handler example
        • Managing external procedure files
      • Programming ActiveX controls in the AppBuilder
        • Creating data definitions for an ActiveX control
        • Instantiating the control
        • Initializing the control
        • Using event procedures
        • Interacting outside of event procedures
      • ActiveX controls and examples installed with ABL
        • Combo box control (CSComboBox)
        • Spin button control (CSSpin)
        • Timer control (PSTimer)
    • Sockets
      • ABL for programming sockets
      • Overview of tasks to implement ABL sockets
      • Implementing an ABL socket server
        • Listening and responding to connection requests
        • Managing the server socket
      • Implementing an ABL socket client
      • Read, writing, and managing sockets on clients and servers
        • Defining and initializing MEMPTR variables
        • Detecting data on a socket
          • Data detection using the procedural model
          • Data detection using the event-driven model
        • Reading data on a socket
          • Specifying the read mode
          • Specifying the timeout length
          • Verifying the number of bytes actually read
        • Writing data on a socket
        • Marshalling and unmarshalling data for socket I/O
        • Managing sockets and their connections
      • Implementing ABL socket security
        • Configuring TLS servers and clients
          • Configuring TLS servers
          • Configuring TLS clients
        • Enabling TLS server connections
        • Connecting an TLS client to an TLS server
        • Invoking socket operations for TLS sessions
          • Identifying the TLS server in a client session
          • Deadlocking when a non-TLS client socket connects to an TLS server socket
      • Examples using ABL sockets
        • Socket example using a method as a callback
    • Host Language Call Interface
      • HLC and OpenEdge
        • Uses of HLC
      • Requirements for using HLC
        • Use the CALL statement
        • Map routine identifiers using PRODSP()
        • Indicate whether the C source code is thread safe
        • Guidelines for making the C source code thread safe
          • C run-time library functions interposed in the OpenEdge code
      • HLC files and directories
      • Build an HLC library
        • Object files shipped with OpenEdge
      • Write C functions
        • Top-level C function declaration
        • Return error codes from a top-level function
        • Name C functions
        • C function portability
      • Avoid common HLC errors
      • Memory allocation
      • Data size
      • Use HLC library functions
        • Access ABL data
        • Data type conversion
          • Convert C language data types to ABL data types
          • Convert ABL data types to C language data types
        • Call an HLC library function
        • Timer services
        • User interrupt handling
        • Use a library function that writes to a shared buffer
        • Pass error codes back to ABL
      • HLC applications on Unix systems
        • Handle raw disk I/O
        • Handle terminal I/O
          • Use the proscopn(), prosccls(), and promsgd() functions
        • Handle abnormal exits
      • Sample HLC application
        • Run the Tank sample application on Windows
        • Run the Tank sample application on Unix
        • Source code listings
  • COM Object Data Type Mapping
    • Data type conversion strategy
      • Converting COM to ABL data types
      • Converting ABL to COM data types
      • General conversion features and limitations
    • Conversions from COM to ABL data types
    • Conversions from ABL to COM data types
      • ABL to COM data type features and limitations
        • Array conversions
        • Pointer conversions
        • ABL data types not converted
    • Alternate COM data type names
  • Audit Policy Maintenance APIs
    • API overview
      • Reference to API procedure files
      • Using the generic utility and caching APIs with an application server
    • Generic utility API
      • cancel-import-from-xml procedure
      • check-conflicts procedure
      • export-audit-events procedure
      • export-cached-audit-events procedure
      • fill-audit-dataset procedure
      • getAuditEvents procedure
      • get-complete-dbname-list procedure
      • get-DB-Name function
      • get-dbname-list procedure
      • get-policies-merge procedure
      • has-DB-option function
      • isDBOnAppServer function
      • override-policies-from-xml procedure
      • policies-dataset-read-xml procedure
      • policies-dataset-write-xml procedure
      • setAppServerHandle procedure
      • updateAuditEvent procedure
      • update-auditing-policies procedure
    • Caching API
      • changeAuditDatabase procedure
      • export-cached-audit-events procedure
      • export-policies-to-xml procedure
      • get-audit-events procedure
      • get-conflict-info procedure
      • getDataModified procedure
      • get-merge-info procedure
      • getNextAppLevelEventID function
      • hasApplEvents function
      • import-audit-events procedure
      • import-policies-from-xml procedure
      • is-valid-event-id function
      • registerAuditTableHandle procedure
      • rejectChangesAuditDatabase procedure
      • resubmit-import-from-xml procedure
      • saveAuditEventChanges procedure
      • saveChangesAuditDatabase procedure
      • set-tt-hdls-for-dataset procedure
    • Exporting policies to XML
      • _exp-policies.p
      • _exp-policies-db.p
    • Importing policies from XML
      • copy-changes-to-dset procedure
      • import-xml-db procedure
      • import-xml-fill-dset procedure
      • refresh-db-cache procedure
      • save-changes-to-db procedure
    • Additional audit policy procedures
      • _aud-conflict.p
      • _get-audevents.p
      • _get-db-list.p
      • _get-policies.p
      • _update-policies.p
  • Change Data Capture ABL references
    • API entities and entity service methods
      • New( ) method (Table policy)
      • New( ) method (Table policies)
      • New( ) method (Field policy)
      • Create( ) method
      • Create( ) method (Table policies)
      • Get( ) method
      • Get( ) method (Table policies)
      • GetTable( ) method (Table policy)
      • GetFilter( ) method (Table policies)
      • Update( ) method (Table policy)
      • Update( ) method (Table policies)
      • Delete( ) method
    • Code examples
      • Create CDC policies
      • Create bulk CDC policies
      • Get CDC policies
      • Update CDC policies
      • Delete CDC policies
    • Enums
    • Interface properties (Table policy)
    • Interface properties (Field policy)
    • API to generate Change Data Capture policy program
    • ABL procedure to dump
      • Understanding the structure of a .cd file
    • ABL procedure to load
    • ABL support classes for CDC
      • CDCTrackingHelper class
      • CDCOperation enumeration
      • ABL examples
  • HLC Library Function Reference
    • Function summary
      • Shared-variable access
      • Shared-buffer access
      • Screen display
      • Interrupt handling
      • Timer-service routines
    • Function reference
      • prockint( ) - Test for Interrupt Key
      • proclear( ) - Clear the Display
      • procncel( ) - Cancel Interval Timer
      • proevt( ) - Set Interval Timer
      • profldix( ) - Return Field Handle
      • promsgd( ) - Display Message
      • prordbc( ) - Read CHARACTER Field
      • prordbd( ) - Read DATE Field
      • prordbi( ) - Read INTEGER Field
      • prordbl( ) - Read LOGICAL Field
      • prordbn( ) - Read DECIMAL Field
      • prordbr( ) - Read RECID Field
      • prordc( ) - Read CHARACTER Variable
      • prordd( ) - Read DATE Variable
      • prordi( ) - Read INTEGER Variable
      • prordl( ) - Read LOGICAL Variable
      • prordn( ) - Read DECIMAL Variable
      • prordr( ) - Read RECID Variable
      • prosccls( ) - Set Terminal To Raw Mode and Refresh
      • proscopn( ) - Set Terminal To Initial Mode
      • prosleep( ) - Sleep For Specified Interval
      • prowait( ) - Wait For Timer To Expire
      • prowtbc( ) - Write CHARACTER Field
      • prowtbd( ) - Write DATE Field
      • prowtbi( ) - Write INTEGER Field
      • prowtbl( ) - Write LOGICAL Field
      • prowtbn( ) - Write DECIMAL Field
      • prowtbr( ) - Write RECID Field
      • prowtc( ) - Write CHARACTER Variable
      • prowtd( ) - Write DATE Variable
      • prowti( ) - Write INTEGER Variable
      • prowtl( ) - Write LOGICAL Variable
      • prowtn( ) - Write DECIMAL Variable
      • prowtr( ) - Write RECID Variable
  • Command and Utility Reference
    • QUOTER utility
  • Database Administration Entity Interface Reference
    • IAdministrator interface
      • IAdministrator properties
      • IAdministrator methods
      • IAdministrator examples
    • IArea interface
      • IArea properties
      • IArea methods
      • IArea examples
        • Creating areas
        • Updating areas used for extents
    • IAuthenticationSystem interface
      • IAuthenticationSystem properties
      • IAuthenticationSystem methods
      • IAuthenticationSystem examples
        • Creating an authentication system
        • Updating an existing authentication system
    • IDataAdminElement interface
      • IDataAdminElement properties
      • IDataAdminElement methods
      • IDataAdminElement examples
    • IDataAdminService interface
      • IDataAdminService methods for Dynamic Data Masking
      • IDataAdminService examples for Dynamic Data Masking
        • Configure DDM settings
        • Unset mask for a field
        • Unset authorization tag for a field
        • Create authorization tag using OpenEdge.DataAdmin.*
        • Delete authorization tag
        • Update authorization tag
        • Create role using OpenEdge.DataAdmin.*
        • Delete role using OpenEdge.DataAdmin.*
        • Grant role to a user using OpenEdge.DataAdmin.*
        • Delete granted role using OpenEdge.DataAdmin.*
        • Create user using OpenEdge.DataAdmin.*
        • Delete user using OpenEdge.DataAdmin.*
        • Get mask and authorization tag for any field in a table
        • Get authorization tag and associated user-defined role
        • Get role grants for a user
    • IDomain interface
      • IDomain properties
      • IDomain methods
      • IDomain examples
        • Creating a new domain
        • Editing properties on an existing domain
        • Adding users to an existing domain
    • IExtent interface
      • IExtent properties
      • IExtent methods
      • IExtent examples
    • IField interface
      • IField properties
      • IField methods
    • IFieldPermission interface
      • IFieldPermission properties
      • IFieldPermission methods
      • IFieldPermission examples
    • IIndex interface
      • IIndex properties
      • IIndex methods
    • IIndexField interface
      • IIndexField properties
    • IPartition interface
      • IPartition properties
      • IPartition methods
      • IPartition examples
    • IPartitionOwner interface
      • IPartitionOwner properties
      • IPartitionOwner methods
    • IPartitionParent interface
      • IPartitionParent properties
    • IPartitionPolicy interface
      • IPartitionPolicy properties
      • IPartitionPolicy methods
      • IPartitionPolicy examples
        • Creating a partition policy for an empty table
        • Editing an existing partition policy
        • Creating a policy for a table with data
        • Renaming a partition policy
    • IPartitionPolicyDetail interface
      • IPartitionPolicyDetail properties
      • IPartitionPolicyDetail methods
      • IPartitionPolicyDetail examples
        • Creating a new partition detail
        • Finding by name
        • Finding last by value
        • Renaming of a partition policy detail
        • Setting a partition policy detail as read-only
    • ISchema interface
      • ISchema properties
      • ISchema methods
      • ISchema examples
    • ISchemaElement interface
      • ISchemaElement properties
      • ISchemaElement methods
    • ISequence interface
      • ISequence properties
      • ISequence methods
      • ISequence examples
        • Creating a sequence
        • Setting properties for an existing sequence
    • ISequenceValue interface
      • ISequenceValue properties
      • ISequenceValue methods
      • ISequenceValue examples
        • Changing the current value of a sequence for a specific tenant
        • Changing the current value of sequence in a tenant's sequence collection
    • ITable interface
      • ITable properties
      • ITable methods
      • ITable examples
        • Allocating table partitions
        • Managing partitions for a table
    • ITablePermission interface
      • ITablePermission properties
      • ITablePermission methods
      • ITablePermission examples
    • ITenant interface
      • ITenant properties
      • ITenant methods
      • ITenant examples
        • Creating and editing a tenant
        • Adding domains to a tenant
        • Adding tenant groups to a tenant
        • Managing partitions for a tenant
    • ITenantGroup interface
      • ITenantGroup properties
      • ITenantGroup methods
      • ITenantGroup examples
        • Creating and editing a tenant group
        • Adding tenants to a tenant group
        • Managing partitions for a tenant group
    • IUser interface
      • IUser properties
      • IUser methods
      • IUser examples
        • Creating and editing a user
        • Editing an existing user
    • IUserFieldPermission interface
      • IUserFieldPermission properties
      • IUserFieldPermission methods
    • IUserPermission interface
      • IUserPermission properties
      • IUserPermission methods
    • IUserTablePermission interface
      • IUserTablePermission properties
      • IUserTablePermission methods
  • Database Administration Entity Collection Interface Reference
    • Collection interface naming conventions
    • Common collection features
    • IAreaSet interface
      • IAreaSet properties
      • IAreaSet methods
    • IAuthenticationSystemSet interface
      • IAuthenticationSystemSet properties
      • IAuthenticationSystemSet methods
    • IDataAdminCollection interface
      • IDataAdminCollection properties
      • IDataAdminCollection methods
    • IDomainSet interface
      • IDomainSet properties
      • IDomainSet methods
    • IExtentList interface
      • IExtentList properties
      • IExtentList methods
    • IFieldPermissionSet interface
      • IFieldPermissionSet properties
      • IFieldPermissionSet methods
    • IFieldSet interface
      • IFieldSet properties
      • IFieldSet methods
    • IIndexSet interface
      • IIndexSet properties
      • IIndexSet methods
    • IIterator interface
      • IIterator methods
      • Examples for using the Iterator method
    • IPartitionCollection interface
      • IPartitionCollection properties
      • IPartitionCollection methods
    • IPartitionMap interface
      • IPartitionMap properties
      • IPartitionMap methods
    • IPartitionPolicyDetailSet interface
      • IPartitionPolicyDetailSet properties
      • IPartitionPolicyDetailSet methods
    • IPartitionPolicySet interface
      • IPartionPolicySet properties
      • IPartionPolicySet methods
    • ISchemaPartitionMap interface
      • ISchemaPartitionMap properties
      • ISchemaPartitionMap methods
    • ISequenceSet interface
      • ISequenceSet properties
      • ISequenceSet methods
    • ISequenceValueMap interface
      • ISequenceValueMap properties
      • ISequenceValueMap methods
    • ITablePermissionSet interface
      • ITablePermissionSet properties
      • ITablePermissionSet methods
    • ITableSet interface
      • ITableSet properties
      • ITableSet methods
    • ITenantGroupSet interface
      • ITenantGroupSet properties
      • ITenantGroupSet methods
    • ITenantSet interface
      • ITenantSet properties
      • ITenantSet methods
    • IUserFieldPermissionSet interface
      • IUserFieldPermissionSet properties
      • IUserFieldPermissionSet methods
    • IUserPermissionSet interface
      • IUserPermissionSet properties
      • IUserPermissionSet methods
    • IUserSet interface
      • IUserSet properties
      • IUserSet methods
    • IUserTablePermissionSet interface
      • IUserTablePermissionSet properties
      • IUserTablePermissionSet methods
Table of Contents

Writing queries using the CONTAINS operator

Save PDF
Save selected topicSave selected topic and subtopicsSave all topics
Share
Share to emailCopy topic URL
Print
  • Last Updated: January 17, 2024
  • 1 minute read
    • OpenEdge
    • Version 12.8
    • Documentation

Once you associate a compiled word-break table with a database that has word indexes, if necessary, populate the database and rebuild the word indexes. You can then write queries that use the CONTAINS operator.

Contents
  • Syntax of the CONTAINS operator of the WHERE option
  • Examples of the CONTAINS operator
TitleResults for “How to create a CRG?”Also Available inAlert