report
	r01			/* Filename fuer den Interpretercode	*/
	# d01			/* Filename fuer die Beschreibung	*/
with
	/* page layout */
	columns 60
	lines 56
	all lines 66

/* Es folgen Makrodefinitionen, Makros ordnen Nummer Namen zu		*/
/* da diese in der Regel leichter lesbar sind !				*/

	/* procedures */
	define p_fzr		= 1

	/* switches */
	define last_page	= 1

	/* variables */
	define next_page	= 0
	define fzr		= 1
	define grp_lohn		= 2
	define grp_fzr		= 3
	define grp_cnt		= 4
	define abt_lohn		= 5
	define abt_fzr		= 6
	define abt_cnt		= 7

/* Es folgen die Felddefinitionen. Die Feldnummer werden implizit	*/
/* vereinbart.								*/
	define #d_name		= char 17
	define #d_qual		= char  4
	define #d_pkz		= char 12
	define #d_lohn		= char  4
	define #d_abt		= char  1
	define #d_gruppe	= char  7
	define #d_dummy		= char  1

as						       /* REPORT BEGINN */

/* Prozedur zur Berechnung der FZR, Eingabeparameter ist die	*/
/* Variable fzr, die gleichzeitig als Rueckgabewert dient.	*/
proc p_fzr
	set $fzr = ($fzr - 600) / 10
	if $fzr > 60 then set $fzr = 60 end if
return

on pagebegin do						 /* SEITEN KOPF */
	'-' 60 \n
	'VEB Generatorwerke' \50 date \n
	'1234 Berlin-Report' \50 time \n
	'Komplexstr. 13' \28 'Seite: ' integer page \n
	'-' 60 \n2
	if ! page == 1 then
		\20 'Liste der Abteilung ' char #d_abt
	end if
	\n2
end

on pageend do						 /* SEITEN FUSS */
	if ! ^last_page then
		set $next_page = page + 1
		\36 'Es folgt Seite: ' integer $next_page
	end if
	\n2
end

on lineend do 'I' end					 /* ZEILEN ENDE */

on batchline do					      /* ZEILEN UMBRUCH */
	\18
	if #d_pkz from 7 to 7 == '4'
	then 'maennl'
	else 'weibl'
	end if
end

set line = 10						  /* DECK BLATT */
\\20 'Liste der Abteilungen ' \f

for all do
						    /* leerer SATZ KOPF */

	for one do				   /* SATZ VERARBEITUNG */
		/* Jede neue Abteilung soll auf eine neue Seite 	*/
		if groupbegin d_abt then \f end if

		/* Jede neue Gruppe erhaelt eine Ueberschrift		*/
		if groupbegin d_gruppe then
			'***** Gruppe '
			char #d_gruppe
			' *****' \n2
			'Name'
			\15 'Qualifikation'
			\32 'Geb.-Datum'
			\45 'Lohn'
			\55 'FZR' \n
			\15 'maennl/weibl' \n2
		end if

		set $fzr = #d_lohn
		set $grp_lohn += $fzr
		call p_fzr
		set $grp_fzr  += $fzr
		set $grp_cnt  += 1
		char batch 10 #d_name
		\18 char #d_qual
		\33 char        to 2 #d_pkz '.'
		    char from 3 to 4 #d_pkz '.'
		    char from 5 to 6 #d_pkz
		\44 integer @4 #d_lohn ',-M'
		\54 integer @2 $fzr ',-M' \n

		/* Am Ende jeder Gruppe, aggregierte Werte ausgeben.	*/
		if groupend d_gruppe then
			set $abt_lohn += $grp_lohn
			set $abt_fzr  += $grp_fzr
			set $abt_cnt  += $grp_cnt
			set $grp_lohn := $grp_cnt
			set $grp_fzr  := $grp_cnt
			\28 'Durchschnitt: '
			\44 integer @4 $grp_lohn ',-M'
			\54 integer @2 $grp_fzr ',-M' \n2
			set $grp_lohn = 0
			set $grp_fzr  = 0
			set $grp_cnt  = 0
		end if

		/* Am Ende jeder Abteilung, aggregierte Werte ausgeben.	*/
		if groupend d_abt then
			set $abt_lohn := $abt_cnt
			set $abt_fzr  := $abt_cnt
			'Durchschnitt der Abteilung: '
			\44 integer @4 $abt_lohn ',-M'
			\54 integer @2 $abt_fzr ',-M' \n
			set $abt_lohn = 0
			set $abt_fzr  = 0
			set $abt_cnt  = 0
		end if
	end one				      /* ENDE SATZ VERARBEITUNG */
						    /* leerer SATZ FUSS */
end all

set ^last_page						 /* REPORT FUSS */
;
