Job-Reports auswerten

Ausgangsproblem

Es sind mehrere Situationen vorstelbar, in denen Reports von Jobs ausgewertet werden können (oder müssen):

  • Jobs müssen analysiert werden, um zu prüfen, ob ein Job einen Fehler hatte, der nicht über den Returncode zurückgemeldet wurde.
  • ein Job liefert in seinem Report Informationen, die für eine weitere Verarbeitung ausgewertet werden (s. Verwendung von JOBG)

Lösungsansatz

Jeder Ansatz zum Auswerten des Reports eines Jobs besteht aus zwei Schritten:

  1. identifizieren der relevanten Zeilen oder Informationen im Report. Dies kann bspw. explizit durch die Verwendung von Eyecatchern oder durch eindeutige  Zeichenketten/Meldungen im Report erreicht werden.
  2. Scannen des Reports nach den Eyecatchern oder Zeichenketten, die für die Auswertung interessant sind.

Als Beispiel diene die Verwendung eines Eyecatchers, über den bestimmte Dateien weiter verarbeitet werden sollen. (Das Verfahren ist das gleiche, wenn spezielle Ausgabemeldungen eines Jobreportes ausgewertet werden sollen.) 

Im Prescript des fraglichen Jobs wird der Eyecatcher für die Verwendung im Postscript angelegt:

:rset &eyecatcher# = "found file:"

Im Script des Jobs werden die gefundenen Dateien mit Hilfe des Eyecatchers im Report ausgegeben:

for f in $files ; do
echo "&eyecatcher# $f"
done

Im Postscript des Jobs werden die so gefundenen Dateien aufgefunden und weiter verarbeitet (im folgenden nur als Auszug angeführt):

:rset &eyecatcher#
:set &len# = str_length(&eyecatcher#)
:set &my_name# = sys_act_me_name()
:set &ot# = get_object_type(&my_name#)

:set &hnd# = prep_process_report("&ot#", , "REP", "*&eyecatcher#*")
:process &hnd#
: set &line# = get_process_line(&hnd#)
: if &line# <> ""
: set &idx# = str_find(&line#, &eyecatcher#)
: set &idx# = add(&idx#, &len#)
: set &file# = mid(&line#, &idx#)
: set &file# = str_trim(&file#)
: set &idx# = str_find(&file#, " ")
: if &idx# > 0
: set &file# = mid(&file#, 1, &idx#)
: set &file# = str_trim(&file#)
: endif
: p "file = &file#"
! hier erfolgt die weitere Verarbeitung des gefunden Dateinamens
:endprocess
:close_process &hnd#