Category Archives: Clarion News

Clarion Unicode – beta refresh (14523)

Clarion · Unicode Preview · Beta Refresh

Refresh build 14523 — NOW, NOWUTC, DATE, TIME and DATETIME as built-in procedures, TopSpeedW keys in your locale’s order, and a Dictionary Editor that keeps every description in your language

A date-time value comes from one clock read: NOW(dt) fills a DATETIME, NOW(d, t) a date and a time that can never straddle midnight, and DATE(dt) / TIME(dt) take it apart again. TopSpeedW USTRING keys sort the way your QUEUE sorts, by the Windows locale stored in the file. The Dictionary Editor keeps table, key and version descriptions and every comment in your language and shows the tables flat or grouped by category, the Applications pad sorts from a list and shows when each procedure last changed, and a report blob prints from SQL tables too. Already testing? Everything below is new since build 14487.

Language NOW · NOWUTC · DATE(dt) · TIME(dt) · DATETIME(dt, d, t) built in TopSpeedW USTRING keys in the Windows locale order · /COLLATE=OFF · COLLATELOCALE Dictionary Editor descriptions and comments in any script · Group by Category on or off AppGen Applications pad sort list · last-modified stamp per procedure · Defaults-tab font Report to PDF Image 2 PDF keeps your output name · auto-sized TRN fields print whole SQL report blobs from SQL tables · exact BLOB size after ADD · three new how-do-I topics

First the two changes every Clarion developer meets in the first minute — the Applications pad and the Dictionary Editor — then the Unicode and language highlights of this drop, then the full tester guide, whose “What’s new” section lists everything that changed since you last read it.

≡

For every developer: one-click sort in the Applications pad, and when each procedure last changed

The Applications pad’s sort button is now a split button: the face still cycles Name, Generation order and Modification date, and the arrow opens the three orders with the current one checked, so one click takes you straight to the order you want; the pad’s bottom line names the order in force and your choice carries over. Two check marks on Tools › Options › Clarion › Applications (AppGen) put the date and time of the last edit where you work: Always show modification date and time in the Applications pad keeps the stamp beside every application, and Show last modified date and time after each procedure in the Application Tree adds it after every procedure row in the Procedure, Module, Template, Name and Category views, with Procedure Properties showing the same stamp as a read-only Last modified line. The names still lead, so the order and the locator are as before. A procedure made from the Defaults tab now starts with your default font too. From beta requests and a beta report.

The Applications pad: the sort button's drop list picks Name, Generation order or Modification date
The Applications pad: one click on the arrow, pick the order.
Tools, Options, Applications (AppGen): the two last-modified check marks
Tools › Options › Applications (AppGen): the two last-modified check marks.
Procedure Properties with the read-only Last modified line
Procedure Properties: the same stamp as a read-only line.
▤

Dictionary Editor: the whole dictionary flat, or grouped by category — one check mark

Below the nine sort orders, Sort Tables has a Group by Category check mark. Checked, the DCT Explorer and the Tables pad show one folder per category as before. Clear it and every table lists flat under Tables, so the order you picked runs across the whole dictionary: Driver, for example, puts all the MSSQL tables together whatever category they sit in. Your categories are untouched and come back the moment you check it again. The same switch is on the Dictionary menu under Sort Tables and in Tools › Options › Clarion › Dictionary Editor › Table Options. From a beta report.

⏱

Date and time: the conversions are built-in procedures

NOW(dt) fills a DATETIME from one clock read (100 ns where Windows gives it); NOW(d, t) returns today’s date and the time of the same instant, so the pair can never straddle midnight the way TODAY() followed by CLOCK() can. NOWUTC gives the same instant in UTC with the local offset, DATE(dt) and TIME(dt) return the two parts of a DATETIME, TIME(h, m, s) builds a time the way DATE(m, d, y) builds a date, and DATETIME(dt, date, time) puts them together. Every result is exact and the same as the DateTimeUtil class gives; the class stays. A prototype of your own that clashes with a built-in now names it. From a beta request.

↕

TopSpeedW: USTRING keys sort by the Windows locale

A TopSpeedW file created from this build on sorts a USTRING key the way a keyed QUEUE or SORT() sorts the same values: Ćup sits between Cena and Dan on a Croatian file, é sorts with e, and NOCASE is the locale’s case-insensitive order. The locale in force at CREATE is stored in the file, so the order travels with it to any machine; SEND(File,'COLLATELOCALE') answers it, and DRIVER('TopSpeedW','/COLLATE=OFF') keeps the code-unit order of earlier builds. Files created by earlier builds keep their order; re-create a file to move it. From a beta report.

▤

Dictionary Editor: every description and comment in your language

The Description of a table, an alias, a key, a table category and a dictionary version, and every Comment, round-trip Unicode text exactly through save and reopen, the same as the column properties do; a key description the templates quote reaches the running application as the exact text. From a beta report.

▣

Report to PDF: your output name, and every auto-sized field whole

With PDF Library to Use = Image 2 PDF, a report whose Output Name Type is Fixed or Variable, or whose code sets the name with SetFileName, writes that file when you choose Save As in the previewer, the same as the Clarion PDF library does; the Save dialog appears only when no name is set. A report STRING with the TRN attribute and no width or height in its AT() now prints whole on a Unicode page in the PDF, matching the Clarion 11 output of the same application. The page reader compiles into the application, so rebuild it after installing. From beta reports.

◆

Reports and SQL: a blob per detail from SQL tables, exact sizes after ADD

A report TEXT,USE(blob) or IMAGE,USE(blob) fed from a VIEW over a SQL Server, PostgreSQL, ODBC or SQLite table prints each detail’s own blob, as it has on TopSpeed since build 14487, and SIZE(blob) after NEXT(view) answers on a SQL file too. On the MSSQL and ODBC drivers the size a blob carries after the ADD that streamed it is the length of the data you stored, so a second ADD from the same record buffer lands its row on ODBC Driver 18 for SQL Server as well. From a beta report.

\

Designers and templates: @K escapes everywhere, locators typed from the key

