{"id":2024,"date":"2026-11-09T16:26:50","date_gmt":"2026-11-09T16:26:50","guid":{"rendered":"https:\/\/clarionsharp.com\/blog\/?p=2024"},"modified":"2026-11-09T16:26:50","modified_gmt":"2026-11-09T16:26:50","slug":"clarion-unicode-beta-refresh-14556","status":"publish","type":"post","link":"https:\/\/clarionsharp.com\/blog\/clarion-unicode-beta-refresh-14556\/","title":{"rendered":"Clarion Unicode \u2013 beta refresh (14556)"},"content":{"rendered":"\n<style>\n.ustring-wp6 { --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-wp6 { --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-wp6 * { box-sizing:border-box; }\n.ustring-wp6 .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-wp6 .uw-eyebrow { display:inline-block; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:#93c5fd; font-weight:700; margin-bottom:.55rem; }\n.ustring-wp6 .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-wp6 .uw-hero p { margin:0; color:#e7e5e4; font-size:1.05rem; max-width:42rem; }\n.ustring-wp6 .uw-pills { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:1rem; }\n.ustring-wp6 .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-wp6 .uw-pill strong { color:#bfdbfe; font-weight:650; }\n.ustring-wp6 .uw-lead { color:var(--u-muted); margin:0 0 1.1rem; font-size:1rem; }\n.ustring-wp6 .uw-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:.85rem; margin:0 0 1.5rem; }\n.ustring-wp6 .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-wp6 .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-wp6 .uw-card h3 { margin:0 0 .35rem; font-size:1rem; letter-spacing:-.01em; color:var(--u-fg); }\n.ustring-wp6 .uw-card p { margin:0; color:var(--u-muted); font-size:.92rem; line-height:1.5; }\n.ustring-wp6 .uw-shot { display:block; width:100%; height:auto; margin:.75rem 0 0; border:1px solid var(--u-line); border-radius:8px; }\n.ustring-wp6 .uw-wide { grid-column:1 \/ -1; border-color:var(--u-accent); }\n.ustring-wp6 .uw-shots { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:.75rem; align-items:start; }\n.ustring-wp6 .uw-shots figure { margin:0; min-width:0; }\n.ustring-wp6 .uw-shots figcaption { font-size:.82rem; color:var(--u-muted); margin-top:.35rem; }\n.ustring-wp6 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-wp6 .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-wp6 .uw-cta p { margin:0 0 .65rem; color:var(--u-muted); }\n.ustring-wp6 .uw-cta p:last-child { margin:0; }\n.ustring-wp6 .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-wp6 .uw-btn:hover { color:var(--u-accent) !important; text-decoration:underline !important; }\n.ustring-wp6 .uw-note { font-size:.88rem; color:var(--u-muted); margin-top:.75rem; }\n<\/style>\n\n<div class=\"ustring-wp6\">\n  <div class=\"uw-hero\">\n    <div class=\"uw-eyebrow\">Clarion \u00b7 Unicode Preview \u00b7 Beta Refresh<\/div>\n    <h2>Refresh build 14556 \u2014 a debugger that stops on a condition and lists every breakpoint, ClarionCL built for unattended runs, and a 4 GB IDE<\/h2>\n    <p>\n      The debugger takes a condition on any breakpoint (<code>Counter = 7<\/code>, <code>Name = 'Smith'<\/code>) and\n      shows every breakpoint of the program in one window. ClarionCL writes every message to the console and\n      never waits for a click, so a build script can run it overnight and fail the build on an error. ClarionLAA.exe\n      is the same IDE with a 4 GB address space. Import From Application leaves your modules alone, DATESPLIT and\n      TIMESPLIT join the built-in procedures, and the fixes from the beta forum are in: the Window Previewer without\n      .NET 3.5, the Report Writer, #EXPORT of the dictionary, a MARS transaction frame that always begins, a TEXT with\n      64 KB and more. Already testing? Everything below is new since build 14523.\n    <\/p>\n    <div class=\"uw-pills\">\n      <span class=\"uw-pill\"><strong>Debugger<\/strong> conditional breakpoints \u00b7 Window \u203a Breakpoints \u00b7 its own help rewritten<\/span>\n      <span class=\"uw-pill\"><strong>ClarionCL<\/strong> unattended runs \u00b7 <code>\/log<\/code> \u00b7 <code>\/stoponerror<\/code> \u00b7 every dialog a console line<\/span>\n      <span class=\"uw-pill\"><strong>IDE<\/strong> ClarionLAA.exe (4 GB) \u00b7 Window Previewer without .NET 3.5 \u00b7 Report Writer<\/span>\n      <span class=\"uw-pill\"><strong>Language<\/strong> <code>DATESPLIT<\/code> \u00b7 <code>TIMESPLIT<\/code> \u00b7 <code>DATE(0, d, y)<\/code><\/span>\n      <span class=\"uw-pill\"><strong>AppGen and templates<\/strong> Import From Application keeps your modules \u00b7 <code>#EXPORT(%DictionaryFile)<\/code> \u00b7 700+ table dictionaries<\/span>\n      <span class=\"uw-pill\"><strong>Runtime and SQL<\/strong> TEXT with 64 KB+ under PROP:HScroll \u00b7 a MARS transaction frame always begins<\/span>\n    <\/div>\n  <\/div>\n\n  <p class=\"uw-lead\">\n    First the two changes every Clarion developer meets \u2014 the debugger and the unattended ClarionCL \u2014 then the\n    IDE, the language and the fixes of this drop, then the full tester guide, whose <em>&#8220;What&#8217;s new&#8221;<\/em> section\n    lists everything that changed since you last read it.\n  <\/p>\n\n  <div class=\"uw-grid\">\n    <article class=\"uw-card uw-wide\">\n      <div class=\"uw-icon\">\u25cf<\/div>\n      <h3>For every developer: a breakpoint that stops when it matters, and all your breakpoints in one window<\/h3>\n      <p>\n        On a line that has a breakpoint press Shift+B (or right-click \u203a Breakpoint Condition&#8230;) and type\n        <code>variable op literal<\/code>: <code>Counter = 7<\/code>, <code>Total &gt;= 1000.5<\/code>,\n        <code>Name = 'Smith'<\/code>, with op one of <code>= &lt;&gt; &lt; &lt;= &gt; &gt;=<\/code>. The variable is any\n        number or string in scope at that line (a local, a parameter, a global; a THREADed one reads the running\n        thread&#8217;s copy). The program stops only when the condition holds and runs straight on when it does not, so a\n        breakpoint inside a loop or a busy procedure stops on the pass you want to see. The condition is saved with\n        the breakpoint and is back in the next session. Window \u203a Breakpoints lists every breakpoint of the program,\n        Source \u00b7 Line \u00b7 Procedure \u00b7 Condition: Space or a double click goes to the line, Del removes it, Shift+B edits\n        its condition; a breakpoint remembered for a DLL that has not loaded yet shows as (pending) until it does.\n        F1 in the debugger opens its own help, rewritten for the debugger as it is today. From beta requests.\n      <\/p>\n      <!-- >>> confirm the image URL after uploading guide-img <<< -->\n      <div class=\"uw-shots\" style=\"margin-top:.75rem\">\n        <figure>\n          <img decoding=\"async\" class=\"uw-shot\" style=\"margin:0\" src=\"https:\/\/softvelocity.com\/docs\/guide-img\/BreakConditions.png\" alt=\"The debugger's Breakpoints window: Source, Line, Procedure and Condition columns, two breakpoints with conditions\" loading=\"lazy\">\n          <figcaption>Window \u203a Breakpoints: every breakpoint of the program, with its condition.<\/figcaption>\n        <\/figure>\n      <\/div>\n    <\/article>\n\n    <article class=\"uw-card uw-wide\">\n      <div class=\"uw-icon\">&gt;_<\/div>\n      <h3>For every build script: ClarionCL runs unattended<\/h3>\n      <p>\n        Every message reaches the console and nothing waits for a click. A template <code>#ERROR<\/code> or\n        <code>#ASSERT<\/code> during <code>\/ag<\/code> or <code>\/aru<\/code> is an <code>error GENE000<\/code> line that\n        names the application, the procedure and the template section; the run goes on and the exit code is the\n        number of errors, so a script can fail the build. <code>\/stoponerror<\/code> ends the run at the first error\n        instead, <code>\/log &lt;file&gt;<\/code> writes everything to a file as well. A dialog the generator would have\n        shown is a <code>warning CLCW005<\/code> line with the answer ClarionCL gave, an error box an\n        <code>error CLCE012<\/code> line, a utility <code>\/aru<\/code> cannot find a <code>GENE102<\/code> with the form it\n        expects, an application that cannot be opened says why before it stops. The one stopper left, a dictionary of\n        an older version, is taken by <code>\/au<\/code> or by the new Dictionary Editor option &#8220;Auto-upgrade\n        dictionaries to the current version&#8221;. On the Professional Edition a switch that needs the Enterprise Edition\n        says so (<code>CLCE009<\/code>) instead of &#8220;Unknown Switch&#8221;, and <code>\/ConfigDir<\/code> refuses a value that is\n        not a folder (<code>CLCE010<\/code>). From beta reports and a beta request.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">4G<\/div>\n      <h3>ClarionLAA.exe: the same IDE with a 4 GB address space<\/h3>\n      <p>\n        It sits beside Clarion.exe in the bin folder and shares every DLL, add-in and setting; the one difference is\n        the large-address-aware flag in its header, so a 32-bit IDE session on 64-bit Windows can use 4 GB instead\n        of 2. Start it when add-ins or very large applications run short of memory; Clarion.exe stays the default.\n        For your own programs the equivalent is <code>LARGE_ADDRESS<\/code> in the .exp file, and the runtime and the\n        TopSpeed driver were verified with every allocation above 2 GB. From a beta request.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u2261<\/div>\n      <h3>AppGen: Import From Application keeps your modules<\/h3>\n      <p>\n        Application \u203a Import From Application adds the procedures you pick the way File \u203a Import Text does: the\n        existing modules keep their names and numbers, an empty module stays, and a cancelled selection imports\n        nothing. Delete Empty Modules and Renumber Modules remain the explicit commands for that. From a beta report.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">&#x23f1;<\/div>\n      <h3>Language: DATESPLIT, TIMESPLIT, and a month of zero<\/h3>\n      <p>\n        <code>DATESPLIT(date, month, day, year)<\/code> and <code>TIMESPLIT(time, hours, minutes, seconds, hundredths)<\/code>\n        return the parts of a date or a time into your variables, the reverse of <code>DATE(m, d, y)<\/code> and\n        <code>TIME(h, m, s)<\/code>; every part is optional, so <code>TIMESPLIT(Elapsed, , Mins, Secs)<\/code> reads the way\n        you would say it. <code>DATE(0, 15, 2027)<\/code> is December 15, 2026: a month of zero or below moves whole\n        years back, the inverse of the month above 12 the function always accepted, so\n        <code>DATE(MONTH(d) - 11, DAY(d), YEAR(d))<\/code> is eleven months before <code>d<\/code> in one call. From beta\n        requests.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u25a3<\/div>\n      <h3>IDE: the Window Previewer without .NET 3.5, and the Report Writer<\/h3>\n      <p>\n        On a Windows 10 or 11 that never had the &#8220;.NET Framework 3.5&#8221; optional feature turned on, the Window Preview\n        button did nothing; the previewer now uses the .NET 4 assembly like the rest of the IDE, so a plain Windows\n        install is enough. The Report Writer starts again: it is rebuilt together with the IDE now, where build 14523\n        shipped a September build bound to older IDE assemblies. From a beta report and the beta test.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">#<\/div>\n      <h3>Templates: #EXPORT writes the dictionary, 700-table dictionaries generate<\/h3>\n      <p>\n        <code>#EXPORT(%DictionaryFile)<\/code> in a utility template writes the dictionary (a .TXD output receives the\n        TXD script, any other extension the dictionary XML, line for line what <code>ClarionCL \/dx<\/code> produces); it had\n        produced an empty file since Clarion 7. Dictionary \u203a Export Dictionary to Text works while an application that\n        uses the dictionary is open. A dictionary with more than 700 tables generates with &#8220;Generate file declarations\n        in modules&#8221; checked: the 36th declaration module is named the way build 14000 named it, so the module list\n        has no duplicate. From beta reports.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u25c6<\/div>\n      <h3>Runtime and SQL: a TEXT with 64 KB and more, a MARS frame that always begins<\/h3>\n      <p>\n        <code>?Text{PROP:HScroll} = 0<\/code> (or VScroll) on a TEXT whose USE variable holds 65,536 characters or more\n        ended the program with a &#8220;System Error&#8221; box; the text is now set after the control exists and the scroll-bar\n        properties toggle on a text of any size, narrow or USTRING. On a Multiple Active Result Sets connection to SQL\n        Server, a transaction frame started while a browse over a BLOB column was still reading its page was refused\n        (LOGOUT error 48, or a silent non-transaction without a trace); the MSSQL driver now parks its open cursors\n        before the frame and resumes them after, and a refused start is always reported. From beta reports.\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","protected":false},"excerpt":{"rendered":"<p>Clarion \u00b7 Unicode Preview \u00b7 Beta Refresh Refresh build 14556 \u2014 a debugger that stops on a condition and lists every breakpoint, ClarionCL built for unattended runs, and a 4 GB IDE The debugger takes a condition on any breakpoint (Counter = 7, Name = &#8216;Smith&#8217;) and shows every breakpoint of the program in one &hellip; <a href=\"https:\/\/clarionsharp.com\/blog\/clarion-unicode-beta-refresh-14556\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Clarion Unicode \u2013 beta refresh (14556)<\/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-2024","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\/2024","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=2024"}],"version-history":[{"count":1,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2024\/revisions"}],"predecessor-version":[{"id":2025,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2024\/revisions\/2025"}],"wp:attachment":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/media?parent=2024"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/categories?post=2024"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/tags?post=2024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}