.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