{"id":2013,"date":"2026-10-05T14:52:51","date_gmt":"2026-10-05T14:52:51","guid":{"rendered":"https:\/\/clarionsharp.com\/blog\/?p=2013"},"modified":"2026-10-05T14:52:51","modified_gmt":"2026-10-05T14:52:51","slug":"clarion-unicode-beta-refresh-14407","status":"publish","type":"post","link":"https:\/\/clarionsharp.com\/blog\/clarion-unicode-beta-refresh-14407\/","title":{"rendered":"Clarion Unicode &#8211; beta refresh (14407)"},"content":{"rendered":"\n<style>\n.ustring-wp5 { --u-fg:#1c1917; --u-muted:#6b6560; --u-line:#e2dcd3; --u-card:#fff; --u-soft:#dbeafe; --u-accent:#1d4ed8; --u-bg:#f7f5f1; --u-link:#0b5cad; font-family:system-ui,-apple-system,\"Segoe UI\",sans-serif; color:var(--u-fg); line-height:1.55; max-width:1080px; margin:0 auto; }\n@media (prefers-color-scheme: dark) {\n  .ustring-wp5 { --u-fg:#f5f5f4; --u-muted:#a8a29e; --u-line:#3f3a36; --u-card:#1c1917; --u-soft:#1e3a5f; --u-accent:#93c5fd; --u-bg:#121110; --u-link:#7dd3fc; }\n}\n.ustring-wp5 * { box-sizing:border-box; }\n.ustring-wp5 .uw-hero { background:linear-gradient(135deg,#0f2a44 0%,#1e3a5f 45%,#14532d 100%); color:#fafaf9; border-radius:14px; padding:1.75rem 1.5rem 1.5rem; margin:0 0 1.25rem; }\n.ustring-wp5 .uw-eyebrow { display:inline-block; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:#93c5fd; font-weight:700; margin-bottom:.55rem; }\n.ustring-wp5 .uw-hero h2 { margin:0 0 .65rem; font-size:clamp(1.45rem,3.5vw,2rem); line-height:1.2; letter-spacing:-.02em; color:#fafaf9; }\n.ustring-wp5 .uw-hero p { margin:0; color:#e7e5e4; font-size:1.05rem; max-width:42rem; }\n.ustring-wp5 .uw-pills { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:1rem; }\n.ustring-wp5 .uw-pill { display:inline-block; padding:.3rem .7rem; border-radius:999px; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.12); color:#fafaf9; font-size:.82rem; }\n.ustring-wp5 .uw-pill strong { color:#bfdbfe; font-weight:650; }\n.ustring-wp5 .uw-lead { color:var(--u-muted); margin:0 0 1.1rem; font-size:1rem; }\n.ustring-wp5 .uw-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:.85rem; margin:0 0 1.5rem; }\n.ustring-wp5 .uw-card { background:var(--u-card); border:1px solid var(--u-line); border-radius:14px; padding:1rem 1.05rem 1.1rem; min-width:0; overflow-wrap:anywhere; }\n.ustring-wp5 .uw-icon { width:2rem; height:2rem; border-radius:10px; display:grid; place-items:center; background:var(--u-soft); color:var(--u-accent); font-weight:700; margin-bottom:.55rem; font-size:1rem; }\n.ustring-wp5 .uw-card h3 { margin:0 0 .35rem; font-size:1rem; letter-spacing:-.01em; color:var(--u-fg); }\n.ustring-wp5 .uw-card p { margin:0; color:var(--u-muted); font-size:.92rem; line-height:1.5; }\n.ustring-wp5 code { font-family:Consolas,\"Cascadia Mono\",ui-monospace,monospace; font-size:.88em; background:var(--u-bg); border:1px solid var(--u-line); border-radius:5px; padding:.05em .3em; color:var(--u-fg); overflow-wrap:anywhere; word-break:break-word; }\n.ustring-wp5 .uw-cta { background:var(--u-card); border:1px solid var(--u-line); border-left:4px solid var(--u-accent); border-radius:12px; padding:1rem 1.15rem; }\n.ustring-wp5 .uw-cta p { margin:0 0 .65rem; color:var(--u-muted); }\n.ustring-wp5 .uw-cta p:last-child { margin:0; }\n.ustring-wp5 .uw-btn { display:inline; background:none; color:var(--u-link) !important; text-decoration:underline !important; font-weight:650; padding:0; border-radius:0; margin-top:.15rem; }\n.ustring-wp5 .uw-btn:hover { color:var(--u-accent) !important; text-decoration:underline !important; }\n.ustring-wp5 .uw-note { font-size:.88rem; color:var(--u-muted); margin-top:.75rem; }\n<\/style>\n\n<div class=\"ustring-wp5\">\n  <div class=\"uw-hero\">\n    <div class=\"uw-eyebrow\">Clarion \u00b7 Unicode Preview \u00b7 Beta Refresh<\/div>\n    <h2>Refresh build 14407 \u2014 compose any date-time picture, the Embed Editor keeps your language, Known Folders in the templates, and a driver trace that reads true<\/h2>\n    <p>\n      The <code>@C<\/code> picture now composes a date picture and a time picture of your\n      choice \u2014 <code>@C3D010-T04~T~<\/code> is an ISO 8601 stamp with milliseconds,\n      <code>@CD12T05~~<\/code> a compact file-name stamp \u2014 and FORMAT, DEFORMAT, ENTRY\n      controls, the designers and the Source Editor all take the composed form. The Embed\n      Editor keeps a Greek, Cyrillic, Chinese or emoji literal exactly as you typed it, in\n      the <code>.app<\/code> and on screen. The Global Properties folder lists offer the\n      Windows Known Folders beside the CSIDL values, and the data path is a USTRING. The\n      driver trace file is UTF-8, so every Unicode value in a record dump or a bind line\n      reads as typed. The frame&#8217;s Window menu and MDI tab bar, STOP and HALT, TopScan&#8217;s\n      Text and Hex Viewers and the Query Center&#8217;s DATETIME filter are wide. Already testing?\n      Everything below is new since build 14373.\n    <\/p>\n    <div class=\"uw-pills\">\n      <span class=\"uw-pill\"><strong>Language<\/strong> <code>@C[n][D\u2026][T\u2026][~sep~]<\/code> composed date-time pictures<\/span>\n      <span class=\"uw-pill\"><strong>IDE<\/strong> Embed Editor keeps <code>U''<\/code> literals \u00b7 TopScan Text \/ Hex Viewer wide \u00b7 Window menu + tab bar wide<\/span>\n      <span class=\"uw-pill\"><strong>Templates<\/strong> Known Folders in Global Properties \u00b7 <code>PROP:DataPath<\/code> USTRING \u00b7 QBE DATETIME filter<\/span>\n      <span class=\"uw-pill\"><strong>SQL<\/strong> the driver trace file is UTF-8<\/span>\n      <span class=\"uw-pill\"><strong>From the forums<\/strong> STOP() \/ HALT() wide \u00b7 ADO <code>MapRsToGroup<\/code> \u00b7 <code>@C<\/code> in the QBE filter \u00b7 wide captions in the Window list \u00b7 <code>???<\/code> in the trace \u00b7 <code>USE(Var,,?Var2)<\/code> in the designer \u00b7 <code>FROM(U'...')<\/code> in the help<\/span>\n    <\/div>\n  <\/div>\n\n  <p class=\"uw-lead\">\n    Highlights of this drop \u2014 then the full tester guide, whose\n    <em>&#8220;What&#8217;s new&#8221;<\/em> section lists everything that changed since you last read it.\n  <\/p>\n\n  <div class=\"uw-grid\">\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">@<\/div>\n      <h3>The date-time picture takes any date and time format<\/h3>\n      <p>\n        <code>@C[n][S][D\u2026][T\u2026][B]<\/code>: <code>n<\/code> keeps its meaning (0\u20137 fraction digits), <code>S<\/code> is one separator character between the two parts (<code>_<\/code> for a space, <code>^<\/code> for none, <code>T<\/code> for ISO 8601, any other character stands for itself), and the two parts are any numbered <code>@D<\/code> and <code>@T<\/code> picture with all of their own options. Omitted parts keep today&#8217;s shape, so <code>@C<\/code>, <code>@C3<\/code> and <code>@C7<\/code> are unchanged. <code>@C3D010-T04~T~<\/code> gives <code>2026-09-09T13:05:07.123<\/code>, <code>@CD12T05~~<\/code> gives <code>20260909130507<\/code>, <code>@CD8T4<\/code> gives <code>9 SEP 2026 13:05:07<\/code>. 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 &#8220;Date-Time Pictures&#8221; has the full table. From a request on the beta forum.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">U&#8217;<\/div>\n      <h3>The Embed Editor keeps your language<\/h3>\n      <p>\n        Type Greek, Cyrillic, Chinese or emoji inside a <code>'...'<\/code> literal in any embed and save: the literal is stored in the <code>.app<\/code> as its portable <code>U'...'<\/code> 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 \u2014 <code>U'\u041f\u0440\u0438\u0432\u0435\u0442'<\/code>. 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 &#8220;How do I put Greek, Russian, Chinese or other Unicode text into an embed?&#8221; leads with &#8220;type it&#8221; and keeps the UTF-8 INCLUDE file and the spelled code points as alternatives. From a beta report.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u2302<\/div>\n      <h3>Known Folders in the templates, a USTRING data path<\/h3>\n      <p>\n        The two Global Properties dialogs that placed your INI file and your data files in a CSIDL location (App Settings \u203a &#8220;Location of Program Name.INI&#8221;, File Control \u203a 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 (<code>INIClass.InitW<\/code>), creates the Company\\Product sub-folders wide (<code>SpecialFolder.CreateKnownDirIn<\/code>) and sets <code>SYSTEM{PROP:DataPath}<\/code> 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.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u2261<\/div>\n      <h3>The driver trace file is UTF-8 \u2014 every value reads as you typed it<\/h3>\n      <p>\n        A USTRING field in the record dump (<code>PROP:Details<\/code>) 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 \u2014 delete a trace written by an earlier build before you start a new one. The <code>DEBUG:<\/code> target shows the same characters in the debugger&#8217;s output window. From a beta report of <code>???<\/code> in the trace for Arabic text: fixed now.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u25a4<\/div>\n      <h3>Query Center: a DATETIME column in the QBE Filter \u2013 Advanced list<\/h3>\n      <p>\n        A column whose picture is <code>@C<\/code> (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&#8217;s own picture \u2014 on a SQL backend the ISO literal, on Oracle its <code>TO_CHAR<\/code> text. Existing date, time, number and string columns generate exactly what they did, with one exception you will like: a SQL date <code>IN<\/code> list typed with a space after the comma carries both dates. A date-time entry accepts the time to the minute (<code>2026-09-26 10:30<\/code>) everywhere <code>@C<\/code> deformats. Everything in the shipping templates and classes that decides &#8220;is this picture a date?&#8221; tests <code>@C<\/code> before <code>@D<\/code>; if your own code classifies by the second character, give it a <code>@C<\/code> arm first. From a beta report.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u25a3<\/div>\n      <h3>Wide in the frame: the Window menu, the MDI tab bar, STOP() and HALT()<\/h3>\n      <p>\n        A child window with a Unicode caption is listed by that caption in the frame&#8217;s Window menu (<code>STD:WindowList<\/code>) and on the MDI tab bar \u2014 set it at run time (<code>0{PROP:Text} = U'...'<\/code>) or declare a <code>U''<\/code> 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 <code>'...'<\/code> literal is still an ANSI string, so write the text as a <code>U'...'<\/code> literal and the USTRING holds it exactly. Both from beta reports: fixed now.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">16<\/div>\n      <h3>TopScan: the Text Viewer and the Hex Viewer show a USTRING column in full<\/h3>\n      <p>\n        Pick a USTRING column in either tool (View \u203a Show Text, View \u203a Show Hex): the Text Viewer shows and edits the text in any script, emoji included, and the Hex Viewer shows the value&#8217;s UTF-16 bytes as stored, two per character unit, with a new <strong>UTF-16<\/strong> character pane beside the bytes \u2014 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 <code>BLOB,UNICODE<\/code> column reads the same way; STRING and every other column type look and save as before.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u270e<\/div>\n      <h3>From a beta report: ADO recordsets into your group<\/h3>\n      <p>\n        <code>TableMapper.MapRsToGroup<\/code> assigns each recordset column through an ANY bound with <code>WHAT()<\/code> to the group field \u2014 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 <code>LONG = VARIANT<\/code> does. Fixed now.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">?<\/div>\n      <h3>From a beta report: the Window Designer keeps <code>USE(Var,,?Var2)<\/code><\/h3>\n      <p>\n        An explicit field equate that is the variable name plus a digit suffix (<code>?PagesAcross2<\/code>, <code>?Cnt10<\/code>, also with the number parameter present: <code>USE(Var,3,?Var3)<\/code>) came back as <code>USE(Var)<\/code> once the designer had opened the window, and the compile then reported duplicate equates. The designer keeps it now; <code>USE(Var,,?Var)<\/code> still comes back as <code>USE(Var)<\/code>, the same equate. And from a question on the beta forum: the FROM help topic now says how a drop list goes wide \u2014 <code>FROM(U'...')<\/code>, one <code>U<\/code> in front of the whole string, <code>U<\/code> on every piece of a constant continued with <code>&amp;<\/code>, a USTRING through <code>{PROP:From}<\/code> at run time \u2014 with index entries under FROM, Unicode, USTRING and &#8220;drop list&#8221;. Fixed now.\n      <\/p>\n    <\/article>\n\n  <\/div>\n\n  <div class=\"uw-cta\">\n    <p>\n      <strong style=\"color:var(--u-fg)\">Full tester guide<\/strong> \u2014\n      mental model, conversion rules, DCT import table, screen controls, reports, blobs,\n      SQL \/ SQLite \/ text drivers \/ TopSpeedW \/ Memory \/ IP, recipes, the new-language-surface\n      quick reference, and what to focus on when testing. The guide&#8217;s <em>&#8220;What&#8217;s new&#8221;<\/em>\n      section lists everything in this drop, and every section has its task topic in the\n      F1 help&#8217;s &#8220;How do I &#8230;&#8221; chapter.\n    <\/p>\n    <!-- >>> confirm these URLs match the deployed static docs <<< -->\n    <a class=\"uw-btn\" href=\"https:\/\/softvelocity.com\/docs\/Clarion-Unicode-Tester-Guide.html\" target=\"_blank\" rel=\"noopener\">Open the full Unicode Tester Guide<\/a>\n    <p style=\"margin:.85rem 0 .35rem; color:var(--u-muted)\">\n      <strong style=\"color:var(--u-fg)\">Report tool authors<\/strong> \u2014\n      the wide generator surface (<code>IReportGeneratorW<\/code>), format detection, the\n      EMF record set, transition paths per integration style, and the\n      <code>PageTextIndexClass<\/code> text index the previewer searches with:\n    <\/p>\n    <a class=\"uw-btn\" href=\"https:\/\/softvelocity.com\/docs\/Clarion-Unicode-EMF-Transition-Note.html\" target=\"_blank\" rel=\"noopener\">EMF Page Files \u2014 Transition Note<\/a>\n    <p class=\"uw-note\">\n      Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation \u2014\n      if you see something different, the beta forum is the place.\n    <\/p>\n  <\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Clarion \u00b7 Unicode Preview \u00b7 Beta Refresh Refresh build 14407 \u2014 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 \u2014 @C3D010-T04~T~ is an ISO 8601 stamp &hellip; <a href=\"https:\/\/clarionsharp.com\/blog\/clarion-unicode-beta-refresh-14407\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Clarion Unicode &#8211; beta refresh (14407)<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43,5],"tags":[46,45,54,49],"class_list":["post-2013","post","type-post","status-publish","format-standard","hentry","category-clarion-12","category-clarionnews","tag-c12","tag-clarion-12","tag-clarion-beta-refresh-unicode","tag-ustring"],"_links":{"self":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2013","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/comments?post=2013"}],"version-history":[{"count":2,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2013\/revisions"}],"predecessor-version":[{"id":2015,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2013\/revisions\/2015"}],"wp:attachment":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/media?parent=2013"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/categories?post=2013"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/tags?post=2013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}