Aprilsnar: 33 år gammel spaghettikode kan redde SKAT ud af it-suppedas

Illustration: REDPIXEL.PL/Bigstock
Et program, som oprindeligt blev kasseret i 1982, kan måske hjælpe SKAT med at inddrive de restancer, som et nyt it-system ikke har kunnet håndtere.

APRILSNAR: SKATs it-problemer betyder, at staten er gået glip af mindst 900 millioner kroner, som danskerne har skyldt staten, men som ikke er blevet inddrevet, inden forældelsesfristens udløb. Et nyt stort it-system skulle netop klare den opgave, men det har ikke virket efter hensigten. Nu kan SKAT få hjælp fra uventet side.

Et 33 år gammelt program ser nemlig ud til at kunne graves frem fra it-kirkegården og løse den samme opgave, som det såkaldte EFI, Et Fælles Inddrivelsessystem, skulle have kunnet.

»Vi har kørt en afgrænset test af programmet, og selvom det er for tidligt at fælde endegyldig dom, så ser det lovende ud. Programmet kører lynhurtigt og ser ud til at løse opgaven fejlfrit,« siger projektleder Bent Scharøe Petersen fra SKAT til Version2.

Læs også: Skat må opgive at inddrive 900 millioner kroner efter it-skandale

Det eneste problem ved det gamle program er, at ingen nuværende medarbejdere i SKAT er i stand til at gennemskue, hvordan det rent faktisk fungerer.

Hundredvis af GOTO-kommandoer

Programmet, der lød det uofficielle navn DATAERSK, hvilket skulle være en sammentrækning af 'datatærskeren', blev nemlig blot udviklet som et testforløb og aldrig taget i brug. Derfor er programmet heller ikke dokumenteret, og koden er i praksis umulig at overskue for andre end de oprindelige programmører.

»Den er meget typisk for programmer fra dengang det, man virkelig kan kalde spaghettikode. Det består af lidt mere end 65.000 linjers kode i Turbo Pascal med hundredvis af GOTO-kommandoer,« forklarer Bent Scharøe Petersen.

Når DATAERSK alligevel er trukket frem i lyset, så skyldes det, at SKAT i forbindelse med udredningen af problemerne EFI var nødt til at invitere pensionerede edb-folk ind for at hjælpe med at forstå snitfladerne til nogle af de ældre databaser og scripts, som SKAT anvender.

Læs også: Skats it-kaos: 1,5 milliarder kroner og 5 års forsinkelse

Det var én af disse pensionerede programmører som studsede over ligheden mellem dét, EFI skulle gøre, og dét, DATAERSK i sin tid blev skrevet i forsøg på at løse.

»Jeg havde godt læst om problemerne med EFI og tænkt over, hvordan vi ville have løst det dengang, jeg sad med sådanne projekter, men det var først, da jeg så de gamle snitflader, at det faldt i hak,« fortæller Willy Olsen, som var den ene af tre programmører, der i sin tid skrev koden til DATAERSK.

Han har nu hjulpet SKAT med at ændre konfigurationen af DATAERSK til at kunne lave en stor del af de udtræk, som EFI skulle have lavet.

Kører vanvittig hurtigt

Baggrunden for DATAERSK var oprindeligt et forsøg på at spare skattevæsenet for dyre udregninger på mainframe-systemer.

»Vi var nogle stykker, som var meget optaget af mikrodatamater og personlige computere, som vi rodede med, og selvom de slet ikke var lige så kraftige som mainframen, så var der også mere frie rammer til at eksperimentere,« fortæller Willy Olsen.

Da Mogens Lykketoft overtog Skatteministeriet i januar 1981, stod der allerede dengang effektiviseringer og besparelser på dagsordenen. En af de udgiftsposter, der voksede hurtigst og blev spået til at vokse endnu mere i fremtiden, var driften af edb-systemer, og derfor fik skattevæsenet besked på at finde billigere måder at løse opgaverne på.

Det førte til en række projekter, som alle blev nedlagt, kort efter Socialdemokraterne mistede regeringsmagten i 1982. På det tidspunkt fyldte DATAERSK altså mere end 65.000 linjer, hvoraf cirka 16.000 udgjorde et på daværende tidspunkt avanceret modul til at trække data fra mainframen.

DATAERSK skulle trække data ud fra mainframen og behandle dem lokalt på en mikrodatamat. Selvom det gik langsommere end på mainframen, så var det billigere, og tiden var mindre vigtig for eksempelvis sådan noget som at tjekke millioner af gældsposter for, om forældelsesfristen var ved at være overskredet.

»Det var jo skrevet til at kunne køre på en 8088-processor, så på en moderne pc-processor kører det vanvittig hurtigt. Det, der ville have taget os en måned dengang, kan klares på under ét minut i dag, når vi kører DATAERSK,« forklarer Bent Scharøe Petersen fra SKAT.

Skulle bruge Regnecentralens datamater

Skæbnen var imidlertid imod DATAERSK, for det var netop skrevet til 8088-processoren og IBM's Personal Computer i en tidlig udgave af Turbo Pascal.

