This commit is contained in:
Oliver Lehmann 1989-07-18 11:06:05 +00:00
parent ddecb20b5c
commit 99226e94a8
3 changed files with 235 additions and 0 deletions

View File

@ -0,0 +1,145 @@
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 */
;

View File

@ -0,0 +1,50 @@
report r02 # d02
with
/* page layout */
columns 70
lines 60
all lines 72
/* domains */
define #land = char 12
define #erfinder = char 20
define #erfindung = char 36
define #jahr = char 9
as
on pagebegin do
'-' 70 \n
\20 'E R F I N D U N G E N'
\61 date \n2
\1 'Erfinder'
\22 'Erfindung'
\61 'Jahr'
\n
'-' 70\n
if not groupbegin land then
\n2
\5 'Land:'
\12 char @12 #land
\n3
end if
end
for all do
for one do
if groupbegin land then
\n2
\5 'Land:'
\12 char @12 #land
\n3
end if
\1 char @20 #erfinder
\22 char @36 #erfindung
\61 char @9 #jahr
\n
if groupend land and all lines < 6 then
\f
end if
end one
end all
;

View File

@ -0,0 +1,40 @@
report r03 # d03
with
columns 50
lines 60
all lines 66
define #num = integer 2
define #name = char 20
define #gehalt = integer 2
define #leiter = integer 2
define #gebdat = integer 2
define #einstdat = integer 2
as
on pagebegin do
'-' 50 \n
'Gehalt und Geburtsjahr nach Leitern'
\42 date \n2
'Abtlg.'
\8 'Name'
\30 'Gehalt'
\40 'Geburtsjahr'
\n
'-' 50 \n2
end
for all do
for one do
if groupbegin leiter then
\n integer @4 #leiter
end if
\8 char @20 #name
\30 integer @5 #gehalt ',- M'
\40 integer @9 #gebdat
\n
end one
end all
'-' 50 \n2
;