PDA

View Full Version : string zusammenstellen



redsky
22-08-05, 11:30
hallo leute ich möchte einen String zusammen stellen der so ausschaut

'TEST%'
wie bringe ich die einfachen hochkomma dazu?
such = %trim(bezeichnung) + '%';

mfg
redsky

Fuerchau
22-08-05, 11:39
such = '''' + %trim(bezeichnung) + '%''';

Allerdings, wenn du das Feld im SQL benötigst, wäre folgendes einfacher:

select ...
where suchfeld like trim(:such) ...

redsky
22-08-05, 11:46
danke habs schon geschaft

mfg
redsky

Joe
23-08-05, 08:08
Hallo Redsky

Damit entfällt das lästige Hochkomma zählen:

D HK C Const(x'7D')


such = HK + %trim(bezeichnung) + '%' + HK

Gruß Joe

B.Hauser
23-08-05, 09:13
D HK C Const(x'7D')


Das würde ich nicht machen!
x'7D' ist nämlich nicht international, d.h. in unterschiedlichen EBCDIC Codes werden verschiedene Hex-Werte verwendet.

Die Idee mit einer Konstanten zu arbeiten ist nicht schlecht, allerdings sollte sie dann wie folgt angegeben werden:


D HK C Const('''')


Birgitta

Fuerchau
23-08-05, 10:07
@Birgitta
Auch das löst nicht das Problem der Internationalität, da Programmkonstanten zur Compile-Zeit in die CCSID des Job's gewandelt werden und zur Laufzeit keinerlei Codewandlung mehr unterliegen.
Es ist also egal, ob man X'7D' oder '''' codiert.
Besser wäre es mit der Eingabe solcher Zeichen aus einer Datei zur Laufzeit zu arbeiten (e.g. Ladezeittabellen) oder aus MSGF's mit CCSID zu laden.

Allerdings gehört das Hochkomma zum invarianten Zeichensatz:
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/ic2924/info/nls/rbagsinvariantcharset.htm

B.Hauser
23-08-05, 10:11
Da hat mir Hans Boldt vom Compiler Entwicklungs-Team in Toronto vor einiger Zeit etwas anderes gesagt! Er hat mich eindringlich gemahnt in RPG nicht x'7D' zu verwenden, sondern statt dessen das zwei einzelne Hochkommata!

Birgitta

Fuerchau
23-08-05, 10:19
Naja, wenn ich mir die invarianten Zeichensätze so ansehe, steht dem nichts im Wege mit X'7D' zu arbeiten. Allerdings gebe ich dir Recht, wenn man mit KATAKANA, DBCS o.ä. umgehen muss ;).

Im SBCS ist jedenfalls X'7D' immer das Hochkomma, und das war bisher auf allen EBCDIC-Maschinen so (Nixdorf, AS/400, /36, /38, ES/9000, ...).