DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC759 "Piccoline"

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen RC759 "Piccoline"

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦5864f39d4⟧ TextFile

    Length: 22400 (0x5780)
    Types: TextFile
    Names: »SPSKEMA.PAS«

Derivation

└─⟦a1337913c⟧ Bits:30002679 PGM1 - indeholder forskellige undervisningsprogrammer
    └─ ⟦this⟧ »SPSKEMA.PAS« 

TextFile

program sp_skema;
const  maxsp=30;
       maxvalg=20;
       maxskema=500;
       maxmaske=10;
       op=@5;venstre=@19;hoejre=@4;ned=@24;return=@13;esc=@27;
       back=@8@8@8@8@8@8@8@8@8@8; (* 10 skridt tilbage *)
       feltpos : array(.1..maxsp,1..2.) of 1..70 =
               ( (10,2),(10,4),(10,6),(10,8),(10,10),
               (10,12),(10,14),(10,16),(10,18),(10,20),
                (30,2),(30,4),(30,6),(30,8),(30,10),
               (30,12),(30,14),(30,16),(30,18),(30,20),
                (50,2),(50,4),(50,6),(50,8),(50,10),
               (50,12),(50,14),(50,16),(50,18),(50,20));               
                 
       
type   svartype = array(.1..maxsp.) of 0..maxvalg;
       skematype = record
                   nr: integer;
                   svar: svartype;
                   end;
       masketype = record
                    sp : 1..maxsp;
                    maske : set of 0..maxvalg;
                   end;             
                   
var   skema                       :skematype;
      mulighed                    :svartype;
      fil                         :text;
      disk                        :file of skematype;
      filnavn                     :string(.12.);
      navn                        :string(.8.);   
      startet,maskeflag           :boolean;
      sv                          :char;
      i,antalsp,antal_ind         :integer; 
      skemastak                   :array(.1..maxskema.) of skematype;
      s                           :array(.1..maxsp,0..maxvalg.) of integer;
      sum                         :array(.1..maxsp.) of integer;
      k                           :array(.0..maxvalg,0..maxvalg.) of integer;
      si                          :array(.1..maxmaske.) of masketype;
      antal_masker                :0..maxmaske;
procedure forklaring;
begin
write(clrhom);
writeln('   Dette program kan benyttes til behandling af spørgeskemaer.');
writeln('Spørgeskemaet kan indeholde op til 30 forskellige spørgsmål.');
writeln('Hvert spørgsmål kan indeholde op til 20 svarmuligheder. Disse ');
writeln('skal kunne tillægges en talværdi mellem 1 og 20. Et spørgsmål,');
writeln('der ikke er besvaret indkodes med svaret 0.');
writeln('Ved indkodningen af svarene skal hvert skema have et nummer.');
writeln('Dette nummer bliver ikke benyttet af programmet i den nuværende');
writeln('udgave, men det kan dog benyttes til kontrol af de indtastede ');
writeln('skemaer-evt kan det sættes til 0.');
writeln;
writeln('Ved programstart vises en menu, hvoraf de forskellige muligheder');
writeln('fremgår. De indtastede data gemmes efter indtastningen på en ');
writeln('fil, hvorfra de kan hentes. Dette skal ALTID gøres inden den ');
writeln('endelige optælling og behandling foretages.');
writeln('Ved optællingen kan der defineres nogle specielle krav, der ');
writeln('skal være opfyldt for at skemaet indgår i optællingen.');
writeln('Disse krav kaldes masker og denne maskefunktion kan tændes ');
writeln('eller slukkes efter behov.');
writeln;
writeln('De spørgsmål programmet stiller og som kun kræver et bogstav');
writeln('som svar kræver ikke brug af <RETURN>-knappen.');
write('                                ',rvson,'tast <RETURN> ',rvsoff);
readln;
end;  
function input_tal : integer;
var x,p : integer;
    ch  : char;
    tal_string : string(.8.);
begin
  repeat
   tal_string:='';
   read(kbd,ch);
   while ch<>return do begin
     tal_string:=tal_string+ch;
     write(ch);
     read(kbd,ch);
   end;  
   val(tal_string,x,p);
   if p<>0 then write(chr(7),'??') ;
  until p=0;
  input_tal:=x;
