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

⟦48fd00947⟧ TextFile

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

Derivation

└─⟦6b1c9961a⟧ Bits:30008989 INDPERM P1
    └─⟦this⟧ »NEXTREC.K« 

Mikados K File

PROCEDURE NEXTREC(VAR ZO:ISFHEAD;VAR F:ISF;VAR REC:AR);
VAR NEWBLOCK,NEWBUC,NUM:INTEGER;
BEGIN
  IER:=0;
  WITH ZO DO IF FILEOPEN THEN IF FILEINIT THEN
  BEGIN
    EXTRACT(ZO,REC,Z,1,KEY1);
    NUM:=1;
    IF BLKENTRY>0 THEN
    BEGIN
      EXTRACT(ZO,Z,Z,BLK+(BLKENTRY-1)*RECSIZE,KEY2);
      NUM:=COMPARE(ZO,Z,Z,KEY1,KEY2)
    END;
    IF NUM<>0 THEN FINDPOST(ZO,F,REC);
    IF (IER<>0) AND (IER<>-1) THEN EXIT(NEXTREC);
    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
            WRITE('ALVORLIG TABELFEJL');
            NUM:=NUM DIV 0
          END
        END;
        NUM:=IER;IER:=0;
        READTABLE(ZO,F,NEWBUC);
        IF IER<>0 THEN EXIT(NEXTREC);
        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
          WRITE('ALVORLIG TABELFEJL 1');
          NUM:=NUM DIV 0
        END
      END;
      NUM:=IER;IER:=0;
      READBLOCK(ZO,F,NEWBLOCK,1);
      IF IER<>0 THEN EXIT(NEXTREC);
      IER:=NUM;
      BLKENTRY:=1
    END
    ELSE
      BLKENTRY:=BLKENTRY+1+IER;
 
    NEWBUC:=BLK+(BLKENTRY-1)*RECSIZE-1;
    FOR NUM:=1 TO RECSIZE DO REC(NUM):=Z(NEWBUC+NUM)
  END
  ELSE IER:=-12 ELSE IER:=-3
END;

Full view