P8000/WEGA/contrib/ingres/dbs/demo/pqr/report01

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 */
;