Monthly Archives: October 2026

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.