Rechenkunststuecke

Wuerzl, Robert WUE at novsrv.ub.tuwien.ac.at
Fr Mär 21 16:44:13 CET 1997


Liebe allegro-ExpertInnen,

Wer kann das folgende Zahlenraetsel loesen?

Vorgeschichte: wir stellen zu Ostern von aLF 93.x auf Version 94.12A um.
Mit den fuer uns zu unuebersichtlichen Gebuehrenquittungen nicht ganz
zufrieden, wollen wir in der Exportparameterdatei (E-ALF.APR) eine 
alternative (kuerzere und einfachere) Gebuehrenquittung einbauen. 
Bezueglich der Rechenfunktionen, die im Handbuch nur sehr knapp beschrieben
sind, hielten wir uns an das Muster der (original Braunschweiger) R-0.APR.

Ergebnis: es konnten nie zwei Betraege zusammengezaehlt werden.

Schluss: lange gruebelten wir und probierten wir, da kam das "Aha-Erlebnis"
PRESTO.EXE kann rechnen, ALFWB.EXE kann - so scheint es uns - NICHT
rechnen. Wir haben in der R-0.APR nur zusaetzlich die Anzeige von einem
Kategorieinhalt und zwei Zwischenergebnissen eingebaut (die Datei steht im
Anhang, die neuen Zeilen sind mit "!!!" kommentiert)

Und hier die Ergebnisse (beide Male die gleichen 9 Datensaetze aus der
selben Datenbank, mit der selben CFG-Datei):

