<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Lieber Herr Kollatz,<div class=""><br class=""></div><div class="">ich fürchte, ich habe etwas falsch verstanden.</div><div class="">Wenn nicht, könnten Sie Ihr Problem mit</div><div class="">folgenden Anweisungen lösen.</div><div class=""><br class=""></div><div class=""><div class=""><font face="Courier New" class="">BUILD S_TABLE trenner = *</font></div><div class=""><font face="Courier New" class="">DATA ||"*"|%;|#.;|#."||</font></div><div class=""><font face="Courier New" class="">DATA |;|</font></div><div class=""><font face="Courier New" class=""><br class=""></font></div><div class=""><font face="Courier New" class="">SET d = *</font></div><div class=""><font face="Courier New" class="">DATA ”elf‹;zwölf;dreizehn”;vierzehn</font></div><div class=""><font face="Courier New" class=""><br class=""></font></div><div class=""><font face="Courier New" class="">SET x = SPLIT (d, trenner) </font></div></div><div class=""><br class=""></div><div class="">Mir scheint, dass damit Ihre Beispieldaten</div><div class="">wie gewünscht aufgeteilt werden.</div><div class=""><br class=""></div><div class="">Herzliche Grüße</div><div class="">Ihr Kuno Schälkle</div><div><br class=""></div><div><br class=""></div><div><br class=""><blockquote type="cite" class=""><div class="">Am 24.06.2021 um 13:23 schrieb Kollatz, Thomas <<a href="mailto:Thomas.Kollatz@adwmainz.de" class="">Thomas.Kollatz@adwmainz.de</a>>:</div><br class="Apple-interchange-newline"><div class="">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" class="">

<div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
Liebe Liste, 
<div class=""><br class="">
</div>
<div class="">ich habe ein Problem, zu dem mir  bislang keine elegante Lösung eingefallen ist. </div>
<div class=""><br class="">
</div>
<div class="">Ich will eine Variable aufteilen (splitten) und zwar nach jedem Semikolon ; </div>
<div class=""><br class="">
</div>
<div class="">VARIABLE vorher: </div>
<div class="">eins; zwei;drei;vier</div>
<div class=""><br class="">
</div>
<div class="">VARIABLE gesplittet: </div>
<div class="">eins</div>
<div class="">zwei</div>
<div class="">drei</div>
<div class="">vier</div>
<div class=""><br class="">
</div>
<div class="">Kein Problem, ein Skript mit diesem Resultat könnte so aussehen: </div>
<div class="">
<div class=""><br class="">
</div>
<div class="">$$ MODE {}</div>
<div class=""><br class="">
</div>
<div class="">$$ SET/DATA variable1</div>
<div class="">eins;zwei;drei;vier</div>
<div class="">$$ ENDDATA</div>
<div class=""><br class="">
</div>
<div class="">$$ BUILD S_TABLE trenner1 ="|;|"</div>
<div class="">
<div class="">$$ x=SPLIT (variable1,trenner1)</div>
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">x            = *</div>
<div class="">           1 = eins</div>
<div class="">           2 = zwei</div>
<div class="">           3 = drei</div>
<div class="">           4 = vier</div>
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">Soweit so gut, machen wir es etwas komplizierter, indem wir ein paar Sonderzeichen an denen *nicht* gesplittet werden soll, einbauen (ç TUSTEP %;C und ein einfaches französisches Anführungszeichen #.;) , ausserdem soll nicht bei Semikola, die
 zwischen Textdelimintoren " stehen, getrennt werden: </div>
