LOW-VALUES is the low-byte figurative constant in Easytrieve—hexadecimal 00 in every byte of a field when you MOVE or test LOW-VALUES. It is not the same as spaces, which are printable EBCDIC blank characters. It is also a reserved word: you cannot name your own field LOW-VALUES when compiling for 11.6 function mode. Legacy programs that used LOW-VALUES as a column name for a status flag or a COBOL-aligned marker need renames before migration, while IF EMP-NAME NOT LOW-VALUES style logic stays in place. This page explains dual roles, migration scanning, contrast with SPACES and NULL, packed decimal cautions, and pointers to the constants tutorial for exhaustive byte rules.
The compiler parses LOW-VALUES twice in the grammar: as a reserved token in identifier tables rejecting DEFINE LOW-VALUES, and as a figurative constant object in IF and MOVE where the keyword follows or precedes a field per field-class condition rules. Migration failures happen when shops rename only half the program—constant tests compile while an overlooked COPY member still DEFINE LOW-VALUES.
| Pattern | 11.6 status |
|---|---|
| DEFINE LOW-VALUES ... | Compile error—rename field |
| IF ADDR NOT LOW-VALUES | Valid constant test |
| MOVE LOW-VALUES TO WS-SLOT | Valid fill with X’00’ |
| TITLE 'LOW VALUES LIST' | Literal in quotes—safe |
LOW-VALUES appears on the New Reserved Words list for 6.4 to 11.6 function mode moves, paired with HIGH-VALUES. Differences Between Releases documentation repeats the warning that field names matching these tokens cause errors. Run identifier scans early; fixes are mechanical renames but easy to miss in rarely compiled archived jobs.
No. Use WS-LOW-FLAG, FL-INIT-STATUS, SLOT-EMPTY-IND, or names describing business state without the token LOW-VALUES. Even if your mainframe standard copied COBOL figurative names into data elements, Easytrieve 11.6 enforces reservation at compile time.
IF FIELD LOW-VALUES is true only when every byte is X’00’. One trailing zero byte in an otherwise blank name does not qualify if other bytes hold spaces or letters. MOVE LOW-VALUES clears bytes to binary zero, which may display as blank on some terminals but is not identical to MOVE SPACES for sorting, SQL export, or audit trails.
123456789101112131415DEFINE WS-NAME W 20 A DEFINE WS-SLOT W 8 A INIT-PROC. PROC MOVE LOW-VALUES TO WS-SLOT END-PROC JOB INPUT FILEA IF WS-NAME NOT LOW-VALUES PRINT NAME-RPT WS-NAME END-IF IF WS-SLOT LOW-VALUES MOVE 'EMPTY' TO STATUS-MSG END-IF STOP
| Item | LOW-VALUES | SPACES / literals |
|---|---|---|
| Typical byte | X'00' per byte | X'40' EBCDIC space per byte |
| Meaning | Often uninitialized or cleared binary | Known blank character |
| IF syntax | IF FIELD LOW-VALUES | Compare to literal or blank function per release |
| SQL export | May differ from NULL or blank column | Often maps to blank column |
Normalizing LOW-VALUES to spaces without logging destroys evidence that data was never entered versus intentionally blank. Pick one shop rule for display and document it in program headers when both sentinels appear in the same application.
Table walks sometimes initialize slots with LOW-VALUES and use HIGH-VALUES as upper sentinel. Both tokens are reserved identifiers on 11.6. Constant syntax for both remains. Migration projects should grep for both tokens in DEFINE and FILE lines in one pass.
MOVE LOW-VALUES to packed or zoned fields creates a byte pattern that may not equal numeric zero in business terms. For counters, prefer MOVE ZERO or MOVE 0 with typed fields. Use LOW-VALUES where byte semantics matter—bitmaps, flags, or character slots in mixed overlays.
LOW-VALUES means every little box in a row is filled with the emptiest possible color— darker than empty air, like switched-off pixels. Spaces are like writing a real blank with a pencil you can see. The robot has a special phrase LOW-VALUES for checking or filling that darkest color. You cannot name your lunch box LOW-VALUES anymore, but you can still ask the robot to fill a row with that darkest color when you mean it.
1. LOW-VALUES reserved word blocks:
2. Each byte in LOW-VALUES is:
3. LOW-VALUES is the same as spaces for character fields:
4. Legacy DEFINE LOW-VALUES on 11.6:
5. Typical sentinel use: