DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

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

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦44b270052⟧ TextFile

    Length: 20224 (0x4f00)
    Types: TextFile
    Notes: Mikados_K
    Names: »KASSERAP.K«

Derivation

└─⟦eb89399bc⟧ Bits:30008990 SOM ISFORIG, MEN KUN K-FILER
    └─⟦this⟧ »KASSERAP.K« 

Mikados K File

PROGRAM KASSENSRAPPORT;
(*$IISFHEAD*)
 KPOST=RECORD
        A:AR;
        NR:ARRAY (1..23) OF INTEGER;
 (*KNR1,KNR2,ANDBETADR,KÆDENR1,KÆDENR2,RESTORDRE,LAND,BETAKODE,LEVKODE,
   RENTKODE,KREDDAGE,ANTFAKT,SIDFAKD1,SIDFAKD2,EMBALLAGE,BRÆKAGE,RABAT,
   EXPORT,RFSALDO,PERTRENT,NPOSTNR1,NPOSTNR2*)
     (* NAVN,UDVNAVN,LEVADR*)NAVN:ARRAY(1..3) OF PACKED ARRAY (1..30) OF CHAR;
        LANDSBY:PACKED ARRAY (1..20) OF CHAR;
        POSTNR:PACKED ARRAY (1..25) OF CHAR;
        TLF:PACKED ARRAY (1..10) OF CHAR;
        SALDOKØB :ARRAY (1..9) OF REAL;
 (*SALDO1-6,ÅRKØB,MÅNKØB,SIDÅRKØB*)
  END;
 KUNDZONE=RECORD
        H:ISFHEAD;
        T:ARRAY(1..918) OF INTEGER
  END;
 SYSPOST=RECORD
       HELTAL:ARRAY(1..24) OF INTEGER;
       KBG:ARRAY(1..5) OF REAL;
       BETADAT:PACKED ARRAY (1..13) OF CHAR;
       KODE:ARRAY(1..2) OF PACKED ARRAY (1..10) OF CHAR
 END;
 SYSFILE=FILE OF SYSPOST;
KASSRAPPPOST=RECORD
       KONTONR1,KONTONR2,
       DATO1,DATO2,
       TEKSTKODE,
       BILAG1,BILAG2,
       KGB                     :INTEGER;
       BELØB                   :REAL
END;
KASSFIL=FILE OF KASSRAPPPOST;
VAR    DIFF            :BOOLEAN;
       QUQ             :^INTEGER;
       F               :ISF;
       KZ              :KUNDZONE;
       KNAVN           :STRING(4);
       KUNDE           :KPOST;
       SYSFIL          :SYSFILE;
       B,R,R1,R2,DIFFE :REAL;
       BILNR1,BILNR2,
       DAT1,DAT2,
       POSTNR,
       LINENR,LINIENR,
       JOURNR,
       I,J,OPL,IER,
       KASSSID,KASSNR  :INTEGER;
       FIL             :STRING(20);
       LINE            :ARRAY (1..18) OF KASSRAPPPOST;
       DEBET,DEBET1    :ARRAY (1..10) OF REAL;
       KONTO           :ARRAY (1..5) OF PACKED ARRAY (1..5) OF CHAR;
       JOURFILE,
       KASSFILE        :KASSFIL;
       TEKST           :ARRAY (1..10) OF PACKED ARRAY (1..15) OF CHAR;
       CH              :CHAR;
 
(*$L-*)
(*$R-,IEXCOMCOP*)
(*$IIOPEN*)
(*$IREADPROC*)
(*$IFINDPOST*)
(*$IICLOSE*)
(*$IPUTGET*)
(*$INEXTREC*)
(*$R+*)
(*$L+*)
PROCEDURE STOP;
VAR I:INTEGER;
BEGIN I:=I DIV 0 END;
PROCEDURE ERROR;
BEGIN
  WRITELN('FEJL I KUNDEREG ',IER);
  ICLOSE(KZ.H,F);
  WRITELN('ICLOSE ',IER);
  STOP
