kuntavis.bas with syntax coloring

This HTML file was generated with Kalle's syntaxcolor.py


   1DECLARE SUB createquestion1 (choices%())
   2DECLARE FUNCTION askquestion% (questionnumber%, score%)
   3DECLARE FUNCTION mainmenu% (highscore%)
   4DECLARE SUB readregions (regionids$())
   5DECLARE SUB readmunis (regionids$())
   6DECLARE SUB createquestion2 (choices%())
   7DECLARE SUB createquestion3 (choices%())
   8DECLARE SUB createquestion (question$(), answers$())
   9DECLARE SUB sortanswers (answers$())
  10DECLARE FUNCTION quiz% ()
  11DECLARE SUB colorstring (text$)
  12DECLARE SUB mainloop ()
  13
  14' maakuntien ja kuntien maksimimäärä
  15CONST MAXREGIONCOUNT = 20
  16CONST MAXMUNICOUNT = 320
  17
  18' vastausvaihtoehtoja per kysymys (1-9)
  19CONST CHOICECOUNT = 4
  20
  21' kysymyksiä/kierros
  22CONST QUESTIONSPERROUND = 20
  23
  24' Kuntavisa
  25' tehnyt Kalle (http://qalle.net)
  26
  27' maakunnat (tunniste, nimi sijaintimuodossa)
  28DATA ah,Ahvenanmaalla
  29DATA ek,Etelä-Karjalassa
  30DATA ep,Etelä-Pohjanmaalla
  31DATA es,Etelä-Savossa
  32DATA ka,Kainuussa
  33DATA kh,Kanta-Hämeessä
  34DATA kp,Keski-Pohjanmaalla
  35DATA ks,Keski-Suomessa
  36DATA ky,Kymenlaaksossa
  37DATA la,Lapissa
  38DATA ph,Päijät-Hämeessä
  39DATA pi,Pirkanmaalla
  40DATA pk,Pohjois-Karjalassa
  41DATA po,Pohjanmaalla
  42DATA pp,Pohjois-Pohjanmaalla
  43DATA ps,Pohjois-Savossa
  44DATA sa,Satakunnassa
  45DATA uu,Uudellamaalla
  46DATA vs,Varsinais-Suomessa
  47DATA *,*
  48
  49' kunnat (nimi, maakunnan tunniste)
  50DATA Akaa,pi
  51DATA Alajärvi,ep
  52DATA Alavieska,pp
  53DATA Alavus,ep
  54DATA Asikkala,ph
  55DATA Askola,uu
  56DATA Aura,vs
  57DATA Brändö,ah
  58DATA Eckerö,ah
  59DATA Enonkoski,es
  60DATA Enontekiö,la
  61DATA Espoo,uu
  62DATA Eura,sa
  63DATA Eurajoki,sa
  64DATA Evijärvi,ep
  65DATA Finström,ah
  66DATA Forssa,kh
  67DATA Föglö,ah
  68DATA Geta,ah
  69DATA Haapajärvi,pp
  70DATA Haapavesi,pp
  71DATA Hailuoto,pp
  72DATA Halsua,kp
  73DATA Hamina,ky
  74DATA Hammarland,ah
  75DATA Hankasalmi,ks
  76DATA Hanko,uu
  77DATA Harjavalta,sa
  78DATA Hartola,ph
  79DATA Hattula,kh
  80DATA Hausjärvi,kh
  81DATA Heinola,ph
  82DATA Heinävesi,es
  83DATA Helsinki,uu
  84DATA Hirvensalmi,es
  85DATA Hollola,ph
  86DATA Honkajoki,sa
  87DATA Huittinen,sa
  88DATA Humppila,kh
  89DATA Hyrynsalmi,ka
  90DATA Hyvinkää,uu
  91DATA Hämeenkyrö,pi
  92DATA Hämeenlinna,kh
  93DATA Ii,pp
  94DATA Iisalmi,ps
  95DATA Iitti,ky
  96DATA Ikaalinen,pi
  97DATA Ilmajoki,ep
  98DATA Ilomantsi,pk
  99DATA Imatra,ek
 100DATA Inari,la
 101DATA Inkoo,uu
 102DATA Isojoki,ep
 103DATA Isokyrö,po
 104DATA Janakkala,kh
 105DATA Joensuu,pk
 106DATA Jokioinen,kh
 107DATA Jomala,ah
 108DATA Joroinen,es
 109DATA Joutsa,ks
 110DATA Juankoski,ps
 111DATA Juuka,pk
 112DATA Juupajoki,pi
 113DATA Juva,es
 114DATA Jyväskylä,ks
 115DATA Jämijärvi,sa
 116DATA Jämsä,ks
 117DATA Järvenpää,uu
 118DATA Kaarina,vs
 119DATA Kaavi,ps
 120DATA Kajaani,ka
 121DATA Kalajoki,pp
 122DATA Kangasala,pi
 123DATA Kangasniemi,es
 124DATA Kankaanpää,sa
 125DATA Kannonkoski,ks
 126DATA Kannus,kp
 127DATA Karijoki,ep
 128DATA Karkkila,uu
 129DATA Karstula,ks
 130DATA Karvia,sa
 131DATA Kaskinen,po
 132DATA Kauhajoki,ep
 133DATA Kauhava,ep
 134DATA Kauniainen,uu
 135DATA Kaustinen,kp
 136DATA Keitele,ps
 137DATA Kemi,la
 138DATA Kemijärvi,la
 139DATA Keminmaa,la
 140DATA Kemiönsaari,vs
 141DATA Kempele,pp
 142DATA Kerava,uu
 143DATA Keuruu,ks
 144DATA Kihniö,pi
 145DATA Kinnula,ks
 146DATA Kirkkonummi,uu
 147DATA Kitee,pk
 148DATA Kittilä,la
 149DATA Kiuruvesi,ps
 150DATA Kivijärvi,ks
 151DATA Kokemäki,sa
 152DATA Kokkola,kp
 153DATA Kolari,la
 154DATA Konnevesi,ks
 155DATA Kontiolahti,pk
 156DATA Korsnäs,po
 157DATA Koski Tl,vs
 158DATA Kotka,ky
 159DATA Kouvola,ky
 160DATA Kristiinankaupunki,po
 161DATA Kruunupyy,po
 162DATA Kuhmo,ka
 163DATA Kuhmoinen,ks
 164DATA Kumlinge,ah
 165DATA Kuopio,ps
 166DATA Kuortane,ep
 167DATA Kurikka,ep
 168DATA Kustavi,vs
 169DATA Kuusamo,pp
 170DATA Kyyjärvi,ks
 171DATA Kärkölä,ph
 172DATA Kärsämäki,pp
 173DATA Kökar,ah
 174DATA Lahti,ph
 175DATA Laihia,po
 176DATA Laitila,vs
 177DATA Lapinjärvi,uu
 178DATA Lapinlahti,ps
 179DATA Lappajärvi,ep
 180DATA Lappeenranta,ek
 181DATA Lapua,ep
 182DATA Laukaa,ks
 183DATA Lemi,ek
 184DATA Lemland,ah
 185DATA Lempäälä,pi
 186DATA Leppävirta,ps
 187DATA Lestijärvi,kp
 188DATA Lieksa,pk
 189DATA Lieto,vs
 190DATA Liminka,pp
 191DATA Liperi,pk
 192DATA Lohja,uu
 193DATA Loimaa,vs
 194DATA Loppi,kh
 195DATA Loviisa,uu
 196DATA Luhanka,ks
 197DATA Lumijoki,pp
 198DATA Lumparland,ah
 199DATA Luoto,po
 200DATA Luumäki,ek
 201DATA Luvia,sa
 202DATA Maalahti,po
 203DATA Maarianhamina,ah
 204DATA Marttila,vs
 205DATA Masku,vs
 206DATA Merijärvi,pp
 207DATA Merikarvia,sa
 208DATA Miehikkälä,ky
 209DATA Mikkeli,es
 210DATA Muhos,pp
 211DATA Multia,ks
 212DATA Muonio,la
 213DATA Mustasaari,po
 214DATA Muurame,ks
 215DATA Mynämäki,vs
 216DATA Myrskylä,uu
 217DATA Mäntsälä,uu
 218DATA Mänttä-Vilppula,pi
 219DATA Mäntyharju,es
 220DATA Naantali,vs
 221DATA Nakkila,sa
 222DATA Nivala,pp
 223DATA Nokia,pi
 224DATA Nousiainen,vs
 225DATA Nurmes,pk
 226DATA Nurmijärvi,uu
 227DATA Närpiö,po
 228DATA Orimattila,ph
 229DATA Oripää,vs
 230DATA Orivesi,pi
 231DATA Oulainen,pp
 232DATA Oulu,pp
 233DATA Outokumpu,pk
 234DATA Padasjoki,ph
 235DATA Paimio,vs
 236DATA Paltamo,ka
 237DATA Parainen,vs
 238DATA Parikkala,ek
 239DATA Parkano,pi
 240DATA Pedersöre,po
 241DATA Pelkosenniemi,la
 242DATA Pello,la
 243DATA Perho,kp
 244DATA Pertunmaa,es
 245DATA Petäjävesi,ks
 246DATA Pieksämäki,es
 247DATA Pielavesi,ps
 248DATA Pietarsaari,po
 249DATA Pihtipudas,ks
 250DATA Pirkkala,pi
 251DATA Polvijärvi,pk
 252DATA Pomarkku,sa
 253DATA Pori,sa
 254DATA Pornainen,uu
 255DATA Porvoo,uu
 256DATA Posio,la
 257DATA Pudasjärvi,pp
 258DATA Pukkila,uu
 259DATA Punkalaidun,pi
 260DATA Puolanka,ka
 261DATA Puumala,es
 262DATA Pyhtää,ky
 263DATA Pyhäjoki,pp
 264DATA Pyhäjärvi,pp
 265DATA Pyhäntä,pp
 266DATA Pyhäranta,vs
 267DATA Pälkäne,pi
 268DATA Pöytyä,vs
 269DATA Raahe,pp
 270DATA Raasepori,uu
 271DATA Raisio,vs
 272DATA Rantasalmi,es
 273DATA Ranua,la
 274DATA Rauma,sa
 275DATA Rautalampi,ps
 276DATA Rautavaara,ps
 277DATA Rautjärvi,ek
 278DATA Reisjärvi,pp
 279DATA Riihimäki,kh
 280DATA Ristijärvi,ka
 281DATA Rovaniemi,la
 282DATA Ruokolahti,ek
 283DATA Ruovesi,pi
 284DATA Rusko,vs
 285DATA Rääkkylä,pk
 286DATA Saarijärvi,ks
 287DATA Salla,la
 288DATA Salo,vs
 289DATA Saltvik,ah
 290DATA Sastamala,pi
 291DATA Sauvo,vs
 292DATA Savitaipale,ek
 293DATA Savonlinna,es
 294DATA Savukoski,la
 295DATA Seinäjoki,ep
 296DATA Sievi,pp
 297DATA Siikainen,sa
 298DATA Siikajoki,pp
 299DATA Siikalatva,pp
 300DATA Siilinjärvi,ps
 301DATA Simo,la
 302DATA Sipoo,uu
 303DATA Siuntio,uu
 304DATA Sodankylä,la
 305DATA Soini,ep
 306DATA Somero,vs
 307DATA Sonkajärvi,ps
 308DATA Sotkamo,ka
 309DATA Sottunga,ah
 310DATA Sulkava,es
 311DATA Sund,ah
 312DATA Suomussalmi,ka
 313DATA Suonenjoki,ps
 314DATA Sysmä,ph
 315DATA Säkylä,sa
 316DATA Taipalsaari,ek
 317DATA Taivalkoski,pp
 318DATA Taivassalo,vs
 319DATA Tammela,kh
 320DATA Tampere,pi
 321DATA Tervo,ps
 322DATA Tervola,la
 323DATA Teuva,ep
 324DATA Tohmajärvi,pk
 325DATA Toholampi,kp
 326DATA Toivakka,ks
 327DATA Tornio,la
 328DATA Turku,vs
 329DATA Tuusniemi,ps
 330DATA Tuusula,uu
 331DATA Tyrnävä,pp
 332DATA Ulvila,sa
 333DATA Urjala,pi
 334DATA Utajärvi,pp
 335DATA Utsjoki,la
 336DATA Uurainen,ks
 337DATA Uusikaarlepyy,po
 338DATA Uusikaupunki,vs
 339DATA Vaala,ka
 340DATA Vaasa,po
 341DATA Valkeakoski,pi
 342DATA Valtimo,pk
 343DATA Vantaa,uu
 344DATA Varkaus,ps
 345DATA Vehmaa,vs
 346DATA Vesanto,ps
 347DATA Vesilahti,pi
 348DATA Veteli,kp
 349DATA Vieremä,ps
 350DATA Vihti,uu
 351DATA Viitasaari,ks
 352DATA Vimpeli,ep
 353DATA Virolahti,ky
 354DATA Virrat,pi
 355DATA Vårdö,ah
 356DATA Vöyri,po
 357DATA Ylitornio,la
 358DATA Ylivieska,pp
 359DATA Ylöjärvi,pi
 360DATA Ypäjä,kh
 361DATA Ähtäri,ep
 362DATA Äänekoski,ks
 363DATA *,*
 364
 365DIM SHARED regions$(MAXREGIONCOUNT - 1)    ' maakuntien nimet
 366DIM SHARED regioncount%                    ' maakuntien määrä
 367DIM SHARED munis$(MAXMUNICOUNT - 1)        ' kuntien nimet
 368DIM SHARED muniregions%(MAXMUNICOUNT - 1)  ' kuntien maakuntien indeksit
 369DIM SHARED municount%                      ' kuntien määrä
 370
 371DIM regionids$(MAXREGIONCOUNT - 1)  ' maakuntien 2-kirj. tunnukset
 372
 373RANDOMIZE TIMER
 374
 375' lue maakunnat ja kunnat
 376CALL readregions(regionids$())
 377CALL readmunis(regionids$())
 378
 379CALL mainloop
 380
 381FUNCTION askquestion% (questionnumber%, score%)
 382
 383' Kysy satunnainen kysymys.
 384' Palauttaa -1, jos kierros keskeytettiin, 0, jos vastaus oli väärä, ja 1,
 385' jos vastaus oli oikea.
 386
 387' kysymys kolmessa osassa
 388DIM question$(2)
 389
 390' muotoillut vastausvaihtoehdot
 391DIM answers$(CHOICECOUNT - 1)
 392
 393CLS
 394questionstr$ = LTRIM$(STR$(questionnumber% + 1))
 395totalstr$ = LTRIM$(STR$(QUESTIONSPERROUND))
 396CALL colorstring("Kysymys           : #" + questionstr$ + "% / " + totalstr$)
 397correctstr$ = LTRIM$(STR$(score%))
 398wrongstr$ = LTRIM$(STR$(questionnumber% - score%))
 399CALL colorstring("Oikeita vastauksia: [" + correctstr$)
 400CALL colorstring("Vääriä vastauksia : ]" + wrongstr$)
 401PRINT
 402
 403CALL createquestion(question$(), answers$())
 404correctanswer$ = answers$(0)
 405CALL sortanswers(answers$())
 406
 407' tulosta kysymys
 408CALL colorstring(question$(0) + "#" + question$(1) + "%" + question$(2))
 409PRINT
 410
 411' tulosta vastausvaihtoehdot
 412FOR i% = 0 TO CHOICECOUNT - 1
 413    CALL colorstring("&" + LTRIM$(STR$(i% + 1)) + "%: " + answers$(i%))
 414NEXT
 415PRINT
 416
 417CALL colorstring("(&Esc%: keskeytä kierros)")
 418PRINT
 419
 420maxanswer$ = CHR$(ASC("1") + CHOICECOUNT - 1)
 421DO
 422    i$ = INKEY$
 423
 424    SELECT CASE i$
 425        CASE "1" TO maxanswer$
 426            answer% = VAL(i$) - 1
 427            EXIT DO
 428        CASE CHR$(27)
 429            ' kierros keskeytettiin
 430            askquestion% = -1
 431            EXIT FUNCTION
 432    END SELECT
 433LOOP
 434
 435IF answers$(answer%) = correctanswer$ THEN
 436    ' oikein
 437    askquestion% = 1
 438ELSE
 439    ' väärin
 440    askquestion% = 0
 441END IF
 442
 443END FUNCTION
 444
 445SUB colorstring (text$)
 446
 447' Tulosta teksti, jossa erikoismerkit vaihtavat tekstin väriä.
 448
 449wordstartpos% = 1
 450
 451FOR i% = 1 TO LEN(text$)
 452    char$ = MID$(text$, i%, 1)
 453
 454    IF INSTR("#&%[]", char$) THEN
 455        IF i% > wordstartpos% THEN
 456            PRINT MID$(text$, wordstartpos%, i% - wordstartpos%);
 457        END IF
 458
 459        SELECT CASE char$
 460            CASE "#"
 461                COLOR 15
 462            CASE "&"
 463                COLOR 14
 464            CASE "["
 465                COLOR 2
 466            CASE "]"
 467                COLOR 4
 468            CASE ELSE
 469                COLOR 7
 470        END SELECT
 471
 472        wordstartpos% = i% + 1
 473    END IF
 474NEXT
 475
 476' viimeinen sana
 477PRINT MID$(text$, wordstartpos%)
 478
 479COLOR 7
 480
 481END SUB
 482
 483SUB createquestion (question$(), answers$())
 484
 485' arvotut vastausvaihtoehdot (kuntien indeksit); ensimmäinen aina oikea
 486DIM choices%(CHOICECOUNT - 1)
 487
 488SELECT CASE INT(RND * 3)
 489    CASE 0
 490        CALL createquestion1(choices%())
 491
 492        question$(0) = "Mikä kunta on "
 493        question$(1) = regions$(muniregions%(choices%(0)))
 494        question$(2) = "?"
 495
 496        FOR i% = 0 TO CHOICECOUNT - 1
 497            answers$(i%) = munis$(choices%(i%))
 498        NEXT
 499    CASE 1
 500        CALL createquestion2(choices%())
 501
 502        question$(0) = "Mikä kunta ei ole "
 503        question$(1) = regions$(muniregions%(choices%(1)))
 504        question$(2) = "?"
 505
 506        FOR i% = 0 TO CHOICECOUNT - 1
 507            answers$(i%) = munis$(choices%(i%))
 508        NEXT
 509    CASE ELSE
 510        CALL createquestion3(choices%())
 511
 512        question$(0) = "Missä "
 513        question$(1) = munis$(choices%(0))
 514        question$(2) = " on?"
 515
 516        FOR i% = 0 TO CHOICECOUNT - 1
 517            ans$ = regions$(muniregions%(choices%(i%)))
 518            answers$(i%) = ans$
 519        NEXT
 520END SELECT
 521
 522END SUB
 523
 524SUB createquestion1 (choices%())
 525
 526' Arvo kuntien indeksit kysymykselle: mikä kunta on maakunnassa x?
 527
 528' arvo oikea kunta
 529choices%(0) = INT(RND * municount%)
 530correctregion% = muniregions%(choices%(0))
 531
 532' arvo väärät kunnat
 533FOR i% = 1 TO CHOICECOUNT - 1
 534    DO
 535        DO
 536            muni% = INT(RND * municount%)
 537            muniregion% = muniregions%(muni%)
 538        LOOP WHILE muniregion% = correctregion%
 539
 540        isduplicate% = 0
 541        FOR j% = 1 TO i% - 1
 542            IF muniregion% = muniregions%(choices%(j%)) THEN
 543                isduplicate% = 1
 544                EXIT FOR
 545            END IF
 546        NEXT
 547    LOOP WHILE isduplicate%
 548
 549    choices%(i%) = muni%
 550NEXT
 551
 552END SUB
 553
 554SUB createquestion2 (choices%())
 555
 556' Arvo kuntien indeksit kysymykselle: mikä kunta ei ole maakunnassa x?
 557
 558' arvo oikea kunta
 559choices%(0) = INT(RND * municount%)
 560correctregion% = muniregions%(choices%(0))
 561
 562' arvo väärien kuntien maakunta
 563DO
 564    wrongregion% = muniregions%(INT(RND * municount%))
 565LOOP WHILE wrongregion% = correctregion%
 566
 567' arvo väärät kunnat väärästä maakunnasta
 568FOR i% = 1 TO CHOICECOUNT - 1
 569    DO
 570        DO
 571            muni% = INT(RND * municount%)
 572        LOOP UNTIL muniregions%(muni%) = wrongregion%
 573
 574        isduplicate% = 0
 575        FOR j% = 1 TO i% - 1
 576            IF muni% = choices%(j%) THEN
 577                isduplicate% = 1
 578                EXIT FOR
 579            END IF
 580        NEXT
 581    LOOP WHILE isduplicate%
 582
 583    choices%(i%) = muni%
 584NEXT
 585
 586END SUB
 587
 588SUB createquestion3 (choices%())
 589
 590' Arvo *kuntien* indeksit kysymykselle: missä maakunnassa kunta x on?
 591
 592FOR i% = 0 TO CHOICECOUNT - 1
 593    DO
 594        muni% = INT(RND * municount%)
 595        muniregion% = muniregions%(muni%)
 596
 597        isduplicate% = 0
 598        FOR j% = 0 TO i% - 1
 599            IF muniregions%(choices%(j%)) = muniregion% THEN
 600                isduplicate% = 1
 601                EXIT FOR
 602            END IF
 603        NEXT
 604    LOOP WHILE isduplicate%
 605
 606    choices%(i%) = muni%
 607NEXT
 608
 609END SUB
 610
 611SUB mainloop
 612
 613' ohjelman pääsilmukka
 614
 615highscore% = 0
 616
 617DO
 618    choice% = mainmenu%(highscore%)
 619
 620    SELECT CASE choice%
 621        CASE 0
 622            ' suorita visa
 623            score% = quiz%
 624            IF score% > highscore% THEN
 625                highscore% = score%
 626            END IF
 627        CASE ELSE
 628            ' poistu
 629            CLS
 630            END
 631    END SELECT
 632LOOP
 633
 634END SUB
 635
 636FUNCTION mainmenu% (highscore%)
 637
 638CLS
 639CALL colorstring("#K U N T A V I S A%")
 640PRINT
 641PRINT "Tehnyt: Kalle (http://qalle.net)"
 642PRINT "Kuntatiedot vuodelta 2017 ("; LTRIM$(STR$(municount%)); " kuntaa)"
 643PRINT
 644highstr$ = LTRIM$(STR$(highscore%))
 645totalstr$ = LTRIM$(STR$(QUESTIONSPERROUND))
 646CALL colorstring("Paras tulos: #" + highstr$ + "% / " + totalstr$)
 647PRINT
 648CALL colorstring("&Välilyönti%: aloita")
 649CALL colorstring("&Esc%       : poistu")
 650
 651DO
 652    SELECT CASE INKEY$
 653        CASE " "
 654            mainmenu% = 0
 655            EXIT FUNCTION
 656        CASE CHR$(27)
 657            mainmenu% = 1
 658            EXIT FUNCTION
 659    END SELECT
 660LOOP
 661
 662END FUNCTION
 663
 664FUNCTION quiz%
 665
 666' Esittää kysymyssarjan. Palauttaa oikeiden vastausten määrän.
 667
 668score% = 0
 669
 670FOR questionnumber% = 0 TO QUESTIONSPERROUND - 1
 671    ' kysy kysymys
 672    iscorrect% = askquestion%(questionnumber%, score%)
 673
 674    IF iscorrect% = -1 THEN
 675        ' kierros keskeytettiin
 676        quiz% = score%
 677        EXIT FUNCTION
 678    ELSEIF iscorrect% THEN
 679        ' oikea vastaus
 680        score% = score% + 1
 681    END IF
 682NEXT
 683
 684CLS
 685PRINT "Kierros loppui."
 686PRINT
 687scorestr$ = LTRIM$(STR$(score%))
 688totalstr$ = LTRIM$(STR$(QUESTIONSPERROUND))
 689CALL colorstring("Pisteesi: #" + scorestr$ + "% / " + totalstr$)
 690PRINT
 691CALL colorstring("Palaa päävalikkoon painamalla &välilyönti% tai &Esc%.")
 692
 693DO
 694    k$ = INPUT$(1)
 695LOOP UNTIL k$ = " " OR k$ = CHR$(27)
 696
 697quiz% = score%
 698
 699END FUNCTION
 700
 701SUB readmunis (regionids$())
 702
 703' Lue kuntien tiedot globaaleihin muuttujiin.
 704
 705municount% = 0
 706
 707DO
 708    READ muni$, regionid$
 709    IF muni$ = "*" THEN
 710        EXIT SUB
 711    END IF
 712
 713    ' etsi maakunnan indeksi
 714    regionindex% = -1
 715    FOR i% = 0 TO regioncount% - 1
 716        IF regionids$(i%) = regionid$ THEN
 717            regionindex% = i%
 718            EXIT FOR
 719        END IF
 720    NEXT
 721    IF regionindex% = -1 THEN
 722        PRINT "Epäkelpo maakunnan tunniste: " + regionid$
 723    END IF
 724
 725    munis$(municount%) = muni$
 726    muniregions%(municount%) = regionindex%
 727    municount% = municount% + 1
 728LOOP
 729
 730END SUB
 731
 732SUB readregions (regionids$())
 733
 734' Lue maakuntien tiedot globaaleihin muuttujiin ja regionids$:iin.
 735
 736regioncount% = 0
 737
 738DO
 739    READ id$, region$
 740
 741    IF id$ = "*" THEN
 742        EXIT SUB
 743    END IF
 744
 745    regionids$(regioncount%) = id$
 746    regions$(regioncount%) = region$
 747
 748    regioncount% = regioncount% + 1
 749LOOP
 750
 751END SUB
 752
 753SUB sortanswers (answers$())
 754
 755' Lajittele valintoja sisältävä taulukko aakkosjärjestykseen.
 756
 757FOR i% = CHOICECOUNT - 2 TO 0 STEP -1
 758    FOR j% = 0 TO i%
 759        IF answers$(j%) > answers$(j% + 1) THEN
 760            SWAP answers$(j%), answers$(j% + 1)
 761        END IF
 762    NEXT
 763NEXT i%
 764
 765END SUB
 766