ENTRY(@K(###)@@@-##\@##K), the Key-in picture from the help, now opens in the Window and Report Designers and generates and evaluates the way it compiles: inside a @K picture a \ makes the next character a display character. The Clarion-chain browse locator value takes its type from the key component it locates on: a USTRING key gets a USTRING(31) value, any other key keeps the CSTRING(31) or STRING(30) the templates always wrote, so an application without wide fields generates the same locator code as before. From beta reports.

?

Help: three SQL how-do-I topics, and the manuals from the same source

How do I spell a PostgreSQL table name in the dictionary (an unquoted name folds to lower case; the one quoted spelling that opens), how do I define an ODBC data source (DSN) for a Clarion application (the 32-bit odbcad32, User vs System DSN, how OWNER and the import wizard use it), and how do I fill in Owner Name and Full Path Name for a SQL table. The seven manuals now print from the help project, so a topic reads the same in F1, in the PDF and in the new Markdown edition of each book made for AI tools; the current set is posted on the beta forum.

Full tester guide — mental model, conversion rules, DCT import table, screen controls, reports, blobs, SQL / SQLite / text drivers / TopSpeedW / Memory / IP, recipes, the new-language-surface quick reference, and what to focus on when testing. The guide’s “What’s new” section lists everything in this drop, and every section has its task topic in the F1 help’s “How do I …” chapter.

Open the full Unicode Tester Guide

Report tool authors — the wide generator surface (IReportGeneratorW), format detection, the EMF record set, transition paths per integration style, and the PageTextIndexClass text index the previewer searches with:

EMF Page Files — Transition Note

Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation — if you see something different, the beta forum is the place.

Clarion Unicode – beta refresh (14487)

Clarion · Unicode Preview · Beta Refresh

Refresh build 14487 — table categories and nine sort orders in the Dictionary Editor, your font on every new window, and a debugger that remembers your session

A large dictionary reads as a handful of groups: file its tables into categories by drag, by a checked list or from Table Properties, and sort them by any Table Properties value. Every script shows on an MS Sans Serif window, new windows start with the font you pick, and ClarionCL /afr moves a whole application to another face in one command. Reports print a blob per detail and every band of a Unicode report, the debugger brings back your breakpoints and windows, and browse locators take text in any script. Already testing? Everything below is new since build 14438.

Dictionary Editor table categories · Assign Tables · nine sort orders · every version in the DCTX Fonts raster faces show every script · default font for new windows · ClarionCL /afr Reports TEXT / IMAGE,USE(blob) per detail · Unicode bands that grow and collapse · HasPreviewer() Debugger session memory · strings in one row · THREAD copies live · Step Source Browses locators in any script · USTRING sort fields · Initial Values in any script IDE and compiler Errors pad filters · warning 507 finds the missing ? · ClarionCL messages

Highlights of this drop — then the full tester guide, whose “What’s new” section lists everything that changed since you last read it.

▤

Dictionary Editor: group your tables into categories

Add Category in the DCT Explorer names a group, and each category lists its own tables below the Pools, Globals and Tables folders. Drag one table or many onto a category, or right-click it and choose Assign Tables: a checked list with a filter and Check Shown makes “every ORDER table” two clicks, and a Current category column shows where each table sits now. The Category drop list on Table Properties does the same for one table. Categories are saved in the dictionary and travel in its DCTX text; an earlier Clarion 12 build imports the same file whole. From a beta request.

The DCT Explorer with table categories and the Assign Tables dialog
↕

Dictionary Editor: sort your tables by any Table Properties value

The Sort Tables dropdown, the Dictionary menu and the Options page offer nine orders in three groups that follow the Table Properties dialog: Alphabetical, Prefix, Description · Driver, Driver Options, Owner Name, Full Path Name · Last Modified Date, Creation Date. Driver groups the tables by file driver, Full Path Name groups SQL tables by schema and file tables by folder, Owner Name groups them by connection, and the sort value shows in front of each table name so the grouping reads at a glance. A table you edit moves to its new place at once.

The Sort Tables dropdown with nine orders in three groups
A

New windows start with your font

Tools › Options › Clarion › Applications (AppGen) › “Default font for new windows” picks the face, size and style once (shipped Segoe UI 11). Every wizard’s Theme page offers “Use my default font for the windows”, on by default, in both template chains; procedures from the Templates and Defaults tabs, Ctrl-D structures, the designer’s default window and a new Win32 EXE project start with it too. Report page fonts keep the layout’s values. Your own templates read it as %DefaultWindowFontName, %DefaultWindowFontSize and %DefaultWindowFontStyle.

Tools, Options, Applications (AppGen): the Default font for new windows group
/

ClarionCL /afr: change an application’s font face in one command

ClarionCL /afr myapp.app "MS Sans Serif" "Microsoft Sans Serif" replaces the face in every window, every template prompt that holds it and every embed that spells it in quotes. Reports are your separate decision: add the word reports as a fourth parameter and the report structures change too. It works on the application itself, with no TXA export and import, prints the count, saves only when something changed, and the AppGen’s usual myapp.bpp keeps the app as it was.

Ω

Every script shows on an MS Sans Serif window

A window on FONT('MS Sans Serif'), or MS Serif, Courier or System, the raster faces Windows ships for one code page, draws Greek, Cyrillic, Chinese and every other script in its LIST, STRING, TAB, menu, status bar, OPTION caption and MESSAGE, the way the ENTRY and TEXT always did. The runtime draws such text with the metric-compatible TrueType twin of the font (Microsoft Sans Serif for MS Sans Serif), so nothing moves; ANSI text and TrueType fonts paint exactly as before. From a beta report.

▣

Reports: a picture or a memo per row from a BLOB

A report TEXT,USE(blob) prints the blob’s text and a report IMAGE,USE(blob) its picture, for each detail the row it is printing: a product sheet with each product’s photo, an order list with each order’s notes. On a REPORT,UNICODE page a BLOB,UNICODE prints its exact Unicode text. For embed code and third-party templates, ReportManager.HasPreviewer() answers “is a previewer attached” whichever previewer the report uses. From beta reports.

Unicode reports print every band, in every script

On a REPORT,UNICODE page a detail with a RESIZE TEXT grows to fit its text and a SKIP control collapses its band, exactly as on an ANSI report, and every TEXT prints Greek, Chinese and any other script as typed, whether its text comes from PROP:Text, a STRING or a USTRING. Reports without the UNICODE attribute print as before. From a beta report: fixed now.

◆

The debugger remembers your session and reads your data plainly

Breakpoints (saved each time you set or clear one), open source files and the placement of every debugger window come back on the next run of the same program, kept in <program>.dbs beside it; your IDE settings file is never touched. A STRING, CSTRING or USTRING is one row with its whole text, Edit Variable takes the whole text, a record reference opens straight to its fields, and a THREAD variable shows the running thread’s copy, labelled (thread). Step Source steps straight through library calls, and F1 opens the debugger’s own help. From beta reports.

⌕

Locate and filter browses in any script

Type Cyrillic, Greek or Chinese into a Filtered, Entry or Incremental locator over a USTRING column and the browse filters and positions on it, in ABC and in the Clarion chain. A browse or process sorted on a USTRING field gets the string step and locator behaviour, its view filter and range limits quote the value, and an Initial Value in any script primes the record exactly. EntryLocatorClass.Shadow is a USTRING(40); regenerate to pick it up. From beta reports.

Full tester guide — mental model, conversion rules, DCT import table, screen controls, reports, blobs, SQL / SQLite / text drivers / TopSpeedW / Memory / IP, recipes, the new-language-surface quick reference, and what to focus on when testing. The guide’s “What’s new” section lists everything in this drop, and every section has its task topic in the F1 help’s “How do I …” chapter.

Open the full Unicode Tester Guide

Report tool authors — the wide generator surface (IReportGeneratorW), format detection, the EMF record set, transition paths per integration style, and the PageTextIndexClass text index the previewer searches with:

EMF Page Files — Transition Note

Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation — if you see something different, the beta forum is the place.

Clarion Unicode – beta refresh (14438)

Clarion · Unicode Preview · Beta Refresh

Refresh build 14438 — a leaner report previewer, a debug-output pad in the IDE, Sort Tables on the DCT toolbar, and ClarionCL imports a TXA into your app

The report previewer’s toolbar is one pages-layout button plus first / previous / next / last paging buttons, with find arrows you recognise. The IDE gets a DebugViewer pad for the OutputDebugString stream and an Errors pad that always shows the whole build. The Dictionary Editor sorts its tables from the toolbar and the Dictionary menu. ClarionCL /aim merges a TXA into an existing application without the IDE, and formulas that call your own functions pass the editor, the TXA and Copy Procedure. Every ENTRY paints the same whichever engine draws it, a 4-digit year typed into @D1 lands on the right day, a picture on a Unicode report prints to PDF, and a browse over wide SQL tables keeps its place. Already testing? Everything below is new since build 14407.

IDE DebugViewer pad · Errors pad always on · Sort Tables on the DCT toolbar · Window Preview shows every LIST column Report previewer one layout button · VCR paging buttons · first / last in the sidebar AppGen ClarionCL /aim · formulas calling app functions · Help file taken as typed Entry controls blank date paints blank · @D1 with a 4-digit year · wide entry = classic face Reports pictures on a Unicode report to PDF · Image 2 PDF builds wide From the forums SELECT(0) reports itself · 2,048-byte view positions · FILE:QueueW one Attrib · Position pane in AT() order

Highlights of this drop — then the full tester guide, whose “What’s new” section lists everything that changed since you last read it.

▸

Report previewer: a leaner toolbar that pages the way you expect

The Across and Down spins are one button that reads “1 Page” or “3 x 2” and opens a popup (Alt+L) with Across 1–6 and Down 1–4; View › Change Display keeps the full range. Four VCR buttons follow the Page spin: first, previous, next and last page, greyed at either end, and the layout button closes the row after Zoom. The Find bar’s previous / next are the up and down arrows you know from Notepad and VS Code, and the thumbnail sidebar’s top row has first-page and last-page buttons beside the chevrons. For a derived class: Ctl.PageFirst / PagePrev / PageNext / PageLast. From beta reports.

≡

The IDE: a debug-output pad, and an Errors pad that shows the whole build

Tools › Show DebugViewer opens a pad that captures the Windows debug output stream: everything an application writes with OutputDebugString, the driver’s DEBUG: trace target and the runtime’s own notes. Capture starts when you press its start button, and while it is on it owns the stream the way DebugView does. The Errors pad lists every diagnostic of the build with the Errors / Warnings / Messages counts on their buttons; a Build that finds the project up to date says so in the list, so “0 warnings” always means what it says (use Rebuild to see a compile’s warnings again).

▤

Dictionary Editor: Sort Tables one click away

The DCT Explorer toolbar has a Sort Tables dropdown in the table group, between Delete and Browse Table: Alphabetical, Last Modified Date, Creation Date, the current order checked. Picking another re-sorts the explorer and the Data/Tables pad on the spot; the same three items are on the Dictionary menu, and the Options page keeps working as before. Last Modified order is stable while you browse: a table’s modified date moves only when you change the table. From a beta request.

/

AppGen: ClarionCL /aim, formulas that call your functions, the Help file as typed

ClarionCL /aim myapp.app newproc.txa does what the Application menu’s Import Text does, headless: the app is opened, the TXA merged (procedures of the same name replaced, everything else kept), the app saved; /ai still creates a new app. A formula such as LookupName(STU:FirstName) or GetTag(), calling a Source procedure declared as a function, passes the Formula editor’s check, survives TXA export and import and comes through Copy Procedure intact. The Global Properties Help file entry stores exactly what you type: blank stays blank, MyHelp stays MyHelp, no extension is forced. From beta reports.

@

Entry controls paint the same whichever engine draws them

A blank unmasked ENTRY(@D6) or ENTRY(@T1) shows an empty box again, as in Clarion 11; a MASKed entry with a zero fill keeps its 00/00/0000. A 4-digit year typed into a 2-digit-year picture lands on the right day: 07042026 into ENTRY(@D1) is July 4th 2026, the parts guessed in the picture’s own order. An ENTRY over a LONG, DATE, TIME or STRING always takes the classic editor, and a USTRING entry through a numeric, date or time picture looks exactly like the STRING entry beside it (@n_6 with blanks, 09:00 with its leading zero). From beta reports: fixed now.

▣

Window Designer: Position in AT() order, and a preview that shows every column

The Position pane’s AT rows read X, Y, Width, Height, the order of AT(), GETPOSITION() and SETPOSITION(), for the window, every control and the Report Designer. Window Preview shows every LIST column: a FORMAT with #n# field numbers previews each column with its own sample, a default tip Q''text'' no longer stops the sample queue, and the shipped sample colours are real colours, so no row paints black on black. A source file whose @C picture has blanks inside the separator opens in the designer as it compiles. From beta reports.

P

Report to PDF: pictures on a Unicode report, and the Image 2 PDF library builds wide

An IMAGE on a Unicode report reaches the stock PDF target as a full-colour 32-bit page image and is written as RGB, the same as a plain report’s picture: PNG, BMP and JPG all print to PDF as they do on paper. The I2PDFReportGenerator class carries both report-generator interfaces, IReportGenerator and IReportGeneratorW, so an application on the Image 2 PDF library builds with Unicode reports on, whichever PDF library the Report to PDF extension selects. From beta reports: fixed now.

0

From the forums: SELECT(0) reports itself, 2,048-byte view positions, one Attrib

An explicit SELECT(0) still starts Accept-All as it always did and now writes one line to the debug output stream naming the call (the DebugViewer pad shows it); the compiler warns (507) when SELECT gets a string argument, the SELECT(State) slip where SELECT(?State) was meant. Nothing already compiled changes; the detection comes first so the field can show how often a deliberate zero exists. A browse over wide SQL tables keeps its place: every view and file position buffer in both template chains and the ABC classes is 2,048 bytes, so a view over tables with several hundred fields no longer meets error 78 (regenerate to pick it up). FILE:QueueW has a single Attrib LONG; test it with BAND(FILEW:Attrib, ff_:DIRECTORY).

Full tester guide — mental model, conversion rules, DCT import table, screen controls, reports, blobs, SQL / SQLite / text drivers / TopSpeedW / Memory / IP, recipes, the new-language-surface quick reference, and what to focus on when testing. The guide’s “What’s new” section lists everything in this drop, and every section has its task topic in the F1 help’s “How do I …” chapter.

Open the full Unicode Tester Guide

Report tool authors — the wide generator surface (IReportGeneratorW), format detection, the EMF record set, transition paths per integration style, and the PageTextIndexClass text index the previewer searches with:

EMF Page Files — Transition Note

Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation — if you see something different, the beta forum is the place.

Clarion Unicode – beta refresh (14407)

Clarion · Unicode Preview · Beta Refresh

Refresh build 14407 — compose any date-time picture, the Embed Editor keeps your language, Known Folders in the templates, and a driver trace that reads true

The @C picture now composes a date picture and a time picture of your choice — @C3D010-T04~T~ is an ISO 8601 stamp with milliseconds, @CD12T05~~ a compact file-name stamp — and FORMAT, DEFORMAT, ENTRY controls, the designers and the Source Editor all take the composed form. The Embed Editor keeps a Greek, Cyrillic, Chinese or emoji literal exactly as you typed it, in the .app and on screen. The Global Properties folder lists offer the Windows Known Folders beside the CSIDL values, and the data path is a USTRING. The driver trace file is UTF-8, so every Unicode value in a record dump or a bind line reads as typed. The frame’s Window menu and MDI tab bar, STOP and HALT, TopScan’s Text and Hex Viewers and the Query Center’s DATETIME filter are wide. Already testing? Everything below is new since build 14373.

Language @C[n][D…][T…][~sep~] composed date-time pictures IDE Embed Editor keeps U'' literals · TopScan Text / Hex Viewer wide · Window menu + tab bar wide Templates Known Folders in Global Properties · PROP:DataPath USTRING · QBE DATETIME filter SQL the driver trace file is UTF-8 From the forums STOP() / HALT() wide · ADO MapRsToGroup · @C in the QBE filter · wide captions in the Window list · ??? in the trace · USE(Var,,?Var2) in the designer · FROM(U'...') in the help

Highlights of this drop — then the full tester guide, whose “What’s new” section lists everything that changed since you last read it.

@

The date-time picture takes any date and time format

@C[n][S][D…][T…][B]: n keeps its meaning (0–7 fraction digits), S is one separator character between the two parts (_ for a space, ^ for none, T for ISO 8601, any other character stands for itself), and the two parts are any numbered @D and @T picture with all of their own options. Omitted parts keep today’s shape, so @C, @C3 and @C7 are unchanged. @C3D010-T04~T~ gives 2026-09-09T13:05:07.123, @CD12T05~~ gives 20260909130507, @CD8T4 gives 9 SEP 2026 13:05:07. FORMAT, DEFORMAT, STRING and ENTRY controls and the USTRING lane take the composed form; the Window and Report Designers accept it in the Picture property and draw it on the canvas, and the Source Editor colours the whole picture. The Help topic “Date-Time Pictures” has the full table. From a request on the beta forum.

U’

The Embed Editor keeps your language

Type Greek, Cyrillic, Chinese or emoji inside a '...' literal in any embed and save: the literal is stored in the .app as its portable U'...' form, the same thing the Window and Report Designers do for a caption, and when you open the embed again the editor shows your letters — U'Привет'. The running window shows the text. The unit is one literal, judged against your Windows ANSI code page: a literal the code page holds is saved byte-identical, so existing embeds do not change; only string literals are converted, a comment goes through the code page as before. The How-do-I topic “How do I put Greek, Russian, Chinese or other Unicode text into an embed?” leads with “type it” and keeps the UTF-8 INCLUDE file and the spelled code points as alternatives. From a beta report.

⌂

Known Folders in the templates, a USTRING data path

The two Global Properties dialogs that placed your INI file and your data files in a CSIDL location (App Settings › “Location of Program Name.INI”, File Control › File Access Data Path) now list the Known Folders in the same drop list: Documents, Public Documents, Roaming AppData, Local AppData, ProgramData, User Profile and Downloads. Pick one and the generated program resolves it through the Known Folder API as a USTRING, keeps the INI file name wide (INIClass.InitW), creates the Company\Product sub-folders wide (SpecialFolder.CreateKnownDirIn) and sets SYSTEM{PROP:DataPath} from the USTRING, so a user whose profile folder carries characters outside the ANSI code page gets the exact path. Both chains; an application on a CSIDL value generates exactly what it did.

≡

The driver trace file is UTF-8 — every value reads as you typed it

A USTRING field in the record dump (PROP:Details) and a Unicode bind value on the SQL trace line show their Greek, CJK, Arabic or emoji characters as they are, on SQL Server, PostgreSQL and the other ODBC backends, Oracle and SQLite alike; an accented letter in a plain STRING reads as text too. A new trace file starts with the UTF-8 byte-order mark, so Notepad, the IDE and VS Code open it correctly — delete a trace written by an earlier build before you start a new one. The DEBUG: target shows the same characters in the debugger’s output window. From a beta report of ??? in the trace for Arabic text: fixed now.

▤

Query Center: a DATETIME column in the QBE Filter – Advanced list

A column whose picture is @C (any number of decimals) is a date-time to the filter: every operator takes what the picture displays, a date alone included, and the generated filter uses the column’s own picture — on a SQL backend the ISO literal, on Oracle its TO_CHAR text. Existing date, time, number and string columns generate exactly what they did, with one exception you will like: a SQL date IN list typed with a space after the comma carries both dates. A date-time entry accepts the time to the minute (2026-09-26 10:30) everywhere @C deformats. Everything in the shipping templates and classes that decides “is this picture a date?” tests @C before @D; if your own code classifies by the second character, give it a @C arm first. From a beta report.

▣

Wide in the frame: the Window menu, the MDI tab bar, STOP() and HALT()

A child window with a Unicode caption is listed by that caption in the frame’s Window menu (STD:WindowList) and on the MDI tab bar — set it at run time (0{PROP:Text} = U'...') or declare a U'' title, the title bar, the list and the tab show the same text in any script. STOP() and HALT() show a USTRING message exactly, the way MESSAGE() already does. A tip that came with the same report: in a source file saved as UTF-8 a plain '...' literal is still an ANSI string, so write the text as a U'...' literal and the USTRING holds it exactly. Both from beta reports: fixed now.

16

TopScan: the Text Viewer and the Hex Viewer show a USTRING column in full

Pick a USTRING column in either tool (View › Show Text, View › Show Hex): the Text Viewer shows and edits the text in any script, emoji included, and the Hex Viewer shows the value’s UTF-16 bytes as stored, two per character unit, with a new UTF-16 character pane beside the bytes — one cell per unit, read live from the bytes, an emoji in one cell; click a character and the cursor lands on its first byte, ready for a byte edit. Save in either tool stores exactly what you see. A BLOB,UNICODE column reads the same way; STRING and every other column type look and save as before.

✎

From a beta report: ADO recordsets into your group

TableMapper.MapRsToGroup assigns each recordset column through an ANY bound with WHAT() to the group field — the statement every ADO browse and form runs per column. It holds for every VARIANT type the recordset returns: integers, booleans, doubles, strings; a double into an integer field keeps its whole part, as build 14000 did and as a direct LONG = VARIANT does. Fixed now.

?

From a beta report: the Window Designer keeps USE(Var,,?Var2)

An explicit field equate that is the variable name plus a digit suffix (?PagesAcross2, ?Cnt10, also with the number parameter present: USE(Var,3,?Var3)) came back as USE(Var) once the designer had opened the window, and the compile then reported duplicate equates. The designer keeps it now; USE(Var,,?Var) still comes back as USE(Var), the same equate. And from a question on the beta forum: the FROM help topic now says how a drop list goes wide — FROM(U'...'), one U in front of the whole string, U on every piece of a constant continued with &, a USTRING through {PROP:From} at run time — with index entries under FROM, Unicode, USTRING and “drop list”. Fixed now.

Full tester guide — mental model, conversion rules, DCT import table, screen controls, reports, blobs, SQL / SQLite / text drivers / TopSpeedW / Memory / IP, recipes, the new-language-surface quick reference, and what to focus on when testing. The guide’s “What’s new” section lists everything in this drop, and every section has its task topic in the F1 help’s “How do I …” chapter.

Open the full Unicode Tester Guide

Report tool authors — the wide generator surface (IReportGeneratorW), format detection, the EMF record set, transition paths per integration style, and the PageTextIndexClass text index the previewer searches with:

EMF Page Files — Transition Note

Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation — if you see something different, the beta forum is the place.

Clarion Unicode preview — beta refresh build 14373

Clarion · Unicode Preview · Beta Refresh

Refresh build 14373 — lost SQL connections re-establish themselves, SQL browses fetch faster, and the help gains a “How do I” chapter

A SQL drop. Lost server connections now automatically re-establish the connection to the server and the application continues gracefully: a VPN reconnect, a firewall that closed the session, a laptop that woke up — the files and views stay open, the next operation reconnects, a browse that was paging simply keeps paging. Two new browse prompts fetch a SQL page in one round trip instead of one row per trip, with a BLOB in the page up to 10x faster on SQL Server. A SQL connection configures itself from the OWNER string alone, no DSN on the user’s machine. The IDE’s “select a folder” is the modern Windows folder dialog everywhere. And the F1 help has a “How do I …” chapter with a task topic for every section of the tester guide, every topic in the Index. Plus the fixes and additions from beta testers’ reports in the forums: Known Folders, the wide CLIB twins, a two-picture DateTime format, a friendlier previewer. Already testing? Everything below is new since build 14313.

SQL automatic reconnect · ‘Page fetch size (SQL)’ · ‘BLOB fetch (SQL)’ · PROP:BlobFetch · DSN-less connect IDE the modern select-folder dialog on every “…” Help “How do I …” chapter · every topic indexed · Customizing a SQL Connection Compiler USTRING link names sz / z — rebuild multi-DLL solutions together From the forums Known Folders · CLIB wide twins + RmDirW · Pict(dt, pic1, sep, pic2) · previewer Jump / sidebar · varchar(max) as BLOB · BLOB hot fields · VALUE() / PROP:Value / SPIN FROM wide · PROP:FromQueue · Designer paints <13,10>

Highlights of this drop — then the full tester guide, whose “What’s new” section lists everything that changed since you last read it.

↻

Lost server connections re-establish themselves, the application continues

ODBC, MSSQL, Pervasive SQL and SQL Anywhere drivers. When the link to the server drops under a running program, every file and view of that connection stays open, the failed operation reports error 90 with the driver’s own message (FILEERRORCODE() = 08S01), and the next operation reconnects by itself — including a table the program opens for the first time after the drop, so the first save after an outage goes through. In a generated application (ABC and Clarion chains) the user sees one error box and the usual retry prompt, and Yes saves the record. A browse that was paging when the link went keeps paging: the generated browse re-runs its page fill once, on a fresh connection, and the user sees nothing at all. Hand code simply retries the failed statement; a VIEW continues after a RESET to its last position.

≫

SQL browses fetch a page per round trip — two new prompts

BrowseBox › Actions › Default Behavior, both chains. ‘Page fetch size (SQL)’: a value n fetches n rows per server round trip (ABC sets BRWn.PageSize, the Clarion chain emits BUFFER(view, n, 2, 0, 60)); a Clarion-chain SQL browse moves from one row per trip to n. ‘BLOB fetch (SQL)’ with the new PROP:BlobFetch: a browse that shows a BLOB keeps its page fetch — the driver positions on your row and reads the page in one trip, a 20-row page fill on SQL Server measured 110 us/row down to 11.5. Blank prompts generate exactly what they did, so an existing app changes nothing until you set them. A BLOB projected into a VIEW is the current row’s from the very first read, so a TEXT or IMAGE bound to a browse hot-field BLOB follows the highlight bar.

◫

AppGen: a BLOB can be a browse hot field

Pick a BLOB as a hot field on a BrowseBox and a TEXT or IMAGE bound to it follows the highlight bar: the picture, the note, the document of the selected row. The templates put the BLOB into the browse’s VIEW as a PROJECT and never into the queue (a queue cannot LIKE() a BLOB), and the highlighted row is re-fetched on every selection change, so the control always shows the current row’s blob. Both template chains, no hand code.

⚙

A SQL connection configured from the OWNER string alone

The UNICODECONNECT form works without a DSN on the PostgreSQL Unicode driver and on SQL Server: name the driver DLL and its settings as keywords in the OWNER and nothing is configured on the user’s machine. The new help topic “Customizing a SQL Connection” lays out the three layers — the OWNER string, the driver string switches, the ODBC driver’s own settings — with a copy-ready example for each. Over a slow link to SQL Server, /MULTIPLEACTIVERESULTSETS=TRUE streams the rows instead of a server cursor round trip per fetch block; the guide’s SQL section says when to use it.

▣

The IDE picks folders with the modern dialog

Every “…” in the IDE that asks for a folder — New Project’s Location, the default project location in Options, Find in Files’ Look in, the project option folders — opens the Windows common item dialog in folder mode: the navigation bar, search, the places on the left, a “New folder” button, resizable. The small “Browse For Folder” tree is gone from the IDE. The most reported request of the beta, inside and outside.

⌂

Known Folders: Downloads, Documents, AppData and every other one, by name

SpecialFolder.GetKnownDir(KF:Downloads) returns the user’s Downloads folder, the one the CSIDL list never had. KNOWNFOLDER.EQU declares the common KNOWNFOLDERIDs as KF: equates — Downloads, Documents, Desktop, Pictures, Music, Videos, LocalAppData, RoamingAppData, ProgramData, Profile, Fonts, ProgramFiles, ProgramFilesX86, Startup, the Public ones — and any other folder from KnownFolders.h is one more equate written the same way. GetKnownDir(KF:Documents, 'MyApp') appends your sub-directory, the path comes back as a USTRING so a folder outside the ANSI code page is exact, and GetKnownError() holds the HRESULT of the last call. The CSIDL methods you already use are unchanged.

✚

Wide CLIB twins, a two-picture DateTime, a friendlier Report previewer

CLIB.CLW declares the wide twins FnSplitW, FnMergeW, MkDirW, AccessW and the new RmDirW, so a program that includes CLIB.CLW calls them by name. DateTimeUtil.Pict(dt, '@D10-', 'T', '@T04') joins two pictures with a separator — an ISO stamp, a file-name stamp — in one call. The report previewer’s Jump to a Page shows “of N pages”, clamps a typed number, and has First / Last buttons; the thumbnail sidebar’s scroll buttons sit side by side at the top. And the driver trace now shows a USTRING value in full, in the record dump and on the SQL bind lines, so a trace tells the truth about Unicode data. A browse sorted by a USTRING key on SQL Server positions cleanly from every sort tab, and saving a BLOB with bind tracing on no longer ends in an access-violation box. A wide VALUE() on a CHECK or RADIO lands in the USE variable with its exact units, {PROP:Value} on any captioned control and a SPIN’s wide FROM() deliver exact units too, and CONTENTS(?Combo) answers for a COMBO without a USE variable. And the Window and Report Designers paint <13,10>, every decimal metachar and {n} repeats exactly like the compiled window.

?

F1 help: a “How do I …” chapter, every topic in the Index

Right after Welcome to Clarion in Contents: 22 task topics, one per section of the tester guide (Unicode strings, screens, reports, SQL, TopSpeedW, the lost connection, the faster SQL browse …), each linking to the reference topics it needs. The Index finds them by title and by the words you would type — “lost connection”, “reconnect”, “faster SQL browse”. Every topic in the help now carries its title and chapter as index keywords, the 2026 reference topics carry a “See also” line, and the new browse prompts are documented where F1 on the prompt lands.

✎

From beta testers’ reports: dictionary, AppGen, DATETIME, previewer

varchar(max) imports as a BLOB, so the whole column travels (it joins text, ntext, nvarchar(max) and varbinary(max) under one rule). DateTimeUtil builds from LibSrc alone and gains Pict(dt, picture) — the date part through @D4, the time part through @T4, the whole value through @DT. The Window Previewer’s generated program reads better and compiles every time, with @DT controls primed with a real date-time sample.

ƒ

USTRING link names of their own — rebuild multi-DLL solutions together

USTRING parameters now mangle as sz (every non-RAW form) and z (RAW), a link name no other type can produce, so a *USTRING and a *SHORT,ANY prototype never share one. What to do on this build: regenerate and rebuild every module of a multi-DLL solution together (template-generated .exp files regenerate on their own); a hand-written .exp with zu/su lines changes them to sz; Pro2Exp / Exp2Map users update the letter table.

Full tester guide — mental model, conversion rules, DCT import table, screen controls, reports, blobs, SQL / SQLite / text drivers / TopSpeedW / Memory / IP, recipes, the new-language-surface quick reference, and what to focus on when testing. The guide’s “What’s new” section lists everything in this drop, and every section has its task topic in the F1 help’s “How do I …” chapter.

Open the full Unicode Tester Guide

Report tool authors — the wide generator surface (IReportGeneratorW), format detection, the EMF record set, transition paths per integration style, and the PageTextIndexClass text index the previewer searches with:

EMF Page Files — Transition Note

Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation — if you see something different, the beta forum is the place.

Clarion Unicode preview — refreshed beta build (14313)

Clarion · Unicode Preview · Beta Refresh

Refresh build 14313 — a modern report previewer, Unicode reports by default, a DATETIME type for SQL, and the wide file-name family complete

A bigger drop. With EMF pages new functionality is within reach, and the first of it is a new report previewer: search with highlighted hits, page thumbnails, marks, print or save the marked pages, copy text off the page — on a wide report all of it Unicode. For this beta release every existing application picks the previewer and Unicode (EMF) reports up automatically from the templates on its next generate, so de facto every app gets EMF reports; a hand-coded program reaches the same with the new compiler pragma define(report_unicode=>on). Tell us how that lands on your reports and your third-party report tools — that default is yours to confirm. A new DATETIME type carries a SQL timestamp to 100 nanoseconds through the compiler, the dictionary, the import wizard and every SQL driver. RUN() and COMMAND() go wide, closing the file-name family. Plus the fixes from beta testers’ reports in the forums. Already testing? Everything below is new since build 14258.

Reports ReportPreviewClass · Unicode reports by default · report_unicode define · PROP:Unicode Data DATETIME type · @DT picture · DateTimeUtil · import wizard checkbox Runtime RUN / COMMAND wide · CLIB wide twins · ALL() negative count IDE IMAGE field picker · no BLOB list columns · property search

Highlights of this drop — then the full tester guide, whose “What’s new” section lists everything that changed since you last read it.

▤

A modern report previewer — reached through EMF pages

ReportPreviewClass: text search across every page with the hits highlighted (Ctrl+F, F3, match case), a thumbnail sidebar, page marks with Print Marked and Save Marked Pages As, Fit Page and Ctrl+plus/minus zoom, Shift+drag to copy the text under the band, layout remembered in the INI, the index built on its own thread so a 1,000-page report opens at once. On a wide report the search is Unicode. It is the default for new apps, and a Print Previewer prompt that still reads PrintPreviewClass generates the new class on the next generate; “Keep the classic PrintPreviewClass previewer” opts out.

☷

For this beta release, reports print Unicode (EMF) by default

The new global “Unicode reports” check (on by default for this beta, so we hear how it lands) makes each Report procedure set Report{PROP:Unicode} = True as its report opens — USTRING fields, wide captions and emoji print as typed on .emf pages, error 546 stops, the PDF/HTML/TXT targets register their wide face; a per-procedure “Unicode pages” prompt opts one report out. The same check writes the compiler’s report_unicode define into the project, so hand-coded REPORT structures carry the UNICODE attribute too (PRAGMA('define(report_unicode=>on)') in a hand-coded module). PROP:Unicode is documented as the run-time face of the attribute. Watch for: a third-party page tool that read .wmf files sees .emf now.

⌚

DATETIME: a date and a time in one value, to 100 ns

A new data type — seconds since the Clarion day zero with seven decimal places, the precision of SQL Server’s datetime2(7). Compares, sorts, keys and does arithmetic in seconds; zero is blank. In a SQL table it reads and writes the backend’s timestamp column and CREATE() declares it: datetime2(7), timestamp(6), SQLite ISO text, Oracle TIMESTAMP(7); a VIEW filter on it is evaluated server-side. The @DT…@DT7 picture formats and enters it, DateTimeUtil converts to and from DATE and TIME (SetNow reads the precise clock), the Dictionary Editor offers the type, and the SQL import wizards create it for timestamp columns when “Import date-time columns as DATETIME” is checked (off by default — nothing changes for existing dictionaries).

▶

RUN() and COMMAND() wide — the file-name family is complete

RUN() takes a USTRING command line: a program in a folder outside the Windows codepage is located and started exactly and its parameters travel as typed; an ANSI-only USTRING takes the old path byte-for-byte. COMMAND() no longer shifts every parameter by one for a program that lives in such a folder (the ₿ folders from the forum). CLIB.CLW stays narrow by design, with four exported wide twins (_fnsplitW, _fnmergeW, _mkdirW, _accessW). With EXISTS, COPY/RENAME/REMOVE, DIRECTORY, FILEDIALOG and the PATH family already wide, that closes the family.

✎

Designers and dictionary, from beta testers’ reports

The Window Designer’s IMAGE gets the dictionary-field picker (BLOB and BINARY MEMO fields, the ones IMAGE,USE() accepts), and dropping a BLOB onto a window creates an IMAGE bound to it. A BLOB is never offered as a list-box column, and an app that already has one stops generation with a plain sentence instead of the compiler’s “Illegal parameter for LIKE”. The property-pane search is case-insensitive in every designer, and UNICODE is coloured as an attribute in the editor.

ƒ

Fixes from the forums: ALL(), the PDF class, datetime2 DDL

ALL() with a negative count returns ” again instead of “Clarion RTL internal exception” 0B000000. ABPRPDF.CLW compiles without warnings, and a real defect went with them: a wide report text longer than 99 units was cut in the PDF (150 units drew as 15). MS SQL CREATE of the legacy datetime group emits datetime2(7) on SQL Server 2008 and later — “Specified scale 8 is invalid” is gone.

?

F1 help, current for this drop

The IDE help (ClarionHelp.chm) carries new topics for DATETIME, the Date-Time Pictures, ReportPreviewClass, PageTextIndexClass and the Report template’s Preview Options; PROP:Unicode and the report_unicode define on the REPORT pages; the “Unicode reports” and “Unicode pages” prompts; and the three new stock icons ICON:PageUp, ICON:PageDown and ICON:Clear.

Full tester guide — mental model, conversion rules, DCT import table, screen controls, reports, blobs, SQL / SQLite / text drivers / TopSpeedW / Memory / IP, recipes, and what to focus on when testing. The guide’s “What’s new” section lists everything in this drop; changes are also flagged inline with dated “beta refresh” notes.

Open the full Unicode Tester Guide

Report tool authors — the wide generator surface (IReportGeneratorW), format detection, the EMF record set, transition paths per integration style, and now the PageTextIndexClass text index the new previewer searches with, usable by your own viewer as-is:

EMF Page Files — Transition Note

Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation — if you see something different, tell us on the beta forum.

Clarion Unicode preview — refreshed beta build (14258)

Clarion · Unicode Preview · Beta Refresh

Refresh build 14258 — the designers keep your Unicode, the fixes from four beta threads, and the wide path family

A shorter drop, built from the beta forum. The Window and Report Designers accept every U'' spelling and no longer rewrite it into a raw glyph; the Window Previewer can keep the generated program; DROP lists and COMBOs take a wide FROM at runtime; INSTRING() searches backwards from past the end; FILEDIALOG() opens on a Unicode folder; and the porting notes for SIZE() are in the help. Threads 47, 54, 57 and 60, closed. Already testing? Everything below is new since build 14234.

IDE U” hex literals in the designers · ANSI files keep U” · Save Preview Program Runtime DROP/COMBO wide FROM · INSTRING · FILEDIALOG Help SIZE() porting notes · INSTRING start rule

Highlights of this drop — then the full tester guide, whose “What’s new” section and dated “beta refresh” markers flag exactly what changed since you last read it.

✎

Designers: every U” spelling works, and your Unicode stays Unicode

The Window and Report Designer parse U'<26DDh>', U'<1F600h>' and {n} repeats exactly like the compiler — build 14234 refused a window with a hex literal. And a designer opened from an ANSI .clw now writes wide text back as a U'' literal (decimal units) instead of a raw glyph that forced the save-as-UTF-8 prompt; UTF-8 sources keep the glyph as before.

☷

DROP lists and COMBOs: a runtime wide FROM

?List{PROP:From} = U'…' on a LIST,DROP() or a COMBO keeps its characters — in 14234 that one property took the narrow path, so a declared FROM(U'…') worked and the runtime write showed ?. Reminder for continued FROM strings: put U on every piece.

ƒ

INSTRING backwards from past the end, and two porting notes

INSTRING(sub, s, -1, SIZE(s)) now finds the last match on a CSTRING or USTRING (those push only their used length, so a start past the end returned 0). Porting notes in the help: SIZE() of a USTRING is bytes, so a Windows API’s character count is SIZE(v)/SIZE(v[1]) — right for every string type — never SIZE(v).

▭

Window Previewer: Save Preview Program

A second checkable item in the Window menu, under Unicode Preview: latched on, the generated preview program, its project and exe move into .WinPreview\ in the project folder with the injection include beside them, so File ▸ Open builds and runs it as-is; a preview that fails to compile still keeps its source. Both latches are menu items only — the toolbar keeps just the Preview button.

⌂

FILEDIALOG positioned; the “Internal error 01” dialog is gone

FILEDIALOG() with FILE:Directory and a USTRING start folder opens with the selection on that folder even when its name is outside the Windows codepage. The “Output corrupted stack, wsldebug.cpp line 412” dialog was the release diagnostic logger misfiring; it now logs to C120LOG.TXT and carries on, so what you see next is the real fault.

\

PATH, SETPATH, LONGPATH and SHORTPATH are wide

A USTRING folder or file name is resolved in its exact characters and the result comes back wide, so a folder whose name lies outside the Windows codepage can be entered with SETPATH and read back with PATH() (the earlier drop best-fit it to ? and SETPATH failed with error 3). The no-argument forms return the current directory exactly; a STRING argument or receiver gets the same bytes as always. With EXISTS, COPY/RENAME/REMOVE, DIRECTORY and FILEDIALOG already wide, only RUN remains in the file-name family.

?

F1 help, current for this drop

The IDE help (ClarionHelp.chm) carries the INSTRING start rule with a SIZE(cstring) example, the USTRING porting note, the previewer’s second latch, and a USTRING note on each of the PATH, SETPATH, LONGPATH and SHORTPATH topics.

Full tester guide — mental model, conversion rules, DCT import table, screen controls, reports, blobs, SQL / SQLite / text drivers / TopSpeedW / Memory / IP, recipes, and what to focus on when testing. The guide’s “What’s new” section lists everything in this drop; changes are also flagged inline with dated “beta refresh” notes.

Open the full Unicode Tester Guide

Report tool authors — the wide generator surface has shipped (IReportGeneratorW — six methods, opt-in, zero break for existing implementors). Format detection, the EMF record set, transition paths per integration style:

EMF Page Files — Transition Note

Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation — different behavior is exactly what we want to hear about.

Clarion Unicode preview — refreshed beta build (14234)

Clarion · Unicode Preview · Beta Refresh

Refresh build 14234 — Unicode file names end to end, Unicode PDF, and a previewer for wide windows

Everything in this refresh traces back to a beta thread. The whole file-name family went wide — EXISTS, COPY/RENAME/REMOVE, FILE,NAME(ustring), DIRECTORY() with 64-bit sizes and FILEDIALOG(); both PDF targets export real Unicode text; the Window Previewer previews a window as a wide program; keystrokes, clipboard and tooltips carry Unicode; the dictionary lives as text. Already testing? Everything below is new since build 14204.

Files EXISTS · COPY/RENAME/REMOVE · FILE,NAME · DIRECTORY · FILEDIALOG Reports PDF Unicode (both targets) · encryption fix IDE Unicode Preview · dictionary as text · Reload Solution

Highlights of this drop — then the full tester guide, whose “What’s new” section and dated “beta refresh” markers flag exactly what changed since you last read it.

≡

Unicode file names, end to end

A file name or folder outside the Windows codepage — a Unicode user profile, a currency sign, CJK — now works through the whole family: EXISTS(), COPY()/RENAME()/REMOVE(), and FILE,NAME(ustring) on TopSpeedW and the DOS/ASCII/BASIC drivers (every driver takes a USTRING name whose text fits the codepage; the classic drivers report error 45 instead of a silent 90).

⌂

DIRECTORY() with Unicode names and 64-bit sizes; FILEDIALOG goes wide

A new queue type FILE:QueueW — Name USTRING, Size REAL (exact past 2 GB), Attrib32 — lists every name with its real characters; the old queues are untouched. FILEDIALOG() with a USTRING variable opens on a non-codepage path and returns it exactly, and a USTRING title shows as typed.

⎙

PDF export is Unicode — both targets

The stock Report to PDF target embeds a glyph-preserving subset of each font so a REPORT,UNICODE‘s text renders, searches and copies in any reader; Image2PDF does the same through libharu, color emoji included as pictures. Password-protected PDF export — is fixed.

▭

Window Previewer: a latched “Unicode Preview” button

Next to the Preview button (and in the Window menu): latched on, the next preview is generated as a wide program — every substituted USE variable a USTRING — so the preview runs the real wide ENTRY/TEXT/LIST classes. Latched off, the generated program is byte-identical to today’s.

⌨

Unicode keystrokes reach USTRING controls exactly

The runtime pump is wide: Win+. emoji, IME composition and any injected Unicode keystroke land in a USTRING ENTRY/TEXT as typed; ANSI windows keep their ANSI keystrokes by construction. CLIPBOARD()/SETCLIPBOARD() carry Unicode, and tooltips are wide on every lane.

≣

The dictionary as text

A .dctx twin beside the .dct is the source of truth: honest UTF-8 (a £ in a picture, a Ω in a prompt survive the round trip), Dictionary-menu export/import, and an audit of who changed what. Reload/Close Solution no longer revert an external .sln/.cwproj edit.

ƒ

UVAL(), PROP:ClipEntry, compiler messages restored

UVAL(string [,pos]) is the inverse of UCHR() — the code point at a unit position, merging a surrogate pair. SYSTEM{PROP:ClipEntry} (opt-in) clips typed trailing spaces from @S entries into CSTRING/USTRING.

☷

LIST and TEXT: the last residuals closed

Declared FORMAT() headers and column pictures keep their Unicode, the string FROM() lane is wide both ways, {PROP:Text} into a TEXT stores exact units, and TopScan previews a UNICODE blob as text. The LIST family is fully wide on declared and runtime lanes.

⊞

Oracle driver goes wide

NCHAR/NVARCHAR2 import as USTRING sized in units, NCLOB as a Unicode blob, DDL emits VARCHAR2(n CHAR)/NVARCHAR2(n-1) — and three long-shipped defects went with it. Set NLS_LANG to a Unicode-capable character set on Instant Client.

?

F1 help, current for this drop

The IDE help (ClarionHelp.chm) updated with the new RTL features: DIRECTORY/FILEDIALOG with FILE:QueueW, the previewer’s Unicode Preview, the PDF targets’ Unicode notes, UVAL, PROP:ClipEntry and the updated compiler messages.

Full tester guide — mental model, conversion rules, DCT import table, screen controls, reports, blobs, SQL / SQLite / text drivers / TopSpeedW / Memory / IP, recipes, and what to focus on when testing. The guide’s “What’s new” section lists everything in this drop; changes are also flagged inline with dated “beta refresh” notes.

Open the full Unicode Tester Guide

Report tool authors — the wide generator surface has shipped (IReportGeneratorW — six methods, opt-in, zero break for existing implementors). Format detection, the EMF record set, transition paths per integration style:

EMF Page Files — Transition Note

Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation — different behavior is exactly what we want to hear about.

Clarion Unicode preview — refreshed beta build (14204)

Clarion · Unicode Preview · Beta Refresh

Refresh build 14204 — a drop built from your reports

Nearly every item in this refresh traces back to a beta field report — exactly what the beta is for. CHOOSE() and POPUP() go wide, control pictures carry Unicode, TXA round-trips in UTF-8, INI files and the registry go wide, a full sweep of the string built-ins closed out the remaining port regressions — and there’s a Windows 11 fix every desktop app should retest. Already testing? Everything below is new since build 14175.

Language CHOOSE · POPUP · pictures · built-ins sweep IDE TXA in UTF-8 · %CWVersion 12026 Runtime INI · registry · Win11 hit-test fix

Highlights of this drop — then the full tester guide, whose “What’s new” section and dated “beta refresh” markers flag exactly what changed since you last read it.

?:

CHOOSE() takes USTRING values

A USTRING among CHOOSE’s values used to make the whole result numeric — even a plain-string alternative came back as '0'. Now string values give a string result that keeps every unit, and string-mixed-with- numeric stays numeric, exactly the STRING rules. From Carl B.’s report.

☰

POPUP() is wide

Menu text draws its real glyphs — currency signs, CJK, emoji — and the item structure (|, {}, ~, …) is decided on the wide text itself, so a full-width | in an item no longer splits the menu. All-ANSI POPUPs take exactly the old code path. Also from Carl B.’s reports.

@

Control pictures carry Unicode

A picture with symbols outside the codepage — say @n~₿~-15.2 — set on a LIST column (PROPLIST:Picture) or a pictured display STRING now formats with the real symbol and reads back intact. A wide LIST heading also survives a later reformat. (The pictured-ENTRY editor is a separate queued step.)

✎

Runtime caption rewrites go wide

{PROP:Text} = <wide value> on the caption families — PROMPT, STRING, BUTTON, CHECK, RADIO, TAB, GROUP/OPTION/SHEET — now keeps exact units. This was on the known-limitations list; it’s off it now.

ƒ

String built-ins, swept against gold

Every string built-in was measured two-era against Clarion 12 gold, and the remaining beta regressions fixed: DEFORMAT(x) with the picture omitted, ERROR() returning unclipped padding, NUMERIC() rejecting trailing spaces, ALL('',n), wide RIGHT()/CENTER() padding — and wide-to-wide compares now clip trailing spaces like narrow always did.

⇅

TXA export/import in UTF-8

Export application text as Application text, UTF-8 — a filetype choice in every export dialog, ClarionCL /u8 /ax on the command line, or the AutoExport-on-save option. Import auto-detects UTF-8 (with or without BOM) and rejects loudly, naming the line, instead of silently mangling. Defaults stay ANSI, byte-identical. From Petar’s request.

§

INI files and the registry go wide

GETINI/PUTINI accept and return USTRING exactly — and a wide write to a missing .ini creates it UTF-16 LE with BOM. The GETREG family matches the registry’s native UTF-16 end to end: RegEdit shows your real characters, and reads them back exactly.

#

Templates can gate the Unicode era

%CWVersion is now 12026 — #IF(%CWVersion >= 12026) is the idiom for template and third-party code that must also generate for older builds (equality tests against 12000 break; use >=). And multi-DLL exports of procedures taking USTRING arrays now link.

⊞

A Windows 11 fix worth retesting

Menus and mouse clicks going dead when another app’s always-on-top window (Windows 11 shell “island” windows are the usual trigger) overlapped a Clarion window — fixed, from a tester’s precise analysis (thanks, Alexey). If you’ve seen a Clarion app stop responding to the mouse on Win11, retest on this build.

?

F1 help, rebuilt and current

The IDE help (ClarionHelp.chm) is rebuilt: the Unicode-era language surface — USTRING and friends, the new and changed built-ins, the INI/registry notes — is now in the F1 help itself, not only in the tester documents.

Full tester guide — mental model, conversion rules, DCT import table, screen controls, reports, blobs, SQL / SQLite / text drivers / TopSpeedW / Memory / IP, recipes, and what to focus on when testing. The guide’s “What’s new” section lists everything in this drop; changes are also flagged inline with dated “beta refresh” notes.

Open the full Unicode Tester Guide

Report tool authors — the wide generator surface has shipped (IReportGeneratorW — six methods, opt-in, zero break for existing implementors). Format detection, the EMF record set, transition paths per integration style:

EMF Page Files — Transition Note

Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation — different behavior is exactly what we want to hear about.

Clarion Unicode preview — refreshed beta build (14175)

Clarion · Unicode Preview · Beta Refresh

Another refresh — the window itself goes wide

This drop pushes Unicode out into the window chrome — titles, menus, the status bar — carries wide columns into LIST and the TopScan browser, widens the client/server IP driver, and folds in a batch of fixes straight from your reports. Already testing? Everything below is new since the last build.

UI window chrome · menus · status · LIST cells Drivers IP goes wide IDE Solution Explorer reload

Highlights of this drop — then the full tester guide, whose dated “beta refresh” markers flag exactly what changed since you last read it.

▭

Window chrome goes wide

Window, frame and MDI-child titles, menu item text, and runtime writes to the status bar, message zone and tips now carry exact UTF-16 — set them in the designer or at runtime with {PROP:Text}. Narrow apps are byte-for-byte unchanged.

≣

Wide LIST columns — and TopScan

The last narrow LIST surfaces went wide: split columns (one queue field fanned across cells with |) and column headings now draw real glyphs, not best-fit. TopScan’s browser rides the same change — its cells show Ω, é, 中 with no changes on your side.

⇔

Controls widen at runtime

Bind an ENTRY or TEXT to a USTRING at runtime with {PROP:Use} and the control now switches to the wide class on the spot (and back again for a STRING) — no longer only when the USE was declared wide at compile time.

⟳

Solution Explorer keeps up

Edit a project outside the IDE — hand-edit the .cwproj, AppGen, source control, code-generation tooling — and the tree now offers to reload so it reflects reality. A manual Reload Solution command too, and a guard against silently overwriting an external edit on save. From a tester request — thanks, Mark S.

⇄

The IP driver goes wide

USTRING fields and UNICODE memo/blob travel end to end through the client/server IP database stack — client, requester and data server — round-tripping bit-identically at rest. Keys inherit the backing driver’s order for free.

⎙

Two report fixes from the field

A saved REPORT,…,UNICODE now reopens in the designer without the “Unexpected attribute” error, and two reports previewed at once no longer collide over page files (which could overwrite or drop one report’s pages). Both straight from beta reports.

☺

UCHR() and hex code points

New UCHR(code) is the one-argument form of CHR(code,1), and U'<…>' constants now take hex (U'<1F4A9h>' = one emoji) and full code points that emit the surrogate pair for you. Out-of-range is a loud error, never a silent truncation. From Carl B.’s post.

⚙

A compiler crash, fixed

An Internal Compiler Error that appeared and vanished with unrelated source edits — triggered by an identifier ending in a colon (e.g. from PRE(CS:)) landing at a pool boundary — is fixed. Reported against an earlier build; the fix rides this one.

Full tester guide — mental model, conversion rules, DCT import table, screen controls, reports, blobs, SQL / SQLite / text drivers / TopSpeedW / Memory, recipes, and what to focus on when testing. Changes since the last build are flagged inline with dated “beta refresh” notes.

Open the full Unicode Tester Guide

Report tool authors — the wide generator surface has shipped (IReportGeneratorW — six methods, opt-in, zero break for existing implementors). Format detection, the EMF record set, transition paths per integration style:

EMF Page Files — Transition Note

Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation — different behavior is exactly what we want to hear about.