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*),K   DESCNAVN:STRING(18);  (*NAVNET P] DEN ENKELTE ISF-FILS BESKRIVELSESFIL*)KK   POSTNAVN: STRING(18);                   (*NAVNET P] ET INDIVID I FILEN*)K,   REGNAVN:STRING(18); (*FILENS BETEGNELSE*),K   VEDLNIVEAU:NIVEAU;(*ADGANGSNIVEAU FOR GENERELT VEDLIGEHOLDELSESPROGRAM*)K   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;4  FOR FILNR:=1 TO 250 DO POST(0).CONTENTS(FILNR):=0;4  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;6      WHILE (FFIL^.INDPOS.X>0) AND (FELTNR<MAXFELT) DO6      BEGIN        FELTNR:=FELTNR+1;1        FELTINF(FELTNR).FELTNAVN:=FFIL^.FELTNAVN;1-        FELTINF(FELTNR).INDEKS:=FFIL^.INDEKS;-1        FELTINF(FELTNR).FELTTYPE:=FFIL^.FELTTYPE;1        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;2  AKTULIST.NAVN:='                              ';2   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5    AKTULIST.LISTENIVEAU:=SUCC(AKTULIST.LISTENIVEAU);5
    I:=I-1
  END;  REPEAT    GOTOXY(1,4);    WRITE('Blankettype >=0 ');"    READLN;READ(AKTULIST.BLANKTYP)"0  UNTIL (IORESULT=0) AND (AKTULIST.BLANKTYP>=0);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	1      GOTOXY(LISTENR MOD 2*38+1,LISTENR DIV 2+1);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) 1  UNTIL (IORESULT=0) AND (I>=0) AND (I<=LISTENR);1  IF I>0 THEN  BEGIN    SEEK(LISTER,I);IOC;    GET(LISTER);IOC;    AKTULIST:=LISTER^  END  ELSE AKTULIST.NAVN(1):='@'END;(*$P*)E(*Problemer med navne p} hj{lpevariable (summer o.lign.), der er ikkeE  noget sted at gemme navnet.'  Evt: Speciel DESCFIL for hver nulfil,'H       F{lles DESCFIL for alle nulfiler, alts} kun een nulfil (f{lles)*)H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;+3              THIS^.NEXTELEMENT:=FFIL^.NEXTELEMENT;3              *)*              IF THIS^.F\RSTFELT<>NIL THEN*&                THIS^.F\RSTFELT:=N[STE&            END;  INDKOMMANDO:BEGIN&                NEW(THIS,INDKOMMANDO);&                THIS^:=FFIL^;D                IF THIS^.F\RSTN\GL<>NIL THEN THIS^.F\RSTN\GL:=N[STE;D              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^;8           IF THIS^.UDTRYK<>NIL THEN THIS^.UDTRYK:=N[STE8         END;  VALIDITET:BEGIN(              CASE FFIL^.VALIDITYTYPE OF(6              HINTERVAL:NEW(THIS,VALIDITET,HINTERVAL);66              DINTERVAL:NEW(THIS,VALIDITET,DINTERVAL);66              RINTERVAL:NEW(THIS,VALIDITET,RINTERVAL);60              DATO,CPR :NEW(THIS,VALIDITET,DATO)0              END;              THIS^:=FFIL^            END;  FELT:BEGIN         CASE FFIL^.FELTTYPE OF"         REEL:NEW(THIS,FELT,REEL);"3         HELTAL,DOBBTAL,TEKST:NEW(THIS,FELT,HELTAL)3         END;         THIS^:=FFIL^       END;  KSLOP:BEGIN          CASE FFIL^.POLISH OF0          EXPRESSION:NEW(THIS,KSLOP,EXPRESSION);0-          SIMPLEX   :NEW(THIS,KSLOP,SIMPLEX);-*          TERM      :NEW(THIS,KSLOP,TERM);*+          FACTOR    :CASE FFIL^.FACTTYPE OF+>                     CONSTVAR:NEW(THIS,KSLOP,FACTOR,CONSTVAR);>C                     LPEXPRP,NOTFACT:NEW(THIS,KSLOP,FACTOR,LPEXPRP)C                     END          END;          THIS^:=FFIL^;7          IF THIS^.SECOND<>NIL THEN THIS^.SECOND:=N[STE7        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7  PICTURE:IF EL^.F\RSTFELT<>NIL THEN UD(EL^.F\RSTFELT);7;  INDKOMMANDO:IF EL^.F\RSTN\GL<>NIL THEN UD(EL^.F\RSTN\GL);;  GENTAG:BEGIN8           IF EL^.FIRSTFELT<>NIL THEN UD(EL^.FIRSTFELT);89           IF EL^.BETINGELSE<>NIL THEN UD(EL^.BETINGELSE)9         END;0  BEREGN:IF EL^.UDTRYK<>NIL THEN UD(EL^.UDTRYK);0.  KSLOP:IF EL^.SECOND<>NIL THEN UD(EL^.SECOND).  END;2  IF EL^.NEXTELEMENT<>NIL THEN UD(EL^.NEXTELEMENT)2END;BEGIN  UDNUL;&  REWRITE(FFIL,AKTULIST.DESCLIST);IOC;&  UD(LISTEHOVED)END;(*$P*)  LT=^FELTBESKRIVELSE;SK[RMPOS=RECORD   X,Y:INTEGEREND;%BESKRIVELSESTYPE=(FELTDESC,VALIDESC);%FELTBESKRIVELSE=RECORD   N[STEVAL:NFELT;   FELTNAVN:STRING(8);$   CASE DESCTYPE:BESKRIVEåcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccåcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccåcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccåccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc