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

⟦e9a4c29c7⟧ TextFile

    Length: 2496 (0x9c0)
    Types: TextFile
    Notes: Mikados_K
    Names: »NEXTREC.K«

Derivation

└─⟦5630b2e42⟧ Bits:30009005 START APRIL 1985 aft april 1985 (PASCAL kildetekster)
    └─⟦this⟧ »NEXTREC.K« 
└─⟦6c21327e0⟧ Bits:30008986 LINIMATIC K-FILER (IKKE HELT UPTODTATE)
    └─⟦this⟧ »NEXTREC.K« 

Mikados K File

(*$P*)
PROCEDURE NEXTREC(VAR F:ISF);                          
VAR NEWBLOCK,NEWBUC,NUM:INTEGER;
BEGIN
  IER:=0;
  WITH FILEHEAD(CURRHEAD) DO IF FILEOPEN THEN IF FILEINIT THEN
  BEGIN
    REXTRACT(KEY1);
    NUM:=1;
    IF BLKENTRY>0 THEN
    BEGIN
      EXTRACT(BLK+(BLKENTRY-1)*RECSIZE,KEY2);
      NUM:=COMPARE(KEY1,KEY2)
    END;
    IF NUM<>0 THEN FINDPOST(F);    
    NUM:=Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1);
    IF NUM<=BLKENTRY+IER THEN
    BEGIN
      NEWBLOCK:=BLKINZONE+1;
      NUM:=0;
      WHILE (NUM<=0) AND (NEWBLOCK<=BLKPRBUC) DO
      BEGIN
        NUM:=Z(BLT+(NEWBLOCK-1)*ENTRYSIZE+1);
        NEWBLOCK:=NEWBLOCK+1
      END;
      IF NUM>0 THEN NEWBLOCK:=NEWBLOCK-1
      ELSE
      BEGIN
        NEWBUC:=BUCINZONE+1;
        NUM:=0;
        WHILE (NUM<=0) AND (NEWBUC<=NBUC) DO
        BEGIN
          NUM:=Z(BUT+(NEWBUC-1)*ENTRYSIZE+1);
          NEWBUC:=NEWBUC+1
        END;
        IF NUM>0 THEN NEWBUC:=NEWBUC-1
        ELSE
        BEGIN
          IF RECINUSE<=1 THEN IER:=-9 ELSE IER:=-2;
          NEWBUC:=1;
          REPEAT
            NUM:=Z(BUT+(NEWBUC-1)*ENTRYSIZE+1);
            NEWBUC:=NEWBUC+1
          UNTIL (NUM>0) OR (NEWBUC>BUCINZONE);
          IF NUM>0 THEN NEWBUC:=NEWBUC-1
          ELSE
          BEGIN IER:=-103;EXIT(UDFØR) END;
        END;
        NUM:=IER;IER:=0;
        READTABLE(F,NEWBUC);
        IER:=NUM;
        NEWBLOCK:=1;
        REPEAT
          NUM:=Z(BLT+(NEWBLOCK-1)*ENTRYSIZE+1);
          NEWBLOCK:=NEWBLOCK+1
        UNTIL (NUM>0) OR (NEWBLOCK>BLKPRBUC);
        IF NUM>0 THEN NEWBLOCK:=NEWBLOCK-1
        ELSE
        BEGIN IER:=-104;EXIT(UDFØR) END;
      END;
      NUM:=IER;IER:=0;
      READBLOCK(F,NEWBLOCK,1);
      IER:=NUM;
      BLKENTRY:=1
    END
    ELSE
      BLKENTRY:=BLKENTRY+1+IER;
    NEWBUC:=BLK+(BLKENTRY-1)*RECSIZE;
    MOVELEFT(Z(NEWBUC),REC^(1),2*RECSIZE) 
(*  FOR NUM:=1 TO RECSIZE DO REC^(NUM):=Z(NEWBUC+NUM)*)
  END
  ELSE IER:=-12 ELSE IER:=-3
END;

Full view