MODULE ReportTest ;

(* $VER: ReportTest 1.0 (23.1.96) *)

FROM SYSTEM   IMPORT  ADR, TAG, LONGSET, CAST, ADDRESS ;
FROM Arts     IMPORT  Exit ;
FROM OlfCIO   IMPORT  PrintF ;
FROM UMSUtils IMPORT  CheckUMSError ;
FROM UtilityD IMPORT  tagDone ;

IMPORT  ud : UmsD,
        ul : UmsL,
        usd: UMSSupportD,
        usl: UMSSupportL,
        dd : DosD,
        dl : DosL ;

CONST
  cTemplate    = "NAME/A,PASSWORD,SERVER/K,TOOLNAME/A" ;
  cVersion     = "1.0 (23.1.96)" ;
  cVersionInfo = "ReportTest "+cVersion+" by Olaf Peters" ;
  cCVersion    = "$VER: ReportTest "+cVersion ;
  cGetItIn     = ADR(cCVersion) ;

VAR
  argArray  : ARRAY [0..4] OF ud.STRPTR ;
  doArgsPtr,
  rdArgsPtr : dd.RDArgsPtr ;

  tags      : ARRAY [0..31] OF LONGINT ;

  buffer    : usd.ErrBuffer ;

  report    : usd.ReportPtr ;
  lauf,
  login     : LONGINT ;

BEGIN

  (*/// "Login-Stuff" *)

  FOR lauf := 0 TO 4 DO
    argArray[lauf] := NIL ;
  END (* IF *) ;
  
  doArgsPtr := dl.AllocDosObject(dd.dosRdArgs, NIL) ;
  IF doArgsPtr # NIL THEN
    doArgsPtr^.extHelp := ADR(cVersionInfo+"\n\nUsage: "+cTemplate+"\n") ;
   ELSE
    PrintF("AllocDosObject failed.\n", NIL) ;
    Exit(20) ;
  END (* IF *) ;

  rdArgsPtr := dl.ReadArgs(ADR(cTemplate), ADR(argArray), doArgsPtr) ;

  IF rdArgsPtr = NIL THEN
    PrintF("%s", TAG(tags, doArgsPtr^.extHelp, NIL)) ;
    Exit(20) ;
  END (* IF *) ;

  IF (argArray[0] # NIL) AND (argArray[1] # NIL) THEN
    login := ul.RLogin(CAST(ud.STRPTR, argArray[2]), CAST(ud.STRPTR, argArray[0]), CAST(ud.STRPTR, argArray[1])) ;
    IF login = 0 THEN
      PrintF("Login failed!\n", NIL) ;
      Exit(20) ;
    END (* IF *) ;
  END (* IF *) ;

  PrintF(cVersionInfo+"\n\n", NIL) ;

  (*\\\*)

  report := usl.InitReport(login, NIL, argArray[3], ADR(cVersionInfo)) ;
  IF report = NIL THEN
    PrintF("Error during reportgeneration (Fehler %ld - %s)\n", TAG(tags, usl.GetErr(ADR(buffer)), ADR(buffer))) ;
    Exit(20) ;
  END (* IF *) ;

  IF usl.WriteReport(report, NIL, NIL, ADR("Testerror"), ADR("What an error! Shame on you!")) = 0 THEN
    PrintF("Error during reportgeneration (Fehler %ld - %s)\n", TAG(tags, usl.GetErr(ADR(buffer)), ADR(buffer))) ;
    Exit(20) ;
  ELSE
   PrintF("%-15.15s: %s\n", TAG(tags, ADR("Tool"), report^.toolName, NIL)) ;
   PrintF("%-15.15s: %ld\n", TAG(tags, ADR("DoReport"), report^.writeReport, NIL)) ;
   PrintF("%-15.15s: %s\n", TAG(tags, ADR("ReplyName"), report^.replyName, NIL)) ;
   IF report^.replyAddr    # NIL THEN PrintF("%-15.15s: %s\n", TAG(tags, ADR("ReplyAddr"), report^.replyAddr, NIL)) ;        END ;
   IF report^.reportGroup  # NIL THEN PrintF("%-15.15s: %s\n", TAG(tags, ADR("report.group"), report^.reportGroup, NIL)) ;   END ;
   IF report^.reportName   # NIL THEN PrintF("%-15.15s: %s\n", TAG(tags, ADR("report.name"), report^.reportName, NIL)) ;     END ;
   IF report^.reportAddr   # NIL THEN PrintF("%-15.15s: %s\n", TAG(tags, ADR("report.addr"), report^.reportAddr, NIL)) ;     END ;
   IF report^.reportFolder # NIL THEN PrintF("%-15.15s: %s\n", TAG(tags, ADR("report.folder"), report^.reportFolder, NIL)) ; END ;

  END (* IF *) ;
CLOSE

  (*/// "Closing-Code" *)

  IF report # NIL THEN
    usl.FreeReport(report) ;
    report := NIL ;
  END (* IF *) ;

  IF login # 0 THEN
    ul.Logout(login) ;
    login := 0 ;
  END (* IF *) ;
  
  IF rdArgsPtr # NIL THEN
    dl.FreeArgs(rdArgsPtr) ;
    rdArgsPtr := NIL ;
  END (* IF *) ;
  
  IF doArgsPtr # NIL THEN
    dl.FreeDosObject(dd.dosRdArgs, doArgsPtr) ;
    doArgsPtr := NIL ;
  END (* IF *) ;

  (*\\\*)

END ReportTest .
