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

⟦9e31480c5⟧ TextFile

    Length: 9984 (0x2700)
    Types: TextFile
    Notes: Mikados_K
    Names: »READINFO.K«

Derivation

└─⟦6c21327e0⟧ Bits:30008986 LINIMATIC K-FILER (IKKE HELT UPTODTATE)
    └─⟦this⟧ »READINFO.K« 

Mikados K File

PROCEDURE READINFO;
TYPE
NFELT=^FELTBESKRIVELSE;
SKÆRMPOS=RECORD
   X,Y:INTEGER
END;
BESKRIVELSESTYPE=(FELTDESC,VALIDESC);
FELTBESKRIVELSE=RECORD
   NÆSTEVAL:NFELT;
   FELTNAVN:STRING(8);
   CASE DESCTYPE:BESKRIVELSESTYPE OF
   FELTDESC:
  (INDPOS,UDPOS:SKÆRMPOS;
   KIKKENIVEAU,ÆNDRENIVEAU:NIVEAU;
   EDITERING:INTEGER;
   LEDETEKST,FØLGETEKST:STRING;
   INDEKS:INTEGER;
   LÆNGDE:INTEGER;
   FORAN0:INTEGER;
   CASE FELTTYPE:FTYPE OF
   REEL:(DEC:INTEGER);
   HELTAL,DOBBTAL,TEKST:());
   VALIDESC:
  (CASE VALIDITYTYPE:VTYPE OF
      HINTERVAL:(MIN,MAX:INTEGER);
      DINTERVAL:(MIN1,MIN2,MAX1,MAX2:INTEGER);
      RINTERVAL:(RMIN,RMAX:REAL);
      DATO,CPR:())
END;
FELTFIL=FILE OF FELTBESKRIVELSE;
FILDESC=RECORD
   FILNAVN:STRING(18);   (*ISF-FILENS NAVN*)
   DESCNAVN:STRING(18);  (*NAVNET PÅ DEN ENKELTE ISF-FILS BESKRIVELSESFIL*)
   POSTNAVN: STRING(18);                   (*NAVNET PÅ ET INDIVID I FILEN*)
   REGNAVN:STRING(18); (*FILENS BETEGNELSE*)
   VEDLNIVEAU:NIVEAU;(*ADGANGSNIVEAU FOR GENERELT VEDLIGEHOLDELSESPROGRAM*)
   ZONESIZE:INTEGER
END;
FILEDESC=FILE OF FILDESC;(*FORTEGNELSE OVER ALLE ISF-FILER*)
VAR FFIL:FELTFIL;
    ISFFILES:FILEDESC;
    FILNAVN:STRING(18);
    FELTNR,FILNR:INTEGER;
BEGIN
  WITH FILINFO(0) DO
  BEGIN
    USENR:=0;
    POSTNAVN:='NULPOST';
    FOR FELTNR:=0 TO MAXFELT DO
    BEGIN
      FELTINF(FELTNR).FELTNAVN:='@';
      FELTINF(FELTNR).INDEKS:=0;
      FELTINF(FELTNR).FELTTYPE:=HELTAL
    END
  END;
  FOR FILNR:=1 TO 250 DO POST(0).CONTENTS(FILNR):=0;
  POST(0).A(-4):=NULINT;
  POST(0).AAA(0):=NULREAL;
  POST(0).AA(-11):=CHR(NULCHAR DIV 100);
  POST(0).AA(-10):=CHR(NULCHAR MOD 100);
  FILNAVN:='ISFFILES:P2:0000:S';
  RESET(ISFFILES,FILNAVN);IOC;
  FILNR:=0;
  GET(ISFFILES);IOC;
  WHILE (ISFFILES^.FILNAVN(1)<>'@') AND (FILNR<MAXFILES) DO
  BEGIN
    FILNR:=FILNR+1;
    WITH FILINFO(FILNR) DO
    BEGIN
      USENR:=0;
      POSTNAVN:=ISFFILES^.POSTNAVN;
      FELTNR:=0;
      FELTINF(FELTNR).FELTNAVN:='IER';
      FELTINF(FELTNR).INDEKS:=-4;
      FELTINF(FELTNR).FELTTYPE:=HELTAL;
      FILNAVN:=ISFFILES^.DESCNAVN;
      RESET(FFIL,FILNAVN);IOC;
      GET(FFIL);IOC;
      WHILE (FFIL^.INDPOS.X>0) AND (FELTNR<MAXFELT) DO
      BEGIN
        FELTNR:=FELTNR+1;
        FELTINF(FELTNR).FELTNAVN:=FFIL^.FELTNAVN;
        FELTINF(FELTNR).INDEKS:=FFIL^.INDEKS;
        FELTINF(FELTNR).FELTTYPE:=FFIL^.FELTTYPE;
        REPEAT
          GET(FFIL);IOC
        UNTIL FFIL^.DESCTYPE=FELTDESC
      END;
      IF FELTNR<MAXFELT THEN FELTINF(FELTNR+1).FELTNAVN:='@';
      CLOSE(FFIL)
    END;
    IF FILNR<MAXFILES THEN FILINFO(FILNR+1).POSTNAVN:='@';
    GET(ISFFILES);IOC
  END;
  CLOSE(ISFFILES)