end;  
function pct(x,y :real):real;
begin
  if y=0 then pct:=0 else pct:=x/y*100;
end;

function maske_kontrol(skema:skematype):boolean;
  var i,spm       : integer;
      ok          : boolean;
 begin
   if maskeflag and (antal_masker>0) then begin
     i:=0;
     repeat
       i:=i+1;
       spm:=si(.i.).sp;
       ok:=skema.svar(.spm.) in si(.i.).maske;
     until ( not ok ) or (i>=antal_masker);
     maske_kontrol:=ok;
     end
   else
     maske_kontrol:=true;    
 end;
        
procedure gotofelt(nr:integer);
var x,y :integer;
begin
  x:=feltpos(.nr,1.);
  y:=feltpos(.nr,2.);
  gotoxy(x,y);
end;

procedure laes_disk;  (* fastlægger antal_ind og skema_stak *)
begin
  reset(disk);read(disk,skema);
  antal_ind:=0;
  while (not eof(disk)) and (antal_ind<maxskema) do begin
    antal_ind:=antal_ind+1;
    read(disk,skemastak(.antal_ind.));
  end;
  close(disk);
  if antal_ind>=maxskema then begin
    writeln('Der er maksimalt antal skemaer.');
    write(' Tast <RETURN> ');
    readln;
  end;  
end;    

procedure tekstbilled(skema:skematype);
(**************************************************************************)
(* Der udskrives et tekstbilled, der indeholder oplysninger om indholdet  *)
(* af skema.                                                              *)
(**************************************************************************)
var i,tal :integer;
begin
  write(clrhom);
  for i:=1 to antalsp do begin
    gotofelt(i);
    tal:=skema.svar(.i.);
    write(back,'Sp. ',i:2,'    ',rvson,tal:2,rvsoff);
  end;
  gotoxy(5,22);
  write('Skriv det rigtige svar - Flyt med pilene - Afslut med <ESC>');
  gotoxy(0,0);
  write('Skema nr:',skema.nr:4);
end;

procedure laesfelt(var tast:char;var oktal:boolean;var tal :integer;
                   nr:integer);
(************************************************************************)
(* tast retunere den sidste tast, der er rørt.                          *)
(* oktal er sand, hvis tal er et tal, der kan bruges.                   *)
(* nr angiver i hvilket felt, der læses.                                *)
(************************************************************************)
var talstring : string(.2.);
    x,p       : integer;
    slut,ok   : boolean;
begin
   repeat
     talstring:='';gotofelt(nr);slut:=false;
     repeat
       read(kbd,tast);
       case tast of
       '0'..'9':       begin
                        if len(talstring)=0 then write('  ',@8@8);
                        talstring:=talstring+tast;
                        write(tast);end;
       op,ned,venstre,
       hoejre,return : begin
                       slut:=true;
                       if len(talstring)>0 then begin
                        val(talstring,x,p);
                        ok:=p=0;
                        if ok then ok:=(x>=0) and (x<=mulighed(.nr.));
                        oktal:=ok;
                        gotofelt(nr);
                        write(rvson,x:2,rvsoff); 
                        gotoxy(50,0);
                        if not oktal then begin
                         write(chr(7),rvson,'Tal uden for området!!',rvsoff);
                        end else write(clreol);                 
                       end else
                        oktal:=false;
                      end;
     esc :           begin
                         oktal:=false;
                         slut:=true;
                       end;
       otherwise       write(chr(7));
      end; 
    until slut;
  until (tast=esc) or oktal or (len(talstring)=0)  ;
  if oktal then tal:=x;
  end;

procedure ret_skema(var skema :skematype);
var ok       : boolean;
    tal,felt : integer;
    ch     :char;
begin
 tekstbilled(skema);
 felt:=1;
 repeat
   laesfelt(ch,ok,tal,felt);
   if ok then skema.svar(.felt.):=tal;
   case ch of
   op   : begin felt:=felt-1;if felt=0 then felt:=antalsp; end;
   venstre: if (felt>10) and (antalsp>10) then felt:=felt-10;
   hoejre : if (antalsp>10) and (felt<=antalsp-10) then felt:=felt+10;
   ned,return : begin felt:=felt+1;
                      if felt>antalsp then felt:=1;
                end;
   end;
   gotofelt(felt);
 until ch=esc;
