Verwenden Sie Textfunktionen wie text und sprintf, um Strings zu bearbeiten und zu analysieren.

Beispiel: Textfunktionen

real64 r = 0.123
text t(10) = text(r, "%.2f")

sprintf-Funktionen

Mit der Funktion sprintf können Sie Text ohne Formatierung in eine Textvariable schreiben. Die Funktion sprintf ist eine Alternative zum Verknüpfungsoperator +.

Die Syntax lautet:

Target variable = sprintf (formatstring, arguments,...)

Der Datentyp der Zielvariablen muss text sein. Der Format-String kann Formatierungscodes enthalten. Wenn keine Formatierungscodes verwendet werden, werden keine Argumente angegeben.

Hinweis Der Format-String muss konstant sein. Setzen Sie den Format-String in doppelte Anführungszeichen. Textvariablen können nicht als Format-String verwendet werden.

Beispiel: Gültige Anweisungen

program
  text textVariable(20)
  text textVariable2(20) = "Hello World"
  textVariable1 = sprintf("Constant text")
  textVariable1 = sprintf("Constant text %s", textVariable2)
endprogram

Beispiel: Ungültige Anweisungen

program
  text textVariable(20)
  text formatStringVariable(20)
  text textVariable2(20) = "Hello World"
  textVariable1 = sprintf(formatStringVariable, textVariable2)
  textVariable1 = sprintf(textVariable2)
endprogram

Formatieren von Codes für sprintf

Stellen Sie den Zeichen ein %-Zeichen voran.

