The same words are valid operands anywhere an expression is accepted, in both
fixed- and free-format. Because they are numeric, the operand carries the
number its digits spell, not the digit string - so %CHAR of one drops the
leading zero, and arithmetic and relational operators apply normally:
// job date 2026-07-28, DATEDIT defaulting to *MDY
c20 = %char(*date); // '7282026' - not '07282026'
c20 = %char(*month); // '7' - not '07'
c20 = %char(udate); // '72826'
n = *date + 1; // 7282027
if *date > 1000000; // compares numerically
To see the full zero-filled width, render it explicitly - assign the word to a
numeric field and use the X edit code, or MOVE it into a character field
(the MOVE digit-image rule above):
C EVAL n8 = *DATE (n8 is 8S 0)
C EVAL c20 = %EDITC(n8:'X') ('07282026')
DSPLY of a job-date word right-justifies it in the word's declared digit
count, so an 8-digit *DATE displays as · 7282026 - one leading blank where
the suppressed zero was.
DATEDIT reorders the digits, so it changes the number the word spells:
%char(*date) is 7282026 under DATEDIT(*MDY) and 20260728 under
DATEDIT(*YMD).
A declared field whose name collides with one of these words takes precedence - the reserved-word reading applies only to a name nothing else defines.