|
|
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«
└─⟦6b1c9961a⟧ Bits:30008989 INDPERM P1
└─⟦this⟧ »NEXTREC.K«
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;