Refresh build 14313 — a modern report previewer, Unicode reports by default, a DATETIME type for SQL, and the wide file-name family complete
A bigger drop. With EMF pages new functionality is within reach, and the first of it is a
new report previewer: search with highlighted hits, page thumbnails, marks, print or
save the marked pages, copy text off the page — on a wide report all of it Unicode.
For this beta release every existing application picks the previewer
and Unicode (EMF) reports up automatically from the templates on its next generate, so
de facto every app gets EMF reports; a hand-coded program reaches the same with the new
compiler pragma define(report_unicode=>on). Tell us how that lands on
your reports and your third-party report tools — that default is yours to confirm.
A new DATETIME type
carries a SQL timestamp to 100 nanoseconds through the compiler, the dictionary, the
import wizard and every SQL driver. RUN() and COMMAND() go
wide, closing the file-name family. Plus the fixes from beta testers’ reports in the
forums. Already testing? Everything below is new since build 14258.
Highlights of this drop — then the full tester guide, whose “What’s new” section lists everything that changed since you last read it.
A modern report previewer — reached through EMF pages
ReportPreviewClass: 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 PrintPreviewClass generates the new class on the next generate; “Keep the classic PrintPreviewClass previewer” opts out.
For this beta release, reports print Unicode (EMF) by default
The new global “Unicode reports” check (on by default for this beta, so we hear how it lands) makes each Report procedure set Report{PROP:Unicode} = True as its report opens — USTRING fields, wide captions and emoji print as typed on .emf pages, error 546 stops, the PDF/HTML/TXT targets register their wide face; a per-procedure “Unicode pages” prompt opts one report out. The same check writes the compiler’s report_unicode define into the project, so hand-coded REPORT structures carry the UNICODE attribute too (PRAGMA('define(report_unicode=>on)') in a hand-coded module). PROP:Unicode is documented as the run-time face of the attribute. Watch for: a third-party page tool that read .wmf files sees .emf now.
DATETIME: a date and a time in one value, to 100 ns
A new data type — seconds since the Clarion day zero with seven decimal places, the precision of SQL Server’s datetime2(7). Compares, sorts, keys and does arithmetic in seconds; zero is blank. In a SQL table it reads and writes the backend’s timestamp column and CREATE() declares it: datetime2(7), timestamp(6), SQLite ISO text, Oracle TIMESTAMP(7); a VIEW filter on it is evaluated server-side. The @DT…@DT7 picture formats and enters it, DateTimeUtil converts to and from DATE and TIME (SetNow reads the precise clock), the Dictionary Editor offers the type, and the SQL import wizards create it for timestamp columns when “Import date-time columns as DATETIME” is checked (off by default — nothing changes for existing dictionaries).
RUN() and COMMAND() wide — the file-name family is complete
RUN() 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. COMMAND() no longer shifts every parameter by one for a program that lives in such a folder (the ₿ folders from the forum). CLIB.CLW stays narrow by design, with four exported wide twins (_fnsplitW, _fnmergeW, _mkdirW, _accessW). With EXISTS, COPY/RENAME/REMOVE, DIRECTORY, FILEDIALOG and the PATH family already wide, that closes the family.
Designers and dictionary, from beta testers’ reports
The Window Designer’s IMAGE gets the dictionary-field picker (BLOB and BINARY MEMO fields, the ones IMAGE,USE() 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’s “Illegal parameter for LIKE”. The property-pane search is case-insensitive in every designer, and UNICODE is coloured as an attribute in the editor.
Fixes from the forums: ALL(), the PDF class, datetime2 DDL
ALL() with a negative count returns ” again instead of “Clarion RTL internal exception” 0B000000. ABPRPDF.CLW 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 datetime2(7) on SQL Server 2008 and later — “Specified scale 8 is invalid” is gone.
F1 help, current for this drop
The IDE help (ClarionHelp.chm) carries new topics for DATETIME, the Date-Time Pictures, ReportPreviewClass, PageTextIndexClass and the Report template’s Preview Options; PROP:Unicode and the report_unicode define on the REPORT pages; the “Unicode reports” and “Unicode pages” prompts; and the three new stock icons ICON:PageUp, ICON:PageDown and ICON:Clear.
Full tester guide — mental model, conversion rules, DCT import table, screen controls, reports, blobs, SQL / SQLite / text drivers / TopSpeedW / Memory / IP, recipes, and what to focus on when testing. The guide’s “What’s new” section lists everything in this drop; changes are also flagged inline with dated “beta refresh” notes.
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 now the
PageTextIndexClass text index the new previewer searches with, usable
by your own viewer as-is:
Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation — if you see something different, tell us on the beta forum.