ABL constructs that support Unicode filenames
- Last Updated: October 21, 2025
- 2 minute read
- OpenEdge
- Version 12.2
- Documentation
A subset of ABL constructs support the use of the full Unicode character set in filenames, including both ASCII and non-ASCII characters.
The following table lists those constructs and the associated elements that
can contain any Unicode character. Windows natively stores filenames as Unicode (UTF-16),
and for these constructs, the AVM converts filenames between Unicode and the code page set
in the startup parameter -cpinternal. Most UNIX/Linux
implementations support UTF-8 Unicode filenames. In both Windows and UNIX/Linux systems, the
parameter -cpinternal should be set to UTF-8 to ensure that
the AVM will be able to properly access files with Unicode names. For more information on
-cpinternal, see Startup Command and
Parameter Reference.
| ABL construct | Elements that can accept Unicode values |
|---|---|
ADD-SCHEMA-LOCATION
|
location |
CONTEXT-HELP-FILE
|
This attribute can hold pathnames that contain Unicode characters. |
COPY-LOB
|
FROM
source-filename
TO
target-filename
|
DEFINE IMAGE
|
FILE
name
|
DOS
|
command-token
expression ) |
FILE-NAME
|
When used with the FILE-INFO handle,
this attribute can hold filenames that contain Unicode characters. |
FILE-FULL-PATHNAME
|
This attribute can hold pathnames that contain Unicode characters. |
FILE-PATHNAME
|
This attribute can hold pathnames that contain Unicode characters. |
Framephrase, CONTEXT-HELP-FILE
|
help-file-name |
GET-DROPPED-FILE
|
This method can return pathnames that contain Unicode characters. |
Image phrase, FILE |
name |
INPUT FROM
|
opsys-file
expression )
|
INPUT THROUGH
|
program-name
VALUE
(
expression ) |
LOAD (statement)
|
DIR
directory
|
LOAD (handle method) |
file |
LoadControls
|
control-filename |
LOAD-ICON
|
icon-filename |
LOAD-IMAGE
|
filename |
LOAD-MOUSE-POINTER
|
pointer-name |
LOAD-PICTURE
|
image |
LOAD-SMALL-ICON
|
smallicon-filename |
OS-APPEND
|
|
OS-COMMAND
|
|
OS-COPY
|
|
OS-COMMAND
|
|
OS-CREATE-DIR
|
|
OS-DELETE
|
|
OS-RENAME
|
|
OUTPUT THROUGH
|
|
OUTPUT TO
|
|
PATHNAME
|
This attribute can hold pathnames that contain Unicode characters. |
PRINTER-NAME
|
This attribute can hold printer names that contain Unicode characters. |
PROCEDURE
|
EXTERNAL "
dllname"
|
READ-FILE
|
filename |
READ-XML
|
file schema-location |
READ-XMLSCEHMA
|
file |
SAVE
|
file |
SAVE-FILE
|
filename |
SCHEMA-LOCATION
|
This attribute can hold values that contain Unicode characters. |
SCHEMA-PATH
|
This attribute can hold pathnames that contain Unicode characters. |
SEARCH
|
opsys-file |
SET-INPUT-SOURCE
|
file |
SET-OUTPUT-DESTINATION
|
file |
SYSTEM-DIALOG-GET-DIR
|
character-field
INITIAL-DIR
directory-string
|
SYSTEM-DIALOG-GET-FILE
|
character-field
INITIAL-DIR
directory-string
|
SYSTEM-HELP
|
file-string |
WRITE-XML
|
file schema-location |
WRITE-XMLSCHEMA
|
file |
XML-SCHEMA-PATH
|
This attribute can hold pathnames that contain Unicode characters. |
The ABL constructs listed in the following table do not support the full
Unicode character set. Some constructs have strict limits, as noted in the table, but the
rest are limited according to the operating system. In Windows, they are restricted to
characters from the code page set in the Language for non-Unicode Programs (which is found
under Region Settings in the Control Panel for Windows). A total of 256 characters can be
used in Windows filenames, including non-ASCII characters, but the code page set in -cpinternal must match the code page selected in the Language
for non-Unicode Programs. If your filenames contain Unicode characters outside of that code
page, the AVM will not be able to access the file. In UNIX/Linux, the set of characters
should be restricted to those available in the code page set in -cpinternal.
For both
Windows and UNIX/Linux, -cpinternal must always
be the same if a filename used with one of the constructs in the
following table contains characters outside of ASCII. Restricting
all filenames used with these constructs to ASCII characters only
(unless a tighter restriction is noted) is the recommended practice.
{ } (include) |
CALL-NAME
|
CLASS1
|
COMPILE
|
CONNECT2
|
CREATE DATABASE2
|
INTERFACE1
|
LIBRARY1 |
LOG-MANAGER:LOGFILE-NAME
|
NEW1
|
PROMSGS
|
PROPATH
|
RCODE-INFO3
|
RUN
|
SAVE-CACHE
|
SESSION:BASE-ADE
|
USING1
|
FILE-NAME,
when used with the FILE-INFO handle, does support
Unicode characters, but when FILE-NAME is used
with RCODE-INFO, it does not.