Formatierte Daten in eine Ergebniszeichenfolge schreiben
Dieser Befehl schreibt die in Data1 (erweiterbar auf Data16) angegebenen formatierten Daten in eine formatierte Zeichenfolge, deren Format durch das Steuerzeichen sFormat festgelegt wird.
Eingang
Steuerzeichen mit Formatbezeichnern, die definieren, wie die formatierte Zeichenfolge erstellt werden soll
Zeichenfolgenvariable oder Zeichenkonstante (bis zu 256 Zeichen) mit der Definition, wie die Zeichenfolge erstellt werden soll.
Das Steuerzeichen besteht aus dem Text, dem Formatbezeichner (%d,%e usw.), dem Code für Zeilenvorschub (\n) und dem Code für Tabulator (\t).
Die formatierte Zeichenfolge kann bis zu 4096 Zeichen enthalten. Bei mehr Zeichen tritt ein Operationsfehler auf.
Für einen Formatbezeichner können Sie zu bis 16 Ziffern angeben. Bei mehr Ziffern tritt ein Operationsfehler auf.
Die maximale Zeichenzahl nach der Umwandlung von 1 Wert beträgt 32, exklusive %s und %S. Bei mehr Zeichen tritt ein Operationsfehler auf.
Alle Zeichenfolgen, die nicht als Formatbezeichner erkannt werden, werden als zu formatierender Text behandelt.
Zu formatierende Daten
Variablendaten, die in die formatierte Zeichenfolge geschrieben werden sollen.
Die Variablendaten in der im Steuerzeichen angegebenen Reihenfolge anordnen.
Ausgang
Formatierte Zeichenfolge mit Daten im ASCII-Format.
Der Eingang Data1 ist auf max. 16 Eingänge erweiterbar.
Die Anzahl der Eingänge Data1..DataN muss der Anzahl der Formatbezeichner in der in sFormat angegebenen Eingangszeichenfolge entsprechen.
Der Datentyp am Eingang DataN muss mit dem entsprechenden Formatbezeichner in sFormat übereinstimmen (siehe Tabelle unten).
sFormat: z.B. %+12.5d,
Verwenden Sie Zeichenfolgendaten im unten dargestellten Format, um Typ, Zeichenanzahl und Nachkommastellen der formatierten Zeichenfolge anzugeben. Abhängig vom umzuwandelnden Datentyp können auch verschiedene Optionen (z.B. Einfügen eines Vorzeichens oder von Leerzeichen) ausgewählt werden.
Position im Beispiel |
Beschreibung |
sFormat |
Binärwerte |
Umwandlungsergebnis in ASCII-Werten |
Kommentar |
|
---|---|---|---|---|---|---|
0 |
Zero-Padding |
'%05d' |
100 |
'00100' |
Wenn die Zeichenanzahl spezifiziert ist, kann Zero-Padding verwendet werden, indem dem Steuerzeichen sFormat an dieser Position null (0) hinzugefügt wird. |
|
+ |
Pluszeichen hinzufügen |
'%+4d' |
100 |
'+100' |
Breite vier Zeichen, Dezimalwert, Pluszeichen hinzugefügt |
|
- |
Linksbündig |
'%-6d' |
100 |
'100 |
Breite sechs Zeichen, Dezimalwert, linksbündig |
|
![]() |
(Leerzeichen) Leerzeichen statt Pluszeichen hinzufügen |
'% |
100 |
' |
Breite vier Zeichen, Dezimalwert, aufgefüllt mit Leerzeichen |
|
# |
0x für Hexadezimalzahlen einfügen |
'%#4X' |
100 |
'0X64' |
Breite vier Zeichen, numerischer Wert im hexadezimalen Format beginnend mit 0X |
|
Immer einen Dezimalpunkt für reelle Zahlen anhängen |
'%#8.0f' |
123.45678 |
' |
Breite acht Zeichen, Fließkommazahl, vier führende Leerzeichen |
||
12 |
Breite des ASCII-Datenelements (mit oder ohne Komma) Wenn die Breite kleiner ist als die für diesen Wert erforderliche Zeichenanzahl, tritt ein Operationsfehler auf. Siehe dazu "Fehlermerker". |
'%012d' |
100 |
'000000000100' |
Breite 12 Zeichen mit neun führenden Nullen |
|
Keine Breite: |
'%d,' |
100 |
'100,' |
Keine Breite festgelegt, Komma angehängt |
||
Stellen nach Dezimalpunkt |
||||||
.5 |
Alle Ziffern nach dem Dezimalpunkt |
'%8.3f' |
123.45599 |
' |
Breite acht Zeichen, drei Stellen nach dem Dezimalpunkt |
|
12.5 |
Gibt die Gesamtzeichenanzahl (n) und die Anzahl der Nachkommastellen (m) mit [n.m], [n] oder [.m] an. Die Anzahl der Nachkommastellen (m) ändert sich entsprechend dem Typ der Umwandlungswerte. |
|||||
d , Ld, i , Li, u ,Lu, x , Lx , b, Lb |
Gibt die Zeichenanzahl in numerischen Zeichenfolgen an. |
|||||
f, Lf, e, Le, E, LE |
Gibt die Anzahl der Nachkommastellen an. |
|||||
g, Lg, G, LG |
Gibt die Anzahl der signifikanten Stellen an. |
|||||
Typ der umzuwandelnden Daten |
'%06d' |
100 |
' |
d , i , u , x , X , b: Zeichenanzahl in numerischen Zeichenfolgen f: Anzahl der Nachkommastellen g: Anzahl der signifikanten Stellen |
||
d |
vorzeichenbehaftete Ganzzahl ® dezimaler ASCII-Wert |
'%6d' |
100 |
'000100' |
Breite sechs Zeichen, Dezimalwert mit drei führenden Nullen |
|
u |
vorzeichenlose Ganzzahl ® dezimaler ASCII-Wert |
'%10u' |
-100 |
' |
Breite zehn Zeichen, sieben führende Leerzeichen, vorzeichenlose ganze Zahl |
|
x |
vorzeichenlose Ganzzahl ® hexadezimaler ASCII-Wert |
'%4x' |
16#12A |
' |
Breite vier Zeichen, Hexadezimalzahl in Kleinschreibung |
|
X |
Hexadezimalzahl in Großschreibung |
'%4X' |
16#12A |
' |
Breite vier Zeichen, Hexadezimalzahl in Großschreibung |
|
b |
BCD-Ganzzahl ® hexadezimaler ASCII-Wert |
'%5b' |
16#123 |
' |
Breite fünf Zeichen, BCD-Werte |
|
f |
Fließkommazahl (reell) ® Fließkomma-ASCII-Wert |
'%-6.2f' |
1.2345 |
'1.23 |
Breite sechs Zeichen, linksbündig, zwei Stellen nach dem Dezimalpunkt |
|
e |
Fließkommazahl (reell) ® ASCII-Wert in Exponentialschreibweise |
'%9.3e' |
1234.5678 |
'1.235e+03' |
Breite neun Zeichen, drei Stellen nach dem Dezimalpunkt, Exponentialzahl in Kleinschreibung |
|
E |
Exponentialzahl in Großschreibung 1.23E10 |
'%9.3E' |
1234.5678 |
'1.235E+03' |
Breite neun Zeichen, drei Stellen nach dem Dezimalpunkt, Exponentialzahl in Großschreibung |
|
g |
Fließkommazahl (reell) ® Fließkomma-ASCII-Wert oder ASCII-Wert in Exponentialschreibweise |
'%12g' |
1234.5678 |
' |
Breite 12 Zeichen, Fließkommazahl |
|
G |
Fließkomma- oder Exponentialzahl in Großschreibung |
'%#9.3G' |
1234 |
' |
Breite neun Zeichen, drei Stellen nach Dezimalpunkt |
|
s |
string ®ASCII |
'%10s' |
abcdef |
'abcdef |
Zeichenfolgendaten (für die angegebene Zeichenanzahl) |
|
S |
Zeichenfolge ®ASCII-Wert in Großschreibung |
'%-10S' |
abcDEF |
' |
Zeichenfolgendaten mit Unterscheidung zwischen Groß- und Kleinschreibung |
Steuerzeichen |
Binärwerte vor der Umwandlung |
ASCII-Werte nach der Umwandlung |
Beispiel |
---|---|---|---|
'%d' oder '%i' |
16-Bit-Daten (vorzeichenbehaftete Ganzzahl) |
Dezimale ASCII-Werte |
'%d' , '%5d' , '%+5d" '%-5d' , '%05d' , '%10.5d' , '%d,' , '% d' |
'%Ld' oder '%Li' |
32-Bit-Daten (vorzeichenbehaftete Ganzzahl) |
||
'%u' |
16-Bit-Daten (vorzeichenlose Ganzzahl) |
'%u' , '%5u' , '%+5u' '%-5u' , '%05u' , '%10.5u' , '%u,' |
|
'%Lu' |
32-Bit-Daten (vorzeichenlose Ganzzahl) |
||
'%x' |
16-Bit-Daten |
Hexadezimale ASCII-Werte (Vorwärts-/Rückwärtsrichtung) |
'%x' , '%5x' , '%-5x' '%05x' , '%10.5x' , '%x,' , '%#x' , '%X' |
'%Lx' |
32-Bit-Daten |
||
'%b' |
16-Bit-BCD-Daten |
'%b' , '%5b' , '%-5b' '%05b' , '%10.5b' , '%b,' |
|
'%Lb' |
32-Bit-BCD-Daten |
||
'%f' |
32-Bit-Fließkommawerte mit einer Nachkommastelle |
Fließkomma-ASCII-Werte |
'%f' , '%5.2f' , '%+5.2f' '%-5.2f' , '%05.2f' , '%f,' , '%#f' , '% f' |
'%Lf' |
64-Bit-Fließkommawerte mit zwei Nachkommastellen |
||
'%e' |
32-Bit-Fließkommawerte mit einer Nachkommastelle |
ASCII-Werte in Exponentialschreibweise |
'%e' , '%5.2e' , '%+5.2e' '%-5.2e' , '%05.2e' ,'%e,' '%#5.2e' , '% e' , '%E' |
'%Le' |
64-Bit-Fließkommawerte mit zwei Nachkommastellen |
||
'%LE' |
lange 64-Bit-Fließkommawerte mit zwei Nachkommastellen |
'%#5.2E' , '% E' , '%E' |
|
'%g' |
32-Bit-Fließkommawerte mit einer Nachkommastelle |
ASCII-Werte in Exponentialschreibweise oder Fließkomma-ASCII-Werte (je nachdem, welche in der relevanten Schreibweise kürzer sind) |
'%g' , '%5.2g' , '%+5.2g' '%-5.2g' , '%05.2g' ,'%g," '%#5.2g' , '%G' |
'%Lg' |
64-Bit-Fließkommawerte mit zwei Nachkommastellen |
||
'%LG' |
lange 64-Bit-Fließkommawerte mit zwei Nachkommastellen |
'%-5.2G' , '%05.2G' ,'%G," '%#5.2G' , '%G' |
|
'%s' |
Zeichenfolgendaten |
Zeichenfolgendaten (für die angegebene Zeichenanzahl) |
'%s' , '%5s' , '%-5s' , '%-05s' |
wenn das Steuerzeichen sFormat fehlerhaft ist.
wenn die Vorwärtsrichtung (+) in sFormat angegeben, und das Format dezimal ist.
wenn das Ergebnis der Umwandlung den Speicherplatz überschreitet.
wenn für das ASCII-Datenelement eine Breite angegeben wird, die kleiner als die für den Wert erforderliche Zeichenanzahl ist
wenn das Steuerzeichen sFormat fehlerhaft ist.
wenn die Vorwärtsrichtung (+) in sFormat angegeben, und das Format dezimal ist.
wenn das Ergebnis der Umwandlung den Speicherplatz überschreitet.
wenn für das ASCII-Datenelement eine Breite angegeben wird, die kleiner als die für den Wert erforderliche Zeichenanzahl ist
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden.Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR
bFormat: BOOL:=FALSE;
sFormatString: STRING[50]:='Current Value: %6d [Min: %6d, Max: %6d]';
sFormattedString: STRING[50]:='';
iCurrentValue: INT:=815;
iMin: INT:=-16756;
iMax: INT:=23456; END_VAR
Wenn die Variable bStart von FALSE auf TRUE gesetzt wird, wird die Funktion ausgeführt.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_CONTACT,,bFormat,7,1,9,3,);
B(B_F,E_FP_FORMAT_STRING-3!,,25,0,36,7,,?DEN?dsFormat?dData1?dData2?dData3?AENO?c);
B(B_VARIN,,sFormatString,23,2,25,4,);
B(B_VAROUT,,sFormattedString,36,2,38,4,);
B(B_VARIN,,iCurrentValue,23,3,25,5,);
B(B_VARIN,,iMin,23,4,25,6,);
B(B_VARIN,,iMax,23,5,25,7,);
L(1,0,1,7);
L(1,2,7,2);
L(9,2,25,2);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if (bFormat) then
sFormattedString := FP_FORMAT_STRING(sFormatString,
iCurrentValue, iMin, iMax);
end_if;