You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Nordic national characters (ÆØÅ) truncate PL/I/HLASM/JCL identifiers — units misnamed, calls unlinked #3520
On Nordic EBCDIC code pages (CP277 Danish/Norwegian, CP278 Swedish/Finnish), the national characters $ # @ render as Å Æ Ø (and similar). Source exported from those estates therefore carries identifiers such as OVERFØR_TIL_MAP, and the compilers accept them as ordinary identifiers.
GitGalaxy's name captures are ASCII-only, so it truncates each such name at the first national character:
Source (navikt/DSF R0010422.pli)
GitGalaxy unit name
OVERFØR_TIL_MAP: PROC;
R_TIL_MAP
OVERFØR_FRA_MAP: PROC;
R_FRA_MAP
The unit is found (signal == named on every file), but its name is wrong, so every CALL OVERFØR_TIL_MAP fails to link to it. The call graph, dead-code verdicts and lineage all break for these units.
Scale
Across the whole navikt/DSF repository (Norway's national insurance system: 1,473 PL/I files), 85 files have a national character in a PROC label, and there are 1,255 CALLs to such names. In the crucible v1.5.0 slice (data/pli/dsf_cics_admin) it affects 8 of 39 units (4 files × 2).
Scope to check
The same code-page mapping applies wherever a language's identifiers allow @ # $:
PL/I: labels, entry names, variables (confirmed)
HLASM: symbols allow @ # $
JCL: job, step, DD and member names, and dataset qualifiers
CSD: resource names
COBOL: user-defined words don't allow @#$, but the literals holding program names (CALL 'X', XCTL PROGRAM('X')) do
Fix sketch
Widen the identifier classes for those languages (func_start/class_start name groups, the call-site readers in mainframe_boundary, and job_flow) to include the national-character range, e.g. ÆØÅæøåÄÖÜ. Add a regression test using the DSF shape. Crucible v1.5.0 carries the reproduction, and docs/self_scan/manual_verification.json records pli at 38/46 until this is fixed.
Found while pinning crucible v1.5.0 (language-crucible#33).
Activity
Bump language-crucible pin v1.4.0 -> v1.5.0 (CICS gap corpora) (#3521)