Anmelden

View Full Version : [RPGLE] Textfeld sinnvoll trennen



Seiten : [1] 2

Panther
11-01-13, 08:33
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

Robi
11-01-13, 09:05
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

Panther
11-01-13, 10:26
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:

Robi
11-01-13, 10:40
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

Robi
11-01-13, 10:43
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

Panther
11-01-13, 10:43
Keine Ausgabe im BS, sondern nur eine interne Lösung in einem Programm ist gemeint.

Panther

B.Hauser
11-01-13, 11:17
Hilft Dir vielleicht der folgende Link weiter:
Wrapping Free Form Text (http://www.itjungle.com/fhg/fhg103107-story02.html)

Birgitta

Panther
11-01-13, 13:18
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

Robi
11-01-13, 13:27
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