.de xx
UNIX
..
.de yy
ING_DB
..
.de vv
ING_DB 6.3/3
..
.pl 72
.ds RH \f3REPORT\f1
.ds RF \f3\*(xx\f1
.ds LH Beispiele
.ds LF \*(vv
.ds CH - % -
.bp
.NH 2
.ft B
Report-Generator *
.ft R
.LP
.sp 10
.NH 3
.ft B
Arbeitslisten
.ft R
.LP
Unter dem Begriff Arbeitslisten sollen
Druckbilder verstanden werden, die ein bescheidenes
Mass an Daten ben\o'o"'tigen, die aber f\o'u"'r die manuelle
Erstellung von \o'U"'bersichten eine grosse Hilfe sind,
wenn sie sich relativ schnell erzeugen lassen.
H\o'a"'ufig trifft man diese Situation auch dann an,
wenn bestimmte Unterlagen zur \o'U"'bernahme
von Daten auf einen Rechner notwendig sind und die
Erstellung entsprechender Prim\o'a"'rbelege nicht lohnt
bzw. zu aufwendig ist.
.LP
Folgende Relationen sollen
verwendet werden:
.DS L


Relation:                fbbz
---------                K 1630 / EVK Olbernhau
Besitzer:                ing_db
Tupellaenge:             43
Verfallsdatum:           Mon Jan  1 00:00:00 1990
Tupelanzahl:             23
Speicherstruktur:        HEAP
Pages:                   1 + 2
Relationentyp:           Nutzerrelation

 Domaenname        Typ   Laenge  Schluessel
--------------------------------------------
 bn                 i       2
 stbn               i       4
 knr                i       2
 bez                c      35
--------------------------------------------
.DE
.sp 2
.DS L


Relation:                kbz
---------                K 1630 / EVK Olbernhau
Besitzer:                ing_db
Tupellaenge:             54
Verfallsdatum:           Mon Jan  1 00:00:00 1990
Tupelanzahl:             23
Speicherstruktur:        HEAP
Pages:                   1 + 16
Relationentyp:           Nutzerrelation

 Domaenname        Typ   Laenge  Schluessel
--------------------------------------------
 knr                i       2
 kbez               c      15
 bn                 i       2
 bez                c      35
--------------------------------------------
.DE
.LP
Aus beiden Relationen kann mit retrieve eine neue 
Relation
.ft B
listk
.ft R
erzeugt und mittels replace und
modify so umgestaltet werden , dass sie als 
Ausgangsrelation f\o'u"'r nachfolgende Aufgaben dient.
Die Arbeitsliste, die mit dem Programm
erzeugt wird, ist nach Betrieben und Kreisen geordnet.
Die Kopfinformationen k\o'o"'nnen bei
Bedarf gegebenenfalls auch mit dem Editor in die 
vorbereiteten Felder von listk_o eingetragen 
werden, sofern sich hierbei eine h\o'a"'ufige \o'A"'nderung
notwendig macht.
.LP
.nf
------------------------------------------------------------
define report krbbz
       with columns 122
              all lines 66
              lines 58
              big
       define hn        = 1
       define bn        = 2
       define bez       = 3

       define #hn       = integer 2
       define #bn       = integer 2
       define #bez      = char 35

as
proc 1
       set var 0 = 37
       repeat 8
       col var 0       ':'
       set var 0 = var 0 + 12
       endr
       new line
return

on pagebegin do
       'ARBEITSLISTEN NACH KREISEN GEORDNET'
       col 45
       date
       col 80
       '* NUR FUER DEN DIENSTGEBRAUCH *'
       new line 2
       col 3
       'BETRIEBSBEZEICHNUNG'
       col 37
       ':   PLAN    :ARB.-AUFTR.:    IST    '
       ':    PLAN   :   V. IST  :'
       col 109
       ':'
       col 121 
       ':' 
       new line
       col 10
       '** KREISBEZEICHNUNG'
       col 37
       ':    BM     :    BM     : MON       '
       ':  KUM. BM  :  KUM. BM  :'
       col 109 
       ':'
       col 121 
       ':'
       new line
       '-' 121
endo

for all do
       for one do
              if value 2 <> 99 then
                     integer length 2 value 2
                     col 3
              else
                     col 10
              endi
              char value 3
              call 1
              '-' 121
              new line
              if groupend 1 then
                     call 1
                     col 37
                     '-' 85
                     new line
              endi
       endo
enda

call 1
new line
col 37
'=' 85
;
------------------------------------------------------------
.fi
.LP
Die entstehende Liste ist ein Ausschnitt und soll
nur den prinzipiellen Aufbau darstellen.
.DS L

ARBEITSLISTEN NACH KREISEN GEORDNET         DATUM:       ===>

  BETRIEBSBEZEICHNUNG               :   PLAN    :ARB.-AUFTR.:
         ** KREISBEZEICHNUNG        :    BM     :    BM     :
-------------------------------------------------------------
7 HOLZWAREN GROSSHARTMANSDORF       :           :           :
-------------------------------------------------------------
         ** BRAND-ERBISDORF         :           :           :
-------------------------------------------------------------
17 RAUM- U. TAFELSCHMUCK GAHLENZ    :           :           :
-------------------------------------------------------------
21 WERK-KUNST GRUENHAINICHEN        :           :           :
-------------------------------------------------------------
         ** FLOEHA                  :           :           :
 .
 .
 .

-------------------------------------------------------------
25 KOMBINAT EVK OLBERNHAU           :           :           :

                                    ==================== ===>
.DE
.LP
.NH 3
.ft B
Softwarekatalog
.ft R
.LP
In der Datenbank
.ft B
hardsoft
.ft R
gibt es die beiden Relationen
.ft B
anschrift
.ft R
und
.ft B
soft1:
.ft R
.DS L


Relation:                anschrift
---------                K 1630 / EVK Olbernhau
Besitzer:                ing_db
Tupellaenge:             200
Verfallsdatum:           Mon Jan  1 00:00:00 1990
Tupelanzahl:             165
Speicherstruktur:        compressed HEAP
Pages:                   1 + 37
Relationentyp:           Nutzerrelation

 Domaenname        Typ   Laenge  Schluessel
--------------------------------------------
 bn                 i       4
 ans1               c      40
 ans2               c      40
 ans3               c      30
 ort                c      30
 plz                c       5
 kubez              c      48
 beznr              c       3
--------------------------------------------
.DE
.DS L


Relation:                soft1
---------                K 1630 / EVK Olbernhau
Besitzer:                ing_db
Tupellaenge:             159
Verfallsdatum:           Mon Jan  1 00:00:00 1990
Tupelanzahl:             186
Speicherstruktur:        HEAP
Pages:                   1 + 61
Relationentyp:           Nutzerrelation

 Domaenname        Typ   Laenge  Schluessel
--------------------------------------------
 bnr                i       4
 lnr                i       2
 titel              c      10
 aufg               i       2
 deskr              c      65
 rtyp               c       8
 bsyst              c       8
 prspr              c       8
 dbspr              c       8
 pfterm             i       2
 nutzbg             i       2
 ppznr              c      13
 regnr              c      19
 aufw               i       2
 projzt             i       2
 nnkost             i       2
 nutz               i       2
--------------------------------------------
.DE
.LP
Aus einer \o'u"'bergeordneten Shell-Prozedur wird 
die Prozedur
.ft B
cal_sachg
.ft R
gerufen. Diese Prozedur verwendet zwei Files zur 
direkten Steuerung von \*(yy. Sofern keine C-Statements
f\o'u"'r eine Komandofolge gebraucht werden und das 
entsprechende Menue relativ selten benutzt wird, 
ist das ein sehr eleganter Weg zur Ablaufsteuerung.
Die beiden Files 
.ft B
sachg_in1
.ft R
und
.ft B
sachg_in2
.ft R
fungieren als Eingabefiles f\o'u"'r \*(yy.
.nf


-------------------------------------------------------------

quel hardsoft < sachg_in1
rd hardsoft sachg
mv desc sachg_d
quel hardsoft < sachg_in2
rg -dsachg_d -isachg_r -fsachg_f -osachg_o

-------------------------------------------------------------
.fi
.LP
Zuerst das File sachg_in1 - aus den Relationen
.ft B
anschrift
.ft R
und
.ft B
soft1
.ft R 
sollen einige Spalten herausgezogen werden, in eine 
tempor\o'a"'re Relation
.ft B
sachg
.ft R
gespeichert und nach der 
Betriebsnummer und Aufgabe - als Gruppierungsbegriffe - 
sortiert werden. Mit
.ft B
copy into
.ft R
wird anschliessend ein \*(xx-File erzeugt. 
Da in der Shell-Prozedur noch ein Deskription File zu erzeugen ist, 
muss das destroy-Kommando in einem zweiten Eingabefile stehen.
.nf

-------------------------------------------------------------

range of a is anschrift
range of s is soft1
retrieve into sachg (s.bnr, a.kubez, s.titel, s.aufg) \e
       where s.bnr=a.bn
\\p\\g
modify sachg() to heapsort on bnr, aufg
\\p\\g
copy sachg() into "/mnt/ing_db/work/kag/sachg_f"
\\p\\g
\\q

------------------------------------------------------------
.fi
.LP
Das Eingabefile 
.ft B
sachg_in2
.ft R
hat lediglich die Aufgabe, die Relation
.ft B
sachg
.ft R
wieder zu l\o'o'schen, 
da sie bei einem weiteren Lauf zu diesem Menue st\o'o"'rt.
.nf

------------------------------------------------------------

destroy sachg
\\p\\g
\\q
---------------------------------------------------------------
.fi
.LP
Das Report Programm listet betriebsweise aus, welche Software 
nach Aufgaben geordnet verf\o'u"'gbar ist. Der Programmtitel soll
in der entsprechenden Spalte erscheinen, wobei nur dann eine
neue Zeile eingerichtet werden darf, wenn mehrere Titel zu einem
Sachgebiet (Aufgabe) auftreten. Die Kurzbezeichnung zum 
Betrieb ist auf zwei Zeilen zu verteilen.
.nf
--------------------------------------------------------------

report sachg_r
with
       columns 130
       lines 57
       all lines 66
       big

       /* Prozeduren */
       define position  = 1
       define b_spalte  = 2

       /* Variable */
       define v_pos     = 1

       /* Domaenen */
       define s_bnr     = 1
       define s_kubez   = 2
       define s_titel   = 3
       define s_aufg    = 4

       define #s_bnr    = integer 4
       define #s_kubez  = char 48
       define #s_titel  = char 10
       define #s_aufg   = integer 2

as

on pagebegin do
       'ARBEITSKREIS >>>COMPUTEREINSATZ IN DER SBW<<<'
       'BEZIRKSGELEITETE INDUSTRIE'
       \\115 date   \n2
       '*' 7
       ' SOFTWARE NACH SACHGEBIETEN '
       '*' 7
       \\114 'Seite: ' integer @3 page
       \\n
       'BETRIEB' \en
       \\10
       'GRUMI     '
       'INVEST    '
       'MATERIAL  '
       'AKR       '
       'LEISTUNG  '
       'WAREN     '
       'KOSTEN    '
       'FINANZEN  '
       'NUTZEN    '
       'BES./ANAL '
       'BERICHTSW.'
       'SONSTIGES ' \en
       \\10
       ':=========' 12 \en2
end

proc position
       if #s_aufg > 0 then
              set $v_pos = #s_aufg
       else
              set $v_pos = 12
       end if
       set $v_pos *= 10
       col $v_pos
       char @10 #s_titel
return

proc b_spalte
       \\10 ':'
       \\20 ':'
       \\30 ':'
       \\40 ':'
       \\50 ':'
       \\60 ':'
       \\70 ':'
       \\80 ':'
       \\90 ':'
       \\100 ':'
       \\110 ':'
       \\120 ':'
return

on batchline do call b_spalte end

for all do
       for one do
              if groupbegin s_bnr then
                     \\n
                     char batch 24 @48 #s_kubez
                     \\n2
              end if
              if ! groupend s_aufg then
                     \\n
              end if
              call position
              if groupend s_aufg then
                     \\n
                     \\10
                     ':..............' 12
                     \\n
                     if line > 56 then \en4 end if
              end if
       end one
end all
;


------------------------------------------------------------
.fi
.LP
Die Druckliste ist etwa 127 Zeichen breit, um einen Einblick zur 
Gestaltung zu geben, wurde bei Spalte 60 abgebrochen.
Es werden nur 40 Originaldruckzeilen gezeigt. Da das File 
.ft B
sachg_o
.ft R
im ASCII-Format vorliegt, ist die Aufbereitung mit dem Editor
m\o'u"'helos m\o'o"'glich, ebenso wie das Einf\o'u"'gen in den
Quelltext dieses Kapitels.
.bp
.nf

-------------------------------------------------------------

ARBEITSKREIS >>>COMPUTEREINSATZ IN DER SBW<<< BEZIRKSGELEITET

****** SOFTWARE NACH SACHGEBIETEN ******
BETRIEB
       GRUMI     INVEST    MATERIAL  AKR       LEISTUNG  WA
       :=========:=========:=========:=========:=========:=

KOMBINAT ERZGEBIRGISCHE
VOLKSKUNST OLBERNHAU       :         :         :         :

                                     AKR
       :=========:=========:=========:=========:=========:=

KOMBINAT ELEKTROGERAETE
FUERSTENWALDE              :         :         :         :

       GRUMI
                           BILANZ
                           DPA
                           HOLZERF
                           MFOKO
                           MP1801V
                           MWA146
                           MWKBIL    AKR       SORTPLA   RE
       :.........:.........:.........:.........:.........:.

VEB ELSTERMODE
ELSTERWERDA                :         :         :         :

                                     LISTEW1   LEIRE
       :.........:.........:.........:.........:.........:.

INGENEURBUERO
U.RATIONALIS.COTTBUS       :         :         :         :

                           MARKE
       :.........:.........:.........:.........:.........:.

------------------------------------------------------------
.fi

