Easytrieve SET — Reserved Word and Migration Guide

SET is a short, convenient field name—SET-FLAG, DEFINE SET 1 A, IF SET EQ 'Y'—that compiled cleanly for years until Broadcom activated it as a reserved word in Easytrieve Report Generator 11.x function mode. Migration weekends suddenly produce compile errors on hundreds of members where SET meant settings indicator or setup complete switch, not a language keyword. Understanding SET today means understanding reserved-word enforcement, the New Reserved Words migration list, search-and-rename procedures, and naming standards that prevent the next collision when EXECUTE or GRAPH already claimed other favorite names. This page documents when SET became reserved, what breaks at compile time, safe rename patterns, relationship to assignment syntax using equals sign, cross-check against SQL environments where SET has different meaning, testing after rename, and how SET fits beside SYSUSERID and EXECUTE on the same migration checklist auditors expect completed before production cutover.

Progress0 of 0 lessons

When SET Became Reserved

Broadcom documents that words previously classified as future reserved became enforced in release 11.x. SET appears on the New Reserved Words page alongside EXECUTE, LOGICAL-RECORD, INITIATION, BREAK-LEVEL, SYSUSERID, HIGH-VALUES, LOW-VALUES, SUMMARY-INDEX, DRAW, GRAPH, END-REPEAT, ELEMENT-RECORD, and NOTITLE. Knowledge article 55109 confirms SET among keywords now active under 11.x. Legacy compatibility mode may defer errors—production function mode does not.

SET reserved word facts
TopicDetail
Introduced enforcementEasytrieve Report Generator 11.x function mode
Cannot use asField name, file name, procedure label
Typical legacy useSetup flag, settings indicator, generic switch
FixRename identifier; recompile and regression test
Related keywordsEXECUTE, SET-like verbs on same migration list

Compile-Time Failure Pattern

Compiler encounters DEFINE SET or reference to field SET and reports symbol conflict with reserved word SET. Error text varies by release but clearly points to reserved identifier. Do not attempt to bypass with quotes or odd delimiters—reserved words are lexical, not contextual. Rename resolves definitively.

text
1
2
3
4
5
6
7
8
9
10
11
* Legacy—fails in 11.6 function mode DEFINE SET 1 A IF SET EQ 'Y' PERFORM PROCESS-SETUP END-IF * Migrated DEFINE SETUP-IND 1 A IF SETUP-IND EQ 'Y' PERFORM PROCESS-SETUP END-IF

Migration Search Strategy

  1. Search source libraries for DEFINE SET with word boundaries—avoid matching SETUP.
  2. Review IF SET, MOVE TO SET, and LINE SET report references.
  3. Check macro expansions generating DEFINE SET in copybooks.
  4. Run compile with NEW function mode on representative programs.
  5. Update data dictionary and copybook comments with new names.

Automated renames must preserve semantics: SET meaning error-set flag should become ERR-SET-IND not generic FLAG1. Future maintainers read names during incidents.

SET Versus Assignment Syntax

Easytrieve assignment uses equals in many statements—COUNT = COUNT + 1—distinct from the reserved word SET as identifier. Beginners misread migration notes thinking SET becomes mandatory assignment verb. Reserved SET blocks naming; assignment syntax unchanged on your release. Consult Assignment operator page for expression rules.

SET and SQL Context

Programs with SQL INCLUDE may encounter SQL SET semantics in embedded statements—separate from Easytrieve field name SET. SQL parser contexts differ; still rename Easytrieve DEFINE SET to avoid preprocessed source conflicts on some installations. Test SQL programs individually.

Naming Standards After Migration

Broadcom best practices recommend lowercase or mixed-case uncommon words for identifiers because uppercase English keywords expand each release. Prefix work fields WS-, indicators -IND, flags -FLG. Avoid TOTAL, COUNT, SET, DRAW, GRAPH as bare names. Architecture review board publishes approved stems reducing repeat migrations.

SET on the Full 11.6 Reserved List

Treat migration holistically—programs with SET collision may also define EXECUTE or LOGICAL-RECORD. Single pass global rename spreadsheet tracks member, old name, new name, tester sign-off. Parallel run old and new compile until cutover complete.

  • BREAK-LEVEL
  • DRAW
  • ELEMENT-RECORD
  • END-REPEAT
  • EXECUTE
  • GRAPH
  • SET
  • LOGICAL-RECORD
  • INITIATION
  • HIGH-VALUES / LOW-VALUES
  • NOTITLE
  • SUMMARY-INDEX
  • SYSUSERID

Testing After Rename

Regression tests prove renamed SETUP-IND still gates setup path. Compare output files before and after migration byte-for-byte on golden tests. SCREEN programs verify indicator still toggles on PF keys. Batch jobs check SYSPRINT for unexpected branches.

Common SET Migration Mistakes

  • Renaming only DEFINE but missing macro-generated SET.
  • Choosing SETUP that conflicts with unrelated abbreviations.
  • Assuming lowercase set avoids reservation.
  • Deferring compile until production weekend without pilot compiles.
  • Ignoring SET on one of dozens of copybooks in chain.
  • Confusing reserved SET with SQL SET clause in same module without testing.

Explain It Like I'm Five

SET was your nickname for a box in the classroom. The teacher now uses the word SET for something official in the rule book, so you cannot label a box SET anymore—you pick a new label like SETUP-BOX. The things inside the box stay the same; only the name on the outside changes so the teacher does not get confused.

Exercises

  1. Rewrite legacy snippet replacing DEFINE SET with prefixed name.
  2. List five other 11.6 reserved words from the same migration page.
  3. Write a migration checklist row for SET rename verification.
  4. Explain difference between reserved SET and assignment with =.
  5. Propose naming standard rule preventing single-word English field names.

Quiz

Test Your Knowledge

1. SET in Easytrieve 11.6 function mode is:

  • A reserved word—programs using SET as a field name fail compile
  • A new assignment statement replacing MOVE
  • Optional and ignored
  • Only reserved in JCL

2. Before 11.x SET was often:

  • Classified as future reserved—not enforced until function mode
  • Never documented
  • A system variable like SYSDATE
  • Required on every FILE

3. If legacy code has DEFINE SET ... you should:

  • Rename the field and recompile—e.g. SET-FLAG or WS-SET-IND
  • Keep SET and disable compiler
  • Comment out DEFINE only
  • Use lowercase set to bypass

4. SET appears alongside these 11.6 new reserved words:

  • EXECUTE, LOGICAL-RECORD, SYSUSERID
  • SYSDATE, SYSTIME only
  • COBOL, PL/I
  • FILE, JOB only

5. Best practice to avoid future collisions:

  • Use prefixed unique names like WS- or file-specific stems—not common English verbs
  • Use single English words in uppercase
  • Copy mainframe COBOL words exactly
  • Avoid DEFINE entirely
Published
Read time14 min
AuthorMainframeMaster
Reviewed by MainframeMaster teamVerified: Broadcom Easytrieve 11.6 New Reserved Words SET; Knowledge Article 55109Sources: Broadcom New Reserved Words, Symbols and Reserved Words, Using Best PracticesApplies to: Easytrieve SET reserved word migration