END;
(*$P*)
PROCEDURE UDLISTDEF;
VAR LISTER:LISTFILE;
    LISTENR:INTEGER;
BEGIN
  FNAVN:='LISTDEFS:P2:0000:S';
  REWRITE(LISTER,FNAVN);IOC;
  LISTENR:=0;
  REPEAT
    LISTENR:=LISTENR+1;
    GET(LISTER);IOC
  UNTIL LISTER^.NAVN(1)='@';
  AKTULIST.ZPOSTNR:=LISTENR;
  CLEARSCREEN;
  AKTULIST.NAVN:='                              ';
  WRITELN('Listens betegnelse');
  GOTOXY(20,1);
  EDIT(AKTULIST.NAVN);
  AKTULIST.DESCLIST:='        :P2:0030:J';
  WRITELN('Listedefinitionsfilens navn');
  gotoxy(30,2);
  EDIT(AKTULIST.DESCLIST);
  REPEAT
    GOTOXY(1,3);
    WRITELN('Listens adgangsniveau 0-8');
    GOTOXY(27,3);
    READLN;READ(I)
  UNTIL (IORESULT=0) AND (I>=0) AND (I<=8);
  AKTULIST.LISTENIVEAU:=MENIG;
  WHILE I>0 DO
  BEGIN
    AKTULIST.LISTENIVEAU:=SUCC(AKTULIST.LISTENIVEAU);
    I:=I-1
  END;
  REPEAT
    GOTOXY(1,4);
    WRITE('Blankettype >=0 ');
    READLN;READ(AKTULIST.BLANKTYP)
  UNTIL (IORESULT=0) AND (AKTULIST.BLANKTYP>=0);
  SEEK(LISTER,LISTENR);IOC;
  LISTER^:=AKTULIST;
  PUT(LISTER);IOC;
  LISTER^.NAVN(1):='@';
  PUT(LISTER);IOC
END;
(*$P*)
PROCEDURE VÆLGLISTE;
VAR LISTER:LISTFILE;
    I,LISTENR:INTEGER;
BEGIN
 (*VALG AF UDSKRIFT*)
 FNAVN:='LISTDEFS:P2:0000:S';
 REWRITE(LISTER,FNAVN);IOC;
  CLEARSCREEN;
  SEEK(LISTER,1);IOC;
  LISTENR:=0;
  REPEAT
    GET(LISTER);IOC;
    IF LISTER^.NAVN(1)<>'@' THEN
    BEGIN
      GOTOXY(LISTENR MOD 2*38+1,LISTENR DIV 2+1);
      LISTENR:=LISTENR+1;
      WRITELN(LISTENR:3,' ',LISTER^.NAVN)
    END
  UNTIL LISTER^.NAVN(1)='@';
  REPEAT
    GOTOXY(1,23);
    WRITELN('Listenummer, 0 for færdig');
    GOTOXY(27,23);READLN;READ(I)
  UNTIL (IORESULT=0) AND (I>=0) AND (I<=LISTENR);
  IF I>0 THEN
  BEGIN
    SEEK(LISTER,I);IOC;
    GET(LISTER);IOC;
    AKTULIST:=LISTER^
  END
  ELSE AKTULIST.NAVN(1):='@'
END;
(*$P*)
(*Problemer med navne på hjælpevariable (summer o.lign.), der er ikke
  noget sted at gemme navnet.
  Evt: Speciel DESCFIL for hver nulfil,
       Fælles DESCFIL for alle nulfiler, altså kun een nulfil (fælles)*)
PROCEDURE INDELEMENT;
VAR FFIL:ELEMENTFIL;
PROCEDURE INDNUL;
VAR FIL0:ZEROFIL;
BEGIN
  FNAVN:='ZEROFILE:P2:0000:S';
  REWRITE(FIL0,FNAVN);IOC;
  SEEK(FIL0,AKTULIST.ZPOSTNR);IOC;
  GET(FIL0);IOC;
  POST(0):=FIL0^
END;
FUNCTION NÆSTE:ELEMENT;
VAR I:INTEGER;
    THIS:ELEMENT;