end;
 
                          
                                               
procedure gl_unders;
(**********************************************************************)
(* ved udgang kendes antalsp og mulighed samt filnavn eller også er   *)
(* startet = FALSE                                                    *)
(**********************************************************************)   
var   fejl :integer;
begin
  writeln(clrhom);startet:=false;
  antal_ind:=0;
  repeat
    repeat
      write('Hvad hedder undersøgelsen? (max 8 tegn, STOP standser.) ');  
      readln(navn);
    until len(navn)>0;
    fejl:=1;
    if not ( (navn='STOP') or (navn='stop')) then begin
      filnavn:=navn+'.sps';
      (*$I-*) assign(disk,filnavn);reset(disk);(*$I+*)
      fejl:=iores;
      if fejl<>0 then writeln(rvson,'filen findes ikke!!',rvsoff);
    end;
  until (fejl=0) or (navn='STOP') or (navn='stop');
  if fejl=0 then begin
    read(disk,skema);
    with skema do begin
      antalsp:=nr;
      mulighed:=svar;
    end;
    close(disk);
    startet:=true;
  end;
  if (navn='STOP') or (navn='stop') then navn:='';
end; (* of gl_unders *)        

procedure ny_unders;
(**********************************************************************)
(* ved udgang kendes antalsp og mulighed samt filnavn eller også er   *)
(* startet = FALSE                                                    *)
(**********************************************************************)  
var fejl,i    : integer;
begin
  writeln(clrhom); fejl:=0;startet:=false;antal_ind:=0;
  repeat
    repeat
      write('Hvad skal undersøgelsen hedde? (max 8 tegn , STOP standser.) ');
            readln(navn);
    until len(navn)>0;
    if not ((navn='STOP') or (navn='stop')) then begin    
      filnavn:=navn+'.sps';
      (*$I-*) assign(disk,filnavn);reset(disk);(*$I+*)
      fejl:=iores;
      if fejl=0 then begin
        writeln(rvson,'filen findes allerede!!',rvsoff);
        close(disk);
      end;
    end;  
  until (fejl<>0) or ((navn='STOP') or (navn='stop'));
  if not ((navn='STOP') or (navn='stop')) then begin
    writeln;writeln;writeln;
    repeat
      write('Hvor mange spørgsmål er der ? (max ',maxsp,') ');
      readln(antalsp);        
    until (0<antalsp) and (antalsp<=maxsp);
    for i:=1 to antalsp do begin 
      repeat
        write('Antal svarmuligheder i spørgsmål ',i,'  : ');
        readln(mulighed(.i.));
      until (mulighed(.i.)>0) and (mulighed(.i.)<=maxvalg);
    end;
    with skema do begin
      nr:=antalsp;
      svar:=mulighed;
    end;
    rewrite(disk);
    write(disk,skema);
    close(disk);
    startet:=true;
    end
  else
    navn:='';  
end; 

procedure indtastning;
var snr,i            : integer;
    sv               : char;
    nulskema         : skematype;
begin
nulskema.nr:=0;
for i:=1 to antalsp do nulskema.svar(.i.):=0;
write(clrhom);
antal_ind:=0;
repeat
skema:=nulskema;
gotoxy(0,0);write('Skema nr ?  : ');snr:=input_tal;
skema.nr:=snr;
ret_skema(skema);
gotoxy(0,22);write(clreol,'Skal skema ',snr,' gemmes? (j/n) ');
repeat read(kbd,sv); until sv in (.'J','j','N','n'.);
if sv in (.'J','j'.) then begin
  antal_ind:=antal_ind+1;
  if antal_ind <= maxskema then
    skemastak(.antal_ind.):=skema
  else
    writeln('Der kan ikke gemmes flere skemaer!!');  
end else begin
  write('Skema IKKE gemt - Flere skemaer? (j/n) ');
  repeat read(kbd,sv); until sv in (.'J','j','N','n'.);
end;  
until  (sv in (.'N','n'.));
gotoxy(0,22);write(clreol,'......Et øjeblik og du kan gå videre.....');
reset(disk);seek(disk,length(disk));
for i:=1 to antal_ind do write(disk,skemastak(.i.));
close(disk);
end;    

