Crizen Geschrieben 31. August 2005 Teilen Geschrieben 31. August 2005 Hallo, ich hoffe hier kennen sich einige mit Cobol aus. Ich weiß das Cobol alt und verhasst ist, aber in Banken wird es immernoch eingesetzt. Ich hab folgendes Problem: Ich habe ein paar Änderungen an einem Programm gemacht, die syntaktisch auch richtig sind, nur gibt es das Problem, das ich ein "ß" durch "ss" ersetzen muss und das unabhängig von den vorhergehenden oder nachstehenden Zeichen. Es funktioniert aber nicht, da ich anscheinend nicht ein Zeichen durch 2 ersetzen kann. Hat einer ne Idee wie ich das beheben kann?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Catweezle Geschrieben 31. August 2005 Teilen Geschrieben 31. August 2005 Hallo, warum solltest du das nicht ersetzen können? Ich weiß zwar nicht ob es in Cobol dafür einen extrigen Befehl gibt, aber dann machst du das halt händisch über Feldgruppen. Wie machst du denn das momentan? Zeig mal deine Quelle! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigredeyes Geschrieben 31. August 2005 Teilen Geschrieben 31. August 2005 schreib die ne kleine regEx, die ß durch ss ersetzt und lass den quellcode durchlaufen. bigredeyes p.s. im netzt gibt es viel regEx-trainer for free mit denen du übern kannst und das ergebnis gleich siehst. oder ein java/c++7vb/c#-paar zeiler. quellcode in string einlesen string.replaceAll("ß", "ss"); string zurückschreiben. fertig Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crizen Geschrieben 1. September 2005 Autor Teilen Geschrieben 1. September 2005 Wie das in Java geht weiß ich ja, das kann ich auch. Hier in der Firma wird halt vieles noch in Cobol gemacht und deswegen muss ich das anderes machen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crizen Geschrieben 1. September 2005 Autor Teilen Geschrieben 1. September 2005 Hallo, warum solltest du das nicht ersetzen können? Ich weiß zwar nicht ob es in Cobol dafür einen extrigen Befehl gibt, aber dann machst du das halt händisch über Feldgruppen. Wie machst du denn das momentan? Zeig mal deine Quelle! Cobol meckert da, weil ich ein Zeichen (ß) durch 2 Zeichen (ss) ersetzen will, das lässt Cobol nicht zu. Ich mache das ja monentan nicht anders. Ich suche nach der Lösung des Problems. Ein kleiner Codeausschnitt des Statements: INSPECT P-ORT REPLACING "ß" BY "ss" Und genau so funzt des net... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Catweezle Geschrieben 1. September 2005 Teilen Geschrieben 1. September 2005 Hy, hierfür wirst du dich ein bischen Strecken müssen. Mit INSPECT REPLACING.. kann meines Wissens nur 1 zu 1 ausgetauscht werden. Ich denke du solltest das über 2 Feldgruppen(ARRAY) machen. Zeichen für Zeichen lesen, prüfen und in neue Feldgruppe wegschreiben. Bei einem "ß" halt "ss" einfügen. Ein wenig komplizierter wird es von "ss" auf "ß", da du hier bei jedem "s" erst prüfen musst ob ein weiteres "s" kommt. Ich hoffe ich konnte Dir weiterhelfen. Catweezle Ps.: Zeig doch mal was du schon hast! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crizen Geschrieben 1. September 2005 Autor Teilen Geschrieben 1. September 2005 damit hast du Recht das so nur 1 zu 1 ausgetauscht werden kann. Deswegen such ich ja ne andere Lösung für das Problem. Zum Glück muss ich das nicht wieder rückwärts machen (also von ss nach ß)! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crizen Geschrieben 1. September 2005 Autor Teilen Geschrieben 1. September 2005 Kann ich mit Append einen string an einen andern anhängen? In Cobol versteht sich Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 1. September 2005 Teilen Geschrieben 1. September 2005 Mit String kannst du verschieden Strings zusammenhängen. STRING Bezeichner-1 DELIMITED BY SIZE Bezeichner-2 DELIMITED BY SIZE INTO Bezeichner-3 Oder was meinst du genau? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crizen Geschrieben 1. September 2005 Autor Teilen Geschrieben 1. September 2005 Habs jetzt scheinbar geschafft. Hab den String auseinander genommen mit DELIMITED BY "ß" INTO S1 S2 und dann das "ss" in den String eingebaut. Laut Compiler geht das auch... mal sehn was der Test sagt... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crizen Geschrieben 1. September 2005 Autor Teilen Geschrieben 1. September 2005 Und wie ist das wenn in einem Satz 2mal ein ß vorkommt??? Wie mach ich das dann??? :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 1. September 2005 Teilen Geschrieben 1. September 2005 Habe da mal eine andere Frage wo kommen denn die Sätze mit den ß her? Wenn aus einer DB dann kannst du doch vielleicht versuchen da schon die ß umzuwandeln. Hast du auch schon daran gedacht das wenn du mehrere ß in einem Satz hast, und diese dann ersetzt, das du dann durchaus auch an das Satzende deines Ausgabesatzes stoßen könntest und dir dann Teile davon Abgeschnitten werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crizen Geschrieben 1. September 2005 Autor Teilen Geschrieben 1. September 2005 Das ich da ans Ende stoßen könnte hab ich berücksichtigt. Die ganzen ß kommen nicht aus der DB sondern aus einer Datei. Bei den ß dreht es sich um Ortsnamen ausm Ausland, die bei uns im deutschen Sprachgebrauch mir ß geschrieben werden aber im jeweiligen Land nicht. Es gibt ja nur in Deutschland ein ß und sonst nirgendwo... Jetzt muss ich aber abfangen das mehr als 1 ß vorkommen kann. wenn es nur 1 gäbe wäre ich schon fertig habe meine routine nämlich fertig. UNSTRING ORT-EIN DELIMITED BY ´ß´ INTO HILF1 HILF2 STRING HILF1 DELIMITED BY SPACE ZEICHEN DELIMITED BY SIZE HILF2 DELIMITED BY SPACE INTO ORT-AUS Mit Zeichen ist hier eine Konstante gemeint (ss). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 1. September 2005 Teilen Geschrieben 1. September 2005 ungetestet! wenn du eine Schleife drum baust und zählst wieoft ein ß drin vorkommt. Also MOVE ORT-EIN TO HILF-ORT-EIN PERFORM UNTIL ANZAHL-FELDER = 0 UNSTRING HILF-ORT-EIN DELIMITED BY ´ß´ INTO HILF1 HILF2 TALLYING IN ANZAHL-FELDER STRING HILF1 DELIMITED BY SPACE ZEICHEN DELIMITED BY SIZE HILF2 DELIMITED BY SPACE INTO HILF-ORT-EIN END-PERFORM MOVE HILF-ORT-EIN TO ORT-AUS Versuche das mal vielleicht klappt es wenn ich etwas Zeit finde werde ich mir mal meine Unterlagen raussuchen und nochmal schauen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crizen Geschrieben 1. September 2005 Autor Teilen Geschrieben 1. September 2005 Hab ne andere Lösung gefunden: PERFORM VARYING SATZ-IND FROM 1 BY 1 UNTIL SATZ-IND > MAX IF BUCHSTABEN(SATZ-IND) = ´ß´ MOVE ERSATZ-ZEICHEN TO AUSGABE-BUCHSTABE(AUS-IND) SET AUS-IND UP BY 1 SET AUS-IND UP BY 1 ELSE MOVE BUCHSTABEN(SATZ-IND) TO AUSGABE-BUCHSTABE(AUS-IND) SET AUS-IND UP BY 1 END-IF END-PERFORM Das scheint zu gehen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 1. September 2005 Teilen Geschrieben 1. September 2005 Was ist denn max bei dir? Du solltest nämlich beachten das wenn BUCHSTABEN und AUSGABE-BUCHSTABE z.b. pic x(30) sind und in buchstaben nun ein wort mit 28 zeichen und 3 ß drinsteht es nicht mehr in AUSGABE-BUCHSTABE passen wird. Deshalb dürfte max in dem Fall nicht 30 sein. Außerdem kannst du folgendes SET AUS-IND UP BY 1 SET AUS-IND UP BY 1 [/PHP] auch in einer anweisung machen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crizen Geschrieben 2. September 2005 Autor Teilen Geschrieben 2. September 2005 Ich weiß das das auch in 1 Anweisung gehen würde mit dem hochzählen. Sind halt Vorschriften hier auf der Arbeit. Und Max ist 50. Also so lange Ortsnamen hab ich noch nie gesehen. Außerdem falls du jetzt an Ortsteile denkst, die drucken wir nicht. Sondern nur den Ort ohne Ortsteil. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.