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

⟦f6ebc4b26⟧ TextFile

    Length: 7584 (0x1da0)
    Types: TextFile
    Notes: Mikados_K
    Names: »RESTOVER.K«

Derivation

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

Mikados K File

PROGRAM RESTORDREOVERSIGT;
 (*$IISFHEAD*)
 VPOST=RECORD
        A       :AR;
        HELTAL:ARRAY (1..11) OF INTEGER;
 (*VARENR,LVRNDØR,OPRLAND,PAKENHED,FORVLEVU,DATSBES1,DATSBES2,DATSORD1,
   DATSORD2,DÆKGRASÅ,ANAFTILG*)
        NAVN:ARRAY (1..2) OF PACKED ARRAY(1..30) OF CHAR;
 (*VARENAVN,NAVNHOSLEVERANDØR*)
        REELTAL :ARRAY (1..15) OF REAL
 (*PRIS,KOSTPRIS,TOLDPNR,FYSLAGER,PRIMOLAG,MINLAGER,RESAFLAG,IORDRE,
   RESAFIORDRE,STASBEST,ASOLGTIÅ,ASOLGTSÅ,OMSIÅR,OMSSÅR,DÆKBIDTD*)
  END;
 OLINE = RECORD
        VNR :ARRAY (1..2) OF INTEGER;
        (*VNR,BESTILT*)
        PRIS: REAL
  END;
 ORDREPOST = RECORD
        A:AR;
 (*
        KNR1,KNR2,
        NR1,NR2,
        SIDE,
        LEVUGE,ORDREDATO1-2,LEVKODE,BETAKODE,RESTORDREKODE,RABAT*)
        HEAD :ARRAY(1..12) OF INTEGER;
        LINE:ARRAY (1..2) OF PACKED ARRAY (1..30) OF CHAR;
        ORDRELIN : ARRAY (1..15) OF OLINE
  END;
KPOST=RECORD
       A:AR;
       NR:ARRAY (1..23) OF INTEGER;
       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
END;
 VZONE= RECORD
        H:ISFHEAD;
        T:ARRAY(1..451) OF INTEGER
  END;
 ORDZONE=RECORD
        H:ISFHEAD;
        T:ARRAY(1..930) OF INTEGER
  END;
KZONE=RECORD
       H:ISFHEAD;
       T:ARRAY(1..918) OF INTEGER
END;
 RORPOST=RECORD
        A:AR;
 (*     KNR1,KNR2,
        VNR,
        DAT1,DAT2:INTEGER;*) HEAD:ARRAY(1..5) OF INTEGER;
        ANTAL:REAL
  END;
 RORZONE=RECORD
        H:ISFHEAD;
        T:ARRAY(1..327) OF INTEGER
  END;
PROCSTAT=RECORD
       NP,NROSTART:INTEGER
END;
NPFILE=FILE OF PROCSTAT;
  
VAR FVAR,FORD,FKUN,FROR:ISF;
    VZ:VZONE;
    KZ:KZONE;
    OZ:ORDZONE;
    RZ:RORZONE;
    ORDRE:ORDREPOST;
    KUNDE:KPOST;
    VARE:VPOST;
    RESTORD:RORPOST;
    FNAVN:STRING(20);
       NRPF,CF:NPFILE;
       QUQ:^INTEGER;
    IER,RIER,O1,O2,I:INTEGER;
    NRS:ARRAY (1..10) OF INTEGER;
(*$L-*)
 (*$R-,IEXCOMCOP*)
 (*$IIOPEN*)
 (*$IREADPROC*)
 (*$IFINDPOST*)
 (*$IICLOSE*)
 (*$IPUTGET*)
 (*$INEXTREC*)
 (*$R+*)
(*$L+*)
 PROCEDURE ERROR;
 BEGIN
   WRITELN('FEJL I REGISTER ',IER);
   ICLOSE(VZ.H,FVAR);
   ICLOSE(OZ.H,FORD);
   ICLOSE(KZ.H,FKUN);
   ICLOSE(RZ.H,FROR);
   WRITELN('ICLOSE ',IER);
   I:=I DIV 0
 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;
FUNCTION FOUND:BOOLEAN;
BEGIN
  I:=1;
  FOUND:=FALSE;
  REPEAT
    IF NRS(I)=RESTORD.HEAD(3) THEN
    BEGIN
      FOUND:=TRUE;
      I:=11
    END
    ELSE
    BEGIN
      I:=I+1;
      IF I<11 THEN IF NRS(I)=0 THEN I:=11
    END
  UNTIL I=11
END;
PROCEDURE DOIT;
BEGIN
          WRITELN(LIST);
          WRITELN(LIST,'ORDRER');
          ORDRE.HEAD(1):=KUNDE.NR(1);
          ORDRE.HEAD(2):=KUNDE.NR(2);
          ORDRE.HEAD(3):=0;
          ORDRE.HEAD(4):=0;
          ORDRE.HEAD(5):=0;
          NEXTREC(OZ.H,FORD,ORDRE.A);
          IF (IER<>0) AND (IER<>-1) AND (IER<>-2) AND (IER<>-9) THEN ERROR;
          IER:=0;
          WHILE (IER=0) AND (ORDRE.HEAD(1)=KUNDE.NR(1)) AND
                            (ORDRE.HEAD(2)=KUNDE.NR(2)) DO
          BEGIN
            WRITELN(LIST,ORDRE.HEAD(3)*10000.0+ORDRE.HEAD(4):10:-2);
            O1:=ORDRE.HEAD(3);O2:=ORDRE.HEAD(4);
            WHILE (IER=0) AND (O1=ORDRE.HEAD(3)) AND (O2=ORDRE.HEAD(4)) DO
                  NEXTREC(OZ.H,FORD,ORDRE.A)
          END;
          IF (IER<>0) AND (IER<>-9) AND (IER<>-2) THEN ERROR;
          IER:=0
END;
BEGIN
  FNAVN:='PROCSTAT:P2:0:I';
(*$C-*)
  REPEAT
    REWRITE(NRPF,FNAVN);
    SEEK(NRPF,1)
  UNTIL IORESULT=0;
(*$C+*)
  GET(NRPF);
  NRPF^.NP:=1;
  SEEK(NRPF,1);
  PUT(NRPF);
  REPEAT
    GOTOXY(1,20);
    WRITELN('Sæt plade 1 i drev 1 og tryk RETURN');
    READLN;
(*$C-*)
    REWRITE(CF,'C1:P1:0:J');
    SEEK(CF,1)
(*$C+*)
  UNTIL IORESULT=0;
  CLOSE(CF);
  CLOSE(NRPF);
  CLEARSCREEN;
  FNAVN:='REGVARE:P1:0000:I';
  RESET(FVAR,FNAVN);
  IOPEN(VZ.H,FVAR,LÆS);IF IER<>0 THEN OFEJL;
 
  FNAVN:='ORDRERG:P2:0000:I';
  RESET(FORD,FNAVN);
  IOPEN(OZ.H,FORD,LÆS);IF IER<>0 THEN OFEJL;
 
 
  FNAVN:='KUNDERG:P2:0000:I';
  RESET(FKUN,FNAVN);
  IOPEN(KZ.H,FKUN,LÆS);IF IER<>0 THEN OFEJL;
 
  FNAVN:='RESTREG:P2:0000:I';
  RESET(FROR,FNAVN);
  IOPEN(RZ.H,FROR,LÆS);IF IER<>0 THEN OFEJL;
    CLEARSCREEN;
    WRITELN('RESTORDREOVERSIGT, VARENR 0 FOR STOP');
    I:=1;
    REPEAT
    REPEAT
      GOTOXY(40,1);READLN;READ(NRS(I))
    UNTIL (IORESULT=0) AND ((NRS(I)=0) OR ((NRS(I)<10000) AND (NRS(I)>999)));
    IF NRS(I)=0 THEN I:=11 ELSE I:=I+1
    UNTIL I=11;
    IF NRS(1)>0 THEN
    BEGIN
      WRITELN(LIST,'RESTORDREOVERSIGT');
      I:=1;
      REPEAT
        VARE.HELTAL(1):=NRS(I);
        GETREC(VZ.H,FVAR,VARE.A);
        WRITE(LIST,'VARE',NRS(I):6,' ':4);
        IF IER=-6 THEN WRITELN(LIST,'FINDES IKKE')
        ELSE
        BEGIN
          IF IER<>0 THEN ERROR;
          WRITELN(LIST,VARE.NAVN(1))
        END;
        I:=I+1;
        IF I<11 THEN IF NRS(I)=0 THEN I:=11
      UNTIL I=11;
      RESTORD.HEAD(1):=0;
      RESTORD.HEAD(2):=0;
      RESTORD.HEAD(3):=0;
      NEXTREC(RZ.H,FROR,RESTORD.A);
      IF (IER=-1) OR (IER=-2) OR (IER=-9) THEN IER:=0 ELSE ERROR;
      WRITELN(LIST);
      REPEAT
        WHILE (IER=0) AND (NOT FOUND) DO
              NEXTREC(RZ.H,FROR,RESTORD.A);
        RIER:=IER;
        IF (IER=0) OR (IER=-2) OR (IER=-9) THEN IER:=0 ELSE ERROR;
        IF FOUND AND (RIER<>-2) THEN
        BEGIN
        RESTORD.HEAD(3):=0;
        NEXTREC(RZ.H,FROR,RESTORD.A);
        IF (IER<>0) AND (IER<>-1) THEN ERROR;
        KUNDE.NR(1):=RESTORD.HEAD(1);
        KUNDE.NR(2):=RESTORD.HEAD(2);
        GETREC(KZ.H,FKUN,KUNDE.A);
        WRITE(LIST,'KUNDE',KUNDE.NR(1)*10000.0+KUNDE.NR(2):10:-2,' ':4);
        IF IER=-6 THEN WRITELN(LIST,'FINDES IKKE')
        ELSE
        BEGIN
          IF IER<>0 THEN ERROR;
          WRITELN(LIST,KUNDE.NAVN(1));
          WRITELN(LIST);
          WRITELN(LIST,'RESTORDRER');
          REPEAT
            WRITELN(LIST,RESTORD.HEAD(3):6,' ':10,RESTORD.ANTAL:12:-2);
            NEXTREC(RZ.H,FROR,RESTORD.A)
          UNTIL (IER<>0) OR (RESTORD.HEAD(1)<>KUNDE.NR(1)) OR
                            (RESTORD.HEAD(2)<>KUNDE.NR(2));
          RIER:=IER;
          IF (IER<>0) AND (IER<>-2) AND (IER<>-9) THEN ERROR;
          DOIT
        END
        END;
        WRITELN(LIST)
      UNTIL RIER<>0;
      IF RIER<>-2 THEN ERROR
    END;
     ICLOSE(VZ.H,FVAR);
     ICLOSE(OZ.H,FORD);
     ICLOSE(KZ.H,FKUN);
     ICLOSE(RZ.H,FROR);
     CHAIN('INTRE   *1','HOVSA:P1',QUQ)
END.

Full view