home *** CD-ROM | disk | FTP | other *** search
- {---------------------------------------------------------------------------}
- { Demonstration der zwei Funktionen 'paramcount' und 'paramstr' fuer
- Turbo-Pascal 2.0. Sie ermoeglichen die Uebernahme der Argumente aus der
- CP/M-Befehlszeile. }
- {---------------------------------------------------------------------------}
-
- PROGRAM param_demo;
-
- TYPE cmdpar = STRING[30];
-
- VAR n: INTEGER;
-
- {---------------------------------------------------------------------------}
- { Ermittlung der Anzahl der angegebenen Parameter: }
-
- FUNCTION paramcount: INTEGER;
-
- CONST delimiter = 32; { Leerzeichen als Trennzeichen der Parameter }
- bufstart = 128; { Startadresse des Befehlszeilen-Puffer }
- bufend = 159; { Endadresse. }
-
- VAR anz, adr, bis: INTEGER;
-
- BEGIN
- anz := 0;
- adr := Succ(bufstart);
- bis := mem[bufstart] + bufstart;
- IF bis > bufend THEN
- bis := bufend;
- WHILE adr <= bis DO
- BEGIN
- IF mem[adr] = delimiter THEN
- anz := Succ(anz);
- adr := Succ(adr);
- END;
- paramcount := anz;
- END;
-
- {---------------------------------------------------------------------------}
- { Uebergibt den Parameter 'nr' an das Pascal-Programm: }
-
- FUNCTION paramstr (nr: INTEGER): cmdpar;
-
- CONST delimiter = 32;
- bufstart = 128;
- bufend = 159;
-
- VAR st: cmdpar;
- anz, bis, adr: INTEGER;
-
- BEGIN
- adr := Succ(bufstart);
- bis := mem[bufstart] + bufstart;
- IF bis > bufend THEN
- bis := bufend;
- FOR anz := 1 TO nr DO
- BEGIN
- st := '';
- adr := Succ(adr);
- WHILE (mem[adr] <> delimiter) AND (adr <= bis) DO
- BEGIN
- st := st + Chr(mem[adr]);
- adr := Succ(adr);
- END;
- END;
- paramstr := st;
- END;
-
- {---------------------------------------------------------------------------}
-
- BEGIN
- WriteLn('Anzahl der Parameter: ', paramcount:4, ' , ', mem[128]);
- WriteLn('Im einzelnen:');
- FOR n := 1 TO paramcount DO
- WriteLn('Parameter Nr. ', n:2, ': ', paramstr(n));
- END.