371 lines
30 KiB
HTML
371 lines
30 KiB
HTML
<HTML>
|
||
<HEAD>
|
||
<TITLE>R_STRFORMAT</TITLE>
|
||
<META NAME="Generator" CONTENT="KDOC ">
|
||
</HEAD>
|
||
<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
|
||
|
||
<table BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#FFFFCC" NOSAVE >
|
||
<tr ALIGN=CENTER VALIGN=CENTER NOSAVE>
|
||
<td NOSAVE><font face="Arial,Helvetica"><font size=+2></font></font>
|
||
<br><font face="Arial,Helvetica"><font size=+2>CCS Modul <b>R_STRFORMAT</b></font></font>
|
||
<br> </td>
|
||
</tr>
|
||
</table>
|
||
<PRE>
|
||
Funktionsbeschreibung:
|
||
|
||
Beschreibung der Modulparameter:</pre><b><a name="param1">1</a> PRUEFSCHRITT</b><pre>
|
||
GAUDI-Pruefschritt
|
||
------------------------------</pre><b><a name="param2">2</a> POSITION</b><pre>
|
||
PAV-Position
|
||
------------------------------</pre><b><a name="param3">3</a> INPUT_STRING</b><pre>
|
||
konstanter String mit max. 14 Zeichen Laenge, der eine
|
||
Zahl in (fast) beliebiger Darstellung repraesentiert
|
||
(bei dezimaler Darstellung auch vorzeichenbehaftet),
|
||
oder ein ueber eine '&'-Variable empfangener String
|
||
gleichen Inhalts (bestehend aus moeglicherweise mehr
|
||
als 14 Zeichen);
|
||
desweiteren koennen beliebige Zeichenketten in ihre
|
||
zugehoerende sedezimale Darstellung gewandelt werden.
|
||
|
||
Ein leerer Input erzeugt eine Fehlermeldung!
|
||
|
||
------------------------------</pre><b><a name="param4">4</a> INPUT_FORMAT</b><pre>
|
||
Gibt an, welches Darstellungsformat der uebergebene
|
||
'INPUT' hat:
|
||
ASCII - beliebige Zeichenkette aus ASCII-Zeichen:
|
||
Wandlung jedes einzelnen Bytes in den entsprechenden
|
||
sedezimalen Wert (wiederum in ASCII-Darstellung);
|
||
Beispiel: INPUT_STRING ist H A L L O
|
||
OUTPUT_STRING ist 482041204C204C204F
|
||
|
||
BCD - "binary-coded-decimal" Zeichen:
|
||
Aufteilung jedes Bytes in High- und Low-Nibble
|
||
und entsprechende Weiterverarbeitung;
|
||
z.B. Wandlung von BCD-Zeichen in ihre entsprechende
|
||
ASCII-Darstellung:
|
||
001265 in 303031323635
|
||
|
||
Wichtig: Die Nibbles sollten Werte von 0 bis 9
|
||
haben, anderesfalls liegt eine
|
||
Fehlerbedingung vor!
|
||
|
||
BIN - binaeres Zahlenformat:
|
||
Auswertung erfolgt als vorzeichenlose Zahl;
|
||
eine fuehrende '1' hat nicht die Bedeutung, dass
|
||
die Zahl als negative Zahl zu bewerten ist;
|
||
Die maximale Input-Stringl<67>nge ist auf 32 begrenzt!
|
||
|
||
S_BIN - binaeres Zahlenformat (signed binary):
|
||
Auswertung erfolgt als vorzeichenbehaftete Zahl;
|
||
eine fuehrende '1' hat daher die Bedeutung, dass
|
||
die Zahl als negative Zahl zu bewerten ist
|
||
(wichtig bei Wandlung in die dezimale Darstellung);
|
||
- alternativ "S_BIN_nn" mit nn > 1 und < 64
|
||
hiermit kann bestimmt werden, wo im uebergebenen
|
||
Ziffernstring das Vorzeichenbit zu suchen ist;
|
||
Beispiel: INPUT_STRING ist 00110110
|
||
INPUT_FORMAT ist S_BIN_06
|
||
da der INPUT_STRING damit als negative
|
||
Zahl interpretiert werden soll,
|
||
ergibt eine Wandlung in die dezimale
|
||
Darstellung -10;
|
||
|
||
DEZ - dezimales Zahlenformat (Default-Einstellung):
|
||
es kann hierbei ein Vorzeichen vorhanden sein;
|
||
das Ergebnis der Wandlung in ein anderes Zahlsystem
|
||
ist dann ebenfalls Vorzeichen-behaftet, dh. das
|
||
jeweils hoechstwertige Bit in der 8-, 16- oder
|
||
32-Bit-Integer-Darstellung ist gesetzt;
|
||
|
||
FLOAT - Floating-Point-Zahl:
|
||
es kann hierbei ein Vorzeichen vorhanden sein;
|
||
das Ergebnis der Wandlung in ein anderes Zahlsystem
|
||
ist dann ebenfalls Vorzeichen-behaftet, dh. das
|
||
jeweils hoechstwertige Bit in der 8-, 16-, 32- etc.-
|
||
Integer-Darstellung ist gesetzt;
|
||
|
||
Wichtig: Bei Wandlung in ein anderes Zahlensystem
|
||
wird nur der Ganzahl-Anteil beruecksichtigt!
|
||
|
||
HEX - sedezimales Zahlenformat:
|
||
Auswertung erfolgt als vorzeichenlose Zahl;
|
||
ein in der Integer-Darstellung gesetztes hoechst-
|
||
wertiges Bit hat nicht die Bedeutung, dass die Zahl
|
||
als negative Zahl auszuwerten ist;
|
||
|
||
S_HEX - sedezimales Zahlenformat (signed sedecimal):
|
||
Auswertung erfolgt als vorzeichenbehaftete Zahl;
|
||
ein in der Integer-Darstellung gesetztes hoechst-
|
||
wertiges Bit hat die Bedeutung, dass die Zahl als
|
||
negative Zahl auszuwerten ist;
|
||
(wichtig bei Wandlung in die dezimale Darstellung);
|
||
- alternativ "S_HEX_nn" mit nn > 1 und < 64
|
||
hiermit kann bestimmt werden, wo im uebergebenen
|
||
Ziffernstring das Vorzeichenbit zu suchen ist;
|
||
Beispiel: INPUT_STRING ist 0AFFE
|
||
INPUT_FORMAT ist S_HEX_16
|
||
da der INPUT_STRING damit als negative
|
||
Zahl interpretiert werden soll,
|
||
ergibt eine Wandlung in die dezimale
|
||
Darstellung -20482;
|
||
|
||
OKT - oktales Zahlenformat:
|
||
Auswertung erfolgt als vorzeichenlose Zahl;
|
||
ein in der Integer-Darstellung gesetztes hoechst-
|
||
wertiges Bit hat nicht die Bedeutung, dass die Zahl
|
||
als negative Zahl auszuwerten ist;
|
||
|
||
S_OKT - oktales Zahlenformat (signed octal):
|
||
Auswertung erfolgt als vorzeichenbehaftete Zahl;
|
||
ein in der Integer-Darstellung gesetztes hoechst-
|
||
wertiges Bit hat die Bedeutung, dass die Zahl als
|
||
negative Zahl auszuwerten ist;
|
||
(wichtig bei Wandlung in die dezimale Darstellung);
|
||
- alternativ "S_OKT_nn" mit nn > 1 und < 64
|
||
hiermit kann bestimmt werden, wo im uebergebenen
|
||
Ziffernstring das Vorzeichenbit zu suchen ist;
|
||
Beispiel: INPUT_STRING ist 04711
|
||
INPUT_FORMAT ist S_OKT_12
|
||
da der INPUT_STRING damit als negative
|
||
Zahl interpretiert werden soll,
|
||
ergibt eine Wandlung in die dezimale
|
||
Darstellung -1591;
|
||
|
||
------------------------------</pre><b><a name="param5">5</a> AUSGABELAENGE</b><pre>
|
||
die Laenge des in das gewuenschte Format gewandelten
|
||
Ausgabestrings (Zahl von 1 bis max. 32, 0 erzeugt einen
|
||
leeren 'OUTPUT'-String);
|
||
sollen einer Zahl Nullen vorangestellt werden, ist die Laenge
|
||
- entspr. dem CCS-internen Format - auf 80 Zeichen begrenzt;
|
||
|
||
Wichtig: 1.Fehlt die Angabe einer Laenge, hat 'OUTPUT' die
|
||
Laenge, die sich aus 'INPUT' und dem gewuenschten
|
||
Ausgabeformat ergibt!
|
||
2.Ist 'AUSGABELAENGE' kleiner als die bei der Wandlung
|
||
entstehende Anzahl an Ziffern (ASCII-Zeichen),
|
||
wird eine >>>Fehlermeldung<<< erzeugt!
|
||
3.Ist 'AUSGABELAENGE' groesser als die fuer eine
|
||
Darstellung im gewuenschten Format notwendige Anzahl,
|
||
werden nur die tatsaechlich relevanten Ziffern
|
||
ausgegeben (wenn 'FUEHRENDE_NULL' = N)!
|
||
4.Soll eine negative Dezimalzahl in ein anderes Format
|
||
gewandelt werden, wird die Darstellung durch die
|
||
gewaehlte 'AUSGABELAENGE' beeinflusst (in jedem
|
||
Fall ist das hoechstwertige Bit gesetzt).
|
||
Berechnung erfolgt gemaess folgender Vorschrift:
|
||
|
||
/BIN\ / z.B. 110...
|
||
2^AUSGABELAENGE - INPUT ==> < HEX > ==> < z.B. E605..
|
||
\OKT/ \ z.B. 47...
|
||
|
||
'INPUT' muss kleiner als 2^AUSGABELAENGE sein,
|
||
anderenfalls wird eine Fehlermeldung generiert!
|
||
|
||
------------------------------</pre><b><a name="param6">6</a> KOMMASTELLEN</b><pre>
|
||
die Anzahl der Nachkommastellen bei Ausgabe einer Floating-Point-
|
||
Zahl;
|
||
dieser Parameter ist nur relevant, wenn der 'INPUT_STRING' ebenfalls
|
||
eine Floating-Point-Zahl ist;
|
||
|
||
Wichtig: Ist die Anzahl der Nachkommastellen 0, wird das
|
||
dezimale Ausgabeformat gewaehlt.
|
||
|
||
------------------------------</pre><b><a name="param7">7</a> AUFFUELLEN</b><pre>(mit Nullen)
|
||
J - der den Dezimalwert im gewaehlten Ausgabeformat
|
||
repraesentierende ASCII-String wird - um fuehrende
|
||
Nullen ergaenzt - ausgegeben;
|
||
beim OUTPUT_FORMAT REVERSEHEX wird von hinten aufgef<65>llt;
|
||
die Anzahl der fuehrenden Nullen ist abhaengig
|
||
von der Differenz:
|
||
Ausgabelaenge - (Anzahl nutzbarer Zeichen inkl. Vorzeichen)
|
||
|
||
N - keine fuehrende Nullen (Default-Einstellung);
|
||
|
||
PRE - wie 'J', aber ausschliesslich fuer 'OUTPUT_FORMAT'
|
||
'FLOAT'
|
||
|
||
POST - (nur fuer das 'OUTPUT_FORMAT' 'FLOAT')
|
||
der Ausgabestring wird im Bereich der Nachkommstellen
|
||
um Nullen erweitert;
|
||
|
||
Dieser Parameter hat keine Bedeutung, wenn der Output eine
|
||
Floating-Point-Zahl ist.
|
||
|
||
------------------------------</pre><b><a name="param8">8</a> OUTPUT_FORMAT</b><pre>
|
||
Gibt an, in welches Darstellungsformat der uebergebene
|
||
'INPUT_STRING' gewandelt werden soll:
|
||
ASCII - Wandlung eines Strings aus sedezimalen Zahlen in
|
||
einen String aus entsprechenden ASCII-Zeichen;
|
||
|
||
Wichtig: Es werden ausschliesslich Zeichen mit den Werten
|
||
0x20 bis 0x7E beruecksichtigt, alle anderen Werte
|
||
bewirken eine Fehlermeldung!
|
||
Der INPUTSTRING muss aus einer geraden Anzahl
|
||
an Bytes bestehen, sonst wird gleichfalls eine
|
||
Fehlermeldung generiert.
|
||
|
||
Beispiel: INPUT_STRING ist 482041204C204C204F
|
||
OUTPUT_STRING ist H A L L O
|
||
|
||
BIN - Wandlung in das binaere Zahlenformat;
|
||
Darstellung von negativen Zahlen
|
||
bei Ausgabelaenge von 6 Zeichen:
|
||
z.B. -47 ==> (2^6-47) <-> 1110001 ;
|
||
bei Ausgabelaenge von 13 Zeichen:
|
||
z.B. -47 ==> (2^13-47) <-> 1111111010001 ;
|
||
bei Ausgabelaenge von 32 Zeichen:
|
||
z.B. -47 ==> (2^32-47) <->
|
||
1111 ... 11111111111111010001 ;
|
||
|
||
Darstellung von positiven Zahlen
|
||
bei Ausgabelaenge von 6 Zeichen:
|
||
z.B. 11 ==> 1011 (ohne fuehrende Nullen),
|
||
001011 (mit fuehrenden Nullen);
|
||
bei Ausgabelaenge von 16 Zeichen:
|
||
z.B. 11 ==> 1011 (ohne fuehrende Nullen),
|
||
0000000000001011 (mit);
|
||
bei Ausgabelaenge von 32 Zeichen:
|
||
z.B. 11 ==> 1011 (ohne fuehrende Nullen),
|
||
00000 ... 00001011 (mit);
|
||
|
||
DEZ - Wandlung in das dezimale Zahlenformat;
|
||
(Beschraenkung auf max. 32 Bit, dh. die Ausgabelaenge
|
||
darf maximal 10 sein);
|
||
sind 'INPUT_'- und 'OUTPUT_FORMAT' identisch,
|
||
wird der 'INPUT_STRING' nicht gewandelt, sondern -
|
||
evtl. mit fuehrenden Nullen versehen - in derselben Form
|
||
ausgegeben;
|
||
|
||
Wichtig: ein Vorzeichen wird nur dann ausgegeben,
|
||
wenn 'INPUT_STRING' bereits mit einem Vor-
|
||
zeichen versehen war (dh. ebenfalls eine Zahl
|
||
in dezimaler Darstellung ist)!
|
||
|
||
FLOAT - Wandlung eines Floating-Point-INPUT's in dasselbe
|
||
Zahlenformat unter Kuerzung der Anzahl an
|
||
Nachkommastellen und Beibehaltung eines evtl.
|
||
vorhandenen Vorzeichens;
|
||
|
||
HEX - Wandlung in das sedezimale Zahlenformat;
|
||
Darstellung von negativen Zahlen
|
||
bei Ausgabelaenge von 2 Zeichen:
|
||
z.B. -47 ==> (16^2-47) <-> D1 ;
|
||
bei Ausgabelaenge von 3 Zeichen:
|
||
z.B. -47 ==> (16^3-47) <-> FD1 ;
|
||
bei Ausgabelaenge von 8 Zeichen:
|
||
z.B. -47 ==> (16^8-47) <-> FFFFFFD1 ;
|
||
|
||
Darstellung von positiven Zahlen
|
||
bei Ausgabelaenge von 2 Zeichen:
|
||
z.B. 11 ==> B (ohne fuehrende Null),
|
||
0B (mit fuehrender Null);
|
||
bei Ausgabelaenge von 4 Zeichen:
|
||
z.B. 11 ==> B (ohne fuehrende Nullen),
|
||
000B (mit fuehrenden Nullen);
|
||
bei Ausgabelaenge von 8 Zeichen:
|
||
z.B. 11 ==> B (ohne fuehrende Nullen),
|
||
0000000B (mit fuehrenden Nullen);
|
||
|
||
REVERSEHEX - HEX-Darstellung mit umgekehrter Byte-Reihenfolge
|
||
Das Auffuellen mit Nullen geschieht von hinten!
|
||
|
||
OKT - Wandlung in das oktale Zahlenformat;
|
||
Darstellung von negativen Zahlen
|
||
bei Ausgabelaenge von 3 Zeichen:
|
||
z.B. -47 ==> (8^3-47) <-> 721 ;
|
||
bei Ausgabelaenge von 6 Zeichen:
|
||
z.B. -47 ==> (8^6-47) <-> 777721 ;
|
||
bei Ausgabelaenge von 10 Zeichen:
|
||
z.B. -47 ==> (8^10-47) <-> 7777777721 ;
|
||
|
||
Darstellung von positiven Zahlen
|
||
bei Ausgabelaenge von 3 Zeichen:
|
||
z.B. 11 ==> 13 (ohne fuehrende Null),
|
||
013 (mit fuehrender Null);
|
||
bei Ausgabelaenge von 5 Zeichen:
|
||
z.B. 11 ==> 13 (ohne fuehrende Nullen),
|
||
00013 (mit fuehrenden Nullen);
|
||
bei Ausgabelaenge von 12 Zeichen:
|
||
z.B. 11 ==> 13 (ohne fuehrende Nullen),
|
||
000000000013 (mit fuehrenden Nullen);
|
||
|
||
|
||
Wichtig: Ohne gueltigen Format-Parameter wird eine
|
||
Fehlermeldung generiert!
|
||
|
||
------------------------------</pre><b><a name="param9">9</a> OUTPUT_STRING</b><pre>
|
||
Ausgabestring, in den der 'INPUT_STRING' gewandelt wurde;
|
||
die Weitergabe an andere Module erfolgt durch eine
|
||
'&'-Variable;
|
||
|
||
Wichtig: in sedezimaler Darstellung werden die
|
||
Zahlenwerte 10 bis 15 (entspr. A bis F) als
|
||
Grossbuchstaben ausgegeben!
|
||
|
||
------------------------------</pre><b><a name="param10">10</a> FEHLERFLAG</b><pre>
|
||
wie der Name schon sagt, Fehlerflag, das gesetzt wird, wenn bei der
|
||
Wandlung ein Fehler auftritt (z.B. bei ungueltiger Wandlung ).
|
||
Der Parameter ist notwendig geworden, um dem M_AUSWERTUNG ein n.i.O.
|
||
zu uebermitteln.
|
||
Wichtig: das Modul R_STRFORMAT setzt nicht das "globale Fehlerflag"!!!
|
||
|
||
----------------------------------------------------------
|
||
|
||
Input: Zeiger auf den relevanten "Wert" einer Zeile der
|
||
expandierten Pruefliste;
|
||
Index im entsprechenden Speicherbereich fuer
|
||
Moduldaten;
|
||
Anzahl der Modulparameter;
|
||
|
||
Output: none
|
||
|
||
----------------------------------------------------------
|
||
Return Value:
|
||
= 0: Successful completion
|
||
-1: kein 'INPUT';
|
||
die durch 'INPUT' dargestellte Zahl ist groesser
|
||
als 32 Bit;
|
||
der 'INPUT'-String repraesentiert keine Zahl in einem
|
||
der gueltigen Formate ;
|
||
die Ausgabelaenge reicht nicht, um den 'INPUT' in
|
||
der gewuenschten Darstellung vollstaendig auszugeben;
|
||
die Laenge der ins gewuenschte Ausgabeformat gewandelten
|
||
Zahl ist groesser als 80 Zeichen;
|
||
Ausgabeformat fehlt;
|
||
|
||
------------------------------------------------------------
|
||
Bisher implementierte Wandlungen: Stand: 01/2006
|
||
|
||
\ Output- | | | | | | |
|
||
\ Format | A | B | D | F | H | R | O
|
||
\ | S | I | E | L | E | _ | K
|
||
\ | C | N | Z | O | X | H | T
|
||
Input- \ | I | | | A | | E |
|
||
Format \ | I | | | T | | X |
|
||
-------------------------------------------
|
||
ASCII | | | | | X | |
|
||
BCD | X | | | | | |
|
||
BIN | | O | n | / | X | | n
|
||
DEZ | | X | X | / | X | X |
|
||
FLOAT | | / | X | X | / | | /
|
||
HEX | X | O | X | / | O | | n
|
||
OKT | | n | n | / | n | | O
|
||
S_HEX | | O | X | / | n | | n
|
||
S_BIN | | n | n | / | n | | n
|
||
S_OKT | | n | n | / | n | | n
|
||
|
||
Agenda:
|
||
X = realisiert
|
||
n = nicht realisiert
|
||
/ = ung<6E>ltige Wandlung
|
||
O = keine Wandlung erforderlich
|
||
----------------------------------------------------------
|
||
Beispiel (optional):
|
||
|
||
----------------------------------------------------------
|
||
</PRE>
|
||
</BODY>
|
||
</HTML>
|