Every Easytrieve source line on z/OS is an eighty-character row divided into regions with different jobs. Columns one through seventy-two (by default) hold the statements the compiler parses—FILE, DEFINE, JOB, IF, and everything else that becomes executable logic. Columns seventy-three through eighty often hold sequence numbers for change control. Between those regions, installation options SCANCOLS and SCANCOLE can shift where scanning begins and ends. Beginners from COBOL expect indicator column seven and Area A/B rules; Easytrieve is simpler but no less strict when code drifts past column seventy-two without continuation. This page maps each column region and how it affects compilation.
Mainframe source libraries store Easytrieve members as fixed eighty-character records. Editors display a ruler from column one to eighty. Unlike free-format PC languages, physical column position still matters for continuation, comment placement, and whether text is scanned at all. Error messages reference line numbers of these records; debugging requires aligning listing columns with ISPF display columns.
12345Col: 1 10 20 30 40 50 60 70 73 80 |---------|---------|---------|---------|---------|---------|----|----| JOB INPUT PERSNL 001000 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ default statement area (cols 1-72) seq
The statement area is where Easytrieve language syntax lives. Keywords, field names, literals, operators, and delimiters must appear within SCANCOLS through SCANCOLE. Default installation uses one through seventy-two. You may indent statements for readability— leading spaces before JOB do not change meaning. The last non-blank character in this area normally ends the statement unless it is plus or minus for continuation.
| Columns | Region name | Role |
|---|---|---|
| 1-72 (default) | Statement area | Compiler scans for Easytrieve syntax |
| 73-80 | Sequence / ID area | Often sequence numbers; ignored by parse |
| 1-6 (when SCANCOLS 7) | Left margin ID | Ignored; mirrors COBOL sequence area |
| 7-72 (when SCANCOLS 7) | Shifted statement area | Code must start here at such sites |
Configuration Manager sets SCANCOLS (start column) and SCANCOLE (end column) as compile-time installation options. Valid values are one through eighty with SCANCOLE greater than SCANCOLS. Example: SCANCOLS 7 and SCANCOLE 72 means columns one through six are never interpreted as program text—ideal when your shop reserves them for sequence numbers consistent with COBOL standards. Individual developers cannot override these values per program; misaligned code at column one on a SCANCOLS 7 system appears to compile as blank or garbage tokens.
123456Broadcom diagram (SCANCOLS 7, SCANCOLE 72): 1....6 7......................................72 73...80 001000 JOB INPUT PERSNL 001000 ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ignored scanned statement area
The rightmost eight columns sit outside the default statement area. Teams use them for six-digit sequence numbers (001000, 001010, 001020 in increments of ten), programmer initials, change ticket numbers, or version tags. The compiler ignores this region for parsing but prints it on source listings—valuable when auditors match compile output to controlled source. ISPF NUM ON can auto-maintain sequence numbers in seventy-three through eighty when you insert or delete lines.
Never place executable statements only in columns 73-80 expecting them to run. That text is invisible to the parser. Conversely, do not assume sequence numbers affect logic—they are documentation and tooling aids unless your site uses custom preprocessors.
COBOL divides the same eighty-character card into sequence area (1-6), indicator (7), and source (8-72). Indicator column asterisk means comment; hyphen means continuation. Easytrieve has no column-seven indicator. Comments use asterisk in the first non-blank column of the statement area. Continuation uses trailing plus or minus on the prior line. COBOL programmers new to Easytrieve often insert column-seven asterisks that compile as unexpected tokens if SCANCOLS is 1, or as ignored text in columns 1-6 when SCANCOLS is 7.
Long DEFINE lines with MASK literals, PARM DEBUG lists, and TITLE text frequently approach column seventy-two. When the next token would extend past SCANCOLE, end the line with plus or minus and continue on the next record. Column arithmetic matters: a forty-character field name plus qualification and MASK parameters consumes horizontal space quickly. Plan breaks at delimiters between words, not inside quoted literals when avoidable—though Broadcom examples split literals mid-string with continuation.
Compile diagnostics show the full eighty-column source line. Caret markers under errors reference positions within the scanned area. If your error points to column seventy-three, verify SCANCOLE—text may fall outside the scanned range. Sequence column mismatches between listing and ISPF usually mean different NUM settings or upload truncation, not compiler bugs.
VS Code, Notepad++, and Git clients may hide trailing spaces or use proportional fonts that distort column alignment. Before uploading to z/OS, convert to fixed eighty with spaces padded to record end. Verify continuation characters are the true last non-blank in the statement area—editors that trim trailing spaces break plus and minus continuation silently. Display hex or ruler view when compile errors mention unexpected end of statement.
Imagine a worksheet with eighty boxes in each row. The teacher only reads boxes one to seventy-two for your answer. Boxes seventy-three to eighty are where you write your page number—the teacher sees it on the photocopy but does not grade it as part of your answer. Some classrooms start reading at box seven instead of box one because the first six boxes are only for page numbers. If you write past box seventy-two without saying continue on the next row, the teacher stops reading.
1. The default Easytrieve statement area spans:
2. Columns 73-80 on a source line are typically used for:
3. SCANCOLS establishes:
4. When SCANCOLS is 7, columns 1-6 are:
5. Easytrieve differs from COBOL column 7 because: