|
|
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«
└─⟦a3d38fea3⟧ Bits:30008985 PRODUKTION NBT.
└─⟦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…3fb Line {l1=0x4b, l2=»PROCEDURE COPSEGS;(*VAR Z:AR;VAR F:ISF;SEGADR,WORDS,WORDADR,INOUT:INTEGER*)«, l3=0x4b}
0x3fb…40b Line {l1=0x0e, l2=»VAR I:INTEGER;«, l3=0x0e}
0x40b…412 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x412…429 Line {l1=0x15, l2=» WORDADR:=WORDADR-1;«, l3=0x15}
0x429…43e Line {l1=0x13, l2=» IF INOUT=LÆS THEN«, l3=0x13}
0x43e…447 Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x447…45c Line {l1=0x13, l2=» SEEK(F,SEGADR);«, l3=0x13}
0x45c…470 Line {l1=0x12, l2=» IER:=IORESULT;«, l3=0x12}
0x470…493 Line {l1=0x21, l2=» IF IER<>0 THEN EXIT(COPSEGS);«, l3=0x21}
0x493…49f Line {l1=0x0a, l2=» REPEAT«, l3=0x0a}
0x49f…4af Line {l1=0x0e, l2=» GET(F);«, l3=0x0e}
0x4af…4cb Line {l1=0x1a, l2=» IF IORESULT<>0 THEN«, l3=0x1a}
0x4cb…4d9 Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x4d9…4f2 Line {l1=0x17, l2=» IER:=IORESULT;«, l3=0x17}
0x4f2…50a Line {l1=0x16, l2=» EXIT(COPSEGS)«, l3=0x16}
0x50a…517 Line {l1=0x0b, l2=» END;«, l3=0x0b}
0x517…531 Line {l1=0x18, l2=» IF WORDS>231 THEN«, l3=0x18}
0x531…53f Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x53f…571 Line {l1=0x30, l2=» FOR I:=1 TO 232 DO Z(WORDADR+I):=F^(I);«, l3=0x30}
0x571…591 Line {l1=0x1e, l2=» WORDADR:=WORDADR+232;«, l3=0x1e}
0x591…5cc Line {l1=0x39, l2=» END ELSE FOR I:=1 TO WORDS DO Z(WORDADR+I):=F^(I);«, l3=0x39}
0x5cc…5e5 Line {l1=0x17, l2=» WORDS:=WORDS-232«, l3=0x17}
0x5e5…5f8 Line {l1=0x11, l2=» UNTIL WORDS<1«, l3=0x11}
0x5f8…604 Line {l1=0x0a, l2=» END ELSE«, l3=0x0a}
0x604…60d Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x60d…622 Line {l1=0x13, l2=» SEEK(F,SEGADR);«, l3=0x13}
0x622…636 Line {l1=0x12, l2=» IER:=IORESULT;«, l3=0x12}
0x636…659 Line {l1=0x21, l2=» IF IER<>0 THEN EXIT(COPSEGS);«, l3=0x21}
0x659…665 Line {l1=0x0a, l2=» REPEAT«, l3=0x0a}
0x665…67f Line {l1=0x18, l2=» IF WORDS>231 THEN«, l3=0x18}
0x67f…68d Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x68d…6bf Line {l1=0x30, l2=» FOR I:=1 TO 232 DO F^(I):=Z(WORDADR+I);«, l3=0x30}
0x6bf…6df Line {l1=0x1e, l2=» WORDADR:=WORDADR+232;«, l3=0x1e}
0x6df…71a Line {l1=0x39, l2=» END ELSE FOR I:=1 TO WORDS DO F^(I):=Z(WORDADR+I);«, l3=0x39}
0x71a…734 Line {l1=0x18, l2=» WORDS:=WORDS-232;«, l3=0x18}
0x734…744 Line {l1=0x0e, l2=» PUT(F);«, l3=0x0e}
0x744…760 Line {l1=0x1a, l2=» IF IORESULT<>0 THEN«, l3=0x1a}
0x760…76e Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x76e…787 Line {l1=0x17, l2=» IER:=IORESULT;«, l3=0x17}
0x787…79f Line {l1=0x16, l2=» EXIT(COPSEGS)«, l3=0x16}
0x79f…7ab Line {l1=0x0a, l2=» END«, l3=0x0a}
0x7ab…7be Line {l1=0x11, l2=» UNTIL WORDS<1«, l3=0x11}
0x7be…7c5 Line {l1=0x05, l2=» END«, l3=0x05}
0x7c5…7cb Line {l1=0x04, l2=»END;«, l3=0x04}
0x7cb…7e0 00 00 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 ┆ ┆
[…0x5…]