Tag Archives: C12

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 — 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.

USTRING — Unicode that feels like Clarion

Clarion · Unicode Preview

USTRING — Unicode that feels like Clarion

Wide text end to end: declare it, type it, store it, browse it. No new programming model. No special “Unicode mode.” If you already know CSTRING, you already know USTRING — and your existing ANSI apps stay byte-identical.

SQL MSSQL · ODBC · PostgreSQL · SQLite ISAM TopSpeedW · ASCII · BASIC · DOS UI ENTRY · TEXT · COMBO · captions · blobs

A few highlights for Clarion developers evaluating this build — then the full tester guide (declaration rules, import maps, backends, recipes, what to poke at).

∅

Hands-off by design

Pick USTRING in the DCT, USE it on a control, PUT it to SQL. No conversion buffers, no “wide mode” flag, no per-screen ceremony. It just works the way Clarion always did.

Σ

All SQL backends speak Unicode

MSSQL, ODBC, PostgreSQL, and SQLite: USTRING(n) ↔ NVARCHAR(n-1) (logical length round-trips). Keys, GET, SET/NEXT, and bound WHERE values stay wide — never narrowed literals.

⚡

TopSpeed goes wide

Classic TPS is untouched. New driver: DRIVER('TopSpeedW'), .tpsw files, USTRING fields + UNICODE blobs, keys that work, and clean version rejects instead of silent mojibake.

◉

A blob is a field

On SQL there is no MEMO(n) — long text is the blob. TEXT,USE(blob) displays and edits; IMAGE,USE(blob) displays. Window binding ships today; Report is the same mental model (next surface).

あ

Type your language — everywhere

Source (UTF-8 / UTF-16), Window/Report designers, DCT messages/tips, IME, emoji panel, clipboard. Captions and free-form ENTRY/TEXT/COMBO carry exact UTF-16 on any system codepage.

✓

ANSI apps stay byte-identical

No USTRING? No wide designer text? Rebuild and ship — same binary behavior as before. Opt-in tokens (e.g. PostgreSQL UNICODECONNECT=1) never change default connects.

⇄

Import maps that tell the truth

Import Tables: nvarchar → USTRING, ntext / nvarchar(max) → UNICODE memo/blob, binary max → BINARY blob — attributes already ticked. Data Browser edits wide without narrowing.

✨

Surrogate-safe editing

Emoji and non-BMP text edit as atomic characters on wide ENTRY/COMBO. Color emoji via DirectWrite where available; ordinary edits never leave half a pair behind.

Full tester guide — mental model, conversion rules, DCT import table, screen controls, blobs, SQL / SQLite / text drivers / TopSpeedW, recipes, and what to focus on when testing.

Open the full Unicode Tester Guide