END;
PROCEDURE OFEJL;
BEGIN
  GOTOXY(1,20);
  WRITELN('REGISTERFEJL ',IER,' . SITUATIONEN ER FORSØGT REDDET.');
  WRITELN('TAST 0, HVIS DER SKAL FORTSÆTTES');
  REPEAT GOTOXY(40,21);READLN;READ(I) UNTIL IORESULT=0;
  IF I<>0 THEN ERROR;
  CLEARSCREEN
END;
PROCEDURE NANU(VAR T:STRING;VAR NU1,NU2 :INTEGER);
VAR I:INTEGER;
    R:REAL;
BEGIN
  R:=0.0;
  FOR I:=1 TO 4 DO R:=R*29+ORD(T(I));
  I:=TRUNC(R/89998.0);
  R:=R-I*89998.0+10001;
  NU1:=TRUNC(R/10000);
  NU2:=TRUNC(R-NU1*10000.0)
END;
PROCEDURE FINDKUND;
VAR    I,N1,N2,FIN:INTEGER;
       SVAR1:CHAR;
       R1,R2:REAL;
BEGIN
  REPEAT
    I:=1;
    SVAR1:='N';
    GOTOXY(1,23);
    IF LINE(LINENR).TEKSTKODE=4 THEN
    WRITELN('Debetkonto         0 for søgning med navn',' ':36)
    ELSE
    WRITELN('Kreditkonto        0 for søgning med navn',' ':36);
    REPEAT
      R:=-1.0;
      GOTOXY(13,23);
      READLN;IF NOT EOLN THEN READ(R)
    UNTIL (IORESULT=0) AND (R>=0.0) AND (R<100000.0);
    IF (R=1.0) OR (R=2.0) OR (R=3.0) OR (R=4.0) OR (R=5.0) THEN
    WITH LINE(LINENR) DO
    BEGIN
      IF TEKSTKODE=4 THEN
      BEGIN
        KGB:=TRUNC(R);
        CASE KGB OF
          1,2,3:TEKSTKODE:=3;
          4    :TEKSTKODE:=5;
          5    :TEKSTKODE:=7
        END;
        GOTOXY(38,LINENR+1);
        WRITELN(' ':5,KONTO(KGB))
      END
      ELSE
      BEGIN
        KONTONR1:=0;
        KONTONR2:=TRUNC(R);
        TEKSTKODE:=8;
        GOTOXY(11,LINENR+1);WRITELN(TEKST(TEKSTKODE));
        GOTOXY(65,LINENR+1);WRITELN(KONTO(KONTONR2))
      END;
      EXIT(FINDKUND)
    END;
    REPEAT
      IF R=0.0 THEN
        IF I=1 THEN
        BEGIN
          GOTOXY(1,23);
          WRITELN('INDTAST KUNDENAVN',' ':60);
          REPEAT
          GOTOXY(20,23);
          READLN;IF NOT EOLN THEN READ(KNAVN)
          UNTIL LENGTH(KNAVN)=4;
          NANU(KNAVN,N1,N2);
          KUNDE.NR(1):=N1;
          KUNDE.NR(2):=N2;
          R1:=N1*10000.0+N2;
          GETREC(KZ.H,F,KUNDE.A);
          IF IER=-6 THEN NEXTREC(KZ.H,F,KUNDE.A);
          IF (IER=-9) OR (IER=-2) OR (IER=-1) THEN IER:=0;
          I:=0
        END
        ELSE
        BEGIN
          NEXTREC(KZ.H,F,KUNDE.A);
          IF (IER=-9) OR (IER=-2) OR (IER=-1) THEN IER:=0;
          R2:=KUNDE.NR(1)*10000.0+KUNDE.NR(2);
          IF (R2-R1>SYSFIL^.HELTAL(4)) OR (R2<R1) THEN IER:=-6;
        END
      ELSE
      BEGIN
        KUNDE.NR(1):=TRUNC(R/10000.0);
        KUNDE.NR(2):=TRUNC(R-KUNDE.NR(1)*10000.0);
        GETREC(KZ.H,F,KUNDE.A)
      END;
      GOTOXY(1,23);
      FIN:=1;
      IF IER=0 THEN
      BEGIN
        WRITE(KUNDE.NR(1)*10000.0+KUNDE.NR(2):8:-2,'  ');
        WRITE(KUNDE.NAVN(1));
        WRITELN('  ',KUNDE.NAVN(3));
        GOTOXY(1,22);WRITELN('RIGTIG KUNDE (J/N)',' ':59);
        REPEAT  GOTOXY(20,22);READLN;GOTOXY(7,22);WRITELN;
                IF EOLN THEN SETIORESULT(-1) ELSE
                READ(SVAR1) UNTIL (IORESULT=0) AND
                ((SVAR1='J') OR (SVAR1='N') OR (SVAR1='n') OR (SVAR1='j'));
        IF ((SVAR1='N') OR (SVAR1='n')) AND (R=0.0) THEN FIN:=0;
        GOTOXY(1,22);WRITELN(' ':77)
      END
      ELSE
      IF IER=-6 THEN
      BEGIN
        IER:=0;
        WRITELN('KUNDEN EKSISTERER IKKE, TRYK RETURN',' ':42);
        GOTOXY(40,23);
        READLN
      END
      ELSE ERROR
    UNTIL FIN=1
  UNTIL (SVAR1='J') OR (SVAR1='j');
  LINE(LINENR).KONTONR1:=KUNDE.NR(1);
  LINE(LINENR).KONTONR2:=KUNDE.NR(2);
  IF LINE(LINENR).TEKSTKODE=4 THEN
    GOTOXY(38,LINENR+1)
  ELSE
  BEGIN
    GOTOXY(11,LINENR+1);
    WRITE(TEKST(LINE(LINENR).TEKSTKODE));
    GOTOXY(60,LINENR+1);
  END;
  WRITELN(LINE(LINENR).KONTONR1*10000.0+LINE(LINENR).KONTONR2:10:-2);
  
END;
PROCEDURE PRLINE;
BEGIN
  WITH LINE(LINENR) DO
  BEGIN
    GOTOXY(1,LINENR+1);
    WRITE(LINENR:5,' ':5,TEKST(TEKSTKODE),BILAG1*10000.0+
                                            BILAG2:12:-2);
    CASE TEKSTKODE OF
4,6,9: BEGIN
      WRITELN(KONTONR1*10000.0+KONTONR2:10:-2,BELØB/100:12:2,
                                             ' ':5,KONTO(KGB));
      DEBET(5+KGB):=DEBET(5+KGB)-BELØB
    END;
3,5,7:  BEGIN
      WRITELN(' ':5,KONTO(KGB),BELØB/100:12:2,KONTONR1*10000.0+
                                              KONTONR2:10:-2);
      DEBET(KGB):=DEBET(KGB)+BELØB
    END;
8:  BEGIN
      WRITELN(' ':5,KONTO(KGB),BELØB/100:12:2,' ':5,KONTO(KONTONR2));
      DEBET(KGB):=DEBET(KGB)+BELØB;
      DEBET(5+KONTONR2):=DEBET(5+KONTONR2)-BELØB
    END;
    END;
  END
END;
PROCEDURE KASSERAPPORT;
VAR I:INTEGER;
BEGIN
  FOR I:=1 TO 10 DO DEBET(I):=0;
  FIL:='JOURKASS:P1:30:I';
  REWRITE(JOURFILE,FIL);
  SEEK(JOURFILE,JOURNR);
  SEEK(KASSFILE,1);
  LINIENR:=1;
  WHILE LINIENR<KASSNR DO
  BEGIN
    IF LINIENR MOD 60=1 THEN
    BEGIN
      IF LINIENR>1 THEN FOR I:=1 TO 8 DO WRITELN(LIST);
      WRITELN(LIST,'K A S S E R A P P O R T',' ':49,KASSSID:5);
      WRITELN(LIST);
      WRITELN(LIST,'Linie',' ':5,'Tekst',' ':17,'Bilag',' ':5,'Debet',' ':7,
                   'Beløb',' ':4,'Kredit',SYSFIL^.HELTAL(1)*10000.0+
                   SYSFIL^.HELTAL(2):8:-2);
      WRITELN(LIST);
      KASSSID:=KASSSID+1
    END;
    GET(KASSFILE);
    WITH KASSFILE^ DO
    BEGIN
      WRITE(LIST,LINIENR:5,' ':5,TEKST(TEKSTKODE),BILAG1*10000.0+
                                                  BILAG2:12:-2);
      CASE TEKSTKODE OF
