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

⟦0791fd5d1⟧ TextFile

    Length: 22272 (0x5700)
    Types: TextFile
    Names: »gcrgn«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦this⟧ »gcrgn« 

TextFile


begin
  boolean sign,ret,found,u,skriv,d,dd,fault,o1,o3,nypris;
  long kr,B,I,E,F,R;
  integer i,j,k,kontonr,tegn,ore,p,char,konto,t,uge;
  integer array ia(1:2),dato(1:3),linie(1:32),tail,tail2(1:10),txt(1:36);
  real array ra(1:2),skift(1:16);
  real r;
  zone z1,z2,z3(128,1,stderror);
  integer procedure psubmit(z);
  zone z;
  begin
    integer array carr(1:30),ia(1:20),rarr(1:11);
    integer i,j;
    for i:=7 step 1 until 30 do carr(i):=-1;
    for i:=27,28,29,1 step 1 until 6 do carr(i):=0;
    carr(26):=long <:lp:> shift (-24);
    i:=wordload(66);
    carr(9):= wordload(i+2);
    carr(10):= wordload(i+4);
    carr(11):=wordload(i+6);
    carr(12):=wordload(i+8);
    getzone(z,ia);
    carr(21):=ia(2);
    carr(22):=ia(3);
    carr(23):=ia(4);
    carr(24):=ia(5);
    j:=transfer(2,carr,30,rarr,11);
    if j=0 then write(out,<:jobnr :>,rarr(2),false add 10,1);
  end;
 
  integer procedure prisret;
  begin
    integer kroner;
    boolean found;
    found:=false;
    open(z1,4,ra,0);
    for i:=swoprec(z1,16) while
    z1(1) shift (-24) extract 24<8388600,1 do
    begin
      if kontonr=z1(1) shift (-24) extract 24 and
      z1(1) extract 24=dato(3)*10000+dato(2)*100+dato(1) then
      begin
        found:=false;
        for j:=1 step 1 until 16 do
        begin
          linie(j*2):=z1(j) extract 24;
          linie(j*2-1):=z1(j) shift (-24) extract 24;
        end;
        for j:=1 step 1 until 12 do
        begin
          txt(j*3):=linie(j+2) extract 8;
          txt(j*3-1):=linie(j+2) shift (-8) extract 8;
          txt(j*3-2):=linie(j+2) shift (-16) extract 8;
        end;
        write(out,<<zdd>,linie(1),<<   zd dd dd>,linie(2),"sp",2);
        for j:=1 step 1 until 36 do
        write(out,false add txt(j),1);
        kroner:=z1(8);
        write(out,"sp",2,<<-dddddddd.dd>,kroner/100,
        <<   zd dd dd>,linie(17),"nl",1);
        if readb(<:er det denne post:>) then
        begin
          found:=true;
          z1(8):=kr;
          goto ud;
        end;
      end;
    end;
ud: 
    if -,found then
    write(out,<:<10>JEG KAN IKKE FINDE DEN POST:>);
    close(z1,true);
    goto om;
  end;

  integer procedure date;
  begin
omm:
    dato(3):=tail(9);
    write(out,<: <10>DAG MÅNED (evn. ÅR):: (eks 28/3)  :>);
    setposition(out,0,0); læsnl;
    skipsp;
    readchar(in,tegn);
    if tegn=115 then goto AFSLUT else repeatchar(in);
    for i := 1 step 1 until 3 do
    begin
      k:=dato(i) := 0;
      skipsp;
nyd:  
      for j := readchar(in,tegn) while j = 2 do
      begin
        k:=-1;
        dato(i) := dato(i) * 10 + tegn - 48;
      end;
      if tegn=105 or tegn=108 or tegn=111 then
      begin
        if tegn=111 then tegn:=48 else tegn:=49;
        k:=-1;
        dato(i):=dato(i)*10+tegn-48;
        goto nyd;
      end;
      repeatchar(in);
      skipsp;
      if tegn=111 then tegn:=48;
      if tegn=105 or tegn=108 then tegn:=49;
      if tegn>47 and tegn<58 then goto next;
      readchar(in,tegn);
      if i=2 and tegn=10 then i:=3;
      if i=3 and k=-1  then tegn:=32;
      if i=3 and k=0 then goto omm;
      if tegn<>32 and tegn<>46 and tegn<>47 and tegn<>44 then
      goto omm;
