<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1634" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT face="Courier New" size=2>Liebe Listenleser,</FONT></DIV>
<DIV><FONT face="Courier New" size=2>besonders Herren Hellmann, Osthof, 
Gasperlin und nun auch Trauth,</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>weil ich die von mir (e-mail vom 6.8. 
19:15) als möglich angedeutete Erweiterung wirklich brauchte, habe ich eine 
konventionelle Lösung hingeschrieben, die ich Ihnen nicht vorenthalten 
möchte.</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Sie ersetzt das Register-Aufbereite mit 
einem einzigen Parameter durch ein Kopiere mit 27 Parametern, leistet 
natürlich auch mehr. Zunächst das kleine Programm (das man sich natürlich 
über den Windows-Zwischenspeicher leicht in eine TUSTEP-Datei holen 
kann):</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" 
size=2>#SVORBEREITE,qq,-STD-,-,+,*,,-<BR>ssl       
200<BR>*eof<BR>#SORTIERE,-STD-,-STD-,1+200'0,+,1+200<BR>#KOPIERE,-STD-,zz,+,*,,-<BR>           
0  w  n  j  2  3  4  5<BR>spr   
1   11 21 13 12 21  9  8  8  ist | 
Trennzeichen?<BR>spr   2    8  8 25 23  
8  0  8 31  ganze Parameter übereinstimmend?<BR>spr   
3    8  8 35 33  8 51  8 51  auch 
Groß/Kleinschreibung?<BR>spr   5    8  8 55 
53  8  3  8  3  Abweichung in 
Austauchzeichenfolge?<BR>ws+   1   ws1<BR>pos   
1   11<BR>ta+   1   -|-<BR>mld   
1   :@@@@@@@@ Trennzeichen ist nicht |; bitte unten in 
Parameter:<BR>mld   1   :@@@@@@@@ av    2 
statt | das benutzte Trennzeichen einsetzen!:<BR>wss   1   
ws1<BR>vgl   2   0<BR>vtz   2   
2<BR>mld   2   |@@@@ Parameter mit vorangehendem identisch, 
daher gelöscht:|<BR>xv    3   
|<*|<-01|<BR>vgl   3   0<BR>vtz   
3   3<BR>mld   3   |@@@@@@@@ Parameter bis auf 
Groß-/Kleinschreibung mit<BR>mld   3   |@@@@@@@@ 
vorangehendem identisch, bitte einen 
löschen!|<BR>          
Vorausgesetzt, "|" ist Trennzeichen:<BR>av    5   
:|:<BR>ev    5 = av    5<BR>vgl   
5   0<BR>vtz   5   5<BR>mld   
5   |@@@@@@@@ Vergleich mit vorangehendem 
Parameter:|<BR>mld   5   |@@@@@@@@ Suchzeichenfolge 
identisch, Austauschzf. verschieden;|<BR>mld   5   |@@@@@@@@ 
bitte in Quell- oder Zieldatei einen Parameter löschen.|<BR>*eof</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>Die Leistung des alten Regiser-Aufbereite 
steckt hier im 2. Durchgang: Jeder Satz wird in den Merk-Vergleichtext gesteckt, 
dann der nächste mit ihm verglichen und, wenn er identisch ist, nicht 
ausgegeben, wohl aber gemeldet (es könnte ja für die Fehlersuche interessant 
sein zu erfahren, welche Sätze doppelt sind; wen das stört, der kann im 
Parameter spr    2  aus der 23 eine 0 machen).</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Ein nicht gar so kleiner Unterschied: 
Register-Aufbereite behandelt Groß- und Kleinbuchstaben gleich, Kopiere 
unterscheidet sie, d.h. die Parameter</FONT></DIV>
<DIV><FONT face="Courier New" 
size=2>xx        |g|GmbH|</FONT></DIV>
<DIV><FONT face="Courier New" size=2>xx        
|g|GMBH|</FONT></DIV>
<DIV><FONT face="Courier New" size=2>sind für #RA identisch, also wird nur der 
zuerst vorkommende ausgegeben; Kopiere unterscheidet sie und ermöglicht eine 
Auswahl nach nicht-zufälligen Kriterien.</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Natürlich wollen wir auf diese Fälle 
hingewiesen werden. Das geschieht im 3. Durchgang, wo wir mit xv  
Großbuchstaben für den Vergleich wie die entsprechenden Kleinbuchstaben 
behandeln, so daß nun doch wieder 2 identische Sätze hintereinander(zu)stehen 
(scheinen).</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Im 5. Durchgang schließlich werden nur 
die <EM>Such</EM>zeichenfolgen aufeinanderfolgender Parameter verglichen; sind 
sie identisch, wie in folgendem Beispiel:</FONT></DIV>
<DIV><FONT face="Courier New" size=2>xx        
|g|Gesellschaft mit beschränkter Haftung|</FONT></DIV>
<DIV><FONT face="Courier New" size=2>xx        
|g|GmbH|</FONT></DIV>
<DIV><FONT face="Courier New" size=2>dann liegt ein Fehler vor, denn ganz 
identische Parameter sind ja an dieser Stelle schon eliminiert. Um die 
Suchzeichenfolgen zu isolieren, muß das Trennzeichen bekannt sein, da es ja die 
Suchzeichenfolgen begrenzt. Hier wird, wie auch von Herrn Osthof, der senkrechte 
Strich angenommen. Ob das wirklich so ist, wird beim ersten Satz im 1. Durchgang 
geprüft.</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Man kann das alles auch in ein 
Kommandomakro stecken und Quelle, Ziel und Trennzeichen variabel 
machen.</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>Auch für diese erweiterte 
Erweiterung ist natürlich eine Lösung in der Makrosprache denkbar und zu 
erwarten.</FONT></DIV>
<DIV><FONT face="Courier New" size=2>In einer Anwendung zur 
Inkunabelkatalogisierung (INKA) habe ich die Kleinigkeit von  83788 
TTT-Parametern, durchschnittliche Länge 71 Zeichen. An diesen habe ich Herr 
Osthofs erste Lösung ausprobiert: sie läuft schnell und tadellos. Mit der 
doppelten Menge ging es auch, mit den dreimal hintereinanderkopierten kam aber 
die Fehlermeldung</FONT></DIV>
<DIV><FONT face="Courier New" size=2>"Daten zu umfangreich (>16 
MB)".</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Das sollte ein Härtetest sein; in der 
Praxis werden 250.000 Parameter selten sein. Wenn doch, dann gibt es ja immer 
noch die Kommandos - siehe oben.</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>Mit freundlichen Grüßen</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Friedrich Seck</FONT></DIV>
<DIV><BR><FONT face="Courier New" 
size=2>--------------------------------------<BR>Dr. Friedrich Seck<BR>72076 
Tübingen, Erlenweg 18<BR>Tel: (0 70 71)  96 49 40<BR>Fax-Nummer auf 
Anfrage</FONT></DIV>
<DIV><FONT face="Courier New" size=2>----- Original Message ----- </FONT>
<DIV><FONT face="Courier New" size=2>From: "Matthias Osthof" <</FONT><A 
href="mailto:matthias.osthof@t-online.de"><FONT face="Courier New" 
size=2>matthias.osthof@t-online.de</FONT></A><FONT face="Courier New" 
size=2>></FONT></DIV>
<DIV><FONT face="Courier New" size=2>To: <</FONT><A 
href="mailto:tustep-liste@itug.de"><FONT face="Courier New" 
size=2>tustep-liste@itug.de</FONT></A><FONT face="Courier New" 
size=2>></FONT></DIV>
<DIV><FONT face="Courier New" size=2>Sent: Thursday, August 06, 2009 10:29 
PM</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Subject: Re: [Tustep-Liste] 
Kopiere-Austauschtabelle</FONT></DIV></DIV>
<DIV><FONT face="Courier New"><BR><FONT size=2></FONT></FONT></DIV><FONT 
face="Courier New" size=2>Diskussionsforum Tustep-Liste<BR>Weitere 
Informationen: </FONT><A href="http://www.itug.de"><FONT face="Courier New" 
size=2>www.itug.de</FONT></A><BR><FONT face="Courier New" 
size=2>------------------------------------------------------------<BR><BR>Lieber 
Herr Seck, lieber Martin,<BR><BR>> Natürlich kann man sich auch eine 
weitergehende Lösung ausdenken, <BR>> die auf den genannten Fehler 
hinweist.<BR>Die Tabelle enthält nach dem Sortieren und Eliminieren 
von<BR>Mehrfacheintragungen noch Einträge der 
Art:<BR>xx        
|aaa|bbb|<BR>xx        
|aaa|falsch|   <BR><BR>Der LOOP isoliert bei jedem Eintrag in der 
Liste die Suchzeichenfolge mit<BR>EXTRACT() und vergleicht sie mit der in x_alt 
gespeicherten des<BR>vorangehenden Eintrags. Wenn beide identisch sind, gibt er 
den Parameter in<BR>einer (in dieser Form spartanischen) Meldung aus. Man könnte 
das Ganze<BR>benutzerfreundlicher gestalten, darauf habe ich der 
Übersichtlichkeit halber<BR>verzichtet.<BR><BR><BR>SET xx = FILE 
("params")<BR>SET xx = ALPHA_SORT (xx)<BR>SET xx = REDUCE (xx)<BR><BR>SET x_alt 
= ""<BR>BUILD S_TABLE trenner = ".|."<BR>LOOP lp = xx<BR>  SET x_neu = 
EXTRACT (lp, 12, trenner)<BR>  IF (x_alt.EQ.x_neu) 
THEN<BR>    + @@@@@@@@ {lp}<BR>  ENDIF<BR>  SET x_alt = 
x_neu<BR>ENDLOOP<BR><BR>FILE/ERASE/PROGRAM "params" = xx <BR><BR><BR>Einen 
schönen Abend wünscht<BR>Matthias Osthof<BR></FONT></BODY></HTML>