0010 rem //----------------------------------//
 0020 rem //        Valgsystems modul         //
 0030 rem //       -------------------        //
 0040 rem // Program : Indtast                //
 0050 rem // Daks d. 14/11 1981               //
 0060 rem //----------------------------------//
 0070 dim RESULTAT(15),BUF$(128),PARTILISTE$(16)
 0080 dim LISTE$(2),PARTI$(40),SVAR$(1),STEDNAVN$(30)
 0090 dim RETLIST$(2)
 0100 let IND1=105; IND2=73; RET1=114; RET2=82; SKRIV1=115; SKRIV2=83
 0110 let HENT1=104; HENT2=72; STATUS=0; TRUE=0; FALSE=1; CHECKSUM=0; TALSUM=0
 0120 let PARTILISTE$="ABCEFGHIKMQVYZÅS"
 0130 rem //----------------------->>
 0140 proc CURSOR(XADR,YADR)
 0150   print chr(6); chr(95+XADR-((XADR-1) div 32)*64); chr(95+YADR); 
 0160 endproc 
 0170 rem 
 0180 rem //------------------------>> Bigtext Procedure
 0190 proc BIGTEXT(PARAMIN)
 0200   for POINTER=1 to len(PARAMIN$)
 0210     if PARAMIN$(POINTER : 1)=>"a" and PARAMIN$(POINTER : 1)<="å" then 
 0220       let PARAMIN$(POINTER : 1)=chr(ord(PARAMIN$(POINTER : 1))-32)
 0230     endif 
 0240   next POINTER
 0250 endproc 
 0260 rem 
 0270 rem //----------------------->> Monitor
 0280 print chr(12)
 0290 loop 
 0300   exec CURSOR(3,23)
 0310   print chr(160)
 0320   print chr(128); "  I)ndskrivning  R)et  S)ave  H)ent   S)top  "; 
 0330   print " Z)ero"
 0340   FUNKTION=key(0)
 0350   if FUNKTION=IND1 or FUNKTION=IND2 then exec INDSKRIV
 0360   if FUNKTION=RET1 or FUNKTION=RET2 then exec RETRES
 0370   if FUNKTION=SKRIV1 or FUNKTION=SKRIV2 then exec SKRIVRES
 0380   if FUNKTION=HENT1 or FUNKTION=HENT2 then exec HENTRES
 0390   if FUNKTION=19 then stop 
 0400   if FUNKTION=26 then exec NULSTIL
 0410 endif 
 0420 endloop 
 0430 rem //------------------------>> Indskrivning
 0440 proc INDSKRIV
 0450   SKREVET=FALSE
 0460   print chr(12); "   Indskrivning"
 0470   print chr(160)
 0480   print chr(128)
 0490   print 
 0500   print "   Valgstednr :"; chr(144); "  "; chr(128)
 0510   repeat 
 0520     exec CURSOR(17,5)
 0530     input STEDNR
 0540   until STEDNR=>1 and STEDNR<=40 and STEDNR=int(STEDNR)
 0550   repeat 
 0560     exec CURSOR(1,5)
 0570     print chr(31)
 0580     exec CURSOR(2,23)
 0590     print "   Indsæt diskette nr :"; STEDNR; " og tast 'RETURN'"; 
 0600     input SVAR$
 0610     if SVAR$="Q" then stop 
 0620     open "VLGST"+chr(STEDNR/10+48)+chr(STEDNR mod 10+48),FIL,BUF$,70
 0630     get FIL,2 : STEDNR1,STEDNAVN$
 0640     close FIL
 0650     if STEDNR1<>STEDNR then 
 0660       exec CURSOR(4,23)
 0670       print "fejl : Disketten her ikke nr.:"; STEDNR; " men nr.:"; STEDNR1; 
 0680       print chr(7)
 0690       for VENT=1 to 200
 0700       next VENT
 0710     endif 
 0720   until STEDNR=STEDNR1
 0730   print chr(12); 
 0740   print "   Liste     Parti                                 Antal stemmer"
 0750   print "  "; chr(160)
 0760   print chr(128)
 0770   restore 
 0780   for RESNR=1 to 15
 0790     read LISTE$,PARTI$
 0800     print tab(3); LISTE$; tab(13); PARTI$; tab(50); LISTE$; tab(53); ":"
 0810   next RESNR
 0820   print tab(3); "S)um"; tab(13); "Samlet Antal Stemmer"; tab(50); "S  >"
 0830   exec CURSOR(4,21)
 0840   print STEDNAVN$; "    Valgsted nr : "; STEDNR1
 0850   let CHECKSUM=0
 0860   for RESUL=1 to 15
 0870     repeat 
 0880       exec CURSOR(56,RESUL+3)
 0890       print chr(30); 
 0900       input RESULTAT(RESUL)
 0910     until RESULTAT(RESUL)=>0 and RESULTAT(RESUL)=int(RESULTAT(RESUL))
 0920     let CHECKSUM=CHECKSUM+RESULTAT(RESUL)
 0930   next RESUL
 0940   exec CURSOR(56,RESUL+3)
 0950   input TALSUM
 0960   if TALSUM<>CHECKSUM then 
 0970     exec CURSOR(2,22)
 0980     print " Checksum afviger"; chr(146); CHECKSUM-TALSUM; chr(128); 
 0990     print "fra antal indtastede"; chr(7)
 1000     print chr(128)
 1010   endif 
 1020   STATUS=1
 1030   SKREVET=TRUE
 1040 endproc 
 1050 rem 
 1060 rem //-------------------------->> Rettelse
 1070 proc RETRES
 1080   if STATUS<>0 and SKREVET=TRUE then 
 1090     repeat 
 1100       repeat 
 1110         exec CURSOR(1,22)
 1120         print chr(31)
 1130         exec CURSOR(2,20)
 1140         print "  Hvilken liste ønskes rettet  "
 1150         TALRET=key(0)
 1160         let RETLIST$=chr(TALRET)
 1170         exec BIGTEXT(RETLIST$)
 1180         FOUND=FALSE
 1190         for LISTENR=1 to 16
 1200           if RETLIST$=PARTILISTE$(LISTENR : 1) then 
 1210             let RETNR=LISTENR; LISTENR=16; FOUND=TRUE
 1220           endif 
 1230         next LISTENR
 1240       until FOUND=TRUE
 1250       exec CURSOR(2,23)
 1260       print chr(31)
 1270       exec CURSOR(55,RETNR+3)
 1280       print chr(128); chr(30)
 1290       exec CURSOR(1,RETNR+3)
 1300       print chr(130); 
 1310       exec CURSOR(56,RETNR+3)
 1320       if RETNR=16 then 
 1330         input TALSUM
 1340       else 
 1350         input RESULTAT(RETNR)
 1360       endif 
 1370       exec CURSOR(1,RETNR+3)
 1380       print chr(128)
 1390       exec CURSOR(2,23)
 1400       print "  Ønskes flere rettelser (J/N)"
 1410       FUNKTION=key(0)
 1420       if FUNKTION=74 or FUNKTION=106 then let SVAR$="j"
 1430       if FUNKTION=11 or FUNKTION=110 then let SVAR$="n"
 1440     until SVAR$="n" or SVAR$="N"
 1450   endif 
 1460   exec CURSOR(2,22)
 1470   print chr(31); 
 1480   CHECKSUM=0
 1490   for RESNR=1 to 15
 1500     let CHECKSUM=CHECKSUM+RESULTAT(RESNR)
 1510   next RESNR
 1520   if CHECKSUM<>TALSUM then 
 1530     print "  Checksum afviger"; chr(146); CHECKSUM-TALSUM; chr(128); 
 1540     print "fra antal indtastede"; chr(7)
 1550   endif 
 1560 endproc 
 1570 rem 
 1580 rem //-------------------------->> Skrivning i filen
 1590 proc SKRIVRES
 1600   if STATUS<>0 then 
 1610     exec CURSOR(1,22)
 1620     print chr(31)
 1630     open "VLGST"+chr(STEDNR1/10+48)+chr(STEDNR1 mod 10+48),FIL,BUF$,70
 1640     exec CURSOR(1,23)
 1650     print chr(31); 
 1660     print " Der skrives i filen på disc nr :"; chr(130); STEDNR1; chr(128)
 1670     for VENT=1 to 200
 1680     next VENT
 1690     put FIL,1 : RESULTAT
 1700     CHECK=CHECKSUM-TALSUM
 1710     put FIL,2 : STEDNR1,STEDNAVN$,TRUE,CHECK
 1720     close FIL
 1730     exec CURSOR(4,21)
 1740     print chr(30); "Den 'Lagrede Afvigelse' :"; CHECKSUM-TALSUM
 1750   else 
 1760     exec CURSOR(1,23)
 1770     print chr(31); " Der er ingen resultater at skrive."
 1780     for VENT=1 to 300
 1790     next VENT
 1800   endif 
 1810   exec CURSOR(1,23)
 1820   print chr(31)
 1830 endproc 
 1840 rem 
 1850 rem //--------------------------->> Hent de lagrede tal op
 1860 proc HENTRES
 1870   open "VLGST"+chr(STEDNR/10+48)+chr(STEDNR mod 10+48),FIL,BUF$,70
 1880   get FIL,2 : STEDNR1,STEDNAVN$,SKREVET,CHECK
 1890   if SKREVET=FALSE then 
 1900     print chr(12)
 1910     exec CURSOR(3,14)
 1920     print " "; STEDNAVN$
 1930     print "   Valgsted nr : "; STEDNR1
 1940     print "   Der er"; chr(130); "ikke"; chr(128); "skrevet i filen"; chr(7)
 1950     for VENT=1 to 300
 1960     next VENT
 1970     exec CURSOR(1,14)
 1980     print chr(31)
 1990   else 
 2000     print chr(12); 
 2010     print "   Liste     Parti                                 Antal stemmer"
 2020     print "  "; chr(160)
 2030     print chr(128)
 2040     get FIL,1 : RESULTAT
 2050     get FIL,2 : STEDNR,STEDNAVN$,SKREVET,CHECK
 2060     restore 
 2070     let CHECKSUM=0
 2080     for RESNR=1 to 15
 2090       let CHECKSUM=CHECKSUM+RESULTAT(RESNR)
 2100       read LISTE$,PARTI$
 2110       print tab(3); LISTE$; tab(13); PARTI$; tab(53); ":"; RESULTAT(RESN)
 2120     next RESNR
 2130     DIFF=-1
 2140     let TALSUM=CHECKSUM+CHECK*DIFF
 2150     print tab(3); "S)um"; tab(13); "Samlet Antal Stemmer"; tab(50); "S  >"; 
 2160     print TALSUM
 2170     exec CURSOR(4,20)
 2180     print STEDNAVN$; "    Valgsted nr : "; STEDNR1
 2190     exec CURSOR(4,21)
 2200     print "Den 'Lagrede Afvigelse' :"; CHECK
 2210   endif 
 2220   close FIL
 2230   STATUS=1
 2240 endproc 
 2250 rem 
 2260 rem //----------------------------->> Nulstiling
 2270 proc NULSTIL
 2280   exec CURSOR(3,23)
 2290   print chr(31); 
 2300   input " Indsæt Diskette og Tast 'RETURN'",SVAR$
 2310   open "VLGST"+chr(STEDNR/10+48)+chr(STEDNR mod 10+48),FIL,BUF$,70
 2320   get FIL,2 : STEDNR1,STEDNAVN$,SKREVET,CHECK
 2330   exec CURSOR(2,20)
 2340   print chr(31); 
 2350   exec CURSOR(3,20)
 2360   print "valgsted nr :",STEDNR1
 2370   print " "; STEDNAVN$
 2380   if SKREVET=TRUE then 
 2390     print " Status : True"
 2400   else 
 2410     print " Status : False"
 2420   endif 
 2430   print " Filen på"; chr(146); "Disc nr :"; STEDNR1; chr(128); 
 2440   print "er nulstillet"
 2450   for RESNR=1 to 15
 2460     let RESULTAT(RESNR)=0
 2470   next RESNR
 2480   put FIL,1 : RESULTAT
 2490   put FIL,2 : STEDNR1,STEDNAVN$,FALSE,TRUE
 2500   close FIL
 2510   for VENT=1 to 350
 2520   next VENT
 2530   exec CURSOR(1,20)
 2540   print chr(31)
 2550 endproc 
 2560 data "A","Socialdemokratiet"
 2570 data "B","Radikale Venstre"
 2580 data "C","Konservative Folkeparti"
 2590 data "E","Retsforbundet"
 2600 data "F","Socialistisk Folkeparti"
 2610 data "G","Listen For Medbestemmelse"
 2620 data "H","Kvinder For Samarbejde"
 2630 data "I","Socialistisk Arbejderparti"
 2640 data "K","Det Kommunistiske Parti"
 2650 data "M","Centrum-Demokraterne"
 2660 data "Q","Kristeligt Folkeparti"
 2670 data "V","Venstre"
 2680 data "Y","Venstresocialisterne"
 2690 data "Z","Fremskridtspartiet"
 2700 data "Å","Ålborg Listen"