|
|
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: »CREATE.K«
└─⟦6b1c9961a⟧ Bits:30008989 INDPERM P1
└─⟦this⟧ »CREATE.K«
PROCEDURE CREATE(VAR FILENAME:STRING;NREC,RECSIZE,KEYFLDS:INTEGER;
VAR KEYS:KEYDESCRIPTION;
VAR IER:INTEGER);
VAR NBUC,NBLK,BLKPRBUC,RECPRBUC,RECPRBLK,FLHSIZE,BUTSIZE,BLTSIZE,BLKSIZE,
KEYSIZE,SEGINFLH,SEGINBUT,SEGINBUC,SEGINBLT,SEGINBLK,
FILESIZE,
I,J,TABLESIZE:INTEGER;
F:ISF;
NOOFSEGS:STRING(4);
BEGIN
FOR I:=1 TO 232 DO F^(I):=0;
IER:=0;
IF (NREC<1) OR (RECSIZE<1) OR (KEYFLDS<1) THEN IER:=-5;
IF KEYFLDS>9 THEN IER:=-14;
IF IER<>0 THEN EXIT(CREATE);
KEYSIZE:=0;
FOR I:=1 TO KEYFLDS DO
BEGIN
IF (KEYS(I,1)<1) OR (KEYS(I,1)+KEYS(I,2)>RECSIZE+1)OR(KEYS(I,3)=0)THEN
BEGIN
IER:=-15;
EXIT(CREATE)
END;
KEYSIZE:=KEYSIZE+KEYS(I,2)
END;
RECPRBLK:=TRUNC(EXP(LN(NREC/SQR(RECSIZE)*SQR(KEYSIZE+2))/3));
IF RECPRBLK=0 THEN RECPRBLK:=1;
SEGINBLK:=(RECSIZE*RECPRBLK-1) DIV 232 + 1;
RECPRBLK:=SEGINBLK*232 DIV RECSIZE;
NBLK :=(NREC-1) DIV RECPRBLK +1;
BLKPRBUC:=TRUNC(SQRT(NBLK));
NBUC:=(NBLK-1) DIV BLKPRBUC +1;
NBLK:=BLKPRBUC*NBUC;
NREC:=NBLK*RECPRBLK;
RECPRBUC:=RECPRBLK*BLKPRBUC;
FLHSIZE:=51;
BUTSIZE:=NBUC*(KEYSIZE+2);
BLTSIZE:=BLKPRBUC*(KEYSIZE+2);
BLKSIZE:=RECPRBLK*RECSIZE;
SEGINFLH:=(FLHSIZE-1) DIV 232 +1;
SEGINBUT:=(BUTSIZE-1) DIV 232 +1;
SEGINBLT:=(BLTSIZE-1) DIV 232 +1;
SEGINBUC:=SEGINBLT+SEGINBLK*BLKPRBUC;
FILESIZE:=TRUNC(((SEGINFLH+SEGINBUT+SEGINBUC*NBUC)*464.0+32)/256)+2;
TABLESIZE:=BUTSIZE+BLTSIZE+BLKSIZE+RECSIZE+KEYSIZE;
NOOFSEGS:=' ';
FOR I:=4 DOWNTO 1 DO
BEGIN
NOOFSEGS(I):=CHR(FILESIZE MOD 10 + 48);
FILESIZE:=FILESIZE DIV 10
END;
FILENAME:=CONCAT(FILENAME,':',NOOFSEGS,':I');
WRITELN(LIST,'FILE CREATED: ',FILENAME);
WRITELN(LIST,'NBUC ',NBUC,' NBLK ',NBLK,' NREC ',NREC);
WRITELN(LIST,'BLKPRBUC ',BLKPRBUC,' RECPRBUC ',RECPRBUC,' RECPRBLK ',
RECPRBLK);
WRITELN(LIST,'KEYFLDS ',KEYFLDS,' FLHSIZE ',FLHSIZE,' BUTSIZE ',
BUTSIZE);
WRITELN(LIST,'BLTSIZE ',BLTSIZE,' BLKSIZE ',BLKSIZE,' RECSIZE ',
RECSIZE);
WRITELN(LIST,'KEYSIZE ',KEYSIZE,' SEGINFLH ',SEGINFLH,' SEGINBUT ',
SEGINBUT);
WRITELN(LIST,'SEGINBUC ',SEGINBUC,' SEGINBLT ',SEGINBLT,' SEGINBLK ',
SEGINBLK);
WRITELN(LIST,'TABLESIZE ',TABLESIZE,' FILESIZE ',FILESIZE);WRITELN(LIST);
REWRITE(F,FILENAME);
IER:=IORESULT;
IF IER<>0 THEN EXIT(CREATE);
WRITELN(LIST,'FILE CREATED');
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;
FOR I:=19 TO 24 DO F^(I):=0;
FOR I:=1 TO 9 DO
FOR J:=1 TO 3 DO F^(21+3*I+J):=KEYS(I,J);
SEEK(F,1);
IF IORESULT<>0 THEN
BEGIN
IER:=IORESULT;
EXIT(CREATE)
END;
PUT(F);
IER:=IORESULT;
WRITELN(LIST,'FILE CREATED, RESULT: ',IER)
END;
0x000…044 Line {l1=0x42, l2=»PROCEDURE CREATE(VAR FILENAME:STRING;NREC,RECSIZE,KEYFLDS:INTEGER;«, l3=0x42}
0x044…06f Line {l1=0x29, l2=» VAR KEYS:KEYDESCRIPTION;«, l3=0x29}
0x06f…093 Line {l1=0x22, l2=» VAR IER:INTEGER);«, l3=0x22}
0x093…0de Line {l1=0x49, l2=»VAR NBUC,NBLK,BLKPRBUC,RECPRBUC,RECPRBLK,FLHSIZE,BUTSIZE,BLTSIZE,BLKSIZE,«, l3=0x49}
0x0de…119 Line {l1=0x39, l2=» KEYSIZE,SEGINFLH,SEGINBUT,SEGINBUC,SEGINBLT,SEGINBLK,«, l3=0x39}
0x119…128 Line {l1=0x0d, l2=» FILESIZE,«, l3=0x0d}
0x128…144 Line {l1=0x1a, l2=» I,J,TABLESIZE:INTEGER;«, l3=0x1a}
0x144…150 Line {l1=0x0a, l2=» F:ISF;«, l3=0x0a}
0x150…169 Line {l1=0x17, l2=» NOOFSEGS:STRING(4);«, l3=0x17}
0x169…170 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x170…190 Line {l1=0x1e, l2=» FOR I:=1 TO 232 DO F^(I):=0;«, l3=0x1e}
0x190…19b Line {l1=0x09, l2=» IER:=0;«, l3=0x09}
0x19b…1d6 Line {l1=0x39, l2=» IF (NREC<1) OR (RECSIZE<1) OR (KEYFLDS<1) THEN IER:=-5;«, l3=0x39}
0x1d6…1f5 Line {l1=0x1d, l2=» IF KEYFLDS>9 THEN IER:=-14;«, l3=0x1d}
0x1f5…215 Line {l1=0x1e, l2=» IF IER<>0 THEN EXIT(CREATE);«, l3=0x1e}
0x215…224 Line {l1=0x0d, l2=» KEYSIZE:=0;«, l3=0x0d}
0x224…23e Line {l1=0x18, l2=» FOR I:=1 TO KEYFLDS DO«, l3=0x18}
0x23e…247 Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x247…296 Line {l1=0x4d, l2=» IF (KEYS(I,1)<1) OR (KEYS(I,1)+KEYS(I,2)>RECSIZE+1)OR(KEYS(I,3)=0)THEN«, l3=0x4d}
0x296…2a4 Line {l1=0x0c, l2=» BEGIN«, l3=0x0c}
0x2a4…2be Line {l1=0x18, l2=» IER:=-15;«, l3=0x18}
0x2be…2db Line {l1=0x1b, l2=» EXIT(CREATE)«, l3=0x1b}
0x2db…2e8 Line {l1=0x0b, l2=» END;«, l3=0x0b}
0x2e8…30b Line {l1=0x21, l2=» KEYSIZE:=KEYSIZE+KEYS(I,2)«, l3=0x21}
0x30b…313 Line {l1=0x06, l2=» END;«, l3=0x06}
0x313…354 Line {l1=0x3f, l2=» RECPRBLK:=TRUNC(EXP(LN(NREC/SQR(RECSIZE)*SQR(KEYSIZE+2))/3));«, l3=0x3f}
0x354…377 Line {l1=0x21, l2=» IF RECPRBLK=0 THEN RECPRBLK:=1;«, l3=0x21}
0x377…3a6 Line {l1=0x2d, l2=» SEGINBLK:=(RECSIZE*RECPRBLK-1) DIV 232 + 1;«, l3=0x2d}
0x3a6…3cd Line {l1=0x25, l2=» RECPRBLK:=SEGINBLK*232 DIV RECSIZE;«, l3=0x25}
0x3cd…3f2 Line {l1=0x23, l2=» NBLK :=(NREC-1) DIV RECPRBLK +1;«, l3=0x23}
0x3f2…412 Line {l1=0x1e, l2=» BLKPRBUC:=TRUNC(SQRT(NBLK));«, l3=0x1e}
0x412…435 Line {l1=0x21, l2=» NBUC:=(NBLK-1) DIV BLKPRBUC +1;«, l3=0x21}
0x435…44d Line {l1=0x16, l2=» NBLK:=BLKPRBUC*NBUC;«, l3=0x16}
0x44d…465 Line {l1=0x16, l2=» NREC:=NBLK*RECPRBLK;«, l3=0x16}
0x465…485 Line {l1=0x1e, l2=» RECPRBUC:=RECPRBLK*BLKPRBUC;«, l3=0x1e}
0x485…495 Line {l1=0x0e, l2=» FLHSIZE:=51;«, l3=0x0e}
0x495…4b3 Line {l1=0x1c, l2=» BUTSIZE:=NBUC*(KEYSIZE+2);«, l3=0x1c}
0x4b3…4d5 Line {l1=0x20, l2=» BLTSIZE:=BLKPRBUC*(KEYSIZE+2);«, l3=0x20}
0x4d5…4f3 Line {l1=0x1c, l2=» BLKSIZE:=RECPRBLK*RECSIZE;«, l3=0x1c}
0x4f3…518 Line {l1=0x23, l2=» SEGINFLH:=(FLHSIZE-1) DIV 232 +1;«, l3=0x23}
0x518…53d Line {l1=0x23, l2=» SEGINBUT:=(BUTSIZE-1) DIV 232 +1;«, l3=0x23}
0x53d…562 Line {l1=0x23, l2=» SEGINBLT:=(BLTSIZE-1) DIV 232 +1;«, l3=0x23}
0x562…58b Line {l1=0x27, l2=» SEGINBUC:=SEGINBLT+SEGINBLK*BLKPRBUC;«, l3=0x27}
0x58b…5d3 Line {l1=0x46, l2=» FILESIZE:=TRUNC(((SEGINFLH+SEGINBUT+SEGINBUC*NBUC)*464.0+32)/256)+2;«, l3=0x46}
0x5d3…60a Line {l1=0x35, l2=» TABLESIZE:=BUTSIZE+BLTSIZE+BLKSIZE+RECSIZE+KEYSIZE;«, l3=0x35}
0x60a…61f Line {l1=0x13, l2=» NOOFSEGS:=' ';«, l3=0x13}
0x61f…637 Line {l1=0x16, l2=» FOR I:=4 DOWNTO 1 DO«, l3=0x16}
0x637…640 Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x640…670 Line {l1=0x2e, l2=» NOOFSEGS(I):=CHR(FILESIZE MOD 10 + 48);«, l3=0x2e}
0x670…692 Line {l1=0x20, l2=» FILESIZE:=FILESIZE DIV 10«, l3=0x20}
0x692…69a Line {l1=0x06, l2=» END;«, l3=0x06}
0x69a…6cb Line {l1=0x2f, l2=» FILENAME:=CONCAT(FILENAME,':',NOOFSEGS,':I');«, l3=0x2f}
0x6cb…6f7 Line {l1=0x2a, l2=» WRITELN(LIST,'FILE CREATED: ',FILENAME);«, l3=0x2a}
0x6f7…734 Line {l1=0x3b, l2=» WRITELN(LIST,'NBUC ',NBUC,' NBLK ',NBLK,' NREC ',NREC);«, l3=0x3b}
0x734…77f Line {l1=0x49, l2=» WRITELN(LIST,'BLKPRBUC ',BLKPRBUC,' RECPRBUC ',RECPRBUC,' RECPRBLK ',«, l3=0x49}
0x77f…79b Line {l1=0x1a, l2=» RECPRBLK);«, l3=0x1a}
0x79b…7e1 Line {l1=0x44, l2=» WRITELN(LIST,'KEYFLDS ',KEYFLDS,' FLHSIZE ',FLHSIZE,' BUTSIZE ',«, l3=0x44}
0x7e1…7fc Line {l1=0x19, l2=» BUTSIZE);«, l3=0x19}
0x7fc…842 Line {l1=0x44, l2=» WRITELN(LIST,'BLTSIZE ',BLTSIZE,' BLKSIZE ',BLKSIZE,' RECSIZE ',«, l3=0x44}
0x842…85d Line {l1=0x19, l2=» RECSIZE);«, l3=0x19}
0x85d…8a6 Line {l1=0x47, l2=» WRITELN(LIST,'KEYSIZE ',KEYSIZE,' SEGINFLH ',SEGINFLH,' SEGINBUT ',«, l3=0x47}
0x8a6…8c2 Line {l1=0x1a, l2=» SEGINBUT);«, l3=0x1a}
0x8c2…90d Line {l1=0x49, l2=» WRITELN(LIST,'SEGINBUC ',SEGINBUC,' SEGINBLT ',SEGINBLT,' SEGINBLK ',«, l3=0x49}
0x90d…929 Line {l1=0x1a, l2=» SEGINBLK);«, l3=0x1a}
0x929…977 Line {l1=0x4c, l2=» WRITELN(LIST,'TABLESIZE ',TABLESIZE,' FILESIZE ',FILESIZE);WRITELN(LIST);«, l3=0x4c}
0x977…98f Line {l1=0x16, l2=» REWRITE(F,FILENAME);«, l3=0x16}
0x98f…9a1 Line {l1=0x10, l2=» IER:=IORESULT;«, l3=0x10}
0x9a1…9c1 Line {l1=0x1e, l2=» IF IER<>0 THEN EXIT(CREATE);«, l3=0x1e}
0x9c1…9e2 Line {l1=0x1f, l2=» WRITELN(LIST,'FILE CREATED');«, l3=0x1f}
0x9e2…9f2 Line {l1=0x0e, l2=» F^(1):=NBUC;«, l3=0x0e}
0x9f2…a02 Line {l1=0x0e, l2=» F^(2):=NBLK;«, l3=0x0e}
0xa02…a12 Line {l1=0x0e, l2=» F^(3):=NREC;«, l3=0x0e}
0xa12…a26 Line {l1=0x12, l2=» F^(4):=BLKPRBUC;«, l3=0x12}
0xa26…a3a Line {l1=0x12, l2=» F^(5):=RECPRBUC;«, l3=0x12}
0xa3a…a4e Line {l1=0x12, l2=» F^(6):=RECPRBLK;«, l3=0x12}
0xa4e…a61 Line {l1=0x11, l2=» F^(7):=KEYFLDS;«, l3=0x11}
0xa61…a74 Line {l1=0x11, l2=» F^(8):=FLHSIZE;«, l3=0x11}
0xa74…a87 Line {l1=0x11, l2=» F^(9):=BUTSIZE;«, l3=0x11}
0xa87…a9b Line {l1=0x12, l2=» F^(10):=BLTSIZE;«, l3=0x12}
0xa9b…aaf Line {l1=0x12, l2=» F^(11):=BLKSIZE;«, l3=0x12}
0xaaf…ac3 Line {l1=0x12, l2=» F^(12):=RECSIZE;«, l3=0x12}
0xac3…ad7 Line {l1=0x12, l2=» F^(13):=KEYSIZE;«, l3=0x12}
0xad7…aec Line {l1=0x13, l2=» F^(14):=SEGINFLH;«, l3=0x13}
0xaec…b01 Line {l1=0x13, l2=» F^(15):=SEGINBUT;«, l3=0x13}
0xb01…b16 Line {l1=0x13, l2=» F^(16):=SEGINBUC;«, l3=0x13}
0xb16…b2b Line {l1=0x13, l2=» F^(17):=SEGINBLT;«, l3=0x13}
0xb2b…b40 Line {l1=0x13, l2=» F^(18):=SEGINBLK;«, l3=0x13}
0xb40…b60 Line {l1=0x1e, l2=» FOR I:=19 TO 24 DO F^(I):=0;«, l3=0x1e}
0xb60…b74 Line {l1=0x12, l2=» FOR I:=1 TO 9 DO«, l3=0x12}
0xb74…ba4 Line {l1=0x2e, l2=» FOR J:=1 TO 3 DO F^(21+3*I+J):=KEYS(I,J);«, l3=0x2e}
0xba4…bb2 Line {l1=0x0c, l2=» SEEK(F,1);«, l3=0x0c}
0xbb2…bc9 Line {l1=0x15, l2=» IF IORESULT<>0 THEN«, l3=0x15}
0xbc9…bd2 Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0xbd2…be9 Line {l1=0x15, l2=» IER:=IORESULT;«, l3=0x15}
0xbe9…bfe Line {l1=0x13, l2=» EXIT(CREATE)«, l3=0x13}
0xbfe…c06 Line {l1=0x06, l2=» END;«, l3=0x06}
0xc06…c11 Line {l1=0x09, l2=» PUT(F);«, l3=0x09}
0xc11…c23 Line {l1=0x10, l2=» IER:=IORESULT;«, l3=0x10}
0xc23…c51 Line {l1=0x2c, l2=» WRITELN(LIST,'FILE CREATED, RESULT: ',IER)«, l3=0x2c}
0xc51…c57 Line {l1=0x04, l2=»END;«, l3=0x04}
0xc57…c60 00 00 2c 27 46 49 4c 45 20 ┆ ,'FILE ┆
0xc60…c80 43 52 45 41 54 45 44 2c 20 52 45 53 55 4c 54 20 3a 20 27 2c 49 45 52 29 2d 04 45 4e 44 3b 04 00 ┆CREATED, RESULT : ',IER)- END; ┆
0xc80…ca0 00 53 54 29 3b 3a 04 45 4e 44 3b 04 00 00 04 45 4e 44 3b 04 00 00 00 00 00 00 00 00 00 00 00 00 ┆ ST);: END; END; ┆
0xca0…cc0 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 ┆ ┆
[…0xe…]
0xe80…ea0 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 0e ┆ ┆