4,6,9:BEGIN
        WRITELN(LIST,KONTONR1*10000.0+KONTONR2:10:-2,BELØB/100:12:2,
                     ' ':4,KONTO(KGB),DATO1*10000.0+DATO2:9:-2);
        JOURFILE^:=KASSFILE^;
        PUT(JOURFILE);
        DEBET(5+KGB):=DEBET(5+KGB)-BELØB;
        JOURNR:=JOURNR+1
      END;
3,5,7:BEGIN
        WRITELN(LIST,' ':5,KONTO(KGB),BELØB/100:12:2,KONTONR1*10000.0+
                     KONTONR2:9:-2,DATO1*10000.0+DATO2:9:-2);
        DEBET(KGB):=DEBET(KGB)+BELØB;
        BELØB:=-BELØB;
        JOURFILE^:=KASSFILE^;
        PUT(JOURFILE);
        JOURNR:=JOURNR+1
      END;
8:    BEGIN
        WRITELN(LIST,' ':5,KONTO(KGB),BELØB/100:12:2,' ':4,KONTO(KONTONR2),
                     DATO1*10000.0+DATO2:9:-2);
        DEBET(KGB):=DEBET(KGB)+BELØB;
        DEBET(5+KONTONR2):=DEBET(5+KONTONR2)-BELØB
      END;
      END;
    END;
    LINIENR:=LINIENR+1
  END;
  DIFFE:=0;
  FOR I:=1 TO 5 DO
  BEGIN
    WRITELN(LIST,LINIENR:5,' ':5,KONTO(I),KASSSID-1:22,' ':10,
                                         (DEBET(I)+DEBET(I+5))/100:12:2);
    WITH JOURFILE^ DO
    BEGIN
      KONTONR1:=0;
      KONTONR2:=I;
      DATO1:=DAT1;DATO2:=DAT2;
      TEKSTKODE:=0;
      BILAG1:=0;BILAG2:=KASSSID-1;
      KGB:=I;
      BELØB:=DEBET(I)+DEBET(I+5);
      DIFFE:=DIFFE+DEBET(I)+DEBET(I+5)-DEBET1(I)-DEBET1(I+5);
      DEBET(I):=0.0;DEBET(I+5):=0.0;
      DEBET1(I):=0.0;DEBET1(I+5):=0.0
    END;
    PUT(JOURFILE);
    JOURNR:=JOURNR+1;
    LINIENR:=LINIENR+1
  END;
  WRITELN(LIST);
  WRITELN(LIST,'Difference',' ':37,DIFFE/100:12:2);
  CLOSE(JOURFILE);
  FIL:='SYSREG:P2:0:I';
  REWRITE(SYSFIL,FIL);
  SEEK(SYSFIL,1);
  KASSNR:=1;
  SYSFIL^.HELTAL(15):=KASSNR;
  SYSFIL^.HELTAL(16):=JOURNR;
  SYSFIL^.HELTAL(17):=KASSSID;
  SYSFIL^.HELTAL(11):=BILNR1;
  SYSFIL^.HELTAL(12):=BILNR2;
  SEEK(SYSFIL,1);
  PUT(SYSFIL);
  CLOSE(SYSFIL)
END;
PROCEDURE DATO;
VAR R:REAL;
BEGIN
  REPEAT
    GOTOXY(72,1);READLN;IF EOLN THEN SETIORESULT(-1) ELSE READ(R)
  UNTIL (IORESULT=0) AND (R>800000.0) AND (R<900000.0);
  DAT1:=TRUNC(R/10000.0);
  DAT2:=TRUNC(R-DAT1*10000.0)
END;
PROCEDURE LÆSOPL;
VAR    R:REAL;
       I,J:INTEGER;
BEGIN
  J:=(OPL-1) MOD 5+1;I:=OPL DIV 6*29 +17;
  REPEAT
    GOTOXY(I,J);READLN;IF EOLN THEN SETIORESULT(-1) ELSE READ(R)
  UNTIL (IORESULT=0) AND (R<100000000.0) AND (R>=0.0);
  IF OPL>5 THEN R:=-R;
  DEBET1(OPL):=R*100
END;
PROCEDURE SKRIVDIFF;
VAR    I:INTEGER;
BEGIN
  GOTOXY(1,7);WRITELN('Differencer');
  DIFF:=FALSE;
  FOR I:=1 TO 10 DO
  BEGIN
    GOTOXY(I DIV 6*29+1,(I-1) MOD 5+8);
    WRITE(' ':2,KONTO((I-1) MOD 5+1),' ');
    IF I<6 THEN WRITE('Debet ') ELSE WRITE('Kredit');
    WRITELN((DEBET(I)-DEBET1(I))/100:12:2);
    IF DEBET(I)-DEBET1(I)<>0.0 THEN DIFF:=TRUE
  END
END;
PROCEDURE SKRIVDK;
VAR    I:INTEGER;
BEGIN
  CLEARSCREEN;
  FOR I:=1 TO 10 DO
  BEGIN
    GOTOXY(I DIV 6*29+1,(I-1) MOD 5+1);
    WRITE(I:2,' ',KONTO((I-1) MOD 5+1),' ');
    IF I<6 THEN WRITE('Debet ')
       ELSE WRITE('Kredit');
    WRITELN(DEBET1(I)/100:12:2)
  END
END;
PROCEDURE INDSIDE;
VAR    I:INTEGER;
BEGIN
  CLEARSCREEN;
  WRITELN('Linie',' ':5,'Tekst',' ':17,'Bilag',' ':5,'Debet',' ':7,'Beløb',
          ' ':4,'Kredit',DAT1*10000.0+DAT2:8:-2);
  SEEK(KASSFILE,POSTNR);
  FOR I:=1 TO 18 DO
  IF POSTNR<KASSNR THEN
  BEGIN
    GET(KASSFILE);
    LINE(I):=KASSFILE^;
    POSTNR:=POSTNR+1;
    LINIENR:=LINIENR+1;
    PRLINE;
    LINENR:=LINIENR;
  END
  ELSE
    I:=18
END;
PROCEDURE ANNUL;
VAR    I:INTEGER;
BEGIN
  IF (LINENR>1) AND (LINIENR=0) THEN
  BEGIN
    LINENR:=LINENR-1;
    GOTOXY(1,LINENR+1);WRITELN(' ':77);
    BILNR2:=BILNR2-1;
    IF BILNR2=-1 THEN
    BEGIN
      BILNR1:=BILNR1-1;
      BILNR2:=9999;
    END;
    IF (LINE(LINENR).BILAG1<>BILNR1) OR (LINE(LINENR).BILAG2<>BILNR2) THEN
    BEGIN
      BILNR2:=BILNR2+1;
      IF BILNR2=10000 THEN
      BEGIN
        BILNR1:=BILNR1+1;
        BILNR2:=0
      END
    END;
    WITH LINE(LINENR) DO
    CASE TEKSTKODE OF
    4,6,9: DEBET(5+KGB):=DEBET(5+KGB)+BELØB;
    3,5,7: DEBET(KGB):=DEBET(KGB)-BELØB;
        8: BEGIN
             DEBET(KGB):=DEBET(KGB)-BELØB;
             DEBET(5+KONTONR2):=DEBET(5+KONTONR2)+BELØB
           END
    END;
  END;
  B:=-1
END;
PROCEDURE INBILAG;
BEGIN
  GOTOXY(1,22);
  WRITELN(' ':77);
  GOTOXY(1,23);
  WRITELN('Bilag 1           (0:færdig, 1:automatisk, D:dato-ændring',
                                              ', A:annuller sidste)');
  REPEAT
    GOTOXY(7,23);READLN;GOTOXY(70,23);WRITELN;
    IF EOLN THEN B:=1
    ELSE
    IF (INPUT^='D') OR (INPUT^='d') THEN
    BEGIN
      DATO;
      B:=-1
    END
    ELSE
    IF (INPUT^='A') OR (INPUT^='a') THEN ANNUL ELSE READ(B)
  UNTIL (IORESULT=0) AND (B>=0.0) AND (B<100000000.0);
  IF B>0 THEN
  BEGIN
    IF B=1 THEN
    BEGIN
      LINE(LINENR).BILAG1:=BILNR1;
      LINE(LINENR).BILAG2:=BILNR2;
      BILNR2:=BILNR2+1;
      IF BILNR2=10000 THEN
      BEGIN
        BILNR1:=BILNR1+1;
        BILNR2:=0
      END
    END
    ELSE
    BEGIN
      LINE(LINENR).BILAG1:=TRUNC(B/10000.0);
      LINE(LINENR).BILAG2:=TRUNC(B-LINE(LINENR).BILAG1*10000.0)
    END;
    GOTOXY(26,LINENR+1);
    WRITELN(LINE(LINENR).BILAG1*10000.0+LINE(LINENR).BILAG2:12:-2)
  END
END;
PROCEDURE INDBELØB;
VAR    R:REAL;
BEGIN
  GOTOXY(1,23);
  WRITELN('Beløb',' ':72);
  REPEAT
    GOTOXY(7,23);READLN;IF EOLN THEN SETIORESULT(-1) ELSE READ(R)
  UNTIL (IORESULT=0) AND (R<100000000.0) AND (R>=0.0);
  GOTOXY(48,LINENR+1);
  WRITELN(R:12:2);
  LINE(LINENR).BELØB:=100*R
END;
PROCEDURE INDKGB;
VAR    I:INTEGER;
BEGIN
  IF LINE(LINENR).TEKSTKODE<>4 THEN FINDKUND
  ELSE
  BEGIN
  GOTOXY(1,23);
  WRITELN('Kredit      (1:Kasse, 2:Bank, 3:Giro, 4:Rabat, 5:Rente)',' ':22);
  REPEAT
    GOTOXY(8,23);READLN;IF EOLN THEN SETIORESULT(-1) ELSE READ(I)
  UNTIL (IORESULT=0) AND (I>0) AND (I<6);
  CASE I OF
  1,2,3:LINE(LINENR).TEKSTKODE:=4;
  4    :LINE(LINENR).TEKSTKODE:=6;
  5    :LINE(LINENR).TEKSTKODE:=9
  END;
  GOTOXY(11,LINENR+1);
  WRITE(TEKST(LINE(LINENR).TEKSTKODE));
  GOTOXY(60,LINENR+1);
  WRITELN(' ':5,KONTO(I));
  LINE(LINENR).KGB:=I
  END