next: 
    end;
    if dato(3)>1979 then dato(3):=dato(3) mod 100;
    if dato(1) < 1 or dato(1) > 31 or
    dato(2) < 1 or dato(2) > 12 or dato(3)>99 then
    goto omm;
  end;

  integer procedure kontonummer;
  begin
    fault:=false;
kontonrfejl:
    write(out,<:<10>KONTONR:  :>);
    setposition(out,0,0); læsnl;
    kontonr := 0;
    skipsp;
    readchar(in,tegn);
    if tegn=115 then goto AFSLUT else repeatchar(in);
kon:
    for i := i while readchar(in,tegn) = 2 do
    kontonr := kontonr * 10 + tegn - 48;
    if tegn=105 or tegn=108 or tegn=111 then
    begin
      if tegn=111 then tegn:=48 else tegn:=49;
      kontonr:=kontonr*10+tegn-48;
      goto kon;
    end;
OM2:
    for i:=readchar(z3,char) while char<>25 do
    begin
      if i<>2 then
      begin
        repeatchar(z3);
        for j:=readchar(z3,char) while char<>10 and char<>25 do;
        goto if char=25 then ud else OM2;
      end;
      repeatchar(z3);
      read(z3,konto);
      repeatchar(z3);
      for j:=readchar(z3,char) while char<>10 and char<>25 do;
      if char=25 then goto ud;
      if kontonr=konto then goto ud;
    end;
ud: 
    setposition(z3,0,0);
    if kontonr<>konto then
    begin
      write(out,<:ukendt kontonummer<10>:>);
      fault:=true;
      goto om;
    end;
  end;

  integer procedure rettelse;
  begin
    open(z1,4,ra,0); open(z2,4,<:gcrgn82:>,0);
    if createentry(<:gcrgn82:>,tail)>0 then fejl(5);
    scopeuser(<:gcrgn82:>);
    found:=false;
    for j:=inrec(z1,16) while z1(1) shift (-24) extract 24<8388600 do
    begin
      if z1(1) shift (-24) extract 24=kontonr and
      z1(1) extract 24=dato(3)*10000+dato(2)*100+dato(1) and -,found then
      begin
        for i:=1 step 1 until 16 do
        begin
          linie(i*2):=z1(i) extract 24;
          linie(i*2-1):=z1(i) shift (-24) extract 24;
        end;
        for i:=1 step 1 until 12 do
        begin
          txt(i*3):=linie(i+2) extract 8;
          txt(i*3-1):=linie(i+2) shift (-8) extract 8;
          txt(i*3-2):=linie(i+2) shift (-16) extract 8;
        end;
        write(out,<<zdd>,linie(1),<<  zd dd dd>,linie(2),"sp",2);
        for i:=1 step 1 until 36 do
        write(out,false add txt(i),1);
        kr:=z1(8);
        write(out,"sp",2,<<-dddddddd.dd>,kr/100,
        <<  zd dd dd>,linie(17),"nl",1);
        if readb(<:er det denne post:>) then
        begin
          found:=true;
          inrec(z1,16);
          if z1(1) shift (-24) extract 24>=8388600 then
          goto stop;
        end;
      end;
      outrec(z2,16);
      for i:=1 step 1 until 16 do
      z2(i):=z1(i);
    end;
stop:
    outrec(z2,16);
    z2(1):=0.0 shift 48 add 8388600 shift 24;
    close(z1,true); close(z2,true);
    removeentry(ra);
    renameentry(<:gcrgn82:>,ra);
    if -,found then
    begin
      write(out,<:jeg kan ikke finde den post:>);
      goto om;
    end;
    tail(10):=tail(10)-1;
    changetail(ra,tail);
    goto om;
  end;

  integer procedure tekst;
  begin
tekstfejl:
    for i := 1 step 1 until 36 do
    txt(i) := 32;
    write(out,<:<10>TEKST:....................................<10>:>,
    <:      :>);
    setposition(out,0,0); læsnl;
    i := 0;
    for i := i + 1 while readchar(in,tegn) <> 8 do
    begin
      if i > 36 then
      begin
        write(out,<:<10>FOR LANG TEKST  :>);
        goto tekstfejl;
      end;
      txt(i) := tegn;
    end;
    if i=1 then goto tekstfejl;
    for i:=1 step 1 until 12 do
    linie(i+2):=txt(i*3-2) shift 8 add txt(i*3-1) shift 8 add txt(i*3);
  end;

  integer procedure pris;
  begin
prisfejl:
    write(out,if nypris then <:<10>NY PRIS::> else <:<10>PRIS::>,
    <:  (eks 27.45)   :>);
    setposition(out,0,0); læsnl;
    kr := 0; ore := i := 0;
    sign := false;
minus:;
    for j:=readchar(in,tegn) while tegn=32 do;
    repeatchar(in);
    for i := i while readchar(in,tegn) = 2 do
    kr := kr * 10 + tegn - 48;
    if tegn=105 or tegn=108 or tegn=111 then
    begin
      if tegn=111 then tegn:=48 else tegn:=49;
      kr:=kr*10+tegn-48;
      goto minus;
    end;
    if tegn = 45 and kr=0 then
    begin
      sign := true;
      goto minus;
    end;
    if (tegn <> 46 and tegn<>44 and tegn<>10) then
    goto prisfejl;
    if tegn<>10 then
    begin
      for j:=readchar(in,tegn) while tegn=32 do;
      repeatchar(in);
oore: 
      for i := i + 1 while readchar(in,tegn) = 2 do
      ore := ore * 10 + tegn - 48;
      if tegn=105 or tegn=108 or tegn=111 then
      begin
        if tegn=111 then tegn:=48 else tegn:=49;
        ore:=ore*10+tegn-48;
        goto oore;
      end;
      if i =1 or ore>99 then
      goto prisfejl;
      if i=2 then ore:=ore*10;
    end;
    if kr>99000000 or kr<-99000000 then goto prisfejl;
    kr:=kr*100+ore;
    if sign then kr:=-kr;
  end;

  integer procedure skipsp;
  begin
    integer i;
    for i:=readchar(in,tegn) while tegn=32 do;
    repeatchar(in);
  end;

  integer procedure postud(z);
  zone z;
  begin
    integer array ia(1:20);
    getzone6(z,ia);
    if ia(13)=3 then outchar(z,25);
    setposition(z,ia(7),ia(if ia(1)=4 then 9 else 8));
    if ia(1) extract 12=18 or ia(1)=4 then setzone6(z,ia);
  end;

  integer procedure fejl(i);
  integer i;
  begin
    write(out,case i of(
    <:gc82 kan ikke oprettes på 1 segment:>,
    <:gc82 kan ikke permanentes på key 22:>,
    <:gc82 er ikke i maskinen:>,
    <:gc82 er nul i tail(10) FEJL???:>,
    <:gcrgn82 kan ikke oprettes (25 segmenter>gc82):>,
    <:gcbev82 er ikke i maskinen:>,
    <:gc1out82 kan ikke oprettes på 30 segmenter:>,
    <:gc2out82 kan ikke oprettes med størrelse=gc82:>,
    <:fejl i gcbev82:>,
    <:gc3out82 kan ikke oprettes på 30 segmenter:>));
    goto udskrift;
  end;

  integer procedure læsnl;
  begin
    integer a,b;
    repeatchar(in);
    for a:=readchar(in,b) while b<>10 do;
  end;

  integer procedure flet;
  begin
    lookuptail(<:gcrgn82:>,tail);
    open(z2,4,<:gcrgn82:>,0);
    p:=tail(10);
    write(out,<:Forrige kørsel har ikke været afsluttet normalt.
Derfor flettes nu de sidst indtastede poster med de øvrige poster.
Af de sidst indtastede poster er der tabt max 1 post.
Tag en udskrift for kontrol og indtast den eventuelle tabte post igen.:>,"nl",1);
    setposition(out,0,0);
    for j:=1 step 1 until tail(10) do
    swoprec(z2,16);
    open(z1,4,ra,0);
    for j:=inrec(z1,16) while z1(1) shift(-24) extract 24<8388600,1 do
    begin
      swoprec(z2,16);
      for i:=1 step 1 until 16 do
      z2(i):=z1(i);
      p:=p+1;
    end;
    close(z1,true); close(z2,true);
    sort(<:gcrgn82:>,p,64,ia);
    removeentry(ra);
    renameentry(<:gcrgn82:>,ra);
    tail(1):=(p-1)//8+1; tail(10):=p-1;
    changetail(ra,tail);
    goto udskrift;
  end;

  integer procedure init;
  begin
    real array ra(1:2);
    cleararray(ra);
    reads(<:navn på det nye dataareal:>,ra);
    tail(1):=1; tail(9):=r/10000;
    removeentry(<:gcrgn82:>);
    removeentry(ra);
    if createentry(ra,tail)>0 then fejl(1);
    if scopeuser(ra)>0 then fejl(2);
    open(z1,4,ra,0);
    outrec(z1,16);
    z1(1):=0.0 shift 48 add 8388600 shift 24;
    close(z1,true);
    goto udskrift;
  end;

  u:=false add 45;
  nypris:=o1:=o3:=dd:=d:=skriv:=ret:=false;
  p:=0;
  B:=E:=I:=F:=R:=0;
  ia(1):=0; ia(2):=2;
  systime(1,0,r); r:=systime(4,r,r);
  uge:=day;
  cleararray(linie);
  cleararray(skift);
  cleararray(tail);
  ra(1):=real <:gc82:> ;
  ra(2):=real <::>;
  if readparam(skift)=-1 then readparam(skift);
  readparam(skift);
  if skift(1)=real <:init:> then init;
  if lookuptail(ra,tail)>0 then fejl(3);
  if tail(10)=0 and lookuptail(<:gcrgn82:>,tail2)=0 then flet;
  if lookupentry(<:gcbev82:>)>0 then fejl(6);
  careaproc(ra);
  reserveproc(ra,0);
