DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

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

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦f2f92fa01⟧ TextFile

    Length: 4608 (0x1200)
    Types: TextFile
    Names: »kkrente«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦508e019d6⟧ »kkfiler« 
            └─⟦this⟧ 
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦8748ba386⟧ »kkfiler« 
            └─⟦this⟧ 

TextFile

kkan=algol list.no
begin
  integer i,j,k,antkr,år,førsteår,sidsteår,nr,fm;
  real rentesum,afdragssum,rentetotal,afdragtotal,restgtotal;
  real r,t,s;
  integer array ffm(1:30,0:13),buf,val(1:30),terminer(1:20);
  real array hovedstol,ydelse,rente,nyrestg,restg(1:20),kreditor(1:20,1:4);
  real array fmdr,får(1:20), buf1(1:4);
  zone z(128,1,stderror);
  open(z,4,<:rentefil:>,0);
  setposition(z,0,0);
  i:=1;
N:
  for j:=1 step 1 until 4 do buf1(j):=real <:<32><32><32><32><32>:>;
  write(out,<:<10>kreditor = :>); setposition(out,0,0);
  readstring(in,buf1,1);
  for j:=1 step 1 until 4 do kreditor(i,j):=buf1(j);
  write(out,<:<10>hovedstol = :>); setposition(out,0,0);
  read(in,hovedstol(i));
  write(out,<:<10> stiftelsesår = :>); setposition(out,0,0);
  read(in,får(i));
  write(out,<:<10> stiftelsesmåned = :>); setposition(out,0,0);
  read(in,fmdr(i));
  write(out,<:<10>rente i procent = :>); setposition(out,0,0);
  read(in,rente(i));
  write(out,<:<10>vælg mellem 1, 2 og 3<10>:>);
  write(out,<:1  antal terminer<10>:>,
  <:2 ydelse pr termin i kr.<10>:>,
  <:3 ydelse pr termin i procent<10>:>); setposition(out,0,0);
  read(in,nr);
  case nr of
  begin
    begin
      write(out,<:<10>antal terminer = :>); setposition(out,0,0);
      read(in,terminer(i));
    end;
    begin
      write(out,<:<10>ydelse = :>); setposition(out,0,0);
      read(in,ydelse(i));
    end;
    begin
      write(out,<:<10>ydelse i procent af hovedstol = :>); setposition(out,0,0);
      read(in,ydelse(i));
      ydelse(i):=ydelse(i)*hovedstol(i)/100;
    end;
  end;
  for j:=1 step 1 until 30 do buf(j):=val(j):=ffm(i,j):=0;
  write(out,<:<10>forfaldsmåneder = :>); setposition(out,0,0);
  readall(in,buf,val,1);
  k:=1;
  for j:=1 step 1 until 30 do
  if val(j)=2 then
  begin
    k:=k+1;
    ffm(i,k):=buf(j);
  end;
  ffm(i,1):=k;
  rente(i):=rente(i)/100;
  if nr=1 then
  ydelse(i):=hovedstol(i)*rente(i)/(1-(1+rente(i))**(-terminer(i)));
  write(out,<:<10>er der flere kreditorer ? :>); setposition(out,0,0);
L:readchar(in,k);
  if k=74 or k=106 then
  begin
    i:=i+1;
    goto N;
  end else if k<>78 and k<>110 then goto L;
  antkr:=i;
  write(out,<:<10>angiv første år :>); setposition(out,0,0);
  read(in,førsteår);
LL:
  write(out,<:<10>angiv sidste år :>); setposition(out,0,0);
  read(in,sidsteår);
  if sidsteår<førsteår then goto LL;
  for i:=1 step 1 until antkr do
  begin
    nyrestg(i):=0;
    fm:=1;
    repeat
    fm:=fm+1;
    until fmdr(i) < ffm(i,fm) or fm>ffm(i,1);
    if førsteår=får(i) then ffm(i,0):=fm else ffm(i,0):=2;
    restg(i):=hovedstol(i);
    for år:=får(i) step 1 until førsteår-1 do
    begin
    for j:=fm step 1 until ffm(i,1) do
    begin
      s:=restg(i)*rente(i);
      restg(i):=restg(i)-ydelse(i)+s;
    end;
    fm:=2;
    end;
  end;
  for år:=førsteår step 1 until sidsteår do
  begin
    rentetotal:=afdragtotal:=restgtotal:=0;
    if år>1 and antkr=1 then outchar(z,10) else outchar(z,12);
    write(z,<< dddddd>,år,<:<10>:>,
    <:      gammel                       ny                 ialt<10>:>,
    <:mdr  restgæld    rente   afdrag  restgæld     rente    afdrag    restgæld<10>:>);
    for i:=1 step 1 until antkr do
    begin
      rentesum:=afdragssum:=0;
      for j:=1 step 1 until 4 do buf1(j):=kreditor(i,j);
      outtext(z,20,buf1,1);
      write(z,<:<10>:>,<< ddddd.dd>,rente(i)*100,<:<37>:>);
     k:=fmdr(i);
      if k<1 or k>12 then k:=1;
      write(z,<< ddddddd>,hovedstol(i),<:kr. :>,case k of(<:jan:>,<:feb:>,<:mar:>,<:apr:>,<:maj:>,<:jun:>,<:jul:>,<:aug:>,<:sep:>,<:okt:>,<:nov:>,<:dec:>),<< dddd>,får(i));
      for j:=ffm(i,0) step 1 until ffm(i,1) do
      begin
        if får(i)<=år and restg(i)>1.0 then
        begin
          s:=restg(i)*rente(i);
          nyrestg(i):=restg(i)-ydelse(i)+s;
          write(z,<:<10>:>,<< dd>,ffm(i,j),<< dddddd.dd>,restg(i),s,ydelse(i)-s,nyrestg(i));
          restg(i):=nyrestg(i);
          rentesum:=rentesum+s;
          afdragssum:=afdragssum+ydelse(i)-s;
        end;
        if ffm(i,j+1)= 0 then
        begin
          write(z,<:<10>:>,false add 45,43,<:<10>:>,false add 32,43);
          write(z,<< dddddd.dd>,rentesum,afdragssum,nyrestg(i),<:<10>:>);
        end;
      end;
      ffm(i,0):=2;
      rentetotal:=rentetotal+rentesum;
      afdragtotal:=afdragtotal+afdragssum;
      restgtotal:=restgtotal+nyrestg(i);
    end;
    write(z,false add 45,73,<:<10>:>);
    write(z,false add 32,43,<< dddddd.dd>,rentetotal,afdragtotal,restgtotal,<:<10>:>);
  end;
  write(z,<:<25><25><25>:>);
  close(z,true);
end
▶EOF◀