END;
PROCEDURE INLINE;
BEGIN
  LINENR:=1;
  CLEARSCREEN;
  WRITELN('Linie',' ':5,'Tekst',' ':17,'Bilag',' ':5,'Debet',' ':7,'Beløb',
          ' ':4,'Kredit',DAT1*10000.0+DAT2:8:-2);
  INBILAG;
  WHILE (B>0.0) AND (LINENR<19) DO
  WITH LINE(LINENR) DO
  BEGIN
    GOTOXY(1,LINENR+1);WRITELN(LINENR:5);
    LINE(LINENR).TEKSTKODE:=4;
    FINDKUND;
    INDBELØB;
    INDKGB;
    PRLINE;
    DATO1:=DAT1;DATO2:=DAT2;
    LINENR:=LINENR+1;
    IF LINENR<19 THEN
    INBILAG
  END;
  LINENR:=LINENR-1;
  IF LINENR>0 THEN
  FOR J:=1 TO LINENR DO
  BEGIN
    KASSFILE^:=LINE(J);
    PUT(KASSFILE);
    KASSNR:=KASSNR+1
  END
END;
PROCEDURE AFSTEM;
VAR    I,J:INTEGER;
BEGIN
  SKRIVDK;
  FOR OPL:=1 TO 10 DO LÆSOPL;
  SKRIVDK;
  SKRIVDIFF;
  WHILE DIFF DO
  BEGIN
    GOTOXY(1,23);
    WRITELN('Ændring i      (1-10, 0 for posteringer)',' ':37);
    REPEAT
      GOTOXY(11,23);READLN;IF EOLN THEN SETIORESULT(-1) ELSE READ(OPL)
    UNTIL (IORESULT=0) AND (OPL>-1) AND (OPL<11);
    IF OPL>0 THEN LÆSOPL
    ELSE
    BEGIN
      FOR I:=1 TO 10 DO DEBET(I):=0.0;
      POSTNR:=1;
      REPEAT
        LINIENR:=1;LINENR:=1;
        INDSIDE;
        REPEAT
          GOTOXY(1,23);
          IF POSTNR<KASSNR THEN
            WRITELN('Linienr         0 for ny side',' ':48)
          ELSE
            WRITELN('Linienr         0 for færdig',' ':49);
          REPEAT
            GOTOXY(9,23);READLN;if eoln then setioresult(-1) else READ(I)
          UNTIL (IORESULT=0) AND (I>-1) AND (I<LINIENR);
          IF I>0 THEN
          BEGIN
            LINENR:=I;
            WITH LINE(LINENR) DO
            CASE TEKSTKODE OF
       4,6,9:  DEBET(5+KGB):=DEBET(5+KGB)+BELØB;
       3,5,7:  DEBET(KGB):=DEBET(KGB)-BELØB;
       8:      BEGIN
                 DEBET(KGB):=DEBET(KGB)-BELØB;
                 DEBET(5+KONTONR2):=DEBET(5+KONTONR2)+BELØB
               END
            END;
            REPEAT
              GOTOXY(1,23);
              WRITELN('Ændring af      0:færdig, 1:bilag, 2:konti, 3:beløb',
                      ' ':28);
              REPEAT
               GOTOXY(12,23);READLN;IF EOLN THEN SETIORESULT(-1) ELSE READ(J)
              UNTIL (IORESULT=0) AND (J>-1) AND (J<4);
              IF J>0 THEN
              WITH LINE(LINENR) DO
              BEGIN
                CASE J OF
               1: INBILAG;
               2: BEGIN LINE(LINENR).TEKSTKODE:=4; FINDKUND; INDKGB END;
               3: INDBELØB
                END;
              END
            UNTIL J=0;
            PRLINE;
            SEEK(KASSFILE,POSTNR-LINIENR+LINENR);
            KASSFILE^:=LINE(LINENR);
            PUT(KASSFILE)
          END
        UNTIL I=0
      UNTIL POSTNR=KASSNR;
      REPEAT
        GOTOXY(1,23);
        WRITELN('Flere linier   J/N',' ':59);
        REPEAT
          GOTOXY(20,23);READLN;GOTOXY(6,23);WRITELN;
          IF EOLN THEN SETIORESULT(-1) ELSE READ(CH)
        UNTIL (IORESULT=0) AND ((CH='J') OR (CH='N') OR (CH='j') OR(CH='n'));
        IF (CH='J') OR (CH='j') THEN INLINE
      UNTIL (CH='N') OR (CH='n');
    END;
    SKRIVDK;
    SKRIVDIFF
  END;
  KASSERAPPORT
END;
BEGIN
  FIL:='KUNDERG:P2:0000:I';
  RESET(F,FIL);
  IOPEN(KZ.H,F,LÆS);IF IER<>0 THEN OFEJL;
  FIL:='KASSRAPP:P1:20:I';
  REWRITE(KASSFILE,FIL);
 
  FIL:='SYSREG:P2:0:I';
  RESET(SYSFIL,FIL);
  SEEK(SYSFIL,1);
  GET(SYSFIL);
  CLOSE(SYSFIL);
  KASSNR:=SYSFIL^.HELTAL(15);
  JOURNR:=SYSFIL^.HELTAL(16);
  KASSSID:=SYSFIL^.HELTAL(17);
  DAT1:=SYSFIL^.HELTAL(1);
  DAT2:=SYSFIL^.HELTAL(2);
  BILNR1:=SYSFIL^.HELTAL(11);
  BILNR2:=SYSFIL^.HELTAL(12);
 
  KONTO(1):='Kasse';
  KONTO(2):='Bank ';
  KONTO(3):='Giro ';
  KONTO(4):='Rabat';
  KONTO(5):='Rente';
  B:=0.0;
  TEKST(3):='Indbetaling    ';
  TEKST(4):='Udbetaling     ';
  TEKST(5):='Kasserabat     ';
  TEKST(6):='Rabat-rettelse ';
  TEKST(7):='Rente-rettelse ';
  TEKST(8):='Overførsel     ';
  TEKST(9):='Rentenota      ';
  IF KASSNR>1 THEN
  BEGIN
    SEEK(KASSFILE,KASSNR);
    FOR I:=1 TO 10 DO
    BEGIN
      GET(KASSFILE);
      DEBET1(I):=0.0;
      DEBET(I):=KASSFILE^.BELØB
    END;
    CLEARSCREEN;
    WRITELN('Sidste kasserapport ikke afstemt, ønskes afstemning (J/N)');
                                                                       
    REPEAT
      GOTOXY(59,1);READLN;READ(CH)
    UNTIL (IORESULT=0) AND ((CH='N') OR (CH='J') OR (CH='n') OR (CH='j'));
    IF (CH='J') OR (CH='j') THEN AFSTEM
  END
  ELSE
    FOR I:=1 TO 10 DO DEBET(I):=0.0;
 
  LINIENR:=0;
  FOR I:=1 TO 10 DO DEBET1(I):=0.0;
  SEEK(KASSFILE,KASSNR);
  REPEAT
    INLINE;
    IF (B>0) OR (KASSNR=1) THEN LINENR:=1
    ELSE
    BEGIN
      GOTOXY(1,23);WRITELN('Ønskes afstemning (J/N)',' ':54);
      REPEAT
        GOTOXY(25,23);READLN;READ(CH)
      UNTIL (IORESULT=0) AND ((CH='J') OR (CH='N') OR (CH='j') OR (CH='n'));
      IF (CH='J') OR (CH='j') THEN AFSTEM
      ELSE
      FOR I:=1 TO 10 DO
      WITH KASSFILE^ DO
      BEGIN
        BELØB:=DEBET(I);
        PUT(KASSFILE)
      END
    END
  UNTIL B=0;
  IF KASSNR>1 THEN
  BEGIN
    REWRITE(SYSFIL,FIL);
    SEEK(SYSFIL,1);
    SYSFIL^.HELTAL(15):=KASSNR;
    SYSFIL^.HELTAL(11):=BILNR1;
    SYSFIL^.HELTAL(12):=BILNR2;
    PUT(SYSFIL);
    CLOSE(SYSFIL)
  END;
  ICLOSE(KZ.H,F);
  CHAIN('INTRE   *1','HOVSA:P1',QUQ)
END.

Full view