|
|
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: »EXCOMCOP.K«
└─⟦6b1c9961a⟧ Bits:30008989 INDPERM P1
└─⟦this⟧ »EXCOMCOP.K«
PROCEDURE EXTRACT(VAR ZO:ISFHEAD;VAR XREC,RESULT:AR;RECPOS,RESPOS:INTEGER);
VAR I,J,KP:INTEGER;
BEGIN
WITH ZO DO
FOR I:=1 TO KEYFLDS DO
BEGIN
KP:=KEYPOS(I)+RECPOS-2;
FOR J:=1 TO KEYLNG(I) DO
BEGIN
RESULT(RESPOS):=XREC(KP+J);
RESPOS:=RESPOS+1
END
END
END;
FUNCTION COMPARE(VAR ZO:ISFHEAD;VAR CKEY1,CKEY2:AR;KEY1POS,KEY2POS:INTEGER)
:INTEGER;
VAR I,J,KP:INTEGER;
BEGIN
KP:=0;
COMPARE:=0;
WITH ZO DO
FOR I:=1 TO KEYFLDS DO
BEGIN
FOR J:=KP TO KP+KEYLNG(I)-1 DO
IF CKEY1(KEY1POS+J)<>CKEY2(KEY2POS+J) THEN
BEGIN
IF CKEY1(KEY1POS+J)>CKEY2(KEY2POS+J) THEN
COMPARE:=KEYSGN(I) ELSE
COMPARE:=-KEYSGN(I);
EXIT(COMPARE)
END;
KP:=KP+KEYLNG(I)
END
END;
PROCEDURE COPSEGS(VAR Z:AR;VAR F:ISF;SEGADR,WORDS,WORDADR,INOUT:INTEGER);
VAR I:INTEGER;
BEGIN
WORDADR:=WORDADR-1;
IF INOUT=LÆS THEN
BEGIN
SEEK(F,SEGADR);
IER:=IORESULT;
IF IER<>0 THEN EXIT(COPSEGS);
REPEAT
GET(F);
IF IORESULT<>0 THEN
BEGIN
IER:=IORESULT;
EXIT(COPSEGS)
END;
IF WORDS>231 THEN
BEGIN
FOR I:=1 TO 232 DO Z(WORDADR+I):=F^(I);
WORDADR:=WORDADR+232;
END ELSE FOR I:=1 TO WORDS DO Z(WORDADR+I):=F^(I);
WORDS:=WORDS-232
UNTIL WORDS<1
END ELSE
BEGIN
SEEK(F,SEGADR);
IER:=IORESULT;
IF IER<>0 THEN EXIT(COPSEGS);
REPEAT
IF WORDS>231 THEN
BEGIN
FOR I:=1 TO 232 DO F^(I):=Z(WORDADR+I);
WORDADR:=WORDADR+232;
END ELSE FOR I:=1 TO WORDS DO F^(I):=Z(WORDADR+I);
WORDS:=WORDS-232;
PUT(F);
IF IORESULT<>0 THEN
BEGIN
IER:=IORESULT;
EXIT(COPSEGS)
END
UNTIL WORDS<1
END
END;
0x000…04d Line {l1=0x4b, l2=»PROCEDURE EXTRACT(VAR ZO:ISFHEAD;VAR XREC,RESULT:AR;RECPOS,RESPOS:INTEGER);«, l3=0x4b}
0x04d…062 Line {l1=0x13, l2=»VAR I,J,KP:INTEGER;«, l3=0x13}
0x062…069 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x069…077 Line {l1=0x0c, l2=» WITH ZO DO«, l3=0x0c}
0x077…096 Line {l1=0x1d, l2=» FOR I:=1 TO KEYFLDS DO«, l3=0x1d}
0x096…0a4 Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x0a4…0c6 Line {l1=0x20, l2=» KP:=KEYPOS(I)+RECPOS-2;«, l3=0x20}
0x0c6…0e9 Line {l1=0x21, l2=» FOR J:=1 TO KEYLNG(I) DO«, l3=0x21}
0x0e9…0f9 Line {l1=0x0e, l2=» BEGIN«, l3=0x0e}
0x0f9…121 Line {l1=0x26, l2=» RESULT(RESPOS):=XREC(KP+J);«, l3=0x26}
0x121…13e Line {l1=0x1b, l2=» RESPOS:=RESPOS+1«, l3=0x1b}
0x13e…14c Line {l1=0x0c, l2=» END«, l3=0x0c}
0x14c…158 Line {l1=0x0a, l2=» END«, l3=0x0a}
0x158…15e Line {l1=0x04, l2=»END;«, l3=0x04}
0x15e…161 Line {l1=0x01, l2=» «, l3=0x01}
[…0x1…]
0x164…1b1 Line {l1=0x4b, l2=»FUNCTION COMPARE(VAR ZO:ISFHEAD;VAR CKEY1,CKEY2:AR;KEY1POS,KEY2POS:INTEGER)«, l3=0x4b}
0x1b1…1cd Line {l1=0x1a, l2=» :INTEGER;«, l3=0x1a}
0x1cd…1e2 Line {l1=0x13, l2=»VAR I,J,KP:INTEGER;«, l3=0x13}
0x1e2…1e9 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x1e9…1f3 Line {l1=0x08, l2=» KP:=0;«, l3=0x08}
0x1f3…202 Line {l1=0x0d, l2=» COMPARE:=0;«, l3=0x0d}
0x202…210 Line {l1=0x0c, l2=» WITH ZO DO«, l3=0x0c}
0x210…22f Line {l1=0x1d, l2=» FOR I:=1 TO KEYFLDS DO«, l3=0x1d}
0x22f…23d Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x23d…266 Line {l1=0x27, l2=» FOR J:=KP TO KP+KEYLNG(I)-1 DO«, l3=0x27}
0x266…29d Line {l1=0x35, l2=» IF CKEY1(KEY1POS+J)<>CKEY2(KEY2POS+J) THEN«, l3=0x35}
0x29d…2b3 Line {l1=0x14, l2=» BEGIN«, l3=0x14}
0x2b3…2ef Line {l1=0x3a, l2=» IF CKEY1(KEY1POS+J)>CKEY2(KEY2POS+J) THEN«, l3=0x3a}
0x2ef…31f Line {l1=0x2e, l2=» COMPARE:=KEYSGN(I) ELSE«, l3=0x2e}
0x31f…34c Line {l1=0x2b, l2=» COMPARE:=-KEYSGN(I);«, l3=0x2b}
0x34c…36c Line {l1=0x1e, l2=» EXIT(COMPARE)«, l3=0x1e}
0x36c…381 Line {l1=0x13, l2=» END;«, l3=0x13}
0x381…39c Line {l1=0x19, l2=» KP:=KP+KEYLNG(I)«, l3=0x19}
0x39c…3a8 Line {l1=0x0a, l2=» END«, l3=0x0a}
0x3a8…3ae Line {l1=0x04, l2=»END;«, l3=0x04}
0x3ae…3f9 Line {l1=0x49, l2=»PROCEDURE COPSEGS(VAR Z:AR;VAR F:ISF;SEGADR,WORDS,WORDADR,INOUT:INTEGER);«, l3=0x49}
0x3f9…409 Line {l1=0x0e, l2=»VAR I:INTEGER;«, l3=0x0e}
0x409…410 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x410…427 Line {l1=0x15, l2=» WORDADR:=WORDADR-1;«, l3=0x15}
0x427…43c Line {l1=0x13, l2=» IF INOUT=LÆS THEN«, l3=0x13}
0x43c…445 Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x445…45a Line {l1=0x13, l2=» SEEK(F,SEGADR);«, l3=0x13}
0x45a…46e Line {l1=0x12, l2=» IER:=IORESULT;«, l3=0x12}
0x46e…491 Line {l1=0x21, l2=» IF IER<>0 THEN EXIT(COPSEGS);«, l3=0x21}
0x491…49d Line {l1=0x0a, l2=» REPEAT«, l3=0x0a}
0x49d…4ad Line {l1=0x0e, l2=» GET(F);«, l3=0x0e}
0x4ad…4c9 Line {l1=0x1a, l2=» IF IORESULT<>0 THEN«, l3=0x1a}
0x4c9…4d7 Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x4d7…4f0 Line {l1=0x17, l2=» IER:=IORESULT;«, l3=0x17}
0x4f0…508 Line {l1=0x16, l2=» EXIT(COPSEGS)«, l3=0x16}
0x508…515 Line {l1=0x0b, l2=» END;«, l3=0x0b}
0x515…52f Line {l1=0x18, l2=» IF WORDS>231 THEN«, l3=0x18}
0x52f…53d Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x53d…56f Line {l1=0x30, l2=» FOR I:=1 TO 232 DO Z(WORDADR+I):=F^(I);«, l3=0x30}
0x56f…58f Line {l1=0x1e, l2=» WORDADR:=WORDADR+232;«, l3=0x1e}
0x58f…5ca Line {l1=0x39, l2=» END ELSE FOR I:=1 TO WORDS DO Z(WORDADR+I):=F^(I);«, l3=0x39}
0x5ca…5e3 Line {l1=0x17, l2=» WORDS:=WORDS-232«, l3=0x17}
0x5e3…5f6 Line {l1=0x11, l2=» UNTIL WORDS<1«, l3=0x11}
0x5f6…602 Line {l1=0x0a, l2=» END ELSE«, l3=0x0a}
0x602…60b Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x60b…620 Line {l1=0x13, l2=» SEEK(F,SEGADR);«, l3=0x13}
0x620…634 Line {l1=0x12, l2=» IER:=IORESULT;«, l3=0x12}
0x634…657 Line {l1=0x21, l2=» IF IER<>0 THEN EXIT(COPSEGS);«, l3=0x21}
0x657…663 Line {l1=0x0a, l2=» REPEAT«, l3=0x0a}
0x663…67d Line {l1=0x18, l2=» IF WORDS>231 THEN«, l3=0x18}
0x67d…68b Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x68b…6bd Line {l1=0x30, l2=» FOR I:=1 TO 232 DO F^(I):=Z(WORDADR+I);«, l3=0x30}
0x6bd…6dd Line {l1=0x1e, l2=» WORDADR:=WORDADR+232;«, l3=0x1e}
0x6dd…718 Line {l1=0x39, l2=» END ELSE FOR I:=1 TO WORDS DO F^(I):=Z(WORDADR+I);«, l3=0x39}
0x718…732 Line {l1=0x18, l2=» WORDS:=WORDS-232;«, l3=0x18}
0x732…742 Line {l1=0x0e, l2=» PUT(F);«, l3=0x0e}
0x742…75e Line {l1=0x1a, l2=» IF IORESULT<>0 THEN«, l3=0x1a}
0x75e…76c Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x76c…785 Line {l1=0x17, l2=» IER:=IORESULT;«, l3=0x17}
0x785…79d Line {l1=0x16, l2=» EXIT(COPSEGS)«, l3=0x16}
0x79d…7a9 Line {l1=0x0a, l2=» END«, l3=0x0a}
0x7a9…7bc Line {l1=0x11, l2=» UNTIL WORDS<1«, l3=0x11}
0x7bc…7c3 Line {l1=0x05, l2=» END«, l3=0x05}
0x7c3…7c9 Line {l1=0x04, l2=»END;«, l3=0x04}
0x7c9…7e0 00 00 20 20 20 20 50 55 54 28 46 29 3b 0e 1a 20 20 20 20 20 20 20 49 ┆ PUT(F); I┆
0x7e0…800 46 20 49 4f 52 45 53 55 4c 54 3c 3e 30 20 54 48 45 4e 1a 0c 20 20 20 20 20 20 20 42 45 47 49 4e ┆F IORESULT<>0 THEN BEGIN┆
0x800…820 0c 17 20 20 20 20 20 20 20 20 20 49 45 52 3a 3d 49 4f 52 45 53 55 4c 54 3b 17 16 20 20 20 20 20 ┆ IER:=IORESULT; ┆
0x820…840 20 20 20 20 45 58 49 54 28 43 4f 50 53 45 47 53 29 16 0a 20 20 20 20 20 20 20 45 4e 44 0a 11 20 ┆ EXIT(COPSEGS) END ┆
0x840…860 20 20 20 55 4e 54 49 4c 20 57 4f 52 44 53 3c 31 11 05 20 20 45 4e 44 05 04 45 4e 44 3b 04 00 00 ┆ UNTIL WORDS<1 END END; ┆
0x860…880 2d 32 33 32 3b 18 0e 20 20 20 20 20 20 20 50 55 54 28 46 29 3b 0e 1a 20 20 20 20 20 20 20 49 46 ┆-232; PUT(F); IF┆
0x880…8a0 20 49 4f 52 45 53 55 4c 54 3c 3e 30 20 54 48 45 4e 1a 0c 20 20 20 20 20 20 20 42 45 47 49 4e 0c ┆ IORESULT<>0 THEN BEGIN ┆
0x8a0…8c0 17 20 20 20 20 20 20 20 20 20 49 45 52 3a 3d 49 4f 52 45 53 55 4c 54 3b 17 16 20 20 20 20 20 20 ┆ IER:=IORESULT; ┆
0x8c0…8e0 20 20 20 45 58 49 54 28 43 4f 50 53 45 47 53 29 16 0a 20 20 20 20 20 20 20 45 4e 44 0a 11 20 20 ┆ EXIT(COPSEGS) END ┆
0x8e0…900 20 20 55 4e 54 49 4c 20 57 4f 52 44 53 3c 31 11 05 20 20 45 4e 44 05 04 45 4e 44 3b 04 00 00 00 ┆ UNTIL WORDS<1 END END; ┆
0x900…920 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 ┆ ┆
[…0x4…]
0x9a0…9c0 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 45 ┆ E┆