Supported RPG Features

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.