<div class="">
<div class=""><br class="">
</div>
<div class="">fünf;"sechs;sieben";#.;a%;cht#.:;neun</div>
</div>
<div class=""><br class="">
</div>
<div class="">Mit dem einfachen Trenner ";" in S_TABLE Trenner1, würde folgendes passieren: </div>
<div class="">
<div class="">x            = *</div>
<div class="">           1 = fünf</div>
<div class="">           2 = "sechs</div>
<div class="">           3 = sieben"</div>
<div class="">           4 = #.</div>
<div class="">           5 = a%</div>
<div class="">           6 = cht#.:</div>
<div class="">           7 = neun</div>
</div>
<div class=""><br class="">
</div>
<div class="">Mit einer S_TABLE, die Ausnahmen definiert, funktioniert es. </div>
<div class="">Nicht berücksichtigt werden Semikola, die zwischen " " stehen; sowie die französischen Anführungszeichen mit linker Spitze und Cedille %; ausgenommen werden: </div>
<div class="">
<div class=""><br class="">
</div>
<div class="">
<div class="">$$ BUILD S_TABLE trenner2=*</div>
<div class="">||"*"|%;|#.;||</div>
<div class="">|;|</div>
</div>
</div>
<div class=""><br class="">
</div>
<div class="">Ergebnis, wie gewünscht: </div>
<div class="">
<div class="">x            = *</div>
<div class="">           1 = fünf</div>
<div class="">           2 = "sechs;sieben"</div>
<div class="">           3 = #.;a%;cht#.:</div>
<div class="">           4 = neun</div>
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">Jetzt zum eigentlichen Problem. Meine Nutzer und Nutzerinnen setzen immer mal wieder gerne den doppelten Apostroph (TUSTEP #.").</div>
<div class="">Daran scheitere ich und komme zu meiner Frage: </div>
<div class="">Wie müsste die Definition für den "Trenner" aussehen, damit das folgende Beispiel </div>
<div class=""><br class="">
</div>
<div class="">
<div class="">#."elf#.;;zwölf;dreizehn#.";vierzehn”</div>
</div>
<div class=""><br class="">
</div>
<div class="">wie folgt gesplittet wird: </div>
<div class=""><br class="">
</div>
<div class="">#."elf#.;</div>
<div class="">zwölf</div>
<div class="">dreizehn#."</div>
<div class="">vierzehn</div>
<div class=""><br class="">
</div>
<div class="">Mit dem einfachen Trenner ; passiert das folgende: </div>
<div class="">
<div class="">x            = *</div>
<div class="">           1 = #."elf#.</div>
<div class="">           2 =</div>
<div class="">           3 = zwölf</div>
<div class="">           4 = dreizehn#."</div>
<div class="">           5 = vierzehn</div>
</div>
<div class=""><br class="">
</div>
<div class="">Mit dem für das zweite Beispiel angepassten: </div>
<div class="">
<div class="">x            = *</div>
<div class="">           1 = #."elf#.;;zwölf;dreizehn#."</div>
<div class="">           2 = vierzehn</div>
</div>
<div class=""><br class="">
</div>
<div class="">Hat jemand eine Idee, wie sich das mit einer S_TABLE lösen lässt, die TUSTEP-Sonderzeichen #." %;  #.; berücksichtigt *und* zwischen " " stehende Zeichen nicht splittet (siehe oben S_TABLE trenner2) und sich dabei nicht von #." aus dem Konzept
 bringen lässt. </div>
<div class=""><br class="">
</div>
<div class="">Meine unelegante Lösung tauscht das störende #." in <az/> aus und fügt es anschliessend wieder ein. Das geht, führt aber zu weiteren Problemen. </div>
<div class="">Eleganter wäre es mit einer S_TABLE für alle. </div>
<div class=""><br class="">
</div>
</div>
<div class="">Herzliche Grüße in die Runde </div>
<div class="">Thomas Kollatz</div>
<div class="">
<div class="">
<div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<a href="http://orcid.org/0000-0003-1904-1841" class="">http://orcid.org/0000-0003-1904-1841</a></div>
<div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br class="">
</div>
<br class="Apple-interchange-newline">
</div>
<br class="">
</div>
</div>

-- <br class="">Tustep-Liste mailing list<br class=""><a href="mailto:Tustep-Liste@itug.de" class="">Tustep-Liste@itug.de</a><br class="">https://lists.itug.de/mailman/listinfo/tustep-liste<br class=""></div></blockquote></div><br class=""></body></html>