|
|
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: 5056 (0x13c0)
Types: TextFile
Notes: Mikados_K
Names: »FORSKY1.K«
└─⟦5630b2e42⟧ Bits:30009005 START APRIL 1985 aft april 1985 (PASCAL kildetekster)
└─⟦this⟧ »FORSKY1.K«
└─⟦6c21327e0⟧ Bits:30008986 LINIMATIC K-FILER (IKKE HELT UPTODTATE)
└─⟦this⟧ »FORSKY1.K«
PROCEDURE FSKDIBLK(BLKPEG:INTEGER);
VAR I,J,K:INTEGER;
BEGIN
WITH FILEHEAD DO
IF BLKPEG>0 THEN
(*
FOR I:=Z((BLKINZONE-1)*ENTRYSIZE+BLT+1) DOWNTO BLKPEG DO
FOR J:=1 TO RECSIZE DO Z(BLK+I*RECSIZE-1+J):=Z(BLK+(I-1)*RECSIZE-1+J)
*)
MOVERIGHT(Z(BLK+(BLKPEG-1)*RECSIZE),Z(BLK+BLKPEG*RECSIZE),
2*RECSIZE*(Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)-BLKPEG+1))
ELSE
(*
FOR I:=-BLKPEG TO Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)-1 DO
FOR J:=1 TO RECSIZE DO Z(BLK+(I-1)*RECSIZE-1+J):=Z(BLK+I*RECSIZE-1+J)
*)
MOVELEFT(Z(BLK-BLKPEG*RECSIZE),Z(BLK-(BLKPEG+1)*RECSIZE),
2*RECSIZE*(Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)+BLKPEG))
END;
FUNCTION FINDDIR(FØRSTE,SIZE,TABLESIZE,TABLE:INTEGER):INTEGER;
VAR NÆSTE,FORRIGE,TESTV:INTEGER;
BEGIN
WITH FILEHEAD DO
BEGIN
TESTV:=TABLESIZE+1;
NÆSTE:=FØRSTE+1;
FORRIGE:=FØRSTE;
WHILE TESTV=TABLESIZE+1 DO
BEGIN
IF (NÆSTE>TABLESIZE) AND (FORRIGE<1) THEN NÆSTE:=1 DIV 0;
(*$R-*) IF (NÆSTE<=TABLESIZE) AND (Z(TABLE+(NÆSTE-1)*ENTRYSIZE+1)<SIZE) THEN
TESTV:=NÆSTE-FØRSTE;
IF (FORRIGE>=1) AND (Z(TABLE+(FORRIGE-1)*ENTRYSIZE+1)<SIZE) THEN
(*$R+*) TESTV:=FORRIGE-FØRSTE;
NÆSTE:=NÆSTE+1;
FORRIGE:=FORRIGE-1
END;
FINDDIR:=TESTV
END
END;
FUNCTION RETNING(VAR PLADSIBUKET:BOOLEAN):INTEGER;
BEGIN
WITH FILEHEAD DO
BEGIN
PLADSIBUKET:=Z(BUT+(BUCINZONE-1)*ENTRYSIZE+1)<RECPRBUC;
IF PLADSIBUKET THEN
RETNING:=FINDDIR(BLKINZONE,RECPRBLK,BLKPRBUC,BLT)
ELSE
RETNING:=FINDDIR(BUCINZONE,RECPRBUC,NBUC,BUT);
END
END;
(*$P*)
PROCEDURE FSKDUBLK;
VAR I,RDPOST,WRPOST,AFSTAND,DIR:INTEGER;
COPFRA,COPTIL:ZONEADR;
PLADSIBUKET:BOOLEAN;
BEGIN
WITH FILEHEAD DO
BEGIN
AFSTAND:=RETNING(PLADSIBUKET);
IF AFSTAND>0 THEN
BEGIN
RDPOST:=2;WRPOST:=1;
COPFRA:=BLK+BLKSIZE;COPTIL:=BLK;
DIR:=1
END ELSE
BEGIN
RDPOST:=1;WRPOST:=2;
COPFRA:=BLK;COPTIL:=BLK+BLKSIZE;
DIR:=-1
END;
WHILE AFSTAND<>0 DO
BEGIN
SÆTKEY(WRPOST+RECPRBLK-1);
COPSEGS(Z(BLT+(BLKINZONE-1)*ENTRYSIZE),BLKSIZE,BLK+(WRPOST-1)*
RECSIZE,SKRIV);
BLKCHG:=FALSE;
IF DIR=-1 THEN MOVELEFT(Z(COPFRA),Z(COPTIL),2*RECSIZE);
(*FOR I:=1 TO RECSIZE DO Z(COPTIL-1+I):=Z(COPFRA-1+I);*)
IF ((BLKINZONE=1) AND (DIR=-1)) OR ((BLKINZONE=BLKPRBUC) AND (DIR=1))
THEN BEGIN
READTABLE(BUCINZONE+DIR);
IF DIR=1 THEN BLKINZONE:=1 ELSE BLKINZONE:=BLKPRBUC;
AFSTAND:=AFSTAND-DIR;
IF AFSTAND=0 THEN AFSTAND:=RETNING(PLADSIBUKET)+DIR;
BLKINZONE:=BLKINZONE-DIR
END;
IF DIR=1 THEN MOVELEFT(Z(COPFRA),Z(COPTIL),2*RECSIZE);
(*FOR I:=1 TO RECSIZE DO Z(COPTIL-1+I):=Z(COPFRA-1+I);*)
READBLOCK(BLKINZONE+DIR,RDPOST);
IF PLADSIBUKET AND (AFSTAND<>0) THEN AFSTAND:=AFSTAND-DIR
END;
DIR:=BLK+RECSIZE*Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1); (*-1*)
IF RDPOST=1 THEN MOVELEFT(Z(COPTIL),Z(DIR),2*RECSIZE);
(*FOR I:=1 TO RECSIZE DO Z(DIR+I):=Z(COPTIL-1+I);*)
BLKCHG:=TRUE;
SÆTKEY(Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1)+1);
END
END;
0x0000…0025 Line {l1=0x23, l2=»PROCEDURE FSKDIBLK(BLKPEG:INTEGER);«, l3=0x23}
0x0025…0039 Line {l1=0x12, l2=»VAR I,J,K:INTEGER;«, l3=0x12}
0x0039…0040 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x0040…0054 Line {l1=0x12, l2=» WITH FILEHEAD DO«, l3=0x12}
0x0054…0068 Line {l1=0x12, l2=» IF BLKPEG>0 THEN«, l3=0x12}
0x0068…006c Line {l1=0x02, l2=»(*«, l3=0x02}
0x006c…00aa Line {l1=0x3c, l2=» FOR I:=Z((BLKINZONE-1)*ENTRYSIZE+BLT+1) DOWNTO BLKPEG DO«, l3=0x3c}
0x00aa…00f7 Line {l1=0x4b, l2=» FOR J:=1 TO RECSIZE DO Z(BLK+I*RECSIZE-1+J):=Z(BLK+(I-1)*RECSIZE-1+J)«, l3=0x4b}
0x00f7…00fb Line {l1=0x02, l2=»*)«, l3=0x02}
0x00fb…013b Line {l1=0x3e, l2=» MOVERIGHT(Z(BLK+(BLKPEG-1)*RECSIZE),Z(BLK+BLKPEG*RECSIZE),«, l3=0x3e}
0x013b…0181 Line {l1=0x44, l2=» 2*RECSIZE*(Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)-BLKPEG+1))«, l3=0x44}
0x0181…0189 Line {l1=0x06, l2=» ELSE«, l3=0x06}
0x0189…018d Line {l1=0x02, l2=»(*«, l3=0x02}
0x018d…01ca Line {l1=0x3b, l2=» FOR I:=-BLKPEG TO Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)-1 DO«, l3=0x3b}
0x01ca…0217 Line {l1=0x4b, l2=» FOR J:=1 TO RECSIZE DO Z(BLK+(I-1)*RECSIZE-1+J):=Z(BLK+I*RECSIZE-1+J)«, l3=0x4b}
0x0217…021b Line {l1=0x02, l2=»*)«, l3=0x02}
0x021b…025a Line {l1=0x3d, l2=» MOVELEFT(Z(BLK-BLKPEG*RECSIZE),Z(BLK-(BLKPEG+1)*RECSIZE),«, l3=0x3d}
0x025a…029d Line {l1=0x41, l2=» 2*RECSIZE*(Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)+BLKPEG))«, l3=0x41}
0x029d…02a3 Line {l1=0x04, l2=»END;«, l3=0x04}
0x02a3…02a6 Line {l1=0x01, l2=» «, l3=0x01}
0x02a6…02e6 Line {l1=0x3e, l2=»FUNCTION FINDDIR(FØRSTE,SIZE,TABLESIZE,TABLE:INTEGER):INTEGER;«, l3=0x3e}
0x02e6…0308 Line {l1=0x20, l2=»VAR NÆSTE,FORRIGE,TESTV:INTEGER;«, l3=0x20}
0x0308…030f Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x030f…0323 Line {l1=0x12, l2=» WITH FILEHEAD DO«, l3=0x12}
0x0323…032c Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x032c…0378 Line {l1=0x4a, l2=» TESTV:=TABLESIZE+1; «, l3=0x4a}
0x0378…03c4 Line {l1=0x4a, l2=» NÆSTE:=FØRSTE+1; «, l3=0x4a}
0x03c4…0410 Line {l1=0x4a, l2=» FORRIGE:=FØRSTE; «, l3=0x4a}
0x0410…045c Line {l1=0x4a, l2=» WHILE TESTV=TABLESIZE+1 DO «, l3=0x4a}
0x045c…04a8 Line {l1=0x4a, l2=» BEGIN «, l3=0x4a}
0x04a8…04f4 Line {l1=0x4a, l2=» IF (NÆSTE>TABLESIZE) AND (FORRIGE<1) THEN NÆSTE:=1 DIV 0; «, l3=0x4a}
0x04f4…0542 Line {l1=0x4c, l2=»(*$R-*) IF (NÆSTE<=TABLESIZE) AND (Z(TABLE+(NÆSTE-1)*ENTRYSIZE+1)<SIZE) THEN«, l3=0x4c}
0x0542…058e Line {l1=0x4a, l2=» TESTV:=NÆSTE-FØRSTE; «, l3=0x4a}
0x058e…05db Line {l1=0x4b, l2=» IF (FORRIGE>=1) AND (Z(TABLE+(FORRIGE-1)*ENTRYSIZE+1)<SIZE) THEN «, l3=0x4b}
0x05db…0627 Line {l1=0x4a, l2=»(*$R+*) TESTV:=FORRIGE-FØRSTE; «, l3=0x4a}
0x0627…0673 Line {l1=0x4a, l2=» NÆSTE:=NÆSTE+1; «, l3=0x4a}
0x0673…06bf Line {l1=0x4a, l2=» FORRIGE:=FORRIGE-1 «, l3=0x4a}
0x06bf…070b Line {l1=0x4a, l2=» END; «, l3=0x4a}
0x070b…0757 Line {l1=0x4a, l2=» FINDDIR:=TESTV «, l3=0x4a}
0x0757…075e Line {l1=0x05, l2=» END«, l3=0x05}
0x075e…0764 Line {l1=0x04, l2=»END;«, l3=0x04}
0x0764…0767 Line {l1=0x01, l2=» «, l3=0x01}
0x0767…079b Line {l1=0x32, l2=»FUNCTION RETNING(VAR PLADSIBUKET:BOOLEAN):INTEGER;«, l3=0x32}
0x079b…07a2 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x07a2…07b6 Line {l1=0x12, l2=» WITH FILEHEAD DO«, l3=0x12}
0x07b6…07bf Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x07bf…07fb Line {l1=0x3a, l2=» PLADSIBUKET:=Z(BUT+(BUCINZONE-1)*ENTRYSIZE+1)<RECPRBUC;«, l3=0x3a}
0x07fb…0813 Line {l1=0x16, l2=» IF PLADSIBUKET THEN«, l3=0x16}
0x0813…084c Line {l1=0x37, l2=» RETNING:=FINDDIR(BLKINZONE,RECPRBLK,BLKPRBUC,BLT)«, l3=0x37}
0x084c…0855 Line {l1=0x07, l2=» ELSE«, l3=0x07}
0x0855…088b Line {l1=0x34, l2=» RETNING:=FINDDIR(BUCINZONE,RECPRBUC,NBUC,BUT);«, l3=0x34}
0x088b…0892 Line {l1=0x05, l2=» END«, l3=0x05}
0x0892…0898 Line {l1=0x04, l2=»END;«, l3=0x04}
0x0898…08a0 Line {l1=0x06, l2=»(*$P*)«, l3=0x06}
0x08a0…08b5 Line {l1=0x13, l2=»PROCEDURE FSKDUBLK;«, l3=0x13}
0x08b5…08df Line {l1=0x28, l2=»VAR I,RDPOST,WRPOST,AFSTAND,DIR:INTEGER;«, l3=0x28}
0x08df…08fb Line {l1=0x1a, l2=» COPFRA,COPTIL:ZONEADR;«, l3=0x1a}
0x08fb…0915 Line {l1=0x18, l2=» PLADSIBUKET:BOOLEAN;«, l3=0x18}
0x0915…091c Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x091c…0930 Line {l1=0x12, l2=» WITH FILEHEAD DO«, l3=0x12}
0x0930…0939 Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x0939…095d Line {l1=0x22, l2=» AFSTAND:=RETNING(PLADSIBUKET);«, l3=0x22}
0x095d…0974 Line {l1=0x15, l2=» IF AFSTAND>0 THEN«, l3=0x15}
0x0974…097f Line {l1=0x09, l2=» BEGIN«, l3=0x09}
0x097f…099b Line {l1=0x1a, l2=» RDPOST:=2;WRPOST:=1;«, l3=0x1a}
0x099b…09c3 Line {l1=0x26, l2=» COPFRA:=BLK+BLKSIZE;COPTIL:=BLK;«, l3=0x26}
0x09c3…09d1 Line {l1=0x0c, l2=» DIR:=1«, l3=0x0c}
0x09d1…09df Line {l1=0x0c, l2=» END ELSE«, l3=0x0c}
0x09df…09ea Line {l1=0x09, l2=» BEGIN«, l3=0x09}
0x09ea…0a06 Line {l1=0x1a, l2=» RDPOST:=1;WRPOST:=2;«, l3=0x1a}
0x0a06…0a2e Line {l1=0x26, l2=» COPFRA:=BLK;COPTIL:=BLK+BLKSIZE;«, l3=0x26}
0x0a2e…0a3d Line {l1=0x0d, l2=» DIR:=-1«, l3=0x0d}
0x0a3d…0a47 Line {l1=0x08, l2=» END;«, l3=0x08}
0x0a47…0a60 Line {l1=0x17, l2=» WHILE AFSTAND<>0 DO«, l3=0x17}
0x0a60…0a6b Line {l1=0x09, l2=» BEGIN«, l3=0x09}
0x0a6b…0a8d Line {l1=0x20, l2=» SÆTKEY(WRPOST+RECPRBLK-1);«, l3=0x20}
0x0a8d…0ad3 Line {l1=0x44, l2=» COPSEGS(Z(BLT+(BLKINZONE-1)*ENTRYSIZE),BLKSIZE,BLK+(WRPOST-1)*«, l3=0x44}
0x0ad3…0b18 Line {l1=0x43, l2=» RECSIZE,SKRIV);«, l3=0x43}
0x0b18…0b2e Line {l1=0x14, l2=» BLKCHG:=FALSE;«, l3=0x14}
0x0b2e…0b6d Line {l1=0x3d, l2=» IF DIR=-1 THEN MOVELEFT(Z(COPFRA),Z(COPTIL),2*RECSIZE);«, l3=0x3d}
0x0b6d…0bba Line {l1=0x4b, l2=» (*FOR I:=1 TO RECSIZE DO Z(COPTIL-1+I):=Z(COPFRA-1+I);*)«, l3=0x4b}
0x0bba…0c07 Line {l1=0x4b, l2=» IF ((BLKINZONE=1) AND (DIR=-1)) OR ((BLKINZONE=BLKPRBUC) AND (DIR=1))«, l3=0x4b}
0x0c07…0c19 Line {l1=0x10, l2=» THEN BEGIN«, l3=0x10}
0x0c19…0c3c Line {l1=0x21, l2=» READTABLE(BUCINZONE+DIR);«, l3=0x21}
0x0c3c…0c7a Line {l1=0x3c, l2=» IF DIR=1 THEN BLKINZONE:=1 ELSE BLKINZONE:=BLKPRBUC;«, l3=0x3c}
0x0c7a…0c99 Line {l1=0x1d, l2=» AFSTAND:=AFSTAND-DIR;«, l3=0x1d}
0x0c99…0cd7 Line {l1=0x3c, l2=» IF AFSTAND=0 THEN AFSTAND:=RETNING(PLADSIBUKET)+DIR;«, l3=0x3c}
0x0cd7…0cf9 Line {l1=0x20, l2=» BLKINZONE:=BLKINZONE-DIR«, l3=0x20}
0x0cf9…0d05 Line {l1=0x0a, l2=» END;«, l3=0x0a}
0x0d05…0d43 Line {l1=0x3c, l2=» IF DIR=1 THEN MOVELEFT(Z(COPFRA),Z(COPTIL),2*RECSIZE);«, l3=0x3c}
0x0d43…0d8f Line {l1=0x4a, l2=» (*FOR I:=1 TO RECSIZE DO Z(COPTIL-1+I):=Z(COPFRA-1+I);*)«, l3=0x4a}
0x0d8f…0db7 Line {l1=0x26, l2=» READBLOCK(BLKINZONE+DIR,RDPOST);«, l3=0x26}
0x0db7…0df8 Line {l1=0x3f, l2=» IF PLADSIBUKET AND (AFSTAND<>0) THEN AFSTAND:=AFSTAND-DIR«, l3=0x3f}
0x0df8…0e02 Line {l1=0x08, l2=» END;«, l3=0x08}
0x0e02…0e44 Line {l1=0x40, l2=» DIR:=BLK+RECSIZE*Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1); (*-1*)«, l3=0x40}
0x0e44…0e80 Line {l1=0x3a, l2=» IF RDPOST=1 THEN MOVELEFT(Z(COPTIL),Z(DIR),2*RECSIZE);«, l3=0x3a}
0x0e80…0ec8 Line {l1=0x46, l2=» (*FOR I:=1 TO RECSIZE DO Z(DIR+I):=Z(COPTIL-1+I);*)«, l3=0x46}
0x0ec8…0edb Line {l1=0x11, l2=» BLKCHG:=TRUE;«, l3=0x11}
0x0edb…0f0c Line {l1=0x2f, l2=» SÆTKEY(Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1)+1);«, l3=0x2f}
0x0f0c…0f13 Line {l1=0x05, l2=» END«, l3=0x05}
0x0f13…0f19 Line {l1=0x04, l2=»END;«, l3=0x04}
0x0f19…0f20 00 00 04 45 4e 44 3b ┆ END;┆
0x0f20…0f40 04 00 00 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 ┆ ccccccccccccccccccccccccccccc┆
0x0f40…0f60 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 ┆cccccccccccccccccccccccccccccccc┆
[…0x23…]
#PROCEDURE FSKDIBLK(BLKPEG:INTEGER);#▶12◀VAR I,J,K:INTEGER;▶12◀▶05◀BEGIN▶05◀▶12◀ WITH FILEHEAD DO▶12◀▶12◀ IF BLKPEG>0 THEN▶12◀▶02◀(*▶02◀< FOR I:=Z((BLKINZONE-1)*ENTRYSIZE+BLT+1) DOWNTO BLKPEG DO<K FOR J:=1 TO RECSIZE DO Z(BLK+I*RECSIZE-1+J):=Z(BLK+(I-1)*RECSIZE-1+J)K▶02◀*)▶02◀> MOVERIGHT(Z(BLK+(BLKPEG-1)*RECSIZE),Z(BLK+BLKPEG*RECSIZE),>D 2*RECSIZE*(Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)-BLKPEG+1))D▶06◀ ELSE▶06◀▶02◀(*▶02◀; FOR I:=-BLKPEG TO Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)-1 DO;K FOR J:=1 TO RECSIZE DO Z(BLK+(I-1)*RECSIZE-1+J):=Z(BLK+I*RECSIZE-1+J)K▶02◀*)▶02◀= MOVELEFT(Z(BLK-BLKPEG*RECSIZE),Z(BLK-(BLKPEG+1)*RECSIZE),=A 2*RECSIZE*(Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)+BLKPEG))A▶04◀END;▶04◀▶01◀ ▶01◀>FUNCTION FINDDIR(FØRSTE,SIZE,TABLESIZE,TABLE:INTEGER):INTEGER;> VAR NÆSTE,FORRIGE,TESTV:INTEGER; ▶05◀BEGIN▶05◀▶12◀ WITH FILEHEAD DO▶12◀▶07◀ BEGIN▶07◀J TESTV:=TABLESIZE+1; JJ NÆSTE:=FØRSTE+1; JJ FORRIGE:=FØRSTE; JJ WHILE TESTV=TABLESIZE+1 DO JJ BEGIN JJ IF (NÆSTE>TABLESIZE) AND (FORRIGE<1) THEN NÆSTE:=1 DIV 0; JL(*$R-*) IF (NÆSTE<=TABLESIZE) AND (Z(TABLE+(NÆSTE-1)*ENTRYSIZE+1)<SIZE) THENLJ TESTV:=NÆSTE-FØRSTE; JK IF (FORRIGE>=1) AND (Z(TABLE+(FORRIGE-1)*ENTRYSIZE+1)<SIZE) THEN KJ(*$R+*) TESTV:=FORRIGE-FØRSTE; JJ NÆSTE:=NÆSTE+1; JJ FORRIGE:=FORRIGE-1 JJ END; JJ FINDDIR:=TESTV J▶05◀ END▶05◀▶04◀END;▶04◀▶01◀ ▶01◀2FUNCTION RETNING(VAR PLADSIBUKET:BOOLEAN):INTEGER;2▶05◀BEGIN▶05◀▶12◀ WITH FILEHEAD DO▶12◀▶07◀ BEGIN▶07◀: PLADSIBUKET:=Z(BUT+(BUCINZONE-1)*ENTRYSIZE+1)<RECPRBUC;:▶16◀ IF PLADSIBUKET THEN▶16◀7 RETNING:=FINDDIR(BLKINZONE,RECPRBLK,BLKPRBUC,BLT)7▶07◀ ELSE▶07◀4 RETNING:=FINDDIR(BUCINZONE,RECPRBUC,NBUC,BUT);4▶05◀ END▶05◀▶04◀END;▶04◀▶06◀(*$P*)▶06◀▶13◀PROCEDURE FSKDUBLK;▶13◀(VAR I,RDPOST,WRPOST,AFSTAND,DIR:INTEGER;(▶1a◀ COPFRA,COPTIL:ZONEADR;▶1a◀▶18◀ PLADSIBUKET:BOOLEAN;▶18◀▶05◀BEGIN▶05◀▶12◀ WITH FILEHEAD DO▶12◀▶07◀ BEGIN▶07◀" AFSTAND:=RETNING(PLADSIBUKET);"▶15◀ IF AFSTAND>0 THEN▶15◀ BEGIN ▶1a◀ RDPOST:=2;WRPOST:=1;▶1a◀& COPFRA:=BLK+BLKSIZE;COPTIL:=BLK;&\f
DIR:=1\f
\f
END ELSE\f
BEGIN ▶1a◀ RDPOST:=1;WRPOST:=2;▶1a◀& COPFRA:=BLK;COPTIL:=BLK+BLKSIZE;&\r DIR:=-1\r▶08◀ END;▶08◀▶17◀ WHILE AFSTAND<>0 DO▶17◀ BEGIN SÆTKEY(WRPOST+RECPRBLK-1); D COPSEGS(Z(BLT+(BLKINZONE-1)*ENTRYSIZE),BLKSIZE,BLK+(WRPOST-1)*DC RECSIZE,SKRIV);C▶14◀ BLKCHG:=FALSE;▶14◀= IF DIR=-1 THEN MOVELEFT(Z(COPFRA),Z(COPTIL),2*RECSIZE);=K (*FOR I:=1 TO RECSIZE DO Z(COPTIL-1+I):=Z(COPFRA-1+I);*)KK IF ((BLKINZONE=1) AND (DIR=-1)) OR ((BLKINZONE=BLKPRBUC) AND (DIR=1))K▶10◀ THEN BEGIN▶10◀! READTABLE(BUCINZONE+DIR);!< IF DIR=1 THEN BLKINZONE:=1 ELSE BLKINZONE:=BLKPRBUC;<▶1d◀ AFSTAND:=AFSTAND-DIR;▶1d◀< IF AFSTAND=0 THEN AFSTAND:=RETNING(PLADSIBUKET)+DIR;< BLKINZONE:=BLKINZONE-DIR
END;
< IF DIR=1 THEN MOVELEFT(Z(COPFRA),Z(COPTIL),2*RECSIZE);<J (*FOR I:=1 TO RECSIZE DO Z(COPTIL-1+I):=Z(COPFRA-1+I);*)J& READBLOCK(BLKINZONE+DIR,RDPOST);&? IF PLADSIBUKET AND (AFSTAND<>0) THEN AFSTAND:=AFSTAND-DIR?▶08◀ END;▶08◀@ DIR:=BLK+RECSIZE*Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1); (*-1*)@: IF RDPOST=1 THEN MOVELEFT(Z(COPTIL),Z(DIR),2*RECSIZE);:F (*FOR I:=1 TO RECSIZE DO Z(DIR+I):=Z(COPTIL-1+I);*)F▶11◀ BLKCHG:=TRUE;▶11◀/ SÆTKEY(Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1)+1);/▶05◀ END▶05◀▶04◀END;▶04◀▶00◀▶00◀▶04◀END;▶04◀▶00◀▶00◀ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc