|
|
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: »INSERT.K«
└─⟦6b1c9961a⟧ Bits:30008989 INDPERM P1
└─⟦this⟧ »INSERT.K«
└─⟦a3d38fea3⟧ Bits:30008985 PRODUKTION NBT.
└─⟦this⟧ »INSERT.K«
└─⟦eb89399bc⟧ Bits:30008990 SOM ISFORIG, MEN KUN K-FILER
└─⟦this⟧ »INSERT.K«
PROCEDURE INSERT(VAR ZO:ISFHEAD;VAR F:ISF;VAR REC:AR);
VAR I,K:INTEGER;
BEGIN
WITH ZO DO
IF FILEOPEN THEN
IF NOT FILEINIT THEN
BEGIN
IER:=0;
IF INITREC=0 THEN BEGIN IER:=-10; EXIT(INSERT) END;
IF RECINUSE>0 THEN
BEGIN
EXTRACT(ZO,Z,Z,BLK+(BLKENTRY-1)*RECSIZE,KEY1);
EXTRACT(ZO,REC,Z,1,KEY2);
IF COMPARE(ZO,Z,Z,KEY1,KEY2)>=0
THEN BEGIN IER:=-11;EXIT(INSERT) END
END;
K:=RECINUSE MOD IRPRBUC;
I:=RECINUSE DIV IRPRBUC+1;
READTABLE(ZO,F,I);
IF IER<>0 THEN EXIT(INSERT);
I:=K DIV IRPRBLK+1;
READBLOCK(ZO,F,I,1);
IF IER<>0 THEN EXIT(INSERT);
BLKENTRY:= K MOD IRPRBLK+1;
K:=BLK+(BLKENTRY-1)*RECSIZE-1;
FOR I:=1 TO RECSIZE DO Z(K+I):=REC(I);
SÆTKEY(ZO,BLKENTRY);
ØGNUM(ZO);
BLKCHG:=TRUE;
IF RECINUSE=INITREC THEN FILEINIT:=TRUE
END
ELSE
IF RECINUSE<NREC THEN
BEGIN
FINDPOST(ZO,F,REC);
IF IER=-1 THEN
BEGIN
IER:=0;
IF BLKENTRY<=Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1) THEN
BEGIN
FSKDIBLK(ZO,BLKENTRY);
IF IER<>0 THEN EXIT(INSERT)
END;
K:=BLK+(BLKENTRY-1)*RECSIZE-1;
FOR I:=1 TO RECSIZE DO Z(K+I):=REC(I);
BLKCHG:=TRUE;
IF Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1)=RECPRBLK THEN
BEGIN
FSKDUBLK(ZO,F);
IF IER<>0 THEN EXIT(INSERT)
END ELSE
IF BLKENTRY=Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1)+1 THEN
SÆTKEY(ZO,BLKENTRY);
ØGNUM(ZO)
END
ELSE IF IER=0 THEN IER:=-7
END
ELSE IER:=-8 ELSE IER:=-3
END;