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

⟦aba6c0d9a⟧ TextFile

    Length: 28128 (0x6de0)
    Types: TextFile
    Notes: Mikados_K
    Names: »2EDITFIL.K«

Derivation

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

Mikados K File

PROGRAM TOLDSORT;
CONST TOPMARG=11; LMARG=9; DK=8;
 (*$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;
 PLUOLINE = RECORD
        VNR :ARRAY (1..3) OF INTEGER;
        (*VNR,LEVERET,BESTILT*)
        PRIS: REAL
  END;
FAKPOST= RECORD
       FORSEND:INTEGER;
       EMBAL,FRAGT:REAL;
       HEAD:ARRAY (1..12) OF INTEGER;
       LINE:ARRAY (1..2) OF PACKED ARRAY (1..30) OF CHAR;
       DITTO:ARRAY (1..2) OF PACKED ARRAY (1..20) OF CHAR;
       TRANSPORTØR,AKOLLI:PACKED ARRAY (1..30) OF CHAR;
       KODE8,KODE9,BRUTTOVÆGT:INTEGER;
       ORDRELIN: ARRAY(1..15) OF PLUOLINE
END;
FAKFILE=FILE OF FAKPOST;
 VZONE= RECORD
        H:ISFHEAD;
        T:ARRAY(1..451) OF INTEGER
  END;
  
TOLDLINE=RECORD
       TOLDPNR:REAL;
       OPRLAND:INTEGER;
       PLUOLIN:PLUOLINE
END;
 VAR    FVAR           : ISF;
        SEXPFIL,EXPFIL :FAKFILE;
        VZ:VZONE;
        VARE:VPOST;
        FNAVN:STRING(20);
        TOLDORDR:ARRAY (1..60) OF TOLDLINE;
        TOLDLIN:TOLDLINE;
        IER,I,J,K,L
                        :INTEGER;
        QUQ:^INTEGER;
(*$L-*)
 (*$R-,IEXCOMCOP*)
 (*$IIOPEN*)
 (*$IREADPROC*)
 (*$IFINDPOST*)
 (*$IICLOSE*)
 (*$IPUTGET*)
 (*$R+,L+*)
 PROCEDURE ERROR;
 BEGIN
   WRITELN('FEJL I REGISTER ',IER);
   ICLOSE(VZ.H,FVAR);
   WRITELN('ICLOSE ',IER);
   I:=I DIV 0
 END;
BEGIN
  FNAVN:='REGVARE:P1:0000:I';
  REWRITE(FVAR,FNAVN);
  IOPEN(VZ.H,FVAR,SKRIV);IF IER<>0 THEN ERROR;
 
 
  FNAVN:='EXPREG:P2:30:I';
  REWRITE(EXPFIL,FNAVN);
 
  FNAVN:='SEXPREG:P2:30:I';
  REWRITE(SEXPFIL,FNAVN);
 
  GET(EXPFIL);
  WHILE (EXPFIL^.HEAD(1)<>0) OR (EXPFIL^.HEAD(2)<>0) DO
  BEGIN
    J:=1;
    REPEAT
      FOR I:=1 TO 15 DO
      WITH EXPFIL^.ORDRELIN(I) DO
      IF VNR(1)>1 THEN
      BEGIN
        VARE.HELTAL(1):=VNR(1);
        GETREC(VZ.H,FVAR,VARE.A);
        IF (IER<>0) AND (IER<>-6) THEN ERROR;
        WITH TOLDORDR(J) DO
        BEGIN
          TOLDPNR:=VARE.REELTAL(3);
          OPRLAND:=VARE.HELTAL(3);
          PLUOLIN:=EXPFIL^.ORDRELIN(I)
        END;
        J:=J+1
      END;
      IF EXPFIL^.HEAD(5)<>99 THEN GET(EXPFIL) ELSE I:=0
    UNTIL I=0;
    J:=J-1;
    IF J>60 THEN ERROR;
    FOR I:=1 TO J DO
    BEGIN
      K:=I;
      FOR L:=I+1 TO J DO
        IF (TOLDORDR(L).TOLDPNR<TOLDORDR(K).TOLDPNR) OR
          ((TOLDORDR(L).TOLDPNR=TOLDORDR(K).TOLDPNR) AND
           (TOLDORDR(L).OPRLAND<TOLDORDR(K).OPRLAND)) THEN K:=L;
      IF K<>I THEN
      BEGIN
        TOLDLIN:=TOLDORDR(I);
        TOLDORDR(I):=TOLDORDR(K);
        TOLDORDR(K):=TOLDLIN
      END
    END;
    FOR I:=1 TO J DO
    BEGIN
      IF I MOD 15 = 1 THEN
      BEGIN
        IF I<>1 THEN PUT(SEXPFIL);
        SEXPFIL^.HEAD:=EXPFIL^.HEAD;
        SEXPFIL^.FORSEND:=EXPFIL^.FORSEND;
        SEXPFIL^.EMBAL:=EXPFIL^.EMBAL;
        SEXPFIL^.FRAGT:=EXPFIL^.FRAGT;
        SEXPFIL^.LINE(1):=EXPFIL^.LINE(1);
        SEXPFIL^.LINE(2):=EXPFIL^.LINE(2);
        SEXPFIL^.DITTO(1):=EXPFIL^.DITTO(1);
        SEXPFIL^.DITTO(2):=EXPFIL^.DITTO(2);
        SEXPFIL^.TRANSPORTØR:=EXPFIL^.EXPORTØR;
        SEXPFIL^.AKOLLI:=EXPFIL^.AKOLLI;
        SEXPFIL^.KODE8:=EXPFIL^.KODE8;
        SEXPFIL^.KODE9:=EXPFIL^.KODE9;
        SEXPFIL^.BRUTTOVÆGT:=EXPFIL^.BRUTTOVÆGT;
        IF J-I<15 THEN SEXPFIL^.HEAD(5):=99
           ELSE SEXPFIL^.HEAD(5):=I DIV 15 +1
      END;
      SEXPFIL^.ORDRELIN((I-1) MOD 15 + 1):=TOLDORDR(I).PLUOLIN
    END;
    I:=J+1;
    WHILE I MOD 15 <> 1 DO
    BEGIN
       SEXPFIL^.ORDRELIN((I-1) MOD 15 + 1).VNR(1):=0;
    I:=I+1
    END;
    PUT(SEXPFIL);
    GET(EXPFIL)
  END;
  SEXPFIL^.HEAD(1):=0;
  SEXPFIL^.HEAD(2):=0;
  PUT(SEXPFIL);
  ICLOSE(VZ.H,FVAR);
  CHAIN('INTRE   *1','TOLDFAKT:P1',QUQ);
END.

Full view