ommm:
  write(out,<:TAST DET ØNSKEDE (prisret,udskriv,ret,indsæt,stop)<10>:>,
  <:<10><10>>:>);
  setposition(out,0,0);
  læsnl; skipsp;
  readchar(in,tegn);
  læsnl;
  if tegn=112 then nypris:=true else
  if tegn=115 then goto udskrift else
  if tegn=105 then else
  if tegn=114 then ret:=true else
  if tegn=117 then skriv:=true else
  goto ommm;
  open(z3,4,<:gcbev82:>,0);
  if skriv then
  begin
    integer a,b,c,forrige;
    boolean totud;
    long sub2,sub,tot,krr;
    real bev,eksbev;
    zone z4,z5(128,1,stderror);
    open(z1,4,ra,0);
    o1:=readb(<:ØNSKES UDSKRIFT AF FÆLLESFORBRUG:>);
    o3:=readb(<:ØNSKES UDSKRIFT AF AFD.- FORBRUG:>);
    d:=readb(<:ØNSKES UDSKRIFT AF POSTER:>);
    if d then
    dd:=readb(<:ØNSKES POSTER FRA EN BESTEMT DATO:>);
    sub2:=sub:=tot:=krr:=0;
    removeentry(<:gc1out82:>);
    if d then
    begin
      if dd then
      begin
        date;
        a:=dato(1);
        dato(1):=dato(3)*10000+dato(2)*100+a;
      end;
      tail(10):=tail(9):=0;
      removeentry(<:gc2out82:>);
      if createentry(<:gc2out82:>,tail)>0 then fejl(8);
      open(z5,4,<:gc2out82:>,0);
      write(z5,"ff",1,"nl",1,
      <:konto år md dag ................text................         kr.   indtastet:>,
      "nl",1);

    end;
    tail(10):=tail(9):=0;
    tail(1):=30;
    if createentry(<:gc1out82:>,tail)>0 then fejl(7);
    open(z4,4,<:gc1out82:>,0);
    write(z4,"ff",1,
    <:H.C. ØRSTED INSTITUTET:     REGNSKABSOVERSIGT  UGE:>,
    uge,"nl",1,
    <:ANALYSEKONTO                pr. :>,<<dd dd dd>,r,"nl",1,
    false add 95,76,"nl",1);
    removeentry(<:gc3out82:>);
    if createentry(<:gc3out82:>,tail)>0 then fejl(10);
    open(z2,4,<:gc3out82:>,0);
    write(z2,"ff",1,
    <:H.C.ØRSTED INSTITUTET:  FÆLLESAFDELINGERNES FORBRUG PR. UGE:>,
    uge,<:<10>UDFÆRDIGET PR. :>,<<dd dd dd>,r,"nl",2,
    <:               BEVILLING  EKSTRA BEVILLING    IALT      FORBRUG     TIL REST:>,
    "nl",1,false add 95,76,"nl",1);

    konto:=0;
    inrec(z1,16);
    for i:=1 step 1 until 16 do
    begin
      linie(i*2):=z1(i) extract 24;
      linie(i*2-1):=z1(i) shift (-24) extract 24;
    end;
    kontonr:=linie(1);
    totud:=false;
    forrige:=0;
