DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦56faf0163⟧ TextFile

    Length: 2496 (0x9c0)
    Types: TextFile
    Notes: Mikados_K
    Names: »ICLOSE.K«

Derivation

└─⟦6b1c9961a⟧ Bits:30008989 INDPERM P1
    └─⟦this⟧ »ICLOSE.K« 

Mikados K File

PROCEDURE ICLOSE(VAR ZO:ISFHEAD;VAR F:ISF);
VAR I:INTEGER;
BEGIN
  IER:=0;
  WITH ZO DO
  IF FILEOPEN THEN
  BEGIN
    IF NOT FILEINIT AND (RECINUSE>0) THEN
    BEGIN
      FILEINIT:=TRUE;
      INITREC:=RECINUSE
    END;
    IF UPSTAT=SKRIV THEN
    BEGIN
    IF BLKCHG THEN
    BEGIN
       COPSEGS(Z,F,Z(BLT+(BLKINZONE-1)*ENTRYSIZE),BLKSIZE,BLK,SKRIV);
       IF IER<>0 THEN EXIT(ICLOSE)
    END;
    IF BLTCHG THEN
    BEGIN
       COPSEGS(Z,F,Z(BUT+(BUCINZONE-1)*ENTRYSIZE),BLTSIZE,BLT,SKRIV);
       IF IER<>0 THEN EXIT(ICLOSE)
    END;
    IF BUTCHG THEN
    BEGIN
       COPSEGS(Z,F,2,BUTSIZE,BUT,SKRIV);
       IF IER<>0 THEN EXIT(ICLOSE)
    END;
    FILEOPEN:=FALSE;
       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);
       IF IORESULT<>0 THEN BEGIN IER:=IORESULT;EXIT(ICLOSE) END;
       PUT(F);
       IF IORESULT<>0 THEN BEGIN IER:=IORESULT;EXIT(ICLOSE) END;
    END;
    CLOSE(F);
    IF IORESULT<>0 THEN BEGIN IER:=IORESULT;EXIT(ICLOSE) END;
    FILEOPEN:=FALSE
  END
  ELSE IER:=-3
END;

Full view