procedure for_udskriv(i :integer);
var j    : integer;
begin
  writeln(fil,'Optælling af ':20,antal_ind,' skemaer giver :');
  writeln(fil);
  write(fil,'Fordeling i spørgsmål ',i:4);
  if maskeflag then
   writeln(fil,' Der er benyttet masker!')
  else
   writeln(fil);
  writeln(fil);
  writeln(fil,'Svar    antal ':15,'    % ':12);
  writeln(fil,'▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀');
  for j:=1 to mulighed(.i.) do 
  writeln(fil,j:4,s(.i,j.):8,pct(s(.i,j.),sum(.i.)):15:1);
  writeln(fil,'▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀');
  writeln(fil,' Besvaret ialt  ',sum(.i.):12);
  writeln(fil,' Ubesvarede     ',s(.i,0.):12);
  writeln(fil);
end;

procedure optaelling;
var ssum,i,j  : integer;
    ch,alle   : char;
begin
  writeln(clrhom,' ':25,'Svarfordeling laves!');
  fill(s,size(s),0);
  (* optæl  *)
  for i:=1 to antal_ind do begin
    skema:=skemastak(.i.);
    if maske_kontrol(skema)  then
      for j:=1 to antalsp do s(.j,skema.svar(.j.).):=s(.j,skema.svar(.j.).)+1;
  end;
  (* find søjlesummer *)
  for i:=1 to antalsp do begin
    ssum:=0;
    for j:=1 to mulighed(.i.) do ssum:=ssum+s(.i,j.);
    sum(.i.):=ssum;
  end;
  (*klar til udskrift *)
  write('Ønskes udskrift på skærm eller printer ? (s/p) ');
  repeat read(kbd,ch) until ch in (.'P','p','S','s'.);writeln(ch);
  if ch in (.'P','p'.) then
    assign(fil,'LST:')
  else
    assign(fil,'CON:');
  rewrite(fil);
  (* Hvilke tabeller skal udskrives?? *)
  write('Udskrift af enkelte eller af alle tabeller ? (e/a) ');
  repeat read(kbd,alle) until alle in (.'E','e','A','a'.);writeln(alle);
  if alle in (.'A','a'.) then begin
    for i:=1 to antalsp do begin
    for_udskriv(i);
    if ch in (.'S','s'.) then begin
      gotoxy(0,24);write('tast <RETURN>');readln;write(clrhom);end
    else  
    writeln(fil,chr(10),chr(10),chr(10));
    end;
  end else begin
    repeat
      write(clrhom,'Angiv tabelnummer. -1 standser. ');
      i:=input_tal;
      writeln;
      if (i>0) and (i<=antalsp) then begin
        for_udskriv(i);
        if ch in (.'S','s'.) then begin
          gotoxy(0,24);write('tast <RETURN>');readln;write(clrhom);
        end;
      end;
    until i<=0 ;
  end;      
  close(fil);
end;

procedure krydstabel;
var ch    :char;
    vandret,lodret, i,j  : integer;
    ssum  : array(.1..maxvalg.) of integer;
    streg : string(.79.);
    relativ : boolean;
begin
  streg:='';
  for i:=1 to 79 do streg:=streg+'▶88◀';
  repeat
    writeln(clrhom,' Der kan nu laves krydstabeller. ');
    write('Angiv første spørgsmål (vandret i tabellen).((højst 15)) ');
    repeat
      vandret:=input_tal;
    until (vandret>0) and (vandret<=antalsp);
    writeln;
    write('Angiv nu andet spørgsmål. ');
    repeat lodret:=input_tal until (lodret>0) and (lodret<=antalsp);
    writeln;
    write('Skal det være absolutte tal eller i % af søjleantal (a/p). ');
    repeat read(kbd,ch) until ch in (.'A','a','P','p'.);writeln(ch);
    relativ:= ch in (.'P','p'.);
    (* klar til optælling *)
    fill(k,size(k),0);
    for i:=1 to antal_ind do 
      if maske_kontrol(skemastak(.i.)) then
      k(.skemastak(.i.).svar(.lodret.),skemastak(.i.).svar(.vandret.).):=
      k(.skemastak(.i.).svar(.lodret.),skemastak(.i.).svar(.vandret.).)+1;
    fill(ssum,size(ssum),0);
    for i:=1 to mulighed(.vandret.) do
      for j:=1 to mulighed(.lodret.) do ssum(.i.):=ssum(.i.)+k(.j,i.);
    (* summen i søjlerne er fundet og udskriften kan begynde *)
    write('Ønskes udskrift på skærm eller printer? (s/p) ');
    repeat read(kbd,ch) until ch in (.'S','s','P','p'.);writeln(ch);
    if ch in (.'P','p'.) then
      assign(fil,'LST:')
    else
      assign(fil,'CON:');
    rewrite(fil);
    if relativ then writeln(fil,'Krydstabel i % af søjleantal. ':30)
    else  writeln(fil,'Krydstabel  i antal. ':25);
    writeln(fil);writeln(fil,'      Optalte skemaer :',antal_ind:4);
    if maskeflag then
     writeln(fil,' Der er benyttet masker!')
    else
     writeln(fil);
    write(fil,lodret:2,'▶89◀',vandret:2,':');
    for i:=1 to mulighed(.vandret.) do write(fil,i:4,' ');
    if mulighed(.vandret.)<15 then writeln(fil);
    writeln(fil,copy(streg,1,5+5*mulighed(.vandret.)));
    for j:=1 to mulighed(.lodret.) do begin
      write(fil,j:3,' ▶89◀');
      for i:=1 to mulighed(.vandret.) do
       if relativ then
        write(fil,pct(k(.j,i.),ssum(.i.)):5:1)
       else
        write(fil,k(.j,i.):5);
      if mulighed(.vandret.)<15 then writeln(fil);
    end;
    writeln(fil,copy(streg,1,5+5*mulighed(.vandret.)));
    write(fil,'antal');
    for i:=1 to mulighed(.vandret.) do write(fil,ssum(.i.):5);
    if mulighed(.vandret.)<15 then writeln(fil);
    writeln(fil);
    write('tryk <RETURN>');readln;
    write('Flere tabeller ? (j/n) ');
    repeat read(kbd,sv) until sv in (.'J','j','N','n'.);
 until sv in (.'N','n'.);
 close(fil);   
end;

procedure masker;
var maske_ind : masketype;
    nr,msk        : integer;
    ch        : char;
 procedure hent_maske(spm:integer);
   var i:integer;
   begin
     Writeln('Angiv de svar, der skal godkendes. (-1 afslutter) ');
     writeln('Efter hver svarmulighed trykkes på <RETURN>.');
     write('Svarmulighed --> ');
     repeat
       begin
        i:=input_tal;
        if not(i in (.-1,0,1..mulighed(.spm.).)) then write('??');
       end 
     until i in (.-1,0,1..mulighed(.spm.).);
     writeln;
     maske_ind.maske:=(..);
     while i>=0 do begin
       maske_ind.maske:=maske_ind.maske+(.i.);
       write('Svarmulighed --> ');
       repeat
        begin
          i:=input_tal;
          if not(i in (.-1,0,1..mulighed(.spm.).)) then write('??');
        end 
       until i in (.-1,0,1..mulighed(.spm.).);
       writeln;
     end;
   end; (* hent_maske *)
