146 lines
3.2 KiB
Plaintext
146 lines
3.2 KiB
Plaintext
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 */
|
|
;
|