Zeichen Bedeutung
Minuszeichen ( - ) Linksbündige Ausgabe.
Pluszeichen ( + ) Fügt dem Ergebnis ein Präfix hinzu, wenn eine Zahl erzeugt wird.
Leer Stellt dem Ergebnis ein Leerzeichen voran, wenn das Ergebnis positiv und linksbündig ist. Wird ignoriert, wenn Sie Leerzeichen und + angeben.
Hash ( # ) Der Hash verhält sich vor jedem Ergebnis, das ungleich Null ist, wie folgt:
  • Bei Angabe im o-Format hat das #-Zeichen das Präfix 0.
  • Bei Angabe im x-Format hat das #-Zeichen das Präfix 0x.
  • Bei Angabe im X-Format hat das #-Zeichen das Präfix 0X.
Das #-Zeichen erzwingt in folgenden Fällen immer einen Dezimalpunkt:
  • Wenn zusammen mit dem e-Format angegeben
  • Wenn zusammen mit dem E-Format angegeben
  • Wenn zusammen mit dem f-Format angegeben
PAtools erzeugt in Kombination mit der Textausgabe ( %#s) nicht druckbare Zeichen (z. B. <00>) in Texten.
Dezimal-String (mit und ohne Punkt)

Ein Dezimal-String bestimmt die Anzahl der zu erzeugenden Zeichen. Die genaue Bedeutung hängt vom zu erzeugenden Datentyp ab.

Folgende Regel gilt für alle Ausgaben von Texten:

  • Wenn der Dezimal-String keinen Punkt enthält, bestimmt er die Anzahl der zu schreibenden Zeichen.
  • Wenn der Text für die Ausgabe länger ist, wird er abgeschnitten.
  • Ist er kürzer, werden je nach ausgewählter Ausrichtung links oder rechts Leerzeichen bis zu dieser Länge ausgefüllt.
  • Wenn der Dezimal-String für die Textausgabe einen Punkt enthält, wird der Text gekürzt. Der Text wird auf die Anzahl der Zeichen nach dem Ausgabepunkt gekürzt. Der Text wird gekürzt, auch wenn die Gesamtlänge der Ausgabe größer ist als der Text. In diesem Fall werden die restlichen Zeichen als Leerzeichen erzeugt. Der String TextPart mit den Formatangaben %10.4s führt beispielsweise zu folgender Ausgabe: Text.

Die Formatregel gilt für die Ausgabe von Integer in den Formaten d, i, o, u, x und X.

  • Die Mindestanzahl der geschriebenen Zeichen kann im Dezimal-String definiert werden.
  • Wenn der Wert länger ist, wird er nicht abgeschnitten.
  • Wenn der Text für die Ausgabe kürzer als die definierte Länge ist, wird die Ausgabe mit vorangestellten oder nachfolgenden Leerzeichen gefüllt. Die Platzierung der Leerzeichen hängt von der Ausrichtung ab.
  • Wenn Sie eine vorangestellte Null programmieren (z. B. %020d), werden Nullen ausgefüllt, bis die rechte Ausrichtung erreicht ist.

Bei der Ausgabe reeller Werte definiert der Dezimal-String die Gesamtlänge und bestimmt die Genauigkeit. Reelle Werte sind e, f und g.

  • Die Gesamtlänge der Ausgabe wird vor dem Punkt definiert. Die Anzahl der Stellen nach dem Dezimalzeichen ist für die Formate e, E und f definiert.
  • Die maximale Anzahl signifikanter Stellen (Zahlen ohne Nullen) ist für die Formate g und G definiert. Bei Fließkommazahlen wird die Ausgabe nicht gekürzt, wenn die zugewiesene Gesamtlänge zu kurz ist.
Sternchen (*) Ein Sternchen nach dem Prozentzeichen bedeutet, dass die Array-Länge nicht im Formatierungscode angegeben ist. Stattdessen wird die Array-Länge als zusätzlicher Integer-Wert vor dem zu formatierenden Argument angegeben.
d Schreibt einen I4-Integer als vorzeichenbehaftete Dezimalzahl.
D Dimension einer globalen Variablen.
N Name einer globalen Variablen.
i Schreibt einen I4-Integer als vorzeichenbehaftete Zahl.
o Schreibt einen vorzeichenlosen U4-Integer als Oktalzahl.
u Wert einer vorzeichenlosen Integer-Variablen.
x, X Schreibt einen vorzeichenlosen U4-Integer als Hexadezimalzahl (abcdef) oder (ABCDEF).
f Schreibt eine Fließkommazahl in Festkomma- oder Exponentialschreibweise.
e, E Double R8 in wissenschaftlicher Darstellung: [-]m.ddde±xx oder [-]m.dddE±xx, wobei die Genauigkeit (siehe #) die Anzahl der Stellen nach dem Dezimalzeichen definiert.
g, G Schreibt eine Fließkommazahl in Festkomma- oder Exponentialschreibweise.
s Schreibt einen Text bis zum nächsten Leerzeichen.
c Schreibt das nächste Zeichen.
% Das Prozentzeichen wird ausgegeben.

Modifikatoren

Modifikatoren sind optional. Modifikatoren können den Wertebereich der gelesenen oder erzeugten Werte einschränken.

Zeichen Bedeutung
h Die Umwandlungszeichen d, i, o, u, x, X werden als Short-Wert verarbeitet. -32.768 bis 32.767 vorzeichenbehaftet oder 0 bis 65535 vorzeichenlos.
hh Die Umwandlungszeichen d, i, o, u, x, X werden als Byte-Wert verarbeitet. -128 bis 127 vorzeichenbehaftet oder 0 bis 255 vorzeichenlos.
l Die Umwandlungszeichen d, i, o, u, x, X werden als Long- und Double-Wert verarbeitet.
L Die Umwandlungszeichen e, E, f, g, G werden als Long-Double-Wert verarbeitet.

Ausgabe von Sonderzeichen

Sonderzeichen werden ohne vorangestelltes Prozentzeichen ausgegeben.

Zeichen Bedeutung
\<DIGIT> Sonderzeichen werden angezeigt. Sonderzeichen müssen in Oktalschreibweise angegeben werden. Beispiel: \42 = " und \57 = /.
\n Zeilenumbruch
\r Zeilenvorschub
\t Tabulator

Beispiele für sprintf

Deklarationen:

text txt(40)
int32 int = 65
const text info(4) = "Info"
const real64real = 1234.5678
Typ Fmt Beispiel Inhalt von txt
int32 %c txt = sprintf( "character: %c", int ) "character: A"
int32 %u txt = sprintf( "integer: %u", int ) "Integer: 65"
int32 %d txt = sprintf( "integer: %d", int ) "Integer: 65"
int32 %4d txt = sprintf( "integer: %4d", int ) "integer: 65"
int32 %04d txt = sprintf( "integer: %04d" , int ) "Integer: 0065"
int32 %X txt = sprintf( "hex: %X", int ) "hex: A3"
real64 %f txt = sprintf( "number: %f", real) "number: 1234.567800"
real64 %.2f txt = sprintf( "number: %.2f", real) "number: 1234.57"
real64 %10.2f txt = sprintf( "number.2f", real) "number: 1234.57"
real64 %e txt = sprintf("number: %e", real) "number: 1.23457e+03"
real64 %.2e txt = sprintf( "number: %.2e", real) "number: 1.23e+03"
real64 %g txt = sprintf( "number: %g", real) "number: 1234.57"
real64 %.1g txt = sprintf( "number: %.1g", real) "number: 1e+03"
real64 %.2G txt = sprintf( "number: %.2G", real) "number: 1.2e+03"
Text %s txt = sprintf( "character sequence: %s", info) "character sequence: Info"
Text %% txt = sprintf( "percent sign: %%" ) "percent sign: %"