|
CCS Modul R_STRCAT |
----------------------------------------------------------
Funktionsbeschreibung:
Aus den maximal 10 Einzel-Strings (Zeichenketten) wird durch
Aneinanderhaengen ein Gesamtstring gebildet, dessen Laenge eine
Maximallaenge von 80 Zeichen nicht ueberschreiten darf.
Anderenfalls wird eine Fehlermeldung ausgegeben, und der (an die
GAUDI-Schnittstelle) uebergebene Ergebnis-String enthaelt kein Zeichen.
Da der GAUDI fuer Leerzeichen und Sonderzeichen nicht transparent
ist, gibt es die Moeglichkeit, diese als Zahlenwert in sedezimaler
Darstellung anzugeben. Zum Beispiel:
\X0D CarriageReturn
\X0A Linefeed
\X20 Leerzeichen (dezimaler Wert ist 32)
\X0D\X0A\X20 mehrere Zeichen hintereinander
Beschreibung der Modulparameter:1 PRUEFSCHRITT
GAUDI Pruefschritt
------------------------------2 POSITION
PAV- Position
------------------------------3 MODE
Steuerparameter, mit dem (s.o.) entschieden werden kann,
ob die Zeichenketten wie sie sind zu konkatenieren sind,
oder ob Sonderzeichen in oben aufgefuehrter Darstellung
zu uebersetzen sind;
TRANSPARENT - Defaultfall, die Zeichenketten werden so,
wie sie sind uebernommen und konkateniert;
COMPILE - die mit oben aufgefuehrter Syntax angegeben
Sonderzeichen werden entsprechend gewandelt;
------------------------------4 ASCIISTRING1
konstanter String mit max. 14 Zeichen Laenge oder
ein ueber eine '&'-Variable empfangener String mit
- innerhalb der Grenzen von 80 Zeichen - beliebiger Laenge;
------------------------------5 ASCIISTRING2
dito
------------------------------6 ASCIISTRING3
dito
------------------------------7 ASCIISTRING4
dito
------------------------------8 ASCIISTRING5
dito
------------------------------9 ASCIISTRING6
dito
------------------------------10 ASCIISTRING7
dito
------------------------------11 ASCIISTRING8
dito
------------------------------12 ASCIISTRING9
dito
------------------------------13 ASCIISTRING10
dito
------------------------------14 RESULTSTRING
konstanter String mit max. 80 Zeichen Laenge wird
an eine vom Anwender einzugebende '&'-Variable uebergeben;
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: bei Ueberschreitung der Gesamtlaenge von 80 Zeichen;
----------------------------------------------------------
Beispiel (optional):
<\userdoc>
----------------------------------------------------------
C4
int r_strcat( shm_stringpointer *zeilen_wert
,long index_on_expPrfLst
,long anzPrmtr )
{
r_strcat
lokale Variablen
int ret_val = 0;
Schrittbetriebs-Handling
int schritt_aktiv = schrittbetrieb( zeilen_wert, index_on_expPrfLst );
if ( schritt_aktiv != 1 ) {
return( ret_val );
}
Strings vorinitialisieren
QString ResultString = "";
QString asciistring1 = "";
QString asciistring2 = "";
QString asciistring3 = "";
QString asciistring4 = "";
QString asciistring5 = "";
QString asciistring6 = "";
QString asciistring7 = "";
QString asciistring8 = "";
QString asciistring9 = "";
QString asciistring10 = "";
Variablenverwaltung *verwa_ptr1; // Zugriff auf Variablenverwaltung
GAUDI-Parameter ausgeben:
QString pruefschritt(*zeilen_wert->ptr[index_on_expPrfLst + PRUEFSCHRITT]);
QString position(*zeilen_wert->ptr[index_on_expPrfLst + POSITION]);
//QString mode(*zeilen_wert->ptr[index_on_expPrfLst + MODE]);
verwa_ptr1 = (Variablenverwaltung*) zeilen_wert->ptr[index_on_expPrfLst + ASCIISTRING1];
verwa_ptr1->get_wert(asciistring1);
verwa_ptr1 = (Variablenverwaltung*) zeilen_wert->ptr[index_on_expPrfLst + ASCIISTRING2];
verwa_ptr1->get_wert(asciistring2);
verwa_ptr1 = (Variablenverwaltung*) zeilen_wert->ptr[index_on_expPrfLst + ASCIISTRING3];
verwa_ptr1->get_wert(asciistring3);
verwa_ptr1 = (Variablenverwaltung*) zeilen_wert->ptr[index_on_expPrfLst + ASCIISTRING4];
verwa_ptr1->get_wert(asciistring4);
verwa_ptr1 = (Variablenverwaltung*) zeilen_wert->ptr[index_on_expPrfLst + ASCIISTRING5];
verwa_ptr1->get_wert(asciistring5);
verwa_ptr1 = (Variablenverwaltung*) zeilen_wert->ptr[index_on_expPrfLst + ASCIISTRING6];
verwa_ptr1->get_wert(asciistring6);
verwa_ptr1 = (Variablenverwaltung*) zeilen_wert->ptr[index_on_expPrfLst + ASCIISTRING7];
verwa_ptr1->get_wert(asciistring7);
verwa_ptr1 = (Variablenverwaltung*) zeilen_wert->ptr[index_on_expPrfLst + ASCIISTRING8];
verwa_ptr1->get_wert(asciistring8);
verwa_ptr1 = (Variablenverwaltung*) zeilen_wert->ptr[index_on_expPrfLst + ASCIISTRING9];
verwa_ptr1->get_wert(asciistring9);
verwa_ptr1 = (Variablenverwaltung*) zeilen_wert->ptr[index_on_expPrfLst + ASCIISTRING10];
verwa_ptr1->get_wert(asciistring10);
debug_message( __FILE__, __LINE__, DEB_GAUDI
,"Input fuer Modul \"R_STRCAT\":\n"
"[%s]\n"
"[%s]\n"
"[%s]\n"
"[%s]\n"
"[%s]\n"
"[%s]\n"
"[%s]\n"
"[%s]\n"
"[%s]\n"
"[%s]\n"
"[%s]\n"
"[%s]"
,pruefschritt.latin1(), position.latin1()
,asciistring1.latin1(), asciistring2.latin1(), asciistring3.latin1()
,asciistring4.latin1(), asciistring5.latin1(), asciistring6.latin1()
,asciistring7.latin1(), asciistring8.latin1(), asciistring9.latin1()
,asciistring10.latin1() );
Einzelstrings aneinanderhaengen, bei Bedarf Sonderzeichen und waehrenddessen die Gesamtlaenge ueberpruefen:
ResultString = ResultString + asciistring1;
ResultString = ResultString + asciistring2;
ResultString = ResultString + asciistring3;
ResultString = ResultString + asciistring4;
ResultString = ResultString + asciistring5;
ResultString = ResultString + asciistring6;
ResultString = ResultString + asciistring7;
ResultString = ResultString + asciistring8;
ResultString = ResultString + asciistring9;
ResultString = ResultString + asciistring10;
Steuerinformation bei Bedarf auswerten und Sonderzeichen generieren:
Utilities::konvert_symbolics( ResultString );
Gesamtlaenge pruefen entfällt seit Variablenhandling mit langen Variablen > 80 Zeichen
Gesamtstring zurueckgeben an die SharedMemory-Schnittstelle:
if ( 0 == ret_val ) {
verwa_ptr1 = (Variablenverwaltung*) zeilen_wert->ptr[index_on_expPrfLst + RESULTSTRING];
verwa_ptr1->put_wert(ResultString);
debug_message( __FILE__, __LINE__, DEB_DATA
,"Outputstring des Moduls \"R_STRCAT\":\n[%s]",ResultString.latin1() );
}
return( ret_val );
}