|
|
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: 2528 (0x9e0)
Types: TextFile
Notes: Mikados_K
Names: »FINDPOS1.K«
└─⟦5630b2e42⟧ Bits:30009005 START APRIL 1985 aft april 1985 (PASCAL kildetekster)
└─⟦this⟧ »FINDPOS1.K«
└─⟦6c21327e0⟧ Bits:30008986 LINIMATIC K-FILER (IKKE HELT UPTODTATE)
└─⟦this⟧ »FINDPOS1.K«
(*$P*)
PROCEDURE FINDPOST;
VAR NUM,I,X,PEG:INTEGER;
BEGIN
WITH FILEHEAD DO
BEGIN
REXTRACT(KEY1);
X:=-1;
I:=1;
REPEAT
IF Z((I-1)*ENTRYSIZE+BUT+1)>0 THEN
BEGIN
PEG:=I;
X:=COMPARE((I-1)*ENTRYSIZE+BUT+2,KEY1)
END;
I:=I+1
UNTIL (I>NBUC) OR (X>=0);
IF X<0 THEN
BEGIN
READTABLE(PEG);
FOR PEG:=BLKPRBUC DOWNTO 1 DO
IF Z((PEG-1)*ENTRYSIZE+BLT+1)>0 THEN
BEGIN
READBLOCK(PEG,1);
BLKENTRY:=1+Z((PEG-1)*ENTRYSIZE+BLT+1);
IER:=-1;
EXIT(FINDPOST)
END;
IER:=-100;EXIT(OBEY)
END ELSE
BEGIN
READTABLE(PEG);
I:=BLT+1;
PEG:=0;
X:=-1;
REPEAT
IF PEG=BLKPRBUC THEN BEGIN IER:=-101;EXIT(OBEY) END;
NUM:=Z(I);
PEG:=PEG+1;
IF NUM>0 THEN
BEGIN
X:=COMPARE(I+1,KEY1);
IF X>=0 THEN
READBLOCK(PEG,1);
END;
I:=I+ENTRYSIZE
UNTIL X>=0;
I:=0;
REPEAT
I:=I+1;
IF I>NUM THEN BEGIN IER:=-102;EXIT(OBEY) END;
EXTRACT(BLK+(I-1)*RECSIZE,KEY2);
X:=COMPARE(KEY2,KEY1)
UNTIL X>=0;
IF X=0 THEN IER:=0 ELSE IER:=-1;
BLKENTRY:=I
END
END
END;
▶06◀(*$P*)▶06◀▶13◀PROCEDURE FINDPOST;▶13◀▶18◀VAR NUM,I,X,PEG:INTEGER;▶18◀▶05◀BEGIN▶05◀▶12◀ WITH FILEHEAD DO▶12◀▶07◀ BEGIN▶07◀▶13◀ REXTRACT(KEY1);▶13◀
X:=-1;
I:=1;
REPEAT
( IF Z((I-1)*ENTRYSIZE+BUT+1)>0 THEN(▶0b◀ BEGIN▶0b◀▶0f◀ PEG:=I;▶0f◀. X:=COMPARE((I-1)*ENTRYSIZE+BUT+2,KEY1).
END;
\f
I:=I+1\f
▶1d◀ UNTIL (I>NBUC) OR (X>=0);▶1d◀▶0f◀ IF X<0 THEN▶0f◀ BEGIN ▶15◀ READTABLE(PEG);▶15◀# FOR PEG:=BLKPRBUC DOWNTO 1 DO#* IF Z((PEG-1)*ENTRYSIZE+BLT+1)>0 THEN*▶0b◀ BEGIN▶0b◀▶19◀ READBLOCK(PEG,1);▶19◀/ BLKENTRY:=1+Z((PEG-1)*ENTRYSIZE+BLT+1);/▶10◀ IER:=-1;▶10◀▶16◀ EXIT(FINDPOST)▶16◀
END;
! IER:=-100;EXIT(OBEY) !\f
END ELSE\f
BEGIN ▶15◀ READTABLE(PEG);▶15◀▶0f◀ I:=BLT+1;▶0f◀\r PEG:=0;\r\f
X:=-1;\f
\f
REPEAT\f
< IF PEG=BLKPRBUC THEN BEGIN IER:=-101;EXIT(OBEY) END;<▶12◀ NUM:=Z(I);▶12◀▶13◀ PEG:=PEG+1;▶13◀▶15◀ IF NUM>0 THEN▶15◀\r BEGIN\r▶1f◀ X:=COMPARE(I+1,KEY1);▶1f◀▶16◀ IF X>=0 THEN▶16◀▶1d◀ READBLOCK(PEG,1);▶1d◀\f
END;\f
▶16◀ I:=I+ENTRYSIZE▶16◀▶11◀ UNTIL X>=0;▶11◀▶0b◀ I:=0;▶0b◀\f
REPEAT\f
▶0f◀ I:=I+1;▶0f◀5 IF I>NUM THEN BEGIN IER:=-102;EXIT(OBEY) END;5( EXTRACT(BLK+(I-1)*RECSIZE,KEY2);(▶1d◀ X:=COMPARE(KEY2,KEY1)▶1d◀▶11◀ UNTIL X>=0;▶11◀& IF X=0 THEN IER:=0 ELSE IER:=-1;&▶11◀ BLKENTRY:=I▶11◀▶07◀ END▶07◀▶05◀ END▶05◀▶04◀END;▶04◀▶00◀▶00◀▶00◀ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc