(* ------------------------------------------------------------------------
:Program.       BatchRequester.mod
:Contents.      Öffnet einen Filerequester und schreibt den Pfadnamen der
                angeklickten Datei in eine Environment-Variable.
:Author.        Christoph Teuber
:Copyright.     Freeware
:Language.      Oberon
:Translator.    Amiga Oberon
:History.       1.1   3.Dez.1990
:Address.       Rheinstr. 65, 5600 Wuppertal 1
:Phone.         0202/424394
:Usage.         BatchRequester <Var-Name> <Titel> Pfadnamen
------------------------------------------------------------------------- *)

MODULE BatchRequester;

IMPORT Fr : FileReq,
       Arg : Arguments,
       FS : FileSystem,
       io;

TYPE StringTyp = ARRAY 255 OF CHAR;

VAR FName,Titel,Enni : StringTyp;
    Answer : BOOLEAN;

PROCEDURE ParseArgs (VAR Tl, Name, Enni : StringTyp);
 (* Parameter lesen *)

VAR Argzahl : INTEGER;

BEGIN
 Argzahl := Arg.NumArgs();                (* Anzahl ermitteln *)
 IF (Argzahl >3) OR (Argzahl <1) THEN
  io.WriteString("\n Willst Du mich beschummeln?\n Falsche Anzahl Parameter\n");
  HALT(10);
 END;
 Arg.GetArg(1,Enni);                            (* Parameter lesen *)
 IF Enni = "?" THEN
  io.WriteString ("\nUsage: BatchRequester <var-name> <title> <filename>\n");
  HALT(0);
 END;
 IF Argzahl >1 THEN Arg.GetArg(2,Tl);           (* falls *)
  IF Argzahl >2 THEN Arg.GetArg(3,Name) END;    (* vorhanden *)
 END;
END ParseArgs;


PROCEDURE CopyToVar (Name, Enni : StringTyp);
 (* Filenamen in Variable schreiben *)

VAR geklappt : BOOLEAN;
    Datei : FS.File;

BEGIN
 geklappt := FS.Open(Datei, Enni, TRUE);
 IF geklappt THEN
  geklappt := FS.WriteString (Datei, Name);
  IF geklappt THEN
   geklappt := FS.Close(Datei);
  END;
 END;
 IF NOT geklappt THEN
  io.WriteString ("Fehler beim Schreiben!\n");
  HALT(10)
 END;
END CopyToVar;


BEGIN  (* Hauptprogramm *)

 io.WriteString ("BatchRequester 1.1, (c) 1990 by Christoph Teuber\n");
 io.WriteString ("Freeware                        Rheinstr. 65\n");
 io.WriteString ("                                5600 Wuppertal 1\n");
 io.WriteString ("                                West-Germany\n");
 FName := "Ram:Test";
 Titel := "BatchRequester";
 ParseArgs (Titel, FName, Enni);
 Answer := Fr.FileReq(Titel, FName);
 IF Answer THEN CopyToVar (FName, Enni) END;

END BatchRequester.
