{"id":2016,"date":"2026-10-12T20:58:28","date_gmt":"2026-10-12T20:58:28","guid":{"rendered":"https:\/\/clarionsharp.com\/blog\/?p=2016"},"modified":"2026-10-12T20:58:28","modified_gmt":"2026-10-12T20:58:28","slug":"clarion-unicode-beta-refresh-14438","status":"publish","type":"post","link":"https:\/\/clarionsharp.com\/blog\/clarion-unicode-beta-refresh-14438\/","title":{"rendered":"Clarion Unicode \u2013 beta refresh (14438)"},"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 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 14438 \u2014 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<\/h2>\n    <p>\n      The report previewer&#8217;s toolbar is one pages-layout button plus first \/ previous \/\n      next \/ last paging buttons, with find arrows you recognise. The IDE gets a\n      DebugViewer pad for the OutputDebugString stream and an Errors pad that always\n      shows the whole build. The Dictionary Editor sorts its tables from the toolbar and\n      the Dictionary menu. <code>ClarionCL \/aim<\/code> merges a TXA into an existing\n      application without the IDE, and formulas that call your own functions pass the\n      editor, the TXA and Copy Procedure. Every ENTRY paints the same whichever engine\n      draws it, a 4-digit year typed into <code>@D1<\/code> lands on the right day, a\n      picture on a Unicode report prints to PDF, and a browse over wide SQL tables keeps\n      its place. Already testing? Everything below is new since build 14407.\n    <\/p>\n    <div class=\"uw-pills\">\n      <span class=\"uw-pill\"><strong>IDE<\/strong> DebugViewer pad \u00b7 Errors pad always on \u00b7 Sort Tables on the DCT toolbar \u00b7 Window Preview shows every LIST column<\/span>\n      <span class=\"uw-pill\"><strong>Report previewer<\/strong> one layout button \u00b7 VCR paging buttons \u00b7 first \/ last in the sidebar<\/span>\n      <span class=\"uw-pill\"><strong>AppGen<\/strong> <code>ClarionCL \/aim<\/code> \u00b7 formulas calling app functions \u00b7 Help file taken as typed<\/span>\n      <span class=\"uw-pill\"><strong>Entry controls<\/strong> blank date paints blank \u00b7 <code>@D1<\/code> with a 4-digit year \u00b7 wide entry = classic face<\/span>\n      <span class=\"uw-pill\"><strong>Reports<\/strong> pictures on a Unicode report to PDF \u00b7 Image 2 PDF builds wide<\/span>\n      <span class=\"uw-pill\"><strong>From the forums<\/strong> <code>SELECT(0)<\/code> reports itself \u00b7 2,048-byte view positions \u00b7 <code>FILE:QueueW<\/code> one <code>Attrib<\/code> \u00b7 Position pane in AT() order<\/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\">\u25b8<\/div>\n      <h3>Report previewer: a leaner toolbar that pages the way you expect<\/h3>\n      <p>\n        The Across and Down spins are one button that reads &#8220;1 Page&#8221; or &#8220;3 x 2&#8221; and opens a popup (Alt+L) with Across 1\u20136 and Down 1\u20134; View \u203a 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&#8217;s previous \/ next are the up and down arrows you know from Notepad and VS Code, and the thumbnail sidebar&#8217;s top row has first-page and last-page buttons beside the chevrons. For a derived class: <code>Ctl.PageFirst<\/code> \/ <code>PagePrev<\/code> \/ <code>PageNext<\/code> \/ <code>PageLast<\/code>. From beta reports.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u2261<\/div>\n      <h3>The IDE: a debug-output pad, and an Errors pad that shows the whole build<\/h3>\n      <p>\n        Tools \u203a Show DebugViewer opens a pad that captures the Windows debug output stream: everything an application writes with OutputDebugString, the driver&#8217;s <code>DEBUG:<\/code> trace target and the runtime&#8217;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 &#8220;0 warnings&#8221; always means what it says (use Rebuild to see a compile&#8217;s warnings again).\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u25a4<\/div>\n      <h3>Dictionary Editor: Sort Tables one click away<\/h3>\n      <p>\n        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&#8217;s modified date moves only when you change the table. From a beta request.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\/<\/div>\n      <h3>AppGen: <code>ClarionCL \/aim<\/code>, formulas that call your functions, the Help file as typed<\/h3>\n      <p>\n        <code>ClarionCL \/aim myapp.app newproc.txa<\/code> does what the Application menu&#8217;s Import Text does, headless: the app is opened, the TXA merged (procedures of the same name replaced, everything else kept), the app saved; <code>\/ai<\/code> still creates a new app. A formula such as <code>LookupName(STU:FirstName)<\/code> or <code>GetTag()<\/code>, calling a Source procedure declared as a function, passes the Formula editor&#8217;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, <code>MyHelp<\/code> stays <code>MyHelp<\/code>, no extension is forced. From beta reports.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">@<\/div>\n      <h3>Entry controls paint the same whichever engine draws them<\/h3>\n      <p>\n        A blank unmasked <code>ENTRY(@D6)<\/code> or <code>ENTRY(@T1)<\/code> shows an empty box again, as in Clarion 11; a MASKed entry with a zero fill keeps its <code>00\/00\/0000<\/code>. A 4-digit year typed into a 2-digit-year picture lands on the right day: <code>07042026<\/code> into <code>ENTRY(@D1)<\/code> is July 4th 2026, the parts guessed in the picture&#8217;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 (<code>@n_6<\/code> with blanks, <code>09:00<\/code> with its leading zero). From beta reports: fixed now.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u25a3<\/div>\n      <h3>Window Designer: Position in AT() order, and a preview that shows every column<\/h3>\n      <p>\n        The Position pane&#8217;s AT rows read X, Y, Width, Height, the order of <code>AT()<\/code>, <code>GETPOSITION()<\/code> and <code>SETPOSITION()<\/code>, for the window, every control and the Report Designer. Window Preview shows every LIST column: a FORMAT with <code>#n#<\/code> field numbers previews each column with its own sample, a default tip <code>Q''text''<\/code> 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 <code>@C<\/code> picture has blanks inside the separator opens in the designer as it compiles. From beta reports.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">P<\/div>\n      <h3>Report to PDF: pictures on a Unicode report, and the Image 2 PDF library builds wide<\/h3>\n      <p>\n        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&#8217;s picture: PNG, BMP and JPG all print to PDF as they do on paper. The <code>I2PDFReportGenerator<\/code> class carries both report-generator interfaces, <code>IReportGenerator<\/code> and <code>IReportGeneratorW<\/code>, 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.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">0<\/div>\n      <h3>From the forums: <code>SELECT(0)<\/code> reports itself, 2,048-byte view positions, one <code>Attrib<\/code><\/h3>\n      <p>\n        An explicit <code>SELECT(0)<\/code> 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 <code>SELECT(State)<\/code> slip where <code>SELECT(?State)<\/code> 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). <code>FILE:QueueW<\/code> has a single <code>Attrib LONG<\/code>; test it with <code>BAND(FILEW:Attrib, ff_:DIRECTORY)<\/code>.\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 14438 \u2014 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&#8217;s toolbar is one pages-layout button plus first \/ previous \/ next \/ last paging buttons, with find &hellip; <a href=\"https:\/\/clarionsharp.com\/blog\/clarion-unicode-beta-refresh-14438\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Clarion Unicode \u2013 beta refresh (14438)<\/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":[45,54,49],"class_list":["post-2016","post","type-post","status-publish","format-standard","hentry","category-clarion-12","category-clarionnews","tag-clarion-12","tag-clarion-beta-refresh-unicode","tag-ustring"],"_links":{"self":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2016","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=2016"}],"version-history":[{"count":1,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2016\/revisions"}],"predecessor-version":[{"id":2017,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2016\/revisions\/2017"}],"wp:attachment":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/media?parent=2016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/categories?post=2016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/tags?post=2016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}