|
|
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: 3744 (0xea0)
Types: TextFile
Notes: Mikados_K
Names: »EXCOMCOP.K«
└─⟦5630b2e42⟧ Bits:30009005 START APRIL 1985 aft april 1985 (PASCAL kildetekster)
└─⟦this⟧ »EXCOMCOP.K«
└─⟦6c21327e0⟧ Bits:30008986 LINIMATIC K-FILER (IKKE HELT UPTODTATE)
└─⟦this⟧ »EXCOMCOP.K«
(*$P*)
PROCEDURE EXTRACT;(*RECPOS,RESPOS:ZONEADR*)
(*UDTRÆK NØGLE AF POST I ZONEN, OG GEM I ZONEN*)
VAR I,
J,KP :INTEGER;
BEGIN
WITH FILEHEAD(CURRHEAD) DO
FOR I:=1 TO KEYFLDS DO
BEGIN
KP:=KEYPOS(I)+RECPOS-2;
FOR J:=1 TO KEYLNG(I) DO
BEGIN
Z(RESPOS):=Z(KP+J);
IF ABS(KEYSGN(I))=2 THEN
Z(RESPOS):=(Z(RESPOS) MOD 256)*256+Z(RESPOS) DIV 256;
RESPOS:=RESPOS+1
END
END
END;
PROCEDURE REXTRACT;(*RESPOS:ZONEADR*)
(*UDTRÆK NØGLE AF POST , OG GEM I ZONEN*)
VAR I,
J,KP :INTEGER;
BEGIN
WITH FILEHEAD(CURRHEAD) DO
FOR I:=1 TO KEYFLDS DO
BEGIN
KP:=KEYPOS(I)-1;
FOR J:=1 TO KEYLNG(I) DO
BEGIN
Z(RESPOS):=REC^(KP+J);
IF ABS(KEYSGN(I))=2 THEN
Z(RESPOS):=(Z(RESPOS) MOD 256)*256 + Z(RESPOS) DIV 256;
RESPOS:=RESPOS+1
END
END
END;
FUNCTION COMPARE;(*KEY1POS,KEY2POS:ZONEADR):INTEGER*)
(*SAMMENLIGNER TO NØGLER I ZONEN*)
VAR I,
J,KP:INTEGER;
BEGIN
KP:=0;
COMPARE:=0;
WITH FILEHEAD(CURRHEAD) DO
FOR I:=1 TO KEYFLDS DO
BEGIN
FOR J:=KP TO KP+KEYLNG(I)-1 DO
IF Z(KEY1POS+J)<>Z(KEY2POS+J) THEN
BEGIN
IF Z(KEY1POS+J)>Z(KEY2POS+J) THEN
COMPARE:=KEYSGN(I) ELSE
COMPARE:=-KEYSGN(I);
EXIT(COMPARE)
END;
KP:=KP+KEYLNG(I)
END
END;
(*$P*)
PROCEDURE COPSEGS;(*VAR F:ISF;SEGADR,WORDS,WORDADR:INTEGER;INOUT:ACCMODE*)
VAR I:INTEGER;
BEGIN
(*$C-*)
IF INOUT=LÆS THEN
BEGIN
SEEK(F,SEGADR);
IOC;
REPEAT
GET(F);
IOC;
IF WORDS>231 THEN
BEGIN
MOVELEFT(F^(1),Z(WORDADR),464);
(*FOR I:=1 TO 232 DO Z(WORDADR+I):=F^(I);*)
WORDADR:=WORDADR+232;
END ELSE MOVELEFT(F^(1),Z(WORDADR),2*WORDS);
(*FOR I:=1 TO WORDS DO Z(WORDADR+I):=F^(I);*)
WORDS:=WORDS-232
UNTIL WORDS<1
END ELSE
BEGIN
SEEK(F,SEGADR);
IOC;
REPEAT
IF WORDS>231 THEN
BEGIN
MOVELEFT(Z(WORDADR),F^(1),464);
(*FOR I:=1 TO 232 DO F^(I):=Z(WORDADR+I);*)
WORDADR:=WORDADR+232;
END ELSE MOVELEFT(Z(WORDADR),F^(1),2*WORDS);
(*FOR I:=1 TO WORDS DO F^(I):=Z(WORDADR+I);*)
WORDS:=WORDS-232;
PUT(F);
IOC
UNTIL WORDS<1
END
(*$C+*)
END;
0x000…008 Line {l1=0x06, l2=»(*$P*)«, l3=0x06}
0x008…036 Line {l1=0x2c, l2=»PROCEDURE EXTRACT;(*RECPOS,RESPOS:ZONEADR*) «, l3=0x2c}
0x036…068 Line {l1=0x30, l2=»(*UDTRÆK NØGLE AF POST I ZONEN, OG GEM I ZONEN*)«, l3=0x30}
0x068…070 Line {l1=0x06, l2=»VAR I,«, l3=0x06}
0x070…084 Line {l1=0x12, l2=» J,KP :INTEGER;«, l3=0x12}
0x084…08b Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x08b…0a9 Line {l1=0x1c, l2=» WITH FILEHEAD(CURRHEAD) DO«, l3=0x1c}
0x0a9…0cd Line {l1=0x22, l2=» FOR I:=1 TO KEYFLDS DO «, l3=0x22}
0x0cd…0f1 Line {l1=0x22, l2=» BEGIN «, l3=0x22}
0x0f1…115 Line {l1=0x22, l2=» KP:=KEYPOS(I)+RECPOS-2; «, l3=0x22}
0x115…139 Line {l1=0x22, l2=» FOR J:=1 TO KEYLNG(I) DO «, l3=0x22}
0x139…15d Line {l1=0x22, l2=» BEGIN «, l3=0x22}
0x15d…181 Line {l1=0x22, l2=» Z(RESPOS):=Z(KP+J); «, l3=0x22}
0x181…1a1 Line {l1=0x1e, l2=» IF ABS(KEYSGN(I))=2 THEN«, l3=0x1e}
0x1a1…1e0 Line {l1=0x3d, l2=» Z(RESPOS):=(Z(RESPOS) MOD 256)*256+Z(RESPOS) DIV 256;«, l3=0x3d}
0x1e0…204 Line {l1=0x22, l2=» RESPOS:=RESPOS+1 «, l3=0x22}
0x204…228 Line {l1=0x22, l2=» END «, l3=0x22}
0x228…24c Line {l1=0x22, l2=» END «, l3=0x22}
0x24c…252 Line {l1=0x04, l2=»END;«, l3=0x04}
0x252…255 Line {l1=0x01, l2=» «, l3=0x01}
0x255…27d Line {l1=0x26, l2=»PROCEDURE REXTRACT;(*RESPOS:ZONEADR*) «, l3=0x26}
0x27d…2a8 Line {l1=0x29, l2=»(*UDTRÆK NØGLE AF POST , OG GEM I ZONEN*)«, l3=0x29}
0x2a8…2b0 Line {l1=0x06, l2=»VAR I,«, l3=0x06}
0x2b0…2c4 Line {l1=0x12, l2=» J,KP :INTEGER;«, l3=0x12}
0x2c4…2cb Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x2cb…2e9 Line {l1=0x1c, l2=» WITH FILEHEAD(CURRHEAD) DO«, l3=0x1c}
0x2e9…30f Line {l1=0x24, l2=» FOR I:=1 TO KEYFLDS DO «, l3=0x24}
0x30f…335 Line {l1=0x24, l2=» BEGIN «, l3=0x24}
0x335…35b Line {l1=0x24, l2=» KP:=KEYPOS(I)-1; «, l3=0x24}
0x35b…381 Line {l1=0x24, l2=» FOR J:=1 TO KEYLNG(I) DO «, l3=0x24}
0x381…3a7 Line {l1=0x24, l2=» BEGIN «, l3=0x24}
0x3a7…3cd Line {l1=0x24, l2=» Z(RESPOS):=REC^(KP+J); «, l3=0x24}
0x3cd…3ed Line {l1=0x1e, l2=» IF ABS(KEYSGN(I))=2 THEN«, l3=0x1e}
0x3ed…42e Line {l1=0x3f, l2=» Z(RESPOS):=(Z(RESPOS) MOD 256)*256 + Z(RESPOS) DIV 256;«, l3=0x3f}
0x42e…454 Line {l1=0x24, l2=» RESPOS:=RESPOS+1 «, l3=0x24}
0x454…47a Line {l1=0x24, l2=» END «, l3=0x24}
0x47a…4a0 Line {l1=0x24, l2=» END «, l3=0x24}
0x4a0…4a6 Line {l1=0x04, l2=»END;«, l3=0x04}
0x4a6…4a9 Line {l1=0x01, l2=» «, l3=0x01}
0x4a9…4e1 Line {l1=0x36, l2=»FUNCTION COMPARE;(*KEY1POS,KEY2POS:ZONEADR):INTEGER*) «, l3=0x36}
0x4e1…505 Line {l1=0x22, l2=»(*SAMMENLIGNER TO NØGLER I ZONEN*)«, l3=0x22}
0x505…50d Line {l1=0x06, l2=»VAR I,«, l3=0x06}
0x50d…520 Line {l1=0x11, l2=» J,KP:INTEGER;«, l3=0x11}
0x520…527 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x527…531 Line {l1=0x08, l2=» KP:=0;«, l3=0x08}
0x531…540 Line {l1=0x0d, l2=» COMPARE:=0;«, l3=0x0d}
0x540…55e Line {l1=0x1c, l2=» WITH FILEHEAD(CURRHEAD) DO«, l3=0x1c}
0x55e…593 Line {l1=0x33, l2=» FOR I:=1 TO KEYFLDS DO «, l3=0x33}
0x593…5c8 Line {l1=0x33, l2=» BEGIN «, l3=0x33}
0x5c8…5fd Line {l1=0x33, l2=» FOR J:=KP TO KP+KEYLNG(I)-1 DO «, l3=0x33}
0x5fd…632 Line {l1=0x33, l2=» IF Z(KEY1POS+J)<>Z(KEY2POS+J) THEN «, l3=0x33}
0x632…667 Line {l1=0x33, l2=» BEGIN «, l3=0x33}
0x667…69c Line {l1=0x33, l2=» IF Z(KEY1POS+J)>Z(KEY2POS+J) THEN «, l3=0x33}
0x69c…6cd Line {l1=0x2f, l2=» COMPARE:=KEYSGN(I) ELSE «, l3=0x2f}
0x6cd…6fe Line {l1=0x2f, l2=» COMPARE:=-KEYSGN(I); «, l3=0x2f}
0x6fe…733 Line {l1=0x33, l2=» EXIT(COMPARE) «, l3=0x33}
0x733…768 Line {l1=0x33, l2=» END; «, l3=0x33}
0x768…79d Line {l1=0x33, l2=» KP:=KP+KEYLNG(I) «, l3=0x33}
0x79d…7d2 Line {l1=0x33, l2=» END «, l3=0x33}
0x7d2…7d8 Line {l1=0x04, l2=»END;«, l3=0x04}
0x7d8…7e0 Line {l1=0x06, l2=»(*$P*)«, l3=0x06}
0x7e0…82d Line {l1=0x4b, l2=»PROCEDURE COPSEGS;(*VAR F:ISF;SEGADR,WORDS,WORDADR:INTEGER;INOUT:ACCMODE*) «, l3=0x4b}
0x82d…83d Line {l1=0x0e, l2=»VAR I:INTEGER;«, l3=0x0e}
0x83d…844 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x844…84f Line {l1=0x09, l2=» (*$C-*)«, l3=0x09}
0x84f…864 Line {l1=0x13, l2=» IF INOUT=LÆS THEN«, l3=0x13}
0x864…86d Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x86d…882 Line {l1=0x13, l2=» SEEK(F,SEGADR);«, l3=0x13}
0x882…88c Line {l1=0x08, l2=» IOC;«, l3=0x08}
0x88c…898 Line {l1=0x0a, l2=» REPEAT«, l3=0x0a}
0x898…8d3 Line {l1=0x39, l2=» GET(F); «, l3=0x39}
0x8d3…8df Line {l1=0x0a, l2=» IOC;«, l3=0x0a}
0x8df…91a Line {l1=0x39, l2=» IF WORDS>231 THEN «, l3=0x39}
0x91a…955 Line {l1=0x39, l2=» BEGIN «, l3=0x39}
0x955…97e Line {l1=0x27, l2=» MOVELEFT(F^(1),Z(WORDADR),464);«, l3=0x27}
0x97e…9b9 Line {l1=0x39, l2=» (*FOR I:=1 TO 232 DO Z(WORDADR+I):=F^(I);*) «, l3=0x39}
0x9b9…9f4 Line {l1=0x39, l2=» WORDADR:=WORDADR+232; «, l3=0x39}
0x9f4…a28 Line {l1=0x32, l2=» END ELSE MOVELEFT(F^(1),Z(WORDADR),2*WORDS);«, l3=0x32}
0xa28…a64 Line {l1=0x3a, l2=» (*FOR I:=1 TO WORDS DO Z(WORDADR+I):=F^(I);*)«, l3=0x3a}
0xa64…a9f Line {l1=0x39, l2=» WORDS:=WORDS-232 «, l3=0x39}
0xa9f…ab2 Line {l1=0x11, l2=» UNTIL WORDS<1«, l3=0x11}
0xab2…abe Line {l1=0x0a, l2=» END ELSE«, l3=0x0a}
0xabe…ac7 Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0xac7…adc Line {l1=0x13, l2=» SEEK(F,SEGADR);«, l3=0x13}
0xadc…ae6 Line {l1=0x08, l2=» IOC;«, l3=0x08}
0xae6…af2 Line {l1=0x0a, l2=» REPEAT«, l3=0x0a}
0xaf2…b2d Line {l1=0x39, l2=» IF WORDS>231 THEN «, l3=0x39}
0xb2d…b68 Line {l1=0x39, l2=» BEGIN «, l3=0x39}
0xb68…b91 Line {l1=0x27, l2=» MOVELEFT(Z(WORDADR),F^(1),464);«, l3=0x27}
0xb91…bcc Line {l1=0x39, l2=» (*FOR I:=1 TO 232 DO F^(I):=Z(WORDADR+I);*) «, l3=0x39}
0xbcc…c07 Line {l1=0x39, l2=» WORDADR:=WORDADR+232; «, l3=0x39}
0xc07…c3b Line {l1=0x32, l2=» END ELSE MOVELEFT(Z(WORDADR),F^(1),2*WORDS);«, l3=0x32}
0xc3b…c77 Line {l1=0x3a, l2=» (*FOR I:=1 TO WORDS DO F^(I):=Z(WORDADR+I);*)«, l3=0x3a}
0xc77…cb2 Line {l1=0x39, l2=» WORDS:=WORDS-232; «, l3=0x39}
0xcb2…ced Line {l1=0x39, l2=» PUT(F); «, l3=0x39}
0xced…cf9 Line {l1=0x0a, l2=» IOC «, l3=0x0a}
0xcf9…d0c Line {l1=0x11, l2=» UNTIL WORDS<1«, l3=0x11}
0xd0c…d13 Line {l1=0x05, l2=» END«, l3=0x05}
0xd13…d1e Line {l1=0x09, l2=» (*$C+*)«, l3=0x09}
0xd1e…d24 Line {l1=0x04, l2=»END;«, l3=0x04}
0xd24…d40 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 39 39 20 20 20 20 20 20 42 ┆ 99 B┆
0xd40…d60 45 47 49 4e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ┆EGIN ┆
0xd60…d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 39 39 20 20 20 20 20 20 20 20 49 45 52 3a ┆ 99 IER:┆
0xd80…da0 3d 49 4f 52 45 53 55 4c 54 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ┆=IORESULT; ┆
0xda0…dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 39 39 20 20 20 20 20 20 20 20 45 58 49 54 28 43 4f 50 53 ┆ 99 EXIT(COPS┆
0xdc0…de0 45 47 53 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ┆EGS) ┆
0xde0…e00 20 20 20 20 20 20 20 20 39 39 20 20 20 20 20 20 45 4e 44 20 20 20 20 20 20 20 20 20 20 20 20 20 ┆ 99 END ┆
0xe00…e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ┆ ┆
0xe20…e40 20 20 20 39 11 20 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 ┆ 9 UNTIL WORDS<1 END E┆
0xe40…e60 4e 44 3b 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 ┆ND; cccccccccccccccccccccccccc┆
0xe60…e80 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┆
[…0x1…]
▶06◀(*$P*)▶06◀,PROCEDURE EXTRACT;(*RECPOS,RESPOS:ZONEADR*) ,0(*UDTRÆK NØGLE AF POST I ZONEN, OG GEM I ZONEN*)0▶06◀VAR I,▶06◀▶12◀ J,KP :INTEGER;▶12◀▶05◀BEGIN▶05◀▶1c◀ WITH FILEHEAD(CURRHEAD) DO▶1c◀" FOR I:=1 TO KEYFLDS DO "" BEGIN "" KP:=KEYPOS(I)+RECPOS-2; "" FOR J:=1 TO KEYLNG(I) DO "" BEGIN "" Z(RESPOS):=Z(KP+J); "▶1e◀ IF ABS(KEYSGN(I))=2 THEN▶1e◀= Z(RESPOS):=(Z(RESPOS) MOD 256)*256+Z(RESPOS) DIV 256;=" RESPOS:=RESPOS+1 "" END "" END "▶04◀END;▶04◀▶01◀ ▶01◀&PROCEDURE REXTRACT;(*RESPOS:ZONEADR*) &)(*UDTRÆK NØGLE AF POST , OG GEM I ZONEN*))▶06◀VAR I,▶06◀▶12◀ J,KP :INTEGER;▶12◀▶05◀BEGIN▶05◀▶1c◀ WITH FILEHEAD(CURRHEAD) DO▶1c◀$ FOR I:=1 TO KEYFLDS DO $$ BEGIN $$ KP:=KEYPOS(I)-1; $$ FOR J:=1 TO KEYLNG(I) DO $$ BEGIN $$ Z(RESPOS):=REC^(KP+J); $▶1e◀ IF ABS(KEYSGN(I))=2 THEN▶1e◀? Z(RESPOS):=(Z(RESPOS) MOD 256)*256 + Z(RESPOS) DIV 256;?$ RESPOS:=RESPOS+1 $$ END $$ END $▶04◀END;▶04◀▶01◀ ▶01◀6FUNCTION COMPARE;(*KEY1POS,KEY2POS:ZONEADR):INTEGER*) 6"(*SAMMENLIGNER TO NØGLER I ZONEN*)"▶06◀VAR I,▶06◀▶11◀ J,KP:INTEGER;▶11◀▶05◀BEGIN▶05◀▶08◀ KP:=0;▶08◀\r COMPARE:=0;\r▶1c◀ WITH FILEHEAD(CURRHEAD) DO▶1c◀3 FOR I:=1 TO KEYFLDS DO 33 BEGIN 33 FOR J:=KP TO KP+KEYLNG(I)-1 DO 33 IF Z(KEY1POS+J)<>Z(KEY2POS+J) THEN 33 BEGIN 33 IF Z(KEY1POS+J)>Z(KEY2POS+J) THEN 3/ COMPARE:=KEYSGN(I) ELSE // COMPARE:=-KEYSGN(I); /3 EXIT(COMPARE) 33 END; 33 KP:=KP+KEYLNG(I) 33 END 3▶04◀END;▶04◀▶06◀(*$P*)▶06◀KPROCEDURE COPSEGS;(*VAR F:ISF;SEGADR,WORDS,WORDADR:INTEGER;INOUT:ACCMODE*) K▶0e◀VAR I:INTEGER;▶0e◀▶05◀BEGIN▶05◀ (*$C-*) ▶13◀ IF INOUT=LÆS THEN▶13◀▶07◀ BEGIN▶07◀▶13◀ SEEK(F,SEGADR);▶13◀▶08◀ IOC;▶08◀
REPEAT
9 GET(F); 9
IOC;
9 IF WORDS>231 THEN 99 BEGIN 9' MOVELEFT(F^(1),Z(WORDADR),464);'9 (*FOR I:=1 TO 232 DO Z(WORDADR+I):=F^(I);*) 99 WORDADR:=WORDADR+232; 92 END ELSE MOVELEFT(F^(1),Z(WORDADR),2*WORDS);2: (*FOR I:=1 TO WORDS DO Z(WORDADR+I):=F^(I);*):9 WORDS:=WORDS-232 9▶11◀ UNTIL WORDS<1▶11◀
END ELSE
▶07◀ BEGIN▶07◀▶13◀ SEEK(F,SEGADR);▶13◀▶08◀ IOC;▶08◀
REPEAT
9 IF WORDS>231 THEN 99 BEGIN 9' MOVELEFT(Z(WORDADR),F^(1),464);'9 (*FOR I:=1 TO 232 DO F^(I):=Z(WORDADR+I);*) 99 WORDADR:=WORDADR+232; 92 END ELSE MOVELEFT(Z(WORDADR),F^(1),2*WORDS);2: (*FOR I:=1 TO WORDS DO F^(I):=Z(WORDADR+I);*):9 WORDS:=WORDS-232; 99 PUT(F); 9
IOC
▶11◀ UNTIL WORDS<1▶11◀▶05◀ END▶05◀ (*$C+*) ▶04◀END;▶04◀▶00◀▶00◀ 99 BEGIN 99 IER:=IORESULT; 99 EXIT(COPSEGS) 99 END 9▶11◀ UNTIL WORDS<1▶11◀▶05◀ END▶05◀▶04◀END;▶04◀▶00◀▶00◀cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc