|
|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 2496 (0x9c0)
Types: TextFile
Notes: Mikados_K
Names: »NEXTREC.K«
└─⟦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«
(*$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;