BEGIN
  GET(FFIL);IOC;
  CASE FFIL^.ELEMENTTYPE OF
  LISTEDESC:BEGIN
              NEW(THIS,LISTEDESC);
              THIS^:=FFIL^;
              (*
              THIS^.ELEMENTTYPE:=LISTEDESC;
              FOR I:=1 TO 8 DO THIS^.FILES(I):=FFIL^.FILES(I);
              IF FFIL^.NEXTELEMENT<>NIL THEN
                THIS^.NEXTELEMENT:=NÆSTE
              ELSE
                THIS^.NEXTELEMENT:=NIL
              *)
            END;
  PICTURE:  BEGIN
              NEW(THIS,PICTURE);
              THIS^:=FFIL^;
              (*
              THIS^.ELEMENTTYPE:=PICTURE;
              THIS^.PICTPOS:=FFIL^.PICTPOS;
              THIS^.NEXTELEMENT:=FFIL^.NEXTELEMENT;
              *)
              IF THIS^.FØRSTFELT<>NIL THEN
                THIS^.FØRSTFELT:=NÆSTE
            END;
  INDKOMMANDO:BEGIN
                NEW(THIS,INDKOMMANDO);
                THIS^:=FFIL^;
                IF THIS^.FØRSTNØGL<>NIL THEN THIS^.FØRSTNØGL:=NÆSTE;
              END;
  UDKOMMANDO:BEGIN
               NEW(THIS,UDKOMMANDO);
               THIS^:=FFIL^
             END;
  NØGLE:BEGIN
          NEW(THIS,NØGLE);
          THIS^:=FFIL^
        END;
  GENTAG:BEGIN
           NEW(THIS,GENTAG);
           THIS^:=FFIL^;
           IF THIS^.FIRSTFELT<>NIL THEN THIS^.FIRSTFELT:=NÆSTE;
           IF THIS^.BETINGELSE<>NIL THEN THIS^.BETINGELSE:=NÆSTE
         END;
  BEREGN:BEGIN
           NEW(THIS,BEREGN);
           THIS^:=FFIL^;
           IF THIS^.UDTRYK<>NIL THEN THIS^.UDTRYK:=NÆSTE
         END;
  VALIDITET:BEGIN
              CASE FFIL^.VALIDITYTYPE OF
              HINTERVAL:NEW(THIS,VALIDITET,HINTERVAL);
              DINTERVAL:NEW(THIS,VALIDITET,DINTERVAL);
              RINTERVAL:NEW(THIS,VALIDITET,RINTERVAL);
              DATO,CPR :NEW(THIS,VALIDITET,DATO)
              END;
              THIS^:=FFIL^
            END;
  FELT:BEGIN
         CASE FFIL^.FELTTYPE OF
         REEL:NEW(THIS,FELT,REEL);
         HELTAL,DOBBTAL,TEKST:NEW(THIS,FELT,HELTAL)
         END;
         THIS^:=FFIL^
       END;
  KSLOP:BEGIN
          CASE FFIL^.POLISH OF
          EXPRESSION:NEW(THIS,KSLOP,EXPRESSION);
          SIMPLEX   :NEW(THIS,KSLOP,SIMPLEX);
          TERM      :NEW(THIS,KSLOP,TERM);
          FACTOR    :CASE FFIL^.FACTTYPE OF
                     CONSTVAR:NEW(THIS,KSLOP,FACTOR,CONSTVAR);
                     LPEXPRP,NOTFACT:NEW(THIS,KSLOP,FACTOR,LPEXPRP)
                     END
          END;
          THIS^:=FFIL^;
          IF THIS^.SECOND<>NIL THEN THIS^.SECOND:=NÆSTE
        END
  END;
  IF THIS^.NEXTELEMENT<>NIL THEN THIS^.NEXTELEMENT:=NÆSTE;
  NÆSTE:=THIS
END;
BEGIN
  INDNUL;
  REWRITE(FFIL,AKTULIST.DESCLIST);IOC;
  LISTEHOVED:=NÆSTE
  (*INDLÆS NEXTELEMENT, SÆT REFERENCE*)
END;
(*$P*)
PROCEDURE UDELEMENT;
VAR FFIL:ELEMENTFIL;
PROCEDURE UDNUL;
VAR FIL0:ZEROFIL;
BEGIN
  FNAVN:='ZEROFILE:P2:0000:S';
  REWRITE(FIL0,FNAVN);IOC;
  SEEK(FIL0,AKTULIST.ZPOSTNR);IOC;
  FIL0^:=POST(0);
  PUT(FIL0);IOC
END;
PROCEDURE UD(VAR EL:ELEMENT);
BEGIN
  FFIL^:=EL^;
  PUT(FFIL);IOC;
  CASE EL^.ELEMENTTYPE OF
  PICTURE:IF EL^.FØRSTFELT<>NIL THEN UD(EL^.FØRSTFELT);
  INDKOMMANDO:IF EL^.FØRSTNØGL<>NIL THEN UD(EL^.FØRSTNØGL);
  GENTAG:BEGIN
           IF EL^.FIRSTFELT<>NIL THEN UD(EL^.FIRSTFELT);
           IF EL^.BETINGELSE<>NIL THEN UD(EL^.BETINGELSE)
         END;
  BEREGN:IF EL^.UDTRYK<>NIL THEN UD(EL^.UDTRYK);
  KSLOP:IF EL^.SECOND<>NIL THEN UD(EL^.SECOND)
  END;
  IF EL^.NEXTELEMENT<>NIL THEN UD(EL^.NEXTELEMENT)
END;
BEGIN
  UDNUL;
  REWRITE(FFIL,AKTULIST.DESCLIST);IOC;
  UD(LISTEHOVED)
END;
(*$P*)

Full view