View Full Version : [RPGLE] Textfeld sinnvoll trennen
Hallo,
ich habe versucht zu dem Thema etwas zu finden, war aber erfolglos, deshalb stelle ich hier einmal meine Frage:
Ich habe ein Textfeld von 250 Zeichen. Dieses möchte ich sinnvoll, also leserlich in 5 Textfelder aufteilen.
Mit Sinnvoll meine ich das Wörter nicht getrennt ( abgehackt ) werden.
Dieses Lösung hätte ich gerne in RPGLE
Danke für die Hilfe im Voraus :rolleyes:
Panther
Schlüsselwort CNTFLD(50) macht den Zeilenumbruch, --> Anzeige 5 Zeilen a 51 Byte
Schlüsselwort WRDWRAP sorgt für den Wortumbruch. (immer wenn in die 51 was geschrieben wird)
Leider werden beide Schlüsselwörter nicht in allen Emulationen sauber unterstützt (Erweiterter 5250 Datenstrom)
Vor dem Feld, das mit CNTFLD versehen wird, müssen 2 Byte leer sein.
Robi
Hallo Robi,
danke für Deine Antwort.
Was ich aber meinte ist folgendes:
Ich kann im Programm, intern, eine Datenstruktur mit den 5 Textfeldern hinterlegen.
Hier wird dann aber gnadenlos getrennt, der Text wird abgeschnitten.
Das möchte ich aber so nicht. :confused:
Entweder hab ich dich noch nicht verstanden oder du hast meine Lösung noch nicht ausprobiert.
1 Textfeld 250 Byte,
Anzeige: 5 Zeilen a 51 Byte,
Eingabe: geschriebenes Wort geht bis 51, 101, 151, 201
Ausgabe (auch am BS) Wort in neuer Zeile
Robi
Oder hast du gar keinen Bildschirm?
dann mußt du, wenn %substr(textfeld250: 51:1 <> ' ')
bei dem Blank davor trennen.
Das mußt du programmieren
Robi
Keine Ausgabe im BS, sondern nur eine interne Lösung in einem Programm ist gemeint.
Panther
Hilft Dir vielleicht der folgende Link weiter:
Wrapping Free Form Text (http://www.itjungle.com/fhg/fhg103107-story02.html)
Birgitta
Hallo B.Hauser,
danke für die Antwort. Leider hat mir das nicht weitergeholfen.
Robi hat schon richtig geantwortet:
Oder hast du gar keinen Bildschirm?
dann mußt du, wenn %substr(textfeld250: 51:1 <> ' ')
bei dem Blank davor trennen.
Das mußt du programmieren
Robi
Allerdings frage ich mich, wie ich das mit den 5 Textfeldern lösen soll.
Panther
Schätze wir beide werden uns heute nicht mehr einig !:cool::)
Der link von Birgitta ist doch super.
Damit geht das, (was ich glaube das du willst)
Robi
dschroeder
11-01-13, 14:52
Hallo Panther,
hast du dir den Sourcecode des WrapText-Programms (Link von Birgitta) mal angesehen? Vielleicht ist dir unklar, wie man das Programm verwenden kann. Aus meiner Sicht ist das nach folgendem Prinzip möglich:
Also, du hast 1 großes Textfeld mit 250 Zeichen Länge:
D text S 250A
Als Ergebnis möchtest du den Text in 5 Textfelder von z.B. 78 Zeichen Länge haben, richtig?
D text1 S 78A
D text2 S 78A
D text3 S 78A
D text4 S 78A
D text5 S 78A
Dann musst du dir nur ein großes Ergebnistextfeld definieren (So groß wie alle gewünschten Ergebnistextfelder zusammen (also 5 mal 78):
tempText S 390A
Dann rufst du die WrapText Procedure auf:
tempText = WrapText(text:78);
Jetzt musst du nur noch dein temporäres Ergebnis in deine 5 gewünschten Felder übertragen:
text1 = %subst(tempText:1:78);
text2 = %subst(tempText:79:78);
text3 = %subst(tempText:157:78);
text4 = %subst(tempText:235:78);
text5 = %subst(tempText:313:78);
Fertig!
Die andere im Link beschriebene Möglichkeit, die Procedure WrapText für eine UDTF zu nutzen, geht natürlich auch. Aber so müsste es rein im RPG funktionieren, denke ich.
Gruß,
Dieter