begin
  repeat
  writeln(clrhom,'Du kan nu vælge mellem følgende muligheder :');
  writeln;
  writeln('     N   : Nye masker fremstilles.');
  writeln('     V   : Vis maskerne.');
  writeln('     T   : Tænd for maskefunktionen.');
  writeln('     S   : Sluk for maskefunktionen.');
  writeln('     A   : Afbryd denne programdel.');
  writeln;
  write('      Angiv det ønskede  : ');
  repeat read(kbd,ch) until ch in(.'N','n','T','t','S','s','A','a','V','v'.);
  writeln(ch);
  case ch of
  'N','n' : begin
              antal_masker:=0;
              write('Angiv nummer på spørgsmålet (-1 standser) :');
              repeat nr:=input_tal until nr in (.-1,1..antalsp.);
              writeln;
              while (nr>=1) and (antal_masker<maxmaske) do begin
                maske_ind.sp:=nr;
                hent_maske(nr);
                if maske_ind.maske<>(..) then begin
                  antal_masker:=antal_masker+1;
                  si(.antal_masker.):=maske_ind;
                end;
                write(clrhom,'Angiv nummer på spørgsmålet (-1 standser) :');
                repeat nr:=input_tal until nr in (.-1,1..antalsp.);  
                writeln;
              end;
            end;
   'V','v' : begin
              if antal_masker =0 then begin
                writeln('Der er ikke defineret nogle masker.Tryk <RETURN>.');
                readln;end
              else begin
                for msk:=1 to antal_masker do begin
                 write('Spørgsmål : ',si(.msk.).sp:3,' : ');
                 for nr:=0 to maxvalg do
                   if nr in si(.msk.).maske then write(nr:3,', ');
                 writeln;
                end;
                writeln;
                writeln('          ',rvson,'Tryk <RETURN>.',rvsoff);
                readln;
                writeln;
              end;
             end;        
  'T','t'  :begin
              if antal_masker =0 then begin
                writeln('Der er ikke defineret nogle masker. Tryk <RETURN>');
                readln;
              end;  
              maskeflag:= antal_masker>0;
            end;    
  'S','s'  : maskeflag:=false;
  'A','a'  : (* afslut *)
  end;
  until ch in (.'A','a'.);            
end;
     
(* ---------------------HOVED PROGRAM ----------------*)
BEGIN
startet:=false;navn:='';maskeflag:=false;antal_masker:=0;antal_ind:=0;
repeat
write(clrhom);
write(rvson,navn:8,rvsoff,' ':17);
writeln(rvson,'SPØRGESKEMA - undersøgelse.',rvsoff);
writeln;
writeln('          Du har nu følgende muligheder at vælge mellem :');
writeln;
writeln('              1 : Hente oplysninger om en gammel undersøgelse.');
writeln('              2 : Foretage indlæsning af skemaer.');
writeln('              3 : Indlæse alle skemaer fra disketten.');
writeln;
writeln('              4 : Optælling af svarfordeling.');
writeln('              5 : Lave krydstabeller.');
writeln('              6 : Definere masker, der bestemmer optællingen.');
writeln;
writeln('              7 : Starte en ny undersøgelse.');
writeln('              8 : Standse.');
writeln('              9 : Forklaring.');
writeln;
if maskeflag then begin
  gotoxy(0,10);
  write(rvson,'TÆNDT',rvsoff);
end;
gotoxy(0,17);  
write('         ',rvson,'Tast det ønskede nummer.',rvsoff,' ');read(kbd,sv);
write(sv,' ');
case sv of
 '7'   : ny_unders;
 '1'   : gl_unders;
 '2'   : if startet then indtastning
         else begin gotoxy(56,0);
                    write(rvson,chr(7),' brug først 1 eller 7',rvsoff);
                    gotoxy(56,1);Write('Tast <RETURN>');readln;
         end;
 '4'   : if startet then optaelling 
         else begin gotoxy(56,0);
                    write(rvson,chr(7),' brug først 1 eller 7',rvsoff);
                    gotoxy(56,1);Write('Tast <RETURN>');readln;
         end;
 '5'   : if startet then krydstabel
         else begin gotoxy(56,0);
                    write(rvson,chr(7),' brug først 1 eller 7',rvsoff);
                    gotoxy(56,1);Write('Tast <RETURN>');readln;
         end;
 '6'   : if startet then masker
         else begin gotoxy(56,0);
                    write(rvson,chr(7),' brug først 1 eller 7',rvsoff);
                    gotoxy(56,1);Write('Tast <RETURN>');readln;
         end;
  '3'  : if startet then begin writeln('Et øjeblik.');laes_disk;end
         else begin gotoxy(56,0);
                    write(rvson,chr(7),' brug først 1 eller 7',rvsoff);
                    gotoxy(56,1);Write('Tast <RETURN>');readln;
         end;
  '8'  :writeln(clrhom,'SLUT FOR DENNE GANG.');
  '9'  :forklaring;
  otherwise write(chr(7))
  END;
  until sv='8'; 
end.
«eof»