Standalone page (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 12 is released



Clarion 12 Release

Clarion 12 is Here: Smarter, Faster, and Built for the Future

We’re excited to announce the official release of Clarion 12!

After a marathon development journey, this release delivers 100% backward compatibility and introduces powerful new features to enhance your development experience. Clarion 12 ensures your existing projects compile seamlessly — even those pushing the limits of the C11 compiler and runtime library (RTL) — while laying the groundwork for 64-bit binaries in the next release (C12 currently produces 32-bit binaries).


✨ What’s New in Clarion 12?


  • Just about every important IDE component, and close to 65% of the Runtime Library has been refactored, optimized and adjusted in preparation for the move away from the Topspeed compiler technologies and into a modern compiler architecture – it was both necessary and meticulous work required to get to the end goal of 64-bit. We’ve posted about version 12 many times, but here is a recap of some of the more recent and significant changes.

  • Improved Unicode Support with a Refactored STRING Type

    We’ve eliminated the complications of managing two string data types (STRING/USTRING). The improved STRING type simplifies working with Unicode, making your apps more compatible with global languages — and, perhaps most importantly, ensures 64-bit readiness for future updates.

  • Compiler Performance Improvements

    You’ll notice faster compilation times and improved code generation, making the dev cycle smoother and more efficient.

  • Foundation for 64-Bit Compatibility

    We’ve made significant improvements to the runtime library, laying the foundation for full 64-bit compilation in an upcoming release. This ensures Clarion remains future-proof for all of your projects.

  • “Check for Updates”

    On the IDE “Start Page” you’ll find a new Check for Updates button option that allows you to keep you up to date incrementally and effortlessly. When run, it displays details on any available updates, your subscription coverage, and links to your purchased products. Enhancements and Bug fixes to the IDE, RTL, drivers, and templates will reach you faster. When an update is available you can download and install the new version right from the IDE.

Let us know what you think, and thanks for being a part of the Clarion community!


Clarion 12 news

The Clarion 12 release was delayed past our initial January 1st target as we maintained our traditional end-of-year break, I had planned for us to work straight through but decided we needed the break to recharge. Here’s something else that is new in this release.

Microsoft SQL Server Driver Updates

We’ve rebuilt the Microsoft SQL Server driver with some new capabilities:

Security

  • TLS 1.2/1.3 support with related configuration options
  • Column-level encryption
  • Support for Server Certificate validation (including self-issued certificates)
  • Improved error handling for security operations

Note: these features require the Microsoft ODBC Driver 17+

Version Support

  • SQL Server 2005 through 2022
  • SQL Server on Linux
  • Azure SQL Database
  • Existing connection strings and configurations remain valid unchanged

Azure SQL Database Support

  • Azure Active Directory and Managed Identity authentication
  • Failover group support
  • Region-aware connectivity
  • Elastic pool connections

Backward Compatibility

As with all our releases, Clarion 12 maintains 100% backward compatibility. Existing applications will work without modification, and all new features are opt-in.

General ODBC Driver Improvements

The SQL Server driver improvements extend into our entire ODBC stack:

  • Refactored connection handling
  • Enhanced custom connection string support
  • More detailed error handling
  • Full compatibility with existing applications

PostgreSQL Support

Our ODBC driver layer provides enhanced support for the official PostgreSQL ODBC driver:

  • Improved connection string handling
  • Enhanced error reporting
  • Full compatibility with PostgreSQL’s native ODBC capabilities

SQLite Updates

And we’re working on new SQLite features:

  • In-memory database support
  • Improved transaction handling
  • Better concurrent connection management

Next

We’ll soon provide a web application where developers can sign up to test upcoming AI features in the IDE. The database improvements in this release are complete and are in final testing. We need a few more days of testing before we announce C12 GA. Thanks for you support and patience!

Clarion 12 – Upcoming release

Embracing the Future

We’re excited to announce the upcoming release of Clarion 12. While the release timeline has extended beyond our initial projections, we’ve used this additional development time to implement improvements that will benefit our entire developer community.

A significant improvement emerging from this extended development period involves our string handling architecture. While we had previously announced the introduction of a USTRING type to handle Unicode alongside the traditional STRING type for ANSI strings, we’ve arrived at a more elegant solution. Clarion 12 will feature a unified, enhanced string type that provides superior Unicode support while maintaining complete backwards compatibility. This streamlined approach not only simplifies development but also paves the way for an easier transition to 64-bit compilation in the future.

Beyond this architectural refinement, much of Clarion 12’s development has focused on building a solid foundation for future capabilities. We’ve made important internal improvements that, while not immediately visible, strengthen the platform’s core and prepare it for upcoming features.

Introducing AI-Powered Development

Clarion 12 marks our entry into AI-assisted development with a flexible, pragmatic approach. While our initial focus was on local LLM integration, we’ve built the system to accommodate any external LLM as we progress. During testing, we recognized that even machines well-suited for traditional software development might not handle local LLM processing efficiently. We’ve conducted extensive experiments with the LLaMA 3 series and various smaller models as local options, keeping the default choice flexible to accommodate different development environments.

This isn’t just another code completion tool – it’s a comprehensive coding assistant that truly understands (with your help) your application’s context and needs. For developers who prefer or require cloud-based solutions, we’ll also offer commercial AI integration options. This dual approach ensures everyone can access these powerful features, regardless of their local hardware capabilities.

Business AI: Today and Tomorrow

Clarion 12 introduces AI capabilities starting with practical IDE enhancements that streamline your development process. This is just the beginning of our AI journey. Just as websites became essential for business success in the 1990s, AI integration in business applications is becoming crucial for maintaining competitive advantage today. We’re laying the groundwork for you to capitalize on this opportunity.

Current IDE Intelligence

In this release, Clarion 12 includes AI tools to analyze your existing applications and suggest potential enhancements:

  • Comprehensive application scanning and analysis
  • Intelligent feature recommendations based on your specific business domain
  • Vector database creation for deep application understanding
  • AI-powered development assistance and code insights

Future Application AI

In upcoming releases, you’ll be able to integrate AI directly into your business applications:

  • Ready-to-use semantic search capabilities
  • Vector database integration with standard SQL databases
  • AI features that don’t require machine learning expertise
  • Templates and frameworks for easy AI integration into your applications

This phased approach ensures you can start benefiting from AI immediately in your development process while preparing for the next wave of AI-enhanced business applications.

System Requirements

For local AI features:

  • Minimum 16GB RAM
  • Modern CPU (12th gen Intel or AMD Ryzen 7000 series or newer recommended)
  • Windows 11 recommended (Windows 10 compatible but not officially supported for all AI features)

Standard Clarion development requirements remain unchanged for non-AI features

Looking Ahead

The release of Clarion 12 represents more than just an update – it’s a strategic step toward empowering our development community with next-generation capabilities. By focusing on practical AI implementation and maintaining our commitment to efficient business application development, we’re ensuring that Clarion developers are well-positioned to meet evolving market demands.

The release will be available before year-end, with updated documentation. We are also pushing hard to complete additional training resources, including videos and detailed blog posts, to help you make the most of these new capabilities. We’re exploring the possibility of featuring Clarion 12 on the ClarionLive channel. Stay tuned for specific release date announcements and early access opportunities.

Get Ready

We encourage all developers to begin planning their upgrade to Clarion 12. The improvements in this release, combined with the foundational work for future enhancements, make this a crucial upgrade for staying competitive in today’s rapidly evolving software development landscape.