Mit PRESTO.EXE (201590  17.07.96  14:039:
----------------------------------------

Kat.76= 1985 uej=1985.000000000 unj=1.000000000
Kat.76= 1960 uej=3945.000000000 unj=2.000000000
Kat.76= 1978 uej=5923.000000000 unj=3.000000000
Kat.76= [1962?] uej=7885.000000000 unj=4.000000000
Kat.76= 1970 uej=9855.000000000 unj=5.000000000
Kat.76= 1974 uej=11829.000000000 unj=6.000000000
Kat.76= 1990 uej=13819.000000000 unj=7.000000000
Kat.76= 1990 uej=15809.000000000 unj=8.000000000
Kat.76= 1984 uej=17793.000000000 unj=9.000000000
Ergebnisse: 
Summe:      750
Anzahl:       5
größte:     240
kleinste:    62
unter 10:     4
Durchschnitt:    150.00

Kommentar: "uej" ist die Summe aus den Inhalten der Kat.76 (Jahr)
           Der "Fussteil" duerfte auch hier falsch sein!

           
Der Speicherzustand:
-------------------
Datei: ALF_231.ALD
 freier Arbeitsspeicher : 123784
        Aufnahmespeicher: 44251 (max. 48000)
        Hintergrundsp.  : 4860 (max. 5000)
        Phrasenspeicher : 4415 (max. 5000)
 belegter Parametersp. : 21652 (max. 45000)
 Anzahl Kategorien: ....  10 (max. 1500)   Hintergrund: 7
 Anzahl Aufnahmen: .....  1   Hauptaufnahmen: ... 1

 Datum: Fr., 21. Mrz 1997

 Zeit:  16:03:23

 V14b

max result set: 500


Mit ALFWB.EXE (374368   8.01.97  15:44):
---------------------------------------

Kat.76= 1985 uej=1985.000000000 unj=1.000000000
Kat.76= 1960 uej=1960.000000000 unj=1.000000000
Kat.76= 1978 uej=1978.000000000 unj=1.000000000
Kat.76= [1962?] uej=1962.000000000 unj=1.000000000
Kat.76= 1970 uej=1970.000000000 unj=1.000000000
Kat.76= 1974 uej=1974.000000000 unj=1.000000000
Kat.76= 1990 uej=1990.000000000 unj=1.000000000
Kat.76= 1990 uej=1990.000000000 unj=1.000000000
Kat.76= 1984 uej=1984.000000000 unj=1.000000000
Ergebnisse: 
Summe:      208
Anzahl:       5
größte:     208
kleinste: 99999
unter 10:     4
divide error

Der Speicherzustand:
-------------------
Datei: ALF_231.ALD
 freier Arbeitsspeicher : 90496
        Aufnahmespeicher: 44251 (max. 48000)
        Hintergrundsp.  : 4790 (max. 5000)
        Phrasenspeicher : 3897 (max. 5000)
 belegter Parametersp. : 35230 (max. 45000)
 Anzahl Kategorien: ....  10 (max. 1500)
 Anzahl Aufnahmen: .....  1   Hauptaufnahmen: ... 1

 Datum: Fri, 21. Mar 1997

 Zeit:  16:00:43

 V14a

max result set: 500


Mit den besten Gruessen     Robert Wuerzl

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

A N H A N G :
------------

  ***** geaendert WUE 20.03.97 ****************************
  Summierung und Durchschnittsbildung von Kategorieinhalten
  Prototyp für den Exporttyp RESULT
  R-0.APR       940602
pn="Seitensumme, Prototyp RESULT"

  Gibt nichts aus, sondern addiert nur. Erst der Fußabschnitt
  führt eine Ausgabe durch, siehe unten

  --------- Konstanten --------------------------------------------
  ff=2     um Kopf- und Fußabschnitt zu aktivieren   !!! WUE 20.03.97
zm=0     damit am Ende der Fußabschnitt auch ausgeführt wird
  ----------------------------------------------------------

  Es sollen die Seitenzahlen addiert werden, wobei Fälle mit weniger
  als 10 Seiten nicht mitgerechnet, sondern getrennt gezählt werden.
  (z.B. kann dabei sowas wie #77 Vol.1-5  vorkommen, was also keine
  Seitenzahl ist! Unteraufnahmen werden mit verarbeitet!)
  Ferner soll die kleinste und die grösste Seitenzahl ermittelt
  und der Durchschnitt berechnet werden.
  Die Erscheinungsjahre sollen ebenfalls addiert und ihr Durchschnitt
  ausgegeben werden.

  !!!!!!!!!!!!!!!!!!!!!   Anpassungen für andere Zwecke : 
!!!!!!!!!!!!!!!!!!!
  !  Setzen Sie für #76 und #77 die Kategorien ein, die Sie addieren 
wollen.!
  
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  
   ak-Befehle: keine

  ************* Kategorieliste ************************************

#76 p"Kat.76= "                              !!! WUE 20.03.97
#76 x">1449" x"+ej" =ej
#uej p" uej="                                !!! WUE 20.03.97

#76 x">1449" x"=1" x"+nj" =nj
#unj p" unj="                                !!! WUE 20.03.97

     wenn >1449, dann Ersch.Jahr addieren,   #uej = #uej + #76
                      und #unj um 1 erhöhen  #unj = #unj + 1
                      (nur dann, wenn #76 existiert!)

     Der Befehl  Z  bewirkt, daß die Zeilen jeweils nur ausgeführt
     werden, aber keine Ausgabe bewirken. D.h. es werden nur die
     Anwendervariablen bedient, die Zwischenergebnisse aber nicht 
ausgedruckt.
     (Z macht dasselbe wie e0)
#77 +M x"<10" Z        keine Aktion, wenn #77 < 10
#77 x"+su" =su         Seitenzahl addieren   #usu = #usu + #76 ,
#unr x"+1" =nr         #unr um 1 erhöhen
#77 x">gw" =gw         wenn größer als bisheriger größter Wert:    #ugw=#77
#77 x"<kw" =kw         wenn kleiner als bisheriger kleinster Wert: #ukw=#77
#+#

#-M
#uk1 x"+1" =k1         #uk1 um 1 erhöhen
#+#

  *********** Kopf- und Fußabschnitte *********************************

   Kopfteil:  Initialisierung der Variablen
   ---------  #dt wird als nur Hilfskategorie benutzt, weil sie immer 
existiert
K
#dt x"=0" =su          #usu für Summe der Seitenzahlen
    das bedeutet: nimm den Inhalt vom #dt als Variable,
                  weise ihr den Wert 0 zu
                  und speichere diesen in #usu
                  (etwas indirekt, aber nur so geht es)
                       Variablen:
#dt x"=0" =nr          #unr für Zähler der tatsächlich addierten Fälle
#dt x"=0" =ej          #uej für Summe der Ersch.jahre
#dt x"=0" =nj          #unj für Anzahl der addierten Erscheinungsjahre
#dt x"=0" =gw          #ugw für größten Wert
#dt x"=99999" =kw      #ukw für kleinsten Wert
#dt x"=0" =k1          #uk1 für Anzahl der Fälle kleiner als 10

#t{ "Werte auf Null gesetzt" C }     Kontrollmeldung

  *************************************************************************

   Fußteil:     Ausgabe der Ergebnisse
   --------     (Kontrolle mit Befehl #a im Editor möglich!)
F
#t{ "Ergebnisse: " }
#usu C e"." r7 p"Summe:  "              e"." schneidet den Dezimalteil ab
#unr C e"." r7 p"Anzahl: "              r7 füllt links mit Blanks auf 7 
Stellen

#ugw C C x"*1" e"." r6 p"größte:  "     x"*1" wird gemacht, weil die Werte
#ukw C x"*1" e"." r6 p"kleinste:"       noch Buchstaben enthalten könnten,
                                        die werden dadurch beseitigt
#uk1 C e"." r6 p"unter 10:"
#usu C C x"/nr" x"r2" r9 p"Durchschnitt: "
     nimm Inhalt von #usu, teile durch #unr, runde auf 2 Stellen

#uej C C x"/nj" e"." r6 "durchschn. Ersch.Jahr: "
  +------------------------+---------------------------------------+
  | Robert Wuerzl          | Tel:      ++43 1 58801-5995 (5978)    |
  | Bibliothek der TU Wien | Fax:      ++43 1 586 83 87            |
  | Resselgasse 4          | Email:    wue at novsrv.ub.tuwien.ac.at  |
  | A-1040 Wien            |                                       |
  +------------------------+---------------------------------------+





Mehr Informationen über die Mailingliste Allegro