{"id":2006,"date":"2026-09-14T21:36:59","date_gmt":"2026-09-14T21:36:59","guid":{"rendered":"https:\/\/clarionsharp.com\/blog\/?p=2006"},"modified":"2026-09-14T21:36:59","modified_gmt":"2026-09-14T21:36:59","slug":"clarion-unicode-preview-refreshed-beta-build-14313","status":"publish","type":"post","link":"https:\/\/clarionsharp.com\/blog\/clarion-unicode-preview-refreshed-beta-build-14313\/","title":{"rendered":"Clarion Unicode preview \u2014 refreshed beta build (14313)"},"content":{"rendered":"\n<style>\n.ustring-wp3 { --u-fg:#1c1917; --u-muted:#6b6560; --u-line:#e2dcd3; --u-card:#fff; --u-soft:#fef3c7; --u-accent:#b45309; --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-wp3 { --u-fg:#f5f5f4; --u-muted:#a8a29e; --u-line:#3f3a36; --u-card:#1c1917; --u-soft:#422006; --u-accent:#fbbf24; --u-bg:#121110; --u-link:#7dd3fc; }\n}\n.ustring-wp3 * { box-sizing:border-box; }\n.ustring-wp3 .uw-hero { background:linear-gradient(135deg,#1e2a4a 0%,#283a5e 45%,#431407 100%); color:#fafaf9; border-radius:14px; padding:1.75rem 1.5rem 1.5rem; margin:0 0 1.25rem; }\n.ustring-wp3 .uw-eyebrow { display:inline-block; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:#fbbf24; font-weight:700; margin-bottom:.55rem; }\n.ustring-wp3 .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-wp3 .uw-hero p { margin:0; color:#e7e5e4; font-size:1.05rem; max-width:42rem; }\n.ustring-wp3 .uw-pills { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:1rem; }\n.ustring-wp3 .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-wp3 .uw-pill strong { color:#fde68a; font-weight:650; }\n.ustring-wp3 .uw-lead { color:var(--u-muted); margin:0 0 1.1rem; font-size:1rem; }\n.ustring-wp3 .uw-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:.85rem; margin:0 0 1.5rem; }\n.ustring-wp3 .uw-card { background:var(--u-card); border:1px solid var(--u-line); border-radius:14px; padding:1rem 1.05rem 1.1rem; }\n.ustring-wp3 .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-wp3 .uw-card h3 { margin:0 0 .35rem; font-size:1rem; letter-spacing:-.01em; color:var(--u-fg); }\n.ustring-wp3 .uw-card p { margin:0; color:var(--u-muted); font-size:.92rem; line-height:1.5; }\n.ustring-wp3 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); }\n.ustring-wp3 .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-wp3 .uw-cta p { margin:0 0 .65rem; color:var(--u-muted); }\n.ustring-wp3 .uw-cta p:last-child { margin:0; }\n.ustring-wp3 .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-wp3 .uw-btn:hover { color:var(--u-accent) !important; text-decoration:underline !important; }\n.ustring-wp3 .uw-note { font-size:.88rem; color:var(--u-muted); margin-top:.75rem; }\n<\/style>\n\n<div class=\"ustring-wp3\">\n  <div class=\"uw-hero\">\n    <div class=\"uw-eyebrow\">Clarion \u00b7 Unicode Preview \u00b7 Beta Refresh<\/div>\n    <h2>Refresh build 14313 \u2014 a modern report previewer, Unicode reports by default, a DATETIME type for SQL, and the wide file-name family complete<\/h2>\n    <p>\n      A bigger drop. With EMF pages new functionality is within reach, and the first of it is a\n      new report previewer: search with highlighted hits, page thumbnails, marks, print or\n      save the marked pages, copy text off the page \u2014 on a wide report all of it Unicode.\n      For this <strong>beta release<\/strong> every existing application picks the previewer\n      and Unicode (EMF) reports up automatically from the templates on its next generate, so\n      de facto every app gets EMF reports; a hand-coded program reaches the same with the new\n      compiler pragma <code>define(report_unicode=&gt;on)<\/code>. Tell us how that lands on\n      your reports and your third-party report tools \u2014 that default is yours to confirm.\n      A new <code>DATETIME<\/code> type\n      carries a SQL timestamp to 100 nanoseconds through the compiler, the dictionary, the\n      import wizard and every SQL driver. <code>RUN()<\/code> and <code>COMMAND()<\/code> go\n      wide, closing the file-name family. Plus the fixes from beta testers&#8217; reports in the\n      forums. Already testing? Everything below is new since build 14258.\n    <\/p>\n    <div class=\"uw-pills\">\n      <span class=\"uw-pill\"><strong>Reports<\/strong> ReportPreviewClass \u00b7 Unicode reports by default \u00b7 report_unicode define \u00b7 PROP:Unicode<\/span>\n      <span class=\"uw-pill\"><strong>Data<\/strong> DATETIME type \u00b7 @DT picture \u00b7 DateTimeUtil \u00b7 import wizard checkbox<\/span>\n      <span class=\"uw-pill\"><strong>Runtime<\/strong> RUN \/ COMMAND wide \u00b7 CLIB wide twins \u00b7 ALL() negative count<\/span>\n      <span class=\"uw-pill\"><strong>IDE<\/strong> IMAGE field picker \u00b7 no BLOB list columns \u00b7 property search<\/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\">\u25a4<\/div>\n      <h3>A modern report previewer \u2014 reached through EMF pages<\/h3>\n      <p>\n        <code>ReportPreviewClass<\/code>: text search across every page with the hits highlighted (Ctrl+F, F3, match case), a thumbnail sidebar, page marks with Print Marked and Save Marked Pages As, Fit Page and Ctrl+plus\/minus zoom, Shift+drag to copy the text under the band, layout remembered in the INI, the index built on its own thread so a 1,000-page report opens at once. On a wide report the search is Unicode. It is the default for new apps, and a Print Previewer prompt that still reads <code>PrintPreviewClass<\/code> generates the new class on the next generate; &#8220;Keep the classic PrintPreviewClass previewer&#8221; opts out.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u2637<\/div>\n      <h3>For this beta release, reports print Unicode (EMF) by default<\/h3>\n      <p>\n        The new global &#8220;Unicode reports&#8221; check (on by default for this beta, so we hear how it lands) makes each Report procedure set <code>Report{PROP:Unicode} = True<\/code> as its report opens \u2014 USTRING fields, wide captions and emoji print as typed on <code>.emf<\/code> pages, error 546 stops, the PDF\/HTML\/TXT targets register their wide face; a per-procedure &#8220;Unicode pages&#8221; prompt opts one report out. The same check writes the compiler&#8217;s <code>report_unicode<\/code> define into the project, so hand-coded REPORT structures carry the UNICODE attribute too (<code>PRAGMA('define(report_unicode=&gt;on)')<\/code> in a hand-coded module). <code>PROP:Unicode<\/code> is documented as the run-time face of the attribute. Watch for: a third-party page tool that read <code>.wmf<\/code> files sees <code>.emf<\/code> now.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">&#x231a;<\/div>\n      <h3>DATETIME: a date and a time in one value, to 100 ns<\/h3>\n      <p>\n        A new data type \u2014 seconds since the Clarion day zero with seven decimal places, the precision of SQL Server&#8217;s <code>datetime2(7)<\/code>. Compares, sorts, keys and does arithmetic in seconds; zero is blank. In a SQL table it reads and writes the backend&#8217;s timestamp column and <code>CREATE()<\/code> declares it: <code>datetime2(7)<\/code>, <code>timestamp(6)<\/code>, SQLite ISO text, Oracle <code>TIMESTAMP(7)<\/code>; a VIEW filter on it is evaluated server-side. The <code>@DT<\/code>\u2026<code>@DT7<\/code> picture formats and enters it, <code>DateTimeUtil<\/code> converts to and from DATE and TIME (<code>SetNow<\/code> reads the precise clock), the Dictionary Editor offers the type, and the SQL import wizards create it for timestamp columns when &#8220;Import date-time columns as DATETIME&#8221; is checked (off by default \u2014 nothing changes for existing dictionaries).\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">&#x25b6;<\/div>\n      <h3>RUN() and COMMAND() wide \u2014 the file-name family is complete<\/h3>\n      <p>\n        <code>RUN()<\/code> takes a USTRING command line: a program in a folder outside the Windows codepage is located and started exactly and its parameters travel as typed; an ANSI-only USTRING takes the old path byte-for-byte. <code>COMMAND()<\/code> no longer shifts every parameter by one for a program that lives in such a folder (the <code>\u20bf<\/code> folders from the forum). <code>CLIB.CLW<\/code> stays narrow by design, with four exported wide twins (<code>_fnsplitW<\/code>, <code>_fnmergeW<\/code>, <code>_mkdirW<\/code>, <code>_accessW<\/code>). With EXISTS, COPY\/RENAME\/REMOVE, DIRECTORY, FILEDIALOG and the PATH family already wide, that closes the family.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u270e<\/div>\n      <h3>Designers and dictionary, from beta testers&#8217; reports<\/h3>\n      <p>\n        The Window Designer&#8217;s IMAGE gets the dictionary-field picker (BLOB and BINARY MEMO fields, the ones <code>IMAGE,USE()<\/code> accepts), and dropping a BLOB onto a window creates an IMAGE bound to it. A BLOB is never offered as a list-box column, and an app that already has one stops generation with a plain sentence instead of the compiler&#8217;s &#8220;Illegal parameter for LIKE&#8221;. The property-pane search is case-insensitive in every designer, and <code>UNICODE<\/code> is coloured as an attribute in the editor.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u0192<\/div>\n      <h3>Fixes from the forums: ALL(), the PDF class, datetime2 DDL<\/h3>\n      <p>\n        <code>ALL()<\/code> with a negative count returns &#8221; again instead of &#8220;Clarion RTL internal exception&#8221; 0B000000. <code>ABPRPDF.CLW<\/code> compiles without warnings, and a real defect went with them: a wide report text longer than 99 units was cut in the PDF (150 units drew as 15). MS SQL CREATE of the legacy datetime group emits <code>datetime2(7)<\/code> on SQL Server 2008 and later \u2014 &#8220;Specified scale 8 is invalid&#8221; is gone.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">?<\/div>\n      <h3>F1 help, current for this drop<\/h3>\n      <p>\n        The IDE help (ClarionHelp.chm) carries new topics for <code>DATETIME<\/code>, the Date-Time Pictures, <code>ReportPreviewClass<\/code>, <code>PageTextIndexClass<\/code> and the Report template&#8217;s Preview Options; <code>PROP:Unicode<\/code> and the <code>report_unicode<\/code> define on the REPORT pages; the &#8220;Unicode reports&#8221; and &#8220;Unicode pages&#8221; prompts; and the three new stock icons <code>ICON:PageUp<\/code>, <code>ICON:PageDown<\/code> and <code>ICON:Clear<\/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, and what to focus\n      on when testing. The guide&#8217;s <em>&#8220;What&#8217;s new&#8221;<\/em> section lists everything in this\n      drop; changes are also flagged inline with dated <em>&#8220;beta refresh&#8221;<\/em> notes.\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 now the\n      <code>PageTextIndexClass<\/code> text index the new previewer searches with, usable\n      by your own viewer as-is:\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, tell us on the beta forum.\n    <\/p>\n  <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>new report previewer: search with highlighted hits, page thumbnails, marks, print or<br \/>\n      save the marked pages, copy text off the page \u2014 on a wide report all of it Unicode<\/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-2006","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\/2006","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=2006"}],"version-history":[{"count":2,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2006\/revisions"}],"predecessor-version":[{"id":2008,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2006\/revisions\/2008"}],"wp:attachment":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/media?parent=2006"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/categories?post=2006"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/tags?post=2006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}