Eller udtrykt som Klassisk Dynamics C5 2012 SP2 HF16 og HF17 gør det: “Syntaxfejl”.
I de to hotfix-version, som i øvrigt er de nyeste lige p.t., er #ApplBuild-makroen ændret, så den i stedet for at definere en streng med applikationsversionen direkte, kalder en global funktion, der så returnerer strengen.
Problemet er blot at compileren kløjs i det:
PRINT #ApplBuild PRINT SUBSTR(#ApplBuild,1,3) PAUSE
Ovenstående XAL-kodestump compiler og virker i Klassisk Dynamics C5 2012 SP2 HF15, men ikke i Klassisk Dynamics C5 2012 SP2 HF16 og HF17.
Første linje giver ikke problemer, men linje nr. 3 med “PAUSE” giver en “Syntaxfejl”. Og fjernes PAUSE-linjen, får man i stedet en “-5, Koden er afsluttet for tidligt”.
Den eneste forklaring jeg kan finde er at compileren får den nye struktur men en funktion der returnerer en konstant galt i halsen når SUBSTR-kommandoen kaldes.
Workarounden er lige for: Put værdien fra #ApplBuild i en variabel og kald SUBSTR på den i stedet, så spiller det.
Fejlen er naturligvis meldt ind til Microsoft.
Fejlen er delvist løst i C5 2012 SP2 HF18, men ikke så det bare virker. I stedet for de kryptiske fejl, får man nu fejlen “Fejl: -13, Macroen mangler en } eller en \n”
Dvs. man må i makroen skifte kommentaren i sidste linje til at bruge { } i stedet for //, eller i det mindste sørge for at der er en tom linje sidst i makroen. Det er sådan set det den nye fejl betyder!