home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------- *)
- (* SETMAX.PAS *)
- (* Flexible Environment-Variablen *)
- (* (c) 1991 Timo Becker & DMV-Verlag *)
- (* ------------------------------------------------- *)
- {$A+,B-,D+,E-,F-,I-,L-,N-,O-,R-,S-,V-}
- {$M 1024,0,0}
-
- PROGRAM SetMax;
-
- USES Dos;
-
- CONST
- Separator = '°'; (* Chr(#248) *)
-
- VAR
- Segment, Offset,
- Child, Mark, Mem_ : WORD;
- Datei : FILE OF CHAR;
- Add, Name : BOOLEAN;
- C, C2 : CHAR;
-
- BEGIN
- Segment := PrefixSeg;
- REPEAT
- Child := Segment;
- Segment := MemW[Child:$16]
- UNTIL Segment = Child;
- Segment := MemW[Segment:$2C];
- Assign(Datei, ParamStr(1));
- Reset(Datei);
- IF (IOResult <> 0) OR (ParamCount = 0) THEN Halt(1);
- Read(Datei, C);
- Add := (C = '+');
- IF Add THEN Read(Datei, C);
- C := UpCase(C);
- IF C IN ['A'..'Z'] THEN BEGIN
- Read(Datei, C2);
- IF C2 = Separator THEN Mark := Ord(C);
- END;
- Reset(Datei);
- Offset := 0;
- Mem_ := 0;
- REPEAT
- Name := NOT BOOLEAN(Lo(Mem_));
- Mem_ := MemW[Segment:Offset];
- Inc(Offset)
- UNTIL (Mem_ = 0) OR Name AND (Mem_ = Mark);
- Dec(Offset, Ord(Add)+Ord(Name));
- IF Add THEN Seek(Datei, 3);
- Name := TRUE;
- WHILE NOT Eof(Datei) DO BEGIN
- Read(Datei, C);
- IF NOT (C IN [#9, #10, #13, ' ']) THEN BEGIN
- IF Name THEN
- IF C = '=' THEN Name := FALSE
- ELSE C := UpCase(C);
- IF C = Separator THEN BEGIN
- C := #0;
- Name := True
- END;
- Mem[Segment:Offset] := Ord(C);
- Inc(Offset);
- END;
- END;
- MemW[Segment:Offset] := 0;
- Close(Datei);
- END.
- (* ------------------------------------------------- *)
- (* Ende von SETMAX.PAS *)
-
-