OM: 
    i:=readchar(z3,char);
    if char=25 then goto SLUT;
    if char=10 then goto OM;
    if char=99 then
    begin
      for i:=readchar(z3,char) while char<>10 do;
      goto OM;
    end;
    if char=58 then
    begin
      real bev,eksbev;
      t:=0;
      i:=readchar(z3,char);
      if i<>2 then fejl(9);
      repeatchar(z3);
      read(z3,bev);
      i:=readchar(z3,char);
      if i<>2 and char<>45 then fejl(9);
      repeatchar(z3);
      read(z3,eksbev);
      repeatchar(z3);
      readchar(z3,char);
      if char<>32 and char<>42 then repeatchar(z3);
      for i:=readchar(z3,char) while char<>10 do
      begin
        t:=t+1;
        outchar(z2,char);
        if t mod 11=0 then
        begin
          readchar(z3,tegn);
          if tegn<>10 then
          begin
            t:=0; outchar(z2,10);
          end;
          repeatchar(z3);
        end;
      end;
      write(z2,"sp",11-t,<< -dddddddd.dd>,bev,eksbev,
      bev+eksbev,0,bev+eksbev,"nl",1);
      B:=B+bev*100;
      E:=E+eksbev*100;
      I:=I+(bev+eksbev)*100;
      R:=R+(bev+eksbev)*100;
test: 
      for i:=readchar(z3,tegn) while tegn=10 do;
      if tegn=99 then
      begin
        for i:=readchar(z3,tegn) while tegn<>10 do;
        goto test;
      end;
      if tegn<>25 then fejl(9);
      goto SLUT;
    end else
    if char=42 or char=44 or char=59 then
    begin
      if forrige=42 then totud:=true;
      if forrige=59 then totud:=false;
      if konto>0 then
      begin
        j:=41;
        sub2:=sub2+sub;
        if totud then
        tot:=tot+sub;
        write(z4,"sp",43,<:-------------:>,"nl",1);
        if char=44 or forrige=44 then
        begin
          write(z4,"sp",27,<<-dddddddd.dd>,sub2/100);
          j:=j-39;
        end;
        write(z4,"sp",j,<<  -dddddddd.dd>,sub/100);
        if totud then
        write(z4,<<  -dddddddd.dd>,tot/100);
        outchar(z4,10);
        if totud and (char=59 or char=42) then
        begin
          F:=F+sub2;
          R:=R+(bev+eksbev)*100-sub2;
          write(z2,<< -dddddddd.dd>,sub2/100,(bev+eksbev)-(sub2/100),"nl",2);
        end;
        sub:=0;
      end;
      if char=42 or char=59 then
      begin
        sub2:=0;
        i:=readchar(z3,tegn);
        if i<>2 then fejl(9);
        repeatchar(z3);
        read(z3,bev);
        i:=readchar(z3,tegn);
        if i<>2 and tegn<>45 then fejl(9);
        repeatchar(z3);
        read(z3,eksbev);
        repeatchar(z3);
      end;
      forrige:=char;
      t:=j:=0;
      readchar(z3,char);
      if char<>32 and char<>42 then repeatchar(z3);
      if char=42 then outchar(z4,12) else
      outchar(z4,10);
      for i:=readchar(z3,char) while char<>10 do
      begin
        if forrige=42 then
        begin
          t:=t+1;
          outchar(z2,char);
          if t mod 11=0 then
          begin
            readchar(z3,tegn);
            if tegn<>10 then
            begin
              t:=0; outchar(z2,10);
            end;
            repeatchar(z3);
          end;
        end;
        j:=j+1;
        outchar(z4,char);
      end;
      if j=0 then fejl(9);
      if forrige=42 then
      begin
        B:=B+bev*100;
        E:=E+eksbev*100;
        I:=I+(bev+eksbev)*100;
        write(z2,"sp",11-t,<< -dddddddd.dd>,bev,eksbev,bev+eksbev);
      end;
      if forrige=44 then outchar(z4,10) else
      write(z4,"nl",1,u,j,"nl",1);