»Schlüter-regeringen havde tætte forbindelser til Regnecentralen og var derfor i starten af 1980'erne meget imod, at vi baserede os på IBM PC i stedet for RC Piccolo. Vi var egentligt heller ikke selv glade for IBM-pc'en, men vi havde fået et fint eksemplar fra IBM, fordi vi var så stor en kunde, og så kunne vi ligeså godt bruge den til DATAERSK. Det var da også heldigt, for det betød, at vi gemte programmet på en 5,25 tommers diskette, som vi uden problemer kunne læse igen, da vi fandt den i SKAT's arkiv. I 1981 havde vi fra Regnecentralen kun et par RC 701-datamater stående, og så var programmet endt på en otte tommers diskette, og det havde været meget sværere at opstøve et diskettedrev,« forklarer Willy Olsen.

Selvom DATAERSK ser ud til at kunne håndtere den opgave, EFI ikke var i stand til, så er det imidlertid ingen garanti for, at SKAT tager det i brug. SKAT kan nemlig komme i konflikt med EU-regler om ulovlig statsstøtte.

Problemet er, at skattevæsenet og toldvæsenet først blev sammenlagt og blev en ny juridisk instans, efter Danmark havde tiltrådt Edinburgh-aftalen. Det betyder, at programmel udviklet af medarbejdere i det gamle skattevæsen, men som aldrig har været taget i brug, ikke kan sættes ind i et produktionsmiljø. Der skal først et EU-udbud til.

Ifølge SKAT vil det koste knapt en kvart million at rydde op i de 65.000 linjers spaghettikode og skrive dokumentationen, men det vil koste mellem to og ti millioner at gennemføre et udbud i den kategori, der er nødvendig. Og det er ikke en gang sikkert, at SKAT og dermed DATAERSK ville vinde SKATs eget udbud.

»Det er absurd, at vores Turbo Pascal-kode kaldes for spaghettikode på grund af et par tusinde GOTO-kommandoer, når EU's udbudsregler ligner én lang række af syntaksfejl,« siger Willy Olsen.

Læs også: For 90 millioner kroner skal eksterne konsulenter redde Skats kriseramte EFI-system

Om end ovenstående kan lyde realistisk, så blev denne artikel bragt som Version2's aprilsnar 2015. Enhver lighed med virkelige begivenheder er tilfældig.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (19)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Allan S. Hansen

Hvis ikke lige det var fordi indlægget var publiceret 1/4 kl. 4:01 (smukt!!!), så kunne man med sin sølvfoliehat forledes til at tro på det. Det er vel ikke værre end så meget andet (korrekt eller ukorrekt) man har hørt om fra den kant :-/

Det er det som gør den perfekt.
Den er troværdig pga alt det andet skrammel der kommer fra Skats kant i disse dage.
Og når de har den politik at blot afvise alle klager alligevel - så gør det blot den endnu mere troværdig at de vil finde på hvad som helst for at inddrage penge. :D

Godt skrevet/fundet på @V2.

Nils Bøjden

"Det er absurd, at vores Turbo Pascal-kode kaldes for spaghettikode på grund af et par tusinde GOTO-kommandoer, når EU's udbudsregler ligner én lang række af syntaksfejl"

Hvor er det dog en smuk tanke. Exception handling i kontrakter: Hvis det ikke er beskrevet ophører kontakten.

Hubert Cornett

10 INPUT "What is your name: ", U$
20 PRINT "Hello "; U$
30 INPUT "How many times has you been april fooled: ", N
40 S$ = ""
50 FOR I = 1 TO N
60 S$ = S$ + "*"
70 NEXT I
80 PRINT S$
90 INPUT "Do you want to be fooled more? ", A$
100 IF LEN(A$) = 0 THEN GOTO 90
110 A$ = LEFT$(A$, 1)
120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30
130 PRINT "Goodbye "; U$
140 END

Jesper Stein Sandal Blogger

Ja, det er selvfølgelig en aprilsnar. Det er altid en sjov udfordring at skrive en aprilsnar til Version2's læsere, for I er jo heldigvis kritiske læsere, som bemærker detaljerne.

Der skal selvfølgelig være små hints i en aprilsnar, som læserne kan opdage, og med jer er der ingen grund til at tage fat i klassikere som Rans Lirpa, når man kan låne navne fra edb-alderen, som der selvfølgelig var nogen af jer, der opdagede. Ligesom I også har styr på, hvornår Turbo Pascal blev udgivet og brugen af GOTO.

Så det er godt at vide, at I nok også skal opdage det, hvis jeg har gjort en indsats for at strø nogle brødkrummer ud. Næste års aprilsnar er faktisk forfattet og ligger i systemet - hvilket nok er en smule farligt, så hvis I opdager noget mistænkeligt, så kunne det være en redaktør, der er kommet til at offentliggøre den før tid. :)

Flemming Poulsen

Jeg har stor forståelse for at GOTO er nogo, men i gamle dage var diverse krumspring i koden nødvendige. GOTO blev brugt, men helst undgået. Et af de værste statements (fra COBOL var "alter to proceed" hvor man kunne ændre hvortil en goto skulle gå hen ! Den var ikke til at klare kl. 4 om morgenen. Tingene er blevet bedre og værre med tiden.

Log ind eller Opret konto for at kommentere