|
|
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: 4992 (0x1380)
Types: TextFile
Notes: Mikados_K
Names: »SIOPEN.K«
└─⟦eb89399bc⟧ Bits:30008990 SOM ISFORIG, MEN KUN K-FILER
└─⟦this⟧ »SIOPEN.K«
PROCEDURE COPSEGS(VAR Z:AR;VAR F:ISF;SEGADR,WORDS,WORDADR,INOUT:INTEGER);
FORWARD;
SEGMENT PROCEDURE IOPEN(VAR ZO:ISFHEAD;VAR F:ISF;MODE:INTEGER);
(*F ER ÅBNET FØR KALD; MED REWRITE*)
VAR I,J,NUM,BUC,K,BLKNUM:INTEGER;
BEGIN
WITH ZO DO
BEGIN
SEEK(F,1);
IER:=IORESULT;
IF IER<>0 THEN EXIT(IOPEN);
GET(F);
IER:=IORESULT;
IF IER<>0 THEN EXIT (IOPEN);
NBUC := F^(1);
NBLK := F^(2);
NREC := F^(3);
BLKPRBUC := F^(4);
RECPRBUC := F^(5);
RECPRBLK := F^(6);
KEYFLDS := F^(7);
FLHSIZE := F^(8);
BUTSIZE := F^(9);
BLTSIZE := F^(10);
BLKSIZE := F^(11);
RECSIZE := F^(12);
KEYSIZE := F^(13);
SEGINFLH := F^(14);
SEGINBUT := F^(15);
SEGINBUC := F^(16);
SEGINBLT := F^(17);
SEGINBLK := F^(18);
INITREC := F^(19);
BUCINUSE := F^(20);
BLKINUSE := F^(21);
RECINUSE := F^(22);
FILEINIT := F^(23)=1;
FILEOPEN := F^(24)=1;
FOR I:=1 TO 9 DO
BEGIN
KEYPOS(I):= F^(22+I*3);
KEYLNG(I):= F^(23+I*3);
KEYSGN(I):= F^(24+I*3)
END;
BUTCHG:=FALSE;
BLTCHG:=FALSE;
BLKCHG:=FALSE;
BUCINZONE:=0;
BLKINZONE:=0;
BLKENTRY:=0;
UPSTAT:=MODE;
BUT:=1;
BLT:=BUT+BUTSIZE;
BLK:=BLT+BLTSIZE;
KEY1:=BLK+BLKSIZE+RECSIZE;
KEY2:=BLK+BLKSIZE;
ENTRYSIZE:=KEYSIZE+2;
IF RECPRBUC<>RECPRBLK*BLKPRBUC THEN
BEGIN
IER:=-4;
EXIT (IOPEN)
(*FILEN ER IKKE ISF*)
END;
IF FILEINIT THEN COPSEGS(Z,F,2,BUTSIZE,BUT,LÆS);
IF IER<>0 THEN EXIT (IOPEN);
IF FILEOPEN THEN
BEGIN
IER:=-18;
IF NOT FILEINIT THEN
BEGIN
IER:=-19;
INITREC:=0;
BUCINUSE:=0;
BLKINUSE:=0;
RECINUSE:=0
END
ELSE
BEGIN
BUCINUSE:=0;
BLKINUSE:=0;
RECINUSE:=0;
FOR I:=1 TO NBUC DO
BEGIN
BUC:=BUT+(I-1)*ENTRYSIZE+1;
COPSEGS(Z,F,Z(BUC-1),BLTSIZE,BLT,LÆS);
IF IER<>0 THEN EXIT (IOPEN);
IER:=-18;
NUM:=0;
FOR J:=1 TO BLKPRBUC DO
BEGIN
BLKNUM:=BLT+1+(J-1)*ENTRYSIZE;
IF Z(BLKNUM)>0 THEN
BEGIN
NUM:=NUM+Z(BLKNUM);
BLKINUSE:=BLKINUSE+1;
K:=BLKNUM
END
END;
IF NUM>0 THEN
BEGIN
RECINUSE:=RECINUSE+NUM;
BUCINUSE:=BUCINUSE+1;
FOR J:=1 TO KEYSIZE DO
Z(BUC+J):=Z(K+J)
END;
BUTCHG:=TRUE;
Z(BUC):=NUM
END; (*FOR I*)
BUCINZONE:=NBUC
END
END; (*FILEOPEN*)
FILEOPEN:=TRUE;
IF UPSTAT=SKRIV THEN
BEGIN
F^(1):=NBUC;
F^(2):=NBLK;
F^(3):=NREC;
F^(4):=BLKPRBUC;
F^(5):=RECPRBUC;
F^(6):=RECPRBLK;
F^(7):=KEYFLDS;
F^(8):=FLHSIZE;
F^(9):=BUTSIZE;
F^(10):=BLTSIZE;
F^(11):=BLKSIZE;
F^(12):=RECSIZE;
F^(13):=KEYSIZE;
F^(14):=SEGINFLH;
F^(15):=SEGINBUT;
F^(16):=SEGINBUC;
F^(17):=SEGINBLT;
F^(18):=SEGINBLK;
F^(19):=INITREC;
F^(20):=BUCINUSE;
F^(21):=BLKINUSE;
F^(22):=RECINUSE;
IF FILEINIT THEN F^(23):=1 ELSE F^(23):=0;
IF FILEOPEN THEN F^(24):=1 ELSE F^(24):=0;
FOR I:=1 TO 9 DO
BEGIN
F^(22+I*3):=KEYPOS(I);
F^(23+I*3):=KEYLNG(I);
F^(24+I*3):=KEYSGN(I)
END;
SEEK(F,1);
I:=IER;
IER:=IORESULT;
IF IER<>0 THEN EXIT(IOPEN);
PUT(F);
IER:=IORESULT;
IF IER<>0 THEN EXIT(IOPEN);
IER:=I
END
END
END (*IOPEN*);
0x0000…004b Line {l1=0x49, l2=»PROCEDURE COPSEGS(VAR Z:AR;VAR F:ISF;SEGADR,WORDS,WORDADR,INOUT:INTEGER);«, l3=0x49}
0x004b…0055 Line {l1=0x08, l2=»FORWARD;«, l3=0x08}
0x0055…0058 Line {l1=0x01, l2=» «, l3=0x01}
0x0058…0099 Line {l1=0x3f, l2=»SEGMENT PROCEDURE IOPEN(VAR ZO:ISFHEAD;VAR F:ISF;MODE:INTEGER);«, l3=0x3f}
0x0099…00c6 Line {l1=0x2b, l2=» (*F ER ÅBNET FØR KALD; MED REWRITE*)«, l3=0x2b}
0x00c6…00e9 Line {l1=0x21, l2=»VAR I,J,NUM,BUC,K,BLKNUM:INTEGER;«, l3=0x21}
0x00e9…00f0 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x00f0…00fe Line {l1=0x0c, l2=» WITH ZO DO«, l3=0x0c}
0x00fe…0107 Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x0107…0117 Line {l1=0x0e, l2=» SEEK(F,1);«, l3=0x0e}
0x0117…012b Line {l1=0x12, l2=» IER:=IORESULT;«, l3=0x12}
0x012b…014c Line {l1=0x1f, l2=» IF IER<>0 THEN EXIT(IOPEN);«, l3=0x1f}
0x014c…0159 Line {l1=0x0b, l2=» GET(F);«, l3=0x0b}
0x0159…016d Line {l1=0x12, l2=» IER:=IORESULT;«, l3=0x12}
0x016d…018f Line {l1=0x20, l2=» IF IER<>0 THEN EXIT (IOPEN);«, l3=0x20}
0x018f…01a9 Line {l1=0x18, l2=» NBUC := F^(1);«, l3=0x18}
0x01a9…01c3 Line {l1=0x18, l2=» NBLK := F^(2);«, l3=0x18}
0x01c3…01dd Line {l1=0x18, l2=» NREC := F^(3);«, l3=0x18}
0x01dd…01f7 Line {l1=0x18, l2=» BLKPRBUC := F^(4);«, l3=0x18}
0x01f7…0211 Line {l1=0x18, l2=» RECPRBUC := F^(5);«, l3=0x18}
0x0211…022b Line {l1=0x18, l2=» RECPRBLK := F^(6);«, l3=0x18}
0x022b…0245 Line {l1=0x18, l2=» KEYFLDS := F^(7);«, l3=0x18}
0x0245…025f Line {l1=0x18, l2=» FLHSIZE := F^(8);«, l3=0x18}
0x025f…0279 Line {l1=0x18, l2=» BUTSIZE := F^(9);«, l3=0x18}
0x0279…0294 Line {l1=0x19, l2=» BLTSIZE := F^(10);«, l3=0x19}
0x0294…02af Line {l1=0x19, l2=» BLKSIZE := F^(11);«, l3=0x19}
0x02af…02ca Line {l1=0x19, l2=» RECSIZE := F^(12);«, l3=0x19}
0x02ca…02e5 Line {l1=0x19, l2=» KEYSIZE := F^(13);«, l3=0x19}
0x02e5…0300 Line {l1=0x19, l2=» SEGINFLH := F^(14);«, l3=0x19}
0x0300…031b Line {l1=0x19, l2=» SEGINBUT := F^(15);«, l3=0x19}
0x031b…0336 Line {l1=0x19, l2=» SEGINBUC := F^(16);«, l3=0x19}
0x0336…0351 Line {l1=0x19, l2=» SEGINBLT := F^(17);«, l3=0x19}
0x0351…036c Line {l1=0x19, l2=» SEGINBLK := F^(18);«, l3=0x19}
0x036c…0387 Line {l1=0x19, l2=» INITREC := F^(19);«, l3=0x19}
0x0387…03a2 Line {l1=0x19, l2=» BUCINUSE := F^(20);«, l3=0x19}
0x03a2…03bd Line {l1=0x19, l2=» BLKINUSE := F^(21);«, l3=0x19}
0x03bd…03d8 Line {l1=0x19, l2=» RECINUSE := F^(22);«, l3=0x19}
0x03d8…03f5 Line {l1=0x1b, l2=» FILEINIT := F^(23)=1;«, l3=0x1b}
0x03f5…0412 Line {l1=0x1b, l2=» FILEOPEN := F^(24)=1;«, l3=0x1b}
0x0412…0428 Line {l1=0x14, l2=» FOR I:=1 TO 9 DO«, l3=0x14}
0x0428…0433 Line {l1=0x09, l2=» BEGIN«, l3=0x09}
0x0433…0453 Line {l1=0x1e, l2=» KEYPOS(I):= F^(22+I*3);«, l3=0x1e}
0x0453…0473 Line {l1=0x1e, l2=» KEYLNG(I):= F^(23+I*3);«, l3=0x1e}
0x0473…0492 Line {l1=0x1d, l2=» KEYSGN(I):= F^(24+I*3)«, l3=0x1d}
0x0492…049c Line {l1=0x08, l2=» END;«, l3=0x08}
0x049c…04b0 Line {l1=0x12, l2=» BUTCHG:=FALSE;«, l3=0x12}
0x04b0…04c4 Line {l1=0x12, l2=» BLTCHG:=FALSE;«, l3=0x12}
0x04c4…04d8 Line {l1=0x12, l2=» BLKCHG:=FALSE;«, l3=0x12}
0x04d8…04eb Line {l1=0x11, l2=» BUCINZONE:=0;«, l3=0x11}
0x04eb…04fe Line {l1=0x11, l2=» BLKINZONE:=0;«, l3=0x11}
0x04fe…0510 Line {l1=0x10, l2=» BLKENTRY:=0;«, l3=0x10}
0x0510…0523 Line {l1=0x11, l2=» UPSTAT:=MODE;«, l3=0x11}
0x0523…0530 Line {l1=0x0b, l2=» BUT:=1;«, l3=0x0b}
0x0530…0547 Line {l1=0x15, l2=» BLT:=BUT+BUTSIZE;«, l3=0x15}
0x0547…055e Line {l1=0x15, l2=» BLK:=BLT+BLTSIZE;«, l3=0x15}
0x055e…057e Line {l1=0x1e, l2=» KEY1:=BLK+BLKSIZE+RECSIZE;«, l3=0x1e}
0x057e…0596 Line {l1=0x16, l2=» KEY2:=BLK+BLKSIZE;«, l3=0x16}
0x0596…05b1 Line {l1=0x19, l2=» ENTRYSIZE:=KEYSIZE+2;«, l3=0x19}
0x05b1…05da Line {l1=0x27, l2=» IF RECPRBUC<>RECPRBLK*BLKPRBUC THEN«, l3=0x27}
0x05da…05e5 Line {l1=0x09, l2=» BEGIN«, l3=0x09}
0x05e5…05f6 Line {l1=0x0f, l2=» IER:=-4;«, l3=0x0f}
0x05f6…060b Line {l1=0x13, l2=» EXIT (IOPEN)«, l3=0x13}
0x060b…0629 Line {l1=0x1c, l2=» (*FILEN ER IKKE ISF*)«, l3=0x1c}
0x0629…0633 Line {l1=0x08, l2=» END;«, l3=0x08}
0x0633…0669 Line {l1=0x34, l2=» IF FILEINIT THEN COPSEGS(Z,F,2,BUTSIZE,BUT,LÆS);«, l3=0x34}
0x0669…068b Line {l1=0x20, l2=» IF IER<>0 THEN EXIT (IOPEN);«, l3=0x20}
0x068b…06a1 Line {l1=0x14, l2=» IF FILEOPEN THEN«, l3=0x14}
0x06a1…06ac Line {l1=0x09, l2=» BEGIN«, l3=0x09}
0x06ac…06be Line {l1=0x10, l2=» IER:=-18;«, l3=0x10}
0x06be…06db Line {l1=0x1b, l2=» IF NOT FILEINIT THEN«, l3=0x1b}
0x06db…06e9 Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x06e9…06fd Line {l1=0x12, l2=» IER:=-19;«, l3=0x12}
0x06fd…0713 Line {l1=0x14, l2=» INITREC:=0;«, l3=0x14}
0x0713…072a Line {l1=0x15, l2=» BUCINUSE:=0;«, l3=0x15}
0x072a…0741 Line {l1=0x15, l2=» BLKINUSE:=0;«, l3=0x15}
0x0741…0757 Line {l1=0x14, l2=» RECINUSE:=0«, l3=0x14}
0x0757…0763 Line {l1=0x0a, l2=» END«, l3=0x0a}
0x0763…0770 Line {l1=0x0b, l2=» ELSE«, l3=0x0b}
0x0770…077e Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x077e…0795 Line {l1=0x15, l2=» BUCINUSE:=0;«, l3=0x15}
0x0795…07ac Line {l1=0x15, l2=» BLKINUSE:=0;«, l3=0x15}
0x07ac…07c3 Line {l1=0x15, l2=» RECINUSE:=0;«, l3=0x15}
0x07c3…07e1 Line {l1=0x1c, l2=» FOR I:=1 TO NBUC DO«, l3=0x1c}
0x07e1…07f1 Line {l1=0x0e, l2=» BEGIN«, l3=0x0e}
0x07f1…0819 Line {l1=0x26, l2=» BUC:=BUT+(I-1)*ENTRYSIZE+1;«, l3=0x26}
0x0819…084c Line {l1=0x31, l2=» COPSEGS(Z,F,Z(BUC-1),BLTSIZE,BLT,LÆS);«, l3=0x31}
0x084c…0875 Line {l1=0x27, l2=» IF IER<>0 THEN EXIT (IOPEN);«, l3=0x27}
0x0875…088b Line {l1=0x14, l2=» IER:=-18;«, l3=0x14}
0x088b…089f Line {l1=0x12, l2=» NUM:=0;«, l3=0x12}
0x089f…08c3 Line {l1=0x22, l2=» FOR J:=1 TO BLKPRBUC DO«, l3=0x22}
0x08c3…08d5 Line {l1=0x10, l2=» BEGIN«, l3=0x10}
0x08d5…0902 Line {l1=0x2b, l2=» BLKNUM:=BLT+1+(J-1)*ENTRYSIZE;«, l3=0x2b}
0x0902…0924 Line {l1=0x20, l2=» IF Z(BLKNUM)>0 THEN«, l3=0x20}
0x0924…0938 Line {l1=0x12, l2=» BEGIN«, l3=0x12}
0x0938…095c Line {l1=0x22, l2=» NUM:=NUM+Z(BLKNUM);«, l3=0x22}
0x095c…0982 Line {l1=0x24, l2=» BLKINUSE:=BLKINUSE+1;«, l3=0x24}
0x0982…099c Line {l1=0x18, l2=» K:=BLKNUM«, l3=0x18}
0x099c…09ae Line {l1=0x10, l2=» END«, l3=0x10}
0x09ae…09bf Line {l1=0x0f, l2=» END;«, l3=0x0f}
0x09bf…09d9 Line {l1=0x18, l2=» IF NUM>0 THEN«, l3=0x18}
0x09d9…09eb Line {l1=0x10, l2=» BEGIN«, l3=0x10}
0x09eb…0a11 Line {l1=0x24, l2=» RECINUSE:=RECINUSE+NUM;«, l3=0x24}
0x0a11…0a35 Line {l1=0x22, l2=» BUCINUSE:=BUCINUSE+1;«, l3=0x22}
0x0a35…0a5a Line {l1=0x23, l2=» FOR J:=1 TO KEYSIZE DO«, l3=0x23}
0x0a5a…0a7b Line {l1=0x1f, l2=» Z(BUC+J):=Z(K+J)«, l3=0x1f}
0x0a7b…0a8c Line {l1=0x0f, l2=» END;«, l3=0x0f}
0x0a8c…0aa6 Line {l1=0x18, l2=» BUTCHG:=TRUE;«, l3=0x18}
0x0aa6…0abe Line {l1=0x16, l2=» Z(BUC):=NUM«, l3=0x16}
0x0abe…0ad9 Line {l1=0x19, l2=» END; (*FOR I*)«, l3=0x19}
0x0ad9…0af3 Line {l1=0x18, l2=» BUCINZONE:=NBUC«, l3=0x18}
0x0af3…0aff Line {l1=0x0a, l2=» END«, l3=0x0a}
0x0aff…0b18 Line {l1=0x17, l2=» END; (*FILEOPEN*)«, l3=0x17}
0x0b18…0b2e Line {l1=0x14, l2=» FILEOPEN:=TRUE;«, l3=0x14}
0x0b2e…0b49 Line {l1=0x19, l2=» IF UPSTAT=SKRIV THEN«, l3=0x19}
0x0b49…0b55 Line {l1=0x0a, l2=» BEGIN«, l3=0x0a}
0x0b55…0b6a Line {l1=0x13, l2=» F^(1):=NBUC;«, l3=0x13}
0x0b6a…0b7f Line {l1=0x13, l2=» F^(2):=NBLK;«, l3=0x13}
0x0b7f…0b94 Line {l1=0x13, l2=» F^(3):=NREC;«, l3=0x13}
0x0b94…0bad Line {l1=0x17, l2=» F^(4):=BLKPRBUC;«, l3=0x17}
0x0bad…0bc6 Line {l1=0x17, l2=» F^(5):=RECPRBUC;«, l3=0x17}
0x0bc6…0bdf Line {l1=0x17, l2=» F^(6):=RECPRBLK;«, l3=0x17}
0x0bdf…0bf7 Line {l1=0x16, l2=» F^(7):=KEYFLDS;«, l3=0x16}
0x0bf7…0c0f Line {l1=0x16, l2=» F^(8):=FLHSIZE;«, l3=0x16}
0x0c0f…0c27 Line {l1=0x16, l2=» F^(9):=BUTSIZE;«, l3=0x16}
0x0c27…0c40 Line {l1=0x17, l2=» F^(10):=BLTSIZE;«, l3=0x17}
0x0c40…0c59 Line {l1=0x17, l2=» F^(11):=BLKSIZE;«, l3=0x17}
0x0c59…0c72 Line {l1=0x17, l2=» F^(12):=RECSIZE;«, l3=0x17}
0x0c72…0c8b Line {l1=0x17, l2=» F^(13):=KEYSIZE;«, l3=0x17}
0x0c8b…0ca5 Line {l1=0x18, l2=» F^(14):=SEGINFLH;«, l3=0x18}
0x0ca5…0cbf Line {l1=0x18, l2=» F^(15):=SEGINBUT;«, l3=0x18}
0x0cbf…0cd9 Line {l1=0x18, l2=» F^(16):=SEGINBUC;«, l3=0x18}
0x0cd9…0cf3 Line {l1=0x18, l2=» F^(17):=SEGINBLT;«, l3=0x18}
0x0cf3…0d0d Line {l1=0x18, l2=» F^(18):=SEGINBLK;«, l3=0x18}
0x0d0d…0d26 Line {l1=0x17, l2=» F^(19):=INITREC;«, l3=0x17}
0x0d26…0d40 Line {l1=0x18, l2=» F^(20):=BUCINUSE;«, l3=0x18}
0x0d40…0d5a Line {l1=0x18, l2=» F^(21):=BLKINUSE;«, l3=0x18}
0x0d5a…0d74 Line {l1=0x18, l2=» F^(22):=RECINUSE;«, l3=0x18}
0x0d74…0da7 Line {l1=0x31, l2=» IF FILEINIT THEN F^(23):=1 ELSE F^(23):=0;«, l3=0x31}
0x0da7…0dda Line {l1=0x31, l2=» IF FILEOPEN THEN F^(24):=1 ELSE F^(24):=0;«, l3=0x31}
0x0dda…0df3 Line {l1=0x17, l2=» FOR I:=1 TO 9 DO«, l3=0x17}
0x0df3…0e01 Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x0e01…0e22 Line {l1=0x1f, l2=» F^(22+I*3):=KEYPOS(I);«, l3=0x1f}
0x0e22…0e43 Line {l1=0x1f, l2=» F^(23+I*3):=KEYLNG(I);«, l3=0x1f}
0x0e43…0e63 Line {l1=0x1e, l2=» F^(24+I*3):=KEYSGN(I)«, l3=0x1e}
0x0e63…0e70 Line {l1=0x0b, l2=» END;«, l3=0x0b}
0x0e70…0e83 Line {l1=0x11, l2=» SEEK(F,1);«, l3=0x11}
0x0e83…0e93 Line {l1=0x0e, l2=» I:=IER;«, l3=0x0e}
0x0e93…0eaa Line {l1=0x15, l2=» IER:=IORESULT;«, l3=0x15}
0x0eaa…0ece Line {l1=0x22, l2=» IF IER<>0 THEN EXIT(IOPEN);«, l3=0x22}
0x0ece…0ede Line {l1=0x0e, l2=» PUT(F);«, l3=0x0e}
0x0ede…0ef5 Line {l1=0x15, l2=» IER:=IORESULT;«, l3=0x15}
0x0ef5…0f19 Line {l1=0x22, l2=» IF IER<>0 THEN EXIT(IOPEN);«, l3=0x22}
0x0f19…0f28 Line {l1=0x0d, l2=» IER:=I«, l3=0x0d}
0x0f28…0f32 Line {l1=0x08, l2=» END«, l3=0x08}
0x0f32…0f3a Line {l1=0x06, l2=» END«, l3=0x06}
0x0f3a…0f4b Line {l1=0x0f, l2=»END (*IOPEN*);«, l3=0x0f}
0x0f4b…0f60 00 00 45 45 4b 28 46 2c 31 29 3b 0e 12 20 20 20 20 49 45 52 3a ┆ EEK(F,1); IER:┆
0x0f60…0f80 3d 49 4f 52 45 53 55 4c 54 3b 12 1f 20 20 20 20 49 46 20 49 45 52 3c 3e 30 20 54 48 45 4e 20 45 ┆=IORESULT; IF IER<>0 THEN E┆
0x0f80…0fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ┆ ┆
[…0x1f…]