test2:
      for i:=readchar(z3,char) while char=10 do;
      if  char=44 then
      begin
        repeatchar(z3);
        konto:=0;
        goto OM;
      end;
      if char=99 then
      begin
        for i:=readchar(z3,tegn) while tegn<>10 do;
        goto test2;
      end;
      repeatchar(z3);
    end else
    repeatchar(z3);
    if i<>2 then fejl(9);
    i:=readchar(z3,tegn);
    if i<>2 then fejl(9);
    repeatchar(z3);
    read(z3,konto);
    i:=readchar(z3,tegn);
    if i<>2 then fejl(9);
    repeatchar(z3);
    read(z3,a);
    i:=readchar(z3,tegn);
    if i<>2 then fejl(9);
    repeatchar(z3);
    read(z3,b);
    i:=readchar(z3,tegn);
    if i<>2 then fejl(9);
    repeatchar(z3);
    read(z3,c);
    write(z4,<<zddd>,a,<< zd>,b,<< zddddd>,c,<< zdd>,konto,"sp",2);
    j:=0;
    for i:=readchar(z3,char) while char<>10 do
    begin
      j:=j+1;
      outchar(z4,char);
    end;
    if j=0 then fejl(9);
    write(z4,"sp",22-j);
    if konto<kontonr then
    begin
      write(z4,<< -dddddddd.dd>,0,"nl",1);
      goto OM;
    end;
skrivp:
    if kontonr=8388600 then goto SLUT;
    kr:=z1(8);
    krr:=krr+kr;
    if (d and -,dd) or (d and dato(1)<=linie(17)) then
    begin
      write(z5,"nl",1,<< zdd>,linie(1),<<  zd dd dd>,linie(2),"sp",2);
      for i:=1 step 1 until 12 do
      begin
        txt(i*3):=linie(i+2) extract 8;
        txt(i*3-1):=linie(i+2) shift (-8) extract 8;
        txt(i*3-2):=linie(i+2) shift (-16) extract 8;
      end;
      for i:=1 step 1 until 36 do
      write(z5,false add txt(i),1);
      write(z5,<<  -dddddddd.dd>,kr/100,<<  zd dd dd>,linie(17));
    end;
    inrec(z1,16);
    for i:=1 step 1 until 16 do
    begin
      linie(i*2):=z1(i) extract 24;
      linie(i*2-1):=z1(i) shift (-24) extract 24;
    end;
    if kontonr=linie(1) then goto skrivp;
    kontonr:=linie(1);
    write(z4,<< -dddddddd.dd>,krr/100,"nl",1);
    sub:=sub+krr;
    krr:=0;
    goto OM;
SLUT:
    if forrige=59 then totud:=false;
    sub2:=sub2+sub;
    write(z4,"sp",43,<:-------------:>,"nl",1);
    j:=41;
    if forrige=44 then
    begin
      write(z4,"sp",27,<<-dddddddd.dd>,sub2/100);
      j:=j-39;
    end;
    write(z4,"sp",j,<<  -dddddddd.dd>,sub/100);
    if totud then
    begin
      write(z2,<< -dddddddd.dd>,sub2/100,(bev+eksbev)-(sub2/100),"nl",1);
      tot:=tot+sub;
      write(z4,<<  -dddddddd.dd>,tot/100);
    end;
    write(z4,"nl",5,"sp",55,<<  -dddddddd.dd>,tot/100,"nl",1,
    "sp",57,<:=============:>,"nl",1,
    "ff",1,false add 25,3);
    write(z2,false add 95,76,"nl",2,<:IALT:>,"sp",7,
    << -dddddddd.dd>,B/100,E/100,I/100,F/100,R/100);
    write(z2,"ff",1,false add 25,3);
    close(z2,true);
    if o1 then
    begin
      j:=10000;
      psubmit(z2);
      write(out,<:gc3out82 job nr :>,j,"nl",1);
    end;
    if d then
    begin
      write(z5,"ff",1,false add 25,3);
      close(z5,true);
      j:=10000;
      psubmit(z5);
      write(out,<:gc2out82 job nr :>,j,"nl",1);
    end;
    close(z4,true);
    if o3 then
    begin
      j:=10000;
      psubmit(z4);
      write(out,<:gc1out82 job nr :>,j);
    end;
    close(z1,true);
    goto udskrift;
  end;
  removeentry(<:gcrgn82:>);
  tail(10):=if ret or nypris then tail(10) else 0;
  changetail(ra,tail);
  write(out,<:<10>årstal=:>,
  tail(9),<: hvis intet andet er opgivet i indata<10>:>);
  tail(1):=tail(1)+25;
  if -,ret and -,nypris then
  begin
    if createentry(<:gcrgn82:>,tail)>0 then fejl(5);
    scopeuser(<:gcrgn82:>);
    open(z2,4,<:gcrgn82:>,0);
  end;
omm:
  date;
  kontonummer;
  if ret then rettelse;
  if nypris then
  begin
    pris;
    prisret;
  end;
  tekst;
  pris;
  linie(1) := kontonr;
  linie(2):=dato(3)*10000+dato(2)*100+dato(1);
  linie(17):=r;
  write(out,"nl",1,
  <:konto dag md år  ...............tekst................         kr.:>,
  "nl",1,
  << zdd>,linie(1),"sp",2,
  << zd>,dato(1),dato(2),dato(3),"sp",2);
  for i := 1 step 1 until 36 do
  write(out,false add txt(i),1);
  write(out,<<-dddddddd.dd>,kr/100);
om:
  write(out,<:<10>>:>);
  setposition(out,0,0);
  læsnl;
  for i:=readchar(in,tegn) while tegn=32 do;
  læsnl;
  if tegn=10 and nypris then goto omm;
  if tegn=115 and nypris then goto udskrift;
  if tegn=114 or (tegn=10 and ret) then goto omm;
  if tegn=115 and ret then goto udskrift;
  if fault and tegn=10 then goto omm;
  if (tegn<>115 and tegn<>10) then
  begin
    write(out,<:her kan kun tastes::>,
    <:<10>r(nl) (rettelse af post):>,
    <:<10>s(nl) (slut):>,
    <:<10>(nl)  (næste post):>);
    goto om;
  end;
  if -,fault then
  begin
    for i := 1 step 1 until 16 do
    skift(i) := 0.0 shift 24 add linie(2*i-1) shift 24 add linie(2*i);
    p:=p+1;
    outrec(z2,16);
    for i:=1 step 1 until 16 do
    z2(i):=skift(i);
    z2(8):=kr;
    tail(10):=p;
    changetail(<:gcrgn82:>,tail);
    postud(z2);
    if p=200 and tegn=10 then
    begin
      write(out,<:de 200 indtastede poster flettes nu med inputarealet:>,
      <:kald programmet igen til de næste poster:>);
      tegn:=0;
    end;
    if tegn=10 then
    goto omm;
  end;
AFSLUT:
  if ret then goto udskrift;
  open(z1,4,ra,0);
  for j:=inrec(z1,16) while
  z1(1) shift (-24) extract 24<8388600,1 do
  begin
    outrec(z2,16);
    for i:=1 step 1 until 16 do
    z2(i):=z1(i);
    p:=p+1;
  end;
  close(z1,true); close(z2,true);
  sort(<:gcrgn82:>,p,64,ia);
  tail(1):=(p-1)//8+1; tail(10):=p-1;
  changetail(<:gcrgn82:>,tail);
  removeentry(ra);
  renameentry(<:gcrgn82:>,ra);
udskrift:
  close(z3,true);
end;
▶EOF◀